footprintjs 10.2.1 → 10.4.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/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/lib/capture/absentEntries.d.ts +7 -0
- package/dist/esm/lib/capture/absentEntries.js +81 -0
- package/dist/esm/lib/capture/checkpointCapture.d.ts +11 -0
- package/dist/esm/lib/capture/checkpointCapture.js +104 -0
- package/dist/esm/lib/capture/historyData.d.ts +9 -0
- package/dist/esm/lib/capture/historyData.js +79 -0
- package/dist/esm/lib/capture/historyNote.d.ts +4 -0
- package/dist/esm/lib/capture/historyNote.js +52 -0
- package/dist/esm/lib/capture/historyTarget.d.ts +5 -0
- package/dist/esm/lib/capture/historyTarget.js +35 -0
- package/dist/esm/lib/capture/historyTypes.d.ts +39 -0
- package/dist/esm/lib/capture/historyTypes.js +4 -0
- package/dist/esm/lib/capture/nativeCoverage.d.ts +69 -0
- package/dist/esm/lib/capture/nativeCoverage.js +140 -0
- package/dist/esm/lib/capture/noteShape.d.ts +10 -0
- package/dist/esm/lib/capture/noteShape.js +93 -0
- package/dist/esm/lib/capture/readSources.d.ts +43 -0
- package/dist/esm/lib/capture/readSources.js +78 -0
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +5 -2
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +1 -0
- package/dist/esm/lib/engine/types.d.ts +3 -0
- package/dist/esm/lib/engine/types.js +1 -1
- package/dist/esm/lib/memory/StageContext.d.ts +13 -0
- package/dist/esm/lib/memory/StageContext.js +110 -14
- package/dist/esm/lib/memory/attention.d.ts +2 -0
- package/dist/esm/lib/memory/attention.js +12 -5
- package/dist/esm/lib/memory/runPolicy.d.ts +5 -1
- package/dist/esm/lib/memory/runPolicy.js +2 -1
- package/dist/esm/lib/pause/record.js +8 -2
- package/dist/esm/lib/pause/types.d.ts +2 -0
- package/dist/esm/lib/pause/types.js +1 -1
- package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +12 -1
- package/dist/esm/lib/recorder/ControlDepRecorder.js +23 -1
- package/dist/esm/lib/recorder/snapshot.d.ts +1 -1
- package/dist/esm/lib/recorder/snapshot.js +7 -2
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +24 -1
- package/dist/esm/lib/runner/ExecutionRuntime.js +45 -4
- package/dist/esm/lib/runner/FlowChartExecutor.d.ts +5 -0
- package/dist/esm/lib/runner/FlowChartExecutor.js +74 -7
- package/dist/esm/lib/runner/attach.js +6 -2
- package/dist/esm/lib/runner/captureHistory.d.ts +8 -0
- package/dist/esm/lib/runner/captureHistory.js +106 -0
- package/dist/esm/lib/runner/checkpoint.d.ts +2 -0
- package/dist/esm/lib/runner/checkpoint.js +3 -1
- package/dist/esm/lib/runner/index.d.ts +1 -0
- package/dist/esm/lib/runner/index.js +1 -1
- package/dist/esm/lib/runner/options.d.ts +3 -0
- package/dist/esm/lib/runner/options.js +46 -3
- package/dist/esm/lib/runner/readStoredCapture.d.ts +39 -0
- package/dist/esm/lib/runner/readStoredCapture.js +36 -0
- package/dist/esm/lib/runner/recordSink.d.ts +11 -0
- package/dist/esm/lib/runner/recordSink.js +47 -4
- package/dist/esm/lib/runner/snapshot.d.ts +3 -1
- package/dist/esm/lib/runner/snapshot.js +35 -4
- package/dist/esm/lib/runner/storedCaptureAdmission.d.ts +4 -0
- package/dist/esm/lib/runner/storedCaptureAdmission.js +97 -0
- package/dist/esm/lib/scope/ScopeFacade.js +4 -2
- package/dist/esm/lib/scope/runtime.d.ts +2 -0
- package/dist/esm/lib/scope/runtime.js +9 -1
- package/dist/esm/lib/sinks/fileSink.d.ts +2 -1
- package/dist/esm/lib/sinks/fileSink.js +8 -2
- package/dist/esm/trace.d.ts +2 -0
- package/dist/esm/trace.js +2 -1
- package/dist/index.js +1 -1
- package/dist/lib/capture/absentEntries.js +86 -0
- package/dist/lib/capture/checkpointCapture.js +110 -0
- package/dist/lib/capture/historyData.js +85 -0
- package/dist/lib/capture/historyNote.js +56 -0
- package/dist/lib/capture/historyTarget.js +40 -0
- package/dist/lib/capture/historyTypes.js +7 -0
- package/dist/lib/capture/nativeCoverage.js +146 -0
- package/dist/lib/capture/noteShape.js +103 -0
- package/dist/lib/capture/readSources.js +83 -0
- package/dist/lib/engine/handlers/SubflowExecutor.js +5 -2
- package/dist/lib/engine/types.js +1 -1
- package/dist/lib/memory/StageContext.js +110 -14
- package/dist/lib/memory/attention.js +12 -5
- package/dist/lib/memory/runPolicy.js +2 -1
- package/dist/lib/pause/record.js +8 -2
- package/dist/lib/pause/types.js +1 -1
- package/dist/lib/recorder/ControlDepRecorder.js +23 -1
- package/dist/lib/recorder/snapshot.js +7 -2
- package/dist/lib/runner/ExecutionRuntime.js +44 -3
- package/dist/lib/runner/FlowChartExecutor.js +77 -10
- package/dist/lib/runner/attach.js +5 -1
- package/dist/lib/runner/captureHistory.js +110 -0
- package/dist/lib/runner/checkpoint.js +3 -1
- package/dist/lib/runner/index.js +1 -1
- package/dist/lib/runner/options.js +46 -3
- package/dist/lib/runner/readStoredCapture.js +40 -0
- package/dist/lib/runner/recordSink.js +47 -4
- package/dist/lib/runner/snapshot.js +35 -4
- package/dist/lib/runner/storedCaptureAdmission.js +101 -0
- package/dist/lib/scope/ScopeFacade.js +3 -1
- package/dist/lib/scope/runtime.js +12 -2
- package/dist/lib/sinks/fileSink.js +8 -2
- package/dist/trace.js +4 -2
- package/dist/types/index.d.ts +3 -0
- package/dist/types/lib/capture/absentEntries.d.ts +7 -0
- package/dist/types/lib/capture/checkpointCapture.d.ts +11 -0
- package/dist/types/lib/capture/historyData.d.ts +9 -0
- package/dist/types/lib/capture/historyNote.d.ts +4 -0
- package/dist/types/lib/capture/historyTarget.d.ts +5 -0
- package/dist/types/lib/capture/historyTypes.d.ts +39 -0
- package/dist/types/lib/capture/nativeCoverage.d.ts +69 -0
- package/dist/types/lib/capture/noteShape.d.ts +10 -0
- package/dist/types/lib/capture/readSources.d.ts +43 -0
- package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +1 -0
- package/dist/types/lib/engine/types.d.ts +3 -0
- package/dist/types/lib/memory/StageContext.d.ts +13 -0
- package/dist/types/lib/memory/attention.d.ts +2 -0
- package/dist/types/lib/memory/runPolicy.d.ts +5 -1
- package/dist/types/lib/pause/types.d.ts +2 -0
- package/dist/types/lib/recorder/ControlDepRecorder.d.ts +12 -1
- package/dist/types/lib/recorder/snapshot.d.ts +1 -1
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +24 -1
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +5 -0
- package/dist/types/lib/runner/captureHistory.d.ts +8 -0
- package/dist/types/lib/runner/checkpoint.d.ts +2 -0
- package/dist/types/lib/runner/index.d.ts +1 -0
- package/dist/types/lib/runner/options.d.ts +3 -0
- package/dist/types/lib/runner/readStoredCapture.d.ts +39 -0
- package/dist/types/lib/runner/recordSink.d.ts +11 -0
- package/dist/types/lib/runner/snapshot.d.ts +3 -1
- package/dist/types/lib/runner/storedCaptureAdmission.d.ts +4 -0
- package/dist/types/lib/scope/runtime.d.ts +2 -0
- package/dist/types/lib/sinks/fileSink.d.ts +2 -1
- package/dist/types/trace.d.ts +2 -0
- package/package.json +2 -2
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import { isDevMode } from '../devMode.js';
|
|
19
19
|
import { CombinedNarrativeRecorder } from '../engine/narrative/CombinedNarrativeRecorder.js';
|
|
20
20
|
import { hasEmitRecorderMethods, hasFlowRecorderMethods, hasRecorderMethods } from '../recorder/CombinedRecorder.js';
|
|
21
|
-
import { requireScopeRuntime } from '../scope/runtime.js';
|
|
21
|
+
import { hasNativeCaptureTarget, requireScopeRuntime } from '../scope/runtime.js';
|
|
22
22
|
import { DeferredObserverTier } from './DeferredObserverTier.js';
|
|
23
23
|
export class RunObservers {
|
|
24
24
|
narrativeEnabled = false;
|
|
@@ -199,6 +199,10 @@ export class RunObservers {
|
|
|
199
199
|
return ((ctx, stageName, readOnly, envArg) => {
|
|
200
200
|
const scope = baseFactory(ctx, stageName, readOnly, envArg);
|
|
201
201
|
const { target } = requireScopeRuntime(scope);
|
|
202
|
+
if (ctx.capture && !hasNativeCaptureTarget(target, ctx))
|
|
203
|
+
ctx.capture.limit('custom-scope');
|
|
204
|
+
if (ctx.readSources?.observing && !hasNativeCaptureTarget(target, ctx))
|
|
205
|
+
ctx.readSources.limit('custom-scope');
|
|
202
206
|
// Always wire shared redaction state
|
|
203
207
|
target.useSharedRedactedKeys?.(sharedRedactedKeys);
|
|
204
208
|
// Apply optional modifiers
|
|
@@ -240,4 +244,4 @@ export class RunObservers {
|
|
|
240
244
|
return this.deferredTier;
|
|
241
245
|
}
|
|
242
246
|
}
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBR0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUk3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVySCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQThCLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLN0YsTUFBTSxPQUFPLFlBQVk7SUFDdkIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLGdCQUFnQixDQUFvQztJQUNwRCxtR0FBbUc7SUFDbkcsZ0JBQWdCLENBQXdDO0lBQ3hELGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLGNBQWMsR0FBb0IsRUFBRSxDQUFDO0lBQ3JDOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUF3QjtJQUVwQyxlQUFlLENBQUMsT0FBMEM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLE9BQU87WUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBdUIsRUFBRSxPQUErQjtRQUNsRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxPQUFPLEVBQUUsUUFBUSxL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QUMsT0FBTyxDQUFDLENBQUM7UUFDOUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYXR0YWNoIOKAlCB3aG8gb2JzZXJ2ZXMgYSBydW4sIGFuZCBob3cgdGhleSByZWFjaCBpdCAoRjkpLlxuICpcbiAqIGBSdW5PYnNlcnZlcnNgIGlzIHRoZSBleGVjdXRvcidzIE9ORSByZWdpc3RlciBvZiBvYnNlcnZlcnM6IHRoZSBidWlsdC1pblxuICogbmFycmF0aXZlIHJlY29yZGVyLCB0aGUgaW5saW5lIHNjb3BlIGFuZCBmbG93IGxpc3RzLCBhbmQgdGhlIGRlZmVycmVkIHRpZXJcbiAqIChSRkMtMDAxKS4gVGhlIGV4ZWN1dG9yJ3MgYGF0dGFjaCpSZWNvcmRlcmAgZmFtaWx5IGRlbGVnYXRlcyBoZXJlOyBlYWNoIGxlZ1xuICogKGBydW4oKWAgLyBgcmVzdW1lKClgKSBhc2tzIGl0IGZvciB0aGUgY29tcG9zZWQgc2NvcGUgZmFjdG9yeSBhbmQgdGhlIGZsb3dcbiAqIHJlY29yZGVyIGxpc3QgaXQgaGFuZHMgdGhlIHRyYXZlcnNlci5cbiAqXG4gKiBMYXdzIGtlcHQgaGVyZTpcbiAqICAgLSBhbiBpZCBsaXZlcyBvbiBleGFjdGx5IE9ORSBkZWxpdmVyeSB0aWVyIHBlciBsaXN0IOKAlCByZS1hdHRhY2hpbmcgdGhlXG4gKiAgICAgc2FtZSBpZCBTV0FQUyB0aWVycywgbmV2ZXIgZG91YmxlIGRlbGl2ZXJ5O1xuICogICAtIGV2ZXJ5IGF0dGFjaCBpcyBpZGVtcG90ZW50IGJ5IGBpZGAgKHJlcGxhY2UsIG5ldmVyIGR1cGxpY2F0ZSk7XG4gKiAgIC0gZW1pdCByZWNvcmRlcnMgcmlkZSB0aGUgU0NPUEUgbGlzdCAoYFNjb3BlRmFjYWRlYCBkaXNwYXRjaGVzIGBvbkVtaXRgXG4gKiAgICAgZnJvbSB0aGUgc2FtZSBwZXItc3RhZ2UgbGlzdCBhcyBgb25SZWFkYC9gb25Xcml0ZWApO1xuICogICAtIGEgZmxvdyBhdHRhY2ggdHVybnMgdGhlIG5hcnJhdGl2ZSBvbiAodGhlIGZsb3cgY2hhbm5lbCBuZWVkcyBpdCkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdW5Db3JyZWxhdGlvbiB9IGZyb20gJy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnLi4vZGV2TW9kZS5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zIH0gZnJvbSAnLi4vZW5naW5lL25hcnJhdGl2ZS9Db21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyLmpzJztcbmltcG9ydCB7IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL0NvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBGbG93UmVjb3JkZXIgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVGYWN0b3J5IH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWRSZWNvcmRlciB9IGZyb20gJy4uL3JlY29yZGVyL0NvbWJpbmVkUmVjb3JkZXIuanMnO1xuaW1wb3J0IHsgaGFzRW1pdFJlY29yZGVyTWV0aG9kcywgaGFzRmxvd1JlY29yZGVyTWV0aG9kcywgaGFzUmVjb3JkZXJNZXRob2RzIH0gZnJvbSAnLi4vcmVjb3JkZXIvQ29tYmluZWRSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNjb3BlUnVudGltZVRhcmdldCB9IGZyb20gJy4uL3Njb3BlL3J1bnRpbWUuanMnO1xuaW1wb3J0IHsgcmVxdWlyZVNjb3BlUnVudGltZSB9IGZyb20gJy4uL3Njb3BlL3J1bnRpbWUuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25Qb2xpY3ksIFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuLi9zY29wZS90eXBlcy5qcyc7XG5pbXBvcnQgeyB0eXBlIEF0dGFjaFJlY29yZGVyT3B0aW9ucywgRGVmZXJyZWRPYnNlcnZlclRpZXIgfSBmcm9tICcuL0RlZmVycmVkT2JzZXJ2ZXJUaWVyLmpzJztcblxuLyoqIEEgc3RlcCBhcHBsaWVkIHRvIGV2ZXJ5IHN0YWdlIHNjb3BlIHJpZ2h0IGFmdGVyIHRoZSBiYXNlIGZhY3RvcnkgbWFrZXMgaXQuICovXG50eXBlIFNjb3BlTW9kaWZpZXIgPSAodGFyZ2V0OiBTY29wZVJ1bnRpbWVUYXJnZXQpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBSdW5PYnNlcnZlcnMge1xuICBuYXJyYXRpdmVFbmFibGVkID0gZmFsc2U7XG4gIG5hcnJhdGl2ZU9wdGlvbnM/OiBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyT3B0aW9ucztcbiAgLyoqIFRoZSBidWlsdC1pbiBuYXJyYXRpdmUgcmVjb3JkZXIgb2YgdGhlIGN1cnJlbnQgbGVnIChrZXB0IGFjcm9zcyBhIHJlc3VtZSBzbyBpdCBhY2N1bXVsYXRlcykuICovXG4gIGNvbWJpbmVkUmVjb3JkZXI6IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIgfCB1bmRlZmluZWQ7XG4gIGZsb3dSZWNvcmRlcnM6IEZsb3dSZWNvcmRlcltdID0gW107XG4gIHNjb3BlUmVjb3JkZXJzOiBTY29wZVJlY29yZGVyW10gPSBbXTtcbiAgLyoqXG4gICAqIFJGQy0wMDEgZGVmZXJyZWQtb2JzZXJ2ZXIgd2lyaW5nIOKAlCBjcmVhdGVkIExBWklMWSBvbiB0aGUgZmlyc3RcbiAgICogYGRlbGl2ZXJ5OiAnZGVmZXJyZWQnYCBhdHRhY2guIGB1bmRlZmluZWRgIGZvciBldmVyeSBleGVjdXRvciB0aGF0IG5ldmVyXG4gICAqIG9wdHMgaW46IHplcm8gYWxsb2NhdGlvbiwgemVybyBwZXItZXZlbnQgY29zdCwgYnl0ZS1pZGVudGljYWwgYmVoYXZpb3JcbiAgICogKHRoZSBlbWl0IGZhc3QtcGF0aCBwcmVjZWRlbnQpLlxuICAgKi9cbiAgZGVmZXJyZWRUaWVyPzogRGVmZXJyZWRPYnNlcnZlclRpZXI7XG5cbiAgZW5hYmxlTmFycmF0aXZlKG9wdGlvbnM/OiBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMubmFycmF0aXZlRW5hYmxlZCA9IHRydWU7XG4gICAgaWYgKG9wdGlvbnMpIHRoaXMubmFycmF0aXZlT3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBhdHRhY2hTY29wZShyZWNvcmRlcjogU2NvcGVSZWNvcmRlciwgb3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIFRpZXIgc3dhcCwgYm90aCBkaXJlY3Rpb25zOiBhbiBpZCBsaXZlcyBvbiBleGFjdGx5IE9ORSB0aWVyIHBlciBsaXN0LlxuICAgIHRoaXMuc2NvcGVSZWNvcmRlcnMgPSB0aGlzLnNjb3BlUmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gcmVjb3JkZXIuaWQpO1xuICAgIGlmIChvcHRpb25zPy5kZWxpdmVyeSA9PT0gJ2RlZmVycmVkJykge1xuICAgICAgdGhpcy5lbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucykucmVnaXN0ZXIocmVjb3JkZXIsIHsgc2NvcGU6IHRydWUgfSwgb3B0aW9ucyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGVmZXJyZWRUaWVyPy5yZW1vdmVGcm9tTGlzdHMocmVjb3JkZXIuaWQsIHsgc2NvcGU6IHRydWUgfSk7XG4gICAgdGhpcy5zY29wZVJlY29yZGVycy5wdXNoKHJlY29yZGVyKTtcbiAgfVxuXG4gIGF0dGFjaEZsb3cocmVjb3JkZXI6IEZsb3dSZWNvcmRlciwgb3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIFRpZXIgc3dhcCwgYm90aCBkaXJlY3Rpb25zOiBhbiBpZCBsaXZlcyBvbiBleGFjdGx5IE9ORSB0aWVyIHBlciBsaXN0LlxuICAgIHRoaXMuZmxvd1JlY29yZGVycyA9IHRoaXMuZmxvd1JlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IHJlY29yZGVyLmlkKTtcbiAgICB0aGlzLm5hcnJhdGl2ZUVuYWJsZWQgPSB0cnVlO1xuICAgIGlmIChvcHRpb25zPy5kZWxpdmVyeSA9PT0gJ2RlZmVycmVkJykge1xuICAgICAgdGhpcy5lbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucykucmVnaXN0ZXIocmVjb3JkZXIsIHsgZmxvdzogdHJ1ZSB9LCBvcHRpb25zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZWZlcnJlZFRpZXI/LnJlbW92ZUZyb21MaXN0cyhyZWNvcmRlci5pZCwgeyBmbG93OiB0cnVlIH0pO1xuICAgIHRoaXMuZmxvd1JlY29yZGVycy5wdXNoKHJlY29yZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb3V0ZSBhIHJlY29yZGVyIHRvIGV2ZXJ5IGNoYW5uZWwgaXQgaGFzIE9XTiBldmVudCBtZXRob2RzIGZvciAoc2VlXG4gICAqIGBoYXNSZWNvcmRlck1ldGhvZHNgIOKAlCBwcm90b3R5cGUtY2hhaW4gbWV0aG9kcyBhcmUgaWdub3JlZCBvbiBwdXJwb3NlLFxuICAgKiBhZ2FpbnN0IGBPYmplY3QucHJvdG90eXBlYCBwb2xsdXRpb24pLiBJZGVtcG90ZW50IGJ5IGBpZGAgYWNyb3NzIEFMTFxuICAgKiBjaGFubmVsczogYSBjb21iaW5lZCBhdHRhY2ggcmVwbGFjZXMgYSBzaW5nbGUtY2hhbm5lbCByZWdpc3RyYXRpb24gb2YgdGhlXG4gICAqIHNhbWUgaWQgb24gd2hpY2hldmVyIGNoYW5uZWwocykgdGhlIHJlY29yZGVyIGhhcyBtZXRob2RzIGZvci5cbiAgICovXG4gIGF0dGFjaENvbWJpbmVkKHJlY29yZGVyOiBDb21iaW5lZFJlY29yZGVyLCBvcHRpb25zPzogQXR0YWNoUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgaGFzRGF0YSA9IGhhc1JlY29yZGVyTWV0aG9kcyhyZWNvcmRlcik7XG4gICAgY29uc3QgaGFzRmxvdyA9IGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMocmVjb3JkZXIpO1xuICAgIGNvbnN0IGhhc0VtaXQgPSBoYXNFbWl0UmVjb3JkZXJNZXRob2RzKHJlY29yZGVyKTtcblxuICAgIC8vIERlbGl2ZXJ5IHRpZXIgKFJGQy0wMDEpOiBvcHRpb25zIGJhZyBPUiB0aGUgcmVjb3JkZXIncyBvd25cbiAgICAvLyBgZGVsaXZlcnk6ICdkZWZlcnJlZCdgIGZpZWxkLiBUaGUgZmllbGQgaXMgYSBzdHJpbmcg4oCUIGNoYW5uZWwgcm91dGluZ1xuICAgIC8vIGFib3ZlIGNvdW50cyBldmVudC1NRVRIT0QgcHJvcGVydGllcyBvbmx5LCBzbyBkZWNsYXJpbmcgaXQgbmV2ZXJcbiAgICAvLyBjaGFuZ2VzIHdoaWNoIGNoYW5uZWxzIHRoZSByZWNvcmRlciBsYW5kcyBvbi5cbiAgICBjb25zdCBkZWxpdmVyeSA9IG9wdGlvbnM/LmRlbGl2ZXJ5ID8/IHJlY29yZGVyLmRlbGl2ZXJ5O1xuICAgIGNvbnN0IHRpZXJPcHRpb25zOiBBdHRhY2hSZWNvcmRlck9wdGlvbnMgfCB1bmRlZmluZWQgPSBkZWxpdmVyeSA9PT0gdW5kZWZpbmVkID8gb3B0aW9ucyA6IHsgLi4ub3B0aW9ucywgZGVsaXZlcnkgfTtcblxuICAgIC8vIEVtaXQgcmVjb3JkZXJzIGxpdmUgb24gdGhlIFNBTUUgY2hhbm5lbCBhcyBkYXRhLWZsb3cgcmVjb3JkZXJzXG4gICAgLy8gKFNjb3BlRmFjYWRlIGl0ZXJhdGVzIGBfcmVjb3JkZXJzYCBmb3Igb25FbWl0IGRpc3BhdGNoKS4gU2hvcnQtY2lyY3VpdDpcbiAgICAvLyBpZiBoYXNEYXRhIE9SIGhhc0VtaXQsIHRoZSByZWNvcmRlciBsYW5kcyBvbiB0aGUgc2NvcGUgbGlzdCBleGFjdGx5IG9uY2UuXG4gICAgaWYgKGhhc0RhdGEgfHwgaGFzRW1pdCkgdGhpcy5hdHRhY2hTY29wZShyZWNvcmRlciBhcyBTY29wZVJlY29yZGVyLCB0aWVyT3B0aW9ucyk7XG4gICAgaWYgKGhhc0Zsb3cpIHRoaXMuYXR0YWNoRmxvdyhyZWNvcmRlciBhcyBGbG93UmVjb3JkZXIsIHRpZXJPcHRpb25zKTtcblxuICAgIGlmICghaGFzRGF0YSAmJiAhaGFzRmxvdyAmJiAhaGFzRW1pdCAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgLy8gRGV2LW1vZGUgb25seTogc2lsZW50IHNraXBzIGFyZSBpbnZpc2libGUgYW5kIHByb2R1Y2UgaGFyZC10by1kZWJ1Z1xuICAgICAgLy8gXCJ3aHkgZGlkbid0IG15IHJlY29yZGVyIGZpcmVcIiByZXBvcnRzLiBQZXIgbGlicmFyeSBjb252ZW50aW9uLCBnYXRlZFxuICAgICAgLy8gb24gdGhlIGNlbnRyYWwgaXNEZXZNb2RlKCkgZmxhZyAobm90IHByb2Nlc3MuZW52KSBzbyBjb25zdW1lcnMgY2FuXG4gICAgICAvLyBjb250cm9sIGRldiB0b29saW5nIGNlbnRyYWxseSB2aWEgZW5hYmxlRGV2TW9kZSgpL2Rpc2FibGVEZXZNb2RlKCkuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW2Zvb3RwcmludGpzXSBhdHRhY2hDb21iaW5lZFJlY29yZGVyOiByZWNvcmRlciAnJHtyZWNvcmRlci5pZH0nIGhhcyBgICtcbiAgICAgICAgICAnbm8gb2JzZXJ2ZXIgZXZlbnQgbWV0aG9kcyDigJQgbm90aGluZyB0byBhdHRhY2guIERpZCB5b3UgZm9yZ2V0IHRvICcgK1xuICAgICAgICAgICdhZGQgYW4gb24qIGhhbmRsZXIgKG9uV3JpdGUsIG9uRGVjaXNpb24sIG9uU3ViZmxvd0VudHJ5LCAuLi4pPyAnICtcbiAgICAgICAgICAnTm90ZTogb25seSBPV04gcHJvcGVydGllcyBjb3VudDsgbWV0aG9kcyBvbiB0aGUgcHJvdG90eXBlIGNoYWluICcgK1xuICAgICAgICAgICdhcmUgaWdub3JlZCBvbiBwdXJwb3NlLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBEZXRhY2ggZXZlcnkgc2NvcGUgcmVjb3JkZXIgd2l0aCB0aGlzIGlkIOKAlCBib3RoIGRlbGl2ZXJ5IHRpZXJzLiAqL1xuICBkZXRhY2hTY29wZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zY29wZVJlY29yZGVycyA9IHRoaXMuc2NvcGVSZWNvcmRlcnMuZmlsdGVyKChyKSA9PiByLmlkICE9PSBpZCk7XG4gICAgdGhpcy5kZWZlcnJlZFRpZXI/LnJlbW92ZUZyb21MaXN0cyhpZCwgeyBzY29wZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBEZXRhY2ggZXZlcnkgZmxvdyByZWNvcmRlciB3aXRoIHRoaXMgaWQg4oCUIGJvdGggZGVsaXZlcnkgdGllcnMuICovXG4gIGRldGFjaEZsb3coaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmxvd1JlY29yZGVycyA9IHRoaXMuZmxvd1JlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgICB0aGlzLmRlZmVycmVkVGllcj8ucmVtb3ZlRnJvbUxpc3RzKGlkLCB7IGZsb3c6IHRydWUgfSk7XG4gIH1cblxuICAvKiogQSBkZWZlbnNpdmUgY29weSBvZiB0aGUgc2NvcGUgbGlzdCAoYm90aCB0aWVycykuICovXG4gIHNjb3BlTGlzdCgpOiBTY29wZVJlY29yZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5zY29wZVJlY29yZGVycywgLi4uKHRoaXMuZGVmZXJyZWRUaWVyPy5zY29wZUxpc3RSZWNvcmRlcnMoKSA/PyBbXSldO1xuICB9XG5cbiAgLyoqIEEgZGVmZW5zaXZlIGNvcHkgb2YgdGhlIGZsb3cgbGlzdCAoYm90aCB0aWVycykuICovXG4gIGZsb3dMaXN0KCk6IEZsb3dSZWNvcmRlcltdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuZmxvd1JlY29yZGVycywgLi4uKHRoaXMuZGVmZXJyZWRUaWVyPy5mbG93TGlzdFJlY29yZGVycygpID8/IFtdKV07XG4gIH1cblxuICAvKipcbiAgICogQSBmcmVzaCBgcnVuKClgIGNsZWFycyBldmVyeSBhdHRhY2hlZCByZWNvcmRlciAoYGNsZWFyKClgKSwgc28gc3RhdGUgZG9lc1xuICAgKiBub3QgYWNjdW11bGF0ZSBhY3Jvc3MgcnVucy4gVGhlIG5hcnJhdGl2ZSByZWNvcmRlciBpcyBub3QgY2xlYXJlZDogZWFjaFxuICAgKiBmcmVzaCBsZWcgYnVpbGRzIGEgbmV3IG9uZSAoe0BsaW5rIHN0YXJ0TGVnfSkuXG4gICAqL1xuICBjbGVhckZvclJ1bigpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5mbG93UmVjb3JkZXJzKSB7XG4gICAgICByLmNsZWFyPy4oKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMuc2NvcGVSZWNvcmRlcnMpIHtcbiAgICAgIHIuY2xlYXI/LigpO1xuICAgIH1cbiAgICB0aGlzLmRlZmVycmVkVGllcj8uY2xlYXJSZWNvcmRlcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIGEgbGVnOiBhIGZyZXNoIG5hcnJhdGl2ZSByZWNvcmRlciB3aGVuIHRoZSBuYXJyYXRpdmUgaXMgb24sIG5vbmUgd2hlblxuICAgKiBpdCBpcyBvZmYg4oCUIG9yLCBvbiBhIHJlc3VtZSAoYHByZXNlcnZlYCksIHRoZSBleGlzdGluZyBvbmUsIHNvIHRoZVxuICAgKiBuYXJyYXRpdmUgYWNjdW11bGF0ZXMgYWNyb3NzIHRoZSBwYXVzZS4gQSBmcmVzaCBleGVjdXRvciBoYXMgbm8gcmVjb3JkZXJcbiAgICogdG8gcHJlc2VydmUgYW5kIHN0YXJ0cyBvbmUgZm9yIHRoZSByZXN1bWVkIGxlZyBvbmx5LlxuICAgKiBSZXR1cm5zIHRoZSBsZWcncyBuYXJyYXRpdmUgZmxhZy5cbiAgICovXG4gIHN0YXJ0TGVnKGNoYXJ0TmFycmF0aXZlOiBib29sZWFuLCBwcmVzZXJ2ZTogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5hcnJhdGl2ZUZsYWcgPSB0aGlzLm5hcnJhdGl2ZUVuYWJsZWQgfHwgY2hhcnROYXJyYXRpdmU7XG4gICAgaWYgKCFwcmVzZXJ2ZSB8fCAhdGhpcy5jb21iaW5lZFJlY29yZGVyKSB7XG4gICAgICB0aGlzLmNvbWJpbmVkUmVjb3JkZXIgPSBuYXJyYXRpdmVGbGFnID8gbmV3IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIodGhpcy5uYXJyYXRpdmVPcHRpb25zKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG5hcnJhdGl2ZUZsYWc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxlZydzIHNjb3BlIGZhY3Rvcnk6IHRoZSBiYXNlIGZhY3RvcnksIHRoZW4gZXZlcnkgc2NvcGUgbW9kaWZpZXIgaW4gT05FXG4gICAqIGZsYXQgcGFzcyDigJQgdGhlIG5hcnJhdGl2ZSByZWNvcmRlciwgdGhlIHVzZXIncyBzY29wZSByZWNvcmRlcnMsIHRoZVxuICAgKiBkZWZlcnJlZCB0aWVyJ3Mgc2NvcGUgdGFwLCB0aGUgcmVkYWN0aW9uIHBvbGljeS5cbiAgICpcbiAgICogVGhlIG1hcmtlZC1rZXlzIHNldCBpcyBBTFdBWVMgd2lyZWQgKGEgc3RhZ2UgY2FuIGNhbGxcbiAgICogYHNldFZhbHVlKGtleSwgdmFsLCB0cnVlKWAgZm9yIHBlci1jYWxsIHJlZGFjdGlvbiB3aXRob3V0IGFueSBwb2xpY3kpLlxuICAgKi9cbiAgY29tcG9zZVNjb3BlRmFjdG9yeTxUU2NvcGU+KFxuICAgIGJhc2VGYWN0b3J5OiBTY29wZUZhY3Rvcnk8VFNjb3BlPixcbiAgICByZWRhY3Rpb25Qb2xpY3k6IFJlZGFjdGlvblBvbGljeSB8IHVuZGVmaW5lZCxcbiAgICBzaGFyZWRSZWRhY3RlZEtleXM6IFNldDxzdHJpbmc+LFxuICAgIGNvcnJlbGF0aW9uPzogUnVuQ29ycmVsYXRpb24sXG4gICk6IFNjb3BlRmFjdG9yeTxUU2NvcGU+IHtcbiAgICBjb25zdCBtb2RpZmllcnM6IFNjb3BlTW9kaWZpZXJbXSA9IFtdO1xuXG4gICAgLy8gMS4gTmFycmF0aXZlIHJlY29yZGVyIChpZiBlbmFibGVkKVxuICAgIGlmICh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIGNvbnN0IHJlY29yZGVyID0gdGhpcy5jb21iaW5lZFJlY29yZGVyO1xuICAgICAgbW9kaWZpZXJzLnB1c2goKHRhcmdldCkgPT4ge1xuICAgICAgICB0YXJnZXQuYXR0YWNoU2NvcGVSZWNvcmRlcj8uKHJlY29yZGVyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDIuIFVzZXItcHJvdmlkZWQgc2NvcGUgcmVjb3JkZXJzXG4gICAgaWYgKHRoaXMuc2NvcGVSZWNvcmRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcmVjb3JkZXJzID0gdGhpcy5zY29wZVJlY29yZGVycztcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCByIG9mIHJlY29yZGVycykgdGFyZ2V0LmF0dGFjaFNjb3BlUmVjb3JkZXI/LihyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDJiLiBEZWZlcnJlZC1vYnNlcnZlciBzY29wZSB0YXAgKFJGQy0wMDEgQmxvY2sgNykg4oCUIGEgc3ludGhldGljXG4gICAgLy8gcmVjb3JkZXIgd2hvc2UgaG9va3MgQ0FQVFVSRSBpbnRvIHRoZSBib3VuZGVkIHF1ZXVlIGluc3RlYWQgb2YgZG9pbmdcbiAgICAvLyBvYnNlcnZlciB3b3JrLiBJdCByaWRlcyB0aGUgc2FtZSBwZXItc3RhZ2UgcmVjb3JkZXIgbGlzdCBhcyBpbmxpbmVcbiAgICAvLyByZWNvcmRlcnMsIHNvIGl0IHJlY2VpdmVzIGV4YWN0bHkgdGhlIHBvc3QtcmVkYWN0aW9uIGV2ZW50cyB0aGV5IGRvLlxuICAgIC8vIEFic2VudCAoemVybyB3b3JrLCBpZGVudGljYWwgbGlzdCkgd2hlbiBub2JvZHkgb3B0ZWQgaW50byBkZWZlcnJhbC5cbiAgICBjb25zdCBzY29wZVRhcCA9IHRoaXMuZGVmZXJyZWRUaWVyPy5idWlsZFNjb3BlVGFwKCk7XG4gICAgaWYgKHNjb3BlVGFwKSB7XG4gICAgICBtb2RpZmllcnMucHVzaCgodGFyZ2V0KSA9PiB7XG4gICAgICAgIHRhcmdldC5hdHRhY2hTY29wZVJlY29yZGVyPy4oc2NvcGVUYXApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gMy4gUmVkYWN0aW9uIHBvbGljeSAoY29uZGl0aW9uYWwg4oCUIG9ubHkgd2hlbiBwb2xpY3kgaXMgc2V0KS4gQVxuICAgIC8vIGBTY29wZUZhY2FkZWAgYWxyZWFkeSByZWFkcyB0aGUgcnVuJ3MgcnVsZSB0aHJvdWdoIGl0cyBjb250ZXh0ICh0aGVcbiAgICAvLyBydWxlIGlzIGluc3RhbGxlZCBvbiB0aGUgcnVudGltZSByb290KTsgdGhpcyBjYWxsIHN1cHBsaWVzIGl0IHRvXG4gICAgLy8gZXhwbGljaXRseSByZWdpc3RlcmVkIGN1c3RvbSBwb3J0cywgYW5kIG9uIGEgZmFjYWRlIGl0XG4gICAgLy8gcmUtc3RhdGVzIHRoZSBleGVjdXRvcidzIHBvbGljeSBvbiB0aGUgc2hhcmVkIHJ1bGUgKGEgbm8tb3ApLlxuICAgIGlmIChyZWRhY3Rpb25Qb2xpY3kpIHtcbiAgICAgIGNvbnN0IHBvbGljeSA9IHJlZGFjdGlvblBvbGljeTtcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgdGFyZ2V0LnVzZVJlZGFjdGlvblBvbGljeT8uKHBvbGljeSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyA0LiBUaGUgbGVnJ3MgY29ycmVsYXRpb24gKDEwLjEpIOKAlCBvbmUgZnJvemVuIG9iamVjdCBwZXIgbGVnLCBzbyBhIGZhY3RvcnkgY29tcG9zZWQgZm9yIG9uZSBsZWcgbmV2ZXJcbiAgICAvLyBzdGFtcHMgYW5vdGhlcidzLiBJbnN0YWxsZWQgZXZlbiB3aGVuIGFic2VudDogYSB0YXJnZXQgYSBjdXN0b20gZmFjdG9yeSByZS11c2VzIGFjcm9zcyBydW5zIGlzIENMRUFSRUQsXG4gICAgLy8gbmV2ZXIgbGVmdCBob2xkaW5nIGFuIGVhcmxpZXIgcnVuJ3MuIEFic2VudCDihpIgZXZlbnRzIGJ5dGUtaWRlbnRpY2FsLlxuICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgIHRhcmdldC51c2VDb3JyZWxhdGlvbj8uKGNvcnJlbGF0aW9uKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoKGN0eDogYW55LCBzdGFnZU5hbWU6IHN0cmluZywgcmVhZE9ubHk/OiB1bmtub3duLCBlbnZBcmc/OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gYmFzZUZhY3RvcnkoY3R4LCBzdGFnZU5hbWUsIHJlYWRPbmx5LCBlbnZBcmcpO1xuICAgICAgY29uc3QgeyB0YXJnZXQgfSA9IHJlcXVpcmVTY29wZVJ1bnRpbWUoc2NvcGUpO1xuICAgICAgLy8gQWx3YXlzIHdpcmUgc2hhcmVkIHJlZGFjdGlvbiBzdGF0ZVxuICAgICAgdGFyZ2V0LnVzZVNoYXJlZFJlZGFjdGVkS2V5cz8uKHNoYXJlZFJlZGFjdGVkS2V5cyk7XG4gICAgICAvLyBBcHBseSBvcHRpb25hbCBtb2RpZmllcnNcbiAgICAgIGZvciAoY29uc3QgbW9kIG9mIG1vZGlmaWVycykgbW9kKHRhcmdldCk7XG4gICAgICByZXR1cm4gc2NvcGU7XG4gICAgfSkgYXMgU2NvcGVGYWN0b3J5PFRTY29wZT47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxlZydzIGZsb3cgcmVjb3JkZXJzOiB0aGUgbmFycmF0aXZlIHJlY29yZGVyICh3aGVuIG9uKSwgdGhlIHVzZXInc1xuICAgKiBmbG93IHJlY29yZGVycywgdGhlbiB0aGUgZGVmZXJyZWQgdGllcidzIGZsb3cgdGFwIChSRkMtMDAxIEJsb2NrIDcpIOKAlFxuICAgKiBhcHBlbmRlZCBsaWtlIGFueSBvdGhlciBmbG93IHJlY29yZGVyLCBzbyB0aGUgZGlzcGF0Y2hlciBuZWVkcyBubyB0aWVyXG4gICAqIGxvZ2ljIG9mIGl0cyBvd24uIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgYXJlIG5vbmUuXG4gICAqL1xuICBmbG93UmVjb3JkZXJzTGlzdCgpOiBGbG93UmVjb3JkZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcmVjb3JkZXJzOiBGbG93UmVjb3JkZXJbXSA9IFtdO1xuICAgIGlmICh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIHJlY29yZGVycy5wdXNoKHRoaXMuY29tYmluZWRSZWNvcmRlcik7XG4gICAgfVxuICAgIHJlY29yZGVycy5wdXNoKC4uLnRoaXMuZmxvd1JlY29yZGVycyk7XG4gICAgY29uc3QgZmxvd1RhcCA9IHRoaXMuZGVmZXJyZWRUaWVyPy5idWlsZEZsb3dUYXAoKTtcbiAgICBpZiAoZmxvd1RhcCkgcmVjb3JkZXJzLnB1c2goZmxvd1RhcCk7XG4gICAgcmV0dXJuIHJlY29yZGVycy5sZW5ndGggPiAwID8gcmVjb3JkZXJzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIFRoZSBpbmxpbmUgZmxvdyBsaXN0ZW5lcnMgb2YgYW4gZXhlY3V0b3ItbWFkZSBldmVudCAoYG9uUmVzdW1lYCk6IHRoZSBuYXJyYXRpdmUgcmVjb3JkZXIgZmlyc3QuICovXG4gIGlubGluZUZsb3dMaXN0ZW5lcnMoKTogRmxvd1JlY29yZGVyW10ge1xuICAgIHJldHVybiB0aGlzLmNvbWJpbmVkUmVjb3JkZXIgPyBbdGhpcy5jb21iaW5lZFJlY29yZGVyLCAuLi50aGlzLmZsb3dSZWNvcmRlcnNdIDogdGhpcy5mbG93UmVjb3JkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIExhemlseSBjcmVhdGUgdGhlIGV4ZWN1dG9yJ3MgT05FIGRlZmVycmVkLW9ic2VydmVyIHRpZXIgKG9uZSBtZXJnZWRcbiAgICogcXVldWUsIHRvdGFsIGV2ZW50IG9yZGVyIGFjcm9zcyBhbGwgdGhyZWUgY2hhbm5lbHMpLiBUaGUgRklSU1QgZGVmZXJyZWRcbiAgICogYXR0YWNoJ3Mgb3B0aW9ucyBjb25maWd1cmUgdGhlIGRpc3BhdGNoZXI7IGxhdGVyIGRpZmZlcmluZyBvcHRpb25zIGFyZVxuICAgKiBkZXYtd2FybmVkIGFuZCBpZ25vcmVkIChzZWUgYEF0dGFjaFJlY29yZGVyT3B0aW9uc2ApLlxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IERlZmVycmVkT2JzZXJ2ZXJUaWVyIHtcbiAgICBpZiAoIXRoaXMuZGVmZXJyZWRUaWVyKSB0aGlzLmRlZmVycmVkVGllciA9IG5ldyBEZWZlcnJlZE9ic2VydmVyVGllcihvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5kZWZlcnJlZFRpZXI7XG4gIH1cbn1cbiJdfQ==
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBR0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUk3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVySCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRixPQUFPLEVBQThCLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLN0YsTUFBTSxPQUFPLFlBQVk7SUFDdkIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLGdCQUFnQixDQUFvQztJQUNwRCxtR0FBbUc7SUFDbkcsZ0JBQWdCLENBQXdDO0lBQ3hELGFBQWEsR0FBbUIsRUFBRSxDQUFDO0lBQ25DLGNBQWMsR0FBb0IsRUFBRSxDQUFDO0lBQ3JDOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUF3QjtJQUVwQyxlQUFlLENBQUMsT0FBMEM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLE9BQU87WUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBdUIsRUFBRSxPQUErQjtRQUNsRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxPQUFP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QUN0RyxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3JHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGtCQUFrQixDQUFDLE9BQStCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBhdHRhY2gg4oCUIHdobyBvYnNlcnZlcyBhIHJ1biwgYW5kIGhvdyB0aGV5IHJlYWNoIGl0IChGOSkuXG4gKlxuICogYFJ1bk9ic2VydmVyc2AgaXMgdGhlIGV4ZWN1dG9yJ3MgT05FIHJlZ2lzdGVyIG9mIG9ic2VydmVyczogdGhlIGJ1aWx0LWluXG4gKiBuYXJyYXRpdmUgcmVjb3JkZXIsIHRoZSBpbmxpbmUgc2NvcGUgYW5kIGZsb3cgbGlzdHMsIGFuZCB0aGUgZGVmZXJyZWQgdGllclxuICogKFJGQy0wMDEpLiBUaGUgZXhlY3V0b3IncyBgYXR0YWNoKlJlY29yZGVyYCBmYW1pbHkgZGVsZWdhdGVzIGhlcmU7IGVhY2ggbGVnXG4gKiAoYHJ1bigpYCAvIGByZXN1bWUoKWApIGFza3MgaXQgZm9yIHRoZSBjb21wb3NlZCBzY29wZSBmYWN0b3J5IGFuZCB0aGUgZmxvd1xuICogcmVjb3JkZXIgbGlzdCBpdCBoYW5kcyB0aGUgdHJhdmVyc2VyLlxuICpcbiAqIExhd3Mga2VwdCBoZXJlOlxuICogICAtIGFuIGlkIGxpdmVzIG9uIGV4YWN0bHkgT05FIGRlbGl2ZXJ5IHRpZXIgcGVyIGxpc3Qg4oCUIHJlLWF0dGFjaGluZyB0aGVcbiAqICAgICBzYW1lIGlkIFNXQVBTIHRpZXJzLCBuZXZlciBkb3VibGUgZGVsaXZlcnk7XG4gKiAgIC0gZXZlcnkgYXR0YWNoIGlzIGlkZW1wb3RlbnQgYnkgYGlkYCAocmVwbGFjZSwgbmV2ZXIgZHVwbGljYXRlKTtcbiAqICAgLSBlbWl0IHJlY29yZGVycyByaWRlIHRoZSBTQ09QRSBsaXN0IChgU2NvcGVGYWNhZGVgIGRpc3BhdGNoZXMgYG9uRW1pdGBcbiAqICAgICBmcm9tIHRoZSBzYW1lIHBlci1zdGFnZSBsaXN0IGFzIGBvblJlYWRgL2BvbldyaXRlYCk7XG4gKiAgIC0gYSBmbG93IGF0dGFjaCB0dXJucyB0aGUgbmFycmF0aXZlIG9uICh0aGUgZmxvdyBjaGFubmVsIG5lZWRzIGl0KS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJ1bkNvcnJlbGF0aW9uIH0gZnJvbSAnLi4vYXR0ZW1wdC90eXBlcy5qcyc7XG5pbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICcuLi9kZXZNb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlck9wdGlvbnMgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL0NvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIuanMnO1xuaW1wb3J0IHsgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi4vcmVjb3JkZXIvQ29tYmluZWRSZWNvcmRlci5qcyc7XG5pbXBvcnQgeyBoYXNFbWl0UmVjb3JkZXJNZXRob2RzLCBoYXNGbG93UmVjb3JkZXJNZXRob2RzLCBoYXNSZWNvcmRlck1ldGhvZHMgfSBmcm9tICcuLi9yZWNvcmRlci9Db21iaW5lZFJlY29yZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVSdW50aW1lVGFyZ2V0IH0gZnJvbSAnLi4vc2NvcGUvcnVudGltZS5qcyc7XG5pbXBvcnQgeyBoYXNOYXRpdmVDYXB0dXJlVGFyZ2V0LCByZXF1aXJlU2NvcGVSdW50aW1lIH0gZnJvbSAnLi4vc2NvcGUvcnVudGltZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlZGFjdGlvblBvbGljeSwgU2NvcGVSZWNvcmRlciB9IGZyb20gJy4uL3Njb3BlL3R5cGVzLmpzJztcbmltcG9ydCB7IHR5cGUgQXR0YWNoUmVjb3JkZXJPcHRpb25zLCBEZWZlcnJlZE9ic2VydmVyVGllciB9IGZyb20gJy4vRGVmZXJyZWRPYnNlcnZlclRpZXIuanMnO1xuXG4vKiogQSBzdGVwIGFwcGxpZWQgdG8gZXZlcnkgc3RhZ2Ugc2NvcGUgcmlnaHQgYWZ0ZXIgdGhlIGJhc2UgZmFjdG9yeSBtYWtlcyBpdC4gKi9cbnR5cGUgU2NvcGVNb2RpZmllciA9ICh0YXJnZXQ6IFNjb3BlUnVudGltZVRhcmdldCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIFJ1bk9ic2VydmVycyB7XG4gIG5hcnJhdGl2ZUVuYWJsZWQgPSBmYWxzZTtcbiAgbmFycmF0aXZlT3B0aW9ucz86IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zO1xuICAvKiogVGhlIGJ1aWx0LWluIG5hcnJhdGl2ZSByZWNvcmRlciBvZiB0aGUgY3VycmVudCBsZWcgKGtlcHQgYWNyb3NzIGEgcmVzdW1lIHNvIGl0IGFjY3VtdWxhdGVzKS4gKi9cbiAgY29tYmluZWRSZWNvcmRlcjogQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciB8IHVuZGVmaW5lZDtcbiAgZmxvd1JlY29yZGVyczogRmxvd1JlY29yZGVyW10gPSBbXTtcbiAgc2NvcGVSZWNvcmRlcnM6IFNjb3BlUmVjb3JkZXJbXSA9IFtdO1xuICAvKipcbiAgICogUkZDLTAwMSBkZWZlcnJlZC1vYnNlcnZlciB3aXJpbmcg4oCUIGNyZWF0ZWQgTEFaSUxZIG9uIHRoZSBmaXJzdFxuICAgKiBgZGVsaXZlcnk6ICdkZWZlcnJlZCdgIGF0dGFjaC4gYHVuZGVmaW5lZGAgZm9yIGV2ZXJ5IGV4ZWN1dG9yIHRoYXQgbmV2ZXJcbiAgICogb3B0cyBpbjogemVybyBhbGxvY2F0aW9uLCB6ZXJvIHBlci1ldmVudCBjb3N0LCBieXRlLWlkZW50aWNhbCBiZWhhdmlvclxuICAgKiAodGhlIGVtaXQgZmFzdC1wYXRoIHByZWNlZGVudCkuXG4gICAqL1xuICBkZWZlcnJlZFRpZXI/OiBEZWZlcnJlZE9ic2VydmVyVGllcjtcblxuICBlbmFibGVOYXJyYXRpdmUob3B0aW9ucz86IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5uYXJyYXRpdmVFbmFibGVkID0gdHJ1ZTtcbiAgICBpZiAob3B0aW9ucykgdGhpcy5uYXJyYXRpdmVPcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIGF0dGFjaFNjb3BlKHJlY29yZGVyOiBTY29wZVJlY29yZGVyLCBvcHRpb25zPzogQXR0YWNoUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gVGllciBzd2FwLCBib3RoIGRpcmVjdGlvbnM6IGFuIGlkIGxpdmVzIG9uIGV4YWN0bHkgT05FIHRpZXIgcGVyIGxpc3QuXG4gICAgdGhpcy5zY29wZVJlY29yZGVycyA9IHRoaXMuc2NvcGVSZWNvcmRlcnMuZmlsdGVyKChyKSA9PiByLmlkICE9PSByZWNvcmRlci5pZCk7XG4gICAgaWYgKG9wdGlvbnM/LmRlbGl2ZXJ5ID09PSAnZGVmZXJyZWQnKSB7XG4gICAgICB0aGlzLmVuc3VyZURlZmVycmVkVGllcihvcHRpb25zKS5yZWdpc3RlcihyZWNvcmRlciwgeyBzY29wZTogdHJ1ZSB9LCBvcHRpb25zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZWZlcnJlZFRpZXI/LnJlbW92ZUZyb21MaXN0cyhyZWNvcmRlci5pZCwgeyBzY29wZTogdHJ1ZSB9KTtcbiAgICB0aGlzLnNjb3BlUmVjb3JkZXJzLnB1c2gocmVjb3JkZXIpO1xuICB9XG5cbiAgYXR0YWNoRmxvdyhyZWNvcmRlcjogRmxvd1JlY29yZGVyLCBvcHRpb25zPzogQXR0YWNoUmVjb3JkZXJPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gVGllciBzd2FwLCBib3RoIGRpcmVjdGlvbnM6IGFuIGlkIGxpdmVzIG9uIGV4YWN0bHkgT05FIHRpZXIgcGVyIGxpc3QuXG4gICAgdGhpcy5mbG93UmVjb3JkZXJzID0gdGhpcy5mbG93UmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gcmVjb3JkZXIuaWQpO1xuICAgIHRoaXMubmFycmF0aXZlRW5hYmxlZCA9IHRydWU7XG4gICAgaWYgKG9wdGlvbnM/LmRlbGl2ZXJ5ID09PSAnZGVmZXJyZWQnKSB7XG4gICAgICB0aGlzLmVuc3VyZURlZmVycmVkVGllcihvcHRpb25zKS5yZWdpc3RlcihyZWNvcmRlciwgeyBmbG93OiB0cnVlIH0sIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRlZmVycmVkVGllcj8ucmVtb3ZlRnJvbUxpc3RzKHJlY29yZGVyLmlkLCB7IGZsb3c6IHRydWUgfSk7XG4gICAgdGhpcy5mbG93UmVjb3JkZXJzLnB1c2gocmVjb3JkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvdXRlIGEgcmVjb3JkZXIgdG8gZXZlcnkgY2hhbm5lbCBpdCBoYXMgT1dOIGV2ZW50IG1ldGhvZHMgZm9yIChzZWVcbiAgICogYGhhc1JlY29yZGVyTWV0aG9kc2Ag4oCUIHByb3RvdHlwZS1jaGFpbiBtZXRob2RzIGFyZSBpZ25vcmVkIG9uIHB1cnBvc2UsXG4gICAqIGFnYWluc3QgYE9iamVjdC5wcm90b3R5cGVgIHBvbGx1dGlvbikuIElkZW1wb3RlbnQgYnkgYGlkYCBhY3Jvc3MgQUxMXG4gICAqIGNoYW5uZWxzOiBhIGNvbWJpbmVkIGF0dGFjaCByZXBsYWNlcyBhIHNpbmdsZS1jaGFubmVsIHJlZ2lzdHJhdGlvbiBvZiB0aGVcbiAgICogc2FtZSBpZCBvbiB3aGljaGV2ZXIgY2hhbm5lbChzKSB0aGUgcmVjb3JkZXIgaGFzIG1ldGhvZHMgZm9yLlxuICAgKi9cbiAgYXR0YWNoQ29tYmluZWQocmVjb3JkZXI6IENvbWJpbmVkUmVjb3JkZXIsIG9wdGlvbnM/OiBBdHRhY2hSZWNvcmRlck9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNEYXRhID0gaGFzUmVjb3JkZXJNZXRob2RzKHJlY29yZGVyKTtcbiAgICBjb25zdCBoYXNGbG93ID0gaGFzRmxvd1JlY29yZGVyTWV0aG9kcyhyZWNvcmRlcik7XG4gICAgY29uc3QgaGFzRW1pdCA9IGhhc0VtaXRSZWNvcmRlck1ldGhvZHMocmVjb3JkZXIpO1xuXG4gICAgLy8gRGVsaXZlcnkgdGllciAoUkZDLTAwMSk6IG9wdGlvbnMgYmFnIE9SIHRoZSByZWNvcmRlcidzIG93blxuICAgIC8vIGBkZWxpdmVyeTogJ2RlZmVycmVkJ2AgZmllbGQuIFRoZSBmaWVsZCBpcyBhIHN0cmluZyDigJQgY2hhbm5lbCByb3V0aW5nXG4gICAgLy8gYWJvdmUgY291bnRzIGV2ZW50LU1FVEhPRCBwcm9wZXJ0aWVzIG9ubHksIHNvIGRlY2xhcmluZyBpdCBuZXZlclxuICAgIC8vIGNoYW5nZXMgd2hpY2ggY2hhbm5lbHMgdGhlIHJlY29yZGVyIGxhbmRzIG9uLlxuICAgIGNvbnN0IGRlbGl2ZXJ5ID0gb3B0aW9ucz8uZGVsaXZlcnkgPz8gcmVjb3JkZXIuZGVsaXZlcnk7XG4gICAgY29uc3QgdGllck9wdGlvbnM6IEF0dGFjaFJlY29yZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCA9IGRlbGl2ZXJ5ID09PSB1bmRlZmluZWQgPyBvcHRpb25zIDogeyAuLi5vcHRpb25zLCBkZWxpdmVyeSB9O1xuXG4gICAgLy8gRW1pdCByZWNvcmRlcnMgbGl2ZSBvbiB0aGUgU0FNRSBjaGFubmVsIGFzIGRhdGEtZmxvdyByZWNvcmRlcnNcbiAgICAvLyAoU2NvcGVGYWNhZGUgaXRlcmF0ZXMgYF9yZWNvcmRlcnNgIGZvciBvbkVtaXQgZGlzcGF0Y2gpLiBTaG9ydC1jaXJjdWl0OlxuICAgIC8vIGlmIGhhc0RhdGEgT1IgaGFzRW1pdCwgdGhlIHJlY29yZGVyIGxhbmRzIG9uIHRoZSBzY29wZSBsaXN0IGV4YWN0bHkgb25jZS5cbiAgICBpZiAoaGFzRGF0YSB8fCBoYXNFbWl0KSB0aGlzLmF0dGFjaFNjb3BlKHJlY29yZGVyIGFzIFNjb3BlUmVjb3JkZXIsIHRpZXJPcHRpb25zKTtcbiAgICBpZiAoaGFzRmxvdykgdGhpcy5hdHRhY2hGbG93KHJlY29yZGVyIGFzIEZsb3dSZWNvcmRlciwgdGllck9wdGlvbnMpO1xuXG4gICAgaWYgKCFoYXNEYXRhICYmICFoYXNGbG93ICYmICFoYXNFbWl0ICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAvLyBEZXYtbW9kZSBvbmx5OiBzaWxlbnQgc2tpcHMgYXJlIGludmlzaWJsZSBhbmQgcHJvZHVjZSBoYXJkLXRvLWRlYnVnXG4gICAgICAvLyBcIndoeSBkaWRuJ3QgbXkgcmVjb3JkZXIgZmlyZVwiIHJlcG9ydHMuIFBlciBsaWJyYXJ5IGNvbnZlbnRpb24sIGdhdGVkXG4gICAgICAvLyBvbiB0aGUgY2VudHJhbCBpc0Rldk1vZGUoKSBmbGFnIChub3QgcHJvY2Vzcy5lbnYpIHNvIGNvbnN1bWVycyBjYW5cbiAgICAgIC8vIGNvbnRyb2wgZGV2IHRvb2xpbmcgY2VudHJhbGx5IHZpYSBlbmFibGVEZXZNb2RlKCkvZGlzYWJsZURldk1vZGUoKS5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbZm9vdHByaW50anNdIGF0dGFjaENvbWJpbmVkUmVjb3JkZXI6IHJlY29yZGVyICcke3JlY29yZGVyLmlkfScgaGFzIGAgK1xuICAgICAgICAgICdubyBvYnNlcnZlciBldmVudCBtZXRob2RzIOKAlCBub3RoaW5nIHRvIGF0dGFjaC4gRGlkIHlvdSBmb3JnZXQgdG8gJyArXG4gICAgICAgICAgJ2FkZCBhbiBvbiogaGFuZGxlciAob25Xcml0ZSwgb25EZWNpc2lvbiwgb25TdWJmbG93RW50cnksIC4uLik/ICcgK1xuICAgICAgICAgICdOb3RlOiBvbmx5IE9XTiBwcm9wZXJ0aWVzIGNvdW50OyBtZXRob2RzIG9uIHRoZSBwcm90b3R5cGUgY2hhaW4gJyArXG4gICAgICAgICAgJ2FyZSBpZ25vcmVkIG9uIHB1cnBvc2UuJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERldGFjaCBldmVyeSBzY29wZSByZWNvcmRlciB3aXRoIHRoaXMgaWQg4oCUIGJvdGggZGVsaXZlcnkgdGllcnMuICovXG4gIGRldGFjaFNjb3BlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNjb3BlUmVjb3JkZXJzID0gdGhpcy5zY29wZVJlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgICB0aGlzLmRlZmVycmVkVGllcj8ucmVtb3ZlRnJvbUxpc3RzKGlkLCB7IHNjb3BlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqIERldGFjaCBldmVyeSBmbG93IHJlY29yZGVyIHdpdGggdGhpcyBpZCDigJQgYm90aCBkZWxpdmVyeSB0aWVycy4gKi9cbiAgZGV0YWNoRmxvdyhpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mbG93UmVjb3JkZXJzID0gdGhpcy5mbG93UmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gaWQpO1xuICAgIHRoaXMuZGVmZXJyZWRUaWVyPy5yZW1vdmVGcm9tTGlzdHMoaWQsIHsgZmxvdzogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBBIGRlZmVuc2l2ZSBjb3B5IG9mIHRoZSBzY29wZSBsaXN0IChib3RoIHRpZXJzKS4gKi9cbiAgc2NvcGVMaXN0KCk6IFNjb3BlUmVjb3JkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnNjb3BlUmVjb3JkZXJzLCAuLi4odGhpcy5kZWZlcnJlZFRpZXI/LnNjb3BlTGlzdFJlY29yZGVycygpID8/IFtdKV07XG4gIH1cblxuICAvKiogQSBkZWZlbnNpdmUgY29weSBvZiB0aGUgZmxvdyBsaXN0IChib3RoIHRpZXJzKS4gKi9cbiAgZmxvd0xpc3QoKTogRmxvd1JlY29yZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5mbG93UmVjb3JkZXJzLCAuLi4odGhpcy5kZWZlcnJlZFRpZXI/LmZsb3dMaXN0UmVjb3JkZXJzKCkgPz8gW10pXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGZyZXNoIGBydW4oKWAgY2xlYXJzIGV2ZXJ5IGF0dGFjaGVkIHJlY29yZGVyIChgY2xlYXIoKWApLCBzbyBzdGF0ZSBkb2VzXG4gICAqIG5vdCBhY2N1bXVsYXRlIGFjcm9zcyBydW5zLiBUaGUgbmFycmF0aXZlIHJlY29yZGVyIGlzIG5vdCBjbGVhcmVkOiBlYWNoXG4gICAqIGZyZXNoIGxlZyBidWlsZHMgYSBuZXcgb25lICh7QGxpbmsgc3RhcnRMZWd9KS5cbiAgICovXG4gIGNsZWFyRm9yUnVuKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLmZsb3dSZWNvcmRlcnMpIHtcbiAgICAgIHIuY2xlYXI/LigpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5zY29wZVJlY29yZGVycykge1xuICAgICAgci5jbGVhcj8uKCk7XG4gICAgfVxuICAgIHRoaXMuZGVmZXJyZWRUaWVyPy5jbGVhclJlY29yZGVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gYSBsZWc6IGEgZnJlc2ggbmFycmF0aXZlIHJlY29yZGVyIHdoZW4gdGhlIG5hcnJhdGl2ZSBpcyBvbiwgbm9uZSB3aGVuXG4gICAqIGl0IGlzIG9mZiDigJQgb3IsIG9uIGEgcmVzdW1lIChgcHJlc2VydmVgKSwgdGhlIGV4aXN0aW5nIG9uZSwgc28gdGhlXG4gICAqIG5hcnJhdGl2ZSBhY2N1bXVsYXRlcyBhY3Jvc3MgdGhlIHBhdXNlLiBBIGZyZXNoIGV4ZWN1dG9yIGhhcyBubyByZWNvcmRlclxuICAgKiB0byBwcmVzZXJ2ZSBhbmQgc3RhcnRzIG9uZSBmb3IgdGhlIHJlc3VtZWQgbGVnIG9ubHkuXG4gICAqIFJldHVybnMgdGhlIGxlZydzIG5hcnJhdGl2ZSBmbGFnLlxuICAgKi9cbiAgc3RhcnRMZWcoY2hhcnROYXJyYXRpdmU6IGJvb2xlYW4sIHByZXNlcnZlOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmFycmF0aXZlRmxhZyA9IHRoaXMubmFycmF0aXZlRW5hYmxlZCB8fCBjaGFydE5hcnJhdGl2ZTtcbiAgICBpZiAoIXByZXNlcnZlIHx8ICF0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIHRoaXMuY29tYmluZWRSZWNvcmRlciA9IG5hcnJhdGl2ZUZsYWcgPyBuZXcgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlcih0aGlzLm5hcnJhdGl2ZU9wdGlvbnMpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gbmFycmF0aXZlRmxhZztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGVnJ3Mgc2NvcGUgZmFjdG9yeTogdGhlIGJhc2UgZmFjdG9yeSwgdGhlbiBldmVyeSBzY29wZSBtb2RpZmllciBpbiBPTkVcbiAgICogZmxhdCBwYXNzIOKAlCB0aGUgbmFycmF0aXZlIHJlY29yZGVyLCB0aGUgdXNlcidzIHNjb3BlIHJlY29yZGVycywgdGhlXG4gICAqIGRlZmVycmVkIHRpZXIncyBzY29wZSB0YXAsIHRoZSByZWRhY3Rpb24gcG9saWN5LlxuICAgKlxuICAgKiBUaGUgbWFya2VkLWtleXMgc2V0IGlzIEFMV0FZUyB3aXJlZCAoYSBzdGFnZSBjYW4gY2FsbFxuICAgKiBgc2V0VmFsdWUoa2V5LCB2YWwsIHRydWUpYCBmb3IgcGVyLWNhbGwgcmVkYWN0aW9uIHdpdGhvdXQgYW55IHBvbGljeSkuXG4gICAqL1xuICBjb21wb3NlU2NvcGVGYWN0b3J5PFRTY29wZT4oXG4gICAgYmFzZUZhY3Rvcnk6IFNjb3BlRmFjdG9yeTxUU2NvcGU+LFxuICAgIHJlZGFjdGlvblBvbGljeTogUmVkYWN0aW9uUG9saWN5IHwgdW5kZWZpbmVkLFxuICAgIHNoYXJlZFJlZGFjdGVkS2V5czogU2V0PHN0cmluZz4sXG4gICAgY29ycmVsYXRpb24/OiBSdW5Db3JyZWxhdGlvbixcbiAgKTogU2NvcGVGYWN0b3J5PFRTY29wZT4ge1xuICAgIGNvbnN0IG1vZGlmaWVyczogU2NvcGVNb2RpZmllcltdID0gW107XG5cbiAgICAvLyAxLiBOYXJyYXRpdmUgcmVjb3JkZXIgKGlmIGVuYWJsZWQpXG4gICAgaWYgKHRoaXMuY29tYmluZWRSZWNvcmRlcikge1xuICAgICAgY29uc3QgcmVjb3JkZXIgPSB0aGlzLmNvbWJpbmVkUmVjb3JkZXI7XG4gICAgICBtb2RpZmllcnMucHVzaCgodGFyZ2V0KSA9PiB7XG4gICAgICAgIHRhcmdldC5hdHRhY2hTY29wZVJlY29yZGVyPy4ocmVjb3JkZXIpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gMi4gVXNlci1wcm92aWRlZCBzY29wZSByZWNvcmRlcnNcbiAgICBpZiAodGhpcy5zY29wZVJlY29yZGVycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCByZWNvcmRlcnMgPSB0aGlzLnNjb3BlUmVjb3JkZXJzO1xuICAgICAgbW9kaWZpZXJzLnB1c2goKHRhcmdldCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHIgb2YgcmVjb3JkZXJzKSB0YXJnZXQuYXR0YWNoU2NvcGVSZWNvcmRlcj8uKHIpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gMmIuIERlZmVycmVkLW9ic2VydmVyIHNjb3BlIHRhcCAoUkZDLTAwMSBCbG9jayA3KSDigJQgYSBzeW50aGV0aWNcbiAgICAvLyByZWNvcmRlciB3aG9zZSBob29rcyBDQVBUVVJFIGludG8gdGhlIGJvdW5kZWQgcXVldWUgaW5zdGVhZCBvZiBkb2luZ1xuICAgIC8vIG9ic2VydmVyIHdvcmsuIEl0IHJpZGVzIHRoZSBzYW1lIHBlci1zdGFnZSByZWNvcmRlciBsaXN0IGFzIGlubGluZVxuICAgIC8vIHJlY29yZGVycywgc28gaXQgcmVjZWl2ZXMgZXhhY3RseSB0aGUgcG9zdC1yZWRhY3Rpb24gZXZlbnRzIHRoZXkgZG8uXG4gICAgLy8gQWJzZW50ICh6ZXJvIHdvcmssIGlkZW50aWNhbCBsaXN0KSB3aGVuIG5vYm9keSBvcHRlZCBpbnRvIGRlZmVycmFsLlxuICAgIGNvbnN0IHNjb3BlVGFwID0gdGhpcy5kZWZlcnJlZFRpZXI/LmJ1aWxkU2NvcGVUYXAoKTtcbiAgICBpZiAoc2NvcGVUYXApIHtcbiAgICAgIG1vZGlmaWVycy5wdXNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgdGFyZ2V0LmF0dGFjaFNjb3BlUmVjb3JkZXI/LihzY29wZVRhcCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAzLiBSZWRhY3Rpb24gcG9saWN5IChjb25kaXRpb25hbCDigJQgb25seSB3aGVuIHBvbGljeSBpcyBzZXQpLiBBXG4gICAgLy8gYFNjb3BlRmFjYWRlYCBhbHJlYWR5IHJlYWRzIHRoZSBydW4ncyBydWxlIHRocm91Z2ggaXRzIGNvbnRleHQgKHRoZVxuICAgIC8vIHJ1bGUgaXMgaW5zdGFsbGVkIG9uIHRoZSBydW50aW1lIHJvb3QpOyB0aGlzIGNhbGwgc3VwcGxpZXMgaXQgdG9cbiAgICAvLyBleHBsaWNpdGx5IHJlZ2lzdGVyZWQgY3VzdG9tIHBvcnRzLCBhbmQgb24gYSBmYWNhZGUgaXRcbiAgICAvLyByZS1zdGF0ZXMgdGhlIGV4ZWN1dG9yJ3MgcG9saWN5IG9uIHRoZSBzaGFyZWQgcnVsZSAoYSBuby1vcCkuXG4gICAgaWYgKHJlZGFjdGlvblBvbGljeSkge1xuICAgICAgY29uc3QgcG9saWN5ID0gcmVkYWN0aW9uUG9saWN5O1xuICAgICAgbW9kaWZpZXJzLnB1c2goKHRhcmdldCkgPT4ge1xuICAgICAgICB0YXJnZXQudXNlUmVkYWN0aW9uUG9saWN5Py4ocG9saWN5KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDQuIFRoZSBsZWcncyBjb3JyZWxhdGlvbiAoMTAuMSkg4oCUIG9uZSBmcm96ZW4gb2JqZWN0IHBlciBsZWcsIHNvIGEgZmFjdG9yeSBjb21wb3NlZCBmb3Igb25lIGxlZyBuZXZlclxuICAgIC8vIHN0YW1wcyBhbm90aGVyJ3MuIEluc3RhbGxlZCBldmVuIHdoZW4gYWJzZW50OiBhIHRhcmdldCBhIGN1c3RvbSBmYWN0b3J5IHJlLXVzZXMgYWNyb3NzIHJ1bnMgaXMgQ0xFQVJFRCxcbiAgICAvLyBuZXZlciBsZWZ0IGhvbGRpbmcgYW4gZWFybGllciBydW4ncy4gQWJzZW50IOKGkiBldmVudHMgYnl0ZS1pZGVudGljYWwuXG4gICAgbW9kaWZpZXJzLnB1c2goKHRhcmdldCkgPT4ge1xuICAgICAgdGFyZ2V0LnVzZUNvcnJlbGF0aW9uPy4oY29ycmVsYXRpb24pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICgoY3R4OiBhbnksIHN0YWdlTmFtZTogc3RyaW5nLCByZWFkT25seT86IHVua25vd24sIGVudkFyZz86IGFueSkgPT4ge1xuICAgICAgY29uc3Qgc2NvcGUgPSBiYXNlRmFjdG9yeShjdHgsIHN0YWdlTmFtZSwgcmVhZE9ubHksIGVudkFyZyk7XG4gICAgICBjb25zdCB7IHRhcmdldCB9ID0gcmVxdWlyZVNjb3BlUnVudGltZShzY29wZSk7XG4gICAgICBpZiAoY3R4LmNhcHR1cmUgJiYgIWhhc05hdGl2ZUNhcHR1cmVUYXJnZXQodGFyZ2V0LCBjdHgpKSBjdHguY2FwdHVyZS5saW1pdCgnY3VzdG9tLXNjb3BlJyk7XG4gICAgICBpZiAoY3R4LnJlYWRTb3VyY2VzPy5vYnNlcnZpbmcgJiYgIWhhc05hdGl2ZUNhcHR1cmVUYXJnZXQodGFyZ2V0LCBjdHgpKSBjdHgucmVhZFNvdXJjZXMubGltaXQoJ2N1c3RvbS1zY29wZScpO1xuICAgICAgLy8gQWx3YXlzIHdpcmUgc2hhcmVkIHJlZGFjdGlvbiBzdGF0ZVxuICAgICAgdGFyZ2V0LnVzZVNoYXJlZFJlZGFjdGVkS2V5cz8uKHNoYXJlZFJlZGFjdGVkS2V5cyk7XG4gICAgICAvLyBBcHBseSBvcHRpb25hbCBtb2RpZmllcnNcbiAgICAgIGZvciAoY29uc3QgbW9kIG9mIG1vZGlmaWVycykgbW9kKHRhcmdldCk7XG4gICAgICByZXR1cm4gc2NvcGU7XG4gICAgfSkgYXMgU2NvcGVGYWN0b3J5PFRTY29wZT47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxlZydzIGZsb3cgcmVjb3JkZXJzOiB0aGUgbmFycmF0aXZlIHJlY29yZGVyICh3aGVuIG9uKSwgdGhlIHVzZXInc1xuICAgKiBmbG93IHJlY29yZGVycywgdGhlbiB0aGUgZGVmZXJyZWQgdGllcidzIGZsb3cgdGFwIChSRkMtMDAxIEJsb2NrIDcpIOKAlFxuICAgKiBhcHBlbmRlZCBsaWtlIGFueSBvdGhlciBmbG93IHJlY29yZGVyLCBzbyB0aGUgZGlzcGF0Y2hlciBuZWVkcyBubyB0aWVyXG4gICAqIGxvZ2ljIG9mIGl0cyBvd24uIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgYXJlIG5vbmUuXG4gICAqL1xuICBmbG93UmVjb3JkZXJzTGlzdCgpOiBGbG93UmVjb3JkZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcmVjb3JkZXJzOiBGbG93UmVjb3JkZXJbXSA9IFtdO1xuICAgIGlmICh0aGlzLmNvbWJpbmVkUmVjb3JkZXIpIHtcbiAgICAgIHJlY29yZGVycy5wdXNoKHRoaXMuY29tYmluZWRSZWNvcmRlcik7XG4gICAgfVxuICAgIHJlY29yZGVycy5wdXNoKC4uLnRoaXMuZmxvd1JlY29yZGVycyk7XG4gICAgY29uc3QgZmxvd1RhcCA9IHRoaXMuZGVmZXJyZWRUaWVyPy5idWlsZEZsb3dUYXAoKTtcbiAgICBpZiAoZmxvd1RhcCkgcmVjb3JkZXJzLnB1c2goZmxvd1RhcCk7XG4gICAgcmV0dXJuIHJlY29yZGVycy5sZW5ndGggPiAwID8gcmVjb3JkZXJzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIFRoZSBpbmxpbmUgZmxvdyBsaXN0ZW5lcnMgb2YgYW4gZXhlY3V0b3ItbWFkZSBldmVudCAoYG9uUmVzdW1lYCk6IHRoZSBuYXJyYXRpdmUgcmVjb3JkZXIgZmlyc3QuICovXG4gIGlubGluZUZsb3dMaXN0ZW5lcnMoKTogRmxvd1JlY29yZGVyW10ge1xuICAgIHJldHVybiB0aGlzLmNvbWJpbmVkUmVjb3JkZXIgPyBbdGhpcy5jb21iaW5lZFJlY29yZGVyLCAuLi50aGlzLmZsb3dSZWNvcmRlcnNdIDogdGhpcy5mbG93UmVjb3JkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIExhemlseSBjcmVhdGUgdGhlIGV4ZWN1dG9yJ3MgT05FIGRlZmVycmVkLW9ic2VydmVyIHRpZXIgKG9uZSBtZXJnZWRcbiAgICogcXVldWUsIHRvdGFsIGV2ZW50IG9yZGVyIGFjcm9zcyBhbGwgdGhyZWUgY2hhbm5lbHMpLiBUaGUgRklSU1QgZGVmZXJyZWRcbiAgICogYXR0YWNoJ3Mgb3B0aW9ucyBjb25maWd1cmUgdGhlIGRpc3BhdGNoZXI7IGxhdGVyIGRpZmZlcmluZyBvcHRpb25zIGFyZVxuICAgKiBkZXYtd2FybmVkIGFuZCBpZ25vcmVkIChzZWUgYEF0dGFjaFJlY29yZGVyT3B0aW9uc2ApLlxuICAgKi9cbiAgcHJpdmF0ZSBlbnN1cmVEZWZlcnJlZFRpZXIob3B0aW9ucz86IEF0dGFjaFJlY29yZGVyT3B0aW9ucyk6IERlZmVycmVkT2JzZXJ2ZXJUaWVyIHtcbiAgICBpZiAoIXRoaXMuZGVmZXJyZWRUaWVyKSB0aGlzLmRlZmVycmVkVGllciA9IG5ldyBEZWZlcnJlZE9ic2VydmVyVGllcihvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5kZWZlcnJlZFRpZXI7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ExecutionRuntime, RuntimeSnapshot } from './ExecutionRuntime.js';
|
|
2
|
+
import type { RunRecord } from './recordSink.js';
|
|
3
|
+
/** @internal Keeps a timed-out operation leased until its actual settlement. */
|
|
4
|
+
export interface CaptureHistoryLease {
|
|
5
|
+
pending: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Persist one terminal native root segment, without changing its memory-only engine observation. */
|
|
8
|
+
export declare function persistCaptureHistory(runtime: ExecutionRuntime, record: RunRecord, snapshot: () => RuntimeSnapshot, lease: CaptureHistoryLease): Promise<void>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { copyCaptureEvidence, validateAbsentEntries } from '../capture/absentEntries.js';
|
|
2
|
+
import { copyHistoryData, HistoryDataError, historyDigest } from '../capture/historyData.js';
|
|
3
|
+
import { copyHistoryReceipt, copyHistoryTarget } from '../capture/historyTarget.js';
|
|
4
|
+
import { CAPTURE_HISTORY_NOTE, CAPTURE_RECEIPT_NOTE } from '../capture/historyTypes.js';
|
|
5
|
+
/** Persist one terminal native root segment, without changing its memory-only engine observation. */
|
|
6
|
+
export async function persistCaptureHistory(runtime, record, snapshot, lease) {
|
|
7
|
+
const options = record.captureOptions;
|
|
8
|
+
if (!options)
|
|
9
|
+
return;
|
|
10
|
+
// Packet 4 must digest and acknowledge the source envelope before sources can be durable.
|
|
11
|
+
if (runtime.readSources) {
|
|
12
|
+
record.captureResult({ status: 'unknown', reason: 'source-history-not-included' });
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (lease.pending) {
|
|
16
|
+
record.captureResult({ status: 'unknown', reason: 'acknowledgement-pending' });
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
lease.pending = true;
|
|
20
|
+
const controller = new AbortController();
|
|
21
|
+
let active = true;
|
|
22
|
+
let timer;
|
|
23
|
+
const unknown = (reason) => record.captureResult({ status: 'unknown', reason });
|
|
24
|
+
const work = async () => {
|
|
25
|
+
try {
|
|
26
|
+
if (!runtime.capture || record.stats().failed > 0)
|
|
27
|
+
return unknown('prior-delivery-failed');
|
|
28
|
+
const view = snapshot();
|
|
29
|
+
const note = view.capture;
|
|
30
|
+
if (!note || note.boundary.status === 'running')
|
|
31
|
+
return unknown('capture-unavailable');
|
|
32
|
+
const payload = copyCaptureEvidence(record.serve({
|
|
33
|
+
capture: note,
|
|
34
|
+
executionTree: view.executionTree,
|
|
35
|
+
...(view.recorders && { recorders: view.recorders }),
|
|
36
|
+
}), options.maxBytes ?? 1024 * 1024);
|
|
37
|
+
const basis = copyHistoryData({
|
|
38
|
+
commitLog: view.commitLog,
|
|
39
|
+
...(view.initialState !== undefined && { initialState: record.captureInitialState(view.initialState) }),
|
|
40
|
+
}, options.maxBytes ?? 1024 * 1024);
|
|
41
|
+
const target = copyHistoryTarget({
|
|
42
|
+
version: 1,
|
|
43
|
+
evidenceId: note.runId,
|
|
44
|
+
runId: note.runId,
|
|
45
|
+
digest: await historyDigest({ evidence: payload, record: basis }),
|
|
46
|
+
logAddress: note.logAddress,
|
|
47
|
+
commits: note.commits,
|
|
48
|
+
});
|
|
49
|
+
if (!active)
|
|
50
|
+
return;
|
|
51
|
+
if (!target)
|
|
52
|
+
return unknown('capture-unavailable');
|
|
53
|
+
const evidence = copyHistoryData(record.serve({ target, ...payload }), options.maxBytes ?? 1024 * 1024);
|
|
54
|
+
// A redaction rule may mask protocol fields too. Such a record is not eligible for acknowledgement.
|
|
55
|
+
if (!validateAbsentEntries(evidence) ||
|
|
56
|
+
!copyHistoryTarget(evidence.target) ||
|
|
57
|
+
JSON.stringify(copyHistoryTarget(evidence.target)) !== JSON.stringify(target))
|
|
58
|
+
return unknown('evidence-refused');
|
|
59
|
+
runtime.noteRecord(CAPTURE_HISTORY_NOTE, evidence);
|
|
60
|
+
const delivered = await record.flush(options.timeoutMs ?? 10_000);
|
|
61
|
+
if (!active)
|
|
62
|
+
return;
|
|
63
|
+
if (!delivered.done || record.pendingCaptureDeliveries || record.stats().failed > 0)
|
|
64
|
+
return unknown('evidence-delivery-unknown');
|
|
65
|
+
const receipt = copyHistoryReceipt(await options.acknowledge(target, { signal: controller.signal }), target);
|
|
66
|
+
if (!active)
|
|
67
|
+
return;
|
|
68
|
+
if (!receipt)
|
|
69
|
+
return unknown('acknowledgement-refused');
|
|
70
|
+
const servedReceipt = record.serve({ ...receipt });
|
|
71
|
+
if (!copyHistoryReceipt(servedReceipt, target))
|
|
72
|
+
return unknown('acknowledgement-refused');
|
|
73
|
+
runtime.noteRecord(CAPTURE_RECEIPT_NOTE, servedReceipt);
|
|
74
|
+
const persisted = await record.flush(options.timeoutMs ?? 10_000);
|
|
75
|
+
if (!active)
|
|
76
|
+
return;
|
|
77
|
+
if (!persisted.done || record.pendingCaptureDeliveries || record.stats().failed > 0)
|
|
78
|
+
return unknown('receipt-delivery-unknown');
|
|
79
|
+
record.captureResult({ status: 'acknowledged' });
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (active)
|
|
83
|
+
unknown(error instanceof HistoryDataError && error.code === 'too-large' ? 'evidence-too-large' : 'evidence-refused');
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
try {
|
|
87
|
+
await Promise.race([
|
|
88
|
+
work().finally(() => {
|
|
89
|
+
lease.pending = false;
|
|
90
|
+
}),
|
|
91
|
+
new Promise((resolve) => {
|
|
92
|
+
timer = setTimeout(() => {
|
|
93
|
+
active = false;
|
|
94
|
+
controller.abort();
|
|
95
|
+
unknown('acknowledgement-timeout');
|
|
96
|
+
resolve();
|
|
97
|
+
}, options.timeoutMs ?? 10_000);
|
|
98
|
+
}),
|
|
99
|
+
]);
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
active = false;
|
|
103
|
+
clearTimeout(timer);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdHVyZUhpc3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3J1bm5lci9jYXB0dXJlSGlzdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBU3hGLHFHQUFxRztBQUNyRyxNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxPQUF5QixFQUN6QixNQUFpQixFQUNqQixRQUErQixFQUMvQixLQUEwQjtJQUUxQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTztJQUNyQiwwRkFBMEY7SUFDMUYsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLDZCQUE2QixFQUFFLENBQUMsQ0FBQztRQUNuRixPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxDQUFDLENBQUM7UUFDL0UsT0FBTztJQUNULENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUNyQixNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsRUFB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LENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLE1BQU07Z0JBQ1IsT0FBTyxDQUNMLEtBQUssWUFBWSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUM1RyxDQUFDO1FBQ04sQ0FBQztJQUNILENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztZQUNqQixJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNsQixLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLENBQUM7WUFDRixJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUM1QixLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDdEIsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDZixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ25CLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO1lBQVMsQ0FBQztRQUNULE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDZixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1ldGEgfSBmcm9tICdmb290dHJhY2UnO1xuXG5pbXBvcnQgeyBjb3B5Q2FwdHVyZUV2aWRlbmNlLCB2YWxpZGF0ZUFic2VudEVudHJpZXMgfSBmcm9tICcuLi9jYXB0dXJlL2Fic2VudEVudHJpZXMuanMnO1xuaW1wb3J0IHsgY29weUhpc3RvcnlEYXRhLCBIaXN0b3J5RGF0YUVycm9yLCBoaXN0b3J5RGlnZXN0IH0gZnJvbSAnLi4vY2FwdHVyZS9oaXN0b3J5RGF0YS5qcyc7XG5pbXBvcnQgeyBjb3B5SGlzdG9yeVJlY2VpcHQsIGNvcHlIaXN0b3J5VGFyZ2V0IH0gZnJvbSAnLi4vY2FwdHVyZS9oaXN0b3J5VGFyZ2V0LmpzJztcbmltcG9ydCB7IENBUFRVUkVfSElTVE9SWV9OT1RFLCBDQVBUVVJFX1JFQ0VJUFRfTk9URSB9IGZyb20gJy4uL2NhcHR1cmUvaGlzdG9yeVR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRXhlY3V0aW9uUnVudGltZSwgUnVudGltZVNuYXBzaG90IH0gZnJvbSAnLi9FeGVjdXRpb25SdW50aW1lLmpzJztcbmltcG9ydCB0eXBlIHsgUnVuUmVjb3JkIH0gZnJvbSAnLi9yZWNvcmRTaW5rLmpzJztcblxuLyoqIEBpbnRlcm5hbCBLZWVwcyBhIHRpbWVkLW91dCBvcGVyYXRpb24gbGVhc2VkIHVudGlsIGl0cyBhY3R1YWwgc2V0dGxlbWVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwdHVyZUhpc3RvcnlMZWFzZSB7XG4gIHBlbmRpbmc6IGJvb2xlYW47XG59XG5cbi8qKiBQZXJzaXN0IG9uZSB0ZXJtaW5hbCBuYXRpdmUgcm9vdCBzZWdtZW50LCB3aXRob3V0IGNoYW5naW5nIGl0cyBtZW1vcnktb25seSBlbmdpbmUgb2JzZXJ2YXRpb24uICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGVyc2lzdENhcHR1cmVIaXN0b3J5KFxuICBydW50aW1lOiBFeGVjdXRpb25SdW50aW1lLFxuICByZWNvcmQ6IFJ1blJlY29yZCxcbiAgc25hcHNob3Q6ICgpID0+IFJ1bnRpbWVTbmFwc2hvdCxcbiAgbGVhc2U6IENhcHR1cmVIaXN0b3J5TGVhc2UsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHJlY29yZC5jYXB0dXJlT3B0aW9ucztcbiAgaWYgKCFvcHRpb25zKSByZXR1cm47XG4gIC8vIFBhY2tldCA0IG11c3QgZGlnZXN0IGFuZCBhY2tub3dsZWRnZSB0aGUgc291cmNlIGVudmVsb3BlIGJlZm9yZSBzb3VyY2VzIGNhbiBiZSBkdXJhYmxlLlxuICBpZiAocnVudGltZS5yZWFkU291cmNlcykge1xuICAgIHJlY29yZC5jYXB0dXJlUmVzdWx0KHsgc3RhdHVzOiAndW5rbm93bicsIHJlYXNvbjogJ3NvdXJjZS1oaXN0b3J5LW5vdC1pbmNsdWRlZCcgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChsZWFzZS5wZW5kaW5nKSB7XG4gICAgcmVjb3JkLmNhcHR1cmVSZXN1bHQoeyBzdGF0dXM6ICd1bmtub3duJywgcmVhc29uOiAnYWNrbm93bGVkZ2VtZW50LXBlbmRpbmcnIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBsZWFzZS5wZW5kaW5nID0gdHJ1ZTtcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgbGV0IGFjdGl2ZSA9IHRydWU7XG4gIGxldCB0aW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHVua25vd24gPSAocmVhc29uOiBzdHJpbmcpID0+IHJlY29yZC5jYXB0dXJlUmVzdWx0KHsgc3RhdHVzOiAndW5rbm93bicsIHJlYXNvbiB9KTtcbiAgY29uc3Qgd29yayA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFydW50aW1lLmNhcHR1cmUgfHwgcmVjb3JkLnN0YXRzKCkuZmFpbGVkID4gMCkgcmV0dXJuIHVua25vd24oJ3ByaW9yLWRlbGl2ZXJ5LWZhaWxlZCcpO1xuICAgICAgY29uc3QgdmlldyA9IHNuYXBzaG90KCk7XG4gICAgICBjb25zdCBub3RlID0gdmlldy5jYXB0dXJlO1xuICAgICAgaWYgKCFub3RlIHx8IG5vdGUuYm91bmRhcnkuc3RhdHVzID09PSAncnVubmluZycpIHJldHVybiB1bmtub3duKCdjYXB0dXJlLXVuYXZhaWxhYmxlJyk7XG4gICAgICBjb25zdCBwYXlsb2FkID0gY29weUNhcHR1cmVFdmlkZW5jZShcbiAgICAgICAgcmVjb3JkLnNlcnZlKHtcbiAgICAgICAgICBjYXB0dXJlOiBub3RlLFxuICAgICAgICAgIGV4ZWN1dGlvblRyZWU6IHZpZXcuZXhlY3V0aW9uVHJlZSxcbiAgICAgICAgICAuLi4odmlldy5yZWNvcmRlcnMgJiYgeyByZWNvcmRlcnM6IHZpZXcucmVjb3JkZXJzIH0pLFxuICAgICAgICB9KSxcbiAgICAgICAgb3B0aW9ucy5tYXhCeXRlcyA/PyAxMDI0ICogMTAyNCxcbiAgICAgICkgYXMgTWV0YTtcbiAgICAgIGNvbnN0IGJhc2lzID0gY29weUhpc3RvcnlEYXRhKFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWl0TG9nOiB2aWV3LmNvbW1pdExvZyxcbiAgICAgICAgICAuLi4odmlldy5pbml0aWFsU3RhdGUgIT09IHVuZGVmaW5lZCAmJiB7IGluaXRpYWxTdGF0ZTogcmVjb3JkLmNhcHR1cmVJbml0aWFsU3RhdGUodmlldy5pbml0aWFsU3RhdGUpIH0pLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLm1heEJ5dGVzID8/IDEwMjQgKiAxMDI0LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGNvcHlIaXN0b3J5VGFyZ2V0KHtcbiAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgZXZpZGVuY2VJZDogbm90ZS5ydW5JZCxcbiAgICAgICAgcnVuSWQ6IG5vdGUucnVuSWQsXG4gICAgICAgIGRpZ2VzdDogYXdhaXQgaGlzdG9yeURpZ2VzdCh7IGV2aWRlbmNlOiBwYXlsb2FkLCByZWNvcmQ6IGJhc2lzIH0pLFxuICAgICAgICBsb2dBZGRyZXNzOiBub3RlLmxvZ0FkZHJlc3MsXG4gICAgICAgIGNvbW1pdHM6IG5vdGUuY29tbWl0cyxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFhY3RpdmUpIHJldHVybjtcbiAgICAgIGlmICghdGFyZ2V0KSByZXR1cm4gdW5rbm93bignY2FwdHVyZS11bmF2YWlsYWJsZScpO1xuICAgICAgY29uc3QgZXZpZGVuY2UgPSBjb3B5SGlzdG9yeURhdGEocmVjb3JkLnNlcnZlKHsgdGFyZ2V0LCAuLi5wYXlsb2FkIH0pLCBvcHRpb25zLm1heEJ5dGVzID8/IDEwMjQgKiAxMDI0KSBhcyBNZXRhO1xuICAgICAgLy8gQSByZWRhY3Rpb24gcnVsZSBtYXkgbWFzayBwcm90b2NvbCBmaWVsZHMgdG9vLiBTdWNoIGEgcmVjb3JkIGlzIG5vdCBlbGlnaWJsZSBmb3IgYWNrbm93bGVkZ2VtZW50LlxuICAgICAgaWYgKFxuICAgICAgICAhdmFsaWRhdGVBYnNlbnRFbnRyaWVzKGV2aWRlbmNlKSB8fFxuICAgICAgICAhY29weUhpc3RvcnlUYXJnZXQoZXZpZGVuY2UudGFyZ2V0KSB8fFxuICAgICAgICBKU09OLnN0cmluZ2lmeShjb3B5SGlzdG9yeVRhcmdldChldmlkZW5jZS50YXJnZXQpKSAhPT0gSlNPTi5zdHJpbmdpZnkodGFyZ2V0KVxuICAgICAgKVxuICAgICAgICByZXR1cm4gdW5rbm93bignZXZpZGVuY2UtcmVmdXNlZCcpO1xuICAgICAgcnVudGltZS5ub3RlUmVjb3JkKENBUFRVUkVfSElTVE9SWV9OT1RFLCBldmlkZW5jZSk7XG4gICAgICBjb25zdCBkZWxpdmVyZWQgPSBhd2FpdCByZWNvcmQuZmx1c2gob3B0aW9ucy50aW1lb3V0TXMgPz8gMTBfMDAwKTtcbiAgICAgIGlmICghYWN0aXZlKSByZXR1cm47XG4gICAgICBpZiAoIWRlbGl2ZXJlZC5kb25lIHx8IHJlY29yZC5wZW5kaW5nQ2FwdHVyZURlbGl2ZXJpZXMgfHwgcmVjb3JkLnN0YXRzKCkuZmFpbGVkID4gMClcbiAgICAgICAgcmV0dXJuIHVua25vd24oJ2V2aWRlbmNlLWRlbGl2ZXJ5LXVua25vd24nKTtcbiAgICAgIGNvbnN0IHJlY2VpcHQgPSBjb3B5SGlzdG9yeVJlY2VpcHQoYXdhaXQgb3B0aW9ucy5hY2tub3dsZWRnZSh0YXJnZXQsIHsgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KSwgdGFyZ2V0KTtcbiAgICAgIGlmICghYWN0aXZlKSByZXR1cm47XG4gICAgICBpZiAoIXJlY2VpcHQpIHJldHVybiB1bmtub3duKCdhY2tub3dsZWRnZW1lbnQtcmVmdXNlZCcpO1xuICAgICAgY29uc3Qgc2VydmVkUmVjZWlwdCA9IHJlY29yZC5zZXJ2ZSh7IC4uLnJlY2VpcHQgfSk7XG4gICAgICBpZiAoIWNvcHlIaXN0b3J5UmVjZWlwdChzZXJ2ZWRSZWNlaXB0LCB0YXJnZXQpKSByZXR1cm4gdW5rbm93bignYWNrbm93bGVkZ2VtZW50LXJlZnVzZWQnKTtcbiAgICAgIHJ1bnRpbWUubm90ZVJlY29yZChDQVBUVVJFX1JFQ0VJUFRfTk9URSwgc2VydmVkUmVjZWlwdCk7XG4gICAgICBjb25zdCBwZXJzaXN0ZWQgPSBhd2FpdCByZWNvcmQuZmx1c2gob3B0aW9ucy50aW1lb3V0TXMgPz8gMTBfMDAwKTtcbiAgICAgIGlmICghYWN0aXZlKSByZXR1cm47XG4gICAgICBpZiAoIXBlcnNpc3RlZC5kb25lIHx8IHJlY29yZC5wZW5kaW5nQ2FwdHVyZURlbGl2ZXJpZXMgfHwgcmVjb3JkLnN0YXRzKCkuZmFpbGVkID4gMClcbiAgICAgICAgcmV0dXJuIHVua25vd24oJ3JlY2VpcHQtZGVsaXZlcnktdW5rbm93bicpO1xuICAgICAgcmVjb3JkLmNhcHR1cmVSZXN1bHQoeyBzdGF0dXM6ICdhY2tub3dsZWRnZWQnIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoYWN0aXZlKVxuICAgICAgICB1bmtub3duKFxuICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgSGlzdG9yeURhdGFFcnJvciAmJiBlcnJvci5jb2RlID09PSAndG9vLWxhcmdlJyA/ICdldmlkZW5jZS10b28tbGFyZ2UnIDogJ2V2aWRlbmNlLXJlZnVzZWQnLFxuICAgICAgICApO1xuICAgIH1cbiAgfTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgd29yaygpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBsZWFzZS5wZW5kaW5nID0gZmFsc2U7XG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgY29udHJvbGxlci5hYm9ydCgpO1xuICAgICAgICAgIHVua25vd24oJ2Fja25vd2xlZGdlbWVudC10aW1lb3V0Jyk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LCBvcHRpb25zLnRpbWVvdXRNcyA/PyAxMF8wMDApO1xuICAgICAgfSksXG4gICAgXSk7XG4gIH0gZmluYWxseSB7XG4gICAgYWN0aXZlID0gZmFsc2U7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgfVxufVxuIl19
|
|
@@ -36,10 +36,12 @@
|
|
|
36
36
|
* DESCRIPTIVE contract error naming the field (`describeCheckpointCloneFailure`)
|
|
37
37
|
* instead of a naked `DataCloneError`.
|
|
38
38
|
*/
|
|
39
|
+
import type { NativeCaptureObservation } from '../capture/readSources.js';
|
|
39
40
|
import type { FlowchartTraverser } from '../engine/traversal/FlowchartTraverser.js';
|
|
40
41
|
import type { FlowchartCheckpoint, PauseSignal, RedactionMarks } from '../pause/types.js';
|
|
41
42
|
/** The paused run's counters, as the executor holds them at the pause. */
|
|
42
43
|
export interface PausedRun {
|
|
44
|
+
readonly capture?: NativeCaptureObservation;
|
|
43
45
|
readonly runId: string;
|
|
44
46
|
readonly executionCount: number;
|
|
45
47
|
readonly visitCounts: ReadonlyMap<string, number>;
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
* DESCRIPTIVE contract error naming the field (`describeCheckpointCloneFailure`)
|
|
37
37
|
* instead of a naked `DataCloneError`.
|
|
38
38
|
*/
|
|
39
|
+
import { copyCheckpointCapture } from '../capture/checkpointCapture.js';
|
|
39
40
|
import { CHECKPOINT_VERSION } from '../pause/record.js';
|
|
40
41
|
/**
|
|
41
42
|
* Build a fully DETACHED, lean checkpoint from a caught PauseSignal.
|
|
@@ -71,6 +72,7 @@ export function buildPauseCheckpoint(signal, traverser, run) {
|
|
|
71
72
|
const checkpoint = {
|
|
72
73
|
// The format — read back by `pause/record.ts · decodeCheckpoint`.
|
|
73
74
|
checkpointVersion: CHECKPOINT_VERSION,
|
|
75
|
+
...(run.capture && { capture: copyCheckpointCapture({ ...run.capture, boundary: { status: 'paused' } }) }),
|
|
74
76
|
sharedState: traverser.getRuntime().globalStore.getState(),
|
|
75
77
|
pausedStageId: signal.stageId,
|
|
76
78
|
// The paused EXECUTION (9.37.0) — a queued sibling raised on resume
|
|
@@ -141,4 +143,4 @@ function describeCheckpointCloneFailure(checkpoint, cause) {
|
|
|
141
143
|
'are never part of a checkpoint and never cause this error. ' +
|
|
142
144
|
'See docs/guides/execution-model.md ("Pause / resume — what a checkpoint captures").', { cause });
|
|
143
145
|
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL2NoZWNrcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFHSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVl4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE1BQW1CLEVBQ25CLFNBQXVDLEVBQ3ZDLEdBQWM7SUFFZCw2RUFBNkU7SUFDN0UsbURBQW1EO0lBQ25ELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUc7UUFDakIsa0VBQWtFO1FBQ2xFLGlCQUFpQixFQUFFLGtCQUFrQjtRQUNyQyxXQUFXLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDMUQsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQzdCLG9FQUFvRTtRQUNwRSwyQ0FBMkM7UUFDM0MsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFFLCtGQUErRjtRQUMvRixHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JGLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1FBQ25DLHVFQUF1RTtRQUN2RSwwRUFBMEU7UUFDMUUseUVBQXlFO1FBQ3pFLG9GQUFvRjtRQUNwRixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNoRCw0RUFBNEU7UUFDNUUsMEVBQTBFO1FBQzFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2RSxzRUFBc0U7UUFDdEUsZ0VBQWdFO1FBQ2hFLDBCQUEwQjtRQUMxQixHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvRSxxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELDBGQUEwRjtRQUMxRiwwRkFBMEY7UUFDMUYsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0tBQ3JCLENBQUM7SUFDRixJQUFJLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLCtEQUErRDtRQUMvRCxNQUFNLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0gsQ0FBQztBQUVELDZEQUE2RDtBQUM3RCxTQUFTLFdBQVcsQ0FBQyxLQUFjO0lBQ2pDLElBQUksQ0FBQztRQUNILGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyw4QkFBOEIsQ0FBQyxVQUFtQyxFQUFFLEtBQWM7SUFDekYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDdkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25FLE9BQU8sSUFBSSxLQUFLLENBQ2Qsc0ZBQXNGO1FBQ3BGLHdCQUF3QixNQUFNLDJEQUEyRDtRQUN6Riw0RkFBNEY7UUFDNUYsMEZBQTBGO1FBQzFGLDZEQUE2RDtRQUM3RCxxRkFBcUYsRUFDdkYsRUFBRSxLQUFLLEVBQUUsQ0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogY2hlY2twb2ludCDigJQgdGhlIHBhdXNlIGNoZWNrcG9pbnQsIGJ1aWx0IE9OQ0UgYXQgdGhlIHBhdXNlIChGOSkuXG4gKlxuICogYGJ1aWxkUGF1c2VDaGVja3BvaW50YCBhc3NlbWJsZXMgdGhlIGNoZWNrcG9pbnQgZnJvbSBhIGNhdWdodCBgUGF1c2VTaWduYWxgXG4gKiBhbmQgdGhlIHBhdXNlZCBydW4sIHN0YW1wZWQgd2l0aCB0aGUgZm9ybWF0IHRoZSBPTkUgY29kZWMgcmVhZHMgYmFja1xuICogKGBwYXVzZS9yZWNvcmQudHNgIMK3IGBDSEVDS1BPSU5UX1ZFUlNJT05gIC8gYGRlY29kZUNoZWNrcG9pbnRgKSwgYW5kXG4gKiBkZXRhY2hlcyBpdCB3aXRoIG9uZSBgc3RydWN0dXJlZENsb25lYC5cbiAqXG4gKiBMRUFOIChmb3JtYXQgMikuIFRoZSBjaGVja3BvaW50IGhvbGRzIHdoYXQgYHJlc3VtZSgpYCByZWFkcyBhbmQgdGhlIHBhdXNlJ3NcbiAqIG93biByZWNvcmQsIG5vdGhpbmcgZWxzZTpcbiAqXG4gKiAgIHJlYWQgYnkgcmVzdW1lICB0aGUgY3Vyc29yIChgcGF1c2VkU3RhZ2VJZGAsIGBzdWJmbG93UGF0aGAsIGBwYXVzZWRCeWApLFxuICogICAgICAgICAgICAgICAgICAgdGhlIHN0YXRlIChgc2hhcmVkU3RhdGVgLCBhbmQgYHN1YmZsb3dTdGF0ZXNgIOKAlCBvbmUgY2FwdHVyZVxuICogICAgICAgICAgICAgICAgICAgcGVyIHN1YmZsb3cgT04gdGhlIHBhdXNlIHBhdGgpLCB0aGUgY291bnRlcnNcbiAqICAgICAgICAgICAgICAgICAgIChgZXhlY3V0aW9uQ291bnRgLCBgdmlzaXRDb3VudHNgIOKAlCBvbmUgZW50cnkgcGVyIHN0YWdlIGlkKSxcbiAqICAgICAgICAgICAgICAgICAgIHRoZSB3YWl0aW5nIHNpYmxpbmdzIChgcGVuZGluZ1BhdXNlc2ApLCB0aGUgcmVkYWN0aW9uIG5hbWVzXG4gKiAgICAgICAgICAgICAgICAgICAoYHJlZGFjdGlvbk1hcmtzYCksIHRoZSBsaW5rIChgcGF1c2VkRXhlY3V0aW9uYCk7XG4gKiAgIHRoZSByZWNvcmQgICAgICBgcGF1c2VEYXRhYCAodGhlIHF1ZXN0aW9uKSwgYGludm9rZXJTdGFnZUlkYCwgYHBhdXNlZEF0YC5cbiAqXG4gKiBTbyBpdHMgc2l6ZSBpcyB0aGUgc3RhdGUncyBhbmQgdGhlIGNoYXJ0J3MsIG5ldmVyIHRoZSBydW4ncyBsZW5ndGguIEZvcm1hdCAxXG4gKiBhbHNvIGNhcnJpZWQgdGhlIHdob2xlIGV4ZWN1dGlvbiB0cmVlIGFuZCB0aGUgZmluaXNoZWQgc3ViZmxvd3MnIHJlc3VsdHMg4oCUXG4gKiB0aGUgcnVuJ3Mgc2VydmVkIHJlY29yZCwgd2hpY2ggbm8gcmVzdW1lIHJlYWQgYW5kIHdoaWNoIGdyZXcgd2l0aCBldmVyeVxuICogZmluaXNoZWQgaXRlcmF0aW9uIChgYmVuY2gvY2hlY2twb2ludC1zaXplLnRzYDogMTkuMyBNQiBhZnRlciA2MCBhZ2VudFxuICogdHVybnMgd2hvc2UgcmVzdW1hYmxlIHN0YXRlIOKAlCByb290IHBsdXMgY2FwdHVyZXMg4oCUIGlzIDAuMTMgTUI7IHRoZSB0cmVlXG4gKiBhbG9uZSB3YXMgOTclKS4gVGhhdCByZWNvcmQgaXMgYGdldFNuYXBzaG90KClgJ3MuIFBpbm5lZDpcbiAqIHRlc3QvbGliL3BhdXNlL2NoZWNrcG9pbnQtc2l6ZS50ZXN0LnRzLlxuICpcbiAqIFRIRSBMQVcgaG9sZHM6IHRoZSBjaGVja3BvaW50IGtlZXBzIFJFQUwgdmFsdWVzIOKAlCBubyByZWRhY3Rpb24gcG9saWN5IGV2ZXJcbiAqIHRvdWNoZXMgaXQgKGl0IGlzIHdoYXQgdGhlIHJlc3VtZWQgcnVuIGNvbXB1dGVzIG9uKTsgdGhlIG1hcmtzIHRyYXZlbCBhc1xuICogTkFNRVMgb25seS5cbiAqXG4gKiBUaGUgSlNPTi1zYWZlIGNvbnRyYWN0IGdvdmVybnMgd2hhdCBDT05TVU1FUlMgcHV0IGludG8gYSBjaGVja3BvaW50XG4gKiAoYHBhdXNlRGF0YWAsIHNoYXJlZCBzdGF0ZSkuIEEgdmFsdWUgYHN0cnVjdHVyZWRDbG9uZWAgcmVmdXNlcyBjYW4gb25seSBjb21lXG4gKiBmcm9tIHRoZW0g4oCUIHNoYXJlZCBzdGF0ZSBpcyBjbG9uZWQgYXQgZXZlcnkgY29tbWl0LCBzbyBhIGZ1bmN0aW9uIG5ldmVyXG4gKiByZWFjaGVzIGl0LCBhbmQgbm8gZGlhZ25vc3RpYyBiYWcgaXMgY2FycmllZCDigJQgc28gYSBmYWlsZWQgY2xvbmUgYmVjb21lcyBhXG4gKiBERVNDUklQVElWRSBjb250cmFjdCBlcnJvciBuYW1pbmcgdGhlIGZpZWxkIChgZGVzY3JpYmVDaGVja3BvaW50Q2xvbmVGYWlsdXJlYClcbiAqIGluc3RlYWQgb2YgYSBuYWtlZCBgRGF0YUNsb25lRXJyb3JgLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRmxvd2NoYXJ0VHJhdmVyc2VyIH0gZnJvbSAnLi4vZW5naW5lL3RyYXZlcnNhbC9GbG93Y2hhcnRUcmF2ZXJzZXIuanMnO1xuaW1wb3J0IHsgQ0hFQ0tQT0lOVF9WRVJTSU9OIH0gZnJvbSAnLi4vcGF1c2UvcmVjb3JkLmpzJztcbmltcG9ydCB0eXBlIHsgRmxvd2NoYXJ0Q2hlY2twb2ludCwgUGF1c2VTaWduYWwsIFJlZGFjdGlvbk1hcmtzIH0gZnJvbSAnLi4vcGF1c2UvdHlwZXMuanMnO1xuXG4vKiogVGhlIHBhdXNlZCBydW4ncyBjb3VudGVycywgYXMgdGhlIGV4ZWN1dG9yIGhvbGRzIHRoZW0gYXQgdGhlIHBhdXNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXVzZWRSdW4ge1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBleGVjdXRpb25Db3VudDogbnVtYmVyO1xuICByZWFkb25seSB2aXNpdENvdW50czogUmVhZG9ubHlNYXA8c3RyaW5nLCBudW1iZXI+O1xuICAvKiogVGhlIHJ1bidzIHJlZGFjdGlvbiBtYXJrcyDigJQgbmFtZXMgb25seSAoYFJlZGFjdGlvblJ1bGUgwrcgbWFya3NGb3JDaGVja3BvaW50YCk7IGFic2VudCB3aGVuIG5vbmUuICovXG4gIHJlYWRvbmx5IHJlZGFjdGlvbk1hcmtzPzogUmVkYWN0aW9uTWFya3M7XG59XG5cbi8qKlxuICogQnVpbGQgYSBmdWxseSBERVRBQ0hFRCwgbGVhbiBjaGVja3BvaW50IGZyb20gYSBjYXVnaHQgUGF1c2VTaWduYWwuXG4gKlxuICogRXZlcnkgZmllbGQgaXMgZGVlcC1jb3BpZWQgdmlhIG9uZSBgc3RydWN0dXJlZENsb25lYCBvZiB0aGUgYXNzZW1ibGVkXG4gKiBjaGVja3BvaW50LCBiZWNhdXNlIHRoZSByYXcgcGllY2VzIGFsaWFzIGxpdmUgZW5naW5lIHN0YXRlOlxuICpcbiAqICAgLSBgc2hhcmVkU3RhdGVgIElTIGBTaGFyZWRNZW1vcnlgJ3MgY3VycmVudCBnZW5lcmF0aW9uIOKAlCBuZXZlciBlZGl0ZWQsXG4gKiAgICAgYnV0IChjb3B5LW9uLXdyaXRlLCA5LjI5LjApIGV2ZXJ5IGxhdGVyIGdlbmVyYXRpb24gc2hhcmVzIGl0c1xuICogICAgIHVuY2hhbmdlZCBzdWJ0cmVlcywgc28gYSBjaGVja3BvaW50IHRoYXQgYWxpYXNlZCBpdCB3b3VsZCBhbGlhcyB0aGVcbiAqICAgICByZXN1bWVkIHJ1bidzIHN0YXRlIHRvby5cbiAqICAgLSBgc3ViZmxvd1N0YXRlc2AgdmFsdWVzIGFyZSBzaGFsbG93IGNvcGllcyB3aG9zZSBORVNURUQgb2JqZWN0cyBhbGlhc1xuICogICAgIHN1YmZsb3cgbWVtb3J5LCBhbmQgdGhleSBnZXQgc2VlZGVkIGJhY2sgaW50byBsaXZlIHJ1bnRpbWVzIG9uIHJlc3VtZS5cbiAqXG4gKiBUaGUgY2hlY2twb2ludCBpcyBwZXJzaXN0ZWQgYnkgY29udHJhY3QgKFwic3RvcmUgaW4gUmVkaXMvUG9zdGdyZXNcIikg4oCUIGl0XG4gKiBtdXN0IG5ldmVyIHNoYXJlIHN0cnVjdHVyZSB3aXRoIHRoZSBlbmdpbmUuXG4gKlxuICogVGhlIHN0YXRlIGlzIHJlYWQgc3RyYWlnaHQgb2ZmIHRoZSByb290IHJ1bnRpbWUncyBzdG9yZSDigJQgbm8gc25hcHNob3QgaXNcbiAqIGJ1aWx0IChhIHNuYXBzaG90IHdvdWxkIGJ1aWxkIHRoZSBleGVjdXRpb24gdHJlZSBhbmQgY29weSB0aGUgY29tbWl0IGxvZyxcbiAqIHdvcmsgcHJvcG9ydGlvbmFsIHRvIHRoZSBydW4ncyBsZW5ndGgsIG9ubHkgdG8gdGhyb3cgYm90aCBhd2F5KS5cbiAqXG4gKiBTdWJmbG93IHNjb3BlIGNhcHR1cmUgKGBzdWJmbG93U3RhdGVzYCkgc3Vydml2ZXMgT05MWSBvbiB0aGUgc2lnbmFsIOKAlCB0aGVcbiAqIG5lc3RlZCBydW50aW1lcyBhcmUgR0MnZCBhcyB0aGUgc3RhY2sgdW53aW5kcy4gUHJvbW90aW5nIGl0IG9udG8gdGhlXG4gKiBjaGVja3BvaW50IGhlcmUgbGV0cyBjcm9zcy1leGVjdXRvciByZXN1bWUgcmVzdG9yZSBwcmUtcGF1c2Ugc3ViZmxvd1xuICogc2NvcGUgKGUuZy4gYW4gQWdlbnQncyBgc2NvcGUuaGlzdG9yeWApLiBUaGUgc2lnbmFsIGNhcHR1cmVzIGEgc3ViZmxvdyBvbmx5XG4gKiBhcyBpdCBidWJibGVzIHRocm91Z2ggdGhhdCBzdWJmbG93J3MgYm91bmRhcnksIHNvIHRoZSBrZXlzIGFyZSBleGFjdGx5IHRoZVxuICogcGF1c2UgcGF0aCdzLiBFbXB0eSBge31gIGZvciByb290LWxldmVsIHBhdXNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGF1c2VDaGVja3BvaW50KFxuICBzaWduYWw6IFBhdXNlU2lnbmFsLFxuICB0cmF2ZXJzZXI6IEZsb3djaGFydFRyYXZlcnNlcjxhbnksIGFueT4sXG4gIHJ1bjogUGF1c2VkUnVuLFxuKTogRmxvd2NoYXJ0Q2hlY2twb2ludCB7XG4gIC8vIEV2ZXJ5IHBhdXNlIHRoYXQgcGF1c2VkIGluIFRISVMgcnVuIGlzIG5hbWVkIGJ5IGl0OyBhIHNpYmxpbmcgcmFpc2VkIGFnYWluXG4gIC8vIG9uIHJlc3VtZSBrZWVwcyB0aGUgcnVuIGl0IG9yaWdpbmFsbHkgcGF1c2VkIGluLlxuICBzaWduYWwuY29tcGxldGVFeGVjdXRpb24ocnVuLnJ1bklkKTtcbiAgY29uc3QgY2hlY2twb2ludCA9IHtcbiAgICAvLyBUaGUgZm9ybWF0IOKAlCByZWFkIGJhY2sgYnkgYHBhdXNlL3JlY29yZC50cyDCtyBkZWNvZGVDaGVja3BvaW50YC5cbiAgICBjaGVja3BvaW50VmVyc2lvbjogQ0hFQ0tQT0lOVF9WRVJTSU9OLFxuICAgIHNoYXJlZFN0YXRlOiB0cmF2ZXJzZXIuZ2V0UnVudGltZSgpLmdsb2JhbFN0b3JlLmdldFN0YXRlKCksXG4gICAgcGF1c2VkU3RhZ2VJZDogc2lnbmFsLnN0YWdlSWQsXG4gICAgLy8gVGhlIHBhdXNlZCBFWEVDVVRJT04gKDkuMzcuMCkg4oCUIGEgcXVldWVkIHNpYmxpbmcgcmFpc2VkIG9uIHJlc3VtZVxuICAgIC8vIGNhcnJpZXMgdGhlIHJ1biBpdCBPUklHSU5BTExZIHBhdXNlZCBpbi5cbiAgICAuLi4oc2lnbmFsLnBhdXNlZEV4ZWN1dGlvbiAmJiB7IHBhdXNlZEV4ZWN1dGlvbjogc2lnbmFsLnBhdXNlZEV4ZWN1dGlvbiB9KSxcbiAgICAvLyBUaGUga2V5IHRoZSBwYXVzZWQgdG91Y2hpbmcgZXhlY3V0aW9uIHJhbiB1bmRlciAoMTAuMSkg4oCUIGl0cyByZXN1bWUgcnVucyB1bmRlciB0aGUgc2FtZSBrZXkuXG4gICAgLi4uKHNpZ25hbC5pZGVtcG90ZW5jeUtleSAhPT0gdW5kZWZpbmVkICYmIHsgaWRlbXBvdGVuY3lLZXk6IHNpZ25hbC5pZGVtcG90ZW5jeUtleSB9KSxcbiAgICBzdWJmbG93UGF0aDogc2lnbmFsLnN1YmZsb3dQYXRoLFxuICAgIHBhdXNlRGF0YTogc2lnbmFsLnBhdXNlRGF0YSxcbiAgICBzdWJmbG93U3RhdGVzOiBzaWduYWwuc3ViZmxvd1N0YXRlcyxcbiAgICAvLyBDb3VudGVyIGNvbnRpbnVpdHkg4oCUIHNlZWRlZCBiYWNrIGluIHJlc3VtZSgpIHNvIHJ1bnRpbWVTdGFnZUlkcyBzdGF5XG4gICAgLy8gdW5pcXVlIGFuZCBsb29wSXRlcmF0aW9uIHN0YXlzIG1vbm90b25pYyBhY3Jvc3MgYSBDUk9TUy1leGVjdXRvciByZXN1bWVcbiAgICAvLyAoYm90aCBhcmUgcGxhaW4gbnVtYmVyL3JlY29yZCwgc28gdGhleSByaWRlIHRoZSBzaW5nbGUgc3RydWN0dXJlZENsb25lXG4gICAgLy8gYmVsb3cgdW50b3VjaGVkKS4gU2VlIHRlc3QvbGliL3BhdXNlL3Jlc3VtZS1leGVjdXRpb24tY291bnRlci1jb250aW51aXR5LnRlc3QudHMuXG4gICAgZXhlY3V0aW9uQ291bnQ6IHJ1bi5leGVjdXRpb25Db3VudCxcbiAgICB2aXNpdENvdW50czogT2JqZWN0LmZyb21FbnRyaWVzKHJ1bi52aXNpdENvdW50cyksXG4gICAgLy8gSW52b2tlciBjb250ZXh0IOKAlCBjb2xsZWN0ZWQgZHVyaW5nIHRyYXZlcnNhbCBidWJibGUtdXAgKG5vdCB0cmVlLXdhbGtlZCkuXG4gICAgLy8gKGBjb250aW51YXRpb25TdGFnZUlkYCBpcyBsZWdhY3ktb25seSBzaW5jZSA5LjM5LjA6IG5vIGxvbmdlciB3cml0dGVuLilcbiAgICAuLi4oc2lnbmFsLmludm9rZXJTdGFnZUlkICYmIHsgaW52b2tlclN0YWdlSWQ6IHNpZ25hbC5pbnZva2VyU3RhZ2VJZCB9KSxcbiAgICAvLyBQYXJhbGxlbCBzaWJsaW5ncycgcGF1c2VzIGZyb20gdGhlIHNhbWUgZmFuLW91dCwgd2FpdGluZyB0aGVpciB0dXJuXG4gICAgLy8gKDkuMjguMCkuIEFic2VudCB3aGVuIG9ubHkgb25lIGNoaWxkIHBhdXNlZCDigJQgdGhlIHNoYXBlIGV2ZXJ5XG4gICAgLy8gZWFybGllciBjaGVja3BvaW50IGhhcy5cbiAgICAuLi4oc2lnbmFsLnBlbmRpbmdQYXVzZXMubGVuZ3RoID4gMCAmJiB7IHBlbmRpbmdQYXVzZXM6IHNpZ25hbC5wZW5kaW5nUGF1c2VzIH0pLFxuICAgIC8vIEhPVyB0aGUgcGF1c2Ugd2FzIHJhaXNlZC4gT25lIGNoZWNrcG9pbnQgc2hhcGUsIG9uZSBleHRyYSBvcHRpb25hbFxuICAgIC8vIGZpZWxkIOKAlCBhbiBpbnRlcnJ1cHQoKSBwYXVzZSBpcyBub3QgYSBzZWNvbmQga2luZCBvZiBjaGVja3BvaW50LCBpdCBpc1xuICAgIC8vIHRoZSBzYW1lIGNoZWNrcG9pbnQgdGhhdCByZXN1bWUoKSByZS1lbnRlcnMgZGlmZmVyZW50bHkgKHN0YWdlIHRvcCB2c1xuICAgIC8vIHJlc3VtZUZuKS4gQWJzZW50IGZvciBldmVyeSBwcmUtOS4xNC4wIGNoZWNrcG9pbnQsIHdoaWNoIGlzIGNvcnJlY3QuXG4gICAgLi4uKHNpZ25hbC5wYXVzZWRCeSAmJiB7IHBhdXNlZEJ5OiBzaWduYWwucGF1c2VkQnkgfSksXG4gICAgLy8gVGhlIHJlZGFjdGlvbiB0aGUgcGF1c2VkIHJ1biBoYWQgbWFkZSDigJQgTkFNRVMgb25seSAobWFya3MsIGEgbWFwcGVyJ3MgdGFpbnRzLCBpbmhlcml0ZWRcbiAgICAvLyBmaWVsZHMpLiBSZXN1bWUgc2VlZHMgdGhlIHJlc3VtZWQgcnVuJ3MgcnVsZSB3aXRoIHRoZW0uIEFic2VudCB3aGVuIG5vdGhpbmcgd2FzIG1hcmtlZC5cbiAgICAuLi4ocnVuLnJlZGFjdGlvbk1hcmtzICYmIHsgcmVkYWN0aW9uTWFya3M6IHJ1bi5yZWRhY3Rpb25NYXJrcyB9KSxcbiAgICBwYXVzZWRBdDogRGF0ZS5ub3coKSxcbiAgfTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gc3RydWN0dXJlZENsb25lKGNoZWNrcG9pbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEdlbnVpbmUgSlNPTi1zYWZlIGNvbnRyYWN0IHZpb2xhdGlvbiBpbiBjb25zdW1lci1vd25lZCBkYXRhLlxuICAgIHRocm93IGRlc2NyaWJlQ2hlY2twb2ludENsb25lRmFpbHVyZShjaGVja3BvaW50LCBlcnJvcik7XG4gIH1cbn1cblxuLyoqIGB0cnVlYCB3aGVuIGBzdHJ1Y3R1cmVkQ2xvbmVgIGFjY2VwdHMgdGhlIHZhbHVlIGFzLWlzLiAqL1xuZnVuY3Rpb24gaXNDbG9uZWFibGUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgREVTQ1JJUFRJVkUgZXJyb3IgZm9yIGEgY2hlY2twb2ludCB0aGF0IGNhbm5vdCBiZSBjbG9uZWQg4oCUIHRoZVxuICogbm9uLWNsb25lYWJsZSB2YWx1ZSBsaXZlcyBpbiBjb25zdW1lci1vd25lZCBkYXRhIChhIGdlbnVpbmUgSlNPTi1zYWZlXG4gKiBjb250cmFjdCB2aW9sYXRpb24pLiBQcm9iZXMgZWFjaCB0b3AtbGV2ZWwgY2hlY2twb2ludCBmaWVsZCBpbmRpdmlkdWFsbHkgc29cbiAqIHRoZSBtZXNzYWdlIG5hbWVzIHRoZSBvZmZlbmRpbmcgZmllbGQgZmFtaWx5LiBOZXZlciBsZXRzIGEgbmFrZWRcbiAqIGBEYXRhQ2xvbmVFcnJvcmAgZXNjYXBlLlxuICovXG5mdW5jdGlvbiBkZXNjcmliZUNoZWNrcG9pbnRDbG9uZUZhaWx1cmUoY2hlY2twb2ludDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNhdXNlOiB1bmtub3duKTogRXJyb3Ige1xuICBjb25zdCBmYWlsaW5nID0gT2JqZWN0LmVudHJpZXMoY2hlY2twb2ludClcbiAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+ICFpc0Nsb25lYWJsZSh2YWx1ZSkpXG4gICAgLm1hcCgoW2ZpZWxkXSkgPT4gZmllbGQpO1xuICBjb25zdCBmaWVsZHMgPSBmYWlsaW5nLmxlbmd0aCA+IDAgPyBmYWlsaW5nLmpvaW4oJywgJykgOiAndW5rbm93bic7XG4gIHJldHVybiBuZXcgRXJyb3IoXG4gICAgJ0Zsb3dDaGFydEV4ZWN1dG9yOiBjYW5ub3QgYnVpbGQgdGhlIHBhdXNlIGNoZWNrcG9pbnQg4oCUIG5vbi1zZXJpYWxpemFibGUgdmFsdWUocykgaW4gJyArXG4gICAgICBgY2hlY2twb2ludCBmaWVsZChzKTogJHtmaWVsZHN9LiBUaGUgY2hlY2twb2ludCBjb250cmFjdCBpcyBKU09OLXNhZmUgKG5vIGZ1bmN0aW9ucywgbm8gYCArXG4gICAgICBcImNsYXNzIGluc3RhbmNlcykuIENoZWNrIHRoZSBwYXVzZURhdGEgcmV0dXJuZWQgYnkgdGhlIHBhdXNhYmxlIHN0YWdlJ3MgZXhlY3V0ZSgpLCBhbmQgYW55IFwiICtcbiAgICAgICdzdWJmbG93IHN0YXRlIGNhcHR1cmVkIGF0IHRoZSBwYXVzZS4gRGlhZ25vc3RpYyB2YWx1ZXMgZnJvbSAkZGVidWcvJG1ldHJpYy8kZXJyb3IvJGV2YWwgJyArXG4gICAgICAnYXJlIG5ldmVyIHBhcnQgb2YgYSBjaGVja3BvaW50IGFuZCBuZXZlciBjYXVzZSB0aGlzIGVycm9yLiAnICtcbiAgICAgICdTZWUgZG9jcy9ndWlkZXMvZXhlY3V0aW9uLW1vZGVsLm1kIChcIlBhdXNlIC8gcmVzdW1lIOKAlCB3aGF0IGEgY2hlY2twb2ludCBjYXB0dXJlc1wiKS4nLFxuICAgIHsgY2F1c2UgfSxcbiAgKTtcbn1cbiJdfQ==
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL2NoZWNrcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWF4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE1BQW1CLEVBQ25CLFNBQXVDLEVBQ3ZDLEdBQWM7SUFFZCw2RUFBNkU7SUFDN0UsbURBQW1EO0lBQ25ELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUc7UUFDakIsa0VBQWtFO1FBQ2xFLGlCQUFpQixFQUFFLGtCQUFrQjtRQUNyQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUcsV0FBVyxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO1FBQzFELGFBQWEsRUFBRSxNQUFNLENBQUMsT0FBTztRQUM3QixvRUFBb0U7UUFDcEUsMkNBQTJDO1FBQzNDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMxRSwrRkFBK0Y7UUFDL0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDL0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYTtRQUNuQyx1RUFBdUU7UUFDdkUsMEVBQTBFO1FBQzFFLHlFQUF5RTtRQUN6RSxvRkFBb0Y7UUFDcEYsY0FBYyxFQUFFLEdBQUcsQ0FBQyxjQUFjO1FBQ2xDLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7UUFDaEQsNEVBQTRFO1FBQzVFLDBFQUEwRTtRQUMxRSxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkUsc0VBQXNFO1FBQ3RFLGdFQUFnRTtRQUNoRSwwQkFBMEI7UUFDMUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0UscUVBQXFFO1FBQ3JFLHlFQUF5RTtRQUN6RSx3RUFBd0U7UUFDeEUsdUVBQXVFO1FBQ3ZFLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyRCwwRkFBMEY7UUFDMUYsMEZBQTBGO1FBQzFGLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNqRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtLQUNyQixDQUFDO0lBQ0YsSUFBSSxDQUFDO1FBQ0gsT0FBTyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZiwrREFBK0Q7UUFDL0QsTUFBTSw4QkFBOEIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztBQUNILENBQUM7QUFFRCw2REFBNkQ7QUFDN0QsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxJQUFJLENBQUM7UUFDSCxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsOEJBQThCLENBQUMsVUFBbUMsRUFBRSxLQUFjO0lBQ3pGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRSxPQUFPLElBQUksS0FBSyxDQUNkLHNGQUFzRjtRQUNwRix3QkFBd0IsTUFBTSwyREFBMkQ7UUFDekYsNEZBQTRGO1FBQzVGLDBGQUEwRjtRQUMxRiw2REFBNkQ7UUFDN0QscUZBQXFGLEVBQ3ZGLEVBQUUsS0FBSyxFQUFFLENBQ1YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNoZWNrcG9pbnQg4oCUIHRoZSBwYXVzZSBjaGVja3BvaW50LCBidWlsdCBPTkNFIGF0IHRoZSBwYXVzZSAoRjkpLlxuICpcbiAqIGBidWlsZFBhdXNlQ2hlY2twb2ludGAgYXNzZW1ibGVzIHRoZSBjaGVja3BvaW50IGZyb20gYSBjYXVnaHQgYFBhdXNlU2lnbmFsYFxuICogYW5kIHRoZSBwYXVzZWQgcnVuLCBzdGFtcGVkIHdpdGggdGhlIGZvcm1hdCB0aGUgT05FIGNvZGVjIHJlYWRzIGJhY2tcbiAqIChgcGF1c2UvcmVjb3JkLnRzYCDCtyBgQ0hFQ0tQT0lOVF9WRVJTSU9OYCAvIGBkZWNvZGVDaGVja3BvaW50YCksIGFuZFxuICogZGV0YWNoZXMgaXQgd2l0aCBvbmUgYHN0cnVjdHVyZWRDbG9uZWAuXG4gKlxuICogTEVBTiAoZm9ybWF0IDIpLiBUaGUgY2hlY2twb2ludCBob2xkcyB3aGF0IGByZXN1bWUoKWAgcmVhZHMgYW5kIHRoZSBwYXVzZSdzXG4gKiBvd24gcmVjb3JkLCBub3RoaW5nIGVsc2U6XG4gKlxuICogICByZWFkIGJ5IHJlc3VtZSAgdGhlIGN1cnNvciAoYHBhdXNlZFN0YWdlSWRgLCBgc3ViZmxvd1BhdGhgLCBgcGF1c2VkQnlgKSxcbiAqICAgICAgICAgICAgICAgICAgIHRoZSBzdGF0ZSAoYHNoYXJlZFN0YXRlYCwgYW5kIGBzdWJmbG93U3RhdGVzYCDigJQgb25lIGNhcHR1cmVcbiAqICAgICAgICAgICAgICAgICAgIHBlciBzdWJmbG93IE9OIHRoZSBwYXVzZSBwYXRoKSwgdGhlIGNvdW50ZXJzXG4gKiAgICAgICAgICAgICAgICAgICAoYGV4ZWN1dGlvbkNvdW50YCwgYHZpc2l0Q291bnRzYCDigJQgb25lIGVudHJ5IHBlciBzdGFnZSBpZCksXG4gKiAgICAgICAgICAgICAgICAgICB0aGUgd2FpdGluZyBzaWJsaW5ncyAoYHBlbmRpbmdQYXVzZXNgKSwgdGhlIHJlZGFjdGlvbiBuYW1lc1xuICogICAgICAgICAgICAgICAgICAgKGByZWRhY3Rpb25NYXJrc2ApLCB0aGUgbGluayAoYHBhdXNlZEV4ZWN1dGlvbmApO1xuICogICB0aGUgcmVjb3JkICAgICAgYHBhdXNlRGF0YWAgKHRoZSBxdWVzdGlvbiksIGBpbnZva2VyU3RhZ2VJZGAsIGBwYXVzZWRBdGAuXG4gKlxuICogU28gaXRzIHNpemUgaXMgdGhlIHN0YXRlJ3MgYW5kIHRoZSBjaGFydCdzLCBuZXZlciB0aGUgcnVuJ3MgbGVuZ3RoLiBGb3JtYXQgMVxuICogYWxzbyBjYXJyaWVkIHRoZSB3aG9sZSBleGVjdXRpb24gdHJlZSBhbmQgdGhlIGZpbmlzaGVkIHN1YmZsb3dzJyByZXN1bHRzIOKAlFxuICogdGhlIHJ1bidzIHNlcnZlZCByZWNvcmQsIHdoaWNoIG5vIHJlc3VtZSByZWFkIGFuZCB3aGljaCBncmV3IHdpdGggZXZlcnlcbiAqIGZpbmlzaGVkIGl0ZXJhdGlvbiAoYGJlbmNoL2NoZWNrcG9pbnQtc2l6ZS50c2A6IDE5LjMgTUIgYWZ0ZXIgNjAgYWdlbnRcbiAqIHR1cm5zIHdob3NlIHJlc3VtYWJsZSBzdGF0ZSDigJQgcm9vdCBwbHVzIGNhcHR1cmVzIOKAlCBpcyAwLjEzIE1COyB0aGUgdHJlZVxuICogYWxvbmUgd2FzIDk3JSkuIFRoYXQgcmVjb3JkIGlzIGBnZXRTbmFwc2hvdCgpYCdzLiBQaW5uZWQ6XG4gKiB0ZXN0L2xpYi9wYXVzZS9jaGVja3BvaW50LXNpemUudGVzdC50cy5cbiAqXG4gKiBUSEUgTEFXIGhvbGRzOiB0aGUgY2hlY2twb2ludCBrZWVwcyBSRUFMIHZhbHVlcyDigJQgbm8gcmVkYWN0aW9uIHBvbGljeSBldmVyXG4gKiB0b3VjaGVzIGl0IChpdCBpcyB3aGF0IHRoZSByZXN1bWVkIHJ1biBjb21wdXRlcyBvbik7IHRoZSBtYXJrcyB0cmF2ZWwgYXNcbiAqIE5BTUVTIG9ubHkuXG4gKlxuICogVGhlIEpTT04tc2FmZSBjb250cmFjdCBnb3Zlcm5zIHdoYXQgQ09OU1VNRVJTIHB1dCBpbnRvIGEgY2hlY2twb2ludFxuICogKGBwYXVzZURhdGFgLCBzaGFyZWQgc3RhdGUpLiBBIHZhbHVlIGBzdHJ1Y3R1cmVkQ2xvbmVgIHJlZnVzZXMgY2FuIG9ubHkgY29tZVxuICogZnJvbSB0aGVtIOKAlCBzaGFyZWQgc3RhdGUgaXMgY2xvbmVkIGF0IGV2ZXJ5IGNvbW1pdCwgc28gYSBmdW5jdGlvbiBuZXZlclxuICogcmVhY2hlcyBpdCwgYW5kIG5vIGRpYWdub3N0aWMgYmFnIGlzIGNhcnJpZWQg4oCUIHNvIGEgZmFpbGVkIGNsb25lIGJlY29tZXMgYVxuICogREVTQ1JJUFRJVkUgY29udHJhY3QgZXJyb3IgbmFtaW5nIHRoZSBmaWVsZCAoYGRlc2NyaWJlQ2hlY2twb2ludENsb25lRmFpbHVyZWApXG4gKiBpbnN0ZWFkIG9mIGEgbmFrZWQgYERhdGFDbG9uZUVycm9yYC5cbiAqL1xuXG5pbXBvcnQgeyBjb3B5Q2hlY2twb2ludENhcHR1cmUgfSBmcm9tICcuLi9jYXB0dXJlL2NoZWNrcG9pbnRDYXB0dXJlLmpzJztcbmltcG9ydCB0eXBlIHsgTmF0aXZlQ2FwdHVyZU9ic2VydmF0aW9uIH0gZnJvbSAnLi4vY2FwdHVyZS9yZWFkU291cmNlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3djaGFydFRyYXZlcnNlciB9IGZyb20gJy4uL2VuZ2luZS90cmF2ZXJzYWwvRmxvd2NoYXJ0VHJhdmVyc2VyLmpzJztcbmltcG9ydCB7IENIRUNLUE9JTlRfVkVSU0lPTiB9IGZyb20gJy4uL3BhdXNlL3JlY29yZC5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3djaGFydENoZWNrcG9pbnQsIFBhdXNlU2lnbmFsLCBSZWRhY3Rpb25NYXJrcyB9IGZyb20gJy4uL3BhdXNlL3R5cGVzLmpzJztcblxuLyoqIFRoZSBwYXVzZWQgcnVuJ3MgY291bnRlcnMsIGFzIHRoZSBleGVjdXRvciBob2xkcyB0aGVtIGF0IHRoZSBwYXVzZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF1c2VkUnVuIHtcbiAgcmVhZG9ubHkgY2FwdHVyZT86IE5hdGl2ZUNhcHR1cmVPYnNlcnZhdGlvbjtcbiAgcmVhZG9ubHkgcnVuSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZXhlY3V0aW9uQ291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgdmlzaXRDb3VudHM6IFJlYWRvbmx5TWFwPHN0cmluZywgbnVtYmVyPjtcbiAgLyoqIFRoZSBydW4ncyByZWRhY3Rpb24gbWFya3Mg4oCUIG5hbWVzIG9ubHkgKGBSZWRhY3Rpb25SdWxlIMK3IG1hcmtzRm9yQ2hlY2twb2ludGApOyBhYnNlbnQgd2hlbiBub25lLiAqL1xuICByZWFkb25seSByZWRhY3Rpb25NYXJrcz86IFJlZGFjdGlvbk1hcmtzO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgZnVsbHkgREVUQUNIRUQsIGxlYW4gY2hlY2twb2ludCBmcm9tIGEgY2F1Z2h0IFBhdXNlU2lnbmFsLlxuICpcbiAqIEV2ZXJ5IGZpZWxkIGlzIGRlZXAtY29waWVkIHZpYSBvbmUgYHN0cnVjdHVyZWRDbG9uZWAgb2YgdGhlIGFzc2VtYmxlZFxuICogY2hlY2twb2ludCwgYmVjYXVzZSB0aGUgcmF3IHBpZWNlcyBhbGlhcyBsaXZlIGVuZ2luZSBzdGF0ZTpcbiAqXG4gKiAgIC0gYHNoYXJlZFN0YXRlYCBJUyBgU2hhcmVkTWVtb3J5YCdzIGN1cnJlbnQgZ2VuZXJhdGlvbiDigJQgbmV2ZXIgZWRpdGVkLFxuICogICAgIGJ1dCAoY29weS1vbi13cml0ZSwgOS4yOS4wKSBldmVyeSBsYXRlciBnZW5lcmF0aW9uIHNoYXJlcyBpdHNcbiAqICAgICB1bmNoYW5nZWQgc3VidHJlZXMsIHNvIGEgY2hlY2twb2ludCB0aGF0IGFsaWFzZWQgaXQgd291bGQgYWxpYXMgdGhlXG4gKiAgICAgcmVzdW1lZCBydW4ncyBzdGF0ZSB0b28uXG4gKiAgIC0gYHN1YmZsb3dTdGF0ZXNgIHZhbHVlcyBhcmUgc2hhbGxvdyBjb3BpZXMgd2hvc2UgTkVTVEVEIG9iamVjdHMgYWxpYXNcbiAqICAgICBzdWJmbG93IG1lbW9yeSwgYW5kIHRoZXkgZ2V0IHNlZWRlZCBiYWNrIGludG8gbGl2ZSBydW50aW1lcyBvbiByZXN1bWUuXG4gKlxuICogVGhlIGNoZWNrcG9pbnQgaXMgcGVyc2lzdGVkIGJ5IGNvbnRyYWN0IChcInN0b3JlIGluIFJlZGlzL1Bvc3RncmVzXCIpIOKAlCBpdFxuICogbXVzdCBuZXZlciBzaGFyZSBzdHJ1Y3R1cmUgd2l0aCB0aGUgZW5naW5lLlxuICpcbiAqIFRoZSBzdGF0ZSBpcyByZWFkIHN0cmFpZ2h0IG9mZiB0aGUgcm9vdCBydW50aW1lJ3Mgc3RvcmUg4oCUIG5vIHNuYXBzaG90IGlzXG4gKiBidWlsdCAoYSBzbmFwc2hvdCB3b3VsZCBidWlsZCB0aGUgZXhlY3V0aW9uIHRyZWUgYW5kIGNvcHkgdGhlIGNvbW1pdCBsb2csXG4gKiB3b3JrIHByb3BvcnRpb25hbCB0byB0aGUgcnVuJ3MgbGVuZ3RoLCBvbmx5IHRvIHRocm93IGJvdGggYXdheSkuXG4gKlxuICogU3ViZmxvdyBzY29wZSBjYXB0dXJlIChgc3ViZmxvd1N0YXRlc2ApIHN1cnZpdmVzIE9OTFkgb24gdGhlIHNpZ25hbCDigJQgdGhlXG4gKiBuZXN0ZWQgcnVudGltZXMgYXJlIEdDJ2QgYXMgdGhlIHN0YWNrIHVud2luZHMuIFByb21vdGluZyBpdCBvbnRvIHRoZVxuICogY2hlY2twb2ludCBoZXJlIGxldHMgY3Jvc3MtZXhlY3V0b3IgcmVzdW1lIHJlc3RvcmUgcHJlLXBhdXNlIHN1YmZsb3dcbiAqIHNjb3BlIChlLmcuIGFuIEFnZW50J3MgYHNjb3BlLmhpc3RvcnlgKS4gVGhlIHNpZ25hbCBjYXB0dXJlcyBhIHN1YmZsb3cgb25seVxuICogYXMgaXQgYnViYmxlcyB0aHJvdWdoIHRoYXQgc3ViZmxvdydzIGJvdW5kYXJ5LCBzbyB0aGUga2V5cyBhcmUgZXhhY3RseSB0aGVcbiAqIHBhdXNlIHBhdGgncy4gRW1wdHkgYHt9YCBmb3Igcm9vdC1sZXZlbCBwYXVzZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBhdXNlQ2hlY2twb2ludChcbiAgc2lnbmFsOiBQYXVzZVNpZ25hbCxcbiAgdHJhdmVyc2VyOiBGbG93Y2hhcnRUcmF2ZXJzZXI8YW55LCBhbnk+LFxuICBydW46IFBhdXNlZFJ1bixcbik6IEZsb3djaGFydENoZWNrcG9pbnQge1xuICAvLyBFdmVyeSBwYXVzZSB0aGF0IHBhdXNlZCBpbiBUSElTIHJ1biBpcyBuYW1lZCBieSBpdDsgYSBzaWJsaW5nIHJhaXNlZCBhZ2FpblxuICAvLyBvbiByZXN1bWUga2VlcHMgdGhlIHJ1biBpdCBvcmlnaW5hbGx5IHBhdXNlZCBpbi5cbiAgc2lnbmFsLmNvbXBsZXRlRXhlY3V0aW9uKHJ1bi5ydW5JZCk7XG4gIGNvbnN0IGNoZWNrcG9pbnQgPSB7XG4gICAgLy8gVGhlIGZvcm1hdCDigJQgcmVhZCBiYWNrIGJ5IGBwYXVzZS9yZWNvcmQudHMgwrcgZGVjb2RlQ2hlY2twb2ludGAuXG4gICAgY2hlY2twb2ludFZlcnNpb246IENIRUNLUE9JTlRfVkVSU0lPTixcbiAgICAuLi4ocnVuLmNhcHR1cmUgJiYgeyBjYXB0dXJlOiBjb3B5Q2hlY2twb2ludENhcHR1cmUoeyAuLi5ydW4uY2FwdHVyZSwgYm91bmRhcnk6IHsgc3RhdHVzOiAncGF1c2VkJyB9IH0pIH0pLFxuICAgIHNoYXJlZFN0YXRlOiB0cmF2ZXJzZXIuZ2V0UnVudGltZSgpLmdsb2JhbFN0b3JlLmdldFN0YXRlKCksXG4gICAgcGF1c2VkU3RhZ2VJZDogc2lnbmFsLnN0YWdlSWQsXG4gICAgLy8gVGhlIHBhdXNlZCBFWEVDVVRJT04gKDkuMzcuMCkg4oCUIGEgcXVldWVkIHNpYmxpbmcgcmFpc2VkIG9uIHJlc3VtZVxuICAgIC8vIGNhcnJpZXMgdGhlIHJ1biBpdCBPUklHSU5BTExZIHBhdXNlZCBpbi5cbiAgICAuLi4oc2lnbmFsLnBhdXNlZEV4ZWN1dGlvbiAmJiB7IHBhdXNlZEV4ZWN1dGlvbjogc2lnbmFsLnBhdXNlZEV4ZWN1dGlvbiB9KSxcbiAgICAvLyBUaGUga2V5IHRoZSBwYXVzZWQgdG91Y2hpbmcgZXhlY3V0aW9uIHJhbiB1bmRlciAoMTAuMSkg4oCUIGl0cyByZXN1bWUgcnVucyB1bmRlciB0aGUgc2FtZSBrZXkuXG4gICAgLi4uKHNpZ25hbC5pZGVtcG90ZW5jeUtleSAhPT0gdW5kZWZpbmVkICYmIHsgaWRlbXBvdGVuY3lLZXk6IHNpZ25hbC5pZGVtcG90ZW5jeUtleSB9KSxcbiAgICBzdWJmbG93UGF0aDogc2lnbmFsLnN1YmZsb3dQYXRoLFxuICAgIHBhdXNlRGF0YTogc2lnbmFsLnBhdXNlRGF0YSxcbiAgICBzdWJmbG93U3RhdGVzOiBzaWduYWwuc3ViZmxvd1N0YXRlcyxcbiAgICAvLyBDb3VudGVyIGNvbnRpbnVpdHkg4oCUIHNlZWRlZCBiYWNrIGluIHJlc3VtZSgpIHNvIHJ1bnRpbWVTdGFnZUlkcyBzdGF5XG4gICAgLy8gdW5pcXVlIGFuZCBsb29wSXRlcmF0aW9uIHN0YXlzIG1vbm90b25pYyBhY3Jvc3MgYSBDUk9TUy1leGVjdXRvciByZXN1bWVcbiAgICAvLyAoYm90aCBhcmUgcGxhaW4gbnVtYmVyL3JlY29yZCwgc28gdGhleSByaWRlIHRoZSBzaW5nbGUgc3RydWN0dXJlZENsb25lXG4gICAgLy8gYmVsb3cgdW50b3VjaGVkKS4gU2VlIHRlc3QvbGliL3BhdXNlL3Jlc3VtZS1leGVjdXRpb24tY291bnRlci1jb250aW51aXR5LnRlc3QudHMuXG4gICAgZXhlY3V0aW9uQ291bnQ6IHJ1bi5leGVjdXRpb25Db3VudCxcbiAgICB2aXNpdENvdW50czogT2JqZWN0LmZyb21FbnRyaWVzKHJ1bi52aXNpdENvdW50cyksXG4gICAgLy8gSW52b2tlciBjb250ZXh0IOKAlCBjb2xsZWN0ZWQgZHVyaW5nIHRyYXZlcnNhbCBidWJibGUtdXAgKG5vdCB0cmVlLXdhbGtlZCkuXG4gICAgLy8gKGBjb250aW51YXRpb25TdGFnZUlkYCBpcyBsZWdhY3ktb25seSBzaW5jZSA5LjM5LjA6IG5vIGxvbmdlciB3cml0dGVuLilcbiAgICAuLi4oc2lnbmFsLmludm9rZXJTdGFnZUlkICYmIHsgaW52b2tlclN0YWdlSWQ6IHNpZ25hbC5pbnZva2VyU3RhZ2VJZCB9KSxcbiAgICAvLyBQYXJhbGxlbCBzaWJsaW5ncycgcGF1c2VzIGZyb20gdGhlIHNhbWUgZmFuLW91dCwgd2FpdGluZyB0aGVpciB0dXJuXG4gICAgLy8gKDkuMjguMCkuIEFic2VudCB3aGVuIG9ubHkgb25lIGNoaWxkIHBhdXNlZCDigJQgdGhlIHNoYXBlIGV2ZXJ5XG4gICAgLy8gZWFybGllciBjaGVja3BvaW50IGhhcy5cbiAgICAuLi4oc2lnbmFsLnBlbmRpbmdQYXVzZXMubGVuZ3RoID4gMCAmJiB7IHBlbmRpbmdQYXVzZXM6IHNpZ25hbC5wZW5kaW5nUGF1c2VzIH0pLFxuICAgIC8vIEhPVyB0aGUgcGF1c2Ugd2FzIHJhaXNlZC4gT25lIGNoZWNrcG9pbnQgc2hhcGUsIG9uZSBleHRyYSBvcHRpb25hbFxuICAgIC8vIGZpZWxkIOKAlCBhbiBpbnRlcnJ1cHQoKSBwYXVzZSBpcyBub3QgYSBzZWNvbmQga2luZCBvZiBjaGVja3BvaW50LCBpdCBpc1xuICAgIC8vIHRoZSBzYW1lIGNoZWNrcG9pbnQgdGhhdCByZXN1bWUoKSByZS1lbnRlcnMgZGlmZmVyZW50bHkgKHN0YWdlIHRvcCB2c1xuICAgIC8vIHJlc3VtZUZuKS4gQWJzZW50IGZvciBldmVyeSBwcmUtOS4xNC4wIGNoZWNrcG9pbnQsIHdoaWNoIGlzIGNvcnJlY3QuXG4gICAgLi4uKHNpZ25hbC5wYXVzZWRCeSAmJiB7IHBhdXNlZEJ5OiBzaWduYWwucGF1c2VkQnkgfSksXG4gICAgLy8gVGhlIHJlZGFjdGlvbiB0aGUgcGF1c2VkIHJ1biBoYWQgbWFkZSDigJQgTkFNRVMgb25seSAobWFya3MsIGEgbWFwcGVyJ3MgdGFpbnRzLCBpbmhlcml0ZWRcbiAgICAvLyBmaWVsZHMpLiBSZXN1bWUgc2VlZHMgdGhlIHJlc3VtZWQgcnVuJ3MgcnVsZSB3aXRoIHRoZW0uIEFic2VudCB3aGVuIG5vdGhpbmcgd2FzIG1hcmtlZC5cbiAgICAuLi4ocnVuLnJlZGFjdGlvbk1hcmtzICYmIHsgcmVkYWN0aW9uTWFya3M6IHJ1bi5yZWRhY3Rpb25NYXJrcyB9KSxcbiAgICBwYXVzZWRBdDogRGF0ZS5ub3coKSxcbiAgfTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gc3RydWN0dXJlZENsb25lKGNoZWNrcG9pbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEdlbnVpbmUgSlNPTi1zYWZlIGNvbnRyYWN0IHZpb2xhdGlvbiBpbiBjb25zdW1lci1vd25lZCBkYXRhLlxuICAgIHRocm93IGRlc2NyaWJlQ2hlY2twb2ludENsb25lRmFpbHVyZShjaGVja3BvaW50LCBlcnJvcik7XG4gIH1cbn1cblxuLyoqIGB0cnVlYCB3aGVuIGBzdHJ1Y3R1cmVkQ2xvbmVgIGFjY2VwdHMgdGhlIHZhbHVlIGFzLWlzLiAqL1xuZnVuY3Rpb24gaXNDbG9uZWFibGUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgREVTQ1JJUFRJVkUgZXJyb3IgZm9yIGEgY2hlY2twb2ludCB0aGF0IGNhbm5vdCBiZSBjbG9uZWQg4oCUIHRoZVxuICogbm9uLWNsb25lYWJsZSB2YWx1ZSBsaXZlcyBpbiBjb25zdW1lci1vd25lZCBkYXRhIChhIGdlbnVpbmUgSlNPTi1zYWZlXG4gKiBjb250cmFjdCB2aW9sYXRpb24pLiBQcm9iZXMgZWFjaCB0b3AtbGV2ZWwgY2hlY2twb2ludCBmaWVsZCBpbmRpdmlkdWFsbHkgc29cbiAqIHRoZSBtZXNzYWdlIG5hbWVzIHRoZSBvZmZlbmRpbmcgZmllbGQgZmFtaWx5LiBOZXZlciBsZXRzIGEgbmFrZWRcbiAqIGBEYXRhQ2xvbmVFcnJvcmAgZXNjYXBlLlxuICovXG5mdW5jdGlvbiBkZXNjcmliZUNoZWNrcG9pbnRDbG9uZUZhaWx1cmUoY2hlY2twb2ludDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNhdXNlOiB1bmtub3duKTogRXJyb3Ige1xuICBjb25zdCBmYWlsaW5nID0gT2JqZWN0LmVudHJpZXMoY2hlY2twb2ludClcbiAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+ICFpc0Nsb25lYWJsZSh2YWx1ZSkpXG4gICAgLm1hcCgoW2ZpZWxkXSkgPT4gZmllbGQpO1xuICBjb25zdCBmaWVsZHMgPSBmYWlsaW5nLmxlbmd0aCA+IDAgPyBmYWlsaW5nLmpvaW4oJywgJykgOiAndW5rbm93bic7XG4gIHJldHVybiBuZXcgRXJyb3IoXG4gICAgJ0Zsb3dDaGFydEV4ZWN1dG9yOiBjYW5ub3QgYnVpbGQgdGhlIHBhdXNlIGNoZWNrcG9pbnQg4oCUIG5vbi1zZXJpYWxpemFibGUgdmFsdWUocykgaW4gJyArXG4gICAgICBgY2hlY2twb2ludCBmaWVsZChzKTogJHtmaWVsZHN9LiBUaGUgY2hlY2twb2ludCBjb250cmFjdCBpcyBKU09OLXNhZmUgKG5vIGZ1bmN0aW9ucywgbm8gYCArXG4gICAgICBcImNsYXNzIGluc3RhbmNlcykuIENoZWNrIHRoZSBwYXVzZURhdGEgcmV0dXJuZWQgYnkgdGhlIHBhdXNhYmxlIHN0YWdlJ3MgZXhlY3V0ZSgpLCBhbmQgYW55IFwiICtcbiAgICAgICdzdWJmbG93IHN0YXRlIGNhcHR1cmVkIGF0IHRoZSBwYXVzZS4gRGlhZ25vc3RpYyB2YWx1ZXMgZnJvbSAkZGVidWcvJG1ldHJpYy8kZXJyb3IvJGV2YWwgJyArXG4gICAgICAnYXJlIG5ldmVyIHBhcnQgb2YgYSBjaGVja3BvaW50IGFuZCBuZXZlciBjYXVzZSB0aGlzIGVycm9yLiAnICtcbiAgICAgICdTZWUgZG9jcy9ndWlkZXMvZXhlY3V0aW9uLW1vZGVsLm1kIChcIlBhdXNlIC8gcmVzdW1lIOKAlCB3aGF0IGEgY2hlY2twb2ludCBjYXB0dXJlc1wiKS4nLFxuICAgIHsgY2F1c2UgfSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type { CaptureHistoryOptions, CaptureHistoryReceipt, CaptureHistoryStatus, CaptureHistoryTarget, } from '../capture/historyTypes.js';
|
|
1
2
|
export type { ComposableRunner } from './ComposableRunner.js';
|
|
2
3
|
export type { AttachRecorderOptions, ObserverDelivery, ObserverDrainResult, ObserverStats, } from './DeferredObserverTier.js';
|
|
3
4
|
export type { RecorderSnapshot, RecordSinkStats, RuntimeSnapshot } from './ExecutionRuntime.js';
|
|
@@ -3,4 +3,4 @@ export { FlowChartExecutor } from './FlowChartExecutor.js';
|
|
|
3
3
|
export { getSubtreeSnapshot, listSubflowPaths } from './getSubtreeSnapshot.js';
|
|
4
4
|
export { RecordSinkError } from './recordSink.js';
|
|
5
5
|
export { RunContext } from './RunContext.js';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3J1bm5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbmV4cG9ydCB0eXBlIHtcbiAgQ2FwdHVyZUhpc3RvcnlPcHRpb25zLFxuICBDYXB0dXJlSGlzdG9yeVJlY2VpcHQsXG4gIENhcHR1cmVIaXN0b3J5U3RhdHVzLFxuICBDYXB0dXJlSGlzdG9yeVRhcmdldCxcbn0gZnJvbSAnLi4vY2FwdHVyZS9oaXN0b3J5VHlwZXMuanMnO1xuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9Db21wb3NhYmxlUnVubmVyLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL0RlZmVycmVkT2JzZXJ2ZXJUaWVyLmpzJztcbmV4cG9ydCB0eXBlIHsgUmVjb3JkZXJTbmFwc2hvdCwgUmVjb3JkU2lua1N0YXRzLCBSdW50aW1lU25hcHNob3QgfSBmcm9tICcuL0V4ZWN1dGlvblJ1bnRpbWUuanMnO1xuZXhwb3J0IHsgRXhlY3V0aW9uUnVudGltZSB9IGZyb20gJy4vRXhlY3V0aW9uUnVudGltZS5qcyc7XG5leHBvcnQgeyBGbG93Q2hhcnRFeGVjdXRvciB9IGZyb20gJy4vRmxvd0NoYXJ0RXhlY3V0b3IuanMnO1xuZXhwb3J0IHR5cGUgeyBTdWJ0cmVlU25hcHNob3QgfSBmcm9tICcuL2dldFN1YnRyZWVTbmFwc2hvdC5qcyc7XG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2dldFN1YnRyZWVTbmFwc2hvdC5qcyc7XG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucy5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFJlY29yZEZsdXNoUmVzdWx0LFxuICBSZWNvcmRTaW5rRmFpbHVyZU1vZGUsXG4gIFJlY29yZFNpbmtGbHVzaE1vZGUsXG4gIFJlY29yZFNpbmtPcHRpb24sXG4gIFJlY29yZFNpbmtPcHRpb25zLFxufSBmcm9tICcuL3JlY29yZFNpbmsuanMnO1xuZXhwb3J0IHsgUmVjb3JkU2lua0Vycm9yIH0gZnJvbSAnLi9yZWNvcmRTaW5rLmpzJztcbmV4cG9ydCB0eXBlIHsgUnVuUmVzdWx0IH0gZnJvbSAnLi9SdW5Db250ZXh0LmpzJztcbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL1J1bkNvbnRleHQuanMnO1xuZXhwb3J0IHR5cGUgeyBSdW5uYWJsZUZsb3dDaGFydCB9IGZyb20gJy4vUnVubmFibGVDaGFydC5qcyc7XG4iXX0=
|
|
@@ -59,6 +59,8 @@ export interface FlowChartExecutorOptions<TScope = any> extends RunDials {
|
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
61
|
sink?: RecordSinkOption;
|
|
62
|
+
/** Opt in to a versioned, memory-only root-log capture note on snapshots (#111 stage 1). */
|
|
63
|
+
captureCoverage?: boolean;
|
|
62
64
|
/**
|
|
63
65
|
* Custom error classifier for throttling detection. Return `true` if a fork
|
|
64
66
|
* child's error represents a rate-limit or backpressure condition; the
|
|
@@ -87,6 +89,7 @@ export interface ExecutorArgs<TOut, TScope> {
|
|
|
87
89
|
dials: RunDials;
|
|
88
90
|
/** The record sink, resolved and checked at construction (10.1, P6). */
|
|
89
91
|
sink?: ResolvedRecordSink;
|
|
92
|
+
captureCoverage?: boolean;
|
|
90
93
|
}
|
|
91
94
|
/**
|
|
92
95
|
* Resolve either constructor form. The 2-param form is the options form with
|
|
@@ -17,6 +17,48 @@ const defaultScopeFactory = (ctx, stageName, readOnly, env) => new ScopeFacade(c
|
|
|
17
17
|
*/
|
|
18
18
|
export function resolveExecutorArgs(flowChart, factoryOrOptions) {
|
|
19
19
|
const opts = typeof factoryOrOptions === 'function' ? { scopeFactory: factoryOrOptions } : factoryOrOptions ?? {};
|
|
20
|
+
const slot = Object.getOwnPropertyDescriptor(opts, 'readSources');
|
|
21
|
+
if (slot && !Object.hasOwn(slot, 'value'))
|
|
22
|
+
throw new TypeError('readSources must be plain data');
|
|
23
|
+
const source = slot?.value;
|
|
24
|
+
const dialInput = Object.create(opts);
|
|
25
|
+
Object.defineProperty(dialInput, 'readSources', { value: source });
|
|
26
|
+
const dials = pickDials(dialInput);
|
|
27
|
+
if (source !== undefined && typeof source !== 'boolean') {
|
|
28
|
+
const limits = source && typeof source === 'object' && !Array.isArray(source)
|
|
29
|
+
? Object.getOwnPropertyDescriptor(source, 'limits')
|
|
30
|
+
: undefined;
|
|
31
|
+
if (!limits ||
|
|
32
|
+
!Object.hasOwn(limits, 'value') ||
|
|
33
|
+
!limits.value ||
|
|
34
|
+
typeof limits.value !== 'object' ||
|
|
35
|
+
Array.isArray(limits.value))
|
|
36
|
+
throw new TypeError('readSources must be a boolean or an object with limits');
|
|
37
|
+
// Capture a plain immutable settings snapshot; no app getter runs and later edits cannot resize a run.
|
|
38
|
+
const copied = Object.create(null);
|
|
39
|
+
const fields = [
|
|
40
|
+
'maxOccurrences',
|
|
41
|
+
'maxPerExecution',
|
|
42
|
+
'maxBytes',
|
|
43
|
+
'maxOrigins',
|
|
44
|
+
'maxStaging',
|
|
45
|
+
];
|
|
46
|
+
for (const key of fields) {
|
|
47
|
+
const limit = Object.getOwnPropertyDescriptor(limits.value, key);
|
|
48
|
+
if (!limit)
|
|
49
|
+
continue;
|
|
50
|
+
if (!Object.hasOwn(limit, 'value'))
|
|
51
|
+
throw new TypeError('readSources limits must be plain values');
|
|
52
|
+
copied[key] = limit.value;
|
|
53
|
+
}
|
|
54
|
+
dials.readSources = Object.freeze({ limits: Object.freeze(copied) });
|
|
55
|
+
}
|
|
56
|
+
if (opts.captureCoverage !== undefined && typeof opts.captureCoverage !== 'boolean') {
|
|
57
|
+
throw new TypeError('captureCoverage must be a boolean');
|
|
58
|
+
}
|
|
59
|
+
const sink = opts.sink !== undefined ? resolveRecordSink(opts.sink) : undefined;
|
|
60
|
+
if (sink?.capture && opts.captureCoverage !== true)
|
|
61
|
+
throw new TypeError('sink.capture requires captureCoverage: true');
|
|
20
62
|
return {
|
|
21
63
|
flowChart,
|
|
22
64
|
scopeFactory: opts.scopeFactory ?? flowChart.scopeFactory ?? defaultScopeFactory,
|
|
@@ -26,8 +68,9 @@ export function resolveExecutorArgs(flowChart, factoryOrOptions) {
|
|
|
26
68
|
throttlingErrorChecker: opts.throttlingErrorChecker,
|
|
27
69
|
streamHandlers: opts.streamHandlers,
|
|
28
70
|
scopeProtectionMode: opts.scopeProtectionMode,
|
|
29
|
-
dials
|
|
30
|
-
...(opts.
|
|
71
|
+
dials,
|
|
72
|
+
...(opts.captureCoverage === true && { captureCoverage: true }),
|
|
73
|
+
...(sink && { sink }),
|
|
31
74
|
};
|
|
32
75
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBS0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQWtELGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEcsMEVBQTBFO0FBQzFFLE1BQU0sbUJBQW1CLEdBQWlCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDMUUsSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFtR2pEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLFNBQWtDLEVBQ2xDLGdCQUFxRjtJQUVyRixNQUFNLElBQUksR0FDUixPQUFPLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO0lBQ3ZHLE9BQU87UUFDTCxTQUFTO1FBQ1QsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksU0FBUyxDQUFDLFlBQVksSUFBSyxtQkFBNEM7UUFDMUcsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtRQUNyRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7UUFDbkMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1FBQ3JDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7UUFDbkQsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1FBQ25DLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7UUFDN0MsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDdEIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0tBQ3ZFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBvcHRpb25zIOKAlCB0aGUgZXhlY3V0b3IncyBjb25zdHJ1Y3Rpb24gb3B0aW9ucyBhbmQgaG93IHRoZXkgcmVzb2x2ZSAoRjkpLlxuICpcbiAqIGBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnNgIGlzIHRoZSBwdWJsaWMgb3B0aW9ucyBvYmplY3Q7XG4gKiBgcmVzb2x2ZUV4ZWN1dG9yQXJnc2AgdHVybnMgZWl0aGVyIGNvbnN0cnVjdG9yIGZvcm0gKG9wdGlvbnMgb2JqZWN0LCBvciBhXG4gKiBiYXJlIGBTY29wZUZhY3RvcnlgKSBpbnRvIHRoZSBgRXhlY3V0b3JBcmdzYCB0aGUgZXhlY3V0b3Iga2VlcHMgZm9yIGV2ZXJ5IGxlZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dDaGFydCB9IGZyb20gJy4uL2J1aWxkZXIvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTY29wZUZhY3RvcnksIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgUnVuRGlhbHMgfSBmcm9tICcuLi9tZW1vcnkvcnVuUG9saWN5LmpzJztcbmltcG9ydCB7IHBpY2tEaWFscyB9IGZyb20gJy4uL21lbW9yeS9ydW5Qb2xpY3kuanMnO1xuaW1wb3J0IHR5cGUgeyBTY29wZVByb3RlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vc2NvcGUvcHJvdGVjdGlvbi90eXBlcy5qcyc7XG5pbXBvcnQgeyBTY29wZUZhY2FkZSB9IGZyb20gJy4uL3Njb3BlL1Njb3BlRmFjYWRlLmpzJztcbmltcG9ydCB7IHR5cGUgUmVjb3JkU2lua09wdGlvbiwgdHlwZSBSZXNvbHZlZFJlY29yZFNpbmssIHJlc29sdmVSZWNvcmRTaW5rIH0gZnJvbSAnLi9yZWNvcmRTaW5rLmpzJztcblxuLyoqIERlZmF1bHQgc2NvcGUgZmFjdG9yeSDigJQgY3JlYXRlcyBhIHBsYWluIFNjb3BlRmFjYWRlIGZvciBlYWNoIHN0YWdlLiAqL1xuY29uc3QgZGVmYXVsdFNjb3BlRmFjdG9yeTogU2NvcGVGYWN0b3J5ID0gKGN0eCwgc3RhZ2VOYW1lLCByZWFkT25seSwgZW52KSA9PlxuICBuZXcgU2NvcGVGYWNhZGUoY3R4LCBzdGFnZU5hbWUsIHJlYWRPbmx5LCBlbnYpO1xuXG4vKipcbiAqIE9wdGlvbnMgb2JqZWN0IGZvciBgRmxvd0NoYXJ0RXhlY3V0b3JgIOKAlCBwcmVmZXJyZWQgb3ZlciBwb3NpdGlvbmFsIHBhcmFtcy5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBleCA9IG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwge1xuICogICBzY29wZUZhY3Rvcnk6IG15RmFjdG9yeSxcbiAqICAgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHQ6IHsgLi4uIH0sXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqICoqU3luYyBub3RlIGZvciBtYWludGFpbmVyczoqKiBhIGZpZWxkIGFkZGVkIGhlcmUgbXVzdCBhbHNvIGJlIGFkZGVkIHRvXG4gKiBgRXhlY3V0b3JBcmdzYCBhbmQgYHJlc29sdmVFeGVjdXRvckFyZ3NgIGJlbG93LCBvciBpdCBpcyBhY2NlcHRlZCBhbmQgbmV2ZXJcbiAqIGFwcGxpZWQuIFRoZSBESUFMUyBhcmUgdGhlIGV4Y2VwdGlvbjogdGhleSBjb21lIGZyb20gYFJ1bkRpYWxzYCBhbmQgdHJhdmVsXG4gKiB3aG9sZSBhcyBgZGlhbHNgLlxuICpcbiAqICoqVFNjb3BlIGluZmVyZW5jZSBub3RlOioqIFdoZW4gdXNpbmcgdGhlIG9wdGlvbnMtb2JqZWN0IGZvcm0gd2l0aCBhIGN1c3RvbSBzY29wZSxcbiAqIFR5cGVTY3JpcHQgY2Fubm90IGluZmVyIGBUU2NvcGVgIHRocm91Z2ggdGhlIG9wdGlvbnMgb2JqZWN0LiBQYXNzIHRoZSB0eXBlXG4gKiBleHBsaWNpdGx5OiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yPFRPdXQsIE15U2NvcGU+KGNoYXJ0LCB7IHNjb3BlRmFjdG9yeSB9KWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zPFRTY29wZSA9IGFueT4gZXh0ZW5kcyBSdW5EaWFscyB7XG4gIC8vIOKUgOKUgCBDb21tb24gb3B0aW9ucyAobW9zdCBjYWxsZXJzIG5lZWQgb25seSB0aGVzZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqIEN1c3RvbSBzY29wZSBmYWN0b3J5LiBEZWZhdWx0cyB0byBUeXBlZFNjb3BlIG9yIFNjb3BlRmFjYWRlIGF1dG8tZGV0ZWN0aW9uLiAqL1xuICBzY29wZUZhY3Rvcnk/OiBTY29wZUZhY3Rvcnk8VFNjb3BlPjtcblxuICAvLyDilIDilIAgQ29udGV4dCBvcHRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHZhbHVlcyBwcmUtcG9wdWxhdGVkIGludG8gdGhlIHNoYXJlZCBjb250ZXh0IGJlZm9yZSAqKmVhY2gqKiBzdGFnZVxuICAgKiAocmUtYXBwbGllZCBldmVyeSBzdGFnZSwgYWN0aW5nIGFzIGJhc2VsaW5lIGRlZmF1bHRzKS5cbiAgICovXG4gIGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0PzogdW5rbm93bjtcbiAgLyoqXG4gICAqIEluaXRpYWwgY29udGV4dCB2YWx1ZXMgbWVyZ2VkIGludG8gdGhlIHNoYXJlZCBjb250ZXh0ICoqb25jZSoqIGF0IHN0YXJ0dXBcbiAgICogKGFwcGxpZWQgYmVmb3JlIHRoZSBmaXJzdCBzdGFnZSwgbm90IHJlcGVhdGVkIG9uIHN1YnNlcXVlbnQgc3RhZ2VzKS5cbiAgICogRGlzdGluY3QgZnJvbSBgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHRgLCB3aGljaCBpcyByZS1hcHBsaWVkIGV2ZXJ5IHN0YWdlLlxuICAgKi9cbiAgaW5pdGlhbENvbnRleHQ/OiB1bmtub3duO1xuICAvKiogUmVhZC1vbmx5IGlucHV0IGFjY2Vzc2libGUgdmlhIGBzY29wZS5nZXRBcmdzKClgIOKAlCBuZXZlciB0cmFja2VkIG9yIHdyaXR0ZW4uICovXG4gIHJlYWRPbmx5Q29udGV4dD86IHVua25vd247XG5cbiAgLy8g4pSA4pSAIE9ic2VydmFiaWxpdHkgY29zdCBvcHRpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAvLyBUaGUgZm91ciBkaWFscyDigJQgYHJlYWRUcmFja2luZ2AsIGB3cml0ZVRyYWNraW5nYCwgYGNvbW1pdFZhbHVlc2AsXG4gIC8vIGB3cml0ZVByb3ZlbmFuY2VgIOKAlCBhcmUgaW5oZXJpdGVkIGZyb20gYFJ1bkRpYWxzYCAobWVtb3J5L3J1blBvbGljeS50cyxcbiAgLy8gd2hlcmUgZWFjaCBpcyBkb2N1bWVudGVkKTogdGhlIGV4ZWN1dG9yIHBpY2tzIHRoZW0gb2ZmIHRoaXMgb2JqZWN0IGFuZFxuICAvLyBidWlsZHMgdGhlIHJ1bidzIE9ORSBwb2xpY3kgZnJvbSB0aGVtIChGNSkuXG5cbiAgLy8g4pSA4pSAIFRoZSBjcmFzaC1zYWZlIHJlY29yZCAoMTAuMSwgUDYpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKlxuICAgKiBXaGVyZSB0aGUgcnVuJ3MgcmVjb3JkIGdvZXMgQVMgSVQgTEFORFMsIHNvIGEgcnVuIHRoYXQgbmV2ZXIgZmluaXNoZXMgc3RpbGwgbGVhdmVzIGl0OiBldmVyeSBsb2cgb2YgdGhlIHJ1blxuICAgKiAodGhlIHJvb3QgYW5kIGVhY2ggc3ViZmxvdyBtb3VudCkgaGFuZHMgdGhlIHNpbmsgaXRzIGBvcGVuZWRgIGJhc2UsIGVhY2ggY29tbWl0LCBhIG5vdGUgcGVyIGF0dGVtcHQgdGhhdCBlbmRlZCxcbiAgICogYW5kIGl0cyBgY2xvc2VkYCBvdXRjb21lLiBgZmlsZVNpbmsocGF0aClgIChgZm9vdHByaW50anMvc2lua3NgLCBOb2RlKSBvciBgbWVtb3J5U2luaygpYCAoYGZvb3R0cmFjZS93cml0ZWApO1xuICAgKiByZWFkIGl0IGJhY2sgd2l0aCBgcmVhZFN0b3JlZFJlY29yZGAgKGBmb290dHJhY2VgKS4gVGhlIHJlZGFjdGlvbiBwb2xpY3kgYXBwbGllcyBiZWZvcmUgYW55IGVudHJ5IGlzIHdyaXR0ZW4uXG4gICAqIEEgZmFpbGluZyBzaW5rIG5ldmVyIHN0b3BzIHRoZSBydW4gKGBvbkZhaWx1cmU6ICdyZXBvcnQnYCwgdGhlIGRlZmF1bHQpIOKAlCBgZ2V0U25hcHNob3QoKS5zaW5rYCBjb3VudHMgd2hhdCB3YXNcbiAgICogbG9zdC4gU2VlIHRoZSBndWlkZSdzIFwiQSBjcmFzaC1zYWZlIHJlY29yZFwiLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGV4ZWN1dG9yID0gbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IHNpbms6IGZpbGVTaW5rKCcvdmFyL2Zvb3RwcmludC9ydW4uanNvbmwnKSB9KTtcbiAgICogYGBgXG4gICAqL1xuICBzaW5rPzogUmVjb3JkU2lua09wdGlvbjtcblxuICAvLyDilIDilIAgQWR2YW5jZWQgLyBlc2NhcGUtaGF0Y2ggb3B0aW9ucyAobW9zdCBjYWxsZXJzIGRvIG5vdCBuZWVkIHRoZXNlKSDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogQ3VzdG9tIGVycm9yIGNsYXNzaWZpZXIgZm9yIHRocm90dGxpbmcgZGV0ZWN0aW9uLiBSZXR1cm4gYHRydWVgIGlmIGEgZm9ya1xuICAgKiBjaGlsZCdzIGVycm9yIHJlcHJlc2VudHMgYSByYXRlLWxpbWl0IG9yIGJhY2twcmVzc3VyZSBjb25kaXRpb247IHRoZVxuICAgKiBleGVjdXRvciB0aGVuIGZpcmVzIGBGbG93UmVjb3JkZXIub25UaHJvdHRsZWRgIGZvciB0aGF0IGNoaWxkICg5LjM5LjAg4oCUXG4gICAqIGFuIEVWRU5ULCBub3QgYSBzdGF0ZSBrZXk6IHRoZSBgbW9uaXRvci5pc1Rocm90dGxlZGAgd3JpdGUgaXQgcmVwbGFjZWRcbiAgICogbmV2ZXIgbGFuZGVkKS4gVGhlIGNoaWxkJ3MgZmFpbHVyZSBpcyBvdGhlcndpc2UgaGFuZGxlZCBhcyBiZWZvcmUuXG4gICAqIERlZmF1bHRzIHRvIG5vIHRocm90dGxpbmcgY2xhc3NpZmljYXRpb24uXG4gICAqL1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICAvKiogSGFuZGxlcnMgZm9yIHN0cmVhbWluZyBzdGFnZSBsaWZlY3ljbGUgZXZlbnRzIChzZWUgYGFkZFN0cmVhbWluZ0Z1bmN0aW9uYCkuICovXG4gIHN0cmVhbUhhbmRsZXJzPzogU3RyZWFtSGFuZGxlcnM7XG4gIC8qKiBTY29wZSBwcm90ZWN0aW9uIG1vZGUgZm9yIFR5cGVkU2NvcGUgZGlyZWN0LWFzc2lnbm1lbnQgZGV0ZWN0aW9uLiAqL1xuICBzY29wZVByb3RlY3Rpb25Nb2RlPzogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbn1cblxuLyoqIFdoYXQgdGhlIGV4ZWN1dG9yIGtlZXBzIGZyb20gY29uc3RydWN0aW9uIOKAlCByZWFkIGJ5IGV2ZXJ5IGxlZyAoYHJ1bigpYCAvIGByZXN1bWUoKWApLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRvckFyZ3M8VE91dCwgVFNjb3BlPiB7XG4gIGZsb3dDaGFydDogRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT47XG4gIHNjb3BlRmFjdG9yeTogU2NvcGVGYWN0b3J5PFRTY29wZT47XG4gIGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0PzogdW5rbm93bjtcbiAgaW5pdGlhbENvbnRleHQ/OiB1bmtub3duO1xuICByZWFkT25seUNvbnRleHQ/OiB1bmtub3duO1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICBzdHJlYW1IYW5kbGVycz86IFN0cmVhbUhhbmRsZXJzO1xuICBzY29wZVByb3RlY3Rpb25Nb2RlPzogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbiAgLyoqIFRoZSBkaWFscyBhcyBnaXZlbiAoYWJzZW50ID0gZGVmYXVsdCkg4oCUIHRoZSBydW4ncyBwb2xpY3kgaXMgYnVpbHQgZnJvbSB0aGVtIHBlciBsZWcuICovXG4gIGRpYWxzOiBSdW5EaWFscztcbiAgLyoqIFRoZSByZWNvcmQgc2luaywgcmVzb2x2ZWQgYW5kIGNoZWNrZWQgYXQgY29uc3RydWN0aW9uICgxMC4xLCBQNikuICovXG4gIHNpbms/OiBSZXNvbHZlZFJlY29yZFNpbms7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBlaXRoZXIgY29uc3RydWN0b3IgZm9ybS4gVGhlIDItcGFyYW0gZm9ybSBpcyB0aGUgb3B0aW9ucyBmb3JtIHdpdGhcbiAqIG9ubHkgYHNjb3BlRmFjdG9yeWA7IHRoZSBzY29wZSBmYWN0b3J5IGZhbGxzIGJhY2sgdG8gdGhlIGNoYXJ0J3MsIHRoZW4gdG8gYVxuICogcGxhaW4gYFNjb3BlRmFjYWRlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFeGVjdXRvckFyZ3M8VE91dCwgVFNjb3BlPihcbiAgZmxvd0NoYXJ0OiBGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPixcbiAgZmFjdG9yeU9yT3B0aW9uczogU2NvcGVGYWN0b3J5PFRTY29wZT4gfCBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnM8VFNjb3BlPiB8IHVuZGVmaW5lZCxcbik6IEV4ZWN1dG9yQXJnczxUT3V0LCBUU2NvcGU+IHtcbiAgY29uc3Qgb3B0czogRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zPFRTY29wZT4gPVxuICAgIHR5cGVvZiBmYWN0b3J5T3JPcHRpb25zID09PSAnZnVuY3Rpb24nID8geyBzY29wZUZhY3Rvcnk6IGZhY3RvcnlPck9wdGlvbnMgfSA6IGZhY3RvcnlPck9wdGlvbnMgPz8ge307XG4gIHJldHVybiB7XG4gICAgZmxvd0NoYXJ0LFxuICAgIHNjb3BlRmFjdG9yeTogb3B0cy5zY29wZUZhY3RvcnkgPz8gZmxvd0NoYXJ0LnNjb3BlRmFjdG9yeSA/PyAoZGVmYXVsdFNjb3BlRmFjdG9yeSBhcyBTY29wZUZhY3Rvcnk8VFNjb3BlPiksXG4gICAgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHQ6IG9wdHMuZGVmYXVsdFZhbHVlc0ZvckNvbnRleHQsXG4gICAgaW5pdGlhbENvbnRleHQ6IG9wdHMuaW5pdGlhbENvbnRleHQsXG4gICAgcmVhZE9ubHlDb250ZXh0OiBvcHRzLnJlYWRPbmx5Q29udGV4dCxcbiAgICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyOiBvcHRzLnRocm90dGxpbmdFcnJvckNoZWNrZXIsXG4gICAgc3RyZWFtSGFuZGxlcnM6IG9wdHMuc3RyZWFtSGFuZGxlcnMsXG4gICAgc2NvcGVQcm90ZWN0aW9uTW9kZTogb3B0cy5zY29wZVByb3RlY3Rpb25Nb2RlLFxuICAgIGRpYWxzOiBwaWNrRGlhbHMob3B0cyksXG4gICAgLi4uKG9wdHMuc2luayAhPT0gdW5kZWZpbmVkICYmIHsgc2luazogcmVzb2x2ZVJlY29yZFNpbmsob3B0cy5zaW5rKSB9KSxcbiAgfTtcbn1cbiJdfQ==
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBT0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQWtELGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEcsMEVBQTBFO0FBQzFFLE1BQU0sbUJBQW1CLEdBQWlCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDMUUsSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7QUF1R2pEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLFNBQWtDLEVBQ2xDLGdCQUFxRjtJQUVyRixNQUFNLElBQUksR0FDUixPQUFPLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO0lBQ3ZHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbEUsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7UUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDakcsTUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUMzQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sQ0FBQyxjQUFj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RyxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQy9ELEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUN0QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogb3B0aW9ucyDigJQgdGhlIGV4ZWN1dG9yJ3MgY29uc3RydWN0aW9uIG9wdGlvbnMgYW5kIGhvdyB0aGV5IHJlc29sdmUgKEY5KS5cbiAqXG4gKiBgRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zYCBpcyB0aGUgcHVibGljIG9wdGlvbnMgb2JqZWN0O1xuICogYHJlc29sdmVFeGVjdXRvckFyZ3NgIHR1cm5zIGVpdGhlciBjb25zdHJ1Y3RvciBmb3JtIChvcHRpb25zIG9iamVjdCwgb3IgYVxuICogYmFyZSBgU2NvcGVGYWN0b3J5YCkgaW50byB0aGUgYEV4ZWN1dG9yQXJnc2AgdGhlIGV4ZWN1dG9yIGtlZXBzIGZvciBldmVyeSBsZWcuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZWFkU291cmNlTGltaXRzIH0gZnJvbSAnZm9vdHRyYWNlL3dyaXRlJztcblxuaW1wb3J0IHR5cGUgeyBGbG93Q2hhcnQgfSBmcm9tICcuLi9idWlsZGVyL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVGYWN0b3J5LCBTdHJlYW1IYW5kbGVycyB9IGZyb20gJy4uL2VuZ2luZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJ1bkRpYWxzIH0gZnJvbSAnLi4vbWVtb3J5L3J1blBvbGljeS5qcyc7XG5pbXBvcnQgeyBwaWNrRGlhbHMgfSBmcm9tICcuLi9tZW1vcnkvcnVuUG9saWN5LmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVQcm90ZWN0aW9uTW9kZSB9IGZyb20gJy4uL3Njb3BlL3Byb3RlY3Rpb24vdHlwZXMuanMnO1xuaW1wb3J0IHsgU2NvcGVGYWNhZGUgfSBmcm9tICcuLi9zY29wZS9TY29wZUZhY2FkZS5qcyc7XG5pbXBvcnQgeyB0eXBlIFJlY29yZFNpbmtPcHRpb24sIHR5cGUgUmVzb2x2ZWRSZWNvcmRTaW5rLCByZXNvbHZlUmVjb3JkU2luayB9IGZyb20gJy4vcmVjb3JkU2luay5qcyc7XG5cbi8qKiBEZWZhdWx0IHNjb3BlIGZhY3Rvcnkg4oCUIGNyZWF0ZXMgYSBwbGFpbiBTY29wZUZhY2FkZSBmb3IgZWFjaCBzdGFnZS4gKi9cbmNvbnN0IGRlZmF1bHRTY29wZUZhY3Rvcnk6IFNjb3BlRmFjdG9yeSA9IChjdHgsIHN0YWdlTmFtZSwgcmVhZE9ubHksIGVudikgPT5cbiAgbmV3IFNjb3BlRmFjYWRlKGN0eCwgc3RhZ2VOYW1lLCByZWFkT25seSwgZW52KTtcblxuLyoqXG4gKiBPcHRpb25zIG9iamVjdCBmb3IgYEZsb3dDaGFydEV4ZWN1dG9yYCDigJQgcHJlZmVycmVkIG92ZXIgcG9zaXRpb25hbCBwYXJhbXMuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXggPSBuZXcgRmxvd0NoYXJ0RXhlY3V0b3IoY2hhcnQsIHtcbiAqICAgc2NvcGVGYWN0b3J5OiBteUZhY3RvcnksXG4gKiAgIGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0OiB7IC4uLiB9LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiAqKlN5bmMgbm90ZSBmb3IgbWFpbnRhaW5lcnM6KiogYSBmaWVsZCBhZGRlZCBoZXJlIG11c3QgYWxzbyBiZSBhZGRlZCB0b1xuICogYEV4ZWN1dG9yQXJnc2AgYW5kIGByZXNvbHZlRXhlY3V0b3JBcmdzYCBiZWxvdywgb3IgaXQgaXMgYWNjZXB0ZWQgYW5kIG5ldmVyXG4gKiBhcHBsaWVkLiBUaGUgRElBTFMgYXJlIHRoZSBleGNlcHRpb246IHRoZXkgY29tZSBmcm9tIGBSdW5EaWFsc2AgYW5kIHRyYXZlbFxuICogd2hvbGUgYXMgYGRpYWxzYC5cbiAqXG4gKiAqKlRTY29wZSBpbmZlcmVuY2Ugbm90ZToqKiBXaGVuIHVzaW5nIHRoZSBvcHRpb25zLW9iamVjdCBmb3JtIHdpdGggYSBjdXN0b20gc2NvcGUsXG4gKiBUeXBlU2NyaXB0IGNhbm5vdCBpbmZlciBgVFNjb3BlYCB0aHJvdWdoIHRoZSBvcHRpb25zIG9iamVjdC4gUGFzcyB0aGUgdHlwZVxuICogZXhwbGljaXRseTogYG5ldyBGbG93Q2hhcnRFeGVjdXRvcjxUT3V0LCBNeVNjb3BlPihjaGFydCwgeyBzY29wZUZhY3RvcnkgfSlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9uczxUU2NvcGUgPSBhbnk+IGV4dGVuZHMgUnVuRGlhbHMge1xuICAvLyDilIDilIAgQ29tbW9uIG9wdGlvbnMgKG1vc3QgY2FsbGVycyBuZWVkIG9ubHkgdGhlc2UpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKiBDdXN0b20gc2NvcGUgZmFjdG9yeS4gRGVmYXVsdHMgdG8gVHlwZWRTY29wZSBvciBTY29wZUZhY2FkZSBhdXRvLWRldGVjdGlvbi4gKi9cbiAgc2NvcGVGYWN0b3J5PzogU2NvcGVGYWN0b3J5PFRTY29wZT47XG5cbiAgLy8g4pSA4pSAIENvbnRleHQgb3B0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogRGVmYXVsdCB2YWx1ZXMgcHJlLXBvcHVsYXRlZCBpbnRvIHRoZSBzaGFyZWQgY29udGV4dCBiZWZvcmUgKiplYWNoKiogc3RhZ2VcbiAgICogKHJlLWFwcGxpZWQgZXZlcnkgc3RhZ2UsIGFjdGluZyBhcyBiYXNlbGluZSBkZWZhdWx0cykuXG4gICAqL1xuICBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dD86IHVua25vd247XG4gIC8qKlxuICAgKiBJbml0aWFsIGNvbnRleHQgdmFsdWVzIG1lcmdlZCBpbnRvIHRoZSBzaGFyZWQgY29udGV4dCAqKm9uY2UqKiBhdCBzdGFydHVwXG4gICAqIChhcHBsaWVkIGJlZm9yZSB0aGUgZmlyc3Qgc3RhZ2UsIG5vdCByZXBlYXRlZCBvbiBzdWJzZXF1ZW50IHN0YWdlcykuXG4gICAqIERpc3RpbmN0IGZyb20gYGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0YCwgd2hpY2ggaXMgcmUtYXBwbGllZCBldmVyeSBzdGFnZS5cbiAgICovXG4gIGluaXRpYWxDb250ZXh0PzogdW5rbm93bjtcbiAgLyoqIFJlYWQtb25seSBpbnB1dCBhY2Nlc3NpYmxlIHZpYSBgc2NvcGUuZ2V0QXJncygpYCDigJQgbmV2ZXIgdHJhY2tlZCBvciB3cml0dGVuLiAqL1xuICByZWFkT25seUNvbnRleHQ/OiB1bmtub3duO1xuXG4gIC8vIOKUgOKUgCBPYnNlcnZhYmlsaXR5IGNvc3Qgb3B0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLy8gVGhlIGZvdXIgZGlhbHMg4oCUIGByZWFkVHJhY2tpbmdgLCBgd3JpdGVUcmFja2luZ2AsIGBjb21taXRWYWx1ZXNgLFxuICAvLyBgd3JpdGVQcm92ZW5hbmNlYCDigJQgYXJlIGluaGVyaXRlZCBmcm9tIGBSdW5EaWFsc2AgKG1lbW9yeS9ydW5Qb2xpY3kudHMsXG4gIC8vIHdoZXJlIGVhY2ggaXMgZG9jdW1lbnRlZCk6IHRoZSBleGVjdXRvciBwaWNrcyB0aGVtIG9mZiB0aGlzIG9iamVjdCBhbmRcbiAgLy8gYnVpbGRzIHRoZSBydW4ncyBPTkUgcG9saWN5IGZyb20gdGhlbSAoRjUpLlxuXG4gIC8vIOKUgOKUgCBUaGUgY3Jhc2gtc2FmZSByZWNvcmQgKDEwLjEsIFA2KSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogV2hlcmUgdGhlIHJ1bidzIHJlY29yZCBnb2VzIEFTIElUIExBTkRTLCBzbyBhIHJ1biB0aGF0IG5ldmVyIGZpbmlzaGVzIHN0aWxsIGxlYXZlcyBpdDogZXZlcnkgbG9nIG9mIHRoZSBydW5cbiAgICogKHRoZSByb290IGFuZCBlYWNoIHN1YmZsb3cgbW91bnQpIGhhbmRzIHRoZSBzaW5rIGl0cyBgb3BlbmVkYCBiYXNlLCBlYWNoIGNvbW1pdCwgYSBub3RlIHBlciBhdHRlbXB0IHRoYXQgZW5kZWQsXG4gICAqIGFuZCBpdHMgYGNsb3NlZGAgb3V0Y29tZS4gYGZpbGVTaW5rKHBhdGgpYCAoYGZvb3RwcmludGpzL3NpbmtzYCwgTm9kZSkgb3IgYG1lbW9yeVNpbmsoKWAgKGBmb290dHJhY2Uvd3JpdGVgKTtcbiAgICogcmVhZCBpdCBiYWNrIHdpdGggYHJlYWRTdG9yZWRSZWNvcmRgIChgZm9vdHRyYWNlYCkuIFRoZSByZWRhY3Rpb24gcG9saWN5IGFwcGxpZXMgYmVmb3JlIGFueSBlbnRyeSBpcyB3cml0dGVuLlxuICAgKiBBIGZhaWxpbmcgc2luayBuZXZlciBzdG9wcyB0aGUgcnVuIChgb25GYWlsdXJlOiAncmVwb3J0J2AsIHRoZSBkZWZhdWx0KSDigJQgYGdldFNuYXBzaG90KCkuc2lua2AgY291bnRzIHdoYXQgd2FzXG4gICAqIGxvc3QuIFNlZSB0aGUgZ3VpZGUncyBcIkEgY3Jhc2gtc2FmZSByZWNvcmRcIi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBleGVjdXRvciA9IG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyBzaW5rOiBmaWxlU2luaygnL3Zhci9mb290cHJpbnQvcnVuLmpzb25sJykgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgc2luaz86IFJlY29yZFNpbmtPcHRpb247XG5cbiAgLyoqIE9wdCBpbiB0byBhIHZlcnNpb25lZCwgbWVtb3J5LW9ubHkgcm9vdC1sb2cgY2FwdHVyZSBub3RlIG9uIHNuYXBzaG90cyAoIzExMSBzdGFnZSAxKS4gKi9cbiAgY2FwdHVyZUNvdmVyYWdlPzogYm9vbGVhbjtcblxuICAvLyDilIDilIAgQWR2YW5jZWQgLyBlc2NhcGUtaGF0Y2ggb3B0aW9ucyAobW9zdCBjYWxsZXJzIGRvIG5vdCBuZWVkIHRoZXNlKSDilIDilIDilIDilIDilIBcblxuICAvKipcbiAgICogQ3VzdG9tIGVycm9yIGNsYXNzaWZpZXIgZm9yIHRocm90dGxpbmcgZGV0ZWN0aW9uLiBSZXR1cm4gYHRydWVgIGlmIGEgZm9ya1xuICAgKiBjaGlsZCdzIGVycm9yIHJlcHJlc2VudHMgYSByYXRlLWxpbWl0IG9yIGJhY2twcmVzc3VyZSBjb25kaXRpb247IHRoZVxuICAgKiBleGVjdXRvciB0aGVuIGZpcmVzIGBGbG93UmVjb3JkZXIub25UaHJvdHRsZWRgIGZvciB0aGF0IGNoaWxkICg5LjM5LjAg4oCUXG4gICAqIGFuIEVWRU5ULCBub3QgYSBzdGF0ZSBrZXk6IHRoZSBgbW9uaXRvci5pc1Rocm90dGxlZGAgd3JpdGUgaXQgcmVwbGFjZWRcbiAgICogbmV2ZXIgbGFuZGVkKS4gVGhlIGNoaWxkJ3MgZmFpbHVyZSBpcyBvdGhlcndpc2UgaGFuZGxlZCBhcyBiZWZvcmUuXG4gICAqIERlZmF1bHRzIHRvIG5vIHRocm90dGxpbmcgY2xhc3NpZmljYXRpb24uXG4gICAqL1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICAvKiogSGFuZGxlcnMgZm9yIHN0cmVhbWluZyBzdGFnZSBsaWZlY3ljbGUgZXZlbnRzIChzZWUgYGFkZFN0cmVhbWluZ0Z1bmN0aW9uYCkuICovXG4gIHN0cmVhbUhhbmRsZXJzPzogU3RyZWFtSGFuZGxlcnM7XG4gIC8qKiBTY29wZSBwcm90ZWN0aW9uIG1vZGUgZm9yIFR5cGVkU2NvcGUgZGlyZWN0LWFzc2lnbm1lbnQgZGV0ZWN0aW9uLiAqL1xuICBzY29wZVByb3RlY3Rpb25Nb2RlPzogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbn1cblxuLyoqIFdoYXQgdGhlIGV4ZWN1dG9yIGtlZXBzIGZyb20gY29uc3RydWN0aW9uIOKAlCByZWFkIGJ5IGV2ZXJ5IGxlZyAoYHJ1bigpYCAvIGByZXN1bWUoKWApLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRvckFyZ3M8VE91dCwgVFNjb3BlPiB7XG4gIGZsb3dDaGFydDogRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT47XG4gIHNjb3BlRmFjdG9yeTogU2NvcGVGYWN0b3J5PFRTY29wZT47XG4gIGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0PzogdW5rbm93bjtcbiAgaW5pdGlhbENvbnRleHQ/OiB1bmtub3duO1xuICByZWFkT25seUNvbnRleHQ/OiB1bmtub3duO1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICBzdHJlYW1IYW5kbGVycz86IFN0cmVhbUhhbmRsZXJzO1xuICBzY29wZVByb3RlY3Rpb25Nb2RlPzogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbiAgLyoqIFRoZSBkaWFscyBhcyBnaXZlbiAoYWJzZW50ID0gZGVmYXVsdCkg4oCUIHRoZSBydW4ncyBwb2xpY3kgaXMgYnVpbHQgZnJvbSB0aGVtIHBlciBsZWcuICovXG4gIGRpYWxzOiBSdW5EaWFscztcbiAgLyoqIFRoZSByZWNvcmQgc2luaywgcmVzb2x2ZWQgYW5kIGNoZWNrZWQgYXQgY29uc3RydWN0aW9uICgxMC4xLCBQNikuICovXG4gIHNpbms/OiBSZXNvbHZlZFJlY29yZFNpbms7XG4gIGNhcHR1cmVDb3ZlcmFnZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVzb2x2ZSBlaXRoZXIgY29uc3RydWN0b3IgZm9ybS4gVGhlIDItcGFyYW0gZm9ybSBpcyB0aGUgb3B0aW9ucyBmb3JtIHdpdGhcbiAqIG9ubHkgYHNjb3BlRmFjdG9yeWA7IHRoZSBzY29wZSBmYWN0b3J5IGZhbGxzIGJhY2sgdG8gdGhlIGNoYXJ0J3MsIHRoZW4gdG8gYVxuICogcGxhaW4gYFNjb3BlRmFjYWRlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFeGVjdXRvckFyZ3M8VE91dCwgVFNjb3BlPihcbiAgZmxvd0NoYXJ0OiBGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPixcbiAgZmFjdG9yeU9yT3B0aW9uczogU2NvcGVGYWN0b3J5PFRTY29wZT4gfCBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnM8VFNjb3BlPiB8IHVuZGVmaW5lZCxcbik6IEV4ZWN1dG9yQXJnczxUT3V0LCBUU2NvcGU+IHtcbiAgY29uc3Qgb3B0czogRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zPFRTY29wZT4gPVxuICAgIHR5cGVvZiBmYWN0b3J5T3JPcHRpb25zID09PSAnZnVuY3Rpb24nID8geyBzY29wZUZhY3Rvcnk6IGZhY3RvcnlPck9wdGlvbnMgfSA6IGZhY3RvcnlPck9wdGlvbnMgPz8ge307XG4gIGNvbnN0IHNsb3QgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9wdHMsICdyZWFkU291cmNlcycpO1xuICBpZiAoc2xvdCAmJiAhT2JqZWN0Lmhhc093bihzbG90LCAndmFsdWUnKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVhZFNvdXJjZXMgbXVzdCBiZSBwbGFpbiBkYXRhJyk7XG4gIGNvbnN0IHNvdXJjZSA9IHNsb3Q/LnZhbHVlO1xuICBjb25zdCBkaWFsSW5wdXQgPSBPYmplY3QuY3JlYXRlKG9wdHMpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGlhbElucHV0LCAncmVhZFNvdXJjZXMnLCB7IHZhbHVlOiBzb3VyY2UgfSk7XG4gIGNvbnN0IGRpYWxzID0gcGlja0RpYWxzKGRpYWxJbnB1dCk7XG4gIGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc291cmNlICE9PSAnYm9vbGVhbicpIHtcbiAgICBjb25zdCBsaW1pdHMgPVxuICAgICAgc291cmNlICYmIHR5cGVvZiBzb3VyY2UgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHNvdXJjZSlcbiAgICAgICAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgJ2xpbWl0cycpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGlmIChcbiAgICAgICFsaW1pdHMgfHxcbiAgICAgICFPYmplY3QuaGFzT3duKGxpbWl0cywgJ3ZhbHVlJykgfHxcbiAgICAgICFsaW1pdHMudmFsdWUgfHxcbiAgICAgIHR5cGVvZiBsaW1pdHMudmFsdWUgIT09ICdvYmplY3QnIHx8XG4gICAgICBBcnJheS5pc0FycmF5KGxpbWl0cy52YWx1ZSlcbiAgICApXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZWFkU291cmNlcyBtdXN0IGJlIGEgYm9vbGVhbiBvciBhbiBvYmplY3Qgd2l0aCBsaW1pdHMnKTtcbiAgICAvLyBDYXB0dXJlIGEgcGxhaW4gaW1tdXRhYmxlIHNldHRpbmdzIHNuYXBzaG90OyBubyBhcHAgZ2V0dGVyIHJ1bnMgYW5kIGxhdGVyIGVkaXRzIGNhbm5vdCByZXNpemUgYSBydW4uXG4gICAgY29uc3QgY29waWVkOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBjb25zdCBmaWVsZHM6IHJlYWRvbmx5IChrZXlvZiBSZWFkU291cmNlTGltaXRzKVtdID0gW1xuICAgICAgJ21heE9jY3VycmVuY2VzJyxcbiAgICAgICdtYXhQZXJFeGVjdXRpb24nLFxuICAgICAgJ21heEJ5dGVzJyxcbiAgICAgICdtYXhPcmlnaW5zJyxcbiAgICAgICdtYXhTdGFnaW5nJyxcbiAgICBdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGZpZWxkcykge1xuICAgICAgY29uc3QgbGltaXQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGxpbWl0cy52YWx1ZSwga2V5KTtcbiAgICAgIGlmICghbGltaXQpIGNvbnRpbnVlO1xuICAgICAgaWYgKCFPYmplY3QuaGFzT3duKGxpbWl0LCAndmFsdWUnKSkgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVhZFNvdXJjZXMgbGltaXRzIG11c3QgYmUgcGxhaW4gdmFsdWVzJyk7XG4gICAgICBjb3BpZWRba2V5XSA9IGxpbWl0LnZhbHVlO1xuICAgIH1cbiAgICBkaWFscy5yZWFkU291cmNlcyA9IE9iamVjdC5mcmVlemUoeyBsaW1pdHM6IE9iamVjdC5mcmVlemUoY29waWVkKSB9KTtcbiAgfVxuICBpZiAob3B0cy5jYXB0dXJlQ292ZXJhZ2UgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0cy5jYXB0dXJlQ292ZXJhZ2UgIT09ICdib29sZWFuJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NhcHR1cmVDb3ZlcmFnZSBtdXN0IGJlIGEgYm9vbGVhbicpO1xuICB9XG4gIGNvbnN0IHNpbmsgPSBvcHRzLnNpbmsgIT09IHVuZGVmaW5lZCA/IHJlc29sdmVSZWNvcmRTaW5rKG9wdHMuc2luaykgOiB1bmRlZmluZWQ7XG4gIGlmIChzaW5rPy5jYXB0dXJlICYmIG9wdHMuY2FwdHVyZUNvdmVyYWdlICE9PSB0cnVlKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpbmsuY2FwdHVyZSByZXF1aXJlcyBjYXB0dXJlQ292ZXJhZ2U6IHRydWUnKTtcbiAgcmV0dXJuIHtcbiAgICBmbG93Q2hhcnQsXG4gICAgc2NvcGVGYWN0b3J5OiBvcHRzLnNjb3BlRmFjdG9yeSA/PyBmbG93Q2hhcnQuc2NvcGVGYWN0b3J5ID8/IChkZWZhdWx0U2NvcGVGYWN0b3J5IGFzIFNjb3BlRmFjdG9yeTxUU2NvcGU+KSxcbiAgICBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dDogb3B0cy5kZWZhdWx0VmFsdWVzRm9yQ29udGV4dCxcbiAgICBpbml0aWFsQ29udGV4dDogb3B0cy5pbml0aWFsQ29udGV4dCxcbiAgICByZWFkT25seUNvbnRleHQ6IG9wdHMucmVhZE9ubHlDb250ZXh0LFxuICAgIHRocm90dGxpbmdFcnJvckNoZWNrZXI6IG9wdHMudGhyb3R0bGluZ0Vycm9yQ2hlY2tlcixcbiAgICBzdHJlYW1IYW5kbGVyczogb3B0cy5zdHJlYW1IYW5kbGVycyxcbiAgICBzY29wZVByb3RlY3Rpb25Nb2RlOiBvcHRzLnNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gICAgZGlhbHMsXG4gICAgLi4uKG9wdHMuY2FwdHVyZUNvdmVyYWdlID09PSB0cnVlICYmIHsgY2FwdHVyZUNvdmVyYWdlOiB0cnVlIH0pLFxuICAgIC4uLihzaW5rICYmIHsgc2luayB9KSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { CommitBundle, StoredRecordLimits } from 'foottrace';
|
|
2
|
+
import type { CaptureHistoryReceipt } from '../capture/historyTypes.js';
|
|
3
|
+
import type { NativeCaptureNote } from '../capture/nativeCoverage.js';
|
|
4
|
+
import type { StageSnapshot } from '../memory/frameTypes.js';
|
|
5
|
+
import type { RecorderSnapshot } from './ExecutionRuntime.js';
|
|
6
|
+
/** Engine history whose storage evidence matched. Channels and native limitations retain their original meanings. */
|
|
7
|
+
export interface StoredCaptureHistory {
|
|
8
|
+
readonly runId: string;
|
|
9
|
+
readonly capture: NativeCaptureNote;
|
|
10
|
+
readonly executionTree: StageSnapshot;
|
|
11
|
+
/**
|
|
12
|
+
* Sorted literal paths of own undefined stageReads/stageWrites entries omitted by JSON.
|
|
13
|
+
* Read alongside executionTree; this is not proof that the underlying state key never existed.
|
|
14
|
+
* At most 4096 paths of 256 segments, within the evidence byte limit. No entries are truncated.
|
|
15
|
+
*/
|
|
16
|
+
readonly absent?: readonly (readonly string[])[];
|
|
17
|
+
readonly recorders?: readonly RecorderSnapshot[];
|
|
18
|
+
readonly commitLog: readonly CommitBundle[];
|
|
19
|
+
readonly initialState?: Record<string, unknown>;
|
|
20
|
+
readonly receipt: CaptureHistoryReceipt;
|
|
21
|
+
}
|
|
22
|
+
export type StoredCaptureResult = {
|
|
23
|
+
readonly status: 'acknowledged';
|
|
24
|
+
readonly history: StoredCaptureHistory;
|
|
25
|
+
} | {
|
|
26
|
+
readonly status: 'unknown';
|
|
27
|
+
readonly reason: string;
|
|
28
|
+
readonly history?: never;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Read authorized stored entries using Foottrace's sequence/gap checks, then validate FootPrint's opaque metadata.
|
|
32
|
+
* A receipt is a host-adapter assertion, not a signature. Callers still own storage authorization and trust.
|
|
33
|
+
* Never performs causal analysis or upgrades partial native capture to complete.
|
|
34
|
+
*/
|
|
35
|
+
export declare function readStoredCapture(entries: Iterable<unknown>, options: {
|
|
36
|
+
runId: string;
|
|
37
|
+
limits?: StoredRecordLimits;
|
|
38
|
+
maxBytes?: number;
|
|
39
|
+
}): Promise<StoredCaptureResult>;
|