@wireio/shared 1.0.70 → 1.0.72
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/lib/cjs/errors/NestedError.d.ts +110 -6
- package/lib/cjs/errors/NestedError.d.ts.map +1 -1
- package/lib/cjs/errors/NestedError.js +139 -9
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -1
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.js +1 -1
- package/lib/cjs/logging/appenders/push/PushLogRecordsAppender.d.ts.map +1 -1
- package/lib/cjs/logging/appenders/push/PushLogRecordsAppender.js +1 -2
- package/lib/esm/errors/NestedError.d.ts +110 -6
- package/lib/esm/errors/NestedError.d.ts.map +1 -1
- package/lib/esm/errors/NestedError.js +139 -9
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -1
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.js +1 -1
- package/lib/esm/logging/appenders/push/PushLogRecordsAppender.d.ts.map +1 -1
- package/lib/esm/logging/appenders/push/PushLogRecordsAppender.js +1 -2
- package/lib/test-cjs/errors/NestedError.test.js +81 -34
- package/lib/test-cjs/errors/NestedError.test.js.map +1 -1
- package/lib/tsconfig.cjs.jest.tsbuildinfo +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,114 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Structured, machine-readable diagnostic context captured at a {@link NestedError}
|
|
3
|
+
* throw site — the values that make a failure diagnosable (the `text` that failed to
|
|
4
|
+
* parse, a schema / type name, an id, …). Heterogeneous by nature, so the values are
|
|
5
|
+
* `unknown` (a documented type-erased bag, not a shortcut).
|
|
6
|
+
*/
|
|
7
|
+
export type NestedErrorContext = Record<string, unknown>;
|
|
8
|
+
/**
|
|
9
|
+
* Options for {@link NestedError} — what it preserves about the failure it wraps.
|
|
10
|
+
*/
|
|
11
|
+
export interface NestedErrorOptions<Context extends NestedErrorContext = NestedErrorContext> {
|
|
12
|
+
/**
|
|
13
|
+
* The originating error(s) — the root-cause chain that must NOT be swallowed. A
|
|
14
|
+
* non-Error thrown value is coerced to an Error; the first becomes the native
|
|
15
|
+
* ES2022 `Error.cause`.
|
|
16
|
+
*/
|
|
17
|
+
cause?: unknown;
|
|
18
|
+
/** Diagnostic context captured at the throw site. */
|
|
19
|
+
context?: Context;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* An Error that PRESERVES what it wraps instead of restringing it. Given a new
|
|
23
|
+
* message string, it ALSO retains the full cause chain: the originating error(s)
|
|
24
|
+
* survive as {@link NestedError.causes} (and the native `Error.cause`) — the real
|
|
25
|
+
* Error objects, so **each cause keeps its own stack trace and message** — and a
|
|
26
|
+
* nested-exception `Caused by:` section per cause is appended to this error's
|
|
27
|
+
* {@link NestedError.stack}, so the whole chain (each cause's stack + message) is
|
|
28
|
+
* visible wherever the error is printed, not only via the programmatic accessors.
|
|
29
|
+
* The diagnostic {@link NestedError.context} (the `text`, the schema / type name, …)
|
|
30
|
+
* is BOTH a structured property AND folded into the message.
|
|
31
|
+
*
|
|
32
|
+
* Never rewrite a caught error into a bare ``new Error(`… ${err.message}`)`` — that
|
|
33
|
+
* SWALLOWS the cause and the context. Wrap it:
|
|
34
|
+
* `new NestedError("…", { cause: err, context: { … } })`.
|
|
35
|
+
*/
|
|
36
|
+
export declare class NestedError<Context extends NestedErrorContext = NestedErrorContext> extends Error {
|
|
37
|
+
/** The originating error chain (flattened + coerced to Error); `causes[0]` is the native `.cause`. */
|
|
38
|
+
readonly causes: Error[];
|
|
39
|
+
/** The diagnostic context captured at the throw site. */
|
|
40
|
+
readonly context: Context;
|
|
41
|
+
/**
|
|
42
|
+
* @param message - The high-level failure description.
|
|
43
|
+
* @param options - The {@link NestedErrorOptions.cause} to preserve + the {@link NestedErrorOptions.context} to capture.
|
|
44
|
+
*/
|
|
45
|
+
constructor(message: string, options?: NestedErrorOptions<Context>);
|
|
4
46
|
}
|
|
5
47
|
export declare namespace NestedError {
|
|
6
|
-
|
|
7
|
-
|
|
48
|
+
/** Max characters of any single context value folded into the message — long `text` is truncated. */
|
|
49
|
+
const ContextPreviewMaxChars = 200;
|
|
50
|
+
/** The marker appended when a folded context value is truncated. */
|
|
51
|
+
const TruncationSuffix = "\u2026";
|
|
52
|
+
/** Prefix marking each retained cause in the composed stack (nested-exception style). */
|
|
53
|
+
const CausedByPrefix = "Caused by: ";
|
|
54
|
+
/**
|
|
55
|
+
* Append a `Caused by:` section per cause to `stack`, so every cause's stack trace
|
|
56
|
+
* AND message stay visible in `.stack` (and any logger that prints it) — not only
|
|
57
|
+
* via the programmatic {@link NestedError.causes} / native `Error.cause`. Each
|
|
58
|
+
* cause's own `.stack` already begins with its `name: message`, so both are kept.
|
|
59
|
+
*
|
|
60
|
+
* @param stack - The wrapping error's own stack (may be undefined in exotic runtimes).
|
|
61
|
+
* @param causes - The retained cause chain.
|
|
62
|
+
* @returns The wrapping stack with one appended `Caused by:` section per cause.
|
|
63
|
+
*/
|
|
64
|
+
function composeStack(stack: string | undefined, causes: Error[]): string;
|
|
65
|
+
/**
|
|
66
|
+
* Create a {@link NestedError}.
|
|
67
|
+
*
|
|
68
|
+
* @param message - The high-level failure description.
|
|
69
|
+
* @param options - The cause to preserve + the context to capture.
|
|
70
|
+
* @returns The constructed error.
|
|
71
|
+
*/
|
|
72
|
+
function create<Context extends NestedErrorContext = NestedErrorContext>(message: string, options?: NestedErrorOptions<Context>): NestedError<Context>;
|
|
73
|
+
/**
|
|
74
|
+
* Create + throw a {@link NestedError}.
|
|
75
|
+
*
|
|
76
|
+
* @param message - The high-level failure description.
|
|
77
|
+
* @param options - The cause to preserve + the context to capture.
|
|
78
|
+
*/
|
|
79
|
+
function throwError<Context extends NestedErrorContext = NestedErrorContext>(message: string, options?: NestedErrorOptions<Context>): never;
|
|
80
|
+
/**
|
|
81
|
+
* Coerce a thrown value (an Error, an array of them, or any value) into a flat
|
|
82
|
+
* `Error[]`, so a caught `unknown` can be preserved as a cause without loss.
|
|
83
|
+
*
|
|
84
|
+
* @param cause - The caught / rejected value.
|
|
85
|
+
* @returns The coerced error chain (empty when `cause` is nullish).
|
|
86
|
+
*/
|
|
87
|
+
function toErrors(cause: unknown): Error[];
|
|
88
|
+
/**
|
|
89
|
+
* Coerce a single thrown value into an Error (Errors pass through unchanged).
|
|
90
|
+
*
|
|
91
|
+
* @param value - The caught value.
|
|
92
|
+
* @returns `value` when it is an Error, else a new Error wrapping its string form.
|
|
93
|
+
*/
|
|
94
|
+
function toError(value: unknown): Error;
|
|
95
|
+
/**
|
|
96
|
+
* Fold a compact, truncated {@link NestedErrorContext} summary into the message so
|
|
97
|
+
* it is visible wherever the message is (logs, stack traces), not only on the
|
|
98
|
+
* `.context` property.
|
|
99
|
+
*
|
|
100
|
+
* @param message - The base message.
|
|
101
|
+
* @param context - The context to summarize, if any.
|
|
102
|
+
* @returns `message` with a ` (key=value, …)` suffix when context is non-empty.
|
|
103
|
+
*/
|
|
104
|
+
function composeMessage(message: string, context?: NestedErrorContext): string;
|
|
105
|
+
/**
|
|
106
|
+
* Render one context value for the message suffix — strings verbatim, everything
|
|
107
|
+
* else via a bigint-/cycle-safe form, truncated to {@link ContextPreviewMaxChars}.
|
|
108
|
+
*
|
|
109
|
+
* @param value - The context value.
|
|
110
|
+
* @returns The truncated preview string.
|
|
111
|
+
*/
|
|
112
|
+
function previewValue(value: unknown): string;
|
|
8
113
|
}
|
|
9
|
-
export default NestedError;
|
|
10
114
|
//# sourceMappingURL=NestedError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NestedError.d.ts","sourceRoot":"","sources":["../../../src/errors/NestedError.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"NestedError.d.ts","sourceRoot":"","sources":["../../../src/errors/NestedError.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB;IAEvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,WAAW,CACtB,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,CACvD,SAAQ,KAAK;IACb,sGAAsG;IACtG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA;IAExB,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IAEzB;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAkB,CAAC,OAAO,CAAM;CAcvE;AAED,yBAAiB,WAAW,CAAC;IAC3B,qGAAqG;IAC9F,MAAM,sBAAsB,MAAM,CAAA;IAEzC,oEAAoE;IAC7D,MAAM,gBAAgB,WAAM,CAAA;IAEnC,yFAAyF;IAClF,MAAM,cAAc,gBAAgB,CAAA;IAE3C;;;;;;;;;OASG;IACH,SAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAM/E;IAED;;;;;;OAMG;IACH,SAAgB,MAAM,CAAC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EAC5E,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAkB,CAAC,OAAO,CAAM,GACxC,WAAW,CAAC,OAAO,CAAC,CAEtB;IAED;;;;;OAKG;IACH,SAAgB,UAAU,CACxB,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EACvD,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAkB,CAAC,OAAO,CAAM,GAAG,KAAK,CAEnE;IAED;;;;;;OAMG;IACH,SAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,CAIhD;IAED;;;;;OAKG;IACH,SAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAE7C;IAED;;;;;;;;OAQG;IACH,SAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,MAAM,CAOR;IAED;;;;;;OAMG;IACH,SAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD;CACF"}
|
|
@@ -1,20 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An Error that PRESERVES what it wraps instead of restringing it. Given a new
|
|
3
|
+
* message string, it ALSO retains the full cause chain: the originating error(s)
|
|
4
|
+
* survive as {@link NestedError.causes} (and the native `Error.cause`) — the real
|
|
5
|
+
* Error objects, so **each cause keeps its own stack trace and message** — and a
|
|
6
|
+
* nested-exception `Caused by:` section per cause is appended to this error's
|
|
7
|
+
* {@link NestedError.stack}, so the whole chain (each cause's stack + message) is
|
|
8
|
+
* visible wherever the error is printed, not only via the programmatic accessors.
|
|
9
|
+
* The diagnostic {@link NestedError.context} (the `text`, the schema / type name, …)
|
|
10
|
+
* is BOTH a structured property AND folded into the message.
|
|
11
|
+
*
|
|
12
|
+
* Never rewrite a caught error into a bare ``new Error(`… ${err.message}`)`` — that
|
|
13
|
+
* SWALLOWS the cause and the context. Wrap it:
|
|
14
|
+
* `new NestedError("…", { cause: err, context: { … } })`.
|
|
15
|
+
*/
|
|
1
16
|
export class NestedError extends Error {
|
|
17
|
+
/** The originating error chain (flattened + coerced to Error); `causes[0]` is the native `.cause`. */
|
|
2
18
|
causes;
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
/** The diagnostic context captured at the throw site. */
|
|
20
|
+
context;
|
|
21
|
+
/**
|
|
22
|
+
* @param message - The high-level failure description.
|
|
23
|
+
* @param options - The {@link NestedErrorOptions.cause} to preserve + the {@link NestedErrorOptions.context} to capture.
|
|
24
|
+
*/
|
|
25
|
+
constructor(message, options = {}) {
|
|
26
|
+
const causes = NestedError.toErrors(options.cause);
|
|
27
|
+
super(NestedError.composeMessage(message, options.context), causes.length > 0 ? { cause: causes[0] } : undefined);
|
|
5
28
|
this.name = "NestedError";
|
|
6
|
-
this.causes = causes
|
|
29
|
+
this.causes = causes;
|
|
30
|
+
this.context = options.context ?? {};
|
|
31
|
+
// Retain each cause's stack + message VISIBLY: append a `Caused by:` section
|
|
32
|
+
// per cause so the full chain shows in `.stack` (and any logger that prints it),
|
|
33
|
+
// not only via the programmatic `.causes` / native `.cause`.
|
|
34
|
+
this.stack = NestedError.composeStack(this.stack, causes);
|
|
7
35
|
}
|
|
8
36
|
}
|
|
9
37
|
(function (NestedError) {
|
|
10
|
-
|
|
11
|
-
|
|
38
|
+
/** Max characters of any single context value folded into the message — long `text` is truncated. */
|
|
39
|
+
NestedError.ContextPreviewMaxChars = 200;
|
|
40
|
+
/** The marker appended when a folded context value is truncated. */
|
|
41
|
+
NestedError.TruncationSuffix = "…";
|
|
42
|
+
/** Prefix marking each retained cause in the composed stack (nested-exception style). */
|
|
43
|
+
NestedError.CausedByPrefix = "Caused by: ";
|
|
44
|
+
/**
|
|
45
|
+
* Append a `Caused by:` section per cause to `stack`, so every cause's stack trace
|
|
46
|
+
* AND message stay visible in `.stack` (and any logger that prints it) — not only
|
|
47
|
+
* via the programmatic {@link NestedError.causes} / native `Error.cause`. Each
|
|
48
|
+
* cause's own `.stack` already begins with its `name: message`, so both are kept.
|
|
49
|
+
*
|
|
50
|
+
* @param stack - The wrapping error's own stack (may be undefined in exotic runtimes).
|
|
51
|
+
* @param causes - The retained cause chain.
|
|
52
|
+
* @returns The wrapping stack with one appended `Caused by:` section per cause.
|
|
53
|
+
*/
|
|
54
|
+
function composeStack(stack, causes) {
|
|
55
|
+
return causes.reduce((composed, cause) => `${composed}\n${NestedError.CausedByPrefix}${cause.stack ?? `${cause.name}: ${cause.message}`}`, stack ?? "");
|
|
56
|
+
}
|
|
57
|
+
NestedError.composeStack = composeStack;
|
|
58
|
+
/**
|
|
59
|
+
* Create a {@link NestedError}.
|
|
60
|
+
*
|
|
61
|
+
* @param message - The high-level failure description.
|
|
62
|
+
* @param options - The cause to preserve + the context to capture.
|
|
63
|
+
* @returns The constructed error.
|
|
64
|
+
*/
|
|
65
|
+
function create(message, options = {}) {
|
|
66
|
+
return new NestedError(message, options);
|
|
12
67
|
}
|
|
13
68
|
NestedError.create = create;
|
|
14
|
-
|
|
15
|
-
|
|
69
|
+
/**
|
|
70
|
+
* Create + throw a {@link NestedError}.
|
|
71
|
+
*
|
|
72
|
+
* @param message - The high-level failure description.
|
|
73
|
+
* @param options - The cause to preserve + the context to capture.
|
|
74
|
+
*/
|
|
75
|
+
function throwError(message, options = {}) {
|
|
76
|
+
throw create(message, options);
|
|
16
77
|
}
|
|
17
78
|
NestedError.throwError = throwError;
|
|
79
|
+
/**
|
|
80
|
+
* Coerce a thrown value (an Error, an array of them, or any value) into a flat
|
|
81
|
+
* `Error[]`, so a caught `unknown` can be preserved as a cause without loss.
|
|
82
|
+
*
|
|
83
|
+
* @param cause - The caught / rejected value.
|
|
84
|
+
* @returns The coerced error chain (empty when `cause` is nullish).
|
|
85
|
+
*/
|
|
86
|
+
function toErrors(cause) {
|
|
87
|
+
return (Array.isArray(cause) ? cause : cause == null ? [] : [cause]).map(toError);
|
|
88
|
+
}
|
|
89
|
+
NestedError.toErrors = toErrors;
|
|
90
|
+
/**
|
|
91
|
+
* Coerce a single thrown value into an Error (Errors pass through unchanged).
|
|
92
|
+
*
|
|
93
|
+
* @param value - The caught value.
|
|
94
|
+
* @returns `value` when it is an Error, else a new Error wrapping its string form.
|
|
95
|
+
*/
|
|
96
|
+
function toError(value) {
|
|
97
|
+
return value instanceof Error ? value : new Error(String(value));
|
|
98
|
+
}
|
|
99
|
+
NestedError.toError = toError;
|
|
100
|
+
/**
|
|
101
|
+
* Fold a compact, truncated {@link NestedErrorContext} summary into the message so
|
|
102
|
+
* it is visible wherever the message is (logs, stack traces), not only on the
|
|
103
|
+
* `.context` property.
|
|
104
|
+
*
|
|
105
|
+
* @param message - The base message.
|
|
106
|
+
* @param context - The context to summarize, if any.
|
|
107
|
+
* @returns `message` with a ` (key=value, …)` suffix when context is non-empty.
|
|
108
|
+
*/
|
|
109
|
+
function composeMessage(message, context) {
|
|
110
|
+
const entries = context == null ? [] : Object.entries(context);
|
|
111
|
+
return entries.length === 0
|
|
112
|
+
? message
|
|
113
|
+
: `${message} (${entries
|
|
114
|
+
.map(([key, value]) => `${key}=${previewValue(value)}`)
|
|
115
|
+
.join(", ")})`;
|
|
116
|
+
}
|
|
117
|
+
NestedError.composeMessage = composeMessage;
|
|
118
|
+
/**
|
|
119
|
+
* Render one context value for the message suffix — strings verbatim, everything
|
|
120
|
+
* else via a bigint-/cycle-safe form, truncated to {@link ContextPreviewMaxChars}.
|
|
121
|
+
*
|
|
122
|
+
* @param value - The context value.
|
|
123
|
+
* @returns The truncated preview string.
|
|
124
|
+
*/
|
|
125
|
+
function previewValue(value) {
|
|
126
|
+
const rendered = typeof value === "string" ? value : safeStringify(value);
|
|
127
|
+
return rendered.length > NestedError.ContextPreviewMaxChars
|
|
128
|
+
? `${rendered.slice(0, NestedError.ContextPreviewMaxChars)}${NestedError.TruncationSuffix}`
|
|
129
|
+
: rendered;
|
|
130
|
+
}
|
|
131
|
+
NestedError.previewValue = previewValue;
|
|
18
132
|
})(NestedError || (NestedError = {}));
|
|
19
|
-
|
|
20
|
-
|
|
133
|
+
/**
|
|
134
|
+
* A best-effort rendering of `value` for a message preview: JSON when serializable,
|
|
135
|
+
* else `String(value)`. Pure display fallback — a BigInt or a circular object makes
|
|
136
|
+
* `JSON.stringify` throw — NOT error handling, so the catch is a deliberate render
|
|
137
|
+
* fallback rather than a swallow.
|
|
138
|
+
*
|
|
139
|
+
* @param value - The value to render.
|
|
140
|
+
* @returns A single-line string form of `value`.
|
|
141
|
+
*/
|
|
142
|
+
function safeStringify(value) {
|
|
143
|
+
try {
|
|
144
|
+
return JSON.stringify(value) ?? String(value);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return String(value);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdGVkRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXJyb3JzL05lc3RlZEVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sT0FBTyxXQUVYLFNBQVEsS0FBSztJQUNiLHNHQUFzRztJQUM3RixNQUFNLENBQVM7SUFFeEIseURBQXlEO0lBQ2hELE9BQU8sQ0FBUztJQUV6Qjs7O09BR0c7SUFDSCxZQUFZLE9BQWUsRUFBRSxVQUF1QyxFQUFFO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xELEtBQUssQ0FDSCxXQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQ3BELE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNyRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUE7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFLLEVBQWMsQ0FBQTtRQUNqRCw2RUFBNkU7UUFDN0UsaUZBQWlGO1FBQ2pGLDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0NBQ0Y7QUFFRCxXQUFpQixXQUFXO0lBQzFCLHFHQUFxRztJQUN4RixrQ0FBc0IsR0FBRyxHQUFHLENBQUE7SUFFekMsb0VBQW9FO0lBQ3ZELDRCQUFnQixHQUFHLEdBQUcsQ0FBQTtJQUVuQyx5RkFB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QUMsRUEvR2dCLFdBQVcsS0FBWCxXQUFXLFFBK0czQjtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RydWN0dXJlZCwgbWFjaGluZS1yZWFkYWJsZSBkaWFnbm9zdGljIGNvbnRleHQgY2FwdHVyZWQgYXQgYSB7QGxpbmsgTmVzdGVkRXJyb3J9XG4gKiB0aHJvdyBzaXRlIOKAlCB0aGUgdmFsdWVzIHRoYXQgbWFrZSBhIGZhaWx1cmUgZGlhZ25vc2FibGUgKHRoZSBgdGV4dGAgdGhhdCBmYWlsZWQgdG9cbiAqIHBhcnNlLCBhIHNjaGVtYSAvIHR5cGUgbmFtZSwgYW4gaWQsIOKApikuIEhldGVyb2dlbmVvdXMgYnkgbmF0dXJlLCBzbyB0aGUgdmFsdWVzIGFyZVxuICogYHVua25vd25gIChhIGRvY3VtZW50ZWQgdHlwZS1lcmFzZWQgYmFnLCBub3QgYSBzaG9ydGN1dCkuXG4gKi9cbmV4cG9ydCB0eXBlIE5lc3RlZEVycm9yQ29udGV4dCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIE5lc3RlZEVycm9yfSDigJQgd2hhdCBpdCBwcmVzZXJ2ZXMgYWJvdXQgdGhlIGZhaWx1cmUgaXQgd3JhcHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmVzdGVkRXJyb3JPcHRpb25zPFxuICBDb250ZXh0IGV4dGVuZHMgTmVzdGVkRXJyb3JDb250ZXh0ID0gTmVzdGVkRXJyb3JDb250ZXh0XG4+IHtcbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hdGluZyBlcnJvcihzKSDigJQgdGhlIHJvb3QtY2F1c2UgY2hhaW4gdGhhdCBtdXN0IE5PVCBiZSBzd2FsbG93ZWQuIEFcbiAgICogbm9uLUVycm9yIHRocm93biB2YWx1ZSBpcyBjb2VyY2VkIHRvIGFuIEVycm9yOyB0aGUgZmlyc3QgYmVjb21lcyB0aGUgbmF0aXZlXG4gICAqIEVTMjAyMiBgRXJyb3IuY2F1c2VgLlxuICAgKi9cbiAgY2F1c2U/OiB1bmtub3duXG4gIC8qKiBEaWFnbm9zdGljIGNvbnRleHQgY2FwdHVyZWQgYXQgdGhlIHRocm93IHNpdGUuICovXG4gIGNvbnRleHQ/OiBDb250ZXh0XG59XG5cbi8qKlxuICogQW4gRXJyb3IgdGhhdCBQUkVTRVJWRVMgd2hhdCBpdCB3cmFwcyBpbnN0ZWFkIG9mIHJlc3RyaW5naW5nIGl0LiBHaXZlbiBhIG5ld1xuICogbWVzc2FnZSBzdHJpbmcsIGl0IEFMU08gcmV0YWlucyB0aGUgZnVsbCBjYXVzZSBjaGFpbjogdGhlIG9yaWdpbmF0aW5nIGVycm9yKHMpXG4gKiBzdXJ2aXZlIGFzIHtAbGluayBOZXN0ZWRFcnJvci5jYXVzZXN9IChhbmQgdGhlIG5hdGl2ZSBgRXJyb3IuY2F1c2VgKSDigJQgdGhlIHJlYWxcbiAqIEVycm9yIG9iamVjdHMsIHNvICoqZWFjaCBjYXVzZSBrZWVwcyBpdHMgb3duIHN0YWNrIHRyYWNlIGFuZCBtZXNzYWdlKiog4oCUIGFuZCBhXG4gKiBuZXN0ZWQtZXhjZXB0aW9uIGBDYXVzZWQgYnk6YCBzZWN0aW9uIHBlciBjYXVzZSBpcyBhcHBlbmRlZCB0byB0aGlzIGVycm9yJ3NcbiAqIHtAbGluayBOZXN0ZWRFcnJvci5zdGFja30sIHNvIHRoZSB3aG9sZSBjaGFpbiAoZWFjaCBjYXVzZSdzIHN0YWNrICsgbWVzc2FnZSkgaXNcbiAqIHZpc2libGUgd2hlcmV2ZXIgdGhlIGVycm9yIGlzIHByaW50ZWQsIG5vdCBvbmx5IHZpYSB0aGUgcHJvZ3JhbW1hdGljIGFjY2Vzc29ycy5cbiAqIFRoZSBkaWFnbm9zdGljIHtAbGluayBOZXN0ZWRFcnJvci5jb250ZXh0fSAodGhlIGB0ZXh0YCwgdGhlIHNjaGVtYSAvIHR5cGUgbmFtZSwg4oCmKVxuICogaXMgQk9USCBhIHN0cnVjdHVyZWQgcHJvcGVydHkgQU5EIGZvbGRlZCBpbnRvIHRoZSBtZXNzYWdlLlxuICpcbiAqIE5ldmVyIHJld3JpdGUgYSBjYXVnaHQgZXJyb3IgaW50byBhIGJhcmUgYGBuZXcgRXJyb3IoYOKApiAke2Vyci5tZXNzYWdlfWApYGAg4oCUIHRoYXRcbiAqIFNXQUxMT1dTIHRoZSBjYXVzZSBhbmQgdGhlIGNvbnRleHQuIFdyYXAgaXQ6XG4gKiBgbmV3IE5lc3RlZEVycm9yKFwi4oCmXCIsIHsgY2F1c2U6IGVyciwgY29udGV4dDogeyDigKYgfSB9KWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXN0ZWRFcnJvcjxcbiAgQ29udGV4dCBleHRlbmRzIE5lc3RlZEVycm9yQ29udGV4dCA9IE5lc3RlZEVycm9yQ29udGV4dFxuPiBleHRlbmRzIEVycm9yIHtcbiAgLyoqIFRoZSBvcmlnaW5hdGluZyBlcnJvciBjaGFpbiAoZmxhdHRlbmVkICsgY29lcmNlZCB0byBFcnJvcik7IGBjYXVzZXNbMF1gIGlzIHRoZSBuYXRpdmUgYC5jYXVzZWAuICovXG4gIHJlYWRvbmx5IGNhdXNlczogRXJyb3JbXVxuXG4gIC8qKiBUaGUgZGlhZ25vc3RpYyBjb250ZXh0IGNhcHR1cmVkIGF0IHRoZSB0aHJvdyBzaXRlLiAqL1xuICByZWFkb25seSBjb250ZXh0OiBDb250ZXh0XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGhpZ2gtbGV2ZWwgZmFpbHVyZSBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIE5lc3RlZEVycm9yT3B0aW9ucy5jYXVzZX0gdG8gcHJlc2VydmUgKyB0aGUge0BsaW5rIE5lc3RlZEVycm9yT3B0aW9ucy5jb250ZXh0fSB0byBjYXB0dXJlLlxuICAgKi9cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBvcHRpb25zOiBOZXN0ZWRFcnJvck9wdGlvbnM8Q29udGV4dD4gPSB7fSkge1xuICAgIGNvbnN0IGNhdXNlcyA9IE5lc3RlZEVycm9yLnRvRXJyb3JzKG9wdGlvbnMuY2F1c2UpXG4gICAgc3VwZXIoXG4gICAgICBOZXN0ZWRFcnJvci5jb21wb3NlTWVzc2FnZShtZXNzYWdlLCBvcHRpb25zLmNvbnRleHQpLFxuICAgICAgY2F1c2VzLmxlbmd0aCA+IDAgPyB7IGNhdXNlOiBjYXVzZXNbMF0gfSA6IHVuZGVmaW5lZFxuICAgIClcbiAgICB0aGlzLm5hbWUgPSBcIk5lc3RlZEVycm9yXCJcbiAgICB0aGlzLmNhdXNlcyA9IGNhdXNlc1xuICAgIHRoaXMuY29udGV4dCA9IG9wdGlvbnMuY29udGV4dCA/PyAoe30gYXMgQ29udGV4dClcbiAgICAvLyBSZXRhaW4gZWFjaCBjYXVzZSdzIHN0YWNrICsgbWVzc2FnZSBWSVNJQkxZOiBhcHBlbmQgYSBgQ2F1c2VkIGJ5OmAgc2VjdGlvblxuICAgIC8vIHBlciBjYXVzZSBzbyB0aGUgZnVsbCBjaGFpbiBzaG93cyBpbiBgLnN0YWNrYCAoYW5kIGFueSBsb2dnZXIgdGhhdCBwcmludHMgaXQpLFxuICAgIC8vIG5vdCBvbmx5IHZpYSB0aGUgcHJvZ3JhbW1hdGljIGAuY2F1c2VzYCAvIG5hdGl2ZSBgLmNhdXNlYC5cbiAgICB0aGlzLnN0YWNrID0gTmVzdGVkRXJyb3IuY29tcG9zZVN0YWNrKHRoaXMuc3RhY2ssIGNhdXNlcylcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIE5lc3RlZEVycm9yIHtcbiAgLyoqIE1heCBjaGFyYWN0ZXJzIG9mIGFueSBzaW5nbGUgY29udGV4dCB2YWx1ZSBmb2xkZWQgaW50byB0aGUgbWVzc2FnZSDigJQgbG9uZyBgdGV4dGAgaXMgdHJ1bmNhdGVkLiAqL1xuICBleHBvcnQgY29uc3QgQ29udGV4dFByZXZpZXdNYXhDaGFycyA9IDIwMFxuXG4gIC8qKiBUaGUgbWFya2VyIGFwcGVuZGVkIHdoZW4gYSBmb2xkZWQgY29udGV4dCB2YWx1ZSBpcyB0cnVuY2F0ZWQuICovXG4gIGV4cG9ydCBjb25zdCBUcnVuY2F0aW9uU3VmZml4ID0gXCLigKZcIlxuXG4gIC8qKiBQcmVmaXggbWFya2luZyBlYWNoIHJldGFpbmVkIGNhdXNlIGluIHRoZSBjb21wb3NlZCBzdGFjayAobmVzdGVkLWV4Y2VwdGlvbiBzdHlsZSkuICovXG4gIGV4cG9ydCBjb25zdCBDYXVzZWRCeVByZWZpeCA9IFwiQ2F1c2VkIGJ5OiBcIlxuXG4gIC8qKlxuICAgKiBBcHBlbmQgYSBgQ2F1c2VkIGJ5OmAgc2VjdGlvbiBwZXIgY2F1c2UgdG8gYHN0YWNrYCwgc28gZXZlcnkgY2F1c2UncyBzdGFjayB0cmFjZVxuICAgKiBBTkQgbWVzc2FnZSBzdGF5IHZpc2libGUgaW4gYC5zdGFja2AgKGFuZCBhbnkgbG9nZ2VyIHRoYXQgcHJpbnRzIGl0KSDigJQgbm90IG9ubHlcbiAgICogdmlhIHRoZSBwcm9ncmFtbWF0aWMge0BsaW5rIE5lc3RlZEVycm9yLmNhdXNlc30gLyBuYXRpdmUgYEVycm9yLmNhdXNlYC4gRWFjaFxuICAgKiBjYXVzZSdzIG93biBgLnN0YWNrYCBhbHJlYWR5IGJlZ2lucyB3aXRoIGl0cyBgbmFtZTogbWVzc2FnZWAsIHNvIGJvdGggYXJlIGtlcHQuXG4gICAqXG4gICAqIEBwYXJhbSBzdGFjayAtIFRoZSB3cmFwcGluZyBlcnJvcidzIG93biBzdGFjayAobWF5IGJlIHVuZGVmaW5lZCBpbiBleG90aWMgcnVudGltZXMpLlxuICAgKiBAcGFyYW0gY2F1c2VzIC0gVGhlIHJldGFpbmVkIGNhdXNlIGNoYWluLlxuICAgKiBAcmV0dXJucyBUaGUgd3JhcHBpbmcgc3RhY2sgd2l0aCBvbmUgYXBwZW5kZWQgYENhdXNlZCBieTpgIHNlY3Rpb24gcGVyIGNhdXNlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VTdGFjayhzdGFjazogc3RyaW5nIHwgdW5kZWZpbmVkLCBjYXVzZXM6IEVycm9yW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBjYXVzZXMucmVkdWNlKFxuICAgICAgKGNvbXBvc2VkLCBjYXVzZSkgPT5cbiAgICAgICAgYCR7Y29tcG9zZWR9XFxuJHtDYXVzZWRCeVByZWZpeH0ke2NhdXNlLnN0YWNrID8/IGAke2NhdXNlLm5hbWV9OiAke2NhdXNlLm1lc3NhZ2V9YH1gLFxuICAgICAgc3RhY2sgPz8gXCJcIlxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB7QGxpbmsgTmVzdGVkRXJyb3J9LlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBoaWdoLWxldmVsIGZhaWx1cmUgZGVzY3JpcHRpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGNhdXNlIHRvIHByZXNlcnZlICsgdGhlIGNvbnRleHQgdG8gY2FwdHVyZS5cbiAgICogQHJldHVybnMgVGhlIGNvbnN0cnVjdGVkIGVycm9yLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZTxDb250ZXh0IGV4dGVuZHMgTmVzdGVkRXJyb3JDb250ZXh0ID0gTmVzdGVkRXJyb3JDb250ZXh0PihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgb3B0aW9uczogTmVzdGVkRXJyb3JPcHRpb25zPENvbnRleHQ+ID0ge31cbiAgKTogTmVzdGVkRXJyb3I8Q29udGV4dD4ge1xuICAgIHJldHVybiBuZXcgTmVzdGVkRXJyb3IobWVzc2FnZSwgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgKyB0aHJvdyBhIHtAbGluayBOZXN0ZWRFcnJvcn0uXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGhpZ2gtbGV2ZWwgZmFpbHVyZSBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgY2F1c2UgdG8gcHJlc2VydmUgKyB0aGUgY29udGV4dCB0byBjYXB0dXJlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHRocm93RXJyb3I8XG4gICAgQ29udGV4dCBleHRlbmRzIE5lc3RlZEVycm9yQ29udGV4dCA9IE5lc3RlZEVycm9yQ29udGV4dFxuICA+KG1lc3NhZ2U6IHN0cmluZywgb3B0aW9uczogTmVzdGVkRXJyb3JPcHRpb25zPENvbnRleHQ+ID0ge30pOiBuZXZlciB7XG4gICAgdGhyb3cgY3JlYXRlKG1lc3NhZ2UsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQ29lcmNlIGEgdGhyb3duIHZhbHVlIChhbiBFcnJvciwgYW4gYXJyYXkgb2YgdGhlbSwgb3IgYW55IHZhbHVlKSBpbnRvIGEgZmxhdFxuICAgKiBgRXJyb3JbXWAsIHNvIGEgY2F1Z2h0IGB1bmtub3duYCBjYW4gYmUgcHJlc2VydmVkIGFzIGEgY2F1c2Ugd2l0aG91dCBsb3NzLlxuICAgKlxuICAgKiBAcGFyYW0gY2F1c2UgLSBUaGUgY2F1Z2h0IC8gcmVqZWN0ZWQgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSBjb2VyY2VkIGVycm9yIGNoYWluIChlbXB0eSB3aGVuIGBjYXVzZWAgaXMgbnVsbGlzaCkuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gdG9FcnJvcnMoY2F1c2U6IHVua25vd24pOiBFcnJvcltdIHtcbiAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoY2F1c2UpID8gY2F1c2UgOiBjYXVzZSA9PSBudWxsID8gW10gOiBbY2F1c2VdKS5tYXAoXG4gICAgICB0b0Vycm9yXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIENvZXJjZSBhIHNpbmdsZSB0aHJvd24gdmFsdWUgaW50byBhbiBFcnJvciAoRXJyb3JzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQpLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgY2F1Z2h0IHZhbHVlLlxuICAgKiBAcmV0dXJucyBgdmFsdWVgIHdoZW4gaXQgaXMgYW4gRXJyb3IsIGVsc2UgYSBuZXcgRXJyb3Igd3JhcHBpbmcgaXRzIHN0cmluZyBmb3JtLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHRvRXJyb3IodmFsdWU6IHVua25vd24pOiBFcnJvciB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRXJyb3IgPyB2YWx1ZSA6IG5ldyBFcnJvcihTdHJpbmcodmFsdWUpKVxuICB9XG5cbiAgLyoqXG4gICAqIEZvbGQgYSBjb21wYWN0LCB0cnVuY2F0ZWQge0BsaW5rIE5lc3RlZEVycm9yQ29udGV4dH0gc3VtbWFyeSBpbnRvIHRoZSBtZXNzYWdlIHNvXG4gICAqIGl0IGlzIHZpc2libGUgd2hlcmV2ZXIgdGhlIG1lc3NhZ2UgaXMgKGxvZ3MsIHN0YWNrIHRyYWNlcyksIG5vdCBvbmx5IG9uIHRoZVxuICAgKiBgLmNvbnRleHRgIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBiYXNlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQgdG8gc3VtbWFyaXplLCBpZiBhbnkuXG4gICAqIEByZXR1cm5zIGBtZXNzYWdlYCB3aXRoIGEgYCAoa2V5PXZhbHVlLCDigKYpYCBzdWZmaXggd2hlbiBjb250ZXh0IGlzIG5vbi1lbXB0eS5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBjb21wb3NlTWVzc2FnZShcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgY29udGV4dD86IE5lc3RlZEVycm9yQ29udGV4dFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGVudHJpZXMgPSBjb250ZXh0ID09IG51bGwgPyBbXSA6IE9iamVjdC5lbnRyaWVzKGNvbnRleHQpXG4gICAgcmV0dXJuIGVudHJpZXMubGVuZ3RoID09PSAwXG4gICAgICA/IG1lc3NhZ2VcbiAgICAgIDogYCR7bWVzc2FnZX0gKCR7ZW50cmllc1xuICAgICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ByZXZpZXdWYWx1ZSh2YWx1ZSl9YClcbiAgICAgICAgICAuam9pbihcIiwgXCIpfSlgXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIG9uZSBjb250ZXh0IHZhbHVlIGZvciB0aGUgbWVzc2FnZSBzdWZmaXgg4oCUIHN0cmluZ3MgdmVyYmF0aW0sIGV2ZXJ5dGhpbmdcbiAgICogZWxzZSB2aWEgYSBiaWdpbnQtL2N5Y2xlLXNhZmUgZm9ybSwgdHJ1bmNhdGVkIHRvIHtAbGluayBDb250ZXh0UHJldmlld01heENoYXJzfS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGNvbnRleHQgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSB0cnVuY2F0ZWQgcHJldmlldyBzdHJpbmcuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gcHJldmlld1ZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCByZW5kZXJlZCA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogc2FmZVN0cmluZ2lmeSh2YWx1ZSlcbiAgICByZXR1cm4gcmVuZGVyZWQubGVuZ3RoID4gQ29udGV4dFByZXZpZXdNYXhDaGFyc1xuICAgICAgPyBgJHtyZW5kZXJlZC5zbGljZSgwLCBDb250ZXh0UHJldmlld01heENoYXJzKX0ke1RydW5jYXRpb25TdWZmaXh9YFxuICAgICAgOiByZW5kZXJlZFxuICB9XG59XG5cbi8qKlxuICogQSBiZXN0LWVmZm9ydCByZW5kZXJpbmcgb2YgYHZhbHVlYCBmb3IgYSBtZXNzYWdlIHByZXZpZXc6IEpTT04gd2hlbiBzZXJpYWxpemFibGUsXG4gKiBlbHNlIGBTdHJpbmcodmFsdWUpYC4gUHVyZSBkaXNwbGF5IGZhbGxiYWNrIOKAlCBhIEJpZ0ludCBvciBhIGNpcmN1bGFyIG9iamVjdCBtYWtlc1xuICogYEpTT04uc3RyaW5naWZ5YCB0aHJvdyDigJQgTk9UIGVycm9yIGhhbmRsaW5nLCBzbyB0aGUgY2F0Y2ggaXMgYSBkZWxpYmVyYXRlIHJlbmRlclxuICogZmFsbGJhY2sgcmF0aGVyIHRoYW4gYSBzd2FsbG93LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byByZW5kZXIuXG4gKiBAcmV0dXJucyBBIHNpbmdsZS1saW5lIHN0cmluZyBmb3JtIG9mIGB2YWx1ZWAuXG4gKi9cbmZ1bmN0aW9uIHNhZmVTdHJpbmdpZnkodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgPz8gU3RyaW5nKHZhbHVlKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"AAMA,OAAO,4BAEN,MAAM,mCAAmC,CAAA;AAI1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAmB5C,qBAAa,mBAAmB,CAC9B,MAAM,SAAS,SAAS,GAAG,SAAS,CACpC,YAAW,QAAQ,CAAC,MAAM,CAAC;aAOC,qBAAqB,EAAE,MAAM;IANzD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAO;IAE9B,SAAgB,iBAAiB,EAAE,4BAA4B,CAAA;gBAEnC,qBAAqB,EAAE,MAAM;IAoBzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmB5B;;;;OAIG;YACW,WAAW;IAgBzB;;;;OAIG;YACW,KAAK;CA0EpB;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -134,4 +134,4 @@ export class AWSFirehoseAppender {
|
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
export default AWSFirehoseAppender;
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLDRCQUVOLE1BQU0sbUNBQW1DLENBQUE7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFJcEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUE7QUFDaEMsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO0FBQy9CLElBQUksY0FBYyxHQUF1RCxJQUFJLENBQUE7QUFFN0UsU0FBUyxpQkFBaUI7SUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLGNBQWMsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUQsY0FBYyxHQUFHLElBQUksQ0FBQTtZQUNyQixNQUFNLEdBQUcsQ0FBQTtRQUNYLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFBO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBU0Y7SUFOcEIsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQTtJQUVkLGlCQUFpQixDQUE4QjtJQUUvRCxZQUE0QixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLDRC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QUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDckMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBQ2pELENBQUM7WUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRXpCLGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFFRCxlQUFlLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHR5cGUge1xuICBGaXJlaG9zZUNsaWVudCxcbiAgUHV0UmVjb3JkQmF0Y2hJbnB1dFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWZpcmVob3NlXCJcbmltcG9ydCB7IExldmVsIH0gZnJvbSBcIi4uLy4uL0xldmVsLmpzXCJcblxuaW1wb3J0IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIsIHtcbiAgdHlwZSBBV1NDcmVkZW50aWFsc1xufSBmcm9tIFwiLi9BV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyLmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcbmltcG9ydCB7IHBpY2sgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IERlZmVycmVkIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvaW5kZXguanNcIlxuaW1wb3J0IHsgTG9nUmVjb3JkIH0gZnJvbSBcIi4uLy4uL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBBcHBlbmRlciB9IGZyb20gXCIuLi8uLi9BcHBlbmRlci5qc1wiXG5cbmNvbnN0IExvZ1F1ZXVlTWF4UmVjb3JkcyA9IDEwMDAwXG5jb25zdCBFeHBpcmVkVG9rZW5FeGNlcHRpb25Db2RlID0gXCJFeHBpcmVkVG9rZW5FeGNlcHRpb25cIlxuXG5jb25zdCBsb2cgPSBnZXRJbnRlcm5hbExvZ2dlcigpXG5sZXQgZmlyZWhvc2VNb2R1bGU6IFByb21pc2U8dHlwZW9mIGltcG9ydChcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiKT4gPSBudWxsXG5cbmZ1bmN0aW9uIGdldEZpcmVob3NlTW9kdWxlKCkge1xuICBpZiAoIWZpcmVob3NlTW9kdWxlKSB7XG4gICAgZmlyZWhvc2VNb2R1bGUgPSBpbXBvcnQoXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIikuY2F0Y2goZXJyID0+IHtcbiAgICAgIGZpcmVob3NlTW9kdWxlID0gbnVsbFxuICAgICAgdGhyb3cgZXJyXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBmaXJlaG9zZU1vZHVsZVxufVxuXG5leHBvcnQgY2xhc3MgQVdTRmlyZWhvc2VBcHBlbmRlcjxcbiAgUmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkID0gTG9nUmVjb3JkXG4+IGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHByaXZhdGUgcGVuZGluZ1JlY29yZHMgPSBBcnJheTxMb2dSZWNvcmQ+KClcbiAgcHJpdmF0ZSBmbHVzaERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPlxuICBwcml2YXRlIGZsdXNoSW50ZXJ2YWxNcyA9IDEwMDBcblxuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbE1hbmFnZXI6IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbEVuZHBvaW50VXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyID0gbmV3IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIoXG4gICAgICBjcmVkZW50aWFsRW5kcG9pbnRVcmxcbiAgICApXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5vbihcInJlY2VpdmVkXCIsICgpID0+IHtcbiAgICAgIGxvZy5pbmZvKFwiQ3JlZGVudGlhbHMgcmVjZWl2ZWQsIGluaXRpYWxpemluZyBmaXJlaG9zZSBjbGllbnRcIilcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggfHwgISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgICAgbG9nLmRlYnVnKFxuICAgICAgICAgIFwiTm90aGluZyB0byBmbHVzaCB1cG9uIGNyZWRlbnRpYWwgcmVjZWlwdCBPUiBmbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzXCJcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMuZmx1c2goKS5jYXRjaCgoZTogRXJyb3IpID0+IHtcbiAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgIGBFcnJvciBmbHVzaGluZyBsb2dzIGFmdGVyIGNyZWRlbnRpYWwgcmVjZWlwdDogJHtlLm1lc3NhZ2V9YCxcbiAgICAgICAgICBlXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuICBhcHBlbmQocmVjb3JkOiBSZWNvcmQpOiB2b2lkIHtcbiAgICBjb25zdCBwZW5kaW5nQ291bnQgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCArIDEsXG4gICAgICByZW1vdmVDb3VudCA9IExvZ1F1ZXVlTWF4UmVjb3JkcyAtIHBlbmRpbmdDb3VudFxuXG4gICAgaWYgKHJlbW92ZUNvdW50IDwgMCkge1xuICAgICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgTWF0aC5hYnMocmVtb3ZlQ291bnQpKVxuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ1JlY29yZHMucHVzaCh7XG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAuLi5yZWNvcmQsXG4gICAgICBhcHA6IHJlY29yZC5hcHA/Lmxlbmd0aCA+IDAgPyByZWNvcmQuYXBwIDogXCJVTktOT1dOXCIsXG4gICAgICBlbnY6IHJlY29yZC5lbnY/Lmxlbmd0aCA+IDAgPyByZWNvcmQuZW52IDogXCJVTktOT1dOXCIsXG4gICAgICB1cmw6IHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgPyBcImxvY2FsOi8vXCIgOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgIH0pXG5cbiAgICB0aGlzLmZsdXNoKClcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIEZpcmVob3NlIGNsaWVudCBmb3IgYSBsb2FkZWQgY3JlZGVudGlhbCBzZXQuXG4gICAqIEBwYXJhbSBjcmVkcyBMb2FkZWQgRmlyZWhvc2UgY3JlZGVudGlhbHMuXG4gICAqIEByZXR1cm5zIEZpcmVob3NlIGNsaWVudC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0RmlyZWhvc2UoY3JlZHM6IEFXU0NyZWRlbnRpYWxzKTogUHJvbWlzZTxGaXJlaG9zZUNsaWVudD4ge1xuICAgIGNvbnN0IHsgcmVnaW9uLCBzdHJlYW1OYW1lIH0gPSBjcmVkc1xuXG4gICAgaWYgKCFyZWdpb24gfHwgIXN0cmVhbU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlZ2lvbiBvciBzdHJlYW0gbmFtZSBub3QgYXZhaWxhYmxlXCIpXG4gICAgfVxuXG4gICAgY29uc3QgeyBGaXJlaG9zZUNsaWVudCB9ID0gYXdhaXQgZ2V0RmlyZWhvc2VNb2R1bGUoKVxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBGaXJlaG9zZUNsaWVudCh7XG4gICAgICByZWdpb246IGNyZWRzLnJlZ2lvbixcbiAgICAgIGNyZWRlbnRpYWxzOiBwaWNrKGNyZWRzLCBcImFjY2Vzc0tleUlkXCIsIFwic2VjcmV0QWNjZXNzS2V5XCIsIFwic2Vzc2lvblRva2VuXCIpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGllbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBGbHVzaCBwZW5kaW5nIHJlY29yZHNcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghIXRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgbG9nLmRlYnVnKFwiRmx1c2ggYWxyZWFkeSBpbiBwcm9ncmVzcywgc2tpcHBpbmdcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIk5vIHBlbmRpbmcgcmVjb3JkcyB0byBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNyZWRzID0gdGhpcy5jcmVkZW50aWFsTWFuYWdlci5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKCFjcmVkcykge1xuICAgICAgbG9nLndhcm4oXCJObyBjcmVkZW50aWFscyBhdmFpbGFibGUgZm9yIGZsdXNoXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkZWZlcnJlZCA9ICh0aGlzLmZsdXNoRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8dm9pZD4oKSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBzdHJlYW1OYW1lIH0gPSBjcmVkcyxcbiAgICAgICAgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRGaXJlaG9zZShjcmVkcyksXG4gICAgICAgIHsgUHV0UmVjb3JkQmF0Y2hDb21tYW5kIH0gPSBhd2FpdCBnZXRGaXJlaG9zZU1vZHVsZSgpXG5cbiAgICAgIHdoaWxlICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLm1pbih0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCwgMTApLFxuICAgICAgICAgIHJlY29yZHMgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBjaHVua1NpemUpLFxuICAgICAgICAgIHJlY29yZEpzb25zID0gcmVjb3Jkcy5tYXAocmVjb3JkID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZCkpXG5cbiAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSBsb2cuZGVidWcoXCJSZWNvcmRzXCIsIHJlY29yZHMpXG5cbiAgICAgICAgY29uc3QgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKSxcbiAgICAgICAgICBiYXRjaDogUHV0UmVjb3JkQmF0Y2hJbnB1dFtcIlJlY29yZHNcIl0gPSByZWNvcmRKc29ucy5tYXAoanNvblN0ciA9PiAoe1xuICAgICAgICAgICAgRGF0YTogdGV4dEVuY29kZXIuZW5jb2RlKGpzb25TdHIpXG4gICAgICAgICAgfSkpXG5cbiAgICAgICAgbG9nLmluZm8oYFB1c2hpbmcgJHtyZWNvcmRzLmxlbmd0aH0gcmVjb3JkcyB0byBmaXJlaG9zZWApXG5cbiAgICAgICAgY29uc3QgY21kID0gbmV3IFB1dFJlY29yZEJhdGNoQ29tbWFuZCh7XG4gICAgICAgICAgRGVsaXZlcnlTdHJlYW1OYW1lOiBzdHJlYW1OYW1lLFxuICAgICAgICAgIFJlY29yZHM6IGJhdGNoXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKGNtZClcbiAgICAgICAgY29uc3QgZmFpbGVkID0gcmVzcC5GYWlsZWRQdXRDb3VudCB8fCAwXG4gICAgICAgIGlmIChmYWlsZWQpIHtcbiAgICAgICAgICBjb25zdCByciA9IHJlc3AuUmVxdWVzdFJlc3BvbnNlcyB8fCBbXVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChycltpXS5FcnJvckNvZGUpIHtcbiAgICAgICAgICAgICAgbG9nLndhcm4oXG4gICAgICAgICAgICAgICAgYFJlY29yZCBmYWlsZWQ6ICR7cnJbaV0uRXJyb3JDb2RlfSAke3JyW2ldLkVycm9yTWVzc2FnZX1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy90aGlzLnBlbmRpbmdSZWNvcmRzLnVuc2hpZnQocmVjb3Jkc1tpXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nLmluZm8oYFB1dFJlY29yZEJhdGNoIGZhaWxlZD0ke2ZhaWxlZH07IHJlcXVldWVkIGZhaWxlZCByZWNvcmRzYClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2cuaW5mbyhgUHV0UmVjb3JkQmF0Y2ggb2sgY291bnQ9JHtyZWNvcmRzLmxlbmd0aH1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZXNvbHZlKClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvcihcIkZhaWxlZCB0byBwdXNoIGxvZ3NcIiwgZXJyKVxuICAgICAgaWYgKGVyci5uYW1lID09PSBFeHBpcmVkVG9rZW5FeGNlcHRpb25Db2RlKSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZm9yY2VVcGRhdGVDcmVkZW50aWFscygpXG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZWplY3QoZXJyKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmZsdXNoRGVmZXJyZWQgPSBudWxsXG5cbiAgICAgIC8vIGlmICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aClcbiAgICAgIC8vICAgdGhpcy5mbHVzaCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBV1NGaXJlaG9zZUFwcGVuZGVyXG4iXX0=
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLDRCQUVOLE1BQU0sbUNBQW1DLENBQUE7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFJcEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUE7QUFDaEMsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO0FBQy9CLElBQUksY0FBYyxHQUF1RCxJQUFJLENBQUE7QUFFN0UsU0FBUyxpQkFBaUI7SUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLGNBQWMsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUQsY0FBYyxHQUFHLElBQUksQ0FBQTtZQUNyQixNQUFNLEdBQUcsQ0FBQTtRQUNYLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFBO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBU0Y7SUFOcEIsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQTtJQUVkLGlCQUFpQixDQUE4QjtJQUUvRCxZQUE0QixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLDRC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QUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDckMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBQ2pELENBQUM7WUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRXpCLGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFFRCxlQUFlLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBGaXJlaG9zZUNsaWVudCxcbiAgUHV0UmVjb3JkQmF0Y2hJbnB1dFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWZpcmVob3NlXCJcbmltcG9ydCB7IExldmVsIH0gZnJvbSBcIi4uLy4uL0xldmVsLmpzXCJcblxuaW1wb3J0IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIsIHtcbiAgdHlwZSBBV1NDcmVkZW50aWFsc1xufSBmcm9tIFwiLi9BV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyLmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcbmltcG9ydCB7IHBpY2sgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IERlZmVycmVkIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvaW5kZXguanNcIlxuaW1wb3J0IHsgTG9nUmVjb3JkIH0gZnJvbSBcIi4uLy4uL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBBcHBlbmRlciB9IGZyb20gXCIuLi8uLi9BcHBlbmRlci5qc1wiXG5cbmNvbnN0IExvZ1F1ZXVlTWF4UmVjb3JkcyA9IDEwMDAwXG5jb25zdCBFeHBpcmVkVG9rZW5FeGNlcHRpb25Db2RlID0gXCJFeHBpcmVkVG9rZW5FeGNlcHRpb25cIlxuXG5jb25zdCBsb2cgPSBnZXRJbnRlcm5hbExvZ2dlcigpXG5sZXQgZmlyZWhvc2VNb2R1bGU6IFByb21pc2U8dHlwZW9mIGltcG9ydChcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiKT4gPSBudWxsXG5cbmZ1bmN0aW9uIGdldEZpcmVob3NlTW9kdWxlKCkge1xuICBpZiAoIWZpcmVob3NlTW9kdWxlKSB7XG4gICAgZmlyZWhvc2VNb2R1bGUgPSBpbXBvcnQoXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIikuY2F0Y2goZXJyID0+IHtcbiAgICAgIGZpcmVob3NlTW9kdWxlID0gbnVsbFxuICAgICAgdGhyb3cgZXJyXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBmaXJlaG9zZU1vZHVsZVxufVxuXG5leHBvcnQgY2xhc3MgQVdTRmlyZWhvc2VBcHBlbmRlcjxcbiAgUmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkID0gTG9nUmVjb3JkXG4+IGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHByaXZhdGUgcGVuZGluZ1JlY29yZHMgPSBBcnJheTxMb2dSZWNvcmQ+KClcbiAgcHJpdmF0ZSBmbHVzaERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPlxuICBwcml2YXRlIGZsdXNoSW50ZXJ2YWxNcyA9IDEwMDBcblxuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbE1hbmFnZXI6IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbEVuZHBvaW50VXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyID0gbmV3IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIoXG4gICAgICBjcmVkZW50aWFsRW5kcG9pbnRVcmxcbiAgICApXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5vbihcInJlY2VpdmVkXCIsICgpID0+IHtcbiAgICAgIGxvZy5pbmZvKFwiQ3JlZGVudGlhbHMgcmVjZWl2ZWQsIGluaXRpYWxpemluZyBmaXJlaG9zZSBjbGllbnRcIilcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggfHwgISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgICAgbG9nLmRlYnVnKFxuICAgICAgICAgIFwiTm90aGluZyB0byBmbHVzaCB1cG9uIGNyZWRlbnRpYWwgcmVjZWlwdCBPUiBmbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzXCJcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMuZmx1c2goKS5jYXRjaCgoZTogRXJyb3IpID0+IHtcbiAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgIGBFcnJvciBmbHVzaGluZyBsb2dzIGFmdGVyIGNyZWRlbnRpYWwgcmVjZWlwdDogJHtlLm1lc3NhZ2V9YCxcbiAgICAgICAgICBlXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuICBhcHBlbmQocmVjb3JkOiBSZWNvcmQpOiB2b2lkIHtcbiAgICBjb25zdCBwZW5kaW5nQ291bnQgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCArIDEsXG4gICAgICByZW1vdmVDb3VudCA9IExvZ1F1ZXVlTWF4UmVjb3JkcyAtIHBlbmRpbmdDb3VudFxuXG4gICAgaWYgKHJlbW92ZUNvdW50IDwgMCkge1xuICAgICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgTWF0aC5hYnMocmVtb3ZlQ291bnQpKVxuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ1JlY29yZHMucHVzaCh7XG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAuLi5yZWNvcmQsXG4gICAgICBhcHA6IHJlY29yZC5hcHA/Lmxlbmd0aCA+IDAgPyByZWNvcmQuYXBwIDogXCJVTktOT1dOXCIsXG4gICAgICBlbnY6IHJlY29yZC5lbnY/Lmxlbmd0aCA+IDAgPyByZWNvcmQuZW52IDogXCJVTktOT1dOXCIsXG4gICAgICB1cmw6IHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgPyBcImxvY2FsOi8vXCIgOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgIH0pXG5cbiAgICB0aGlzLmZsdXNoKClcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIEZpcmVob3NlIGNsaWVudCBmb3IgYSBsb2FkZWQgY3JlZGVudGlhbCBzZXQuXG4gICAqIEBwYXJhbSBjcmVkcyBMb2FkZWQgRmlyZWhvc2UgY3JlZGVudGlhbHMuXG4gICAqIEByZXR1cm5zIEZpcmVob3NlIGNsaWVudC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0RmlyZWhvc2UoY3JlZHM6IEFXU0NyZWRlbnRpYWxzKTogUHJvbWlzZTxGaXJlaG9zZUNsaWVudD4ge1xuICAgIGNvbnN0IHsgcmVnaW9uLCBzdHJlYW1OYW1lIH0gPSBjcmVkc1xuXG4gICAgaWYgKCFyZWdpb24gfHwgIXN0cmVhbU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlZ2lvbiBvciBzdHJlYW0gbmFtZSBub3QgYXZhaWxhYmxlXCIpXG4gICAgfVxuXG4gICAgY29uc3QgeyBGaXJlaG9zZUNsaWVudCB9ID0gYXdhaXQgZ2V0RmlyZWhvc2VNb2R1bGUoKVxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBGaXJlaG9zZUNsaWVudCh7XG4gICAgICByZWdpb246IGNyZWRzLnJlZ2lvbixcbiAgICAgIGNyZWRlbnRpYWxzOiBwaWNrKGNyZWRzLCBcImFjY2Vzc0tleUlkXCIsIFwic2VjcmV0QWNjZXNzS2V5XCIsIFwic2Vzc2lvblRva2VuXCIpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGllbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBGbHVzaCBwZW5kaW5nIHJlY29yZHNcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghIXRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgbG9nLmRlYnVnKFwiRmx1c2ggYWxyZWFkeSBpbiBwcm9ncmVzcywgc2tpcHBpbmdcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIk5vIHBlbmRpbmcgcmVjb3JkcyB0byBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNyZWRzID0gdGhpcy5jcmVkZW50aWFsTWFuYWdlci5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKCFjcmVkcykge1xuICAgICAgbG9nLndhcm4oXCJObyBjcmVkZW50aWFscyBhdmFpbGFibGUgZm9yIGZsdXNoXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkZWZlcnJlZCA9ICh0aGlzLmZsdXNoRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8dm9pZD4oKSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBzdHJlYW1OYW1lIH0gPSBjcmVkcyxcbiAgICAgICAgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRGaXJlaG9zZShjcmVkcyksXG4gICAgICAgIHsgUHV0UmVjb3JkQmF0Y2hDb21tYW5kIH0gPSBhd2FpdCBnZXRGaXJlaG9zZU1vZHVsZSgpXG5cbiAgICAgIHdoaWxlICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLm1pbih0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCwgMTApLFxuICAgICAgICAgIHJlY29yZHMgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBjaHVua1NpemUpLFxuICAgICAgICAgIHJlY29yZEpzb25zID0gcmVjb3Jkcy5tYXAocmVjb3JkID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZCkpXG5cbiAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSBsb2cuZGVidWcoXCJSZWNvcmRzXCIsIHJlY29yZHMpXG5cbiAgICAgICAgY29uc3QgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKSxcbiAgICAgICAgICBiYXRjaDogUHV0UmVjb3JkQmF0Y2hJbnB1dFtcIlJlY29yZHNcIl0gPSByZWNvcmRKc29ucy5tYXAoanNvblN0ciA9PiAoe1xuICAgICAgICAgICAgRGF0YTogdGV4dEVuY29kZXIuZW5jb2RlKGpzb25TdHIpXG4gICAgICAgICAgfSkpXG5cbiAgICAgICAgbG9nLmluZm8oYFB1c2hpbmcgJHtyZWNvcmRzLmxlbmd0aH0gcmVjb3JkcyB0byBmaXJlaG9zZWApXG5cbiAgICAgICAgY29uc3QgY21kID0gbmV3IFB1dFJlY29yZEJhdGNoQ29tbWFuZCh7XG4gICAgICAgICAgRGVsaXZlcnlTdHJlYW1OYW1lOiBzdHJlYW1OYW1lLFxuICAgICAgICAgIFJlY29yZHM6IGJhdGNoXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKGNtZClcbiAgICAgICAgY29uc3QgZmFpbGVkID0gcmVzcC5GYWlsZWRQdXRDb3VudCB8fCAwXG4gICAgICAgIGlmIChmYWlsZWQpIHtcbiAgICAgICAgICBjb25zdCByciA9IHJlc3AuUmVxdWVzdFJlc3BvbnNlcyB8fCBbXVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChycltpXS5FcnJvckNvZGUpIHtcbiAgICAgICAgICAgICAgbG9nLndhcm4oXG4gICAgICAgICAgICAgICAgYFJlY29yZCBmYWlsZWQ6ICR7cnJbaV0uRXJyb3JDb2RlfSAke3JyW2ldLkVycm9yTWVzc2FnZX1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy90aGlzLnBlbmRpbmdSZWNvcmRzLnVuc2hpZnQocmVjb3Jkc1tpXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nLmluZm8oYFB1dFJlY29yZEJhdGNoIGZhaWxlZD0ke2ZhaWxlZH07IHJlcXVldWVkIGZhaWxlZCByZWNvcmRzYClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2cuaW5mbyhgUHV0UmVjb3JkQmF0Y2ggb2sgY291bnQ9JHtyZWNvcmRzLmxlbmd0aH1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZXNvbHZlKClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvcihcIkZhaWxlZCB0byBwdXNoIGxvZ3NcIiwgZXJyKVxuICAgICAgaWYgKGVyci5uYW1lID09PSBFeHBpcmVkVG9rZW5FeGNlcHRpb25Db2RlKSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZm9yY2VVcGRhdGVDcmVkZW50aWFscygpXG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZWplY3QoZXJyKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmZsdXNoRGVmZXJyZWQgPSBudWxsXG5cbiAgICAgIC8vIGlmICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aClcbiAgICAgIC8vICAgdGhpcy5mbHVzaCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBV1NGaXJlaG9zZUFwcGVuZGVyXG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PushLogRecordsAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/push/PushLogRecordsAppender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PushLogRecordsAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/push/PushLogRecordsAppender.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAa5C,UAAU,uCAAuC;IAC/C,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;GAGG;AACH,qBAAa,+BAAgC,SAAQ,aAAa,CAAC,uCAAuC,CAAC;aAK7E,WAAW,EAAE,MAAM;IAJ/C,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,oBAAoB,CAAsB;gBAEtB,WAAW,EAAE,MAAM;IAI/C;;OAEG;IACH,cAAc,IAAI,OAAO;IAczB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAoB3C;;OAEG;IACH,YAAY,IAAI,IAAI;IAkBpB;;OAEG;YACW,gBAAgB;IAsC9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,IAAI,IAAI;CAahB;AAED;;;GAGG;AACH,qBAAa,sBAAsB,CACjC,MAAM,SAAS,SAAS,GAAG,SAAS,CACpC,YAAW,QAAQ,CAAC,MAAM,CAAC;aAOC,WAAW,EAAE,MAAM;IAN/C,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,UAAU,CAA6C;IAE/D,SAAgB,iBAAiB,EAAE,+BAA+B,CAAA;gBAEtC,WAAW,EAAE,MAAM;IAa/C;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAsB5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;YACW,KAAK;IA0DnB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAQpC;;OAEG;IACH,OAAO,IAAI,IAAI;CAehB;AAED,eAAe,sBAAsB,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
1
|
import EventEmitter3 from "eventemitter3";
|
|
3
2
|
import { Deferred } from "../../../helpers/index.js";
|
|
4
3
|
import { getInternalLogger } from "../../InternalLogger.js";
|
|
@@ -288,4 +287,4 @@ export class PushLogRecordsAppender {
|
|
|
288
287
|
}
|
|
289
288
|
}
|
|
290
289
|
export default PushLogRecordsAppender;
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVzaExvZ1JlY29yZHNBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9wdXNoL1B1c2hMb2dSZWNvcmRzQXBwZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sYUFBYSxNQUFNLGVBQWUsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFHcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFM0QsbURBQW1EO0FBQ25ELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUEsQ0FBQyxhQUFhO0FBQ3hELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUEsQ0FBQyxzQ0FBc0M7QUFDckYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUE7QUFDOUIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBLENBQUMsYUFBYTtBQUNoRCxNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQTtBQUNuQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUE7QUFFbEMsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQTtBQU8vQjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsYUFBc0Q7SUFLN0U7SUFKcEIsWUFBWSxHQUF5QyxJQUFJLENBQUE7SUFDekQsa0JBQWtCLEdBQTBCLElBQUksQ0FBQTtJQUNoRCxvQkFBb0IsR0FBa0IsSUFBSSxDQUFBO0lBRWxELFlBQTRCLFdBQW1CO1FBQzdDLEtBQUssRUFBRSxDQUFBO1FBRG1CLGdCQUFXLEdBQVgsV0FBVyxDQUFRO0lBRS9DLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFF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QUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUVoQyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFBO1FBQzVELENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0NBQ0Y7QUFFRCxlQUFlLHNCQUFzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IEV2ZW50RW1pdHRlcjMgZnJvbSBcImV2ZW50ZW1pdHRlcjNcIlxuaW1wb3J0IHsgRGVmZXJyZWQgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9pbmRleC5qc1wiXG5pbXBvcnQgeyBMb2dSZWNvcmQgfSBmcm9tIFwiLi4vLi4vTG9nUmVjb3JkLmpzXCJcbmltcG9ydCB7IEFwcGVuZGVyIH0gZnJvbSBcIi4uLy4uL0FwcGVuZGVyLmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcblxuLy8gQ29uc3RhbnRzIGZvciB0dW5pbmcgKGFkanVzdGFibGUgaW4gZGV2ZWxvcG1lbnQpXG5jb25zdCBDT09LSUVfRVhQSVJBVElPTl9NUyA9IDUgKiA2MCAqIDEwMDAgLy8gMzAgbWludXRlc1xuY29uc3QgQ09PS0lFX1JFRlJFU0hfQlVGRkVSX01TID0gMiAqIDYwICogMTAwMCAvLyBSZWZyZXNoIDIgbWludXRlcyBiZWZvcmUgZXhwaXJhdGlvblxuY29uc3QgRkxVU0hfUVVFVUVfREVQVEggPSAxMDAwXG5jb25zdCBGTFVTSF9JTlRFUlZBTF9NUyA9IDUgKiAxMDAwIC8vIDEwIHNlY29uZHNcbmNvbnN0IExPR19RVUVVRV9NQVhfUkVDT1JEUyA9IDEwMDAwXG5jb25zdCBDT09LSUVfTkFNRSA9IFwid2lyZV9sb2dzX2lkXCJcblxuY29uc3QgbG9nID0gZ2V0SW50ZXJuYWxMb2dnZXIoKVxuXG5pbnRlcmZhY2UgUHVzaExvZ1JlY29yZHNDcmVkZW50aWFsTWFuYWdlckV2ZW50TWFwIHtcbiAgcmVjZWl2ZWQ6ICgpID0+IHZvaWRcbiAgZXhwaXJlZDogKCkgPT4gdm9pZFxufVxuXG4vKipcbiAqIE1hbmFnZXMgY3JlZGVudGlhbCBjb29raWUgZm9yIFB1c2hMb2dSZWNvcmRzQXBwZW5kZXIuXG4gKiBJbnZva2VzIHRoZSBlbmRwb2ludCB2aWEgUE9TVCB0byBvYnRhaW4gYSBzZXNzaW9uIGNvb2tpZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFB1c2hMb2dSZWNvcmRzQ3JlZGVudGlhbE1hbmFnZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIzPFB1c2hMb2dSZWNvcmRzQ3JlZGVudGlhbE1hbmFnZXJFdmVudE1hcD4ge1xuICBwcml2YXRlIHJlZnJlc2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbFxuICBwcml2YXRlIGNyZWRlbnRpYWxEZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD4gfCBudWxsID0gbnVsbFxuICBwcml2YXRlIGNvb2tpZUV4cGlyYXRpb25UaW1lOiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBlbmRwb2ludFVybDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHZhbGlkIGNyZWRlbnRpYWxzIGV4aXN0XG4gICAqL1xuICBoYXNDcmVkZW50aWFscygpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29va2llRXhwaXJhdGlvblRpbWUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmIChEYXRlLm5vdygpID49IHRoaXMuY29va2llRXhwaXJhdGlvblRpbWUpIHtcbiAgICAgIHRoaXMuY29va2llRXhwaXJhdGlvblRpbWUgPSBudWxsXG4gICAgICB0aGlzLmVtaXQoXCJleHBpcmVkXCIpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjcmVkZW50aWFscywgZmV0Y2hpbmcgdGhlbSBpZiBuZWNlc3NhcnlcbiAgICovXG4gIGFzeW5jIGVuc3VyZUNyZWRlbnRpYWxzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIElmIHdlIGhhdmUgdmFsaWQgY3JlZGVudGlhbHMsIHJldHVybiBpbW1lZGlhdGVseVxuICAgIGlmICh0aGlzLmhhc0NyZWRlbnRpYWxzKCkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgLy8gSWYgYSBmZXRjaCBpcyBhbHJlYWR5IGluIHByb2dyZXNzLCB3YWl0IGZvciBpdFxuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCAmJiAhdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQuaXNTZXR0bGVkKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY3JlZGVudGlhbERlZmVycmVkLnByb21pc2VcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQ3JlZGVudGlhbHMoKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZldGNoIG5ldyBjcmVkZW50aWFsc1xuICAgIHJldHVybiB0aGlzLmZldGNoQ3JlZGVudGlhbHMoKVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlIHJlZnJlc2ggb2YgY3JlZGVudGlhbHNcbiAgICovXG4gIGZvcmNlUmVmcmVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWZyZXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUaW1lcilcbiAgICAgIHRoaXMucmVmcmVzaFRpbWVyID0gbnVsbFxuICAgIH1cblxuICAgIHRoaXMuY29va2llRXhwaXJhdGlvblRpbWUgPSBudWxsXG5cbiAgICBpZiAodGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgJiYgIXRoaXMuY3JlZGVudGlhbERlZmVycmVkLmlzU2V0dGxlZCgpKSB7XG4gICAgICB0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKFwiRm9yY2UgcmVmcmVzaCByZXF1ZXN0ZWRcIikpXG4gICAgfVxuICAgIHRoaXMuY3JlZGVudGlhbERlZmVycmVkID0gbnVsbFxuXG4gICAgdGhpcy5mZXRjaENyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgLy8gSWdub3JlIGVycm9ycyBkdXJpbmcgZm9yY2UgcmVmcmVzaCwgdGhleSdsbCBiZSBoYW5kbGVkIG9uIG5leHQgcmVxdWVzdFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggY3JlZGVudGlhbHMgZnJvbSB0aGUgZW5kcG9pbnRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hDcmVkZW50aWFscygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBkZWZlcnJlZCA9ICh0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCA9IG5ldyBEZWZlcnJlZDx2b2lkPigpKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy5lbmRwb2ludFVybCwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBtb2RlOiBcImNvcnNcIixcbiAgICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe30pXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ3JlZGVudGlhbCByZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyAke3Jlc3BvbnNlLnN0YXR1c31gXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLy8gQ29va2llIGlzIHNldCBieSBTZXQtQ29va2llIGhlYWRlciwgd2UganVzdCBuZWVkIHRvIHRyYWNrIGV4cGlyYXRpb25cbiAgICAgIHRoaXMuY29va2llRXhwaXJhdGlvblRpbWUgPSBEYXRlLm5vdygpICsgQ09PS0lFX0VYUElSQVRJT05fTVNcblxuICAgICAgLy8gU2NoZWR1bGUgcmVmcmVzaCBiZWZvcmUgZXhwaXJhdGlvblxuICAgICAgdGhpcy5zY2hlZHVsZVJlZnJlc2goKVxuXG4gICAgICBkZWZlcnJlZC5yZXNvbHZlKClcbiAgICAgIHRoaXMuZW1pdChcInJlY2VpdmVkXCIpXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cud2FybihcIkZhaWxlZCB0byBmZXRjaCBwdXNoIGxvZyBjcmVkZW50aWFsc1wiLCBlcnIpXG4gICAgICBkZWZlcnJlZC5yZWplY3QoZXJyKVxuICAgICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgPSBudWxsXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2NoZWR1bGUgYSBjcmVkZW50aWFsIHJlZnJlc2ggYmVmb3JlIGV4cGlyYXRpb25cbiAgICovXG4gIHByaXZhdGUgc2NoZWR1bGVSZWZyZXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZnJlc2hUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaFRpbWVyKVxuICAgIH1cblxuICAgIGNvbnN0IHJlZnJlc2hJbiA9IENPT0tJRV9FWFBJUkFUSU9OX01TIC0gQ09PS0lFX1JFRlJFU0hfQlVGRkVSX01TXG4gICAgdGhpcy5yZWZyZXNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY3JlZGVudGlhbERlZmVycmVkID0gbnVsbFxuICAgICAgdGhpcy5mZXRjaENyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBMb2cgYnV0IGRvbid0IHRocm93IC0gd2lsbCByZXRyeSBvbiBuZXh0IHJlcXVlc3RcbiAgICAgICAgbG9nLmRlYnVnKFwiU2NoZWR1bGVkIGNyZWRlbnRpYWwgcmVmcmVzaCBmYWlsZWRcIilcbiAgICAgIH0pXG4gICAgfSwgcmVmcmVzaEluKVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFuIHVwIHJlc291cmNlc1xuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWZyZXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUaW1lcilcbiAgICAgIHRoaXMucmVmcmVzaFRpbWVyID0gbnVsbFxuICAgIH1cblxuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCAmJiAhdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQuaXNTZXR0bGVkKCkpIHtcbiAgICAgIHRoaXMuY3JlZGVudGlhbERlZmVycmVkLnJlamVjdChuZXcgRXJyb3IoXCJDcmVkZW50aWFsIG1hbmFnZXIgZGVzdHJveWVkXCIpKVxuICAgIH1cblxuICAgIHRoaXMuY3JlZGVudGlhbERlZmVycmVkID0gbnVsbFxuICAgIHRoaXMuY29va2llRXhwaXJhdGlvblRpbWUgPSBudWxsXG4gIH1cbn1cblxuLyoqXG4gKiBBcHBlbmRlciB0aGF0IHB1c2hlcyBsb2cgcmVjb3JkcyB0byBhIHJlbW90ZSBlbmRwb2ludCB2aWEgSFRUUCBQVVQuXG4gKiBCYXRjaGVzIHJlY29yZHMgYW5kIHNlbmRzIHdoZW4gcXVldWUgcmVhY2hlcyBGTFVTSF9RVUVVRV9ERVBUSCBvciBGTFVTSF9JTlRFUlZBTF9NUyBoYXMgZWxhcHNlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFB1c2hMb2dSZWNvcmRzQXBwZW5kZXI8XG4gIFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IExvZ1JlY29yZFxuPiBpbXBsZW1lbnRzIEFwcGVuZGVyPFJlY29yZD4ge1xuICBwcml2YXRlIHBlbmRpbmdSZWNvcmRzOiBMb2dSZWNvcmRbXSA9IFtdXG4gIHByaXZhdGUgZmx1c2hEZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD4gfCBudWxsID0gbnVsbFxuICBwcml2YXRlIGZsdXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGxcblxuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbE1hbmFnZXI6IFB1c2hMb2dSZWNvcmRzQ3JlZGVudGlhbE1hbmFnZXJcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZW5kcG9pbnRVcmw6IHN0cmluZykge1xuICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIgPSBuZXcgUHVzaExvZ1JlY29yZHNDcmVkZW50aWFsTWFuYWdlcihlbmRwb2ludFVybClcblxuICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIub24oXCJyZWNlaXZlZFwiLCAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoIHx8IHRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMuZmx1c2goKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIC8vIEVycm9ycyBoYW5kbGVkIGluIGZsdXNoXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kIGEgbG9nIHJlY29yZCB0byB0aGUgcXVldWVcbiAgICovXG4gIGFwcGVuZChyZWNvcmQ6IFJlY29yZCk6IHZvaWQge1xuICAgIC8vIEFkZCB0aGUgcmVjb3JkIHdpdGggZW5yaWNoZWQgbWV0YWRhdGFcbiAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnB1c2goe1xuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgLi4ucmVjb3JkLFxuICAgICAgYXBwOiByZWNvcmQuYXBwICYmIHJlY29yZC5hcHAubGVuZ3RoID4gMCA/IHJlY29yZC5hcHAgOiBcIlVOS05PV05cIixcbiAgICAgIGVudjogcmVjb3JkLmVudiAmJiByZWNvcmQuZW52Lmxlbmd0aCA+IDAgPyByZWNvcmQuZW52IDogXCJVTktOT1dOXCIsXG4gICAgICB1cmw6IHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgPyBcImxvY2FsOi8vXCIgOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgIH0pXG4gICAgdGhpcy50cmltUGVuZGluZ1JlY29yZHNUb1F1ZXVlQ2FwKClcblxuICAgIC8vIENoZWNrIGlmIHdlIHNob3VsZCBmbHVzaCBpbW1lZGlhdGVseSBkdWUgdG8gcXVldWUgZGVwdGhcbiAgICBpZiAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggPj0gRkxVU0hfUVVFVUVfREVQVEgpIHtcbiAgICAgIHRoaXMuZmx1c2goKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIC8vIEVycm9ycyBoYW5kbGVkIGluIGZsdXNoXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTY2hlZHVsZSBhIGZsdXNoIGlmIG5vdCBhbHJlYWR5IHNjaGVkdWxlZFxuICAgICAgdGhpcy5zY2hlZHVsZUZsdXNoKClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2NoZWR1bGUgYSBmbHVzaCBhZnRlciB0aGUgaW50ZXJ2YWxcbiAgICovXG4gIHByaXZhdGUgc2NoZWR1bGVGbHVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mbHVzaFRpbWVyKSB7XG4gICAgICByZXR1cm4gLy8gQWxyZWFkeSBzY2hlZHVsZWRcbiAgICB9XG5cbiAgICB0aGlzLmZsdXNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZmx1c2hUaW1lciA9IG51bGxcbiAgICAgIHRoaXMuZmx1c2goKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIC8vIEVycm9ycyBoYW5kbGVkIGluIGZsdXNoXG4gICAgICB9KVxuICAgIH0sIEZMVVNIX0lOVEVSVkFMX01TKVxuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIHBlbmRpbmcgcmVjb3JkcyB0byB0aGUgZW5kcG9pbnRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUHJldmVudCBjb25jdXJyZW50IGZsdXNoZXNcbiAgICBpZiAodGhpcy5mbHVzaERlZmVycmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5mbHVzaERlZmVycmVkLnByb21pc2VcbiAgICB9XG5cbiAgICAvLyBOb3RoaW5nIHRvIGZsdXNoXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHdlIGhhdmUgdmFsaWQgY3JlZGVudGlhbHNcbiAgICBjb25zdCBoYXNDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZW5zdXJlQ3JlZGVudGlhbHMoKVxuICAgIGlmICghaGFzQ3JlZGVudGlhbHMpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIkZhaWxlZCB0byBwdXNoIGxvZyByZWNvcmRzXCIsIFwiTm8gdmFsaWQgY3JlZGVudGlhbHMgYXZhaWxhYmxlXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkZWZlcnJlZCA9ICh0aGlzLmZsdXNoRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8dm9pZD4oKSlcblxuICAgIHRyeSB7XG4gICAgICAvLyBUYWtlIGFsbCBwZW5kaW5nIHJlY29yZHMgZm9yIHRoaXMgZmx1c2hcbiAgICAgIGNvbnN0IHJlY29yZHMgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCB0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aClcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7IHJlY29yZHM6IHJlY29yZHMubWFwKHJlY29yZCA9PiBKU09OLnN0cmluZ2lmeShyZWNvcmQpKSB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy5lbmRwb2ludFVybCwge1xuICAgICAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgICAgIG1vZGU6IFwiY29yc1wiLFxuICAgICAgICBjcmVkZW50aWFsczogXCJpbmNsdWRlXCIsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShwYXlsb2FkKVxuICAgICAgfSlcblxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAvLyBSZS1xdWV1ZSByZWNvcmRzIG9uIGZhaWx1cmVcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy51bnNoaWZ0KC4uLnJlY29yZHMpXG4gICAgICAgIHRoaXMudHJpbVBlbmRpbmdSZWNvcmRzVG9RdWV1ZUNhcCgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUHVzaCBmYWlsZWQgd2l0aCBzdGF0dXMgJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICAgIH1cblxuICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZGVidWcoXCJGYWlsZWQgdG8gcHVzaCBsb2cgcmVjb3Jkc1wiLCBlcnIpXG4gICAgICBkZWZlcnJlZC5yZWplY3QoZXJyKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmZsdXNoRGVmZXJyZWQgPSBudWxsXG5cbiAgICAgIC8vIElmIG1vcmUgcmVjb3JkcyBhY2N1bXVsYXRlZCBkdXJpbmcgZmx1c2gsIHNjaGVkdWxlIGFub3RoZXJcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZUZsdXNoKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlIGFuIGltbWVkaWF0ZSBmbHVzaFxuICAgKi9cbiAgYXN5bmMgZm9yY2VGbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5mbHVzaFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5mbHVzaFRpbWVyKVxuICAgICAgdGhpcy5mbHVzaFRpbWVyID0gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsdXNoKClcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmZvcmNlIHRoZSBwZW5kaW5nIHF1ZXVlIGNhcCBieSBkcm9wcGluZyB0aGUgb2xkZXN0IHJlY29yZHMuXG4gICAqL1xuICBwcml2YXRlIHRyaW1QZW5kaW5nUmVjb3Jkc1RvUXVldWVDYXAoKTogdm9pZCB7XG4gICAgY29uc3QgcmVtb3ZlQ291bnQgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCAtIExPR19RVUVVRV9NQVhfUkVDT1JEU1xuXG4gICAgaWYgKHJlbW92ZUNvdW50ID4gMCkge1xuICAgICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgcmVtb3ZlQ291bnQpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFuIHVwIHJlc291cmNlc1xuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mbHVzaFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5mbHVzaFRpbWVyKVxuICAgICAgdGhpcy5mbHVzaFRpbWVyID0gbnVsbFxuICAgIH1cblxuICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZGVzdHJveSgpXG5cbiAgICBpZiAodGhpcy5mbHVzaERlZmVycmVkICYmICF0aGlzLmZsdXNoRGVmZXJyZWQuaXNTZXR0bGVkKCkpIHtcbiAgICAgIHRoaXMuZmx1c2hEZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKFwiQXBwZW5kZXIgZGVzdHJveWVkXCIpKVxuICAgIH1cblxuICAgIHRoaXMuZmx1c2hEZWZlcnJlZCA9IG51bGxcbiAgICB0aGlzLnBlbmRpbmdSZWNvcmRzID0gW11cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQdXNoTG9nUmVjb3Jkc0FwcGVuZGVyXG4iXX0=
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVzaExvZ1JlY29yZHNBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9wdXNoL1B1c2hMb2dSZWNvcmRzQXBwZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxhQUFhLE1BQU0sZUFBZSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUdwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUUzRCxtREFBbUQ7QUFDbkQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQSxDQUFDLGFBQWE7QUFDeEQsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQSxDQUFDLHNDQUFzQztBQUNyRixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQTtBQUM5QixNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUEsQ0FBQyxhQUFhO0FBQ2hELE1BQU0scUJBQXFCLEdBQUcsS0FBSyxDQUFBO0FBQ25DLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQTtBQUVsQyxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO0FBTy9COzs7R0FHRztBQUNILE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxhQUFzRDtJQUs3RTtJQUpwQixZQUFZLEdBQXlDLElBQUksQ0FBQTtJQUN6RCxrQkFBa0IsR0FBMEIsSUFBSSxDQUFBO0lBQ2hELG9CQUFvQixHQUFrQixJQUFJLENBQUE7SUFFbEQsWUFBNEIsV0FBbUI7UUFDN0MsS0FBSyxFQUFFLENBQUE7UUFEbUIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFFL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMvQixP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LENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtRQUN4QixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRWhDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUE7UUFDNUQsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFBO0lBQzFCLENBQUM7Q0FDRjtBQUVELGVBQWUsc0JBQXNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXZlbnRFbWl0dGVyMyBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5pbXBvcnQgeyBEZWZlcnJlZCB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL2luZGV4LmpzXCJcbmltcG9ydCB7IExvZ1JlY29yZCB9IGZyb20gXCIuLi8uLi9Mb2dSZWNvcmQuanNcIlxuaW1wb3J0IHsgQXBwZW5kZXIgfSBmcm9tIFwiLi4vLi4vQXBwZW5kZXIuanNcIlxuaW1wb3J0IHsgZ2V0SW50ZXJuYWxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vSW50ZXJuYWxMb2dnZXIuanNcIlxuXG4vLyBDb25zdGFudHMgZm9yIHR1bmluZyAoYWRqdXN0YWJsZSBpbiBkZXZlbG9wbWVudClcbmNvbnN0IENPT0tJRV9FWFBJUkFUSU9OX01TID0gNSAqIDYwICogMTAwMCAvLyAzMCBtaW51dGVzXG5jb25zdCBDT09LSUVfUkVGUkVTSF9CVUZGRVJfTVMgPSAyICogNjAgKiAxMDAwIC8vIFJlZnJlc2ggMiBtaW51dGVzIGJlZm9yZSBleHBpcmF0aW9uXG5jb25zdCBGTFVTSF9RVUVVRV9ERVBUSCA9IDEwMDBcbmNvbnN0IEZMVVNIX0lOVEVSVkFMX01TID0gNSAqIDEwMDAgLy8gMTAgc2Vjb25kc1xuY29uc3QgTE9HX1FVRVVFX01BWF9SRUNPUkRTID0gMTAwMDBcbmNvbnN0IENPT0tJRV9OQU1FID0gXCJ3aXJlX2xvZ3NfaWRcIlxuXG5jb25zdCBsb2cgPSBnZXRJbnRlcm5hbExvZ2dlcigpXG5cbmludGVyZmFjZSBQdXNoTG9nUmVjb3Jkc0NyZWRlbnRpYWxNYW5hZ2VyRXZlbnRNYXAge1xuICByZWNlaXZlZDogKCkgPT4gdm9pZFxuICBleHBpcmVkOiAoKSA9PiB2b2lkXG59XG5cbi8qKlxuICogTWFuYWdlcyBjcmVkZW50aWFsIGNvb2tpZSBmb3IgUHVzaExvZ1JlY29yZHNBcHBlbmRlci5cbiAqIEludm9rZXMgdGhlIGVuZHBvaW50IHZpYSBQT1NUIHRvIG9idGFpbiBhIHNlc3Npb24gY29va2llLlxuICovXG5leHBvcnQgY2xhc3MgUHVzaExvZ1JlY29yZHNDcmVkZW50aWFsTWFuYWdlciBleHRlbmRzIEV2ZW50RW1pdHRlcjM8UHVzaExvZ1JlY29yZHNDcmVkZW50aWFsTWFuYWdlckV2ZW50TWFwPiB7XG4gIHByaXZhdGUgcmVmcmVzaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsXG4gIHByaXZhdGUgY3JlZGVudGlhbERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPiB8IG51bGwgPSBudWxsXG4gIHByaXZhdGUgY29va2llRXhwaXJhdGlvblRpbWU6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVuZHBvaW50VXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdmFsaWQgY3JlZGVudGlhbHMgZXhpc3RcbiAgICovXG4gIGhhc0NyZWRlbnRpYWxzKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKERhdGUubm93KCkgPj0gdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSkge1xuICAgICAgdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSA9IG51bGxcbiAgICAgIHRoaXMuZW1pdChcImV4cGlyZWRcIilcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogR2V0IGNyZWRlbnRpYWxzLCBmZXRjaGluZyB0aGVtIGlmIG5lY2Vzc2FyeVxuICAgKi9cbiAgYXN5bmMgZW5zdXJlQ3JlZGVudGlhbHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gSWYgd2UgaGF2ZSB2YWxpZCBjcmVkZW50aWFscywgcmV0dXJuIGltbWVkaWF0ZWx5XG4gICAgaWYgKHRoaXMuaGFzQ3JlZGVudGlhbHMoKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICAvLyBJZiBhIGZldGNoIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHdhaXQgZm9yIGl0XG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbERlZmVycmVkICYmICF0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZC5pc1NldHRsZWQoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQucHJvbWlzZVxuICAgICAgICByZXR1cm4gdGhpcy5oYXNDcmVkZW50aWFscygpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmV0Y2ggbmV3IGNyZWRlbnRpYWxzXG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hDcmVkZW50aWFscygpXG4gIH1cblxuICAvKipcbiAgICogRm9yY2UgcmVmcmVzaCBvZiBjcmVkZW50aWFsc1xuICAgKi9cbiAgZm9yY2VSZWZyZXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZnJlc2hUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaFRpbWVyKVxuICAgICAgdGhpcy5yZWZyZXNoVGltZXIgPSBudWxsXG4gICAgfVxuXG4gICAgdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSA9IG51bGxcblxuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCAmJiAhdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQuaXNTZXR0bGVkKCkpIHtcbiAgICAgIHRoaXMuY3JlZGVudGlhbERlZmVycmVkLnJlamVjdChuZXcgRXJyb3IoXCJGb3JjZSByZWZyZXNoIHJlcXVlc3RlZFwiKSlcbiAgICB9XG4gICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgPSBudWxsXG5cbiAgICB0aGlzLmZldGNoQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiB7XG4gICAgICAvLyBJZ25vcmUgZXJyb3JzIGR1cmluZyBmb3JjZSByZWZyZXNoLCB0aGV5J2xsIGJlIGhhbmRsZWQgb24gbmV4dCByZXF1ZXN0XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBjcmVkZW50aWFscyBmcm9tIHRoZSBlbmRwb2ludFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaENyZWRlbnRpYWxzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGRlZmVycmVkID0gKHRoaXMuY3JlZGVudGlhbERlZmVycmVkID0gbmV3IERlZmVycmVkPHZvaWQ+KCkpXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLmVuZHBvaW50VXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIG1vZGU6IFwiY29yc1wiLFxuICAgICAgICBjcmVkZW50aWFsczogXCJpbmNsdWRlXCIsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7fSlcbiAgICAgIH0pXG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDcmVkZW50aWFsIHJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzICR7cmVzcG9uc2Uuc3RhdHVzfWBcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyBDb29raWUgaXMgc2V0IGJ5IFNldC1Db29raWUgaGVhZGVyLCB3ZSBqdXN0IG5lZWQgdG8gdHJhY2sgZXhwaXJhdGlvblxuICAgICAgdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSA9IERhdGUubm93KCkgKyBDT09LSUVfRVhQSVJBVElPTl9NU1xuXG4gICAgICAvLyBTY2hlZHVsZSByZWZyZXNoIGJlZm9yZSBleHBpcmF0aW9uXG4gICAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgpXG5cbiAgICAgIGRlZmVycmVkLnJlc29sdmUoKVxuICAgICAgdGhpcy5lbWl0KFwicmVjZWl2ZWRcIilcblxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy53YXJuKFwiRmFpbGVkIHRvIGZldGNoIHB1c2ggbG9nIGNyZWRlbnRpYWxzXCIsIGVycilcbiAgICAgIGRlZmVycmVkLnJlamVjdChlcnIpXG4gICAgICB0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZCA9IG51bGxcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBhIGNyZWRlbnRpYWwgcmVmcmVzaCBiZWZvcmUgZXhwaXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzY2hlZHVsZVJlZnJlc2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVmcmVzaFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoVGltZXIpXG4gICAgfVxuXG4gICAgY29uc3QgcmVmcmVzaEluID0gQ09PS0lFX0VYUElSQVRJT05fTVMgLSBDT09LSUVfUkVGUkVTSF9CVUZGRVJfTVNcbiAgICB0aGlzLnJlZnJlc2hUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgPSBudWxsXG4gICAgICB0aGlzLmZldGNoQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIC8vIExvZyBidXQgZG9uJ3QgdGhyb3cgLSB3aWxsIHJldHJ5IG9uIG5leHQgcmVxdWVzdFxuICAgICAgICBsb2cuZGVidWcoXCJTY2hlZHVsZWQgY3JlZGVudGlhbCByZWZyZXNoIGZhaWxlZFwiKVxuICAgICAgfSlcbiAgICB9LCByZWZyZXNoSW4pXG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgcmVzb3VyY2VzXG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZnJlc2hUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaFRpbWVyKVxuICAgICAgdGhpcy5yZWZyZXNoVGltZXIgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbERlZmVycmVkICYmICF0aGlzLmNyZWRlbnRpYWxEZWZlcnJlZC5pc1NldHRsZWQoKSkge1xuICAgICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQucmVqZWN0KG5ldyBFcnJvcihcIkNyZWRlbnRpYWwgbWFuYWdlciBkZXN0cm95ZWRcIikpXG4gICAgfVxuXG4gICAgdGhpcy5jcmVkZW50aWFsRGVmZXJyZWQgPSBudWxsXG4gICAgdGhpcy5jb29raWVFeHBpcmF0aW9uVGltZSA9IG51bGxcbiAgfVxufVxuXG4vKipcbiAqIEFwcGVuZGVyIHRoYXQgcHVzaGVzIGxvZyByZWNvcmRzIHRvIGEgcmVtb3RlIGVuZHBvaW50IHZpYSBIVFRQIFBVVC5cbiAqIEJhdGNoZXMgcmVjb3JkcyBhbmQgc2VuZHMgd2hlbiBxdWV1ZSByZWFjaGVzIEZMVVNIX1FVRVVFX0RFUFRIIG9yIEZMVVNIX0lOVEVSVkFMX01TIGhhcyBlbGFwc2VkLlxuICovXG5leHBvcnQgY2xhc3MgUHVzaExvZ1JlY29yZHNBcHBlbmRlcjxcbiAgUmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkID0gTG9nUmVjb3JkXG4+IGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHByaXZhdGUgcGVuZGluZ1JlY29yZHM6IExvZ1JlY29yZFtdID0gW11cbiAgcHJpdmF0ZSBmbHVzaERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPiB8IG51bGwgPSBudWxsXG4gIHByaXZhdGUgZmx1c2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbFxuXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsTWFuYWdlcjogUHVzaExvZ1JlY29yZHNDcmVkZW50aWFsTWFuYWdlclxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBlbmRwb2ludFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlciA9IG5ldyBQdXNoTG9nUmVjb3Jkc0NyZWRlbnRpYWxNYW5hZ2VyKGVuZHBvaW50VXJsKVxuXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5vbihcInJlY2VpdmVkXCIsICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggfHwgdGhpcy5mbHVzaERlZmVycmVkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhpcy5mbHVzaCgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gRXJyb3JzIGhhbmRsZWQgaW4gZmx1c2hcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmQgYSBsb2cgcmVjb3JkIHRvIHRoZSBxdWV1ZVxuICAgKi9cbiAgYXBwZW5kKHJlY29yZDogUmVjb3JkKTogdm9pZCB7XG4gICAgLy8gQWRkIHRoZSByZWNvcmQgd2l0aCBlbnJpY2hlZCBtZXRhZGF0YVxuICAgIHRoaXMucGVuZGluZ1JlY29yZHMucHVzaCh7XG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAuLi5yZWNvcmQsXG4gICAgICBhcHA6IHJlY29yZC5hcHAgJiYgcmVjb3JkLmFwcC5sZW5ndGggPiAwID8gcmVjb3JkLmFwcCA6IFwiVU5LTk9XTlwiLFxuICAgICAgZW52OiByZWNvcmQuZW52ICYmIHJlY29yZC5lbnYubGVuZ3RoID4gMCA/IHJlY29yZC5lbnYgOiBcIlVOS05PV05cIixcbiAgICAgIHVybDogdHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwibG9jYWw6Ly9cIiA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmXG4gICAgfSlcbiAgICB0aGlzLnRyaW1QZW5kaW5nUmVjb3Jkc1RvUXVldWVDYXAoKVxuXG4gICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIGZsdXNoIGltbWVkaWF0ZWx5IGR1ZSB0byBxdWV1ZSBkZXB0aFxuICAgIGlmICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCA+PSBGTFVTSF9RVUVVRV9ERVBUSCkge1xuICAgICAgdGhpcy5mbHVzaCgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gRXJyb3JzIGhhbmRsZWQgaW4gZmx1c2hcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNjaGVkdWxlIGEgZmx1c2ggaWYgbm90IGFscmVhZHkgc2NoZWR1bGVkXG4gICAgICB0aGlzLnNjaGVkdWxlRmx1c2goKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBhIGZsdXNoIGFmdGVyIHRoZSBpbnRlcnZhbFxuICAgKi9cbiAgcHJpdmF0ZSBzY2hlZHVsZUZsdXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgIHJldHVybiAvLyBBbHJlYWR5IHNjaGVkdWxlZFxuICAgIH1cblxuICAgIHRoaXMuZmx1c2hUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mbHVzaFRpbWVyID0gbnVsbFxuICAgICAgdGhpcy5mbHVzaCgpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gRXJyb3JzIGhhbmRsZWQgaW4gZmx1c2hcbiAgICAgIH0pXG4gICAgfSwgRkxVU0hfSU5URVJWQUxfTVMpXG4gIH1cblxuICAvKipcbiAgICogRmx1c2ggcGVuZGluZyByZWNvcmRzIHRvIHRoZSBlbmRwb2ludFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBQcmV2ZW50IGNvbmN1cnJlbnQgZmx1c2hlc1xuICAgIGlmICh0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmZsdXNoRGVmZXJyZWQucHJvbWlzZVxuICAgIH1cblxuICAgIC8vIE5vdGhpbmcgdG8gZmx1c2hcbiAgICBpZiAoIXRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgd2UgaGF2ZSB2YWxpZCBjcmVkZW50aWFsc1xuICAgIGNvbnN0IGhhc0NyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5lbnN1cmVDcmVkZW50aWFscygpXG4gICAgaWYgKCFoYXNDcmVkZW50aWFscykge1xuICAgICAgbG9nLmRlYnVnKFwiRmFpbGVkIHRvIHB1c2ggbG9nIHJlY29yZHNcIiwgXCJObyB2YWxpZCBjcmVkZW50aWFscyBhdmFpbGFibGVcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRlZmVycmVkID0gKHRoaXMuZmx1c2hEZWZlcnJlZCA9IG5ldyBEZWZlcnJlZDx2b2lkPigpKVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFRha2UgYWxsIHBlbmRpbmcgcmVjb3JkcyBmb3IgdGhpcyBmbHVzaFxuICAgICAgY29uc3QgcmVjb3JkcyA9IHRoaXMucGVuZGluZ1JlY29yZHMuc3BsaWNlKDAsIHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKVxuICAgICAgY29uc3QgcGF5bG9hZCA9IHsgcmVjb3JkczogcmVjb3Jkcy5tYXAocmVjb3JkID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZCkpIH1cblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLmVuZHBvaW50VXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQVVRcIixcbiAgICAgICAgbW9kZTogXCJjb3JzXCIsXG4gICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIC8vIFJlLXF1ZXVlIHJlY29yZHMgb24gZmFpbHVyZVxuICAgICAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnVuc2hpZnQoLi4ucmVjb3JkcylcbiAgICAgICAgdGhpcy50cmltUGVuZGluZ1JlY29yZHNUb1F1ZXVlQ2FwKClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQdXNoIGZhaWxlZCB3aXRoIHN0YXR1cyAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgICAgfVxuXG4gICAgICBkZWZlcnJlZC5yZXNvbHZlKClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIkZhaWxlZCB0byBwdXNoIGxvZyByZWNvcmRzXCIsIGVycilcbiAgICAgIGRlZmVycmVkLnJlamVjdChlcnIpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZmx1c2hEZWZlcnJlZCA9IG51bGxcblxuICAgICAgLy8gSWYgbW9yZSByZWNvcmRzIGFjY3VtdWxhdGVkIGR1cmluZyBmbHVzaCwgc2NoZWR1bGUgYW5vdGhlclxuICAgICAgaWYgKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlRmx1c2goKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlXG4gIH1cblxuICAvKipcbiAgICogRm9yY2UgYW4gaW1tZWRpYXRlIGZsdXNoXG4gICAqL1xuICBhc3luYyBmb3JjZUZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmZsdXNoVGltZXIpXG4gICAgICB0aGlzLmZsdXNoVGltZXIgPSBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmx1c2goKVxuICB9XG5cbiAgLyoqXG4gICAqIEVuZm9yY2UgdGhlIHBlbmRpbmcgcXVldWUgY2FwIGJ5IGRyb3BwaW5nIHRoZSBvbGRlc3QgcmVjb3Jkcy5cbiAgICovXG4gIHByaXZhdGUgdHJpbVBlbmRpbmdSZWNvcmRzVG9RdWV1ZUNhcCgpOiB2b2lkIHtcbiAgICBjb25zdCByZW1vdmVDb3VudCA9IHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoIC0gTE9HX1FVRVVFX01BWF9SRUNPUkRTXG5cbiAgICBpZiAocmVtb3ZlQ291bnQgPiAwKSB7XG4gICAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCByZW1vdmVDb3VudClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgcmVzb3VyY2VzXG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZsdXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmZsdXNoVGltZXIpXG4gICAgICB0aGlzLmZsdXNoVGltZXIgPSBudWxsXG4gICAgfVxuXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5kZXN0cm95KClcblxuICAgIGlmICh0aGlzLmZsdXNoRGVmZXJyZWQgJiYgIXRoaXMuZmx1c2hEZWZlcnJlZC5pc1NldHRsZWQoKSkge1xuICAgICAgdGhpcy5mbHVzaERlZmVycmVkLnJlamVjdChuZXcgRXJyb3IoXCJBcHBlbmRlciBkZXN0cm95ZWRcIikpXG4gICAgfVxuXG4gICAgdGhpcy5mbHVzaERlZmVycmVkID0gbnVsbFxuICAgIHRoaXMucGVuZGluZ1JlY29yZHMgPSBbXVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1c2hMb2dSZWNvcmRzQXBwZW5kZXJcbiJdfQ==
|