awscdk-construct-mediaconnect-flow 0.0.4 → 0.0.6

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 CHANGED
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "aws-cdk-lib": "^2.203.1",
11
- "awscdk-construct-medialive-channel": "^0.0.8",
11
+ "awscdk-construct-medialive-channel": "^0.0.9",
12
12
  "constructs": "^10.0.5"
13
13
  },
14
14
  "dependencyClosure": {
@@ -4116,6 +4116,22 @@
4116
4116
  "primitive": "number"
4117
4117
  }
4118
4118
  },
4119
+ {
4120
+ "abstract": true,
4121
+ "docs": {
4122
+ "stability": "stable"
4123
+ },
4124
+ "immutable": true,
4125
+ "locationInModule": {
4126
+ "filename": "src/LiveFeedFromFile.ts",
4127
+ "line": 35
4128
+ },
4129
+ "name": "height",
4130
+ "optional": true,
4131
+ "type": {
4132
+ "primitive": "number"
4133
+ }
4134
+ },
4119
4135
  {
4120
4136
  "abstract": true,
4121
4137
  "docs": {
@@ -4147,6 +4163,22 @@
4147
4163
  "type": {
4148
4164
  "primitive": "string"
4149
4165
  }
4166
+ },
4167
+ {
4168
+ "abstract": true,
4169
+ "docs": {
4170
+ "stability": "stable"
4171
+ },
4172
+ "immutable": true,
4173
+ "locationInModule": {
4174
+ "filename": "src/LiveFeedFromFile.ts",
4175
+ "line": 34
4176
+ },
4177
+ "name": "width",
4178
+ "optional": true,
4179
+ "type": {
4180
+ "primitive": "number"
4181
+ }
4150
4182
  }
4151
4183
  ],
4152
4184
  "symbolId": "src/LiveFeedFromFile:EncoderSettings"
@@ -4212,7 +4244,7 @@
4212
4244
  },
4213
4245
  "locationInModule": {
4214
4246
  "filename": "src/LiveFeedFromFile.ts",
4215
- "line": 52
4247
+ "line": 55
4216
4248
  },
