@aws-cdk/aws-gamelift-alpha 2.219.0-alpha.0 → 2.221.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 +3 -3
- package/.jsii.tabl.json.gz +0 -0
- package/lib/alias.js +164 -112
- package/lib/build-fleet.js +202 -140
- package/lib/build.js +188 -133
- package/lib/content.js +10 -8
- package/lib/fleet-base.js +7 -12
- package/lib/game-server-group.js +239 -171
- package/lib/game-session-queue.js +239 -190
- package/lib/ingress-rule.js +7 -7
- package/lib/matchmaking-configuration.js +5 -7
- package/lib/matchmaking-ruleset-body.js +6 -4
- package/lib/matchmaking-ruleset.js +143 -95
- package/lib/queued-matchmaking-configuration.js +194 -140
- package/lib/script.js +160 -104
- package/lib/standalone-matchmaking-configuration.js +144 -91
- package/package.json +9 -8
|
@@ -1,11 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
3
|
+
var useValue = arguments.length > 2;
|
|
4
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
5
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
6
|
+
}
|
|
7
|
+
return useValue ? value : void 0;
|
|
8
|
+
};
|
|
9
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
10
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
11
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
12
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
13
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
14
|
+
var _, done = false;
|
|
15
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
16
|
+
var context = {};
|
|
17
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
18
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
19
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
20
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
21
|
+
if (kind === "accessor") {
|
|
22
|
+
if (result === void 0) continue;
|
|
23
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
24
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
25
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
26
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
27
|
+
}
|
|
28
|
+
else if (_ = accept(result)) {
|
|
29
|
+
if (kind === "field") initializers.unshift(_);
|
|
30
|
+
else descriptor[key] = _;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
34
|
+
done = true;
|
|
7
35
|
};
|
|
8
|
-
var _a, _b;
|
|
9
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
37
|
exports.GameSessionQueue = exports.GameSessionQueueBase = exports.PriorityType = void 0;
|
|
11
38
|
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
@@ -41,6 +68,7 @@ var PriorityType;
|
|
|
41
68
|
* Base class for new and imported GameLift GameSessionQueue.
|
|
42
69
|
*/
|
|
43
70
|
class GameSessionQueueBase extends cdk.Resource {
|
|
71
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-gamelift-alpha.GameSessionQueueBase", version: "2.221.0-alpha.0" };
|
|
44
72
|
metric(metricName, props) {
|
|
45
73
|
return new cloudwatch.Metric({
|
|
46
74
|
namespace: 'AWS/GameLift',
|
|
@@ -71,8 +99,6 @@ class GameSessionQueueBase extends cdk.Resource {
|
|
|
71
99
|
}
|
|
72
100
|
}
|
|
73
101
|
exports.GameSessionQueueBase = GameSessionQueueBase;
|
|
74
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
75
|
-
GameSessionQueueBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.GameSessionQueueBase", version: "2.219.0-alpha.0" };
|
|
76
102
|
/**
|
|
77
103
|
* The GameSessionQueue resource creates a placement queue that processes requests for new game sessions.
|
|
78
104
|
* A queue uses FleetIQ algorithms to determine the best placement locations and find an available game server, then prompts the game server to start a new game session.
|
|
@@ -81,207 +107,230 @@ GameSessionQueueBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.GameSessionQueueB
|
|
|
81
107
|
*
|
|
82
108
|
* @resource AWS::GameLift::GameSessionQueue
|
|
83
109
|
*/
|
|
84
|
-
let GameSessionQueue =
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
try {
|
|
102
|
-
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_GameSessionQueueAttributes(attrs);
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
106
|
-
Error.captureStackTrace(error, this.fromGameSessionQueueAttributes);
|
|
107
|
-
}
|
|
108
|
-
throw error;
|
|
110
|
+
let GameSessionQueue = (() => {
|
|
111
|
+
let _classDecorators = [prop_injectable_1.propertyInjectable];
|
|
112
|
+
let _classDescriptor;
|
|
113
|
+
let _classExtraInitializers = [];
|
|
114
|
+
let _classThis;
|
|
115
|
+
let _classSuper = GameSessionQueueBase;
|
|
116
|
+
let _instanceExtraInitializers = [];
|
|
117
|
+
let _addDestination_decorators;
|
|
118
|
+
var GameSessionQueue = class extends _classSuper {
|
|
119
|
+
static { _classThis = this; }
|
|
120
|
+
static {
|
|
121
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
122
|
+
_addDestination_decorators = [(0, metadata_resource_1.MethodMetadata)()];
|
|
123
|
+
__esDecorate(this, null, _addDestination_decorators, { kind: "method", name: "addDestination", static: false, private: false, access: { has: obj => "addDestination" in obj, get: obj => obj.addDestination }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
124
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
125
|
+
GameSessionQueue = _classThis = _classDescriptor.value;
|
|
126
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
109
127
|
}
|
|
110
|
-
|
|
111
|
-
|
|
128
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-gamelift-alpha.GameSessionQueue", version: "2.221.0-alpha.0" };
|
|
129
|
+
/** Uniquely identifies this class. */
|
|
130
|
+
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-gamelift-alpha.GameSessionQueue';
|
|
131
|
+
/**
|
|
132
|
+
* Import an existing gameSessionQueue from its name.
|
|
133
|
+
*/
|
|
134
|
+
static fromGameSessionQueueName(scope, id, gameSessionQueueName) {
|
|
135
|
+
return this.fromGameSessionQueueAttributes(scope, id, { gameSessionQueueName });
|
|
112
136
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Import an existing gameSessionQueue from its ARN.
|
|
139
|
+
*/
|
|
140
|
+
static fromGameSessionQueueArn(scope, id, gameSessionQueueArn) {
|
|
141
|
+
return this.fromGameSessionQueueAttributes(scope, id, { gameSessionQueueArn });
|
|
117
142
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
class Import extends GameSessionQueueBase {
|
|
125
|
-
constructor(s, i) {
|
|
126
|
-
super(s, i, {
|
|
127
|
-
environmentFromArn: gameSessionQueueArn,
|
|
128
|
-
});
|
|
129
|
-
this.gameSessionQueueName = gameSessionQueueName;
|
|
130
|
-
this.gameSessionQueueArn = gameSessionQueueArn;
|
|
143
|
+
/**
|
|
144
|
+
* Import an existing gameSessionQueue from its attributes.
|
|
145
|
+
*/
|
|
146
|
+
static fromGameSessionQueueAttributes(scope, id, attrs) {
|
|
147
|
+
try {
|
|
148
|
+
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_GameSessionQueueAttributes(attrs);
|
|
131
149
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
physicalName: props.gameSessionQueueName,
|
|
138
|
-
});
|
|
139
|
-
this.destinations = [];
|
|
140
|
-
try {
|
|
141
|
-
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_GameSessionQueueProps(props);
|
|
142
|
-
}
|
|
143
|
-
catch (error) {
|
|
144
|
-
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
145
|
-
Error.captureStackTrace(error, GameSessionQueue);
|
|
150
|
+
catch (error) {
|
|
151
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
152
|
+
Error.captureStackTrace(error, this.fromGameSessionQueueAttributes);
|
|
153
|
+
}
|
|
154
|
+
throw error;
|
|
146
155
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
// Enhanced CDK Analytics Telemetry
|
|
150
|
-
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
151
|
-
if (!cdk.Token.isUnresolved(props.gameSessionQueueName)) {
|
|
152
|
-
if (props.gameSessionQueueName.length > 128) {
|
|
153
|
-
throw new Error(`GameSessionQueue name can not be longer than 128 characters but has ${props.gameSessionQueueName.length} characters.`);
|
|
156
|
+
if (!attrs.gameSessionQueueName && !attrs.gameSessionQueueArn) {
|
|
157
|
+
throw new Error('Either gameSessionQueueName or gameSessionQueueArn must be provided in GameSessionQueueAttributes');
|
|
154
158
|
}
|
|
155
|
-
|
|
156
|
-
|
|
159
|
+
const gameSessionQueueName = attrs.gameSessionQueueName ??
|
|
160
|
+
cdk.Stack.of(scope).splitArn(attrs.gameSessionQueueArn, cdk.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
|
|
161
|
+
if (!gameSessionQueueName) {
|
|
162
|
+
throw new Error(`No gameSessionQueue name found in ARN: '${attrs.gameSessionQueueArn}'`);
|
|
157
163
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
notificationTarget: props.notificationTarget && props.notificationTarget.topicArn,
|
|
173
|
-
playerLatencyPolicies: this.parsePlayerLatencyPolicies(props),
|
|
174
|
-
priorityConfiguration: this.parsePriorityConfiguration(props),
|
|
175
|
-
timeoutInSeconds: props.timeout && props.timeout.toSeconds(),
|
|
176
|
-
});
|
|
177
|
-
this.gameSessionQueueName = this.getResourceNameAttribute(resource.ref);
|
|
178
|
-
this.gameSessionQueueArn = cdk.Stack.of(scope).formatArn({
|
|
179
|
-
service: 'gamelift',
|
|
180
|
-
resource: 'gamesessionqueue',
|
|
181
|
-
resourceName: this.gameSessionQueueName,
|
|
182
|
-
arnFormat: cdk.ArnFormat.SLASH_RESOURCE_NAME,
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Adds a destination to fulfill requests for new game sessions
|
|
187
|
-
*
|
|
188
|
-
* @param destination A destination to add
|
|
189
|
-
*/
|
|
190
|
-
addDestination(destination) {
|
|
191
|
-
try {
|
|
192
|
-
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_IGameSessionQueueDestination(destination);
|
|
193
|
-
}
|
|
194
|
-
catch (error) {
|
|
195
|
-
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
196
|
-
Error.captureStackTrace(error, this.addDestination);
|
|
164
|
+
const gameSessionQueueArn = attrs.gameSessionQueueArn ?? cdk.Stack.of(scope).formatArn({
|
|
165
|
+
service: 'gamelift',
|
|
166
|
+
resource: 'gamesessionqueue',
|
|
167
|
+
resourceName: attrs.gameSessionQueueName,
|
|
168
|
+
arnFormat: cdk.ArnFormat.SLASH_RESOURCE_NAME,
|
|
169
|
+
});
|
|
170
|
+
class Import extends GameSessionQueueBase {
|
|
171
|
+
gameSessionQueueName = gameSessionQueueName;
|
|
172
|
+
gameSessionQueueArn = gameSessionQueueArn;
|
|
173
|
+
constructor(s, i) {
|
|
174
|
+
super(s, i, {
|
|
175
|
+
environmentFromArn: gameSessionQueueArn,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
197
178
|
}
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
this.destinations.push(destination);
|
|
201
|
-
}
|
|
202
|
-
parsePriorityConfiguration(props) {
|
|
203
|
-
try {
|
|
204
|
-
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_GameSessionQueueProps(props);
|
|
179
|
+
return new Import(scope, id);
|
|
205
180
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
181
|
+
/**
|
|
182
|
+
* The Identifier of the gameSessionQueue.
|
|
183
|
+
*/
|
|
184
|
+
gameSessionQueueName = __runInitializers(this, _instanceExtraInitializers);
|
|
185
|
+
/**
|
|
186
|
+
* The ARN of the gameSessionQueue.
|
|
187
|
+
*/
|
|
188
|
+
gameSessionQueueArn;
|
|
189
|
+
destinations = [];
|
|
190
|
+
constructor(scope, id, props) {
|
|
191
|
+
super(scope, id, {
|
|
192
|
+
physicalName: props.gameSessionQueueName,
|
|
193
|
+
});
|
|
194
|
+
try {
|
|
195
|
+
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_GameSessionQueueProps(props);
|
|
209
196
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
parsePlayerLatencyPolicies(props) {
|
|
227
|
-
try {
|
|
228
|
-
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_GameSessionQueueProps(props);
|
|
229
|
-
}
|
|
230
|
-
catch (error) {
|
|
231
|
-
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
232
|
-
Error.captureStackTrace(error, this.parsePlayerLatencyPolicies);
|
|
197
|
+
catch (error) {
|
|
198
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
199
|
+
Error.captureStackTrace(error, GameSessionQueue);
|
|
200
|
+
}
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
// Enhanced CDK Analytics Telemetry
|
|
204
|
+
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
205
|
+
if (!cdk.Token.isUnresolved(props.gameSessionQueueName)) {
|
|
206
|
+
if (props.gameSessionQueueName.length > 128) {
|
|
207
|
+
throw new Error(`GameSessionQueue name can not be longer than 128 characters but has ${props.gameSessionQueueName.length} characters.`);
|
|
208
|
+
}
|
|
209
|
+
if (!/^[a-zA-Z0-9-]+$/.test(props.gameSessionQueueName)) {
|
|
210
|
+
throw new Error(`GameSessionQueue name ${props.gameSessionQueueName} can contain only letters, numbers, hyphens with no spaces.`);
|
|
211
|
+
}
|
|
233
212
|
}
|
|
234
|
-
|
|
213
|
+
if (props.customEventData && props.customEventData.length > 256) {
|
|
214
|
+
throw new Error(`GameSessionQueue custom event data can not be longer than 256 characters but has ${props.customEventData.length} characters.`);
|
|
215
|
+
}
|
|
216
|
+
if (props.allowedLocations && props.allowedLocations.length > 100) {
|
|
217
|
+
throw new Error(`No more than 100 allowed locations are allowed per game session queue, given ${props.allowedLocations.length}`);
|
|
218
|
+
}
|
|
219
|
+
// Add all destinations
|
|
220
|
+
(props.destinations || []).forEach(this.addDestination.bind(this));
|
|
221
|
+
const resource = new aws_gamelift_1.CfnGameSessionQueue(this, 'Resource', {
|
|
222
|
+
name: this.physicalName,
|
|
223
|
+
customEventData: props.customEventData,
|
|
224
|
+
destinations: cdk.Lazy.any({ produce: () => this.parseDestinations() }),
|
|
225
|
+
filterConfiguration: this.parseFilterConfiguration(props),
|
|
226
|
+
notificationTarget: props.notificationTarget && props.notificationTarget.topicArn,
|
|
227
|
+
playerLatencyPolicies: this.parsePlayerLatencyPolicies(props),
|
|
228
|
+
priorityConfiguration: this.parsePriorityConfiguration(props),
|
|
229
|
+
timeoutInSeconds: props.timeout && props.timeout.toSeconds(),
|
|
230
|
+
});
|
|
231
|
+
this.gameSessionQueueName = this.getResourceNameAttribute(resource.ref);
|
|
232
|
+
this.gameSessionQueueArn = cdk.Stack.of(scope).formatArn({
|
|
233
|
+
service: 'gamelift',
|
|
234
|
+
resource: 'gamesessionqueue',
|
|
235
|
+
resourceName: this.gameSessionQueueName,
|
|
236
|
+
arnFormat: cdk.ArnFormat.SLASH_RESOURCE_NAME,
|
|
237
|
+
});
|
|
235
238
|
}
|
|
236
|
-
|
|
237
|
-
|
|
239
|
+
/**
|
|
240
|
+
* Adds a destination to fulfill requests for new game sessions
|
|
241
|
+
*
|
|
242
|
+
* @param destination A destination to add
|
|
243
|
+
*/
|
|
244
|
+
addDestination(destination) {
|
|
245
|
+
try {
|
|
246
|
+
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_IGameSessionQueueDestination(destination);
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
250
|
+
Error.captureStackTrace(error, this.addDestination);
|
|
251
|
+
}
|
|
252
|
+
throw error;
|
|
253
|
+
}
|
|
254
|
+
this.destinations.push(destination);
|
|
238
255
|
}
|
|
239
|
-
|
|
240
|
-
|
|
256
|
+
parsePriorityConfiguration(props) {
|
|
257
|
+
try {
|
|
258
|
+
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_GameSessionQueueProps(props);
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
262
|
+
Error.captureStackTrace(error, this.parsePriorityConfiguration);
|
|
263
|
+
}
|
|
264
|
+
throw error;
|
|
265
|
+
}
|
|
266
|
+
if (!props.priorityConfiguration) {
|
|
267
|
+
return undefined;
|
|
268
|
+
}
|
|
269
|
+
if (props.priorityConfiguration.locationOrder.length > 100) {
|
|
270
|
+
throw new Error(`No more than 100 locations are allowed per priority configuration, given ${props.priorityConfiguration.locationOrder.length}`);
|
|
271
|
+
}
|
|
272
|
+
if (props.priorityConfiguration.priorityOrder.length > 4) {
|
|
273
|
+
throw new Error(`No more than 4 priorities are allowed per priority configuration, given ${props.priorityConfiguration.priorityOrder.length}`);
|
|
274
|
+
}
|
|
241
275
|
return {
|
|
242
|
-
|
|
243
|
-
|
|
276
|
+
priorityOrder: props.priorityConfiguration.priorityOrder,
|
|
277
|
+
locationOrder: props.priorityConfiguration.locationOrder,
|
|
244
278
|
};
|
|
245
279
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
280
|
+
parsePlayerLatencyPolicies(props) {
|
|
281
|
+
try {
|
|
282
|
+
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_GameSessionQueueProps(props);
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
286
|
+
Error.captureStackTrace(error, this.parsePlayerLatencyPolicies);
|
|
287
|
+
}
|
|
288
|
+
throw error;
|
|
289
|
+
}
|
|
290
|
+
if (!props.playerLatencyPolicies) {
|
|
291
|
+
return undefined;
|
|
292
|
+
}
|
|
293
|
+
return props.playerLatencyPolicies.map(parsePlayerLatencyPolicy);
|
|
294
|
+
function parsePlayerLatencyPolicy(playerLatencyPolicy) {
|
|
295
|
+
return {
|
|
296
|
+
maximumIndividualPlayerLatencyMilliseconds: playerLatencyPolicy.maximumIndividualPlayerLatency.toMilliseconds(),
|
|
297
|
+
policyDurationSeconds: playerLatencyPolicy.policyDuration && playerLatencyPolicy.policyDuration.toSeconds(),
|
|
298
|
+
};
|
|
254
299
|
}
|
|
255
|
-
throw error;
|
|
256
|
-
}
|
|
257
|
-
if (!props.allowedLocations) {
|
|
258
|
-
return undefined;
|
|
259
|
-
}
|
|
260
|
-
return {
|
|
261
|
-
allowedLocations: props.allowedLocations,
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
parseDestinations() {
|
|
265
|
-
if (!this.destinations || this.destinations.length === 0) {
|
|
266
|
-
return undefined;
|
|
267
300
|
}
|
|
268
|
-
|
|
269
|
-
|
|
301
|
+
parseFilterConfiguration(props) {
|
|
302
|
+
try {
|
|
303
|
+
jsiiDeprecationWarnings._aws_cdk_aws_gamelift_alpha_GameSessionQueueProps(props);
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
307
|
+
Error.captureStackTrace(error, this.parseFilterConfiguration);
|
|
308
|
+
}
|
|
309
|
+
throw error;
|
|
310
|
+
}
|
|
311
|
+
if (!props.allowedLocations) {
|
|
312
|
+
return undefined;
|
|
313
|
+
}
|
|
270
314
|
return {
|
|
271
|
-
|
|
315
|
+
allowedLocations: props.allowedLocations,
|
|
272
316
|
};
|
|
273
317
|
}
|
|
274
|
-
|
|
275
|
-
|
|
318
|
+
parseDestinations() {
|
|
319
|
+
if (!this.destinations || this.destinations.length === 0) {
|
|
320
|
+
return undefined;
|
|
321
|
+
}
|
|
322
|
+
return this.destinations.map(parseDestination);
|
|
323
|
+
function parseDestination(destination) {
|
|
324
|
+
return {
|
|
325
|
+
destinationArn: destination.resourceArnForDestination,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
static {
|
|
330
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
return GameSessionQueue = _classThis;
|
|
334
|
+
})();
|
|
276
335
|
exports.GameSessionQueue = GameSessionQueue;
|
|
277
|
-
_b = JSII_RTTI_SYMBOL_1;
|
|
278
|
-
GameSessionQueue[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.GameSessionQueue", version: "2.219.0-alpha.0" };
|
|
279
|
-
/** Uniquely identifies this class. */
|
|
280
|
-
GameSessionQueue.PROPERTY_INJECTION_ID = '@aws-cdk.aws-gamelift-alpha.GameSessionQueue';
|
|
281
|
-
__decorate([
|
|
282
|
-
(0, metadata_resource_1.MethodMetadata)()
|
|
283
|
-
], GameSessionQueue.prototype, "addDestination", null);
|
|
284
|
-
exports.GameSessionQueue = GameSessionQueue = __decorate([
|
|
285
|
-
prop_injectable_1.propertyInjectable
|
|
286
|
-
], GameSessionQueue);
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtZS1zZXNzaW9uLXF1ZXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2FtZS1zZXNzaW9uLXF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHlEQUF5RDtBQUV6RCx3Q0FBd0M7QUFFeEMsMkRBQStEO0FBQy9ELDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFlMUU7O0dBRUc7QUFDSCxJQUFZLFlBb0JYO0FBcEJELFdBQVksWUFBWTtJQUN0Qjs7T0FFRztJQUNILG1DQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsNkJBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsMkNBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxxQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBcEJXLFlBQVksNEJBQVosWUFBWSxRQW9CdkI7QUF5TUQ7O0dBRUc7QUFDSCxNQUFzQixvQkFBcUIsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVd0RCxNQUFNLENBQUMsVUFBa0IsRUFBRSxLQUFnQztRQUNoRSxPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUMzQixTQUFTLEVBQUUsY0FBYztZQUN6QixVQUFVLEVBQUUsVUFBVTtZQUN0QixhQUFhLEVBQUU7Z0JBQ2Isb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjthQUNoRDtZQUNELEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbkI7SUFFRCxxQkFBcUIsQ0FBQyxLQUFnQztRQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDOUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUFnQztRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDakQ7SUFFRCxzQkFBc0IsQ0FBQyxLQUFnQztRQUNyRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMs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QUMsU0FBUyxFQUFFO2FBQzVHLENBQUM7UUFDSixDQUFDO0tBQ0Y7SUFFUyx3QkFBd0IsQ0FBQyxLQUE0Qjs7Ozs7Ozs7OztRQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1NBQ3pDLENBQUM7S0FDSDtJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRS9DLFNBQVMsZ0JBQWdCLENBQUMsV0FBeUM7WUFDakUsT0FBTztnQkFDTCxjQUFjLEVBQUUsV0FBVyxDQUFDLHlCQUF5QjthQUN0RCxDQUFDO1FBQ0osQ0FBQztLQUNGOztBQWpMVSw0Q0FBZ0I7OztBQUMzQixzQ0FBc0M7QUFDZixzQ0FBcUIsR0FBVyw4Q0FBOEMsQUFBekQsQ0FBMEQ7QUFtSC9GO0lBRE4sSUFBQSxrQ0FBYyxHQUFFO3NEQUdoQjsyQkF2SFUsZ0JBQWdCO0lBRDVCLG9DQUFrQjtHQUNOLGdCQUFnQixDQWtMNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ2ZuR2FtZVNlc3Npb25RdWV1ZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1nYW1lbGlmdCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnYW1lIHNlc3Npb24gcXVldWUgZGVzdGluYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR2FtZVNlc3Npb25RdWV1ZURlc3RpbmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4ocykgdG8gcHV0IGludG8gdGhlIGRlc3RpbmF0aW9uIGZpZWxkIGZvciBhIGdhbWUgc2Vzc2lvbiBxdWV1ZS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSBpcyBmb3IgY2RrIG1vZHVsZXMgdG8gY29uc3VtZSBvbmx5LiBZb3Ugc2hvdWxkIG5vdCBuZWVkIHRvIHVzZSB0aGlzIHByb3BlcnR5LlxuICAgKiBJbnN0ZWFkLCB1c2UgZGVkaWNhdGVkIGlkZW50aWZpZXIgb24gZWFjaCBjb21wb25lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VBcm5Gb3JEZXN0aW5hdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByaW9yaXR5IHRvIGNvbmRpZGVyIHdoZW4gcGxhY2luZyBuZXcgZ2FtZSBzZXNzaW9uc1xuICovXG5leHBvcnQgZW51bSBQcmlvcml0eVR5cGUge1xuICAvKipcbiAgICogRmxlZXRJUSBwcmlvcml0aXplcyBsb2NhdGlvbnMgd2hlcmUgdGhlIGF2ZXJhZ2UgcGxheWVyIGxhdGVuY3kgKHByb3ZpZGVkIGluIGVhY2ggZ2FtZSBzZXNzaW9uIHJlcXVlc3QpIGlzIGxvd2VzdC5cbiAgICovXG4gIExBVEVOQ1kgPSAnTEFURU5DWScsXG5cbiAgLyoqXG4gICAqIEZsZWV0SVEgcHJpb3JpdGl6ZXMgZGVzdGluYXRpb25zIHdpdGggdGhlIGxvd2VzdCBjdXJyZW50IGhvc3RpbmcgY29zdHMuIENvc3QgaXMgZXZhbHVhdGVkIGJhc2VkIG9uIHRoZSBsb2NhdGlvbiwgaW5zdGFuY2UgdHlwZSwgYW5kIGZsZWV0IHR5cGUgKFNwb3Qgb3IgT24tRGVtYW5kKSBmb3IgZWFjaCBkZXN0aW5hdGlvbiBpbiB0aGUgcXVldWUuXG4gICAqL1xuICBDT1NUID0gJ0NPU1QnLFxuXG4gIC8qKlxuICAgKiBGbGVldElRIHByaW9yaXRpemVzIGJhc2VkIG9uIHRoZSBvcmRlciB0aGF0IGRlc3RpbmF0aW9ucyBhcmUgbGlzdGVkIGluIHRoZSBxdWV1ZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgREVTVElOQVRJT04gPSAnREVTVElOQVRJT04nLFxuXG4gIC8qKlxuICAgKiBGbGVldElRIHByaW9yaXRpemVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcmRlciBvZiBsb2NhdGlvbnMsIGFzIGRlZmluZWQgaW4gYExvY2F0aW9uT3JkZXJgXG4gICAqL1xuICBMT0NBVElPTiA9ICdMT0NBVElPTicsXG59XG5cbi8qKlxuICogQ3VzdG9tIHByaW9yaXRpemF0aW9uIHNldHRpbmdzIGZvciB1c2UgYnkgYSBnYW1lIHNlc3Npb24gcXVldWUgd2hlbiBwbGFjaW5nIG5ldyBnYW1lIHNlc3Npb25zIHdpdGggYXZhaWxhYmxlIGdhbWUgc2VydmVycy5cbiAqIFdoZW4gZGVmaW5lZCwgdGhpcyBjb25maWd1cmF0aW9uIHJlcGxhY2VzIHRoZSBkZWZhdWx0IEZsZWV0SVEgcHJpb3JpdGl6YXRpb24gcHJvY2Vzcywgd2hpY2ggaXMgYXMgZm9sbG93czpcbiAqXG4gKiAtIElmIHBsYXllciBsYXRlbmN5IGRhdGEgaXMgaW5jbHVkZWQgaW4gYSBnYW1lIHNlc3Npb24gcmVxdWVzdCwgZGVzdGluYXRpb25zIGFuZCBsb2NhdGlvbnMgYXJlIHByaW9yaXRpemVkIGZpcnN0IGJhc2VkIG9uIGxvd2VzdCBhdmVyYWdlIGxhdGVuY3kgKDEpLCB0aGVuIG9uIGxvd2VzdCBob3N0aW5nIGNvc3QgKDIpLCB0aGVuIG9uIGRlc3RpbmF0aW9uIGxpc3Qgb3JkZXIgKDMpLCBhbmQgZmluYWxseSBvbiBsb2NhdGlvbiAoYWxwaGFiZXRpY2FsKSAoNCkuXG4gKiBUaGlzIGFwcHJvYWNoIGVuc3VyZXMgdGhhdCB0aGUgcXVldWUncyB0b3AgcHJpb3JpdHkgaXMgdG8gcGxhY2UgZ2FtZSBzZXNzaW9ucyB3aGVyZSBhdmVyYWdlIHBsYXllciBsYXRlbmN5IGlzIGxvd2VzdCwgYW5kLS1pZiBsYXRlbmN5IGlzIHRoZSBzYW1lLS13aGVyZSB0aGUgaG9zdGluZyBjb3N0IGlzIGxlc3MsIGV0Yy5cbiAqXG4gKiAtIElmIHBsYXllciBsYXRlbmN5IGRhdGEgaXMgbm90IGluY2x1ZGVkLCBkZXN0aW5hdGlvbnMgYW5kIGxvY2F0aW9ucyBhcmUgcHJpb3JpdGl6ZWQgZmlyc3Qgb24gZGVzdGluYXRpb24gbGlzdCBvcmRlciAoMSksIGFuZCB0aGVuIG9uIGxvY2F0aW9uIChhbHBoYWJldGljYWwpICgyKS5cbiAqIFRoaXMgYXBwcm9hY2ggZW5zdXJlcyB0aGF0IHRoZSBxdWV1ZSdzIHRvcCBwcmlvcml0eSBpcyB0byBwbGFjZSBnYW1lIHNlc3Npb25zIG9uIHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBmbGVldCBsaXN0ZWQuIElmIHRoYXQgZmxlZXQgaGFzIG11bHRpcGxlIGxvY2F0aW9ucywgdGhlIGdhbWUgc2Vzc2lvbiBpcyBwbGFjZWQgb24gdGhlIGZpcnN0IGxvY2F0aW9uICh3aGVuIGxpc3RlZCBhbHBoYWJldGljYWxseSkuXG4gKlxuICogQ2hhbmdpbmcgdGhlIHByaW9yaXR5IG9yZGVyIHdpbGwgYWZmZWN0IGhvdyBnYW1lIHNlc3Npb25zIGFyZSBwbGFjZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJpb3JpdHlDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0aXphdGlvbiBvcmRlciB0byB1c2UgZm9yIGZsZWV0IGxvY2F0aW9ucywgd2hlbiB0aGUgUHJpb3JpdHlPcmRlciBwcm9wZXJ0eSBpbmNsdWRlcyBMT0NBVElPTi4gTG9jYXRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IEFXUyBSZWdpb24gY29kZXMgc3VjaCBhcyBgdXMtd2VzdC0yLlxuICAgKlxuICAgKiBFYWNoIGxvY2F0aW9uIGNhbiBvbmx5IGJlIGxpc3RlZCBvbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb25PcmRlcjogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSByZWNvbW1lbmRlZCBzZXF1ZW5jZSB0byB1c2Ugd2hlbiBwcmlvcml0aXppbmcgd2hlcmUgdG8gcGxhY2UgbmV3IGdhbWUgc2Vzc2lvbnMuXG4gICAqIEVhY2ggdHlwZSBjYW4gb25seSBiZSBsaXN0ZWQgb25jZS5cbiAgICovXG4gIHJlYWRvbmx5IHByaW9yaXR5T3JkZXI6IFByaW9yaXR5VHlwZVtdO1xufVxuXG4vKipcbiAqIFRoZSBxdWV1ZSBzZXR0aW5nIHRoYXQgZGV0ZXJtaW5lcyB0aGUgaGlnaGVzdCBsYXRlbmN5IGFsbG93ZWQgZm9yIGluZGl2aWR1YWwgcGxheWVycyB3aGVuIHBsYWNpbmcgYSBnYW1lIHNlc3Npb24uXG4gKiBXaGVuIGEgbGF0ZW5jeSBwb2xpY3kgaXMgaW4gZm9yY2UsIGEgZ2FtZSBzZXNzaW9uIGNhbm5vdCBiZSBwbGFjZWQgd2l0aCBhbnkgZmxlZXQgaW4gYSBSZWdpb24gd2hlcmUgYSBwbGF5ZXIgcmVwb3J0cyBsYXRlbmN5IGhpZ2hlciB0aGFuIHRoZSBjYXAuXG4gKlxuICogTGF0ZW5jeSBwb2xpY2llcyBhcmUgb25seSBlbmZvcmNlZCB3aGVuIHRoZSBwbGFjZW1lbnQgcmVxdWVzdCBjb250YWlucyBwbGF5ZXIgbGF0ZW5jeSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGF5ZXJMYXRlbmN5UG9saWN5IHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGxhdGVuY3kgdmFsdWUgdGhhdCBpcyBhbGxvd2VkIGZvciBhbnkgcGxheWVyLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIEFsbCBwb2xpY2llcyBtdXN0IGhhdmUgYSB2YWx1ZSBzZXQgZm9yIHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICByZWFkb25seSBtYXhpbXVtSW5kaXZpZHVhbFBsYXllckxhdGVuY3k6IGNkay5EdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IHRoZSBwb2xpY3kgaXMgZW5mb3JjZWQgd2hpbGUgcGxhY2luZyBhIG5ldyBnYW1lIHNlc3Npb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBwb2xpY3kgaXMgZW5mb3JjZWQgdW50aWwgdGhlIHF1ZXVlIHRpbWVzIG91dC5cbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUR1cmF0aW9uPzogY2RrLkR1cmF0aW9uO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBHYW1lbGlmdCBHYW1lU2Vzc2lvblF1ZXVlIGZvciBhIEdhbWVsaWZ0IGZsZWV0IGRlc3RpbmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHYW1lU2Vzc2lvblF1ZXVlIGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgZ2FtZVNlc3Npb25RdWV1ZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlc3Npb25RdWV1ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2FtZVNlc3Npb25RdWV1ZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlc3Npb25RdWV1ZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBmbGVldC5cbiAgICovXG4gIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIEF2ZXJhZ2UgYW1vdW50IG9mIHRpbWUgdGhhdCBnYW1lIHNlc3Npb24gcGxhY2VtZW50IHJlcXVlc3RzIGluIHRoZSBxdWV1ZSB3aXRoIHN0YXR1cyBQRU5ESU5HIGhhdmUgYmVlbiB3YWl0aW5nIHRvIGJlIGZ1bGZpbGxlZC5cbiAgICovXG4gIG1ldHJpY0F2ZXJhZ2VXYWl0VGltZShwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBHYW1lIHNlc3Npb24gcGxhY2VtZW50IHJlcXVlc3RzIHRoYXQgd2VyZSBjYW5jZWxlZCBiZWZvcmUgdGltaW5nIG91dCBzaW5jZSB0aGUgbGFzdCByZXBvcnQuXG4gICAqL1xuICBtZXRyaWNQbGFjZW1lbnRzQ2FuY2VsZWQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogR2FtZSBzZXNzaW9uIHBsYWNlbWVudCByZXF1ZXN0cyB0aGF0IGZhaWxlZCBmb3IgYW55IHJlYXNvbiBzaW5jZSB0aGUgbGFzdCByZXBvcnQuXG4gICAqL1xuICBtZXRyaWNQbGFjZW1lbnRzRmFpbGVkKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIE5ldyBnYW1lIHNlc3Npb24gcGxhY2VtZW50IHJlcXVlc3RzIHRoYXQgd2VyZSBhZGRlZCB0byB0aGUgcXVldWUgc2luY2UgdGhlIGxhc3QgcmVwb3J0LlxuICAgKi9cbiAgbWV0cmljUGxhY2VtZW50c1N0YXJ0ZWQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogR2FtZSBzZXNzaW9uIHBsYWNlbWVudCByZXF1ZXN0cyB0aGF0IHJlc3VsdGVkIGluIGEgbmV3IGdhbWUgc2Vzc2lvbiBzaW5jZSB0aGUgbGFzdCByZXBvcnQuXG4gICAqL1xuICBtZXRyaWNQbGFjZW1lbnRzU3VjY2VlZGVkKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIEdhbWUgc2Vzc2lvbiBwbGFjZW1lbnQgcmVxdWVzdHMgdGhhdCByZWFjaGVkIHRoZSBxdWV1ZSdzIHRpbWVvdXQgbGltaXQgd2l0aG91dCBiZWluZyBmdWxmaWxsZWQgc2luY2UgdGhlIGxhc3QgcmVwb3J0LlxuICAgKi9cbiAgbWV0cmljUGxhY2VtZW50c1RpbWVkT3V0KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG59XG5cbi8qKlxuICogQSBmdWxsIHNwZWNpZmljYXRpb24gb2YgYW4gZ2FtZVNlc3Npb25RdWV1ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGltcG9ydCBpdCBmbHVlbnRseSBpbnRvIHRoZSBDREsgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2FtZVNlc3Npb25RdWV1ZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2FtZVNlc3Npb25RdWV1ZVxuICAgKlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgYGdhbWVTZXNzaW9uUXVldWVBcm5gIGFuZCBgZ2FtZVNlc3Npb25RdWV1ZU5hbWVgIG11c3QgYmUgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlcml2ZWQgZnJvbSBgZ2FtZVNlc3Npb25RdWV1ZU5hbWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlc3Npb25RdWV1ZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhbWVTZXNzaW9uUXVldWVcbiAgICpcbiAgICogQXQgbGVhc3Qgb25lIG9mIGBnYW1lU2Vzc2lvblF1ZXVlTmFtZWAgYW5kIGBnYW1lU2Vzc2lvblF1ZXVlQXJuYCAgbXVzdCBiZSBwcm92aWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZGVyaXZlZCBmcm9tIGBnYW1lU2Vzc2lvblF1ZXVlQXJuYC5cbiAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXNzaW9uUXVldWVOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IEZsZWV0IGdhbWVTZXNzaW9uUXVldWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYW1lU2Vzc2lvblF1ZXVlUHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIGdhbWVTZXNzaW9uUXVldWVcbiAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXNzaW9uUXVldWVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICBJbmZvcm1hdGlvbiB0byBiZSBhZGRlZCB0byBhbGwgZXZlbnRzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gdGhpcyBnYW1lIHNlc3Npb24gcXVldWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGN1c3RvbWVyIGV2ZW50IGRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUV2ZW50RGF0YT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGxvY2F0aW9ucyB3aGVyZSBhIHF1ZXVlIGlzIGFsbG93ZWQgdG8gcGxhY2UgbmV3IGdhbWUgc2Vzc2lvbnMuXG4gICAqXG4gICAqIExvY2F0aW9ucyBhcmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtIG9mIEFXUyBSZWdpb24gY29kZXMsIHN1Y2ggYXMgYHVzLXdlc3QtMmAuXG4gICAqXG4gICAqIEZvciBxdWV1ZXMgdGhhdCBoYXZlIG11bHRpLWxvY2F0aW9uIGZsZWV0cywgeW91IGNhbiB1c2UgYSBmaWx0ZXIgY29uZmlndXJhdGlvbiBhbGxvdyBwbGFjZW1lbnQgd2l0aCBzb21lLCBidXQgbm90IGFsbCBvZiB0aGVzZSBsb2NhdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGdhbWUgc2Vzc2lvbnMgY2FuIGJlIHBsYWNlZCBpbiBhbnkgcXVldWUgbG9jYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRMb2NhdGlvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gU05TIHRvcGljIGlzIHNldCB1cCB0byByZWNlaXZlIGdhbWUgc2Vzc2lvbiBwbGFjZW1lbnQgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gbm90aWZpY2F0aW9uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dhbWVsaWZ0L2xhdGVzdC9kZXZlbG9wZXJndWlkZS9xdWV1ZS1ub3RpZmljYXRpb24uaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVGFyZ2V0Pzogc25zLklUb3BpYztcblxuICAvKipcbiAgICogQSBzZXQgb2YgcG9saWNpZXMgdGhhdCBhY3QgYXMgYSBzbGlkaW5nIGNhcCBvbiBwbGF5ZXIgbGF0ZW5jeS5cbiAgICogRmxlZXRJUSB3b3JrcyB0byBkZWxpdmVyIGxvdyBsYXRlbmN5IGZvciBtb3N0IHBsYXllcnMgaW4gYSBnYW1lIHNlc3Npb24uXG4gICAqIFRoZXNlIHBvbGljaWVzIGVuc3VyZSB0aGF0IG5vIGluZGl2aWR1YWwgcGxheWVyIGNhbiBiZSBwbGFjZWQgaW50byBhIGdhbWUgd2l0aCB1bnJlYXNvbmFibHkgaGlnaCBsYXRlbmN5LlxuICAgKiBVc2UgbXVsdGlwbGUgcG9saWNpZXMgdG8gZ3JhZHVhbGx5IHJlbGF4IGxhdGVuY3kgcmVxdWlyZW1lbnRzIGEgc3RlcCBhdCBhIHRpbWUuXG4gICAqIE11bHRpcGxlIHBvbGljaWVzIGFyZSBhcHBsaWVkIGJhc2VkIG9uIHRoZWlyIG1heGltdW0gYWxsb3dlZCBsYXRlbmN5LCBzdGFydGluZyB3aXRoIHRoZSBsb3dlc3QgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHBsYXllciBsYXRlbmN5IHBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgcGxheWVyTGF0ZW5jeVBvbGljaWVzPzogUGxheWVyTGF0ZW5jeVBvbGljeVtdO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gc2V0dGluZ3MgdG8gdXNlIHdoZW4gcHJpb3JpdGl6aW5nIGRlc3RpbmF0aW9ucyBhbmQgbG9jYXRpb25zIGZvciBnYW1lIHNlc3Npb24gcGxhY2VtZW50cy5cbiAgICogVGhpcyBjb25maWd1cmF0aW9uIHJlcGxhY2VzIHRoZSBGbGVldElRIGRlZmF1bHQgcHJpb3JpdGl6YXRpb24gcHJvY2Vzcy5cbiAgICpcbiAgICogUHJpb3JpdHkgdHlwZXMgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgbmFtZWQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgYXQgdGhlIGVuZCBvZiB0aGUgcHJpb3JpdGl6YXRpb24gcHJvY2Vzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gcHJpb3JpdHkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJpb3JpdHlDb25maWd1cmF0aW9uPzogUHJpb3JpdHlDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lLCB0aGF0IGEgbmV3IGdhbWUgc2Vzc2lvbiBwbGFjZW1lbnQgcmVxdWVzdCByZW1haW5zIGluIHRoZSBxdWV1ZS5cbiAgICogV2hlbiBhIHJlcXVlc3QgZXhjZWVkcyB0aGlzIHRpbWUsIHRoZSBnYW1lIHNlc3Npb24gcGxhY2VtZW50IGNoYW5nZXMgdG8gYSBgVElNRURfT1VUYCBzdGF0dXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDUwIHNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBmbGVldHMgYW5kL29yIGZsZWV0IGFsaWFzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZnVsZmlsbCBnYW1lIHNlc3Npb24gcGxhY2VtZW50IHJlcXVlc3RzIGluIHRoZSBxdWV1ZS5cbiAgICpcbiAgICogRGVzdGluYXRpb25zIGFyZSBsaXN0ZWQgaW4gb3JkZXIgb2YgcGxhY2VtZW50IHByZWZlcmVuY2UuXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbnM6IElHYW1lU2Vzc2lvblF1ZXVlRGVzdGluYXRpb25bXTtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBuZXcgYW5kIGltcG9ydGVkIEdhbWVMaWZ0IEdhbWVTZXNzaW9uUXVldWUuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHYW1lU2Vzc2lvblF1ZXVlQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElHYW1lU2Vzc2lvblF1ZXVlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYW1lU2Vzc2lvblF1ZXVlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdhbWVTZXNzaW9uUXVldWVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhbWVTZXNzaW9uUXVldWVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlQXJuOiBzdHJpbmc7XG5cbiAgcHVibGljIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0dhbWVMaWZ0JyxcbiAgICAgIG1ldHJpY05hbWU6IG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIEdhbWVTZXNzaW9uUXVldWVOYW1lOiB0aGlzLmdhbWVTZXNzaW9uUXVldWVOYW1lLFxuICAgICAgfSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLmF0dGFjaFRvKHRoaXMpO1xuICB9XG5cbiAgbWV0cmljQXZlcmFnZVdhaXRUaW1lKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnQXZlcmFnZVdhaXRUaW1lJywgcHJvcHMpO1xuICB9XG5cbiAgbWV0cmljUGxhY2VtZW50c0NhbmNlbGVkKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnUGxhY2VtZW50c0NhbmNlbGVkJywgcHJvcHMpO1xuICB9XG5cbiAgbWV0cmljUGxhY2VtZW50c0ZhaWxlZChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1BsYWNlbWVudHNGYWlsZWQnLCBwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNQbGFjZW1lbnRzU3RhcnRlZChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1BsYWNlbWVudHNTdGFydGVkJywgcHJvcHMpO1xuICB9XG5cbiAgbWV0cmljUGxhY2VtZW50c1N1Y2NlZWRlZChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1BsYWNlbWVudHNTdWNjZWVkZWQnLCBwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNQbGFjZW1lbnRzVGltZWRPdXQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdQbGFjZW1lbnRzVGltZWRPdXQnLCBwcm9wcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgR2FtZVNlc3Npb25RdWV1ZSByZXNvdXJjZSBjcmVhdGVzIGEgcGxhY2VtZW50IHF1ZXVlIHRoYXQgcHJvY2Vzc2VzIHJlcXVlc3RzIGZvciBuZXcgZ2FtZSBzZXNzaW9ucy5cbiAqIEEgcXVldWUgdXNlcyBGbGVldElRIGFsZ29yaXRobXMgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IHBsYWNlbWVudCBsb2NhdGlvbnMgYW5kIGZpbmQgYW4gYXZhaWxhYmxlIGdhbWUgc2VydmVyLCB0aGVuIHByb21wdHMgdGhlIGdhbWUgc2VydmVyIHRvIHN0YXJ0IGEgbmV3IGdhbWUgc2Vzc2lvbi5cbiAqIFF1ZXVlcyBjYW4gaGF2ZSBkZXN0aW5hdGlvbnMgKEdhbWVMaWZ0IGZsZWV0cyBvciBnYW1lU2Vzc2lvblF1ZXVlZXMpLCB3aGljaCBkZXRlcm1pbmUgd2hlcmUgdGhlIHF1ZXVlIGNhbiBwbGFjZSBuZXcgZ2FtZSBzZXNzaW9ucy5cbiAqIEEgcXVldWUgY2FuIGhhdmUgZGVzdGluYXRpb25zIHdpdGggdmFyaWVkIGZsZWV0IHR5cGUgKFNwb3QgYW5kIE9uLURlbWFuZCksIGluc3RhbmNlIHR5cGUsIGFuZCBBV1MgUmVnaW9uLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkdhbWVMaWZ0OjpHYW1lU2Vzc2lvblF1ZXVlXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBHYW1lU2Vzc2lvblF1ZXVlIGV4dGVuZHMgR2FtZVNlc3Npb25RdWV1ZUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nYW1lbGlmdC1hbHBoYS5HYW1lU2Vzc2lvblF1ZXVlJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGdhbWVTZXNzaW9uUXVldWUgZnJvbSBpdHMgbmFtZS5cbiAgICovXG4gIHN0YXRpYyBmcm9tR2FtZVNlc3Npb25RdWV1ZU5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgZ2FtZVNlc3Npb25RdWV1ZU5hbWU6IHN0cmluZyk6IElHYW1lU2Vzc2lvblF1ZXVlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tR2FtZVNlc3Npb25RdWV1ZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IGdhbWVTZXNzaW9uUXVldWVOYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBnYW1lU2Vzc2lvblF1ZXVlIGZyb20gaXRzIEFSTi5cbiAgICovXG4gIHN0YXRpYyBmcm9tR2FtZVNlc3Npb25RdWV1ZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBnYW1lU2Vzc2lvblF1ZXVlQXJuOiBzdHJpbmcpOiBJR2FtZVNlc3Npb25RdWV1ZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUdhbWVTZXNzaW9uUXVldWVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBnYW1lU2Vzc2lvblF1ZXVlQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBnYW1lU2Vzc2lvblF1ZXVlIGZyb20gaXRzIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBzdGF0aWMgZnJvbUdhbWVTZXNzaW9uUXVldWVBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBHYW1lU2Vzc2lvblF1ZXVlQXR0cmlidXRlcyk6IElHYW1lU2Vzc2lvblF1ZXVlIHtcbiAgICBpZiAoIWF0dHJzLmdhbWVTZXNzaW9uUXVldWVOYW1lICYmICFhdHRycy5nYW1lU2Vzc2lvblF1ZXVlQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBnYW1lU2Vzc2lvblF1ZXVlTmFtZSBvciBnYW1lU2Vzc2lvblF1ZXVlQXJuIG11c3QgYmUgcHJvdmlkZWQgaW4gR2FtZVNlc3Npb25RdWV1ZUF0dHJpYnV0ZXMnKTtcbiAgICB9XG4gICAgY29uc3QgZ2FtZVNlc3Npb25RdWV1ZU5hbWUgPSBhdHRycy5nYW1lU2Vzc2lvblF1ZXVlTmFtZSA/P1xuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihhdHRycy5nYW1lU2Vzc2lvblF1ZXVlQXJuISwgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWU7XG5cbiAgICBpZiAoIWdhbWVTZXNzaW9uUXVldWVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGdhbWVTZXNzaW9uUXVldWUgbmFtZSBmb3VuZCBpbiBBUk46ICcke2F0dHJzLmdhbWVTZXNzaW9uUXVldWVBcm59J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IGdhbWVTZXNzaW9uUXVldWVBcm4gPSBhdHRycy5nYW1lU2Vzc2lvblF1ZXVlQXJuID8/IGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6ICdnYW1lbGlmdCcsXG4gICAgICByZXNvdXJjZTogJ2dhbWVzZXNzaW9ucXVldWUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy5nYW1lU2Vzc2lvblF1ZXVlTmFtZSxcbiAgICAgIGFybkZvcm1hdDogY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEdhbWVTZXNzaW9uUXVldWVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlTmFtZSA9IGdhbWVTZXNzaW9uUXVldWVOYW1lITtcbiAgICAgIHB1YmxpYyByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlQXJuID0gZ2FtZVNlc3Npb25RdWV1ZUFybjtcblxuICAgICAgY29uc3RydWN0b3IoczogQ29uc3RydWN0LCBpOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocywgaSwge1xuICAgICAgICAgIGVudmlyb25tZW50RnJvbUFybjogZ2FtZVNlc3Npb25RdWV1ZUFybixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIElkZW50aWZpZXIgb2YgdGhlIGdhbWVTZXNzaW9uUXVldWUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2FtZVNlc3Npb25RdWV1ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2FtZVNlc3Npb25RdWV1ZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlQXJuOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0aW5hdGlvbnM6IElHYW1lU2Vzc2lvblF1ZXVlRGVzdGluYXRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBHYW1lU2Vzc2lvblF1ZXVlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZ2FtZVNlc3Npb25RdWV1ZU5hbWUsXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAoIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZ2FtZVNlc3Npb25RdWV1ZU5hbWUpKSB7XG4gICAgICBpZiAocHJvcHMuZ2FtZVNlc3Npb25RdWV1ZU5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgR2FtZVNlc3Npb25RdWV1ZSBuYW1lIGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMgYnV0IGhhcyAke3Byb3BzLmdhbWVTZXNzaW9uUXVldWVOYW1lLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEvXlthLXpBLVowLTktXSskLy50ZXN0KHByb3BzLmdhbWVTZXNzaW9uUXVldWVOYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdhbWVTZXNzaW9uUXVldWUgbmFtZSAke3Byb3BzLmdhbWVTZXNzaW9uUXVldWVOYW1lfSBjYW4gY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMgd2l0aCBubyBzcGFjZXMuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmN1c3RvbUV2ZW50RGF0YSAmJiBwcm9wcy5jdXN0b21FdmVudERhdGEubGVuZ3RoID4gMjU2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdhbWVTZXNzaW9uUXVldWUgY3VzdG9tIGV2ZW50IGRhdGEgY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAyNTYgY2hhcmFjdGVycyBidXQgaGFzICR7cHJvcHMuY3VzdG9tRXZlbnREYXRhLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYWxsb3dlZExvY2F0aW9ucyAmJiBwcm9wcy5hbGxvd2VkTG9jYXRpb25zLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb3JlIHRoYW4gMTAwIGFsbG93ZWQgbG9jYXRpb25zIGFyZSBhbGxvd2VkIHBlciBnYW1lIHNlc3Npb24gcXVldWUsIGdpdmVuICR7cHJvcHMuYWxsb3dlZExvY2F0aW9ucy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFsbCBkZXN0aW5hdGlvbnNcbiAgICAocHJvcHMuZGVzdGluYXRpb25zIHx8IFtdKS5mb3JFYWNoKHRoaXMuYWRkRGVzdGluYXRpb24uYmluZCh0aGlzKSk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5HYW1lU2Vzc2lvblF1ZXVlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgY3VzdG9tRXZlbnREYXRhOiBwcm9wcy5jdXN0b21FdmVudERhdGEsXG4gICAgICBkZXN0aW5hdGlvbnM6IGNkay5MYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMucGFyc2VEZXN0aW5hdGlvbnMoKSB9KSxcbiAgICAgIGZpbHRlckNvbmZpZ3VyYXRpb246IHRoaXMucGFyc2VGaWx0ZXJDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIG5vdGlmaWNhdGlvblRhcmdldDogcHJvcHMubm90aWZpY2F0aW9uVGFyZ2V0ICYmIHByb3BzLm5vdGlmaWNhdGlvblRhcmdldC50b3BpY0FybixcbiAgICAgIHBsYXllckxhdGVuY3lQb2xpY2llczogdGhpcy5wYXJzZVBsYXllckxhdGVuY3lQb2xpY2llcyhwcm9wcyksXG4gICAgICBwcmlvcml0eUNvbmZpZ3VyYXRpb246IHRoaXMucGFyc2VQcmlvcml0eUNvbmZpZ3VyYXRpb24ocHJvcHMpLFxuICAgICAgdGltZW91dEluU2Vjb25kczogcHJvcHMudGltZW91dCAmJiBwcm9wcy50aW1lb3V0LnRvU2Vjb25kcygpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5nYW1lU2Vzc2lvblF1ZXVlTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHJlc291cmNlLnJlZik7XG4gICAgdGhpcy5nYW1lU2Vzc2lvblF1ZXVlQXJuID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiAnZ2FtZXNlc3Npb25xdWV1ZScsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMuZ2FtZVNlc3Npb25RdWV1ZU5hbWUsXG4gICAgICBhcm5Gb3JtYXQ6IGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgZGVzdGluYXRpb24gdG8gZnVsZmlsbCByZXF1ZXN0cyBmb3IgbmV3IGdhbWUgc2Vzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIGRlc3RpbmF0aW9uIEEgZGVzdGluYXRpb24gdG8gYWRkXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkRGVzdGluYXRpb24oZGVzdGluYXRpb246IElHYW1lU2Vzc2lvblF1ZXVlRGVzdGluYXRpb24pIHtcbiAgICB0aGlzLmRlc3RpbmF0aW9ucy5wdXNoKGRlc3RpbmF0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVByaW9yaXR5Q29uZmlndXJhdGlvbihwcm9wczogR2FtZVNlc3Npb25RdWV1ZVByb3BzKTogQ2ZuR2FtZVNlc3Npb25RdWV1ZS5Qcmlvcml0eUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5wcmlvcml0eUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnByaW9yaXR5Q29uZmlndXJhdGlvbi5sb2NhdGlvbk9yZGVyLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb3JlIHRoYW4gMTAwIGxvY2F0aW9ucyBhcmUgYWxsb3dlZCBwZXIgcHJpb3JpdHkgY29uZmlndXJhdGlvbiwgZ2l2ZW4gJHtwcm9wcy5wcmlvcml0eUNvbmZpZ3VyYXRpb24ubG9jYXRpb25PcmRlci5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnByaW9yaXR5Q29uZmlndXJhdGlvbi5wcmlvcml0eU9yZGVyLmxlbmd0aCA+IDQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbW9yZSB0aGFuIDQgcHJpb3JpdGllcyBhcmUgYWxsb3dlZCBwZXIgcHJpb3JpdHkgY29uZmlndXJhdGlvbiwgZ2l2ZW4gJHtwcm9wcy5wcmlvcml0eUNvbmZpZ3VyYXRpb24ucHJpb3JpdHlPcmRlci5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByaW9yaXR5T3JkZXI6IHByb3BzLnByaW9yaXR5Q29uZmlndXJhdGlvbi5wcmlvcml0eU9yZGVyLFxuICAgICAgbG9jYXRpb25PcmRlcjogcHJvcHMucHJpb3JpdHlDb25maWd1cmF0aW9uLmxvY2F0aW9uT3JkZXIsXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVBsYXllckxhdGVuY3lQb2xpY2llcyhwcm9wczogR2FtZVNlc3Npb25RdWV1ZVByb3BzKTogQ2ZuR2FtZVNlc3Npb25RdWV1ZS5QbGF5ZXJMYXRlbmN5UG9saWN5UHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5wbGF5ZXJMYXRlbmN5UG9saWNpZXMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLnBsYXllckxhdGVuY3lQb2xpY2llcy5tYXAocGFyc2VQbGF5ZXJMYXRlbmN5UG9saWN5KTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlUGxheWVyTGF0ZW5jeVBvbGljeShwbGF5ZXJMYXRlbmN5UG9saWN5OiBQbGF5ZXJMYXRlbmN5UG9saWN5KTogQ2ZuR2FtZVNlc3Npb25RdWV1ZS5QbGF5ZXJMYXRlbmN5UG9saWN5UHJvcGVydHkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF4aW11bUluZGl2aWR1YWxQbGF5ZXJMYXRlbmN5TWlsbGlzZWNvbmRzOiBwbGF5ZXJMYXRlbmN5UG9saWN5Lm1heGltdW1JbmRpdmlkdWFsUGxheWVyTGF0ZW5jeS50b01pbGxpc2Vjb25kcygpLFxuICAgICAgICBwb2xpY3lEdXJhdGlvblNlY29uZHM6IHBsYXllckxhdGVuY3lQb2xpY3kucG9saWN5RHVyYXRpb24gJiYgcGxheWVyTGF0ZW5jeVBvbGljeS5wb2xpY3lEdXJhdGlvbi50b1NlY29uZHMoKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRmlsdGVyQ29uZmlndXJhdGlvbihwcm9wczogR2FtZVNlc3Npb25RdWV1ZVByb3BzKTogQ2ZuR2FtZVNlc3Npb25RdWV1ZS5GaWx0ZXJDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMuYWxsb3dlZExvY2F0aW9ucykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsb3dlZExvY2F0aW9uczogcHJvcHMuYWxsb3dlZExvY2F0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURlc3RpbmF0aW9ucygpOiBDZm5HYW1lU2Vzc2lvblF1ZXVlLkRlc3RpbmF0aW9uUHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmRlc3RpbmF0aW9ucyB8fCB0aGlzLmRlc3RpbmF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVzdGluYXRpb25zLm1hcChwYXJzZURlc3RpbmF0aW9uKTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlRGVzdGluYXRpb24oZGVzdGluYXRpb246IElHYW1lU2Vzc2lvblF1ZXVlRGVzdGluYXRpb24pOiBDZm5HYW1lU2Vzc2lvblF1ZXVlLkRlc3RpbmF0aW9uUHJvcGVydHkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVzdGluYXRpb25Bcm46IGRlc3RpbmF0aW9uLnJlc291cmNlQXJuRm9yRGVzdGluYXRpb24sXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtZS1zZXNzaW9uLXF1ZXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2FtZS1zZXNzaW9uLXF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUF5RDtBQUV6RCx3Q0FBd0M7QUFFeEMsMkRBQStEO0FBQy9ELDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFlMUU7O0dBRUc7QUFDSCxJQUFZLFlBb0JYO0FBcEJELFdBQVksWUFBWTtJQUN0Qjs7T0FFRztJQUNILG1DQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsNkJBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsMkNBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxxQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBcEJXLFlBQVksNEJBQVosWUFBWSxRQW9CdkI7QUF5TUQ7O0dBRUc7QUFDSCxNQUFzQixvQkFBcUIsU0FBUSxHQUFHLENBQUMsUUFBUTs7SUFXdEQsTUFBTSxDQUFDLFVBQWtCLEVBQUUsS0FBZ0M7UUFDaEUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDM0IsU0FBUyxFQUFFLGNBQWM7WUFDekIsVUFBVSxFQUFFLFVBQVU7WUFDdEIsYUFBYSxFQUFFO2dCQUNiLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7YUFDaEQ7WUFDRCxHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ25CO0lBRUQscUJBQXFCLENBQUMsS0FBZ0M7UUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzlDO0lBRUQsd0JBQXdCLENBQUMsS0FBZ0M7UUFDdkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2pEO0lBRUQsc0JBQXNCLENBQUMsS0FBZ0M7UUFD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QUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFFakUsU0FBUyx3QkFBd0IsQ0FBQyxtQkFBd0M7Z0JBQ3hFLE9BQU87b0JBQ0wsMENBQTBDLEVBQUUsbUJBQW1CLENBQUMsOEJBQThCLENBQUMsY0FBYyxFQUFFO29CQUMvRyxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQyxjQUFjLElBQUksbUJBQW1CLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRTtpQkFDNUcsQ0FBQztZQUNKLENBQUM7U0FDRjtRQUVTLHdCQUF3QixDQUFDLEtBQTRCOzs7Ozs7Ozs7O1lBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztZQUVELE9BQU87Z0JBQ0wsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjthQUN6QyxDQUFDO1NBQ0g7UUFFTyxpQkFBaUI7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFL0MsU0FBUyxnQkFBZ0IsQ0FBQyxXQUF5QztnQkFDakUsT0FBTztvQkFDTCxjQUFjLEVBQUUsV0FBVyxDQUFDLHlCQUF5QjtpQkFDdEQsQ0FBQztZQUNKLENBQUM7U0FDRjs7WUFqTFUsdURBQWdCOzs7OztBQUFoQiw0Q0FBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ2ZuR2FtZVNlc3Npb25RdWV1ZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1nYW1lbGlmdCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnYW1lIHNlc3Npb24gcXVldWUgZGVzdGluYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR2FtZVNlc3Npb25RdWV1ZURlc3RpbmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4ocykgdG8gcHV0IGludG8gdGhlIGRlc3RpbmF0aW9uIGZpZWxkIGZvciBhIGdhbWUgc2Vzc2lvbiBxdWV1ZS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSBpcyBmb3IgY2RrIG1vZHVsZXMgdG8gY29uc3VtZSBvbmx5LiBZb3Ugc2hvdWxkIG5vdCBuZWVkIHRvIHVzZSB0aGlzIHByb3BlcnR5LlxuICAgKiBJbnN0ZWFkLCB1c2UgZGVkaWNhdGVkIGlkZW50aWZpZXIgb24gZWFjaCBjb21wb25lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VBcm5Gb3JEZXN0aW5hdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByaW9yaXR5IHRvIGNvbmRpZGVyIHdoZW4gcGxhY2luZyBuZXcgZ2FtZSBzZXNzaW9uc1xuICovXG5leHBvcnQgZW51bSBQcmlvcml0eVR5cGUge1xuICAvKipcbiAgICogRmxlZXRJUSBwcmlvcml0aXplcyBsb2NhdGlvbnMgd2hlcmUgdGhlIGF2ZXJhZ2UgcGxheWVyIGxhdGVuY3kgKHByb3ZpZGVkIGluIGVhY2ggZ2FtZSBzZXNzaW9uIHJlcXVlc3QpIGlzIGxvd2VzdC5cbiAgICovXG4gIExBVEVOQ1kgPSAnTEFURU5DWScsXG5cbiAgLyoqXG4gICAqIEZsZWV0SVEgcHJpb3JpdGl6ZXMgZGVzdGluYXRpb25zIHdpdGggdGhlIGxvd2VzdCBjdXJyZW50IGhvc3RpbmcgY29zdHMuIENvc3QgaXMgZXZhbHVhdGVkIGJhc2VkIG9uIHRoZSBsb2NhdGlvbiwgaW5zdGFuY2UgdHlwZSwgYW5kIGZsZWV0IHR5cGUgKFNwb3Qgb3IgT24tRGVtYW5kKSBmb3IgZWFjaCBkZXN0aW5hdGlvbiBpbiB0aGUgcXVldWUuXG4gICAqL1xuICBDT1NUID0gJ0NPU1QnLFxuXG4gIC8qKlxuICAgKiBGbGVldElRIHByaW9yaXRpemVzIGJhc2VkIG9uIHRoZSBvcmRlciB0aGF0IGRlc3RpbmF0aW9ucyBhcmUgbGlzdGVkIGluIHRoZSBxdWV1ZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgREVTVElOQVRJT04gPSAnREVTVElOQVRJT04nLFxuXG4gIC8qKlxuICAgKiBGbGVldElRIHByaW9yaXRpemVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcmRlciBvZiBsb2NhdGlvbnMsIGFzIGRlZmluZWQgaW4gYExvY2F0aW9uT3JkZXJgXG4gICAqL1xuICBMT0NBVElPTiA9ICdMT0NBVElPTicsXG59XG5cbi8qKlxuICogQ3VzdG9tIHByaW9yaXRpemF0aW9uIHNldHRpbmdzIGZvciB1c2UgYnkgYSBnYW1lIHNlc3Npb24gcXVldWUgd2hlbiBwbGFjaW5nIG5ldyBnYW1lIHNlc3Npb25zIHdpdGggYXZhaWxhYmxlIGdhbWUgc2VydmVycy5cbiAqIFdoZW4gZGVmaW5lZCwgdGhpcyBjb25maWd1cmF0aW9uIHJlcGxhY2VzIHRoZSBkZWZhdWx0IEZsZWV0SVEgcHJpb3JpdGl6YXRpb24gcHJvY2Vzcywgd2hpY2ggaXMgYXMgZm9sbG93czpcbiAqXG4gKiAtIElmIHBsYXllciBsYXRlbmN5IGRhdGEgaXMgaW5jbHVkZWQgaW4gYSBnYW1lIHNlc3Npb24gcmVxdWVzdCwgZGVzdGluYXRpb25zIGFuZCBsb2NhdGlvbnMgYXJlIHByaW9yaXRpemVkIGZpcnN0IGJhc2VkIG9uIGxvd2VzdCBhdmVyYWdlIGxhdGVuY3kgKDEpLCB0aGVuIG9uIGxvd2VzdCBob3N0aW5nIGNvc3QgKDIpLCB0aGVuIG9uIGRlc3RpbmF0aW9uIGxpc3Qgb3JkZXIgKDMpLCBhbmQgZmluYWxseSBvbiBsb2NhdGlvbiAoYWxwaGFiZXRpY2FsKSAoNCkuXG4gKiBUaGlzIGFwcHJvYWNoIGVuc3VyZXMgdGhhdCB0aGUgcXVldWUncyB0b3AgcHJpb3JpdHkgaXMgdG8gcGxhY2UgZ2FtZSBzZXNzaW9ucyB3aGVyZSBhdmVyYWdlIHBsYXllciBsYXRlbmN5IGlzIGxvd2VzdCwgYW5kLS1pZiBsYXRlbmN5IGlzIHRoZSBzYW1lLS13aGVyZSB0aGUgaG9zdGluZyBjb3N0IGlzIGxlc3MsIGV0Yy5cbiAqXG4gKiAtIElmIHBsYXllciBsYXRlbmN5IGRhdGEgaXMgbm90IGluY2x1ZGVkLCBkZXN0aW5hdGlvbnMgYW5kIGxvY2F0aW9ucyBhcmUgcHJpb3JpdGl6ZWQgZmlyc3Qgb24gZGVzdGluYXRpb24gbGlzdCBvcmRlciAoMSksIGFuZCB0aGVuIG9uIGxvY2F0aW9uIChhbHBoYWJldGljYWwpICgyKS5cbiAqIFRoaXMgYXBwcm9hY2ggZW5zdXJlcyB0aGF0IHRoZSBxdWV1ZSdzIHRvcCBwcmlvcml0eSBpcyB0byBwbGFjZSBnYW1lIHNlc3Npb25zIG9uIHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBmbGVldCBsaXN0ZWQuIElmIHRoYXQgZmxlZXQgaGFzIG11bHRpcGxlIGxvY2F0aW9ucywgdGhlIGdhbWUgc2Vzc2lvbiBpcyBwbGFjZWQgb24gdGhlIGZpcnN0IGxvY2F0aW9uICh3aGVuIGxpc3RlZCBhbHBoYWJldGljYWxseSkuXG4gKlxuICogQ2hhbmdpbmcgdGhlIHByaW9yaXR5IG9yZGVyIHdpbGwgYWZmZWN0IGhvdyBnYW1lIHNlc3Npb25zIGFyZSBwbGFjZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJpb3JpdHlDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0aXphdGlvbiBvcmRlciB0byB1c2UgZm9yIGZsZWV0IGxvY2F0aW9ucywgd2hlbiB0aGUgUHJpb3JpdHlPcmRlciBwcm9wZXJ0eSBpbmNsdWRlcyBMT0NBVElPTi4gTG9jYXRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IEFXUyBSZWdpb24gY29kZXMgc3VjaCBhcyBgdXMtd2VzdC0yLlxuICAgKlxuICAgKiBFYWNoIGxvY2F0aW9uIGNhbiBvbmx5IGJlIGxpc3RlZCBvbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb25PcmRlcjogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSByZWNvbW1lbmRlZCBzZXF1ZW5jZSB0byB1c2Ugd2hlbiBwcmlvcml0aXppbmcgd2hlcmUgdG8gcGxhY2UgbmV3IGdhbWUgc2Vzc2lvbnMuXG4gICAqIEVhY2ggdHlwZSBjYW4gb25seSBiZSBsaXN0ZWQgb25jZS5cbiAgICovXG4gIHJlYWRvbmx5IHByaW9yaXR5T3JkZXI6IFByaW9yaXR5VHlwZVtdO1xufVxuXG4vKipcbiAqIFRoZSBxdWV1ZSBzZXR0aW5nIHRoYXQgZGV0ZXJtaW5lcyB0aGUgaGlnaGVzdCBsYXRlbmN5IGFsbG93ZWQgZm9yIGluZGl2aWR1YWwgcGxheWVycyB3aGVuIHBsYWNpbmcgYSBnYW1lIHNlc3Npb24uXG4gKiBXaGVuIGEgbGF0ZW5jeSBwb2xpY3kgaXMgaW4gZm9yY2UsIGEgZ2FtZSBzZXNzaW9uIGNhbm5vdCBiZSBwbGFjZWQgd2l0aCBhbnkgZmxlZXQgaW4gYSBSZWdpb24gd2hlcmUgYSBwbGF5ZXIgcmVwb3J0cyBsYXRlbmN5IGhpZ2hlciB0aGFuIHRoZSBjYXAuXG4gKlxuICogTGF0ZW5jeSBwb2xpY2llcyBhcmUgb25seSBlbmZvcmNlZCB3aGVuIHRoZSBwbGFjZW1lbnQgcmVxdWVzdCBjb250YWlucyBwbGF5ZXIgbGF0ZW5jeSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGF5ZXJMYXRlbmN5UG9saWN5IHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGxhdGVuY3kgdmFsdWUgdGhhdCBpcyBhbGxvd2VkIGZvciBhbnkgcGxheWVyLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIEFsbCBwb2xpY2llcyBtdXN0IGhhdmUgYSB2YWx1ZSBzZXQgZm9yIHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICByZWFkb25seSBtYXhpbXVtSW5kaXZpZHVhbFBsYXllckxhdGVuY3k6IGNkay5EdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IHRoZSBwb2xpY3kgaXMgZW5mb3JjZWQgd2hpbGUgcGxhY2luZyBhIG5ldyBnYW1lIHNlc3Npb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBwb2xpY3kgaXMgZW5mb3JjZWQgdW50aWwgdGhlIHF1ZXVlIHRpbWVzIG91dC5cbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUR1cmF0aW9uPzogY2RrLkR1cmF0aW9uO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBHYW1lbGlmdCBHYW1lU2Vzc2lvblF1ZXVlIGZvciBhIEdhbWVsaWZ0IGZsZWV0IGRlc3RpbmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHYW1lU2Vzc2lvblF1ZXVlIGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgZ2FtZVNlc3Npb25RdWV1ZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlc3Npb25RdWV1ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2FtZVNlc3Npb25RdWV1ZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlc3Npb25RdWV1ZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBmbGVldC5cbiAgICovXG4gIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIEF2ZXJhZ2UgYW1vdW50IG9mIHRpbWUgdGhhdCBnYW1lIHNlc3Npb24gcGxhY2VtZW50IHJlcXVlc3RzIGluIHRoZSBxdWV1ZSB3aXRoIHN0YXR1cyBQRU5ESU5HIGhhdmUgYmVlbiB3YWl0aW5nIHRvIGJlIGZ1bGZpbGxlZC5cbiAgICovXG4gIG1ldHJpY0F2ZXJhZ2VXYWl0VGltZShwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBHYW1lIHNlc3Npb24gcGxhY2VtZW50IHJlcXVlc3RzIHRoYXQgd2VyZSBjYW5jZWxlZCBiZWZvcmUgdGltaW5nIG91dCBzaW5jZSB0aGUgbGFzdCByZXBvcnQuXG4gICAqL1xuICBtZXRyaWNQbGFjZW1lbnRzQ2FuY2VsZWQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogR2FtZSBzZXNzaW9uIHBsYWNlbWVudCByZXF1ZXN0cyB0aGF0IGZhaWxlZCBmb3IgYW55IHJlYXNvbiBzaW5jZSB0aGUgbGFzdCByZXBvcnQuXG4gICAqL1xuICBtZXRyaWNQbGFjZW1lbnRzRmFpbGVkKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIE5ldyBnYW1lIHNlc3Npb24gcGxhY2VtZW50IHJlcXVlc3RzIHRoYXQgd2VyZSBhZGRlZCB0byB0aGUgcXVldWUgc2luY2UgdGhlIGxhc3QgcmVwb3J0LlxuICAgKi9cbiAgbWV0cmljUGxhY2VtZW50c1N0YXJ0ZWQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogR2FtZSBzZXNzaW9uIHBsYWNlbWVudCByZXF1ZXN0cyB0aGF0IHJlc3VsdGVkIGluIGEgbmV3IGdhbWUgc2Vzc2lvbiBzaW5jZSB0aGUgbGFzdCByZXBvcnQuXG4gICAqL1xuICBtZXRyaWNQbGFjZW1lbnRzU3VjY2VlZGVkKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIEdhbWUgc2Vzc2lvbiBwbGFjZW1lbnQgcmVxdWVzdHMgdGhhdCByZWFjaGVkIHRoZSBxdWV1ZSdzIHRpbWVvdXQgbGltaXQgd2l0aG91dCBiZWluZyBmdWxmaWxsZWQgc2luY2UgdGhlIGxhc3QgcmVwb3J0LlxuICAgKi9cbiAgbWV0cmljUGxhY2VtZW50c1RpbWVkT3V0KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG59XG5cbi8qKlxuICogQSBmdWxsIHNwZWNpZmljYXRpb24gb2YgYW4gZ2FtZVNlc3Npb25RdWV1ZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGltcG9ydCBpdCBmbHVlbnRseSBpbnRvIHRoZSBDREsgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2FtZVNlc3Npb25RdWV1ZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2FtZVNlc3Npb25RdWV1ZVxuICAgKlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgYGdhbWVTZXNzaW9uUXVldWVBcm5gIGFuZCBgZ2FtZVNlc3Npb25RdWV1ZU5hbWVgIG11c3QgYmUgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRlcml2ZWQgZnJvbSBgZ2FtZVNlc3Npb25RdWV1ZU5hbWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlc3Npb25RdWV1ZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhbWVTZXNzaW9uUXVldWVcbiAgICpcbiAgICogQXQgbGVhc3Qgb25lIG9mIGBnYW1lU2Vzc2lvblF1ZXVlTmFtZWAgYW5kIGBnYW1lU2Vzc2lvblF1ZXVlQXJuYCAgbXVzdCBiZSBwcm92aWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZGVyaXZlZCBmcm9tIGBnYW1lU2Vzc2lvblF1ZXVlQXJuYC5cbiAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXNzaW9uUXVldWVOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IEZsZWV0IGdhbWVTZXNzaW9uUXVldWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYW1lU2Vzc2lvblF1ZXVlUHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIGdhbWVTZXNzaW9uUXVldWVcbiAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXNzaW9uUXVldWVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICBJbmZvcm1hdGlvbiB0byBiZSBhZGRlZCB0byBhbGwgZXZlbnRzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gdGhpcyBnYW1lIHNlc3Npb24gcXVldWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGN1c3RvbWVyIGV2ZW50IGRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUV2ZW50RGF0YT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGxvY2F0aW9ucyB3aGVyZSBhIHF1ZXVlIGlzIGFsbG93ZWQgdG8gcGxhY2UgbmV3IGdhbWUgc2Vzc2lvbnMuXG4gICAqXG4gICAqIExvY2F0aW9ucyBhcmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtIG9mIEFXUyBSZWdpb24gY29kZXMsIHN1Y2ggYXMgYHVzLXdlc3QtMmAuXG4gICAqXG4gICAqIEZvciBxdWV1ZXMgdGhhdCBoYXZlIG11bHRpLWxvY2F0aW9uIGZsZWV0cywgeW91IGNhbiB1c2UgYSBmaWx0ZXIgY29uZmlndXJhdGlvbiBhbGxvdyBwbGFjZW1lbnQgd2l0aCBzb21lLCBidXQgbm90IGFsbCBvZiB0aGVzZSBsb2NhdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGdhbWUgc2Vzc2lvbnMgY2FuIGJlIHBsYWNlZCBpbiBhbnkgcXVldWUgbG9jYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRMb2NhdGlvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gU05TIHRvcGljIGlzIHNldCB1cCB0byByZWNlaXZlIGdhbWUgc2Vzc2lvbiBwbGFjZW1lbnQgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gbm90aWZpY2F0aW9uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dhbWVsaWZ0L2xhdGVzdC9kZXZlbG9wZXJndWlkZS9xdWV1ZS1ub3RpZmljYXRpb24uaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVGFyZ2V0Pzogc25zLklUb3BpYztcblxuICAvKipcbiAgICogQSBzZXQgb2YgcG9saWNpZXMgdGhhdCBhY3QgYXMgYSBzbGlkaW5nIGNhcCBvbiBwbGF5ZXIgbGF0ZW5jeS5cbiAgICogRmxlZXRJUSB3b3JrcyB0byBkZWxpdmVyIGxvdyBsYXRlbmN5IGZvciBtb3N0IHBsYXllcnMgaW4gYSBnYW1lIHNlc3Npb24uXG4gICAqIFRoZXNlIHBvbGljaWVzIGVuc3VyZSB0aGF0IG5vIGluZGl2aWR1YWwgcGxheWVyIGNhbiBiZSBwbGFjZWQgaW50byBhIGdhbWUgd2l0aCB1bnJlYXNvbmFibHkgaGlnaCBsYXRlbmN5LlxuICAgKiBVc2UgbXVsdGlwbGUgcG9saWNpZXMgdG8gZ3JhZHVhbGx5IHJlbGF4IGxhdGVuY3kgcmVxdWlyZW1lbnRzIGEgc3RlcCBhdCBhIHRpbWUuXG4gICAqIE11bHRpcGxlIHBvbGljaWVzIGFyZSBhcHBsaWVkIGJhc2VkIG9uIHRoZWlyIG1heGltdW0gYWxsb3dlZCBsYXRlbmN5LCBzdGFydGluZyB3aXRoIHRoZSBsb3dlc3QgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHBsYXllciBsYXRlbmN5IHBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgcGxheWVyTGF0ZW5jeVBvbGljaWVzPzogUGxheWVyTGF0ZW5jeVBvbGljeVtdO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gc2V0dGluZ3MgdG8gdXNlIHdoZW4gcHJpb3JpdGl6aW5nIGRlc3RpbmF0aW9ucyBhbmQgbG9jYXRpb25zIGZvciBnYW1lIHNlc3Npb24gcGxhY2VtZW50cy5cbiAgICogVGhpcyBjb25maWd1cmF0aW9uIHJlcGxhY2VzIHRoZSBGbGVldElRIGRlZmF1bHQgcHJpb3JpdGl6YXRpb24gcHJvY2Vzcy5cbiAgICpcbiAgICogUHJpb3JpdHkgdHlwZXMgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgbmFtZWQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgYXQgdGhlIGVuZCBvZiB0aGUgcHJpb3JpdGl6YXRpb24gcHJvY2Vzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gcHJpb3JpdHkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJpb3JpdHlDb25maWd1cmF0aW9uPzogUHJpb3JpdHlDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lLCB0aGF0IGEgbmV3IGdhbWUgc2Vzc2lvbiBwbGFjZW1lbnQgcmVxdWVzdCByZW1haW5zIGluIHRoZSBxdWV1ZS5cbiAgICogV2hlbiBhIHJlcXVlc3QgZXhjZWVkcyB0aGlzIHRpbWUsIHRoZSBnYW1lIHNlc3Npb24gcGxhY2VtZW50IGNoYW5nZXMgdG8gYSBgVElNRURfT1VUYCBzdGF0dXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDUwIHNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBmbGVldHMgYW5kL29yIGZsZWV0IGFsaWFzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZnVsZmlsbCBnYW1lIHNlc3Npb24gcGxhY2VtZW50IHJlcXVlc3RzIGluIHRoZSBxdWV1ZS5cbiAgICpcbiAgICogRGVzdGluYXRpb25zIGFyZSBsaXN0ZWQgaW4gb3JkZXIgb2YgcGxhY2VtZW50IHByZWZlcmVuY2UuXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbnM6IElHYW1lU2Vzc2lvblF1ZXVlRGVzdGluYXRpb25bXTtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBuZXcgYW5kIGltcG9ydGVkIEdhbWVMaWZ0IEdhbWVTZXNzaW9uUXVldWUuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHYW1lU2Vzc2lvblF1ZXVlQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElHYW1lU2Vzc2lvblF1ZXVlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYW1lU2Vzc2lvblF1ZXVlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdhbWVTZXNzaW9uUXVldWVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhbWVTZXNzaW9uUXVldWVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlQXJuOiBzdHJpbmc7XG5cbiAgcHVibGljIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0dhbWVMaWZ0JyxcbiAgICAgIG1ldHJpY05hbWU6IG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIEdhbWVTZXNzaW9uUXVldWVOYW1lOiB0aGlzLmdhbWVTZXNzaW9uUXVldWVOYW1lLFxuICAgICAgfSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLmF0dGFjaFRvKHRoaXMpO1xuICB9XG5cbiAgbWV0cmljQXZlcmFnZVdhaXRUaW1lKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnQXZlcmFnZVdhaXRUaW1lJywgcHJvcHMpO1xuICB9XG5cbiAgbWV0cmljUGxhY2VtZW50c0NhbmNlbGVkKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnUGxhY2VtZW50c0NhbmNlbGVkJywgcHJvcHMpO1xuICB9XG5cbiAgbWV0cmljUGxhY2VtZW50c0ZhaWxlZChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1BsYWNlbWVudHNGYWlsZWQnLCBwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNQbGFjZW1lbnRzU3RhcnRlZChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1BsYWNlbWVudHNTdGFydGVkJywgcHJvcHMpO1xuICB9XG5cbiAgbWV0cmljUGxhY2VtZW50c1N1Y2NlZWRlZChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1BsYWNlbWVudHNTdWNjZWVkZWQnLCBwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNQbGFjZW1lbnRzVGltZWRPdXQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdQbGFjZW1lbnRzVGltZWRPdXQnLCBwcm9wcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgR2FtZVNlc3Npb25RdWV1ZSByZXNvdXJjZSBjcmVhdGVzIGEgcGxhY2VtZW50IHF1ZXVlIHRoYXQgcHJvY2Vzc2VzIHJlcXVlc3RzIGZvciBuZXcgZ2FtZSBzZXNzaW9ucy5cbiAqIEEgcXVldWUgdXNlcyBGbGVldElRIGFsZ29yaXRobXMgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IHBsYWNlbWVudCBsb2NhdGlvbnMgYW5kIGZpbmQgYW4gYXZhaWxhYmxlIGdhbWUgc2VydmVyLCB0aGVuIHByb21wdHMgdGhlIGdhbWUgc2VydmVyIHRvIHN0YXJ0IGEgbmV3IGdhbWUgc2Vzc2lvbi5cbiAqIFF1ZXVlcyBjYW4gaGF2ZSBkZXN0aW5hdGlvbnMgKEdhbWVMaWZ0IGZsZWV0cyBvciBnYW1lU2Vzc2lvblF1ZXVlZXMpLCB3aGljaCBkZXRlcm1pbmUgd2hlcmUgdGhlIHF1ZXVlIGNhbiBwbGFjZSBuZXcgZ2FtZSBzZXNzaW9ucy5cbiAqIEEgcXVldWUgY2FuIGhhdmUgZGVzdGluYXRpb25zIHdpdGggdmFyaWVkIGZsZWV0IHR5cGUgKFNwb3QgYW5kIE9uLURlbWFuZCksIGluc3RhbmNlIHR5cGUsIGFuZCBBV1MgUmVnaW9uLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkdhbWVMaWZ0OjpHYW1lU2Vzc2lvblF1ZXVlXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBHYW1lU2Vzc2lvblF1ZXVlIGV4dGVuZHMgR2FtZVNlc3Npb25RdWV1ZUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nYW1lbGlmdC1hbHBoYS5HYW1lU2Vzc2lvblF1ZXVlJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGdhbWVTZXNzaW9uUXVldWUgZnJvbSBpdHMgbmFtZS5cbiAgICovXG4gIHN0YXRpYyBmcm9tR2FtZVNlc3Npb25RdWV1ZU5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgZ2FtZVNlc3Npb25RdWV1ZU5hbWU6IHN0cmluZyk6IElHYW1lU2Vzc2lvblF1ZXVlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tR2FtZVNlc3Npb25RdWV1ZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IGdhbWVTZXNzaW9uUXVldWVOYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBnYW1lU2Vzc2lvblF1ZXVlIGZyb20gaXRzIEFSTi5cbiAgICovXG4gIHN0YXRpYyBmcm9tR2FtZVNlc3Npb25RdWV1ZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBnYW1lU2Vzc2lvblF1ZXVlQXJuOiBzdHJpbmcpOiBJR2FtZVNlc3Npb25RdWV1ZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUdhbWVTZXNzaW9uUXVldWVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBnYW1lU2Vzc2lvblF1ZXVlQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBnYW1lU2Vzc2lvblF1ZXVlIGZyb20gaXRzIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBzdGF0aWMgZnJvbUdhbWVTZXNzaW9uUXVldWVBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBHYW1lU2Vzc2lvblF1ZXVlQXR0cmlidXRlcyk6IElHYW1lU2Vzc2lvblF1ZXVlIHtcbiAgICBpZiAoIWF0dHJzLmdhbWVTZXNzaW9uUXVldWVOYW1lICYmICFhdHRycy5nYW1lU2Vzc2lvblF1ZXVlQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBnYW1lU2Vzc2lvblF1ZXVlTmFtZSBvciBnYW1lU2Vzc2lvblF1ZXVlQXJuIG11c3QgYmUgcHJvdmlkZWQgaW4gR2FtZVNlc3Npb25RdWV1ZUF0dHJpYnV0ZXMnKTtcbiAgICB9XG4gICAgY29uc3QgZ2FtZVNlc3Npb25RdWV1ZU5hbWUgPSBhdHRycy5nYW1lU2Vzc2lvblF1ZXVlTmFtZSA/P1xuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihhdHRycy5nYW1lU2Vzc2lvblF1ZXVlQXJuISwgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWU7XG5cbiAgICBpZiAoIWdhbWVTZXNzaW9uUXVldWVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGdhbWVTZXNzaW9uUXVldWUgbmFtZSBmb3VuZCBpbiBBUk46ICcke2F0dHJzLmdhbWVTZXNzaW9uUXVldWVBcm59J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IGdhbWVTZXNzaW9uUXVldWVBcm4gPSBhdHRycy5nYW1lU2Vzc2lvblF1ZXVlQXJuID8/IGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6ICdnYW1lbGlmdCcsXG4gICAgICByZXNvdXJjZTogJ2dhbWVzZXNzaW9ucXVldWUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy5nYW1lU2Vzc2lvblF1ZXVlTmFtZSxcbiAgICAgIGFybkZvcm1hdDogY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEdhbWVTZXNzaW9uUXVldWVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlTmFtZSA9IGdhbWVTZXNzaW9uUXVldWVOYW1lITtcbiAgICAgIHB1YmxpYyByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlQXJuID0gZ2FtZVNlc3Npb25RdWV1ZUFybjtcblxuICAgICAgY29uc3RydWN0b3IoczogQ29uc3RydWN0LCBpOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocywgaSwge1xuICAgICAgICAgIGVudmlyb25tZW50RnJvbUFybjogZ2FtZVNlc3Npb25RdWV1ZUFybixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIElkZW50aWZpZXIgb2YgdGhlIGdhbWVTZXNzaW9uUXVldWUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2FtZVNlc3Npb25RdWV1ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2FtZVNlc3Npb25RdWV1ZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYW1lU2Vzc2lvblF1ZXVlQXJuOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0aW5hdGlvbnM6IElHYW1lU2Vzc2lvblF1ZXVlRGVzdGluYXRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBHYW1lU2Vzc2lvblF1ZXVlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZ2FtZVNlc3Npb25RdWV1ZU5hbWUsXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAoIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZ2FtZVNlc3Npb25RdWV1ZU5hbWUpKSB7XG4gICAgICBpZiAocHJvcHMuZ2FtZVNlc3Npb25RdWV1ZU5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgR2FtZVNlc3Npb25RdWV1ZSBuYW1lIGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMgYnV0IGhhcyAke3Byb3BzLmdhbWVTZXNzaW9uUXVldWVOYW1lLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEvXlthLXpBLVowLTktXSskLy50ZXN0KHByb3BzLmdhbWVTZXNzaW9uUXVldWVOYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdhbWVTZXNzaW9uUXVldWUgbmFtZSAke3Byb3BzLmdhbWVTZXNzaW9uUXVldWVOYW1lfSBjYW4gY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMgd2l0aCBubyBzcGFjZXMuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmN1c3RvbUV2ZW50RGF0YSAmJiBwcm9wcy5jdXN0b21FdmVudERhdGEubGVuZ3RoID4gMjU2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdhbWVTZXNzaW9uUXVldWUgY3VzdG9tIGV2ZW50IGRhdGEgY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAyNTYgY2hhcmFjdGVycyBidXQgaGFzICR7cHJvcHMuY3VzdG9tRXZlbnREYXRhLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYWxsb3dlZExvY2F0aW9ucyAmJiBwcm9wcy5hbGxvd2VkTG9jYXRpb25zLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb3JlIHRoYW4gMTAwIGFsbG93ZWQgbG9jYXRpb25zIGFyZSBhbGxvd2VkIHBlciBnYW1lIHNlc3Npb24gcXVldWUsIGdpdmVuICR7cHJvcHMuYWxsb3dlZExvY2F0aW9ucy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFsbCBkZXN0aW5hdGlvbnNcbiAgICAocHJvcHMuZGVzdGluYXRpb25zIHx8IFtdKS5mb3JFYWNoKHRoaXMuYWRkRGVzdGluYXRpb24uYmluZCh0aGlzKSk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5HYW1lU2Vzc2lvblF1ZXVlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgY3VzdG9tRXZlbnREYXRhOiBwcm9wcy5jdXN0b21FdmVudERhdGEsXG4gICAgICBkZXN0aW5hdGlvbnM6IGNkay5MYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMucGFyc2VEZXN0aW5hdGlvbnMoKSB9KSxcbiAgICAgIGZpbHRlckNvbmZpZ3VyYXRpb246IHRoaXMucGFyc2VGaWx0ZXJDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIG5vdGlmaWNhdGlvblRhcmdldDogcHJvcHMubm90aWZpY2F0aW9uVGFyZ2V0ICYmIHByb3BzLm5vdGlmaWNhdGlvblRhcmdldC50b3BpY0FybixcbiAgICAgIHBsYXllckxhdGVuY3lQb2xpY2llczogdGhpcy5wYXJzZVBsYXllckxhdGVuY3lQb2xpY2llcyhwcm9wcyksXG4gICAgICBwcmlvcml0eUNvbmZpZ3VyYXRpb246IHRoaXMucGFyc2VQcmlvcml0eUNvbmZpZ3VyYXRpb24ocHJvcHMpLFxuICAgICAgdGltZW91dEluU2Vjb25kczogcHJvcHMudGltZW91dCAmJiBwcm9wcy50aW1lb3V0LnRvU2Vjb25kcygpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5nYW1lU2Vzc2lvblF1ZXVlTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHJlc291cmNlLnJlZik7XG4gICAgdGhpcy5nYW1lU2Vzc2lvblF1ZXVlQXJuID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiAnZ2FtZXNlc3Npb25xdWV1ZScsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMuZ2FtZVNlc3Npb25RdWV1ZU5hbWUsXG4gICAgICBhcm5Gb3JtYXQ6IGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgZGVzdGluYXRpb24gdG8gZnVsZmlsbCByZXF1ZXN0cyBmb3IgbmV3IGdhbWUgc2Vzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIGRlc3RpbmF0aW9uIEEgZGVzdGluYXRpb24gdG8gYWRkXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkRGVzdGluYXRpb24oZGVzdGluYXRpb246IElHYW1lU2Vzc2lvblF1ZXVlRGVzdGluYXRpb24pIHtcbiAgICB0aGlzLmRlc3RpbmF0aW9ucy5wdXNoKGRlc3RpbmF0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVByaW9yaXR5Q29uZmlndXJhdGlvbihwcm9wczogR2FtZVNlc3Npb25RdWV1ZVByb3BzKTogQ2ZuR2FtZVNlc3Npb25RdWV1ZS5Qcmlvcml0eUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5wcmlvcml0eUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnByaW9yaXR5Q29uZmlndXJhdGlvbi5sb2NhdGlvbk9yZGVyLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb3JlIHRoYW4gMTAwIGxvY2F0aW9ucyBhcmUgYWxsb3dlZCBwZXIgcHJpb3JpdHkgY29uZmlndXJhdGlvbiwgZ2l2ZW4gJHtwcm9wcy5wcmlvcml0eUNvbmZpZ3VyYXRpb24ubG9jYXRpb25PcmRlci5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnByaW9yaXR5Q29uZmlndXJhdGlvbi5wcmlvcml0eU9yZGVyLmxlbmd0aCA+IDQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbW9yZSB0aGFuIDQgcHJpb3JpdGllcyBhcmUgYWxsb3dlZCBwZXIgcHJpb3JpdHkgY29uZmlndXJhdGlvbiwgZ2l2ZW4gJHtwcm9wcy5wcmlvcml0eUNvbmZpZ3VyYXRpb24ucHJpb3JpdHlPcmRlci5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByaW9yaXR5T3JkZXI6IHByb3BzLnByaW9yaXR5Q29uZmlndXJhdGlvbi5wcmlvcml0eU9yZGVyLFxuICAgICAgbG9jYXRpb25PcmRlcjogcHJvcHMucHJpb3JpdHlDb25maWd1cmF0aW9uLmxvY2F0aW9uT3JkZXIsXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVBsYXllckxhdGVuY3lQb2xpY2llcyhwcm9wczogR2FtZVNlc3Npb25RdWV1ZVByb3BzKTogQ2ZuR2FtZVNlc3Npb25RdWV1ZS5QbGF5ZXJMYXRlbmN5UG9saWN5UHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5wbGF5ZXJMYXRlbmN5UG9saWNpZXMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLnBsYXllckxhdGVuY3lQb2xpY2llcy5tYXAocGFyc2VQbGF5ZXJMYXRlbmN5UG9saWN5KTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlUGxheWVyTGF0ZW5jeVBvbGljeShwbGF5ZXJMYXRlbmN5UG9saWN5OiBQbGF5ZXJMYXRlbmN5UG9saWN5KTogQ2ZuR2FtZVNlc3Npb25RdWV1ZS5QbGF5ZXJMYXRlbmN5UG9saWN5UHJvcGVydHkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF4aW11bUluZGl2aWR1YWxQbGF5ZXJMYXRlbmN5TWlsbGlzZWNvbmRzOiBwbGF5ZXJMYXRlbmN5UG9saWN5Lm1heGltdW1JbmRpdmlkdWFsUGxheWVyTGF0ZW5jeS50b01pbGxpc2Vjb25kcygpLFxuICAgICAgICBwb2xpY3lEdXJhdGlvblNlY29uZHM6IHBsYXllckxhdGVuY3lQb2xpY3kucG9saWN5RHVyYXRpb24gJiYgcGxheWVyTGF0ZW5jeVBvbGljeS5wb2xpY3lEdXJhdGlvbi50b1NlY29uZHMoKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRmlsdGVyQ29uZmlndXJhdGlvbihwcm9wczogR2FtZVNlc3Npb25RdWV1ZVByb3BzKTogQ2ZuR2FtZVNlc3Npb25RdWV1ZS5GaWx0ZXJDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMuYWxsb3dlZExvY2F0aW9ucykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsb3dlZExvY2F0aW9uczogcHJvcHMuYWxsb3dlZExvY2F0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURlc3RpbmF0aW9ucygpOiBDZm5HYW1lU2Vzc2lvblF1ZXVlLkRlc3RpbmF0aW9uUHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmRlc3RpbmF0aW9ucyB8fCB0aGlzLmRlc3RpbmF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVzdGluYXRpb25zLm1hcChwYXJzZURlc3RpbmF0aW9uKTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlRGVzdGluYXRpb24oZGVzdGluYXRpb246IElHYW1lU2Vzc2lvblF1ZXVlRGVzdGluYXRpb24pOiBDZm5HYW1lU2Vzc2lvblF1ZXVlLkRlc3RpbmF0aW9uUHJvcGVydHkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVzdGluYXRpb25Bcm46IGRlc3RpbmF0aW9uLnJlc291cmNlQXJuRm9yRGVzdGluYXRpb24sXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuIl19
|