@rudderstack/integrations-lib 0.2.58-beta.fix.axios-client-metric-tags.c2d72be → 0.2.58-beta.fix.axios-client-metric-tags.b22e724
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios_client.d.ts","sourceRoot":"","sources":["../../../src/network/clients/axios_client.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,8BAA8B,EAI9B,aAAa,EACd,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"axios_client.d.ts","sourceRoot":"","sources":["../../../src/network/clients/axios_client.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,8BAA8B,EAI9B,aAAa,EACd,MAAM,SAAS,CAAC;AAiDjB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,WAAY,YAAW,UAAU;IAC5C,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO,CAAC,QAAQ,CAAgB;IAEhC,OAAO,CAAC,mBAAmB,CAAiC;gBAEhD,OAAO,CAAC,EAAE,aAAa,EAAE,mBAAmB,CAAC,EAAE,8BAA8B;YA4B3E,WAAW;IAyJZ,GAAG,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAWb,IAAI,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAYb,GAAG,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAYb,KAAK,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAYb,MAAM,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAY3B"}
|
|
@@ -10,6 +10,46 @@ const http_1 = __importDefault(require("http"));
|
|
|
10
10
|
const https_1 = __importDefault(require("https"));
|
|
11
11
|
const constants_1 = require("../../constants");
|
|
12
12
|
const utils_1 = require("../../utils");
|
|
13
|
+
// Allowed labels for timing metrics
|
|
14
|
+
const TIMING_METRIC_LABELS = [
|
|
15
|
+
'feature',
|
|
16
|
+
'destType',
|
|
17
|
+
'endpointPath',
|
|
18
|
+
'requestMethod',
|
|
19
|
+
'module',
|
|
20
|
+
'workspaceId',
|
|
21
|
+
'destinationId',
|
|
22
|
+
'implementation',
|
|
23
|
+
'sourceId',
|
|
24
|
+
];
|
|
25
|
+
// Allowed labels for counter metrics
|
|
26
|
+
const COUNTER_METRIC_LABELS = [
|
|
27
|
+
'feature',
|
|
28
|
+
'destType',
|
|
29
|
+
'endpointPath',
|
|
30
|
+
'success',
|
|
31
|
+
'statusCode',
|
|
32
|
+
'requestMethod',
|
|
33
|
+
'module',
|
|
34
|
+
'workspaceId',
|
|
35
|
+
'destinationId',
|
|
36
|
+
'implementation',
|
|
37
|
+
'sourceId',
|
|
38
|
+
];
|
|
39
|
+
/**
|
|
40
|
+
* Filters labels to only include allowed keys
|
|
41
|
+
* @param allLabels - The complete set of labels
|
|
42
|
+
* @param allowedLabels - Array of allowed label keys
|
|
43
|
+
* @returns Filtered labels object
|
|
44
|
+
*/
|
|
45
|
+
function filterMetricLabels(allLabels, allowedLabels) {
|
|
46
|
+
return allowedLabels.reduce((filteredLabels, key) => {
|
|
47
|
+
if (allLabels[key] !== undefined) {
|
|
48
|
+
return { ...filteredLabels, [key]: allLabels[key] };
|
|
49
|
+
}
|
|
50
|
+
return filteredLabels;
|
|
51
|
+
}, {});
|
|
52
|
+
}
|
|
13
53
|
/**
|
|
14
54
|
* A wrapper around axios to make http requests
|
|
15
55
|
*
|
|
@@ -73,6 +113,10 @@ class AxiosClient {
|
|
|
73
113
|
endpointPath: 'default',
|
|
74
114
|
...config.statTags,
|
|
75
115
|
};
|
|
116
|
+
const metadataMetricTags = {
|
|
117
|
+
...(this.observabilityConfig.defaultStatTags?.metadata || {}),
|
|
118
|
+
...(config.statTags?.metadata || {}),
|
|
119
|
+
};
|
|
76
120
|
// Optional request logging
|
|
77
121
|
const requestLogParams = {
|
|
78
122
|
requestDetails: {
|
|
@@ -98,11 +142,11 @@ class AxiosClient {
|
|
|
98
142
|
};
|
|
99
143
|
this.observabilityConfig.logger?.responseLog(`[HTTP] ${method} ${url} response`, responseLogParams);
|
|
100
144
|
// Optional success metrics
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
145
|
+
const allLabels = { ...metadataMetricTags, ...statTags, statusCode: status };
|
|
146
|
+
const timingLabels = filterMetricLabels(allLabels, TIMING_METRIC_LABELS);
|
|
147
|
+
this.observabilityConfig.statsClient?.timing('outgoing_request_latency', startTimestamp, timingLabels);
|
|
148
|
+
const counterLabels = filterMetricLabels(allLabels, COUNTER_METRIC_LABELS);
|
|
149
|
+
this.observabilityConfig.statsClient?.counter('outgoing_request_count', 1, counterLabels);
|
|
106
150
|
if (responseParser) {
|
|
107
151
|
try {
|
|
108
152
|
const parsedData = responseParser(data);
|
|
@@ -140,11 +184,11 @@ class AxiosClient {
|
|
|
140
184
|
statTags: { ...statTags, statusCode: errorStatusCode },
|
|
141
185
|
});
|
|
142
186
|
// Optional error metrics
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
187
|
+
const allErrorLabels = { ...metadataMetricTags, ...statTags, statusCode: errorStatusCode };
|
|
188
|
+
const timingLabels = filterMetricLabels(allErrorLabels, TIMING_METRIC_LABELS);
|
|
189
|
+
this.observabilityConfig.statsClient?.timing('outgoing_request_latency', startTimestamp, timingLabels);
|
|
190
|
+
const counterLabels = filterMetricLabels(allErrorLabels, COUNTER_METRIC_LABELS);
|
|
191
|
+
this.observabilityConfig.statsClient?.counter('outgoing_request_count', 1, counterLabels);
|
|
148
192
|
if (axios_1.default.isAxiosError(error)) {
|
|
149
193
|
const axiosError = error;
|
|
150
194
|
if (axiosError.response) {
|
|
@@ -234,4 +278,4 @@ class AxiosClient {
|
|
|
234
278
|
}
|
|
235
279
|
}
|
|
236
280
|
exports.AxiosClient = AxiosClient;
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3NfY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvY2xpZW50cy9heGlvc19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0NBQWtDO0FBQ2xDLGtEQUF5RDtBQUN6RCxnREFBd0I7QUFDeEIsa0RBQTBCO0FBQzFCLCtDQUF5RDtBQVd6RCx1Q0FBeUM7QUFFekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBYSxXQUFXO0lBT3RCLFlBQVksT0FBdUIsRUFBRSxtQkFBb0Q7UUFDdkYsTUFBTSxjQUFjLEdBQUc7WUFDckIsT0FBTyxFQUFFLElBQUksR0FBRyxFQUFFO1lBQ2xCLGlIQUFpSDtZQUNqSCxlQUFlLEVBQUUsS0FBSztZQUN0QixzRkFBc0Y7WUFDdEYsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4Qix3R0FBd0c7WUFDeEcsYUFBYSxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUMvQiwrRUFBK0U7WUFDL0UsWUFBWSxFQUFFLENBQUM7WUFDZixxRkFBcUY7WUFDckYsU0FBUyxFQUFFLElBQUksY0FBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUM5QyxrSUFBa0k7WUFDbEksVUFBVSxFQUFFLElBQUksZUFBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNqRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUzQyxxREFBcUQ7UUFDckQsTUFBTSwwQkFBMEIsR0FBbUM7WUFDakUsTUFBTSxFQUFFLFNBQVM7WUFDakIsV0FBVyxFQUFFLFNBQVM7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QU8sRUFBRSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUksTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSyxDQUNoQixHQUFXLEVBQ1gsSUFBYyxFQUNkLE9BQXVCLEVBQ3ZCLGNBQWtDO1FBRWxDLElBQUksTUFBTSxHQUFrQjtZQUMxQixNQUFNLEVBQUUsT0FBTztZQUNmLEdBQUc7WUFDSCxJQUFJO1NBQ0wsQ0FBQztRQUNGLElBQUksSUFBQSxrQkFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFJLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FDakIsR0FBVyxFQUNYLE9BQXVCLEVBQ3ZCLGNBQWtDO1FBRWxDLElBQUksTUFBTSxHQUFrQjtZQUMxQixNQUFNLEVBQUUsUUFBUTtZQUNoQixHQUFHO1NBQ0osQ0FBQztRQUNGLElBQUksSUFBQSxrQkFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFJLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBR0Y7QUFyUUQsa0NBcVFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVxdWlyZS1hd2FpdCAqL1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IsIEF4aW9zSW5zdGFuY2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgeyBORVRXT1JLX1NUQVRVU19FUlJfTUFQIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIEFwaVJlc3BvbnNlLFxuICBIdHRwQ2xpZW50LFxuICBSZXNwb25zZVBhcnNlcixcbiAgQXhpb3NDbGllbnRPYnNlcnZhYmlsaXR5Q29uZmlnLFxuICBTdGF0VGFncyxcbiAgUmVxdWVzdExvZ1BhcmFtcyxcbiAgUmVzcG9uc2VMb2dQYXJhbXMsXG4gIFJlcXVlc3RDb25maWcsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgaXNOb3RFbXB0eSB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLyoqXG4gKiBBIHdyYXBwZXIgYXJvdW5kIGF4aW9zIHRvIG1ha2UgaHR0cCByZXF1ZXN0c1xuICpcbiAqIEBjbGFzcyBBeGlvc0NsaWVudFxuICogQGNsYXNzZGVzY1xuICogVGhlIGBBeGlvc0NsaWVudGAgY2xhc3MgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgYXhpb3MgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGEgc2ltcGxpZmllZCBpbnRlcmZhY2UgZm9yIG1ha2luZyBIVFRQIHJlcXVlc3RzLiBJdCBoYW5kbGVzIHZhcmlvdXMgdHlwZXMgb2YgZXJyb3JzIGFuZCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgcmVzcG9uc2UgZm9ybWF0LlxuICpcbiAqIEBwYXJhbSB7QXhpb3NSZXF1ZXN0Q29uZmlnfSBvcHRpb25zIC0gVGhlIGRlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIGh0dHAgY2xpZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGF4aW9zQ2xpZW50ID0gbmV3IEF4aW9zQ2xpZW50KHsgdGltZW91dDogMTAwMCAqIDEwIH0pO1xuICogY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvc0NsaWVudC5wb3N0KFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiLCB7IGZvbzogXCJiYXJcIiB9KTtcbiAqIGlmIChyZXNwb25zZS50eXBlID09PSBcInN1Y2Nlc3NcIikge1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAqIH0gZWxzZSBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJhcHBsaWNhdGlvbi1lcnJvclwiKSB7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLnN0YXR1c0NvZGUpO1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5tZXNzYWdlKTtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAqIH0gZWxzZSBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJjbGllbnQtZXJyb3JcIikge1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2UubWVzc2FnZSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBjbGFzcyBBeGlvc0NsaWVudCBpbXBsZW1lbnRzIEh0dHBDbGllbnQge1xuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVlc3RDb25maWc7XG5cbiAgcHJpdmF0ZSBpbnN0YW5jZTogQXhpb3NJbnN0YW5jZTtcblxuICBwcml2YXRlIG9ic2VydmFiaWxpdHlDb25maWc6IEF4aW9zQ2xpZW50T2JzZXJ2YWJpbGl0eUNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogUmVxdWVzdENvbmZpZywgb2JzZXJ2YWJpbGl0eUNvbmZpZz86IEF4aW9zQ2xpZW50T2JzZXJ2YWJpbGl0eUNvbmZpZykge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgdGltZW91dDogMTAwMCAqIDEwLFxuICAgICAgLy8gYHdpdGhDcmVkZW50aWFsc2AgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGNyb3NzLXNpdGUgQWNjZXNzLUNvbnRyb2wgcmVxdWVzdHMgc2hvdWxkIGJlIG1hZGUgdXNpbmcgY3JlZGVudGlhbHNcbiAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG4gICAgICAvLyBgcmVzcG9uc2VFbmNvZGluZ2AgaW5kaWNhdGVzIGVuY29kaW5nIHRvIHVzZSBmb3IgZGVjb2RpbmcgcmVzcG9uc2VzIChOb2RlLmpzIG9ubHkpLFxuICAgICAgcmVzcG9uc2VFbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgLy8gYG1heEJvZHlMZW5ndGhgIChOb2RlIG9ubHkgb3B0aW9uKSBkZWZpbmVzIHRoZSBtYXggc2l6ZSBvZiB0aGUgaHR0cCByZXF1ZXN0IGNvbnRlbnQgaW4gYnl0ZXMgYWxsb3dlZCxcbiAgICAgIG1heEJvZHlMZW5ndGg6IDEwMDAgKiAxMDAwICogMTAsXG4gICAgICAvLyBgbWF4UmVkaXJlY3RzYCBkZWZpbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByZWRpcmVjdHMgdG8gZm9sbG93IGluIG5vZGUuanMsXG4gICAgICBtYXhSZWRpcmVjdHM6IDUsXG4gICAgICAvLyBgaHR0cEFnZW50YCBhbmQgYGh0dHBzQWdlbnRgIGRlZmluZSBhIGN1c3RvbSBhZ2VudCB0byBiZSB1c2VkIHdoZW4gcGVyZm9ybWluZyBodHRwXG4gICAgICBodHRwQWdlbnQ6IG5ldyBodHRwLkFnZW50KHsga2VlcEFsaXZlOiB0cnVlIH0pLFxuICAgICAgLy8gYW5kIGh0dHBzIHJlcXVlc3RzLCByZXNwZWN0aXZlbHksIGluIG5vZGUuanMuIFRoaXMgYWxsb3dzIG9wdGlvbnMgdG8gYmUgYWRkZWQgbGlrZSBga2VlcEFsaXZlYCB0aGF0IGFyZSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LlxuICAgICAgaHR0cHNBZ2VudDogbmV3IGh0dHBzLkFnZW50KHsga2VlcEFsaXZlOiB0cnVlIH0pLFxuICAgIH07XG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5kZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICAgIHRoaXMuaW5zdGFuY2UgPSBheGlvcy5jcmVhdGUodGhpcy5vcHRpb25zKTtcblxuICAgIC8vIE1lcmdlIHdpdGggZGVmYXVsdCBjb25maWcgdG8gZWxpbWluYXRlIG51bGwgY2hlY2tzXG4gICAgY29uc3QgZGVmYXVsdE9ic2VydmFiaWxpdHlDb25maWc6IEF4aW9zQ2xpZW50T2JzZXJ2YWJpbGl0eUNvbmZpZyA9IHtcbiAgICAgIGxvZ2dlcjogdW5kZWZpbmVkLFxuICAgICAgc3RhdHNDbGllbnQ6IHVuZGVmaW5lZCxcbiAgICAgIGRlZmF1bHRTdGF0VGFnczoge30sXG4gICAgfTtcbiAgICB0aGlzLm9ic2VydmFiaWxpdHlDb25maWcgPSB7IC4uLmRlZmF1bHRPYnNlcnZhYmlsaXR5Q29uZmlnLCAuLi5vYnNlcnZhYmlsaXR5Q29uZmlnIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1ha2VSZXF1ZXN0PFQ+KFxuICAgIGNvbmZpZzogUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgY29uc3Qgc3RhcnRUaW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuICAgIC8vIEV4dHJhY3QgbWV0YWRhdGEgZm9yIGxvZ2dpbmcvbWV0cmljc1xuICAgIGNvbnN0IG1ldGhvZCA9IGNvbmZpZy5tZXRob2Q/LnRvVXBwZXJDYXNlKCkgfHwgJ1VOS05PV04nO1xuICAgIGNvbnN0IHVybCA9IGNvbmZpZy51cmwgfHwgJ3Vua25vd24nO1xuICAgIGNvbnN0IGJvZHkgPSBjb25maWcuZGF0YSB8fCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3RhdFRhZ3M6IFN0YXRUYWdzID0ge1xuICAgICAgLi4udGhpcy5vYnNlcnZhYmlsaXR5Q29uZmlnLmRlZmF1bHRTdGF0VGFncyxcbiAgICAgIHJlcXVlc3RNZXRob2Q6IG1ldGhvZCxcbiAgICAgIGVuZHBvaW50UGF0aDogJ2RlZmF1bHQnLFxuICAgICAgLi4uY29uZmlnLnN0YXRUYWdzLFxuICAgIH07XG5cbiAgICAvLyBPcHRpb25hbCByZXF1ZXN0IGxvZ2dpbmdcbiAgICBjb25zdCByZXF1ZXN0TG9nUGFyYW1zOiBSZXF1ZXN0TG9nUGFyYW1zID0ge1xuICAgICAgcmVxdWVzdERldGFpbHM6IHtcbiAgICAgICAgbWV0aG9kOiBtZXRob2QgfHwgJ3VuZGVmaW5lZCcsXG4gICAgICAgIHVybDogdXJsIHx8ICd1bmRlZmluZWQnLFxuICAgICAgICBib2R5OiBib2R5IHx8ICd1bmRlZmluZWQnLFxuICAgICAgfSxcbiAgICAgIG1ldGFkYXRhOiBzdGF0VGFncy5tZXRhZGF0YSB8fCB7fSxcbiAgICB9O1xuICAgIHRoaXMub2JzZXJ2YWJpbGl0eUNvbmZpZy5sb2dnZXI/LnJlcXVlc3RMb2coXG4gICAgICBgW0hUVFBdICR7bWV0aG9kfSAke3VybH0gcmVxdWVzdGAsXG4gICAgICByZXF1ZXN0TG9nUGFyYW1zLFxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdENvbmZpZyA9IGNvbmZpZztcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5pbnN0YW5jZS5yZXF1ZXN0KHJlcXVlc3RDb25maWcpO1xuICAgICAgY29uc3QgeyBzdGF0dXMsIGRhdGEsIGhlYWRlcnMgfSA9IHJlc3BvbnNlO1xuXG4gICAgICAvLyBPcHRpb25hbCByZXNwb25zZSBsb2dnaW5nXG4gICAgICBjb25zdCByZXNwb25zZUxvZ1BhcmFtczogUmVzcG9uc2VMb2dQYXJhbXMgPSB7XG4gICAgICAgIHJlc3BvbnNlRGV0YWlsczoge1xuICAgICAgICAgIHN0YXR1czogc3RhdHVzIHx8IDAsXG4gICAgICAgICAgYm9keTogZGF0YSB8fCAndW5kZWZpbmVkJyxcbiAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzIHx8ICd1bmRlZmluZWQnLFxuICAgICAgICB9LFxuICAgICAgICBtZXRhZGF0YTogc3RhdFRhZ3MubWV0YWRhdGEgfHwge30sXG4gICAgICB9O1xuICAgICAgdGhpcy5vYnNlcnZhYmlsaXR5Q29uZmlnLmxvZ2dlcj8ucmVzcG9uc2VMb2coXG4gICAgICAgIGBbSFRUUF0gJHttZXRob2R9ICR7dXJsfSByZXNwb25zZWAsXG4gICAgICAgIHJlc3BvbnNlTG9nUGFyYW1zLFxuICAgICAgKTtcblxuICAgICAgLy8gT3B0aW9uYWwgc3VjY2VzcyBtZXRyaWNzXG4gICAgICB0aGlzLm9ic2VydmFiaWxpdHlDb25maWcuc3RhdHNDbGllbnQ/LnRpbWluZyhcbiAgICAgICAgJ291dGdvaW5nX3JlcXVlc3RfbGF0ZW5jeScsXG4gICAgICAgIHN0YXJ0VGltZXN0YW1wLFxuICAgICAgICBzdGF0VGFncyxcbiAgICAgICk7XG4gICAgICB0aGlzLm9ic2VydmFiaWxpdHlDb25maWcuc3RhdHNDbGllbnQ/LmNvdW50ZXIoJ291dGdvaW5nX3JlcXVlc3RfY291bnQnLCAxLCB7XG4gICAgICAgIC4uLnN0YXRUYWdzLFxuICAgICAgICBzdGF0dXNDb2RlOiBzdGF0dXMsXG4gICAgICB9KTtcblxuICAgICAgaWYgKHJlc3BvbnNlUGFyc2VyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHJlc3BvbnNlUGFyc2VyKGRhdGEpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICBzdGF0dXNDb2RlOiBzdGF0dXMsXG4gICAgICAgICAgICByZXNwb25zZUJvZHk6IHBhcnNlZERhdGEsXG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc3QgdW5rbm93bkVycm9yID0gZXJyb3IgYXMgRXJyb3I7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdjbGllbnQtZXJyb3InLFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogRXJyb3IgaGFzIHN0YXR1c1xuICAgICAgICAgICAgc3RhdHVzQ29kZTogdW5rbm93bkVycm9yLnN0YXR1cyB8fCA1MDAsXG4gICAgICAgICAgICBtZXNzYWdlOiBgRmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlIGRhdGE6ICR7dW5rbm93bkVycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyB0eXBlOiAnc3VjY2VzcycsIHN0YXR1c0NvZGU6IHN0YXR1cywgcmVzcG9uc2VCb2R5OiBkYXRhLCBoZWFkZXJzIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIERldGVybWluZSBzdGF0dXMgY29kZSBmb3IgZXJyb3IgbWV0cmljc1xuICAgICAgbGV0IGVycm9yU3RhdHVzQ29kZSA9IDUwMDsgLy8gRGVmYXVsdCB0byA1MDAgZm9yIG5ldHdvcmsvdW5rbm93biBlcnJvcnNcbiAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgIGNvbnN0IGF4aW9zRXJyb3IgPSBlcnJvciBhcyBBeGlvc0Vycm9yO1xuICAgICAgICBpZiAoYXhpb3NFcnJvci5yZXNwb25zZSkge1xuICAgICAgICAgIGVycm9yU3RhdHVzQ29kZSA9IGF4aW9zRXJyb3IucmVzcG9uc2Uuc3RhdHVzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9wdGlvbmFsIGVycm9yIGxvZ2dpbmdcbiAgICAgIHRoaXMub2JzZXJ2YWJpbGl0eUNvbmZpZy5sb2dnZXI/LmVycm9yPy4oYFtIVFRQXSAke21ldGhvZH0gJHt1cmx9IGVycm9yYCwge1xuICAgICAgICBlcnJvcjogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgICBzdGF0VGFnczogeyAuLi5zdGF0VGFncywgc3RhdHVzQ29kZTogZXJyb3JTdGF0dXNDb2RlIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gT3B0aW9uYWwgZXJyb3IgbWV0cmljc1xuICAgICAgdGhpcy5vYnNlcnZhYmlsaXR5Q29uZmlnLnN0YXRzQ2xpZW50Py50aW1pbmcoXG4gICAgICAgICdvdXRnb2luZ19yZXF1ZXN0X2xhdGVuY3knLFxuICAgICAgICBzdGFydFRpbWVzdGFtcCxcbiAgICAgICAgc3RhdFRhZ3MsXG4gICAgICApO1xuICAgICAgdGhpcy5vYnNlcnZhYmlsaXR5Q29uZmlnLnN0YXRzQ2xpZW50Py5jb3VudGVyKCdvdXRnb2luZ19yZXF1ZXN0X2NvdW50JywgMSwge1xuICAgICAgICAuLi5zdGF0VGFncyxcbiAgICAgICAgc3RhdHVzQ29kZTogZXJyb3JTdGF0dXNDb2RlLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgIGNvbnN0IGF4aW9zRXJyb3IgPSBlcnJvciBhcyBBeGlvc0Vycm9yO1xuICAgICAgICBpZiAoYXhpb3NFcnJvci5yZXNwb25zZSkge1xuICAgICAgICAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGF4aW9zRXJyb3I7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi1lcnJvcicsXG4gICAgICAgICAgICBzdGF0dXNDb2RlOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgcmVzcG9uc2VCb2R5OiByZXNwb25zZS5kYXRhLFxuICAgICAgICAgICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChheGlvc0Vycm9yLmNvZGUpIHtcbiAgICAgICAgICBjb25zdCByZXNwID0gTkVUV09SS19TVEFUVVNfRVJSX01BUFtheGlvc0Vycm9yLmNvZGVdO1xuICAgICAgICAgIGlmICghcmVzcCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdHlwZTogJ2NsaWVudC1lcnJvcicsXG4gICAgICAgICAgICAgIHN0YXR1c0NvZGU6IDUwMCxcbiAgICAgICAgICAgICAgbWVzc2FnZTogYFVua25vd24gRXJyb3I6JHtheGlvc0Vycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnY2xpZW50LWVycm9yJyxcbiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlc3Auc3RhdHVzLFxuICAgICAgICAgICAgbWVzc2FnZTogcmVzcC5tZXNzYWdlLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdW5rbm93bkVycm9yID0gZXJyb3IgYXMgRXJyb3I7XG4gICAgICBjb25zdCBzdGF0dXMgPSA1MDA7XG4gICAgICBjb25zdCBtZXNzYWdlID0gdW5rbm93bkVycm9yLm1lc3NhZ2UgfHwgJ1Vua25vd24gRXJyb3InO1xuXG4gICAgICByZXR1cm4geyB0eXBlOiAnY2xpZW50LWVycm9yJywgc3RhdHVzQ29kZTogc3RhdHVzLCBtZXNzYWdlIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzogUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgbGV0IGNvbmZpZzogUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICB1cmwsXG4gICAgfTtcbiAgICBpZiAoaXNOb3RFbXB0eShvcHRpb25zKSkge1xuICAgICAgY29uZmlnID0geyAuLi5jb25maWcsIC4uLm9wdGlvbnMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFrZVJlcXVlc3Q8VD4oY29uZmlnLCByZXNwb25zZVBhcnNlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcG9zdDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgbGV0IGNvbmZpZzogUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsLFxuICAgICAgZGF0YSxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZGF0YT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFJlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGxldCBjb25maWc6IFJlcXVlc3RDb25maWcgPSB7XG4gICAgICBtZXRob2Q6ICdwdXQnLFxuICAgICAgdXJsLFxuICAgICAgZGF0YSxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwYXRjaDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgbGV0IGNvbmZpZzogUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ3BhdGNoJyxcbiAgICAgIHVybCxcbiAgICAgIGRhdGEsXG4gICAgfTtcbiAgICBpZiAoaXNOb3RFbXB0eShvcHRpb25zKSkge1xuICAgICAgY29uZmlnID0geyAuLi5jb25maWcsIC4uLm9wdGlvbnMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFrZVJlcXVlc3Q8VD4oY29uZmlnLCByZXNwb25zZVBhcnNlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICBsZXQgY29uZmlnOiBSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICAgIHVybCxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIC8vIEFkZCBvdGhlciBIVFRQIG1ldGhvZHMgYXMgbmVlZGVkXG59XG4iXX0=
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3NfY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvY2xpZW50cy9heGlvc19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0NBQWtDO0FBQ2xDLGtEQUF5RDtBQUN6RCxnREFBd0I7QUFDeEIsa0RBQTBCO0FBQzFCLCtDQUF5RDtBQVd6RCx1Q0FBeUM7QUFFekMsb0NBQW9DO0FBQ3BDLE1BQU0sb0JBQW9CLEdBQUc7SUFDM0IsU0FBUztJQUNULFVBQVU7SUFDVixjQUFjO0lBQ2QsZUFBZTtJQUNmLFFBQVE7SUFDUixhQUFhO0lBQ2IsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixVQUFVO0NBQ1gsQ0FBQztBQUVGLHFDQUFxQztBQUNyQyxNQUFNLHFCQUFxQixHQUFHO0lBQzVCLFNBQVM7SUFDVCxVQUFVO0lBQ1YsY0FBYztJQUNkLFNBQVM7SUFDVCxZQUFZO0lBQ1osZUFBZTtJQUNmLFFBQVE7SUFDUixhQUFhO0lBQ2IsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixVQUFVO0NBQ1gsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FDekIsU0FBa0MsRUFDbEMsYUFBdUI7SUFFdkIsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBdUMsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUNuRixJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQWEsV0FBVztJQU90QixZQUFZLE9B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Q3JELENBQUM7Q0FHRjtBQTlRRCxrQ0E4UUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZXF1aXJlLWF3YWl0ICovXG5pbXBvcnQgYXhpb3MsIHsgQXhpb3NFcnJvciwgQXhpb3NJbnN0YW5jZSB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCB7IE5FVFdPUktfU1RBVFVTX0VSUl9NQVAgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQXBpUmVzcG9uc2UsXG4gIEh0dHBDbGllbnQsXG4gIFJlc3BvbnNlUGFyc2VyLFxuICBBeGlvc0NsaWVudE9ic2VydmFiaWxpdHlDb25maWcsXG4gIFN0YXRUYWdzLFxuICBSZXF1ZXN0TG9nUGFyYW1zLFxuICBSZXNwb25zZUxvZ1BhcmFtcyxcbiAgUmVxdWVzdENvbmZpZyxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBpc05vdEVtcHR5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG4vLyBBbGxvd2VkIGxhYmVscyBmb3IgdGltaW5nIG1ldHJpY3NcbmNvbnN0IFRJTUlOR19NRVRSSUNfTEFCRUxTID0gW1xuICAnZmVhdHVyZScsXG4gICdkZXN0VHlwZScsXG4gICdlbmRwb2ludFBhdGgnLFxuICAncmVxdWVzdE1ldGhvZCcsXG4gICdtb2R1bGUnLFxuICAnd29ya3NwYWNlSWQnLFxuICAnZGVzdGluYXRpb25JZCcsXG4gICdpbXBsZW1lbnRhdGlvbicsXG4gICdzb3VyY2VJZCcsXG5dO1xuXG4vLyBBbGxvd2VkIGxhYmVscyBmb3IgY291bnRlciBtZXRyaWNzXG5jb25zdCBDT1VOVEVSX01FVFJJQ19MQUJFTFMgPSBbXG4gICdmZWF0dXJlJyxcbiAgJ2Rlc3RUeXBlJyxcbiAgJ2VuZHBvaW50UGF0aCcsXG4gICdzdWNjZXNzJyxcbiAgJ3N0YXR1c0NvZGUnLFxuICAncmVxdWVzdE1ldGhvZCcsXG4gICdtb2R1bGUnLFxuICAnd29ya3NwYWNlSWQnLFxuICAnZGVzdGluYXRpb25JZCcsXG4gICdpbXBsZW1lbnRhdGlvbicsXG4gICdzb3VyY2VJZCcsXG5dO1xuXG4vKipcbiAqIEZpbHRlcnMgbGFiZWxzIHRvIG9ubHkgaW5jbHVkZSBhbGxvd2VkIGtleXNcbiAqIEBwYXJhbSBhbGxMYWJlbHMgLSBUaGUgY29tcGxldGUgc2V0IG9mIGxhYmVsc1xuICogQHBhcmFtIGFsbG93ZWRMYWJlbHMgLSBBcnJheSBvZiBhbGxvd2VkIGxhYmVsIGtleXNcbiAqIEByZXR1cm5zIEZpbHRlcmVkIGxhYmVscyBvYmplY3RcbiAqL1xuZnVuY3Rpb24gZmlsdGVyTWV0cmljTGFiZWxzKFxuICBhbGxMYWJlbHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBhbGxvd2VkTGFiZWxzOiBzdHJpbmdbXSxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIGFsbG93ZWRMYWJlbHMucmVkdWNlKChmaWx0ZXJlZExhYmVsczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFsbExhYmVsc1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7IC4uLmZpbHRlcmVkTGFiZWxzLCBba2V5XTogYWxsTGFiZWxzW2tleV0gfTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkTGFiZWxzO1xuICB9LCB7fSk7XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCBheGlvcyB0byBtYWtlIGh0dHAgcmVxdWVzdHNcbiAqXG4gKiBAY2xhc3MgQXhpb3NDbGllbnRcbiAqIEBjbGFzc2Rlc2NcbiAqIFRoZSBgQXhpb3NDbGllbnRgIGNsYXNzIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIGF4aW9zIGxpYnJhcnkgdGhhdCBwcm92aWRlcyBhIHNpbXBsaWZpZWQgaW50ZXJmYWNlIGZvciBtYWtpbmcgSFRUUCByZXF1ZXN0cy4gSXQgaGFuZGxlcyB2YXJpb3VzIHR5cGVzIG9mIGVycm9ycyBhbmQgcHJvdmlkZXMgYSBjb25zaXN0ZW50IHJlc3BvbnNlIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge0F4aW9zUmVxdWVzdENvbmZpZ30gb3B0aW9ucyAtIFRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBodHRwIGNsaWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBheGlvc0NsaWVudCA9IG5ldyBBeGlvc0NsaWVudCh7IHRpbWVvdXQ6IDEwMDAgKiAxMCB9KTtcbiAqIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3NDbGllbnQucG9zdChcImh0dHBzOi8vZXhhbXBsZS5jb21cIiwgeyBmb286IFwiYmFyXCIgfSk7XG4gKiBpZiAocmVzcG9uc2UudHlwZSA9PT0gXCJzdWNjZXNzXCIpIHtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLnJlc3BvbnNlQm9keSk7XG4gKiB9IGVsc2UgaWYgKHJlc3BvbnNlLnR5cGUgPT09IFwiYXBwbGljYXRpb24tZXJyb3JcIikge1xuICogICBjb25zb2xlLmxvZyhyZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2UubWVzc2FnZSk7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLnJlc3BvbnNlQm9keSk7XG4gKiB9IGVsc2UgaWYgKHJlc3BvbnNlLnR5cGUgPT09IFwiY2xpZW50LWVycm9yXCIpIHtcbiAqICAgY29uc29sZS5sb2cocmVzcG9uc2Uuc3RhdHVzQ29kZSk7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLm1lc3NhZ2UpO1xuICogfVxuICovXG5leHBvcnQgY2xhc3MgQXhpb3NDbGllbnQgaW1wbGVtZW50cyBIdHRwQ2xpZW50IHtcbiAgcHJpdmF0ZSBvcHRpb25zOiBSZXF1ZXN0Q29uZmlnO1xuXG4gIHByaXZhdGUgaW5zdGFuY2U6IEF4aW9zSW5zdGFuY2U7XG5cbiAgcHJpdmF0ZSBvYnNlcnZhYmlsaXR5Q29uZmlnOiBBeGlvc0NsaWVudE9ic2VydmFiaWxpdHlDb25maWc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IFJlcXVlc3RDb25maWcsIG9ic2VydmFiaWxpdHlDb25maWc/OiBBeGlvc0NsaWVudE9ic2VydmFiaWxpdHlDb25maWcpIHtcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIHRpbWVvdXQ6IDEwMDAgKiAxMCxcbiAgICAgIC8vIGB3aXRoQ3JlZGVudGlhbHNgIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBjcm9zcy1zaXRlIEFjY2Vzcy1Db250cm9sIHJlcXVlc3RzIHNob3VsZCBiZSBtYWRlIHVzaW5nIGNyZWRlbnRpYWxzXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgICAgLy8gYHJlc3BvbnNlRW5jb2RpbmdgIGluZGljYXRlcyBlbmNvZGluZyB0byB1c2UgZm9yIGRlY29kaW5nIHJlc3BvbnNlcyAoTm9kZS5qcyBvbmx5KSxcbiAgICAgIHJlc3BvbnNlRW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgIC8vIGBtYXhCb2R5TGVuZ3RoYCAoTm9kZSBvbmx5IG9wdGlvbikgZGVmaW5lcyB0aGUgbWF4IHNpemUgb2YgdGhlIGh0dHAgcmVxdWVzdCBjb250ZW50IGluIGJ5dGVzIGFsbG93ZWQsXG4gICAgICBtYXhCb2R5TGVuZ3RoOiAxMDAwICogMTAwMCAqIDEwLFxuICAgICAgLy8gYG1heFJlZGlyZWN0c2AgZGVmaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVkaXJlY3RzIHRvIGZvbGxvdyBpbiBub2RlLmpzLFxuICAgICAgbWF4UmVkaXJlY3RzOiA1LFxuICAgICAgLy8gYGh0dHBBZ2VudGAgYW5kIGBodHRwc0FnZW50YCBkZWZpbmUgYSBjdXN0b20gYWdlbnQgdG8gYmUgdXNlZCB3aGVuIHBlcmZvcm1pbmcgaHR0cFxuICAgICAgaHR0cEFnZW50OiBuZXcgaHR0cC5BZ2VudCh7IGtlZXBBbGl2ZTogdHJ1ZSB9KSxcbiAgICAgIC8vIGFuZCBodHRwcyByZXF1ZXN0cywgcmVzcGVjdGl2ZWx5LCBpbiBub2RlLmpzLiBUaGlzIGFsbG93cyBvcHRpb25zIHRvIGJlIGFkZGVkIGxpa2UgYGtlZXBBbGl2ZWAgdGhhdCBhcmUgbm90IGVuYWJsZWQgYnkgZGVmYXVsdC5cbiAgICAgIGh0dHBzQWdlbnQ6IG5ldyBodHRwcy5BZ2VudCh7IGtlZXBBbGl2ZTogdHJ1ZSB9KSxcbiAgICB9O1xuICAgIHRoaXMub3B0aW9ucyA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcbiAgICB0aGlzLmluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHRoaXMub3B0aW9ucyk7XG5cbiAgICAvLyBNZXJnZSB3aXRoIGRlZmF1bHQgY29uZmlnIHRvIGVsaW1pbmF0ZSBudWxsIGNoZWNrc1xuICAgIGNvbnN0IGRlZmF1bHRPYnNlcnZhYmlsaXR5Q29uZmlnOiBBeGlvc0NsaWVudE9ic2VydmFiaWxpdHlDb25maWcgPSB7XG4gICAgICBsb2dnZXI6IHVuZGVmaW5lZCxcbiAgICAgIHN0YXRzQ2xpZW50OiB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0U3RhdFRhZ3M6IHt9LFxuICAgIH07XG4gICAgdGhpcy5vYnNlcnZhYmlsaXR5Q29uZmlnID0geyAuLi5kZWZhdWx0T2JzZXJ2YWJpbGl0eUNvbmZpZywgLi4ub2JzZXJ2YWJpbGl0eUNvbmZpZyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBtYWtlUmVxdWVzdDxUPihcbiAgICBjb25maWc6IFJlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGNvbnN0IHN0YXJ0VGltZXN0YW1wID0gbmV3IERhdGUoKTtcbiAgICAvLyBFeHRyYWN0IG1ldGFkYXRhIGZvciBsb2dnaW5nL21ldHJpY3NcbiAgICBjb25zdCBtZXRob2QgPSBjb25maWcubWV0aG9kPy50b1VwcGVyQ2FzZSgpIHx8ICdVTktOT1dOJztcbiAgICBjb25zdCB1cmwgPSBjb25maWcudXJsIHx8ICd1bmtub3duJztcbiAgICBjb25zdCBib2R5ID0gY29uZmlnLmRhdGEgfHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0YXRUYWdzOiBTdGF0VGFncyA9IHtcbiAgICAgIC4uLnRoaXMub2JzZXJ2YWJpbGl0eUNvbmZpZy5kZWZhdWx0U3RhdFRhZ3MsXG4gICAgICByZXF1ZXN0TWV0aG9kOiBtZXRob2QsXG4gICAgICBlbmRwb2ludFBhdGg6ICdkZWZhdWx0JyxcbiAgICAgIC4uLmNvbmZpZy5zdGF0VGFncyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGFNZXRyaWNUYWdzID0ge1xuICAgICAgLi4uKHRoaXMub2JzZXJ2YWJpbGl0eUNvbmZpZy5kZWZhdWx0U3RhdFRhZ3M/Lm1ldGFkYXRhIHx8IHt9KSxcbiAgICAgIC4uLihjb25maWcuc3RhdFRhZ3M/Lm1ldGFkYXRhIHx8IHt9KSxcbiAgICB9O1xuXG4gICAgLy8gT3B0aW9uYWwgcmVxdWVzdCBsb2dnaW5nXG4gICAgY29uc3QgcmVxdWVzdExvZ1BhcmFtczogUmVxdWVzdExvZ1BhcmFtcyA9IHtcbiAgICAgIHJlcXVlc3REZXRhaWxzOiB7XG4gICAgICAgIG1ldGhvZDogbWV0aG9kIHx8ICd1bmRlZmluZWQnLFxuICAgICAgICB1cmw6IHVybCB8fCAndW5kZWZpbmVkJyxcbiAgICAgICAgYm9keTogYm9keSB8fCAndW5kZWZpbmVkJyxcbiAgICAgIH0sXG4gICAgICBtZXRhZGF0YTogc3RhdFRhZ3MubWV0YWRhdGEgfHwge30sXG4gICAgfTtcbiAgICB0aGlzLm9ic2VydmFiaWxpdHlDb25maWcubG9nZ2VyPy5yZXF1ZXN0TG9nKFxuICAgICAgYFtIVFRQXSAke21ldGhvZH0gJHt1cmx9IHJlcXVlc3RgLFxuICAgICAgcmVxdWVzdExvZ1BhcmFtcyxcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcXVlc3RDb25maWcgPSBjb25maWc7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaW5zdGFuY2UucmVxdWVzdChyZXF1ZXN0Q29uZmlnKTtcbiAgICAgIGNvbnN0IHsgc3RhdHVzLCBkYXRhLCBoZWFkZXJzIH0gPSByZXNwb25zZTtcblxuICAgICAgLy8gT3B0aW9uYWwgcmVzcG9uc2UgbG9nZ2luZ1xuICAgICAgY29uc3QgcmVzcG9uc2VMb2dQYXJhbXM6IFJlc3BvbnNlTG9nUGFyYW1zID0ge1xuICAgICAgICByZXNwb25zZURldGFpbHM6IHtcbiAgICAgICAgICBzdGF0dXM6IHN0YXR1cyB8fCAwLFxuICAgICAgICAgIGJvZHk6IGRhdGEgfHwgJ3VuZGVmaW5lZCcsXG4gICAgICAgICAgaGVhZGVyczogaGVhZGVycyB8fCAndW5kZWZpbmVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0YWRhdGE6IHN0YXRUYWdzLm1ldGFkYXRhIHx8IHt9LFxuICAgICAgfTtcbiAgICAgIHRoaXMub2JzZXJ2YWJpbGl0eUNvbmZpZy5sb2dnZXI/LnJlc3BvbnNlTG9nKFxuICAgICAgICBgW0hUVFBdICR7bWV0aG9kfSAke3VybH0gcmVzcG9uc2VgLFxuICAgICAgICByZXNwb25zZUxvZ1BhcmFtcyxcbiAgICAgICk7XG5cbiAgICAgIC8vIE9wdGlvbmFsIHN1Y2Nlc3MgbWV0cmljc1xuICAgICAgY29uc3QgYWxsTGFiZWxzID0geyAuLi5tZXRhZGF0YU1ldHJpY1RhZ3MsIC4uLnN0YXRUYWdzLCBzdGF0dXNDb2RlOiBzdGF0dXMgfTtcblxuICAgICAgY29uc3QgdGltaW5nTGFiZWxzID0gZmlsdGVyTWV0cmljTGFiZWxzKGFsbExhYmVscywgVElNSU5HX01FVFJJQ19MQUJFTFMpO1xuICAgICAgdGhpcy5vYnNlcnZhYmlsaXR5Q29uZmlnLnN0YXRzQ2xpZW50Py50aW1pbmcoXG4gICAgICAgICdvdXRnb2luZ19yZXF1ZXN0X2xhdGVuY3knLFxuICAgICAgICBzdGFydFRpbWVzdGFtcCxcbiAgICAgICAgdGltaW5nTGFiZWxzLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgY291bnRlckxhYmVscyA9IGZpbHRlck1ldHJpY0xhYmVscyhhbGxMYWJlbHMsIENPVU5URVJfTUVUUklDX0xBQkVMUyk7XG4gICAgICB0aGlzLm9ic2VydmFiaWxpdHlDb25maWcuc3RhdHNDbGllbnQ/LmNvdW50ZXIoJ291dGdvaW5nX3JlcXVlc3RfY291bnQnLCAxLCBjb3VudGVyTGFiZWxzKTtcblxuICAgICAgaWYgKHJlc3BvbnNlUGFyc2VyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHJlc3BvbnNlUGFyc2VyKGRhdGEpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICBzdGF0dXNDb2RlOiBzdGF0dXMsXG4gICAgICAgICAgICByZXNwb25zZUJvZHk6IHBhcnNlZERhdGEsXG4gICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc3QgdW5rbm93bkVycm9yID0gZXJyb3IgYXMgRXJyb3I7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdjbGllbnQtZXJyb3InLFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogRXJyb3IgaGFzIHN0YXR1c1xuICAgICAgICAgICAgc3RhdHVzQ29kZTogdW5rbm93bkVycm9yLnN0YXR1cyB8fCA1MDAsXG4gICAgICAgICAgICBtZXNzYWdlOiBgRmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlIGRhdGE6ICR7dW5rbm93bkVycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyB0eXBlOiAnc3VjY2VzcycsIHN0YXR1c0NvZGU6IHN0YXR1cywgcmVzcG9uc2VCb2R5OiBkYXRhLCBoZWFkZXJzIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIERldGVybWluZSBzdGF0dXMgY29kZSBmb3IgZXJyb3IgbWV0cmljc1xuICAgICAgbGV0IGVycm9yU3RhdHVzQ29kZSA9IDUwMDsgLy8gRGVmYXVsdCB0byA1MDAgZm9yIG5ldHdvcmsvdW5rbm93biBlcnJvcnNcbiAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgIGNvbnN0IGF4aW9zRXJyb3IgPSBlcnJvciBhcyBBeGlvc0Vycm9yO1xuICAgICAgICBpZiAoYXhpb3NFcnJvci5yZXNwb25zZSkge1xuICAgICAgICAgIGVycm9yU3RhdHVzQ29kZSA9IGF4aW9zRXJyb3IucmVzcG9uc2Uuc3RhdHVzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9wdGlvbmFsIGVycm9yIGxvZ2dpbmdcbiAgICAgIHRoaXMub2JzZXJ2YWJpbGl0eUNvbmZpZy5sb2dnZXI/LmVycm9yPy4oYFtIVFRQXSAke21ldGhvZH0gJHt1cmx9IGVycm9yYCwge1xuICAgICAgICBlcnJvcjogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgICBzdGF0VGFnczogeyAuLi5zdGF0VGFncywgc3RhdHVzQ29kZTogZXJyb3JTdGF0dXNDb2RlIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gT3B0aW9uYWwgZXJyb3IgbWV0cmljc1xuICAgICAgY29uc3QgYWxsRXJyb3JMYWJlbHMgPSB7IC4uLm1ldGFkYXRhTWV0cmljVGFncywgLi4uc3RhdFRhZ3MsIHN0YXR1c0NvZGU6IGVycm9yU3RhdHVzQ29kZSB9O1xuXG4gICAgICBjb25zdCB0aW1pbmdMYWJlbHMgPSBmaWx0ZXJNZXRyaWNMYWJlbHMoYWxsRXJyb3JMYWJlbHMsIFRJTUlOR19NRVRSSUNfTEFCRUxTKTtcbiAgICAgIHRoaXMub2JzZXJ2YWJpbGl0eUNvbmZpZy5zdGF0c0NsaWVudD8udGltaW5nKFxuICAgICAgICAnb3V0Z29pbmdfcmVxdWVzdF9sYXRlbmN5JyxcbiAgICAgICAgc3RhcnRUaW1lc3RhbXAsXG4gICAgICAgIHRpbWluZ0xhYmVscyxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGNvdW50ZXJMYWJlbHMgPSBmaWx0ZXJNZXRyaWNMYWJlbHMoYWxsRXJyb3JMYWJlbHMsIENPVU5URVJfTUVUUklDX0xBQkVMUyk7XG4gICAgICB0aGlzLm9ic2VydmFiaWxpdHlDb25maWcuc3RhdHNDbGllbnQ/LmNvdW50ZXIoJ291dGdvaW5nX3JlcXVlc3RfY291bnQnLCAxLCBjb3VudGVyTGFiZWxzKTtcblxuICAgICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgICAgY29uc3QgYXhpb3NFcnJvciA9IGVycm9yIGFzIEF4aW9zRXJyb3I7XG4gICAgICAgIGlmIChheGlvc0Vycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXhpb3NFcnJvcjtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uLWVycm9yJyxcbiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXG4gICAgICAgICAgICByZXNwb25zZUJvZHk6IHJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgICBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF4aW9zRXJyb3IuY29kZSkge1xuICAgICAgICAgIGNvbnN0IHJlc3AgPSBORVRXT1JLX1NUQVRVU19FUlJfTUFQW2F4aW9zRXJyb3IuY29kZV07XG4gICAgICAgICAgaWYgKCFyZXNwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlOiAnY2xpZW50LWVycm9yJyxcbiAgICAgICAgICAgICAgc3RhdHVzQ29kZTogNTAwLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBgVW5rbm93biBFcnJvcjoke2F4aW9zRXJyb3IubWVzc2FnZX1gLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdjbGllbnQtZXJyb3InLFxuICAgICAgICAgICAgc3RhdHVzQ29kZTogcmVzcC5zdGF0dXMsXG4gICAgICAgICAgICBtZXNzYWdlOiByZXNwLm1lc3NhZ2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB1bmtub3duRXJyb3IgPSBlcnJvciBhcyBFcnJvcjtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IDUwMDtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB1bmtub3duRXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBFcnJvcic7XG5cbiAgICAgIHJldHVybiB7IHR5cGU6ICdjbGllbnQtZXJyb3InLCBzdGF0dXNDb2RlOiBzdGF0dXMsIG1lc3NhZ2UgfTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0PFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICBsZXQgY29uZmlnOiBSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybCxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwb3N0PFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGRhdGE/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICBsZXQgY29uZmlnOiBSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmwsXG4gICAgICBkYXRhLFxuICAgIH07XG4gICAgaWYgKGlzTm90RW1wdHkob3B0aW9ucykpIHtcbiAgICAgIGNvbmZpZyA9IHsgLi4uY29uZmlnLCAuLi5vcHRpb25zIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1ha2VSZXF1ZXN0PFQ+KGNvbmZpZywgcmVzcG9uc2VQYXJzZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1dDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUmVxdWVzdENvbmZpZyxcbiAgICByZXNwb25zZVBhcnNlcj86IFJlc3BvbnNlUGFyc2VyPFQ+LFxuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgbGV0IGNvbmZpZzogUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICB1cmwsXG4gICAgICBkYXRhLFxuICAgIH07XG4gICAgaWYgKGlzTm90RW1wdHkob3B0aW9ucykpIHtcbiAgICAgIGNvbmZpZyA9IHsgLi4uY29uZmlnLCAuLi5vcHRpb25zIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1ha2VSZXF1ZXN0PFQ+KGNvbmZpZywgcmVzcG9uc2VQYXJzZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBhdGNoPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGRhdGE/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0Q29uZmlnLFxuICAgIHJlc3BvbnNlUGFyc2VyPzogUmVzcG9uc2VQYXJzZXI8VD4sXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICBsZXQgY29uZmlnOiBSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgbWV0aG9kOiAncGF0Y2gnLFxuICAgICAgdXJsLFxuICAgICAgZGF0YSxcbiAgICB9O1xuICAgIGlmIChpc05vdEVtcHR5KG9wdGlvbnMpKSB7XG4gICAgICBjb25maWcgPSB7IC4uLmNvbmZpZywgLi4ub3B0aW9ucyB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdDxUPihjb25maWcsIHJlc3BvbnNlUGFyc2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGU8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFJlcXVlc3RDb25maWcsXG4gICAgcmVzcG9uc2VQYXJzZXI/OiBSZXNwb25zZVBhcnNlcjxUPixcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIGxldCBjb25maWc6IFJlcXVlc3RDb25maWcgPSB7XG4gICAgICBtZXRob2Q6ICdkZWxldGUnLFxuICAgICAgdXJsLFxuICAgIH07XG4gICAgaWYgKGlzTm90RW1wdHkob3B0aW9ucykpIHtcbiAgICAgIGNvbmZpZyA9IHsgLi4uY29uZmlnLCAuLi5vcHRpb25zIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1ha2VSZXF1ZXN0PFQ+KGNvbmZpZywgcmVzcG9uc2VQYXJzZXIpO1xuICB9XG5cbiAgLy8gQWRkIG90aGVyIEhUVFAgbWV0aG9kcyBhcyBuZWVkZWRcbn1cbiJdfQ==
|
package/package.json
CHANGED