4217
4249
  "parameters": [
4218
4250
  {
@@ -4238,7 +4270,7 @@
4238
4270
  "kind": "class",
4239
4271
  "locationInModule": {
4240
4272
  "filename": "src/LiveFeedFromFile.ts",
4241
- "line": 48
4273
+ "line": 50
4242
4274
  },
4243
4275
  "name": "LiveFeedFromFile",
4244
4276
  "properties": [
@@ -4249,7 +4281,7 @@
4249
4281
  "immutable": true,
4250
4282
  "locationInModule": {
4251
4283
  "filename": "src/LiveFeedFromFile.ts",
4252
- "line": 49
4284
+ "line": 51
4253
4285
  },
4254
4286
  "name": "flow",
4255
4287
  "type": {
@@ -4263,7 +4295,22 @@
4263
4295
  "immutable": true,
4264
4296
  "locationInModule": {
4265
4297
  "filename": "src/LiveFeedFromFile.ts",
4266
- "line": 50
4298
+ "line": 53
4299
+ },
4300
+ "name": "ndiDiscoveryServer",
4301
+ "optional": true,
4302
+ "type": {
4303
+ "fqn": "aws-cdk-lib.aws_ec2.Instance"
4304
+ }
4305
+ },
4306
+ {
4307
+ "docs": {
4308
+ "stability": "stable"
4309
+ },
4310
+ "immutable": true,
4311
+ "locationInModule": {
4312
+ "filename": "src/LiveFeedFromFile.ts",
4313
+ "line": 52
4267
4314
  },
4268
4315
  "name": "vpc",
4269
4316
  "optional": true,
@@ -4284,7 +4331,7 @@
4284
4331
  "kind": "interface",
4285
4332
  "locationInModule": {
4286
4333
  "filename": "src/LiveFeedFromFile.ts",
4287
- "line": 36
4334
+ "line": 38
4288
4335
  },
4289
4336
  "name": "LiveFeedFromFileProps",
4290
4337
  "properties": [
@@ -4296,7 +4343,7 @@
4296
4343
  "immutable": true,
4297
4344
  "locationInModule": {
4298
4345
  "filename": "src/LiveFeedFromFile.ts",
4299
- "line": 37
4346
+ "line": 39
4300
4347
  },
4301
4348
  "name": "file",
4302
4349
  "type": {
@@ -4311,7 +4358,7 @@
4311
4358
  "immutable": true,
4312
4359
  "locationInModule": {
4313
4360
  "filename": "src/LiveFeedFromFile.ts",
4314
- "line": 41
4361
+ "line": 43
4315
4362
  },
4316
4363
  "name": "autoStart",
4317
4364
  "optional": true,
@@ -4327,7 +4374,7 @@
4327
4374
  "immutable": true,
4328
4375
  "locationInModule": {
4329
4376
  "filename": "src/LiveFeedFromFile.ts",
4330
- "line": 38
4377
+ "line": 40
4331
4378
  },
4332
4379
  "name": "encoderSpec",
4333
4380
  "optional": true,
@@ -4343,7 +4390,7 @@
4343
4390
  "immutable": true,
4344
4391
  "locationInModule": {
4345
4392
  "filename": "src/LiveFeedFromFile.ts",
4346
- "line": 39
4393
+ "line": 41
4347
4394
  },
4348
4395
  "name": "source",
4349
4396
  "optional": true,
@@ -4359,7 +4406,7 @@
4359
4406
  "immutable": true,
4360
4407
  "locationInModule": {
4361
4408
  "filename": "src/LiveFeedFromFile.ts",
4362
- "line": 40
4409
+ "line": 42
4363
4410
  },
4364
4411
  "name": "vpcConfig",
4365
4412
  "optional": true,
@@ -4498,6 +4545,6 @@
4498
4545
  "symbolId": "src/LiveFeedFromFile:VpcConfig"
4499
4546
  }
4500
4547
  },
4501
- "version": "0.0.4",
4502
- "fingerprint": "mAR0N6FHJohdYRK7mHJbnhLcNWs/cTndsOfozPXBH68="
4548
+ "version": "0.0.6",
4549
+ "fingerprint": "OXI0IGq0nd+p3SGpjxhRRpgkGznJ0fV9jytilIyRWQo="
4503
4550
  }
package/API.md CHANGED
@@ -100,6 +100,7 @@ Any object.
100
100
  | --- | --- | --- |
101
101
  | <code><a href="#awscdk-construct-mediaconnect-flow.LiveFeedFromFile.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
102
102
  | <code><a href="#awscdk-construct-mediaconnect-flow.LiveFeedFromFile.property.flow">flow</a></code> | <code>aws-cdk-lib.aws_mediaconnect.CfnFlow</code> | *No description.* |
103
+ | <code><a href="#awscdk-construct-mediaconnect-flow.LiveFeedFromFile.property.ndiDiscoveryServer">ndiDiscoveryServer</a></code> | <code>aws-cdk-lib.aws_ec2.Instance</code> | *No description.* |
103
104
  | <code><a href="#awscdk-construct-mediaconnect-flow.LiveFeedFromFile.property.vpc">vpc</a></code> | <code>aws-cdk-lib.aws_ec2.IVpc</code> | *No description.* |
104
105
 
105
106
  ---
@@ -126,6 +127,16 @@ public readonly flow: CfnFlow;
126
127
 
127
128
  ---
128
129
 
130
+ ##### `ndiDiscoveryServer`<sup>Optional</sup> <a name="ndiDiscoveryServer" id="awscdk-construct-mediaconnect-flow.LiveFeedFromFile.property.ndiDiscoveryServer"></a>
131
+
132
+ ```typescript
133
+ public readonly ndiDiscoveryServer: Instance;
134
+ ```
135
+
136
+ - *Type:* aws-cdk-lib.aws_ec2.Instance
137
+
138
+ ---
139
+
129
140
  ##### `vpc`<sup>Optional</sup> <a name="vpc" id="awscdk-construct-mediaconnect-flow.LiveFeedFromFile.property.vpc"></a>
130
141
 
131
142
  ```typescript
@@ -156,8 +167,10 @@ const encoderSettings: EncoderSettings = { ... }
156
167
  | <code><a href="#awscdk-construct-mediaconnect-flow.EncoderSettings.property.framerateDenominator">framerateDenominator</a></code> | <code>number</code> | *No description.* |
157
168
  | <code><a href="#awscdk-construct-mediaconnect-flow.EncoderSettings.property.framerateNumerator">framerateNumerator</a></code> | <code>number</code> | *No description.* |
158
169
  | <code><a href="#awscdk-construct-mediaconnect-flow.EncoderSettings.property.gopLengthInSeconds">gopLengthInSeconds</a></code> | <code>number</code> | *No description.* |
170
+ | <code><a href="#awscdk-construct-mediaconnect-flow.EncoderSettings.property.height">height</a></code> | <code>number</code> | *No description.* |
159
171
  | <code><a href="#awscdk-construct-mediaconnect-flow.EncoderSettings.property.scanType">scanType</a></code> | <code>string</code> | *No description.* |
160
172
  | <code><a href="#awscdk-construct-mediaconnect-flow.EncoderSettings.property.timecodeBurninPrefix">timecodeBurninPrefix</a></code> | <code>string</code> | *No description.* |
173
+ | <code><a href="#awscdk-construct-mediaconnect-flow.EncoderSettings.property.width">width</a></code> | <code>number</code> | *No description.* |
161
174
 
162
175
  ---
163
176
 
@@ -191,6 +204,16 @@ public readonly gopLengthInSeconds: number;
191
204
 
192
205
  ---
193
206
 
207
+ ##### `height`<sup>Optional</sup> <a name="height" id="awscdk-construct-mediaconnect-flow.EncoderSettings.property.height"></a>
208
+
209
+ ```typescript
210
+ public readonly height: number;
211
+ ```
212
+
213
+ - *Type:* number
214
+
215
+ ---
216
+
194
217
  ##### `scanType`<sup>Optional</sup> <a name="scanType" id="awscdk-construct-mediaconnect-flow.EncoderSettings.property.scanType"></a>
195
218
 
196
219
  ```typescript
@@ -211,6 +234,16 @@ public readonly timecodeBurninPrefix: string;
211
234
 
212
235
  ---
213
236
 
237
+ ##### `width`<sup>Optional</sup> <a name="width" id="awscdk-construct-mediaconnect-flow.EncoderSettings.property.width"></a>
238
+
239
+ ```typescript
240
+ public readonly width: number;
241
+ ```
242
+
243
+ - *Type:* number
244
+
245
+ ---
246
+
214
247
  ### FileSpec <a name="FileSpec" id="awscdk-construct-mediaconnect-flow.FileSpec"></a>
215
248
 
216
249
  #### Initializer <a name="Initializer" id="awscdk-construct-mediaconnect-flow.FileSpec.Initializer"></a>
@@ -21,6 +21,8 @@ export interface EncoderSettings {
21
21
  readonly framerateNumerator?: number;
22
22
  readonly framerateDenominator?: number;
23
23
  readonly scanType?: 'PROGRESSIVE' | 'INTERLACED';
24
+ readonly width?: number;
25
+ readonly height?: number;
24
26
  }
25
27
  export interface LiveFeedFromFileProps {
26
28
  readonly file: FileSpec;
@@ -32,6 +34,7 @@ export interface LiveFeedFromFileProps {
32
34
  export declare class LiveFeedFromFile extends Construct {
33
35
  readonly flow: CfnFlow;
34
36
  readonly vpc?: ec2.IVpc;
37
+ readonly ndiDiscoveryServer?: ec2.Instance;
35
38
  constructor(scope: Construct, id: string, props: LiveFeedFromFileProps);
36
39
  }
37
40
  export declare function startFlow(scope: Construct, id: string, flowArn: string): Date;
@@ -22,9 +22,11 @@ class LiveFeedFromFile extends constructs_1.Construct {
22
22
  const { file, encoderSpec = {
23
23
  gopLengthInSeconds: 2,
24
24
  timecodeBurninPrefix: 'Ch',
25
- framerateNumerator: 30000,
26
- framerateDenominator: 1001,
25
+ framerateNumerator: 30,
26
+ framerateDenominator: 1,
27
27
  scanType: 'PROGRESSIVE',
28
+ width: 1920,
29
+ height: 1080,
28
30
  }, source = {
29
31
  protocol: 'SRT',
30
32
  type: 'STANDARD-SOURCE',
@@ -70,6 +72,7 @@ class LiveFeedFromFile extends constructs_1.Construct {
70
72
  ndiState: 'ENABLED',
71
73
  };
72
74
  sg && sg.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcpRange(5961, 65535), description);
75
+ this.ndiDiscoveryServer = instance;
73
76
  }
74
77
  // Create a secret
75
78
  const randomstring = Math.random().toString(36).slice(-8);
@@ -174,6 +177,8 @@ class LiveFeedFromFile extends constructs_1.Construct {
174
177
  framerateNumerator: encoderSpec.framerateNumerator,
175
178
  framerateDenominator: encoderSpec.framerateDenominator,
176
179
  scanType: encoderSpec.scanType,
180
+ width: encoderSpec.width,
181
+ height: encoderSpec.height,
177
182
  },
178
183
  vpc: source.type === 'VPC-SOURCE' && vpc ? {
179
184
  publicAddressAllocationIds: [eip.attrAllocationId],
@@ -190,7 +195,7 @@ class LiveFeedFromFile extends constructs_1.Construct {
190
195
  }
191
196
  exports.LiveFeedFromFile = LiveFeedFromFile;
192
197
  _a = JSII_RTTI_SYMBOL_1;
193
- LiveFeedFromFile[_a] = { fqn: "awscdk-construct-mediaconnect-flow.LiveFeedFromFile", version: "0.0.4" };
198
+ LiveFeedFromFile[_a] = { fqn: "awscdk-construct-mediaconnect-flow.LiveFeedFromFile", version: "0.0.6" };
194
199
  function createNdiDiscoveryServer(scope, vpc) {
195
200
  const description = 'Allow NDI Discovery Service';
196
201
  const sg = new ec2.SecurityGroup(scope, 'NDISecurityGroup', {
@@ -307,4 +312,4 @@ function startFlow(scope, id, flowArn) {
307
312
  });
308
313
  return new Date();
309
314
  }
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGl2ZUZlZWRGcm9tRmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9MaXZlRmVlZEZyb21GaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUE0VkEsOEJBNkJDOztBQXpYRCxpQ0FBaUM7QUFDakMsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsbUVBQXVEO0FBQ3ZELHNEQUFzRDtBQUN0RCxtRUFBOEc7QUFDOUcsMkZBQTZFO0FBQzdFLDJDQUF1QztBQW1DdkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFDakMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUU5QyxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBSTdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7UUFDcEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQ0osSUFBSSxFQUNKLFdBQVcsR0FBRztZQUNaLGtCQUFrQixFQUFFLENBQUM7WUFDckIsb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLG9CQUFvQixFQUFFLElBQUk7WUFDMUIsUUFBUSxFQUFFLGFBQWE7U0FDeEIsRUFDRCxNQUFNLEdBQUc7WUFDUCxRQUFRLEVBQUUsS0FBSztZQUNmLElBQUksRUFBRSxpQkFBaUI7U0FDeEIsRUFDRCxTQUFTLEVBQ1QsU0FBUyxHQUFHLElBQUksR0FDakIsR0FBRyxLQUFLLENBQUM7UUFFVixNQUFNLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3JCLFFBQVEsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4QixLQUFLLEtBQUs7b0JBQ1IsT0FBTyxLQUFLLENBQUM7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QUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ25FLGlDQUFpQztZQUNqQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1NBQ25DO1FBQ0QseUdBQXlHO1FBQ3pHLE1BQU0sRUFBRSwwQ0FBdUIsQ0FBQyxZQUFZLENBQUM7WUFDM0MsU0FBUyxFQUFFLDBDQUF1QixDQUFDLFlBQVk7U0FDaEQsQ0FBQztLQUNILENBQUMsQ0FBQztJQUNILE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuRmxvdyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1tZWRpYWNvbm5lY3QnO1xuaW1wb3J0ICogYXMgYXNtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSwgQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3ksIFBoeXNpY2FsUmVzb3VyY2VJZCB9IGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgTWVkaWFMaXZlLCBzdGFydENoYW5uZWwgfSBmcm9tICdhd3NjZGstY29uc3RydWN0LW1lZGlhbGl2ZS1jaGFubmVsJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTcGVjIHtcbiAgcmVhZG9ubHkgdHlwZT86ICdNUDRfRklMRScgfCAnVFNfRklMRSc7IC8vIFR5cGUgb2YgdGhlIGlucHV0IGZpbGVcbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7IC8vIFMzIFVSTCBvZiB0aGUgaW5wdXQgZmlsZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpdmVTb3VyY2VTcGVjIHtcbiAgcmVhZG9ubHkgcHJvdG9jb2w6ICdSVFAnIHwgJ1JUUC1GRUMnIHwgJ1NSVCc7IC8vIFByb3RvY29sIG9mIHRoZSBsaXZlIHNvdXJjZVxuICByZWFkb25seSB0eXBlOiAnU1RBTkRBUkQtU09VUkNFJyB8ICdWUEMtU09VUkNFJzsgLy8gVHlwZSBvZiB0aGUgbGl2ZSBzb3VyY2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWcGNDb25maWcge1xuICByZWFkb25seSBwcm9wczogZWMyLlZwY1Byb3BzO1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lPzogc3RyaW5nO1xuICByZWFkb25seSBzdWJuZXRJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgZW5hYmxlTkRJPzogYm9vbGVhbjsgLy8gU2V0dGluZ3MgZm9yIE5ESSBvdXRwdXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmNvZGVyU2V0dGluZ3Mge1xuICByZWFkb25seSBnb3BMZW5ndGhJblNlY29uZHM/OiBudW1iZXI7IC8vIFRoZSBsZW5ndGggb2YgdGhlIEdPUCBpbiBzZWNvbmRzLlxuICByZWFkb25seSB0aW1lY29kZUJ1cm5pblByZWZpeD86IHN0cmluZzsgLy8gVGhlIHByZWZpeCBmb3IgdGhlIHRpbWVjb2RlIGJ1cm4taW4uXG4gIHJlYWRvbmx5IGZyYW1lcmF0ZU51bWVyYXRvcj86IG51bWJlcjsgLy8gVGhlIG51bWVyYXRvciBmb3IgdGhlIGZyYW1lcmF0ZS5cbiAgcmVhZG9ubHkgZnJhbWVyYXRlRGVub21pbmF0b3I/OiBudW1iZXI7IC8vIFRoZSBkZW5vbWluYXRvciBmb3IgdGhlIGZyYW1lcmF0ZS5cbiAgcmVhZG9ubHkgc2NhblR5cGU/OiAnUFJPR1JFU1NJVkUnIHwgJ0lOVEVSTEFDRUQnOyAvLyBUaGUgc2NhbiB0eXBlLlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpdmVGZWVkRnJvbUZpbGVQcm9wcyB7XG4gIHJlYWRvbmx5IGZpbGU6IEZpbGVTcGVjOyAvLyBGaWxlIHNwZWNpZmljYXRpb25cbiAgcmVhZG9ubHkgZW5jb2RlclNwZWM/OiBFbmNvZGVyU2V0dGluZ3M7IC8vIE9wdGlvbmFsIGVuY29kZXIgc2V0dGluZ3MgZm9yIE1lZGlhTGl2ZVxuICByZWFkb25seSBzb3VyY2U/OiBMaXZlU291cmNlU3BlYzsgLy8gT3B0aW9uYWwgbGl2ZSBzb3VyY2Ugc3BlY2lmaWNhdGlvblxuICByZWFkb25seSB2cGNDb25maWc/OiBWcGNDb25maWc7IC8vIFNldHRpbmdzIGZvciBWUEMuIFJlcXVpcmVkIHdoZW4gdGhlIHNvdXJjZSB0eXBlIGlzIFZQQy1TT1VSQ0UgYW5kL29yIFZQQyBvdXRwdXRzIHdpbGwgYmUgYWRkZWQgdG8gdGhpcyBmbG93LlxuICByZWFkb25seSBhdXRvU3RhcnQ/OiBib29sZWFuOyAvLyBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgc3RhcnQgdGhlIE1lZGlhTGl2ZSBjaGFubmVsIGFuZCBNZWRpYUNvbm5lY3QgZmxvd1xufVxuXG5jb25zdCBzb3VyY2VJbmdlc3RQb3J0ID0gNTAwMDtcbmNvbnN0IGRpc2NvdmVyeVNlcnZlclBvcnQgPSA1OTU5O1xuY29uc3QgVlBDX0lOVEVSRkFDRV9OQU1FID0gJ3ZwY0ludGVyZmFjZU5hbWUnO1xuXG5leHBvcnQgY2xhc3MgTGl2ZUZlZWRGcm9tRmlsZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBmbG93OiBDZm5GbG93O1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpdmVGZWVkRnJvbUZpbGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBmaWxlLFxuICAgICAgZW5jb2RlclNwZWMgPSB7XG4gICAgICAgIGdvcExlbmd0aEluU2Vjb25kczogMixcbiAgICAgICAgdGltZWNvZGVCdXJuaW5QcmVmaXg6ICdDaCcsXG4gICAgICAgIGZyYW1lcmF0ZU51bWVyYXRvcjogMzAwMDAsXG4gICAgICAgIGZyYW1lcmF0ZURlbm9taW5hdG9yOiAxMDAxLFxuICAgICAgICBzY2FuVHlwZTogJ1BST0dSRVNTSVZFJyxcbiAgICAgIH0sXG4gICAgICBzb3VyY2UgPSB7XG4gICAgICAgIHByb3RvY29sOiAnU1JUJyxcbiAgICAgICAgdHlwZTogJ1NUQU5EQVJELVNPVVJDRScsXG4gICAgICB9LFxuICAgICAgdnBjQ29uZmlnLFxuICAgICAgYXV0b1N0YXJ0ID0gdHJ1ZSxcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCB1dWlkID0gYCR7Y3J5cHRvLnJhbmRvbVVVSUQoKX1gO1xuICAgIGNvbnN0IHByb3RvY29sID0gKCgpID0+IHtcbiAgICAgIHN3aXRjaCAoc291cmNlLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ1JUUCc6XG4gICAgICAgICAgcmV0dXJuICdydHAnO1xuICAgICAgICBjYXNlICdSVFAtRkVDJzpcbiAgICAgICAgICByZXR1cm4gJ3J0cC1mZWMnO1xuICAgICAgICBjYXNlICdTUlQnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAnc3J0LWxpc3RlbmVyJztcbiAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgLy8gQ3JlYXRlIGEgVlBDXG4gICAgY29uc3QgdnBjID0gdnBjQ29uZmlnID8gbmV3IGVjMi5WcGModGhpcywgJ1ZQQycsIHZwY0NvbmZpZy5wcm9wcykgOiB1bmRlZmluZWQ7XG4gICAgdnBjICYmIHZwYy5hcHBseVJlbW92YWxQb2xpY3koY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG5cbiAgICAvLyBBbGxvY2F0ZSBhbiBFbGFzdGljIElQIGZvciB0aGUgVlBDIGludGVyZmFjZVxuICAgIGNvbnN0IGVpcCA9IHZwYyA/IG5ldyBlYzIuQ2ZuRUlQKHRoaXMsICdFSVAnLCB7XG4gICAgICBkb21haW46ICd2cGMnLCAvLyBFbnN1cmUgdGhlIEVJUCBpcyBhbGxvY2F0ZWQgaW4gdGhlIFZQQ1xuICAgIH0pIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gQ3JlYXRlIGEgc2VjdXJpdHkgZ3JvdXAgdG8gYWxsb3cgcHVzaCBpbnB1dFxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gJ0FsbG93IFB1c2ggaW5wdXQgZnJvbSBNZWRpYUxpdmUnO1xuICAgIGNvbnN0IHNnID0gdnBjID8gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdTZWN1cml0eUdyb3VwJywge1xuICAgICAgdnBjLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0pOiB1bmRlZmluZWQ7XG4gICAgc2cgJiYgc2cuYXBwbHlSZW1vdmFsUG9saWN5KGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAgIHNnICYmIHNnLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgZWMyLlBlZXIuYW55SXB2NCgpLFxuICAgICAgZWMyLlBvcnQudWRwKHNvdXJjZUluZ2VzdFBvcnQpLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBhbiBOREkgZGlzY292ZXJ5IHNlcnZlclxuICAgIGxldCBuZGlDb25maWc6IENmbkZsb3cuTmRpQ29uZmlnUHJvcGVydHkgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHZwYyAmJiB2cGNDb25maWc/LmVuYWJsZU5ESSkge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBjcmVhdGVOZGlEaXNjb3ZlcnlTZXJ2ZXIodGhpcywgdnBjKTtcbiAgICAgIG5kaUNvbmZpZyA9IHtcbiAgICAgICAgbmRpRGlzY292ZXJ5U2VydmVyczogW3tcbiAgICAgICAgICBkaXNjb3ZlcnlTZXJ2ZXJBZGRyZXNzOiBpbnN0YW5jZS5pbnN0YW5jZVByaXZhdGVJcCwgLy8gVXNlIHRoZSBwcml2YXRlIElQIG9mIHRoZSBOREkgRGlzY292ZXJ5IFNlcnZlclxuICAgICAgICAgIHZwY0ludGVyZmFjZUFkYXB0ZXI6IFZQQ19JTlRFUkZBQ0VfTkFNRSxcbiAgICAgICAgICBkaXNjb3ZlcnlTZXJ2ZXJQb3J0LFxuICAgICAgICB9XSxcbiAgICAgICAgbmRpU3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIH07XG4gICAgICBzZyAmJiBzZy5hZGRJbmdyZXNzUnVsZShcbiAgICAgICAgZWMyLlBlZXIuYW55SXB2NCgpLFxuICAgICAgICBlYzIuUG9ydC50Y3BSYW5nZSg1OTYxLCA2NTUzNSksXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBzZWNyZXRcbiAgICBjb25zdCByYW5kb21zdHJpbmcgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgtOCk7XG4gICAgY29uc3Qgc291cmNlUGFzc3dvcmQgPSBuZXcgYXNtLlNlY3JldCh0aGlzLCAnU291cmNlUGFzc3dvcmQnLCB7XG4gICAgICBzZWNyZXROYW1lOiBgc2VjcmV0LSR7dXVpZH1gLFxuICAgICAgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHtcbiAgICAgICAgc2VjcmV0U3RyaW5nVGVtcGxhdGU6IEpTT04uc3RyaW5naWZ5KHsgcGFzc3dvcmQ6IHJhbmRvbXN0cmluZyB9KSxcbiAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6ICdwYXNzd29yZCcsXG4gICAgICAgIGV4Y2x1ZGVQdW5jdHVhdGlvbjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICByZW1vdmFsUG9saWN5OiBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGFuIElBTSByb2xlIGZvciBNZWRpYUNvbm5lY3QgdG8gYWNjZXNzIHRoZSBWUENcbiAgICBjb25zdCByb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdNZWRpYUNvbm5lY3RSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ21lZGlhY29ubmVjdC5hbWF6b25hd3MuY29tJyksXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBwb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbc291cmNlUGFzc3dvcmQuc2VjcmV0QXJuXSxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdzZWNyZXRzbWFuYWdlcjpHZXRSZXNvdXJjZVBvbGljeScsXG4gICAgICAgICAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJyxcbiAgICAgICAgICAgICAgICAnc2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXQnLFxuICAgICAgICAgICAgICAgICdzZWNyZXRzbWFuYWdlcjpMaXN0U2VjcmV0VmVyc2lvbklkcycsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdBbWF6b25WUENGdWxsQWNjZXNzJyksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGEgTWVkaWFDb25uZWN0IGZsb3dcbiAgICBjb25zdCBmbG93ID0gbmV3IENmbkZsb3codGhpcywgJ015Q2ZuRmxvdycsIHtcbiAgICAgIG5hbWU6IGBsY3AtZGVtby0ke3V1aWR9YCxcbiAgICAgIHNvdXJjZToge1xuICAgICAgICBuYW1lOiBgbGNwLWRlbW8tc291cmNlLSR7dXVpZH1gLFxuICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgLy8gbWF4TGF0ZW5jeTogMjAwMCxcbiAgICAgICAgLy8gbWluTGF0ZW5jeTogMTAwMCxcbiAgICAgICAgLy8gdnBjSW50ZXJmYWNlTmFtZTogVlBDX0lOVEVSRkFDRV9OQU1FLFxuICAgICAgICB3aGl0ZWxpc3RDaWRyOiBzb3VyY2UudHlwZSA9PT0gJ1NUQU5EQVJELVNPVVJDRScgPyAnMC4wLjAuMC8wJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGVjcnlwdGlvbjoge1xuICAgICAgICAgIC8vIGFsZ29yaXRobTogJ2FlczEyOCcsXG4gICAgICAgICAgcm9sZUFybjogcm9sZS5yb2xlQXJuLFxuICAgICAgICAgIHNlY3JldEFybjogc291cmNlUGFzc3dvcmQuc2VjcmV0QXJuLFxuICAgICAgICB9LFxuICAgICAgICAvLyBzb3VyY2VJbmdlc3RQb3J0OiBgJHtzb3VyY2VJbmdlc3RQb3J0fWAsXG4gICAgICAgIHZwY0ludGVyZmFjZU5hbWU6IHNvdXJjZS50eXBlID09PSAnVlBDLVNPVVJDRScgPyBWUENfSU5URVJGQUNFX05BTUUgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogdnBjQ29uZmlnPy5hdmFpbGFiaWxpdHlab25lID8/IHZwYz8uYXZhaWxhYmlsaXR5Wm9uZXNbMF0sXG4gICAgICBmbG93U2l6ZTogdnBjQ29uZmlnPy5lbmFibGVOREkgPyAnTEFSR0UnIDogJ01FRElVTScsXG4gICAgICBuZGlDb25maWcsXG4gICAgICBzb3VyY2VNb25pdG9yaW5nQ29uZmlnOiB7XG4gICAgICAgIHRodW1ibmFpbFN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgIGNvbnRlbnRRdWFsaXR5QW5hbHlzaXNTdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgfSxcbiAgICAgIHZwY0ludGVyZmFjZXM6IHZwYyA/IFt7XG4gICAgICAgIG5hbWU6IFZQQ19JTlRFUkZBQ0VfTkFNRSxcbiAgICAgICAgcm9sZUFybjogcm9sZS5yb2xlQXJuLFxuICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBbc2chLnNlY3VyaXR5R3JvdXBJZF0sXG4gICAgICAgIHN1Ym5ldElkOiB2cGNDb25maWc/LnN1Ym5ldElkID8/IHZwYy5wcml2YXRlU3VibmV0c1swXS5zdWJuZXRJZCxcbiAgICAgIH1dIDogW10sXG4gICAgfSk7XG4gICAgZmxvdy5hcHBseVJlbW92YWxQb2xpY3koY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG5cbiAgICAvLyBTdGFydCB0aGUgTWVkaWFDb25uZWN0IEZsb3dcbiAgICBhdXRvU3RhcnQgJiYgc3RhcnRGbG93KHRoaXMsICdTdGFydE1lZGlhQ29ubmVjdEZsb3cnLCBmbG93LmF0dHJGbG93QXJuKTtcblxuICAgIC8vIENyZWF0ZSBNZWRpYUxpdmUgY2hhbm5lbFxuICAgIGNvbnN0IGVtbCA9IG5ldyBNZWRpYUxpdmUodGhpcywgJ01lZGlhTGl2ZScsIHtcbiAgICAgIHNvdXJjZXM6IFt7IHVybDogZmlsZS51cmwucmVwbGFjZSgnczM6Ly8nLCAnczNzc2w6Ly8nKSwgdHlwZTogZmlsZS50eXBlID8/ICdNUDRfRklMRScgfV0sXG4gICAgICBkZXN0aW5hdGlvbnM6IFt7XG4gICAgICAgIGlkOiAnU1JUJyxcbiAgICAgICAgc3J0U2V0dGluZ3M6IFt7XG4gICAgICAgICAgdXJsOiBgc3J0Oi8vJHtmbG93LmF0dHJTb3VyY2VJbmdlc3RJcH06JHtmbG93LmF0dHJTb3VyY2VTb3VyY2VJbmdlc3RQb3J0fWAsIC8vIFVzZSB0aGUgTWVkaWFDb25uZWN0IEZsb3cgVVJMXG4gICAgICAgICAgZW5jcnlwdGlvblBhc3NwaHJhc2VTZWNyZXRBcm46IHNvdXJjZVBhc3N3b3JkLnNlY3JldEFybixcbiAgICAgICAgfV0sXG4gICAgICB9XSxcbiAgICAgIGNoYW5uZWxDbGFzczogJ1NJTkdMRV9QSVBFTElORScsXG4gICAgICBlbmNvZGVyU3BlYzoge1xuICAgICAgICBvdXRwdXRHcm91cFNldHRpbmdzTGlzdDogW3tcbiAgICAgICAgICBzcnRHcm91cFNldHRpbmdzOiB7XG4gICAgICAgICAgICBpbnB1dExvc3NBY3Rpb246ICdEUk9QX1RTJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9XSxcbiAgICAgICAgb3V0cHV0U2V0dGluZ3NMaXN0OiBbe1xuICAgICAgICAgIC8vIEFkZCB2YWxpZCBPdXRwdXRTZXR0aW5nc1Byb3BlcnR5IGZpZWxkcyBoZXJlIGlmIG5lZWRlZFxuICAgICAgICAgIHNydE91dHB1dFNldHRpbmdzOiB7XG4gICAgICAgICAgICBsYXRlbmN5OiAyMDAwLCAvLyBMYXRlbmN5IGluIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgZGVzdGluYXRpb246IHtcbiAgICAgICAgICAgICAgZGVzdGluYXRpb25SZWZJZDogJ1NSVCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5jcnlwdGlvblR5cGU6ICdBRVMxMjgnLCAvLyBFbmNyeXB0aW9uIHR5cGVcbiAgICAgICAgICAgIGNvbnRhaW5lclNldHRpbmdzOiB7XG4gICAgICAgICAgICAgIG0yVHNTZXR0aW5nczoge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH1dLFxuICAgICAgICBnb3BMZW5ndGhJblNlY29uZHM6IGVuY29kZXJTcGVjLmdvcExlbmd0aEluU2Vjb25kcyA/PyAyLFxuICAgICAgICB0aW1lY29kZUJ1cm5pblByZWZpeDogZW5jb2RlclNwZWMudGltZWNvZGVCdXJuaW5QcmVmaXgsXG4gICAgICAgIGZyYW1lcmF0ZU51bWVyYXRvcjogZW5jb2RlclNwZWMuZnJhbWVyYXRlTnVtZXJhdG9yLFxuICAgICAgICBmcmFtZXJhdGVEZW5vbWluYXRvcjogZW5jb2RlclNwZWMuZnJhbWVyYXRlRGVub21pbmF0b3IsXG4gICAgICAgIHNjYW5UeXBlOiBlbmNvZGVyU3BlYy5zY2FuVHlwZSxcbiAgICAgIH0sXG4gICAgICB2cGM6IHNvdXJjZS50eXBlID09PSAnVlBDLVNPVVJDRScgJiYgdnBjID8ge1xuICAgICAgICBwdWJsaWNBZGRyZXNzQWxsb2NhdGlvbklkczogW2VpcCEuYXR0ckFsbG9jYXRpb25JZF0sXG4gICAgICAgIHN1Ym5ldElkczogW3ZwYy5wcml2YXRlU3VibmV0c1swXS5zdWJuZXRJZF0sXG4gICAgICAgIHNlY3VyaXR5R3JvdXBJZHM6IFtzZyEuc2VjdXJpdHlHcm91cElkXSxcbiAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICBzZWNyZXQ6IHNvdXJjZVBhc3N3b3JkLFxuICAgIH0pO1xuXG4gICAgLy8gU3RhcnQgdGhlIE1lZGlhTGl2ZSBjaGFubmVsXG4gICAgYXV0b1N0YXJ0ICYmIHN0YXJ0Q2hhbm5lbCh0aGlzLCAnU3RhcnRNZWRpYUxpdmVDaGFubmVsJywgZW1sLmNoYW5uZWwucmVmKTtcblxuICAgIHRoaXMuZmxvdyA9IGZsb3c7XG4gICAgdGhpcy52cGMgPSB2cGM7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlTmRpRGlzY292ZXJ5U2VydmVyKHNjb3BlOiBDb25zdHJ1Y3QsIHZwYzogZWMyLklWcGMpOiBlYzIuSW5zdGFuY2Uge1xuICBjb25zdCBkZXNjcmlwdGlvbiA9ICdBbGxvdyBOREkgRGlzY292ZXJ5IFNlcnZpY2UnO1xuICBjb25zdCBzZyA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cChzY29wZSwgJ05ESVNlY3VyaXR5R3JvdXAnLCB7XG4gICAgdnBjLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gIH0pO1xuICBzZy5hcHBseVJlbW92YWxQb2xpY3koY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG4gIHNnLmFkZEluZ3Jlc3NSdWxlKFxuICAgIGVjMi5QZWVyLmFueUlwdjQoKSxcbiAgICBlYzIuUG9ydC50Y3AoZGlzY292ZXJ5U2VydmVyUG9ydCksXG4gICAgZGVzY3JpcHRpb24sXG4gICk7XG4gIGNvbnN0IGluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZShzY29wZSwgJ0luc3RhbmNlJywge1xuICAgIHZwYyxcbiAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoZWMyLkluc3RhbmNlQ2xhc3MuQlVSU1RBQkxFMywgZWMyLkluc3RhbmNlU2l6ZS5NSUNSTyksXG4gICAgbWFjaGluZUltYWdlOiBlYzIuTWFjaGluZUltYWdlLmxhdGVzdEFtYXpvbkxpbnV4MjAyMygpLFxuICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9LFxuICAgIHNlY3VyaXR5R3JvdXA6IHNnLFxuICB9KTtcbiAgaW5zdGFuY2UuYXBwbHlSZW1vdmFsUG9saWN5KGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAvLyBHZXQgdGhlIENsb3VkRm9ybWF0aW9uIGxvZ2ljYWwgSUQgZm9yIHRoZSBpbnN0YW5jZVxuICBjb25zdCBjZm5JbnN0YW5jZSA9IGluc3RhbmNlLm5vZGUuZGVmYXVsdENoaWxkIGFzIGNkay5DZm5SZXNvdXJjZTtcbiAgY29uc3QgbG9naWNhbElkID0gY2ZuSW5zdGFuY2UubG9naWNhbElkO1xuICBpbnN0YW5jZS5hcHBseUNsb3VkRm9ybWF0aW9uSW5pdChlYzIuQ2xvdWRGb3JtYXRpb25Jbml0LmZyb21Db25maWdTZXRzKHtcbiAgICBjb25maWdTZXRzOiB7XG4gICAgICAvLyBBcHBsaWVzIHRoZSBjb25maWdzIGJlbG93IGluIHRoaXMgb3JkZXJcbiAgICAgIGRlZmF1bHQ6IFsnY29uZmlnSW5zdGFuY2UnLCAnZmluYWxpemUnXSxcbiAgICB9LFxuICAgIGNvbmZpZ3M6IHtcbiAgICAgIGNvbmZpZ0luc3RhbmNlOiBuZXcgZWMyLkluaXRDb25maWcoW1xuICAgICAgICAvLyBOREkgRGlzY292ZXJ5IFNlcnZpY2Ugc2NyaXB0XG4gICAgICAgIGVjMi5Jbml0RmlsZS5mcm9tU3RyaW5nKFxuICAgICAgICAgICcvZXRjL3N5c3RlbWQvbmRpLWRpc2NvdmVyeS5zZXJ2aWNlJyxcbiAgICAgICAgICBgW1VuaXRdXG4gICAgICAgICAgRGVzY3JpcHRpb249TkRJIERpc2NvdmVyeSBTZXJ2aWNlXG4gICAgICAgICAgXG4gICAgICAgICAgW1NlcnZpY2VdXG4gICAgICAgICAgRXhlY1N0YXJ0UHJlPS9iaW4vc2xlZXAgMzBcbiAgICAgICAgICBVc2VyPWVjMi11c2VyXG4gICAgICAgICAgV29ya2luZ0RpcmVjdG9yeT0vaG9tZS9lYzItdXNlci9iaW4veDg2XzY0LWxpbnV4LWdudVxuICAgICAgICAgIEV4ZWNTdGFydD0vaG9tZS9lYzItdXNlci9iaW4veDg2XzY0LWxpbnV4LWdudS9uZGktZGlzY292ZXJ5LXNlcnZlclxuICAgICAgICAgIFJlc3RhcnQ9YWx3YXlzXG5cbiAgICAgICAgICBbSW5zdGFsbF1cbiAgICAgICAgICBXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldFxuICAgICAgICBgKSxcbiAgICAgICAgLy8gTkRJIERpc2NvdmVyeSBTZXJ2ZXIgSW5zdGFsbGF0aW9uIHNjcmlwdFxuICAgICAgICBlYzIuSW5pdEZpbGUuZnJvbVN0cmluZyhcbiAgICAgICAgICAnL3RtcC9pbnN0YWxsLW5kaS1kaXNjb3Zlcnkuc2gnLFxuICAgICAgICAgIGAjIS9iaW4vYmFzaCAteGVcbiAgICAgICAgICBjZCAvaG9tZS9lYzItdXNlclxuXG4gICAgICAgICAgI0luc3RhbGwgdXBkYXRlc1xuICAgICAgICAgIHl1bSB1cGRhdGUgLXlcblxuICAgICAgICAgICNEb3dubG9hZCB0aGUgTkRJIExpbnV4IFNESyBhbmQgZXh0cmFjdCBpdCBhbmQgcnVuIHRoZSBpbnN0YWxsIHNjcmlwdFxuICAgICAgICAgIHdnZXQgaHR0cHM6Ly9kb3dubG9hZHMubmRpLnR2L1NESy9ORElfU0RLX0xpbnV4L0luc3RhbGxfTkRJX1NES192Nl9MaW51eC50YXIuZ3pcbiAgICAgICAgICB0YXIgLXh6ZiBJbnN0YWxsX05ESV9TREtfdjZfTGludXgudGFyLmd6XG4gICAgICAgICAgeWVzIHwgc3VkbyAuL0luc3RhbGxfTkRJX1NES192Nl9MaW51eC5zaFxuXG4gICAgICAgICAgI0NsZWFuIHVwIGFuZCBwcmVwYXJlIGRpcmVjdG9yaWVzXG4gICAgICAgICAgcm0gLWYgSW5zdGFsbF9ORElfU0RLX3Y2X0xpbnV4LnRhci5nelxuICAgICAgICAgIHJtIC1mIEluc3RhbGxfTkRJX1NES192Nl9MaW51eC5zaFxuICAgICAgICAgIGNwIC1yICdOREkgU0RLIGZvciBMaW51eCcvKiAuL1xuICAgICAgICAgIHJtIC1yICdOREkgU0RLIGZvciBMaW51eCcvXG4gICAgICAgIGApLFxuICAgICAgICAvLyBJbnN0YWxsIHRoZSBOREkgRGlzY292ZXJ5IFNlcnZpY2VcbiAgICAgICAgZWMyLkluaXRDb21tYW5kLnNoZWxsQ29tbWFuZCgnc3VkbyBiYXNoIC90bXAvaW5zdGFsbC1uZGktZGlzY292ZXJ5LnNoJyksXG4gICAgICAgIC8vIFJ1biB0aGUgTkRJIERpc2NvdmVyeSBTZXJ2aWNlXG4gICAgICAgIGVjMi5Jbml0Q29tbWFuZC5zaGVsbENvbW1hbmQoJ3N1ZG8gc3lzdGVtY3RsIGVuYWJsZSAvZXRjL3N5c3RlbWQvbmRpLWRpc2NvdmVyeS5zZXJ2aWNlJyksXG4gICAgICBdKSxcbiAgICAgIGZpbmFsaXplOiBuZXcgZWMyLkluaXRDb25maWcoW1xuICAgICAgICAvLyBTdGFydCB0aGUgTkRJIERpc2NvdmVyeSBTZXJ2aWNlXG4gICAgICAgIGVjMi5Jbml0Q29tbWFuZC5zaGVsbENvbW1hbmQoXG4gICAgICAgICAgY2RrLkZuLnN1YignL29wdC9hd3MvYmluL2Nmbi1zaWduYWwgLWUgJD8gLS1zdGFjayAke1N0YWNrTmFtZX0gLS1yZXNvdXJjZSAke1Jlc291cmNlfSAtLXJlZ2lvbiAke1JlZ2lvbn0nLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBTdGFja05hbWU6IGNkay5Bd3MuU1RBQ0tfTkFNRSxcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IGxvZ2ljYWxJZCxcbiAgICAgICAgICAgICAgUmVnaW9uOiBjZGsuQXdzLlJFR0lPTixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgfSxcbiAgfSkpO1xuICBpbnN0YW5jZS5hZGRVc2VyRGF0YShjZGsuRm4uc3ViKGBcbiAgICAjIS9iaW4vYmFzaCAteGVcbiAgICB5dW0gaW5zdGFsbCAteSBhd3MtY2ZuLWJvb3RzdHJhcFxuICAgIHN1ZG8gL29wdC9hd3MvYmluL2Nmbi1pbml0IC0tY29uZmlnc2V0cyBkZWZhdWx0IC12IC0tc3RhY2sgXFwke1N0YWNrTmFtZX0gLS1yZXNvdXJjZSBcXCR7UmVzb3VyY2V9IC0tcmVnaW9uIFxcJHtSZWdpb259XG4gICAgc3VkbyByZWJvb3RcbiAgYCwge1xuICAgIFN0YWNrTmFtZTogY2RrLkF3cy5TVEFDS19OQU1FLFxuICAgIFJlc291cmNlOiBsb2dpY2FsSWQsXG4gICAgUmVnaW9uOiBjZGsuQXdzLlJFR0lPTixcbiAgfSkpO1xuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydEZsb3coc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgZmxvd0Fybjogc3RyaW5nKTogRGF0ZSB7XG4gIC8vIFN0YXJ0IGNoYW5uZWxcbiAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHNjb3BlLCBpZCwge1xuICAgIG9uQ3JlYXRlOiB7XG4gICAgICBzZXJ2aWNlOiAnTWVkaWFDb25uZWN0JyxcbiAgICAgIGFjdGlvbjogJ1N0YXJ0RmxvdycsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIEZsb3dBcm46IGZsb3dBcm4sXG4gICAgICB9LFxuICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoYCR7Y3J5cHRvLnJhbmRvbVVVSUQoKX1gKSxcbiAgICAgIC8vIGlnbm9yZUVycm9yQ29kZXNNYXRjaGluZzogJyonLFxuICAgICAgb3V0cHV0UGF0aHM6IFsnRmxvd0FybicsICdTdGF0dXMnXSxcbiAgICB9LFxuICAgIG9uRGVsZXRlOiB7XG4gICAgICBzZXJ2aWNlOiAnTWVkaWFDb25uZWN0JyxcbiAgICAgIGFjdGlvbjogJ1N0b3BGbG93JyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgRmxvd0FybjogZmxvd0FybixcbiAgICAgIH0sXG4gICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IFBoeXNpY2FsUmVzb3VyY2VJZC5vZihgJHtjcnlwdG8ucmFuZG9tVVVJRCgpfWApLFxuICAgICAgLy8gaWdub3JlRXJyb3JDb2Rlc01hdGNoaW5nOiAnKicsXG4gICAgICBvdXRwdXRQYXRoczogWydGbG93QXJuJywgJ1N0YXR1cyddLFxuICAgIH0sXG4gICAgLy9XaWxsIGlnbm9yZSBhbnkgcmVzb3VyY2UgYW5kIHVzZSB0aGUgYXNzdW1lZFJvbGVBcm4gYXMgcmVzb3VyY2UgYW5kICdzdHM6QXNzdW1lUm9sZScgZm9yIHNlcnZpY2U6YWN0aW9uXG4gICAgcG9saWN5OiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgcmVzb3VyY2VzOiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5BTllfUkVTT1VSQ0UsXG4gICAgfSksXG4gIH0pO1xuICByZXR1cm4gbmV3IERhdGUoKTtcbn1cbiJdfQ==
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGl2ZUZlZWRGcm9tRmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9MaXZlRmVlZEZyb21GaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFvV0EsOEJBNkJDOztBQWpZRCxpQ0FBaUM7QUFDakMsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsbUVBQXVEO0FBQ3ZELHNEQUFzRDtBQUN0RCxtRUFBOEc7QUFDOUcsMkZBQTZFO0FBQzdFLDJDQUF1QztBQXFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFDakMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUU5QyxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBSzdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7UUFDcEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQ0osSUFBSSxFQUNKLFdBQVcsR0FBRztZQUNaLGtCQUFrQixFQUFFLENBQUM7WUFDckIsb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixrQkFBa0IsRUFBRSxFQUFFO1lBQ3RCLG9CQUFvQixFQUFFLENBQUM7WUFDdkIsUUFBUSxFQUFFLGFBQWE7WUFDdkIsS0FBSyxFQUFFLElBQUk7WUFDWCxNQUFNLEVBQUUsSUFBSTtTQUNiLEVBQ0QsTUFBTSxHQUFHO1lBQ1AsUUFBUSxFQUFFLEtBQUs7WUFDZixJQUFJLEVBQUUsaUJBQWlCO1NBQ3hCLEVBQ0QsU0FBUyxFQUNULFNBQVMsR0FBRyxJQUFJLEdBQ2pCLEdBQUcsS0FBSyxDQUFDO1FBRVYsTUFBTSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNyQixRQUFRLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FB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LENBQUM7U0FDbkM7UUFDRCxRQUFRLEVBQUU7WUFDUixPQUFPLEVBQUUsY0FBYztZQUN2QixNQUFNLEVBQUUsVUFBVTtZQUNsQixVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLE9BQU87YUFDakI7WUFDRCxrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNuRSxpQ0FBaUM7WUFDakMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztTQUNuQztRQUNELHlHQUF5RztRQUN6RyxNQUFNLEVBQUUsMENBQXVCLENBQUMsWUFBWSxDQUFDO1lBQzNDLFNBQVMsRUFBRSwwQ0FBdUIsQ0FBQyxZQUFZO1NBQ2hELENBQUM7S0FDSCxDQUFDLENBQUM7SUFDSCxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkZsb3cgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbWVkaWFjb25uZWN0JztcbmltcG9ydCAqIGFzIGFzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UsIEF3c0N1c3RvbVJlc291cmNlUG9saWN5LCBQaHlzaWNhbFJlc291cmNlSWQgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IE1lZGlhTGl2ZSwgc3RhcnRDaGFubmVsIH0gZnJvbSAnYXdzY2RrLWNvbnN0cnVjdC1tZWRpYWxpdmUtY2hhbm5lbCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3BlYyB7XG4gIHJlYWRvbmx5IHR5cGU/OiAnTVA0X0ZJTEUnIHwgJ1RTX0ZJTEUnOyAvLyBUeXBlIG9mIHRoZSBpbnB1dCBmaWxlXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nOyAvLyBTMyBVUkwgb2YgdGhlIGlucHV0IGZpbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXZlU291cmNlU3BlYyB7XG4gIHJlYWRvbmx5IHByb3RvY29sOiAnUlRQJyB8ICdSVFAtRkVDJyB8ICdTUlQnOyAvLyBQcm90b2NvbCBvZiB0aGUgbGl2ZSBzb3VyY2VcbiAgcmVhZG9ubHkgdHlwZTogJ1NUQU5EQVJELVNPVVJDRScgfCAnVlBDLVNPVVJDRSc7IC8vIFR5cGUgb2YgdGhlIGxpdmUgc291cmNlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVnBjQ29uZmlnIHtcbiAgcmVhZG9ubHkgcHJvcHM6IGVjMi5WcGNQcm9wcztcbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZT86IHN0cmluZztcbiAgcmVhZG9ubHkgc3VibmV0SWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVuYWJsZU5EST86IGJvb2xlYW47IC8vIFNldHRpbmdzIGZvciBOREkgb3V0cHV0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5jb2RlclNldHRpbmdzIHtcbiAgcmVhZG9ubHkgZ29wTGVuZ3RoSW5TZWNvbmRzPzogbnVtYmVyOyAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBHT1AgaW4gc2Vjb25kcy5cbiAgcmVhZG9ubHkgdGltZWNvZGVCdXJuaW5QcmVmaXg/OiBzdHJpbmc7IC8vIFRoZSBwcmVmaXggZm9yIHRoZSB0aW1lY29kZSBidXJuLWluLlxuICByZWFkb25seSBmcmFtZXJhdGVOdW1lcmF0b3I/OiBudW1iZXI7IC8vIFRoZSBudW1lcmF0b3IgZm9yIHRoZSBmcmFtZXJhdGUuXG4gIHJlYWRvbmx5IGZyYW1lcmF0ZURlbm9taW5hdG9yPzogbnVtYmVyOyAvLyBUaGUgZGVub21pbmF0b3IgZm9yIHRoZSBmcmFtZXJhdGUuXG4gIHJlYWRvbmx5IHNjYW5UeXBlPzogJ1BST0dSRVNTSVZFJyB8ICdJTlRFUkxBQ0VEJzsgLy8gVGhlIHNjYW4gdHlwZS5cbiAgcmVhZG9ubHkgd2lkdGg/OiBudW1iZXI7IC8vIFRoZSB3aWR0aCBvZiB0aGUgdmlkZW8uXG4gIHJlYWRvbmx5IGhlaWdodD86IG51bWJlcjsgLy8gVGhlIGhlaWdodCBvZiB0aGUgdmlkZW8uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZUZlZWRGcm9tRmlsZVByb3BzIHtcbiAgcmVhZG9ubHkgZmlsZTogRmlsZVNwZWM7IC8vIEZpbGUgc3BlY2lmaWNhdGlvblxuICByZWFkb25seSBlbmNvZGVyU3BlYz86IEVuY29kZXJTZXR0aW5nczsgLy8gT3B0aW9uYWwgZW5jb2RlciBzZXR0aW5ncyBmb3IgTWVkaWFMaXZlXG4gIHJlYWRvbmx5IHNvdXJjZT86IExpdmVTb3VyY2VTcGVjOyAvLyBPcHRpb25hbCBsaXZlIHNvdXJjZSBzcGVjaWZpY2F0aW9uXG4gIHJlYWRvbmx5IHZwY0NvbmZpZz86IFZwY0NvbmZpZzsgLy8gU2V0dGluZ3MgZm9yIFZQQy4gUmVxdWlyZWQgd2hlbiB0aGUgc291cmNlIHR5cGUgaXMgVlBDLVNPVVJDRSBhbmQvb3IgVlBDIG91dHB1dHMgd2lsbCBiZSBhZGRlZCB0byB0aGlzIGZsb3cuXG4gIHJlYWRvbmx5IGF1dG9TdGFydD86IGJvb2xlYW47IC8vIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzdGFydCB0aGUgTWVkaWFMaXZlIGNoYW5uZWwgYW5kIE1lZGlhQ29ubmVjdCBmbG93XG59XG5cbmNvbnN0IHNvdXJjZUluZ2VzdFBvcnQgPSA1MDAwO1xuY29uc3QgZGlzY292ZXJ5U2VydmVyUG9ydCA9IDU5NTk7XG5jb25zdCBWUENfSU5URVJGQUNFX05BTUUgPSAndnBjSW50ZXJmYWNlTmFtZSc7XG5cbmV4cG9ydCBjbGFzcyBMaXZlRmVlZEZyb21GaWxlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGZsb3c6IENmbkZsb3c7XG4gIHB1YmxpYyByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcbiAgcHVibGljIHJlYWRvbmx5IG5kaURpc2NvdmVyeVNlcnZlcj86IGVjMi5JbnN0YW5jZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTGl2ZUZlZWRGcm9tRmlsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGZpbGUsXG4gICAgICBlbmNvZGVyU3BlYyA9IHtcbiAgICAgICAgZ29wTGVuZ3RoSW5TZWNvbmRzOiAyLFxuICAgICAgICB0aW1lY29kZUJ1cm5pblByZWZpeDogJ0NoJyxcbiAgICAgICAgZnJhbWVyYXRlTnVtZXJhdG9yOiAzMCxcbiAgICAgICAgZnJhbWVyYXRlRGVub21pbmF0b3I6IDEsXG4gICAgICAgIHNjYW5UeXBlOiAnUFJPR1JFU1NJVkUnLFxuICAgICAgICB3aWR0aDogMTkyMCxcbiAgICAgICAgaGVpZ2h0OiAxMDgwLFxuICAgICAgfSxcbiAgICAgIHNvdXJjZSA9IHtcbiAgICAgICAgcHJvdG9jb2w6ICdTUlQnLFxuICAgICAgICB0eXBlOiAnU1RBTkRBUkQtU09VUkNFJyxcbiAgICAgIH0sXG4gICAgICB2cGNDb25maWcsXG4gICAgICBhdXRvU3RhcnQgPSB0cnVlLFxuICAgIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IHV1aWQgPSBgJHtjcnlwdG8ucmFuZG9tVVVJRCgpfWA7XG4gICAgY29uc3QgcHJvdG9jb2wgPSAoKCkgPT4ge1xuICAgICAgc3dpdGNoIChzb3VyY2UucHJvdG9jb2wpIHtcbiAgICAgICAgY2FzZSAnUlRQJzpcbiAgICAgICAgICByZXR1cm4gJ3J0cCc7XG4gICAgICAgIGNhc2UgJ1JUUC1GRUMnOlxuICAgICAgICAgIHJldHVybiAncnRwLWZlYyc7XG4gICAgICAgIGNhc2UgJ1NSVCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICdzcnQtbGlzdGVuZXInO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICAvLyBDcmVhdGUgYSBWUENcbiAgICBjb25zdCB2cGMgPSB2cGNDb25maWcgPyBuZXcgZWMyLlZwYyh0aGlzLCAnVlBDJywgdnBjQ29uZmlnLnByb3BzKSA6IHVuZGVmaW5lZDtcbiAgICB2cGMgJiYgdnBjLmFwcGx5UmVtb3ZhbFBvbGljeShjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKTtcblxuICAgIC8vIEFsbG9jYXRlIGFuIEVsYXN0aWMgSVAgZm9yIHRoZSBWUEMgaW50ZXJmYWNlXG4gICAgY29uc3QgZWlwID0gdnBjID8gbmV3IGVjMi5DZm5FSVAodGhpcywgJ0VJUCcsIHtcbiAgICAgIGRvbWFpbjogJ3ZwYycsIC8vIEVuc3VyZSB0aGUgRUlQIGlzIGFsbG9jYXRlZCBpbiB0aGUgVlBDXG4gICAgfSkgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDcmVhdGUgYSBzZWN1cml0eSBncm91cCB0byBhbGxvdyBwdXNoIGlucHV0XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSAnQWxsb3cgUHVzaCBpbnB1dCBmcm9tIE1lZGlhTGl2ZSc7XG4gICAgY29uc3Qgc2cgPSB2cGMgPyBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgJ1NlY3VyaXR5R3JvdXAnLCB7XG4gICAgICB2cGMsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk6IHVuZGVmaW5lZDtcbiAgICBzZyAmJiBzZy5hcHBseVJlbW92YWxQb2xpY3koY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG4gICAgc2cgJiYgc2cuYWRkSW5ncmVzc1J1bGUoXG4gICAgICBlYzIuUGVlci5hbnlJcHY0KCksXG4gICAgICBlYzIuUG9ydC51ZHAoc291cmNlSW5nZXN0UG9ydCksXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIGFuIE5ESSBkaXNjb3Zlcnkgc2VydmVyXG4gICAgbGV0IG5kaUNvbmZpZzogQ2ZuRmxvdy5OZGlDb25maWdQcm9wZXJ0eSB8IHVuZGVmaW5lZDtcbiAgICBpZiAodnBjICYmIHZwY0NvbmZpZz8uZW5hYmxlTkRJKSB7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGNyZWF0ZU5kaURpc2NvdmVyeVNlcnZlcih0aGlzLCB2cGMpO1xuICAgICAgbmRpQ29uZmlnID0ge1xuICAgICAgICBuZGlEaXNjb3ZlcnlTZXJ2ZXJzOiBbe1xuICAgICAgICAgIGRpc2NvdmVyeVNlcnZlckFkZHJlc3M6IGluc3RhbmNlLmluc3RhbmNlUHJpdmF0ZUlwLCAvLyBVc2UgdGhlIHByaXZhdGUgSVAgb2YgdGhlIE5ESSBEaXNjb3ZlcnkgU2VydmVyXG4gICAgICAgICAgdnBjSW50ZXJmYWNlQWRhcHRlcjogVlBDX0lOVEVSRkFDRV9OQU1FLFxuICAgICAgICAgIGRpc2NvdmVyeVNlcnZlclBvcnQsXG4gICAgICAgIH1dLFxuICAgICAgICBuZGlTdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgfTtcbiAgICAgIHNnICYmIHNnLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgICBlYzIuUGVlci5hbnlJcHY0KCksXG4gICAgICAgIGVjMi5Qb3J0LnRjcFJhbmdlKDU5NjEsIDY1NTM1KSxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICApO1xuICAgICAgdGhpcy5uZGlEaXNjb3ZlcnlTZXJ2ZXIgPSBpbnN0YW5jZTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBzZWNyZXRcbiAgICBjb25zdCByYW5kb21zdHJpbmcgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgtOCk7XG4gICAgY29uc3Qgc291cmNlUGFzc3dvcmQgPSBuZXcgYXNtLlNlY3JldCh0aGlzLCAnU291cmNlUGFzc3dvcmQnLCB7XG4gICAgICBzZWNyZXROYW1lOiBgc2VjcmV0LSR7dXVpZH1gLFxuICAgICAgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHtcbiAgICAgICAgc2VjcmV0U3RyaW5nVGVtcGxhdGU6IEpTT04uc3RyaW5naWZ5KHsgcGFzc3dvcmQ6IHJhbmRvbXN0cmluZyB9KSxcbiAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6ICdwYXNzd29yZCcsXG4gICAgICAgIGV4Y2x1ZGVQdW5jdHVhdGlvbjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICByZW1vdmFsUG9saWN5OiBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGFuIElBTSByb2xlIGZvciBNZWRpYUNvbm5lY3QgdG8gYWNjZXNzIHRoZSBWUENcbiAgICBjb25zdCByb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdNZWRpYUNvbm5lY3RSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ21lZGlhY29ubmVjdC5hbWF6b25hd3MuY29tJyksXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBwb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbc291cmNlUGFzc3dvcmQuc2VjcmV0QXJuXSxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdzZWNyZXRzbWFuYWdlcjpHZXRSZXNvdXJjZVBvbGljeScsXG4gICAgICAgICAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJyxcbiAgICAgICAgICAgICAgICAnc2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXQnLFxuICAgICAgICAgICAgICAgICdzZWNyZXRzbWFuYWdlcjpMaXN0U2VjcmV0VmVyc2lvbklkcycsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdBbWF6b25WUENGdWxsQWNjZXNzJyksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGEgTWVkaWFDb25uZWN0IGZsb3dcbiAgICBjb25zdCBmbG93ID0gbmV3IENmbkZsb3codGhpcywgJ015Q2ZuRmxvdycsIHtcbiAgICAgIG5hbWU6IGBsY3AtZGVtby0ke3V1aWR9YCxcbiAgICAgIHNvdXJjZToge1xuICAgICAgICBuYW1lOiBgbGNwLWRlbW8tc291cmNlLSR7dXVpZH1gLFxuICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgLy8gbWF4TGF0ZW5jeTogMjAwMCxcbiAgICAgICAgLy8gbWluTGF0ZW5jeTogMTAwMCxcbiAgICAgICAgLy8gdnBjSW50ZXJmYWNlTmFtZTogVlBDX0lOVEVSRkFDRV9OQU1FLFxuICAgICAgICB3aGl0ZWxpc3RDaWRyOiBzb3VyY2UudHlwZSA9PT0gJ1NUQU5EQVJELVNPVVJDRScgPyAnMC4wLjAuMC8wJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGVjcnlwdGlvbjoge1xuICAgICAgICAgIC8vIGFsZ29yaXRobTogJ2FlczEyOCcsXG4gICAgICAgICAgcm9sZUFybjogcm9sZS5yb2xlQXJuLFxuICAgICAgICAgIHNlY3JldEFybjogc291cmNlUGFzc3dvcmQuc2VjcmV0QXJuLFxuICAgICAgICB9LFxuICAgICAgICAvLyBzb3VyY2VJbmdlc3RQb3J0OiBgJHtzb3VyY2VJbmdlc3RQb3J0fWAsXG4gICAgICAgIHZwY0ludGVyZmFjZU5hbWU6IHNvdXJjZS50eXBlID09PSAnVlBDLVNPVVJDRScgPyBWUENfSU5URVJGQUNFX05BTUUgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogdnBjQ29uZmlnPy5hdmFpbGFiaWxpdHlab25lID8/IHZwYz8uYXZhaWxhYmlsaXR5Wm9uZXNbMF0sXG4gICAgICBmbG93U2l6ZTogdnBjQ29uZmlnPy5lbmFibGVOREkgPyAnTEFSR0UnIDogJ01FRElVTScsXG4gICAgICBuZGlDb25maWcsXG4gICAgICBzb3VyY2VNb25pdG9yaW5nQ29uZmlnOiB7XG4gICAgICAgIHRodW1ibmFpbFN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgIGNvbnRlbnRRdWFsaXR5QW5hbHlzaXNTdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgfSxcbiAgICAgIHZwY0ludGVyZmFjZXM6IHZwYyA/IFt7XG4gICAgICAgIG5hbWU6IFZQQ19JTlRFUkZBQ0VfTkFNRSxcbiAgICAgICAgcm9sZUFybjogcm9sZS5yb2xlQXJuLFxuICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBbc2chLnNlY3VyaXR5R3JvdXBJZF0sXG4gICAgICAgIHN1Ym5ldElkOiB2cGNDb25maWc/LnN1Ym5ldElkID8/IHZwYy5wcml2YXRlU3VibmV0c1swXS5zdWJuZXRJZCxcbiAgICAgIH1dIDogW10sXG4gICAgfSk7XG4gICAgZmxvdy5hcHBseVJlbW92YWxQb2xpY3koY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG5cbiAgICAvLyBTdGFydCB0aGUgTWVkaWFDb25uZWN0IEZsb3dcbiAgICBhdXRvU3RhcnQgJiYgc3RhcnRGbG93KHRoaXMsICdTdGFydE1lZGlhQ29ubmVjdEZsb3cnLCBmbG93LmF0dHJGbG93QXJuKTtcblxuICAgIC8vIENyZWF0ZSBNZWRpYUxpdmUgY2hhbm5lbFxuICAgIGNvbnN0IGVtbCA9IG5ldyBNZWRpYUxpdmUodGhpcywgJ01lZGlhTGl2ZScsIHtcbiAgICAgIHNvdXJjZXM6IFt7IHVybDogZmlsZS51cmwucmVwbGFjZSgnczM6Ly8nLCAnczNzc2w6Ly8nKSwgdHlwZTogZmlsZS50eXBlID8/ICdNUDRfRklMRScgfV0sXG4gICAgICBkZXN0aW5hdGlvbnM6IFt7XG4gICAgICAgIGlkOiAnU1JUJyxcbiAgICAgICAgc3J0U2V0dGluZ3M6IFt7XG4gICAgICAgICAgdXJsOiBgc3J0Oi8vJHtmbG93LmF0dHJTb3VyY2VJbmdlc3RJcH06JHtmbG93LmF0dHJTb3VyY2VTb3VyY2VJbmdlc3RQb3J0fWAsIC8vIFVzZSB0aGUgTWVkaWFDb25uZWN0IEZsb3cgVVJMXG4gICAgICAgICAgZW5jcnlwdGlvblBhc3NwaHJhc2VTZWNyZXRBcm46IHNvdXJjZVBhc3N3b3JkLnNlY3JldEFybixcbiAgICAgICAgfV0sXG4gICAgICB9XSxcbiAgICAgIGNoYW5uZWxDbGFzczogJ1NJTkdMRV9QSVBFTElORScsXG4gICAgICBlbmNvZGVyU3BlYzoge1xuICAgICAgICBvdXRwdXRHcm91cFNldHRpbmdzTGlzdDogW3tcbiAgICAgICAgICBzcnRHcm91cFNldHRpbmdzOiB7XG4gICAgICAgICAgICBpbnB1dExvc3NBY3Rpb246ICdEUk9QX1RTJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9XSxcbiAgICAgICAgb3V0cHV0U2V0dGluZ3NMaXN0OiBbe1xuICAgICAgICAgIC8vIEFkZCB2YWxpZCBPdXRwdXRTZXR0aW5nc1Byb3BlcnR5IGZpZWxkcyBoZXJlIGlmIG5lZWRlZFxuICAgICAgICAgIHNydE91dHB1dFNldHRpbmdzOiB7XG4gICAgICAgICAgICBsYXRlbmN5OiAyMDAwLCAvLyBMYXRlbmN5IGluIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgZGVzdGluYXRpb246IHtcbiAgICAgICAgICAgICAgZGVzdGluYXRpb25SZWZJZDogJ1NSVCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5jcnlwdGlvblR5cGU6ICdBRVMxMjgnLCAvLyBFbmNyeXB0aW9uIHR5cGVcbiAgICAgICAgICAgIGNvbnRhaW5lclNldHRpbmdzOiB7XG4gICAgICAgICAgICAgIG0yVHNTZXR0aW5nczoge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH1dLFxuICAgICAgICBnb3BMZW5ndGhJblNlY29uZHM6IGVuY29kZXJTcGVjLmdvcExlbmd0aEluU2Vjb25kcyA/PyAyLFxuICAgICAgICB0aW1lY29kZUJ1cm5pblByZWZpeDogZW5jb2RlclNwZWMudGltZWNvZGVCdXJuaW5QcmVmaXgsXG4gICAgICAgIGZyYW1lcmF0ZU51bWVyYXRvcjogZW5jb2RlclNwZWMuZnJhbWVyYXRlTnVtZXJhdG9yLFxuICAgICAgICBmcmFtZXJhdGVEZW5vbWluYXRvcjogZW5jb2RlclNwZWMuZnJhbWVyYXRlRGVub21pbmF0b3IsXG4gICAgICAgIHNjYW5UeXBlOiBlbmNvZGVyU3BlYy5zY2FuVHlwZSxcbiAgICAgICAgd2lkdGg6IGVuY29kZXJTcGVjLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGVuY29kZXJTcGVjLmhlaWdodCxcbiAgICAgIH0sXG4gICAgICB2cGM6IHNvdXJjZS50eXBlID09PSAnVlBDLVNPVVJDRScgJiYgdnBjID8ge1xuICAgICAgICBwdWJsaWNBZGRyZXNzQWxsb2NhdGlvbklkczogW2VpcCEuYXR0ckFsbG9jYXRpb25JZF0sXG4gICAgICAgIHN1Ym5ldElkczogW3ZwYy5wcml2YXRlU3VibmV0c1swXS5zdWJuZXRJZF0sXG4gICAgICAgIHNlY3VyaXR5R3JvdXBJZHM6IFtzZyEuc2VjdXJpdHlHcm91cElkXSxcbiAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICBzZWNyZXQ6IHNvdXJjZVBhc3N3b3JkLFxuICAgIH0pO1xuXG4gICAgLy8gU3RhcnQgdGhlIE1lZGlhTGl2ZSBjaGFubmVsXG4gICAgYXV0b1N0YXJ0ICYmIHN0YXJ0Q2hhbm5lbCh0aGlzLCAnU3RhcnRNZWRpYUxpdmVDaGFubmVsJywgZW1sLmNoYW5uZWwucmVmKTtcblxuICAgIHRoaXMuZmxvdyA9IGZsb3c7XG4gICAgdGhpcy52cGMgPSB2cGM7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlTmRpRGlzY292ZXJ5U2VydmVyKHNjb3BlOiBDb25zdHJ1Y3QsIHZwYzogZWMyLklWcGMpOiBlYzIuSW5zdGFuY2Uge1xuICBjb25zdCBkZXNjcmlwdGlvbiA9ICdBbGxvdyBOREkgRGlzY292ZXJ5IFNlcnZpY2UnO1xuICBjb25zdCBzZyA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cChzY29wZSwgJ05ESVNlY3VyaXR5R3JvdXAnLCB7XG4gICAgdnBjLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gIH0pO1xuICBzZy5hcHBseVJlbW92YWxQb2xpY3koY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSk7XG4gIHNnLmFkZEluZ3Jlc3NSdWxlKFxuICAgIGVjMi5QZWVyLmFueUlwdjQoKSxcbiAgICBlYzIuUG9ydC50Y3AoZGlzY292ZXJ5U2VydmVyUG9ydCksXG4gICAgZGVzY3JpcHRpb24sXG4gICk7XG4gIGNvbnN0IGluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZShzY29wZSwgJ0luc3RhbmNlJywge1xuICAgIHZwYyxcbiAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoZWMyLkluc3RhbmNlQ2xhc3MuQlVSU1RBQkxFMywgZWMyLkluc3RhbmNlU2l6ZS5NSUNSTyksXG4gICAgbWFjaGluZUltYWdlOiBlYzIuTWFjaGluZUltYWdlLmxhdGVzdEFtYXpvbkxpbnV4MjAyMygpLFxuICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9LFxuICAgIHNlY3VyaXR5R3JvdXA6IHNnLFxuICB9KTtcbiAgaW5zdGFuY2UuYXBwbHlSZW1vdmFsUG9saWN5KGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAvLyBHZXQgdGhlIENsb3VkRm9ybWF0aW9uIGxvZ2ljYWwgSUQgZm9yIHRoZSBpbnN0YW5jZVxuICBjb25zdCBjZm5JbnN0YW5jZSA9IGluc3RhbmNlLm5vZGUuZGVmYXVsdENoaWxkIGFzIGNkay5DZm5SZXNvdXJjZTtcbiAgY29uc3QgbG9naWNhbElkID0gY2ZuSW5zdGFuY2UubG9naWNhbElkO1xuICBpbnN0YW5jZS5hcHBseUNsb3VkRm9ybWF0aW9uSW5pdChlYzIuQ2xvdWRGb3JtYXRpb25Jbml0LmZyb21Db25maWdTZXRzKHtcbiAgICBjb25maWdTZXRzOiB7XG4gICAgICAvLyBBcHBsaWVzIHRoZSBjb25maWdzIGJlbG93IGluIHRoaXMgb3JkZXJcbiAgICAgIGRlZmF1bHQ6IFsnY29uZmlnSW5zdGFuY2UnLCAnZmluYWxpemUnXSxcbiAgICB9LFxuICAgIGNvbmZpZ3M6IHtcbiAgICAgIGNvbmZpZ0luc3RhbmNlOiBuZXcgZWMyLkluaXRDb25maWcoW1xuICAgICAgICAvLyBOREkgRGlzY292ZXJ5IFNlcnZpY2Ugc2NyaXB0XG4gICAgICAgIGVjMi5Jbml0RmlsZS5mcm9tU3RyaW5nKFxuICAgICAgICAgICcvZXRjL3N5c3RlbWQvbmRpLWRpc2NvdmVyeS5zZXJ2aWNlJyxcbiAgICAgICAgICBgW1VuaXRdXG4gICAgICAgICAgRGVzY3JpcHRpb249TkRJIERpc2NvdmVyeSBTZXJ2aWNlXG4gICAgICAgICAgXG4gICAgICAgICAgW1NlcnZpY2VdXG4gICAgICAgICAgRXhlY1N0YXJ0UHJlPS9iaW4vc2xlZXAgMzBcbiAgICAgICAgICBVc2VyPWVjMi11c2VyXG4gICAgICAgICAgV29ya2luZ0RpcmVjdG9yeT0vaG9tZS9lYzItdXNlci9iaW4veDg2XzY0LWxpbnV4LWdudVxuICAgICAgICAgIEV4ZWNTdGFydD0vaG9tZS9lYzItdXNlci9iaW4veDg2XzY0LWxpbnV4LWdudS9uZGktZGlzY292ZXJ5LXNlcnZlclxuICAgICAgICAgIFJlc3RhcnQ9YWx3YXlzXG5cbiAgICAgICAgICBbSW5zdGFsbF1cbiAgICAgICAgICBXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldFxuICAgICAgICBgKSxcbiAgICAgICAgLy8gTkRJIERpc2NvdmVyeSBTZXJ2ZXIgSW5zdGFsbGF0aW9uIHNjcmlwdFxuICAgICAgICBlYzIuSW5pdEZpbGUuZnJvbVN0cmluZyhcbiAgICAgICAgICAnL3RtcC9pbnN0YWxsLW5kaS1kaXNjb3Zlcnkuc2gnLFxuICAgICAgICAgIGAjIS9iaW4vYmFzaCAteGVcbiAgICAgICAgICBjZCAvaG9tZS9lYzItdXNlclxuXG4gICAgICAgICAgI0luc3RhbGwgdXBkYXRlc1xuICAgICAgICAgIHl1bSB1cGRhdGUgLXlcblxuICAgICAgICAgICNEb3dubG9hZCB0aGUgTkRJIExpbnV4IFNESyBhbmQgZXh0cmFjdCBpdCBhbmQgcnVuIHRoZSBpbnN0YWxsIHNjcmlwdFxuICAgICAgICAgIHdnZXQgaHR0cHM6Ly9kb3dubG9hZHMubmRpLnR2L1NESy9ORElfU0RLX0xpbnV4L0luc3RhbGxfTkRJX1NES192Nl9MaW51eC50YXIuZ3pcbiAgICAgICAgICB0YXIgLXh6ZiBJbnN0YWxsX05ESV9TREtfdjZfTGludXgudGFyLmd6XG4gICAgICAgICAgeWVzIHwgc3VkbyAuL0luc3RhbGxfTkRJX1NES192Nl9MaW51eC5zaFxuXG4gICAgICAgICAgI0NsZWFuIHVwIGFuZCBwcmVwYXJlIGRpcmVjdG9yaWVzXG4gICAgICAgICAgcm0gLWYgSW5zdGFsbF9ORElfU0RLX3Y2X0xpbnV4LnRhci5nelxuICAgICAgICAgIHJtIC1mIEluc3RhbGxfTkRJX1NES192Nl9MaW51eC5zaFxuICAgICAgICAgIGNwIC1yICdOREkgU0RLIGZvciBMaW51eCcvKiAuL1xuICAgICAgICAgIHJtIC1yICdOREkgU0RLIGZvciBMaW51eCcvXG4gICAgICAgIGApLFxuICAgICAgICAvLyBJbnN0YWxsIHRoZSBOREkgRGlzY292ZXJ5IFNlcnZpY2VcbiAgICAgICAgZWMyLkluaXRDb21tYW5kLnNoZWxsQ29tbWFuZCgnc3VkbyBiYXNoIC90bXAvaW5zdGFsbC1uZGktZGlzY292ZXJ5LnNoJyksXG4gICAgICAgIC8vIFJ1biB0aGUgTkRJIERpc2NvdmVyeSBTZXJ2aWNlXG4gICAgICAgIGVjMi5Jbml0Q29tbWFuZC5zaGVsbENvbW1hbmQoJ3N1ZG8gc3lzdGVtY3RsIGVuYWJsZSAvZXRjL3N5c3RlbWQvbmRpLWRpc2NvdmVyeS5zZXJ2aWNlJyksXG4gICAgICBdKSxcbiAgICAgIGZpbmFsaXplOiBuZXcgZWMyLkluaXRDb25maWcoW1xuICAgICAgICAvLyBTdGFydCB0aGUgTkRJIERpc2NvdmVyeSBTZXJ2aWNlXG4gICAgICAgIGVjMi5Jbml0Q29tbWFuZC5zaGVsbENvbW1hbmQoXG4gICAgICAgICAgY2RrLkZuLnN1YignL29wdC9hd3MvYmluL2Nmbi1zaWduYWwgLWUgJD8gLS1zdGFjayAke1N0YWNrTmFtZX0gLS1yZXNvdXJjZSAke1Jlc291cmNlfSAtLXJlZ2lvbiAke1JlZ2lvbn0nLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBTdGFja05hbWU6IGNkay5Bd3MuU1RBQ0tfTkFNRSxcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IGxvZ2ljYWxJZCxcbiAgICAgICAgICAgICAgUmVnaW9uOiBjZGsuQXdzLlJFR0lPTixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgfSxcbiAgfSkpO1xuICBpbnN0YW5jZS5hZGRVc2VyRGF0YShjZGsuRm4uc3ViKGBcbiAgICAjIS9iaW4vYmFzaCAteGVcbiAgICB5dW0gaW5zdGFsbCAteSBhd3MtY2ZuLWJvb3RzdHJhcFxuICAgIHN1ZG8gL29wdC9hd3MvYmluL2Nmbi1pbml0IC0tY29uZmlnc2V0cyBkZWZhdWx0IC12IC0tc3RhY2sgXFwke1N0YWNrTmFtZX0gLS1yZXNvdXJjZSBcXCR7UmVzb3VyY2V9IC0tcmVnaW9uIFxcJHtSZWdpb259XG4gICAgc3VkbyByZWJvb3RcbiAgYCwge1xuICAgIFN0YWNrTmFtZTogY2RrLkF3cy5TVEFDS19OQU1FLFxuICAgIFJlc291cmNlOiBsb2dpY2FsSWQsXG4gICAgUmVnaW9uOiBjZGsuQXdzLlJFR0lPTixcbiAgfSkpO1xuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydEZsb3coc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgZmxvd0Fybjogc3RyaW5nKTogRGF0ZSB7XG4gIC8vIFN0YXJ0IGNoYW5uZWxcbiAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHNjb3BlLCBpZCwge1xuICAgIG9uQ3JlYXRlOiB7XG4gICAgICBzZXJ2aWNlOiAnTWVkaWFDb25uZWN0JyxcbiAgICAgIGFjdGlvbjogJ1N0YXJ0RmxvdycsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIEZsb3dBcm46IGZsb3dBcm4sXG4gICAgICB9LFxuICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoYCR7Y3J5cHRvLnJhbmRvbVVVSUQoKX1gKSxcbiAgICAgIC8vIGlnbm9yZUVycm9yQ29kZXNNYXRjaGluZzogJyonLFxuICAgICAgb3V0cHV0UGF0aHM6IFsnRmxvd0FybicsICdTdGF0dXMnXSxcbiAgICB9LFxuICAgIG9uRGVsZXRlOiB7XG4gICAgICBzZXJ2aWNlOiAnTWVkaWFDb25uZWN0JyxcbiAgICAgIGFjdGlvbjogJ1N0b3BGbG93JyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgRmxvd0FybjogZmxvd0FybixcbiAgICAgIH0sXG4gICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IFBoeXNpY2FsUmVzb3VyY2VJZC5vZihgJHtjcnlwdG8ucmFuZG9tVVVJRCgpfWApLFxuICAgICAgLy8gaWdub3JlRXJyb3JDb2Rlc01hdGNoaW5nOiAnKicsXG4gICAgICBvdXRwdXRQYXRoczogWydGbG93QXJuJywgJ1N0YXR1cyddLFxuICAgIH0sXG4gICAgLy9XaWxsIGlnbm9yZSBhbnkgcmVzb3VyY2UgYW5kIHVzZSB0aGUgYXNzdW1lZFJvbGVBcm4gYXMgcmVzb3VyY2UgYW5kICdzdHM6QXNzdW1lUm9sZScgZm9yIHNlcnZpY2U6YWN0aW9uXG4gICAgcG9saWN5OiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgcmVzb3VyY2VzOiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5BTllfUkVTT1VSQ0UsXG4gICAgfSksXG4gIH0pO1xuICByZXR1cm4gbmV3IERhdGUoKTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -36,14 +36,14 @@
36
36
  "devDependencies": {
37
37
  "@stylistic/eslint-plugin": "^2",
38
38
  "@types/jest": "^30.0.0",
39
- "@types/node": "^24.0.8",
39
+ "@types/node": "^24.0.10",
40
40
  "@typescript-eslint/eslint-plugin": "^8",
41
41
  "@typescript-eslint/parser": "^8",
42
42
  "commit-and-tag-version": "^12",
43
43
  "eslint": "^9",
44
44
  "eslint-import-resolver-typescript": "^4.4.4",
45
45
  "eslint-plugin-import": "^2.32.0",
46
- "jest": "^30.0.3",
46
+ "jest": "^30.0.4",
47
47
  "jest-junit": "^16",
48
48
  "jsii": "~5.8.10",
49
49
  "jsii-diff": "^1.112.0",
@@ -60,8 +60,8 @@
60
60
  "constructs": "^10.0.5"
61
61
  },
62
62
  "dependencies": {
63
- "aws-cdk-lib": "^2.203.1",
64
- "awscdk-construct-medialive-channel": "^0.0.8",
63
+ "aws-cdk-lib": "^2.204.0",
64
+ "awscdk-construct-medialive-channel": "^0.0.9",
65
65
  "constructs": "^10.4.2"
66
66
  },
67
67
  "keywords": [
@@ -74,7 +74,7 @@
74
74
  "publishConfig": {
75
75
  "access": "public"
76
76
  },
77
- "version": "0.0.4",
77
+ "version": "0.0.6",
78
78
  "jest": {
79
79
  "coverageProvider": "v8",
80
80
  "testMatch": [