@odigos/aws-cdk 0.0.11 → 0.0.13
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/.jsii +31 -48
- package/README.md +35 -37
- package/lib/collector-config.d.ts +30 -2
- package/lib/collector-config.js +39 -10
- package/lib/generated/layers.d.ts +3 -3
- package/lib/generated/layers.js +148 -148
- package/lib/instrumentation.d.ts +3 -41
- package/lib/instrumentation.js +32 -61
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +25 -4
- package/lib/types.js +1 -1
- package/package.json +1 -1
package/lib/collector-config.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ENV_LOGS_EXPORTER = exports.ENV_METRICS_EXPORTER = exports.ENV_TRACES_EXPORTER = exports.EXPORTER_NONE = exports.ENV_COLLECTOR_CONFIG_URI = void 0;
|
|
3
|
+
exports.SIGNAL_DEFAULTS = exports.ENV_LOGS_EXPORTER = exports.ENV_METRICS_EXPORTER = exports.ENV_TRACES_EXPORTER = exports.EXPORTER_NONE = exports.ENV_COLLECTOR_CONFIG_URI = void 0;
|
|
4
4
|
exports.signalEnabled = signalEnabled;
|
|
5
|
+
exports.resolvedSignals = resolvedSignals;
|
|
5
6
|
exports.exporterNameFor = exporterNameFor;
|
|
6
7
|
exports.exporterOverrideFor = exporterOverrideFor;
|
|
7
8
|
exports.renderCollectorConfig = renderCollectorConfig;
|
|
@@ -69,9 +70,35 @@ exports.EXPORTER_NONE = 'none';
|
|
|
69
70
|
exports.ENV_TRACES_EXPORTER = 'OTEL_TRACES_EXPORTER';
|
|
70
71
|
exports.ENV_METRICS_EXPORTER = 'OTEL_METRICS_EXPORTER';
|
|
71
72
|
exports.ENV_LOGS_EXPORTER = 'OTEL_LOGS_EXPORTER';
|
|
72
|
-
/**
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Whether a signal is enabled, given the caller's value and the signal's own default.
|
|
75
|
+
*
|
|
76
|
+
* The defaults are NOT uniform: traces are on, metrics and logs are off (see `SIGNAL_DEFAULTS`). So the
|
|
77
|
+
* default has to travel with the signal rather than being folded into one "unset means on" rule.
|
|
78
|
+
*/
|
|
79
|
+
function signalEnabled(value, defaultEnabled) {
|
|
80
|
+
return value ?? defaultEnabled;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Which signals a destination carries when the caller says nothing.
|
|
84
|
+
*
|
|
85
|
+
* TRACES ONLY. Metrics and logs are opt-in because the cost of having them on by default falls on people
|
|
86
|
+
* who never asked for them: a destination that does not implement a signal refuses every batch of it, and
|
|
87
|
+
* the in-Lambda collector then retries on an exponential backoff inside billed duration. Traces are what
|
|
88
|
+
* almost every destination accepts and what almost everyone instruments for; the other two are a
|
|
89
|
+
* deliberate choice about the destination, so they are made deliberately.
|
|
90
|
+
*
|
|
91
|
+
* Turning one on is `metrics: true`. Enabling a signal also drops the `OTEL_*_EXPORTER=none` override, so
|
|
92
|
+
* the SDK starts producing it again.
|
|
93
|
+
*/
|
|
94
|
+
exports.SIGNAL_DEFAULTS = { traces: true, metrics: false, logs: false };
|
|
95
|
+
/** The three signals resolved against their defaults — the single place that pairing is decided. */
|
|
96
|
+
function resolvedSignals(dest) {
|
|
97
|
+
return {
|
|
98
|
+
traces: signalEnabled(dest.traces, exports.SIGNAL_DEFAULTS.traces),
|
|
99
|
+
metrics: signalEnabled(dest.metrics, exports.SIGNAL_DEFAULTS.metrics),
|
|
100
|
+
logs: signalEnabled(dest.logs, exports.SIGNAL_DEFAULTS.logs),
|
|
101
|
+
};
|
|
75
102
|
}
|
|
76
103
|
/**
|
|
77
104
|
* Renders a double-quoted YAML scalar.
|
|
@@ -136,10 +163,11 @@ function renderExporter(dest) {
|
|
|
136
163
|
*/
|
|
137
164
|
function renderPipelines(dest, exporterName) {
|
|
138
165
|
const parts = [];
|
|
166
|
+
const enabled = resolvedSignals(dest);
|
|
139
167
|
const signals = [
|
|
140
|
-
['traces',
|
|
141
|
-
['metrics',
|
|
142
|
-
['logs',
|
|
168
|
+
['traces', enabled.traces],
|
|
169
|
+
['metrics', enabled.metrics],
|
|
170
|
+
['logs', enabled.logs],
|
|
143
171
|
];
|
|
144
172
|
for (const [name, enabled] of signals) {
|
|
145
173
|
if (!enabled) {
|
|
@@ -185,8 +213,9 @@ function renderCollectorConfig(dest) {
|
|
|
185
213
|
const exporter = renderExporter(dest);
|
|
186
214
|
const pipelines = renderPipelines(dest, exporterNameFor(dest));
|
|
187
215
|
if (pipelines === '') {
|
|
188
|
-
throw new Error('Odigos destination accepts no telemetry signals
|
|
189
|
-
'
|
|
216
|
+
throw new Error('Odigos destination accepts no telemetry signals, so the collector would have no pipeline to build ' +
|
|
217
|
+
'and would fail to start. Note that metrics and logs are OFF by default — with `traces: false` the ' +
|
|
218
|
+
'destination has nothing left unless you also pass `metrics: true` or `logs: true`.');
|
|
190
219
|
}
|
|
191
220
|
return (COLLECTOR_CONFIG_SCHEME +
|
|
192
221
|
'{receivers: {otlp: {protocols: ' +
|
|
@@ -201,4 +230,4 @@ function renderCollectorConfig(dest) {
|
|
|
201
230
|
pipelines +
|
|
202
231
|
'}}');
|
|
203
232
|
}
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdG9yLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsZWN0b3ItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBFQSxzQ0FFQztBQW1CRCwwQ0FFQztBQXdFRCxrREFFQztBQU9ELHNEQWdEQztBQWhPRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFFSDs7Ozs7O0dBTUc7QUFDVSxRQUFBLHdCQUF3QixHQUFHLG9DQUFvQyxDQUFDO0FBRTdFOzs7O0dBSUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQztBQUV4Qzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sb0JBQW9CLEdBQ3hCLDJGQUEyRjtJQUMzRixnRUFBZ0UsQ0FBQztBQUVuRSxpRUFBaUU7QUFDcEQsUUFBQSxhQUFhLEdBQUcsTUFBTSxDQUFDO0FBRXBDLHFGQUFxRjtBQUN4RSxRQUFBLG1CQUFtQixHQUFHLHNCQUFzQixDQUFDO0FBQzdDLFFBQUEsb0JBQW9CLEdBQUcsdUJBQXVCLENBQUM7QUFDL0MsUUFBQSxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztBQUV0RCxxREFBcUQ7QUFDckQsU0FBZ0IsYUFBYSxDQUFDLEtBQTBCO0lBQ3RELE9BQU8sS0FBSyxLQUFLLEtBQUssQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsVUFBVSxDQUFDLENBQVM7SUFDM0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLElBQXVCO0lBQ3JELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLGFBQWEsQ0FBQyxPQUFtQztJQUN4RCxJQUFJLENBQUMs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dUdBQXVHO0lBQ3ZHLG9DQUFvQztJQUNwQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxNQUFNLElBQUksS0FBSyxDQUNiLHVDQUF1QyxJQUFJLENBQUMsUUFBUSxnREFBZ0Q7WUFDbEcscUVBQXFFLENBQ3hFLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNqRSxNQUFNLElBQUksS0FBSyxDQUNiLDJDQUEyQyxJQUFJLENBQUMsWUFBWSx3Q0FBd0M7WUFDbEcsdUZBQXVGLENBQzFGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxTQUFTLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FDYiw0RkFBNEY7WUFDMUYsMkVBQTJFLENBQzlFLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUNMLHVCQUF1QjtRQUN2QixpQ0FBaUM7UUFDakMscUdBQXFHO1FBQ3JHLHVFQUF1RTtRQUN2RSw4RUFBOEU7UUFDOUUsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixlQUFlO1FBQ2YsUUFBUTtRQUNSLDhEQUE4RDtRQUM5RCxTQUFTO1FBQ1QsSUFBSSxDQUNMLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2RpZ29zRGVzdGluYXRpb24gfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBpbi1MYW1iZGEgY29sbGVjdG9yJ3MgY29tcGxldGUgY29uZmlndXJhdGlvbiBhcyBhbiBpbmxpbmVcbiAqIGBPUEVOVEVMRU1FVFJZX0NPTExFQ1RPUl9DT05GSUdfVVJJYCB2YWx1ZS5cbiAqXG4gKiBUaGlzIGlzIGEgUE9SVCBvZiBgcmVuZGVyQ29sbGVjdG9yQ29uZmlnYCBpbiB0aGUgY29ubmVjdG9yXG4gKiAoY29ubmVjdG9ycy9wcm92aWRlcnMvYXdzL3BrZy93b3JrbG9hZC9pbnN0cnVtZW50b3IvY29sbGVjdG9yX2NvbmZpZy5nbykgYW5kIGlzIGRlbGliZXJhdGVseVxuICogYnl0ZS1mb3ItYnl0ZSBjb21wYXRpYmxlIHdpdGggaXQuIFRoYXQgZXF1aXZhbGVuY2UgaXMgbm90IGNvc21ldGljOiBhIGZ1bmN0aW9uIGluc3RydW1lbnRlZCBoZXJlIGFuZFxuICogbGF0ZXIgZW5hYmxlZCBhcyBhIGNvbm5lY3RvciBzb3VyY2UgaXMgY29tcGFyZWQgYWdhaW5zdCB0aGUgY29ubmVjdG9yJ3MgcmVuZGVyaW5nIHRvIGRlY2lkZSB3aGV0aGVyIGl0XG4gKiBuZWVkcyBjb252ZXJnaW5nLiBBIHN0cmF5IHNwYWNlIHdvdWxkIG1ha2UgZXZlcnkgcmVjb25jaWxlIHNlZSBkcmlmdCBhbmQgY2h1cm4gYSBuZXcgZnVuY3Rpb24gdmVyc2lvblxuICogZm9yZXZlci5cbiAqXG4gKiBXSFkgVEhFIFdIT0xFIERPQ1VNRU5ULCBSQVRIRVIgVEhBTiBBIEZFVyBWQVJJQUJMRVMuIFRoZSBsYXllciBzaGlwcyBhIGJha2VkXG4gKiAvb3B0L2NvbGxlY3Rvci1jb25maWcvY29uZmlnLnlhbWwsIGJ1dCB0aGF0IGZpbGUgaXMgT05FIGRvY3VtZW50IHNoYXJlZCBieSBldmVyeSBmdW5jdGlvbiwgc28gaXQgY2FuXG4gKiBvbmx5IHJlYWNoIGEgZGVzdGluYXRpb24gdGhyb3VnaCBlbnYgaW5kaXJlY3Rpb24g4oCUIGAke2VudjpTT01FVEhJTkd9YC4gVGhhdCBtYWRlIHRocmVlIHRoaW5nc1xuICogaW1wb3NzaWJsZSBhdCBvbmNlOlxuICpcbiAqICAgLSBBVVRILiBBIGNyZWRlbnRpYWwgaXMgYSBoZWFkZXJzIG1hcCwgbm90IGEgc2NhbGFyLiBBIGJha2VkIGZpbGUgY2FuIHN1YnN0aXR1dGUgYSB2YWx1ZSBidXQgY2Fubm90XG4gKiAgICAgY29uZGl0aW9uYWxseSBncm93IGEgYGhlYWRlcnM6YCBibG9jaywgc28gYW4gYXV0aGVudGljYXRlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUuXG4gKiAgIC0gT1RMUC9IVFRQIERFU1RJTkFUSU9OUy4gVGhlIGJha2VkIGZpbGUgaGFyZGNvZGVzIGEgZ1JQQyBgb3RscGAgZXhwb3J0ZXIuIEFuIG90bHBodHRwLW9ubHlcbiAqICAgICBkZXN0aW5hdGlvbiByZXNvbHZlcyB3aXRoIGFuIGVtcHR5IGdSUEMgZW5kcG9pbnQsIGFuZCB0aGUgY29sbGVjdG9yIGRvZXMgbm90IGRlZ3JhZGUg4oCUIGl0IGZhaWxzIHRvXG4gKiAgICAgYnVpbGQgdGhlIHBpcGVsaW5lIGFuZCBleGl0cywgc28gdGhlIGZ1bmN0aW9uIGlzIGluc3RydW1lbnRlZCwgbG9va3MgaGVhbHRoeSwgYW5kIGV4cG9ydHMgbm90aGluZy5cbiAqICAgLSBQRVItU0lHTkFMIFBJUEVMSU5FUy4gVGhlIGJha2VkIGZpbGUgZGVjbGFyZXMgYWxsIHRocmVlIHBpcGVsaW5lcyB1bmNvbmRpdGlvbmFsbHksIHNvIGEgc2lnbmFsIHRoZVxuICogICAgIGRlc3RpbmF0aW9uIGRvZXMgbm90IGFjY2VwdCBpcyByZWNlaXZlZCBhbmQgdGhlbiBmYWlscyBvbiBleHBvcnQgcmF0aGVyIHRoYW4gbmV2ZXIgYmVpbmcgYnVpbHQuXG4gKlxuICogRkxPVyBTVFlMRSBJUyBMT0FELUJFQVJJTkcuIFRoZSBkb2N1bWVudCBpcyBlbWl0dGVkIG9uIGEgc2luZ2xlIGxpbmUgYmVjYXVzZSBpdCBoYXMgdG8gc3Vydml2ZSBhcyBhblxuICogZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWUuIEluIGEgWUFNTCBmbG93IG1hcHBpbmcgYSBjb2xvbiBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgc3BhY2UsIG9yIHRoZSBwYXJzZXJcbiAqIHJlYWRzIGBhOmJgIGFzIHRoZSBwbGFpbiBzY2FsYXIgYFwiYTpiXCJgIHJhdGhlciB0aGFuIGEgbWFwcGluZy4gV3JpdHRlbiB3aXRob3V0IHRoZSBzcGFjZXMgdGhlIGNvbGxlY3RvclxuICogYWNjZXB0cyB0aGUgdmFyaWFibGUsIHJlcG9ydHMgdGhlIFVSSSBpdCByZWFkLCBhbmQgdGhlbiBmYWlscyB0byBzdGFydCB3aXRoIGEgYmFyZVxuICogYG90ZWxjb2wgc3RhdGUgaXMgQ2xvc2VkYCDigJQgbm8gcGFyc2UgZXJyb3IsIG5vIG1lbnRpb24gb2YgdGhlIGNvbmZpZy4gRXZlcnkgYDogYCBiZWxvdyBlYXJucyBpdHMgcGxhY2UuXG4gKi9cblxuLyoqXG4gKiBUaGUgY29sbGVjdG9yIGxheWVyJ3Mgb3duIGNvbmZpZy1zb3VyY2UgdmFyaWFibGUg4oCUIHVwc3RyZWFtJ3MgbmFtZSwgbm90IG91cnMuIFBvaW50ZWQgYXQgYSBgeWFtbDpgIFVSSVxuICogaXQgY2FycmllcyB0aGUgZW50aXJlIGNvbmZpZ3VyYXRpb24gaW5saW5lLCBzbyBubyBzZWNvbmQgdmFyaWFibGUgaXMgbmVlZGVkIHRvIGhvbGQgaXQuXG4gKlxuICogVXBzdHJlYW0gYWxzbyByZWFkcyB0aGUgb2xkZXIgYE9QRU5URUxFTUVUUllfQ09MTEVDVE9SX0NPTkZJR19GSUxFYCBhbmQgbG9ncyBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgZm9yXG4gKiBpdDsgdGhpcyBpcyB0aGUgY3VycmVudCBuYW1lLlxuICovXG5leHBvcnQgY29uc3QgRU5WX0NPTExFQ1RPUl9DT05GSUdfVVJJID0gJ09QRU5URUxFTUVUUllfQ09MTEVDVE9SX0NPTkZJR19VUkknO1xuXG4vKipcbiAqIFRoZSBjb25mbWFwIHByb3ZpZGVyIHRoYXQgcmVhZHMgYSBjb25maWd1cmF0aW9uIG91dCBvZiB0aGUgVVJJIGl0c2VsZi4gVGhlIGNvbGxlY3RvciByZWdpc3RlcnNcbiAqIGVudi9maWxlL3lhbWwvaHR0cC9odHRwcy9zMyBwcm92aWRlcnM7IGB5YW1sOmAgaXMgdGhlIG9ubHkgb25lIHRoYXQgbmVlZHMgbm8gc2Vjb25kIHZhcmlhYmxlIGFuZCBub1xuICogbmV0d29yayByZWFkIG9uIGEgY29sZCBzdGFydC5cbiAqL1xuY29uc3QgQ09MTEVDVE9SX0NPTkZJR19TQ0hFTUUgPSAneWFtbDonO1xuXG4vKipcbiAqIE1pcnJvcnMgdGhlIGJha2VkIGNvbmZpZydzIHByb2Nlc3NvciBzZXQsIGFuZCB0aGUgT1JERVIgaXMgdGhlIGNvbnRyYWN0OlxuICpcbiAqICAgLSBgbWVtb3J5X2xpbWl0ZXJgIGZpcnN0LCBzbyBhbiBleHBvcnQgYmFja2xvZyBpcyBzaGVkIGJlZm9yZSBpdCBpcyBjaGFyZ2VkIHRvIHRoZSBzYW1lIG1lbW9yeSBidWRnZXRcbiAqICAgICB0aGUgY3VzdG9tZXIncyBoYW5kbGVyIGFsbG9jYXRlcyBmcm9tLiBQZXJjZW50YWdlcywgbm90IGBsaW1pdF9taWJgLCBiZWNhdXNlIG9uZSBsYXllciBzZXJ2ZXNcbiAqICAgICBmdW5jdGlvbnMgZnJvbSAxMjhNQiB0byAxMEdCLlxuICogICAtIGBkZWNvdXBsZWAgTEFTVC4gTGFtYmRhIGZyZWV6ZXMgdGhlIHNhbmRib3ggb25jZSB0aGUgaGFuZGxlciByZXR1cm5zIGFuZCBldmVyeSBleHRlbnNpb24gaGFzIGNhbGxlZFxuICogICAgIC9uZXh0OyBhIGZyb3plbiBzYW5kYm94IHJ1bnMgbm8gdGltZXJzLCBzbyBhIGJhdGNoIHNpdHRpbmcgYmVoaW5kIGl0cyB0aW1lb3V0IGlzIGZsdXNoZWQgb24gYSBsYXRlclxuICogICAgIGludm9jYXRpb24gb3IgZHJvcHBlZCB3aGVuIHRoZSBzYW5kYm94IGlzIHJlYXBlZC4gYGRlY291cGxlYCBhY2tub3dsZWRnZXMgdGhlIHJlY2VpdmUgcGF0aFxuICogICAgIGltbWVkaWF0ZWx5IGFuZCB0cmFja3MgaW4tZmxpZ2h0IGV4cG9ydHMsIHdoaWNoIGlzIHdoYXQgbGV0cyB0aGUgZXh0ZW5zaW9uIGhvbGQgL25leHQgb3BlbiB1bnRpbCB0aGVcbiAqICAgICBxdWV1ZSBkcmFpbnMg4oCUIGFmdGVyIHRoZSBjYWxsZXIgYWxyZWFkeSBoYXMgaXRzIHJlc3BvbnNlLlxuICovXG5jb25zdCBDT0xMRUNUT1JfUFJPQ0VTU09SUyA9XG4gICd7bWVtb3J5X2xpbWl0ZXI6IHtjaGVja19pbnRlcnZhbDogMXMsIGxpbWl0X3BlcmNlbnRhZ2U6IDUwLCBzcGlrZV9saW1pdF9wZXJjZW50YWdlOiAyMH0sICcgK1xuICAnYmF0Y2g6IHtzZW5kX2JhdGNoX3NpemU6IDUxMiwgdGltZW91dDogMjAwbXN9LCBkZWNvdXBsZTogbnVsbH0nO1xuXG4vKiogVmFsdWUgYW4gdW5zdXBwb3J0ZWQgc2lnbmFsJ3MgYE9URUxfKl9FWFBPUlRFUmAgaXMgc2V0IHRvLiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVEVSX05PTkUgPSAnbm9uZSc7XG5cbi8qKiBUaGUgdGhyZWUgYE9URUxfKl9FWFBPUlRFUmAgdmFyaWFibGVzLCBpbiB0aGUgb3JkZXIgdGhlIGNvbm5lY3RvciB3cml0ZXMgdGhlbS4gKi9cbmV4cG9ydCBjb25zdCBFTlZfVFJBQ0VTX0VYUE9SVEVSID0gJ09URUxfVFJBQ0VTX0VYUE9SVEVSJztcbmV4cG9ydCBjb25zdCBFTlZfTUVUUklDU19FWFBPUlRFUiA9ICdPVEVMX01FVFJJQ1NfRVhQT1JURVInO1xuZXhwb3J0IGNvbnN0IEVOVl9MT0dTX0VYUE9SVEVSID0gJ09URUxfTE9HU19FWFBPUlRFUic7XG5cbi8qKiBXaGV0aGVyIGEgc2lnbmFsIGlzIGVuYWJsZWQsIGRlZmF1bHRpbmcgdG8gb24uICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsRW5hYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgIT09IGZhbHNlO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBkb3VibGUtcXVvdGVkIFlBTUwgc2NhbGFyLlxuICpcbiAqIFF1b3RpbmcgdW5jb25kaXRpb25hbGx5IGlzIHdoYXQga2VlcHMgYSB2YWx1ZSBzdWNoIGFzIGEgYmFyZSBgaG9zdDo0MzE3YCBmcm9tIGJlaW5nIHJlLXJlYWQgYXMgYSBuZXN0ZWRcbiAqIG1hcHBpbmcgaW4gZmxvdyBjb250ZXh0LiBgSlNPTi5zdHJpbmdpZnlgIGlzIHRoZSBUeXBlU2NyaXB0IGVxdWl2YWxlbnQgb2YgdGhlIGNvbm5lY3RvcidzXG4gKiBgc3RyY29udi5RdW90ZWAgZm9yIHRoZSB2b2NhYnVsYXJ5IHRoYXQgbWF0dGVycyBoZXJlIChgXFxcImAgYW5kIGBcXFxcYCk7IGJvdGggcHJvZHVjZSB0aGUgc2FtZSBvdXRwdXQgZm9yXG4gKiB0aGUgQVNDSUkgZW5kcG9pbnRzLCBoZWFkZXIgbmFtZXMgYW5kIGNyZWRlbnRpYWxzIHRoaXMgZXZlciBzZWVzLlxuICovXG5mdW5jdGlvbiB5YW1sU3RyaW5nKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShzKTtcbn1cblxuLyoqXG4gKiBQaWNrcyB0aGUgZXhwb3J0ZXIgYnkgdGhlIHRyYW5zcG9ydCB0aGUgZGVzdGluYXRpb24gY29uZmlndXJlZC4gQSBkZXN0aW5hdGlvbiBjYXJyaWVzIGEgZ1JQQyBlbmRwb2ludFxuICogKHR5cGUgYG90bHBgKSBvciBhbiBPVExQL0hUVFAgb25lICh0eXBlIGBvdGxwaHR0cGApOyB0aGUgdHdvIGFyZSBkaWZmZXJlbnQgY29sbGVjdG9yIGNvbXBvbmVudHMgd2l0aFxuICogZGlmZmVyZW50IGVuZHBvaW50IGdyYW1tYXJzLCBzbyB0aGlzIGlzIGEgZ2VudWluZSBicmFuY2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRlck5hbWVGb3IoZGVzdDogT2RpZ29zRGVzdGluYXRpb24pOiBzdHJpbmcge1xuICByZXR1cm4gZGVzdC5lbmRwb2ludCA/ICdvdGxwJyA6ICdvdGxwaHR0cCc7XG59XG5cbi8qKlxuICogRW1pdHMgdGhlIGRlc3RpbmF0aW9uJ3MgcGVyLXJlcXVlc3QgaGVhZGVycyDigJQgaW4gcHJhY3RpY2UgaXRzIGNyZWRlbnRpYWwuIEVtcHR5IHdoZW4gdGhlIGRlc3RpbmF0aW9uXG4gKiBuZWVkcyBub25lLCBzbyBubyBoZWFkZXIgYmxvY2sgaXMgd3JpdHRlbiBhdCBhbGwgcmF0aGVyIHRoYW4gYW4gZW1wdHkgb25lLlxuICpcbiAqIEtleXMgYXJlIHNvcnRlZCBzbyB0aGUgcmVuZGVyZWQgY29uZmlnIGlzIGJ5dGUtaWRlbnRpY2FsIGFjcm9zcyBzeW50aHMuIFRoZSBzdHJpbmcgaXMgY29tcGFyZWQgYWdhaW5zdFxuICogdGhlIGxpdmUgZnVuY3Rpb24ncyBlbnZpcm9ubWVudCB0byBkZWNpZGUgd2hldGhlciBhbiB1cGRhdGUgaXMgbmVlZGVkLCBhbmQgbWFwIG9yZGVyIHdvdWxkIG90aGVyd2lzZVxuICogbWFrZSBldmVyeSBkZXBsb3kgbG9vayBsaWtlIGEgY2hhbmdlLlxuICovXG5mdW5jdGlvbiByZW5kZXJIZWFkZXJzKGhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgaWYgKCFoZWFkZXJzKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhoZWFkZXJzKS5zb3J0KCk7XG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBjb25zdCByZW5kZXJlZCA9IGtleXMubWFwKChrKSA9PiBgJHt5YW1sU3RyaW5nKGspfTogJHt5YW1sU3RyaW5nKGhlYWRlcnNba10pfWApLmpvaW4oJywgJyk7XG4gIHJldHVybiBgLCBoZWFkZXJzOiB7JHtyZW5kZXJlZH19YDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRXhwb3J0ZXIoZGVzdDogT2RpZ29zRGVzdGluYXRpb24pOiBzdHJpbmcge1xuICBsZXQgb3V0OiBzdHJpbmc7XG4gIGlmIChkZXN0LmVuZHBvaW50KSB7XG4gICAgLy8gdGxzLmluc2VjdXJlIGFwcGxpZXMgdG8gdGhlIGdSUEMgZXhwb3J0ZXIgb25seTsgdGhlIEhUVFAgZXhwb3J0ZXIgdGFrZXMgdGhlIHNjaGVtZSBmcm9tIHRoZSBVUkwuXG4gICAgb3V0ID0gYHtvdGxwOiB7ZW5kcG9pbnQ6ICR7eWFtbFN0cmluZyhkZXN0LmVuZHBvaW50KX0sIHRsczoge2luc2VjdXJlOiAke2Rlc3QuaW5zZWN1cmUgPT09IHRydWV9fWA7XG4gIH0gZWxzZSBpZiAoZGVzdC5odHRwRW5kcG9pbnQpIHtcbiAgICBvdXQgPSBge290bHBodHRwOiB7ZW5kcG9pbnQ6ICR7eWFtbFN0cmluZyhkZXN0Lmh0dHBFbmRwb2ludCl9YDtcbiAgfSBlbHNlIHtcbiAgICAvLyBSZWFjaGVkIHdoZW4gYSBkZXN0aW5hdGlvbiBjYXJyaWVzIG5laXRoZXIgdHJhbnNwb3J0LiBGYWlsaW5nIGhlcmUgaXMgdGhlIHdob2xlIHBvaW50OiB0aGVcbiAgICAvLyBhbHRlcm5hdGl2ZSBpcyBhIGNvbGxlY3RvciB0aGF0IGV4aXRzIG9uIHN0YXJ0dXAgd2hpbGUgdGhlIGZ1bmN0aW9uIGlzIHJlcG9ydGVkIGhlYWx0aHkuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ09kaWdvcyBkZXN0aW5hdGlvbiBoYXMgbmVpdGhlciBgZW5kcG9pbnRgIChPVExQL2dSUEMpIG5vciBgaHR0cEVuZHBvaW50YCAoT1RMUC9IVFRQKSwgJyArXG4gICAgICAgICdzbyB0aGUgaW4tTGFtYmRhIGNvbGxlY3RvciB3b3VsZCBoYXZlIG5vd2hlcmUgdG8gZXhwb3J0LicsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gYCR7b3V0fSR7cmVuZGVySGVhZGVycyhkZXN0LmhlYWRlcnMpfX19YDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBwaXBlbGluZSBvbmx5IGZvciB0aGUgc2lnbmFscyB0aGUgZGVzdGluYXRpb24gYWNjZXB0cy4gQSBzaWduYWwgd2l0aCBubyBwaXBlbGluZSBpcyByZWZ1c2VkIGF0XG4gKiB0aGUgcmVjZWl2ZXIsIHdoaWNoIGlzIHRoZSBiZWhhdmlvdXIgd2Ugd2FudDogdGhlIFNESyBpcyB0b2xkIG5vdCB0byBwcm9kdWNlIGl0IGVpdGhlciAoc2VlXG4gKiBgZXhwb3J0ZXJPdmVycmlkZUZvcmApLCBhbmQgdGhlIHR3byB0b2dldGhlciBtZWFuIGFuIHVuYWNjZXB0ZWQgc2lnbmFsIGlzIG5ldmVyIGdlbmVyYXRlZCwgbmV2ZXJcbiAqIGV4cG9ydGVkLCBhbmQgbmV2ZXIgYSBwZXItYmF0Y2ggZXJyb3IgYWdhaW5zdCBhIGJhY2tlbmQgdGhhdCBkb2VzIG5vdCBpbXBsZW1lbnQgaXQuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclBpcGVsaW5lcyhkZXN0OiBPZGlnb3NEZXN0aW5hdGlvbiwgZXhwb3J0ZXJOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgc2lnbmFsczogQXJyYXk8W3N0cmluZywgYm9vbGVhbl0+ID0gW1xuICAgIFsndHJhY2VzJywgc2lnbmFsRW5hYmxlZChkZXN0LnRyYWNlcyldLFxuICAgIFsnbWV0cmljcycsIHNpZ25hbEVuYWJsZWQoZGVzdC5tZXRyaWNzKV0sXG4gICAgWydsb2dzJywgc2lnbmFsRW5hYmxlZChkZXN0LmxvZ3MpXSxcbiAgXTtcbiAgZm9yIChjb25zdCBbbmFtZSwgZW5hYmxlZF0gb2Ygc2lnbmFscykge1xuICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBgJHtuYW1lfToge3JlY2VpdmVyczogW290bHBdLCBwcm9jZXNzb3JzOiBbbWVtb3J5X2xpbWl0ZXIsIGJhdGNoLCBkZWNvdXBsZV0sIGV4cG9ydGVyczogWyR7ZXhwb3J0ZXJOYW1lfV19YCxcbiAgICApO1xuICB9XG4gIHJldHVybiBwYXJ0cy5sZW5ndGggPT09IDAgPyAnJyA6IGB7JHtwYXJ0cy5qb2luKCcsICcpfX1gO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHZhbHVlIGEgc2lnbmFsJ3MgYE9URUxfKl9FWFBPUlRFUmAgbXVzdCBob2xkOiBgbm9uZWAgdG8gc3VwcHJlc3MgYSBzaWduYWwgdGhlIGRlc3RpbmF0aW9uXG4gKiBkb2VzIG5vdCBhY2NlcHQsIG9yIGB1bmRlZmluZWRgIG1lYW5pbmcgdGhlIHZhcmlhYmxlIG11c3QgYmUgQUJTRU5UIGJlY2F1c2UgdGhlIFNESydzIG93biBkZWZhdWx0IGlzXG4gKiBhbHJlYWR5IHdoYXQgd2Ugd2FudC5cbiAqXG4gKiBPbmx5IHRoZSBcIm5vbmVcIiBzaWRlIGlzIHdyaXR0ZW4sIGJlY2F1c2UgYG90bHBgIGlzIGFscmVhZHkgZXZlcnkgT3BlblRlbGVtZXRyeSBTREsncyBkZWZhdWx0IGZvciBhbGxcbiAqIHRocmVlIHNpZ25hbHMg4oCUIHNldHRpbmcgaXQgd291bGQgcmVzdGF0ZSB0aGUgZGVmYXVsdCBpbiB0aHJlZSB2YXJpYWJsZXMgb24gZXZlcnkgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRlck92ZXJyaWRlRm9yKHN1cHBvcnRlZDogYm9vbGVhbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBzdXBwb3J0ZWQgPyB1bmRlZmluZWQgOiBFWFBPUlRFUl9OT05FO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGNvbXBsZXRlIGNvbGxlY3RvciBjb25maWd1cmF0aW9uIGZvciBvbmUgZGVzdGluYXRpb24uXG4gKlxuICogQHRocm93cyBpZiB0aGUgZGVzdGluYXRpb24gbmFtZXMgbmVpdGhlciB0cmFuc3BvcnQsIGJvdGggdHJhbnNwb3J0cywgb3Igbm8gc2lnbmFscyBhdCBhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDb2xsZWN0b3JDb25maWcoZGVzdDogT2RpZ29zRGVzdGluYXRpb24pOiBzdHJpbmcge1xuICBpZiAoZGVzdC5lbmRwb2ludCAmJiBkZXN0Lmh0dHBFbmRwb2ludCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPZGlnb3MgZGVzdGluYXRpb24gc2V0cyBib3RoIGBlbmRwb2ludGAgKE9UTFAvZ1JQQykgYW5kIGBodHRwRW5kcG9pbnRgIChPVExQL0hUVFApOyAnICtcbiAgICAgICAgJ3RoZXkgc2VsZWN0IGRpZmZlcmVudCBjb2xsZWN0b3IgZXhwb3J0ZXJzLCBzbyBleGFjdGx5IG9uZSBtdXN0IGJlIHNldC4nLFxuICAgICk7XG4gIH1cblxuICAvLyBUaGUgdHdvIGZpZWxkcyBoYXZlIGRpZmZlcmVudCBlbmRwb2ludCBHUkFNTUFSUywgYW5kIGdldHRpbmcgdGhlbSB3cm9uZyBpcyB0aGUgd29yc3QgZmFpbHVyZSBtb2RlIHRoaXNcbiAgLy8gcGFja2FnZSBoYXM6IHRoZSBjb2xsZWN0b3IgYWNjZXB0cyB0aGUgY29uZmlndXJhdGlvbiwgZmFpbHMgdG8gYnVpbGQgaXRzIGV4cG9ydGVyLCBhbmQgZXhpdHMg4oCUIGxlYXZpbmdcbiAgLy8gdGhlIGZ1bmN0aW9uIGluc3RydW1lbnRlZCwgcmVwb3J0aW5nIGhlYWx0aHksIGFuZCBleHBvcnRpbmcgbm90aGluZy4gQm90aCBjaGVja3MgYXJlIHRoZXJlZm9yZSBzeW50aFxuICAvLyBlcnJvcnMgcmF0aGVyIHRoYW4gZG9jdW1lbnRhdGlvbi5cbiAgaWYgKGRlc3QuZW5kcG9pbnQgJiYgZGVzdC5lbmRwb2ludC5pbmNsdWRlcygnOi8vJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgT2RpZ29zIGRlc3RpbmF0aW9uIFxcYGVuZHBvaW50XFxgIGlzIFwiJHtkZXN0LmVuZHBvaW50fVwiLCBidXQgdGhlIGdSUEMgZXhwb3J0ZXIgdGFrZXMgaG9zdDpwb3J0IHdpdGggYCArXG4gICAgICAgICdubyBzY2hlbWUuIFVzZSBgaHR0cEVuZHBvaW50YCBmb3IgYSBzY2hlbWUtcXVhbGlmaWVkIE9UTFAvSFRUUCBVUkwuJyxcbiAgICApO1xuICB9XG4gIGlmIChkZXN0Lmh0dHBFbmRwb2ludCAmJiAhL15odHRwcz86XFwvXFwvLy50ZXN0KGRlc3QuaHR0cEVuZHBvaW50KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBPZGlnb3MgZGVzdGluYXRpb24gXFxgaHR0cEVuZHBvaW50XFxgIGlzIFwiJHtkZXN0Lmh0dHBFbmRwb2ludH1cIiwgYnV0IHRoZSBPVExQL0hUVFAgZXhwb3J0ZXIgdGFrZXMgYSBgICtcbiAgICAgICAgJ3NjaGVtZS1xdWFsaWZpZWQgVVJMIChodHRwOi8vIG9yIGh0dHBzOi8vKS4gVXNlIGBlbmRwb2ludGAgZm9yIGEgYmFyZSBnUlBDIGhvc3Q6cG9ydC4nLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBleHBvcnRlciA9IHJlbmRlckV4cG9ydGVyKGRlc3QpO1xuICBjb25zdCBwaXBlbGluZXMgPSByZW5kZXJQaXBlbGluZXMoZGVzdCwgZXhwb3J0ZXJOYW1lRm9yKGRlc3QpKTtcbiAgaWYgKHBpcGVsaW5lcyA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnT2RpZ29zIGRlc3RpbmF0aW9uIGFjY2VwdHMgbm8gdGVsZW1ldHJ5IHNpZ25hbHMgKHRyYWNlcywgbWV0cmljcyBhbmQgbG9ncyBhcmUgYWxsIGZhbHNlKSwgJyArXG4gICAgICAgICdzbyB0aGUgY29sbGVjdG9yIHdvdWxkIGhhdmUgbm8gcGlwZWxpbmUgdG8gYnVpbGQgYW5kIHdvdWxkIGZhaWwgdG8gc3RhcnQuJyxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICBDT0xMRUNUT1JfQ09ORklHX1NDSEVNRSArXG4gICAgJ3tyZWNlaXZlcnM6IHtvdGxwOiB7cHJvdG9jb2xzOiAnICtcbiAgICAvLyBCb3VuZCB0byBsb2NhbGhvc3Q6IHRoZSByZWNlaXZlciBleGlzdHMgb25seSBmb3IgdGhlIGluLXByb2Nlc3MgU0RLLiBCaW5kaW5nIGl0IHdpZGVyIHdvdWxkIGV4cG9zZVxuICAgIC8vIGFuIHVuYXV0aGVudGljYXRlZCBPVExQIGVuZHBvaW50IG9uIHRoZSBzYW5kYm94J3MgbmV0d29yayBpbnRlcmZhY2UuXG4gICAgJ3tncnBjOiB7ZW5kcG9pbnQ6IFwibG9jYWxob3N0OjQzMTdcIn0sIGh0dHA6IHtlbmRwb2ludDogXCJsb2NhbGhvc3Q6NDMxOFwifX19fSwgJyArXG4gICAgJ3Byb2Nlc3NvcnM6ICcgK1xuICAgIENPTExFQ1RPUl9QUk9DRVNTT1JTICtcbiAgICAnLCBleHBvcnRlcnM6ICcgK1xuICAgIGV4cG9ydGVyICtcbiAgICAnLCBzZXJ2aWNlOiB7dGVsZW1ldHJ5OiB7bWV0cmljczoge2xldmVsOiBub25lfX0sIHBpcGVsaW5lczogJyArXG4gICAgcGlwZWxpbmVzICtcbiAgICAnfX0nXG4gICk7XG59XG4iXX0=
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdG9yLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsZWN0b3ItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQStFQSxzQ0FFQztBQWlCRCwwQ0FNQztBQW1CRCwwQ0FFQztBQXlFRCxrREFFQztBQU9ELHNEQWlEQztBQTlQRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFFSDs7Ozs7O0dBTUc7QUFDVSxRQUFBLHdCQUF3QixHQUFHLG9DQUFvQyxDQUFDO0FBRTdFOzs7O0dBSUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQztBQUV4Qzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sb0JBQW9CLEdBQ3hCLDJGQUEyRjtJQUMzRixnRUFBZ0UsQ0FBQztBQUVuRSxpRUFBaUU7QUFDcEQsUUFBQSxhQUFhLEdBQUcsTUFBTSxDQUFDO0FBRXBDLHFGQUFxRjtBQUN4RSxRQUFBLG1CQUFtQixHQUFHLHNCQUFzQixDQUFDO0FBQzdDLFFBQUEsb0JBQW9CLEdBQUcsdUJBQXVCLENBQUM7QUFDL0MsUUFBQSxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztBQUV0RDs7Ozs7R0FLRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxLQUEwQixFQUFFLGNBQXVCO0lBQy9FLE9BQU8sS0FBSyxJQUFJLGNBQWMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDVSxRQUFBLGVBQWUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFFN0Usb0dBQW9HO0FBQ3BHLFNBQWdCLGVBQWUsQ0FBQyxJQUF1QjtJQUNyRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHVCQUFlLENBQUMsTUFBTSxDQUFDO1FBQzFELE9BQU8sRUFBRSxhQUFhLENBQUMs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QUFTLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FDYixvR0FBb0c7WUFDbEcsb0dBQW9HO1lBQ3BHLG9GQUFvRixDQUN2RixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FDTCx1QkFBdUI7UUFDdkIsaUNBQWlDO1FBQ2pDLHFHQUFxRztRQUNyRyx1RUFBdUU7UUFDdkUsOEVBQThFO1FBQzlFLGNBQWM7UUFDZCxvQkFBb0I7UUFDcEIsZUFBZTtRQUNmLFFBQVE7UUFDUiw4REFBOEQ7UUFDOUQsU0FBUztRQUNULElBQUksQ0FDTCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9kaWdvc0Rlc3RpbmF0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogUmVuZGVycyB0aGUgaW4tTGFtYmRhIGNvbGxlY3RvcidzIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gYXMgYW4gaW5saW5lXG4gKiBgT1BFTlRFTEVNRVRSWV9DT0xMRUNUT1JfQ09ORklHX1VSSWAgdmFsdWUuXG4gKlxuICogVGhpcyBpcyBhIFBPUlQgb2YgYHJlbmRlckNvbGxlY3RvckNvbmZpZ2AgaW4gdGhlIGNvbm5lY3RvclxuICogKGNvbm5lY3RvcnMvcHJvdmlkZXJzL2F3cy9wa2cvd29ya2xvYWQvaW5zdHJ1bWVudG9yL2NvbGxlY3Rvcl9jb25maWcuZ28pIGFuZCBpcyBkZWxpYmVyYXRlbHlcbiAqIGJ5dGUtZm9yLWJ5dGUgY29tcGF0aWJsZSB3aXRoIGl0LiBUaGF0IGVxdWl2YWxlbmNlIGlzIG5vdCBjb3NtZXRpYzogYSBmdW5jdGlvbiBpbnN0cnVtZW50ZWQgaGVyZSBhbmRcbiAqIGxhdGVyIGVuYWJsZWQgYXMgYSBjb25uZWN0b3Igc291cmNlIGlzIGNvbXBhcmVkIGFnYWluc3QgdGhlIGNvbm5lY3RvcidzIHJlbmRlcmluZyB0byBkZWNpZGUgd2hldGhlciBpdFxuICogbmVlZHMgY29udmVyZ2luZy4gQSBzdHJheSBzcGFjZSB3b3VsZCBtYWtlIGV2ZXJ5IHJlY29uY2lsZSBzZWUgZHJpZnQgYW5kIGNodXJuIGEgbmV3IGZ1bmN0aW9uIHZlcnNpb25cbiAqIGZvcmV2ZXIuXG4gKlxuICogV0hZIFRIRSBXSE9MRSBET0NVTUVOVCwgUkFUSEVSIFRIQU4gQSBGRVcgVkFSSUFCTEVTLiBUaGUgbGF5ZXIgc2hpcHMgYSBiYWtlZFxuICogL29wdC9jb2xsZWN0b3ItY29uZmlnL2NvbmZpZy55YW1sLCBidXQgdGhhdCBmaWxlIGlzIE9ORSBkb2N1bWVudCBzaGFyZWQgYnkgZXZlcnkgZnVuY3Rpb24sIHNvIGl0IGNhblxuICogb25seSByZWFjaCBhIGRlc3RpbmF0aW9uIHRocm91Z2ggZW52IGluZGlyZWN0aW9uIOKAlCBgJHtlbnY6U09NRVRISU5HfWAuIFRoYXQgbWFkZSB0aHJlZSB0aGluZ3NcbiAqIGltcG9zc2libGUgYXQgb25jZTpcbiAqXG4gKiAgIC0gQVVUSC4gQSBjcmVkZW50aWFsIGlzIGEgaGVhZGVycyBtYXAsIG5vdCBhIHNjYWxhci4gQSBiYWtlZCBmaWxlIGNhbiBzdWJzdGl0dXRlIGEgdmFsdWUgYnV0IGNhbm5vdFxuICogICAgIGNvbmRpdGlvbmFsbHkgZ3JvdyBhIGBoZWFkZXJzOmAgYmxvY2ssIHNvIGFuIGF1dGhlbnRpY2F0ZWQgZGVzdGluYXRpb24gd2FzIHVucmVhY2hhYmxlLlxuICogICAtIE9UTFAvSFRUUCBERVNUSU5BVElPTlMuIFRoZSBiYWtlZCBmaWxlIGhhcmRjb2RlcyBhIGdSUEMgYG90bHBgIGV4cG9ydGVyLiBBbiBvdGxwaHR0cC1vbmx5XG4gKiAgICAgZGVzdGluYXRpb24gcmVzb2x2ZXMgd2l0aCBhbiBlbXB0eSBnUlBDIGVuZHBvaW50LCBhbmQgdGhlIGNvbGxlY3RvciBkb2VzIG5vdCBkZWdyYWRlIOKAlCBpdCBmYWlscyB0b1xuICogICAgIGJ1aWxkIHRoZSBwaXBlbGluZSBhbmQgZXhpdHMsIHNvIHRoZSBmdW5jdGlvbiBpcyBpbnN0cnVtZW50ZWQsIGxvb2tzIGhlYWx0aHksIGFuZCBleHBvcnRzIG5vdGhpbmcuXG4gKiAgIC0gUEVSLVNJR05BTCBQSVBFTElORVMuIFRoZSBiYWtlZCBmaWxlIGRlY2xhcmVzIGFsbCB0aHJlZSBwaXBlbGluZXMgdW5jb25kaXRpb25hbGx5LCBzbyBhIHNpZ25hbCB0aGVcbiAqICAgICBkZXN0aW5hdGlvbiBkb2VzIG5vdCBhY2NlcHQgaXMgcmVjZWl2ZWQgYW5kIHRoZW4gZmFpbHMgb24gZXhwb3J0IHJhdGhlciB0aGFuIG5ldmVyIGJlaW5nIGJ1aWx0LlxuICpcbiAqIEZMT1cgU1RZTEUgSVMgTE9BRC1CRUFSSU5HLiBUaGUgZG9jdW1lbnQgaXMgZW1pdHRlZCBvbiBhIHNpbmdsZSBsaW5lIGJlY2F1c2UgaXQgaGFzIHRvIHN1cnZpdmUgYXMgYW5cbiAqIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlLiBJbiBhIFlBTUwgZmxvdyBtYXBwaW5nIGEgY29sb24gbXVzdCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlLCBvciB0aGUgcGFyc2VyXG4gKiByZWFkcyBgYTpiYCBhcyB0aGUgcGxhaW4gc2NhbGFyIGBcImE6YlwiYCByYXRoZXIgdGhhbiBhIG1hcHBpbmcuIFdyaXR0ZW4gd2l0aG91dCB0aGUgc3BhY2VzIHRoZSBjb2xsZWN0b3JcbiAqIGFjY2VwdHMgdGhlIHZhcmlhYmxlLCByZXBvcnRzIHRoZSBVUkkgaXQgcmVhZCwgYW5kIHRoZW4gZmFpbHMgdG8gc3RhcnQgd2l0aCBhIGJhcmVcbiAqIGBvdGVsY29sIHN0YXRlIGlzIENsb3NlZGAg4oCUIG5vIHBhcnNlIGVycm9yLCBubyBtZW50aW9uIG9mIHRoZSBjb25maWcuIEV2ZXJ5IGA6IGAgYmVsb3cgZWFybnMgaXRzIHBsYWNlLlxuICovXG5cbi8qKlxuICogVGhlIGNvbGxlY3RvciBsYXllcidzIG93biBjb25maWctc291cmNlIHZhcmlhYmxlIOKAlCB1cHN0cmVhbSdzIG5hbWUsIG5vdCBvdXJzLiBQb2ludGVkIGF0IGEgYHlhbWw6YCBVUklcbiAqIGl0IGNhcnJpZXMgdGhlIGVudGlyZSBjb25maWd1cmF0aW9uIGlubGluZSwgc28gbm8gc2Vjb25kIHZhcmlhYmxlIGlzIG5lZWRlZCB0byBob2xkIGl0LlxuICpcbiAqIFVwc3RyZWFtIGFsc28gcmVhZHMgdGhlIG9sZGVyIGBPUEVOVEVMRU1FVFJZX0NPTExFQ1RPUl9DT05GSUdfRklMRWAgYW5kIGxvZ3MgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGZvclxuICogaXQ7IHRoaXMgaXMgdGhlIGN1cnJlbnQgbmFtZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEVOVl9DT0xMRUNUT1JfQ09ORklHX1VSSSA9ICdPUEVOVEVMRU1FVFJZX0NPTExFQ1RPUl9DT05GSUdfVVJJJztcblxuLyoqXG4gKiBUaGUgY29uZm1hcCBwcm92aWRlciB0aGF0IHJlYWRzIGEgY29uZmlndXJhdGlvbiBvdXQgb2YgdGhlIFVSSSBpdHNlbGYuIFRoZSBjb2xsZWN0b3IgcmVnaXN0ZXJzXG4gKiBlbnYvZmlsZS95YW1sL2h0dHAvaHR0cHMvczMgcHJvdmlkZXJzOyBgeWFtbDpgIGlzIHRoZSBvbmx5IG9uZSB0aGF0IG5lZWRzIG5vIHNlY29uZCB2YXJpYWJsZSBhbmQgbm9cbiAqIG5ldHdvcmsgcmVhZCBvbiBhIGNvbGQgc3RhcnQuXG4gKi9cbmNvbnN0IENPTExFQ1RPUl9DT05GSUdfU0NIRU1FID0gJ3lhbWw6JztcblxuLyoqXG4gKiBNaXJyb3JzIHRoZSBiYWtlZCBjb25maWcncyBwcm9jZXNzb3Igc2V0LCBhbmQgdGhlIE9SREVSIGlzIHRoZSBjb250cmFjdDpcbiAqXG4gKiAgIC0gYG1lbW9yeV9saW1pdGVyYCBmaXJzdCwgc28gYW4gZXhwb3J0IGJhY2tsb2cgaXMgc2hlZCBiZWZvcmUgaXQgaXMgY2hhcmdlZCB0byB0aGUgc2FtZSBtZW1vcnkgYnVkZ2V0XG4gKiAgICAgdGhlIGN1c3RvbWVyJ3MgaGFuZGxlciBhbGxvY2F0ZXMgZnJvbS4gUGVyY2VudGFnZXMsIG5vdCBgbGltaXRfbWliYCwgYmVjYXVzZSBvbmUgbGF5ZXIgc2VydmVzXG4gKiAgICAgZnVuY3Rpb25zIGZyb20gMTI4TUIgdG8gMTBHQi5cbiAqICAgLSBgZGVjb3VwbGVgIExBU1QuIExhbWJkYSBmcmVlemVzIHRoZSBzYW5kYm94IG9uY2UgdGhlIGhhbmRsZXIgcmV0dXJucyBhbmQgZXZlcnkgZXh0ZW5zaW9uIGhhcyBjYWxsZWRcbiAqICAgICAvbmV4dDsgYSBmcm96ZW4gc2FuZGJveCBydW5zIG5vIHRpbWVycywgc28gYSBiYXRjaCBzaXR0aW5nIGJlaGluZCBpdHMgdGltZW91dCBpcyBmbHVzaGVkIG9uIGEgbGF0ZXJcbiAqICAgICBpbnZvY2F0aW9uIG9yIGRyb3BwZWQgd2hlbiB0aGUgc2FuZGJveCBpcyByZWFwZWQuIGBkZWNvdXBsZWAgYWNrbm93bGVkZ2VzIHRoZSByZWNlaXZlIHBhdGhcbiAqICAgICBpbW1lZGlhdGVseSBhbmQgdHJhY2tzIGluLWZsaWdodCBleHBvcnRzLCB3aGljaCBpcyB3aGF0IGxldHMgdGhlIGV4dGVuc2lvbiBob2xkIC9uZXh0IG9wZW4gdW50aWwgdGhlXG4gKiAgICAgcXVldWUgZHJhaW5zIOKAlCBhZnRlciB0aGUgY2FsbGVyIGFscmVhZHkgaGFzIGl0cyByZXNwb25zZS5cbiAqL1xuY29uc3QgQ09MTEVDVE9SX1BST0NFU1NPUlMgPVxuICAne21lbW9yeV9saW1pdGVyOiB7Y2hlY2tfaW50ZXJ2YWw6IDFzLCBsaW1pdF9wZXJjZW50YWdlOiA1MCwgc3Bpa2VfbGltaXRfcGVyY2VudGFnZTogMjB9LCAnICtcbiAgJ2JhdGNoOiB7c2VuZF9iYXRjaF9zaXplOiA1MTIsIHRpbWVvdXQ6IDIwMG1zfSwgZGVjb3VwbGU6IG51bGx9JztcblxuLyoqIFZhbHVlIGFuIHVuc3VwcG9ydGVkIHNpZ25hbCdzIGBPVEVMXypfRVhQT1JURVJgIGlzIHNldCB0by4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRFUl9OT05FID0gJ25vbmUnO1xuXG4vKiogVGhlIHRocmVlIGBPVEVMXypfRVhQT1JURVJgIHZhcmlhYmxlcywgaW4gdGhlIG9yZGVyIHRoZSBjb25uZWN0b3Igd3JpdGVzIHRoZW0uICovXG5leHBvcnQgY29uc3QgRU5WX1RSQUNFU19FWFBPUlRFUiA9ICdPVEVMX1RSQUNFU19FWFBPUlRFUic7XG5leHBvcnQgY29uc3QgRU5WX01FVFJJQ1NfRVhQT1JURVIgPSAnT1RFTF9NRVRSSUNTX0VYUE9SVEVSJztcbmV4cG9ydCBjb25zdCBFTlZfTE9HU19FWFBPUlRFUiA9ICdPVEVMX0xPR1NfRVhQT1JURVInO1xuXG4vKipcbiAqIFdoZXRoZXIgYSBzaWduYWwgaXMgZW5hYmxlZCwgZ2l2ZW4gdGhlIGNhbGxlcidzIHZhbHVlIGFuZCB0aGUgc2lnbmFsJ3Mgb3duIGRlZmF1bHQuXG4gKlxuICogVGhlIGRlZmF1bHRzIGFyZSBOT1QgdW5pZm9ybTogdHJhY2VzIGFyZSBvbiwgbWV0cmljcyBhbmQgbG9ncyBhcmUgb2ZmIChzZWUgYFNJR05BTF9ERUZBVUxUU2ApLiBTbyB0aGVcbiAqIGRlZmF1bHQgaGFzIHRvIHRyYXZlbCB3aXRoIHRoZSBzaWduYWwgcmF0aGVyIHRoYW4gYmVpbmcgZm9sZGVkIGludG8gb25lIFwidW5zZXQgbWVhbnMgb25cIiBydWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsRW5hYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCwgZGVmYXVsdEVuYWJsZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID8/IGRlZmF1bHRFbmFibGVkO1xufVxuXG4vKipcbiAqIFdoaWNoIHNpZ25hbHMgYSBkZXN0aW5hdGlvbiBjYXJyaWVzIHdoZW4gdGhlIGNhbGxlciBzYXlzIG5vdGhpbmcuXG4gKlxuICogVFJBQ0VTIE9OTFkuIE1ldHJpY3MgYW5kIGxvZ3MgYXJlIG9wdC1pbiBiZWNhdXNlIHRoZSBjb3N0IG9mIGhhdmluZyB0aGVtIG9uIGJ5IGRlZmF1bHQgZmFsbHMgb24gcGVvcGxlXG4gKiB3aG8gbmV2ZXIgYXNrZWQgZm9yIHRoZW06IGEgZGVzdGluYXRpb24gdGhhdCBkb2VzIG5vdCBpbXBsZW1lbnQgYSBzaWduYWwgcmVmdXNlcyBldmVyeSBiYXRjaCBvZiBpdCwgYW5kXG4gKiB0aGUgaW4tTGFtYmRhIGNvbGxlY3RvciB0aGVuIHJldHJpZXMgb24gYW4gZXhwb25lbnRpYWwgYmFja29mZiBpbnNpZGUgYmlsbGVkIGR1cmF0aW9uLiBUcmFjZXMgYXJlIHdoYXRcbiAqIGFsbW9zdCBldmVyeSBkZXN0aW5hdGlvbiBhY2NlcHRzIGFuZCB3aGF0IGFsbW9zdCBldmVyeW9uZSBpbnN0cnVtZW50cyBmb3I7IHRoZSBvdGhlciB0d28gYXJlIGFcbiAqIGRlbGliZXJhdGUgY2hvaWNlIGFib3V0IHRoZSBkZXN0aW5hdGlvbiwgc28gdGhleSBhcmUgbWFkZSBkZWxpYmVyYXRlbHkuXG4gKlxuICogVHVybmluZyBvbmUgb24gaXMgYG1ldHJpY3M6IHRydWVgLiBFbmFibGluZyBhIHNpZ25hbCBhbHNvIGRyb3BzIHRoZSBgT1RFTF8qX0VYUE9SVEVSPW5vbmVgIG92ZXJyaWRlLCBzb1xuICogdGhlIFNESyBzdGFydHMgcHJvZHVjaW5nIGl0IGFnYWluLlxuICovXG5leHBvcnQgY29uc3QgU0lHTkFMX0RFRkFVTFRTID0geyB0cmFjZXM6IHRydWUsIG1ldHJpY3M6IGZhbHNlLCBsb2dzOiBmYWxzZSB9O1xuXG4vKiogVGhlIHRocmVlIHNpZ25hbHMgcmVzb2x2ZWQgYWdhaW5zdCB0aGVpciBkZWZhdWx0cyDigJQgdGhlIHNpbmdsZSBwbGFjZSB0aGF0IHBhaXJpbmcgaXMgZGVjaWRlZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlZFNpZ25hbHMoZGVzdDogT2RpZ29zRGVzdGluYXRpb24pOiB7IHRyYWNlczogYm9vbGVhbjsgbWV0cmljczogYm9vbGVhbjsgbG9nczogYm9vbGVhbiB9IHtcbiAgcmV0dXJuIHtcbiAgICB0cmFjZXM6IHNpZ25hbEVuYWJsZWQoZGVzdC50cmFjZXMsIFNJR05BTF9ERUZBVUxUUy50cmFjZXMpLFxuICAgIG1ldHJpY3M6IHNpZ25hbEVuYWJsZWQoZGVzdC5tZXRyaWNzLCBTSUdOQUxfREVGQVVMVFMubWV0cmljcyksXG4gICAgbG9nczogc2lnbmFsRW5hYmxlZChkZXN0LmxvZ3MsIFNJR05BTF9ERUZBVUxUUy5sb2dzKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgZG91YmxlLXF1b3RlZCBZQU1MIHNjYWxhci5cbiAqXG4gKiBRdW90aW5nIHVuY29uZGl0aW9uYWxseSBpcyB3aGF0IGtlZXBzIGEgdmFsdWUgc3VjaCBhcyBhIGJhcmUgYGhvc3Q6NDMxN2AgZnJvbSBiZWluZyByZS1yZWFkIGFzIGEgbmVzdGVkXG4gKiBtYXBwaW5nIGluIGZsb3cgY29udGV4dC4gYEpTT04uc3RyaW5naWZ5YCBpcyB0aGUgVHlwZVNjcmlwdCBlcXVpdmFsZW50IG9mIHRoZSBjb25uZWN0b3Inc1xuICogYHN0cmNvbnYuUXVvdGVgIGZvciB0aGUgdm9jYWJ1bGFyeSB0aGF0IG1hdHRlcnMgaGVyZSAoYFxcXCJgIGFuZCBgXFxcXGApOyBib3RoIHByb2R1Y2UgdGhlIHNhbWUgb3V0cHV0IGZvclxuICogdGhlIEFTQ0lJIGVuZHBvaW50cywgaGVhZGVyIG5hbWVzIGFuZCBjcmVkZW50aWFscyB0aGlzIGV2ZXIgc2Vlcy5cbiAqL1xuZnVuY3Rpb24geWFtbFN0cmluZyhzOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocyk7XG59XG5cbi8qKlxuICogUGlja3MgdGhlIGV4cG9ydGVyIGJ5IHRoZSB0cmFuc3BvcnQgdGhlIGRlc3RpbmF0aW9uIGNvbmZpZ3VyZWQuIEEgZGVzdGluYXRpb24gY2FycmllcyBhIGdSUEMgZW5kcG9pbnRcbiAqICh0eXBlIGBvdGxwYCkgb3IgYW4gT1RMUC9IVFRQIG9uZSAodHlwZSBgb3RscGh0dHBgKTsgdGhlIHR3byBhcmUgZGlmZmVyZW50IGNvbGxlY3RvciBjb21wb25lbnRzIHdpdGhcbiAqIGRpZmZlcmVudCBlbmRwb2ludCBncmFtbWFycywgc28gdGhpcyBpcyBhIGdlbnVpbmUgYnJhbmNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0ZXJOYW1lRm9yKGRlc3Q6IE9kaWdvc0Rlc3RpbmF0aW9uKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRlc3QuZW5kcG9pbnQgPyAnb3RscCcgOiAnb3RscGh0dHAnO1xufVxuXG4vKipcbiAqIEVtaXRzIHRoZSBkZXN0aW5hdGlvbidzIHBlci1yZXF1ZXN0IGhlYWRlcnMg4oCUIGluIHByYWN0aWNlIGl0cyBjcmVkZW50aWFsLiBFbXB0eSB3aGVuIHRoZSBkZXN0aW5hdGlvblxuICogbmVlZHMgbm9uZSwgc28gbm8gaGVhZGVyIGJsb2NrIGlzIHdyaXR0ZW4gYXQgYWxsIHJhdGhlciB0aGFuIGFuIGVtcHR5IG9uZS5cbiAqXG4gKiBLZXlzIGFyZSBzb3J0ZWQgc28gdGhlIHJlbmRlcmVkIGNvbmZpZyBpcyBieXRlLWlkZW50aWNhbCBhY3Jvc3Mgc3ludGhzLiBUaGUgc3RyaW5nIGlzIGNvbXBhcmVkIGFnYWluc3RcbiAqIHRoZSBsaXZlIGZ1bmN0aW9uJ3MgZW52aXJvbm1lbnQgdG8gZGVjaWRlIHdoZXRoZXIgYW4gdXBkYXRlIGlzIG5lZWRlZCwgYW5kIG1hcCBvcmRlciB3b3VsZCBvdGhlcndpc2VcbiAqIG1ha2UgZXZlcnkgZGVwbG95IGxvb2sgbGlrZSBhIGNoYW5nZS5cbiAqL1xuZnVuY3Rpb24gcmVuZGVySGVhZGVycyhoZWFkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gIGlmICghaGVhZGVycykge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaGVhZGVycykuc29ydCgpO1xuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgY29uc3QgcmVuZGVyZWQgPSBrZXlzLm1hcCgoaykgPT4gYCR7eWFtbFN0cmluZyhrKX06ICR7eWFtbFN0cmluZyhoZWFkZXJzW2tdKX1gKS5qb2luKCcsICcpO1xuICByZXR1cm4gYCwgaGVhZGVyczogeyR7cmVuZGVyZWR9fWA7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckV4cG9ydGVyKGRlc3Q6IE9kaWdvc0Rlc3RpbmF0aW9uKTogc3RyaW5nIHtcbiAgbGV0IG91dDogc3RyaW5nO1xuICBpZiAoZGVzdC5lbmRwb2ludCkge1xuICAgIC8vIHRscy5pbnNlY3VyZSBhcHBsaWVzIHRvIHRoZSBnUlBDIGV4cG9ydGVyIG9ubHk7IHRoZSBIVFRQIGV4cG9ydGVyIHRha2VzIHRoZSBzY2hlbWUgZnJvbSB0aGUgVVJMLlxuICAgIG91dCA9IGB7b3RscDoge2VuZHBvaW50OiAke3lhbWxTdHJpbmcoZGVzdC5lbmRwb2ludCl9LCB0bHM6IHtpbnNlY3VyZTogJHtkZXN0Lmluc2VjdXJlID09PSB0cnVlfX1gO1xuICB9IGVsc2UgaWYgKGRlc3QuaHR0cEVuZHBvaW50KSB7XG4gICAgb3V0ID0gYHtvdGxwaHR0cDoge2VuZHBvaW50OiAke3lhbWxTdHJpbmcoZGVzdC5odHRwRW5kcG9pbnQpfWA7XG4gIH0gZWxzZSB7XG4gICAgLy8gUmVhY2hlZCB3aGVuIGEgZGVzdGluYXRpb24gY2FycmllcyBuZWl0aGVyIHRyYW5zcG9ydC4gRmFpbGluZyBoZXJlIGlzIHRoZSB3aG9sZSBwb2ludDogdGhlXG4gICAgLy8gYWx0ZXJuYXRpdmUgaXMgYSBjb2xsZWN0b3IgdGhhdCBleGl0cyBvbiBzdGFydHVwIHdoaWxlIHRoZSBmdW5jdGlvbiBpcyByZXBvcnRlZCBoZWFsdGh5LlxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPZGlnb3MgZGVzdGluYXRpb24gaGFzIG5laXRoZXIgYGVuZHBvaW50YCAoT1RMUC9nUlBDKSBub3IgYGh0dHBFbmRwb2ludGAgKE9UTFAvSFRUUCksICcgK1xuICAgICAgICAnc28gdGhlIGluLUxhbWJkYSBjb2xsZWN0b3Igd291bGQgaGF2ZSBub3doZXJlIHRvIGV4cG9ydC4nLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGAke291dH0ke3JlbmRlckhlYWRlcnMoZGVzdC5oZWFkZXJzKX19fWA7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgcGlwZWxpbmUgb25seSBmb3IgdGhlIHNpZ25hbHMgdGhlIGRlc3RpbmF0aW9uIGFjY2VwdHMuIEEgc2lnbmFsIHdpdGggbm8gcGlwZWxpbmUgaXMgcmVmdXNlZCBhdFxuICogdGhlIHJlY2VpdmVyLCB3aGljaCBpcyB0aGUgYmVoYXZpb3VyIHdlIHdhbnQ6IHRoZSBTREsgaXMgdG9sZCBub3QgdG8gcHJvZHVjZSBpdCBlaXRoZXIgKHNlZVxuICogYGV4cG9ydGVyT3ZlcnJpZGVGb3JgKSwgYW5kIHRoZSB0d28gdG9nZXRoZXIgbWVhbiBhbiB1bmFjY2VwdGVkIHNpZ25hbCBpcyBuZXZlciBnZW5lcmF0ZWQsIG5ldmVyXG4gKiBleHBvcnRlZCwgYW5kIG5ldmVyIGEgcGVyLWJhdGNoIGVycm9yIGFnYWluc3QgYSBiYWNrZW5kIHRoYXQgZG9lcyBub3QgaW1wbGVtZW50IGl0LlxuICovXG5mdW5jdGlvbiByZW5kZXJQaXBlbGluZXMoZGVzdDogT2RpZ29zRGVzdGluYXRpb24sIGV4cG9ydGVyTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGVuYWJsZWQgPSByZXNvbHZlZFNpZ25hbHMoZGVzdCk7XG4gIGNvbnN0IHNpZ25hbHM6IEFycmF5PFtzdHJpbmcsIGJvb2xlYW5dPiA9IFtcbiAgICBbJ3RyYWNlcycsIGVuYWJsZWQudHJhY2VzXSxcbiAgICBbJ21ldHJpY3MnLCBlbmFibGVkLm1ldHJpY3NdLFxuICAgIFsnbG9ncycsIGVuYWJsZWQubG9nc10sXG4gIF07XG4gIGZvciAoY29uc3QgW25hbWUsIGVuYWJsZWRdIG9mIHNpZ25hbHMpIHtcbiAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgYCR7bmFtZX06IHtyZWNlaXZlcnM6IFtvdGxwXSwgcHJvY2Vzc29yczogW21lbW9yeV9saW1pdGVyLCBiYXRjaCwgZGVjb3VwbGVdLCBleHBvcnRlcnM6IFske2V4cG9ydGVyTmFtZX1dfWAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcGFydHMubGVuZ3RoID09PSAwID8gJycgOiBgeyR7cGFydHMuam9pbignLCAnKX19YDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB2YWx1ZSBhIHNpZ25hbCdzIGBPVEVMXypfRVhQT1JURVJgIG11c3QgaG9sZDogYG5vbmVgIHRvIHN1cHByZXNzIGEgc2lnbmFsIHRoZSBkZXN0aW5hdGlvblxuICogZG9lcyBub3QgYWNjZXB0LCBvciBgdW5kZWZpbmVkYCBtZWFuaW5nIHRoZSB2YXJpYWJsZSBtdXN0IGJlIEFCU0VOVCBiZWNhdXNlIHRoZSBTREsncyBvd24gZGVmYXVsdCBpc1xuICogYWxyZWFkeSB3aGF0IHdlIHdhbnQuXG4gKlxuICogT25seSB0aGUgXCJub25lXCIgc2lkZSBpcyB3cml0dGVuLCBiZWNhdXNlIGBvdGxwYCBpcyBhbHJlYWR5IGV2ZXJ5IE9wZW5UZWxlbWV0cnkgU0RLJ3MgZGVmYXVsdCBmb3IgYWxsXG4gKiB0aHJlZSBzaWduYWxzIOKAlCBzZXR0aW5nIGl0IHdvdWxkIHJlc3RhdGUgdGhlIGRlZmF1bHQgaW4gdGhyZWUgdmFyaWFibGVzIG9uIGV2ZXJ5IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0ZXJPdmVycmlkZUZvcihzdXBwb3J0ZWQ6IGJvb2xlYW4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gc3VwcG9ydGVkID8gdW5kZWZpbmVkIDogRVhQT1JURVJfTk9ORTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBjb21wbGV0ZSBjb2xsZWN0b3IgY29uZmlndXJhdGlvbiBmb3Igb25lIGRlc3RpbmF0aW9uLlxuICpcbiAqIEB0aHJvd3MgaWYgdGhlIGRlc3RpbmF0aW9uIG5hbWVzIG5laXRoZXIgdHJhbnNwb3J0LCBib3RoIHRyYW5zcG9ydHMsIG9yIG5vIHNpZ25hbHMgYXQgYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQ29sbGVjdG9yQ29uZmlnKGRlc3Q6IE9kaWdvc0Rlc3RpbmF0aW9uKTogc3RyaW5nIHtcbiAgaWYgKGRlc3QuZW5kcG9pbnQgJiYgZGVzdC5odHRwRW5kcG9pbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnT2RpZ29zIGRlc3RpbmF0aW9uIHNldHMgYm90aCBgZW5kcG9pbnRgIChPVExQL2dSUEMpIGFuZCBgaHR0cEVuZHBvaW50YCAoT1RMUC9IVFRQKTsgJyArXG4gICAgICAgICd0aGV5IHNlbGVjdCBkaWZmZXJlbnQgY29sbGVjdG9yIGV4cG9ydGVycywgc28gZXhhY3RseSBvbmUgbXVzdCBiZSBzZXQuJyxcbiAgICApO1xuICB9XG5cbiAgLy8gVGhlIHR3byBmaWVsZHMgaGF2ZSBkaWZmZXJlbnQgZW5kcG9pbnQgR1JBTU1BUlMsIGFuZCBnZXR0aW5nIHRoZW0gd3JvbmcgaXMgdGhlIHdvcnN0IGZhaWx1cmUgbW9kZSB0aGlzXG4gIC8vIHBhY2thZ2UgaGFzOiB0aGUgY29sbGVjdG9yIGFjY2VwdHMgdGhlIGNvbmZpZ3VyYXRpb24sIGZhaWxzIHRvIGJ1aWxkIGl0cyBleHBvcnRlciwgYW5kIGV4aXRzIOKAlCBsZWF2aW5nXG4gIC8vIHRoZSBmdW5jdGlvbiBpbnN0cnVtZW50ZWQsIHJlcG9ydGluZyBoZWFsdGh5LCBhbmQgZXhwb3J0aW5nIG5vdGhpbmcuIEJvdGggY2hlY2tzIGFyZSB0aGVyZWZvcmUgc3ludGhcbiAgLy8gZXJyb3JzIHJhdGhlciB0aGFuIGRvY3VtZW50YXRpb24uXG4gIGlmIChkZXN0LmVuZHBvaW50ICYmIGRlc3QuZW5kcG9pbnQuaW5jbHVkZXMoJzovLycpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYE9kaWdvcyBkZXN0aW5hdGlvbiBcXGBlbmRwb2ludFxcYCBpcyBcIiR7ZGVzdC5lbmRwb2ludH1cIiwgYnV0IHRoZSBnUlBDIGV4cG9ydGVyIHRha2VzIGhvc3Q6cG9ydCB3aXRoIGAgK1xuICAgICAgICAnbm8gc2NoZW1lLiBVc2UgYGh0dHBFbmRwb2ludGAgZm9yIGEgc2NoZW1lLXF1YWxpZmllZCBPVExQL0hUVFAgVVJMLicsXG4gICAgKTtcbiAgfVxuICBpZiAoZGVzdC5odHRwRW5kcG9pbnQgJiYgIS9eaHR0cHM/OlxcL1xcLy8udGVzdChkZXN0Lmh0dHBFbmRwb2ludCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgT2RpZ29zIGRlc3RpbmF0aW9uIFxcYGh0dHBFbmRwb2ludFxcYCBpcyBcIiR7ZGVzdC5odHRwRW5kcG9pbnR9XCIsIGJ1dCB0aGUgT1RMUC9IVFRQIGV4cG9ydGVyIHRha2VzIGEgYCArXG4gICAgICAgICdzY2hlbWUtcXVhbGlmaWVkIFVSTCAoaHR0cDovLyBvciBodHRwczovLykuIFVzZSBgZW5kcG9pbnRgIGZvciBhIGJhcmUgZ1JQQyBob3N0OnBvcnQuJyxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgZXhwb3J0ZXIgPSByZW5kZXJFeHBvcnRlcihkZXN0KTtcbiAgY29uc3QgcGlwZWxpbmVzID0gcmVuZGVyUGlwZWxpbmVzKGRlc3QsIGV4cG9ydGVyTmFtZUZvcihkZXN0KSk7XG4gIGlmIChwaXBlbGluZXMgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ09kaWdvcyBkZXN0aW5hdGlvbiBhY2NlcHRzIG5vIHRlbGVtZXRyeSBzaWduYWxzLCBzbyB0aGUgY29sbGVjdG9yIHdvdWxkIGhhdmUgbm8gcGlwZWxpbmUgdG8gYnVpbGQgJyArXG4gICAgICAgICdhbmQgd291bGQgZmFpbCB0byBzdGFydC4gTm90ZSB0aGF0IG1ldHJpY3MgYW5kIGxvZ3MgYXJlIE9GRiBieSBkZWZhdWx0IOKAlCB3aXRoIGB0cmFjZXM6IGZhbHNlYCB0aGUgJyArXG4gICAgICAgICdkZXN0aW5hdGlvbiBoYXMgbm90aGluZyBsZWZ0IHVubGVzcyB5b3UgYWxzbyBwYXNzIGBtZXRyaWNzOiB0cnVlYCBvciBgbG9nczogdHJ1ZWAuJyxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICBDT0xMRUNUT1JfQ09ORklHX1NDSEVNRSArXG4gICAgJ3tyZWNlaXZlcnM6IHtvdGxwOiB7cHJvdG9jb2xzOiAnICtcbiAgICAvLyBCb3VuZCB0byBsb2NhbGhvc3Q6IHRoZSByZWNlaXZlciBleGlzdHMgb25seSBmb3IgdGhlIGluLXByb2Nlc3MgU0RLLiBCaW5kaW5nIGl0IHdpZGVyIHdvdWxkIGV4cG9zZVxuICAgIC8vIGFuIHVuYXV0aGVudGljYXRlZCBPVExQIGVuZHBvaW50IG9uIHRoZSBzYW5kYm94J3MgbmV0d29yayBpbnRlcmZhY2UuXG4gICAgJ3tncnBjOiB7ZW5kcG9pbnQ6IFwibG9jYWxob3N0OjQzMTdcIn0sIGh0dHA6IHtlbmRwb2ludDogXCJsb2NhbGhvc3Q6NDMxOFwifX19fSwgJyArXG4gICAgJ3Byb2Nlc3NvcnM6ICcgK1xuICAgIENPTExFQ1RPUl9QUk9DRVNTT1JTICtcbiAgICAnLCBleHBvcnRlcnM6ICcgK1xuICAgIGV4cG9ydGVyICtcbiAgICAnLCBzZXJ2aWNlOiB7dGVsZW1ldHJ5OiB7bWV0cmljczoge2xldmVsOiBub25lfX0sIHBpcGVsaW5lczogJyArXG4gICAgcGlwZWxpbmVzICtcbiAgICAnfX0nXG4gICk7XG59XG4iXX0=
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* Produced by cdk/scripts/generate-layers.ts from artifacts.json and manifest/layers.json.
|
|
5
5
|
* Run `npm run generate` (or `npm run build`) to refresh it.
|
|
6
6
|
*
|
|
7
|
-
* Odigos artifact version: v0.0.
|
|
7
|
+
* Odigos artifact version: v0.0.13
|
|
8
8
|
*/
|
|
9
9
|
/** Release this table was generated from. Empty before the first release. */
|
|
10
|
-
export declare const ODIGOS_VERSION = "v0.0.
|
|
10
|
+
export declare const ODIGOS_VERSION = "v0.0.13";
|
|
11
11
|
/** SAR semantic version matching ODIGOS_VERSION (no leading "v"). */
|
|
12
|
-
export declare const SAR_SEMANTIC_VERSION = "0.0.
|
|
12
|
+
export declare const SAR_SEMANTIC_VERSION = "0.0.13";
|
|
13
13
|
/** Public layer ARNs, keyed "<region>/<language>/<architecture>". */
|
|
14
14
|
export declare const LAYER_ARNS: {
|
|
15
15
|
[key: string]: string;
|