@aws-cdk/aws-mediaconnect-alpha 2.263.0-alpha.0
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 +28415 -0
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +592 -0
- package/LICENSE +201 -0
- package/NOTICE +2 -0
- package/README.md +1280 -0
- package/awslint.json +50 -0
- package/grants.json +42 -0
- package/lib/bridge-output.d.ts +54 -0
- package/lib/bridge-output.js +122 -0
- package/lib/bridge-source.d.ts +79 -0
- package/lib/bridge-source.js +217 -0
- package/lib/bridge.d.ts +419 -0
- package/lib/bridge.js +490 -0
- package/lib/flow-entitlement.d.ts +86 -0
- package/lib/flow-entitlement.js +152 -0
- package/lib/flow-output.d.ts +329 -0
- package/lib/flow-output.js +415 -0
- package/lib/flow-source-configuration.d.ts +558 -0
- package/lib/flow-source-configuration.js +595 -0
- package/lib/flow-source.d.ts +116 -0
- package/lib/flow-source.js +190 -0
- package/lib/flow.d.ts +975 -0
- package/lib/flow.js +1065 -0
- package/lib/gateway.d.ts +142 -0
- package/lib/gateway.js +236 -0
- package/lib/index.d.ts +14 -0
- package/lib/index.js +31 -0
- package/lib/mediaconnect-grants.generated.d.ts +53 -0
- package/lib/mediaconnect-grants.generated.js +136 -0
- package/lib/router-input.d.ts +686 -0
- package/lib/router-input.js +1095 -0
- package/lib/router-network-interface.d.ts +153 -0
- package/lib/router-network-interface.js +245 -0
- package/lib/router-output.d.ts +557 -0
- package/lib/router-output.js +789 -0
- package/lib/shared.d.ts +548 -0
- package/lib/shared.js +668 -0
- package/package.json +118 -0
- package/rosetta/_generated.ts-fixture +6 -0
- package/rosetta/default.ts-fixture +68 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
5
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
6
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
7
|
+
var _, done = false;
|
|
8
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
9
|
+
var context = {};
|
|
10
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
+
if (kind === "accessor") {
|
|
15
|
+
if (result === void 0) continue;
|
|
16
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
+
}
|
|
21
|
+
else if (_ = accept(result)) {
|
|
22
|
+
if (kind === "field") initializers.unshift(_);
|
|
23
|
+
else descriptor[key] = _;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
+
done = true;
|
|
28
|
+
};
|
|
29
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
+
var useValue = arguments.length > 2;
|
|
31
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
+
}
|
|
34
|
+
return useValue ? value : void 0;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.FlowOutput = exports.OutputConfiguration = void 0;
|
|
38
|
+
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
39
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
40
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
41
|
+
const aws_mediaconnect_1 = require("aws-cdk-lib/aws-mediaconnect");
|
|
42
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
43
|
+
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
44
|
+
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
45
|
+
const shared_1 = require("./shared");
|
|
46
|
+
/**
|
|
47
|
+
* Flow output protocol options.
|
|
48
|
+
*/
|
|
49
|
+
var FlowOutputProtocol;
|
|
50
|
+
(function (FlowOutputProtocol) {
|
|
51
|
+
/**
|
|
52
|
+
* ZIXI_PUSH option
|
|
53
|
+
*/
|
|
54
|
+
FlowOutputProtocol["ZIXI_PUSH"] = "zixi-push";
|
|
55
|
+
/**
|
|
56
|
+
* RTP_FEC option
|
|
57
|
+
*/
|
|
58
|
+
FlowOutputProtocol["RTP_FEC"] = "rtp-fec";
|
|
59
|
+
/**
|
|
60
|
+
* RTP option
|
|
61
|
+
*/
|
|
62
|
+
FlowOutputProtocol["RTP"] = "rtp";
|
|
63
|
+
/**
|
|
64
|
+
* ZIXI_PULL option
|
|
65
|
+
*/
|
|
66
|
+
FlowOutputProtocol["ZIXI_PULL"] = "zixi-pull";
|
|
67
|
+
/**
|
|
68
|
+
* RIST option
|
|
69
|
+
*/
|
|
70
|
+
FlowOutputProtocol["RIST"] = "rist";
|
|
71
|
+
/**
|
|
72
|
+
* SRT_LISTENER option
|
|
73
|
+
*/
|
|
74
|
+
FlowOutputProtocol["SRT_LISTENER"] = "srt-listener";
|
|
75
|
+
/**
|
|
76
|
+
* SRT_CALLER option
|
|
77
|
+
*/
|
|
78
|
+
FlowOutputProtocol["SRT_CALLER"] = "srt-caller";
|
|
79
|
+
/**
|
|
80
|
+
* NDI option
|
|
81
|
+
*/
|
|
82
|
+
FlowOutputProtocol["NDI"] = "ndi-speed-hq";
|
|
83
|
+
})(FlowOutputProtocol || (FlowOutputProtocol = {}));
|
|
84
|
+
/**
|
|
85
|
+
* Configuration options to define a FlowOutput by protocol.
|
|
86
|
+
*/
|
|
87
|
+
class OutputConfiguration {
|
|
88
|
+
_output;
|
|
89
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-mediaconnect-alpha.OutputConfiguration", version: "2.263.0-alpha.0" };
|
|
90
|
+
/**
|
|
91
|
+
* The source configuration for flows receiving a stream from router.
|
|
92
|
+
*/
|
|
93
|
+
static router(input) {
|
|
94
|
+
try {
|
|
95
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_RouterTransitConfig(input);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
99
|
+
Error.captureStackTrace(error, this.router);
|
|
100
|
+
}
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
return new OutputConfiguration({
|
|
104
|
+
routerIntegrationState: shared_1.State.ENABLED,
|
|
105
|
+
routerIntegrationTransitEncryption: input?.encryption,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Option for RTP configuration
|
|
110
|
+
*/
|
|
111
|
+
static rtp(input) {
|
|
112
|
+
try {
|
|
113
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_RtpOutputConfig(input);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
117
|
+
Error.captureStackTrace(error, this.rtp);
|
|
118
|
+
}
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
return new OutputConfiguration({
|
|
122
|
+
protocol: FlowOutputProtocol.RTP,
|
|
123
|
+
destination: input.destination,
|
|
124
|
+
port: input.port,
|
|
125
|
+
smoothingLatency: input.smoothingLatency?.toMilliseconds(),
|
|
126
|
+
vpcInterfaceAttachment: parseVpcInterfaceAttachment(input.vpcInterfaceAttachment),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Option for RTP-FEC configuration
|
|
131
|
+
*/
|
|
132
|
+
static rtpFec(input) {
|
|
133
|
+
try {
|
|
134
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_RtpFecOutputConfig(input);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
138
|
+
Error.captureStackTrace(error, this.rtpFec);
|
|
139
|
+
}
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
return new OutputConfiguration({
|
|
143
|
+
protocol: FlowOutputProtocol.RTP_FEC,
|
|
144
|
+
destination: input.destination,
|
|
145
|
+
port: input.port,
|
|
146
|
+
smoothingLatency: input.smoothingLatency?.toMilliseconds(),
|
|
147
|
+
vpcInterfaceAttachment: parseVpcInterfaceAttachment(input.vpcInterfaceAttachment),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Option for RIST configuration
|
|
152
|
+
*/
|
|
153
|
+
static rist(input) {
|
|
154
|
+
try {
|
|
155
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_RistOutputConfig(input);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
159
|
+
Error.captureStackTrace(error, this.rist);
|
|
160
|
+
}
|
|
161
|
+
throw error;
|
|
162
|
+
}
|
|
163
|
+
return new OutputConfiguration({
|
|
164
|
+
protocol: FlowOutputProtocol.RIST,
|
|
165
|
+
destination: input.destination,
|
|
166
|
+
port: input.port,
|
|
167
|
+
smoothingLatency: input.smoothingLatency?.toMilliseconds(),
|
|
168
|
+
vpcInterfaceAttachment: parseVpcInterfaceAttachment(input.vpcInterfaceAttachment),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Option for Zixi Push configuration
|
|
173
|
+
*/
|
|
174
|
+
static zixiPush(input) {
|
|
175
|
+
try {
|
|
176
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_ZixiPushOutputConfig(input);
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
180
|
+
Error.captureStackTrace(error, this.zixiPush);
|
|
181
|
+
}
|
|
182
|
+
throw error;
|
|
183
|
+
}
|
|
184
|
+
return new OutputConfiguration({
|
|
185
|
+
protocol: FlowOutputProtocol.ZIXI_PUSH,
|
|
186
|
+
destination: input.destination,
|
|
187
|
+
port: input.port,
|
|
188
|
+
streamId: input.streamId,
|
|
189
|
+
maxLatency: input.maxLatency.toMilliseconds(),
|
|
190
|
+
cidrAllowList: input.cidrAllowList,
|
|
191
|
+
staticKeyEncryption: input.encryption,
|
|
192
|
+
vpcInterfaceAttachment: parseVpcInterfaceAttachment(input.vpcInterfaceAttachment),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Option for Zixi Pull configuration
|
|
197
|
+
*/
|
|
198
|
+
static zixiPull(input) {
|
|
199
|
+
try {
|
|
200
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_ZixiPullOutputConfig(input);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
204
|
+
Error.captureStackTrace(error, this.zixiPull);
|
|
205
|
+
}
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
return new OutputConfiguration({
|
|
209
|
+
protocol: FlowOutputProtocol.ZIXI_PULL,
|
|
210
|
+
streamId: input.streamId,
|
|
211
|
+
remoteId: input.remoteId,
|
|
212
|
+
maxLatency: input.maxLatency.toMilliseconds(),
|
|
213
|
+
cidrAllowList: input.cidrAllowList,
|
|
214
|
+
staticKeyEncryption: input.encryption,
|
|
215
|
+
vpcInterfaceAttachment: parseVpcInterfaceAttachment(input.vpcInterfaceAttachment),
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Option for SRT Caller configuration
|
|
220
|
+
*/
|
|
221
|
+
static srtCaller(input) {
|
|
222
|
+
try {
|
|
223
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_SrtCallerOutputConfig(input);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
227
|
+
Error.captureStackTrace(error, this.srtCaller);
|
|
228
|
+
}
|
|
229
|
+
throw error;
|
|
230
|
+
}
|
|
231
|
+
return new OutputConfiguration({
|
|
232
|
+
protocol: FlowOutputProtocol.SRT_CALLER,
|
|
233
|
+
destination: input.destination,
|
|
234
|
+
port: input.port,
|
|
235
|
+
minLatency: input.minLatency?.toMilliseconds(),
|
|
236
|
+
streamId: input.streamId,
|
|
237
|
+
srtPasswordEncryption: input.encryption,
|
|
238
|
+
vpcInterfaceAttachment: parseVpcInterfaceAttachment(input.vpcInterfaceAttachment),
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Option for SRT Listener configuration
|
|
243
|
+
*/
|
|
244
|
+
static srtListener(input) {
|
|
245
|
+
try {
|
|
246
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_SrtListenerOutputConfig(input);
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
250
|
+
Error.captureStackTrace(error, this.srtListener);
|
|
251
|
+
}
|
|
252
|
+
throw error;
|
|
253
|
+
}
|
|
254
|
+
return new OutputConfiguration({
|
|
255
|
+
protocol: FlowOutputProtocol.SRT_LISTENER,
|
|
256
|
+
port: input.port,
|
|
257
|
+
minLatency: input.minLatency?.toMilliseconds(),
|
|
258
|
+
cidrAllowList: input.cidrAllowList,
|
|
259
|
+
srtPasswordEncryption: input.encryption,
|
|
260
|
+
vpcInterfaceAttachment: parseVpcInterfaceAttachment(input.vpcInterfaceAttachment),
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Option for NDI configuration
|
|
265
|
+
*/
|
|
266
|
+
static ndi(input = {}) {
|
|
267
|
+
try {
|
|
268
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_NdiOutputConfig(input);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
272
|
+
Error.captureStackTrace(error, this.ndi);
|
|
273
|
+
}
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
if (input.ndiSpeedHqQuality !== undefined
|
|
277
|
+
&& !aws_cdk_lib_1.Token.isUnresolved(input.ndiSpeedHqQuality)
|
|
278
|
+
&& (input.ndiSpeedHqQuality < 100 || input.ndiSpeedHqQuality > 200)) {
|
|
279
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `NdiSpeedHqQualityRange`, `NDI Speed HQ quality must be between 100 and 200, got ${input.ndiSpeedHqQuality}`);
|
|
280
|
+
}
|
|
281
|
+
return new OutputConfiguration({
|
|
282
|
+
protocol: FlowOutputProtocol.NDI,
|
|
283
|
+
ndiProgramName: input.ndiProgramName,
|
|
284
|
+
ndiSpeedHqQuality: input.ndiSpeedHqQuality,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* @param output - Configuration for outputs in output
|
|
289
|
+
*/
|
|
290
|
+
constructor(_output) {
|
|
291
|
+
this._output = _output;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Called when the output configuration is bound to a FlowOutput.
|
|
295
|
+
* @internal
|
|
296
|
+
*/
|
|
297
|
+
_bind() {
|
|
298
|
+
return { ...this._output };
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
exports.OutputConfiguration = OutputConfiguration;
|
|
302
|
+
/**
|
|
303
|
+
* Shared base for both real and imported flow outputs.
|
|
304
|
+
* @internal
|
|
305
|
+
*/
|
|
306
|
+
class FlowOutputBase extends aws_cdk_lib_1.Resource {
|
|
307
|
+
get flowOutputRef() {
|
|
308
|
+
return { outputArn: this.flowOutputArn };
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Resource defines the destination address, protocol, and port that
|
|
313
|
+
* AWS Elemental MediaConnect sends the ingested video to.
|
|
314
|
+
*/
|
|
315
|
+
let FlowOutput = (() => {
|
|
316
|
+
let _classDecorators = [prop_injectable_1.propertyInjectable];
|
|
317
|
+
let _classDescriptor;
|
|
318
|
+
let _classExtraInitializers = [];
|
|
319
|
+
let _classThis;
|
|
320
|
+
let _classSuper = FlowOutputBase;
|
|
321
|
+
var FlowOutput = class extends _classSuper {
|
|
322
|
+
static { _classThis = this; }
|
|
323
|
+
static {
|
|
324
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
325
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
326
|
+
FlowOutput = _classThis = _classDescriptor.value;
|
|
327
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
328
|
+
}
|
|
329
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-mediaconnect-alpha.FlowOutput", version: "2.263.0-alpha.0" };
|
|
330
|
+
/** Uniquely identifies this class. */
|
|
331
|
+
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-mediaconnect-alpha.FlowOutput';
|
|
332
|
+
/**
|
|
333
|
+
* Creates a Flow Ouput construct that represents an external (imported) Flow Output.
|
|
334
|
+
*/
|
|
335
|
+
static fromFlowOutputArn(scope, id, flowOutputArn) {
|
|
336
|
+
class Import extends FlowOutputBase {
|
|
337
|
+
flowOutputArn = flowOutputArn;
|
|
338
|
+
}
|
|
339
|
+
return new Import(scope, id);
|
|
340
|
+
}
|
|
341
|
+
flowOutputArn;
|
|
342
|
+
constructor(scope, id, props) {
|
|
343
|
+
super(scope, id, {
|
|
344
|
+
physicalName: props?.flowOutputName ?? aws_cdk_lib_1.Lazy.string({ produce: () => aws_cdk_lib_1.Names.uniqueResourceName(this, { maxLength: 128 }) }),
|
|
345
|
+
});
|
|
346
|
+
try {
|
|
347
|
+
jsiiDeprecationWarnings._aws_cdk_aws_mediaconnect_alpha_FlowOutputProps(props);
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
351
|
+
Error.captureStackTrace(error, FlowOutput);
|
|
352
|
+
}
|
|
353
|
+
throw error;
|
|
354
|
+
}
|
|
355
|
+
// Validate flow output name if provided
|
|
356
|
+
if (props.flowOutputName != null && props.flowOutputName !== '' && !aws_cdk_lib_1.Token.isUnresolved(props.flowOutputName)) {
|
|
357
|
+
if (props.flowOutputName.length > 128) {
|
|
358
|
+
throw new aws_cdk_lib_1.ValidationError((0, helpers_internal_1.lit) `FlowOutputNameLength`, `Flow output name must be between 1 and 128 characters, got ${props.flowOutputName.length}`, this);
|
|
359
|
+
}
|
|
360
|
+
if (!/^[a-zA-Z0-9-]+$/.test(props.flowOutputName)) {
|
|
361
|
+
throw new aws_cdk_lib_1.ValidationError((0, helpers_internal_1.lit) `FlowOutputNameFormat`, `Flow output name must contain only alphanumeric characters and hyphens, got '${props.flowOutputName}'`, this);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
// Enhanced CDK Analytics Telemetry
|
|
365
|
+
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
366
|
+
const outputConfig = props.output._bind();
|
|
367
|
+
// Warn on fully-open CIDR allow lists.
|
|
368
|
+
if (outputConfig.cidrAllowList !== undefined && !aws_cdk_lib_1.Token.isUnresolved(outputConfig.cidrAllowList)) {
|
|
369
|
+
for (const cidr of outputConfig.cidrAllowList) {
|
|
370
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(cidr) && (0, shared_1.isOpenCidr)(cidr)) {
|
|
371
|
+
aws_cdk_lib_1.Annotations.of(this).addWarningV2('@aws-cdk/aws-mediaconnect-alpha:openOutputCidr', `Output CIDR allow list '${cidr}' allows pull requests from any IP. Restrict to the narrowest range your consumers need.`);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
const { staticKeyEncryption, srtPasswordEncryption, routerIntegrationTransitEncryption, ...cfnOutputConfig } = outputConfig;
|
|
376
|
+
const resource = new aws_mediaconnect_1.CfnFlowOutput(this, 'Resource', {
|
|
377
|
+
...cfnOutputConfig,
|
|
378
|
+
encryption: renderOutputEncryption(this, staticKeyEncryption, srtPasswordEncryption, props.flow.flowArn),
|
|
379
|
+
name: this.physicalName,
|
|
380
|
+
flowArn: props.flow.flowArn,
|
|
381
|
+
description: props.description,
|
|
382
|
+
outputStatus: props.outputStatus,
|
|
383
|
+
routerIntegrationTransitEncryption: outputConfig.routerIntegrationState === shared_1.State.ENABLED
|
|
384
|
+
? (0, shared_1.renderTransitEncryption)(this, 'RouterTransitEncryptionRole', routerIntegrationTransitEncryption, props.flow.flowArn)
|
|
385
|
+
: undefined,
|
|
386
|
+
});
|
|
387
|
+
this.flowOutputArn = resource.attrOutputArn;
|
|
388
|
+
}
|
|
389
|
+
static {
|
|
390
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
return FlowOutput = _classThis;
|
|
394
|
+
})();
|
|
395
|
+
exports.FlowOutput = FlowOutput;
|
|
396
|
+
/**
|
|
397
|
+
* Resolve the output's key-based encryption (either static-key or SRT-password) to its
|
|
398
|
+
* CFN shape. At most one of the two encryption fields is set on a given output.
|
|
399
|
+
*/
|
|
400
|
+
function renderOutputEncryption(scope, staticKey, srtPassword, sourceArn) {
|
|
401
|
+
if (staticKey)
|
|
402
|
+
return (0, shared_1.renderStaticKeyEncryption)(scope, staticKey, sourceArn);
|
|
403
|
+
if (srtPassword)
|
|
404
|
+
return (0, shared_1.renderSrtPasswordEncryption)(scope, srtPassword, sourceArn);
|
|
405
|
+
return undefined;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Helper function to parse VPC interface attachment from L2 type to L1 property.
|
|
409
|
+
*/
|
|
410
|
+
function parseVpcInterfaceAttachment(vpcInterface) {
|
|
411
|
+
if (!vpcInterface)
|
|
412
|
+
return undefined;
|
|
413
|
+
return { vpcInterfaceName: vpcInterface.name };
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1vdXRwdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmbG93LW91dHB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw2Q0FBa0g7QUFDbEgsbUVBQTZEO0FBRTdELDRFQUE0RDtBQUM1RCw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBSTFFLHFDQUE4SDtBQW9EOUg7O0dBRUc7QUFDSCxJQUFLLGtCQWlDSjtBQWpDRCxXQUFLLGtCQUFrQjtJQUNyQjs7T0FFRztJQUNILDZDQUFxQixDQUFBO0lBQ3JCOztPQUVHO0lBQ0gseUNBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCxpQ0FBUyxDQUFBO0lBQ1Q7O09BRUc7SUFDSCw2Q0FBcUIsQ0FBQTtJQUNyQjs7T0FFRztJQUNILG1DQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILG1EQUEyQixDQUFBO0lBQzNCOztPQUVHO0lBQ0gsK0NBQXVCLENBQUE7SUFDdkI7O09BRUc7SUFDSCwwQ0FBa0IsQ0FBQTtBQUNwQixDQUFDLEVBakNJLGtCQUFrQixLQUFsQixrQkFBa0IsUUFpQ3RCO0FBNlBEOztHQUVHO0FBQ0gsTUFBYSxtQkFBbUI7SUFxSU87O0lBcElyQzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBMkI7Ozs7Ozs7Ozs7UUFDOUMsT0FBTyxJQUFJLG1CQUFtQixDQUFDO1lBQzdCLHNCQUFzQixFQUFFLGNBQUssQ0FBQyxPQUFPO1lBQ3JDLGtDQUFrQyxFQUFFLEtBQUssRUFBRSxVQUFVO1NBQ3RELENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQXNCOzs7Ozs7Ozs7O1FBQ3RDLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQztZQUM3QixRQUFRLEVBQUUsa0JBQWtCLENBQUMsR0FBRztZQUNoQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsSUFBSSxF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V0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25GLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsMkJBQTJCLENBQUMsWUFBaUM7SUFDcEUsSUFBSSxDQUFDLFlBQVk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IER1cmF0aW9uLCBJUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBbm5vdGF0aW9ucywgTGF6eSwgTmFtZXMsIFJlc291cmNlLCBUb2tlbiwgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENmbkZsb3dPdXRwdXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbWVkaWFjb25uZWN0JztcbmltcG9ydCB0eXBlIHsgSUZsb3dPdXRwdXRSZWYsIEZsb3dPdXRwdXRSZWZlcmVuY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbWVkaWFjb25uZWN0JztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSUZsb3cgfSBmcm9tICcuL2Zsb3cnO1xuaW1wb3J0IHR5cGUgeyBTcnRQYXNzd29yZEVuY3J5cHRpb24sIFN0YXRpY0tleUVuY3J5cHRpb24sIFRyYW5zaXRFbmNyeXB0aW9uLCBWcGNJbnRlcmZhY2VDb25maWcgfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQgeyBTdGF0ZSwgaXNPcGVuQ2lkciwgcmVuZGVyU3J0UGFzc3dvcmRFbmNyeXB0aW9uLCByZW5kZXJTdGF0aWNLZXlFbmNyeXB0aW9uLCByZW5kZXJUcmFuc2l0RW5jcnlwdGlvbiB9IGZyb20gJy4vc2hhcmVkJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIEZsb3cgT3V0cHV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZsb3dPdXRwdXQgZXh0ZW5kcyBJUmVzb3VyY2UsIElGbG93T3V0cHV0UmVmIHtcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgZmxvdyBvdXRwdXQuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGZsb3dPdXRwdXRBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBmbG93IG91dHB1dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dPdXRwdXRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3V0cHV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG8tZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBmbG93T3V0cHV0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgb3V0cHV0LlxuICAgKlxuICAgKiBUaGlzIGRlc2NyaXB0aW9uIGFwcGVhcnMgb25seSBvbiB0aGUgTWVkaWFDb25uZWN0IGNvbnNvbGUgYW5kIHdpbGwgbm90IGJlIHNlZW4gYnkgdGhlIGVuZCB1c2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHRoZSBvdXRwdXQgc2hvdWxkIHRyYW5zbWl0IGRhdGEgb3Igbm90LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZDsgd2hlbiBvbWl0dGVkLCBNZWRpYUNvbm5lY3QgZW5hYmxlcyB0aGUgb3V0cHV0IChFTkFCTEVEKSBhdCBkZXBsb3kgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0U3RhdHVzPzogU3RhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBmbG93IHRoaXMgb3V0cHV0IGlzIGF0dGFjaGVkIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgZmxvdzogSUZsb3c7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBvdXRwdXQ6IE91dHB1dENvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogRmxvdyBvdXRwdXQgcHJvdG9jb2wgb3B0aW9ucy5cbiAqL1xuZW51bSBGbG93T3V0cHV0UHJvdG9jb2wge1xuICAvKipcbiAgICogWklYSV9QVVNIIG9wdGlvblxuICAgKi9cbiAgWklYSV9QVVNIPSd6aXhpLXB1c2gnLFxuICAvKipcbiAgICogUlRQX0ZFQyBvcHRpb25cbiAgICovXG4gIFJUUF9GRUM9J3J0cC1mZWMnLFxuICAvKipcbiAgICogUlRQIG9wdGlvblxuICAgKi9cbiAgUlRQPSdydHAnLFxuICAvKipcbiAgICogWklYSV9QVUxMIG9wdGlvblxuICAgKi9cbiAgWklYSV9QVUxMPSd6aXhpLXB1bGwnLFxuICAvKipcbiAgICogUklTVCBvcHRpb25cbiAgICovXG4gIFJJU1Q9J3Jpc3QnLFxuICAvKipcbiAgICogU1JUX0xJU1RFTkVSIG9wdGlvblxuICAgKi9cbiAgU1JUX0xJU1RFTkVSPSdzcnQtbGlzdGVuZXInLFxuICAvKipcbiAgICogU1JUX0NBTExFUiBvcHRpb25cbiAgICovXG4gIFNSVF9DQUxMRVI9J3NydC1jYWxsZXInLFxuICAvKipcbiAgICogTkRJIG9wdGlvblxuICAgKi9cbiAgTkRJPSduZGktc3BlZWQtaHEnLFxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgUlRQIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnRwT3V0cHV0Q29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBzbW9vdGhpbmcgbGF0ZW5jeSBmb3IgUklTVCwgUlRQLCBhbmQgUlRQLUZFQyBzdHJlYW1zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNtb290aGluZyBsYXRlbmN5XG4gICAqL1xuICByZWFkb25seSBzbW9vdGhpbmdMYXRlbmN5PzogRHVyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgSVAgYWRkcmVzcyB3aGVyZSB5b3Ugd2FudCB0byBzZW5kIHRoZSBvdXRwdXQuXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBvcnQgdG8gdXNlIHdoZW4gY29udGVudCBpcyBkaXN0cmlidXRlZCB0byB0aGlzIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBWUEMgaW50ZXJmYWNlIGF0dGFjaG1lbnQgdG8gdXNlIGZvciB0aGlzIG91dHB1dC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBWUEMgaW50ZXJmYWNlIGF0dGFjaG1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHZwY0ludGVyZmFjZUF0dGFjaG1lbnQ/OiBWcGNJbnRlcmZhY2VDb25maWc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBSVFAtRkVDIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnRwRmVjT3V0cHV0Q29uZmlnIGV4dGVuZHMgUnRwT3V0cHV0Q29uZmlnIHsgfVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFJJU1Qgb3V0cHV0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSaXN0T3V0cHV0Q29uZmlnIGV4dGVuZHMgUnRwT3V0cHV0Q29uZmlnIHsgfVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgWml4aSBQdWxsIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgWml4aVB1bGxPdXRwdXRDb25maWcge1xuICAvKipcbiAgICogVGhlIHN0cmVhbSBJRCB0aGF0IHlvdSB3YW50IHRvIHVzZSBmb3IgdGhpcyB0cmFuc3BvcnQuXG4gICAqL1xuICByZWFkb25seSBzdHJlYW1JZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlbW90ZSBJRCBmb3IgdGhlIFppeGktcHVsbCBzdHJlYW0uXG4gICAqL1xuICByZWFkb25seSByZW1vdGVJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbGF0ZW5jeSBmb3IgWml4aS1iYXNlZCBzdHJlYW1zLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4TGF0ZW5jeTogRHVyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgcmFuZ2Ugb2YgSVAgYWRkcmVzc2VzIHRoYXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gaW5pdGlhdGUgb3V0cHV0IHJlcXVlc3RzIHRvIHRoaXMgZmxvdy5cbiAgICogVGhlc2UgSVAgYWRkcmVzc2VzIHNob3VsZCBiZSBpbiB0aGUgZm9ybSBvZiBhIENsYXNzbGVzcyBJbnRlci1Eb21haW4gUm91dGluZyAoQ0lEUikgYmxvY2s7IGZvciBleGFtcGxlLCAxMC4wLjAuMC8xNi5cbiAgICpcbiAgICogUmVxdWlyZWQgYnkgdGhlIE1lZGlhQ29ubmVjdCBzZXJ2aWNlIGZvciBaaXhpIFB1bGwgb3V0cHV0cy5cbiAgICovXG4gIHJlYWRvbmx5IGNpZHJBbGxvd0xpc3Q6IHN0cmluZ1tdO1xuICAvKipcbiAgICogU3RhdGljIGtleSBlbmNyeXB0aW9uIGZvciB0aGlzIG91dHB1dC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbmNyeXB0aW9uXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uPzogU3RhdGljS2V5RW5jcnlwdGlvbjtcbiAgLyoqXG4gICAqIFRoZSBWUEMgaW50ZXJmYWNlIGF0dGFjaG1lbnQgdG8gdXNlIGZvciB0aGlzIG91dHB1dC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBWUEMgaW50ZXJmYWNlIGF0dGFjaG1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHZwY0ludGVyZmFjZUF0dGFjaG1lbnQ/OiBWcGNJbnRlcmZhY2VDb25maWc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBaaXhpIFB1c2ggb3V0cHV0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBaaXhpUHVzaE91dHB1dENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgc3RyZWFtIElEIHRoYXQgeW91IHdhbnQgdG8gdXNlIGZvciB0aGlzIHRyYW5zcG9ydC5cbiAgICovXG4gIHJlYWRvbmx5IHN0cmVhbUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBsYXRlbmN5IGZvciBaaXhpLWJhc2VkIHN0cmVhbXMuXG4gICAqL1xuICByZWFkb25seSBtYXhMYXRlbmN5OiBEdXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoZSByYW5nZSBvZiBJUCBhZGRyZXNzZXMgdGhhdCBzaG91bGQgYmUgYWxsb3dlZCB0byBpbml0aWF0ZSBvdXRwdXQgcmVxdWVzdHMgdG8gdGhpcyBmbG93LlxuICAgKiBUaGVzZSBJUCBhZGRyZXNzZXMgc2hvdWxkIGJlIGluIHRoZSBmb3JtIG9mIGEgQ2xhc3NsZXNzIEludGVyLURvbWFpbiBSb3V0aW5nIChDSURSKSBibG9jazsgZm9yIGV4YW1wbGUsIDEwLjAuMC4wLzE2LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYWxsb3cgbGlzdFxuICAgKi9cbiAgcmVhZG9ubHkgY2lkckFsbG93TGlzdD86IHN0cmluZ1tdO1xuICAvKipcbiAgICogU3RhdGljIGtleSBlbmNyeXB0aW9uIGZvciB0aGlzIG91dHB1dC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbmNyeXB0aW9uXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uPzogU3RhdGljS2V5RW5jcnlwdGlvbjtcbiAgLyoqXG4gICAqIFRoZSBJUCBhZGRyZXNzIHdoZXJlIHlvdSB3YW50IHRvIHNlbmQgdGhlIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcG9ydCB0byB1c2Ugd2hlbiBjb250ZW50IGlzIGRpc3RyaWJ1dGVkIHRvIHRoaXMgb3V0cHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIFZQQyBpbnRlcmZhY2UgYXR0YWNobWVudCB0byB1c2UgZm9yIHRoaXMgb3V0cHV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFZQQyBpbnRlcmZhY2UgYXR0YWNobWVudFxuICAgKi9cbiAgcmVhZG9ubHkgdnBjSW50ZXJmYWNlQXR0YWNobWVudD86IFZwY0ludGVyZmFjZUNvbmZpZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFNSVCBDYWxsZXIgb3V0cHV0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcnRDYWxsZXJPdXRwdXRDb25maWcge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbGF0ZW5jeSBpbiBtaWxsaXNlY29uZHMgZm9yIFNSVC1iYXNlZCBzdHJlYW1zLiBUaGUgdmFsdWUgeW91IHNldCBvbiB5b3VyXG4gICAqIE1lZGlhQ29ubmVjdCBvdXRwdXQgcmVwcmVzZW50cyB0aGUgbWluaW1hbCBwb3RlbnRpYWwgbGF0ZW5jeSBvZiB0aGF0IGNvbm5lY3Rpb24uIFRoZVxuICAgKiBsYXRlbmN5IG9mIHRoZSBzdHJlYW0gaXMgc2V0IHRvIHRoZSBoaWdoZXIgb2YgdGhlIHNlbmRlcidzIG1pbmltdW0gbGF0ZW5jeSBhbmQgdGhlXG4gICAqIHJlY2VpdmVyJ3MgbWluaW11bSBsYXRlbmN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG1pbmltdW0gbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgbWluTGF0ZW5jeT86IER1cmF0aW9uO1xuICAvKipcbiAgICogVGhlIHN0cmVhbSBJRCB0aGF0IHlvdSB3YW50IHRvIHVzZSBmb3IgdGhpcyB0cmFuc3BvcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3RyZWFtIElEXG4gICAqL1xuICByZWFkb25seSBzdHJlYW1JZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBJUCBhZGRyZXNzIHdoZXJlIHlvdSB3YW50IHRvIHNlbmQgdGhlIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcG9ydCB0byB1c2Ugd2hlbiBjb250ZW50IGlzIGRpc3RyaWJ1dGVkIHRvIHRoaXMgb3V0cHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogU1JUIHBhc3N3b3JkIGVuY3J5cHRpb24gZm9yIHRoaXMgb3V0cHV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb24/OiBTcnRQYXNzd29yZEVuY3J5cHRpb247XG4gIC8qKlxuICAgKiBUaGUgVlBDIGludGVyZmFjZSBhdHRhY2htZW50IHRvIHVzZSBmb3IgdGhpcyBvdXRwdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gVlBDIGludGVyZmFjZSBhdHRhY2htZW50XG4gICAqL1xuICByZWFkb25seSB2cGNJbnRlcmZhY2VBdHRhY2htZW50PzogVnBjSW50ZXJmYWNlQ29uZmlnO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgU1JUIExpc3RlbmVyIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3J0TGlzdGVuZXJPdXRwdXRDb25maWcge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbGF0ZW5jeSBpbiBtaWxsaXNlY29uZHMgZm9yIFNSVC1iYXNlZCBzdHJlYW1zLiBUaGUgdmFsdWUgeW91IHNldCBvbiB5b3VyXG4gICAqIE1lZGlhQ29ubmVjdCBvdXRwdXQgcmVwcmVzZW50cyB0aGUgbWluaW1hbCBwb3RlbnRpYWwgbGF0ZW5jeSBvZiB0aGF0IGNvbm5lY3Rpb24uIFRoZVxuICAgKiBsYXRlbmN5IG9mIHRoZSBzdHJlYW0gaXMgc2V0IHRvIHRoZSBoaWdoZXIgb2YgdGhlIHNlbmRlcidzIG1pbmltdW0gbGF0ZW5jeSBhbmQgdGhlXG4gICAqIHJlY2VpdmVyJ3MgbWluaW11bSBsYXRlbmN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG1pbmltdW0gbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgbWluTGF0ZW5jeT86IER1cmF0aW9uO1xuICAvKipcbiAgICogVGhlIHBvcnQgdG8gdXNlIHdoZW4gY29udGVudCBpcyBkaXN0cmlidXRlZCB0byB0aGlzIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSByYW5nZSBvZiBJUCBhZGRyZXNzZXMgdGhhdCBzaG91bGQgYmUgYWxsb3dlZCB0byBpbml0aWF0ZSBvdXRwdXQgcmVxdWVzdHMgdG8gdGhpcyBmbG93LlxuICAgKiBUaGVzZSBJUCBhZGRyZXNzZXMgc2hvdWxkIGJlIGluIHRoZSBmb3JtIG9mIGEgQ2xhc3NsZXNzIEludGVyLURvbWFpbiBSb3V0aW5nIChDSURSKSBibG9jazsgZm9yIGV4YW1wbGUsIDEwLjAuMC4wLzE2LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYWxsb3cgbGlzdFxuICAgKi9cbiAgcmVhZG9ubHkgY2lkckFsbG93TGlzdD86IHN0cmluZ1tdO1xuICAvKipcbiAgICogU1JUIHBhc3N3b3JkIGVuY3J5cHRpb24gZm9yIHRoaXMgb3V0cHV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb24/OiBTcnRQYXNzd29yZEVuY3J5cHRpb247XG4gIC8qKlxuICAgKiBUaGUgVlBDIGludGVyZmFjZSBhdHRhY2htZW50IHRvIHVzZSBmb3IgdGhpcyBvdXRwdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gVlBDIGludGVyZmFjZSBhdHRhY2htZW50XG4gICAqL1xuICByZWFkb25seSB2cGNJbnRlcmZhY2VBdHRhY2htZW50PzogVnBjSW50ZXJmYWNlQ29uZmlnO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgTkRJIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmRpT3V0cHV0Q29uZmlnIHtcbiAgLyoqXG4gICAqIEEgc3VmZml4IGZvciB0aGUgbmFtZXMgb2YgdGhlIE5ESSBzb3VyY2VzIHRoYXQgdGhlIGZsb3cgY3JlYXRlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgb3V0cHV0IG5hbWUgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbmRpUHJvZ3JhbU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHF1YWxpdHkgc2V0dGluZyBmb3IgdGhlIE5ESSBTcGVlZCBIUSBlbmNvZGVyLCBleHByZXNzZWQgYXMgYSBwZXJjZW50YWdlLlxuICAgKlxuICAgKiBWYWxpZCByYW5nZTogMTAwLTIwMC4gSGlnaGVyIHZhbHVlcyBwcm9kdWNlIGhpZ2hlciBxdWFsaXR5IGFuZCBsYXJnZXIgYml0cmF0ZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL2Fib3V0LWF3cy93aGF0cy1uZXcvMjAyNS8wMy9hd3MtZWxlbWVudGFsLW1lZGlhY29ubmVjdC1zdXBwb3J0LW5kaS1vdXRwdXRzL1xuICAgKiBAZGVmYXVsdCAtIHRoZSBNZWRpYUNvbm5lY3Qgc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBuZGlTcGVlZEhxUXVhbGl0eT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBmbG93IG91dHB1dCBjb25maWd1cmF0aW9uLiBDRk4tYm91bmQgZmllbGRzIHVzZSBMMSBwcm9wZXJ0eSB0eXBlczsgZW5jcnlwdGlvblxuICogZmllbGRzIGFyZSBrZXB0IGFzIEwyIGNsYXNzZXMgKHJlc29sdmVkIHRvIENGTiBzaGFwZSBpbiB0aGUgRmxvd091dHB1dCBjb25zdHJ1Y3RvcikuXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIEZsb3dPdXRwdXRDb25maWcge1xuICByZWFkb25seSBjaWRyQWxsb3dMaXN0Pzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uPzogc3RyaW5nO1xuICAvKiogU3RhdGljLWtleSBlbmNyeXB0aW9uIGZvciBaaXhpIFB1bGwgb3V0cHV0cy4gU2V0IGF0IG1vc3Qgb25lIG9mIHRoZXNlIHR3byBmaWVsZHMuICovXG4gIHJlYWRvbmx5IHN0YXRpY0tleUVuY3J5cHRpb24/OiBTdGF0aWNLZXlFbmNyeXB0aW9uO1xuICAvKiogU1JULXBhc3N3b3JkIGVuY3J5cHRpb24gZm9yIFNSVCBvdXRwdXRzLiBTZXQgYXQgbW9zdCBvbmUgb2YgdGhlc2UgdHdvIGZpZWxkcy4gKi9cbiAgcmVhZG9ubHkgc3J0UGFzc3dvcmRFbmNyeXB0aW9uPzogU3J0UGFzc3dvcmRFbmNyeXB0aW9uO1xuICByZWFkb25seSBtYXhMYXRlbmN5PzogbnVtYmVyO1xuICByZWFkb25seSBtaW5MYXRlbmN5PzogbnVtYmVyO1xuICByZWFkb25seSBuZGlQcm9ncmFtTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbmRpU3BlZWRIcVF1YWxpdHk/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHByb3RvY29sPzogc3RyaW5nO1xuICByZWFkb25seSByZW1vdGVJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgc21vb3RoaW5nTGF0ZW5jeT86IG51bWJlcjtcbiAgcmVhZG9ubHkgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZwY0ludGVyZmFjZUF0dGFjaG1lbnQ/OiBDZm5GbG93T3V0cHV0LlZwY0ludGVyZmFjZUF0dGFjaG1lbnRQcm9wZXJ0eTtcbiAgcmVhZG9ubHkgcm91dGVySW50ZWdyYXRpb25TdGF0ZT86IFN0YXRlO1xuICByZWFkb25seSByb3V0ZXJJbnRlZ3JhdGlvblRyYW5zaXRFbmNyeXB0aW9uPzogVHJhbnNpdEVuY3J5cHRpb247XG59XG5cbi8qKlxuICogT3V0cHV0IGNvbmZpZ3VyYXRpb24gdG8gUm91dGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVyVHJhbnNpdENvbmZpZyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciBlbmNyeXB0aW9uIGlzIHRvIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb24/OiBUcmFuc2l0RW5jcnlwdGlvbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZGVmaW5lIGEgRmxvd091dHB1dCBieSBwcm90b2NvbC5cbiAqL1xuZXhwb3J0IGNsYXNzIE91dHB1dENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBjb25maWd1cmF0aW9uIGZvciBmbG93cyByZWNlaXZpbmcgYSBzdHJlYW0gZnJvbSByb3V0ZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJvdXRlcihpbnB1dD86IFJvdXRlclRyYW5zaXRDb25maWcpOiBPdXRwdXRDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gbmV3IE91dHB1dENvbmZpZ3VyYXRpb24oe1xuICAgICAgcm91dGVySW50ZWdyYXRpb25TdGF0ZTogU3RhdGUuRU5BQkxFRCxcbiAgICAgIHJvdXRlckludGVncmF0aW9uVHJhbnNpdEVuY3J5cHRpb246IGlucHV0Py5lbmNyeXB0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBmb3IgUlRQIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcnRwKGlucHV0OiBSdHBPdXRwdXRDb25maWcpOiBPdXRwdXRDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gbmV3IE91dHB1dENvbmZpZ3VyYXRpb24oe1xuICAgICAgcHJvdG9jb2w6IEZsb3dPdXRwdXRQcm90b2NvbC5SVFAsXG4gICAgICBkZXN0aW5hdGlvbjogaW5wdXQuZGVzdGluYXRpb24sXG4gICAgICBwb3J0OiBpbnB1dC5wb3J0LFxuICAgICAgc21vb3RoaW5nTGF0ZW5jeTogaW5wdXQuc21vb3RoaW5nTGF0ZW5jeT8udG9NaWxsaXNlY29uZHMoKSxcbiAgICAgIHZwY0ludGVyZmFjZUF0dGFjaG1lbnQ6IHBhcnNlVnBjSW50ZXJmYWNlQXR0YWNobWVudChpbnB1dC52cGNJbnRlcmZhY2VBdHRhY2htZW50KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcHRpb24gZm9yIFJUUC1GRUMgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBydHBGZWMoaW5wdXQ6IFJ0cEZlY091dHB1dENvbmZpZyk6IE91dHB1dENvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBuZXcgT3V0cHV0Q29uZmlndXJhdGlvbih7XG4gICAgICBwcm90b2NvbDogRmxvd091dHB1dFByb3RvY29sLlJUUF9GRUMsXG4gICAgICBkZXN0aW5hdGlvbjogaW5wdXQuZGVzdGluYXRpb24sXG4gICAgICBwb3J0OiBpbnB1dC5wb3J0LFxuICAgICAgc21vb3RoaW5nTGF0ZW5jeTogaW5wdXQuc21vb3RoaW5nTGF0ZW5jeT8udG9NaWxsaXNlY29uZHMoKSxcbiAgICAgIHZwY0ludGVyZmFjZUF0dGFjaG1lbnQ6IHBhcnNlVnBjSW50ZXJmYWNlQXR0YWNobWVudChpbnB1dC52cGNJbnRlcmZhY2VBdHRhY2htZW50KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcHRpb24gZm9yIFJJU1QgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByaXN0KGlucHV0OiBSaXN0T3V0cHV0Q29uZmlnKTogT3V0cHV0Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBPdXRwdXRDb25maWd1cmF0aW9uKHtcbiAgICAgIHByb3RvY29sOiBGbG93T3V0cHV0UHJvdG9jb2wuUklTVCxcbiAgICAgIGRlc3RpbmF0aW9uOiBpbnB1dC5kZXN0aW5hdGlvbixcbiAgICAgIHBvcnQ6IGlucHV0LnBvcnQsXG4gICAgICBzbW9vdGhpbmdMYXRlbmN5OiBpbnB1dC5zbW9vdGhpbmdMYXRlbmN5Py50b01pbGxpc2Vjb25kcygpLFxuICAgICAgdnBjSW50ZXJmYWNlQXR0YWNobWVudDogcGFyc2VWcGNJbnRlcmZhY2VBdHRhY2htZW50KGlucHV0LnZwY0ludGVyZmFjZUF0dGFjaG1lbnQpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBmb3IgWml4aSBQdXNoIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgeml4aVB1c2goaW5wdXQ6IFppeGlQdXNoT3V0cHV0Q29uZmlnKTogT3V0cHV0Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBPdXRwdXRDb25maWd1cmF0aW9uKHtcbiAgICAgIHByb3RvY29sOiBGbG93T3V0cHV0UHJvdG9jb2wuWklYSV9QVVNILFxuICAgICAgZGVzdGluYXRpb246IGlucHV0LmRlc3RpbmF0aW9uLFxuICAgICAgcG9ydDogaW5wdXQucG9ydCxcbiAgICAgIHN0cmVhbUlkOiBpbnB1dC5zdHJlYW1JZCxcbiAgICAgIG1heExhdGVuY3k6IGlucHV0Lm1heExhdGVuY3kudG9NaWxsaXNlY29uZHMoKSxcbiAgICAgIGNpZHJBbGxvd0xpc3Q6IGlucHV0LmNpZHJBbGxvd0xpc3QsXG4gICAgICBzdGF0aWNLZXlFbmNyeXB0aW9uOiBpbnB1dC5lbmNyeXB0aW9uLFxuICAgICAgdnBjSW50ZXJmYWNlQXR0YWNobWVudDogcGFyc2VWcGNJbnRlcmZhY2VBdHRhY2htZW50KGlucHV0LnZwY0ludGVyZmFjZUF0dGFjaG1lbnQpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBmb3IgWml4aSBQdWxsIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgeml4aVB1bGwoaW5wdXQ6IFppeGlQdWxsT3V0cHV0Q29uZmlnKTogT3V0cHV0Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBPdXRwdXRDb25maWd1cmF0aW9uKHtcbiAgICAgIHByb3RvY29sOiBGbG93T3V0cHV0UHJvdG9jb2wuWklYSV9QVUxMLFxuICAgICAgc3RyZWFtSWQ6IGlucHV0LnN0cmVhbUlkLFxuICAgICAgcmVtb3RlSWQ6IGlucHV0LnJlbW90ZUlkLFxuICAgICAgbWF4TGF0ZW5jeTogaW5wdXQubWF4TGF0ZW5jeS50b01pbGxpc2Vjb25kcygpLFxuICAgICAgY2lkckFsbG93TGlzdDogaW5wdXQuY2lkckFsbG93TGlzdCxcbiAgICAgIHN0YXRpY0tleUVuY3J5cHRpb246IGlucHV0LmVuY3J5cHRpb24sXG4gICAgICB2cGNJbnRlcmZhY2VBdHRhY2htZW50OiBwYXJzZVZwY0ludGVyZmFjZUF0dGFjaG1lbnQoaW5wdXQudnBjSW50ZXJmYWNlQXR0YWNobWVudCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3B0aW9uIGZvciBTUlQgQ2FsbGVyIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3J0Q2FsbGVyKGlucHV0OiBTcnRDYWxsZXJPdXRwdXRDb25maWcpOiBPdXRwdXRDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gbmV3IE91dHB1dENvbmZpZ3VyYXRpb24oe1xuICAgICAgcHJvdG9jb2w6IEZsb3dPdXRwdXRQcm90b2NvbC5TUlRfQ0FMTEVSLFxuICAgICAgZGVzdGluYXRpb246IGlucHV0LmRlc3RpbmF0aW9uLFxuICAgICAgcG9ydDogaW5wdXQucG9ydCxcbiAgICAgIG1pbkxhdGVuY3k6IGlucHV0Lm1pbkxhdGVuY3k/LnRvTWlsbGlzZWNvbmRzKCksXG4gICAgICBzdHJlYW1JZDogaW5wdXQuc3RyZWFtSWQsXG4gICAgICBzcnRQYXNzd29yZEVuY3J5cHRpb246IGlucHV0LmVuY3J5cHRpb24sXG4gICAgICB2cGNJbnRlcmZhY2VBdHRhY2htZW50OiBwYXJzZVZwY0ludGVyZmFjZUF0dGFjaG1lbnQoaW5wdXQudnBjSW50ZXJmYWNlQXR0YWNobWVudCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3B0aW9uIGZvciBTUlQgTGlzdGVuZXIgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzcnRMaXN0ZW5lcihpbnB1dDogU3J0TGlzdGVuZXJPdXRwdXRDb25maWcpOiBPdXRwdXRDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gbmV3IE91dHB1dENvbmZpZ3VyYXRpb24oe1xuICAgICAgcHJvdG9jb2w6IEZsb3dPdXRwdXRQcm90b2NvbC5TUlRfTElTVEVORVIsXG4gICAgICBwb3J0OiBpbnB1dC5wb3J0LFxuICAgICAgbWluTGF0ZW5jeTogaW5wdXQubWluTGF0ZW5jeT8udG9NaWxsaXNlY29uZHMoKSxcbiAgICAgIGNpZHJBbGxvd0xpc3Q6IGlucHV0LmNpZHJBbGxvd0xpc3QsXG4gICAgICBzcnRQYXNzd29yZEVuY3J5cHRpb246IGlucHV0LmVuY3J5cHRpb24sXG4gICAgICB2cGNJbnRlcmZhY2VBdHRhY2htZW50OiBwYXJzZVZwY0ludGVyZmFjZUF0dGFjaG1lbnQoaW5wdXQudnBjSW50ZXJmYWNlQXR0YWNobWVudCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3B0aW9uIGZvciBOREkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBuZGkoaW5wdXQ6IE5kaU91dHB1dENvbmZpZyA9IHt9KTogT3V0cHV0Q29uZmlndXJhdGlvbiB7XG4gICAgaWYgKGlucHV0Lm5kaVNwZWVkSHFRdWFsaXR5ICE9PSB1bmRlZmluZWRcbiAgICAgICYmICFUb2tlbi5pc1VucmVzb2x2ZWQoaW5wdXQubmRpU3BlZWRIcVF1YWxpdHkpXG4gICAgICAmJiAoaW5wdXQubmRpU3BlZWRIcVF1YWxpdHkgPCAxMDAgfHwgaW5wdXQubmRpU3BlZWRIcVF1YWxpdHkgPiAyMDApKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGxpdGBOZGlTcGVlZEhxUXVhbGl0eVJhbmdlYCxcbiAgICAgICAgYE5ESSBTcGVlZCBIUSBxdWFsaXR5IG11c3QgYmUgYmV0d2VlbiAxMDAgYW5kIDIwMCwgZ290ICR7aW5wdXQubmRpU3BlZWRIcVF1YWxpdHl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPdXRwdXRDb25maWd1cmF0aW9uKHtcbiAgICAgIHByb3RvY29sOiBGbG93T3V0cHV0UHJvdG9jb2wuTkRJLFxuICAgICAgbmRpUHJvZ3JhbU5hbWU6IGlucHV0Lm5kaVByb2dyYW1OYW1lLFxuICAgICAgbmRpU3BlZWRIcVF1YWxpdHk6IGlucHV0Lm5kaVNwZWVkSHFRdWFsaXR5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvdXRwdXQgLSBDb25maWd1cmF0aW9uIGZvciBvdXRwdXRzIGluIG91dHB1dFxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXQ6IEZsb3dPdXRwdXRDb25maWcpIHsgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgb3V0cHV0IGNvbmZpZ3VyYXRpb24gaXMgYm91bmQgdG8gYSBGbG93T3V0cHV0LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYmluZCgpOiBGbG93T3V0cHV0Q29uZmlnIHtcbiAgICByZXR1cm4geyAuLi50aGlzLl9vdXRwdXQgfTtcbiAgfVxufVxuXG4vKipcbiAqIFNoYXJlZCBiYXNlIGZvciBib3RoIHJlYWwgYW5kIGltcG9ydGVkIGZsb3cgb3V0cHV0cy5cbiAqIEBpbnRlcm5hbFxuICovXG5hYnN0cmFjdCBjbGFzcyBGbG93T3V0cHV0QmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSUZsb3dPdXRwdXQge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZmxvd091dHB1dEFybjogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgZmxvd091dHB1dFJlZigpOiBGbG93T3V0cHV0UmVmZXJlbmNlIHtcbiAgICByZXR1cm4geyBvdXRwdXRBcm46IHRoaXMuZmxvd091dHB1dEFybiB9O1xuICB9XG59XG5cbi8qKlxuICogUmVzb3VyY2UgZGVmaW5lcyB0aGUgZGVzdGluYXRpb24gYWRkcmVzcywgcHJvdG9jb2wsIGFuZCBwb3J0IHRoYXRcbiAqIEFXUyBFbGVtZW50YWwgTWVkaWFDb25uZWN0IHNlbmRzIHRoZSBpbmdlc3RlZCB2aWRlbyB0by5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEZsb3dPdXRwdXQgZXh0ZW5kcyBGbG93T3V0cHV0QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLW1lZGlhY29ubmVjdC1hbHBoYS5GbG93T3V0cHV0JztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIEZsb3cgT3VwdXQgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCAoaW1wb3J0ZWQpIEZsb3cgT3V0cHV0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRmxvd091dHB1dEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBmbG93T3V0cHV0QXJuOiBzdHJpbmcpOiBJRmxvd091dHB1dCB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgRmxvd091dHB1dEJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGZsb3dPdXRwdXRBcm4gPSBmbG93T3V0cHV0QXJuO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZmxvd091dHB1dEFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGbG93T3V0cHV0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHM/LmZsb3dPdXRwdXROYW1lID8/IExhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiAxMjggfSkgfSksXG4gICAgfSk7XG5cbiAgICAvLyBWYWxpZGF0ZSBmbG93IG91dHB1dCBuYW1lIGlmIHByb3ZpZGVkXG4gICAgaWYgKHByb3BzLmZsb3dPdXRwdXROYW1lICE9IG51bGwgJiYgcHJvcHMuZmxvd091dHB1dE5hbWUgIT09ICcnICYmICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZmxvd091dHB1dE5hbWUpKSB7XG4gICAgICBpZiAocHJvcHMuZmxvd091dHB1dE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YEZsb3dPdXRwdXROYW1lTGVuZ3RoYCwgYEZsb3cgb3V0cHV0IG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEyOCBjaGFyYWN0ZXJzLCBnb3QgJHtwcm9wcy5mbG93T3V0cHV0TmFtZS5sZW5ndGh9YCwgdGhpcyk7XG4gICAgICB9XG4gICAgICBpZiAoIS9eW2EtekEtWjAtOS1dKyQvLnRlc3QocHJvcHMuZmxvd091dHB1dE5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YEZsb3dPdXRwdXROYW1lRm9ybWF0YCwgYEZsb3cgb3V0cHV0IG5hbWUgbXVzdCBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGh5cGhlbnMsIGdvdCAnJHtwcm9wcy5mbG93T3V0cHV0TmFtZX0nYCwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBjb25zdCBvdXRwdXRDb25maWcgPSBwcm9wcy5vdXRwdXQuX2JpbmQoKTtcblxuICAgIC8vIFdhcm4gb24gZnVsbHktb3BlbiBDSURSIGFsbG93IGxpc3RzLlxuICAgIGlmIChvdXRwdXRDb25maWcuY2lkckFsbG93TGlzdCAhPT0gdW5kZWZpbmVkICYmICFUb2tlbi5pc1VucmVzb2x2ZWQob3V0cHV0Q29uZmlnLmNpZHJBbGxvd0xpc3QpKSB7XG4gICAgICBmb3IgKGNvbnN0IGNpZHIgb2Ygb3V0cHV0Q29uZmlnLmNpZHJBbGxvd0xpc3QpIHtcbiAgICAgICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoY2lkcikgJiYgaXNPcGVuQ2lkcihjaWRyKSkge1xuICAgICAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMihcbiAgICAgICAgICAgICdAYXdzLWNkay9hd3MtbWVkaWFjb25uZWN0LWFscGhhOm9wZW5PdXRwdXRDaWRyJyxcbiAgICAgICAgICAgIGBPdXRwdXQgQ0lEUiBhbGxvdyBsaXN0ICcke2NpZHJ9JyBhbGxvd3MgcHVsbCByZXF1ZXN0cyBmcm9tIGFueSBJUC4gUmVzdHJpY3QgdG8gdGhlIG5hcnJvd2VzdCByYW5nZSB5b3VyIGNvbnN1bWVycyBuZWVkLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IHN0YXRpY0tleUVuY3J5cHRpb24sIHNydFBhc3N3b3JkRW5jcnlwdGlvbiwgcm91dGVySW50ZWdyYXRpb25UcmFuc2l0RW5jcnlwdGlvbiwgLi4uY2ZuT3V0cHV0Q29uZmlnIH0gPSBvdXRwdXRDb25maWc7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5GbG93T3V0cHV0KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIC4uLmNmbk91dHB1dENvbmZpZyxcbiAgICAgIGVuY3J5cHRpb246IHJlbmRlck91dHB1dEVuY3J5cHRpb24odGhpcywgc3RhdGljS2V5RW5jcnlwdGlvbiwgc3J0UGFzc3dvcmRFbmNyeXB0aW9uLCBwcm9wcy5mbG93LmZsb3dBcm4pLFxuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICBmbG93QXJuOiBwcm9wcy5mbG93LmZsb3dBcm4sXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBvdXRwdXRTdGF0dXM6IHByb3BzLm91dHB1dFN0YXR1cyxcbiAgICAgIHJvdXRlckludGVncmF0aW9uVHJhbnNpdEVuY3J5cHRpb246IG91dHB1dENvbmZpZy5yb3V0ZXJJbnRlZ3JhdGlvblN0YXRlID09PSBTdGF0ZS5FTkFCTEVEXG4gICAgICAgID8gcmVuZGVyVHJhbnNpdEVuY3J5cHRpb24odGhpcywgJ1JvdXRlclRyYW5zaXRFbmNyeXB0aW9uUm9sZScsIHJvdXRlckludGVncmF0aW9uVHJhbnNpdEVuY3J5cHRpb24sIHByb3BzLmZsb3cuZmxvd0FybilcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLmZsb3dPdXRwdXRBcm4gPSByZXNvdXJjZS5hdHRyT3V0cHV0QXJuO1xuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgb3V0cHV0J3Mga2V5LWJhc2VkIGVuY3J5cHRpb24gKGVpdGhlciBzdGF0aWMta2V5IG9yIFNSVC1wYXNzd29yZCkgdG8gaXRzXG4gKiBDRk4gc2hhcGUuIEF0IG1vc3Qgb25lIG9mIHRoZSB0d28gZW5jcnlwdGlvbiBmaWVsZHMgaXMgc2V0IG9uIGEgZ2l2ZW4gb3V0cHV0LlxuICovXG5mdW5jdGlvbiByZW5kZXJPdXRwdXRFbmNyeXB0aW9uKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBzdGF0aWNLZXk6IFN0YXRpY0tleUVuY3J5cHRpb24gfCB1bmRlZmluZWQsXG4gIHNydFBhc3N3b3JkOiBTcnRQYXNzd29yZEVuY3J5cHRpb24gfCB1bmRlZmluZWQsXG4gIHNvdXJjZUFybj86IHN0cmluZyxcbik6IENmbkZsb3dPdXRwdXQuRW5jcnlwdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgaWYgKHN0YXRpY0tleSkgcmV0dXJuIHJlbmRlclN0YXRpY0tleUVuY3J5cHRpb24oc2NvcGUsIHN0YXRpY0tleSwgc291cmNlQXJuKTtcbiAgaWYgKHNydFBhc3N3b3JkKSByZXR1cm4gcmVuZGVyU3J0UGFzc3dvcmRFbmNyeXB0aW9uKHNjb3BlLCBzcnRQYXNzd29yZCwgc291cmNlQXJuKTtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gcGFyc2UgVlBDIGludGVyZmFjZSBhdHRhY2htZW50IGZyb20gTDIgdHlwZSB0byBMMSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VWcGNJbnRlcmZhY2VBdHRhY2htZW50KHZwY0ludGVyZmFjZT86IFZwY0ludGVyZmFjZUNvbmZpZyk6IENmbkZsb3dPdXRwdXQuVnBjSW50ZXJmYWNlQXR0YWNobWVudFByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF2cGNJbnRlcmZhY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiB7IHZwY0ludGVyZmFjZU5hbWU6IHZwY0ludGVyZmFjZS5uYW1lIH07XG59XG5cbiJdfQ==
|