@workflow/core 5.0.0-beta.42 → 5.0.0-beta.44
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/capabilities.d.ts +4 -4
- package/dist/capabilities.js +5 -5
- package/dist/capture-stack.d.ts +1 -1
- package/dist/capture-stack.js +2 -2
- package/dist/class-serialization.d.ts +8 -8
- package/dist/class-serialization.js +9 -9
- package/dist/classify-error.js +5 -5
- package/dist/context-violation-error.d.ts +5 -5
- package/dist/context-violation-error.d.ts.map +1 -1
- package/dist/context-violation-error.js +5 -5
- package/dist/create-hook.d.ts +10 -6
- package/dist/create-hook.d.ts.map +1 -1
- package/dist/create-hook.js +1 -1
- package/dist/define-hook.js +2 -2
- package/dist/describe-error.d.ts +7 -7
- package/dist/describe-error.js +8 -8
- package/dist/encryption.d.ts +5 -5
- package/dist/encryption.js +7 -7
- package/dist/events-consumer.d.ts +19 -7
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +33 -12
- package/dist/flushable-stream.d.ts +4 -4
- package/dist/flushable-stream.js +12 -12
- package/dist/global.d.ts +1 -1
- package/dist/global.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/log-format.d.ts +2 -2
- package/dist/log-format.js +5 -5
- package/dist/logger.js +4 -4
- package/dist/private.d.ts +39 -64
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +294 -48
- package/dist/replay-payload-cache.d.ts +1 -1
- package/dist/replay-payload-cache.js +4 -4
- package/dist/runtime/compute-instance.d.ts +4 -3
- package/dist/runtime/compute-instance.d.ts.map +1 -1
- package/dist/runtime/compute-instance.js +5 -4
- package/dist/runtime/constants.d.ts +46 -19
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +76 -38
- package/dist/runtime/count-step-started-events.d.ts +7 -7
- package/dist/runtime/count-step-started-events.js +4 -4
- package/dist/runtime/deployment-guard.d.ts +7 -7
- package/dist/runtime/deployment-guard.js +8 -8
- package/dist/runtime/get-port-lazy.d.ts +2 -2
- package/dist/runtime/get-port-lazy.d.ts.map +1 -1
- package/dist/runtime/get-port-lazy.js +37 -30
- package/dist/runtime/get-world-lazy.d.ts +2 -2
- package/dist/runtime/get-world-lazy.js +3 -3
- package/dist/runtime/helpers.d.ts +18 -18
- package/dist/runtime/helpers.js +27 -27
- package/dist/runtime/quickjs-entrypoint.d.ts +23 -10
- package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -1
- package/dist/runtime/quickjs-entrypoint.js +200 -81
- package/dist/runtime/quickjs-runtime.d.ts +31 -15
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -1
- package/dist/runtime/quickjs-runtime.js +126 -77
- package/dist/runtime/quickjs-serde.d.ts +10 -10
- package/dist/runtime/quickjs-serde.js +20 -20
- package/dist/runtime/replay-budget.d.ts +4 -4
- package/dist/runtime/replay-budget.js +5 -5
- package/dist/runtime/replay-recovery-reporter.d.ts +1 -1
- package/dist/runtime/replay-recovery-reporter.js +2 -2
- package/dist/runtime/resume-hook.d.ts +2 -2
- package/dist/runtime/resume-hook.js +27 -27
- package/dist/runtime/resume-latency.d.ts +25 -25
- package/dist/runtime/resume-latency.d.ts.map +1 -1
- package/dist/runtime/resume-latency.js +4 -4
- package/dist/runtime/run-id-time.d.ts +2 -2
- package/dist/runtime/run-id-time.js +5 -5
- package/dist/runtime/run.d.ts +21 -4
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +154 -35
- package/dist/runtime/runs.d.ts +4 -4
- package/dist/runtime/runs.js +2 -2
- package/dist/runtime/start.d.ts +3 -3
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +27 -23
- package/dist/runtime/step-executor.d.ts +59 -11
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +116 -42
- package/dist/runtime/step-latency.d.ts +20 -14
- package/dist/runtime/step-latency.d.ts.map +1 -1
- package/dist/runtime/step-latency.js +13 -11
- package/dist/runtime/step-ownership.d.ts +6 -6
- package/dist/runtime/step-ownership.js +8 -8
- package/dist/runtime/step-single-flight.d.ts +1 -1
- package/dist/runtime/step-single-flight.d.ts.map +1 -1
- package/dist/runtime/step-single-flight.js +17 -11
- package/dist/runtime/suspension-handler.d.ts +99 -7
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +678 -57
- package/dist/runtime/unserializable-step.d.ts +34 -0
- package/dist/runtime/unserializable-step.d.ts.map +1 -0
- package/dist/runtime/unserializable-step.js +52 -0
- package/dist/runtime/vm-mode.d.ts +1 -1
- package/dist/runtime/vm-mode.js +2 -2
- package/dist/runtime/wait-continuation.d.ts +31 -9
- package/dist/runtime/wait-continuation.d.ts.map +1 -1
- package/dist/runtime/wait-continuation.js +44 -13
- package/dist/runtime/wait-until.d.ts +1 -1
- package/dist/runtime/wait-until.js +2 -2
- package/dist/runtime/world-compatibility.d.ts +20 -9
- package/dist/runtime/world-compatibility.d.ts.map +1 -1
- package/dist/runtime/world-compatibility.js +24 -13
- package/dist/runtime/world-init.d.ts +5 -5
- package/dist/runtime/world-init.js +6 -6
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +13 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +417 -213
- package/dist/sealed-box.d.ts +7 -7
- package/dist/sealed-box.js +15 -15
- package/dist/serialization/client.js +2 -2
- package/dist/serialization/codec-devalue-vm.d.ts +1 -1
- package/dist/serialization/codec-devalue-vm.js +4 -4
- package/dist/serialization/codec-devalue.d.ts +1 -1
- package/dist/serialization/codec-devalue.js +2 -2
- package/dist/serialization/codec.d.ts +4 -4
- package/dist/serialization/codec.js +2 -2
- package/dist/serialization/compression.d.ts +12 -11
- package/dist/serialization/compression.d.ts.map +1 -1
- package/dist/serialization/compression.js +16 -15
- package/dist/serialization/encryption.d.ts +7 -7
- package/dist/serialization/encryption.d.ts.map +1 -1
- package/dist/serialization/encryption.js +8 -8
- package/dist/serialization/errors.js +2 -2
- package/dist/serialization/format.d.ts +6 -6
- package/dist/serialization/format.js +7 -7
- package/dist/serialization/hardened.d.ts +18 -18
- package/dist/serialization/hardened.d.ts.map +1 -1
- package/dist/serialization/hardened.js +41 -32
- package/dist/serialization/index.d.ts +1 -1
- package/dist/serialization/index.js +2 -2
- package/dist/serialization/reducers/class-vm.d.ts +1 -1
- package/dist/serialization/reducers/class-vm.js +2 -2
- package/dist/serialization/reducers/class.js +2 -2
- package/dist/serialization/reducers/common-vm.js +12 -12
- package/dist/serialization/reducers/common.js +12 -12
- package/dist/serialization/reducers/step-function-vm.d.ts +1 -1
- package/dist/serialization/reducers/step-function-vm.js +2 -2
- package/dist/serialization/reducers/step-function.js +2 -2
- package/dist/serialization/step.js +2 -2
- package/dist/serialization/types.d.ts +5 -5
- package/dist/serialization/types.js +2 -2
- package/dist/serialization/workflow-vm.d.ts +1 -1
- package/dist/serialization/workflow-vm.d.ts.map +1 -1
- package/dist/serialization/workflow-vm.js +13 -10
- package/dist/serialization-format.d.ts +11 -11
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +29 -23
- package/dist/serialization.d.ts +20 -12
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +141 -99
- package/dist/set-attributes.js +2 -2
- package/dist/source-map.d.ts +1 -1
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +18 -12
- package/dist/step/context-storage.d.ts +5 -5
- package/dist/step/context-storage.js +1 -1
- package/dist/step/writable-stream.d.ts +3 -3
- package/dist/step/writable-stream.js +7 -7
- package/dist/step.js +12 -12
- package/dist/symbols.d.ts +2 -2
- package/dist/symbols.js +3 -3
- package/dist/telemetry/semantic-conventions.d.ts +21 -13
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +21 -15
- package/dist/telemetry.d.ts +9 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +40 -10
- package/dist/test-support/orchestrator-context.d.ts.map +1 -1
- package/dist/test-support/orchestrator-context.js +12 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/index.js +4 -4
- package/dist/vm/script-cache.d.ts.map +1 -1
- package/dist/vm/script-cache.js +23 -17
- package/dist/vm/uint8array-base64.js +1 -1
- package/dist/workflow/abort-controller.d.ts +1 -1
- package/dist/workflow/abort-controller.js +12 -12
- package/dist/workflow/create-hook.js +3 -3
- package/dist/workflow/get-workflow-metadata.js +2 -2
- package/dist/workflow/hook.js +18 -18
- package/dist/workflow/set-attributes.d.ts +1 -1
- package/dist/workflow/set-attributes.js +2 -2
- package/dist/workflow/sleep.js +2 -2
- package/dist/workflow/world-init-stub.d.ts +1 -1
- package/dist/workflow/world-init-stub.js +2 -2
- package/dist/workflow.d.ts +2 -2
- package/dist/workflow.js +36 -14
- package/docs/api-reference/create-hook.mdx +15 -15
- package/docs/api-reference/create-webhook.mdx +15 -15
- package/docs/api-reference/define-hook.mdx +10 -10
- package/docs/api-reference/fatal-error.mdx +2 -2
- package/docs/api-reference/fetch.mdx +7 -7
- package/docs/api-reference/get-step-metadata.mdx +2 -2
- package/docs/api-reference/get-workflow-metadata.mdx +3 -3
- package/docs/api-reference/get-writable.mdx +7 -7
- package/docs/api-reference/index.mdx +1 -1
- package/docs/api-reference/retryable-error.mdx +1 -1
- package/docs/api-reference/set-attributes.mdx +2 -2
- package/docs/api-reference/sleep.mdx +3 -3
- package/docs/foundations/cancellation.mdx +31 -31
- package/docs/foundations/errors-and-retries.mdx +42 -11
- package/docs/foundations/hooks.mdx +37 -37
- package/docs/foundations/idempotency.mdx +9 -9
- package/docs/foundations/serialization.mdx +21 -22
- package/docs/foundations/starting-workflows.mdx +36 -37
- package/docs/foundations/streaming.mdx +68 -39
- package/docs/foundations/versioning.mdx +3 -3
- package/docs/foundations/workflows-and-steps.mdx +9 -9
- package/docs/how-it-works/cancellation.mdx +62 -62
- package/docs/how-it-works/code-transform.mdx +66 -54
- package/docs/how-it-works/encryption.mdx +25 -21
- package/docs/how-it-works/event-sourcing.mdx +84 -28
- package/docs/how-it-works/framework-integrations.mdx +12 -12
- package/docs/how-it-works/understanding-directives.mdx +21 -21
- package/package.json +7 -7
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* reducers (serialize) and revivers (deserialize) which are composed
|
|
6
6
|
* internally based on the serialization mode.
|
|
7
7
|
*
|
|
8
|
-
* The reducer/reviver pattern is specific to devalue
|
|
8
|
+
* The reducer/reviver pattern is specific to devalue: other codecs
|
|
9
9
|
* (CBOR, JSON) would handle types differently (e.g. CBOR supports Date,
|
|
10
10
|
* typed arrays, Map, Set natively).
|
|
11
11
|
*/
|
|
@@ -113,4 +113,4 @@ export const devalueCodec = {
|
|
|
113
113
|
return unflatten(data, revivers, parseOptions);
|
|
114
114
|
},
|
|
115
115
|
};
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMtZGV2YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL2NvZGVjLWRldmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUVILE9BQU8sRUFDTCxzQkFBc0IsRUFFdEIsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxTQUFTLENBQUM7QUFFakIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsc0JBQXNCLEdBQ3ZCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFnQyxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUvRSxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEMsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLENBQUM7QUFFeEMsTUFBTSxZQUFZLEdBQUc7SUFDbkIsVUFBVSxFQUFFO1FBQ1YsaUJBQWlCLENBQUMsTUFBTTtZQUN0QixJQUFJLE1BQU0sR0FBRyx1QkFBdUIsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLElBQUksVUFBVSxDQUNsQix1QkFBdUIsTUFBTSwyQkFBMkIsdUJBQXVCLEVBQUUsQ0FDbEYsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELENBQUM7S0FDRjtDQUNxQixDQUFDO0FBRXpCLGlEQUFpRDtBQUVqRCxTQUFTLGtCQUFrQixDQUN6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RUFDdkIsT0FBc0I7UUFFdEIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQ2pDLElBQUksRUFDSixPQUFPLEVBQUUsTUFBTSxFQUNmLE9BQU8sRUFBRSxhQUFhLENBQ3ZCLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGlCQUFpQixDQUNmLElBQWEsRUFDYixJQUF1QixFQUN2QixPQUFzQjtRQUV0QixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FDakMsSUFBSSxFQUNKLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLGFBQWEsQ0FDdkIsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDLElBQWEsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERldmFsdWUgY29kZWMgaW1wbGVtZW50YXRpb24uXG4gKlxuICogVXNlcyB0aGUgYGRldmFsdWVgIGxpYnJhcnkgZm9yIHNlcmlhbGl6YXRpb24uIEhhbmRsZXMgY3VzdG9tIHR5cGVzIHZpYVxuICogcmVkdWNlcnMgKHNlcmlhbGl6ZSkgYW5kIHJldml2ZXJzIChkZXNlcmlhbGl6ZSkgd2hpY2ggYXJlIGNvbXBvc2VkXG4gKiBpbnRlcm5hbGx5IGJhc2VkIG9uIHRoZSBzZXJpYWxpemF0aW9uIG1vZGUuXG4gKlxuICogVGhlIHJlZHVjZXIvcmV2aXZlciBwYXR0ZXJuIGlzIHNwZWNpZmljIHRvIGRldmFsdWUg4oCUIG90aGVyIGNvZGVjc1xuICogKENCT1IsIEpTT04pIHdvdWxkIGhhbmRsZSB0eXBlcyBkaWZmZXJlbnRseSAoZS5nLiBDQk9SIHN1cHBvcnRzIERhdGUsXG4gKiB0eXBlZCBhcnJheXMsIE1hcCwgU2V0IG5hdGl2ZWx5KS5cbiAqL1xuXG5pbXBvcnQge1xuICBkZWZhdWx0UGFyc2VPcGVyYXRpb25zLFxuICB0eXBlIFBhcnNlT3B0aW9ucyxcbiAgcGFyc2UsXG4gIHN0cmluZ2lmeSxcbiAgdW5mbGF0dGVuLFxufSBmcm9tICdkZXZhbHVlJztcbmltcG9ydCB0eXBlIHsgQ29kZWMsIENvZGVjT3B0aW9ucywgU2VyaWFsaXphdGlvbk1vZGUgfSBmcm9tICcuL2NvZGVjLmpzJztcbmltcG9ydCB7IGhhcmRlbmVkU3RyaW5naWZ5T3BlcmF0aW9ucywgd2l0aEd1ZXN0Q29kZVN0YXRzIH0gZnJvbSAnLi9oYXJkZW5lZC5qcyc7XG5pbXBvcnQgeyBnZXRDbGFzc1JlZHVjZXJzLCBnZXRDbGFzc1Jldml2ZXJzIH0gZnJvbSAnLi9yZWR1Y2Vycy9jbGFzcy5qcyc7XG5pbXBvcnQgeyBnZXRDb21tb25SZWR1Y2VycywgZ2V0Q29tbW9uUmV2aXZlcnMgfSBmcm9tICcuL3JlZHVjZXJzL2NvbW1vbi5qcyc7XG5pbXBvcnQge1xuICBnZXRTdGVwRnVuY3Rpb25SZWR1Y2VyLFxuICBnZXRTdGVwRnVuY3Rpb25SZXZpdmVyLFxufSBmcm9tICcuL3JlZHVjZXJzL3N0ZXAtZnVuY3Rpb24uanMnO1xuaW1wb3J0IHsgdHlwZSBSZWR1Y2VycywgdHlwZSBSZXZpdmVycywgU2VyaWFsaXphdGlvbkZvcm1hdCB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5jb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5jb25zdCBNQVhfU1BBUlNFX0FSUkFZX0xFTkdUSCA9IDEwMF8wMDA7XG5cbmNvbnN0IHBhcnNlT3B0aW9ucyA9IHtcbiAgb3BlcmF0aW9uczoge1xuICAgIGNyZWF0ZVNwYXJzZUFycmF5KGxlbmd0aCkge1xuICAgICAgaWYgKGxlbmd0aCA+IE1BWF9TUEFSU0VfQVJSQVlfTEVOR1RIKSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFxuICAgICAgICAgIGBTcGFyc2UgYXJyYXkgbGVuZ3RoICR7bGVuZ3RofSBleGNlZWRzIHRoZSBtYXhpbXVtIG9mICR7TUFYX1NQQVJTRV9BUlJBWV9MRU5HVEh9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlZmF1bHRQYXJzZU9wZXJhdGlvbnMuY3JlYXRlU3BhcnNlQXJyYXkobGVuZ3RoKTtcbiAgICB9LFxuICB9LFxufSBzYXRpc2ZpZXMgUGFyc2VPcHRpb25zO1xuXG4vLyAtLS0tIFJlZHVjZXIvUmV2aXZlciBjb21wb3NpdGlvbiBwZXIgbW9kZSAtLS0tXG5cbmZ1bmN0aW9uIGdldFJlZHVjZXJzRm9yTW9kZShcbiAgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUsXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXMsXG4gIGV4dHJhUmVkdWNlcnM/OiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PlxuKTogUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT4ge1xuICBsZXQgYmFzZTogUGFydGlhbDxSZWR1Y2Vycz47XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ3dvcmtmbG93JzpcbiAgICAgIC8vIENsYXNzL0luc3RhbmNlIE1VU1QgY29tZSBiZWZvcmUgY29tbW9uIChmaXJzdC1tYXRjaC13aW5zIGZvciBFcnJvciBzdWJjbGFzc2VzKVxuICAgICAgYmFzZSA9IHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZWR1Y2VycygpLFxuICAgICAgICAuLi5nZXRTdGVwRnVuY3Rpb25SZWR1Y2VyKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICBiYXNlID0ge1xuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnY2xpZW50JzpcbiAgICAgIGJhc2UgPSB7XG4gICAgICAgIC4uLmdldENsYXNzUmVkdWNlcnMoKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmVkdWNlcnMoZ2xvYmFsKSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgfVxuICBpZiAoZXh0cmFSZWR1Y2Vycykge1xuICAgIHJldHVybiB7IC4uLmJhc2UsIC4uLmV4dHJhUmVkdWNlcnMgfSBhcyBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PjtcbiAgfVxuICByZXR1cm4gYmFzZSBhcyBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55Pjtcbn1cblxuZnVuY3Rpb24gZ2V0UmV2aXZlcnNGb3JNb2RlKFxuICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gZ2xvYmFsVGhpcyxcbiAgZXh0cmFSZXZpdmVycz86IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+XG4pOiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PiB7XG4gIGxldCBiYXNlOiBQYXJ0aWFsPFJldml2ZXJzPjtcbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSAnd29ya2Zsb3cnOlxuICAgICAgYmFzZSA9IHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZXZpdmVycyhnbG9iYWwpLFxuICAgICAgICAuLi5nZXRTdGVwRnVuY3Rpb25SZXZpdmVyKGdsb2JhbCksXG4gICAgICAgIC4uLmdldENvbW1vblJldml2ZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICBiYXNlID0ge1xuICAgICAgICAuLi5nZXRDbGFzc1Jldml2ZXJzKGdsb2JhbCksXG4gICAgICAgIC4uLmdldENvbW1vblJldml2ZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnY2xpZW50JzpcbiAgICAgIGJhc2UgPSB7XG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoZ2xvYmFsKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmV2aXZlcnMoZ2xvYmFsKSxcbiAgICAgICAgU3RlcEZ1bmN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1N0ZXAgZnVuY3Rpb25zIGNhbm5vdCBiZSBkZXNlcmlhbGl6ZWQgaW4gY2xpZW50IGNvbnRleHQuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaWYgKGV4dHJhUmV2aXZlcnMpIHtcbiAgICByZXR1cm4geyAuLi5iYXNlLCAuLi5leHRyYVJldml2ZXJzIH0gYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT47XG4gIH1cbiAgcmV0dXJuIGJhc2UgYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT47XG59XG5cbi8vIC0tLS0gQ29kZWMgaW1wbGVtZW50YXRpb24gLS0tLVxuXG5leHBvcnQgY29uc3QgZGV2YWx1ZUNvZGVjOiBDb2RlYyA9IHtcbiAgZm9ybWF0UHJlZml4OiBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEsXG5cbiAgc2VyaWFsaXplKFxuICAgIHZhbHVlOiB1bmtub3duLFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogVWludDhBcnJheSB7XG4gICAgY29uc3QgcmVkdWNlcnMgPSBnZXRSZWR1Y2Vyc0Zvck1vZGUoXG4gICAgICBtb2RlLFxuICAgICAgb3B0aW9ucz8uZ2xvYmFsLFxuICAgICAgb3B0aW9ucz8uZXh0cmFSZWR1Y2Vyc1xuICAgICk7XG4gICAgLy8gSGFyZGVuZWQgb3BlcmF0aW9uczogZGV2YWx1ZSdzIG93biBpbnRyb3NwZWN0aW9uIChjbGFzc2lmaWNhdGlvbixcbiAgICAvLyBidWlsdC1pbiBleHRyYWN0aW9uLCBwcm9wZXJ0eSByZWFkcykgZ29lcyB0aHJvdWdoIGNhcHR1cmVkIGhvc3RcbiAgICAvLyBpbnRyaW5zaWNzIGFuZCBkZXNjcmlwdG9yIHJlYWRzLCBzbyBzZXJpYWxpemluZyBhIHZhbHVlIGNvbnN0cnVjdGVkXG4gICAgLy8gaW5zaWRlIGEgd29ya2Zsb3cgVk0gY2Fubm90IGV4ZWN1dGUgc2FuZGJveCBjb2RlIGJlaGluZCBvdXIgYmFjay5cbiAgICAvLyBXaGVyZSB3b3JrZmxvdyBjb2RlIG11c3QgcnVuIChnZXR0ZXJzLCBwcm94aWVzLCBjdXN0b20gc2VyaWFsaXplcnMpLFxuICAgIC8vIHRoZSBleGVjdXRpb24gaXMgcmVjb3JkZWQgaW50byBgb3B0aW9ucy5ndWVzdENvZGVTdGF0c2AuXG4gICAgY29uc3Qgc3RyID0gd2l0aEd1ZXN0Q29kZVN0YXRzKG9wdGlvbnM/Lmd1ZXN0Q29kZVN0YXRzLCAoKSA9PlxuICAgICAgc3RyaW5naWZ5KHZhbHVlLCByZWR1Y2VycywgeyBvcGVyYXRpb25zOiBoYXJkZW5lZFN0cmluZ2lmeU9wZXJhdGlvbnMgfSlcbiAgICApO1xuICAgIHJldHVybiBlbmNvZGVyLmVuY29kZShzdHIpO1xuICB9LFxuXG4gIGRlc2VyaWFsaXplKFxuICAgIGRhdGE6IFVpbnQ4QXJyYXksXG4gICAgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUsXG4gICAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuICApOiB1bmtub3duIHtcbiAgICBjb25zdCByZXZpdmVycyA9IGdldFJldml2ZXJzRm9yTW9kZShcbiAgICAgIG1vZGUsXG4gICAgICBvcHRpb25zPy5nbG9iYWwsXG4gICAgICBvcHRpb25zPy5leHRyYVJldml2ZXJzXG4gICAgKTtcbiAgICBjb25zdCBzdHIgPSBkZWNvZGVyLmRlY29kZShkYXRhKTtcbiAgICByZXR1cm4gcGFyc2Uoc3RyLCByZXZpdmVycywgcGFyc2VPcHRpb25zKTtcbiAgfSxcblxuICBkZXNlcmlhbGl6ZUxlZ2FjeShcbiAgICBkYXRhOiB1bmtub3duLFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogdW5rbm93biB7XG4gICAgY29uc3QgcmV2aXZlcnMgPSBnZXRSZXZpdmVyc0Zvck1vZGUoXG4gICAgICBtb2RlLFxuICAgICAgb3B0aW9ucz8uZ2xvYmFsLFxuICAgICAgb3B0aW9ucz8uZXh0cmFSZXZpdmVyc1xuICAgICk7XG4gICAgcmV0dXJuIHVuZmxhdHRlbihkYXRhIGFzIGFueVtdLCByZXZpdmVycywgcGFyc2VPcHRpb25zKTtcbiAgfSxcbn07XG4iXX0=
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMtZGV2YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL2NvZGVjLWRldmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUVILE9BQU8sRUFDTCxzQkFBc0IsRUFFdEIsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxTQUFTLENBQUM7QUFFakIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsc0JBQXNCLEdBQ3ZCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFnQyxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUvRSxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEMsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLENBQUM7QUFFeEMsTUFBTSxZQUFZLEdBQUc7SUFDbkIsVUFBVSxFQUFFO1FBQ1YsaUJBQWlCLENBQUMsTUFBTTtZQUN0QixJQUFJLE1BQU0sR0FBRyx1QkFBdUIsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLElBQUksVUFBVSxDQUNsQix1QkFBdUIsTUFBTSwyQkFBMkIsdUJBQXVCLEVBQUUsQ0FDbEYsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELENBQUM7S0FDRjtDQUNxQixDQUFDO0FBRXpCLGlEQUFpRDtBQUVqRCxTQUFTLGtCQUFrQixDQUN6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RUFDdkIsT0FBc0I7UUFFdEIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQ2pDLElBQUksRUFDSixPQUFPLEVBQUUsTUFBTSxFQUNmLE9BQU8sRUFBRSxhQUFhLENBQ3ZCLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGlCQUFpQixDQUNmLElBQWEsRUFDYixJQUF1QixFQUN2QixPQUFzQjtRQUV0QixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FDakMsSUFBSSxFQUNKLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLGFBQWEsQ0FDdkIsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDLElBQWEsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERldmFsdWUgY29kZWMgaW1wbGVtZW50YXRpb24uXG4gKlxuICogVXNlcyB0aGUgYGRldmFsdWVgIGxpYnJhcnkgZm9yIHNlcmlhbGl6YXRpb24uIEhhbmRsZXMgY3VzdG9tIHR5cGVzIHZpYVxuICogcmVkdWNlcnMgKHNlcmlhbGl6ZSkgYW5kIHJldml2ZXJzIChkZXNlcmlhbGl6ZSkgd2hpY2ggYXJlIGNvbXBvc2VkXG4gKiBpbnRlcm5hbGx5IGJhc2VkIG9uIHRoZSBzZXJpYWxpemF0aW9uIG1vZGUuXG4gKlxuICogVGhlIHJlZHVjZXIvcmV2aXZlciBwYXR0ZXJuIGlzIHNwZWNpZmljIHRvIGRldmFsdWU6IG90aGVyIGNvZGVjc1xuICogKENCT1IsIEpTT04pIHdvdWxkIGhhbmRsZSB0eXBlcyBkaWZmZXJlbnRseSAoZS5nLiBDQk9SIHN1cHBvcnRzIERhdGUsXG4gKiB0eXBlZCBhcnJheXMsIE1hcCwgU2V0IG5hdGl2ZWx5KS5cbiAqL1xuXG5pbXBvcnQge1xuICBkZWZhdWx0UGFyc2VPcGVyYXRpb25zLFxuICB0eXBlIFBhcnNlT3B0aW9ucyxcbiAgcGFyc2UsXG4gIHN0cmluZ2lmeSxcbiAgdW5mbGF0dGVuLFxufSBmcm9tICdkZXZhbHVlJztcbmltcG9ydCB0eXBlIHsgQ29kZWMsIENvZGVjT3B0aW9ucywgU2VyaWFsaXphdGlvbk1vZGUgfSBmcm9tICcuL2NvZGVjLmpzJztcbmltcG9ydCB7IGhhcmRlbmVkU3RyaW5naWZ5T3BlcmF0aW9ucywgd2l0aEd1ZXN0Q29kZVN0YXRzIH0gZnJvbSAnLi9oYXJkZW5lZC5qcyc7XG5pbXBvcnQgeyBnZXRDbGFzc1JlZHVjZXJzLCBnZXRDbGFzc1Jldml2ZXJzIH0gZnJvbSAnLi9yZWR1Y2Vycy9jbGFzcy5qcyc7XG5pbXBvcnQgeyBnZXRDb21tb25SZWR1Y2VycywgZ2V0Q29tbW9uUmV2aXZlcnMgfSBmcm9tICcuL3JlZHVjZXJzL2NvbW1vbi5qcyc7XG5pbXBvcnQge1xuICBnZXRTdGVwRnVuY3Rpb25SZWR1Y2VyLFxuICBnZXRTdGVwRnVuY3Rpb25SZXZpdmVyLFxufSBmcm9tICcuL3JlZHVjZXJzL3N0ZXAtZnVuY3Rpb24uanMnO1xuaW1wb3J0IHsgdHlwZSBSZWR1Y2VycywgdHlwZSBSZXZpdmVycywgU2VyaWFsaXphdGlvbkZvcm1hdCB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5jb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5jb25zdCBNQVhfU1BBUlNFX0FSUkFZX0xFTkdUSCA9IDEwMF8wMDA7XG5cbmNvbnN0IHBhcnNlT3B0aW9ucyA9IHtcbiAgb3BlcmF0aW9uczoge1xuICAgIGNyZWF0ZVNwYXJzZUFycmF5KGxlbmd0aCkge1xuICAgICAgaWYgKGxlbmd0aCA+IE1BWF9TUEFSU0VfQVJSQVlfTEVOR1RIKSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFxuICAgICAgICAgIGBTcGFyc2UgYXJyYXkgbGVuZ3RoICR7bGVuZ3RofSBleGNlZWRzIHRoZSBtYXhpbXVtIG9mICR7TUFYX1NQQVJTRV9BUlJBWV9MRU5HVEh9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlZmF1bHRQYXJzZU9wZXJhdGlvbnMuY3JlYXRlU3BhcnNlQXJyYXkobGVuZ3RoKTtcbiAgICB9LFxuICB9LFxufSBzYXRpc2ZpZXMgUGFyc2VPcHRpb25zO1xuXG4vLyAtLS0tIFJlZHVjZXIvUmV2aXZlciBjb21wb3NpdGlvbiBwZXIgbW9kZSAtLS0tXG5cbmZ1bmN0aW9uIGdldFJlZHVjZXJzRm9yTW9kZShcbiAgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUsXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXMsXG4gIGV4dHJhUmVkdWNlcnM/OiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PlxuKTogUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT4ge1xuICBsZXQgYmFzZTogUGFydGlhbDxSZWR1Y2Vycz47XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ3dvcmtmbG93JzpcbiAgICAgIC8vIENsYXNzL0luc3RhbmNlIE1VU1QgY29tZSBiZWZvcmUgY29tbW9uIChmaXJzdC1tYXRjaC13aW5zIGZvciBFcnJvciBzdWJjbGFzc2VzKVxuICAgICAgYmFzZSA9IHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZWR1Y2VycygpLFxuICAgICAgICAuLi5nZXRTdGVwRnVuY3Rpb25SZWR1Y2VyKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICBiYXNlID0ge1xuICAgICAgICAuLi5nZXRDbGFzc1JlZHVjZXJzKCksXG4gICAgICAgIC4uLmdldENvbW1vblJlZHVjZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnY2xpZW50JzpcbiAgICAgIGJhc2UgPSB7XG4gICAgICAgIC4uLmdldENsYXNzUmVkdWNlcnMoKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmVkdWNlcnMoZ2xvYmFsKSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgfVxuICBpZiAoZXh0cmFSZWR1Y2Vycykge1xuICAgIHJldHVybiB7IC4uLmJhc2UsIC4uLmV4dHJhUmVkdWNlcnMgfSBhcyBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PjtcbiAgfVxuICByZXR1cm4gYmFzZSBhcyBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55Pjtcbn1cblxuZnVuY3Rpb24gZ2V0UmV2aXZlcnNGb3JNb2RlKFxuICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gZ2xvYmFsVGhpcyxcbiAgZXh0cmFSZXZpdmVycz86IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+XG4pOiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PiB7XG4gIGxldCBiYXNlOiBQYXJ0aWFsPFJldml2ZXJzPjtcbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSAnd29ya2Zsb3cnOlxuICAgICAgYmFzZSA9IHtcbiAgICAgICAgLi4uZ2V0Q2xhc3NSZXZpdmVycyhnbG9iYWwpLFxuICAgICAgICAuLi5nZXRTdGVwRnVuY3Rpb25SZXZpdmVyKGdsb2JhbCksXG4gICAgICAgIC4uLmdldENvbW1vblJldml2ZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICBiYXNlID0ge1xuICAgICAgICAuLi5nZXRDbGFzc1Jldml2ZXJzKGdsb2JhbCksXG4gICAgICAgIC4uLmdldENvbW1vblJldml2ZXJzKGdsb2JhbCksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnY2xpZW50JzpcbiAgICAgIGJhc2UgPSB7XG4gICAgICAgIC4uLmdldENsYXNzUmV2aXZlcnMoZ2xvYmFsKSxcbiAgICAgICAgLi4uZ2V0Q29tbW9uUmV2aXZlcnMoZ2xvYmFsKSxcbiAgICAgICAgU3RlcEZ1bmN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1N0ZXAgZnVuY3Rpb25zIGNhbm5vdCBiZSBkZXNlcmlhbGl6ZWQgaW4gY2xpZW50IGNvbnRleHQuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaWYgKGV4dHJhUmV2aXZlcnMpIHtcbiAgICByZXR1cm4geyAuLi5iYXNlLCAuLi5leHRyYVJldml2ZXJzIH0gYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT47XG4gIH1cbiAgcmV0dXJuIGJhc2UgYXMgUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT47XG59XG5cbi8vIC0tLS0gQ29kZWMgaW1wbGVtZW50YXRpb24gLS0tLVxuXG5leHBvcnQgY29uc3QgZGV2YWx1ZUNvZGVjOiBDb2RlYyA9IHtcbiAgZm9ybWF0UHJlZml4OiBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEsXG5cbiAgc2VyaWFsaXplKFxuICAgIHZhbHVlOiB1bmtub3duLFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogVWludDhBcnJheSB7XG4gICAgY29uc3QgcmVkdWNlcnMgPSBnZXRSZWR1Y2Vyc0Zvck1vZGUoXG4gICAgICBtb2RlLFxuICAgICAgb3B0aW9ucz8uZ2xvYmFsLFxuICAgICAgb3B0aW9ucz8uZXh0cmFSZWR1Y2Vyc1xuICAgICk7XG4gICAgLy8gSGFyZGVuZWQgb3BlcmF0aW9uczogZGV2YWx1ZSdzIG93biBpbnRyb3NwZWN0aW9uIChjbGFzc2lmaWNhdGlvbixcbiAgICAvLyBidWlsdC1pbiBleHRyYWN0aW9uLCBwcm9wZXJ0eSByZWFkcykgZ29lcyB0aHJvdWdoIGNhcHR1cmVkIGhvc3RcbiAgICAvLyBpbnRyaW5zaWNzIGFuZCBkZXNjcmlwdG9yIHJlYWRzLCBzbyBzZXJpYWxpemluZyBhIHZhbHVlIGNvbnN0cnVjdGVkXG4gICAgLy8gaW5zaWRlIGEgd29ya2Zsb3cgVk0gY2Fubm90IGV4ZWN1dGUgc2FuZGJveCBjb2RlIGJlaGluZCBvdXIgYmFjay5cbiAgICAvLyBXaGVyZSB3b3JrZmxvdyBjb2RlIG11c3QgcnVuIChnZXR0ZXJzLCBwcm94aWVzLCBjdXN0b20gc2VyaWFsaXplcnMpLFxuICAgIC8vIHRoZSBleGVjdXRpb24gaXMgcmVjb3JkZWQgaW50byBgb3B0aW9ucy5ndWVzdENvZGVTdGF0c2AuXG4gICAgY29uc3Qgc3RyID0gd2l0aEd1ZXN0Q29kZVN0YXRzKG9wdGlvbnM/Lmd1ZXN0Q29kZVN0YXRzLCAoKSA9PlxuICAgICAgc3RyaW5naWZ5KHZhbHVlLCByZWR1Y2VycywgeyBvcGVyYXRpb25zOiBoYXJkZW5lZFN0cmluZ2lmeU9wZXJhdGlvbnMgfSlcbiAgICApO1xuICAgIHJldHVybiBlbmNvZGVyLmVuY29kZShzdHIpO1xuICB9LFxuXG4gIGRlc2VyaWFsaXplKFxuICAgIGRhdGE6IFVpbnQ4QXJyYXksXG4gICAgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUsXG4gICAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuICApOiB1bmtub3duIHtcbiAgICBjb25zdCByZXZpdmVycyA9IGdldFJldml2ZXJzRm9yTW9kZShcbiAgICAgIG1vZGUsXG4gICAgICBvcHRpb25zPy5nbG9iYWwsXG4gICAgICBvcHRpb25zPy5leHRyYVJldml2ZXJzXG4gICAgKTtcbiAgICBjb25zdCBzdHIgPSBkZWNvZGVyLmRlY29kZShkYXRhKTtcbiAgICByZXR1cm4gcGFyc2Uoc3RyLCByZXZpdmVycywgcGFyc2VPcHRpb25zKTtcbiAgfSxcblxuICBkZXNlcmlhbGl6ZUxlZ2FjeShcbiAgICBkYXRhOiB1bmtub3duLFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogdW5rbm93biB7XG4gICAgY29uc3QgcmV2aXZlcnMgPSBnZXRSZXZpdmVyc0Zvck1vZGUoXG4gICAgICBtb2RlLFxuICAgICAgb3B0aW9ucz8uZ2xvYmFsLFxuICAgICAgb3B0aW9ucz8uZXh0cmFSZXZpdmVyc1xuICAgICk7XG4gICAgcmV0dXJuIHVuZmxhdHRlbihkYXRhIGFzIGFueVtdLCByZXZpdmVycywgcGFyc2VPcHRpb25zKTtcbiAgfSxcbn07XG4iXX0=
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A codec handles the core serialize/deserialize logic for a specific
|
|
5
5
|
* wire format (devalue, CBOR, JSON, etc.). Each codec is responsible
|
|
6
|
-
* for handling all supported data types internally
|
|
6
|
+
* for handling all supported data types internally; the caller only
|
|
7
7
|
* specifies which serialization mode to use.
|
|
8
8
|
*
|
|
9
9
|
* - **devalue**: Uses custom reducers/revivers for Date, Error, Map, Set,
|
|
@@ -70,15 +70,15 @@ export interface CodecOptions {
|
|
|
70
70
|
compressionStats?: CompressionStats;
|
|
71
71
|
/**
|
|
72
72
|
* Optional sink populated by the hardened serializer with every
|
|
73
|
-
* workflow (guest) code execution that serialization could not avoid
|
|
73
|
+
* workflow (guest) code execution that serialization could not avoid:
|
|
74
74
|
* getters, proxies, and custom `[WORKFLOW_SERIALIZE]` methods. A non-empty
|
|
75
75
|
* `executions` array means serialization may have perturbed VM state
|
|
76
76
|
* (it runs exactly once per payload and is never replayed, so any side
|
|
77
77
|
* effect it triggers diverges from replay).
|
|
78
78
|
*
|
|
79
79
|
* Every dehydrate path already reports this as span attributes. Passing a
|
|
80
|
-
* sink is for callers that need the executions *programmatically
|
|
81
|
-
* retained-VM gate deciding whether the VM is still reusable. No caller
|
|
80
|
+
* sink is for callers that need the executions *programmatically*, such
|
|
81
|
+
* as a retained-VM gate deciding whether the VM is still reusable. No caller
|
|
82
82
|
* does that yet, so nothing in the runtime currently passes one.
|
|
83
83
|
*
|
|
84
84
|
* Serialize side only.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A codec handles the core serialize/deserialize logic for a specific
|
|
5
5
|
* wire format (devalue, CBOR, JSON, etc.). Each codec is responsible
|
|
6
|
-
* for handling all supported data types internally
|
|
6
|
+
* for handling all supported data types internally; the caller only
|
|
7
7
|
* specifies which serialization mode to use.
|
|
8
8
|
*
|
|
9
9
|
* - **devalue**: Uses custom reducers/revivers for Date, Error, Map, Set,
|
|
@@ -14,4 +14,4 @@
|
|
|
14
14
|
* plain objects). No Date, Map, Set, typed arrays, etc.
|
|
15
15
|
*/
|
|
16
16
|
export {};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9jb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29kZWMgaW50ZXJmYWNlIGZvciBzZXJpYWxpemF0aW9uIGZvcm1hdHMuXG4gKlxuICogQSBjb2RlYyBoYW5kbGVzIHRoZSBjb3JlIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBsb2dpYyBmb3IgYSBzcGVjaWZpY1xuICogd2lyZSBmb3JtYXQgKGRldmFsdWUsIENCT1IsIEpTT04sIGV0Yy4pLiBFYWNoIGNvZGVjIGlzIHJlc3BvbnNpYmxlXG4gKiBmb3IgaGFuZGxpbmcgYWxsIHN1cHBvcnRlZCBkYXRhIHR5cGVzIGludGVybmFsbHk7IHRoZSBjYWxsZXIgb25seVxuICogc3BlY2lmaWVzIHdoaWNoIHNlcmlhbGl6YXRpb24gbW9kZSB0byB1c2UuXG4gKlxuICogLSAqKmRldmFsdWUqKjogVXNlcyBjdXN0b20gcmVkdWNlcnMvcmV2aXZlcnMgZm9yIERhdGUsIEVycm9yLCBNYXAsIFNldCxcbiAqICAgdHlwZWQgYXJyYXlzLCBjbGFzcyBpbnN0YW5jZXMsIGV0Yy5cbiAqIC0gKipjYm9yKio6IFdvdWxkIGhhbmRsZSBEYXRlLCB0eXBlZCBhcnJheXMsIE1hcCwgU2V0IG5hdGl2ZWx5IHZpYSB0aGVcbiAqICAgQ0JPUiB0eXBlIHN5c3RlbS4gQ2xhc3MgaW5zdGFuY2VzIHdvdWxkIHN0aWxsIG5lZWQgY3VzdG9tIGhhbmRsaW5nLlxuICogLSAqKmpzb24qKjogV291bGQgb25seSBzdXBwb3J0IHN0YW5kYXJkIEpTT04gdHlwZXMgKHByaW1pdGl2ZXMsIGFycmF5cyxcbiAqICAgcGxhaW4gb2JqZWN0cykuIE5vIERhdGUsIE1hcCwgU2V0LCB0eXBlZCBhcnJheXMsIGV0Yy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbXByZXNzaW9uU3RhdHMgfSBmcm9tICcuL2NvbXByZXNzaW9uLmpzJztcbmltcG9ydCB0eXBlIHsgR3Vlc3RDb2RlU3RhdHMgfSBmcm9tICcuL2hhcmRlbmVkLmpzJztcbmltcG9ydCB0eXBlIHsgRm9ybWF0UHJlZml4IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6YXRpb24gbW9kZSBkZXRlcm1pbmVzIHdoaWNoIHR5cGVzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvd1xuICogdGhleSdyZSBoYW5kbGVkLiBEaWZmZXJlbnQgbW9kZXMgY29tcG9zZSBkaWZmZXJlbnQgc2V0cyBvZiB0eXBlIGhhbmRsZXJzLlxuICpcbiAqIC0gYHdvcmtmbG93YDogUnVucyBpbnNpZGUgdGhlIHdvcmtmbG93IFZNLiBJbmNsdWRlcyBjbGFzcyBzZXJpYWxpemF0aW9uLFxuICogICBzdGVwIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb24uIE5vIHN0cmVhbSBoYW5kbGluZy5cbiAqIC0gYHN0ZXBgOiBSdW5zIGluIHRoZSBzdGVwIGV4ZWN1dG9yIChOb2RlLmpzKS4gSW5jbHVkZXMgY2xhc3Mgc2VyaWFsaXphdGlvbi5cbiAqICAgTm8gc3RlcCBmdW5jdGlvbiBzZXJpYWxpemF0aW9uLiBTdHJlYW0gaGFuZGxpbmcgYXQgY2FsbCBzaXRlcy5cbiAqIC0gYGNsaWVudGA6IFJ1bnMgb24gdGhlIGNsaWVudCBzaWRlLiBJbmNsdWRlcyBjbGFzcyBzZXJpYWxpemF0aW9uLlxuICogICBObyBzdGVwIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb24uIFN0cmVhbSBoYW5kbGluZyBhdCBjYWxsIHNpdGVzLlxuICovXG5leHBvcnQgdHlwZSBTZXJpYWxpemF0aW9uTW9kZSA9ICd3b3JrZmxvdycgfCAnc3RlcCcgfCAnY2xpZW50JztcblxuLyoqXG4gKiBPcHRpb25zIHBhc3NlZCB0byBjb2RlYyBzZXJpYWxpemUvZGVzZXJpYWxpemUgdG8gc3VwcG9ydCBWTS1jb250ZXh0XG4gKiBzZXJpYWxpemF0aW9uIGFuZCBtb2RlLXNwZWNpZmljIHR5cGUgaGFuZGxpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBnbG9iYWwgb2JqZWN0IHRvIHVzZSBmb3IgYGluc3RhbmNlb2ZgIGNoZWNrcyBhbmQgY29uc3RydWN0b3JzLlxuICAgKiBEZWZhdWx0cyB0byBgZ2xvYmFsVGhpc2AuIE11c3QgYmUgc2V0IHRvIHRoZSBWTSdzIGdsb2JhbCB3aGVuXG4gICAqIHNlcmlhbGl6aW5nL2Rlc2VyaWFsaXppbmcgZGF0YSB0aGF0IGNyb3NzZXMgVk0gYm91bmRhcmllcy5cbiAgICovXG4gIGdsb2JhbD86IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcmVkdWNlcnMgdG8gbWVyZ2UgaW50byB0aGUgbW9kZSdzIGRlZmF1bHQgcmVkdWNlcnMuXG4gICAqIFVzZWQgYnkgZGVoeWRyYXRlL2h5ZHJhdGUgZnVuY3Rpb25zIHRoYXQgbmVlZCBzdHJlYW0gaGFuZGxpbmdcbiAgICogb3Igb3RoZXIgbW9kZS1zcGVjaWZpYyB0eXBlIHJlZHVjZXJzLlxuICAgKi9cbiAgZXh0cmFSZWR1Y2Vycz86IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+O1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHJldml2ZXJzIHRvIG1lcmdlIGludG8gdGhlIG1vZGUncyBkZWZhdWx0IHJldml2ZXJzLlxuICAgKiBVc2VkIGJ5IGRlaHlkcmF0ZS9oeWRyYXRlIGZ1bmN0aW9ucyB0aGF0IG5lZWQgc3RyZWFtIGhhbmRsaW5nXG4gICAqIG9yIG90aGVyIG1vZGUtc3BlY2lmaWMgdHlwZSByZXZpdmVycy5cbiAgICovXG4gIGV4dHJhUmV2aXZlcnM/OiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBjb21wcmVzcyB0aGUgc2VyaWFsaXplZCBwYXlsb2FkICh3cml0ZSBzaWRlIG9ubHk7IHpzdGQgaXNcbiAgICogcHJlZmVycmVkIGFuZCBnemlwIGlzIHRoZSBwb3J0YWJsZSBmYWxsYmFjaykuIFJlYWRzIGRpc3BhdGNoIGNvbXByZXNzZWRcbiAgICogcGF5bG9hZHMgYnkgZm9ybWF0IHByZWZpeDsgenN0ZCBkZWNvZGluZyBzdGlsbCByZXF1aXJlcyBydW50aW1lIG9yXG4gICAqIHJlZ2lzdGVyZWQgZGVjb2RlciBzdXBwb3J0LiBNdXN0IG9ubHkgYmUgZW5hYmxlZCB3aGVuIHRoZSB0YXJnZXQgcnVuXG4gICAqIHN1cHBvcnRzIGNvbXByZXNzZWQgcGF5bG9hZHM6XG4gICAqIHJ1biBzcGVjVmVyc2lvbiA+PSBTUEVDX1ZFUlNJT05fU1VQUE9SVFNfQ09NUFJFU1NJT04sIGFuZCBmb3JcbiAgICogY3Jvc3MtZGVwbG95bWVudCB3cml0ZXMgdGhlIHRhcmdldCBkZXBsb3ltZW50J3MgY2FwYWJpbGl0aWVzIChzZWVcbiAgICogYGdldFJ1bkNhcGFiaWxpdGllc2AgaW4gY2FwYWJpbGl0aWVzLnRzKS4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIGNvbXByZXNzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGVsZW1ldHJ5IHNpbmsgcG9wdWxhdGVkIGJ5IHRoZSBjb21wcmVzc2lvbiBsYXllciB3aXRoIHdoYXRcbiAgICogaXQgZGlkIHRvIHRoZSBwYXlsb2FkICh3aGV0aGVyIGl0IGNvbXByZXNzZWQsIGxvZ2ljYWwgdnMgc3RvcmVkIHNpemUpLlxuICAgKiBVc2VkIGJ5IHRoZSBkZWh5ZHJhdGUvaHlkcmF0ZSB3cmFwcGVycyB0byBlbWl0IE9UZWwgc3BhbiBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgY29tcHJlc3Npb25TdGF0cz86IENvbXByZXNzaW9uU3RhdHM7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHNpbmsgcG9wdWxhdGVkIGJ5IHRoZSBoYXJkZW5lZCBzZXJpYWxpemVyIHdpdGggZXZlcnlcbiAgICogd29ya2Zsb3cgKGd1ZXN0KSBjb2RlIGV4ZWN1dGlvbiB0aGF0IHNlcmlhbGl6YXRpb24gY291bGQgbm90IGF2b2lkOlxuICAgKiBnZXR0ZXJzLCBwcm94aWVzLCBhbmQgY3VzdG9tIGBbV09SS0ZMT1dfU0VSSUFMSVpFXWAgbWV0aG9kcy4gQSBub24tZW1wdHlcbiAgICogYGV4ZWN1dGlvbnNgIGFycmF5IG1lYW5zIHNlcmlhbGl6YXRpb24gbWF5IGhhdmUgcGVydHVyYmVkIFZNIHN0YXRlXG4gICAqIChpdCBydW5zIGV4YWN0bHkgb25jZSBwZXIgcGF5bG9hZCBhbmQgaXMgbmV2ZXIgcmVwbGF5ZWQsIHNvIGFueSBzaWRlXG4gICAqIGVmZmVjdCBpdCB0cmlnZ2VycyBkaXZlcmdlcyBmcm9tIHJlcGxheSkuXG4gICAqXG4gICAqIEV2ZXJ5IGRlaHlkcmF0ZSBwYXRoIGFscmVhZHkgcmVwb3J0cyB0aGlzIGFzIHNwYW4gYXR0cmlidXRlcy4gUGFzc2luZyBhXG4gICAqIHNpbmsgaXMgZm9yIGNhbGxlcnMgdGhhdCBuZWVkIHRoZSBleGVjdXRpb25zICpwcm9ncmFtbWF0aWNhbGx5Kiwgc3VjaFxuICAgKiBhcyBhIHJldGFpbmVkLVZNIGdhdGUgZGVjaWRpbmcgd2hldGhlciB0aGUgVk0gaXMgc3RpbGwgcmV1c2FibGUuIE5vIGNhbGxlclxuICAgKiBkb2VzIHRoYXQgeWV0LCBzbyBub3RoaW5nIGluIHRoZSBydW50aW1lIGN1cnJlbnRseSBwYXNzZXMgb25lLlxuICAgKlxuICAgKiBTZXJpYWxpemUgc2lkZSBvbmx5LlxuICAgKi9cbiAgZ3Vlc3RDb2RlU3RhdHM/OiBHdWVzdENvZGVTdGF0cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2RlYyB7XG4gIC8qKiBUaGUgNC1jaGFyYWN0ZXIgZm9ybWF0IHByZWZpeCBpZGVudGlmaWVyIChlLmcuIFwiZGV2bFwiLCBcImNib3JcIiwgXCJqc29uXCIpICovXG4gIHJlYWRvbmx5IGZvcm1hdFByZWZpeDogRm9ybWF0UHJlZml4O1xuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgYSB2YWx1ZSB0byBieXRlcy5cbiAgICpcbiAgICogVGhlIGNvZGVjIGhhbmRsZXMgYWxsIHN1cHBvcnRlZCB0eXBlcyBpbnRlcm5hbGx5IGJhc2VkIG9uIHRoZSBtb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2VyaWFsaXplXG4gICAqIEBwYXJhbSBtb2RlIC0gVGhlIHNlcmlhbGl6YXRpb24gbW9kZVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGdsb2JhbCwgZXh0cmEgcmVkdWNlcnMvcmV2aXZlcnNcbiAgICogQHJldHVybnMgVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCAod2l0aG91dCBmb3JtYXQgcHJlZml4KVxuICAgKi9cbiAgc2VyaWFsaXplKFxuICAgIHZhbHVlOiB1bmtub3duLFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogVWludDhBcnJheTtcblxuICAvKipcbiAgICogRGVzZXJpYWxpemUgYnl0ZXMgYmFjayB0byBhIHZhbHVlLlxuICAgKlxuICAgKiBUaGUgY29kZWMgaGFuZGxlcyBhbGwgc3VwcG9ydGVkIHR5cGVzIGludGVybmFsbHkgYmFzZWQgb24gdGhlIG1vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCAod2l0aG91dCBmb3JtYXQgcHJlZml4KVxuICAgKiBAcGFyYW0gbW9kZSAtIFRoZSBzZXJpYWxpemF0aW9uIG1vZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBnbG9iYWwsIGV4dHJhIHJldml2ZXJzXG4gICAqIEByZXR1cm5zIFRoZSBkZXNlcmlhbGl6ZWQgdmFsdWVcbiAgICovXG4gIGRlc2VyaWFsaXplKFxuICAgIGRhdGE6IFVpbnQ4QXJyYXksXG4gICAgbW9kZTogU2VyaWFsaXphdGlvbk1vZGUsXG4gICAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuICApOiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBsZWdhY3kgKHByZS1mb3JtYXQtcHJlZml4KSBkYXRhLlxuICAgKiBVc2VkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHNwZWNWZXJzaW9uIDEgcnVucyB0aGF0IHN0b3JlZFxuICAgKiBkYXRhIGFzIHBsYWluIEpTT04gYXJyYXlzIGluc3RlYWQgb2YgYmluYXJ5LlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBsZWdhY3kgZGF0YVxuICAgKiBAcGFyYW0gbW9kZSAtIFRoZSBzZXJpYWxpemF0aW9uIG1vZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBnbG9iYWwsIGV4dHJhIHJldml2ZXJzXG4gICAqIEByZXR1cm5zIFRoZSBkZXNlcmlhbGl6ZWQgdmFsdWVcbiAgICovXG4gIGRlc2VyaWFsaXplTGVnYWN5PyhcbiAgICBkYXRhOiB1bmtub3duLFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogdW5rbm93bjtcbn1cbiJdfQ==
|
|
@@ -5,22 +5,23 @@
|
|
|
5
5
|
* format prefix system to mark compressed data (e.g. 'zstd' or 'gzip'
|
|
6
6
|
* wrapping the inner format: 'zstd' + zstd('devl' + payload)).
|
|
7
7
|
*
|
|
8
|
-
* Codec selection (write side): zstd is preferred
|
|
9
|
-
* than gzip at a comparable-or-better ratio (see scripts/README.md),
|
|
10
|
-
* compression runs at every step boundary so the write CPU is a
|
|
11
|
-
* tax. zstd requires `node:zlib` >= 22.15 (Web
|
|
12
|
-
* zstd), so on a runtime without it we fall back
|
|
8
|
+
* Codec selection (write side): zstd is preferred because it is markedly
|
|
9
|
+
* faster than gzip at a comparable-or-better ratio (see scripts/README.md),
|
|
10
|
+
* and compression runs at every step boundary so the write CPU is a
|
|
11
|
+
* per-step tax. zstd requires `node:zlib` >= 22.15 (Web
|
|
12
|
+
* `CompressionStream` has no zstd), so on a runtime without it we fall back
|
|
13
|
+
* to gzip via the portable
|
|
13
14
|
* `CompressionStream`. `WORKFLOW_COMPRESSION_CODEC=gzip` forces the
|
|
14
15
|
* portable codec.
|
|
15
16
|
*
|
|
16
17
|
* Read side: dispatch on the format prefix, so both 'zstd' and 'gzip'
|
|
17
18
|
* payloads are always decodable regardless of which codec wrote them.
|
|
18
|
-
* (The browser o11y read path decodes zstd via a registered WASM decoder
|
|
19
|
+
* (The browser o11y read path decodes zstd via a registered WASM decoder,
|
|
19
20
|
* see `serialization-format.ts`; this module's `decompress` is the Node
|
|
20
21
|
* runtime/replay path and uses `node:zlib`.)
|
|
21
22
|
*
|
|
22
23
|
* Layering order with encryption: compression is applied BEFORE
|
|
23
|
-
* encryption (encr(zstd(devl)))
|
|
24
|
+
* encryption (encr(zstd(devl))): encrypted bytes are high-entropy and
|
|
24
25
|
* do not compress, so the reverse order would be a no-op.
|
|
25
26
|
*
|
|
26
27
|
* Compression is conditional:
|
|
@@ -50,8 +51,8 @@ export type CompressionCodec = 'zstd' | 'gzip' | 'none';
|
|
|
50
51
|
* Telemetry sink describing what the compression layer did to a payload.
|
|
51
52
|
* Populated by {@link compress} (write) and {@link decompress} (read) when
|
|
52
53
|
* a `stats` object is passed. Sizes are measured at the compression
|
|
53
|
-
* boundary
|
|
54
|
-
* decryption on the read side
|
|
54
|
+
* boundary (i.e. before encryption is layered on the write side and after
|
|
55
|
+
* decryption on the read side), so they reflect compression's effect, not
|
|
55
56
|
* the at-rest size (which also includes the `encr` envelope and, on some
|
|
56
57
|
* backends, base64 expansion).
|
|
57
58
|
*
|
|
@@ -80,8 +81,8 @@ export interface CompressionStats {
|
|
|
80
81
|
* @param data - The format-prefixed serialized data (e.g. 'devl' + bytes)
|
|
81
82
|
* @param enabled - Whether the target run supports compressed payloads
|
|
82
83
|
* (run specVersion >= SPEC_VERSION_SUPPORTS_COMPRESSION, and for
|
|
83
|
-
* cross-deployment writes, the target deployment's capabilities
|
|
84
|
-
*
|
|
84
|
+
* cross-deployment writes, the target deployment's capabilities; see
|
|
85
|
+
* `getRunCapabilities` in capabilities.ts). zstd and gzip read
|
|
85
86
|
* support co-ship, so a single boolean is sufficient.
|
|
86
87
|
* @param stats - Optional telemetry sink; populated when `data` is binary.
|
|
87
88
|
* @returns The compressed data with a codec prefix, or the original data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/serialization/compression.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/serialization/compression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AASH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAKlD,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AA4IxD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yCAAyC;IACzC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA6BD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CA4B/B;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CA2B/B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAKhE"}
|
|
@@ -5,22 +5,23 @@
|
|
|
5
5
|
* format prefix system to mark compressed data (e.g. 'zstd' or 'gzip'
|
|
6
6
|
* wrapping the inner format: 'zstd' + zstd('devl' + payload)).
|
|
7
7
|
*
|
|
8
|
-
* Codec selection (write side): zstd is preferred
|
|
9
|
-
* than gzip at a comparable-or-better ratio (see scripts/README.md),
|
|
10
|
-
* compression runs at every step boundary so the write CPU is a
|
|
11
|
-
* tax. zstd requires `node:zlib` >= 22.15 (Web
|
|
12
|
-
* zstd), so on a runtime without it we fall back
|
|
8
|
+
* Codec selection (write side): zstd is preferred because it is markedly
|
|
9
|
+
* faster than gzip at a comparable-or-better ratio (see scripts/README.md),
|
|
10
|
+
* and compression runs at every step boundary so the write CPU is a
|
|
11
|
+
* per-step tax. zstd requires `node:zlib` >= 22.15 (Web
|
|
12
|
+
* `CompressionStream` has no zstd), so on a runtime without it we fall back
|
|
13
|
+
* to gzip via the portable
|
|
13
14
|
* `CompressionStream`. `WORKFLOW_COMPRESSION_CODEC=gzip` forces the
|
|
14
15
|
* portable codec.
|
|
15
16
|
*
|
|
16
17
|
* Read side: dispatch on the format prefix, so both 'zstd' and 'gzip'
|
|
17
18
|
* payloads are always decodable regardless of which codec wrote them.
|
|
18
|
-
* (The browser o11y read path decodes zstd via a registered WASM decoder
|
|
19
|
+
* (The browser o11y read path decodes zstd via a registered WASM decoder,
|
|
19
20
|
* see `serialization-format.ts`; this module's `decompress` is the Node
|
|
20
21
|
* runtime/replay path and uses `node:zlib`.)
|
|
21
22
|
*
|
|
22
23
|
* Layering order with encryption: compression is applied BEFORE
|
|
23
|
-
* encryption (encr(zstd(devl)))
|
|
24
|
+
* encryption (encr(zstd(devl))): encrypted bytes are high-entropy and
|
|
24
25
|
* do not compress, so the reverse order would be a no-op.
|
|
25
26
|
*
|
|
26
27
|
* Compression is conditional:
|
|
@@ -46,11 +47,11 @@ export const COMPRESSION_MIN_BYTES = 1024;
|
|
|
46
47
|
* data paying a permanent decompression tax for a negligible win.
|
|
47
48
|
*/
|
|
48
49
|
export const COMPRESSION_MIN_SAVINGS_RATIO = 0.05;
|
|
49
|
-
/** Default zstd compression level
|
|
50
|
+
/** Default zstd compression level: the sweet spot of speed vs ratio. */
|
|
50
51
|
const ZSTD_LEVEL = 3;
|
|
51
52
|
/**
|
|
52
53
|
* Escape hatch: set WORKFLOW_DISABLE_COMPRESSION=1 to disable
|
|
53
|
-
* write-side compression entirely. Reads are unaffected
|
|
54
|
+
* write-side compression entirely. Reads are unaffected: payloads
|
|
54
55
|
* that were already written compressed remain readable.
|
|
55
56
|
*/
|
|
56
57
|
function isCompressionDisabledByEnv() {
|
|
@@ -64,7 +65,7 @@ function isCompressionDisabledByEnv() {
|
|
|
64
65
|
}
|
|
65
66
|
/**
|
|
66
67
|
* Optional codec override (`WORKFLOW_COMPRESSION_CODEC=gzip|zstd`). Lets an
|
|
67
|
-
* operator pin the portable codec (gzip)
|
|
68
|
+
* operator pin the portable codec (gzip), useful for A/B comparisons or
|
|
68
69
|
* runtimes where zstd read support isn't yet everywhere.
|
|
69
70
|
*/
|
|
70
71
|
function codecOverrideFromEnv() {
|
|
@@ -77,7 +78,7 @@ function codecOverrideFromEnv() {
|
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
/**
|
|
80
|
-
* Resolve `node:zlib` via `process.getBuiltinModule
|
|
81
|
+
* Resolve `node:zlib` via `process.getBuiltinModule`: no static import, so
|
|
81
82
|
* this module stays bundler-safe for browser/edge targets (where it returns
|
|
82
83
|
* undefined and we fall back to gzip).
|
|
83
84
|
*/
|
|
@@ -106,7 +107,7 @@ function isGzipAvailable() {
|
|
|
106
107
|
*/
|
|
107
108
|
async function pipeThroughTransform(data, transform) {
|
|
108
109
|
const writer = transform.writable.getWriter();
|
|
109
|
-
// Don't await the write before reading
|
|
110
|
+
// Don't await the write before reading: the transform's internal
|
|
110
111
|
// queue can fill up on large payloads, deadlocking writer vs reader.
|
|
111
112
|
const writePromise = writer.write(data).then(() => writer.close());
|
|
112
113
|
// If the transform errors, the reader.read() below rejects first and
|
|
@@ -186,8 +187,8 @@ function selectWriteCodec() {
|
|
|
186
187
|
* @param data - The format-prefixed serialized data (e.g. 'devl' + bytes)
|
|
187
188
|
* @param enabled - Whether the target run supports compressed payloads
|
|
188
189
|
* (run specVersion >= SPEC_VERSION_SUPPORTS_COMPRESSION, and for
|
|
189
|
-
* cross-deployment writes, the target deployment's capabilities
|
|
190
|
-
*
|
|
190
|
+
* cross-deployment writes, the target deployment's capabilities; see
|
|
191
|
+
* `getRunCapabilities` in capabilities.ts). zstd and gzip read
|
|
191
192
|
* support co-ship, so a single boolean is sufficient.
|
|
192
193
|
* @param stats - Optional telemetry sink; populated when `data` is binary.
|
|
193
194
|
* @returns The compressed data with a codec prefix, or the original data
|
|
@@ -257,4 +258,4 @@ export function isCompressed(data) {
|
|
|
257
258
|
const prefix = peekFormatPrefix(data);
|
|
258
259
|
return (prefix === SerializationFormat.ZSTD || prefix === SerializationFormat.GZIP);
|
|
259
260
|
}
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9jb21wcmVzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFFSCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsR0FDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUM7QUFFMUM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQUM7QUFFbEQseUVBQXlFO0FBQ3pFLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQUtyQjs7OztHQUlHO0FBQ0gsU0FBUywwQkFBMEI7SUFDakMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUNMLE9BQU8sT0FBTyxLQUFLLFdBQVc7WUFDOUIsT0FBTyxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsS0FBSyxHQUFHLENBQ2xELENBQUM7SUFDSixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLG9CQUFvQjtJQUMzQixJQUFJLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDO1FBQ2xELE9BQU8sQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN0RCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFR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LHNFQUFzRTtnQkFDcEUsb0VBQW9FO2dCQUNwRSwwQkFBMEIsQ0FDN0IsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUEwQjtJQUNyRCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxPQUFPLENBQ0wsTUFBTSxLQUFLLG1CQUFtQixDQUFDLElBQUksSUFBSSxNQUFNLEtBQUssbUJBQW1CLENBQUMsSUFBSSxDQUMzRSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tcG9zYWJsZSBjb21wcmVzc2lvbiBsYXllciBmb3Igc2VyaWFsaXplZCBkYXRhLlxuICpcbiAqIFdyYXBzL3Vud3JhcHMgc2VyaWFsaXplZCBwYXlsb2FkcyB3aXRoIGEgY29tcHJlc3Npb24gY29kZWMsIHVzaW5nIHRoZVxuICogZm9ybWF0IHByZWZpeCBzeXN0ZW0gdG8gbWFyayBjb21wcmVzc2VkIGRhdGEgKGUuZy4gJ3pzdGQnIG9yICdnemlwJ1xuICogd3JhcHBpbmcgdGhlIGlubmVyIGZvcm1hdDogJ3pzdGQnICsgenN0ZCgnZGV2bCcgKyBwYXlsb2FkKSkuXG4gKlxuICogQ29kZWMgc2VsZWN0aW9uICh3cml0ZSBzaWRlKTogenN0ZCBpcyBwcmVmZXJyZWQg4oCUIGl0IGlzIG1hcmtlZGx5IGZhc3RlclxuICogdGhhbiBnemlwIGF0IGEgY29tcGFyYWJsZS1vci1iZXR0ZXIgcmF0aW8gKHNlZSBzY3JpcHRzL1JFQURNRS5tZCksIGFuZFxuICogY29tcHJlc3Npb24gcnVucyBhdCBldmVyeSBzdGVwIGJvdW5kYXJ5IHNvIHRoZSB3cml0ZSBDUFUgaXMgYSBwZXItc3RlcFxuICogdGF4LiB6c3RkIHJlcXVpcmVzIGBub2RlOnpsaWJgID49IDIyLjE1IChXZWIgYENvbXByZXNzaW9uU3RyZWFtYCBoYXMgbm9cbiAqIHpzdGQpLCBzbyBvbiBhIHJ1bnRpbWUgd2l0aG91dCBpdCB3ZSBmYWxsIGJhY2sgdG8gZ3ppcCB2aWEgdGhlIHBvcnRhYmxlXG4gKiBgQ29tcHJlc3Npb25TdHJlYW1gLiBgV09SS0ZMT1dfQ09NUFJFU1NJT05fQ09ERUM9Z3ppcGAgZm9yY2VzIHRoZVxuICogcG9ydGFibGUgY29kZWMuXG4gKlxuICogUmVhZCBzaWRlOiBkaXNwYXRjaCBvbiB0aGUgZm9ybWF0IHByZWZpeCwgc28gYm90aCAnenN0ZCcgYW5kICdnemlwJ1xuICogcGF5bG9hZHMgYXJlIGFsd2F5cyBkZWNvZGFibGUgcmVnYXJkbGVzcyBvZiB3aGljaCBjb2RlYyB3cm90ZSB0aGVtLlxuICogKFRoZSBicm93c2VyIG8xMXkgcmVhZCBwYXRoIGRlY29kZXMgenN0ZCB2aWEgYSByZWdpc3RlcmVkIFdBU00gZGVjb2RlciDigJRcbiAqIHNlZSBgc2VyaWFsaXphdGlvbi1mb3JtYXQudHNgOyB0aGlzIG1vZHVsZSdzIGBkZWNvbXByZXNzYCBpcyB0aGUgTm9kZVxuICogcnVudGltZS9yZXBsYXkgcGF0aCBhbmQgdXNlcyBgbm9kZTp6bGliYC4pXG4gKlxuICogTGF5ZXJpbmcgb3JkZXIgd2l0aCBlbmNyeXB0aW9uOiBjb21wcmVzc2lvbiBpcyBhcHBsaWVkIEJFRk9SRVxuICogZW5jcnlwdGlvbiAoZW5jcih6c3RkKGRldmwpKSkg4oCUIGVuY3J5cHRlZCBieXRlcyBhcmUgaGlnaC1lbnRyb3B5IGFuZFxuICogZG8gbm90IGNvbXByZXNzLCBzbyB0aGUgcmV2ZXJzZSBvcmRlciB3b3VsZCBiZSBhIG5vLW9wLlxuICpcbiAqIENvbXByZXNzaW9uIGlzIGNvbmRpdGlvbmFsOlxuICogLSBQYXlsb2FkcyBzbWFsbGVyIHRoYW4ge0BsaW5rIENPTVBSRVNTSU9OX01JTl9CWVRFU30gYXJlIHBhc3NlZFxuICogICB0aHJvdWdoIHVuY2hhbmdlZCAoY29kZWMgb3ZlcmhlYWQgaXNuJ3Qgd29ydGggaXQpLlxuICogLSBJZiB0aGUgY29tcHJlc3NlZCByZXN1bHQgaXNuJ3QgbWVhbmluZ2Z1bGx5IHNtYWxsZXIgdGhhbiB0aGVcbiAqICAgb3JpZ2luYWwgKHNlZSB7QGxpbmsgQ09NUFJFU1NJT05fTUlOX1NBVklOR1NfUkFUSU99KSwgdGhlIG9yaWdpbmFsXG4gKiAgIGlzIGtlcHQuIFRoaXMgcHJvdGVjdHMgYWxyZWFkeS1jb21wcmVzc2VkIGJpbmFyeSBwYXlsb2FkcyAoaW1hZ2VzLFxuICogICBhcmNoaXZlcywgZXRjLikgZnJvbSB3YXN0ZWQgQ1BVIGFuZCBzaXplIGluZmxhdGlvbi5cbiAqL1xuXG5pbXBvcnQge1xuICBkZWNvZGVGb3JtYXRQcmVmaXgsXG4gIGVuY29kZVdpdGhGb3JtYXRQcmVmaXgsXG4gIHBlZWtGb3JtYXRQcmVmaXgsXG59IGZyb20gJy4vZm9ybWF0LmpzJztcbmltcG9ydCB7IFNlcmlhbGl6YXRpb25Gb3JtYXQgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqXG4gKiBQYXlsb2FkcyBiZWxvdyB0aGlzIHNpemUgYXJlIG5ldmVyIGNvbXByZXNzZWQuIFRoZSA0LWJ5dGUgZm9ybWF0XG4gKiBwcmVmaXggKyBjb2RlYyBoZWFkZXIvdHJhaWxlciBvdmVyaGVhZCBtZWFucyBzbWFsbCBwYXlsb2FkcyBnYWluXG4gKiBub3RoaW5nLCBhbmQgdGlueSBvbmVzIHdvdWxkIGdyb3cuXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QUkVTU0lPTl9NSU5fQllURVMgPSAxMDI0O1xuXG4vKipcbiAqIENvbXByZXNzaW9uIG11c3Qgc2hhdmUgb2ZmIGF0IGxlYXN0IHRoaXMgZnJhY3Rpb24gb2YgdGhlIHBheWxvYWRcbiAqIHNpemUgdG8gYmUga2VwdDsgb3RoZXJ3aXNlIHRoZSB1bmNvbXByZXNzZWQgb3JpZ2luYWwgaXMgc3RvcmVkLlxuICogR3VhcmRzIGFnYWluc3QgaW5jb21wcmVzc2libGUgKGFscmVhZHktY29tcHJlc3NlZCAvIGhpZ2gtZW50cm9weSlcbiAqIGRhdGEgcGF5aW5nIGEgcGVybWFuZW50IGRlY29tcHJlc3Npb24gdGF4IGZvciBhIG5lZ2xpZ2libGUgd2luLlxuICovXG5leHBvcnQgY29uc3QgQ09NUFJFU1NJT05fTUlOX1NBVklOR1NfUkFUSU8gPSAwLjA1O1xuXG4vKiogRGVmYXVsdCB6c3RkIGNvbXByZXNzaW9uIGxldmVsIOKAlCB0aGUgc3dlZXQgc3BvdCBvZiBzcGVlZCB2cyByYXRpby4gKi9cbmNvbnN0IFpTVERfTEVWRUwgPSAzO1xuXG4vKiogV2hpY2ggY29kZWMgY29tcHJlc3NlZCBhIHBheWxvYWQgKG9yIGBub25lYCB3aGVuIHN0b3JlZCB1bmNvbXByZXNzZWQpLiAqL1xuZXhwb3J0IHR5cGUgQ29tcHJlc3Npb25Db2RlYyA9ICd6c3RkJyB8ICdnemlwJyB8ICdub25lJztcblxuLyoqXG4gKiBFc2NhcGUgaGF0Y2g6IHNldCBXT1JLRkxPV19ESVNBQkxFX0NPTVBSRVNTSU9OPTEgdG8gZGlzYWJsZVxuICogd3JpdGUtc2lkZSBjb21wcmVzc2lvbiBlbnRpcmVseS4gUmVhZHMgYXJlIHVuYWZmZWN0ZWQg4oCUIHBheWxvYWRzXG4gKiB0aGF0IHdlcmUgYWxyZWFkeSB3cml0dGVuIGNvbXByZXNzZWQgcmVtYWluIHJlYWRhYmxlLlxuICovXG5mdW5jdGlvbiBpc0NvbXByZXNzaW9uRGlzYWJsZWRCeUVudigpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICBwcm9jZXNzLmVudj8uV09SS0ZMT1dfRElTQUJMRV9DT01QUkVTU0lPTiA9PT0gJzEnXG4gICAgKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9uYWwgY29kZWMgb3ZlcnJpZGUgKGBXT1JLRkxPV19DT01QUkVTU0lPTl9DT0RFQz1nemlwfHpzdGRgKS4gTGV0cyBhblxuICogb3BlcmF0b3IgcGluIHRoZSBwb3J0YWJsZSBjb2RlYyAoZ3ppcCkg4oCUIHVzZWZ1bCBmb3IgQS9CIGNvbXBhcmlzb25zIG9yXG4gKiBydW50aW1lcyB3aGVyZSB6c3RkIHJlYWQgc3VwcG9ydCBpc24ndCB5ZXQgZXZlcnl3aGVyZS5cbiAqL1xuZnVuY3Rpb24gY29kZWNPdmVycmlkZUZyb21FbnYoKTogJ2d6aXAnIHwgJ3pzdGQnIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2ID0gcHJvY2Vzcy5lbnY/LldPUktGTE9XX0NPTVBSRVNTSU9OX0NPREVDO1xuICAgIHJldHVybiB2ID09PSAnZ3ppcCcgfHwgdiA9PT0gJ3pzdGQnID8gdiA6IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5pbnRlcmZhY2UgTm9kZVpsaWIge1xuICB6c3RkQ29tcHJlc3NTeW5jPzogKGRhdGE6IFVpbnQ4QXJyYXksIG9wdHM/OiB1bmtub3duKSA9PiBVaW50OEFycmF5O1xuICB6c3RkRGVjb21wcmVzc1N5bmM/OiAoZGF0YTogVWludDhBcnJheSkgPT4gVWludDhBcnJheTtcbiAgY29uc3RhbnRzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGBub2RlOnpsaWJgIHZpYSBgcHJvY2Vzcy5nZXRCdWlsdGluTW9kdWxlYCDigJQgbm8gc3RhdGljIGltcG9ydCwgc29cbiAqIHRoaXMgbW9kdWxlIHN0YXlzIGJ1bmRsZXItc2FmZSBmb3IgYnJvd3Nlci9lZGdlIHRhcmdldHMgKHdoZXJlIGl0IHJldHVybnNcbiAqIHVuZGVmaW5lZCBhbmQgd2UgZmFsbCBiYWNrIHRvIGd6aXApLlxuICovXG5mdW5jdGlvbiBnZXROb2RlWmxpYigpOiBOb2RlWmxpYiB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdsb2JhbFRoaXMgYXMge1xuICAgICAgICBwcm9jZXNzPzogeyBnZXRCdWlsdGluTW9kdWxlPzogKGlkOiBzdHJpbmcpID0+IE5vZGVabGliIH07XG4gICAgICB9XG4gICAgKS5wcm9jZXNzPy5nZXRCdWlsdGluTW9kdWxlPy4oJ25vZGU6emxpYicpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzWnN0ZEF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgY29uc3QgeiA9IGdldE5vZGVabGliKCk7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHo/LnpzdGRDb21wcmVzc1N5bmMgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2Ygej8uenN0ZERlY29tcHJlc3NTeW5jID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG5cbi8qKlxuICogZ3ppcCB2aWEgdGhlIHdlYi1zdGFuZGFyZCBgQ29tcHJlc3Npb25TdHJlYW1gIChOb2RlIDE4KywgYnJvd3NlcnMsIGVkZ2UpLlxuICovXG5mdW5jdGlvbiBpc0d6aXBBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIENvbXByZXNzaW9uU3RyZWFtID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIERlY29tcHJlc3Npb25TdHJlYW0gPT09ICdmdW5jdGlvbidcbiAgKTtcbn1cblxuLyoqXG4gKiBQaXBlIGJ5dGVzIHRocm91Z2ggYSAoRGUpQ29tcHJlc3Npb25TdHJlYW0gYW5kIGNvbGxlY3QgdGhlIG91dHB1dC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcGlwZVRocm91Z2hUcmFuc2Zvcm0oXG4gIGRhdGE6IFVpbnQ4QXJyYXksXG4gIHRyYW5zZm9ybToge1xuICAgIHJlYWRhYmxlOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PjtcbiAgICB3cml0YWJsZTogV3JpdGFibGVTdHJlYW08VWludDhBcnJheT47XG4gIH1cbik6IFByb21pc2U8VWludDhBcnJheT4ge1xuICBjb25zdCB3cml0ZXIgPSB0cmFuc2Zvcm0ud3JpdGFibGUuZ2V0V3JpdGVyKCk7XG4gIC8vIERvbid0IGF3YWl0IHRoZSB3cml0ZSBiZWZvcmUgcmVhZGluZyDigJQgdGhlIHRyYW5zZm9ybSdzIGludGVybmFsXG4gIC8vIHF1ZXVlIGNhbiBmaWxsIHVwIG9uIGxhcmdlIHBheWxvYWRzLCBkZWFkbG9ja2luZyB3cml0ZXIgdnMgcmVhZGVyLlxuICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoZGF0YSkudGhlbigoKSA9PiB3cml0ZXIuY2xvc2UoKSk7XG4gIC8vIElmIHRoZSB0cmFuc2Zvcm0gZXJyb3JzLCB0aGUgcmVhZGVyLnJlYWQoKSBiZWxvdyByZWplY3RzIGZpcnN0IGFuZFxuICAvLyBwcm9wYWdhdGVzOyBtYXJrIHRoZSB3cml0ZSBzaWRlIGFzIGhhbmRsZWQgc28gdGhlIG1pcnJvcmVkIHJlamVjdGlvblxuICAvLyBkb2Vzbid0IHN1cmZhY2UgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgd3JpdGVQcm9taXNlLmNhdGNoKCgpID0+IHt9KTtcbiAgY29uc3QgY2h1bmtzOiBVaW50OEFycmF5W10gPSBbXTtcbiAgbGV0IHRvdGFsID0gMDtcbiAgY29uc3QgcmVhZGVyID0gdHJhbnNmb3JtLnJlYWRhYmxlLmdldFJlYWRlcigpO1xuICBmb3IgKDs7KSB7XG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICBpZiAoZG9uZSkgYnJlYWs7XG4gICAgY2h1bmtzLnB1c2godmFsdWUpO1xuICAgIHRvdGFsICs9IHZhbHVlLmxlbmd0aDtcbiAgfVxuICBhd2FpdCB3cml0ZVByb21pc2U7XG4gIGNvbnN0IG91dCA9IG5ldyBVaW50OEFycmF5KHRvdGFsKTtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7XG4gICAgb3V0LnNldChjaHVuaywgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gY2h1bmsubGVuZ3RoO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGd6aXBCeXRlcyhkYXRhOiBVaW50OEFycmF5KTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIHJldHVybiBwaXBlVGhyb3VnaFRyYW5zZm9ybShkYXRhLCBuZXcgQ29tcHJlc3Npb25TdHJlYW0oJ2d6aXAnKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGd1bnppcEJ5dGVzKGRhdGE6IFVpbnQ4QXJyYXkpOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgcmV0dXJuIHBpcGVUaHJvdWdoVHJhbnNmb3JtKGRhdGEsIG5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKCdnemlwJykpO1xufVxuXG5mdW5jdGlvbiB6c3RkQnl0ZXMoZGF0YTogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCB6ID0gZ2V0Tm9kZVpsaWIoKTtcbiAgY29uc3QgbGV2ZWwgPSB6Py5jb25zdGFudHM/LlpTVERfY19jb21wcmVzc2lvbkxldmVsO1xuICBjb25zdCBvcHRzID1cbiAgICBsZXZlbCAhPT0gdW5kZWZpbmVkID8geyBwYXJhbXM6IHsgW2xldmVsXTogWlNURF9MRVZFTCB9IH0gOiB1bmRlZmluZWQ7XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N0eWxlL25vTm9uTnVsbEFzc2VydGlvbjogZ3VhcmRlZCBieSBpc1pzdGRBdmFpbGFibGUoKVxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoeiEuenN0ZENvbXByZXNzU3luYyEoZGF0YSwgb3B0cykpO1xufVxuXG5mdW5jdGlvbiB1bnpzdGRCeXRlcyhkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gIGNvbnN0IHogPSBnZXROb2RlWmxpYigpO1xuICBpZiAoIXo/LnpzdGREZWNvbXByZXNzU3luYykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDb21wcmVzc2VkICh6c3RkKSB3b3JrZmxvdyBkYXRhIGVuY291bnRlcmVkIGJ1dCBub2RlOnpsaWIgenN0ZCAnICtcbiAgICAgICAgJ3N1cHBvcnQgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIHJ1bnRpbWUgKHJlcXVpcmVzIE5vZGUuanMgMjIuMTUrKS4gJyArXG4gICAgICAgICdJbiB0aGUgYnJvd3NlciwgcmVnaXN0ZXIgYSB6c3RkIGRlY29kZXIgdmlhIHJlZ2lzdGVyWnN0ZERlY29kZXIgJyArXG4gICAgICAgICcoc2VyaWFsaXphdGlvbi1mb3JtYXQudHMpLidcbiAgICApO1xuICB9XG4gIHJldHVybiBuZXcgVWludDhBcnJheSh6LnpzdGREZWNvbXByZXNzU3luYyhkYXRhKSk7XG59XG5cbi8qKlxuICogVGVsZW1ldHJ5IHNpbmsgZGVzY3JpYmluZyB3aGF0IHRoZSBjb21wcmVzc2lvbiBsYXllciBkaWQgdG8gYSBwYXlsb2FkLlxuICogUG9wdWxhdGVkIGJ5IHtAbGluayBjb21wcmVzc30gKHdyaXRlKSBhbmQge0BsaW5rIGRlY29tcHJlc3N9IChyZWFkKSB3aGVuXG4gKiBhIGBzdGF0c2Agb2JqZWN0IGlzIHBhc3NlZC4gU2l6ZXMgYXJlIG1lYXN1cmVkIGF0IHRoZSBjb21wcmVzc2lvblxuICogYm91bmRhcnkg4oCUIGkuZS4gYmVmb3JlIGVuY3J5cHRpb24gaXMgbGF5ZXJlZCBvbiB0aGUgd3JpdGUgc2lkZSBhbmQgYWZ0ZXJcbiAqIGRlY3J5cHRpb24gb24gdGhlIHJlYWQgc2lkZSDigJQgc28gdGhleSByZWZsZWN0IGNvbXByZXNzaW9uJ3MgZWZmZWN0LCBub3RcbiAqIHRoZSBhdC1yZXN0IHNpemUgKHdoaWNoIGFsc28gaW5jbHVkZXMgdGhlIGBlbmNyYCBlbnZlbG9wZSBhbmQsIG9uIHNvbWVcbiAqIGJhY2tlbmRzLCBiYXNlNjQgZXhwYW5zaW9uKS5cbiAqXG4gKiBGaWVsZCBtZWFuaW5ncyBhcmUgaWRlbnRpY2FsIGZvciBib3RoIGRpcmVjdGlvbnM6XG4gKiAtIGB1bmNvbXByZXNzZWRCeXRlc2A6IHRoZSBsb2dpY2FsIChkZXZhbHVlLXByZWZpeGVkKSBwYXlsb2FkIHNpemUuXG4gKiAtIGBzdG9yZWRCeXRlc2A6IHRoZSBzaXplIGhhbmRlZCB0byAvIHJlYWQgZnJvbSBzdG9yYWdlIChjb21wcmVzc2VkIHdoZW5cbiAqICAgYSBjb2RlYyBhcHBsaWVkLCBvdGhlcndpc2UgZXF1YWwgdG8gYHVuY29tcHJlc3NlZEJ5dGVzYCkuXG4gKiAtIGBjb2RlY2A6IHdoaWNoIGNvZGVjIGFwcGxpZWQgKGBub25lYCB3aGVuIHN0b3JlZCB1bmNvbXByZXNzZWQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXByZXNzaW9uU3RhdHMge1xuICAvKiogVHJ1ZSBvbmNlIHRoZSBjb21wcmVzc2lvbiBsYXllciByYW4gKGkuZS4gc2F3IGJpbmFyeSBkYXRhKS4gKi9cbiAgcmVjb3JkZWQ/OiBib29sZWFuO1xuICAvKiogV2hldGhlciBhIGNvZGVjIHdhcyBhcHBsaWVkICh3cml0ZSkgb3IgcHJlc2VudCAocmVhZCkuICovXG4gIGNvbXByZXNzZWQ/OiBib29sZWFuO1xuICAvKiogV2hpY2ggY29kZWMgYXBwbGllZCAvIHdhcyBwcmVzZW50LiAqL1xuICBjb2RlYz86IENvbXByZXNzaW9uQ29kZWM7XG4gIC8qKiBMb2dpY2FsLCB1bmNvbXByZXNzZWQgcGF5bG9hZCBzaXplIGluIGJ5dGVzLiAqL1xuICB1bmNvbXByZXNzZWRCeXRlcz86IG51bWJlcjtcbiAgLyoqIFN0b3JlZCAocG9zdC1jb21wcmVzc2lvbikgcGF5bG9hZCBzaXplIGluIGJ5dGVzLiAqL1xuICBzdG9yZWRCeXRlcz86IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcmVjb3JkU3RhdHMoXG4gIHN0YXRzOiBDb21wcmVzc2lvblN0YXRzIHwgdW5kZWZpbmVkLFxuICBjb2RlYzogQ29tcHJlc3Npb25Db2RlYyxcbiAgdW5jb21wcmVzc2VkQnl0ZXM6IG51bWJlcixcbiAgc3RvcmVkQnl0ZXM6IG51bWJlclxuKTogdm9pZCB7XG4gIGlmICghc3RhdHMpIHJldHVybjtcbiAgc3RhdHMucmVjb3JkZWQgPSB0cnVlO1xuICBzdGF0cy5jb21wcmVzc2VkID0gY29kZWMgIT09ICdub25lJztcbiAgc3RhdHMuY29kZWMgPSBjb2RlYztcbiAgc3RhdHMudW5jb21wcmVzc2VkQnl0ZXMgPSB1bmNvbXByZXNzZWRCeXRlcztcbiAgc3RhdHMuc3RvcmVkQnl0ZXMgPSBzdG9yZWRCeXRlcztcbn1cblxuLyoqXG4gKiBDaG9vc2UgdGhlIHdyaXRlLXNpZGUgY29kZWMgZ2l2ZW4gcnVudGltZSBhdmFpbGFiaWxpdHkgYW5kIHRoZSBvcHRpb25hbFxuICogZW52IG92ZXJyaWRlLiB6c3RkIGlzIHByZWZlcnJlZDsgZ3ppcCBpcyB0aGUgcG9ydGFibGUgZmFsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIHNlbGVjdFdyaXRlQ29kZWMoKTogJ3pzdGQnIHwgJ2d6aXAnIHwgJ25vbmUnIHtcbiAgY29uc3Qgb3ZlcnJpZGUgPSBjb2RlY092ZXJyaWRlRnJvbUVudigpO1xuICBpZiAob3ZlcnJpZGUgPT09ICdnemlwJykgcmV0dXJuIGlzR3ppcEF2YWlsYWJsZSgpID8gJ2d6aXAnIDogJ25vbmUnO1xuICAvLyBEZWZhdWx0IGFuZCBleHBsaWNpdCAnenN0ZCcgYm90aCBwcmVmZXIgenN0ZCwgdGhlbiBmYWxsIGJhY2sgdG8gZ3ppcC5cbiAgaWYgKGlzWnN0ZEF2YWlsYWJsZSgpKSByZXR1cm4gJ3pzdGQnO1xuICBpZiAoaXNHemlwQXZhaWxhYmxlKCkpIHJldHVybiAnZ3ppcCc7XG4gIHJldHVybiAnbm9uZSc7XG59XG5cbi8qKlxuICogQ29tcHJlc3MgYSBmb3JtYXQtcHJlZml4ZWQgcGF5bG9hZCBpZiBjb21wcmVzc2lvbiBpcyBlbmFibGVkIGZvciB0aGVcbiAqIHRhcmdldCBydW4gYW5kIHRoZSBwYXlsb2FkIGlzIHdvcnRoIGNvbXByZXNzaW5nLlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGZvcm1hdC1wcmVmaXhlZCBzZXJpYWxpemVkIGRhdGEgKGUuZy4gJ2RldmwnICsgYnl0ZXMpXG4gKiBAcGFyYW0gZW5hYmxlZCAtIFdoZXRoZXIgdGhlIHRhcmdldCBydW4gc3VwcG9ydHMgY29tcHJlc3NlZCBwYXlsb2Fkc1xuICogICAocnVuIHNwZWNWZXJzaW9uID49IFNQRUNfVkVSU0lPTl9TVVBQT1JUU19DT01QUkVTU0lPTiwgYW5kIGZvclxuICogICBjcm9zcy1kZXBsb3ltZW50IHdyaXRlcywgdGhlIHRhcmdldCBkZXBsb3ltZW50J3MgY2FwYWJpbGl0aWVzIOKAlFxuICogICBzZWUgYGdldFJ1bkNhcGFiaWxpdGllc2AgaW4gY2FwYWJpbGl0aWVzLnRzKS4genN0ZCBhbmQgZ3ppcCByZWFkXG4gKiAgIHN1cHBvcnQgY28tc2hpcCwgc28gYSBzaW5nbGUgYm9vbGVhbiBpcyBzdWZmaWNpZW50LlxuICogQHBhcmFtIHN0YXRzIC0gT3B0aW9uYWwgdGVsZW1ldHJ5IHNpbms7IHBvcHVsYXRlZCB3aGVuIGBkYXRhYCBpcyBiaW5hcnkuXG4gKiBAcmV0dXJucyBUaGUgY29tcHJlc3NlZCBkYXRhIHdpdGggYSBjb2RlYyBwcmVmaXgsIG9yIHRoZSBvcmlnaW5hbCBkYXRhXG4gKiAgIHdoZW4gY29tcHJlc3Npb24gaXMgZGlzYWJsZWQsIHVuYXZhaWxhYmxlLCBvciBub3Qgd29ydGh3aGlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbXByZXNzKFxuICBkYXRhOiBVaW50OEFycmF5IHwgdW5rbm93bixcbiAgZW5hYmxlZDogYm9vbGVhbixcbiAgc3RhdHM/OiBDb21wcmVzc2lvblN0YXRzXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIGlmICghKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkgcmV0dXJuIGRhdGE7XG4gIC8vIEZyb20gaGVyZSBgZGF0YWAgaXMgYmluYXJ5LCBzbyBldmVyeSByZXR1cm4gcGF0aCByZWNvcmRzIHN0YXRzLlxuICBpZiAoXG4gICAgIWVuYWJsZWQgfHxcbiAgICBkYXRhLmxlbmd0aCA8IENPTVBSRVNTSU9OX01JTl9CWVRFUyB8fFxuICAgIGlzQ29tcHJlc3Npb25EaXNhYmxlZEJ5RW52KClcbiAgKSB7XG4gICAgcmVjb3JkU3RhdHMoc3RhdHMsICdub25lJywgZGF0YS5sZW5ndGgsIGRhdGEubGVuZ3RoKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGNvbnN0IGNvZGVjID0gc2VsZWN0V3JpdGVDb2RlYygpO1xuICBpZiAoY29kZWMgPT09ICdub25lJykge1xuICAgIHJlY29yZFN0YXRzKHN0YXRzLCAnbm9uZScsIGRhdGEubGVuZ3RoLCBkYXRhLmxlbmd0aCk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBjb25zdCBjb21wcmVzc2VkID0gY29kZWMgPT09ICd6c3RkJyA/IHpzdGRCeXRlcyhkYXRhKSA6IGF3YWl0IGd6aXBCeXRlcyhkYXRhKTtcbiAgY29uc3QgZm9ybWF0ID1cbiAgICBjb2RlYyA9PT0gJ3pzdGQnID8gU2VyaWFsaXphdGlvbkZvcm1hdC5aU1REIDogU2VyaWFsaXphdGlvbkZvcm1hdC5HWklQO1xuICBjb25zdCB3cmFwcGVkTGVuZ3RoID0gNCArIGNvbXByZXNzZWQubGVuZ3RoOyAvLyBmb3JtYXQgcHJlZml4ICsgcGF5bG9hZFxuICBpZiAod3JhcHBlZExlbmd0aCA+PSBkYXRhLmxlbmd0aCAqICgxIC0gQ09NUFJFU1NJT05fTUlOX1NBVklOR1NfUkFUSU8pKSB7XG4gICAgcmVjb3JkU3RhdHMoc3RhdHMsICdub25lJywgZGF0YS5sZW5ndGgsIGRhdGEubGVuZ3RoKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICByZWNvcmRTdGF0cyhzdGF0cywgY29kZWMsIGRhdGEubGVuZ3RoLCB3cmFwcGVkTGVuZ3RoKTtcbiAgcmV0dXJuIGVuY29kZVdpdGhGb3JtYXRQcmVmaXgoZm9ybWF0LCBjb21wcmVzc2VkKTtcbn1cblxuLyoqXG4gKiBEZWNvbXByZXNzIGEgZm9ybWF0LXByZWZpeGVkIHBheWxvYWQgaWYgaXQncyBjb21wcmVzc2VkLlxuICogRGlzcGF0Y2hlcyBvbiB0aGUgcHJlZml4ICgnenN0ZCcgb3IgJ2d6aXAnKSBhbmQgaW5mbGF0ZXMgdGhlIGlubmVyXG4gKiBwYXlsb2FkICh3aGljaCBjYXJyaWVzIGl0cyBvd24gZm9ybWF0IHByZWZpeCwgZS5nLiAnZGV2bCcpLlxuICpcbiAqIE5vbi1jb21wcmVzc2VkIGRhdGEgKGluY2x1ZGluZyBub24tYmluYXJ5IGxlZ2FjeSBkYXRhKSBpcyByZXR1cm5lZFxuICogdW5jaGFuZ2VkLCBzbyB0aGlzIGlzIHNhZmUgdG8gYXBwbHkgdW5jb25kaXRpb25hbGx5IG9uIHJlYWQgcGF0aHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNvbXByZXNzKFxuICBkYXRhOiBVaW50OEFycmF5IHwgdW5rbm93bixcbiAgc3RhdHM/OiBDb21wcmVzc2lvblN0YXRzXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIGlmICghKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkgcmV0dXJuIGRhdGE7XG4gIGNvbnN0IHByZWZpeCA9IHBlZWtGb3JtYXRQcmVmaXgoZGF0YSk7XG5cbiAgaWYgKHByZWZpeCA9PT0gU2VyaWFsaXphdGlvbkZvcm1hdC5aU1REKSB7XG4gICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkZWNvZGVGb3JtYXRQcmVmaXgoZGF0YSk7XG4gICAgY29uc3QgaW5mbGF0ZWQgPSB1bnpzdGRCeXRlcyhwYXlsb2FkKTtcbiAgICByZWNvcmRTdGF0cyhzdGF0cywgJ3pzdGQnLCBpbmZsYXRlZC5sZW5ndGgsIGRhdGEubGVuZ3RoKTtcbiAgICByZXR1cm4gaW5mbGF0ZWQ7XG4gIH1cblxuICBpZiAocHJlZml4ID09PSBTZXJpYWxpemF0aW9uRm9ybWF0LkdaSVApIHtcbiAgICBpZiAoIWlzR3ppcEF2YWlsYWJsZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDb21wcmVzc2VkIChnemlwKSB3b3JrZmxvdyBkYXRhIGVuY291bnRlcmVkIGJ1dCBEZWNvbXByZXNzaW9uU3RyZWFtICcgK1xuICAgICAgICAgICdpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgcnVudGltZS4gTm9kZS5qcyAxOCssIGJyb3dzZXJzLCBhbmQgZWRnZSAnICtcbiAgICAgICAgICAncnVudGltZXMgYWxsIHN1cHBvcnQgaXQuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkZWNvZGVGb3JtYXRQcmVmaXgoZGF0YSk7XG4gICAgY29uc3QgaW5mbGF0ZWQgPSBhd2FpdCBndW56aXBCeXRlcyhwYXlsb2FkKTtcbiAgICByZWNvcmRTdGF0cyhzdGF0cywgJ2d6aXAnLCBpbmZsYXRlZC5sZW5ndGgsIGRhdGEubGVuZ3RoKTtcbiAgICByZXR1cm4gaW5mbGF0ZWQ7XG4gIH1cblxuICByZWNvcmRTdGF0cyhzdGF0cywgJ25vbmUnLCBkYXRhLmxlbmd0aCwgZGF0YS5sZW5ndGgpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBkYXRhIGlzIGNvbXByZXNzZWQgKGhhcyBhICd6c3RkJyBvciAnZ3ppcCcgZm9ybWF0IHByZWZpeCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbXByZXNzZWQoZGF0YTogVWludDhBcnJheSB8IHVua25vd24pOiBib29sZWFuIHtcbiAgY29uc3QgcHJlZml4ID0gcGVla0Zvcm1hdFByZWZpeChkYXRhKTtcbiAgcmV0dXJuIChcbiAgICBwcmVmaXggPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuWlNURCB8fCBwcmVmaXggPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuR1pJUFxuICApO1xufVxuIl19
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9jb21wcmVzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNHO0FBRUgsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO0FBRTFDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDO0FBRWxELHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFLckI7Ozs7R0FJRztBQUNILFNBQVMsMEJBQTBCO0lBQ2pDLElBQUksQ0FBQztRQUNILE9BQU8sQ0FDTCxPQUFPLE9BQU8sS0FBSyxXQUFXO1lBQzlCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLEtBQUssR0FBRyxDQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxvQkFBb0I7SUFDM0IsSUFBSSxDQUFDO1FBQ0gsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQztRQUNsRCxPQUFPLENBQUMsS0FBSyxNQUFNLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FB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YixzRUFBc0U7Z0JBQ3BFLG9FQUFvRTtnQkFDcEUsMEJBQTBCLENBQzdCLENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBMEI7SUFDckQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsT0FBTyxDQUNMLE1BQU0sS0FBSyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLG1CQUFtQixDQUFDLElBQUksQ0FDM0UsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXBvc2FibGUgY29tcHJlc3Npb24gbGF5ZXIgZm9yIHNlcmlhbGl6ZWQgZGF0YS5cbiAqXG4gKiBXcmFwcy91bndyYXBzIHNlcmlhbGl6ZWQgcGF5bG9hZHMgd2l0aCBhIGNvbXByZXNzaW9uIGNvZGVjLCB1c2luZyB0aGVcbiAqIGZvcm1hdCBwcmVmaXggc3lzdGVtIHRvIG1hcmsgY29tcHJlc3NlZCBkYXRhIChlLmcuICd6c3RkJyBvciAnZ3ppcCdcbiAqIHdyYXBwaW5nIHRoZSBpbm5lciBmb3JtYXQ6ICd6c3RkJyArIHpzdGQoJ2RldmwnICsgcGF5bG9hZCkpLlxuICpcbiAqIENvZGVjIHNlbGVjdGlvbiAod3JpdGUgc2lkZSk6IHpzdGQgaXMgcHJlZmVycmVkIGJlY2F1c2UgaXQgaXMgbWFya2VkbHlcbiAqIGZhc3RlciB0aGFuIGd6aXAgYXQgYSBjb21wYXJhYmxlLW9yLWJldHRlciByYXRpbyAoc2VlIHNjcmlwdHMvUkVBRE1FLm1kKSxcbiAqIGFuZCBjb21wcmVzc2lvbiBydW5zIGF0IGV2ZXJ5IHN0ZXAgYm91bmRhcnkgc28gdGhlIHdyaXRlIENQVSBpcyBhXG4gKiBwZXItc3RlcCB0YXguIHpzdGQgcmVxdWlyZXMgYG5vZGU6emxpYmAgPj0gMjIuMTUgKFdlYlxuICogYENvbXByZXNzaW9uU3RyZWFtYCBoYXMgbm8genN0ZCksIHNvIG9uIGEgcnVudGltZSB3aXRob3V0IGl0IHdlIGZhbGwgYmFja1xuICogdG8gZ3ppcCB2aWEgdGhlIHBvcnRhYmxlXG4gKiBgQ29tcHJlc3Npb25TdHJlYW1gLiBgV09SS0ZMT1dfQ09NUFJFU1NJT05fQ09ERUM9Z3ppcGAgZm9yY2VzIHRoZVxuICogcG9ydGFibGUgY29kZWMuXG4gKlxuICogUmVhZCBzaWRlOiBkaXNwYXRjaCBvbiB0aGUgZm9ybWF0IHByZWZpeCwgc28gYm90aCAnenN0ZCcgYW5kICdnemlwJ1xuICogcGF5bG9hZHMgYXJlIGFsd2F5cyBkZWNvZGFibGUgcmVnYXJkbGVzcyBvZiB3aGljaCBjb2RlYyB3cm90ZSB0aGVtLlxuICogKFRoZSBicm93c2VyIG8xMXkgcmVhZCBwYXRoIGRlY29kZXMgenN0ZCB2aWEgYSByZWdpc3RlcmVkIFdBU00gZGVjb2RlcixcbiAqIHNlZSBgc2VyaWFsaXphdGlvbi1mb3JtYXQudHNgOyB0aGlzIG1vZHVsZSdzIGBkZWNvbXByZXNzYCBpcyB0aGUgTm9kZVxuICogcnVudGltZS9yZXBsYXkgcGF0aCBhbmQgdXNlcyBgbm9kZTp6bGliYC4pXG4gKlxuICogTGF5ZXJpbmcgb3JkZXIgd2l0aCBlbmNyeXB0aW9uOiBjb21wcmVzc2lvbiBpcyBhcHBsaWVkIEJFRk9SRVxuICogZW5jcnlwdGlvbiAoZW5jcih6c3RkKGRldmwpKSk6IGVuY3J5cHRlZCBieXRlcyBhcmUgaGlnaC1lbnRyb3B5IGFuZFxuICogZG8gbm90IGNvbXByZXNzLCBzbyB0aGUgcmV2ZXJzZSBvcmRlciB3b3VsZCBiZSBhIG5vLW9wLlxuICpcbiAqIENvbXByZXNzaW9uIGlzIGNvbmRpdGlvbmFsOlxuICogLSBQYXlsb2FkcyBzbWFsbGVyIHRoYW4ge0BsaW5rIENPTVBSRVNTSU9OX01JTl9CWVRFU30gYXJlIHBhc3NlZFxuICogICB0aHJvdWdoIHVuY2hhbmdlZCAoY29kZWMgb3ZlcmhlYWQgaXNuJ3Qgd29ydGggaXQpLlxuICogLSBJZiB0aGUgY29tcHJlc3NlZCByZXN1bHQgaXNuJ3QgbWVhbmluZ2Z1bGx5IHNtYWxsZXIgdGhhbiB0aGVcbiAqICAgb3JpZ2luYWwgKHNlZSB7QGxpbmsgQ09NUFJFU1NJT05fTUlOX1NBVklOR1NfUkFUSU99KSwgdGhlIG9yaWdpbmFsXG4gKiAgIGlzIGtlcHQuIFRoaXMgcHJvdGVjdHMgYWxyZWFkeS1jb21wcmVzc2VkIGJpbmFyeSBwYXlsb2FkcyAoaW1hZ2VzLFxuICogICBhcmNoaXZlcywgZXRjLikgZnJvbSB3YXN0ZWQgQ1BVIGFuZCBzaXplIGluZmxhdGlvbi5cbiAqL1xuXG5pbXBvcnQge1xuICBkZWNvZGVGb3JtYXRQcmVmaXgsXG4gIGVuY29kZVdpdGhGb3JtYXRQcmVmaXgsXG4gIHBlZWtGb3JtYXRQcmVmaXgsXG59IGZyb20gJy4vZm9ybWF0LmpzJztcbmltcG9ydCB7IFNlcmlhbGl6YXRpb25Gb3JtYXQgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqXG4gKiBQYXlsb2FkcyBiZWxvdyB0aGlzIHNpemUgYXJlIG5ldmVyIGNvbXByZXNzZWQuIFRoZSA0LWJ5dGUgZm9ybWF0XG4gKiBwcmVmaXggKyBjb2RlYyBoZWFkZXIvdHJhaWxlciBvdmVyaGVhZCBtZWFucyBzbWFsbCBwYXlsb2FkcyBnYWluXG4gKiBub3RoaW5nLCBhbmQgdGlueSBvbmVzIHdvdWxkIGdyb3cuXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QUkVTU0lPTl9NSU5fQllURVMgPSAxMDI0O1xuXG4vKipcbiAqIENvbXByZXNzaW9uIG11c3Qgc2hhdmUgb2ZmIGF0IGxlYXN0IHRoaXMgZnJhY3Rpb24gb2YgdGhlIHBheWxvYWRcbiAqIHNpemUgdG8gYmUga2VwdDsgb3RoZXJ3aXNlIHRoZSB1bmNvbXByZXNzZWQgb3JpZ2luYWwgaXMgc3RvcmVkLlxuICogR3VhcmRzIGFnYWluc3QgaW5jb21wcmVzc2libGUgKGFscmVhZHktY29tcHJlc3NlZCAvIGhpZ2gtZW50cm9weSlcbiAqIGRhdGEgcGF5aW5nIGEgcGVybWFuZW50IGRlY29tcHJlc3Npb24gdGF4IGZvciBhIG5lZ2xpZ2libGUgd2luLlxuICovXG5leHBvcnQgY29uc3QgQ09NUFJFU1NJT05fTUlOX1NBVklOR1NfUkFUSU8gPSAwLjA1O1xuXG4vKiogRGVmYXVsdCB6c3RkIGNvbXByZXNzaW9uIGxldmVsOiB0aGUgc3dlZXQgc3BvdCBvZiBzcGVlZCB2cyByYXRpby4gKi9cbmNvbnN0IFpTVERfTEVWRUwgPSAzO1xuXG4vKiogV2hpY2ggY29kZWMgY29tcHJlc3NlZCBhIHBheWxvYWQgKG9yIGBub25lYCB3aGVuIHN0b3JlZCB1bmNvbXByZXNzZWQpLiAqL1xuZXhwb3J0IHR5cGUgQ29tcHJlc3Npb25Db2RlYyA9ICd6c3RkJyB8ICdnemlwJyB8ICdub25lJztcblxuLyoqXG4gKiBFc2NhcGUgaGF0Y2g6IHNldCBXT1JLRkxPV19ESVNBQkxFX0NPTVBSRVNTSU9OPTEgdG8gZGlzYWJsZVxuICogd3JpdGUtc2lkZSBjb21wcmVzc2lvbiBlbnRpcmVseS4gUmVhZHMgYXJlIHVuYWZmZWN0ZWQ6IHBheWxvYWRzXG4gKiB0aGF0IHdlcmUgYWxyZWFkeSB3cml0dGVuIGNvbXByZXNzZWQgcmVtYWluIHJlYWRhYmxlLlxuICovXG5mdW5jdGlvbiBpc0NvbXByZXNzaW9uRGlzYWJsZWRCeUVudigpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICBwcm9jZXNzLmVudj8uV09SS0ZMT1dfRElTQUJMRV9DT01QUkVTU0lPTiA9PT0gJzEnXG4gICAgKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9uYWwgY29kZWMgb3ZlcnJpZGUgKGBXT1JLRkxPV19DT01QUkVTU0lPTl9DT0RFQz1nemlwfHpzdGRgKS4gTGV0cyBhblxuICogb3BlcmF0b3IgcGluIHRoZSBwb3J0YWJsZSBjb2RlYyAoZ3ppcCksIHVzZWZ1bCBmb3IgQS9CIGNvbXBhcmlzb25zIG9yXG4gKiBydW50aW1lcyB3aGVyZSB6c3RkIHJlYWQgc3VwcG9ydCBpc24ndCB5ZXQgZXZlcnl3aGVyZS5cbiAqL1xuZnVuY3Rpb24gY29kZWNPdmVycmlkZUZyb21FbnYoKTogJ2d6aXAnIHwgJ3pzdGQnIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2ID0gcHJvY2Vzcy5lbnY/LldPUktGTE9XX0NPTVBSRVNTSU9OX0NPREVDO1xuICAgIHJldHVybiB2ID09PSAnZ3ppcCcgfHwgdiA9PT0gJ3pzdGQnID8gdiA6IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5pbnRlcmZhY2UgTm9kZVpsaWIge1xuICB6c3RkQ29tcHJlc3NTeW5jPzogKGRhdGE6IFVpbnQ4QXJyYXksIG9wdHM/OiB1bmtub3duKSA9PiBVaW50OEFycmF5O1xuICB6c3RkRGVjb21wcmVzc1N5bmM/OiAoZGF0YTogVWludDhBcnJheSkgPT4gVWludDhBcnJheTtcbiAgY29uc3RhbnRzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGBub2RlOnpsaWJgIHZpYSBgcHJvY2Vzcy5nZXRCdWlsdGluTW9kdWxlYDogbm8gc3RhdGljIGltcG9ydCwgc29cbiAqIHRoaXMgbW9kdWxlIHN0YXlzIGJ1bmRsZXItc2FmZSBmb3IgYnJvd3Nlci9lZGdlIHRhcmdldHMgKHdoZXJlIGl0IHJldHVybnNcbiAqIHVuZGVmaW5lZCBhbmQgd2UgZmFsbCBiYWNrIHRvIGd6aXApLlxuICovXG5mdW5jdGlvbiBnZXROb2RlWmxpYigpOiBOb2RlWmxpYiB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdsb2JhbFRoaXMgYXMge1xuICAgICAgICBwcm9jZXNzPzogeyBnZXRCdWlsdGluTW9kdWxlPzogKGlkOiBzdHJpbmcpID0+IE5vZGVabGliIH07XG4gICAgICB9XG4gICAgKS5wcm9jZXNzPy5nZXRCdWlsdGluTW9kdWxlPy4oJ25vZGU6emxpYicpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzWnN0ZEF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgY29uc3QgeiA9IGdldE5vZGVabGliKCk7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHo/LnpzdGRDb21wcmVzc1N5bmMgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2Ygej8uenN0ZERlY29tcHJlc3NTeW5jID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG5cbi8qKlxuICogZ3ppcCB2aWEgdGhlIHdlYi1zdGFuZGFyZCBgQ29tcHJlc3Npb25TdHJlYW1gIChOb2RlIDE4KywgYnJvd3NlcnMsIGVkZ2UpLlxuICovXG5mdW5jdGlvbiBpc0d6aXBBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIENvbXByZXNzaW9uU3RyZWFtID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIERlY29tcHJlc3Npb25TdHJlYW0gPT09ICdmdW5jdGlvbidcbiAgKTtcbn1cblxuLyoqXG4gKiBQaXBlIGJ5dGVzIHRocm91Z2ggYSAoRGUpQ29tcHJlc3Npb25TdHJlYW0gYW5kIGNvbGxlY3QgdGhlIG91dHB1dC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcGlwZVRocm91Z2hUcmFuc2Zvcm0oXG4gIGRhdGE6IFVpbnQ4QXJyYXksXG4gIHRyYW5zZm9ybToge1xuICAgIHJlYWRhYmxlOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5PjtcbiAgICB3cml0YWJsZTogV3JpdGFibGVTdHJlYW08VWludDhBcnJheT47XG4gIH1cbik6IFByb21pc2U8VWludDhBcnJheT4ge1xuICBjb25zdCB3cml0ZXIgPSB0cmFuc2Zvcm0ud3JpdGFibGUuZ2V0V3JpdGVyKCk7XG4gIC8vIERvbid0IGF3YWl0IHRoZSB3cml0ZSBiZWZvcmUgcmVhZGluZzogdGhlIHRyYW5zZm9ybSdzIGludGVybmFsXG4gIC8vIHF1ZXVlIGNhbiBmaWxsIHVwIG9uIGxhcmdlIHBheWxvYWRzLCBkZWFkbG9ja2luZyB3cml0ZXIgdnMgcmVhZGVyLlxuICBjb25zdCB3cml0ZVByb21pc2UgPSB3cml0ZXIud3JpdGUoZGF0YSkudGhlbigoKSA9PiB3cml0ZXIuY2xvc2UoKSk7XG4gIC8vIElmIHRoZSB0cmFuc2Zvcm0gZXJyb3JzLCB0aGUgcmVhZGVyLnJlYWQoKSBiZWxvdyByZWplY3RzIGZpcnN0IGFuZFxuICAvLyBwcm9wYWdhdGVzOyBtYXJrIHRoZSB3cml0ZSBzaWRlIGFzIGhhbmRsZWQgc28gdGhlIG1pcnJvcmVkIHJlamVjdGlvblxuICAvLyBkb2Vzbid0IHN1cmZhY2UgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgd3JpdGVQcm9taXNlLmNhdGNoKCgpID0+IHt9KTtcbiAgY29uc3QgY2h1bmtzOiBVaW50OEFycmF5W10gPSBbXTtcbiAgbGV0IHRvdGFsID0gMDtcbiAgY29uc3QgcmVhZGVyID0gdHJhbnNmb3JtLnJlYWRhYmxlLmdldFJlYWRlcigpO1xuICBmb3IgKDs7KSB7XG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICBpZiAoZG9uZSkgYnJlYWs7XG4gICAgY2h1bmtzLnB1c2godmFsdWUpO1xuICAgIHRvdGFsICs9IHZhbHVlLmxlbmd0aDtcbiAgfVxuICBhd2FpdCB3cml0ZVByb21pc2U7XG4gIGNvbnN0IG91dCA9IG5ldyBVaW50OEFycmF5KHRvdGFsKTtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7XG4gICAgb3V0LnNldChjaHVuaywgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gY2h1bmsubGVuZ3RoO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGd6aXBCeXRlcyhkYXRhOiBVaW50OEFycmF5KTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIHJldHVybiBwaXBlVGhyb3VnaFRyYW5zZm9ybShkYXRhLCBuZXcgQ29tcHJlc3Npb25TdHJlYW0oJ2d6aXAnKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGd1bnppcEJ5dGVzKGRhdGE6IFVpbnQ4QXJyYXkpOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgcmV0dXJuIHBpcGVUaHJvdWdoVHJhbnNmb3JtKGRhdGEsIG5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKCdnemlwJykpO1xufVxuXG5mdW5jdGlvbiB6c3RkQnl0ZXMoZGF0YTogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCB6ID0gZ2V0Tm9kZVpsaWIoKTtcbiAgY29uc3QgbGV2ZWwgPSB6Py5jb25zdGFudHM/LlpTVERfY19jb21wcmVzc2lvbkxldmVsO1xuICBjb25zdCBvcHRzID1cbiAgICBsZXZlbCAhPT0gdW5kZWZpbmVkID8geyBwYXJhbXM6IHsgW2xldmVsXTogWlNURF9MRVZFTCB9IH0gOiB1bmRlZmluZWQ7XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N0eWxlL25vTm9uTnVsbEFzc2VydGlvbjogZ3VhcmRlZCBieSBpc1pzdGRBdmFpbGFibGUoKVxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoeiEuenN0ZENvbXByZXNzU3luYyEoZGF0YSwgb3B0cykpO1xufVxuXG5mdW5jdGlvbiB1bnpzdGRCeXRlcyhkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gIGNvbnN0IHogPSBnZXROb2RlWmxpYigpO1xuICBpZiAoIXo/LnpzdGREZWNvbXByZXNzU3luYykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDb21wcmVzc2VkICh6c3RkKSB3b3JrZmxvdyBkYXRhIGVuY291bnRlcmVkIGJ1dCBub2RlOnpsaWIgenN0ZCAnICtcbiAgICAgICAgJ3N1cHBvcnQgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIHJ1bnRpbWUgKHJlcXVpcmVzIE5vZGUuanMgMjIuMTUrKS4gJyArXG4gICAgICAgICdJbiB0aGUgYnJvd3NlciwgcmVnaXN0ZXIgYSB6c3RkIGRlY29kZXIgdmlhIHJlZ2lzdGVyWnN0ZERlY29kZXIgJyArXG4gICAgICAgICcoc2VyaWFsaXphdGlvbi1mb3JtYXQudHMpLidcbiAgICApO1xuICB9XG4gIHJldHVybiBuZXcgVWludDhBcnJheSh6LnpzdGREZWNvbXByZXNzU3luYyhkYXRhKSk7XG59XG5cbi8qKlxuICogVGVsZW1ldHJ5IHNpbmsgZGVzY3JpYmluZyB3aGF0IHRoZSBjb21wcmVzc2lvbiBsYXllciBkaWQgdG8gYSBwYXlsb2FkLlxuICogUG9wdWxhdGVkIGJ5IHtAbGluayBjb21wcmVzc30gKHdyaXRlKSBhbmQge0BsaW5rIGRlY29tcHJlc3N9IChyZWFkKSB3aGVuXG4gKiBhIGBzdGF0c2Agb2JqZWN0IGlzIHBhc3NlZC4gU2l6ZXMgYXJlIG1lYXN1cmVkIGF0IHRoZSBjb21wcmVzc2lvblxuICogYm91bmRhcnkgKGkuZS4gYmVmb3JlIGVuY3J5cHRpb24gaXMgbGF5ZXJlZCBvbiB0aGUgd3JpdGUgc2lkZSBhbmQgYWZ0ZXJcbiAqIGRlY3J5cHRpb24gb24gdGhlIHJlYWQgc2lkZSksIHNvIHRoZXkgcmVmbGVjdCBjb21wcmVzc2lvbidzIGVmZmVjdCwgbm90XG4gKiB0aGUgYXQtcmVzdCBzaXplICh3aGljaCBhbHNvIGluY2x1ZGVzIHRoZSBgZW5jcmAgZW52ZWxvcGUgYW5kLCBvbiBzb21lXG4gKiBiYWNrZW5kcywgYmFzZTY0IGV4cGFuc2lvbikuXG4gKlxuICogRmllbGQgbWVhbmluZ3MgYXJlIGlkZW50aWNhbCBmb3IgYm90aCBkaXJlY3Rpb25zOlxuICogLSBgdW5jb21wcmVzc2VkQnl0ZXNgOiB0aGUgbG9naWNhbCAoZGV2YWx1ZS1wcmVmaXhlZCkgcGF5bG9hZCBzaXplLlxuICogLSBgc3RvcmVkQnl0ZXNgOiB0aGUgc2l6ZSBoYW5kZWQgdG8gLyByZWFkIGZyb20gc3RvcmFnZSAoY29tcHJlc3NlZCB3aGVuXG4gKiAgIGEgY29kZWMgYXBwbGllZCwgb3RoZXJ3aXNlIGVxdWFsIHRvIGB1bmNvbXByZXNzZWRCeXRlc2ApLlxuICogLSBgY29kZWNgOiB3aGljaCBjb2RlYyBhcHBsaWVkIChgbm9uZWAgd2hlbiBzdG9yZWQgdW5jb21wcmVzc2VkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wcmVzc2lvblN0YXRzIHtcbiAgLyoqIFRydWUgb25jZSB0aGUgY29tcHJlc3Npb24gbGF5ZXIgcmFuIChpLmUuIHNhdyBiaW5hcnkgZGF0YSkuICovXG4gIHJlY29yZGVkPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgYSBjb2RlYyB3YXMgYXBwbGllZCAod3JpdGUpIG9yIHByZXNlbnQgKHJlYWQpLiAqL1xuICBjb21wcmVzc2VkPzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGNvZGVjIGFwcGxpZWQgLyB3YXMgcHJlc2VudC4gKi9cbiAgY29kZWM/OiBDb21wcmVzc2lvbkNvZGVjO1xuICAvKiogTG9naWNhbCwgdW5jb21wcmVzc2VkIHBheWxvYWQgc2l6ZSBpbiBieXRlcy4gKi9cbiAgdW5jb21wcmVzc2VkQnl0ZXM/OiBudW1iZXI7XG4gIC8qKiBTdG9yZWQgKHBvc3QtY29tcHJlc3Npb24pIHBheWxvYWQgc2l6ZSBpbiBieXRlcy4gKi9cbiAgc3RvcmVkQnl0ZXM/OiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIHJlY29yZFN0YXRzKFxuICBzdGF0czogQ29tcHJlc3Npb25TdGF0cyB8IHVuZGVmaW5lZCxcbiAgY29kZWM6IENvbXByZXNzaW9uQ29kZWMsXG4gIHVuY29tcHJlc3NlZEJ5dGVzOiBudW1iZXIsXG4gIHN0b3JlZEJ5dGVzOiBudW1iZXJcbik6IHZvaWQge1xuICBpZiAoIXN0YXRzKSByZXR1cm47XG4gIHN0YXRzLnJlY29yZGVkID0gdHJ1ZTtcbiAgc3RhdHMuY29tcHJlc3NlZCA9IGNvZGVjICE9PSAnbm9uZSc7XG4gIHN0YXRzLmNvZGVjID0gY29kZWM7XG4gIHN0YXRzLnVuY29tcHJlc3NlZEJ5dGVzID0gdW5jb21wcmVzc2VkQnl0ZXM7XG4gIHN0YXRzLnN0b3JlZEJ5dGVzID0gc3RvcmVkQnl0ZXM7XG59XG5cbi8qKlxuICogQ2hvb3NlIHRoZSB3cml0ZS1zaWRlIGNvZGVjIGdpdmVuIHJ1bnRpbWUgYXZhaWxhYmlsaXR5IGFuZCB0aGUgb3B0aW9uYWxcbiAqIGVudiBvdmVycmlkZS4genN0ZCBpcyBwcmVmZXJyZWQ7IGd6aXAgaXMgdGhlIHBvcnRhYmxlIGZhbGxiYWNrLlxuICovXG5mdW5jdGlvbiBzZWxlY3RXcml0ZUNvZGVjKCk6ICd6c3RkJyB8ICdnemlwJyB8ICdub25lJyB7XG4gIGNvbnN0IG92ZXJyaWRlID0gY29kZWNPdmVycmlkZUZyb21FbnYoKTtcbiAgaWYgKG92ZXJyaWRlID09PSAnZ3ppcCcpIHJldHVybiBpc0d6aXBBdmFpbGFibGUoKSA/ICdnemlwJyA6ICdub25lJztcbiAgLy8gRGVmYXVsdCBhbmQgZXhwbGljaXQgJ3pzdGQnIGJvdGggcHJlZmVyIHpzdGQsIHRoZW4gZmFsbCBiYWNrIHRvIGd6aXAuXG4gIGlmIChpc1pzdGRBdmFpbGFibGUoKSkgcmV0dXJuICd6c3RkJztcbiAgaWYgKGlzR3ppcEF2YWlsYWJsZSgpKSByZXR1cm4gJ2d6aXAnO1xuICByZXR1cm4gJ25vbmUnO1xufVxuXG4vKipcbiAqIENvbXByZXNzIGEgZm9ybWF0LXByZWZpeGVkIHBheWxvYWQgaWYgY29tcHJlc3Npb24gaXMgZW5hYmxlZCBmb3IgdGhlXG4gKiB0YXJnZXQgcnVuIGFuZCB0aGUgcGF5bG9hZCBpcyB3b3J0aCBjb21wcmVzc2luZy5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFRoZSBmb3JtYXQtcHJlZml4ZWQgc2VyaWFsaXplZCBkYXRhIChlLmcuICdkZXZsJyArIGJ5dGVzKVxuICogQHBhcmFtIGVuYWJsZWQgLSBXaGV0aGVyIHRoZSB0YXJnZXQgcnVuIHN1cHBvcnRzIGNvbXByZXNzZWQgcGF5bG9hZHNcbiAqICAgKHJ1biBzcGVjVmVyc2lvbiA+PSBTUEVDX1ZFUlNJT05fU1VQUE9SVFNfQ09NUFJFU1NJT04sIGFuZCBmb3JcbiAqICAgY3Jvc3MtZGVwbG95bWVudCB3cml0ZXMsIHRoZSB0YXJnZXQgZGVwbG95bWVudCdzIGNhcGFiaWxpdGllczsgc2VlXG4gKiAgIGBnZXRSdW5DYXBhYmlsaXRpZXNgIGluIGNhcGFiaWxpdGllcy50cykuIHpzdGQgYW5kIGd6aXAgcmVhZFxuICogICBzdXBwb3J0IGNvLXNoaXAsIHNvIGEgc2luZ2xlIGJvb2xlYW4gaXMgc3VmZmljaWVudC5cbiAqIEBwYXJhbSBzdGF0cyAtIE9wdGlvbmFsIHRlbGVtZXRyeSBzaW5rOyBwb3B1bGF0ZWQgd2hlbiBgZGF0YWAgaXMgYmluYXJ5LlxuICogQHJldHVybnMgVGhlIGNvbXByZXNzZWQgZGF0YSB3aXRoIGEgY29kZWMgcHJlZml4LCBvciB0aGUgb3JpZ2luYWwgZGF0YVxuICogICB3aGVuIGNvbXByZXNzaW9uIGlzIGRpc2FibGVkLCB1bmF2YWlsYWJsZSwgb3Igbm90IHdvcnRod2hpbGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb21wcmVzcyhcbiAgZGF0YTogVWludDhBcnJheSB8IHVua25vd24sXG4gIGVuYWJsZWQ6IGJvb2xlYW4sXG4gIHN0YXRzPzogQ29tcHJlc3Npb25TdGF0c1xuKTogUHJvbWlzZTxVaW50OEFycmF5IHwgdW5rbm93bj4ge1xuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHJldHVybiBkYXRhO1xuICAvLyBGcm9tIGhlcmUgYGRhdGFgIGlzIGJpbmFyeSwgc28gZXZlcnkgcmV0dXJuIHBhdGggcmVjb3JkcyBzdGF0cy5cbiAgaWYgKFxuICAgICFlbmFibGVkIHx8XG4gICAgZGF0YS5sZW5ndGggPCBDT01QUkVTU0lPTl9NSU5fQllURVMgfHxcbiAgICBpc0NvbXByZXNzaW9uRGlzYWJsZWRCeUVudigpXG4gICkge1xuICAgIHJlY29yZFN0YXRzKHN0YXRzLCAnbm9uZScsIGRhdGEubGVuZ3RoLCBkYXRhLmxlbmd0aCk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBjb25zdCBjb2RlYyA9IHNlbGVjdFdyaXRlQ29kZWMoKTtcbiAgaWYgKGNvZGVjID09PSAnbm9uZScpIHtcbiAgICByZWNvcmRTdGF0cyhzdGF0cywgJ25vbmUnLCBkYXRhLmxlbmd0aCwgZGF0YS5sZW5ndGgpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgY29uc3QgY29tcHJlc3NlZCA9IGNvZGVjID09PSAnenN0ZCcgPyB6c3RkQnl0ZXMoZGF0YSkgOiBhd2FpdCBnemlwQnl0ZXMoZGF0YSk7XG4gIGNvbnN0IGZvcm1hdCA9XG4gICAgY29kZWMgPT09ICd6c3RkJyA/IFNlcmlhbGl6YXRpb25Gb3JtYXQuWlNURCA6IFNlcmlhbGl6YXRpb25Gb3JtYXQuR1pJUDtcbiAgY29uc3Qgd3JhcHBlZExlbmd0aCA9IDQgKyBjb21wcmVzc2VkLmxlbmd0aDsgLy8gZm9ybWF0IHByZWZpeCArIHBheWxvYWRcbiAgaWYgKHdyYXBwZWRMZW5ndGggPj0gZGF0YS5sZW5ndGggKiAoMSAtIENPTVBSRVNTSU9OX01JTl9TQVZJTkdTX1JBVElPKSkge1xuICAgIHJlY29yZFN0YXRzKHN0YXRzLCAnbm9uZScsIGRhdGEubGVuZ3RoLCBkYXRhLmxlbmd0aCk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgcmVjb3JkU3RhdHMoc3RhdHMsIGNvZGVjLCBkYXRhLmxlbmd0aCwgd3JhcHBlZExlbmd0aCk7XG4gIHJldHVybiBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KGZvcm1hdCwgY29tcHJlc3NlZCk7XG59XG5cbi8qKlxuICogRGVjb21wcmVzcyBhIGZvcm1hdC1wcmVmaXhlZCBwYXlsb2FkIGlmIGl0J3MgY29tcHJlc3NlZC5cbiAqIERpc3BhdGNoZXMgb24gdGhlIHByZWZpeCAoJ3pzdGQnIG9yICdnemlwJykgYW5kIGluZmxhdGVzIHRoZSBpbm5lclxuICogcGF5bG9hZCAod2hpY2ggY2FycmllcyBpdHMgb3duIGZvcm1hdCBwcmVmaXgsIGUuZy4gJ2RldmwnKS5cbiAqXG4gKiBOb24tY29tcHJlc3NlZCBkYXRhIChpbmNsdWRpbmcgbm9uLWJpbmFyeSBsZWdhY3kgZGF0YSkgaXMgcmV0dXJuZWRcbiAqIHVuY2hhbmdlZCwgc28gdGhpcyBpcyBzYWZlIHRvIGFwcGx5IHVuY29uZGl0aW9uYWxseSBvbiByZWFkIHBhdGhzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjb21wcmVzcyhcbiAgZGF0YTogVWludDhBcnJheSB8IHVua25vd24sXG4gIHN0YXRzPzogQ29tcHJlc3Npb25TdGF0c1xuKTogUHJvbWlzZTxVaW50OEFycmF5IHwgdW5rbm93bj4ge1xuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHJldHVybiBkYXRhO1xuICBjb25zdCBwcmVmaXggPSBwZWVrRm9ybWF0UHJlZml4KGRhdGEpO1xuXG4gIGlmIChwcmVmaXggPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuWlNURCkge1xuICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGVjb2RlRm9ybWF0UHJlZml4KGRhdGEpO1xuICAgIGNvbnN0IGluZmxhdGVkID0gdW56c3RkQnl0ZXMocGF5bG9hZCk7XG4gICAgcmVjb3JkU3RhdHMoc3RhdHMsICd6c3RkJywgaW5mbGF0ZWQubGVuZ3RoLCBkYXRhLmxlbmd0aCk7XG4gICAgcmV0dXJuIGluZmxhdGVkO1xuICB9XG5cbiAgaWYgKHByZWZpeCA9PT0gU2VyaWFsaXphdGlvbkZvcm1hdC5HWklQKSB7XG4gICAgaWYgKCFpc0d6aXBBdmFpbGFibGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ29tcHJlc3NlZCAoZ3ppcCkgd29ya2Zsb3cgZGF0YSBlbmNvdW50ZXJlZCBidXQgRGVjb21wcmVzc2lvblN0cmVhbSAnICtcbiAgICAgICAgICAnaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIHJ1bnRpbWUuIE5vZGUuanMgMTgrLCBicm93c2VycywgYW5kIGVkZ2UgJyArXG4gICAgICAgICAgJ3J1bnRpbWVzIGFsbCBzdXBwb3J0IGl0LidcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGVjb2RlRm9ybWF0UHJlZml4KGRhdGEpO1xuICAgIGNvbnN0IGluZmxhdGVkID0gYXdhaXQgZ3VuemlwQnl0ZXMocGF5bG9hZCk7XG4gICAgcmVjb3JkU3RhdHMoc3RhdHMsICdnemlwJywgaW5mbGF0ZWQubGVuZ3RoLCBkYXRhLmxlbmd0aCk7XG4gICAgcmV0dXJuIGluZmxhdGVkO1xuICB9XG5cbiAgcmVjb3JkU3RhdHMoc3RhdHMsICdub25lJywgZGF0YS5sZW5ndGgsIGRhdGEubGVuZ3RoKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgZGF0YSBpcyBjb21wcmVzc2VkIChoYXMgYSAnenN0ZCcgb3IgJ2d6aXAnIGZvcm1hdCBwcmVmaXgpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wcmVzc2VkKGRhdGE6IFVpbnQ4QXJyYXkgfCB1bmtub3duKTogYm9vbGVhbiB7XG4gIGNvbnN0IHByZWZpeCA9IHBlZWtGb3JtYXRQcmVmaXgoZGF0YSk7XG4gIHJldHVybiAoXG4gICAgcHJlZml4ID09PSBTZXJpYWxpemF0aW9uRm9ybWF0LlpTVEQgfHwgcHJlZml4ID09PSBTZXJpYWxpemF0aW9uRm9ybWF0LkdaSVBcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -21,7 +21,7 @@ declare const RUN_KEYS_BRAND: unique symbol;
|
|
|
21
21
|
/**
|
|
22
22
|
* A write-only capability: seal payloads to a run's X25519 public key.
|
|
23
23
|
*
|
|
24
|
-
* This is what a *cross-run* writer holds
|
|
24
|
+
* This is what a *cross-run* writer holds: a hook resumption targeting
|
|
25
25
|
* another run, or a child workflow writing into a parent's forwarded stream.
|
|
26
26
|
* It carries no ability to decrypt anything, and because it is a distinct
|
|
27
27
|
* nominal type it cannot be mistaken for symmetric key material.
|
|
@@ -47,9 +47,9 @@ export interface SealTarget {
|
|
|
47
47
|
*/
|
|
48
48
|
export interface RunPayloadKeys {
|
|
49
49
|
readonly [RUN_KEYS_BRAND]: true;
|
|
50
|
-
/** Symmetric AES-256-GCM key
|
|
50
|
+
/** Symmetric AES-256-GCM key: the run's own `encr` payloads. */
|
|
51
51
|
readonly aes: CryptoKey;
|
|
52
|
-
/** X25519 keypair
|
|
52
|
+
/** X25519 keypair: opens `encp` payloads sealed to this run. */
|
|
53
53
|
readonly keyPair: RunKeyPair;
|
|
54
54
|
/** Additional authenticated data expected on sealed payloads. */
|
|
55
55
|
readonly aad?: Uint8Array;
|
|
@@ -66,7 +66,7 @@ export interface RunPayloadKeys {
|
|
|
66
66
|
* | ------------------ | ------- | -------------- | ------------------------ |
|
|
67
67
|
* | `CryptoKey` | `encr` | `encr` | same-run (legacy shape) |
|
|
68
68
|
* | {@link RunPayloadKeys} | `encr` | `encr`, `encp` | the owning run, o11y |
|
|
69
|
-
* | {@link SealTarget} | `encp` |
|
|
69
|
+
* | {@link SealTarget} | `encp` | (none) | cross-run writers |
|
|
70
70
|
*
|
|
71
71
|
* A run's own payloads deliberately stay symmetric even when the writer could
|
|
72
72
|
* seal: sealing costs a fresh ECDH per envelope and 32 extra bytes, and buys
|
|
@@ -96,7 +96,7 @@ export declare function sealTo(recipientPublicKey: Uint8Array, aad?: Uint8Array)
|
|
|
96
96
|
*/
|
|
97
97
|
export declare function runPayloadKeys(aes: CryptoKey, keyPair: RunKeyPair, aad?: Uint8Array): RunPayloadKeys;
|
|
98
98
|
/**
|
|
99
|
-
* Build the full key capability for a run from its raw 32-byte key material
|
|
99
|
+
* Build the full key capability for a run from its raw 32-byte key material,
|
|
100
100
|
* the value `World.getEncryptionKeyForRun()` returns.
|
|
101
101
|
*
|
|
102
102
|
* Use this anywhere a run reads its own event log: it yields a key that opens
|
|
@@ -122,8 +122,8 @@ export declare function resolveEncryptionKey(key: EncryptionKeyParam): Promise<P
|
|
|
122
122
|
* Encrypt a format-prefixed payload if a key is provided.
|
|
123
123
|
*
|
|
124
124
|
* Wraps the data with the `encr` prefix for symmetric keys, or the `encp`
|
|
125
|
-
* prefix when handed a {@link SealTarget}
|
|
126
|
-
* the recipient's public key.
|
|
125
|
+
* prefix when handed a {@link SealTarget}, a cross-run writer that holds
|
|
126
|
+
* only the recipient's public key.
|
|
127
127
|
*
|
|
128
128
|
* @param data - The format-prefixed serialized data
|
|
129
129
|
* @param key - Encryption key (undefined to skip encryption)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../src/serialization/encryption.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAGL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,kBAAkB,CAAC;AAQ1B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAEtC;;;;;;GAMG;AACH,QAAA,MAAM,iBAAiB,eAAkD,CAAC;AAC1E,QAAA,MAAM,cAAc,eAA+C,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACnC,yDAAyD;IACzD,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC;IACxC,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAChC,
|
|
1
|
+
{"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../src/serialization/encryption.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAGL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,kBAAkB,CAAC;AAQ1B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAEtC;;;;;;GAMG;AACH,QAAA,MAAM,iBAAiB,eAAkD,CAAC;AAC1E,QAAA,MAAM,cAAc,eAA+C,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACnC,yDAAyD;IACzD,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC;IACxC,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAChC,gEAAgE;IAChE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,cAAc,CAAC;AAEvD;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,kBAAkB,EAAE,UAAU,EAC9B,GAAG,CAAC,EAAE,UAAU,GACf,UAAU,CAEZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,UAAU,EACnB,GAAG,CAAC,EAAE,UAAU,GACf,cAAc,CAEhB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,UAAU,GACzB,OAAO,CAAC,cAAc,CAAC,CAMzB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAMhE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAMxE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAK3E;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GACV,SAAS,GACT,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,GAC/B,CAAC,MAAM,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;AAE5C,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEjC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,GAAG,EAAE,UAAU,GAAG,SAAS,GAC1B,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAa/B;AAoDD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,GAAG,EAAE,UAAU,GAAG,SAAS,GAC1B,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CA0C/B"}
|