@workflow/core 5.0.0-beta.40 → 5.0.0-beta.41
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/events-consumer.d.ts +127 -6
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +364 -50
- package/dist/private.d.ts +87 -18
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +116 -44
- package/dist/runtime/constants.d.ts +15 -1
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +22 -3
- package/dist/runtime/helpers.d.ts +116 -8
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +174 -2
- package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -1
- package/dist/runtime/quickjs-assets.generated.js +2 -2
- package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -1
- package/dist/runtime/quickjs-entrypoint.js +13 -5
- package/dist/runtime/quickjs-runtime.d.ts +36 -1
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -1
- package/dist/runtime/quickjs-runtime.js +613 -185
- package/dist/runtime/quickjs-serde.d.ts +107 -0
- package/dist/runtime/quickjs-serde.d.ts.map +1 -0
- package/dist/runtime/quickjs-serde.js +2098 -0
- package/dist/runtime/replay-budget.d.ts +5 -14
- package/dist/runtime/replay-budget.d.ts.map +1 -1
- package/dist/runtime/replay-budget.js +19 -72
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +5 -1
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +3 -4
- package/dist/runtime/start.js +2 -7
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +1 -4
- package/dist/runtime/suspension-handler.d.ts +7 -0
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +58 -11
- package/dist/runtime/world-compatibility.d.ts +15 -0
- package/dist/runtime/world-compatibility.d.ts.map +1 -1
- package/dist/runtime/world-compatibility.js +25 -5
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +474 -418
- package/dist/serialization/codec-devalue-vm.d.ts +7 -0
- package/dist/serialization/codec-devalue-vm.d.ts.map +1 -1
- package/dist/serialization/codec-devalue-vm.js +12 -1
- package/dist/serialization/workflow-vm.d.ts +8 -3
- package/dist/serialization/workflow-vm.d.ts.map +1 -1
- package/dist/serialization/workflow-vm.js +9 -4
- package/dist/step.js +2 -2
- package/dist/telemetry/semantic-conventions.d.ts +23 -0
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +18 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/index.d.ts.map +1 -1
- package/dist/vm/index.js +9 -6
- package/dist/workflow/abort-controller.d.ts.map +1 -1
- package/dist/workflow/abort-controller.js +4 -6
- package/dist/workflow/attribute-dispatcher.js +2 -2
- package/dist/workflow/hook.js +2 -2
- package/dist/workflow/sleep.js +2 -2
- package/dist/workflow.d.ts +10 -0
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +60 -19
- package/docs/how-it-works/event-sourcing.mdx +11 -3
- package/package.json +6 -6
- package/dist/correlation-id.d.ts +0 -109
- package/dist/correlation-id.d.ts.map +0 -1
- package/dist/correlation-id.js +0 -139
- package/dist/serialization/vm-bundle-entry.d.ts +0 -12
- package/dist/serialization/vm-bundle-entry.d.ts.map +0 -1
- package/dist/serialization/vm-bundle-entry.js +0 -58
|
@@ -59,6 +59,23 @@ export const WorkflowStartedAt = SemanticConvention('workflow.started_at');
|
|
|
59
59
|
export const WorkflowEventsCount = SemanticConvention('workflow.events.count');
|
|
60
60
|
/** Whether workflow execution starts with replay or resumes a retained VM */
|
|
61
61
|
export const WorkflowExecutionMode = SemanticConvention('workflow.execution.mode');
|
|
62
|
+
/**
|
|
63
|
+
* Events the replay walked past that no consumer claimed, still held when the
|
|
64
|
+
* replay stopped.
|
|
65
|
+
*
|
|
66
|
+
* A non-zero count on a suspension is ordinary: an out-of-band delivery that
|
|
67
|
+
* landed ahead of the code that reads it waits for the replay that gets there.
|
|
68
|
+
* From inside one replay that is indistinguishable from an event no replay will
|
|
69
|
+
* ever claim, because the two differ only in what the next replay does. So the
|
|
70
|
+
* count goes on the span instead of failing the run, and the case worth acting
|
|
71
|
+
* on is a query across a run's spans: the same
|
|
72
|
+
* {@link WorkflowParkedEventId} held on suspension after suspension.
|
|
73
|
+
*/
|
|
74
|
+
export const WorkflowParkedEventsCount = SemanticConvention('workflow.events.parked.count');
|
|
75
|
+
/** Oldest event still held unclaimed when the replay stopped. */
|
|
76
|
+
export const WorkflowParkedEventId = SemanticConvention('workflow.events.parked.event_id');
|
|
77
|
+
/** Type of the oldest event still held unclaimed when the replay stopped. */
|
|
78
|
+
export const WorkflowParkedEventType = SemanticConvention('workflow.events.parked.event_type');
|
|
62
79
|
/** Number of arguments passed to the workflow */
|
|
63
80
|
export const WorkflowArgumentsCount = SemanticConvention('workflow.arguments.count');
|
|
64
81
|
/** Type of the workflow result */
|
|
@@ -353,4 +370,4 @@ export const RpcMethod = SemanticConvention('rpc.method');
|
|
|
353
370
|
export const ErrorRetryable = SemanticConvention('error.retryable');
|
|
354
371
|
/** Error category (workflow-specific: fatal, retryable, transient) */
|
|
355
372
|
export const ErrorCategory = SemanticConvention('error.category');
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtY29udmVudGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsc0JBQXNCO0FBRXRCLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFeEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUVqRCxvQkFBb0IsQ0FBQyxDQUFDO0FBRXhCLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUUzRSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBRWpELHFCQUFxQixDQUFDLENBQUM7QUFFekIscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FDbkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRiw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtC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QU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FFN0MsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT3BlblRlbGVtZXRyeSBzZW1hbnRpYyBjb252ZW50aW9ucyBmb3IgVmVyY2VsIFdvcmtmbG93IHRlbGVtZXRyeS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBzdGFuZGFyZGl6ZWQgdGVsZW1ldHJ5IGF0dHJpYnV0ZXMgZm9sbG93aW5nIE9wZW5UZWxlbWV0cnkgc2VtYW50aWMgY29udmVudGlvbnNcbiAqIGZvciBpbnN0cnVtZW50aW5nIHdvcmtmbG93IGV4ZWN1dGlvbiwgc3RlcCBwcm9jZXNzaW5nLCBhbmQgcmVsYXRlZCBvcGVyYXRpb25zLiBFYWNoIGV4cG9ydGVkIGZ1bmN0aW9uXG4gKiBjcmVhdGVzIGEgcHJvcGVybHkgZm9ybWF0dGVkIGF0dHJpYnV0ZSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIE9wZW5UZWxlbWV0cnkgc3BhbnMuXG4gKlxuICogVGhlIHNlbWFudGljIGNvbnZlbnRpb25zIGFyZSBvcmdhbml6ZWQgaW50byBzZXZlcmFsIGNhdGVnb3JpZXM6XG4gKiAtICoqV29ya2Zsb3cgYXR0cmlidXRlcyoqOiBUcmFjayB3b3JrZmxvdyBsaWZlY3ljbGUsIHN0YXR1cywgYW5kIG1ldGFkYXRhXG4gKiAtICoqU3RlcCBhdHRyaWJ1dGVzKio6IE1vbml0b3IgaW5kaXZpZHVhbCBzdGVwIGV4ZWN1dGlvbiwgcmV0cmllcywgYW5kIHJlc3VsdHNcbiAqIC0gKipRdWV1ZSBhdHRyaWJ1dGVzKio6IEluc3RydW1lbnQgbWVzc2FnZSBxdWV1ZSBvcGVyYXRpb25zXG4gKiAtICoqRGVwbG95bWVudCBhdHRyaWJ1dGVzKio6IENhcHR1cmUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBpbmZvcm1hdGlvblxuICpcbiAqIEFsbCBhdHRyaWJ1dGUgZnVuY3Rpb25zIGFyZSB0eXBlLXNhZmUgYW5kIGxldmVyYWdlIGV4aXN0aW5nIGJhY2tlbmQgdHlwZXMgdG8gZW5zdXJlXG4gKiBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRlbGVtZXRyeSBkYXRhIGFuZCBhY3R1YWwgc3lzdGVtIHN0YXRlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgKiBhcyBBdHRyaWJ1dGUgZnJvbSAnLi90ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnMuanMnO1xuICpcbiAqIC8vIFNldCB3b3JrZmxvdyBhdHRyaWJ1dGVzIG9uIGEgc3BhblxuICogc3Bhbi5zZXRBdHRyaWJ1dGVzKHtcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93TmFtZSgnbXktd29ya2Zsb3cnKSxcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93T3BlcmF0aW9uKCdzdGFydCcpLFxuICogICAuLi5BdHRyaWJ1dGUuV29ya2Zsb3dSdW5TdGF0dXMoJ3J1bm5pbmcnKSxcbiAqIH0pO1xuICpcbiAqIC8vIFNldCBzdGVwIGF0dHJpYnV0ZXNcbiAqIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwTmFtZSgncHJvY2Vzcy1kYXRhJyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwU3RhdHVzKCdjb21wbGV0ZWQnKSxcbiAqICAgLi4uQXR0cmlidXRlLlN0ZXBBdHRlbXB0KDEpLFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L30gT3BlblRlbGVtZXRyeSBTZW1hbnRpYyBDb252ZW50aW9uc1xuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlSWQsIFN0ZXAsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2VtYW50aWMgY29udmVudGlvbiBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYXR0cmlidXRlIG9iamVjdC5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIGF0dHJpYnV0ZSBuYW1lIGZvbGxvd2luZyBPcGVuVGVsZW1ldHJ5IHNlbWFudGljIGNvbnZlbnRpb25zXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSB2YWx1ZSBhbmQgcmV0dXJucyBhbiBhdHRyaWJ1dGUgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIFNlbWFudGljQ29udmVudGlvbjxUPiguLi5uYW1lczogc3RyaW5nW10pIHtcbiAgcmV0dXJuICh2YWx1ZTogVCkgPT5cbiAgICBPYmplY3QuZnJvbUVudHJpZXMobmFtZXMubWFwKChuYW1lKSA9PiBbbmFtZSwgdmFsdWVdIGFzIGNvbnN0KSk7XG59XG5cbi8vIFdvcmtmbG93IGF0dHJpYnV0ZXNcblxuLyoqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvdyBiZWluZyBleGVjdXRlZCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93TmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5uYW1lJyk7XG5cbi8qKiBUaGUgb3BlcmF0aW9uIGJlaW5nIHBlcmZvcm1lZCBvbiB0aGUgd29ya2Zsb3cgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd09wZXJhdGlvbiA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ3N0YXJ0JyB8ICdleGVjdXRlJyB8ICdleGVjdXRlX3YyJyB8ICdydW4nXG4+KCd3b3JrZmxvdy5vcGVyYXRpb24nKTtcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIHNwZWNpZmljIHdvcmtmbG93IHJ1biBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cucnVuLmlkJyk7XG5cbi8qKiBDdXJyZW50IHN0YXR1cyBvZiB0aGUgd29ya2Zsb3cgcnVuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSdW5TdGF0dXMgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gIFdvcmtmbG93UnVuWydzdGF0dXMnXSB8ICd3b3JrZmxvd19zdXNwZW5kZWQnXG4+KCd3b3JrZmxvdy5ydW4uc3RhdHVzJyk7XG5cbi8qKiBUaW1lc3RhbXAgd2hlbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uIHN0YXJ0ZWQgKFVuaXggdGltZXN0YW1wKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3RhcnRlZEF0ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdGFydGVkX2F0J1xuKTtcblxuLyoqIE51bWJlciBvZiBldmVudHMgcHJvY2Vzc2VkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0V2ZW50c0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ldmVudHMuY291bnQnXG4pO1xuXG4vKiogV2hldGhlciB3b3JrZmxvdyBleGVjdXRpb24gc3RhcnRzIHdpdGggcmVwbGF5IG9yIHJlc3VtZXMgYSByZXRhaW5lZCBWTSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXhlY3V0aW9uTW9kZSA9IFNlbWFudGljQ29udmVudGlvbjwncmVwbGF5JyB8ICdyZXRhaW5lZCc+KFxuICAnd29ya2Zsb3cuZXhlY3V0aW9uLm1vZGUnXG4pO1xuXG4vKiogTnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHdvcmtmbG93ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dBcmd1bWVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuYXJndW1lbnRzLmNvdW50J1xuKTtcblxuLyoqIFR5cGUgb2YgdGhlIHdvcmtmbG93IHJlc3VsdCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UmVzdWx0VHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cucmVzdWx0LnR5cGUnXG4pO1xuXG4vKiogV2hldGhlciB0cmFjZSBjb250ZXh0IHdhcyBwcm9wYWdhdGVkIHRvIHRoaXMgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUcmFjZVByb3BhZ2F0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy50cmFjZS5wcm9wYWdhdGVkJ1xuKTtcblxuLy8gUXVpY2tKUyBWTSBlbmdpbmUgYXR0cmlidXRlc1xuXG4vKiogVGhlIFZNIGVuZ2luZSBleGVjdXRpbmcgdGhlIHdvcmtmbG93IGZ1bmN0aW9uIGZvciB0aGlzIGludm9jYXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1ZtID0gU2VtYW50aWNDb252ZW50aW9uPCdub2RlJyB8ICdxdWlja2pzJz4oJ3dvcmtmbG93LnZtJyk7XG5cbi8qKiBPdXRjb21lIG9mIGEgUXVpY2tKUyBWTSB3b3JrZmxvdyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU091dGNvbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdjb21wbGV0ZWQnIHwgJ3N1c3BlbmRlZCcgfCAnZmFpbGVkJ1xuPignd29ya2Zsb3cudm0ub3V0Y29tZScpO1xuXG4vKiogV2hldGhlciBwcmVsb2FkZWQgZXZlbnRzIGZyb20gYGV2ZW50cy5jcmVhdGUoJ3J1bl9zdGFydGVkJylgIHdlcmUgdXNlZCAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNFdmVudHNQcmVsb2FkZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy52bS5ldmVudHMucHJlbG9hZGVkJ1xuKTtcblxuLyoqIFRvdGFsIG51bWJlciBvZiBldmVudHMgZmV0Y2hlZCBmcm9tIHRoZSB3b3JsZCBmb3IgdGhpcyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU0V2ZW50c0ZldGNoZWRDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cudm0uZXZlbnRzLmZldGNoZWRfY291bnQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHBhZ2VzIHJlcXVpcmVkIHRvIGZldGNoIGFsbCBldmVudHMgKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTRXZlbnRzRmV0Y2hlZFBhZ2VzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy52bS5ldmVudHMuZmV0Y2hlZF9wYWdlcydcbik7XG5cbi8qKiBOdW1iZXIgb2YgcGVuZGluZyBWTSBvcGVyYXRpb25zIGNhcHR1cmVkIGF0IHN1c3BlbnNpb24gKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTUGVuZGluZ09wc0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy52bS5wZW5kaW5nX29wc19jb3VudCdcbik7XG5cbi8qKiBOdW1iZXIgb2Ygc3RlcHMgZXhlY3V0ZWQgaW5saW5lIChsaXZlLVZNIGNvbnRpbnVhdGlvbikgdGhpcyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU0lubGluZVN0ZXBzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdxdWlja2pzLmlubGluZV9zdGVwcydcbik7XG5cbi8qKiBBY3RpdmUgdHJhY2UtY29ycmVsYXRpb24gbW9kZSBmb3IgdGhpcyBpbnZvY2F0aW9uIChsaW5rZWQgb3IgY29udGludW91cykgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1RyYWNlTW9kZSA9IFNlbWFudGljQ29udmVudGlvbjwnbGlua2VkJyB8ICdjb250aW51b3VzJz4oXG4gICd3b3JrZmxvdy50cmFjZS5tb2RlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhpcyB3b3JrZmxvdyBpbnZvY2F0aW9uIGlzIHVzaW5nIHRoZSB0dXJibyBmaXJzdC1kZWxpdmVyeSBwYXRoICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUdXJibyA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignd29ya2Zsb3cudHVyYm8nKTtcblxuLyoqIE5hbWUgb2YgdGhlIGVycm9yIHRoYXQgY2F1c2VkIHdvcmtmbG93IGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubmFtZSdcbik7XG5cbi8qKiBFcnJvciBtZXNzYWdlIHdoZW4gd29ya2Zsb3cgZmFpbHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTWVzc2FnZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubWVzc2FnZSdcbik7XG5cbi8qKiBFcnJvciBjbGFzc2lmaWNhdGlvbiBjb2RlIChVU0VSX0VSUk9SLCBSVU5USU1FX0VSUk9SLCBldGMuKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXJyb3JDb2RlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5lcnJvci5jb2RlJ1xuKTtcblxuLyoqIE51bWJlciBvZiBzdGVwcyBjcmVhdGVkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0ZXBzQ3JlYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RlcHMuY3JlYXRlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgaG9va3MgY3JlYXRlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dIb29rc0NyZWF0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93Lmhvb2tzLmNyZWF0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHdhaXRzIGNyZWF0ZWQgZHVyaW5nIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93V2FpdHNDcmVhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy53YWl0cy5jcmVhdGVkJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2YgaW5saW5lLW93bmVkIHN0ZXBzIHRoaXMgaW52b2NhdGlvbiByZS1leGVjdXRlZCBiZWNhdXNlIGl0IGlzIGFcbiAqIHJlZGVsaXZlcnkgb2YgdGhlaXIgb3duaW5nIHF1ZXVlIG1lc3NhZ2UgKGNyYXNoIHJlY292ZXJ5IGZvciBpbmxpbmVcbiAqIHN0ZXBzIOKAlCBzZWUgdGhlIGlubGluZSBzdGVwIG93bmVyc2hpcCBjaGFuZ2Vsb2csIHdvcmtmbG93IzI3ODApLlxuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dPd25lZFJlY292ZXJ5U3RlcHMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmlubGluZV9vd25lcnNoaXAub3duZWRfcmVjb3Zlcnlfc3RlcHMnXG4pO1xuXG4vKipcbiAqIE51bWJlciBvZiBwZW5kaW5nIHN0ZXBzIGZvciB3aGljaCB0aGlzIHJlcGxheSBzdXBwcmVzc2VkIHRoZSBpbW1lZGlhdGVcbiAqIHJlcXVldWUgKGFub3RoZXIgaW52b2NhdGlvbiBpbmxpbmUtb3ducyB0aGVtIHVuZGVyIGEgbGl2ZSBsZWFzZSkgYW5kXG4gKiBlbnN1cmVkIGEgZGVsYXllZCBiYWNrc3RvcCB3YWtlIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0JhY2tzdG9wV2FrZXNBcm1lZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuaW5saW5lX293bmVyc2hpcC5iYWNrc3RvcF93YWtlc19hcm1lZCdcbik7XG5cbi8vIFJvdXRlIGF0dHJpYnV0ZXNcblxuLyoqIFRoZSB3b3JrZmxvdyBydW50aW1lIHJvdXRlIGJlaW5nIGhhbmRsZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlVHlwZSA9IFNlbWFudGljQ29udmVudGlvbjwnZmxvdyc+KFxuICAnd29ya2Zsb3cucm91dGUudHlwZSdcbik7XG5cbi8qKiBXaGV0aGVyIHRoaXMgcm91dGUgaW52b2NhdGlvbiByZXVzZWQgYW4gYWxyZWFkeS1jcmVhdGVkIHJlcXVlc3QgaGFuZGxlciAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVIYW5kbGVyQ2FjaGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cucm91dGUuaGFuZGxlcl9jYWNoZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHRpbWVzIHRoaXMgaW4tbWVtb3J5IHJvdXRlIGhhbmRsZXIgaGFzIGJlZW4gaW52b2tlZCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVJbnZvY2F0aW9uQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJvdXRlLmludm9jYXRpb25fY291bnQnXG4pO1xuXG4vKiogVGltZSBzaW5jZSB0aGlzIHJvdXRlIGVudHJ5cG9pbnQgd2FzIGNvbnN0cnVjdGVkLCBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlRW50cnlwb2ludEFnZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5lbnRyeXBvaW50X2FnZV9tcydcbik7XG5cbi8qKiBUaW1lIHNwZW50IGV2YWx1YXRpbmcgdGhlIGdlbmVyYXRlZCByb3V0ZSBtb2R1bGUgYm9keSBiZWZvcmUgY3JlYXRpbmcgdGhlIGVudHJ5cG9pbnQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlTW9kdWxlQm9keUluaXRNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucm91dGUubW9kdWxlX2JvZHlfaW5pdF9tcydcbik7XG5cbi8qKlxuICogQ29tcHV0ZSBpbnN0YW5jZSBoYW5kbGluZyB0aGlzIHJvdXRlIOKAlCB0aGUgc3ludGhlc2l6ZWQgYENPTVBVVEVfSU5TVEFOQ0VfSURgLlxuICogVXNlcyBPVEVMIGBmYWFzLmluc3RhbmNlYCAoZXhlY3V0aW9uLWVudmlyb25tZW50IGlkLCByZXVzZWQgYWNyb3NzXG4gKiBpbnZvY2F0aW9ucyB0byB0aGUgc2FtZSBmdW5jdGlvbik6XG4gKiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2F0dHJpYnV0ZXMtcmVnaXN0cnkvZmFhcy9cbiAqL1xuZXhwb3J0IGNvbnN0IEZhYXNJbnN0YW5jZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdmYWFzLmluc3RhbmNlJyk7XG5cbi8vIFN0ZXAgYXR0cmlidXRlc1xuXG4vKiogTmFtZSBvZiB0aGUgc3RlcCBmdW5jdGlvbiBiZWluZyBleGVjdXRlZCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBOYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAubmFtZScpO1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGVwIGluc3RhbmNlICovXG5leHBvcnQgY29uc3QgU3RlcElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAuaWQnKTtcblxuLyoqIEN1cnJlbnQgYXR0ZW1wdCBudW1iZXIgZm9yIHN0ZXAgZXhlY3V0aW9uIChzdGFydHMgYXQgMSkgKi9cbmV4cG9ydCBjb25zdCBTdGVwQXR0ZW1wdCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLmF0dGVtcHQnKTtcblxuLyoqIEN1cnJlbnQgc3RhdHVzIG9mIHRoZSBzdGVwICovXG5leHBvcnQgY29uc3QgU3RlcFN0YXR1cyA9IFNlbWFudGljQ29udmVudGlvbjxTdGVwWydzdGF0dXMnXT4oJ3N0ZXAuc3RhdHVzJyk7XG5cbi8qKiBNYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGFsbG93ZWQgZm9yIHRoaXMgc3RlcCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBNYXhSZXRyaWVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAubWF4X3JldHJpZXMnKTtcblxuLyoqIFdoZXRoZXIgdHJhY2UgY29udGV4dCB3YXMgcHJvcGFnYXRlZCB0byB0aGlzIHN0ZXAgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgU3RlcFRyYWNlUHJvcGFnYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3N0ZXAudHJhY2UucHJvcGFnYXRlZCdcbik7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHRpbWUtdG8tZmlyc3Qtc3RlcCBsYXRlbmN5IGluIG1pbGxpc2Vjb25kczogcnVuIGNyZWF0aW9uIOKGklxuICogdGhpcyBzdGVwJ3MgYm9keSBiZWdpbm5pbmcgdG8gZXhlY3V0ZSwgbWludXMgcHJlLXN0ZXAgaG9vay1jcmVhdGlvbiB0aW1lLlxuICogT25seSBwcmVzZW50IG9uIHRoZSBydW4ncyBmaXJzdCBzdGVwIGV4ZWN1dGlvbiB3aGVuIGl0IHF1YWxpZmllZCBmb3JcbiAqIG1lYXN1cmVtZW50IChzZWUgcnVudGltZS9zdGVwLWxhdGVuY3kudHMpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcFR0ZnNNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLnR0ZnNfbXMnKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgc3RlcC10by1zdGVwIG92ZXJoZWFkIGluIG1pbGxpc2Vjb25kczogdGhlIHByZXZpb3VzIHN0ZXAnc1xuICogdGVybWluYWwgZXZlbnQg4oaSIHRoaXMgc3RlcCdzIGJvZHkgYmVnaW5uaW5nIHRvIGV4ZWN1dGUuIE9ubHkgcHJlc2VudCB3aGVuXG4gKiB0aGUgdHdvIHN0ZXBzIHJhbiBiYWNrLXRvLWJhY2suXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwU3Rzb01zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAuc3Rzb19tcycpO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCBydW5fc3RhcnRlZC10by1maXJzdC1zdGVwIGxhdGVuY3kgaW4gbWlsbGlzZWNvbmRzOiB0aGVcbiAqIGBydW5fc3RhcnRlZGAgcmVzcG9uc2UgbGFuZGluZyAob3IsIHVuZGVyIHR1cmJvLCB0aGUgbG9jYWwgcnVuIHN5bnRoZXNpc1xuICogaW5zdGFudCkg4oaSIHRoaXMgc3RlcCdzIHN0YXJ0IFBPU1QgYmVpbmcgaXNzdWVkLiBBIHN1Yi13aW5kb3cgb2YgdHRmcyB0aGF0XG4gKiBpc29sYXRlcyByZXBsYXkgb3ZlcmhlYWQgZnJvbSB0aGUgcnVuLWNyZWF0aW9uIHF1ZXVlIGhvcC4gT25seSBwcmVzZW50IG9uXG4gKiB0aGUgcnVuJ3MgZmlyc3Qgc3RlcCBleGVjdXRpb24gd2hlbiBpdCBxdWFsaWZpZWQgZm9yIG1lYXN1cmVtZW50IChzZWVcbiAqIHJ1bnRpbWUvc3RlcC1sYXRlbmN5LnRzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSc2ZzTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC5yc2ZzX21zJyk7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHN5bmNocm9ub3VzIHdvcmtmbG93LWZ1bmN0aW9uIHJlcGxheSBkdXJhdGlvbiBpblxuICogbWlsbGlzZWNvbmRzLCBleGNsdWRpbmcgYXdhaXRlZCBuZXR3b3JrIEkvTywgb2Ygb25seSB0aGUgRklOQUwgcmVwbGF5IHBhc3NcbiAqIHdpdGhpbiB0aGUgcnNmcyB3aW5kb3cg4oCUIHRoZSBwYXNzIHRoYXQgcmVhY2hlZCBhbmQgc2NoZWR1bGVkIHRoZSBmaXJzdFxuICogc3RlcC4gTm90IGFjY3VtdWxhdGVkIGFjcm9zcyBlYXJsaWVyIHByZS1maXJzdC1zdGVwIHBhc3NlcyAoZS5nLiBhXG4gKiB3b3JrZmxvdy1ib2R5IGBzZXRBdHRyaWJ1dGVzKClgIGRldG91ciByZXBsYXlzIG1vcmUgdGhhbiBvbmNlLCBhbmQgYVxuICogcmVkZWxpdmVyeSBvbWl0cyBlYXJsaWVyIGludm9jYXRpb25zJyB3b3JrIGVudGlyZWx5KSwgc28gdGhpcyBtdXN0IG5vdCBiZVxuICogcmVhZCBhcyBcInRoZSByZXBsYXkgcG9ydGlvbiBvZiByc2ZzXCIg4oCUIHN0ZXAucnNmc19tcyBjb3ZlcnMgdGhlIHdob2xlXG4gKiB3aW5kb3cuIE9ubHkgcHJlc2VudCBhbG9uZ3NpZGUgc3RlcC5yc2ZzX21zIGFuZCBvbmx5IGZvciB0aGUgcnVuJ3MgZmlyc3RcbiAqIHN0ZXAgKHNlZSBydW50aW1lL3N0ZXAtbGF0ZW5jeS50cykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwRmluYWxTY2hlZHVsaW5nUmVwbGF5TXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3N0ZXAuZmluYWxfc2NoZWR1bGluZ19yZXBsYXlfbXMnXG4pO1xuXG4vKipcbiAqIFJ1bnRpbWUgc3RhcnR1cC1sYXRlbmN5IG9wdGltaXphdGlvbnMgYWN0aXZlIGZvciB0aGUgdHRmcy9zdHNvIG1lYXN1cmVtZW50XG4gKiAoZS5nLiAndHVyYm8nLCAnbGF6eVN0ZXBTdGFydCcsICdvcHRpbWlzdGljU3RhcnQnKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBMYXRlbmN5T3B0aW1pemF0aW9ucyA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmdbXT4oXG4gICdzdGVwLmxhdGVuY3lfb3B0aW1pemF0aW9ucydcbik7XG5cbi8qKiBXaGV0aGVyIHRoZSBzdGVwIHdhcyBza2lwcGVkIGR1cmluZyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBTdGVwU2tpcHBlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignc3RlcC5za2lwcGVkJyk7XG5cbi8qKiBSZWFzb24gd2h5IHRoZSBzdGVwIHdhcyBza2lwcGVkICovXG5leHBvcnQgY29uc3QgU3RlcFNraXBSZWFzb24gPVxuICBTZW1hbnRpY0NvbnZlbnRpb248U3RlcFsnc3RhdHVzJ10+KCdzdGVwLnNraXBfcmVhc29uJyk7XG5cbi8qKiBOdW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgc3RlcCBmdW5jdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBBcmd1bWVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnc3RlcC5hcmd1bWVudHMuY291bnQnXG4pO1xuXG4vKiogVHlwZSBvZiB0aGUgc3RlcCByZXN1bHQgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmVzdWx0VHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLnJlc3VsdC50eXBlJyk7XG5cbi8qKiBOYW1lIG9mIHRoZSBlcnJvciB0aGF0IGNhdXNlZCBzdGVwIGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBTdGVwRXJyb3JOYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAuZXJyb3IubmFtZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSB3aGVuIHN0ZXAgZmFpbHMgKi9cbmV4cG9ydCBjb25zdCBTdGVwRXJyb3JNZXNzYWdlID1cbiAgU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAuZXJyb3IubWVzc2FnZScpO1xuXG4vKiogV2hldGhlciB0aGUgc3RlcCBmYWlsZWQgd2l0aCBhIGZhdGFsIGVycm9yIChubyByZXRyaWVzKSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBGYXRhbEVycm9yID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCdzdGVwLmZhdGFsX2Vycm9yJyk7XG5cbi8qKiBXaGV0aGVyIGFsbCByZXRyeSBhdHRlbXB0cyBoYXZlIGJlZW4gZXhoYXVzdGVkICovXG5leHBvcnQgY29uc3QgU3RlcFJldHJ5RXhoYXVzdGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnc3RlcC5yZXRyeS5leGhhdXN0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgbmV4dCByZXRyeSBhdHRlbXB0ICovXG5leHBvcnQgY29uc3QgU3RlcFJldHJ5VGltZW91dFNlY29uZHMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3N0ZXAucmV0cnkudGltZW91dF9zZWNvbmRzJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhlIHN0ZXAgd2lsbCBiZSByZXRyaWVkIGFmdGVyIHRoaXMgZmFpbHVyZSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXRyeVdpbGxSZXRyeSA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3N0ZXAucmV0cnkud2lsbF9yZXRyeSdcbik7XG5cbi8vIFF1ZXVlL01lc3NhZ2luZyBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBtZXNzYWdpbmcgY29udmVudGlvbnNcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9tZXNzYWdpbmcvbWVzc2FnaW5nLXNwYW5zL1xuXG4vKiogTWVzc2FnaW5nIHN5c3RlbSBpZGVudGlmaWVyIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcuc3lzdGVtKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ1N5c3RlbSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdtZXNzYWdpbmcuc3lzdGVtJyk7XG5cbi8qKiBEZXN0aW5hdGlvbiBuYW1lL3F1ZXVlIG5hbWUgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5kZXN0aW5hdGlvbi5uYW1lKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ0Rlc3RpbmF0aW9uTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnbWVzc2FnaW5nLmRlc3RpbmF0aW9uLm5hbWUnXG4pO1xuXG4vKiogVGhlIG1lc3NhZ2UgaWQgYmVpbmcgaGFuZGxlZCAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLm1lc3NhZ2UuaWQpICovXG5leHBvcnQgY29uc3QgTWVzc2FnaW5nTWVzc2FnZUlkID0gU2VtYW50aWNDb252ZW50aW9uPE1lc3NhZ2VJZD4oXG4gICdtZXNzYWdpbmcubWVzc2FnZS5pZCdcbik7XG5cbi8qKiBPcGVyYXRpb24gdHlwZSAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLm9wZXJhdGlvbi50eXBlKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ09wZXJhdGlvblR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdwdWJsaXNoJyB8ICdyZWNlaXZlJyB8ICdwcm9jZXNzJ1xuPignbWVzc2FnaW5nLm9wZXJhdGlvbi50eXBlJyk7XG5cbi8qKiBUaW1lIHRha2VuIHRvIGVucXVldWUgdGhlIG1lc3NhZ2UgaW4gbWlsbGlzZWNvbmRzICh3b3JrZmxvdy1zcGVjaWZpYykgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZU92ZXJoZWFkTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLm92ZXJoZWFkX21zJ1xuKTtcblxuLy8gRGVwbG95bWVudCBhdHRyaWJ1dGVzXG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgKi9cbmV4cG9ydCBjb25zdCBEZXBsb3ltZW50SWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignZGVwbG95bWVudC5pZCcpO1xuXG4vKiogVGhlIGRlcGxveW1lbnQgYSBydW4gaXMgcGlubmVkIHRvLCBzZXQgb25seSBvbiBhIG1pc3JvdXRlZCBkZWxpdmVyeS4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1J1blBpbm5lZERlcGxveW1lbnRJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZGVwbG95bWVudC5waW5uZWRfaWQnXG4pO1xuXG4vKiogUmUtcm91dGUgYXR0ZW1wdHMgZm9yIHRoaXMgbWlzcm91dGVkIGRlbGl2ZXJ5LCBpbmNsdWRpbmcgdGhpcyBvbmUuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dEZXBsb3ltZW50TWlzbWF0Y2hSZXRyeUNvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5kZXBsb3ltZW50X21pc21hdGNoLnJldHJ5X2NvdW50J1xuKTtcblxuLyoqIFdoZXRoZXIgdGhlIG1pc3JvdXRlZCBkZWxpdmVyeSB3YXMgcmUtcm91dGVkIGluc3RlYWQgb2YgZmFpbGluZyB0aGUgcnVuLiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RGVwbG95bWVudE1pc21hdGNoUmVjb3ZlcmVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cuZGVwbG95bWVudF9taXNtYXRjaC5yZWNvdmVyZWQnXG4pO1xuXG4vLyBIb29rIGF0dHJpYnV0ZXNcblxuLyoqIFRva2VuIGlkZW50aWZ5aW5nIGEgc3BlY2lmaWMgaG9vayAqL1xuZXhwb3J0IGNvbnN0IEhvb2tUb2tlbiA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5ob29rLnRva2VuJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgYSBob29rIGluc3RhbmNlICovXG5leHBvcnQgY29uc3QgSG9va0lkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93Lmhvb2suaWQnKTtcblxuLyoqIFdoZXRoZXIgYSBob29rIHdhcyBmb3VuZCBieSBpdHMgdG9rZW4gKi9cbmV4cG9ydCBjb25zdCBIb29rRm91bmQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3dvcmtmbG93Lmhvb2suZm91bmQnKTtcblxuLyoqXG4gKiBQcm9kdWNlci1zaWRlIHNpZ25hbCAob24gdGhlIGBob29rLnJlc3VtZWAgc3BhbikgdGhhdCB0aGUgZGlyZWN0XG4gKiBgaG9va19yZWNlaXZlZGAgd3JpdGUgZmFpbGVkIHRyYW5zaWVudGx5IGJ1dCB0aGUgcXVldWUgZGlzcGF0Y2ggc3VjY2VlZGVkLCBzb1xuICogdGhlIHJlc3VtZSBpcyByZWNvdmVyZWQgdmlhIHRoZSBjb25zdW1lcidzIHJlLWVuc3VyZS4gQ29ycmVzcG9uZHMgdG9cbiAqIGBSZXN1bWVkSG9vay5yZXNpbGllbnRSZXN1bWUgPT09IHRydWVgLlxuICovXG5leHBvcnQgY29uc3QgSG9va1Jlc2lsaWVudFJlc3VtZSA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93Lmhvb2sucmVzaWxpZW50X3Jlc3VtZSdcbik7XG5cbi8qKlxuICogQ29uc3VtZXItc2lkZSBzaWduYWwgKG9uIHRoZSB3b3JrZmxvdyBleGVjdXRpb24gc3BhbikgdGhhdCB0aGlzIHJlcGxheVxuICogbWF0ZXJpYWxpemVkIHRoZSBgaG9va19yZWNlaXZlZGAgZXZlbnQgZnJvbSB0aGUgcXVldWUgbWVzc2FnZSdzIGBob29rSW5wdXRgXG4gKiBiZWNhdXNlIHRoZSBwcm9kdWNlcidzIGRpcmVjdCB3cml0ZSBoYWQgbm90IGxhbmRlZCDigJQgdGhlIGNvbXBsZXRpb24gb2YgdGhlXG4gKiByZWNvdmVyeSBwYXRoIHtAbGluayBIb29rUmVzaWxpZW50UmVzdW1lfSBiZWdhbi5cbiAqXG4gKiBMZWdhY3kgLyBub24tYXRvbWljIHJlLWVuc3VyZSBzaWduYWwgb25seS4gQXRvbWljIGxhenkgcmVzdW1lc1xuICogKHJlc3VtZUlkICsgZGlnZXN0KSBnbyB0aHJvdWdoIHRoZSBob2lzdGVkIHByZWxvYWQgd3JpdGUgaW5zdGVhZCwgd2hvc2VcbiAqIHJlc3BvbnNlIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHByb2R1Y2VyIG9yIHRoZSBjb25zdW1lciB3b24gdGhlXG4gKiBgKHJ1bklkLCByZXN1bWVJZClgIGNsYWltIOKAlCBzbyB0aGlzIGF0dHJpYnV0ZSBpcyBkZWxpYmVyYXRlbHkgTk9UIGVtaXR0ZWRcbiAqIGZvciB0aGVtIChlbWl0dGluZyBgdHJ1ZWAgdW5jb25kaXRpb25hbGx5IHdvdWxkIGNvdW50IGV2ZXJ5IHByb2R1Y2VyLXdvblxuICogcmVzdW1lIGFzIGEgcmVjb3ZlcnkpLiBUaGUgcHJvZHVjZXItYmVnaW4gKHtAbGluayBIb29rUmVzaWxpZW50UmVzdW1lfSkgL1xuICogY29uc3VtZXItbWF0ZXJpYWxpemVkIHBhaXJpbmcgaXMgdGhlcmVmb3JlIG5vIGxvbmdlciBjb21wbGV0ZSBmb3IgYXRvbWljXG4gKiBsYXp5IHJlc3VtcHRpb25zOyB1c2Uge0BsaW5rIEhvb2tSZXN1bWVTZXR1cFNvdXJjZX0gdG8gb2JzZXJ2ZSB0aGF0IHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBIb29rUmVzaWxpZW50UmVzdW1lTWF0ZXJpYWxpemVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cuaG9vay5yZXNpbGllbnRfcmVzdW1lX21hdGVyaWFsaXplZCdcbik7XG5cbi8qKlxuICogQ29uc3VtZXItc2lkZSBzaWduYWwgKG9uIHRoZSB3b3JrZmxvdyBleGVjdXRpb24gc3Bhbikgb2YgaG93IGEgbGF6eSBob29rXG4gKiByZXN1bWUgaW5pdGlhbGl6ZWQgaXRzIHJlcGxheSBzdGF0ZTpcbiAqXG4gKiAtIGBob29rX3JlY2VpdmVkX3N0cmVhbWAg4oCUIHRoZSBob2lzdGVkIGBob29rX3JlY2VpdmVkYCB3cml0ZSByZXR1cm5lZCBhXG4gKiAgIHVzYWJsZSByZXBsYXkgcHJlbG9hZCAocnVuICsgY29tcGxldGUgZXZlbnQgbG9nKSwgc28gdGhlIGludm9jYXRpb25cbiAqICAgc2tpcHBlZCBib3RoIHRoZSBgcnVuX3N0YXJ0ZWRgIHdyaXRlIGFuZCB0aGUgaW5pdGlhbCBgZXZlbnRzLmxpc3RgLlxuICogLSBgaG9va19yZWNlaXZlZF9mYWxsYmFja2Ag4oCUIHRoZSBob2lzdGVkIHdyaXRlIHN1Y2NlZWRlZCBidXQgcmV0dXJuZWQgbm9cbiAqICAgdXNhYmxlIHByZWxvYWQgKGEgQ0JPUiByZXNwb25zZSBmcm9tIGFuIG9sZGVyIHNlcnZlciwgYSBXb3JsZCB0aGF0XG4gKiAgIGlnbm9yZWQgdGhlIG9wdC1pbiwgYSBib3VuZGVkIGBoYXNNb3JlYCBwYWdlLCBvciBhIHByZWxvYWQgdGhhdCBmYWlsZWRcbiAqICAgdmFsaWRhdGlvbik7IHRoZSBpbnZvY2F0aW9uIGZlbGwgYmFjayB0byB0aGUgYHJ1bl9zdGFydGVkYCBzZXR1cCB3aXRob3V0XG4gKiAgIHJlLXBvc3RpbmcgdGhlIGhvb2suXG4gKlxuICogQWJzZW50IG9uIGxlZ2FjeSBob29rIGRlbGl2ZXJpZXMgKG5vIHJlc3VtZUlkL2RpZ2VzdCkgYW5kIG9uIGV2ZXJ5IG90aGVyXG4gKiBkZWxpdmVyeSBraW5kLCB3aGljaCB0YWtlIHRoZSBgcnVuX3N0YXJ0ZWRgIHNldHVwIHVuY29uZGl0aW9uYWxseS5cbiAqXG4gKiBUaGlzIGlzIGEgbGF0ZW5jeS9zZXR1cC1wYXRoIHNpZ25hbDogaXQgc2F5cyB3aGljaCByZXF1ZXN0cyBpbml0aWFsaXplZFxuICogdGhlIGludm9jYXRpb24sIE5PVCB0aGF0IHRoaXMgY29uc3VtZXIgY3JlYXRlZCB0aGUgYGhvb2tfcmVjZWl2ZWRgIGV2ZW50XG4gKiAodGhlIGhvaXN0ZWQgd3JpdGUgbWF5IGVxdWFsbHkgaGF2ZSBjb252ZXJnZWQgb24gdGhlIHByb2R1Y2VyJ3Mg4oCUIGNsYWltXG4gKiBvd25lcnNoaXAgaXMgbm90IG9ic2VydmFibGUgY2xpZW50LXNpZGU7IGNmLlxuICoge0BsaW5rIEhvb2tSZXNpbGllbnRSZXN1bWVNYXRlcmlhbGl6ZWR9KS5cbiAqL1xuZXhwb3J0IGNvbnN0IEhvb2tSZXN1bWVTZXR1cFNvdXJjZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cucmVzdW1lX3NldHVwX3NvdXJjZSdcbik7XG5cbi8vIFdlYmhvb2sgYXR0cmlidXRlc1xuXG4vKiogTnVtYmVyIG9mIHdlYmhvb2sgaGFuZGxlcnMgdHJpZ2dlcmVkICovXG5leHBvcnQgY29uc3QgV2ViaG9va0hhbmRsZXJzVHJpZ2dlcmVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3ZWJob29rLmhhbmRsZXJzLnRyaWdnZXJlZCdcbik7XG5cbi8vIFN1c3BlbnNpb24gYXR0cmlidXRlc1xuXG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uU3RhdGUgPSBTZW1hbnRpY0NvbnZlbnRpb248J3N1c3BlbmRlZCc+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi5zdGF0ZSdcbik7XG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uSG9va0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLmhvb2tfY291bnQnXG4pO1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvblN0ZXBDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi5zdGVwX2NvdW50J1xuKTtcbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25XYWl0Q291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24ud2FpdF9jb3VudCdcbik7XG5cbi8vIFdvcmxkL1N0b3JhZ2UgYXR0cmlidXRlcyAtIFN0YW5kYXJkIE9URUwgSFRUUCBjb252ZW50aW9uc1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2h0dHAvaHR0cC1zcGFucy9cblxuLyoqIEhUVFAgcmVxdWVzdCBtZXRob2QgKHN0YW5kYXJkIE9URUw6IGh0dHAucmVxdWVzdC5tZXRob2QpICovXG5leHBvcnQgY29uc3QgSHR0cFJlcXVlc3RNZXRob2QgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ2h0dHAucmVxdWVzdC5tZXRob2QnXG4pO1xuXG4vKiogUm91dGUgcGF0dGVybiBmb3IgdGhlIHJlcXVlc3QgKHN0YW5kYXJkIE9URUw6IGh0dHAucm91dGUpICovXG5leHBvcnQgY29uc3QgSHR0cFJvdXRlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ2h0dHAucm91dGUnKTtcblxuLyoqIEZ1bGwgVVJMIG9mIHRoZSByZXF1ZXN0IChzdGFuZGFyZCBPVEVMOiB1cmwuZnVsbCkgKi9cbmV4cG9ydCBjb25zdCBVcmxGdWxsID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3VybC5mdWxsJyk7XG5cbi8qKiBTZXJ2ZXIgaG9zdG5hbWUgKHN0YW5kYXJkIE9URUw6IHNlcnZlci5hZGRyZXNzKSAqL1xuZXhwb3J0IGNvbnN0IFNlcnZlckFkZHJlc3MgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc2VydmVyLmFkZHJlc3MnKTtcblxuLyoqIFNlcnZlciBwb3J0IChzdGFuZGFyZCBPVEVMOiBzZXJ2ZXIucG9ydCkgKi9cbmV4cG9ydCBjb25zdCBTZXJ2ZXJQb3J0ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3NlcnZlci5wb3J0Jyk7XG5cbi8qKiBIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlIChzdGFuZGFyZCBPVEVMOiBodHRwLnJlc3BvbnNlLnN0YXR1c19jb2RlKSAqL1xuZXhwb3J0IGNvbnN0IEh0dHBSZXNwb25zZVN0YXR1c0NvZGUgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ2h0dHAucmVzcG9uc2Uuc3RhdHVzX2NvZGUnXG4pO1xuXG4vKiogRXJyb3IgdHlwZSB3aGVuIHJlcXVlc3QgZmFpbHMgKHN0YW5kYXJkIE9URUw6IGVycm9yLnR5cGUpICovXG5leHBvcnQgY29uc3QgRXJyb3JUeXBlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ2Vycm9yLnR5cGUnKTtcblxuLy8gV29ybGQtc3BlY2lmaWMgY3VzdG9tIGF0dHJpYnV0ZXMgKGZvciB3b3JrZmxvdy1zcGVjaWZpYyBjb250ZXh0KVxuXG4vKiogRm9ybWF0IHVzZWQgZm9yIHBhcnNpbmcgcmVzcG9uc2UgYm9keSAoY2JvciBvciBqc29uKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmxkUGFyc2VGb3JtYXQgPSBTZW1hbnRpY0NvbnZlbnRpb248J2Nib3InIHwgJ2pzb24nPihcbiAgJ3dvcmtmbG93LndvcmxkLnBhcnNlLmZvcm1hdCdcbik7XG5cbi8vIEV2ZW50IGxvYWRpbmcgYXR0cmlidXRlc1xuXG4vKiogTnVtYmVyIG9mIHBhZ2luYXRpb24gcGFnZXMgbG9hZGVkIHdoZW4gZmV0Y2hpbmcgd29ya2Zsb3cgZXZlbnRzICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFdmVudHNQYWdlc0xvYWRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZXZlbnRzLnBhZ2VzX2xvYWRlZCdcbik7XG5cbi8vIFF1ZXVlIHRpbWluZyBicmVha2Rvd24gYXR0cmlidXRlcyAod29ya2Zsb3ctc3BlY2lmaWMpXG5cbi8qKiBUaW1lIHNwZW50IGRlc2VyaWFsaXppbmcgdGhlIHF1ZXVlIG1lc3NhZ2UgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgUXVldWVEZXNlcmlhbGl6ZVRpbWVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucXVldWUuZGVzZXJpYWxpemVfdGltZV9tcydcbik7XG5cbi8qKiBUaW1lIHNwZW50IGV4ZWN1dGluZyB0aGUgaGFuZGxlciBsb2dpYyBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZUV4ZWN1dGlvblRpbWVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucXVldWUuZXhlY3V0aW9uX3RpbWVfbXMnXG4pO1xuXG4vKiogVGltZSBzcGVudCBzZXJpYWxpemluZyB0aGUgcmVzcG9uc2UgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgUXVldWVTZXJpYWxpemVUaW1lTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLnNlcmlhbGl6ZV90aW1lX21zJ1xuKTtcblxuLy8gUGF5bG9hZCBjb21wcmVzc2lvbiBhdHRyaWJ1dGVzICh6c3RkIHByZWZlcnJlZCwgZ3ppcCBmYWxsYmFjazsgc3BlY1ZlcnNpb24gPj0gNSlcbi8vXG4vLyBTaXplcyBhcmUgbWVhc3VyZWQgYXQgdGhlIGNvbXByZXNzaW9uIGJvdW5kYXJ5OiBiZWZvcmUgZW5jcnlwdGlvbiBvbiB0aGVcbi8vIHdyaXRlIHBhdGggYW5kIGFmdGVyIGRlY3J5cHRpb24gb24gdGhlIHJlYWQgcGF0aC4gVGhleSB0aGVyZWZvcmUgcmVmbGVjdFxuLy8gY29tcHJlc3Npb24ncyBlZmZlY3QsIG5vdCB0aGUgYXQtcmVzdCBzaXplICh3aGljaCBhbHNvIGluY2x1ZGVzIHRoZVxuLy8gfjI4LWJ5dGUgYGVuY3JgIGVudmVsb3BlIGFuZCwgb24gc29tZSBiYWNrZW5kcywgYmFzZTY0IGV4cGFuc2lvbikuXG5cbi8qKiBXaGV0aGVyIHRoaXMgc2VyaWFsaXplL2Rlc2VyaWFsaXplIHdhcyBhIHdyaXRlIG9yIHJlYWQuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbk9wZXJhdGlvbiA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ3NlcmlhbGl6ZScgfCAnZGVzZXJpYWxpemUnXG4+KCd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLm9wZXJhdGlvbicpO1xuXG4vKiogV2hldGhlciBhIGNvbXByZXNzaW9uIGNvZGVjIHdhcyBhcHBsaWVkICh3cml0ZSkgLyBwcmVzZW50IChyZWFkKS4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29tcHJlc3NlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uY29tcHJlc3NlZCdcbik7XG5cbi8qKiBXaGljaCBjb21wcmVzc2lvbiBjb2RlYyBhcHBsaWVkIC8gd2FzIHByZXNlbnQgKGB6c3RkYCwgYGd6aXBgLCBvciBgbm9uZWApLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25Db2RlYyA9IFNlbWFudGljQ29udmVudGlvbjwnenN0ZCcgfCAnZ3ppcCcgfCAnbm9uZSc+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5jb2RlYydcbik7XG5cbi8qKiBMb2dpY2FsICh1bmNvbXByZXNzZWQsIGRldmFsdWUtcHJlZml4ZWQpIHBheWxvYWQgc2l6ZSBpbiBieXRlcy4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uVW5jb21wcmVzc2VkQnl0ZXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24udW5jb21wcmVzc2VkX2J5dGVzJ1xuKTtcblxuLyoqIFN0b3JlZCAocG9zdC1jb21wcmVzc2lvbiwgcHJlLWVuY3J5cHRpb24pIHBheWxvYWQgc2l6ZSBpbiBieXRlcy4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uU3RvcmVkQnl0ZXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uc3RvcmVkX2J5dGVzJ1xuKTtcblxuLyoqIEZyYWN0aW9uIG9mIGJ5dGVzIHNhdmVkIGJ5IGNvbXByZXNzaW9uICgwLi4xKTsgc2V0IG9ubHkgd2hlbiBjb21wcmVzc2VkLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25Db21wcmVzc2lvblJhdGlvID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmNvbXByZXNzaW9uX3JhdGlvJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2Ygd29ya2Zsb3cgKGd1ZXN0KSBjb2RlIGV4ZWN1dGlvbnMgc2VyaWFsaXphdGlvbiBjb3VsZCBub3QgYXZvaWRcbiAqIChnZXR0ZXJzLCBwcm94aWVzLCBjdXN0b20gc2VyaWFsaXplcnMpOyBzZXQgb25seSB3aGVuIG5vbi16ZXJvLlxuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkd1ZXN0Q29kZUV4ZWN1dGlvbnMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uZ3Vlc3RfY29kZV9leGVjdXRpb25zJ1xuKTtcblxuLyoqXG4gKiBEZWR1cGxpY2F0ZWQgYGtpbmQgKGRldGFpbClgIGRlc2NyaXB0aW9ucyBvZiB0aGUgZ3Vlc3QtY29kZSBleGVjdXRpb25zO1xuICogc2V0IG9ubHkgd2hlbiBub24temVyby5cbiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25HdWVzdENvZGVEZXRhaWxzID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZ1tdPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uZ3Vlc3RfY29kZV9kZXRhaWxzJ1xuKTtcblxuLy8gUlBDL1BlZXIgU2VydmljZSBhdHRyaWJ1dGVzIC0gRm9yIHNlcnZpY2UgbWFwcyBhbmQgZGVwZW5kZW5jeSB0cmFja2luZ1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L3JwYy9ycGMtc3BhbnMvXG5cbi8qKiBUaGUgcmVtb3RlIHNlcnZpY2UgbmFtZSBmb3IgRGF0YWRvZyBzZXJ2aWNlIG1hcHMgKERhdGFkb2ctc3BlY2lmaWM6IHBlZXIuc2VydmljZSkgKi9cbmV4cG9ydCBjb25zdCBQZWVyU2VydmljZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdwZWVyLnNlcnZpY2UnKTtcblxuLyoqIFJQQyBzeXN0ZW0gaWRlbnRpZmllciAoc3RhbmRhcmQgT1RFTDogcnBjLnN5c3RlbSkgKi9cbmV4cG9ydCBjb25zdCBScGNTeXN0ZW0gPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLnN5c3RlbScpO1xuXG4vKiogUlBDIHNlcnZpY2UgbmFtZSAoc3RhbmRhcmQgT1RFTDogcnBjLnNlcnZpY2UpICovXG5leHBvcnQgY29uc3QgUnBjU2VydmljZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdycGMuc2VydmljZScpO1xuXG4vKiogUlBDIG1ldGhvZCBuYW1lIChzdGFuZGFyZCBPVEVMOiBycGMubWV0aG9kKSAqL1xuZXhwb3J0IGNvbnN0IFJwY01ldGhvZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdycGMubWV0aG9kJyk7XG5cbi8vIEVycm9yIGF0dHJpYnV0ZXMgLSBTdGFuZGFyZCBPVEVMIGVycm9yIGNvbnZlbnRpb25zXG4vLyBTZWU6IGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvZXhjZXB0aW9ucy9leGNlcHRpb25zLXNwYW5zL1xuXG4vKiogV2hldGhlciB0aGUgZXJyb3IgaXMgcmV0cnlhYmxlICh3b3JrZmxvdy1zcGVjaWZpYykgKi9cbmV4cG9ydCBjb25zdCBFcnJvclJldHJ5YWJsZSA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignZXJyb3IucmV0cnlhYmxlJyk7XG5cbi8qKiBFcnJvciBjYXRlZ29yeSAod29ya2Zsb3ctc3BlY2lmaWM6IGZhdGFsLCByZXRyeWFibGUsIHRyYW5zaWVudCkgKi9cbmV4cG9ydCBjb25zdCBFcnJvckNhdGVnb3J5ID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAnZmF0YWwnIHwgJ3JldHJ5YWJsZScgfCAndHJhbnNpZW50J1xuPignZXJyb3IuY2F0ZWdvcnknKTtcbiJdfQ==
|
|
373
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtY29udmVudGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsc0JBQXNCO0FBRXRCLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFeEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUVqRCxvQkFBb0IsQ0FBQyxDQUFDO0FBRXhCLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUUzRSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBRWpELHFCQUFxQixDQUFDLENBQUM7QUFFekIscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FDbkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRiw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtC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QyxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBUyxhQUFhLENBQUMsQ0FBQztBQUVwRSxrREFBa0Q7QUFDbEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRWxFLHFEQUFxRDtBQUNyRCxnRkFBZ0Y7QUFFaEYseURBQXlEO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBVSxpQkFBaUIsQ0FBQyxDQUFDO0FBRTdFLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBRTdDLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9wZW5UZWxlbWV0cnkgc2VtYW50aWMgY29udmVudGlvbnMgZm9yIFZlcmNlbCBXb3JrZmxvdyB0ZWxlbWV0cnkuXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgc3RhbmRhcmRpemVkIHRlbGVtZXRyeSBhdHRyaWJ1dGVzIGZvbGxvd2luZyBPcGVuVGVsZW1ldHJ5IHNlbWFudGljIGNvbnZlbnRpb25zXG4gKiBmb3IgaW5zdHJ1bWVudGluZyB3b3JrZmxvdyBleGVjdXRpb24sIHN0ZXAgcHJvY2Vzc2luZywgYW5kIHJlbGF0ZWQgb3BlcmF0aW9ucy4gRWFjaCBleHBvcnRlZCBmdW5jdGlvblxuICogY3JlYXRlcyBhIHByb3Blcmx5IGZvcm1hdHRlZCBhdHRyaWJ1dGUgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBPcGVuVGVsZW1ldHJ5IHNwYW5zLlxuICpcbiAqIFRoZSBzZW1hbnRpYyBjb252ZW50aW9ucyBhcmUgb3JnYW5pemVkIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzOlxuICogLSAqKldvcmtmbG93IGF0dHJpYnV0ZXMqKjogVHJhY2sgd29ya2Zsb3cgbGlmZWN5Y2xlLCBzdGF0dXMsIGFuZCBtZXRhZGF0YVxuICogLSAqKlN0ZXAgYXR0cmlidXRlcyoqOiBNb25pdG9yIGluZGl2aWR1YWwgc3RlcCBleGVjdXRpb24sIHJldHJpZXMsIGFuZCByZXN1bHRzXG4gKiAtICoqUXVldWUgYXR0cmlidXRlcyoqOiBJbnN0cnVtZW50IG1lc3NhZ2UgcXVldWUgb3BlcmF0aW9uc1xuICogLSAqKkRlcGxveW1lbnQgYXR0cmlidXRlcyoqOiBDYXB0dXJlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgaW5mb3JtYXRpb25cbiAqXG4gKiBBbGwgYXR0cmlidXRlIGZ1bmN0aW9ucyBhcmUgdHlwZS1zYWZlIGFuZCBsZXZlcmFnZSBleGlzdGluZyBiYWNrZW5kIHR5cGVzIHRvIGVuc3VyZVxuICogY29uc2lzdGVuY3kgYmV0d2VlbiB0ZWxlbWV0cnkgZGF0YSBhbmQgYWN0dWFsIHN5c3RlbSBzdGF0ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0ICogYXMgQXR0cmlidXRlIGZyb20gJy4vdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLmpzJztcbiAqXG4gKiAvLyBTZXQgd29ya2Zsb3cgYXR0cmlidXRlcyBvbiBhIHNwYW5cbiAqIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gKiAgIC4uLkF0dHJpYnV0ZS5Xb3JrZmxvd05hbWUoJ215LXdvcmtmbG93JyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5Xb3JrZmxvd09wZXJhdGlvbignc3RhcnQnKSxcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93UnVuU3RhdHVzKCdydW5uaW5nJyksXG4gKiB9KTtcbiAqXG4gKiAvLyBTZXQgc3RlcCBhdHRyaWJ1dGVzXG4gKiBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICogICAuLi5BdHRyaWJ1dGUuU3RlcE5hbWUoJ3Byb2Nlc3MtZGF0YScpLFxuICogICAuLi5BdHRyaWJ1dGUuU3RlcFN0YXR1cygnY29tcGxldGVkJyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwQXR0ZW1wdCgxKSxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi99IE9wZW5UZWxlbWV0cnkgU2VtYW50aWMgQ29udmVudGlvbnNcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICovXG5cbmltcG9ydCB0eXBlIHsgTWVzc2FnZUlkLCBTdGVwLCBXb3JrZmxvd1J1biB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlbWFudGljIGNvbnZlbnRpb24gZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGF0dHJpYnV0ZSBvYmplY3QuXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBhdHRyaWJ1dGUgbmFtZSBmb2xsb3dpbmcgT3BlblRlbGVtZXRyeSBzZW1hbnRpYyBjb252ZW50aW9uc1xuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIHJldHVybnMgYW4gYXR0cmlidXRlIG9iamVjdFxuICovXG5mdW5jdGlvbiBTZW1hbnRpY0NvbnZlbnRpb248VD4oLi4ubmFtZXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiAodmFsdWU6IFQpID0+XG4gICAgT2JqZWN0LmZyb21FbnRyaWVzKG5hbWVzLm1hcCgobmFtZSkgPT4gW25hbWUsIHZhbHVlXSBhcyBjb25zdCkpO1xufVxuXG4vLyBXb3JrZmxvdyBhdHRyaWJ1dGVzXG5cbi8qKiBUaGUgbmFtZSBvZiB0aGUgd29ya2Zsb3cgYmVpbmcgZXhlY3V0ZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd05hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cubmFtZScpO1xuXG4vKiogVGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQgb24gdGhlIHdvcmtmbG93ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dPcGVyYXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdzdGFydCcgfCAnZXhlY3V0ZScgfCAnZXhlY3V0ZV92MicgfCAncnVuJ1xuPignd29ya2Zsb3cub3BlcmF0aW9uJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgYSBzcGVjaWZpYyB3b3JrZmxvdyBydW4gaW5zdGFuY2UgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1J1bklkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93LnJ1bi5pZCcpO1xuXG4vKiogQ3VycmVudCBzdGF0dXMgb2YgdGhlIHdvcmtmbG93IHJ1biAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuU3RhdHVzID0gU2VtYW50aWNDb252ZW50aW9uPFxuICBXb3JrZmxvd1J1blsnc3RhdHVzJ10gfCAnd29ya2Zsb3dfc3VzcGVuZGVkJ1xuPignd29ya2Zsb3cucnVuLnN0YXR1cycpO1xuXG4vKiogVGltZXN0YW1wIHdoZW4gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzdGFydGVkIChVbml4IHRpbWVzdGFtcCkgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0YXJ0ZWRBdCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RhcnRlZF9hdCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgZXZlbnRzIHByb2Nlc3NlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFdmVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZXZlbnRzLmNvdW50J1xuKTtcblxuLyoqIFdoZXRoZXIgd29ya2Zsb3cgZXhlY3V0aW9uIHN0YXJ0cyB3aXRoIHJlcGxheSBvciByZXN1bWVzIGEgcmV0YWluZWQgVk0gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0V4ZWN1dGlvbk1vZGUgPSBTZW1hbnRpY0NvbnZlbnRpb248J3JlcGxheScgfCAncmV0YWluZWQnPihcbiAgJ3dvcmtmbG93LmV4ZWN1dGlvbi5tb2RlJ1xuKTtcblxuLyoqXG4gKiBFdmVudHMgdGhlIHJlcGxheSB3YWxrZWQgcGFzdCB0aGF0IG5vIGNvbnN1bWVyIGNsYWltZWQsIHN0aWxsIGhlbGQgd2hlbiB0aGVcbiAqIHJlcGxheSBzdG9wcGVkLlxuICpcbiAqIEEgbm9uLXplcm8gY291bnQgb24gYSBzdXNwZW5zaW9uIGlzIG9yZGluYXJ5OiBhbiBvdXQtb2YtYmFuZCBkZWxpdmVyeSB0aGF0XG4gKiBsYW5kZWQgYWhlYWQgb2YgdGhlIGNvZGUgdGhhdCByZWFkcyBpdCB3YWl0cyBmb3IgdGhlIHJlcGxheSB0aGF0IGdldHMgdGhlcmUuXG4gKiBGcm9tIGluc2lkZSBvbmUgcmVwbGF5IHRoYXQgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBldmVudCBubyByZXBsYXkgd2lsbFxuICogZXZlciBjbGFpbSwgYmVjYXVzZSB0aGUgdHdvIGRpZmZlciBvbmx5IGluIHdoYXQgdGhlIG5leHQgcmVwbGF5IGRvZXMuIFNvIHRoZVxuICogY291bnQgZ29lcyBvbiB0aGUgc3BhbiBpbnN0ZWFkIG9mIGZhaWxpbmcgdGhlIHJ1biwgYW5kIHRoZSBjYXNlIHdvcnRoIGFjdGluZ1xuICogb24gaXMgYSBxdWVyeSBhY3Jvc3MgYSBydW4ncyBzcGFuczogdGhlIHNhbWVcbiAqIHtAbGluayBXb3JrZmxvd1BhcmtlZEV2ZW50SWR9IGhlbGQgb24gc3VzcGVuc2lvbiBhZnRlciBzdXNwZW5zaW9uLlxuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dQYXJrZWRFdmVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZXZlbnRzLnBhcmtlZC5jb3VudCdcbik7XG5cbi8qKiBPbGRlc3QgZXZlbnQgc3RpbGwgaGVsZCB1bmNsYWltZWQgd2hlbiB0aGUgcmVwbGF5IHN0b3BwZWQuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dQYXJrZWRFdmVudElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5ldmVudHMucGFya2VkLmV2ZW50X2lkJ1xuKTtcblxuLyoqIFR5cGUgb2YgdGhlIG9sZGVzdCBldmVudCBzdGlsbCBoZWxkIHVuY2xhaW1lZCB3aGVuIHRoZSByZXBsYXkgc3RvcHBlZC4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1BhcmtlZEV2ZW50VHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXZlbnRzLnBhcmtlZC5ldmVudF90eXBlJ1xuKTtcblxuLyoqIE51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSB3b3JrZmxvdyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93QXJndW1lbnRzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmFyZ3VtZW50cy5jb3VudCdcbik7XG5cbi8qKiBUeXBlIG9mIHRoZSB3b3JrZmxvdyByZXN1bHQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1Jlc3VsdFR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LnJlc3VsdC50eXBlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdHJhY2UgY29udGV4dCB3YXMgcHJvcGFnYXRlZCB0byB0aGlzIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93VHJhY2VQcm9wYWdhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cudHJhY2UucHJvcGFnYXRlZCdcbik7XG5cbi8vIFF1aWNrSlMgVk0gZW5naW5lIGF0dHJpYnV0ZXNcblxuLyoqIFRoZSBWTSBlbmdpbmUgZXhlY3V0aW5nIHRoZSB3b3JrZmxvdyBmdW5jdGlvbiBmb3IgdGhpcyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dWbSA9IFNlbWFudGljQ29udmVudGlvbjwnbm9kZScgfCAncXVpY2tqcyc+KCd3b3JrZmxvdy52bScpO1xuXG4vKiogT3V0Y29tZSBvZiBhIFF1aWNrSlMgVk0gd29ya2Zsb3cgaW52b2NhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNPdXRjb21lID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAnY29tcGxldGVkJyB8ICdzdXNwZW5kZWQnIHwgJ2ZhaWxlZCdcbj4oJ3dvcmtmbG93LnZtLm91dGNvbWUnKTtcblxuLyoqIFdoZXRoZXIgcHJlbG9hZGVkIGV2ZW50cyBmcm9tIGBldmVudHMuY3JlYXRlKCdydW5fc3RhcnRlZCcpYCB3ZXJlIHVzZWQgKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTRXZlbnRzUHJlbG9hZGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cudm0uZXZlbnRzLnByZWxvYWRlZCdcbik7XG5cbi8qKiBUb3RhbCBudW1iZXIgb2YgZXZlbnRzIGZldGNoZWQgZnJvbSB0aGUgd29ybGQgZm9yIHRoaXMgaW52b2NhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNFdmVudHNGZXRjaGVkQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnZtLmV2ZW50cy5mZXRjaGVkX2NvdW50J1xuKTtcblxuLyoqIE51bWJlciBvZiBwYWdlcyByZXF1aXJlZCB0byBmZXRjaCBhbGwgZXZlbnRzICovXG5leHBvcnQgY29uc3QgUXVpY2tKU0V2ZW50c0ZldGNoZWRQYWdlcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cudm0uZXZlbnRzLmZldGNoZWRfcGFnZXMnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHBlbmRpbmcgVk0gb3BlcmF0aW9ucyBjYXB0dXJlZCBhdCBzdXNwZW5zaW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU1BlbmRpbmdPcHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cudm0ucGVuZGluZ19vcHNfY291bnQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHN0ZXBzIGV4ZWN1dGVkIGlubGluZSAobGl2ZS1WTSBjb250aW51YXRpb24pIHRoaXMgaW52b2NhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNJbmxpbmVTdGVwcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAncXVpY2tqcy5pbmxpbmVfc3RlcHMnXG4pO1xuXG4vKiogQWN0aXZlIHRyYWNlLWNvcnJlbGF0aW9uIG1vZGUgZm9yIHRoaXMgaW52b2NhdGlvbiAobGlua2VkIG9yIGNvbnRpbnVvdXMpICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUcmFjZU1vZGUgPSBTZW1hbnRpY0NvbnZlbnRpb248J2xpbmtlZCcgfCAnY29udGludW91cyc+KFxuICAnd29ya2Zsb3cudHJhY2UubW9kZSdcbik7XG5cbi8qKiBXaGV0aGVyIHRoaXMgd29ya2Zsb3cgaW52b2NhdGlvbiBpcyB1c2luZyB0aGUgdHVyYm8gZmlyc3QtZGVsaXZlcnkgcGF0aCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93VHVyYm8gPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3dvcmtmbG93LnR1cmJvJyk7XG5cbi8qKiBOYW1lIG9mIHRoZSBlcnJvciB0aGF0IGNhdXNlZCB3b3JrZmxvdyBmYWlsdXJlICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFcnJvck5hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmVycm9yLm5hbWUnXG4pO1xuXG4vKiogRXJyb3IgbWVzc2FnZSB3aGVuIHdvcmtmbG93IGZhaWxzICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFcnJvck1lc3NhZ2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmVycm9yLm1lc3NhZ2UnXG4pO1xuXG4vKiogRXJyb3IgY2xhc3NpZmljYXRpb24gY29kZSAoVVNFUl9FUlJPUiwgUlVOVElNRV9FUlJPUiwgZXRjLikgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yQ29kZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IuY29kZSdcbik7XG5cbi8qKiBOdW1iZXIgb2Ygc3RlcHMgY3JlYXRlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdGVwc0NyZWF0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN0ZXBzLmNyZWF0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIGhvb2tzIGNyZWF0ZWQgZHVyaW5nIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93SG9va3NDcmVhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ob29rcy5jcmVhdGVkJ1xuKTtcblxuLyoqIE51bWJlciBvZiB3YWl0cyBjcmVhdGVkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1dhaXRzQ3JlYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cud2FpdHMuY3JlYXRlZCdcbik7XG5cbi8qKlxuICogTnVtYmVyIG9mIGlubGluZS1vd25lZCBzdGVwcyB0aGlzIGludm9jYXRpb24gcmUtZXhlY3V0ZWQgYmVjYXVzZSBpdCBpcyBhXG4gKiByZWRlbGl2ZXJ5IG9mIHRoZWlyIG93bmluZyBxdWV1ZSBtZXNzYWdlIChjcmFzaCByZWNvdmVyeSBmb3IgaW5saW5lXG4gKiBzdGVwcyDigJQgc2VlIHRoZSBpbmxpbmUgc3RlcCBvd25lcnNoaXAgY2hhbmdlbG9nLCB3b3JrZmxvdyMyNzgwKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93T3duZWRSZWNvdmVyeVN0ZXBzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5pbmxpbmVfb3duZXJzaGlwLm93bmVkX3JlY292ZXJ5X3N0ZXBzJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2YgcGVuZGluZyBzdGVwcyBmb3Igd2hpY2ggdGhpcyByZXBsYXkgc3VwcHJlc3NlZCB0aGUgaW1tZWRpYXRlXG4gKiByZXF1ZXVlIChhbm90aGVyIGludm9jYXRpb24gaW5saW5lLW93bnMgdGhlbSB1bmRlciBhIGxpdmUgbGVhc2UpIGFuZFxuICogZW5zdXJlZCBhIGRlbGF5ZWQgYmFja3N0b3Agd2FrZSBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dCYWNrc3RvcFdha2VzQXJtZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmlubGluZV9vd25lcnNoaXAuYmFja3N0b3Bfd2FrZXNfYXJtZWQnXG4pO1xuXG4vLyBSb3V0ZSBhdHRyaWJ1dGVzXG5cbi8qKiBUaGUgd29ya2Zsb3cgcnVudGltZSByb3V0ZSBiZWluZyBoYW5kbGVkICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZVR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248J2Zsb3cnPihcbiAgJ3dvcmtmbG93LnJvdXRlLnR5cGUnXG4pO1xuXG4vKiogV2hldGhlciB0aGlzIHJvdXRlIGludm9jYXRpb24gcmV1c2VkIGFuIGFscmVhZHktY3JlYXRlZCByZXF1ZXN0IGhhbmRsZXIgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlSGFuZGxlckNhY2hlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnJvdXRlLmhhbmRsZXJfY2FjaGVkJ1xuKTtcblxuLyoqIE51bWJlciBvZiB0aW1lcyB0aGlzIGluLW1lbW9yeSByb3V0ZSBoYW5kbGVyIGhhcyBiZWVuIGludm9rZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlSW52b2NhdGlvbkNvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5pbnZvY2F0aW9uX2NvdW50J1xuKTtcblxuLyoqIFRpbWUgc2luY2UgdGhpcyByb3V0ZSBlbnRyeXBvaW50IHdhcyBjb25zdHJ1Y3RlZCwgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZUVudHJ5cG9pbnRBZ2VNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucm91dGUuZW50cnlwb2ludF9hZ2VfbXMnXG4pO1xuXG4vKiogVGltZSBzcGVudCBldmFsdWF0aW5nIHRoZSBnZW5lcmF0ZWQgcm91dGUgbW9kdWxlIGJvZHkgYmVmb3JlIGNyZWF0aW5nIHRoZSBlbnRyeXBvaW50ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZU1vZHVsZUJvZHlJbml0TXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJvdXRlLm1vZHVsZV9ib2R5X2luaXRfbXMnXG4pO1xuXG4vKipcbiAqIENvbXB1dGUgaW5zdGFuY2UgaGFuZGxpbmcgdGhpcyByb3V0ZSDigJQgdGhlIHN5bnRoZXNpemVkIGBDT01QVVRFX0lOU1RBTkNFX0lEYC5cbiAqIFVzZXMgT1RFTCBgZmFhcy5pbnN0YW5jZWAgKGV4ZWN1dGlvbi1lbnZpcm9ubWVudCBpZCwgcmV1c2VkIGFjcm9zc1xuICogaW52b2NhdGlvbnMgdG8gdGhlIHNhbWUgZnVuY3Rpb24pOlxuICogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9hdHRyaWJ1dGVzLXJlZ2lzdHJ5L2ZhYXMvXG4gKi9cbmV4cG9ydCBjb25zdCBGYWFzSW5zdGFuY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignZmFhcy5pbnN0YW5jZScpO1xuXG4vLyBTdGVwIGF0dHJpYnV0ZXNcblxuLyoqIE5hbWUgb2YgdGhlIHN0ZXAgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQgKi9cbmV4cG9ydCBjb25zdCBTdGVwTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLm5hbWUnKTtcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc3RlcCBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLmlkJyk7XG5cbi8qKiBDdXJyZW50IGF0dGVtcHQgbnVtYmVyIGZvciBzdGVwIGV4ZWN1dGlvbiAoc3RhcnRzIGF0IDEpICovXG5leHBvcnQgY29uc3QgU3RlcEF0dGVtcHQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC5hdHRlbXB0Jyk7XG5cbi8qKiBDdXJyZW50IHN0YXR1cyBvZiB0aGUgc3RlcCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTdGF0dXMgPSBTZW1hbnRpY0NvbnZlbnRpb248U3RlcFsnc3RhdHVzJ10+KCdzdGVwLnN0YXR1cycpO1xuXG4vKiogTWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyBhbGxvd2VkIGZvciB0aGlzIHN0ZXAgKi9cbmV4cG9ydCBjb25zdCBTdGVwTWF4UmV0cmllcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLm1heF9yZXRyaWVzJyk7XG5cbi8qKiBXaGV0aGVyIHRyYWNlIGNvbnRleHQgd2FzIHByb3BhZ2F0ZWQgdG8gdGhpcyBzdGVwIGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBUcmFjZVByb3BhZ2F0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICdzdGVwLnRyYWNlLnByb3BhZ2F0ZWQnXG4pO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCB0aW1lLXRvLWZpcnN0LXN0ZXAgbGF0ZW5jeSBpbiBtaWxsaXNlY29uZHM6IHJ1biBjcmVhdGlvbiDihpJcbiAqIHRoaXMgc3RlcCdzIGJvZHkgYmVnaW5uaW5nIHRvIGV4ZWN1dGUsIG1pbnVzIHByZS1zdGVwIGhvb2stY3JlYXRpb24gdGltZS5cbiAqIE9ubHkgcHJlc2VudCBvbiB0aGUgcnVuJ3MgZmlyc3Qgc3RlcCBleGVjdXRpb24gd2hlbiBpdCBxdWFsaWZpZWQgZm9yXG4gKiBtZWFzdXJlbWVudCAoc2VlIHJ1bnRpbWUvc3RlcC1sYXRlbmN5LnRzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBUdGZzTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC50dGZzX21zJyk7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHN0ZXAtdG8tc3RlcCBvdmVyaGVhZCBpbiBtaWxsaXNlY29uZHM6IHRoZSBwcmV2aW91cyBzdGVwJ3NcbiAqIHRlcm1pbmFsIGV2ZW50IOKGkiB0aGlzIHN0ZXAncyBib2R5IGJlZ2lubmluZyB0byBleGVjdXRlLiBPbmx5IHByZXNlbnQgd2hlblxuICogdGhlIHR3byBzdGVwcyByYW4gYmFjay10by1iYWNrLlxuICovXG5leHBvcnQgY29uc3QgU3RlcFN0c29NcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLnN0c29fbXMnKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgcnVuX3N0YXJ0ZWQtdG8tZmlyc3Qtc3RlcCBsYXRlbmN5IGluIG1pbGxpc2Vjb25kczogdGhlXG4gKiBgcnVuX3N0YXJ0ZWRgIHJlc3BvbnNlIGxhbmRpbmcgKG9yLCB1bmRlciB0dXJibywgdGhlIGxvY2FsIHJ1biBzeW50aGVzaXNcbiAqIGluc3RhbnQpIOKGkiB0aGlzIHN0ZXAncyBzdGFydCBQT1NUIGJlaW5nIGlzc3VlZC4gQSBzdWItd2luZG93IG9mIHR0ZnMgdGhhdFxuICogaXNvbGF0ZXMgcmVwbGF5IG92ZXJoZWFkIGZyb20gdGhlIHJ1bi1jcmVhdGlvbiBxdWV1ZSBob3AuIE9ubHkgcHJlc2VudCBvblxuICogdGhlIHJ1bidzIGZpcnN0IHN0ZXAgZXhlY3V0aW9uIHdoZW4gaXQgcXVhbGlmaWVkIGZvciBtZWFzdXJlbWVudCAoc2VlXG4gKiBydW50aW1lL3N0ZXAtbGF0ZW5jeS50cykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwUnNmc01zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAucnNmc19tcycpO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCBzeW5jaHJvbm91cyB3b3JrZmxvdy1mdW5jdGlvbiByZXBsYXkgZHVyYXRpb24gaW5cbiAqIG1pbGxpc2Vjb25kcywgZXhjbHVkaW5nIGF3YWl0ZWQgbmV0d29yayBJL08sIG9mIG9ubHkgdGhlIEZJTkFMIHJlcGxheSBwYXNzXG4gKiB3aXRoaW4gdGhlIHJzZnMgd2luZG93IOKAlCB0aGUgcGFzcyB0aGF0IHJlYWNoZWQgYW5kIHNjaGVkdWxlZCB0aGUgZmlyc3RcbiAqIHN0ZXAuIE5vdCBhY2N1bXVsYXRlZCBhY3Jvc3MgZWFybGllciBwcmUtZmlyc3Qtc3RlcCBwYXNzZXMgKGUuZy4gYVxuICogd29ya2Zsb3ctYm9keSBgc2V0QXR0cmlidXRlcygpYCBkZXRvdXIgcmVwbGF5cyBtb3JlIHRoYW4gb25jZSwgYW5kIGFcbiAqIHJlZGVsaXZlcnkgb21pdHMgZWFybGllciBpbnZvY2F0aW9ucycgd29yayBlbnRpcmVseSksIHNvIHRoaXMgbXVzdCBub3QgYmVcbiAqIHJlYWQgYXMgXCJ0aGUgcmVwbGF5IHBvcnRpb24gb2YgcnNmc1wiIOKAlCBzdGVwLnJzZnNfbXMgY292ZXJzIHRoZSB3aG9sZVxuICogd2luZG93LiBPbmx5IHByZXNlbnQgYWxvbmdzaWRlIHN0ZXAucnNmc19tcyBhbmQgb25seSBmb3IgdGhlIHJ1bidzIGZpcnN0XG4gKiBzdGVwIChzZWUgcnVudGltZS9zdGVwLWxhdGVuY3kudHMpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcEZpbmFsU2NoZWR1bGluZ1JlcGxheU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdzdGVwLmZpbmFsX3NjaGVkdWxpbmdfcmVwbGF5X21zJ1xuKTtcblxuLyoqXG4gKiBSdW50aW1lIHN0YXJ0dXAtbGF0ZW5jeSBvcHRpbWl6YXRpb25zIGFjdGl2ZSBmb3IgdGhlIHR0ZnMvc3RzbyBtZWFzdXJlbWVudFxuICogKGUuZy4gJ3R1cmJvJywgJ2xhenlTdGVwU3RhcnQnLCAnb3B0aW1pc3RpY1N0YXJ0JykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwTGF0ZW5jeU9wdGltaXphdGlvbnMgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nW10+KFxuICAnc3RlcC5sYXRlbmN5X29wdGltaXphdGlvbnMnXG4pO1xuXG4vKiogV2hldGhlciB0aGUgc3RlcCB3YXMgc2tpcHBlZCBkdXJpbmcgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgU3RlcFNraXBwZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3N0ZXAuc2tpcHBlZCcpO1xuXG4vKiogUmVhc29uIHdoeSB0aGUgc3RlcCB3YXMgc2tpcHBlZCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTa2lwUmVhc29uID1cbiAgU2VtYW50aWNDb252ZW50aW9uPFN0ZXBbJ3N0YXR1cyddPignc3RlcC5za2lwX3JlYXNvbicpO1xuXG4vKiogTnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHN0ZXAgZnVuY3Rpb24gKi9cbmV4cG9ydCBjb25zdCBTdGVwQXJndW1lbnRzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3N0ZXAuYXJndW1lbnRzLmNvdW50J1xuKTtcblxuLyoqIFR5cGUgb2YgdGhlIHN0ZXAgcmVzdWx0ICovXG5leHBvcnQgY29uc3QgU3RlcFJlc3VsdFR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5yZXN1bHQudHlwZScpO1xuXG4vKiogTmFtZSBvZiB0aGUgZXJyb3IgdGhhdCBjYXVzZWQgc3RlcCBmYWlsdXJlICovXG5leHBvcnQgY29uc3QgU3RlcEVycm9yTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLmVycm9yLm5hbWUnKTtcblxuLyoqIEVycm9yIG1lc3NhZ2Ugd2hlbiBzdGVwIGZhaWxzICovXG5leHBvcnQgY29uc3QgU3RlcEVycm9yTWVzc2FnZSA9XG4gIFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLmVycm9yLm1lc3NhZ2UnKTtcblxuLyoqIFdoZXRoZXIgdGhlIHN0ZXAgZmFpbGVkIHdpdGggYSBmYXRhbCBlcnJvciAobm8gcmV0cmllcykgKi9cbmV4cG9ydCBjb25zdCBTdGVwRmF0YWxFcnJvciA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignc3RlcC5mYXRhbF9lcnJvcicpO1xuXG4vKiogV2hldGhlciBhbGwgcmV0cnkgYXR0ZW1wdHMgaGF2ZSBiZWVuIGV4aGF1c3RlZCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXRyeUV4aGF1c3RlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3N0ZXAucmV0cnkuZXhoYXVzdGVkJ1xuKTtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIG5leHQgcmV0cnkgYXR0ZW1wdCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXRyeVRpbWVvdXRTZWNvbmRzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdzdGVwLnJldHJ5LnRpbWVvdXRfc2Vjb25kcydcbik7XG5cbi8qKiBXaGV0aGVyIHRoZSBzdGVwIHdpbGwgYmUgcmV0cmllZCBhZnRlciB0aGlzIGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmV0cnlXaWxsUmV0cnkgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICdzdGVwLnJldHJ5LndpbGxfcmV0cnknXG4pO1xuXG4vLyBRdWV1ZS9NZXNzYWdpbmcgYXR0cmlidXRlcyAtIFN0YW5kYXJkIE9URUwgbWVzc2FnaW5nIGNvbnZlbnRpb25zXG4vLyBTZWU6IGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvbWVzc2FnaW5nL21lc3NhZ2luZy1zcGFucy9cblxuLyoqIE1lc3NhZ2luZyBzeXN0ZW0gaWRlbnRpZmllciAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLnN5c3RlbSkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdTeXN0ZW0gPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignbWVzc2FnaW5nLnN5c3RlbScpO1xuXG4vKiogRGVzdGluYXRpb24gbmFtZS9xdWV1ZSBuYW1lIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcuZGVzdGluYXRpb24ubmFtZSkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdEZXN0aW5hdGlvbk5hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ21lc3NhZ2luZy5kZXN0aW5hdGlvbi5uYW1lJ1xuKTtcblxuLyoqIFRoZSBtZXNzYWdlIGlkIGJlaW5nIGhhbmRsZWQgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5tZXNzYWdlLmlkKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ01lc3NhZ2VJZCA9IFNlbWFudGljQ29udmVudGlvbjxNZXNzYWdlSWQ+KFxuICAnbWVzc2FnaW5nLm1lc3NhZ2UuaWQnXG4pO1xuXG4vKiogT3BlcmF0aW9uIHR5cGUgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5vcGVyYXRpb24udHlwZSkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdPcGVyYXRpb25UeXBlID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAncHVibGlzaCcgfCAncmVjZWl2ZScgfCAncHJvY2Vzcydcbj4oJ21lc3NhZ2luZy5vcGVyYXRpb24udHlwZScpO1xuXG4vKiogVGltZSB0YWtlbiB0byBlbnF1ZXVlIHRoZSBtZXNzYWdlIGluIG1pbGxpc2Vjb25kcyAod29ya2Zsb3ctc3BlY2lmaWMpICovXG5leHBvcnQgY29uc3QgUXVldWVPdmVyaGVhZE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5vdmVyaGVhZF9tcydcbik7XG5cbi8vIERlcGxveW1lbnQgYXR0cmlidXRlc1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50ICovXG5leHBvcnQgY29uc3QgRGVwbG95bWVudElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ2RlcGxveW1lbnQuaWQnKTtcblxuLyoqIFRoZSBkZXBsb3ltZW50IGEgcnVuIGlzIHBpbm5lZCB0bywgc2V0IG9ubHkgb24gYSBtaXNyb3V0ZWQgZGVsaXZlcnkuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSdW5QaW5uZWREZXBsb3ltZW50SWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmRlcGxveW1lbnQucGlubmVkX2lkJ1xuKTtcblxuLyoqIFJlLXJvdXRlIGF0dGVtcHRzIGZvciB0aGlzIG1pc3JvdXRlZCBkZWxpdmVyeSwgaW5jbHVkaW5nIHRoaXMgb25lLiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RGVwbG95bWVudE1pc21hdGNoUmV0cnlDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZGVwbG95bWVudF9taXNtYXRjaC5yZXRyeV9jb3VudCdcbik7XG5cbi8qKiBXaGV0aGVyIHRoZSBtaXNyb3V0ZWQgZGVsaXZlcnkgd2FzIHJlLXJvdXRlZCBpbnN0ZWFkIG9mIGZhaWxpbmcgdGhlIHJ1bi4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0RlcGxveW1lbnRNaXNtYXRjaFJlY292ZXJlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LmRlcGxveW1lbnRfbWlzbWF0Y2gucmVjb3ZlcmVkJ1xuKTtcblxuLy8gSG9vayBhdHRyaWJ1dGVzXG5cbi8qKiBUb2tlbiBpZGVudGlmeWluZyBhIHNwZWNpZmljIGhvb2sgKi9cbmV4cG9ydCBjb25zdCBIb29rVG9rZW4gPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cuaG9vay50b2tlbicpO1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgaG9vayBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IEhvb2tJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5ob29rLmlkJyk7XG5cbi8qKiBXaGV0aGVyIGEgaG9vayB3YXMgZm91bmQgYnkgaXRzIHRva2VuICovXG5leHBvcnQgY29uc3QgSG9va0ZvdW5kID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCd3b3JrZmxvdy5ob29rLmZvdW5kJyk7XG5cbi8qKlxuICogUHJvZHVjZXItc2lkZSBzaWduYWwgKG9uIHRoZSBgaG9vay5yZXN1bWVgIHNwYW4pIHRoYXQgdGhlIGRpcmVjdFxuICogYGhvb2tfcmVjZWl2ZWRgIHdyaXRlIGZhaWxlZCB0cmFuc2llbnRseSBidXQgdGhlIHF1ZXVlIGRpc3BhdGNoIHN1Y2NlZWRlZCwgc29cbiAqIHRoZSByZXN1bWUgaXMgcmVjb3ZlcmVkIHZpYSB0aGUgY29uc3VtZXIncyByZS1lbnN1cmUuIENvcnJlc3BvbmRzIHRvXG4gKiBgUmVzdW1lZEhvb2sucmVzaWxpZW50UmVzdW1lID09PSB0cnVlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEhvb2tSZXNpbGllbnRSZXN1bWUgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5ob29rLnJlc2lsaWVudF9yZXN1bWUnXG4pO1xuXG4vKipcbiAqIENvbnN1bWVyLXNpZGUgc2lnbmFsIChvbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uIHNwYW4pIHRoYXQgdGhpcyByZXBsYXlcbiAqIG1hdGVyaWFsaXplZCB0aGUgYGhvb2tfcmVjZWl2ZWRgIGV2ZW50IGZyb20gdGhlIHF1ZXVlIG1lc3NhZ2UncyBgaG9va0lucHV0YFxuICogYmVjYXVzZSB0aGUgcHJvZHVjZXIncyBkaXJlY3Qgd3JpdGUgaGFkIG5vdCBsYW5kZWQg4oCUIHRoZSBjb21wbGV0aW9uIG9mIHRoZVxuICogcmVjb3ZlcnkgcGF0aCB7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZX0gYmVnYW4uXG4gKlxuICogTGVnYWN5IC8gbm9uLWF0b21pYyByZS1lbnN1cmUgc2lnbmFsIG9ubHkuIEF0b21pYyBsYXp5IHJlc3VtZXNcbiAqIChyZXN1bWVJZCArIGRpZ2VzdCkgZ28gdGhyb3VnaCB0aGUgaG9pc3RlZCBwcmVsb2FkIHdyaXRlIGluc3RlYWQsIHdob3NlXG4gKiByZXNwb25zZSBjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSBwcm9kdWNlciBvciB0aGUgY29uc3VtZXIgd29uIHRoZVxuICogYChydW5JZCwgcmVzdW1lSWQpYCBjbGFpbSDigJQgc28gdGhpcyBhdHRyaWJ1dGUgaXMgZGVsaWJlcmF0ZWx5IE5PVCBlbWl0dGVkXG4gKiBmb3IgdGhlbSAoZW1pdHRpbmcgYHRydWVgIHVuY29uZGl0aW9uYWxseSB3b3VsZCBjb3VudCBldmVyeSBwcm9kdWNlci13b25cbiAqIHJlc3VtZSBhcyBhIHJlY292ZXJ5KS4gVGhlIHByb2R1Y2VyLWJlZ2luICh7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZX0pIC9cbiAqIGNvbnN1bWVyLW1hdGVyaWFsaXplZCBwYWlyaW5nIGlzIHRoZXJlZm9yZSBubyBsb25nZXIgY29tcGxldGUgZm9yIGF0b21pY1xuICogbGF6eSByZXN1bXB0aW9uczsgdXNlIHtAbGluayBIb29rUmVzdW1lU2V0dXBTb3VyY2V9IHRvIG9ic2VydmUgdGhhdCBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgSG9va1Jlc2lsaWVudFJlc3VtZU1hdGVyaWFsaXplZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93Lmhvb2sucmVzaWxpZW50X3Jlc3VtZV9tYXRlcmlhbGl6ZWQnXG4pO1xuXG4vKipcbiAqIENvbnN1bWVyLXNpZGUgc2lnbmFsIChvbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uIHNwYW4pIG9mIGhvdyBhIGxhenkgaG9va1xuICogcmVzdW1lIGluaXRpYWxpemVkIGl0cyByZXBsYXkgc3RhdGU6XG4gKlxuICogLSBgaG9va19yZWNlaXZlZF9zdHJlYW1gIOKAlCB0aGUgaG9pc3RlZCBgaG9va19yZWNlaXZlZGAgd3JpdGUgcmV0dXJuZWQgYVxuICogICB1c2FibGUgcmVwbGF5IHByZWxvYWQgKHJ1biArIGNvbXBsZXRlIGV2ZW50IGxvZyksIHNvIHRoZSBpbnZvY2F0aW9uXG4gKiAgIHNraXBwZWQgYm90aCB0aGUgYHJ1bl9zdGFydGVkYCB3cml0ZSBhbmQgdGhlIGluaXRpYWwgYGV2ZW50cy5saXN0YC5cbiAqIC0gYGhvb2tfcmVjZWl2ZWRfZmFsbGJhY2tgIOKAlCB0aGUgaG9pc3RlZCB3cml0ZSBzdWNjZWVkZWQgYnV0IHJldHVybmVkIG5vXG4gKiAgIHVzYWJsZSBwcmVsb2FkIChhIENCT1IgcmVzcG9uc2UgZnJvbSBhbiBvbGRlciBzZXJ2ZXIsIGEgV29ybGQgdGhhdFxuICogICBpZ25vcmVkIHRoZSBvcHQtaW4sIGEgYm91bmRlZCBgaGFzTW9yZWAgcGFnZSwgb3IgYSBwcmVsb2FkIHRoYXQgZmFpbGVkXG4gKiAgIHZhbGlkYXRpb24pOyB0aGUgaW52b2NhdGlvbiBmZWxsIGJhY2sgdG8gdGhlIGBydW5fc3RhcnRlZGAgc2V0dXAgd2l0aG91dFxuICogICByZS1wb3N0aW5nIHRoZSBob29rLlxuICpcbiAqIEFic2VudCBvbiBsZWdhY3kgaG9vayBkZWxpdmVyaWVzIChubyByZXN1bWVJZC9kaWdlc3QpIGFuZCBvbiBldmVyeSBvdGhlclxuICogZGVsaXZlcnkga2luZCwgd2hpY2ggdGFrZSB0aGUgYHJ1bl9zdGFydGVkYCBzZXR1cCB1bmNvbmRpdGlvbmFsbHkuXG4gKlxuICogVGhpcyBpcyBhIGxhdGVuY3kvc2V0dXAtcGF0aCBzaWduYWw6IGl0IHNheXMgd2hpY2ggcmVxdWVzdHMgaW5pdGlhbGl6ZWRcbiAqIHRoZSBpbnZvY2F0aW9uLCBOT1QgdGhhdCB0aGlzIGNvbnN1bWVyIGNyZWF0ZWQgdGhlIGBob29rX3JlY2VpdmVkYCBldmVudFxuICogKHRoZSBob2lzdGVkIHdyaXRlIG1heSBlcXVhbGx5IGhhdmUgY29udmVyZ2VkIG9uIHRoZSBwcm9kdWNlcidzIOKAlCBjbGFpbVxuICogb3duZXJzaGlwIGlzIG5vdCBvYnNlcnZhYmxlIGNsaWVudC1zaWRlOyBjZi5cbiAqIHtAbGluayBIb29rUmVzaWxpZW50UmVzdW1lTWF0ZXJpYWxpemVkfSkuXG4gKi9cbmV4cG9ydCBjb25zdCBIb29rUmVzdW1lU2V0dXBTb3VyY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LnJlc3VtZV9zZXR1cF9zb3VyY2UnXG4pO1xuXG4vLyBXZWJob29rIGF0dHJpYnV0ZXNcblxuLyoqIE51bWJlciBvZiB3ZWJob29rIGhhbmRsZXJzIHRyaWdnZXJlZCAqL1xuZXhwb3J0IGNvbnN0IFdlYmhvb2tIYW5kbGVyc1RyaWdnZXJlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd2ViaG9vay5oYW5kbGVycy50cmlnZ2VyZWQnXG4pO1xuXG4vLyBTdXNwZW5zaW9uIGF0dHJpYnV0ZXNcblxuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvblN0YXRlID0gU2VtYW50aWNDb252ZW50aW9uPCdzdXNwZW5kZWQnPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24uc3RhdGUnXG4pO1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvbkhvb2tDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi5ob29rX2NvdW50J1xuKTtcbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25TdGVwQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24uc3RlcF9jb3VudCdcbik7XG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uV2FpdENvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLndhaXRfY291bnQnXG4pO1xuXG4vLyBXb3JsZC9TdG9yYWdlIGF0dHJpYnV0ZXMgLSBTdGFuZGFyZCBPVEVMIEhUVFAgY29udmVudGlvbnNcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9odHRwL2h0dHAtc3BhbnMvXG5cbi8qKiBIVFRQIHJlcXVlc3QgbWV0aG9kIChzdGFuZGFyZCBPVEVMOiBodHRwLnJlcXVlc3QubWV0aG9kKSAqL1xuZXhwb3J0IGNvbnN0IEh0dHBSZXF1ZXN0TWV0aG9kID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICdodHRwLnJlcXVlc3QubWV0aG9kJ1xuKTtcblxuLyoqIFJvdXRlIHBhdHRlcm4gZm9yIHRoZSByZXF1ZXN0IChzdGFuZGFyZCBPVEVMOiBodHRwLnJvdXRlKSAqL1xuZXhwb3J0IGNvbnN0IEh0dHBSb3V0ZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdodHRwLnJvdXRlJyk7XG5cbi8qKiBGdWxsIFVSTCBvZiB0aGUgcmVxdWVzdCAoc3RhbmRhcmQgT1RFTDogdXJsLmZ1bGwpICovXG5leHBvcnQgY29uc3QgVXJsRnVsbCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd1cmwuZnVsbCcpO1xuXG4vKiogU2VydmVyIGhvc3RuYW1lIChzdGFuZGFyZCBPVEVMOiBzZXJ2ZXIuYWRkcmVzcykgKi9cbmV4cG9ydCBjb25zdCBTZXJ2ZXJBZGRyZXNzID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3NlcnZlci5hZGRyZXNzJyk7XG5cbi8qKiBTZXJ2ZXIgcG9ydCAoc3RhbmRhcmQgT1RFTDogc2VydmVyLnBvcnQpICovXG5leHBvcnQgY29uc3QgU2VydmVyUG9ydCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzZXJ2ZXIucG9ydCcpO1xuXG4vKiogSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZSAoc3RhbmRhcmQgT1RFTDogaHR0cC5yZXNwb25zZS5zdGF0dXNfY29kZSkgKi9cbmV4cG9ydCBjb25zdCBIdHRwUmVzcG9uc2VTdGF0dXNDb2RlID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdodHRwLnJlc3BvbnNlLnN0YXR1c19jb2RlJ1xuKTtcblxuLyoqIEVycm9yIHR5cGUgd2hlbiByZXF1ZXN0IGZhaWxzIChzdGFuZGFyZCBPVEVMOiBlcnJvci50eXBlKSAqL1xuZXhwb3J0IGNvbnN0IEVycm9yVHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdlcnJvci50eXBlJyk7XG5cbi8vIFdvcmxkLXNwZWNpZmljIGN1c3RvbSBhdHRyaWJ1dGVzIChmb3Igd29ya2Zsb3ctc3BlY2lmaWMgY29udGV4dClcblxuLyoqIEZvcm1hdCB1c2VkIGZvciBwYXJzaW5nIHJlc3BvbnNlIGJvZHkgKGNib3Igb3IganNvbikgKi9cbmV4cG9ydCBjb25zdCBXb3JsZFBhcnNlRm9ybWF0ID0gU2VtYW50aWNDb252ZW50aW9uPCdjYm9yJyB8ICdqc29uJz4oXG4gICd3b3JrZmxvdy53b3JsZC5wYXJzZS5mb3JtYXQnXG4pO1xuXG4vLyBFdmVudCBsb2FkaW5nIGF0dHJpYnV0ZXNcblxuLyoqIE51bWJlciBvZiBwYWdpbmF0aW9uIHBhZ2VzIGxvYWRlZCB3aGVuIGZldGNoaW5nIHdvcmtmbG93IGV2ZW50cyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXZlbnRzUGFnZXNMb2FkZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmV2ZW50cy5wYWdlc19sb2FkZWQnXG4pO1xuXG4vLyBRdWV1ZSB0aW1pbmcgYnJlYWtkb3duIGF0dHJpYnV0ZXMgKHdvcmtmbG93LXNwZWNpZmljKVxuXG4vKiogVGltZSBzcGVudCBkZXNlcmlhbGl6aW5nIHRoZSBxdWV1ZSBtZXNzYWdlIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlRGVzZXJpYWxpemVUaW1lTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLmRlc2VyaWFsaXplX3RpbWVfbXMnXG4pO1xuXG4vKiogVGltZSBzcGVudCBleGVjdXRpbmcgdGhlIGhhbmRsZXIgbG9naWMgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgUXVldWVFeGVjdXRpb25UaW1lTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLmV4ZWN1dGlvbl90aW1lX21zJ1xuKTtcblxuLyoqIFRpbWUgc3BlbnQgc2VyaWFsaXppbmcgdGhlIHJlc3BvbnNlIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlU2VyaWFsaXplVGltZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5zZXJpYWxpemVfdGltZV9tcydcbik7XG5cbi8vIFBheWxvYWQgY29tcHJlc3Npb24gYXR0cmlidXRlcyAoenN0ZCBwcmVmZXJyZWQsIGd6aXAgZmFsbGJhY2s7IHNwZWNWZXJzaW9uID49IDUpXG4vL1xuLy8gU2l6ZXMgYXJlIG1lYXN1cmVkIGF0IHRoZSBjb21wcmVzc2lvbiBib3VuZGFyeTogYmVmb3JlIGVuY3J5cHRpb24gb24gdGhlXG4vLyB3cml0ZSBwYXRoIGFuZCBhZnRlciBkZWNyeXB0aW9uIG9uIHRoZSByZWFkIHBhdGguIFRoZXkgdGhlcmVmb3JlIHJlZmxlY3Rcbi8vIGNvbXByZXNzaW9uJ3MgZWZmZWN0LCBub3QgdGhlIGF0LXJlc3Qgc2l6ZSAod2hpY2ggYWxzbyBpbmNsdWRlcyB0aGVcbi8vIH4yOC1ieXRlIGBlbmNyYCBlbnZlbG9wZSBhbmQsIG9uIHNvbWUgYmFja2VuZHMsIGJhc2U2NCBleHBhbnNpb24pLlxuXG4vKiogV2hldGhlciB0aGlzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSB3YXMgYSB3cml0ZSBvciByZWFkLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25PcGVyYXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdzZXJpYWxpemUnIHwgJ2Rlc2VyaWFsaXplJ1xuPignd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5vcGVyYXRpb24nKTtcblxuLyoqIFdoZXRoZXIgYSBjb21wcmVzc2lvbiBjb2RlYyB3YXMgYXBwbGllZCAod3JpdGUpIC8gcHJlc2VudCAocmVhZCkuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkNvbXByZXNzZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmNvbXByZXNzZWQnXG4pO1xuXG4vKiogV2hpY2ggY29tcHJlc3Npb24gY29kZWMgYXBwbGllZCAvIHdhcyBwcmVzZW50IChgenN0ZGAsIGBnemlwYCwgb3IgYG5vbmVgKS4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29kZWMgPSBTZW1hbnRpY0NvbnZlbnRpb248J3pzdGQnIHwgJ2d6aXAnIHwgJ25vbmUnPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uY29kZWMnXG4pO1xuXG4vKiogTG9naWNhbCAodW5jb21wcmVzc2VkLCBkZXZhbHVlLXByZWZpeGVkKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblVuY29tcHJlc3NlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnVuY29tcHJlc3NlZF9ieXRlcydcbik7XG5cbi8qKiBTdG9yZWQgKHBvc3QtY29tcHJlc3Npb24sIHByZS1lbmNyeXB0aW9uKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblN0b3JlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnN0b3JlZF9ieXRlcydcbik7XG5cbi8qKiBGcmFjdGlvbiBvZiBieXRlcyBzYXZlZCBieSBjb21wcmVzc2lvbiAoMC4uMSk7IHNldCBvbmx5IHdoZW4gY29tcHJlc3NlZC4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29tcHJlc3Npb25SYXRpbyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5jb21wcmVzc2lvbl9yYXRpbydcbik7XG5cbi8qKlxuICogTnVtYmVyIG9mIHdvcmtmbG93IChndWVzdCkgY29kZSBleGVjdXRpb25zIHNlcmlhbGl6YXRpb24gY291bGQgbm90IGF2b2lkXG4gKiAoZ2V0dGVycywgcHJveGllcywgY3VzdG9tIHNlcmlhbGl6ZXJzKTsgc2V0IG9ubHkgd2hlbiBub24temVyby5cbiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25HdWVzdENvZGVFeGVjdXRpb25zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmd1ZXN0X2NvZGVfZXhlY3V0aW9ucydcbik7XG5cbi8qKlxuICogRGVkdXBsaWNhdGVkIGBraW5kIChkZXRhaWwpYCBkZXNjcmlwdGlvbnMgb2YgdGhlIGd1ZXN0LWNvZGUgZXhlY3V0aW9ucztcbiAqIHNldCBvbmx5IHdoZW4gbm9uLXplcm8uXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uR3Vlc3RDb2RlRGV0YWlscyA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmdbXT4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmd1ZXN0X2NvZGVfZGV0YWlscydcbik7XG5cbi8vIFJQQy9QZWVyIFNlcnZpY2UgYXR0cmlidXRlcyAtIEZvciBzZXJ2aWNlIG1hcHMgYW5kIGRlcGVuZGVuY3kgdHJhY2tpbmdcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9ycGMvcnBjLXNwYW5zL1xuXG4vKiogVGhlIHJlbW90ZSBzZXJ2aWNlIG5hbWUgZm9yIERhdGFkb2cgc2VydmljZSBtYXBzIChEYXRhZG9nLXNwZWNpZmljOiBwZWVyLnNlcnZpY2UpICovXG5leHBvcnQgY29uc3QgUGVlclNlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncGVlci5zZXJ2aWNlJyk7XG5cbi8qKiBSUEMgc3lzdGVtIGlkZW50aWZpZXIgKHN0YW5kYXJkIE9URUw6IHJwYy5zeXN0ZW0pICovXG5leHBvcnQgY29uc3QgUnBjU3lzdGVtID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5zeXN0ZW0nKTtcblxuLyoqIFJQQyBzZXJ2aWNlIG5hbWUgKHN0YW5kYXJkIE9URUw6IHJwYy5zZXJ2aWNlKSAqL1xuZXhwb3J0IGNvbnN0IFJwY1NlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLnNlcnZpY2UnKTtcblxuLyoqIFJQQyBtZXRob2QgbmFtZSAoc3RhbmRhcmQgT1RFTDogcnBjLm1ldGhvZCkgKi9cbmV4cG9ydCBjb25zdCBScGNNZXRob2QgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLm1ldGhvZCcpO1xuXG4vLyBFcnJvciBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBlcnJvciBjb252ZW50aW9uc1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2V4Y2VwdGlvbnMvZXhjZXB0aW9ucy1zcGFucy9cblxuLyoqIFdoZXRoZXIgdGhlIGVycm9yIGlzIHJldHJ5YWJsZSAod29ya2Zsb3ctc3BlY2lmaWMpICovXG5leHBvcnQgY29uc3QgRXJyb3JSZXRyeWFibGUgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ2Vycm9yLnJldHJ5YWJsZScpO1xuXG4vKiogRXJyb3IgY2F0ZWdvcnkgKHdvcmtmbG93LXNwZWNpZmljOiBmYXRhbCwgcmV0cnlhYmxlLCB0cmFuc2llbnQpICovXG5leHBvcnQgY29uc3QgRXJyb3JDYXRlZ29yeSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2ZhdGFsJyB8ICdyZXRyeWFibGUnIHwgJ3RyYW5zaWVudCdcbj4oJ2Vycm9yLmNhdGVnb3J5Jyk7XG4iXX0=
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "5.0.0-beta.
|
|
1
|
+
export declare const version = "5.0.0-beta.41";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '5.0.0-beta.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const version = '5.0.0-beta.41';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjQxJ1xuIl19
|
package/dist/vm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vm/index.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,MAAM,CAAC;CACxB;AAgCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vm/index.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,MAAM,CAAC;CACxB;AAgCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;iCA4J1B,MAAM;EAItC"}
|
package/dist/vm/index.js
CHANGED
|
@@ -44,15 +44,18 @@ export function createContext(options) {
|
|
|
44
44
|
const g = runInContext('globalThis', context);
|
|
45
45
|
// Deterministic `Math.random()`
|
|
46
46
|
g.Math.random = rng;
|
|
47
|
-
// Override `Date` constructor to return fixed time when called without
|
|
47
|
+
// Override `Date` constructor to return fixed time when called without
|
|
48
|
+
// arguments. Constructing through `Reflect.construct` with `new.target`
|
|
49
|
+
// keeps subclassing intact (e.g. `TZDate` from `@date-fns/tz`), while a
|
|
50
|
+
// plain function (rather than a `class`) keeps `Date()` callable without
|
|
51
|
+
// `new`, which per spec ignores its arguments and returns the time string.
|
|
48
52
|
const Date_ = g.Date;
|
|
49
53
|
// biome-ignore lint/suspicious/noShadowRestrictedNames: We're shadowing the global `Date` property to make it deterministic.
|
|
50
54
|
g.Date = function Date(...args) {
|
|
51
|
-
if (
|
|
52
|
-
return new Date_(fixedTimestamp);
|
|
55
|
+
if (new.target === undefined) {
|
|
56
|
+
return new Date_(fixedTimestamp).toString();
|
|
53
57
|
}
|
|
54
|
-
|
|
55
|
-
return new Date_(...args);
|
|
58
|
+
return Reflect.construct(Date_, args.length === 0 ? [fixedTimestamp] : args, new.target);
|
|
56
59
|
};
|
|
57
60
|
g.Date.prototype = Date_.prototype;
|
|
58
61
|
// Preserve static methods
|
|
@@ -167,4 +170,4 @@ export function createContext(options) {
|
|
|
167
170
|
},
|
|
168
171
|
};
|
|
169
172
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxJQUFJLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBUTdDLGtFQUFrRTtBQUNsRSxNQUFNLGlCQUFpQixHQUEyQjtJQUNoRCxPQUFPLEVBQUUsTUFBTTtJQUNmLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFNBQVMsRUFBRSxRQUFRO0NBQ3BCLENBQUM7QUFFRix3RUFBd0U7QUFDeEUsNkVBQTZFO0FBQzdFLHlFQUF5RTtBQUN6RSxrRUFBa0U7QUFDbEUsU0FBUyxhQUFhLENBQ3BCLElBQW1DO0lBRW5DLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkQsb0VBQW9FO1FBQ3BFLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxTQUFTLENBQ2pCLHFFQUFxRSxDQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxD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RyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQztJQUMvQyxDQUFDLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7SUFDL0MsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUV6QixvRUFBb0U7SUFDcEUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLGlFQUFpRTtJQUNoRSxDQUFDLENBQUMsTUFBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLE1BQWMsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTCxPQUFPO1FBQ1AsVUFBVSxFQUFFLENBQUM7UUFDYixlQUFlLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDckMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHsgdHlwZXMgfSBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0IHsgcnVuSW5Db250ZXh0LCBjcmVhdGVDb250ZXh0IGFzIHZtQ3JlYXRlQ29udGV4dCB9IGZyb20gJ25vZGU6dm0nO1xuaW1wb3J0IHsgV29ya2Zsb3dSdW50aW1lRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCBzZWVkcmFuZG9tIGZyb20gJ3NlZWRyYW5kb20nO1xuaW1wb3J0IHsgaW5zdGFsbFVpbnQ4QXJyYXlCYXNlNjQgfSBmcm9tICcuL3VpbnQ4YXJyYXktYmFzZTY0LmpzJztcbmltcG9ydCB7IGNyZWF0ZVJhbmRvbVVVSUQgfSBmcm9tICcuL3V1aWQuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRleHRPcHRpb25zIHtcbiAgc2VlZDogc3RyaW5nO1xuICAvLyBGaXhlZCB0aW1lc3RhbXAgZm9yIGRldGVybWluaXN0aWMgRGF0ZSBvcGVyYXRpb25zXG4gIGZpeGVkVGltZXN0YW1wOiBudW1iZXI7XG59XG5cbi8vIFdlYkNyeXB0byBkaWdlc3QgYWxnb3JpdGhtIG5hbWVzIOKGkiBub2RlOmNyeXB0byAoT3BlblNTTCkgbmFtZXMuXG5jb25zdCBESUdFU1RfQUxHT1JJVEhNUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ1NIQS0xJzogJ3NoYTEnLFxuICAnU0hBLTI1Nic6ICdzaGEyNTYnLFxuICAnU0hBLTM4NCc6ICdzaGEzODQnLFxuICAnU0hBLTUxMic6ICdzaGE1MTInLFxufTtcblxuLy8gV2ViQ3J5cHRvIEJ1ZmZlclNvdXJjZSBjb252ZXJzaW9uLiBUaGUgYHV0aWwudHlwZXNgIGJyYW5kIGNoZWNrcyB3b3JrXG4vLyBhY3Jvc3Mgdm0gcmVhbG1zLCBhbmQgbm9kZTpjcnlwdG8ncyBgaGFzaC51cGRhdGUoKWAgcmVhZHMgdmlldyByYW5nZXMgZnJvbVxuLy8gaW50ZXJuYWwgc2xvdHMgKG93biBwcm9wZXJ0aWVzIHNoYWRvd2luZyBgYnl0ZU9mZnNldGAvYGJ5dGVMZW5ndGhgIGFyZVxuLy8gaWdub3JlZCkg4oCUIG1hdGNoaW5nIFdlYkNyeXB0bywgd2hpY2ggYWxzbyByZWFkcyBpbnRlcm5hbCBzbG90cy5cbmZ1bmN0aW9uIHRvRGlnZXN0SW5wdXQoXG4gIGRhdGE6IEFycmF5QnVmZmVyIHwgQXJyYXlCdWZmZXJWaWV3XG4pOiBOb2RlSlMuQXJyYXlCdWZmZXJWaWV3IHtcbiAgaWYgKHR5cGVzLmlzVHlwZWRBcnJheShkYXRhKSB8fCB0eXBlcy5pc0RhdGFWaWV3KGRhdGEpKSB7XG4gICAgLy8gV2ViQ3J5cHRvJ3MgQnVmZmVyU291cmNlIGV4Y2x1ZGVzIFNoYXJlZEFycmF5QnVmZmVyLWJhY2tlZCB2aWV3cy5cbiAgICBpZiAodHlwZXMuaXNTaGFyZWRBcnJheUJ1ZmZlcihkYXRhLmJ1ZmZlcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdjcnlwdG8uc3VidGxlLmRpZ2VzdCBkb2VzIG5vdCBhY2NlcHQgU2hhcmVkQXJyYXlCdWZmZXItYmFja2VkIHZpZXdzJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgaWYgKCF0eXBlcy5pc0FycmF5QnVmZmVyKGRhdGEpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGF0YSBtdXN0IGJlIGFuIEFycmF5QnVmZmVyIG9yIEFycmF5QnVmZmVyVmlldycpO1xuICB9XG4gIHJldHVybiBuZXcgVWludDhBcnJheShkYXRhKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTm9kZS5qcyBgdm0uQ29udGV4dGAgY29uZmlndXJlZCB0byBiZSB1c2FibGUgZm9yXG4gKiBleGVjdXRpbmcgd29ya2Zsb3cgbG9naWMgaW4gYSBkZXRlcm1pbmlzdGljIGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KG9wdGlvbnM6IENyZWF0ZUNvbnRleHRPcHRpb25zKSB7XG4gIGxldCB7IGZpeGVkVGltZXN0YW1wIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IHNlZWQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJuZyA9IHNlZWRyYW5kb20oc2VlZCk7XG4gIGNvbnN0IGNvbnRleHQgPSB2bUNyZWF0ZUNvbnRleHQoKTtcblxuICBjb25zdCBnOiB0eXBlb2YgZ2xvYmFsVGhpcyA9IHJ1bkluQ29udGV4dCgnZ2xvYmFsVGhpcycsIGNvbnRleHQpO1xuXG4gIC8vIERldGVybWluaXN0aWMgYE1hdGgucmFuZG9tKClgXG4gIGcuTWF0aC5yYW5kb20gPSBybmc7XG5cbiAgLy8gT3ZlcnJpZGUgYERhdGVgIGNvbnN0cnVjdG9yIHRvIHJldHVybiBmaXhlZCB0aW1lIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzXG4gIGNvbnN0IERhdGVfID0gZy5EYXRlO1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vU2hhZG93UmVzdHJpY3RlZE5hbWVzOiBXZSdyZSBzaGFkb3dpbmcgdGhlIGdsb2JhbCBgRGF0ZWAgcHJvcGVydHkgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljLlxuICAoZyBhcyBhbnkpLkRhdGUgPSBmdW5jdGlvbiBEYXRlKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8KHR5cGVvZiBnbG9iYWxUaGlzKVsnRGF0ZSddPltdXG4gICkge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlXyhmaXhlZFRpbWVzdGFtcCk7XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBBcmdzIGlzIGBEYXRlYCBjb25zdHJ1Y3RvciBhcmd1bWVudHNcbiAgICByZXR1cm4gbmV3IERhdGVfKC4uLmFyZ3MpO1xuICB9O1xuICAoZyBhcyBhbnkpLkRhdGUucHJvdG90eXBlID0gRGF0ZV8ucHJvdG90eXBlO1xuICAvLyBQcmVzZXJ2ZSBzdGF0aWMgbWV0aG9kc1xuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZy5EYXRlLCBEYXRlXyk7XG4gIGcuRGF0ZS5ub3cgPSAoKSA9PiBmaXhlZFRpbWVzdGFtcDtcblxuICAvLyBEZXRlcm1pbmlzdGljIGBjcnlwdG9gIHVzaW5nIFByb3h5IHRvIGF2b2lkIG11dGF0aW5nIGdsb2JhbCBvYmplY3RzXG4gIGNvbnN0IG9yaWdpbmFsQ3J5cHRvID0gZ2xvYmFsVGhpcy5jcnlwdG87XG4gIGNvbnN0IG9yaWdpbmFsU3VidGxlID0gb3JpZ2luYWxDcnlwdG8uc3VidGxlO1xuXG4gIGZ1bmN0aW9uIGdldFJhbmRvbVZhbHVlcyhhcnJheTogVWludDhBcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5W2ldID0gTWF0aC5mbG9vcihybmcoKSAqIDI1Nik7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIGNvbnN0IHJhbmRvbVVVSUQgPSBjcmVhdGVSYW5kb21VVUlEKHJuZyk7XG5cbiAgLy8gVGhlIHNhbmRib3ggbXVzdCBub3QgaGFuZCB3b3JrZmxvdyBjb2RlIGEgcHJvbWlzZSB0aGF0IHNldHRsZXMgb24gaG9zdFxuICAvLyB0aW1pbmcgb3IgYSB3YXkgdG8gb2JzZXJ2ZSBob3N0IHN0YXRlIChiZXN0LWVmZm9ydCwgZm9yIG5vbi1hZHZlcnNhcmlhbFxuICAvLyBjb2RlKTogZXZlcnkgcHJvbWlzZSBhIHdvcmtmbG93IGNyZWF0ZXMgc2V0dGxlcyBlaXRoZXIgZnJvbSB0aGUgZXZlbnQgbG9nXG4gIC8vIG9yIHdpdGhpbiBpdHMgb3duIG1pY3JvdGFzayBjYXNjYWRlLCBzbyBhIHN1c3BlbmRlZCBWTSBpcyBmdWxseSBxdWllc2NlbnRcbiAgLy8gYW5kIGNhbiBiZSByZXRhaW5lZCBhY3Jvc3MgaW5saW5lIHN0ZXBzLlxuICAvL1xuICAvLyAtIGBBdG9taWNzLndhaXRBc3luY2AgaXMgYSB3YWxsLWNsb2NrIHRpbWVyICh2aWEgU2hhcmVkQXJyYXlCdWZmZXIpLlxuICAvLyAtIFRoZSBhc3luYyBgV2ViQXNzZW1ibHlgIGVudHJ5IHBvaW50cyByZXNvbHZlIG9uIGNvbXBpbGUtdGhyZWFkIHRpbWluZztcbiAgLy8gICB0aGUgc3luY2hyb25vdXMgYG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKWAgLyBgSW5zdGFuY2UoKWAgcmVtYWluLlxuICAvLyAtIGBXZWFrUmVmLmRlcmVmKClgIGFuZCBmaW5hbGl6ZXIgY2FsbGJhY2tzIG9ic2VydmUgR0MgdGltaW5nLlxuICAvLyAtIER5bmFtaWMgYGltcG9ydCgpYCBzZXR0bGVzIHdpdGhpbiBhIG1pY3JvdGFzayAocmVqZWN0ZWQ6IG5vXG4gIC8vICAgYGltcG9ydE1vZHVsZUR5bmFtaWNhbGx5YCksIHNvIGl0IG5lZWRzIG5vIGhhbmRsaW5nLlxuICAvLyAtIEFsbCBgY3J5cHRvLnN1YnRsZWAgbWV0aG9kcyBleGNlcHQgdGhlIGRldGVybWluaXN0aWMgYGRpZ2VzdGAgb3ZlcnJpZGVcbiAgLy8gICBiZWxvdyB0aHJvdyBleHBsaWNpdGx5IChzZWUgdGhlIHN1YnRsZSBwcm94eSkg4oCUIGJpbmRpbmcgdGhlbSB0byB0aGVcbiAgLy8gICBob3N0IHN1YnRsZSB3b3VsZCBoYW5kIHdvcmtmbG93cyBhIGhvc3QtdGltaW5nIHByb21pc2UuXG4gIGNvbnN0IGludHJpbnNpY3MgPSBnIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBkZWxldGUgaW50cmluc2ljcy5BdG9taWNzLndhaXRBc3luYztcbiAgZGVsZXRlIGludHJpbnNpY3MuV2ViQXNzZW1ibHkuY29tcGlsZTtcbiAgZGVsZXRlIGludHJpbnNpY3MuV2ViQXNzZW1ibHkuaW5zdGFudGlhdGU7XG4gIGRlbGV0ZSBpbnRyaW5zaWNzLldlYkFzc2VtYmx5LmNvbXBpbGVTdHJlYW1pbmc7XG4gIGRlbGV0ZSBpbnRyaW5zaWNzLldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nO1xuICBkZWxldGUgaW50cmluc2ljcy5XZWFrUmVmO1xuICBkZWxldGUgaW50cmluc2ljcy5GaW5hbGl6YXRpb25SZWdpc3RyeTtcblxuICAvLyBgY3J5cHRvLnN1YnRsZS5kaWdlc3RgIGNvbXB1dGVzIHN5bmNocm9ub3VzbHkgdmlhIG5vZGU6Y3J5cHRvLCBzbyBpdHNcbiAgLy8gcHJvbWlzZSBzZXR0bGVzIG9uIGEgZGV0ZXJtaW5pc3RpYyBtaWNyb3Rhc2sgaW5zdGVhZCBvZiBob3N0IHRocmVhZHBvb2xcbiAgLy8gdGltaW5nIOKAlCBhIGRpZ2VzdCBjYW4gbmV2ZXIgYWR2YW5jZSBhIHN1c3BlbmRlZCB3b3JrZmxvdywgYW5kXG4gIC8vIGRpZ2VzdC11c2luZyBWTXMgc3RheSByZXRhaW5hYmxlLiBWYWx1ZXMgYXJlIGJ5dGUtaWRlbnRpY2FsIHRvIFdlYkNyeXB0by5cbiAgY29uc3QgZGlnZXN0ID0gYXN5bmMgKFxuICAgIGFsZ29yaXRobTogc3RyaW5nIHwgeyBuYW1lOiBzdHJpbmcgfSxcbiAgICBkYXRhOiBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuICApOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVvZiBhbGdvcml0aG0gPT09ICdzdHJpbmcnID8gYWxnb3JpdGhtIDogYWxnb3JpdGhtLm5hbWU7XG4gICAgY29uc3Qgb3NzbCA9IERJR0VTVF9BTEdPUklUSE1TW25hbWUudG9VcHBlckNhc2UoKV07XG4gICAgaWYgKCFvc3NsKSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKFxuICAgICAgICBgVW5yZWNvZ25pemVkIGFsZ29yaXRobSBuYW1lOiAke25hbWV9YCxcbiAgICAgICAgJ05vdFN1cHBvcnRlZEVycm9yJ1xuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgaGFzaCA9IGNyZWF0ZUhhc2gob3NzbCkudXBkYXRlKHRvRGlnZXN0SW5wdXQoZGF0YSkpLmRpZ2VzdCgpO1xuICAgIC8vIENvcHkgb3V0OiBzbWFsbCBCdWZmZXJzIHNoYXJlIHRoZSBpbnRlcm5hbCBwb29sIGFsbG9jYXRpb24uXG4gICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5QnVmZmVyKGhhc2guYnl0ZUxlbmd0aCk7XG4gICAgbmV3IFVpbnQ4QXJyYXkob3V0KS5zZXQoaGFzaCk7XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICBnLmNyeXB0byA9IG5ldyBQcm94eShvcmlnaW5hbENyeXB0bywge1xuICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgIGlmIChwcm9wID09PSAnZ2V0UmFuZG9tVmFsdWVzJykge1xuICAgICAgICByZXR1cm4gZ2V0UmFuZG9tVmFsdWVzO1xuICAgICAgfVxuICAgICAgaWYgKHByb3AgPT09ICdyYW5kb21VVUlEJykge1xuICAgICAgICByZXR1cm4gcmFuZG9tVVVJRDtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wID09PSAnc3VidGxlJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KG9yaWdpbmFsU3VidGxlLCB7XG4gICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdkaWdlc3QnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkaWdlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRhcmdldFtwcm9wIGFzIGtleW9mIHR5cGVvZiBvcmlnaW5hbFN1YnRsZV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEV2ZXJ5IG90aGVyIHN1YnRsZSBtZXRob2QgKGBlbmNyeXB0YCwgYHNpZ25gLCBgaW1wb3J0S2V5YCwg4oCmKVxuICAgICAgICAgICAgLy8gc2V0dGxlcyBvbiBob3N0IHRocmVhZHBvb2wgdGltaW5nLCB3aGljaCBjYW5ub3QgYmUgcmVwbGF5ZWQuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgV29ya2Zsb3dSdW50aW1lRXJyb3IoXG4gICAgICAgICAgICAgICAgYFxcYGNyeXB0by5zdWJ0bGUuJHtTdHJpbmcocHJvcCl9KClcXGAgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgYSB3b3JrZmxvdyBmdW5jdGlvbi4gTW92ZSBpdCB0byBhIHN0ZXAgZnVuY3Rpb24gd2hlcmUgZnVsbCBOb2RlLmpzIGNyeXB0byBpcyBhdmFpbGFibGUuYFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygb3JpZ2luYWxDcnlwdG9dO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFByb3BhZ2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgKGcgYXMgYW55KS5wcm9jZXNzID0ge1xuICAgIGVudjogT2JqZWN0LmZyZWV6ZSh7IC4uLnByb2Nlc3MuZW52IH0pLFxuICB9O1xuXG4gIC8vIFN0YXRlbGVzcyArIHN5bmNocm9ub3VzIFdlYiBBUElzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIGluc2lkZSB0aGUgc2FuZGJveFxuICBnLkRPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO1xuICBnLkhlYWRlcnMgPSBnbG9iYWxUaGlzLkhlYWRlcnM7XG4gIGcuVGV4dEVuY29kZXIgPSBnbG9iYWxUaGlzLlRleHRFbmNvZGVyO1xuICBnLlRleHREZWNvZGVyID0gZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcjtcbiAgZy5jb25zb2xlID0gZ2xvYmFsVGhpcy5jb25zb2xlO1xuICBnLlVSTCA9IGdsb2JhbFRoaXMuVVJMO1xuICBnLlVSTFNlYXJjaFBhcmFtcyA9IGdsb2JhbFRoaXMuVVJMU2VhcmNoUGFyYW1zO1xuICBnLnN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lO1xuICBnLmF0b2IgPSBnbG9iYWxUaGlzLmF0b2I7XG4gIGcuYnRvYSA9IGdsb2JhbFRoaXMuYnRvYTtcblxuICAvLyBUQzM5IFVpbnQ4QXJyYXkgYmFzZTY0L2hleCBwb2x5ZmlsbCAocHJvcG9zYWwtYXJyYXlidWZmZXItYmFzZTY0KVxuICBpbnN0YWxsVWludDhBcnJheUJhc2U2NChnLlVpbnQ4QXJyYXkpO1xuXG4gIC8vIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwb2x5ZmlsbCBmb3IgYHVzaW5nYCBrZXl3b3JkXG4gIChnLlN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPz89IFN5bWJvbC5mb3IoJ1N5bWJvbC5kaXNwb3NlJyk7XG4gIChnLlN5bWJvbCBhcyBhbnkpLmFzeW5jRGlzcG9zZSA/Pz0gU3ltYm9sLmZvcignU3ltYm9sLmFzeW5jRGlzcG9zZScpO1xuXG4gIC8vIEhBQ0s6IFNoaW0gYGV4cG9ydHNgIGZvciB0aGUgYnVuZGxlXG4gIGcuZXhwb3J0cyA9IHt9O1xuICAoZyBhcyBhbnkpLm1vZHVsZSA9IHsgZXhwb3J0czogZy5leHBvcnRzIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIGdsb2JhbFRoaXM6IGcsXG4gICAgdXBkYXRlVGltZXN0YW1wOiAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICAgIGZpeGVkVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxJQUFJLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBUTdDLGtFQUFrRTtBQUNsRSxNQUFNLGlCQUFpQixHQUEyQjtJQUNoRCxPQUFPLEVBQUUsTUFBTTtJQUNmLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFNBQVMsRUFBRSxRQUFRO0NBQ3BCLENBQUM7QUFFRix3RUFBd0U7QUFDeEUsNkVBQTZFO0FBQzdFLHlFQUF5RTtBQUN6RSxrRUFBa0U7QUFDbEUsU0FBUyxhQUFhLENBQ3BCLElBQW1DO0lBRW5DLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkQsb0VBQW9FO1FBQ3BFLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxTQUFTLENBQ2pCLHFFQUFxRSxDQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxD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QyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUN2QyxDQUFDLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQztJQUMvQyxDQUFDLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7SUFDL0MsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUV6QixvRUFBb0U7SUFDcEUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLGlFQUFpRTtJQUNoRSxDQUFDLENBQUMsTUFBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLE1BQWMsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTCxPQUFPO1FBQ1AsVUFBVSxFQUFFLENBQUM7UUFDYixlQUFlLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDckMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHsgdHlwZXMgfSBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0IHsgcnVuSW5Db250ZXh0LCBjcmVhdGVDb250ZXh0IGFzIHZtQ3JlYXRlQ29udGV4dCB9IGZyb20gJ25vZGU6dm0nO1xuaW1wb3J0IHsgV29ya2Zsb3dSdW50aW1lRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCBzZWVkcmFuZG9tIGZyb20gJ3NlZWRyYW5kb20nO1xuaW1wb3J0IHsgaW5zdGFsbFVpbnQ4QXJyYXlCYXNlNjQgfSBmcm9tICcuL3VpbnQ4YXJyYXktYmFzZTY0LmpzJztcbmltcG9ydCB7IGNyZWF0ZVJhbmRvbVVVSUQgfSBmcm9tICcuL3V1aWQuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRleHRPcHRpb25zIHtcbiAgc2VlZDogc3RyaW5nO1xuICAvLyBGaXhlZCB0aW1lc3RhbXAgZm9yIGRldGVybWluaXN0aWMgRGF0ZSBvcGVyYXRpb25zXG4gIGZpeGVkVGltZXN0YW1wOiBudW1iZXI7XG59XG5cbi8vIFdlYkNyeXB0byBkaWdlc3QgYWxnb3JpdGhtIG5hbWVzIOKGkiBub2RlOmNyeXB0byAoT3BlblNTTCkgbmFtZXMuXG5jb25zdCBESUdFU1RfQUxHT1JJVEhNUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ1NIQS0xJzogJ3NoYTEnLFxuICAnU0hBLTI1Nic6ICdzaGEyNTYnLFxuICAnU0hBLTM4NCc6ICdzaGEzODQnLFxuICAnU0hBLTUxMic6ICdzaGE1MTInLFxufTtcblxuLy8gV2ViQ3J5cHRvIEJ1ZmZlclNvdXJjZSBjb252ZXJzaW9uLiBUaGUgYHV0aWwudHlwZXNgIGJyYW5kIGNoZWNrcyB3b3JrXG4vLyBhY3Jvc3Mgdm0gcmVhbG1zLCBhbmQgbm9kZTpjcnlwdG8ncyBgaGFzaC51cGRhdGUoKWAgcmVhZHMgdmlldyByYW5nZXMgZnJvbVxuLy8gaW50ZXJuYWwgc2xvdHMgKG93biBwcm9wZXJ0aWVzIHNoYWRvd2luZyBgYnl0ZU9mZnNldGAvYGJ5dGVMZW5ndGhgIGFyZVxuLy8gaWdub3JlZCkg4oCUIG1hdGNoaW5nIFdlYkNyeXB0bywgd2hpY2ggYWxzbyByZWFkcyBpbnRlcm5hbCBzbG90cy5cbmZ1bmN0aW9uIHRvRGlnZXN0SW5wdXQoXG4gIGRhdGE6IEFycmF5QnVmZmVyIHwgQXJyYXlCdWZmZXJWaWV3XG4pOiBOb2RlSlMuQXJyYXlCdWZmZXJWaWV3IHtcbiAgaWYgKHR5cGVzLmlzVHlwZWRBcnJheShkYXRhKSB8fCB0eXBlcy5pc0RhdGFWaWV3KGRhdGEpKSB7XG4gICAgLy8gV2ViQ3J5cHRvJ3MgQnVmZmVyU291cmNlIGV4Y2x1ZGVzIFNoYXJlZEFycmF5QnVmZmVyLWJhY2tlZCB2aWV3cy5cbiAgICBpZiAodHlwZXMuaXNTaGFyZWRBcnJheUJ1ZmZlcihkYXRhLmJ1ZmZlcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdjcnlwdG8uc3VidGxlLmRpZ2VzdCBkb2VzIG5vdCBhY2NlcHQgU2hhcmVkQXJyYXlCdWZmZXItYmFja2VkIHZpZXdzJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgaWYgKCF0eXBlcy5pc0FycmF5QnVmZmVyKGRhdGEpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGF0YSBtdXN0IGJlIGFuIEFycmF5QnVmZmVyIG9yIEFycmF5QnVmZmVyVmlldycpO1xuICB9XG4gIHJldHVybiBuZXcgVWludDhBcnJheShkYXRhKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTm9kZS5qcyBgdm0uQ29udGV4dGAgY29uZmlndXJlZCB0byBiZSB1c2FibGUgZm9yXG4gKiBleGVjdXRpbmcgd29ya2Zsb3cgbG9naWMgaW4gYSBkZXRlcm1pbmlzdGljIGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KG9wdGlvbnM6IENyZWF0ZUNvbnRleHRPcHRpb25zKSB7XG4gIGxldCB7IGZpeGVkVGltZXN0YW1wIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IHNlZWQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJuZyA9IHNlZWRyYW5kb20oc2VlZCk7XG4gIGNvbnN0IGNvbnRleHQgPSB2bUNyZWF0ZUNvbnRleHQoKTtcblxuICBjb25zdCBnOiB0eXBlb2YgZ2xvYmFsVGhpcyA9IHJ1bkluQ29udGV4dCgnZ2xvYmFsVGhpcycsIGNvbnRleHQpO1xuXG4gIC8vIERldGVybWluaXN0aWMgYE1hdGgucmFuZG9tKClgXG4gIGcuTWF0aC5yYW5kb20gPSBybmc7XG5cbiAgLy8gT3ZlcnJpZGUgYERhdGVgIGNvbnN0cnVjdG9yIHRvIHJldHVybiBmaXhlZCB0aW1lIHdoZW4gY2FsbGVkIHdpdGhvdXRcbiAgLy8gYXJndW1lbnRzLiBDb25zdHJ1Y3RpbmcgdGhyb3VnaCBgUmVmbGVjdC5jb25zdHJ1Y3RgIHdpdGggYG5ldy50YXJnZXRgXG4gIC8vIGtlZXBzIHN1YmNsYXNzaW5nIGludGFjdCAoZS5nLiBgVFpEYXRlYCBmcm9tIGBAZGF0ZS1mbnMvdHpgKSwgd2hpbGUgYVxuICAvLyBwbGFpbiBmdW5jdGlvbiAocmF0aGVyIHRoYW4gYSBgY2xhc3NgKSBrZWVwcyBgRGF0ZSgpYCBjYWxsYWJsZSB3aXRob3V0XG4gIC8vIGBuZXdgLCB3aGljaCBwZXIgc3BlYyBpZ25vcmVzIGl0cyBhcmd1bWVudHMgYW5kIHJldHVybnMgdGhlIHRpbWUgc3RyaW5nLlxuICBjb25zdCBEYXRlXyA9IGcuRGF0ZTtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub1NoYWRvd1Jlc3RyaWN0ZWROYW1lczogV2UncmUgc2hhZG93aW5nIHRoZSBnbG9iYWwgYERhdGVgIHByb3BlcnR5IHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYy5cbiAgKGcgYXMgYW55KS5EYXRlID0gZnVuY3Rpb24gRGF0ZSguLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChuZXcudGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZV8oZml4ZWRUaW1lc3RhbXApLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBSZWZsZWN0LmNvbnN0cnVjdChcbiAgICAgIERhdGVfLFxuICAgICAgYXJncy5sZW5ndGggPT09IDAgPyBbZml4ZWRUaW1lc3RhbXBdIDogYXJncyxcbiAgICAgIG5ldy50YXJnZXRcbiAgICApO1xuICB9O1xuICAoZyBhcyBhbnkpLkRhdGUucHJvdG90eXBlID0gRGF0ZV8ucHJvdG90eXBlO1xuICAvLyBQcmVzZXJ2ZSBzdGF0aWMgbWV0aG9kc1xuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZy5EYXRlLCBEYXRlXyk7XG4gIGcuRGF0ZS5ub3cgPSAoKSA9PiBmaXhlZFRpbWVzdGFtcDtcblxuICAvLyBEZXRlcm1pbmlzdGljIGBjcnlwdG9gIHVzaW5nIFByb3h5IHRvIGF2b2lkIG11dGF0aW5nIGdsb2JhbCBvYmplY3RzXG4gIGNvbnN0IG9yaWdpbmFsQ3J5cHRvID0gZ2xvYmFsVGhpcy5jcnlwdG87XG4gIGNvbnN0IG9yaWdpbmFsU3VidGxlID0gb3JpZ2luYWxDcnlwdG8uc3VidGxlO1xuXG4gIGZ1bmN0aW9uIGdldFJhbmRvbVZhbHVlcyhhcnJheTogVWludDhBcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5W2ldID0gTWF0aC5mbG9vcihybmcoKSAqIDI1Nik7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIGNvbnN0IHJhbmRvbVVVSUQgPSBjcmVhdGVSYW5kb21VVUlEKHJuZyk7XG5cbiAgLy8gVGhlIHNhbmRib3ggbXVzdCBub3QgaGFuZCB3b3JrZmxvdyBjb2RlIGEgcHJvbWlzZSB0aGF0IHNldHRsZXMgb24gaG9zdFxuICAvLyB0aW1pbmcgb3IgYSB3YXkgdG8gb2JzZXJ2ZSBob3N0IHN0YXRlIChiZXN0LWVmZm9ydCwgZm9yIG5vbi1hZHZlcnNhcmlhbFxuICAvLyBjb2RlKTogZXZlcnkgcHJvbWlzZSBhIHdvcmtmbG93IGNyZWF0ZXMgc2V0dGxlcyBlaXRoZXIgZnJvbSB0aGUgZXZlbnQgbG9nXG4gIC8vIG9yIHdpdGhpbiBpdHMgb3duIG1pY3JvdGFzayBjYXNjYWRlLCBzbyBhIHN1c3BlbmRlZCBWTSBpcyBmdWxseSBxdWllc2NlbnRcbiAgLy8gYW5kIGNhbiBiZSByZXRhaW5lZCBhY3Jvc3MgaW5saW5lIHN0ZXBzLlxuICAvL1xuICAvLyAtIGBBdG9taWNzLndhaXRBc3luY2AgaXMgYSB3YWxsLWNsb2NrIHRpbWVyICh2aWEgU2hhcmVkQXJyYXlCdWZmZXIpLlxuICAvLyAtIFRoZSBhc3luYyBgV2ViQXNzZW1ibHlgIGVudHJ5IHBvaW50cyByZXNvbHZlIG9uIGNvbXBpbGUtdGhyZWFkIHRpbWluZztcbiAgLy8gICB0aGUgc3luY2hyb25vdXMgYG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKWAgLyBgSW5zdGFuY2UoKWAgcmVtYWluLlxuICAvLyAtIGBXZWFrUmVmLmRlcmVmKClgIGFuZCBmaW5hbGl6ZXIgY2FsbGJhY2tzIG9ic2VydmUgR0MgdGltaW5nLlxuICAvLyAtIER5bmFtaWMgYGltcG9ydCgpYCBzZXR0bGVzIHdpdGhpbiBhIG1pY3JvdGFzayAocmVqZWN0ZWQ6IG5vXG4gIC8vICAgYGltcG9ydE1vZHVsZUR5bmFtaWNhbGx5YCksIHNvIGl0IG5lZWRzIG5vIGhhbmRsaW5nLlxuICAvLyAtIEFsbCBgY3J5cHRvLnN1YnRsZWAgbWV0aG9kcyBleGNlcHQgdGhlIGRldGVybWluaXN0aWMgYGRpZ2VzdGAgb3ZlcnJpZGVcbiAgLy8gICBiZWxvdyB0aHJvdyBleHBsaWNpdGx5IChzZWUgdGhlIHN1YnRsZSBwcm94eSkg4oCUIGJpbmRpbmcgdGhlbSB0byB0aGVcbiAgLy8gICBob3N0IHN1YnRsZSB3b3VsZCBoYW5kIHdvcmtmbG93cyBhIGhvc3QtdGltaW5nIHByb21pc2UuXG4gIGNvbnN0IGludHJpbnNpY3MgPSBnIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBkZWxldGUgaW50cmluc2ljcy5BdG9taWNzLndhaXRBc3luYztcbiAgZGVsZXRlIGludHJpbnNpY3MuV2ViQXNzZW1ibHkuY29tcGlsZTtcbiAgZGVsZXRlIGludHJpbnNpY3MuV2ViQXNzZW1ibHkuaW5zdGFudGlhdGU7XG4gIGRlbGV0ZSBpbnRyaW5zaWNzLldlYkFzc2VtYmx5LmNvbXBpbGVTdHJlYW1pbmc7XG4gIGRlbGV0ZSBpbnRyaW5zaWNzLldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nO1xuICBkZWxldGUgaW50cmluc2ljcy5XZWFrUmVmO1xuICBkZWxldGUgaW50cmluc2ljcy5GaW5hbGl6YXRpb25SZWdpc3RyeTtcblxuICAvLyBgY3J5cHRvLnN1YnRsZS5kaWdlc3RgIGNvbXB1dGVzIHN5bmNocm9ub3VzbHkgdmlhIG5vZGU6Y3J5cHRvLCBzbyBpdHNcbiAgLy8gcHJvbWlzZSBzZXR0bGVzIG9uIGEgZGV0ZXJtaW5pc3RpYyBtaWNyb3Rhc2sgaW5zdGVhZCBvZiBob3N0IHRocmVhZHBvb2xcbiAgLy8gdGltaW5nIOKAlCBhIGRpZ2VzdCBjYW4gbmV2ZXIgYWR2YW5jZSBhIHN1c3BlbmRlZCB3b3JrZmxvdywgYW5kXG4gIC8vIGRpZ2VzdC11c2luZyBWTXMgc3RheSByZXRhaW5hYmxlLiBWYWx1ZXMgYXJlIGJ5dGUtaWRlbnRpY2FsIHRvIFdlYkNyeXB0by5cbiAgY29uc3QgZGlnZXN0ID0gYXN5bmMgKFxuICAgIGFsZ29yaXRobTogc3RyaW5nIHwgeyBuYW1lOiBzdHJpbmcgfSxcbiAgICBkYXRhOiBBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1xuICApOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVvZiBhbGdvcml0aG0gPT09ICdzdHJpbmcnID8gYWxnb3JpdGhtIDogYWxnb3JpdGhtLm5hbWU7XG4gICAgY29uc3Qgb3NzbCA9IERJR0VTVF9BTEdPUklUSE1TW25hbWUudG9VcHBlckNhc2UoKV07XG4gICAgaWYgKCFvc3NsKSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKFxuICAgICAgICBgVW5yZWNvZ25pemVkIGFsZ29yaXRobSBuYW1lOiAke25hbWV9YCxcbiAgICAgICAgJ05vdFN1cHBvcnRlZEVycm9yJ1xuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgaGFzaCA9IGNyZWF0ZUhhc2gob3NzbCkudXBkYXRlKHRvRGlnZXN0SW5wdXQoZGF0YSkpLmRpZ2VzdCgpO1xuICAgIC8vIENvcHkgb3V0OiBzbWFsbCBCdWZmZXJzIHNoYXJlIHRoZSBpbnRlcm5hbCBwb29sIGFsbG9jYXRpb24uXG4gICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5QnVmZmVyKGhhc2guYnl0ZUxlbmd0aCk7XG4gICAgbmV3IFVpbnQ4QXJyYXkob3V0KS5zZXQoaGFzaCk7XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICBnLmNyeXB0byA9IG5ldyBQcm94eShvcmlnaW5hbENyeXB0bywge1xuICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgIGlmIChwcm9wID09PSAnZ2V0UmFuZG9tVmFsdWVzJykge1xuICAgICAgICByZXR1cm4gZ2V0UmFuZG9tVmFsdWVzO1xuICAgICAgfVxuICAgICAgaWYgKHByb3AgPT09ICdyYW5kb21VVUlEJykge1xuICAgICAgICByZXR1cm4gcmFuZG9tVVVJRDtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wID09PSAnc3VidGxlJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KG9yaWdpbmFsU3VidGxlLCB7XG4gICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdkaWdlc3QnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkaWdlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRhcmdldFtwcm9wIGFzIGtleW9mIHR5cGVvZiBvcmlnaW5hbFN1YnRsZV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEV2ZXJ5IG90aGVyIHN1YnRsZSBtZXRob2QgKGBlbmNyeXB0YCwgYHNpZ25gLCBgaW1wb3J0S2V5YCwg4oCmKVxuICAgICAgICAgICAgLy8gc2V0dGxlcyBvbiBob3N0IHRocmVhZHBvb2wgdGltaW5nLCB3aGljaCBjYW5ub3QgYmUgcmVwbGF5ZWQuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgV29ya2Zsb3dSdW50aW1lRXJyb3IoXG4gICAgICAgICAgICAgICAgYFxcYGNyeXB0by5zdWJ0bGUuJHtTdHJpbmcocHJvcCl9KClcXGAgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgYSB3b3JrZmxvdyBmdW5jdGlvbi4gTW92ZSBpdCB0byBhIHN0ZXAgZnVuY3Rpb24gd2hlcmUgZnVsbCBOb2RlLmpzIGNyeXB0byBpcyBhdmFpbGFibGUuYFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygb3JpZ2luYWxDcnlwdG9dO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFByb3BhZ2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgKGcgYXMgYW55KS5wcm9jZXNzID0ge1xuICAgIGVudjogT2JqZWN0LmZyZWV6ZSh7IC4uLnByb2Nlc3MuZW52IH0pLFxuICB9O1xuXG4gIC8vIFN0YXRlbGVzcyArIHN5bmNocm9ub3VzIFdlYiBBUElzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIGluc2lkZSB0aGUgc2FuZGJveFxuICBnLkRPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO1xuICBnLkhlYWRlcnMgPSBnbG9iYWxUaGlzLkhlYWRlcnM7XG4gIGcuVGV4dEVuY29kZXIgPSBnbG9iYWxUaGlzLlRleHRFbmNvZGVyO1xuICBnLlRleHREZWNvZGVyID0gZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcjtcbiAgZy5jb25zb2xlID0gZ2xvYmFsVGhpcy5jb25zb2xlO1xuICBnLlVSTCA9IGdsb2JhbFRoaXMuVVJMO1xuICBnLlVSTFNlYXJjaFBhcmFtcyA9IGdsb2JhbFRoaXMuVVJMU2VhcmNoUGFyYW1zO1xuICBnLnN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lO1xuICBnLmF0b2IgPSBnbG9iYWxUaGlzLmF0b2I7XG4gIGcuYnRvYSA9IGdsb2JhbFRoaXMuYnRvYTtcblxuICAvLyBUQzM5IFVpbnQ4QXJyYXkgYmFzZTY0L2hleCBwb2x5ZmlsbCAocHJvcG9zYWwtYXJyYXlidWZmZXItYmFzZTY0KVxuICBpbnN0YWxsVWludDhBcnJheUJhc2U2NChnLlVpbnQ4QXJyYXkpO1xuXG4gIC8vIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwb2x5ZmlsbCBmb3IgYHVzaW5nYCBrZXl3b3JkXG4gIChnLlN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPz89IFN5bWJvbC5mb3IoJ1N5bWJvbC5kaXNwb3NlJyk7XG4gIChnLlN5bWJvbCBhcyBhbnkpLmFzeW5jRGlzcG9zZSA/Pz0gU3ltYm9sLmZvcignU3ltYm9sLmFzeW5jRGlzcG9zZScpO1xuXG4gIC8vIEhBQ0s6IFNoaW0gYGV4cG9ydHNgIGZvciB0aGUgYnVuZGxlXG4gIGcuZXhwb3J0cyA9IHt9O1xuICAoZyBhcyBhbnkpLm1vZHVsZSA9IHsgZXhwb3J0czogZy5leHBvcnRzIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIGdsb2JhbFRoaXM6IGcsXG4gICAgdXBkYXRlVGltZXN0YW1wOiAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICAgIGZpeGVkVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abort-controller.d.ts","sourceRoot":"","sources":["../../src/workflow/abort-controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGpE;;;;;;;;;;GAUG;AACH,qBAAa,mBAAmB;;IAC9B,OAAO,UAAS;IAChB,MAAM,EAAE,OAAO,CAAa;IAE5B,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAKpC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,CAE1D;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,EAKhE;gBAEW,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD;;;;OAIG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAanC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAa1D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAK7D,cAAc,IAAI,IAAI;CAQvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,2BAA2B;;yBAEvD,mBAAmB;
|
|
1
|
+
{"version":3,"file":"abort-controller.d.ts","sourceRoot":"","sources":["../../src/workflow/abort-controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGpE;;;;;;;;;;GAUG;AACH,qBAAa,mBAAmB;;IAC9B,OAAO,UAAS;IAChB,MAAM,EAAE,OAAO,CAAa;IAE5B,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAKpC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,CAE1D;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,EAKhE;gBAEW,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD;;;;OAIG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAanC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAa1D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAK7D,cAAc,IAAI,IAAI;CAQvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,2BAA2B;;yBAEvD,mBAAmB;uBAqLrB,OAAO,GAAG,IAAI;sCApLC,MAAM;qCACP,MAAM;;EAoMtC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,mBAAmB,CAAC;IACjD,GAAG,EAAE,CACH,OAAO,EAAE,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,QAAQ,CAAC;KAC7B,CAAC,KACC,mBAAmB,CAAC;IACzB,OAAO,EAAE,MAAM,KAAK,CAAC;CACtB,CAwEA"}
|
|
@@ -96,17 +96,15 @@ export function createCreateAbortController(ctx) {
|
|
|
96
96
|
[ABORT_STREAM_NAME];
|
|
97
97
|
[ABORT_HOOK_TOKEN];
|
|
98
98
|
constructor() {
|
|
99
|
-
const id = ctx.
|
|
99
|
+
const id = ctx.generateUlid();
|
|
100
100
|
const streamName = getAbortStreamId(id);
|
|
101
101
|
const hookToken = `abrt_${id}`;
|
|
102
102
|
this[ABORT_STREAM_NAME] = streamName;
|
|
103
103
|
this[ABORT_HOOK_TOKEN] = hookToken;
|
|
104
104
|
this.signal = new WorkflowAbortSignal(streamName, hookToken);
|
|
105
105
|
// Register an internal system hook in the invocations queue.
|
|
106
|
-
// isSystem prevents token namespace conflicts with user hooks.
|
|
107
|
-
|
|
108
|
-
// controller does not renumber hooks the workflow creates later.
|
|
109
|
-
const correlationId = `hook_${ctx.generateCorrelationId('abortHook')}`;
|
|
106
|
+
// isSystem prevents token namespace conflicts with user hooks.
|
|
107
|
+
const correlationId = `hook_${ctx.generateUlid()}`;
|
|
110
108
|
ctx.invocationsQueue.set(correlationId, {
|
|
111
109
|
type: 'hook',
|
|
112
110
|
correlationId,
|
|
@@ -311,4 +309,4 @@ export function createAbortSignalStatics() {
|
|
|
311
309
|
},
|
|
312
310
|
};
|
|
313
311
|
}
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvcnQtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZmxvdy9hYm9ydC1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEdBRXhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixNQUFNLEdBQVksU0FBUyxDQUFDO0lBRW5CLENBQUMsaUJBQWlCLENBQUMsQ0FBUztJQUM1QixDQUFDLGdCQUFnQixDQUFDLENBQVM7SUFFcEMsVUFBVSxHQUFzQixFQUFFLENBQUM7SUFDbkMsUUFBUSxHQUFpRCxJQUFJLENBQUM7SUFFOUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFxRDtRQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksVUFBa0IsRUFBRSxTQUFpQjtRQUMvQyxJQUFJLENBQUMsaUJB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QVEsRUFBRSxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUM3QyxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO3dCQUMvQixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNoRCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDO1lBRUYsS0FBSyxNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0I7b0JBQUUsU0FBUztnQkFDdkMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO29CQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUN2QixTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDckMsT0FBTyxFQUFFLENBQUM7b0JBQ1osQ0FBQztnQkFDSCxDQUFDLENBQUM7Z0JBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFFRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTztZQUNMLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0VBQWdFO2dCQUM5RCwrQ0FBK0M7Z0JBQy9DLG9EQUFvRCxDQUN2RCxDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwbGF5RGl2ZXJnZW5jZUVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgeyBFdmVudENvbnN1bWVyUmVzdWx0IH0gZnJvbSAnLi4vZXZlbnRzLWNvbnN1bWVyLmpzJztcbmltcG9ydCB7XG4gIGF3YWl0RWFybGllckRlbGl2ZXJpZXMsXG4gIHJlZ2lzdGVyRGVsaXZlcnlCYXJyaWVyLFxuICB0eXBlIFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCxcbn0gZnJvbSAnLi4vcHJpdmF0ZS5qcyc7XG5pbXBvcnQgeyBoeWRyYXRlU3RlcFJldHVyblZhbHVlIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi5qcyc7XG5pbXBvcnQgeyBBQk9SVF9IT09LX1RPS0VOLCBBQk9SVF9TVFJFQU1fTkFNRSB9IGZyb20gJy4uL3N5bWJvbHMuanMnO1xuaW1wb3J0IHsgZ2V0QWJvcnRTdHJlYW1JZCB9IGZyb20gJy4uL3V0aWwuanMnO1xuXG4vKipcbiAqIEEgbGlnaHR3ZWlnaHQgQWJvcnRTaWduYWwgaW1wbGVtZW50YXRpb24gZm9yIHRoZSB3b3JrZmxvdyBWTSBjb250ZXh0LlxuICpcbiAqIGBzaWduYWwuYWJvcnRlZGAgYW5kIGxpc3RlbmVycyBhcmUgdXBkYXRlZCBpbiB0d28gc2NlbmFyaW9zOlxuICogMS4gT24gZmlyc3QtcnVuOiB3aGVuIGBhYm9ydCgpYCBpcyBjYWxsZWQgaW4gdGhlIHdvcmtmbG93IGNvZGVcbiAqIDIuIE9uIHJlcGxheTogd2hlbiB0aGUgZXZlbnRzIGNvbnN1bWVyIHByb2Nlc3NlcyB0aGUgYGhvb2tfcmVjZWl2ZWRgXG4gKiAgICBldmVudCAoY2hhaW5lZCB0aHJvdWdoIHByb21pc2VRdWV1ZSBmb3IgZGV0ZXJtaW5pc3RpYyBvcmRlcmluZylcbiAqXG4gKiBPbiByZXBsYXksIGBhYm9ydCgpYCBpbiB0aGUgd29ya2Zsb3cgY29kZSBiZWNvbWVzIGEgbm8tb3Agc2luY2VcbiAqIGBfc2V0QWJvcnRlZGAgd2FzIGFscmVhZHkgY2FsbGVkIGJ5IHRoZSBldmVudHMgY29uc3VtZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0Fib3J0U2lnbmFsIHtcbiAgYWJvcnRlZCA9IGZhbHNlO1xuICByZWFzb246IHVua25vd24gPSB1bmRlZmluZWQ7XG5cbiAgcmVhZG9ubHkgW0FCT1JUX1NUUkVBTV9OQU1FXTogc3RyaW5nO1xuICByZWFkb25seSBbQUJPUlRfSE9PS19UT0tFTl06IHN0cmluZztcblxuICAjbGlzdGVuZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuICAjb25hYm9ydDogKCh0aGlzOiBXb3JrZmxvd0Fib3J0U2lnbmFsKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gIGdldCBvbmFib3J0KCk6ICgodGhpczogV29ya2Zsb3dBYm9ydFNpZ25hbCkgPT4gdm9pZCkgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy4jb25hYm9ydDtcbiAgfVxuXG4gIHNldCBvbmFib3J0KGhhbmRsZXI6ICgodGhpczogV29ya2Zsb3dBYm9ydFNpZ25hbCkgPT4gdm9pZCkgfCBudWxsKSB7XG4gICAgdGhpcy4jb25hYm9ydCA9IGhhbmRsZXI7XG4gICAgaWYgKGhhbmRsZXIgJiYgdGhpcy5hYm9ydGVkKSB7XG4gICAgICBoYW5kbGVyLmNhbGwodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3Ioc3RyZWFtTmFtZTogc3RyaW5nLCBob29rVG9rZW46IHN0cmluZykge1xuICAgIHRoaXNbQUJPUlRfU1RSRUFNX05BTUVdID0gc3RyZWFtTmFtZTtcbiAgICB0aGlzW0FCT1JUX0hPT0tfVE9LRU5dID0gaG9va1Rva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBTZXRzIGFib3J0ZWQgc3RhdGUgYW5kIGZpcmVzIGxpc3RlbmVycy5cbiAgICogQ2FsbGVkIGJ5IGFib3J0KCkgb24gZmlyc3QtcnVuLCBvciBieSB0aGUgZXZlbnRzIGNvbnN1bWVyIG9uIHJlcGxheS5cbiAgICogSWRlbXBvdGVudCDigJQgc2Vjb25kIGNhbGwgaXMgYSBuby1vcC5cbiAgICovXG4gIF9zZXRBYm9ydGVkKHJlYXNvbj86IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hYm9ydGVkKSByZXR1cm47XG4gICAgdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLnJlYXNvbiA9IHJlYXNvbjtcbiAgICBpZiAodGhpcy4jb25hYm9ydCkge1xuICAgICAgdGhpcy4jb25hYm9ydC5jYWxsKHRoaXMpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIHRoaXMuI2xpc3RlbmVycykge1xuICAgICAgbGlzdGVuZXIoKTtcbiAgICB9XG4gICAgdGhpcy4jbGlzdGVuZXJzID0gW107XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAodHlwZSAhPT0gJ2Fib3J0JykgcmV0dXJuO1xuICAgIGlmICh0aGlzLmFib3J0ZWQpIHtcbiAgICAgIC8vIEZpcmUgc3luY2hyb25vdXNseSwgbm90IG9uIGEgbWljcm90YXNrLiBOYXRpdmUgQWJvcnRTaWduYWwgZmlyZXMgb24gYVxuICAgICAgLy8gbWljcm90YXNrIHBlciBzcGVjLCBidXQgaW5zaWRlIHRoZSB3b3JrZmxvdyBWTSB3ZSBkZWxpYmVyYXRlbHkgZGl2ZXJnZVxuICAgICAgLy8gZm9yIGRldGVybWluaXN0aWMgcmVwbGF5OiBsaXN0ZW5lciBvcmRlcmluZyBtdXN0IGJlIHRpZWQgdG8gdGhlXG4gICAgICAvLyBvcmNoZXN0cmF0b3IncyBzeW5jIGV4ZWN1dGlvbiBwYXRoLCBub3QgdG8gbWljcm90YXNrIHNjaGVkdWxpbmcuXG4gICAgICBsaXN0ZW5lcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLiNsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAodHlwZSAhPT0gJ2Fib3J0JykgcmV0dXJuO1xuICAgIHRoaXMuI2xpc3RlbmVycyA9IHRoaXMuI2xpc3RlbmVycy5maWx0ZXIoKGwpID0+IGwgIT09IGxpc3RlbmVyKTtcbiAgfVxuXG4gIHRocm93SWZBYm9ydGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFib3J0ZWQpIHtcbiAgICAgIHRocm93IChcbiAgICAgICAgdGhpcy5yZWFzb24gPz9cbiAgICAgICAgbmV3IERPTUV4Y2VwdGlvbignVGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZC4nLCAnQWJvcnRFcnJvcicpXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB3b3JrZmxvdy1jb250ZXh0IGBBYm9ydENvbnRyb2xsZXJgIGNsYXNzIHRoYXQgdXNlcyBob29rcyBmb3JcbiAqIGR1cmFibGUgc3RhdGUgYW5kIHN0cmVhbXMgZm9yIHJlYWwtdGltZSBzdGVwIHByb3BhZ2F0aW9uLlxuICpcbiAqIEZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyBgY3JlYXRlQ3JlYXRlSG9vaygpYCBpbiBgd29ya2Zsb3cvaG9vay50c2A6XG4gKiAtIFJlZ2lzdGVycyBhIGhvb2sgaW4gdGhlIGludm9jYXRpb25zIHF1ZXVlIG9uIGNvbnN0cnVjdGlvblxuICogLSBTdWJzY3JpYmVzIHRvIHRoZSBldmVudHMgY29uc3VtZXIgZm9yIGhvb2tfY3JlYXRlZC9ob29rX3JlY2VpdmVkIGV2ZW50c1xuICogLSBgYWJvcnQoKWAgY2FsbHMgYF9zZXRBYm9ydGVkYCArIG1hcmtzIHRoZSBob29rIGZvciByZXN1bXB0aW9uXG4gKiAtIFRoZSBzdXNwZW5zaW9uIGhhbmRsZXIgcHJvY2Vzc2VzIHRoZSBhYm9ydCAoY3JlYXRlcyBldmVudCArIHdyaXRlcyBzdHJlYW0pXG4gKiAtIE9uIHJlcGxheSwgdGhlIGV2ZW50cyBjb25zdW1lciBjYWxscyBgX3NldEFib3J0ZWRgIHdoZW4gaG9va19yZWNlaXZlZFxuICogICBpcyBwcm9jZXNzZWQsIGFuZCBgYWJvcnQoKWAgaW4gdGhlIHdvcmtmbG93IGNvZGUgYmVjb21lcyBhIG5vLW9wXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcmVhdGVBYm9ydENvbnRyb2xsZXIoY3R4OiBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQpIHtcbiAgcmV0dXJuIGNsYXNzIFdvcmtmbG93QWJvcnRDb250cm9sbGVyIHtcbiAgICByZWFkb25seSBzaWduYWw6IFdvcmtmbG93QWJvcnRTaWduYWw7XG4gICAgcmVhZG9ubHkgW0FCT1JUX1NUUkVBTV9OQU1FXTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IFtBQk9SVF9IT09LX1RPS0VOXTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICBjb25zdCBpZCA9IGN0eC5nZW5lcmF0ZUNvcnJlbGF0aW9uSWQoJ2Fib3J0Jyk7XG4gICAgICBjb25zdCBzdHJlYW1OYW1lID0gZ2V0QWJvcnRTdHJlYW1JZChpZCk7XG4gICAgICBjb25zdCBob29rVG9rZW4gPSBgYWJydF8ke2lkfWA7XG5cbiAgICAgIHRoaXNbQUJPUlRfU1RSRUFNX05BTUVdID0gc3RyZWFtTmFtZTtcbiAgICAgIHRoaXNbQUJPUlRfSE9PS19UT0tFTl0gPSBob29rVG9rZW47XG4gICAgICB0aGlzLnNpZ25hbCA9IG5ldyBXb3JrZmxvd0Fib3J0U2lnbmFsKHN0cmVhbU5hbWUsIGhvb2tUb2tlbik7XG5cbiAgICAgIC8vIFJlZ2lzdGVyIGFuIGludGVybmFsIHN5c3RlbSBob29rIGluIHRoZSBpbnZvY2F0aW9ucyBxdWV1ZS5cbiAgICAgIC8vIGlzU3lzdGVtIHByZXZlbnRzIHRva2VuIG5hbWVzcGFjZSBjb25mbGljdHMgd2l0aCB1c2VyIGhvb2tzLiBUaGUgaWRcbiAgICAgIC8vIGRyYXdzIGZyb20gaXRzIG93biBmYW1pbHksIG5vdCBgaG9va2AsIHNvIGNvbnN0cnVjdGluZyBhbiBhYm9ydFxuICAgICAgLy8gY29udHJvbGxlciBkb2VzIG5vdCByZW51bWJlciBob29rcyB0aGUgd29ya2Zsb3cgY3JlYXRlcyBsYXRlci5cbiAgICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSBgaG9va18ke2N0eC5nZW5lcmF0ZUNvcnJlbGF0aW9uSWQoJ2Fib3J0SG9vaycpfWA7XG4gICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5zZXQoY29ycmVsYXRpb25JZCwge1xuICAgICAgICB0eXBlOiAnaG9vaycsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICAgIHRva2VuOiBob29rVG9rZW4sXG4gICAgICAgIGlzV2ViaG9vazogZmFsc2UsXG4gICAgICAgIGlzU3lzdGVtOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN1YnNjcmliZSB0byBldmVudHMgZm9yIHRoaXMgaG9vaydzIGxpZmVjeWNsZVxuICAgICAgY3R4LmV2ZW50c0NvbnN1bWVyLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmNvcnJlbGF0aW9uSWQgIT09IGNvcnJlbGF0aW9uSWQpIHtcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50VG9rZW4gPVxuICAgICAgICAgICdldmVudERhdGEnIGluIGV2ZW50ICYmIGV2ZW50LmV2ZW50RGF0YSAmJiAndG9rZW4nIGluIGV2ZW50LmV2ZW50RGF0YVxuICAgICAgICAgICAgPyBldmVudC5ldmVudERhdGEudG9rZW5cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlb2YgZXZlbnRUb2tlbiA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICBldmVudFRva2VuICE9PSB0aGlzW0FCT1JUX0hPT0tfVE9LRU5dXG4gICAgICAgICkge1xuICAgICAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgICAgbmV3IFJlcGxheURpdmVyZ2VuY2VFcnJvcihcbiAgICAgICAgICAgICAgICBgUmVwbGF5IGRpdmVyZ2VuY2U6IGFib3J0IGhvb2sgZXZlbnQgJHtldmVudC5ldmVudFR5cGV9IGZvciAke2NvcnJlbGF0aW9uSWR9IGJlbG9uZ3MgdG8gdG9rZW4gXCIke2V2ZW50VG9rZW59XCIsIGJ1dCB0aGUgY3VycmVudCBhYm9ydCBob29rIGV4cGVjdHMgXCIke3RoaXNbQUJPUlRfSE9PS19UT0tFTl19XCJgLFxuICAgICAgICAgICAgICAgIHsgZXZlbnRJZDogZXZlbnQuZXZlbnRJZCB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnaG9va19jcmVhdGVkJykge1xuICAgICAgICAgIGNvbnN0IHF1ZXVlSXRlbSA9IGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmdldChjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgICBpZiAocXVldWVJdGVtICYmIHF1ZXVlSXRlbS50eXBlID09PSAnaG9vaycpIHtcbiAgICAgICAgICAgIHF1ZXVlSXRlbS5oYXNDcmVhdGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX3JlY2VpdmVkJykge1xuICAgICAgICAgIC8vIFRoZSBhYm9ydCB3YXMgcmVjb3JkZWQgaW4gdGhlIGV2ZW50IGxvZyAoZnJvbSBhIHByZXZpb3VzIHJ1bidzXG4gICAgICAgICAgLy8gYWJvcnQoKSBjYWxsLCBvciBmcm9tIGEgc3RlcC9leHRlcm5hbCBhYm9ydCkuIFVwZGF0ZSBzaWduYWxcbiAgICAgICAgICAvLyBzdGF0ZSBhbmQgZmlyZSBsaXN0ZW5lcnMgYXQgdGhpcyBkZXRlcm1pbmlzdGljIHBvaW50IGluIHRoZVxuICAgICAgICAgIC8vIHByb21pc2VRdWV1ZSDigJQgc2FtZSBvcmRlcmluZyBhcyBob29rIHBheWxvYWQgZGVsaXZlcnkuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBUaGUgcGF5bG9hZCBpcyB0aGUgZGVoeWRyYXRlZCBmb3JtIHdyaXR0ZW4gYnkgdGhlIHN1c3BlbnNpb25cbiAgICAgICAgICAvLyBoYW5kbGVyIChhIFVpbnQ4QXJyYXksIHBvc3NpYmx5IGVuY3J5cHRlZCkuIEh5ZHJhdGUgaXQgdmlhIHRoZVxuICAgICAgICAgIC8vIHNhbWUgbWFjaGluZXJ5IGFzIHJlZ3VsYXIgaG9vayBwYXlsb2FkcyAod29ya2Zsb3cvaG9vay50czoxMTcpXG4gICAgICAgICAgLy8gc28gdGhlIHJlYXNvbiByb3VuZC10cmlwcyB3aXRoIGZ1bGwgdHlwZSBmaWRlbGl0eS4gUmVhZGluZyB0aGVcbiAgICAgICAgICAvLyByYXcgcGF5bG9hZCBoZXJlIGlzIGEgYnVnIOKAlCBpdCdzIG5vdCBhIHBsYWluIG9iamVjdCBhZnRlclxuICAgICAgICAgIC8vIGRlaHlkcmF0aW9uLCBzbyBgJ3JlYXNvbicgaW4gcGF5bG9hZGAgaXMgZmFsc2UgYW5kIHJlYXNvblxuICAgICAgICAgIC8vIGVuZHMgdXAgdW5kZWZpbmVkIG9uIHJlcGxheS5cbiAgICAgICAgICBjb25zdCByYXdQYXlsb2FkID0gZXZlbnQuZXZlbnREYXRhPy5wYXlsb2FkO1xuICAgICAgICAgIC8vIEFuIGFib3J0IGlzIGEgYnJhbmNoLWRlY2lkaW5nIGRlbGl2ZXJ5OiBgX3NldEFib3J0ZWRgIGZpcmVzIHRoZVxuICAgICAgICAgIC8vIHNpZ25hbCdzIGxpc3RlbmVycywgYW5kIGEgbGlzdGVuZXIgaXMgZnJlZSB0byBpbnZva2UgYSBzdGVwIGFuZFxuICAgICAgICAgIC8vIGRyYXcgYSBVTElELiBTbyBpdCByZWdpc3RlcnMgaW4gdGhlIGRlbGl2ZXJ5LWJhcnJpZXIgcmVnaXN0cnkgYXMgYVxuICAgICAgICAgIC8vICdob29rJyDigJQgd2hpY2ggaXMgZXhhY3RseSB3aGF0IHRoZSBldmVudCBpcyDigJQgc28gdGhhdCB3YWl0LCBob29rXG4gICAgICAgICAgLy8gYW5kIHN0ZXAgZGVsaXZlcmllcyBvcmRlciBhZ2FpbnN0IGl0IGJ5IGV2ZW50LWxvZyBwb3NpdGlvbiByYXRoZXJcbiAgICAgICAgICAvLyB0aGFuIGJ5IHdob3NlIGh5ZHJhdGlvbiBmaW5pc2hlZCBmaXJzdC4gSXQgaXMgYWx3YXlzIEFSTUVEOiB1bmxpa2VcbiAgICAgICAgICAvLyBhIGJ1ZmZlcmVkIHVzZXIgaG9vayBwYXlsb2FkLCBub3RoaW5nIGFib3V0IGl0cyBkZWxpdmVyeSB3YWl0cyBvblxuICAgICAgICAgIC8vIHdvcmtmbG93IGNvZGUgYXNraW5nIGZvciBpdC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFJlc29sdmluZyBzdHJhaWdodCBvZmYgdGhlIHF1ZXVlIHNsb3Qgd2FzIHN1ZmZpY2llbnQgb25seSB3aGlsZVxuICAgICAgICAgIC8vIGV2ZXJ5IG90aGVyIGRlbGl2ZXJ5IGFsc28gcmVzb2x2ZWQgZnJvbSBpdHMgc2xvdC4gU3RlcCByZXN1bHRzIG5vXG4gICAgICAgICAgLy8gbG9uZ2VyIGRvIChzZWUgc3RlcC50cyksIHNvIGFuIGFib3J0IHdob3NlIHNsb3QgcmFuIHdoaWxlIGFcbiAgICAgICAgICAvLyBsb2ctZWFybGllciBzdGVwIHNhdCBiZWhpbmQgYSBiYXJyaWVyIHdvdWxkIG92ZXJ0YWtlIGl0IOKAlCBzZWVcbiAgICAgICAgICAvLyBgZGVsaXZlcnktYmFycmllci1jb3ZlcmFnZS50ZXN0LnRzYC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFRoZSBkZWZlcnJhbCBpcyBjYXB0dXJlZCBIRVJFLCBhdCBldmVudC1jb25zdW1wdGlvbiB0aW1lLCBmb3IgdGhlXG4gICAgICAgICAgLy8gc2FtZSB0d28gcmVhc29ucyBzcGVsbGVkIG91dCBpbiBzdGVwLnRzOiB0aGUgc2V0IG9mIGVhcmxpZXJcbiAgICAgICAgICAvLyBkZWxpdmVyaWVzIHN0YXlzIGEgZnVuY3Rpb24gb2YgbG9nIHBvc2l0aW9uIGFsb25lLCBhbmQgYmFycmllcnNcbiAgICAgICAgICAvLyB0aGF0IHJldGlyZSBiZWZvcmUgdGhpcyBzbG90IHJ1bnMgYXJlIHN0aWxsIHNlZW4uXG4gICAgICAgICAgY29uc3QgZXZlbnRJbmRleCA9IGN0eC5ldmVudHNDb25zdW1lci5ldmVudEluZGV4O1xuICAgICAgICAgIGNvbnN0IGJhcnJpZXIgPSByZWdpc3RlckRlbGl2ZXJ5QmFycmllcihjdHgsIGV2ZW50SW5kZXgsICdob29rJyk7XG4gICAgICAgICAgY29uc3QgZWFybGllckRlbGl2ZXJlZCA9IGF3YWl0RWFybGllckRlbGl2ZXJpZXMoXG4gICAgICAgICAgICBjdHgsXG4gICAgICAgICAgICBldmVudEluZGV4LFxuICAgICAgICAgICAgJ2hvb2snXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBBY2NvdW50IHRoaXMgYWJvcnQgYXMgYSBwZW5kaW5nIGRlbGl2ZXJ5LCBleGFjdGx5IGxpa2Ugc3RlcFxuICAgICAgICAgIC8vIHJlc3VsdHMgKHN0ZXAudHMpIGFuZCBob29rIHBheWxvYWRzICh3b3JrZmxvdy9ob29rLnRzKSBkby4gVGhlXG4gICAgICAgICAgLy8gc3VzcGVuc2lvbiBoYW5kbGVyIGRlaHlkcmF0ZXMgcXVldWVkIHN0ZXAgYXJndW1lbnRzIG9ubHkgb25jZVxuICAgICAgICAgIC8vIGBzY2hlZHVsZVdoZW5JZGxlYCBvYnNlcnZlcyBgcGVuZGluZ0RlbGl2ZXJpZXMgPT09IDBgLiBXaXRob3V0XG4gICAgICAgICAgLy8gdGhpcyBjb3VudGVyLCBhIHN0ZXAgZGlzcGF0Y2hlZCByaWdodCBhZnRlciB0aGUgYWJvcnQg4oCUIGUuZy4gb25lXG4gICAgICAgICAgLy8gdGhhdCByZWNlaXZlcyBgY29udHJvbGxlci5zaWduYWxgIOKAlCBjYW4gaGF2ZSBpdHMgYXJndW1lbnRzXG4gICAgICAgICAgLy8gc2VyaWFsaXplZCB3aGlsZSB0aGUgYWJvcnQgaXMgc3RpbGwgaW4gZmxpZ2h0IGJlaGluZFxuICAgICAgICAgIC8vIGBhd2FpdCBoeWRyYXRlU3RlcFJldHVyblZhbHVlYCwgY2FwdHVyaW5nIGBzaWduYWwuYWJvcnRlZCA9PT0gZmFsc2VgXG4gICAgICAgICAgLy8gKGFuZCBhIG1pc3NpbmcgcmVhc29uKS4gQnVtcGluZyB0aGUgY291bnRlciBob2xkcyB0aGUgc3VzcGVuc2lvblxuICAgICAgICAgIC8vIHVudGlsIGBfc2V0QWJvcnRlZGAgaGFzIGxhbmRlZCwgc28gZG93bnN0cmVhbSBzZXJpYWxpemF0aW9uIGlzXG4gICAgICAgICAgLy8gZGV0ZXJtaW5pc3RpYyByZWdhcmRsZXNzIG9mIHJlYXNvbi1oeWRyYXRpb24gKGRlY3J5cHRpb24pIGxhdGVuY3kuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJdCBpcyByZWxlYXNlZCBpbnNpZGUgdGhlIHNsb3QsIGJlZm9yZSB0aGUgZGV0YWNoZWQgZGVmZXJyYWwsIHNvXG4gICAgICAgICAgLy8gYHNjaGVkdWxlV2hlbklkbGVgIGNhbiBzdGlsbCByZWFjaCBpZGxlIGFuZCByZXRpcmUgdGhlIGJhcnJpZXJzXG4gICAgICAgICAgLy8gdGhhdCBkZWZlcnJhbCBtYXkgYmUgd2FpdGluZyBvbiDigJQgdGhlIHNhbWUgc2hhcGUgYXMgdGhlIGhvb2sgYW5kXG4gICAgICAgICAgLy8gc3RlcCBwYXRocy5cbiAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMrKztcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCByZWFzb246IHVua25vd247XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAocmF3UGF5bG9hZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXBhcmVkID1cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY3R4LnJlcGxheVBheWxvYWRDYWNoZS5wcmVwYXJlRXZlbnRQYXlsb2FkKFxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgJ3BheWxvYWQnLFxuICAgICAgICAgICAgICAgICAgICAgIHJhd1BheWxvYWRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVkID0gKGF3YWl0IGh5ZHJhdGVTdGVwUmV0dXJuVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIHJhd1BheWxvYWQsXG4gICAgICAgICAgICAgICAgICAgIGN0eC5ydW5JZCxcbiAgICAgICAgICAgICAgICAgICAgY3R4LmVuY3J5cHRpb25LZXksXG4gICAgICAgICAgICAgICAgICAgIGN0eC5nbG9iYWxUaGlzLFxuICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgcHJlcGFyZWRcbiAgICAgICAgICAgICAgICAgICkpIGFzIHsgcmVhc29uPzogdW5rbm93biB9IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBoeWRyYXRlZCAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaHlkcmF0ZWQgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICdyZWFzb24nIGluIGh5ZHJhdGVkXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uID0gaHlkcmF0ZWQucmVhc29uO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgLy8gQmVzdC1lZmZvcnQ6IGlmIGh5ZHJhdGlvbiBmYWlscywgZmFsbCBiYWNrIHRvIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgLy8gcmVhc29uLiBUaGUgc2lnbmFsIHN0aWxsIGFib3J0czsgdGhlIHVzZXIganVzdCB3b24ndCBzZWVcbiAgICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCByZWFzb24uIE1hdGNoZXMgV29ya2Zsb3dBYm9ydFNpZ25hbCdzIHNwZWNcbiAgICAgICAgICAgICAgICAgIC8vIGZhbGxiYWNrIChET01FeGNlcHRpb24gQWJvcnRFcnJvcikuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIERldGFjaGVkLCBsaWtlIHRoZSBvdGhlciBkZWxpdmVyaWVzOiBgYXdhaXRFYXJsaWVyRGVsaXZlcmllc2BcbiAgICAgICAgICAgIC8vIG1heSBiZSB3YWl0aW5nIG9uIGEgZGVsaXZlcnkgdGhpcyB2ZXJ5IHF1ZXVlIGRyaXZlcywgYW5kXG4gICAgICAgICAgICAvLyBibG9ja2luZyBhIHNsb3Qgb24gdGhhdCB3b3VsZCBkZWFkbG9jayB0aGUgcXVldWUuXG4gICAgICAgICAgICB2b2lkIGVhcmxpZXJEZWxpdmVyZWQudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGJhcnJpZXIubWFya0RlbGl2ZXJlZCgpO1xuICAgICAgICAgICAgICB0aGlzLnNpZ25hbC5fc2V0QWJvcnRlZChyZWFzb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5kZWxldGUoY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgLy8gTXVsdGlwbGUgaGFuZGxlcnMgY2FuIG9ic2VydmUgdGhlIHNhbWUgcGVuZGluZyBhYm9ydCByZXF1ZXN0IGFuZFxuICAgICAgICAgIC8vIGR1cmFibHkgcmVjb3JkIGl0IGJlZm9yZSByZXBsYXkgcmVtb3ZlcyB0aGUgcXVldWUgaXRlbS4gQWJvcnQgaXNcbiAgICAgICAgICAvLyBpZGVtcG90ZW50LCBzbyBjb25zdW1lIGxhdGVyIG1hdGNoaW5nIHJlY2VpcHRzIGFzIG5vLW9wcyBpbnN0ZWFkXG4gICAgICAgICAgLy8gb2Ygc3VyZmFjaW5nIGEgY29ycnVwdGVkIGV2ZW50IGxvZyBhZnRlciB0aGUgZmlyc3QgcmVjZWlwdC5cbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX2Rpc3Bvc2VkJykge1xuICAgICAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmRlbGV0ZShjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWJvcnQocmVhc29uPzogdW5rbm93bik6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuc2lnbmFsLmFib3J0ZWQpIHJldHVybjsgLy8gbm8tb3AgKGFscmVhZHkgYWJvcnRlZCwgZS5nLiBmcm9tIHJlcGxheSlcblxuICAgICAgLy8gVXBkYXRlIHNpZ25hbCBzdGF0ZSBhbmQgZmlyZSBsaXN0ZW5lcnMgc3luY2hyb25vdXNseVxuICAgICAgdGhpcy5zaWduYWwuX3NldEFib3J0ZWQocmVhc29uKTtcblxuICAgICAgLy8gTWFyayB0aGUgaG9vayBmb3IgcmVzdW1wdGlvbiBzbyB0aGUgc3VzcGVuc2lvbiBoYW5kbGVyIHJlY29yZHNcbiAgICAgIC8vIHRoZSBhYm9ydCBpbiB0aGUgZXZlbnQgbG9nIGFuZCB3cml0ZXMgdGhlIHN0cmVhbSBwYWNrZXQuXG4gICAgICBmb3IgKGNvbnN0IFssIGl0ZW1dIG9mIGN0eC5pbnZvY2F0aW9uc1F1ZXVlKSB7XG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdob29rJyAmJiBpdGVtLnRva2VuID09PSB0aGlzW0FCT1JUX0hPT0tfVE9LRU5dKSB7XG4gICAgICAgICAgaXRlbS5hYm9ydFJlcXVlc3RlZCA9IHRydWU7XG4gICAgICAgICAgaXRlbS5hYm9ydFJlYXNvbiA9IHJlYXNvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgd29ya2Zsb3ctY29udGV4dCBgQWJvcnRTaWduYWxgIG9iamVjdCB3aXRoIHN0YXRpYyBtZXRob2RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWJvcnRTaWduYWxTdGF0aWNzKCk6IHtcbiAgYWJvcnQ6IChyZWFzb24/OiB1bmtub3duKSA9PiBXb3JrZmxvd0Fib3J0U2lnbmFsO1xuICBhbnk6IChcbiAgICBzaWduYWxzOiBJdGVyYWJsZTx7XG4gICAgICBhYm9ydGVkOiBib29sZWFuO1xuICAgICAgcmVhc29uPzogdW5rbm93bjtcbiAgICAgIGFkZEV2ZW50TGlzdGVuZXI/OiBGdW5jdGlvbjtcbiAgICB9PlxuICApID0+IFdvcmtmbG93QWJvcnRTaWduYWw7XG4gIHRpbWVvdXQ6ICgpID0+IG5ldmVyO1xufSB7XG4gIHJldHVybiB7XG4gICAgYWJvcnQocmVhc29uPzogdW5rbm93bik6IFdvcmtmbG93QWJvcnRTaWduYWwge1xuICAgICAgY29uc3Qgc2lnbmFsID0gbmV3IFdvcmtmbG93QWJvcnRTaWduYWwoJycsICcnKTtcbiAgICAgIHNpZ25hbC5fc2V0QWJvcnRlZChcbiAgICAgICAgcmVhc29uID8/IG5ldyBET01FeGNlcHRpb24oJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQuJywgJ0Fib3J0RXJyb3InKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBzaWduYWw7XG4gICAgfSxcblxuICAgIGFueShcbiAgICAgIHNpZ25hbHM6IEl0ZXJhYmxlPHtcbiAgICAgICAgYWJvcnRlZDogYm9vbGVhbjtcbiAgICAgICAgcmVhc29uPzogdW5rbm93bjtcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcj86IEZ1bmN0aW9uO1xuICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyPzogRnVuY3Rpb247XG4gICAgICB9PlxuICAgICk6IFdvcmtmbG93QWJvcnRTaWduYWwge1xuICAgICAgY29uc3QgY29tcG9zaXRlID0gbmV3IFdvcmtmbG93QWJvcnRTaWduYWwoJycsICcnKTtcblxuICAgICAgLy8gTWF0ZXJpYWxpemUgdGhlIGl0ZXJhYmxlIG9uY2UuIE5hdGl2ZSBBYm9ydFNpZ25hbC5hbnkgZG9lcyB0aGUgc2FtZTpcbiAgICAgIC8vIHNpbmdsZS1zaG90IGl0ZXJhYmxlcyAoZS5nLiBnZW5lcmF0b3JzKSB3b3VsZCBvdGhlcndpc2UgcHJvZHVjZSB6ZXJvXG4gICAgICAvLyBlbnRyaWVzIG9uIHRoZSBzZWNvbmQgcGFzcyBiZWxvdy5cbiAgICAgIGNvbnN0IGFyciA9IEFycmF5LmZyb20oc2lnbmFscyk7XG5cbiAgICAgIGZvciAoY29uc3Qgc2lnbmFsIG9mIGFycikge1xuICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICBjb21wb3NpdGUuX3NldEFib3J0ZWQoc2lnbmFsLnJlYXNvbik7XG4gICAgICAgICAgcmV0dXJuIGNvbXBvc2l0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBMaXN0ZW4gdG8gZWFjaCBzaWduYWwg4oCUIGZpcnN0IG9uZSB0byBhYm9ydCB3aW5zLiBUcmFjayBsaXN0ZW5lcnMgc29cbiAgICAgIC8vIHdlIGNhbiByZW1vdmUgdGhlbSBhZnRlciB0aGUgY29tcG9zaXRlIGFib3J0czsgb3RoZXJ3aXNlIHRoZSBjbG9zdXJlc1xuICAgICAgLy8gKGNhcHR1cmluZyBgY29tcG9zaXRlYCkgcHJldmVudCBHQyBmb3IgYW55IGlucHV0IHNpZ25hbCB0aGF0IG91dGxpdmVzXG4gICAgICAvLyB0aGUgY29tcG9zaXRlIChlLmcuIGEgbG9uZy1saXZlZCBleHRlcm5hbCBjb250cm9sbGVyKS5cbiAgICAgIGNvbnN0IGxpc3RlbmVyczogQXJyYXk8e1xuICAgICAgICBzaWduYWw6ICh0eXBlb2YgYXJyKVtudW1iZXJdO1xuICAgICAgICBsaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgICAgIH0+ID0gW107XG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHsgc2lnbmFsLCBsaXN0ZW5lciB9IG9mIGxpc3RlbmVycykge1xuICAgICAgICAgIGlmIChzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgbGlzdGVuZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaXN0ZW5lcnMubGVuZ3RoID0gMDtcbiAgICAgIH07XG5cbiAgICAgIGZvciAoY29uc3Qgc2lnbmFsIG9mIGFycikge1xuICAgICAgICBpZiAoIXNpZ25hbC5hZGRFdmVudExpc3RlbmVyKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgbGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjb21wb3NpdGUuYWJvcnRlZCkge1xuICAgICAgICAgICAgY29tcG9zaXRlLl9zZXRBYm9ydGVkKHNpZ25hbC5yZWFzb24pO1xuICAgICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGlzdGVuZXJzLnB1c2goeyBzaWduYWwsIGxpc3RlbmVyIH0pO1xuICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBsaXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21wb3NpdGU7XG4gICAgfSxcblxuICAgIHRpbWVvdXQoKTogbmV2ZXIge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQWJvcnRTaWduYWwudGltZW91dCgpIGlzIG5vdCBzdXBwb3J0ZWQgaW4gd29ya2Zsb3cgZnVuY3Rpb25zLiAnICtcbiAgICAgICAgICAnVXNlIHNsZWVwKCkgd2l0aCBhbiBBYm9ydENvbnRyb2xsZXIgaW5zdGVhZC4gJyArXG4gICAgICAgICAgJ1NlZTogL2RvY3MvZXJyb3JzL2Fib3J0LXNpZ25hbC10aW1lb3V0LWluLXdvcmtmbG93J1xuICAgICAgKTtcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvcnQtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZmxvdy9hYm9ydC1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEdBRXhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixNQUFNLEdBQVksU0FBUyxDQUFDO0lBRW5CLENBQUMsaUJBQWlCLENBQUMsQ0FBUztJQUM1QixDQUFDLGdCQUFnQixDQUFDLENBQVM7SUFFcEMsVUFBVSxHQUFzQixFQUFFLENBQUM7SUFDbkMsUUFBUSxHQUFpRCxJQUFJLENBQUM7SUFFOUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFxRDtRQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksVUFBa0IsRUFBRSxTQUFpQjtRQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLE1BQWdCO1FBQzFCLElBQUksSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxRQUFRLEVBQUUsQ0FBQztRQUNiLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLFFBQW9CO1FBQ2pELElBQUksSUFBSSxLQUFLLE9BQU87WUFBRSxPQUFPO1FBQzdCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLHdFQUF3RTtZQUN4RSx5RUFBeUU7WUFDekUsa0VBQWtFO1lBQ2xFLG1FQUFtRTtZQUNuRSxRQUFRLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVksRUFBRSxRQUFvQjtRQUNwRCxJQUFJLElBQUksS0FBSyxPQUFPO1lBQUUsT0FBTztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixNQUFNLENBQ0osSUFBSSxDQUFDLE1BQU07Z0JBQ1gsSUFBSSxZQUFZLENBQUMsNEJBQTRCLEVBQUUsWUFBWSxDQUFDLENBQzdELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsR0FBZ0M7SUFDMUUsT0FBTyxNQUFNLHVCQUF1QjtRQUN6QixNQUFNLENBQXNCO1FBQzVCLENBQUMsaUJBQWlCLENBQUMsQ0FBUztRQUM1QixDQUFDLGdCQUFnQixDQUFDLENBQVM7UUFFcEM7WUFDRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEMsTUFBTSxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUUvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxVQUFVLENBQUM7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsU0FBUyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFN0QsNkRBQTZEO1lBQzdELCtEQUErRDtZQUMvRCxNQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ25ELEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFO2dCQUN0QyxJQUFJLEVBQUUsTUFBTTtnQkFDWixhQUFhO2dCQUNiLEtBQUssRUFBRSxTQUFTO2dCQUNoQixTQUFTLEVBQUUsS0FBSztnQkFDaEIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7WUFFSCxnREFBZ0Q7WUFDaEQsR0FBRyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLE9BQU8sbUJBQW1CLENBQUMsV0FBVyxDQUFDO2dCQUN6QyxDQUFDO2dCQUVELElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSyxhQUFhLEVBQUUsQ0FBQztvQkFDMUMsT0FBTyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7Z0JBQ3pDLENBQUM7Z0JBRUQsTUFBTSxVQUFVLEdBQ2QsV0FBVyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsU0FBUztvQkFDbkUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSztvQkFDdkIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFFaEIsSUFDRSxPQUFPLFVBQVUsS0FBSyxRQUFRO29CQUM5QixVQUFVLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQ3JDLENBQUM7b0JBQ0QsR0FBRyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7d0JBQzVDLEdBQUcsQ0FBQyxlQUFlLENBQ2pCLElBQUkscUJBQXFCLENBQ3ZCLHVDQUF1QyxLQUFLLENBQUMsU0FBUyxRQUFRLGFBQWEsc0JBQXNCLFVBQVUsMENBQTBDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQzlLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FDM0IsQ0FDRixDQUFDO29CQUNKLENBQUMsQ0FBQyxDQUFDO29CQUNILE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO2dCQUN0QyxDQUFDO2dCQUVELElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxjQUFjLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQzt3QkFDM0MsU0FBUyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBQ25DLENBQUM7b0JBQ0QsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLENBQUM7Z0JBRUQsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLGVBQWUsRUFBRSxDQUFDO29CQUN4QyxpRUFBaUU7b0JBQ2pFLDhEQUE4RDtvQkFDOUQsOERBQThEO29CQUM5RCx5REFBeUQ7b0JBQ3pELEVBQUU7b0JBQ0YsK0RBQStEO29CQUMvRCxpRUFBaUU7b0JBQ2pFLGlFQUFpRTtvQkFDakUsaUVBQWlFO29CQUNqRSw0REFBNEQ7b0JBQzVELDREQUE0RDtvQkFDNUQsK0JBQStCO29CQUMvQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztvQkFDNUMsa0VBQWtFO29CQUNsRSxrRUFBa0U7b0JBQ2xFLHFFQUFxRTtvQkFDckUsbUVBQW1FO29CQUNuRSxvRUFBb0U7b0JBQ3BFLHFFQUFxRTtvQkFDckUsb0VBQW9FO29CQUNwRSwrQkFBK0I7b0JBQy9CLEVBQUU7b0JBQ0Ysa0VBQWtFO29CQUNsRSxvRUFBb0U7b0JBQ3BFLDhEQUE4RDtvQkFDOUQsZ0VBQWdFO29CQUNoRSx1Q0FBdUM7b0JBQ3ZDLEVBQUU7b0JBQ0Ysb0VBQW9FO29CQUNwRSw4REFBOEQ7b0JBQzlELGtFQUFrRTtvQkFDbEUsb0RBQW9EO29CQUNwRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDakQsTUFBTSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDakUsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FDN0MsR0FBRyxFQUNILFVBQVUsRUFDVixNQUFNLENBQ1AsQ0FBQztvQkFDRiw4REFBOEQ7b0JBQzlELGlFQUFpRTtvQkFDakUsZ0VBQWdFO29CQUNoRSxpRUFBaUU7b0JBQ2pFLG1FQUFtRTtvQkFDbkUsNkRBQTZEO29CQUM3RCx1REFBdUQ7b0JBQ3ZELHVFQUF1RTtvQkFDdkUsbUVBQW1FO29CQUNuRSxpRUFBaUU7b0JBQ2pFLHFFQUFxRTtvQkFDckUsRUFBRTtvQkFDRixtRUFBbUU7b0JBQ25FLGtFQUFrRTtvQkFDbEUsbUVBQW1FO29CQUNuRSxjQUFjO29CQUNkLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUN4QixHQUFHLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO3dCQUNsRCxJQUFJLE1BQWUsQ0FBQzt3QkFDcEIsSUFBSSxDQUFDOzRCQUNILElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dDQUM3QixJQUFJLENBQUM7b0NBQ0gsTUFBTSxRQUFRLEdBQ1osTUFBTSxHQUFHLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQzlDLEtBQUssQ0FBQyxPQUFPLEVBQ2IsU0FBUyxFQUNULFVBQVUsQ0FDWCxDQUFDO29DQUNKLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxzQkFBc0IsQ0FDNUMsVUFBVSxFQUNWLEdBQUcsQ0FBQyxLQUFLLEVBQ1QsR0FBRyxDQUFDLGFBQWEsRUFDakIsR0FBRyxDQUFDLFVBQVUsRUFDZCxFQUFFLEVBQ0YsUUFBUSxDQUNULENBQXFDLENBQUM7b0NBQ3ZDLElBQ0UsUUFBUTt3Q0FDUixPQUFPLFFBQVEsS0FBSyxRQUFRO3dDQUM1QixRQUFRLElBQUksUUFBUSxFQUNwQixDQUFDO3dDQUNELE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO29DQUMzQixDQUFDO2dDQUNILENBQUM7Z0NBQUMsTUFBTSxDQUFDO29DQUNQLDBEQUEwRDtvQ0FDMUQsMkRBQTJEO29DQUMzRCwwREFBMEQ7b0NBQzFELHNDQUFzQztnQ0FDeEMsQ0FBQzs0QkFDSCxDQUFDO3dCQUNILENBQUM7Z0NBQVMsQ0FBQzs0QkFDVCxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzt3QkFDMUIsQ0FBQzt3QkFDRCxnRUFBZ0U7d0JBQ2hFLDJEQUEyRDt3QkFDM0Qsb0RBQW9EO3dCQUNwRCxLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7NEJBQzlCLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2xDLENBQUMsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDO29CQUVILEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzNDLG1FQUFtRTtvQkFDbkUsbUVBQW1FO29CQUNuRSxtRUFBbUU7b0JBQ25FLDhEQUE4RDtvQkFDOUQsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLENBQUM7Z0JBRUQsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLGVBQWUsRUFBRSxDQUFDO29CQUN4QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMzQyxPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztnQkFDdEMsQ0FBQztnQkFFRCxPQUFPLG1CQUFtQixDQUFDLFdBQVcsQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxLQUFLLENBQUMsTUFBZ0I7WUFDcEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JBQUUsT0FBTyxDQUFDLDRDQUE0QztZQUU3RSx1REFBdUQ7WUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFaEMsaUVBQWlFO1lBQ2pFLDJEQUEyRDtZQUMzRCxLQUFLLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztvQkFDbEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7b0JBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO29CQUMxQixNQUFNO2dCQUNSLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCO0lBV3RDLE9BQU87UUFDTCxLQUFLLENBQUMsTUFBZ0I7WUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0MsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsTUFBTSxJQUFJLElBQUksWUFBWSxDQUFDLDRCQUE0QixFQUFFLFlBQVksQ0FBQyxDQUN2RSxDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELEdBQUcsQ0FDRCxPQUtFO1lBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFbEQsdUVBQXVFO1lBQ3ZFLHVFQUF1RTtZQUN2RSxvQ0FBb0M7WUFDcEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVoQyxLQUFLLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDbkIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3JDLE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztZQUVELHNFQUFzRTtZQUN0RSx3RUFBd0U7WUFDeEUsd0VBQXdFO1lBQ3hFLHlEQUF5RDtZQUN6RCxNQUFNLFNBQVMsR0FHVixFQUFFLENBQUM7WUFDUixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUU7Z0JBQ25CLEtBQUssTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDN0MsSUFBSSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzt3QkFDL0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDaEQsQ0FBQztnQkFDSCxDQUFDO2dCQUNELFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQztZQUVGLEtBQUssTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO29CQUFFLFNBQVM7Z0JBQ3ZDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDdkIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ3JDLE9BQU8sRUFBRSxDQUFDO29CQUNaLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDO2dCQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDckMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBRUQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU87WUFDTCxNQUFNLElBQUksS0FBSyxDQUNiLGdFQUFnRTtnQkFDOUQsK0NBQStDO2dCQUMvQyxvREFBb0QsQ0FDdkQsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcGxheURpdmVyZ2VuY2VFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHsgRXZlbnRDb25zdW1lclJlc3VsdCB9IGZyb20gJy4uL2V2ZW50cy1jb25zdW1lci5qcyc7XG5pbXBvcnQge1xuICBhd2FpdEVhcmxpZXJEZWxpdmVyaWVzLFxuICByZWdpc3RlckRlbGl2ZXJ5QmFycmllcixcbiAgdHlwZSBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQsXG59IGZyb20gJy4uL3ByaXZhdGUuanMnO1xuaW1wb3J0IHsgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZSB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24uanMnO1xuaW1wb3J0IHsgQUJPUlRfSE9PS19UT0tFTiwgQUJPUlRfU1RSRUFNX05BTUUgfSBmcm9tICcuLi9zeW1ib2xzLmpzJztcbmltcG9ydCB7IGdldEFib3J0U3RyZWFtSWQgfSBmcm9tICcuLi91dGlsLmpzJztcblxuLyoqXG4gKiBBIGxpZ2h0d2VpZ2h0IEFib3J0U2lnbmFsIGltcGxlbWVudGF0aW9uIGZvciB0aGUgd29ya2Zsb3cgVk0gY29udGV4dC5cbiAqXG4gKiBgc2lnbmFsLmFib3J0ZWRgIGFuZCBsaXN0ZW5lcnMgYXJlIHVwZGF0ZWQgaW4gdHdvIHNjZW5hcmlvczpcbiAqIDEuIE9uIGZpcnN0LXJ1bjogd2hlbiBgYWJvcnQoKWAgaXMgY2FsbGVkIGluIHRoZSB3b3JrZmxvdyBjb2RlXG4gKiAyLiBPbiByZXBsYXk6IHdoZW4gdGhlIGV2ZW50cyBjb25zdW1lciBwcm9jZXNzZXMgdGhlIGBob29rX3JlY2VpdmVkYFxuICogICAgZXZlbnQgKGNoYWluZWQgdGhyb3VnaCBwcm9taXNlUXVldWUgZm9yIGRldGVybWluaXN0aWMgb3JkZXJpbmcpXG4gKlxuICogT24gcmVwbGF5LCBgYWJvcnQoKWAgaW4gdGhlIHdvcmtmbG93IGNvZGUgYmVjb21lcyBhIG5vLW9wIHNpbmNlXG4gKiBgX3NldEFib3J0ZWRgIHdhcyBhbHJlYWR5IGNhbGxlZCBieSB0aGUgZXZlbnRzIGNvbnN1bWVyLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dBYm9ydFNpZ25hbCB7XG4gIGFib3J0ZWQgPSBmYWxzZTtcbiAgcmVhc29uOiB1bmtub3duID0gdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5IFtBQk9SVF9TVFJFQU1fTkFNRV06IHN0cmluZztcbiAgcmVhZG9ubHkgW0FCT1JUX0hPT0tfVE9LRU5dOiBzdHJpbmc7XG5cbiAgI2xpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcbiAgI29uYWJvcnQ6ICgodGhpczogV29ya2Zsb3dBYm9ydFNpZ25hbCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICBnZXQgb25hYm9ydCgpOiAoKHRoaXM6IFdvcmtmbG93QWJvcnRTaWduYWwpID0+IHZvaWQpIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuI29uYWJvcnQ7XG4gIH1cblxuICBzZXQgb25hYm9ydChoYW5kbGVyOiAoKHRoaXM6IFdvcmtmbG93QWJvcnRTaWduYWwpID0+IHZvaWQpIHwgbnVsbCkge1xuICAgIHRoaXMuI29uYWJvcnQgPSBoYW5kbGVyO1xuICAgIGlmIChoYW5kbGVyICYmIHRoaXMuYWJvcnRlZCkge1xuICAgICAgaGFuZGxlci5jYWxsKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbU5hbWU6IHN0cmluZywgaG9va1Rva2VuOiBzdHJpbmcpIHtcbiAgICB0aGlzW0FCT1JUX1NUUkVBTV9OQU1FXSA9IHN0cmVhbU5hbWU7XG4gICAgdGhpc1tBQk9SVF9IT09LX1RPS0VOXSA9IGhvb2tUb2tlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwgU2V0cyBhYm9ydGVkIHN0YXRlIGFuZCBmaXJlcyBsaXN0ZW5lcnMuXG4gICAqIENhbGxlZCBieSBhYm9ydCgpIG9uIGZpcnN0LXJ1biwgb3IgYnkgdGhlIGV2ZW50cyBjb25zdW1lciBvbiByZXBsYXkuXG4gICAqIElkZW1wb3RlbnQg4oCUIHNlY29uZCBjYWxsIGlzIGEgbm8tb3AuXG4gICAqL1xuICBfc2V0QWJvcnRlZChyZWFzb24/OiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWJvcnRlZCkgcmV0dXJuO1xuICAgIHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gICAgaWYgKHRoaXMuI29uYWJvcnQpIHtcbiAgICAgIHRoaXMuI29uYWJvcnQuY2FsbCh0aGlzKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLiNsaXN0ZW5lcnMpIHtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfVxuICAgIHRoaXMuI2xpc3RlbmVycyA9IFtdO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgIT09ICdhYm9ydCcpIHJldHVybjtcbiAgICBpZiAodGhpcy5hYm9ydGVkKSB7XG4gICAgICAvLyBGaXJlIHN5bmNocm9ub3VzbHksIG5vdCBvbiBhIG1pY3JvdGFzay4gTmF0aXZlIEFib3J0U2lnbmFsIGZpcmVzIG9uIGFcbiAgICAgIC8vIG1pY3JvdGFzayBwZXIgc3BlYywgYnV0IGluc2lkZSB0aGUgd29ya2Zsb3cgVk0gd2UgZGVsaWJlcmF0ZWx5IGRpdmVyZ2VcbiAgICAgIC8vIGZvciBkZXRlcm1pbmlzdGljIHJlcGxheTogbGlzdGVuZXIgb3JkZXJpbmcgbXVzdCBiZSB0aWVkIHRvIHRoZVxuICAgICAgLy8gb3JjaGVzdHJhdG9yJ3Mgc3luYyBleGVjdXRpb24gcGF0aCwgbm90IHRvIG1pY3JvdGFzayBzY2hlZHVsaW5nLlxuICAgICAgbGlzdGVuZXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy4jbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgIT09ICdhYm9ydCcpIHJldHVybjtcbiAgICB0aGlzLiNsaXN0ZW5lcnMgPSB0aGlzLiNsaXN0ZW5lcnMuZmlsdGVyKChsKSA9PiBsICE9PSBsaXN0ZW5lcik7XG4gIH1cblxuICB0aHJvd0lmQWJvcnRlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hYm9ydGVkKSB7XG4gICAgICB0aHJvdyAoXG4gICAgICAgIHRoaXMucmVhc29uID8/XG4gICAgICAgIG5ldyBET01FeGNlcHRpb24oJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQuJywgJ0Fib3J0RXJyb3InKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgd29ya2Zsb3ctY29udGV4dCBgQWJvcnRDb250cm9sbGVyYCBjbGFzcyB0aGF0IHVzZXMgaG9va3MgZm9yXG4gKiBkdXJhYmxlIHN0YXRlIGFuZCBzdHJlYW1zIGZvciByZWFsLXRpbWUgc3RlcCBwcm9wYWdhdGlvbi5cbiAqXG4gKiBGb2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gYXMgYGNyZWF0ZUNyZWF0ZUhvb2soKWAgaW4gYHdvcmtmbG93L2hvb2sudHNgOlxuICogLSBSZWdpc3RlcnMgYSBob29rIGluIHRoZSBpbnZvY2F0aW9ucyBxdWV1ZSBvbiBjb25zdHJ1Y3Rpb25cbiAqIC0gU3Vic2NyaWJlcyB0byB0aGUgZXZlbnRzIGNvbnN1bWVyIGZvciBob29rX2NyZWF0ZWQvaG9va19yZWNlaXZlZCBldmVudHNcbiAqIC0gYGFib3J0KClgIGNhbGxzIGBfc2V0QWJvcnRlZGAgKyBtYXJrcyB0aGUgaG9vayBmb3IgcmVzdW1wdGlvblxuICogLSBUaGUgc3VzcGVuc2lvbiBoYW5kbGVyIHByb2Nlc3NlcyB0aGUgYWJvcnQgKGNyZWF0ZXMgZXZlbnQgKyB3cml0ZXMgc3RyZWFtKVxuICogLSBPbiByZXBsYXksIHRoZSBldmVudHMgY29uc3VtZXIgY2FsbHMgYF9zZXRBYm9ydGVkYCB3aGVuIGhvb2tfcmVjZWl2ZWRcbiAqICAgaXMgcHJvY2Vzc2VkLCBhbmQgYGFib3J0KClgIGluIHRoZSB3b3JrZmxvdyBjb2RlIGJlY29tZXMgYSBuby1vcFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3JlYXRlQWJvcnRDb250cm9sbGVyKGN0eDogV29ya2Zsb3dPcmNoZXN0cmF0b3JDb250ZXh0KSB7XG4gIHJldHVybiBjbGFzcyBXb3JrZmxvd0Fib3J0Q29udHJvbGxlciB7XG4gICAgcmVhZG9ubHkgc2lnbmFsOiBXb3JrZmxvd0Fib3J0U2lnbmFsO1xuICAgIHJlYWRvbmx5IFtBQk9SVF9TVFJFQU1fTkFNRV06IHN0cmluZztcbiAgICByZWFkb25seSBbQUJPUlRfSE9PS19UT0tFTl06IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgY29uc3QgaWQgPSBjdHguZ2VuZXJhdGVVbGlkKCk7XG4gICAgICBjb25zdCBzdHJlYW1OYW1lID0gZ2V0QWJvcnRTdHJlYW1JZChpZCk7XG4gICAgICBjb25zdCBob29rVG9rZW4gPSBgYWJydF8ke2lkfWA7XG5cbiAgICAgIHRoaXNbQUJPUlRfU1RSRUFNX05BTUVdID0gc3RyZWFtTmFtZTtcbiAgICAgIHRoaXNbQUJPUlRfSE9PS19UT0tFTl0gPSBob29rVG9rZW47XG4gICAgICB0aGlzLnNpZ25hbCA9IG5ldyBXb3JrZmxvd0Fib3J0U2lnbmFsKHN0cmVhbU5hbWUsIGhvb2tUb2tlbik7XG5cbiAgICAgIC8vIFJlZ2lzdGVyIGFuIGludGVybmFsIHN5c3RlbSBob29rIGluIHRoZSBpbnZvY2F0aW9ucyBxdWV1ZS5cbiAgICAgIC8vIGlzU3lzdGVtIHByZXZlbnRzIHRva2VuIG5hbWVzcGFjZSBjb25mbGljdHMgd2l0aCB1c2VyIGhvb2tzLlxuICAgICAgY29uc3QgY29ycmVsYXRpb25JZCA9IGBob29rXyR7Y3R4LmdlbmVyYXRlVWxpZCgpfWA7XG4gICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5zZXQoY29ycmVsYXRpb25JZCwge1xuICAgICAgICB0eXBlOiAnaG9vaycsXG4gICAgICAgIGNvcnJlbGF0aW9uSWQsXG4gICAgICAgIHRva2VuOiBob29rVG9rZW4sXG4gICAgICAgIGlzV2ViaG9vazogZmFsc2UsXG4gICAgICAgIGlzU3lzdGVtOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN1YnNjcmliZSB0byBldmVudHMgZm9yIHRoaXMgaG9vaydzIGxpZmVjeWNsZVxuICAgICAgY3R4LmV2ZW50c0NvbnN1bWVyLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmNvcnJlbGF0aW9uSWQgIT09IGNvcnJlbGF0aW9uSWQpIHtcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50VG9rZW4gPVxuICAgICAgICAgICdldmVudERhdGEnIGluIGV2ZW50ICYmIGV2ZW50LmV2ZW50RGF0YSAmJiAndG9rZW4nIGluIGV2ZW50LmV2ZW50RGF0YVxuICAgICAgICAgICAgPyBldmVudC5ldmVudERhdGEudG9rZW5cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlb2YgZXZlbnRUb2tlbiA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICBldmVudFRva2VuICE9PSB0aGlzW0FCT1JUX0hPT0tfVE9LRU5dXG4gICAgICAgICkge1xuICAgICAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgICAgbmV3IFJlcGxheURpdmVyZ2VuY2VFcnJvcihcbiAgICAgICAgICAgICAgICBgUmVwbGF5IGRpdmVyZ2VuY2U6IGFib3J0IGhvb2sgZXZlbnQgJHtldmVudC5ldmVudFR5cGV9IGZvciAke2NvcnJlbGF0aW9uSWR9IGJlbG9uZ3MgdG8gdG9rZW4gXCIke2V2ZW50VG9rZW59XCIsIGJ1dCB0aGUgY3VycmVudCBhYm9ydCBob29rIGV4cGVjdHMgXCIke3RoaXNbQUJPUlRfSE9PS19UT0tFTl19XCJgLFxuICAgICAgICAgICAgICAgIHsgZXZlbnRJZDogZXZlbnQuZXZlbnRJZCB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnaG9va19jcmVhdGVkJykge1xuICAgICAgICAgIGNvbnN0IHF1ZXVlSXRlbSA9IGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmdldChjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgICBpZiAocXVldWVJdGVtICYmIHF1ZXVlSXRlbS50eXBlID09PSAnaG9vaycpIHtcbiAgICAgICAgICAgIHF1ZXVlSXRlbS5oYXNDcmVhdGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX3JlY2VpdmVkJykge1xuICAgICAgICAgIC8vIFRoZSBhYm9ydCB3YXMgcmVjb3JkZWQgaW4gdGhlIGV2ZW50IGxvZyAoZnJvbSBhIHByZXZpb3VzIHJ1bidzXG4gICAgICAgICAgLy8gYWJvcnQoKSBjYWxsLCBvciBmcm9tIGEgc3RlcC9leHRlcm5hbCBhYm9ydCkuIFVwZGF0ZSBzaWduYWxcbiAgICAgICAgICAvLyBzdGF0ZSBhbmQgZmlyZSBsaXN0ZW5lcnMgYXQgdGhpcyBkZXRlcm1pbmlzdGljIHBvaW50IGluIHRoZVxuICAgICAgICAgIC8vIHByb21pc2VRdWV1ZSDigJQgc2FtZSBvcmRlcmluZyBhcyBob29rIHBheWxvYWQgZGVsaXZlcnkuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBUaGUgcGF5bG9hZCBpcyB0aGUgZGVoeWRyYXRlZCBmb3JtIHdyaXR0ZW4gYnkgdGhlIHN1c3BlbnNpb25cbiAgICAgICAgICAvLyBoYW5kbGVyIChhIFVpbnQ4QXJyYXksIHBvc3NpYmx5IGVuY3J5cHRlZCkuIEh5ZHJhdGUgaXQgdmlhIHRoZVxuICAgICAgICAgIC8vIHNhbWUgbWFjaGluZXJ5IGFzIHJlZ3VsYXIgaG9vayBwYXlsb2FkcyAod29ya2Zsb3cvaG9vay50czoxMTcpXG4gICAgICAgICAgLy8gc28gdGhlIHJlYXNvbiByb3VuZC10cmlwcyB3aXRoIGZ1bGwgdHlwZSBmaWRlbGl0eS4gUmVhZGluZyB0aGVcbiAgICAgICAgICAvLyByYXcgcGF5bG9hZCBoZXJlIGlzIGEgYnVnIOKAlCBpdCdzIG5vdCBhIHBsYWluIG9iamVjdCBhZnRlclxuICAgICAgICAgIC8vIGRlaHlkcmF0aW9uLCBzbyBgJ3JlYXNvbicgaW4gcGF5bG9hZGAgaXMgZmFsc2UgYW5kIHJlYXNvblxuICAgICAgICAgIC8vIGVuZHMgdXAgdW5kZWZpbmVkIG9uIHJlcGxheS5cbiAgICAgICAgICBjb25zdCByYXdQYXlsb2FkID0gZXZlbnQuZXZlbnREYXRhPy5wYXlsb2FkO1xuICAgICAgICAgIC8vIEFuIGFib3J0IGlzIGEgYnJhbmNoLWRlY2lkaW5nIGRlbGl2ZXJ5OiBgX3NldEFib3J0ZWRgIGZpcmVzIHRoZVxuICAgICAgICAgIC8vIHNpZ25hbCdzIGxpc3RlbmVycywgYW5kIGEgbGlzdGVuZXIgaXMgZnJlZSB0byBpbnZva2UgYSBzdGVwIGFuZFxuICAgICAgICAgIC8vIGRyYXcgYSBVTElELiBTbyBpdCByZWdpc3RlcnMgaW4gdGhlIGRlbGl2ZXJ5LWJhcnJpZXIgcmVnaXN0cnkgYXMgYVxuICAgICAgICAgIC8vICdob29rJyDigJQgd2hpY2ggaXMgZXhhY3RseSB3aGF0IHRoZSBldmVudCBpcyDigJQgc28gdGhhdCB3YWl0LCBob29rXG4gICAgICAgICAgLy8gYW5kIHN0ZXAgZGVsaXZlcmllcyBvcmRlciBhZ2FpbnN0IGl0IGJ5IGV2ZW50LWxvZyBwb3NpdGlvbiByYXRoZXJcbiAgICAgICAgICAvLyB0aGFuIGJ5IHdob3NlIGh5ZHJhdGlvbiBmaW5pc2hlZCBmaXJzdC4gSXQgaXMgYWx3YXlzIEFSTUVEOiB1bmxpa2VcbiAgICAgICAgICAvLyBhIGJ1ZmZlcmVkIHVzZXIgaG9vayBwYXlsb2FkLCBub3RoaW5nIGFib3V0IGl0cyBkZWxpdmVyeSB3YWl0cyBvblxuICAgICAgICAgIC8vIHdvcmtmbG93IGNvZGUgYXNraW5nIGZvciBpdC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFJlc29sdmluZyBzdHJhaWdodCBvZmYgdGhlIHF1ZXVlIHNsb3Qgd2FzIHN1ZmZpY2llbnQgb25seSB3aGlsZVxuICAgICAgICAgIC8vIGV2ZXJ5IG90aGVyIGRlbGl2ZXJ5IGFsc28gcmVzb2x2ZWQgZnJvbSBpdHMgc2xvdC4gU3RlcCByZXN1bHRzIG5vXG4gICAgICAgICAgLy8gbG9uZ2VyIGRvIChzZWUgc3RlcC50cyksIHNvIGFuIGFib3J0IHdob3NlIHNsb3QgcmFuIHdoaWxlIGFcbiAgICAgICAgICAvLyBsb2ctZWFybGllciBzdGVwIHNhdCBiZWhpbmQgYSBiYXJyaWVyIHdvdWxkIG92ZXJ0YWtlIGl0IOKAlCBzZWVcbiAgICAgICAgICAvLyBgZGVsaXZlcnktYmFycmllci1jb3ZlcmFnZS50ZXN0LnRzYC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFRoZSBkZWZlcnJhbCBpcyBjYXB0dXJlZCBIRVJFLCBhdCBldmVudC1jb25zdW1wdGlvbiB0aW1lLCBmb3IgdGhlXG4gICAgICAgICAgLy8gc2FtZSB0d28gcmVhc29ucyBzcGVsbGVkIG91dCBpbiBzdGVwLnRzOiB0aGUgc2V0IG9mIGVhcmxpZXJcbiAgICAgICAgICAvLyBkZWxpdmVyaWVzIHN0YXlzIGEgZnVuY3Rpb24gb2YgbG9nIHBvc2l0aW9uIGFsb25lLCBhbmQgYmFycmllcnNcbiAgICAgICAgICAvLyB0aGF0IHJldGlyZSBiZWZvcmUgdGhpcyBzbG90IHJ1bnMgYXJlIHN0aWxsIHNlZW4uXG4gICAgICAgICAgY29uc3QgZXZlbnRJbmRleCA9IGN0eC5ldmVudHNDb25zdW1lci5ldmVudEluZGV4O1xuICAgICAgICAgIGNvbnN0IGJhcnJpZXIgPSByZWdpc3RlckRlbGl2ZXJ5QmFycmllcihjdHgsIGV2ZW50SW5kZXgsICdob29rJyk7XG4gICAgICAgICAgY29uc3QgZWFybGllckRlbGl2ZXJlZCA9IGF3YWl0RWFybGllckRlbGl2ZXJpZXMoXG4gICAgICAgICAgICBjdHgsXG4gICAgICAgICAgICBldmVudEluZGV4LFxuICAgICAgICAgICAgJ2hvb2snXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBBY2NvdW50IHRoaXMgYWJvcnQgYXMgYSBwZW5kaW5nIGRlbGl2ZXJ5LCBleGFjdGx5IGxpa2Ugc3RlcFxuICAgICAgICAgIC8vIHJlc3VsdHMgKHN0ZXAudHMpIGFuZCBob29rIHBheWxvYWRzICh3b3JrZmxvdy9ob29rLnRzKSBkby4gVGhlXG4gICAgICAgICAgLy8gc3VzcGVuc2lvbiBoYW5kbGVyIGRlaHlkcmF0ZXMgcXVldWVkIHN0ZXAgYXJndW1lbnRzIG9ubHkgb25jZVxuICAgICAgICAgIC8vIGBzY2hlZHVsZVdoZW5JZGxlYCBvYnNlcnZlcyBgcGVuZGluZ0RlbGl2ZXJpZXMgPT09IDBgLiBXaXRob3V0XG4gICAgICAgICAgLy8gdGhpcyBjb3VudGVyLCBhIHN0ZXAgZGlzcGF0Y2hlZCByaWdodCBhZnRlciB0aGUgYWJvcnQg4oCUIGUuZy4gb25lXG4gICAgICAgICAgLy8gdGhhdCByZWNlaXZlcyBgY29udHJvbGxlci5zaWduYWxgIOKAlCBjYW4gaGF2ZSBpdHMgYXJndW1lbnRzXG4gICAgICAgICAgLy8gc2VyaWFsaXplZCB3aGlsZSB0aGUgYWJvcnQgaXMgc3RpbGwgaW4gZmxpZ2h0IGJlaGluZFxuICAgICAgICAgIC8vIGBhd2FpdCBoeWRyYXRlU3RlcFJldHVyblZhbHVlYCwgY2FwdHVyaW5nIGBzaWduYWwuYWJvcnRlZCA9PT0gZmFsc2VgXG4gICAgICAgICAgLy8gKGFuZCBhIG1pc3NpbmcgcmVhc29uKS4gQnVtcGluZyB0aGUgY291bnRlciBob2xkcyB0aGUgc3VzcGVuc2lvblxuICAgICAgICAgIC8vIHVudGlsIGBfc2V0QWJvcnRlZGAgaGFzIGxhbmRlZCwgc28gZG93bnN0cmVhbSBzZXJpYWxpemF0aW9uIGlzXG4gICAgICAgICAgLy8gZGV0ZXJtaW5pc3RpYyByZWdhcmRsZXNzIG9mIHJlYXNvbi1oeWRyYXRpb24gKGRlY3J5cHRpb24pIGxhdGVuY3kuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJdCBpcyByZWxlYXNlZCBpbnNpZGUgdGhlIHNsb3QsIGJlZm9yZSB0aGUgZGV0YWNoZWQgZGVmZXJyYWwsIHNvXG4gICAgICAgICAgLy8gYHNjaGVkdWxlV2hlbklkbGVgIGNhbiBzdGlsbCByZWFjaCBpZGxlIGFuZCByZXRpcmUgdGhlIGJhcnJpZXJzXG4gICAgICAgICAgLy8gdGhhdCBkZWZlcnJhbCBtYXkgYmUgd2FpdGluZyBvbiDigJQgdGhlIHNhbWUgc2hhcGUgYXMgdGhlIGhvb2sgYW5kXG4gICAgICAgICAgLy8gc3RlcCBwYXRocy5cbiAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMrKztcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCByZWFzb246IHVua25vd247XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAocmF3UGF5bG9hZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXBhcmVkID1cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY3R4LnJlcGxheVBheWxvYWRDYWNoZS5wcmVwYXJlRXZlbnRQYXlsb2FkKFxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgJ3BheWxvYWQnLFxuICAgICAgICAgICAgICAgICAgICAgIHJhd1BheWxvYWRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGh5ZHJhdGVkID0gKGF3YWl0IGh5ZHJhdGVTdGVwUmV0dXJuVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIHJhd1BheWxvYWQsXG4gICAgICAgICAgICAgICAgICAgIGN0eC5ydW5JZCxcbiAgICAgICAgICAgICAgICAgICAgY3R4LmVuY3J5cHRpb25LZXksXG4gICAgICAgICAgICAgICAgICAgIGN0eC5nbG9iYWxUaGlzLFxuICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgcHJlcGFyZWRcbiAgICAgICAgICAgICAgICAgICkpIGFzIHsgcmVhc29uPzogdW5rbm93biB9IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBoeWRyYXRlZCAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaHlkcmF0ZWQgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICdyZWFzb24nIGluIGh5ZHJhdGVkXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uID0gaHlkcmF0ZWQucmVhc29uO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgLy8gQmVzdC1lZmZvcnQ6IGlmIGh5ZHJhdGlvbiBmYWlscywgZmFsbCBiYWNrIHRvIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgLy8gcmVhc29uLiBUaGUgc2lnbmFsIHN0aWxsIGFib3J0czsgdGhlIHVzZXIganVzdCB3b24ndCBzZWVcbiAgICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCByZWFzb24uIE1hdGNoZXMgV29ya2Zsb3dBYm9ydFNpZ25hbCdzIHNwZWNcbiAgICAgICAgICAgICAgICAgIC8vIGZhbGxiYWNrIChET01FeGNlcHRpb24gQWJvcnRFcnJvcikuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIERldGFjaGVkLCBsaWtlIHRoZSBvdGhlciBkZWxpdmVyaWVzOiBgYXdhaXRFYXJsaWVyRGVsaXZlcmllc2BcbiAgICAgICAgICAgIC8vIG1heSBiZSB3YWl0aW5nIG9uIGEgZGVsaXZlcnkgdGhpcyB2ZXJ5IHF1ZXVlIGRyaXZlcywgYW5kXG4gICAgICAgICAgICAvLyBibG9ja2luZyBhIHNsb3Qgb24gdGhhdCB3b3VsZCBkZWFkbG9jayB0aGUgcXVldWUuXG4gICAgICAgICAgICB2b2lkIGVhcmxpZXJEZWxpdmVyZWQudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGJhcnJpZXIubWFya0RlbGl2ZXJlZCgpO1xuICAgICAgICAgICAgICB0aGlzLnNpZ25hbC5fc2V0QWJvcnRlZChyZWFzb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5kZWxldGUoY29ycmVsYXRpb25JZCk7XG4gICAgICAgICAgLy8gTXVsdGlwbGUgaGFuZGxlcnMgY2FuIG9ic2VydmUgdGhlIHNhbWUgcGVuZGluZyBhYm9ydCByZXF1ZXN0IGFuZFxuICAgICAgICAgIC8vIGR1cmFibHkgcmVjb3JkIGl0IGJlZm9yZSByZXBsYXkgcmVtb3ZlcyB0aGUgcXVldWUgaXRlbS4gQWJvcnQgaXNcbiAgICAgICAgICAvLyBpZGVtcG90ZW50LCBzbyBjb25zdW1lIGxhdGVyIG1hdGNoaW5nIHJlY2VpcHRzIGFzIG5vLW9wcyBpbnN0ZWFkXG4gICAgICAgICAgLy8gb2Ygc3VyZmFjaW5nIGEgY29ycnVwdGVkIGV2ZW50IGxvZyBhZnRlciB0aGUgZmlyc3QgcmVjZWlwdC5cbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX2Rpc3Bvc2VkJykge1xuICAgICAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmRlbGV0ZShjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWJvcnQocmVhc29uPzogdW5rbm93bik6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuc2lnbmFsLmFib3J0ZWQpIHJldHVybjsgLy8gbm8tb3AgKGFscmVhZHkgYWJvcnRlZCwgZS5nLiBmcm9tIHJlcGxheSlcblxuICAgICAgLy8gVXBkYXRlIHNpZ25hbCBzdGF0ZSBhbmQgZmlyZSBsaXN0ZW5lcnMgc3luY2hyb25vdXNseVxuICAgICAgdGhpcy5zaWduYWwuX3NldEFib3J0ZWQocmVhc29uKTtcblxuICAgICAgLy8gTWFyayB0aGUgaG9vayBmb3IgcmVzdW1wdGlvbiBzbyB0aGUgc3VzcGVuc2lvbiBoYW5kbGVyIHJlY29yZHNcbiAgICAgIC8vIHRoZSBhYm9ydCBpbiB0aGUgZXZlbnQgbG9nIGFuZCB3cml0ZXMgdGhlIHN0cmVhbSBwYWNrZXQuXG4gICAgICBmb3IgKGNvbnN0IFssIGl0ZW1dIG9mIGN0eC5pbnZvY2F0aW9uc1F1ZXVlKSB7XG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdob29rJyAmJiBpdGVtLnRva2VuID09PSB0aGlzW0FCT1JUX0hPT0tfVE9LRU5dKSB7XG4gICAgICAgICAgaXRlbS5hYm9ydFJlcXVlc3RlZCA9IHRydWU7XG4gICAgICAgICAgaXRlbS5hYm9ydFJlYXNvbiA9IHJlYXNvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgd29ya2Zsb3ctY29udGV4dCBgQWJvcnRTaWduYWxgIG9iamVjdCB3aXRoIHN0YXRpYyBtZXRob2RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWJvcnRTaWduYWxTdGF0aWNzKCk6IHtcbiAgYWJvcnQ6IChyZWFzb24/OiB1bmtub3duKSA9PiBXb3JrZmxvd0Fib3J0U2lnbmFsO1xuICBhbnk6IChcbiAgICBzaWduYWxzOiBJdGVyYWJsZTx7XG4gICAgICBhYm9ydGVkOiBib29sZWFuO1xuICAgICAgcmVhc29uPzogdW5rbm93bjtcbiAgICAgIGFkZEV2ZW50TGlzdGVuZXI/OiBGdW5jdGlvbjtcbiAgICB9PlxuICApID0+IFdvcmtmbG93QWJvcnRTaWduYWw7XG4gIHRpbWVvdXQ6ICgpID0+IG5ldmVyO1xufSB7XG4gIHJldHVybiB7XG4gICAgYWJvcnQocmVhc29uPzogdW5rbm93bik6IFdvcmtmbG93QWJvcnRTaWduYWwge1xuICAgICAgY29uc3Qgc2lnbmFsID0gbmV3IFdvcmtmbG93QWJvcnRTaWduYWwoJycsICcnKTtcbiAgICAgIHNpZ25hbC5fc2V0QWJvcnRlZChcbiAgICAgICAgcmVhc29uID8/IG5ldyBET01FeGNlcHRpb24oJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQuJywgJ0Fib3J0RXJyb3InKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBzaWduYWw7XG4gICAgfSxcblxuICAgIGFueShcbiAgICAgIHNpZ25hbHM6IEl0ZXJhYmxlPHtcbiAgICAgICAgYWJvcnRlZDogYm9vbGVhbjtcbiAgICAgICAgcmVhc29uPzogdW5rbm93bjtcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcj86IEZ1bmN0aW9uO1xuICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyPzogRnVuY3Rpb247XG4gICAgICB9PlxuICAgICk6IFdvcmtmbG93QWJvcnRTaWduYWwge1xuICAgICAgY29uc3QgY29tcG9zaXRlID0gbmV3IFdvcmtmbG93QWJvcnRTaWduYWwoJycsICcnKTtcblxuICAgICAgLy8gTWF0ZXJpYWxpemUgdGhlIGl0ZXJhYmxlIG9uY2UuIE5hdGl2ZSBBYm9ydFNpZ25hbC5hbnkgZG9lcyB0aGUgc2FtZTpcbiAgICAgIC8vIHNpbmdsZS1zaG90IGl0ZXJhYmxlcyAoZS5nLiBnZW5lcmF0b3JzKSB3b3VsZCBvdGhlcndpc2UgcHJvZHVjZSB6ZXJvXG4gICAgICAvLyBlbnRyaWVzIG9uIHRoZSBzZWNvbmQgcGFzcyBiZWxvdy5cbiAgICAgIGNvbnN0IGFyciA9IEFycmF5LmZyb20oc2lnbmFscyk7XG5cbiAgICAgIGZvciAoY29uc3Qgc2lnbmFsIG9mIGFycikge1xuICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICBjb21wb3NpdGUuX3NldEFib3J0ZWQoc2lnbmFsLnJlYXNvbik7XG4gICAgICAgICAgcmV0dXJuIGNvbXBvc2l0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBMaXN0ZW4gdG8gZWFjaCBzaWduYWwg4oCUIGZpcnN0IG9uZSB0byBhYm9ydCB3aW5zLiBUcmFjayBsaXN0ZW5lcnMgc29cbiAgICAgIC8vIHdlIGNhbiByZW1vdmUgdGhlbSBhZnRlciB0aGUgY29tcG9zaXRlIGFib3J0czsgb3RoZXJ3aXNlIHRoZSBjbG9zdXJlc1xuICAgICAgLy8gKGNhcHR1cmluZyBgY29tcG9zaXRlYCkgcHJldmVudCBHQyBmb3IgYW55IGlucHV0IHNpZ25hbCB0aGF0IG91dGxpdmVzXG4gICAgICAvLyB0aGUgY29tcG9zaXRlIChlLmcuIGEgbG9uZy1saXZlZCBleHRlcm5hbCBjb250cm9sbGVyKS5cbiAgICAgIGNvbnN0IGxpc3RlbmVyczogQXJyYXk8e1xuICAgICAgICBzaWduYWw6ICh0eXBlb2YgYXJyKVtudW1iZXJdO1xuICAgICAgICBsaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgICAgIH0+ID0gW107XG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHsgc2lnbmFsLCBsaXN0ZW5lciB9IG9mIGxpc3RlbmVycykge1xuICAgICAgICAgIGlmIChzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgbGlzdGVuZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaXN0ZW5lcnMubGVuZ3RoID0gMDtcbiAgICAgIH07XG5cbiAgICAgIGZvciAoY29uc3Qgc2lnbmFsIG9mIGFycikge1xuICAgICAgICBpZiAoIXNpZ25hbC5hZGRFdmVudExpc3RlbmVyKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgbGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKCFjb21wb3NpdGUuYWJvcnRlZCkge1xuICAgICAgICAgICAgY29tcG9zaXRlLl9zZXRBYm9ydGVkKHNpZ25hbC5yZWFzb24pO1xuICAgICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGlzdGVuZXJzLnB1c2goeyBzaWduYWwsIGxpc3RlbmVyIH0pO1xuICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBsaXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21wb3NpdGU7XG4gICAgfSxcblxuICAgIHRpbWVvdXQoKTogbmV2ZXIge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQWJvcnRTaWduYWwudGltZW91dCgpIGlzIG5vdCBzdXBwb3J0ZWQgaW4gd29ya2Zsb3cgZnVuY3Rpb25zLiAnICtcbiAgICAgICAgICAnVXNlIHNsZWVwKCkgd2l0aCBhbiBBYm9ydENvbnRyb2xsZXIgaW5zdGVhZC4gJyArXG4gICAgICAgICAgJ1NlZTogL2RvY3MvZXJyb3JzL2Fib3J0LXNpZ25hbC10aW1lb3V0LWluLXdvcmtmbG93J1xuICAgICAgKTtcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
@@ -6,7 +6,7 @@ import { scheduleWhenIdle, } from '../private.js';
|
|
|
6
6
|
export function createSetAttributes(ctx) {
|
|
7
7
|
return async function setAttributes(changes, options = {}) {
|
|
8
8
|
const { promise, resolve } = withResolvers();
|
|
9
|
-
const correlationId = `attr_${ctx.
|
|
9
|
+
const correlationId = `attr_${ctx.generateUlid()}`;
|
|
10
10
|
const queueItem = {
|
|
11
11
|
type: 'attribute',
|
|
12
12
|
correlationId,
|
|
@@ -45,4 +45,4 @@ export function createSetAttributes(ctx) {
|
|
|
45
45
|
return promise;
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWRpc3BhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3cvYXR0cmlidXRlLWRpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFFTCxrQkFBa0IsR0FDbkIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNMLGdCQUFnQixHQUVqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBZ0M7SUFDbEUsT0FBTyxLQUFLLFVBQVUsYUFBYSxDQUNqQyxPQUEwQixFQUMxQixVQUFpRCxFQUFFO1FBRW5ELE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsYUFBYSxFQUFRLENBQUM7UUFDbkQsTUFBTSxhQUFhLEdBQUcsUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUNuRCxNQUFNLFNBQVMsR0FBaUM7WUFDOUMsSUFBSSxFQUFFLFdBQVc7WUFDakIsYUFBYTtZQUNiLE9BQU87WUFDUCxHQUFHLENBQUMsT0FBTyxDQUFDLHVCQUF1QixLQUFLLElBQUk7Z0JBQzFDLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRTtnQkFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNSLENBQUM7UUFDRixHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVuRCxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUN6QixHQUFHLENBQUMsZUFBZSxDQUNqQixJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQzdELENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7WUFDekMsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSyxhQUFhLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7WUFDekMsQ0FBQztZQUVELElBQ0UsS0FBSyxDQUFDLFNBQVMsS0FBSyxVQUFVO2dCQUM5QixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVTtnQkFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUNuRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEtBQUssSUFBSSxDQUFDO29CQUNoRCxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsS0FBSyxJQUFJLENBQUMsRUFDNUMsQ0FBQztnQkFDRCxHQUFHLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDNUMsR0FBRyxDQUFDLGVBQWUsQ0FDakIsSUFBSSxxQkFBcUIsQ0FDdkIscURBQXFELGFBQWEsRUFBRSxFQUNwRSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQzNCLENBQ0YsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztZQUN0QyxDQUFDO1lBRUQsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMzQyxHQUFHLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDNUMsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcGxheURpdmVyZ2VuY2VFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHsgd2l0aFJlc29sdmVycyB9IGZyb20gJ0B3b3JrZmxvdy91dGlscyc7XG5pbXBvcnQgdHlwZSB7IEF0dHJpYnV0ZUNoYW5nZSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBFdmVudENvbnN1bWVyUmVzdWx0IH0gZnJvbSAnLi4vZXZlbnRzLWNvbnN1bWVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQXR0cmlidXRlSW52b2NhdGlvblF1ZXVlSXRlbSxcbiAgV29ya2Zsb3dTdXNwZW5zaW9uLFxufSBmcm9tICcuLi9nbG9iYWwuanMnO1xuaW1wb3J0IHtcbiAgc2NoZWR1bGVXaGVuSWRsZSxcbiAgdHlwZSBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQsXG59IGZyb20gJy4uL3ByaXZhdGUuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2V0QXR0cmlidXRlcyhjdHg6IFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCkge1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gc2V0QXR0cmlidXRlcyhcbiAgICBjaGFuZ2VzOiBBdHRyaWJ1dGVDaGFuZ2VbXSxcbiAgICBvcHRpb25zOiB7IGFsbG93UmVzZXJ2ZWRBdHRyaWJ1dGVzPzogYm9vbGVhbiB9ID0ge31cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBwcm9taXNlLCByZXNvbHZlIH0gPSB3aXRoUmVzb2x2ZXJzPHZvaWQ+KCk7XG4gICAgY29uc3QgY29ycmVsYXRpb25JZCA9IGBhdHRyXyR7Y3R4LmdlbmVyYXRlVWxpZCgpfWA7XG4gICAgY29uc3QgcXVldWVJdGVtOiBBdHRyaWJ1dGVJbnZvY2F0aW9uUXVldWVJdGVtID0ge1xuICAgICAgdHlwZTogJ2F0dHJpYnV0ZScsXG4gICAgICBjb3JyZWxhdGlvbklkLFxuICAgICAgY2hhbmdlcyxcbiAgICAgIC4uLihvcHRpb25zLmFsbG93UmVzZXJ2ZWRBdHRyaWJ1dGVzID09PSB0cnVlXG4gICAgICAgID8geyBhbGxvd1Jlc2VydmVkQXR0cmlidXRlczogdHJ1ZSB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG4gICAgY3R4Lmludm9jYXRpb25zUXVldWUuc2V0KGNvcnJlbGF0aW9uSWQsIHF1ZXVlSXRlbSk7XG5cbiAgICBjdHguZXZlbnRzQ29uc3VtZXIuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICBzY2hlZHVsZVdoZW5JZGxlKGN0eCwgKCkgPT4ge1xuICAgICAgICAgIGN0eC5vbldvcmtmbG93RXJyb3IoXG4gICAgICAgICAgICBuZXcgV29ya2Zsb3dTdXNwZW5zaW9uKGN0eC5pbnZvY2F0aW9uc1F1ZXVlLCBjdHguZ2xvYmFsVGhpcylcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuTm90Q29uc3VtZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5jb3JyZWxhdGlvbklkICE9PSBjb3JyZWxhdGlvbklkKSB7XG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50LmV2ZW50VHlwZSAhPT0gJ2F0dHJfc2V0JyB8fFxuICAgICAgICBldmVudC5ldmVudERhdGEud3JpdGVyLnR5cGUgIT09ICd3b3JrZmxvdycgfHxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZXZlbnQuZXZlbnREYXRhLmNoYW5nZXMpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzKSB8fFxuICAgICAgICAoZXZlbnQuZXZlbnREYXRhLmFsbG93UmVzZXJ2ZWRBdHRyaWJ1dGVzID09PSB0cnVlKSAhPT1cbiAgICAgICAgICAob3B0aW9ucy5hbGxvd1Jlc2VydmVkQXR0cmlidXRlcyA9PT0gdHJ1ZSlcbiAgICAgICkge1xuICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKCgpID0+IHtcbiAgICAgICAgICBjdHgub25Xb3JrZmxvd0Vycm9yKFxuICAgICAgICAgICAgbmV3IFJlcGxheURpdmVyZ2VuY2VFcnJvcihcbiAgICAgICAgICAgICAgYFJlcGxheSBkaXZlcmdlbmNlOiBVbmV4cGVjdGVkIGF0dHJpYnV0ZSBldmVudCBmb3IgJHtjb3JyZWxhdGlvbklkfWAsXG4gICAgICAgICAgICAgIHsgZXZlbnRJZDogZXZlbnQuZXZlbnRJZCB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgfVxuXG4gICAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5kZWxldGUoY29ycmVsYXRpb25JZCk7XG4gICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZDtcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9O1xufVxuIl19
|