@workflow/core 5.0.0-beta.46 → 5.0.0-beta.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capabilities.d.ts +6 -5
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +14 -12
- package/dist/events-consumer.d.ts +29 -6
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +66 -11
- package/dist/private.d.ts +11 -7
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +57 -29
- package/dist/replay-payload-cache.d.ts +13 -17
- package/dist/replay-payload-cache.d.ts.map +1 -1
- package/dist/replay-payload-cache.js +55 -57
- package/dist/runtime/constants.d.ts +3 -3
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +4 -4
- package/dist/runtime/helpers.d.ts +14 -33
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +18 -43
- package/dist/runtime/resume-hook.d.ts +19 -26
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +201 -255
- package/dist/runtime/resume-latency.d.ts +8 -11
- package/dist/runtime/resume-latency.d.ts.map +1 -1
- package/dist/runtime/resume-latency.js +1 -1
- package/dist/runtime/start.js +12 -10
- package/dist/runtime/vm-mode.d.ts +1 -1
- package/dist/runtime/vm-mode.d.ts.map +1 -1
- package/dist/runtime/vm-mode.js +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +146 -60
- package/dist/serialization.d.ts +3 -3
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +22 -22
- package/dist/telemetry/semantic-conventions.d.ts +41 -7
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +30 -6
- package/dist/telemetry.d.ts +12 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +62 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/script-cache.d.ts +9 -11
- package/dist/vm/script-cache.d.ts.map +1 -1
- package/dist/vm/script-cache.js +25 -40
- package/dist/workflow.d.ts +16 -0
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +67 -22
- package/docs/foundations/errors-and-retries.mdx +1 -1
- package/package.json +6 -6
|
@@ -64,6 +64,15 @@ export declare const WorkflowEventsCount: (value: number) => {
|
|
|
64
64
|
export declare const WorkflowExecutionMode: (value: "replay" | "retained") => {
|
|
65
65
|
[k: string]: "replay" | "retained";
|
|
66
66
|
};
|
|
67
|
+
/** Whether the compiled application workflow bundle was cached. */
|
|
68
|
+
export declare const WorkflowBundleCompileCacheHit: (value: boolean) => {
|
|
69
|
+
[k: string]: boolean;
|
|
70
|
+
};
|
|
71
|
+
/** Operation that supplied events to the current replay. */
|
|
72
|
+
export type WorkflowReplayLoadSource = 'run_started' | 'hook_preload' | 'events_list' | 'events_list_incremental';
|
|
73
|
+
export declare const WorkflowReplayLoadSource: (value: WorkflowReplayLoadSource) => {
|
|
74
|
+
[k: string]: WorkflowReplayLoadSource;
|
|
75
|
+
};
|
|
67
76
|
/**
|
|
68
77
|
* Events the replay walked past that no consumer claimed, still held when the
|
|
69
78
|
* replay stopped.
|
|
@@ -379,21 +388,46 @@ export declare const HookFound: (value: boolean) => {
|
|
|
379
388
|
* the resume is recovered via the consumer's re-ensure. Corresponds to
|
|
380
389
|
* `ResumedHook.resilientResume === true`.
|
|
381
390
|
*
|
|
382
|
-
* No longer emitted:
|
|
383
|
-
*
|
|
384
|
-
*
|
|
385
|
-
* still deployed.
|
|
391
|
+
* No longer emitted: current producers require the durable event write to
|
|
392
|
+
* succeed. Retained so dashboards and queries built on the attribute keep
|
|
393
|
+
* resolving while older producers are still deployed.
|
|
386
394
|
*/
|
|
387
395
|
export declare const HookResilientResume: (value: boolean) => {
|
|
388
396
|
[k: string]: boolean;
|
|
389
397
|
};
|
|
398
|
+
/**
|
|
399
|
+
* Producer-side signal (on the `hook.resume` span) that the durable
|
|
400
|
+
* `hook_received` write COMMITTED. Stamped after the write resolves, so it
|
|
401
|
+
* distinguishes a committed resume from an attempted one — an entry-time
|
|
402
|
+
* attribute cannot, because a span that later records an exception may have
|
|
403
|
+
* failed either before or after the commit.
|
|
404
|
+
*/
|
|
405
|
+
export declare const HookResumeCommitted: (value: boolean) => {
|
|
406
|
+
[k: string]: boolean;
|
|
407
|
+
};
|
|
408
|
+
/**
|
|
409
|
+
* Producer-side signal (on the `hook.resume` span) that the workflow wake was
|
|
410
|
+
* ACCEPTED by the queue, stamped after the publish resolves.
|
|
411
|
+
*
|
|
412
|
+
* Together with {@link HookResumeCommitted} this makes stranded resumes
|
|
413
|
+
* queryable: `resume_committed=true` with `wake_published` absent is a resume
|
|
414
|
+
* whose durable event exists but whose wake publish failed (the caller was
|
|
415
|
+
* told, but nothing re-drives it), and `resume_committed=true` +
|
|
416
|
+
* `wake_published=true` with no subsequent workflow execution for the run is
|
|
417
|
+
* a wake the queue accepted but never delivered. Both are detection-only
|
|
418
|
+
* signals — nothing recovers such a run automatically today beyond a later
|
|
419
|
+
* wake from any other source.
|
|
420
|
+
*/
|
|
421
|
+
export declare const HookWakePublished: (value: boolean) => {
|
|
422
|
+
[k: string]: boolean;
|
|
423
|
+
};
|
|
390
424
|
/**
|
|
391
425
|
* Consumer-side signal (on the workflow execution span) that this replay
|
|
392
426
|
* materialized the `hook_received` event from the queue message's `hookInput`
|
|
393
427
|
* because no committed event was found, which completes the recovery path
|
|
394
428
|
* {@link HookResilientResume} began.
|
|
395
429
|
*
|
|
396
|
-
* Legacy / non-atomic re-ensure signal only.
|
|
430
|
+
* Legacy / non-atomic re-ensure signal only. Legacy atomic lazy resumes
|
|
397
431
|
* (resumeId + digest) go through the hoisted preload write instead, whose
|
|
398
432
|
* response cannot tell whether the producer or the consumer won the
|
|
399
433
|
* `(runId, resumeId)` claim, so this attribute is deliberately NOT emitted
|
|
@@ -508,8 +542,8 @@ export declare const ResumeStrategy: (value: "lazy" | "parallel" | "sequential")
|
|
|
508
542
|
* hoisted-write outcome; this one is the TTR dimension and shares the metric's
|
|
509
543
|
* three-value vocabulary.
|
|
510
544
|
*/
|
|
511
|
-
export declare const ResumeSetupSource: (value: "
|
|
512
|
-
[k: string]: "
|
|
545
|
+
export declare const ResumeSetupSource: (value: "run_started" | "hook_preload" | "event_load") => {
|
|
546
|
+
[k: string]: "run_started" | "hook_preload" | "event_load";
|
|
513
547
|
};
|
|
514
548
|
/** Whether the measured step ran in the resuming invocation or a queued one. */
|
|
515
549
|
export declare const ResumeStepExecution: (value: "inline" | "dispatched") => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-conventions.d.ts","sourceRoot":"","sources":["../../src/telemetry/semantic-conventions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"semantic-conventions.d.ts","sourceRoot":"","sources":["../../src/telemetry/semantic-conventions.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,9 @@ 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
|
+
/** Whether the compiled application workflow bundle was cached. */
|
|
63
|
+
export const WorkflowBundleCompileCacheHit = SemanticConvention('workflow.bundle.compile.cache_hit');
|
|
64
|
+
export const WorkflowReplayLoadSource = SemanticConvention('workflow.replay.load.source');
|
|
62
65
|
/**
|
|
63
66
|
* Events the replay walked past that no consumer claimed, still held when the
|
|
64
67
|
* replay stopped.
|
|
@@ -255,19 +258,40 @@ export const HookFound = SemanticConvention('workflow.hook.found');
|
|
|
255
258
|
* the resume is recovered via the consumer's re-ensure. Corresponds to
|
|
256
259
|
* `ResumedHook.resilientResume === true`.
|
|
257
260
|
*
|
|
258
|
-
* No longer emitted:
|
|
259
|
-
*
|
|
260
|
-
*
|
|
261
|
-
* still deployed.
|
|
261
|
+
* No longer emitted: current producers require the durable event write to
|
|
262
|
+
* succeed. Retained so dashboards and queries built on the attribute keep
|
|
263
|
+
* resolving while older producers are still deployed.
|
|
262
264
|
*/
|
|
263
265
|
export const HookResilientResume = SemanticConvention('workflow.hook.resilient_resume');
|
|
266
|
+
/**
|
|
267
|
+
* Producer-side signal (on the `hook.resume` span) that the durable
|
|
268
|
+
* `hook_received` write COMMITTED. Stamped after the write resolves, so it
|
|
269
|
+
* distinguishes a committed resume from an attempted one — an entry-time
|
|
270
|
+
* attribute cannot, because a span that later records an exception may have
|
|
271
|
+
* failed either before or after the commit.
|
|
272
|
+
*/
|
|
273
|
+
export const HookResumeCommitted = SemanticConvention('workflow.hook.resume_committed');
|
|
274
|
+
/**
|
|
275
|
+
* Producer-side signal (on the `hook.resume` span) that the workflow wake was
|
|
276
|
+
* ACCEPTED by the queue, stamped after the publish resolves.
|
|
277
|
+
*
|
|
278
|
+
* Together with {@link HookResumeCommitted} this makes stranded resumes
|
|
279
|
+
* queryable: `resume_committed=true` with `wake_published` absent is a resume
|
|
280
|
+
* whose durable event exists but whose wake publish failed (the caller was
|
|
281
|
+
* told, but nothing re-drives it), and `resume_committed=true` +
|
|
282
|
+
* `wake_published=true` with no subsequent workflow execution for the run is
|
|
283
|
+
* a wake the queue accepted but never delivered. Both are detection-only
|
|
284
|
+
* signals — nothing recovers such a run automatically today beyond a later
|
|
285
|
+
* wake from any other source.
|
|
286
|
+
*/
|
|
287
|
+
export const HookWakePublished = SemanticConvention('workflow.hook.wake_published');
|
|
264
288
|
/**
|
|
265
289
|
* Consumer-side signal (on the workflow execution span) that this replay
|
|
266
290
|
* materialized the `hook_received` event from the queue message's `hookInput`
|
|
267
291
|
* because no committed event was found, which completes the recovery path
|
|
268
292
|
* {@link HookResilientResume} began.
|
|
269
293
|
*
|
|
270
|
-
* Legacy / non-atomic re-ensure signal only.
|
|
294
|
+
* Legacy / non-atomic re-ensure signal only. Legacy atomic lazy resumes
|
|
271
295
|
* (resumeId + digest) go through the hoisted preload write instead, whose
|
|
272
296
|
* response cannot tell whether the producer or the consumer won the
|
|
273
297
|
* `(runId, resumeId)` claim, so this attribute is deliberately NOT emitted
|
|
@@ -451,4 +475,4 @@ export const RpcMethod = SemanticConvention('rpc.method');
|
|
|
451
475
|
export const ErrorRetryable = SemanticConvention('error.retryable');
|
|
452
476
|
/** Error category (workflow-specific: fatal, retryable, transient) */
|
|
453
477
|
export const ErrorCategory = SemanticConvention('error.category');
|
|
454
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtY29udmVudGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsc0JBQXNCO0FBRXRCLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFeEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUVqRCxvQkFBb0IsQ0FBQyxDQUFDO0FBRXhCLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUUzRSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBRWpELHFCQUFxQixDQUFDLENBQUM7QUFFekIscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FDbkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRiw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtC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LE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLGtCQUFrQixDQUM3RCwwQ0FBMEMsQ0FDM0MsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLGtCQUFrQixDQUNoRSw4Q0FBOEMsQ0FDL0MsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLGtCQUFrQixDQUM3RCwyQ0FBMkMsQ0FDNUMsQ0FBQztBQUVGLHlFQUF5RTtBQUN6RSxrRUFBa0U7QUFFbEUsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUV0RSx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRWxFLG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQVMsYUFBYSxDQUFDLENBQUM7QUFFcEUsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBUyxZQUFZLENBQUMsQ0FBQztBQUVsRSxxREFBcUQ7QUFDckQsZ0ZBQWdGO0FBRWhGLHlEQUF5RDtBQUN6RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQVUsaUJBQWlCLENBQUMsQ0FBQztBQUU3RSxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUU3QyxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPcGVuVGVsZW1ldHJ5IHNlbWFudGljIGNvbnZlbnRpb25zIGZvciBWZXJjZWwgV29ya2Zsb3cgdGVsZW1ldHJ5LlxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHN0YW5kYXJkaXplZCB0ZWxlbWV0cnkgYXR0cmlidXRlcyBmb2xsb3dpbmcgT3BlblRlbGVtZXRyeSBzZW1hbnRpYyBjb252ZW50aW9uc1xuICogZm9yIGluc3RydW1lbnRpbmcgd29ya2Zsb3cgZXhlY3V0aW9uLCBzdGVwIHByb2Nlc3NpbmcsIGFuZCByZWxhdGVkIG9wZXJhdGlvbnMuIEVhY2ggZXhwb3J0ZWQgZnVuY3Rpb25cbiAqIGNyZWF0ZXMgYSBwcm9wZXJseSBmb3JtYXR0ZWQgYXR0cmlidXRlIG9iamVjdCBmb3IgdXNlIHdpdGggT3BlblRlbGVtZXRyeSBzcGFucy5cbiAqXG4gKiBUaGUgc2VtYW50aWMgY29udmVudGlvbnMgYXJlIG9yZ2FuaXplZCBpbnRvIHNldmVyYWwgY2F0ZWdvcmllczpcbiAqIC0gKipXb3JrZmxvdyBhdHRyaWJ1dGVzKio6IFRyYWNrIHdvcmtmbG93IGxpZmVjeWNsZSwgc3RhdHVzLCBhbmQgbWV0YWRhdGFcbiAqIC0gKipTdGVwIGF0dHJpYnV0ZXMqKjogTW9uaXRvciBpbmRpdmlkdWFsIHN0ZXAgZXhlY3V0aW9uLCByZXRyaWVzLCBhbmQgcmVzdWx0c1xuICogLSAqKlF1ZXVlIGF0dHJpYnV0ZXMqKjogSW5zdHJ1bWVudCBtZXNzYWdlIHF1ZXVlIG9wZXJhdGlvbnNcbiAqIC0gKipEZXBsb3ltZW50IGF0dHJpYnV0ZXMqKjogQ2FwdHVyZSBkZXBsb3ltZW50IGVudmlyb25tZW50IGluZm9ybWF0aW9uXG4gKlxuICogQWxsIGF0dHJpYnV0ZSBmdW5jdGlvbnMgYXJlIHR5cGUtc2FmZSBhbmQgdXNlIGV4aXN0aW5nIGJhY2tlbmQgdHlwZXMgdG8gZW5zdXJlXG4gKiBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRlbGVtZXRyeSBkYXRhIGFuZCBhY3R1YWwgc3lzdGVtIHN0YXRlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgKiBhcyBBdHRyaWJ1dGUgZnJvbSAnLi90ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnMuanMnO1xuICpcbiAqIC8vIFNldCB3b3JrZmxvdyBhdHRyaWJ1dGVzIG9uIGEgc3BhblxuICogc3Bhbi5zZXRBdHRyaWJ1dGVzKHtcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93TmFtZSgnbXktd29ya2Zsb3cnKSxcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93T3BlcmF0aW9uKCdzdGFydCcpLFxuICogICAuLi5BdHRyaWJ1dGUuV29ya2Zsb3dSdW5TdGF0dXMoJ3J1bm5pbmcnKSxcbiAqIH0pO1xuICpcbiAqIC8vIFNldCBzdGVwIGF0dHJpYnV0ZXNcbiAqIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwTmFtZSgncHJvY2Vzcy1kYXRhJyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwU3RhdHVzKCdjb21wbGV0ZWQnKSxcbiAqICAgLi4uQXR0cmlidXRlLlN0ZXBBdHRlbXB0KDEpLFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L30gT3BlblRlbGVtZXRyeSBTZW1hbnRpYyBDb252ZW50aW9uc1xuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlSWQsIFN0ZXAsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2VtYW50aWMgY29udmVudGlvbiBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYXR0cmlidXRlIG9iamVjdC5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIGF0dHJpYnV0ZSBuYW1lIGZvbGxvd2luZyBPcGVuVGVsZW1ldHJ5IHNlbWFudGljIGNvbnZlbnRpb25zXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSB2YWx1ZSBhbmQgcmV0dXJucyBhbiBhdHRyaWJ1dGUgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIFNlbWFudGljQ29udmVudGlvbjxUPiguLi5uYW1lczogc3RyaW5nW10pIHtcbiAgcmV0dXJuICh2YWx1ZTogVCkgPT5cbiAgICBPYmplY3QuZnJvbUVudHJpZXMobmFtZXMubWFwKChuYW1lKSA9PiBbbmFtZSwgdmFsdWVdIGFzIGNvbnN0KSk7XG59XG5cbi8vIFdvcmtmbG93IGF0dHJpYnV0ZXNcblxuLyoqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvdyBiZWluZyBleGVjdXRlZCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93TmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5uYW1lJyk7XG5cbi8qKiBUaGUgb3BlcmF0aW9uIGJlaW5nIHBlcmZvcm1lZCBvbiB0aGUgd29ya2Zsb3cgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd09wZXJhdGlvbiA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ3N0YXJ0JyB8ICdleGVjdXRlJyB8ICdleGVjdXRlX3YyJyB8ICdydW4nXG4+KCd3b3JrZmxvdy5vcGVyYXRpb24nKTtcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIHNwZWNpZmljIHdvcmtmbG93IHJ1biBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cucnVuLmlkJyk7XG5cbi8qKiBDdXJyZW50IHN0YXR1cyBvZiB0aGUgd29ya2Zsb3cgcnVuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSdW5TdGF0dXMgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gIFdvcmtmbG93UnVuWydzdGF0dXMnXSB8ICd3b3JrZmxvd19zdXNwZW5kZWQnXG4+KCd3b3JrZmxvdy5ydW4uc3RhdHVzJyk7XG5cbi8qKiBUaW1lc3RhbXAgd2hlbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uIHN0YXJ0ZWQgKFVuaXggdGltZXN0YW1wKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3RhcnRlZEF0ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdGFydGVkX2F0J1xuKTtcblxuLyoqIE51bWJlciBvZiBldmVudHMgcHJvY2Vzc2VkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0V2ZW50c0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ldmVudHMuY291bnQnXG4pO1xuXG4vKiogV2hldGhlciB3b3JrZmxvdyBleGVjdXRpb24gc3RhcnRzIHdpdGggcmVwbGF5IG9yIHJlc3VtZXMgYSByZXRhaW5lZCBWTSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXhlY3V0aW9uTW9kZSA9IFNlbWFudGljQ29udmVudGlvbjwncmVwbGF5JyB8ICdyZXRhaW5lZCc+KFxuICAnd29ya2Zsb3cuZXhlY3V0aW9uLm1vZGUnXG4pO1xuXG4vKipcbiAqIEV2ZW50cyB0aGUgcmVwbGF5IHdhbGtlZCBwYXN0IHRoYXQgbm8gY29uc3VtZXIgY2xhaW1lZCwgc3RpbGwgaGVsZCB3aGVuIHRoZVxuICogcmVwbGF5IHN0b3BwZWQuXG4gKlxuICogQSBub24temVybyBjb3VudCBvbiBhIHN1c3BlbnNpb24gaXMgb3JkaW5hcnk6IGFuIG91dC1vZi1iYW5kIGRlbGl2ZXJ5IHRoYXRcbiAqIGxhbmRlZCBhaGVhZCBvZiB0aGUgY29kZSB0aGF0IHJlYWRzIGl0IHdhaXRzIGZvciB0aGUgcmVwbGF5IHRoYXQgZ2V0cyB0aGVyZS5cbiAqIEZyb20gaW5zaWRlIG9uZSByZXBsYXkgdGhhdCBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGV2ZW50IG5vIHJlcGxheSB3aWxsXG4gKiBldmVyIGNsYWltLCBiZWNhdXNlIHRoZSB0d28gZGlmZmVyIG9ubHkgaW4gd2hhdCB0aGUgbmV4dCByZXBsYXkgZG9lcy4gU28gdGhlXG4gKiBjb3VudCBnb2VzIG9uIHRoZSBzcGFuIGluc3RlYWQgb2YgZmFpbGluZyB0aGUgcnVuLCBhbmQgdGhlIGNhc2Ugd29ydGggYWN0aW5nXG4gKiBvbiBpcyBhIHF1ZXJ5IGFjcm9zcyBhIHJ1bidzIHNwYW5zOiB0aGUgc2FtZVxuICoge0BsaW5rIFdvcmtmbG93UGFya2VkRXZlbnRJZH0gaGVsZCBvbiBzdXNwZW5zaW9uIGFmdGVyIHN1c3BlbnNpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1BhcmtlZEV2ZW50c0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ldmVudHMucGFya2VkLmNvdW50J1xuKTtcblxuLyoqIE9sZGVzdCBldmVudCBzdGlsbCBoZWxkIHVuY2xhaW1lZCB3aGVuIHRoZSByZXBsYXkgc3RvcHBlZC4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1BhcmtlZEV2ZW50SWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmV2ZW50cy5wYXJrZWQuZXZlbnRfaWQnXG4pO1xuXG4vKiogVHlwZSBvZiB0aGUgb2xkZXN0IGV2ZW50IHN0aWxsIGhlbGQgdW5jbGFpbWVkIHdoZW4gdGhlIHJlcGxheSBzdG9wcGVkLiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UGFya2VkRXZlbnRUeXBlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5ldmVudHMucGFya2VkLmV2ZW50X3R5cGUnXG4pO1xuXG4vKiogTnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHdvcmtmbG93ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dBcmd1bWVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuYXJndW1lbnRzLmNvdW50J1xuKTtcblxuLyoqIFR5cGUgb2YgdGhlIHdvcmtmbG93IHJlc3VsdCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UmVzdWx0VHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cucmVzdWx0LnR5cGUnXG4pO1xuXG4vKiogV2hldGhlciB0cmFjZSBjb250ZXh0IHdhcyBwcm9wYWdhdGVkIHRvIHRoaXMgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUcmFjZVByb3BhZ2F0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy50cmFjZS5wcm9wYWdhdGVkJ1xuKTtcblxuLy8gUXVpY2tKUyBWTSBlbmdpbmUgYXR0cmlidXRlc1xuXG4vKiogVGhlIFZNIGVuZ2luZSBleGVjdXRpbmcgdGhlIHdvcmtmbG93IGZ1bmN0aW9uIGZvciB0aGlzIGludm9jYXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1ZtID0gU2VtYW50aWNDb252ZW50aW9uPCdub2RlJyB8ICdxdWlja2pzJz4oJ3dvcmtmbG93LnZtJyk7XG5cbi8qKiBPdXRjb21lIG9mIGEgUXVpY2tKUyBWTSB3b3JrZmxvdyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU091dGNvbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdjb21wbGV0ZWQnIHwgJ3N1c3BlbmRlZCcgfCAnZmFpbGVkJ1xuPignd29ya2Zsb3cudm0ub3V0Y29tZScpO1xuXG4vKiogV2hldGhlciBwcmVsb2FkZWQgZXZlbnRzIGZyb20gYGV2ZW50cy5jcmVhdGUoJ3J1bl9zdGFydGVkJylgIHdlcmUgdXNlZCAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNFdmVudHNQcmVsb2FkZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy52bS5ldmVudHMucHJlbG9hZGVkJ1xuKTtcblxuLyoqIFRvdGFsIG51bWJlciBvZiBldmVudHMgZmV0Y2hlZCBmcm9tIHRoZSB3b3JsZCBmb3IgdGhpcyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU0V2ZW50c0ZldGNoZWRDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cudm0uZXZlbnRzLmZldGNoZWRfY291bnQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHBhZ2VzIHJlcXVpcmVkIHRvIGZldGNoIGFsbCBldmVudHMgKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTRXZlbnRzRmV0Y2hlZFBhZ2VzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy52bS5ldmVudHMuZmV0Y2hlZF9wYWdlcydcbik7XG5cbi8qKiBOdW1iZXIgb2YgcGVuZGluZyBWTSBvcGVyYXRpb25zIGNhcHR1cmVkIGF0IHN1c3BlbnNpb24gKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTUGVuZGluZ09wc0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy52bS5wZW5kaW5nX29wc19jb3VudCdcbik7XG5cbi8qKiBOdW1iZXIgb2Ygc3RlcHMgZXhlY3V0ZWQgaW5saW5lIChsaXZlLVZNIGNvbnRpbnVhdGlvbikgdGhpcyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU0lubGluZVN0ZXBzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdxdWlja2pzLmlubGluZV9zdGVwcydcbik7XG5cbi8qKiBBY3RpdmUgdHJhY2UtY29ycmVsYXRpb24gbW9kZSBmb3IgdGhpcyBpbnZvY2F0aW9uIChsaW5rZWQgb3IgY29udGludW91cykgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1RyYWNlTW9kZSA9IFNlbWFudGljQ29udmVudGlvbjwnbGlua2VkJyB8ICdjb250aW51b3VzJz4oXG4gICd3b3JrZmxvdy50cmFjZS5tb2RlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhpcyB3b3JrZmxvdyBpbnZvY2F0aW9uIGlzIHVzaW5nIHRoZSB0dXJibyBmaXJzdC1kZWxpdmVyeSBwYXRoICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUdXJibyA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignd29ya2Zsb3cudHVyYm8nKTtcblxuLyoqIE5hbWUgb2YgdGhlIGVycm9yIHRoYXQgY2F1c2VkIHdvcmtmbG93IGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubmFtZSdcbik7XG5cbi8qKiBFcnJvciBtZXNzYWdlIHdoZW4gd29ya2Zsb3cgZmFpbHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTWVzc2FnZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubWVzc2FnZSdcbik7XG5cbi8qKiBFcnJvciBjbGFzc2lmaWNhdGlvbiBjb2RlIChVU0VSX0VSUk9SLCBSVU5USU1FX0VSUk9SLCBldGMuKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXJyb3JDb2RlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5lcnJvci5jb2RlJ1xuKTtcblxuLyoqIE51bWJlciBvZiBzdGVwcyBjcmVhdGVkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0ZXBzQ3JlYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RlcHMuY3JlYXRlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgaG9va3MgY3JlYXRlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dIb29rc0NyZWF0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93Lmhvb2tzLmNyZWF0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHdhaXRzIGNyZWF0ZWQgZHVyaW5nIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93V2FpdHNDcmVhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy53YWl0cy5jcmVhdGVkJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2Ygc3RlcHMgdGhpcyBzdXNwZW5zaW9uIGZpbmFsaXplZCBhcyBmYWlsZWQgYmVjYXVzZSB0aGVpclxuICogYXJndW1lbnRzIHJlZnVzZWQgdG8gc2VyaWFsaXplIChzdGVwX2NyZWF0ZWQgcGxhY2Vob2xkZXIgKyBzdGVwX2ZhaWxlZFxuICogY2FycnlpbmcgdGhlIFNlcmlhbGl6YXRpb25FcnJvcjsgc2VlIGZpbmFsaXplVW5zZXJpYWxpemFibGVTdGVwKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3RlcHNGYWlsZWRTZXJpYWxpemF0aW9uID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdGVwcy5mYWlsZWRfc2VyaWFsaXphdGlvbidcbik7XG5cbi8qKlxuICogTnVtYmVyIG9mIGlubGluZS1vd25lZCBzdGVwcyB0aGlzIGludm9jYXRpb24gcmUtZXhlY3V0ZWQgYmVjYXVzZSBpdCBpcyBhXG4gKiByZWRlbGl2ZXJ5IG9mIHRoZWlyIG93bmluZyBxdWV1ZSBtZXNzYWdlIChjcmFzaCByZWNvdmVyeSBmb3IgaW5saW5lXG4gKiBzdGVwczsgc2VlIHRoZSBpbmxpbmUgc3RlcCBvd25lcnNoaXAgY2hhbmdlbG9nLCB3b3JrZmxvdyMyNzgwKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93T3duZWRSZWNvdmVyeVN0ZXBzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5pbmxpbmVfb3duZXJzaGlwLm93bmVkX3JlY292ZXJ5X3N0ZXBzJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2YgcGVuZGluZyBzdGVwcyBmb3Igd2hpY2ggdGhpcyByZXBsYXkgc3VwcHJlc3NlZCB0aGUgaW1tZWRpYXRlXG4gKiByZXF1ZXVlIChhbm90aGVyIGludm9jYXRpb24gaW5saW5lLW93bnMgdGhlbSB1bmRlciBhIGxpdmUgbGVhc2UpIGFuZFxuICogZW5zdXJlZCBhIGRlbGF5ZWQgYmFja3N0b3Agd2FrZSBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dCYWNrc3RvcFdha2VzQXJtZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmlubGluZV9vd25lcnNoaXAuYmFja3N0b3Bfd2FrZXNfYXJtZWQnXG4pO1xuXG4vLyBSb3V0ZSBhdHRyaWJ1dGVzXG5cbi8qKiBUaGUgd29ya2Zsb3cgcnVudGltZSByb3V0ZSBiZWluZyBoYW5kbGVkICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZVR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248J2Zsb3cnPihcbiAgJ3dvcmtmbG93LnJvdXRlLnR5cGUnXG4pO1xuXG4vKiogV2hldGhlciB0aGlzIHJvdXRlIGludm9jYXRpb24gcmV1c2VkIGFuIGFscmVhZHktY3JlYXRlZCByZXF1ZXN0IGhhbmRsZXIgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlSGFuZGxlckNhY2hlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnJvdXRlLmhhbmRsZXJfY2FjaGVkJ1xuKTtcblxuLyoqIE51bWJlciBvZiB0aW1lcyB0aGlzIGluLW1lbW9yeSByb3V0ZSBoYW5kbGVyIGhhcyBiZWVuIGludm9rZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlSW52b2NhdGlvbkNvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5pbnZvY2F0aW9uX2NvdW50J1xuKTtcblxuLyoqIFRpbWUgc2luY2UgdGhpcyByb3V0ZSBlbnRyeXBvaW50IHdhcyBjb25zdHJ1Y3RlZCwgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZUVudHJ5cG9pbnRBZ2VNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucm91dGUuZW50cnlwb2ludF9hZ2VfbXMnXG4pO1xuXG4vKiogVGltZSBzcGVudCBldmFsdWF0aW5nIHRoZSBnZW5lcmF0ZWQgcm91dGUgbW9kdWxlIGJvZHkgYmVmb3JlIGNyZWF0aW5nIHRoZSBlbnRyeXBvaW50ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZU1vZHVsZUJvZHlJbml0TXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJvdXRlLm1vZHVsZV9ib2R5X2luaXRfbXMnXG4pO1xuXG4vKipcbiAqIENvbXB1dGUgaW5zdGFuY2UgaGFuZGxpbmcgdGhpcyByb3V0ZTogdGhlIHN5bnRoZXNpemVkIGBDT01QVVRFX0lOU1RBTkNFX0lEYC5cbiAqIFVzZXMgT1RFTCBgZmFhcy5pbnN0YW5jZWAgKGV4ZWN1dGlvbi1lbnZpcm9ubWVudCBpZCwgcmV1c2VkIGFjcm9zc1xuICogaW52b2NhdGlvbnMgdG8gdGhlIHNhbWUgZnVuY3Rpb24pOlxuICogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9hdHRyaWJ1dGVzLXJlZ2lzdHJ5L2ZhYXMvXG4gKi9cbmV4cG9ydCBjb25zdCBGYWFzSW5zdGFuY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignZmFhcy5pbnN0YW5jZScpO1xuXG4vLyBTdGVwIGF0dHJpYnV0ZXNcblxuLyoqIE5hbWUgb2YgdGhlIHN0ZXAgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQgKi9cbmV4cG9ydCBjb25zdCBTdGVwTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLm5hbWUnKTtcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc3RlcCBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLmlkJyk7XG5cbi8qKiBDdXJyZW50IGF0dGVtcHQgbnVtYmVyIGZvciBzdGVwIGV4ZWN1dGlvbiAoc3RhcnRzIGF0IDEpICovXG5leHBvcnQgY29uc3QgU3RlcEF0dGVtcHQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC5hdHRlbXB0Jyk7XG5cbi8qKiBDdXJyZW50IHN0YXR1cyBvZiB0aGUgc3RlcCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTdGF0dXMgPSBTZW1hbnRpY0NvbnZlbnRpb248U3RlcFsnc3RhdHVzJ10+KCdzdGVwLnN0YXR1cycpO1xuXG4vKiogTWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyBhbGxvd2VkIGZvciB0aGlzIHN0ZXAgKi9cbmV4cG9ydCBjb25zdCBTdGVwTWF4UmV0cmllcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLm1heF9yZXRyaWVzJyk7XG5cbi8qKiBXaGV0aGVyIHRyYWNlIGNvbnRleHQgd2FzIHByb3BhZ2F0ZWQgdG8gdGhpcyBzdGVwIGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBUcmFjZVByb3BhZ2F0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICdzdGVwLnRyYWNlLnByb3BhZ2F0ZWQnXG4pO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCB0aW1lLXRvLWZpcnN0LXN0ZXAgbGF0ZW5jeSBpbiBtaWxsaXNlY29uZHM6IHJ1biBjcmVhdGlvbiDihpJcbiAqIHRoaXMgc3RlcCdzIGJvZHkgYmVnaW5uaW5nIHRvIGV4ZWN1dGUsIG1pbnVzIHByZS1zdGVwIGhvb2stY3JlYXRpb24gdGltZS5cbiAqIE9ubHkgcHJlc2VudCBvbiB0aGUgcnVuJ3MgZmlyc3Qgc3RlcCBleGVjdXRpb24gd2hlbiBpdCBxdWFsaWZpZWQgZm9yXG4gKiBtZWFzdXJlbWVudCAoc2VlIHJ1bnRpbWUvc3RlcC1sYXRlbmN5LnRzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBUdGZzTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC50dGZzX21zJyk7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHN0ZXAtdG8tc3RlcCBvdmVyaGVhZCBpbiBtaWxsaXNlY29uZHM6IHRoZSBwcmV2aW91cyBzdGVwJ3NcbiAqIHRlcm1pbmFsIGV2ZW50IOKGkiB0aGlzIHN0ZXAncyBib2R5IGJlZ2lubmluZyB0byBleGVjdXRlLiBPbmx5IHByZXNlbnQgd2hlblxuICogdGhlIHR3byBzdGVwcyByYW4gYmFjay10by1iYWNrLlxuICovXG5leHBvcnQgY29uc3QgU3RlcFN0c29NcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLnN0c29fbXMnKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgcnVuX3N0YXJ0ZWQtdG8tZmlyc3Qtc3RlcCBsYXRlbmN5IGluIG1pbGxpc2Vjb25kczogdGhlXG4gKiBgcnVuX3N0YXJ0ZWRgIHJlc3BvbnNlIGxhbmRpbmcgKG9yLCB1bmRlciB0dXJibywgdGhlIGxvY2FsIHJ1biBzeW50aGVzaXNcbiAqIGluc3RhbnQpIOKGkiB0aGlzIHN0ZXAncyBzdGFydCBQT1NUIGJlaW5nIGlzc3VlZC4gQSBzdWItd2luZG93IG9mIHR0ZnMgdGhhdFxuICogaXNvbGF0ZXMgcmVwbGF5IG92ZXJoZWFkIGZyb20gdGhlIHJ1bi1jcmVhdGlvbiBxdWV1ZSBob3AuIE9ubHkgcHJlc2VudCBvblxuICogdGhlIHJ1bidzIGZpcnN0IHN0ZXAgZXhlY3V0aW9uIHdoZW4gaXQgcXVhbGlmaWVkIGZvciBtZWFzdXJlbWVudCAoc2VlXG4gKiBydW50aW1lL3N0ZXAtbGF0ZW5jeS50cykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwUnNmc01zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAucnNmc19tcycpO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCBzeW5jaHJvbm91cyB3b3JrZmxvdy1mdW5jdGlvbiByZXBsYXkgZHVyYXRpb24gaW5cbiAqIG1pbGxpc2Vjb25kcywgZXhjbHVkaW5nIGF3YWl0ZWQgbmV0d29yayBJL08sIG9mIG9ubHkgdGhlIEZJTkFMIHJlcGxheSBwYXNzXG4gKiB3aXRoaW4gdGhlIHJzZnMgd2luZG93OiB0aGUgcGFzcyB0aGF0IHJlYWNoZWQgYW5kIHNjaGVkdWxlZCB0aGUgZmlyc3RcbiAqIHN0ZXAuIE5vdCBhY2N1bXVsYXRlZCBhY3Jvc3MgZWFybGllciBwcmUtZmlyc3Qtc3RlcCBwYXNzZXMgKGUuZy4gYVxuICogd29ya2Zsb3ctYm9keSBgc2V0QXR0cmlidXRlcygpYCBkZXRvdXIgcmVwbGF5cyBtb3JlIHRoYW4gb25jZSwgYW5kIGFcbiAqIHJlZGVsaXZlcnkgb21pdHMgZWFybGllciBpbnZvY2F0aW9ucycgd29yayBlbnRpcmVseSksIHNvIHRoaXMgbXVzdCBub3QgYmVcbiAqIHJlYWQgYXMgXCJ0aGUgcmVwbGF5IHBvcnRpb24gb2YgcnNmc1wiOyBzdGVwLnJzZnNfbXMgY292ZXJzIHRoZSB3aG9sZVxuICogd2luZG93LiBPbmx5IHByZXNlbnQgYWxvbmdzaWRlIHN0ZXAucnNmc19tcyBhbmQgb25seSBmb3IgdGhlIHJ1bidzIGZpcnN0XG4gKiBzdGVwIChzZWUgcnVudGltZS9zdGVwLWxhdGVuY3kudHMpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcEZpbmFsU2NoZWR1bGluZ1JlcGxheU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdzdGVwLmZpbmFsX3NjaGVkdWxpbmdfcmVwbGF5X21zJ1xuKTtcblxuLyoqXG4gKiBSdW50aW1lIHN0YXJ0dXAtbGF0ZW5jeSBvcHRpbWl6YXRpb25zIGFjdGl2ZSBmb3IgdGhlIHR0ZnMvc3RzbyBtZWFzdXJlbWVudFxuICogKGUuZy4gJ3R1cmJvJywgJ2xhenlTdGVwU3RhcnQnLCAnb3B0aW1pc3RpY1N0YXJ0JykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwTGF0ZW5jeU9wdGltaXphdGlvbnMgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nW10+KFxuICAnc3RlcC5sYXRlbmN5X29wdGltaXphdGlvbnMnXG4pO1xuXG4vKiogV2hldGhlciB0aGUgc3RlcCB3YXMgc2tpcHBlZCBkdXJpbmcgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgU3RlcFNraXBwZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3N0ZXAuc2tpcHBlZCcpO1xuXG4vKiogUmVhc29uIHdoeSB0aGUgc3RlcCB3YXMgc2tpcHBlZCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTa2lwUmVhc29uID1cbiAgU2VtYW50aWNDb252ZW50aW9uPFN0ZXBbJ3N0YXR1cyddPignc3RlcC5za2lwX3JlYXNvbicpO1xuXG4vKiogTnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHN0ZXAgZnVuY3Rpb24gKi9cbmV4cG9ydCBjb25zdCBTdGVwQXJndW1lbnRzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3N0ZXAuYXJndW1lbnRzLmNvdW50J1xuKTtcblxuLyoqIFR5cGUgb2YgdGhlIHN0ZXAgcmVzdWx0ICovXG5leHBvcnQgY29uc3QgU3RlcFJlc3VsdFR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5yZXN1bHQudHlwZScpO1xuXG4vKiogTmFtZSBvZiB0aGUgZXJyb3IgdGhhdCBjYXVzZWQgc3RlcCBmYWlsdXJlICovXG5leHBvcnQgY29uc3QgU3RlcEVycm9yTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLmVycm9yLm5hbWUnKTtcblxuLyoqIEVycm9yIG1lc3NhZ2Ugd2hlbiBzdGVwIGZhaWxzICovXG5leHBvcnQgY29uc3QgU3RlcEVycm9yTWVzc2FnZSA9XG4gIFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLmVycm9yLm1lc3NhZ2UnKTtcblxuLyoqIFdoZXRoZXIgdGhlIHN0ZXAgZmFpbGVkIHdpdGggYSBmYXRhbCBlcnJvciAobm8gcmV0cmllcykgKi9cbmV4cG9ydCBjb25zdCBTdGVwRmF0YWxFcnJvciA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignc3RlcC5mYXRhbF9lcnJvcicpO1xuXG4vKiogV2hldGhlciBhbGwgcmV0cnkgYXR0ZW1wdHMgaGF2ZSBiZWVuIGV4aGF1c3RlZCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXRyeUV4aGF1c3RlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3N0ZXAucmV0cnkuZXhoYXVzdGVkJ1xuKTtcblxuLyoqIE51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIG5leHQgcmV0cnkgYXR0ZW1wdCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXRyeVRpbWVvdXRTZWNvbmRzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdzdGVwLnJldHJ5LnRpbWVvdXRfc2Vjb25kcydcbik7XG5cbi8qKiBXaGV0aGVyIHRoZSBzdGVwIHdpbGwgYmUgcmV0cmllZCBhZnRlciB0aGlzIGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmV0cnlXaWxsUmV0cnkgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICdzdGVwLnJldHJ5LndpbGxfcmV0cnknXG4pO1xuXG4vLyBRdWV1ZS9NZXNzYWdpbmcgYXR0cmlidXRlcyAtIFN0YW5kYXJkIE9URUwgbWVzc2FnaW5nIGNvbnZlbnRpb25zXG4vLyBTZWU6IGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvbWVzc2FnaW5nL21lc3NhZ2luZy1zcGFucy9cblxuLyoqIE1lc3NhZ2luZyBzeXN0ZW0gaWRlbnRpZmllciAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLnN5c3RlbSkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdTeXN0ZW0gPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignbWVzc2FnaW5nLnN5c3RlbScpO1xuXG4vKiogRGVzdGluYXRpb24gbmFtZS9xdWV1ZSBuYW1lIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcuZGVzdGluYXRpb24ubmFtZSkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdEZXN0aW5hdGlvbk5hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ21lc3NhZ2luZy5kZXN0aW5hdGlvbi5uYW1lJ1xuKTtcblxuLyoqIFRoZSBtZXNzYWdlIGlkIGJlaW5nIGhhbmRsZWQgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5tZXNzYWdlLmlkKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ01lc3NhZ2VJZCA9IFNlbWFudGljQ29udmVudGlvbjxNZXNzYWdlSWQ+KFxuICAnbWVzc2FnaW5nLm1lc3NhZ2UuaWQnXG4pO1xuXG4vKiogT3BlcmF0aW9uIHR5cGUgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5vcGVyYXRpb24udHlwZSkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdPcGVyYXRpb25UeXBlID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAncHVibGlzaCcgfCAncmVjZWl2ZScgfCAncHJvY2Vzcydcbj4oJ21lc3NhZ2luZy5vcGVyYXRpb24udHlwZScpO1xuXG4vKiogVGltZSB0YWtlbiB0byBlbnF1ZXVlIHRoZSBtZXNzYWdlIGluIG1pbGxpc2Vjb25kcyAod29ya2Zsb3ctc3BlY2lmaWMpICovXG5leHBvcnQgY29uc3QgUXVldWVPdmVyaGVhZE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5vdmVyaGVhZF9tcydcbik7XG5cbi8vIERlcGxveW1lbnQgYXR0cmlidXRlc1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50ICovXG5leHBvcnQgY29uc3QgRGVwbG95bWVudElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ2RlcGxveW1lbnQuaWQnKTtcblxuLyoqIFRoZSBkZXBsb3ltZW50IGEgcnVuIGlzIHBpbm5lZCB0bywgc2V0IG9ubHkgb24gYSBtaXNyb3V0ZWQgZGVsaXZlcnkuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSdW5QaW5uZWREZXBsb3ltZW50SWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmRlcGxveW1lbnQucGlubmVkX2lkJ1xuKTtcblxuLyoqIFJlLXJvdXRlIGF0dGVtcHRzIGZvciB0aGlzIG1pc3JvdXRlZCBkZWxpdmVyeSwgaW5jbHVkaW5nIHRoaXMgb25lLiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RGVwbG95bWVudE1pc21hdGNoUmV0cnlDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZGVwbG95bWVudF9taXNtYXRjaC5yZXRyeV9jb3VudCdcbik7XG5cbi8qKiBXaGV0aGVyIHRoZSBtaXNyb3V0ZWQgZGVsaXZlcnkgd2FzIHJlLXJvdXRlZCBpbnN0ZWFkIG9mIGZhaWxpbmcgdGhlIHJ1bi4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0RlcGxveW1lbnRNaXNtYXRjaFJlY292ZXJlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LmRlcGxveW1lbnRfbWlzbWF0Y2gucmVjb3ZlcmVkJ1xuKTtcblxuLy8gSG9vayBhdHRyaWJ1dGVzXG5cbi8qKiBUb2tlbiBpZGVudGlmeWluZyBhIHNwZWNpZmljIGhvb2sgKi9cbmV4cG9ydCBjb25zdCBIb29rVG9rZW4gPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cuaG9vay50b2tlbicpO1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgaG9vayBpbnN0YW5jZSAqL1xuZXhwb3J0IGNvbnN0IEhvb2tJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5ob29rLmlkJyk7XG5cbi8qKiBXaGV0aGVyIGEgaG9vayB3YXMgZm91bmQgYnkgaXRzIHRva2VuICovXG5leHBvcnQgY29uc3QgSG9va0ZvdW5kID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCd3b3JrZmxvdy5ob29rLmZvdW5kJyk7XG5cbi8qKlxuICogUHJvZHVjZXItc2lkZSBzaWduYWwgKG9uIHRoZSBgaG9vay5yZXN1bWVgIHNwYW4pIHRoYXQgdGhlIGRpcmVjdFxuICogYGhvb2tfcmVjZWl2ZWRgIHdyaXRlIGZhaWxlZCB0cmFuc2llbnRseSBidXQgdGhlIHF1ZXVlIGRpc3BhdGNoIHN1Y2NlZWRlZCwgc29cbiAqIHRoZSByZXN1bWUgaXMgcmVjb3ZlcmVkIHZpYSB0aGUgY29uc3VtZXIncyByZS1lbnN1cmUuIENvcnJlc3BvbmRzIHRvXG4gKiBgUmVzdW1lZEhvb2sucmVzaWxpZW50UmVzdW1lID09PSB0cnVlYC5cbiAqXG4gKiBObyBsb25nZXIgZW1pdHRlZDogdGhlIGxhenkgcGF0aCB3cml0ZXMgbm8gZXZlbnQgdG8gZmFpbCwgYW5kIHRoZSBzZXF1ZW50aWFsXG4gKiBwYXRoIGhhcyBubyBxdWV1ZS1kZWxpdmVyZWQgcGF5bG9hZCB0byByZWNvdmVyIGZyb20uIFJldGFpbmVkIHNvIGRhc2hib2FyZHNcbiAqIGFuZCBxdWVyaWVzIGJ1aWx0IG9uIHRoZSBhdHRyaWJ1dGUga2VlcCByZXNvbHZpbmcgd2hpbGUgb2xkZXIgcHJvZHVjZXJzIGFyZVxuICogc3RpbGwgZGVwbG95ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBIb29rUmVzaWxpZW50UmVzdW1lID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cuaG9vay5yZXNpbGllbnRfcmVzdW1lJ1xuKTtcblxuLyoqXG4gKiBDb25zdW1lci1zaWRlIHNpZ25hbCAob24gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzcGFuKSB0aGF0IHRoaXMgcmVwbGF5XG4gKiBtYXRlcmlhbGl6ZWQgdGhlIGBob29rX3JlY2VpdmVkYCBldmVudCBmcm9tIHRoZSBxdWV1ZSBtZXNzYWdlJ3MgYGhvb2tJbnB1dGBcbiAqIGJlY2F1c2Ugbm8gY29tbWl0dGVkIGV2ZW50IHdhcyBmb3VuZCwgd2hpY2ggY29tcGxldGVzIHRoZSByZWNvdmVyeSBwYXRoXG4gKiB7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZX0gYmVnYW4uXG4gKlxuICogTGVnYWN5IC8gbm9uLWF0b21pYyByZS1lbnN1cmUgc2lnbmFsIG9ubHkuIEF0b21pYyBsYXp5IHJlc3VtZXNcbiAqIChyZXN1bWVJZCArIGRpZ2VzdCkgZ28gdGhyb3VnaCB0aGUgaG9pc3RlZCBwcmVsb2FkIHdyaXRlIGluc3RlYWQsIHdob3NlXG4gKiByZXNwb25zZSBjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSBwcm9kdWNlciBvciB0aGUgY29uc3VtZXIgd29uIHRoZVxuICogYChydW5JZCwgcmVzdW1lSWQpYCBjbGFpbSwgc28gdGhpcyBhdHRyaWJ1dGUgaXMgZGVsaWJlcmF0ZWx5IE5PVCBlbWl0dGVkXG4gKiBmb3IgdGhlbSAoZW1pdHRpbmcgYHRydWVgIHVuY29uZGl0aW9uYWxseSB3b3VsZCBjb3VudCBldmVyeSBwcm9kdWNlci13b25cbiAqIHJlc3VtZSBhcyBhIHJlY292ZXJ5KS4gVGhlIHByb2R1Y2VyLWJlZ2luICh7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZX0pIC9cbiAqIGNvbnN1bWVyLW1hdGVyaWFsaXplZCBwYWlyaW5nIGlzIHRoZXJlZm9yZSBubyBsb25nZXIgY29tcGxldGUgZm9yIGF0b21pY1xuICogbGF6eSByZXN1bXB0aW9uczsgdXNlIHtAbGluayBIb29rUmVzdW1lU2V0dXBTb3VyY2V9IHRvIG9ic2VydmUgdGhhdCBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgSG9va1Jlc2lsaWVudFJlc3VtZU1hdGVyaWFsaXplZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93Lmhvb2sucmVzaWxpZW50X3Jlc3VtZV9tYXRlcmlhbGl6ZWQnXG4pO1xuXG4vKipcbiAqIENvbnN1bWVyLXNpZGUgc2lnbmFsIChvbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uIHNwYW4pIG9mIGhvdyBhIGxhenkgaG9va1xuICogcmVzdW1lIGluaXRpYWxpemVkIGl0cyByZXBsYXkgc3RhdGU6XG4gKlxuICogLSBgaG9va19yZWNlaXZlZF9zdHJlYW1gOiB0aGUgaG9pc3RlZCBgaG9va19yZWNlaXZlZGAgd3JpdGUgcmV0dXJuZWQgYVxuICogICB1c2FibGUgcmVwbGF5IHByZWxvYWQgKHJ1biArIGNvbXBsZXRlIGV2ZW50IGxvZyksIHNvIHRoZSBpbnZvY2F0aW9uXG4gKiAgIHNraXBwZWQgYm90aCB0aGUgYHJ1bl9zdGFydGVkYCB3cml0ZSBhbmQgdGhlIGluaXRpYWwgYGV2ZW50cy5saXN0YC5cbiAqIC0gYGhvb2tfcmVjZWl2ZWRfZmFsbGJhY2tgOiB0aGUgaG9pc3RlZCB3cml0ZSBzdWNjZWVkZWQgYnV0IHJldHVybmVkIG5vXG4gKiAgIHVzYWJsZSBwcmVsb2FkIChhIENCT1IgcmVzcG9uc2UgZnJvbSBhbiBvbGRlciBzZXJ2ZXIsIGEgV29ybGQgdGhhdFxuICogICBpZ25vcmVkIHRoZSBvcHQtaW4sIGEgYm91bmRlZCBgaGFzTW9yZWAgcGFnZSwgb3IgYSBwcmVsb2FkIHRoYXQgZmFpbGVkXG4gKiAgIHZhbGlkYXRpb24pOyB0aGUgaW52b2NhdGlvbiBmZWxsIGJhY2sgdG8gdGhlIGBydW5fc3RhcnRlZGAgc2V0dXAgd2l0aG91dFxuICogICByZS1wb3N0aW5nIHRoZSBob29rLlxuICpcbiAqIEFic2VudCBvbiBsZWdhY3kgaG9vayBkZWxpdmVyaWVzIChubyByZXN1bWVJZC9kaWdlc3QpIGFuZCBvbiBldmVyeSBvdGhlclxuICogZGVsaXZlcnkga2luZCwgd2hpY2ggdGFrZSB0aGUgYHJ1bl9zdGFydGVkYCBzZXR1cCB1bmNvbmRpdGlvbmFsbHkuXG4gKlxuICogVGhpcyBpcyBhIGxhdGVuY3kvc2V0dXAtcGF0aCBzaWduYWw6IGl0IHNheXMgd2hpY2ggcmVxdWVzdHMgaW5pdGlhbGl6ZWRcbiAqIHRoZSBpbnZvY2F0aW9uLCBOT1QgdGhhdCB0aGlzIGNvbnN1bWVyIGNyZWF0ZWQgdGhlIGBob29rX3JlY2VpdmVkYCBldmVudFxuICogKHRoZSBob2lzdGVkIHdyaXRlIG1heSBlcXVhbGx5IGhhdmUgY29udmVyZ2VkIG9uIHRoZSBwcm9kdWNlcidzLCBzaW5jZVxuICogY2xhaW0gb3duZXJzaGlwIGlzIG5vdCBvYnNlcnZhYmxlIGNsaWVudC1zaWRlOyBjZi5cbiAqIHtAbGluayBIb29rUmVzaWxpZW50UmVzdW1lTWF0ZXJpYWxpemVkfSkuXG4gKi9cbmV4cG9ydCBjb25zdCBIb29rUmVzdW1lU2V0dXBTb3VyY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LnJlc3VtZV9zZXR1cF9zb3VyY2UnXG4pO1xuXG4vKipcbiAqIFByb2R1Y2VyLXNpZGUgc2lnbmFsIChvbiB0aGUgc3VzcGVuc2lvbiBzcGFuKSBjb3VudGluZyBzdGVwcyB3aG9zZSBkaXJlY3RcbiAqIGBzdGVwX2NyZWF0ZWRgIHdyaXRlIGZhaWxlZCB0cmFuc2llbnRseSB3aGlsZSB0aGVpciBgc3RlcElucHV0YC1jYXJyeWluZ1xuICogcXVldWUgcHVibGlzaCBzdWNjZWVkZWQsIHNvIHN0ZXAgY3JlYXRpb24gaXMgcmVjb3ZlcmVkIHZpYSB0aGUgY29uc3VtZXInc1xuICogcmUtZW5zdXJlLiBNaXJyb3JzIHtAbGluayBIb29rUmVzaWxpZW50UmVzdW1lfS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXNpbGllbnREaXNwYXRjaFJlY292ZXJlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RlcC5yZXNpbGllbnRfZGlzcGF0Y2hfcmVjb3ZlcmVkJ1xuKTtcblxuLyoqXG4gKiBDb25zdW1lci1zaWRlIHNpZ25hbCAob24gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzcGFuKSB0aGF0IHRoaXMgZGVsaXZlcnlcbiAqIG1hdGVyaWFsaXplZCB0aGUgYHN0ZXBfY3JlYXRlZGAgZXZlbnQgZnJvbSB0aGUgcXVldWUgbWVzc2FnZSdzIGBzdGVwSW5wdXRgXG4gKiBiZWNhdXNlIHRoZSBwcm9kdWNlcidzIGRpcmVjdCB3cml0ZSBoYWQgbm90IGxhbmRlZCwgd2hpY2ggY29tcGxldGVzIHRoZVxuICogcmVjb3ZlcnkgcGF0aCB7QGxpbmsgU3RlcFJlc2lsaWVudERpc3BhdGNoUmVjb3ZlcmVkfSBiZWdhbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXNpbGllbnREaXNwYXRjaE1hdGVyaWFsaXplZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3dvcmtmbG93LnN0ZXAucmVzaWxpZW50X2Rpc3BhdGNoX21hdGVyaWFsaXplZCdcbik7XG5cbi8vIEhvb2stdHJpZ2dlcmVkIHRpbWUtdG8tcmVzdW1lIChUVFIpIGF0dHJpYnV0ZXNcbi8vXG4vLyBTZXQgb24gdGhlIGBzdGVwLmV4ZWN1dGUgPG5hbWU+YCBzcGFuIG9mIHRoZSBGSVJTVCBkdXJhYmxlIHN0ZXAgZm9sbG93aW5nIGFcbi8vIGhvb2sgcmVzdW1lLCBhbmQgb25seSB0aGVyZTogb25lIHJlc3VtcHRpb24gcHJvZHVjZXMgZXhhY3RseSBvbmUgc2FtcGxlLCBzb1xuLy8gYSBsYXRlciBzdGVwIGluIHRoZSBzYW1lIGludm9jYXRpb24sIGEgcmV0cnksIG9yIGEgcmVkZWxpdmVyeSBuZXZlclxuLy8gcmUtcmVwb3J0cyBpdC4gVGhlIHBoYXNlcyBhcmUgbm9uLW92ZXJsYXBwaW5nIGFuZCBzdW0gZXhhY3RseSB0b1xuLy8ge0BsaW5rIFJlc3VtZVRvdGFsTXN9OyBzZWUgcnVudGltZS9yZXN1bWUtbGF0ZW5jeS50cyBmb3IgdGhlIGJvdW5kYXJ5XG4vLyBkZWZpbml0aW9ucyBhbmQgdGhlIGVtaXNzaW9uIGdhdGUuXG4vL1xuLy8gRGVsaWJlcmF0ZWx5IGNhcnJpZXMgbm8gYHJlc3VtZUlkYCwgcnVuIElELCBvciB0b2tlbjogdGhlIG1ldHJpYyBpcyBtZWFudCB0b1xuLy8gYmUgYWdncmVnYXRlZCBhY3Jvc3MgZXZlcnkgcmVzdW1lLCBhbmQgaGlnaC1jYXJkaW5hbGl0eSBrZXlzIHdvdWxkIG1ha2UgdGhhdFxuLy8gcHJvaGliaXRpdmUuIEV4aXN0aW5nIHRyYWNlLWNvcnJlbGF0aW9uIGZpZWxkcyBvbiB0aGUgc2FtZSBzcGFuIGFyZVxuLy8gdW5jaGFuZ2VkIGFuZCBzdGlsbCBpZGVudGlmeSB0aGUgaW5kaXZpZHVhbCBydW4uXG5cbi8qKiBUb3RhbCBUVFI6IGVudHJ5IGludG8gYHJlc3VtZUhvb2soKWAg4oaSIGltbWVkaWF0ZWx5IGJlZm9yZSBgc3RlcEZuLmFwcGx5KClgLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVRvdGFsTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS50b3RhbF9tcydcbik7XG5cbi8qKiBQaGFzZTogYHJlc3VtZUhvb2soKWAgZW50cnkg4oaSIHRoZSBxdWV1ZSBwdWJsaXNoIGJlaW5nIHJlcXVlc3RlZC4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVQcm9kdWNlclByZXBNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnByb2R1Y2VyX3ByZXBfbXMnXG4pO1xuXG4vKiogUGhhc2U6IHF1ZXVlIHB1Ymxpc2ggcmVxdWVzdGVkIOKGkiB0aGUgZmluYWwgY29uc3VtZXIncyBoYW5kbGVyIGJlaW5nIGVudGVyZWQuICovXG5leHBvcnQgY29uc3QgUmVzdW1lUXVldWVEZWxpdmVyeU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yZXN1bWUucGhhc2UucXVldWVfZGVsaXZlcnlfbXMnXG4pO1xuXG4vKiogUGhhc2U6IGNvbnN1bWVyIGVudHJ5IOKGkiByZXBsYXkgYmVnaW5uaW5nLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVNldHVwTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5waGFzZS5yZXN1bWVfc2V0dXBfbXMnXG4pO1xuXG4vKiogUGhhc2U6IHJlcGxheSBiZWdpbm5pbmcg4oaSIHRoZSBuZXh0IGR1cmFibGUgc3RlcCBiZWluZyBlbmNvdW50ZXJlZC4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVSZXBsYXlNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnJlcGxheV9tcydcbik7XG5cbi8qKiBQaGFzZTogc3RlcCBlbmNvdW50ZXJlZCDihpIgdGhlIGBzdGVwX3N0YXJ0ZWRgIHJlcXVlc3QgYmVnaW5uaW5nLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVN0ZXBEaXNwYXRjaE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yZXN1bWUucGhhc2Uuc3RlcF9kaXNwYXRjaF9tcydcbik7XG5cbi8qKlxuICogUGhhc2U6IGBzdGVwX3N0YXJ0ZWRgIHJlcXVlc3QgYmVnaW5uaW5nIOKGkiBpdHMgcmVzcG9uc2UgcmV0dXJuaW5nLiBPbWl0dGVkXG4gKiB1bmRlciBvcHRpbWlzdGljIGlubGluZSBzdGFydCwgd2hlcmUgdGhlIGNsYWltIGlzIG5vdCBhd2FpdGVkIGJlZm9yZSB0aGVcbiAqIGJvZHkgcnVucyBhbmQgdGhlcmVmb3JlIGhhcyBubyBjb21wbGV0aW9uIGluc3RhbnQgYXQgdGhhdCBwb2ludDsgdGhlIHRpbWVcbiAqIGlzIHRoZW4gcmVwb3J0ZWQgZW50aXJlbHkgYXMge0BsaW5rIFJlc3VtZVN0ZXBQcmVwYXJlTXN9LlxuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU3RlcENsYWltTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5waGFzZS5zdGVwX2NsYWltX21zJ1xuKTtcblxuLyoqXG4gKiBQaGFzZTogY2xhaW0gcmV0dXJuaW5nIOKGkiBpbW1lZGlhdGVseSBiZWZvcmUgYHN0ZXBGbi5hcHBseSgpYC4gRGVsaWJlcmF0ZWx5XG4gKiBpbmNsdWRlcyBlbmNyeXB0aW9uLWtleSByZXNvbHV0aW9uLCBhcmd1bWVudCBoeWRyYXRpb24sIGFuZCBzdGVwLWNvbnRleHRcbiAqIHNldHVwOyBgd29ya2Zsb3cucXVldWUuZGVzZXJpYWxpemVfdGltZV9tc2Agc3RpbGwgaXNvbGF0ZXMgaHlkcmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU3RlcFByZXBhcmVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnN0ZXBfcHJlcGFyZV9tcydcbik7XG5cbi8qKiBXaGF0IHRyaWdnZXJlZCB0aGUgbWVhc3VyZWQgcmVzdW1wdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVUcmlnZ2VyID0gU2VtYW50aWNDb252ZW50aW9uPCdob29rJz4oXG4gICd3b3JrZmxvdy5yZXN1bWUudHJpZ2dlcidcbik7XG5cbi8qKlxuICogV2hpY2ggYHJlc3VtZUhvb2soKWAgZGlzcGF0Y2ggcGF0aCBwcm9kdWNlZCB0aGlzIHJlc3VtZS4gYHBhcmFsbGVsYCBvbmx5XG4gKiBhcHBlYXJzIGZvciBtZXNzYWdlcyBwdWJsaXNoZWQgYnkgYW4gb2xkZXIgcHJvZHVjZXIsIHdoaWNoIHdyb3RlXG4gKiBgaG9va19yZWNlaXZlZGAgaXRzZWxmIGluIHBhcmFsbGVsIHdpdGggdGhlIHB1Ymxpc2guXG4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVTdHJhdGVneSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2xhenknIHwgJ3BhcmFsbGVsJyB8ICdzZXF1ZW50aWFsJ1xuPignd29ya2Zsb3cucmVzdW1lLnN0cmF0ZWd5Jyk7XG5cbi8qKlxuICogSG93IHRoZSBjb25zdW1pbmcgaW52b2NhdGlvbiBpbml0aWFsaXplZCByZXBsYXkgc3RhdGUuIERpc3RpbmN0IGZyb20gdGhlXG4gKiBwcmUtZXhpc3Rpbmcge0BsaW5rIEhvb2tSZXN1bWVTZXR1cFNvdXJjZX0gKGB3b3JrZmxvdy5yZXN1bWVfc2V0dXBfc291cmNlYCxcbiAqIG9uIHRoZSB3b3JrZmxvdyBleGVjdXRpb24gc3BhbiksIHdoaWNoIHJlcG9ydHMgdGhlIGZpbmVyLWdyYWluZWRcbiAqIGhvaXN0ZWQtd3JpdGUgb3V0Y29tZTsgdGhpcyBvbmUgaXMgdGhlIFRUUiBkaW1lbnNpb24gYW5kIHNoYXJlcyB0aGUgbWV0cmljJ3NcbiAqIHRocmVlLXZhbHVlIHZvY2FidWxhcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVTZXR1cFNvdXJjZSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2hvb2tfcHJlbG9hZCcgfCAncnVuX3N0YXJ0ZWQnIHwgJ2V2ZW50X2xvYWQnXG4+KCd3b3JrZmxvdy5yZXN1bWUuc2V0dXBfc291cmNlJyk7XG5cbi8qKiBXaGV0aGVyIHRoZSBtZWFzdXJlZCBzdGVwIHJhbiBpbiB0aGUgcmVzdW1pbmcgaW52b2NhdGlvbiBvciBhIHF1ZXVlZCBvbmUuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU3RlcEV4ZWN1dGlvbiA9IFNlbWFudGljQ29udmVudGlvbjwnaW5saW5lJyB8ICdkaXNwYXRjaGVkJz4oXG4gICd3b3JrZmxvdy5yZXN1bWUuc3RlcF9leGVjdXRpb24nXG4pO1xuXG4vLyBXZWJob29rIGF0dHJpYnV0ZXNcblxuLyoqIE51bWJlciBvZiB3ZWJob29rIGhhbmRsZXJzIHRyaWdnZXJlZCAqL1xuZXhwb3J0IGNvbnN0IFdlYmhvb2tIYW5kbGVyc1RyaWdnZXJlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd2ViaG9vay5oYW5kbGVycy50cmlnZ2VyZWQnXG4pO1xuXG4vLyBTdXNwZW5zaW9uIGF0dHJpYnV0ZXNcblxuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvblN0YXRlID0gU2VtYW50aWNDb252ZW50aW9uPCdzdXNwZW5kZWQnPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24uc3RhdGUnXG4pO1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvbkhvb2tDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi5ob29rX2NvdW50J1xuKTtcbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25TdGVwQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24uc3RlcF9jb3VudCdcbik7XG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uV2FpdENvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLndhaXRfY291bnQnXG4pO1xuXG4vLyBXb3JsZC9TdG9yYWdlIGF0dHJpYnV0ZXMgLSBTdGFuZGFyZCBPVEVMIEhUVFAgY29udmVudGlvbnNcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9odHRwL2h0dHAtc3BhbnMvXG5cbi8qKiBIVFRQIHJlcXVlc3QgbWV0aG9kIChzdGFuZGFyZCBPVEVMOiBodHRwLnJlcXVlc3QubWV0aG9kKSAqL1xuZXhwb3J0IGNvbnN0IEh0dHBSZXF1ZXN0TWV0aG9kID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICdodHRwLnJlcXVlc3QubWV0aG9kJ1xuKTtcblxuLyoqIFJvdXRlIHBhdHRlcm4gZm9yIHRoZSByZXF1ZXN0IChzdGFuZGFyZCBPVEVMOiBodHRwLnJvdXRlKSAqL1xuZXhwb3J0IGNvbnN0IEh0dHBSb3V0ZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdodHRwLnJvdXRlJyk7XG5cbi8qKiBGdWxsIFVSTCBvZiB0aGUgcmVxdWVzdCAoc3RhbmRhcmQgT1RFTDogdXJsLmZ1bGwpICovXG5leHBvcnQgY29uc3QgVXJsRnVsbCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd1cmwuZnVsbCcpO1xuXG4vKiogU2VydmVyIGhvc3RuYW1lIChzdGFuZGFyZCBPVEVMOiBzZXJ2ZXIuYWRkcmVzcykgKi9cbmV4cG9ydCBjb25zdCBTZXJ2ZXJBZGRyZXNzID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3NlcnZlci5hZGRyZXNzJyk7XG5cbi8qKiBTZXJ2ZXIgcG9ydCAoc3RhbmRhcmQgT1RFTDogc2VydmVyLnBvcnQpICovXG5leHBvcnQgY29uc3QgU2VydmVyUG9ydCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzZXJ2ZXIucG9ydCcpO1xuXG4vKiogSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZSAoc3RhbmRhcmQgT1RFTDogaHR0cC5yZXNwb25zZS5zdGF0dXNfY29kZSkgKi9cbmV4cG9ydCBjb25zdCBIdHRwUmVzcG9uc2VTdGF0dXNDb2RlID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdodHRwLnJlc3BvbnNlLnN0YXR1c19jb2RlJ1xuKTtcblxuLyoqIEVycm9yIHR5cGUgd2hlbiByZXF1ZXN0IGZhaWxzIChzdGFuZGFyZCBPVEVMOiBlcnJvci50eXBlKSAqL1xuZXhwb3J0IGNvbnN0IEVycm9yVHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdlcnJvci50eXBlJyk7XG5cbi8vIFdvcmxkLXNwZWNpZmljIGN1c3RvbSBhdHRyaWJ1dGVzIChmb3Igd29ya2Zsb3ctc3BlY2lmaWMgY29udGV4dClcblxuLyoqIEZvcm1hdCB1c2VkIGZvciBwYXJzaW5nIHJlc3BvbnNlIGJvZHkgKGNib3Igb3IganNvbikgKi9cbmV4cG9ydCBjb25zdCBXb3JsZFBhcnNlRm9ybWF0ID0gU2VtYW50aWNDb252ZW50aW9uPCdjYm9yJyB8ICdqc29uJz4oXG4gICd3b3JrZmxvdy53b3JsZC5wYXJzZS5mb3JtYXQnXG4pO1xuXG4vLyBFdmVudCBsb2FkaW5nIGF0dHJpYnV0ZXNcblxuLyoqIE51bWJlciBvZiBwYWdpbmF0aW9uIHBhZ2VzIGxvYWRlZCB3aGVuIGZldGNoaW5nIHdvcmtmbG93IGV2ZW50cyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXZlbnRzUGFnZXNMb2FkZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmV2ZW50cy5wYWdlc19sb2FkZWQnXG4pO1xuXG4vLyBRdWV1ZSB0aW1pbmcgYnJlYWtkb3duIGF0dHJpYnV0ZXMgKHdvcmtmbG93LXNwZWNpZmljKVxuXG4vKiogVGltZSBzcGVudCBkZXNlcmlhbGl6aW5nIHRoZSBxdWV1ZSBtZXNzYWdlIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlRGVzZXJpYWxpemVUaW1lTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLmRlc2VyaWFsaXplX3RpbWVfbXMnXG4pO1xuXG4vKiogVGltZSBzcGVudCBleGVjdXRpbmcgdGhlIGhhbmRsZXIgbG9naWMgaW4gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgY29uc3QgUXVldWVFeGVjdXRpb25UaW1lTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLmV4ZWN1dGlvbl90aW1lX21zJ1xuKTtcblxuLyoqIFRpbWUgc3BlbnQgc2VyaWFsaXppbmcgdGhlIHJlc3BvbnNlIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlU2VyaWFsaXplVGltZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5zZXJpYWxpemVfdGltZV9tcydcbik7XG5cbi8vIFBheWxvYWQgY29tcHJlc3Npb24gYXR0cmlidXRlcyAoenN0ZCBwcmVmZXJyZWQsIGd6aXAgZmFsbGJhY2s7IHNwZWNWZXJzaW9uID49IDUpXG4vL1xuLy8gU2l6ZXMgYXJlIG1lYXN1cmVkIGF0IHRoZSBjb21wcmVzc2lvbiBib3VuZGFyeTogYmVmb3JlIGVuY3J5cHRpb24gb24gdGhlXG4vLyB3cml0ZSBwYXRoIGFuZCBhZnRlciBkZWNyeXB0aW9uIG9uIHRoZSByZWFkIHBhdGguIFRoZXkgdGhlcmVmb3JlIHJlZmxlY3Rcbi8vIGNvbXByZXNzaW9uJ3MgZWZmZWN0LCBub3QgdGhlIGF0LXJlc3Qgc2l6ZSAod2hpY2ggYWxzbyBpbmNsdWRlcyB0aGVcbi8vIH4yOC1ieXRlIGBlbmNyYCBlbnZlbG9wZSBhbmQsIG9uIHNvbWUgYmFja2VuZHMsIGJhc2U2NCBleHBhbnNpb24pLlxuXG4vKiogV2hldGhlciB0aGlzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSB3YXMgYSB3cml0ZSBvciByZWFkLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25PcGVyYXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdzZXJpYWxpemUnIHwgJ2Rlc2VyaWFsaXplJ1xuPignd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5vcGVyYXRpb24nKTtcblxuLyoqIFdoZXRoZXIgYSBjb21wcmVzc2lvbiBjb2RlYyB3YXMgYXBwbGllZCAod3JpdGUpIC8gcHJlc2VudCAocmVhZCkuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkNvbXByZXNzZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmNvbXByZXNzZWQnXG4pO1xuXG4vKiogV2hpY2ggY29tcHJlc3Npb24gY29kZWMgYXBwbGllZCAvIHdhcyBwcmVzZW50IChgenN0ZGAsIGBnemlwYCwgb3IgYG5vbmVgKS4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29kZWMgPSBTZW1hbnRpY0NvbnZlbnRpb248J3pzdGQnIHwgJ2d6aXAnIHwgJ25vbmUnPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uY29kZWMnXG4pO1xuXG4vKiogTG9naWNhbCAodW5jb21wcmVzc2VkLCBkZXZhbHVlLXByZWZpeGVkKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblVuY29tcHJlc3NlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnVuY29tcHJlc3NlZF9ieXRlcydcbik7XG5cbi8qKiBTdG9yZWQgKHBvc3QtY29tcHJlc3Npb24sIHByZS1lbmNyeXB0aW9uKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblN0b3JlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnN0b3JlZF9ieXRlcydcbik7XG5cbi8qKiBGcmFjdGlvbiBvZiBieXRlcyBzYXZlZCBieSBjb21wcmVzc2lvbiAoMC4uMSk7IHNldCBvbmx5IHdoZW4gY29tcHJlc3NlZC4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29tcHJlc3Npb25SYXRpbyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5jb21wcmVzc2lvbl9yYXRpbydcbik7XG5cbi8qKlxuICogTnVtYmVyIG9mIHdvcmtmbG93IChndWVzdCkgY29kZSBleGVjdXRpb25zIHNlcmlhbGl6YXRpb24gY291bGQgbm90IGF2b2lkXG4gKiAoZ2V0dGVycywgcHJveGllcywgY3VzdG9tIHNlcmlhbGl6ZXJzKTsgc2V0IG9ubHkgd2hlbiBub24temVyby5cbiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25HdWVzdENvZGVFeGVjdXRpb25zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmd1ZXN0X2NvZGVfZXhlY3V0aW9ucydcbik7XG5cbi8qKlxuICogRGVkdXBsaWNhdGVkIGBraW5kIChkZXRhaWwpYCBkZXNjcmlwdGlvbnMgb2YgdGhlIGd1ZXN0LWNvZGUgZXhlY3V0aW9ucztcbiAqIHNldCBvbmx5IHdoZW4gbm9uLXplcm8uXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uR3Vlc3RDb2RlRGV0YWlscyA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmdbXT4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmd1ZXN0X2NvZGVfZGV0YWlscydcbik7XG5cbi8vIFJQQy9QZWVyIFNlcnZpY2UgYXR0cmlidXRlcyAtIEZvciBzZXJ2aWNlIG1hcHMgYW5kIGRlcGVuZGVuY3kgdHJhY2tpbmdcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9ycGMvcnBjLXNwYW5zL1xuXG4vKiogVGhlIHJlbW90ZSBzZXJ2aWNlIG5hbWUgZm9yIERhdGFkb2cgc2VydmljZSBtYXBzIChEYXRhZG9nLXNwZWNpZmljOiBwZWVyLnNlcnZpY2UpICovXG5leHBvcnQgY29uc3QgUGVlclNlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncGVlci5zZXJ2aWNlJyk7XG5cbi8qKiBSUEMgc3lzdGVtIGlkZW50aWZpZXIgKHN0YW5kYXJkIE9URUw6IHJwYy5zeXN0ZW0pICovXG5leHBvcnQgY29uc3QgUnBjU3lzdGVtID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5zeXN0ZW0nKTtcblxuLyoqIFJQQyBzZXJ2aWNlIG5hbWUgKHN0YW5kYXJkIE9URUw6IHJwYy5zZXJ2aWNlKSAqL1xuZXhwb3J0IGNvbnN0IFJwY1NlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLnNlcnZpY2UnKTtcblxuLyoqIFJQQyBtZXRob2QgbmFtZSAoc3RhbmRhcmQgT1RFTDogcnBjLm1ldGhvZCkgKi9cbmV4cG9ydCBjb25zdCBScGNNZXRob2QgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLm1ldGhvZCcpO1xuXG4vLyBFcnJvciBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBlcnJvciBjb252ZW50aW9uc1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2V4Y2VwdGlvbnMvZXhjZXB0aW9ucy1zcGFucy9cblxuLyoqIFdoZXRoZXIgdGhlIGVycm9yIGlzIHJldHJ5YWJsZSAod29ya2Zsb3ctc3BlY2lmaWMpICovXG5leHBvcnQgY29uc3QgRXJyb3JSZXRyeWFibGUgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ2Vycm9yLnJldHJ5YWJsZScpO1xuXG4vKiogRXJyb3IgY2F0ZWdvcnkgKHdvcmtmbG93LXNwZWNpZmljOiBmYXRhbCwgcmV0cnlhYmxlLCB0cmFuc2llbnQpICovXG5leHBvcnQgY29uc3QgRXJyb3JDYXRlZ29yeSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2ZhdGFsJyB8ICdyZXRyeWFibGUnIHwgJ3RyYW5zaWVudCdcbj4oJ2Vycm9yLmNhdGVnb3J5Jyk7XG4iXX0=
|
|
478
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtY29udmVudGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsc0JBQXNCO0FBRXRCLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFeEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUVqRCxvQkFBb0IsQ0FBQyxDQUFDO0FBRXhCLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUUzRSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBRWpELHFCQUFxQixDQUFDLENBQUM7QUFFekIscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FDbkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRiw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtC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LGlCQUFpQixDQUFDLENBQUM7QUFFN0Usc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FFN0MsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT3BlblRlbGVtZXRyeSBzZW1hbnRpYyBjb252ZW50aW9ucyBmb3IgVmVyY2VsIFdvcmtmbG93IHRlbGVtZXRyeS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBzdGFuZGFyZGl6ZWQgdGVsZW1ldHJ5IGF0dHJpYnV0ZXMgZm9sbG93aW5nIE9wZW5UZWxlbWV0cnkgc2VtYW50aWMgY29udmVudGlvbnNcbiAqIGZvciBpbnN0cnVtZW50aW5nIHdvcmtmbG93IGV4ZWN1dGlvbiwgc3RlcCBwcm9jZXNzaW5nLCBhbmQgcmVsYXRlZCBvcGVyYXRpb25zLiBFYWNoIGV4cG9ydGVkIGZ1bmN0aW9uXG4gKiBjcmVhdGVzIGEgcHJvcGVybHkgZm9ybWF0dGVkIGF0dHJpYnV0ZSBvYmplY3QgZm9yIHVzZSB3aXRoIE9wZW5UZWxlbWV0cnkgc3BhbnMuXG4gKlxuICogVGhlIHNlbWFudGljIGNvbnZlbnRpb25zIGFyZSBvcmdhbml6ZWQgaW50byBzZXZlcmFsIGNhdGVnb3JpZXM6XG4gKiAtICoqV29ya2Zsb3cgYXR0cmlidXRlcyoqOiBUcmFjayB3b3JrZmxvdyBsaWZlY3ljbGUsIHN0YXR1cywgYW5kIG1ldGFkYXRhXG4gKiAtICoqU3RlcCBhdHRyaWJ1dGVzKio6IE1vbml0b3IgaW5kaXZpZHVhbCBzdGVwIGV4ZWN1dGlvbiwgcmV0cmllcywgYW5kIHJlc3VsdHNcbiAqIC0gKipRdWV1ZSBhdHRyaWJ1dGVzKio6IEluc3RydW1lbnQgbWVzc2FnZSBxdWV1ZSBvcGVyYXRpb25zXG4gKiAtICoqRGVwbG95bWVudCBhdHRyaWJ1dGVzKio6IENhcHR1cmUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBpbmZvcm1hdGlvblxuICpcbiAqIEFsbCBhdHRyaWJ1dGUgZnVuY3Rpb25zIGFyZSB0eXBlLXNhZmUgYW5kIHVzZSBleGlzdGluZyBiYWNrZW5kIHR5cGVzIHRvIGVuc3VyZVxuICogY29uc2lzdGVuY3kgYmV0d2VlbiB0ZWxlbWV0cnkgZGF0YSBhbmQgYWN0dWFsIHN5c3RlbSBzdGF0ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0ICogYXMgQXR0cmlidXRlIGZyb20gJy4vdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLmpzJztcbiAqXG4gKiAvLyBTZXQgd29ya2Zsb3cgYXR0cmlidXRlcyBvbiBhIHNwYW5cbiAqIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gKiAgIC4uLkF0dHJpYnV0ZS5Xb3JrZmxvd05hbWUoJ215LXdvcmtmbG93JyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5Xb3JrZmxvd09wZXJhdGlvbignc3RhcnQnKSxcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93UnVuU3RhdHVzKCdydW5uaW5nJyksXG4gKiB9KTtcbiAqXG4gKiAvLyBTZXQgc3RlcCBhdHRyaWJ1dGVzXG4gKiBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICogICAuLi5BdHRyaWJ1dGUuU3RlcE5hbWUoJ3Byb2Nlc3MtZGF0YScpLFxuICogICAuLi5BdHRyaWJ1dGUuU3RlcFN0YXR1cygnY29tcGxldGVkJyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwQXR0ZW1wdCgxKSxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi99IE9wZW5UZWxlbWV0cnkgU2VtYW50aWMgQ29udmVudGlvbnNcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICovXG5cbmltcG9ydCB0eXBlIHsgTWVzc2FnZUlkLCBTdGVwLCBXb3JrZmxvd1J1biB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlbWFudGljIGNvbnZlbnRpb24gZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGF0dHJpYnV0ZSBvYmplY3QuXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBhdHRyaWJ1dGUgbmFtZSBmb2xsb3dpbmcgT3BlblRlbGVtZXRyeSBzZW1hbnRpYyBjb252ZW50aW9uc1xuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIHJldHVybnMgYW4gYXR0cmlidXRlIG9iamVjdFxuICovXG5mdW5jdGlvbiBTZW1hbnRpY0NvbnZlbnRpb248VD4oLi4ubmFtZXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiAodmFsdWU6IFQpID0+XG4gICAgT2JqZWN0LmZyb21FbnRyaWVzKG5hbWVzLm1hcCgobmFtZSkgPT4gW25hbWUsIHZhbHVlXSBhcyBjb25zdCkpO1xufVxuXG4vLyBXb3JrZmxvdyBhdHRyaWJ1dGVzXG5cbi8qKiBUaGUgbmFtZSBvZiB0aGUgd29ya2Zsb3cgYmVpbmcgZXhlY3V0ZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd05hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cubmFtZScpO1xuXG4vKiogVGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQgb24gdGhlIHdvcmtmbG93ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dPcGVyYXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdzdGFydCcgfCAnZXhlY3V0ZScgfCAnZXhlY3V0ZV92MicgfCAncnVuJ1xuPignd29ya2Zsb3cub3BlcmF0aW9uJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgYSBzcGVjaWZpYyB3b3JrZmxvdyBydW4gaW5zdGFuY2UgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1J1bklkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93LnJ1bi5pZCcpO1xuXG4vKiogQ3VycmVudCBzdGF0dXMgb2YgdGhlIHdvcmtmbG93IHJ1biAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuU3RhdHVzID0gU2VtYW50aWNDb252ZW50aW9uPFxuICBXb3JrZmxvd1J1blsnc3RhdHVzJ10gfCAnd29ya2Zsb3dfc3VzcGVuZGVkJ1xuPignd29ya2Zsb3cucnVuLnN0YXR1cycpO1xuXG4vKiogVGltZXN0YW1wIHdoZW4gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzdGFydGVkIChVbml4IHRpbWVzdGFtcCkgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0YXJ0ZWRBdCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RhcnRlZF9hdCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgZXZlbnRzIHByb2Nlc3NlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFdmVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZXZlbnRzLmNvdW50J1xuKTtcblxuLyoqIFdoZXRoZXIgd29ya2Zsb3cgZXhlY3V0aW9uIHN0YXJ0cyB3aXRoIHJlcGxheSBvciByZXN1bWVzIGEgcmV0YWluZWQgVk0gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0V4ZWN1dGlvbk1vZGUgPSBTZW1hbnRpY0NvbnZlbnRpb248J3JlcGxheScgfCAncmV0YWluZWQnPihcbiAgJ3dvcmtmbG93LmV4ZWN1dGlvbi5tb2RlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhlIGNvbXBpbGVkIGFwcGxpY2F0aW9uIHdvcmtmbG93IGJ1bmRsZSB3YXMgY2FjaGVkLiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93QnVuZGxlQ29tcGlsZUNhY2hlSGl0ID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cuYnVuZGxlLmNvbXBpbGUuY2FjaGVfaGl0J1xuKTtcblxuLyoqIE9wZXJhdGlvbiB0aGF0IHN1cHBsaWVkIGV2ZW50cyB0byB0aGUgY3VycmVudCByZXBsYXkuICovXG5leHBvcnQgdHlwZSBXb3JrZmxvd1JlcGxheUxvYWRTb3VyY2UgPVxuICB8ICdydW5fc3RhcnRlZCdcbiAgfCAnaG9va19wcmVsb2FkJ1xuICB8ICdldmVudHNfbGlzdCdcbiAgfCAnZXZlbnRzX2xpc3RfaW5jcmVtZW50YWwnO1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UmVwbGF5TG9hZFNvdXJjZSA9XG4gIFNlbWFudGljQ29udmVudGlvbjxXb3JrZmxvd1JlcGxheUxvYWRTb3VyY2U+KCd3b3JrZmxvdy5yZXBsYXkubG9hZC5zb3VyY2UnKTtcblxuLyoqXG4gKiBFdmVudHMgdGhlIHJlcGxheSB3YWxrZWQgcGFzdCB0aGF0IG5vIGNvbnN1bWVyIGNsYWltZWQsIHN0aWxsIGhlbGQgd2hlbiB0aGVcbiAqIHJlcGxheSBzdG9wcGVkLlxuICpcbiAqIEEgbm9uLXplcm8gY291bnQgb24gYSBzdXNwZW5zaW9uIGlzIG9yZGluYXJ5OiBhbiBvdXQtb2YtYmFuZCBkZWxpdmVyeSB0aGF0XG4gKiBsYW5kZWQgYWhlYWQgb2YgdGhlIGNvZGUgdGhhdCByZWFkcyBpdCB3YWl0cyBmb3IgdGhlIHJlcGxheSB0aGF0IGdldHMgdGhlcmUuXG4gKiBGcm9tIGluc2lkZSBvbmUgcmVwbGF5IHRoYXQgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBldmVudCBubyByZXBsYXkgd2lsbFxuICogZXZlciBjbGFpbSwgYmVjYXVzZSB0aGUgdHdvIGRpZmZlciBvbmx5IGluIHdoYXQgdGhlIG5leHQgcmVwbGF5IGRvZXMuIFNvIHRoZVxuICogY291bnQgZ29lcyBvbiB0aGUgc3BhbiBpbnN0ZWFkIG9mIGZhaWxpbmcgdGhlIHJ1biwgYW5kIHRoZSBjYXNlIHdvcnRoIGFjdGluZ1xuICogb24gaXMgYSBxdWVyeSBhY3Jvc3MgYSBydW4ncyBzcGFuczogdGhlIHNhbWVcbiAqIHtAbGluayBXb3JrZmxvd1BhcmtlZEV2ZW50SWR9IGhlbGQgb24gc3VzcGVuc2lvbiBhZnRlciBzdXNwZW5zaW9uLlxuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dQYXJrZWRFdmVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZXZlbnRzLnBhcmtlZC5jb3VudCdcbik7XG5cbi8qKiBPbGRlc3QgZXZlbnQgc3RpbGwgaGVsZCB1bmNsYWltZWQgd2hlbiB0aGUgcmVwbGF5IHN0b3BwZWQuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dQYXJrZWRFdmVudElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5ldmVudHMucGFya2VkLmV2ZW50X2lkJ1xuKTtcblxuLyoqIFR5cGUgb2YgdGhlIG9sZGVzdCBldmVudCBzdGlsbCBoZWxkIHVuY2xhaW1lZCB3aGVuIHRoZSByZXBsYXkgc3RvcHBlZC4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1BhcmtlZEV2ZW50VHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXZlbnRzLnBhcmtlZC5ldmVudF90eXBlJ1xuKTtcblxuLyoqIE51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSB3b3JrZmxvdyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93QXJndW1lbnRzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmFyZ3VtZW50cy5jb3VudCdcbik7XG5cbi8qKiBUeXBlIG9mIHRoZSB3b3JrZmxvdyByZXN1bHQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1Jlc3VsdFR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LnJlc3VsdC50eXBlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdHJhY2UgY29udGV4dCB3YXMgcHJvcGFnYXRlZCB0byB0aGlzIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93VHJhY2VQcm9wYWdhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cudHJhY2UucHJvcGFnYXRlZCdcbik7XG5cbi8vIFF1aWNrSlMgVk0gZW5naW5lIGF0dHJpYnV0ZXNcblxuLyoqIFRoZSBWTSBlbmdpbmUgZXhlY3V0aW5nIHRoZSB3b3JrZmxvdyBmdW5jdGlvbiBmb3IgdGhpcyBpbnZvY2F0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dWbSA9IFNlbWFudGljQ29udmVudGlvbjwnbm9kZScgfCAncXVpY2tqcyc+KCd3b3JrZmxvdy52bScpO1xuXG4vKiogT3V0Y29tZSBvZiBhIFF1aWNrSlMgVk0gd29ya2Zsb3cgaW52b2NhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNPdXRjb21lID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAnY29tcGxldGVkJyB8ICdzdXNwZW5kZWQnIHwgJ2ZhaWxlZCdcbj4oJ3dvcmtmbG93LnZtLm91dGNvbWUnKTtcblxuLyoqIFdoZXRoZXIgcHJlbG9hZGVkIGV2ZW50cyBmcm9tIGBldmVudHMuY3JlYXRlKCdydW5fc3RhcnRlZCcpYCB3ZXJlIHVzZWQgKi9cbmV4cG9ydCBjb25zdCBRdWlja0pTRXZlbnRzUHJlbG9hZGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cudm0uZXZlbnRzLnByZWxvYWRlZCdcbik7XG5cbi8qKiBUb3RhbCBudW1iZXIgb2YgZXZlbnRzIGZldGNoZWQgZnJvbSB0aGUgd29ybGQgZm9yIHRoaXMgaW52b2NhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNFdmVudHNGZXRjaGVkQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnZtLmV2ZW50cy5mZXRjaGVkX2NvdW50J1xuKTtcblxuLyoqIE51bWJlciBvZiBwYWdlcyByZXF1aXJlZCB0byBmZXRjaCBhbGwgZXZlbnRzICovXG5leHBvcnQgY29uc3QgUXVpY2tKU0V2ZW50c0ZldGNoZWRQYWdlcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cudm0uZXZlbnRzLmZldGNoZWRfcGFnZXMnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHBlbmRpbmcgVk0gb3BlcmF0aW9ucyBjYXB0dXJlZCBhdCBzdXNwZW5zaW9uICovXG5leHBvcnQgY29uc3QgUXVpY2tKU1BlbmRpbmdPcHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cudm0ucGVuZGluZ19vcHNfY291bnQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHN0ZXBzIGV4ZWN1dGVkIGlubGluZSAobGl2ZS1WTSBjb250aW51YXRpb24pIHRoaXMgaW52b2NhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFF1aWNrSlNJbmxpbmVTdGVwcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAncXVpY2tqcy5pbmxpbmVfc3RlcHMnXG4pO1xuXG4vKiogQWN0aXZlIHRyYWNlLWNvcnJlbGF0aW9uIG1vZGUgZm9yIHRoaXMgaW52b2NhdGlvbiAobGlua2VkIG9yIGNvbnRpbnVvdXMpICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUcmFjZU1vZGUgPSBTZW1hbnRpY0NvbnZlbnRpb248J2xpbmtlZCcgfCAnY29udGludW91cyc+KFxuICAnd29ya2Zsb3cudHJhY2UubW9kZSdcbik7XG5cbi8qKiBXaGV0aGVyIHRoaXMgd29ya2Zsb3cgaW52b2NhdGlvbiBpcyB1c2luZyB0aGUgdHVyYm8gZmlyc3QtZGVsaXZlcnkgcGF0aCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93VHVyYm8gPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3dvcmtmbG93LnR1cmJvJyk7XG5cbi8qKiBOYW1lIG9mIHRoZSBlcnJvciB0aGF0IGNhdXNlZCB3b3JrZmxvdyBmYWlsdXJlICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFcnJvck5hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmVycm9yLm5hbWUnXG4pO1xuXG4vKiogRXJyb3IgbWVzc2FnZSB3aGVuIHdvcmtmbG93IGZhaWxzICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFcnJvck1lc3NhZ2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LmVycm9yLm1lc3NhZ2UnXG4pO1xuXG4vKiogRXJyb3IgY2xhc3NpZmljYXRpb24gY29kZSAoVVNFUl9FUlJPUiwgUlVOVElNRV9FUlJPUiwgZXRjLikgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yQ29kZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IuY29kZSdcbik7XG5cbi8qKiBOdW1iZXIgb2Ygc3RlcHMgY3JlYXRlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdGVwc0NyZWF0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN0ZXBzLmNyZWF0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIGhvb2tzIGNyZWF0ZWQgZHVyaW5nIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93SG9va3NDcmVhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ob29rcy5jcmVhdGVkJ1xuKTtcblxuLyoqIE51bWJlciBvZiB3YWl0cyBjcmVhdGVkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1dhaXRzQ3JlYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cud2FpdHMuY3JlYXRlZCdcbik7XG5cbi8qKlxuICogTnVtYmVyIG9mIHN0ZXBzIHRoaXMgc3VzcGVuc2lvbiBmaW5hbGl6ZWQgYXMgZmFpbGVkIGJlY2F1c2UgdGhlaXJcbiAqIGFyZ3VtZW50cyByZWZ1c2VkIHRvIHNlcmlhbGl6ZSAoc3RlcF9jcmVhdGVkIHBsYWNlaG9sZGVyICsgc3RlcF9mYWlsZWRcbiAqIGNhcnJ5aW5nIHRoZSBTZXJpYWxpemF0aW9uRXJyb3I7IHNlZSBmaW5hbGl6ZVVuc2VyaWFsaXphYmxlU3RlcCkuXG4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0ZXBzRmFpbGVkU2VyaWFsaXphdGlvbiA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RlcHMuZmFpbGVkX3NlcmlhbGl6YXRpb24nXG4pO1xuXG4vKipcbiAqIE51bWJlciBvZiBpbmxpbmUtb3duZWQgc3RlcHMgdGhpcyBpbnZvY2F0aW9uIHJlLWV4ZWN1dGVkIGJlY2F1c2UgaXQgaXMgYVxuICogcmVkZWxpdmVyeSBvZiB0aGVpciBvd25pbmcgcXVldWUgbWVzc2FnZSAoY3Jhc2ggcmVjb3ZlcnkgZm9yIGlubGluZVxuICogc3RlcHM7IHNlZSB0aGUgaW5saW5lIHN0ZXAgb3duZXJzaGlwIGNoYW5nZWxvZywgd29ya2Zsb3cjMjc4MCkuXG4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd093bmVkUmVjb3ZlcnlTdGVwcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuaW5saW5lX293bmVyc2hpcC5vd25lZF9yZWNvdmVyeV9zdGVwcydcbik7XG5cbi8qKlxuICogTnVtYmVyIG9mIHBlbmRpbmcgc3RlcHMgZm9yIHdoaWNoIHRoaXMgcmVwbGF5IHN1cHByZXNzZWQgdGhlIGltbWVkaWF0ZVxuICogcmVxdWV1ZSAoYW5vdGhlciBpbnZvY2F0aW9uIGlubGluZS1vd25zIHRoZW0gdW5kZXIgYSBsaXZlIGxlYXNlKSBhbmRcbiAqIGVuc3VyZWQgYSBkZWxheWVkIGJhY2tzdG9wIHdha2UgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93QmFja3N0b3BXYWtlc0FybWVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5pbmxpbmVfb3duZXJzaGlwLmJhY2tzdG9wX3dha2VzX2FybWVkJ1xuKTtcblxuLy8gUm91dGUgYXR0cmlidXRlc1xuXG4vKiogVGhlIHdvcmtmbG93IHJ1bnRpbWUgcm91dGUgYmVpbmcgaGFuZGxlZCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVUeXBlID0gU2VtYW50aWNDb252ZW50aW9uPCdmbG93Jz4oXG4gICd3b3JrZmxvdy5yb3V0ZS50eXBlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhpcyByb3V0ZSBpbnZvY2F0aW9uIHJldXNlZCBhbiBhbHJlYWR5LWNyZWF0ZWQgcmVxdWVzdCBoYW5kbGVyICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZUhhbmRsZXJDYWNoZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5oYW5kbGVyX2NhY2hlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgdGltZXMgdGhpcyBpbi1tZW1vcnkgcm91dGUgaGFuZGxlciBoYXMgYmVlbiBpbnZva2VkICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dSb3V0ZUludm9jYXRpb25Db3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucm91dGUuaW52b2NhdGlvbl9jb3VudCdcbik7XG5cbi8qKiBUaW1lIHNpbmNlIHRoaXMgcm91dGUgZW50cnlwb2ludCB3YXMgY29uc3RydWN0ZWQsIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVFbnRyeXBvaW50QWdlTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJvdXRlLmVudHJ5cG9pbnRfYWdlX21zJ1xuKTtcblxuLyoqIFRpbWUgc3BlbnQgZXZhbHVhdGluZyB0aGUgZ2VuZXJhdGVkIHJvdXRlIG1vZHVsZSBib2R5IGJlZm9yZSBjcmVhdGluZyB0aGUgZW50cnlwb2ludCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVNb2R1bGVCb2R5SW5pdE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5tb2R1bGVfYm9keV9pbml0X21zJ1xuKTtcblxuLyoqXG4gKiBDb21wdXRlIGluc3RhbmNlIGhhbmRsaW5nIHRoaXMgcm91dGU6IHRoZSBzeW50aGVzaXplZCBgQ09NUFVURV9JTlNUQU5DRV9JRGAuXG4gKiBVc2VzIE9URUwgYGZhYXMuaW5zdGFuY2VgIChleGVjdXRpb24tZW52aXJvbm1lbnQgaWQsIHJldXNlZCBhY3Jvc3NcbiAqIGludm9jYXRpb25zIHRvIHRoZSBzYW1lIGZ1bmN0aW9uKTpcbiAqIGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvYXR0cmlidXRlcy1yZWdpc3RyeS9mYWFzL1xuICovXG5leHBvcnQgY29uc3QgRmFhc0luc3RhbmNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ2ZhYXMuaW5zdGFuY2UnKTtcblxuLy8gU3RlcCBhdHRyaWJ1dGVzXG5cbi8qKiBOYW1lIG9mIHRoZSBzdGVwIGZ1bmN0aW9uIGJlaW5nIGV4ZWN1dGVkICovXG5leHBvcnQgY29uc3QgU3RlcE5hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5uYW1lJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHN0ZXAgaW5zdGFuY2UgKi9cbmV4cG9ydCBjb25zdCBTdGVwSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5pZCcpO1xuXG4vKiogQ3VycmVudCBhdHRlbXB0IG51bWJlciBmb3Igc3RlcCBleGVjdXRpb24gKHN0YXJ0cyBhdCAxKSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBBdHRlbXB0ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAuYXR0ZW1wdCcpO1xuXG4vKiogQ3VycmVudCBzdGF0dXMgb2YgdGhlIHN0ZXAgKi9cbmV4cG9ydCBjb25zdCBTdGVwU3RhdHVzID0gU2VtYW50aWNDb252ZW50aW9uPFN0ZXBbJ3N0YXR1cyddPignc3RlcC5zdGF0dXMnKTtcblxuLyoqIE1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgYWxsb3dlZCBmb3IgdGhpcyBzdGVwICovXG5leHBvcnQgY29uc3QgU3RlcE1heFJldHJpZXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC5tYXhfcmV0cmllcycpO1xuXG4vKiogV2hldGhlciB0cmFjZSBjb250ZXh0IHdhcyBwcm9wYWdhdGVkIHRvIHRoaXMgc3RlcCBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBTdGVwVHJhY2VQcm9wYWdhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnc3RlcC50cmFjZS5wcm9wYWdhdGVkJ1xuKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgdGltZS10by1maXJzdC1zdGVwIGxhdGVuY3kgaW4gbWlsbGlzZWNvbmRzOiBydW4gY3JlYXRpb24g4oaSXG4gKiB0aGlzIHN0ZXAncyBib2R5IGJlZ2lubmluZyB0byBleGVjdXRlLCBtaW51cyBwcmUtc3RlcCBob29rLWNyZWF0aW9uIHRpbWUuXG4gKiBPbmx5IHByZXNlbnQgb24gdGhlIHJ1bidzIGZpcnN0IHN0ZXAgZXhlY3V0aW9uIHdoZW4gaXQgcXVhbGlmaWVkIGZvclxuICogbWVhc3VyZW1lbnQgKHNlZSBydW50aW1lL3N0ZXAtbGF0ZW5jeS50cykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwVHRmc01zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAudHRmc19tcycpO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCBzdGVwLXRvLXN0ZXAgb3ZlcmhlYWQgaW4gbWlsbGlzZWNvbmRzOiB0aGUgcHJldmlvdXMgc3RlcCdzXG4gKiB0ZXJtaW5hbCBldmVudCDihpIgdGhpcyBzdGVwJ3MgYm9keSBiZWdpbm5pbmcgdG8gZXhlY3V0ZS4gT25seSBwcmVzZW50IHdoZW5cbiAqIHRoZSB0d28gc3RlcHMgcmFuIGJhY2stdG8tYmFjay5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTdHNvTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC5zdHNvX21zJyk7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHJ1bl9zdGFydGVkLXRvLWZpcnN0LXN0ZXAgbGF0ZW5jeSBpbiBtaWxsaXNlY29uZHM6IHRoZVxuICogYHJ1bl9zdGFydGVkYCByZXNwb25zZSBsYW5kaW5nIChvciwgdW5kZXIgdHVyYm8sIHRoZSBsb2NhbCBydW4gc3ludGhlc2lzXG4gKiBpbnN0YW50KSDihpIgdGhpcyBzdGVwJ3Mgc3RhcnQgUE9TVCBiZWluZyBpc3N1ZWQuIEEgc3ViLXdpbmRvdyBvZiB0dGZzIHRoYXRcbiAqIGlzb2xhdGVzIHJlcGxheSBvdmVyaGVhZCBmcm9tIHRoZSBydW4tY3JlYXRpb24gcXVldWUgaG9wLiBPbmx5IHByZXNlbnQgb25cbiAqIHRoZSBydW4ncyBmaXJzdCBzdGVwIGV4ZWN1dGlvbiB3aGVuIGl0IHF1YWxpZmllZCBmb3IgbWVhc3VyZW1lbnQgKHNlZVxuICogcnVudGltZS9zdGVwLWxhdGVuY3kudHMpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcFJzZnNNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLnJzZnNfbXMnKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgc3luY2hyb25vdXMgd29ya2Zsb3ctZnVuY3Rpb24gcmVwbGF5IGR1cmF0aW9uIGluXG4gKiBtaWxsaXNlY29uZHMsIGV4Y2x1ZGluZyBhd2FpdGVkIG5ldHdvcmsgSS9PLCBvZiBvbmx5IHRoZSBGSU5BTCByZXBsYXkgcGFzc1xuICogd2l0aGluIHRoZSByc2ZzIHdpbmRvdzogdGhlIHBhc3MgdGhhdCByZWFjaGVkIGFuZCBzY2hlZHVsZWQgdGhlIGZpcnN0XG4gKiBzdGVwLiBOb3QgYWNjdW11bGF0ZWQgYWNyb3NzIGVhcmxpZXIgcHJlLWZpcnN0LXN0ZXAgcGFzc2VzIChlLmcuIGFcbiAqIHdvcmtmbG93LWJvZHkgYHNldEF0dHJpYnV0ZXMoKWAgZGV0b3VyIHJlcGxheXMgbW9yZSB0aGFuIG9uY2UsIGFuZCBhXG4gKiByZWRlbGl2ZXJ5IG9taXRzIGVhcmxpZXIgaW52b2NhdGlvbnMnIHdvcmsgZW50aXJlbHkpLCBzbyB0aGlzIG11c3Qgbm90IGJlXG4gKiByZWFkIGFzIFwidGhlIHJlcGxheSBwb3J0aW9uIG9mIHJzZnNcIjsgc3RlcC5yc2ZzX21zIGNvdmVycyB0aGUgd2hvbGVcbiAqIHdpbmRvdy4gT25seSBwcmVzZW50IGFsb25nc2lkZSBzdGVwLnJzZnNfbXMgYW5kIG9ubHkgZm9yIHRoZSBydW4ncyBmaXJzdFxuICogc3RlcCAoc2VlIHJ1bnRpbWUvc3RlcC1sYXRlbmN5LnRzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBGaW5hbFNjaGVkdWxpbmdSZXBsYXlNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnc3RlcC5maW5hbF9zY2hlZHVsaW5nX3JlcGxheV9tcydcbik7XG5cbi8qKlxuICogUnVudGltZSBzdGFydHVwLWxhdGVuY3kgb3B0aW1pemF0aW9ucyBhY3RpdmUgZm9yIHRoZSB0dGZzL3N0c28gbWVhc3VyZW1lbnRcbiAqIChlLmcuICd0dXJibycsICdsYXp5U3RlcFN0YXJ0JywgJ29wdGltaXN0aWNTdGFydCcpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcExhdGVuY3lPcHRpbWl6YXRpb25zID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZ1tdPihcbiAgJ3N0ZXAubGF0ZW5jeV9vcHRpbWl6YXRpb25zJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhlIHN0ZXAgd2FzIHNraXBwZWQgZHVyaW5nIGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBTa2lwcGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCdzdGVwLnNraXBwZWQnKTtcblxuLyoqIFJlYXNvbiB3aHkgdGhlIHN0ZXAgd2FzIHNraXBwZWQgKi9cbmV4cG9ydCBjb25zdCBTdGVwU2tpcFJlYXNvbiA9XG4gIFNlbWFudGljQ29udmVudGlvbjxTdGVwWydzdGF0dXMnXT4oJ3N0ZXAuc2tpcF9yZWFzb24nKTtcblxuLyoqIE51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBzdGVwIGZ1bmN0aW9uICovXG5leHBvcnQgY29uc3QgU3RlcEFyZ3VtZW50c0NvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICdzdGVwLmFyZ3VtZW50cy5jb3VudCdcbik7XG5cbi8qKiBUeXBlIG9mIHRoZSBzdGVwIHJlc3VsdCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXN1bHRUeXBlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAucmVzdWx0LnR5cGUnKTtcblxuLyoqIE5hbWUgb2YgdGhlIGVycm9yIHRoYXQgY2F1c2VkIHN0ZXAgZmFpbHVyZSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBFcnJvck5hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5lcnJvci5uYW1lJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIHdoZW4gc3RlcCBmYWlscyAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBFcnJvck1lc3NhZ2UgPVxuICBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignc3RlcC5lcnJvci5tZXNzYWdlJyk7XG5cbi8qKiBXaGV0aGVyIHRoZSBzdGVwIGZhaWxlZCB3aXRoIGEgZmF0YWwgZXJyb3IgKG5vIHJldHJpZXMpICovXG5leHBvcnQgY29uc3QgU3RlcEZhdGFsRXJyb3IgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3N0ZXAuZmF0YWxfZXJyb3InKTtcblxuLyoqIFdoZXRoZXIgYWxsIHJldHJ5IGF0dGVtcHRzIGhhdmUgYmVlbiBleGhhdXN0ZWQgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmV0cnlFeGhhdXN0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICdzdGVwLnJldHJ5LmV4aGF1c3RlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBuZXh0IHJldHJ5IGF0dGVtcHQgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmV0cnlUaW1lb3V0U2Vjb25kcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnc3RlcC5yZXRyeS50aW1lb3V0X3NlY29uZHMnXG4pO1xuXG4vKiogV2hldGhlciB0aGUgc3RlcCB3aWxsIGJlIHJldHJpZWQgYWZ0ZXIgdGhpcyBmYWlsdXJlICovXG5leHBvcnQgY29uc3QgU3RlcFJldHJ5V2lsbFJldHJ5ID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnc3RlcC5yZXRyeS53aWxsX3JldHJ5J1xuKTtcblxuLy8gUXVldWUvTWVzc2FnaW5nIGF0dHJpYnV0ZXMgLSBTdGFuZGFyZCBPVEVMIG1lc3NhZ2luZyBjb252ZW50aW9uc1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L21lc3NhZ2luZy9tZXNzYWdpbmctc3BhbnMvXG5cbi8qKiBNZXNzYWdpbmcgc3lzdGVtIGlkZW50aWZpZXIgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5zeXN0ZW0pICovXG5leHBvcnQgY29uc3QgTWVzc2FnaW5nU3lzdGVtID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ21lc3NhZ2luZy5zeXN0ZW0nKTtcblxuLyoqIERlc3RpbmF0aW9uIG5hbWUvcXVldWUgbmFtZSAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLmRlc3RpbmF0aW9uLm5hbWUpICovXG5leHBvcnQgY29uc3QgTWVzc2FnaW5nRGVzdGluYXRpb25OYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICdtZXNzYWdpbmcuZGVzdGluYXRpb24ubmFtZSdcbik7XG5cbi8qKiBUaGUgbWVzc2FnZSBpZCBiZWluZyBoYW5kbGVkIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcubWVzc2FnZS5pZCkgKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdpbmdNZXNzYWdlSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248TWVzc2FnZUlkPihcbiAgJ21lc3NhZ2luZy5tZXNzYWdlLmlkJ1xuKTtcblxuLyoqIE9wZXJhdGlvbiB0eXBlIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcub3BlcmF0aW9uLnR5cGUpICovXG5leHBvcnQgY29uc3QgTWVzc2FnaW5nT3BlcmF0aW9uVHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ3B1Ymxpc2gnIHwgJ3JlY2VpdmUnIHwgJ3Byb2Nlc3MnXG4+KCdtZXNzYWdpbmcub3BlcmF0aW9uLnR5cGUnKTtcblxuLyoqIFRpbWUgdGFrZW4gdG8gZW5xdWV1ZSB0aGUgbWVzc2FnZSBpbiBtaWxsaXNlY29uZHMgKHdvcmtmbG93LXNwZWNpZmljKSAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlT3ZlcmhlYWRNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucXVldWUub3ZlcmhlYWRfbXMnXG4pO1xuXG4vLyBEZXBsb3ltZW50IGF0dHJpYnV0ZXNcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCAqL1xuZXhwb3J0IGNvbnN0IERlcGxveW1lbnRJZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdkZXBsb3ltZW50LmlkJyk7XG5cbi8qKiBUaGUgZGVwbG95bWVudCBhIHJ1biBpcyBwaW5uZWQgdG8sIHNldCBvbmx5IG9uIGEgbWlzcm91dGVkIGRlbGl2ZXJ5LiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuUGlubmVkRGVwbG95bWVudElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5kZXBsb3ltZW50LnBpbm5lZF9pZCdcbik7XG5cbi8qKiBSZS1yb3V0ZSBhdHRlbXB0cyBmb3IgdGhpcyBtaXNyb3V0ZWQgZGVsaXZlcnksIGluY2x1ZGluZyB0aGlzIG9uZS4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0RlcGxveW1lbnRNaXNtYXRjaFJldHJ5Q291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmRlcGxveW1lbnRfbWlzbWF0Y2gucmV0cnlfY291bnQnXG4pO1xuXG4vKiogV2hldGhlciB0aGUgbWlzcm91dGVkIGRlbGl2ZXJ5IHdhcyByZS1yb3V0ZWQgaW5zdGVhZCBvZiBmYWlsaW5nIHRoZSBydW4uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dEZXBsb3ltZW50TWlzbWF0Y2hSZWNvdmVyZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5kZXBsb3ltZW50X21pc21hdGNoLnJlY292ZXJlZCdcbik7XG5cbi8vIEhvb2sgYXR0cmlidXRlc1xuXG4vKiogVG9rZW4gaWRlbnRpZnlpbmcgYSBzcGVjaWZpYyBob29rICovXG5leHBvcnQgY29uc3QgSG9va1Rva2VuID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93Lmhvb2sudG9rZW4nKTtcblxuLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGhvb2sgaW5zdGFuY2UgKi9cbmV4cG9ydCBjb25zdCBIb29rSWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cuaG9vay5pZCcpO1xuXG4vKiogV2hldGhlciBhIGhvb2sgd2FzIGZvdW5kIGJ5IGl0cyB0b2tlbiAqL1xuZXhwb3J0IGNvbnN0IEhvb2tGb3VuZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignd29ya2Zsb3cuaG9vay5mb3VuZCcpO1xuXG4vKipcbiAqIFByb2R1Y2VyLXNpZGUgc2lnbmFsIChvbiB0aGUgYGhvb2sucmVzdW1lYCBzcGFuKSB0aGF0IHRoZSBkaXJlY3RcbiAqIGBob29rX3JlY2VpdmVkYCB3cml0ZSBmYWlsZWQgdHJhbnNpZW50bHkgYnV0IHRoZSBxdWV1ZSBkaXNwYXRjaCBzdWNjZWVkZWQsIHNvXG4gKiB0aGUgcmVzdW1lIGlzIHJlY292ZXJlZCB2aWEgdGhlIGNvbnN1bWVyJ3MgcmUtZW5zdXJlLiBDb3JyZXNwb25kcyB0b1xuICogYFJlc3VtZWRIb29rLnJlc2lsaWVudFJlc3VtZSA9PT0gdHJ1ZWAuXG4gKlxuICogTm8gbG9uZ2VyIGVtaXR0ZWQ6IGN1cnJlbnQgcHJvZHVjZXJzIHJlcXVpcmUgdGhlIGR1cmFibGUgZXZlbnQgd3JpdGUgdG9cbiAqIHN1Y2NlZWQuIFJldGFpbmVkIHNvIGRhc2hib2FyZHMgYW5kIHF1ZXJpZXMgYnVpbHQgb24gdGhlIGF0dHJpYnV0ZSBrZWVwXG4gKiByZXNvbHZpbmcgd2hpbGUgb2xkZXIgcHJvZHVjZXJzIGFyZSBzdGlsbCBkZXBsb3llZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEhvb2tSZXNpbGllbnRSZXN1bWUgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5ob29rLnJlc2lsaWVudF9yZXN1bWUnXG4pO1xuXG4vKipcbiAqIFByb2R1Y2VyLXNpZGUgc2lnbmFsIChvbiB0aGUgYGhvb2sucmVzdW1lYCBzcGFuKSB0aGF0IHRoZSBkdXJhYmxlXG4gKiBgaG9va19yZWNlaXZlZGAgd3JpdGUgQ09NTUlUVEVELiBTdGFtcGVkIGFmdGVyIHRoZSB3cml0ZSByZXNvbHZlcywgc28gaXRcbiAqIGRpc3Rpbmd1aXNoZXMgYSBjb21taXR0ZWQgcmVzdW1lIGZyb20gYW4gYXR0ZW1wdGVkIG9uZSDigJQgYW4gZW50cnktdGltZVxuICogYXR0cmlidXRlIGNhbm5vdCwgYmVjYXVzZSBhIHNwYW4gdGhhdCBsYXRlciByZWNvcmRzIGFuIGV4Y2VwdGlvbiBtYXkgaGF2ZVxuICogZmFpbGVkIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNvbW1pdC5cbiAqL1xuZXhwb3J0IGNvbnN0IEhvb2tSZXN1bWVDb21taXR0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5ob29rLnJlc3VtZV9jb21taXR0ZWQnXG4pO1xuXG4vKipcbiAqIFByb2R1Y2VyLXNpZGUgc2lnbmFsIChvbiB0aGUgYGhvb2sucmVzdW1lYCBzcGFuKSB0aGF0IHRoZSB3b3JrZmxvdyB3YWtlIHdhc1xuICogQUNDRVBURUQgYnkgdGhlIHF1ZXVlLCBzdGFtcGVkIGFmdGVyIHRoZSBwdWJsaXNoIHJlc29sdmVzLlxuICpcbiAqIFRvZ2V0aGVyIHdpdGgge0BsaW5rIEhvb2tSZXN1bWVDb21taXR0ZWR9IHRoaXMgbWFrZXMgc3RyYW5kZWQgcmVzdW1lc1xuICogcXVlcnlhYmxlOiBgcmVzdW1lX2NvbW1pdHRlZD10cnVlYCB3aXRoIGB3YWtlX3B1Ymxpc2hlZGAgYWJzZW50IGlzIGEgcmVzdW1lXG4gKiB3aG9zZSBkdXJhYmxlIGV2ZW50IGV4aXN0cyBidXQgd2hvc2Ugd2FrZSBwdWJsaXNoIGZhaWxlZCAodGhlIGNhbGxlciB3YXNcbiAqIHRvbGQsIGJ1dCBub3RoaW5nIHJlLWRyaXZlcyBpdCksIGFuZCBgcmVzdW1lX2NvbW1pdHRlZD10cnVlYCArXG4gKiBgd2FrZV9wdWJsaXNoZWQ9dHJ1ZWAgd2l0aCBubyBzdWJzZXF1ZW50IHdvcmtmbG93IGV4ZWN1dGlvbiBmb3IgdGhlIHJ1biBpc1xuICogYSB3YWtlIHRoZSBxdWV1ZSBhY2NlcHRlZCBidXQgbmV2ZXIgZGVsaXZlcmVkLiBCb3RoIGFyZSBkZXRlY3Rpb24tb25seVxuICogc2lnbmFscyDigJQgbm90aGluZyByZWNvdmVycyBzdWNoIGEgcnVuIGF1dG9tYXRpY2FsbHkgdG9kYXkgYmV5b25kIGEgbGF0ZXJcbiAqIHdha2UgZnJvbSBhbnkgb3RoZXIgc291cmNlLlxuICovXG5leHBvcnQgY29uc3QgSG9va1dha2VQdWJsaXNoZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5ob29rLndha2VfcHVibGlzaGVkJ1xuKTtcblxuLyoqXG4gKiBDb25zdW1lci1zaWRlIHNpZ25hbCAob24gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzcGFuKSB0aGF0IHRoaXMgcmVwbGF5XG4gKiBtYXRlcmlhbGl6ZWQgdGhlIGBob29rX3JlY2VpdmVkYCBldmVudCBmcm9tIHRoZSBxdWV1ZSBtZXNzYWdlJ3MgYGhvb2tJbnB1dGBcbiAqIGJlY2F1c2Ugbm8gY29tbWl0dGVkIGV2ZW50IHdhcyBmb3VuZCwgd2hpY2ggY29tcGxldGVzIHRoZSByZWNvdmVyeSBwYXRoXG4gKiB7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZX0gYmVnYW4uXG4gKlxuICogTGVnYWN5IC8gbm9uLWF0b21pYyByZS1lbnN1cmUgc2lnbmFsIG9ubHkuIExlZ2FjeSBhdG9taWMgbGF6eSByZXN1bWVzXG4gKiAocmVzdW1lSWQgKyBkaWdlc3QpIGdvIHRocm91Z2ggdGhlIGhvaXN0ZWQgcHJlbG9hZCB3cml0ZSBpbnN0ZWFkLCB3aG9zZVxuICogcmVzcG9uc2UgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgcHJvZHVjZXIgb3IgdGhlIGNvbnN1bWVyIHdvbiB0aGVcbiAqIGAocnVuSWQsIHJlc3VtZUlkKWAgY2xhaW0sIHNvIHRoaXMgYXR0cmlidXRlIGlzIGRlbGliZXJhdGVseSBOT1QgZW1pdHRlZFxuICogZm9yIHRoZW0gKGVtaXR0aW5nIGB0cnVlYCB1bmNvbmRpdGlvbmFsbHkgd291bGQgY291bnQgZXZlcnkgcHJvZHVjZXItd29uXG4gKiByZXN1bWUgYXMgYSByZWNvdmVyeSkuIFRoZSBwcm9kdWNlci1iZWdpbiAoe0BsaW5rIEhvb2tSZXNpbGllbnRSZXN1bWV9KSAvXG4gKiBjb25zdW1lci1tYXRlcmlhbGl6ZWQgcGFpcmluZyBpcyB0aGVyZWZvcmUgbm8gbG9uZ2VyIGNvbXBsZXRlIGZvciBhdG9taWNcbiAqIGxhenkgcmVzdW1wdGlvbnM7IHVzZSB7QGxpbmsgSG9va1Jlc3VtZVNldHVwU291cmNlfSB0byBvYnNlcnZlIHRoYXQgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IEhvb2tSZXNpbGllbnRSZXN1bWVNYXRlcmlhbGl6ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5ob29rLnJlc2lsaWVudF9yZXN1bWVfbWF0ZXJpYWxpemVkJ1xuKTtcblxuLyoqXG4gKiBDb25zdW1lci1zaWRlIHNpZ25hbCAob24gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzcGFuKSBvZiBob3cgYSBsYXp5IGhvb2tcbiAqIHJlc3VtZSBpbml0aWFsaXplZCBpdHMgcmVwbGF5IHN0YXRlOlxuICpcbiAqIC0gYGhvb2tfcmVjZWl2ZWRfc3RyZWFtYDogdGhlIGhvaXN0ZWQgYGhvb2tfcmVjZWl2ZWRgIHdyaXRlIHJldHVybmVkIGFcbiAqICAgdXNhYmxlIHJlcGxheSBwcmVsb2FkIChydW4gKyBjb21wbGV0ZSBldmVudCBsb2cpLCBzbyB0aGUgaW52b2NhdGlvblxuICogICBza2lwcGVkIGJvdGggdGhlIGBydW5fc3RhcnRlZGAgd3JpdGUgYW5kIHRoZSBpbml0aWFsIGBldmVudHMubGlzdGAuXG4gKiAtIGBob29rX3JlY2VpdmVkX2ZhbGxiYWNrYDogdGhlIGhvaXN0ZWQgd3JpdGUgc3VjY2VlZGVkIGJ1dCByZXR1cm5lZCBub1xuICogICB1c2FibGUgcHJlbG9hZCAoYSBDQk9SIHJlc3BvbnNlIGZyb20gYW4gb2xkZXIgc2VydmVyLCBhIFdvcmxkIHRoYXRcbiAqICAgaWdub3JlZCB0aGUgb3B0LWluLCBhIGJvdW5kZWQgYGhhc01vcmVgIHBhZ2UsIG9yIGEgcHJlbG9hZCB0aGF0IGZhaWxlZFxuICogICB2YWxpZGF0aW9uKTsgdGhlIGludm9jYXRpb24gZmVsbCBiYWNrIHRvIHRoZSBgcnVuX3N0YXJ0ZWRgIHNldHVwIHdpdGhvdXRcbiAqICAgcmUtcG9zdGluZyB0aGUgaG9vay5cbiAqXG4gKiBBYnNlbnQgb24gbGVnYWN5IGhvb2sgZGVsaXZlcmllcyAobm8gcmVzdW1lSWQvZGlnZXN0KSBhbmQgb24gZXZlcnkgb3RoZXJcbiAqIGRlbGl2ZXJ5IGtpbmQsIHdoaWNoIHRha2UgdGhlIGBydW5fc3RhcnRlZGAgc2V0dXAgdW5jb25kaXRpb25hbGx5LlxuICpcbiAqIFRoaXMgaXMgYSBsYXRlbmN5L3NldHVwLXBhdGggc2lnbmFsOiBpdCBzYXlzIHdoaWNoIHJlcXVlc3RzIGluaXRpYWxpemVkXG4gKiB0aGUgaW52b2NhdGlvbiwgTk9UIHRoYXQgdGhpcyBjb25zdW1lciBjcmVhdGVkIHRoZSBgaG9va19yZWNlaXZlZGAgZXZlbnRcbiAqICh0aGUgaG9pc3RlZCB3cml0ZSBtYXkgZXF1YWxseSBoYXZlIGNvbnZlcmdlZCBvbiB0aGUgcHJvZHVjZXIncywgc2luY2VcbiAqIGNsYWltIG93bmVyc2hpcCBpcyBub3Qgb2JzZXJ2YWJsZSBjbGllbnQtc2lkZTsgY2YuXG4gKiB7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZU1hdGVyaWFsaXplZH0pLlxuICovXG5leHBvcnQgY29uc3QgSG9va1Jlc3VtZVNldHVwU291cmNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5yZXN1bWVfc2V0dXBfc291cmNlJ1xuKTtcblxuLyoqXG4gKiBQcm9kdWNlci1zaWRlIHNpZ25hbCAob24gdGhlIHN1c3BlbnNpb24gc3BhbikgY291bnRpbmcgc3RlcHMgd2hvc2UgZGlyZWN0XG4gKiBgc3RlcF9jcmVhdGVkYCB3cml0ZSBmYWlsZWQgdHJhbnNpZW50bHkgd2hpbGUgdGhlaXIgYHN0ZXBJbnB1dGAtY2FycnlpbmdcbiAqIHF1ZXVlIHB1Ymxpc2ggc3VjY2VlZGVkLCBzbyBzdGVwIGNyZWF0aW9uIGlzIHJlY292ZXJlZCB2aWEgdGhlIGNvbnN1bWVyJ3NcbiAqIHJlLWVuc3VyZS4gTWlycm9ycyB7QGxpbmsgSG9va1Jlc2lsaWVudFJlc3VtZX0uXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwUmVzaWxpZW50RGlzcGF0Y2hSZWNvdmVyZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN0ZXAucmVzaWxpZW50X2Rpc3BhdGNoX3JlY292ZXJlZCdcbik7XG5cbi8qKlxuICogQ29uc3VtZXItc2lkZSBzaWduYWwgKG9uIHRoZSB3b3JrZmxvdyBleGVjdXRpb24gc3BhbikgdGhhdCB0aGlzIGRlbGl2ZXJ5XG4gKiBtYXRlcmlhbGl6ZWQgdGhlIGBzdGVwX2NyZWF0ZWRgIGV2ZW50IGZyb20gdGhlIHF1ZXVlIG1lc3NhZ2UncyBgc3RlcElucHV0YFxuICogYmVjYXVzZSB0aGUgcHJvZHVjZXIncyBkaXJlY3Qgd3JpdGUgaGFkIG5vdCBsYW5kZWQsIHdoaWNoIGNvbXBsZXRlcyB0aGVcbiAqIHJlY292ZXJ5IHBhdGgge0BsaW5rIFN0ZXBSZXNpbGllbnREaXNwYXRjaFJlY292ZXJlZH0gYmVnYW4uXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwUmVzaWxpZW50RGlzcGF0Y2hNYXRlcmlhbGl6ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5zdGVwLnJlc2lsaWVudF9kaXNwYXRjaF9tYXRlcmlhbGl6ZWQnXG4pO1xuXG4vLyBIb29rLXRyaWdnZXJlZCB0aW1lLXRvLXJlc3VtZSAoVFRSKSBhdHRyaWJ1dGVzXG4vL1xuLy8gU2V0IG9uIHRoZSBgc3RlcC5leGVjdXRlIDxuYW1lPmAgc3BhbiBvZiB0aGUgRklSU1QgZHVyYWJsZSBzdGVwIGZvbGxvd2luZyBhXG4vLyBob29rIHJlc3VtZSwgYW5kIG9ubHkgdGhlcmU6IG9uZSByZXN1bXB0aW9uIHByb2R1Y2VzIGV4YWN0bHkgb25lIHNhbXBsZSwgc29cbi8vIGEgbGF0ZXIgc3RlcCBpbiB0aGUgc2FtZSBpbnZvY2F0aW9uLCBhIHJldHJ5LCBvciBhIHJlZGVsaXZlcnkgbmV2ZXJcbi8vIHJlLXJlcG9ydHMgaXQuIFRoZSBwaGFzZXMgYXJlIG5vbi1vdmVybGFwcGluZyBhbmQgc3VtIGV4YWN0bHkgdG9cbi8vIHtAbGluayBSZXN1bWVUb3RhbE1zfTsgc2VlIHJ1bnRpbWUvcmVzdW1lLWxhdGVuY3kudHMgZm9yIHRoZSBib3VuZGFyeVxuLy8gZGVmaW5pdGlvbnMgYW5kIHRoZSBlbWlzc2lvbiBnYXRlLlxuLy9cbi8vIERlbGliZXJhdGVseSBjYXJyaWVzIG5vIGByZXN1bWVJZGAsIHJ1biBJRCwgb3IgdG9rZW46IHRoZSBtZXRyaWMgaXMgbWVhbnQgdG9cbi8vIGJlIGFnZ3JlZ2F0ZWQgYWNyb3NzIGV2ZXJ5IHJlc3VtZSwgYW5kIGhpZ2gtY2FyZGluYWxpdHkga2V5cyB3b3VsZCBtYWtlIHRoYXRcbi8vIHByb2hpYml0aXZlLiBFeGlzdGluZyB0cmFjZS1jb3JyZWxhdGlvbiBmaWVsZHMgb24gdGhlIHNhbWUgc3BhbiBhcmVcbi8vIHVuY2hhbmdlZCBhbmQgc3RpbGwgaWRlbnRpZnkgdGhlIGluZGl2aWR1YWwgcnVuLlxuXG4vKiogVG90YWwgVFRSOiBlbnRyeSBpbnRvIGByZXN1bWVIb29rKClgIOKGkiBpbW1lZGlhdGVseSBiZWZvcmUgYHN0ZXBGbi5hcHBseSgpYC4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVUb3RhbE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yZXN1bWUudG90YWxfbXMnXG4pO1xuXG4vKiogUGhhc2U6IGByZXN1bWVIb29rKClgIGVudHJ5IOKGkiB0aGUgcXVldWUgcHVibGlzaCBiZWluZyByZXF1ZXN0ZWQuICovXG5leHBvcnQgY29uc3QgUmVzdW1lUHJvZHVjZXJQcmVwTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5waGFzZS5wcm9kdWNlcl9wcmVwX21zJ1xuKTtcblxuLyoqIFBoYXNlOiBxdWV1ZSBwdWJsaXNoIHJlcXVlc3RlZCDihpIgdGhlIGZpbmFsIGNvbnN1bWVyJ3MgaGFuZGxlciBiZWluZyBlbnRlcmVkLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVF1ZXVlRGVsaXZlcnlNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnF1ZXVlX2RlbGl2ZXJ5X21zJ1xuKTtcblxuLyoqIFBoYXNlOiBjb25zdW1lciBlbnRyeSDihpIgcmVwbGF5IGJlZ2lubmluZy4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVTZXR1cE1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yZXN1bWUucGhhc2UucmVzdW1lX3NldHVwX21zJ1xuKTtcblxuLyoqIFBoYXNlOiByZXBsYXkgYmVnaW5uaW5nIOKGkiB0aGUgbmV4dCBkdXJhYmxlIHN0ZXAgYmVpbmcgZW5jb3VudGVyZWQuICovXG5leHBvcnQgY29uc3QgUmVzdW1lUmVwbGF5TXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5waGFzZS5yZXBsYXlfbXMnXG4pO1xuXG4vKiogUGhhc2U6IHN0ZXAgZW5jb3VudGVyZWQg4oaSIHRoZSBgc3RlcF9zdGFydGVkYCByZXF1ZXN0IGJlZ2lubmluZy4gKi9cbmV4cG9ydCBjb25zdCBSZXN1bWVTdGVwRGlzcGF0Y2hNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucmVzdW1lLnBoYXNlLnN0ZXBfZGlzcGF0Y2hfbXMnXG4pO1xuXG4vKipcbiAqIFBoYXNlOiBgc3RlcF9zdGFydGVkYCByZXF1ZXN0IGJlZ2lubmluZyDihpIgaXRzIHJlc3BvbnNlIHJldHVybmluZy4gT21pdHRlZFxuICogdW5kZXIgb3B0aW1pc3RpYyBpbmxpbmUgc3RhcnQsIHdoZXJlIHRoZSBjbGFpbSBpcyBub3QgYXdhaXRlZCBiZWZvcmUgdGhlXG4gKiBib2R5IHJ1bnMgYW5kIHRoZXJlZm9yZSBoYXMgbm8gY29tcGxldGlvbiBpbnN0YW50IGF0IHRoYXQgcG9pbnQ7IHRoZSB0aW1lXG4gKiBpcyB0aGVuIHJlcG9ydGVkIGVudGlyZWx5IGFzIHtAbGluayBSZXN1bWVTdGVwUHJlcGFyZU1zfS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVN0ZXBDbGFpbU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yZXN1bWUucGhhc2Uuc3RlcF9jbGFpbV9tcydcbik7XG5cbi8qKlxuICogUGhhc2U6IGNsYWltIHJldHVybmluZyDihpIgaW1tZWRpYXRlbHkgYmVmb3JlIGBzdGVwRm4uYXBwbHkoKWAuIERlbGliZXJhdGVseVxuICogaW5jbHVkZXMgZW5jcnlwdGlvbi1rZXkgcmVzb2x1dGlvbiwgYXJndW1lbnQgaHlkcmF0aW9uLCBhbmQgc3RlcC1jb250ZXh0XG4gKiBzZXR1cDsgYHdvcmtmbG93LnF1ZXVlLmRlc2VyaWFsaXplX3RpbWVfbXNgIHN0aWxsIGlzb2xhdGVzIGh5ZHJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVN0ZXBQcmVwYXJlTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJlc3VtZS5waGFzZS5zdGVwX3ByZXBhcmVfbXMnXG4pO1xuXG4vKiogV2hhdCB0cmlnZ2VyZWQgdGhlIG1lYXN1cmVkIHJlc3VtcHRpb24uICovXG5leHBvcnQgY29uc3QgUmVzdW1lVHJpZ2dlciA9IFNlbWFudGljQ29udmVudGlvbjwnaG9vayc+KFxuICAnd29ya2Zsb3cucmVzdW1lLnRyaWdnZXInXG4pO1xuXG4vKipcbiAqIFdoaWNoIGByZXN1bWVIb29rKClgIGRpc3BhdGNoIHBhdGggcHJvZHVjZWQgdGhpcyByZXN1bWUuIGBwYXJhbGxlbGAgb25seVxuICogYXBwZWFycyBmb3IgbWVzc2FnZXMgcHVibGlzaGVkIGJ5IGFuIG9sZGVyIHByb2R1Y2VyLCB3aGljaCB3cm90ZVxuICogYGhvb2tfcmVjZWl2ZWRgIGl0c2VsZiBpbiBwYXJhbGxlbCB3aXRoIHRoZSBwdWJsaXNoLlxuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU3RyYXRlZ3kgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdsYXp5JyB8ICdwYXJhbGxlbCcgfCAnc2VxdWVudGlhbCdcbj4oJ3dvcmtmbG93LnJlc3VtZS5zdHJhdGVneScpO1xuXG4vKipcbiAqIEhvdyB0aGUgY29uc3VtaW5nIGludm9jYXRpb24gaW5pdGlhbGl6ZWQgcmVwbGF5IHN0YXRlLiBEaXN0aW5jdCBmcm9tIHRoZVxuICogcHJlLWV4aXN0aW5nIHtAbGluayBIb29rUmVzdW1lU2V0dXBTb3VyY2V9IChgd29ya2Zsb3cucmVzdW1lX3NldHVwX3NvdXJjZWAsXG4gKiBvbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uIHNwYW4pLCB3aGljaCByZXBvcnRzIHRoZSBmaW5lci1ncmFpbmVkXG4gKiBob2lzdGVkLXdyaXRlIG91dGNvbWU7IHRoaXMgb25lIGlzIHRoZSBUVFIgZGltZW5zaW9uIGFuZCBzaGFyZXMgdGhlIG1ldHJpYydzXG4gKiB0aHJlZS12YWx1ZSB2b2NhYnVsYXJ5LlxuICovXG5leHBvcnQgY29uc3QgUmVzdW1lU2V0dXBTb3VyY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdob29rX3ByZWxvYWQnIHwgJ3J1bl9zdGFydGVkJyB8ICdldmVudF9sb2FkJ1xuPignd29ya2Zsb3cucmVzdW1lLnNldHVwX3NvdXJjZScpO1xuXG4vKiogV2hldGhlciB0aGUgbWVhc3VyZWQgc3RlcCByYW4gaW4gdGhlIHJlc3VtaW5nIGludm9jYXRpb24gb3IgYSBxdWV1ZWQgb25lLiAqL1xuZXhwb3J0IGNvbnN0IFJlc3VtZVN0ZXBFeGVjdXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248J2lubGluZScgfCAnZGlzcGF0Y2hlZCc+KFxuICAnd29ya2Zsb3cucmVzdW1lLnN0ZXBfZXhlY3V0aW9uJ1xuKTtcblxuLy8gV2ViaG9vayBhdHRyaWJ1dGVzXG5cbi8qKiBOdW1iZXIgb2Ygd2ViaG9vayBoYW5kbGVycyB0cmlnZ2VyZWQgKi9cbmV4cG9ydCBjb25zdCBXZWJob29rSGFuZGxlcnNUcmlnZ2VyZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dlYmhvb2suaGFuZGxlcnMudHJpZ2dlcmVkJ1xuKTtcblxuLy8gU3VzcGVuc2lvbiBhdHRyaWJ1dGVzXG5cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25TdGF0ZSA9IFNlbWFudGljQ29udmVudGlvbjwnc3VzcGVuZGVkJz4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLnN0YXRlJ1xuKTtcbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25Ib29rQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24uaG9va19jb3VudCdcbik7XG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uU3RlcENvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLnN0ZXBfY291bnQnXG4pO1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvbldhaXRDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi53YWl0X2NvdW50J1xuKTtcblxuLy8gV29ybGQvU3RvcmFnZSBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBIVFRQIGNvbnZlbnRpb25zXG4vLyBTZWU6IGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvaHR0cC9odHRwLXNwYW5zL1xuXG4vKiogSFRUUCByZXF1ZXN0IG1ldGhvZCAoc3RhbmRhcmQgT1RFTDogaHR0cC5yZXF1ZXN0Lm1ldGhvZCkgKi9cbmV4cG9ydCBjb25zdCBIdHRwUmVxdWVzdE1ldGhvZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnaHR0cC5yZXF1ZXN0Lm1ldGhvZCdcbik7XG5cbi8qKiBSb3V0ZSBwYXR0ZXJuIGZvciB0aGUgcmVxdWVzdCAoc3RhbmRhcmQgT1RFTDogaHR0cC5yb3V0ZSkgKi9cbmV4cG9ydCBjb25zdCBIdHRwUm91dGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignaHR0cC5yb3V0ZScpO1xuXG4vKiogRnVsbCBVUkwgb2YgdGhlIHJlcXVlc3QgKHN0YW5kYXJkIE9URUw6IHVybC5mdWxsKSAqL1xuZXhwb3J0IGNvbnN0IFVybEZ1bGwgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigndXJsLmZ1bGwnKTtcblxuLyoqIFNlcnZlciBob3N0bmFtZSAoc3RhbmRhcmQgT1RFTDogc2VydmVyLmFkZHJlc3MpICovXG5leHBvcnQgY29uc3QgU2VydmVyQWRkcmVzcyA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzZXJ2ZXIuYWRkcmVzcycpO1xuXG4vKiogU2VydmVyIHBvcnQgKHN0YW5kYXJkIE9URUw6IHNlcnZlci5wb3J0KSAqL1xuZXhwb3J0IGNvbnN0IFNlcnZlclBvcnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc2VydmVyLnBvcnQnKTtcblxuLyoqIEhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgKHN0YW5kYXJkIE9URUw6IGh0dHAucmVzcG9uc2Uuc3RhdHVzX2NvZGUpICovXG5leHBvcnQgY29uc3QgSHR0cFJlc3BvbnNlU3RhdHVzQ29kZSA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnaHR0cC5yZXNwb25zZS5zdGF0dXNfY29kZSdcbik7XG5cbi8qKiBFcnJvciB0eXBlIHdoZW4gcmVxdWVzdCBmYWlscyAoc3RhbmRhcmQgT1RFTDogZXJyb3IudHlwZSkgKi9cbmV4cG9ydCBjb25zdCBFcnJvclR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignZXJyb3IudHlwZScpO1xuXG4vLyBXb3JsZC1zcGVjaWZpYyBjdXN0b20gYXR0cmlidXRlcyAoZm9yIHdvcmtmbG93LXNwZWNpZmljIGNvbnRleHQpXG5cbi8qKiBGb3JtYXQgdXNlZCBmb3IgcGFyc2luZyByZXNwb25zZSBib2R5IChjYm9yIG9yIGpzb24pICovXG5leHBvcnQgY29uc3QgV29ybGRQYXJzZUZvcm1hdCA9IFNlbWFudGljQ29udmVudGlvbjwnY2JvcicgfCAnanNvbic+KFxuICAnd29ya2Zsb3cud29ybGQucGFyc2UuZm9ybWF0J1xuKTtcblxuLy8gRXZlbnQgbG9hZGluZyBhdHRyaWJ1dGVzXG5cbi8qKiBOdW1iZXIgb2YgcGFnaW5hdGlvbiBwYWdlcyBsb2FkZWQgd2hlbiBmZXRjaGluZyB3b3JrZmxvdyBldmVudHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0V2ZW50c1BhZ2VzTG9hZGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ldmVudHMucGFnZXNfbG9hZGVkJ1xuKTtcblxuLy8gUXVldWUgdGltaW5nIGJyZWFrZG93biBhdHRyaWJ1dGVzICh3b3JrZmxvdy1zcGVjaWZpYylcblxuLyoqIFRpbWUgc3BlbnQgZGVzZXJpYWxpemluZyB0aGUgcXVldWUgbWVzc2FnZSBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZURlc2VyaWFsaXplVGltZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5kZXNlcmlhbGl6ZV90aW1lX21zJ1xuKTtcblxuLyoqIFRpbWUgc3BlbnQgZXhlY3V0aW5nIHRoZSBoYW5kbGVyIGxvZ2ljIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlRXhlY3V0aW9uVGltZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5leGVjdXRpb25fdGltZV9tcydcbik7XG5cbi8qKiBUaW1lIHNwZW50IHNlcmlhbGl6aW5nIHRoZSByZXNwb25zZSBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZVNlcmlhbGl6ZVRpbWVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucXVldWUuc2VyaWFsaXplX3RpbWVfbXMnXG4pO1xuXG4vLyBQYXlsb2FkIGNvbXByZXNzaW9uIGF0dHJpYnV0ZXMgKHpzdGQgcHJlZmVycmVkLCBnemlwIGZhbGxiYWNrOyBzcGVjVmVyc2lvbiA+PSA1KVxuLy9cbi8vIFNpemVzIGFyZSBtZWFzdXJlZCBhdCB0aGUgY29tcHJlc3Npb24gYm91bmRhcnk6IGJlZm9yZSBlbmNyeXB0aW9uIG9uIHRoZVxuLy8gd3JpdGUgcGF0aCBhbmQgYWZ0ZXIgZGVjcnlwdGlvbiBvbiB0aGUgcmVhZCBwYXRoLiBUaGV5IHRoZXJlZm9yZSByZWZsZWN0XG4vLyBjb21wcmVzc2lvbidzIGVmZmVjdCwgbm90IHRoZSBhdC1yZXN0IHNpemUgKHdoaWNoIGFsc28gaW5jbHVkZXMgdGhlXG4vLyB+MjgtYnl0ZSBgZW5jcmAgZW52ZWxvcGUgYW5kLCBvbiBzb21lIGJhY2tlbmRzLCBiYXNlNjQgZXhwYW5zaW9uKS5cblxuLyoqIFdoZXRoZXIgdGhpcyBzZXJpYWxpemUvZGVzZXJpYWxpemUgd2FzIGEgd3JpdGUgb3IgcmVhZC4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uT3BlcmF0aW9uID0gU2VtYW50aWNDb252ZW50aW9uPFxuICAnc2VyaWFsaXplJyB8ICdkZXNlcmlhbGl6ZSdcbj4oJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24ub3BlcmF0aW9uJyk7XG5cbi8qKiBXaGV0aGVyIGEgY29tcHJlc3Npb24gY29kZWMgd2FzIGFwcGxpZWQgKHdyaXRlKSAvIHByZXNlbnQgKHJlYWQpLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25Db21wcmVzc2VkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5jb21wcmVzc2VkJ1xuKTtcblxuLyoqIFdoaWNoIGNvbXByZXNzaW9uIGNvZGVjIGFwcGxpZWQgLyB3YXMgcHJlc2VudCAoYHpzdGRgLCBgZ3ppcGAsIG9yIGBub25lYCkuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkNvZGVjID0gU2VtYW50aWNDb252ZW50aW9uPCd6c3RkJyB8ICdnemlwJyB8ICdub25lJz4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmNvZGVjJ1xuKTtcblxuLyoqIExvZ2ljYWwgKHVuY29tcHJlc3NlZCwgZGV2YWx1ZS1wcmVmaXhlZCkgcGF5bG9hZCBzaXplIGluIGJ5dGVzLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25VbmNvbXByZXNzZWRCeXRlcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi51bmNvbXByZXNzZWRfYnl0ZXMnXG4pO1xuXG4vKiogU3RvcmVkIChwb3N0LWNvbXByZXNzaW9uLCBwcmUtZW5jcnlwdGlvbikgcGF5bG9hZCBzaXplIGluIGJ5dGVzLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25TdG9yZWRCeXRlcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5zdG9yZWRfYnl0ZXMnXG4pO1xuXG4vKiogRnJhY3Rpb24gb2YgYnl0ZXMgc2F2ZWQgYnkgY29tcHJlc3Npb24gKDAuLjEpOyBzZXQgb25seSB3aGVuIGNvbXByZXNzZWQuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkNvbXByZXNzaW9uUmF0aW8gPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uY29tcHJlc3Npb25fcmF0aW8nXG4pO1xuXG4vKipcbiAqIE51bWJlciBvZiB3b3JrZmxvdyAoZ3Vlc3QpIGNvZGUgZXhlY3V0aW9ucyBzZXJpYWxpemF0aW9uIGNvdWxkIG5vdCBhdm9pZFxuICogKGdldHRlcnMsIHByb3hpZXMsIGN1c3RvbSBzZXJpYWxpemVycyk7IHNldCBvbmx5IHdoZW4gbm9uLXplcm8uXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uR3Vlc3RDb2RlRXhlY3V0aW9ucyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5ndWVzdF9jb2RlX2V4ZWN1dGlvbnMnXG4pO1xuXG4vKipcbiAqIERlZHVwbGljYXRlZCBga2luZCAoZGV0YWlsKWAgZGVzY3JpcHRpb25zIG9mIHRoZSBndWVzdC1jb2RlIGV4ZWN1dGlvbnM7XG4gKiBzZXQgb25seSB3aGVuIG5vbi16ZXJvLlxuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkd1ZXN0Q29kZURldGFpbHMgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nW10+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5ndWVzdF9jb2RlX2RldGFpbHMnXG4pO1xuXG4vLyBSUEMvUGVlciBTZXJ2aWNlIGF0dHJpYnV0ZXMgLSBGb3Igc2VydmljZSBtYXBzIGFuZCBkZXBlbmRlbmN5IHRyYWNraW5nXG4vLyBTZWU6IGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvcnBjL3JwYy1zcGFucy9cblxuLyoqIFRoZSByZW1vdGUgc2VydmljZSBuYW1lIGZvciBEYXRhZG9nIHNlcnZpY2UgbWFwcyAoRGF0YWRvZy1zcGVjaWZpYzogcGVlci5zZXJ2aWNlKSAqL1xuZXhwb3J0IGNvbnN0IFBlZXJTZXJ2aWNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3BlZXIuc2VydmljZScpO1xuXG4vKiogUlBDIHN5c3RlbSBpZGVudGlmaWVyIChzdGFuZGFyZCBPVEVMOiBycGMuc3lzdGVtKSAqL1xuZXhwb3J0IGNvbnN0IFJwY1N5c3RlbSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdycGMuc3lzdGVtJyk7XG5cbi8qKiBSUEMgc2VydmljZSBuYW1lIChzdGFuZGFyZCBPVEVMOiBycGMuc2VydmljZSkgKi9cbmV4cG9ydCBjb25zdCBScGNTZXJ2aWNlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5zZXJ2aWNlJyk7XG5cbi8qKiBSUEMgbWV0aG9kIG5hbWUgKHN0YW5kYXJkIE9URUw6IHJwYy5tZXRob2QpICovXG5leHBvcnQgY29uc3QgUnBjTWV0aG9kID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5tZXRob2QnKTtcblxuLy8gRXJyb3IgYXR0cmlidXRlcyAtIFN0YW5kYXJkIE9URUwgZXJyb3IgY29udmVudGlvbnNcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9leGNlcHRpb25zL2V4Y2VwdGlvbnMtc3BhbnMvXG5cbi8qKiBXaGV0aGVyIHRoZSBlcnJvciBpcyByZXRyeWFibGUgKHdvcmtmbG93LXNwZWNpZmljKSAqL1xuZXhwb3J0IGNvbnN0IEVycm9yUmV0cnlhYmxlID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCdlcnJvci5yZXRyeWFibGUnKTtcblxuLyoqIEVycm9yIGNhdGVnb3J5ICh3b3JrZmxvdy1zcGVjaWZpYzogZmF0YWwsIHJldHJ5YWJsZSwgdHJhbnNpZW50KSAqL1xuZXhwb3J0IGNvbnN0IEVycm9yQ2F0ZWdvcnkgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdmYXRhbCcgfCAncmV0cnlhYmxlJyB8ICd0cmFuc2llbnQnXG4+KCdlcnJvci5jYXRlZ29yeScpO1xuIl19
|
package/dist/telemetry.d.ts
CHANGED
|
@@ -73,6 +73,18 @@ export declare function deserializeTraceCarrier(traceCarrier: Record<string, str
|
|
|
73
73
|
*/
|
|
74
74
|
export declare function withTraceContext<T>(traceCarrier: Record<string, string> | undefined, fn: () => Promise<T>): Promise<T>;
|
|
75
75
|
export declare function trace<T>(spanName: string, ...args: [fn: (span?: Span) => Promise<T>] | [opts: SpanOptions, fn: (span?: Span) => Promise<T>]): Promise<T>;
|
|
76
|
+
/** Starts a child span without installing it as the active context. */
|
|
77
|
+
export declare function startTraceSpan(spanName: string): Promise<{
|
|
78
|
+
end: () => void;
|
|
79
|
+
fail: (error: unknown) => void;
|
|
80
|
+
}>;
|
|
81
|
+
/** Bind work to the currently active span even when it starts from a child. */
|
|
82
|
+
export declare function bindActiveTraceContext<Args extends unknown[], Result>(fn: (...args: Args) => Result): Promise<(...args: Args) => Result>;
|
|
83
|
+
/** Keeps a parked workflow's ambient trace context aligned with each resume. */
|
|
84
|
+
export declare function createRefreshableTraceContext(): Promise<{
|
|
85
|
+
refresh(): void;
|
|
86
|
+
run: <T>(fn: () => T) => T;
|
|
87
|
+
}>;
|
|
76
88
|
/**
|
|
77
89
|
* Emit a span whose start is back-dated to `startEpochMs` and whose end is now,
|
|
78
90
|
* so its duration reflects an interval only measurable at its end (e.g.
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAQjD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAaxD;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAcxD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAMjC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO7E;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,oCAMrC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|