cdktn 0.25.0-pre.8 → 0.25.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 +2194 -424
- package/README.md +12 -0
- package/lib/annotations.js +4 -4
- package/lib/app.js +54 -5
- package/lib/aspect.js +3 -4
- package/lib/asset-hash.d.ts +75 -0
- package/lib/asset-hash.js +129 -0
- package/lib/asset-staging.d.ts +180 -0
- package/lib/asset-staging.js +464 -0
- package/lib/assets.d.ts +401 -0
- package/lib/assets.js +333 -0
- package/lib/backends/azurerm-backend.js +4 -6
- package/lib/backends/cloud-backend.js +15 -12
- package/lib/backends/consul-backend.js +4 -6
- package/lib/backends/cos-backend.js +4 -6
- package/lib/backends/gcs-backend.js +4 -6
- package/lib/backends/http-backend.js +4 -6
- package/lib/backends/local-backend.js +38 -7
- package/lib/backends/oss-backend.js +4 -6
- package/lib/backends/pg-backend.js +4 -6
- package/lib/backends/remote-backend.js +8 -10
- package/lib/backends/s3-backend.js +4 -6
- package/lib/backends/swift-backend.js +4 -6
- package/lib/complex-computed-list.js +114 -65
- package/lib/errors.d.ts +16 -0
- package/lib/errors.js +51 -3
- package/lib/functions/provider-function.js +2 -4
- package/lib/functions/terraform-functions.generated.js +2 -4
- package/lib/ignore-strategy.d.ts +82 -0
- package/lib/ignore-strategy.js +29 -0
- package/lib/importable-resource.js +8 -6
- package/lib/index.d.ts +4 -0
- package/lib/index.js +28 -2
- package/lib/manifest.js +49 -11
- package/lib/private/fs.d.ts +74 -2
- package/lib/private/fs.js +129 -17
- package/lib/private/unique.js +35 -2
- package/lib/resource.js +3 -4
- package/lib/synthesize/synthesizer.js +51 -25
- package/lib/terraform-asset.d.ts +68 -5
- package/lib/terraform-asset.js +127 -40
- package/lib/terraform-backend.js +3 -4
- package/lib/terraform-count.js +3 -4
- package/lib/terraform-data-resource.d.ts +1 -1
- package/lib/terraform-data-resource.js +18 -13
- package/lib/terraform-data-source.js +10 -4
- package/lib/terraform-dynamic-block.js +5 -2
- package/lib/terraform-dynamic-expression.js +4 -1
- package/lib/terraform-element.js +34 -6
- package/lib/terraform-ephemeral-resource.js +10 -4
- package/lib/terraform-functions.js +2 -4
- package/lib/terraform-hcl-module.js +3 -4
- package/lib/terraform-iterator.js +11 -12
- package/lib/terraform-local.js +3 -4
- package/lib/terraform-module-asset.js +39 -4
- package/lib/terraform-module.js +8 -4
- package/lib/terraform-operators.js +2 -4
- package/lib/terraform-output.js +7 -4
- package/lib/terraform-provider.js +5 -4
- package/lib/terraform-provisioner.js +2 -4
- package/lib/terraform-remote-state.js +5 -5
- package/lib/terraform-resource-targets.js +3 -7
- package/lib/terraform-resource.js +23 -7
- package/lib/terraform-stack.js +38 -38
- package/lib/terraform-variable.js +25 -22
- package/lib/testing/adapters/jest.d.ts +2 -1
- package/lib/testing/adapters/jest.js +3 -3
- package/lib/testing/index.js +42 -8
- package/lib/testing/matchers.d.ts +34 -30
- package/lib/testing/matchers.js +329 -93
- package/lib/tfExpression.js +25 -8
- package/lib/tokens/lazy.js +11 -7
- package/lib/tokens/private/dependency.js +2 -2
- package/lib/tokens/private/encoding.js +6 -1
- package/lib/tokens/private/intrinsic.js +6 -1
- package/lib/tokens/private/resolve.js +2 -5
- package/lib/tokens/private/token-map.js +4 -6
- package/lib/tokens/private/uniqueid.js +35 -2
- package/lib/tokens/resolvable.js +4 -6
- package/lib/tokens/string-fragments.js +6 -10
- package/lib/tokens/token.js +15 -18
- package/lib/upgrade-id-aspect.js +37 -6
- package/lib/validations/index.d.ts +0 -1
- package/lib/validations/index.js +1 -2
- package/lib/validations/target-versions.js +39 -2
- package/lib/validations/validate-function-version-support.js +2 -1
- package/lib/validations/validate-provider-function-target-support.js +2 -1
- package/lib/validations/validate-provider-presence.js +10 -9
- package/package.json +21 -7
- package/scripts/pack.mjs +27 -12
- package/lib/validations/validate-binary-version.d.ts +0 -23
- package/lib/validations/validate-binary-version.js +0 -54
- package/lib/validations/validate-terraform-version.d.ts +0 -13
- package/lib/validations/validate-terraform-version.js +0 -21
package/lib/assets.js
ADDED
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ChainBundler = exports.BundlerKey = exports.BundleResult = exports.BundleOutputType = exports.AssetPackaging = exports.AssetHashType = void 0;
|
|
37
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
38
|
+
// Copyright (c) HashiCorp, Inc
|
|
39
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const errors_1 = require("./errors");
|
|
43
|
+
const fs_1 = require("./private/fs");
|
|
44
|
+
/**
|
|
45
|
+
* The type of asset hash.
|
|
46
|
+
*
|
|
47
|
+
* The hash identifies a specific revision of the asset and caches deployment
|
|
48
|
+
* work such as packaging and uploading.
|
|
49
|
+
*/
|
|
50
|
+
var AssetHashType;
|
|
51
|
+
(function (AssetHashType) {
|
|
52
|
+
/**
|
|
53
|
+
* Based on the content of the source path.
|
|
54
|
+
*
|
|
55
|
+
* Use `SOURCE` to track changes to the source files directly.
|
|
56
|
+
*/
|
|
57
|
+
AssetHashType["SOURCE"] = "source";
|
|
58
|
+
/**
|
|
59
|
+
* Based on the content of the bundling output.
|
|
60
|
+
*
|
|
61
|
+
* Use `OUTPUT` when the source is a top-level folder holding code and/or
|
|
62
|
+
* dependencies not directly linked to the asset.
|
|
63
|
+
*/
|
|
64
|
+
AssetHashType["OUTPUT"] = "output";
|
|
65
|
+
/**
|
|
66
|
+
* Use a custom hash.
|
|
67
|
+
*/
|
|
68
|
+
AssetHashType["CUSTOM"] = "custom";
|
|
69
|
+
})(AssetHashType || (exports.AssetHashType = AssetHashType = {}));
|
|
70
|
+
/**
|
|
71
|
+
* Copies a single file verbatim.
|
|
72
|
+
*/
|
|
73
|
+
class FilePackaging {
|
|
74
|
+
extension = "";
|
|
75
|
+
producesDirectory = false;
|
|
76
|
+
acceptsDirectorySource = false;
|
|
77
|
+
omitsDirectoryEntries = false;
|
|
78
|
+
pack(options) {
|
|
79
|
+
fs.copyFileSync(options.source, options.target);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Copies a directory tree verbatim, without archiving it.
|
|
84
|
+
*/
|
|
85
|
+
class DirectoryPackaging {
|
|
86
|
+
extension = "";
|
|
87
|
+
producesDirectory = true;
|
|
88
|
+
acceptsDirectorySource = true;
|
|
89
|
+
omitsDirectoryEntries = false;
|
|
90
|
+
pack(options) {
|
|
91
|
+
(0, fs_1.copySync)(options.source, options.target, {
|
|
92
|
+
shouldExclude: options.ignoreStrategy
|
|
93
|
+
? (relativePath, isDirectory) => options.ignoreStrategy.ignores({ relativePath, isDirectory })
|
|
94
|
+
: undefined,
|
|
95
|
+
descendIntoExcludedDirectories: options.ignoreStrategy?.pruneExcludedDirectories === false,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Archives a directory tree into a single zip file.
|
|
101
|
+
*/
|
|
102
|
+
class ZipPackaging {
|
|
103
|
+
extension = ".zip";
|
|
104
|
+
producesDirectory = false;
|
|
105
|
+
acceptsDirectorySource = true;
|
|
106
|
+
omitsDirectoryEntries = true;
|
|
107
|
+
pack(options) {
|
|
108
|
+
(0, fs_1.archiveSync)(options.source, options.target, options.ignoreStrategy
|
|
109
|
+
? (relativePath, isDirectory) => options.ignoreStrategy.ignores({ relativePath, isDirectory })
|
|
110
|
+
: undefined, options.ignoreStrategy?.pruneExcludedDirectories === false);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Built-in packaging strategies. Custom formats implement `IAssetPackaging`
|
|
115
|
+
* directly rather than extending this class.
|
|
116
|
+
*/
|
|
117
|
+
class AssetPackaging {
|
|
118
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.AssetPackaging", version: "0.25.0" };
|
|
119
|
+
/**
|
|
120
|
+
* Copy a single file as-is.
|
|
121
|
+
*/
|
|
122
|
+
static FILE = new FilePackaging();
|
|
123
|
+
/**
|
|
124
|
+
* Copy a directory tree as-is, without archiving.
|
|
125
|
+
*/
|
|
126
|
+
static DIRECTORY = new DirectoryPackaging();
|
|
127
|
+
/**
|
|
128
|
+
* Archive a directory tree into a single zip file.
|
|
129
|
+
*/
|
|
130
|
+
static ZIP = new ZipPackaging();
|
|
131
|
+
constructor() { }
|
|
132
|
+
}
|
|
133
|
+
exports.AssetPackaging = AssetPackaging;
|
|
134
|
+
/**
|
|
135
|
+
* The shape of a bundler's output, so staging and packaging can treat a
|
|
136
|
+
* single-file artifact (a tarball, a `.zip`) differently from a directory
|
|
137
|
+
* tree without inferring it from the path.
|
|
138
|
+
*/
|
|
139
|
+
var BundleOutputType;
|
|
140
|
+
(function (BundleOutputType) {
|
|
141
|
+
/**
|
|
142
|
+
* The output is a directory tree.
|
|
143
|
+
*
|
|
144
|
+
* Packaged like an unbundled source directory. The default, and the only
|
|
145
|
+
* shape that predates archive support.
|
|
146
|
+
*/
|
|
147
|
+
BundleOutputType["DIRECTORY"] = "directory";
|
|
148
|
+
/**
|
|
149
|
+
* The output is a single file the bundler already produced in its final
|
|
150
|
+
* form.
|
|
151
|
+
*
|
|
152
|
+
* A tarball or a deterministic `.zip`. Staged verbatim rather than
|
|
153
|
+
* re-archived, so `AssetType.FILE` no longer has to reject a bundler.
|
|
154
|
+
*/
|
|
155
|
+
BundleOutputType["FILE"] = "file";
|
|
156
|
+
})(BundleOutputType || (exports.BundleOutputType = BundleOutputType = {}));
|
|
157
|
+
/**
|
|
158
|
+
* What a bundler produced, returned from {@link IAssetBundler.bundle}.
|
|
159
|
+
*
|
|
160
|
+
* Carries the artifact path and its shape, or a declined state signalling the
|
|
161
|
+
* caller should fall back. See {@link declined} for the decline protocol.
|
|
162
|
+
*/
|
|
163
|
+
class BundleResult {
|
|
164
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.BundleResult", version: "0.25.0" };
|
|
165
|
+
/**
|
|
166
|
+
* A directory-tree artifact at `path`.
|
|
167
|
+
*/
|
|
168
|
+
static directory(path) {
|
|
169
|
+
return new BundleResult(BundleOutputType.DIRECTORY, path, false);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* A single-file artifact at `path` (a tarball, a `.zip`), staged verbatim.
|
|
173
|
+
*/
|
|
174
|
+
static file(path) {
|
|
175
|
+
return new BundleResult(BundleOutputType.FILE, path, false);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* The bundler declined to run here; the caller should fall back.
|
|
179
|
+
*
|
|
180
|
+
* Distinct from a thrown error, which is a hard failure.
|
|
181
|
+
*/
|
|
182
|
+
static declined() {
|
|
183
|
+
return new BundleResult(undefined, undefined, true);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The artifact's shape, or undefined when {@link isDeclined}.
|
|
187
|
+
*/
|
|
188
|
+
outputType;
|
|
189
|
+
/**
|
|
190
|
+
* The artifact path, or undefined when {@link isDeclined}.
|
|
191
|
+
*/
|
|
192
|
+
path;
|
|
193
|
+
/**
|
|
194
|
+
* Whether the bundler declined to run, signalling the caller to fall back.
|
|
195
|
+
*/
|
|
196
|
+
isDeclined;
|
|
197
|
+
constructor(outputType, path, isDeclined) {
|
|
198
|
+
this.outputType = outputType;
|
|
199
|
+
this.path = path;
|
|
200
|
+
this.isDeclined = isDeclined;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
exports.BundleResult = BundleResult;
|
|
204
|
+
/**
|
|
205
|
+
* Builds an {@link IAssetBundler.bundlerKey} from an ordered set of parts.
|
|
206
|
+
*
|
|
207
|
+
* A `bundlerKey` has to serialize everything that can move a build's output;
|
|
208
|
+
* done ad hoc, every bundler invents its own delimiter and forgets an input
|
|
209
|
+
* differently. This gives the convention one implementation: parts are joined
|
|
210
|
+
* with a separator that is escaped inside values, so distinct inputs cannot
|
|
211
|
+
* collide into the same key.
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* const key = BundlerKey.of("docker", image, command)
|
|
215
|
+
* .withEnv({ NODE_ENV: nodeEnv })
|
|
216
|
+
* .toString();
|
|
217
|
+
*/
|
|
218
|
+
class BundlerKey {
|
|
219
|
+
parts;
|
|
220
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.BundlerKey", version: "0.25.0" };
|
|
221
|
+
/**
|
|
222
|
+
* Start a key from an ordered list of parts.
|
|
223
|
+
*
|
|
224
|
+
* Order is significant: it is part of what the key identifies.
|
|
225
|
+
*/
|
|
226
|
+
static of(...parts) {
|
|
227
|
+
return new BundlerKey(parts);
|
|
228
|
+
}
|
|
229
|
+
static escape(part) {
|
|
230
|
+
return part.replace(/\\/g, "\\\\").replace(/:/g, "\\:");
|
|
231
|
+
}
|
|
232
|
+
constructor(parts) {
|
|
233
|
+
this.parts = parts;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Append parts, returning a new key.
|
|
237
|
+
*/
|
|
238
|
+
add(...parts) {
|
|
239
|
+
return new BundlerKey([...this.parts, ...parts]);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Append `key=value` parts for a record, sorted by key so the result does
|
|
243
|
+
* not depend on property order.
|
|
244
|
+
*/
|
|
245
|
+
withEnv(entries) {
|
|
246
|
+
const kept = Object.keys(entries)
|
|
247
|
+
.sort()
|
|
248
|
+
.map((k) => `${k}=${entries[k]}`);
|
|
249
|
+
return new BundlerKey([...this.parts, ...kept]);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Render the collected parts to the string passed as `bundlerKey`.
|
|
253
|
+
*/
|
|
254
|
+
toString() {
|
|
255
|
+
return this.parts.map(BundlerKey.escape).join(":");
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
exports.BundlerKey = BundlerKey;
|
|
259
|
+
/**
|
|
260
|
+
* Composes bundlers into a "try each in order until one runs" chain.
|
|
261
|
+
*
|
|
262
|
+
* This is how a local bundler and a Docker bundler compose without being
|
|
263
|
+
* rewritten as one: each leg declines (`BundleResult.declined()`) when it
|
|
264
|
+
* cannot run here, and the chain moves to the next. The first non-declining
|
|
265
|
+
* result wins; if all decline, `bundle` throws, since staging has nothing to
|
|
266
|
+
* fall back to. Each leg builds into its own output directory, so a leg that
|
|
267
|
+
* writes before declining cannot leak partial files into the leg that wins.
|
|
268
|
+
*
|
|
269
|
+
* The chain's `bundlerKey` folds in *every* leg's key, so identity is the same
|
|
270
|
+
* regardless of which leg ends up running — a build that could have gone local
|
|
271
|
+
* or Docker is one asset, not two.
|
|
272
|
+
*
|
|
273
|
+
* This makes the legs interchangeable only if they produce equivalent output.
|
|
274
|
+
* Under `SOURCE` hashing they must: a machine with a host tool and one without
|
|
275
|
+
* run different legs, and non-equivalent legs would stage different bytes under
|
|
276
|
+
* the same hash. Use `OUTPUT` hashing when legs may diverge, so identity tracks
|
|
277
|
+
* the artifact each leg actually produced.
|
|
278
|
+
*/
|
|
279
|
+
class ChainBundler {
|
|
280
|
+
bundlers;
|
|
281
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.ChainBundler", version: "0.25.0" };
|
|
282
|
+
/**
|
|
283
|
+
* Chain bundlers in the order given; earlier bundlers are preferred.
|
|
284
|
+
*/
|
|
285
|
+
static of(...bundlers) {
|
|
286
|
+
return new ChainBundler(bundlers);
|
|
287
|
+
}
|
|
288
|
+
bundlerKey;
|
|
289
|
+
outputFileName;
|
|
290
|
+
constructor(bundlers) {
|
|
291
|
+
this.bundlers = bundlers;
|
|
292
|
+
if (bundlers.length === 0) {
|
|
293
|
+
throw (0, errors_1.chainBundlerRequiresAtLeastOneBundler)();
|
|
294
|
+
}
|
|
295
|
+
// Fold in every leg's key so which leg runs cannot change identity. A leg
|
|
296
|
+
// without a key contributes an empty part, still distinguishing "two legs"
|
|
297
|
+
// from "one leg" positionally.
|
|
298
|
+
const keys = bundlers.map((b) => b.bundlerKey ?? "");
|
|
299
|
+
this.bundlerKey = keys.some((k) => k !== "")
|
|
300
|
+
? BundlerKey.of("chain", ...keys).toString()
|
|
301
|
+
: undefined;
|
|
302
|
+
// The staged file name is fixed at construction, before any leg runs, so
|
|
303
|
+
// legs that declare one must agree — otherwise the name would depend on
|
|
304
|
+
// which leg happens to run.
|
|
305
|
+
const names = new Set(bundlers
|
|
306
|
+
.map((b) => b.outputFileName)
|
|
307
|
+
.filter((n) => n !== undefined));
|
|
308
|
+
if (names.size > 1) {
|
|
309
|
+
throw (0, errors_1.chainBundlerConflictingOutputFileName)([...names]);
|
|
310
|
+
}
|
|
311
|
+
this.outputFileName = names.size === 1 ? [...names][0] : undefined;
|
|
312
|
+
}
|
|
313
|
+
bundle(options) {
|
|
314
|
+
for (let i = 0; i < this.bundlers.length; i++) {
|
|
315
|
+
// Each leg gets its own output directory. A leg is free to write before
|
|
316
|
+
// it declines (esbuild failing on an unsupported target, a Docker leg
|
|
317
|
+
// creating output before finding the daemon down), and sharing one
|
|
318
|
+
// directory would leak those partial files into the leg that succeeds.
|
|
319
|
+
const legOutputDir = path.join(options.outputDir, `leg-${i}`);
|
|
320
|
+
fs.mkdirSync(legOutputDir);
|
|
321
|
+
const result = this.bundlers[i].bundle({
|
|
322
|
+
source: options.source,
|
|
323
|
+
outputDir: legOutputDir,
|
|
324
|
+
});
|
|
325
|
+
if (!result.isDeclined) {
|
|
326
|
+
return result;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
throw (0, errors_1.chainBundlerAllDeclined)(this.bundlers.length);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
exports.ChainBundler = ChainBundler;
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUVuQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHFDQUlrQjtBQUNsQixxQ0FBcUQ7QUE4Q3JEOzs7OztHQUtHO0FBQ0gsSUFBWSxhQW9CWDtBQXBCRCxXQUFZLGFBQWE7SUFDdkI7Ozs7T0FJRztJQUNILGtDQUFpQixDQUFBO0lBRWpCOzs7OztPQUtHO0lBQ0gsa0NBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxrQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBcEJXLGFBQWEsNkJBQWIsYUFBYSxRQW9CeEI7QUFrRkQ7O0dBRUc7QUFDSCxNQUFNLGFBQWE7SUFDRCxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2YsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLHNCQUFzQixHQUFHLEtBQUssQ0FBQztJQUMvQixxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDdkMsSUFBSSxDQUFDLE9BQW9CO1FBQzlCLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLGtCQUFrQjtJQUNOLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDZixpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDekIsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQzlCLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUN2QyxJQUFJLENBQUMsT0FBb0I7UUFDOUIsSUFBQSxhQUFRLEVBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLGFBQWEsRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDbkMsQ0FB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LEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQXNCO1FBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLHdFQUF3RTtZQUN4RSxzRUFBc0U7WUFDdEUsbUVBQW1FO1lBQ25FLHVFQUF1RTtZQUN2RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlELEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsU0FBUyxFQUFFLFlBQVk7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLElBQUEsZ0NBQXVCLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxDQUFDOztBQXZESCxvQ0F3REMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7XG4gIGNoYWluQnVuZGxlckFsbERlY2xpbmVkLFxuICBjaGFpbkJ1bmRsZXJDb25mbGljdGluZ091dHB1dEZpbGVOYW1lLFxuICBjaGFpbkJ1bmRsZXJSZXF1aXJlc0F0TGVhc3RPbmVCdW5kbGVyLFxufSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IGFyY2hpdmVTeW5jLCBjb3B5U3luYyB9IGZyb20gXCIuL3ByaXZhdGUvZnNcIjtcbmltcG9ydCB7IElJZ25vcmVTdHJhdGVneSB9IGZyb20gXCIuL2lnbm9yZS1zdHJhdGVneVwiO1xuXG4vKipcbiAqIENvbW1vbiBpbnRlcmZhY2UgZm9yIGFsbCBhc3NldHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0IHtcbiAgLyoqXG4gICAqIEEgaGFzaCBvZiB0aGlzIGFzc2V0LCBhdmFpbGFibGUgYXQgY29uc3RydWN0aW9uIHRpbWUuXG4gICAqXG4gICAqIEJlaW5nIGEgcGxhaW4gc3RyaW5nLCBpdCBjYW4gYmUgdXNlZCBpbiBjb25zdHJ1Y3QgSURzIHRvIGZvcmNlIGEgbmV3XG4gICAqIHJlc291cmNlIHdoZW4gdGhlIGNvbnRlbnQgaGFzaCBjaGFuZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBjb250cm9sbGluZyBob3cgYW4gYXNzZXQncyBoYXNoIGlzIGRlcml2ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gaGFzaCBmb3IgdGhpcyBhc3NldC4gSWYgYGFzc2V0SGFzaFR5cGVgIGlzIHNldCBpdCBtdXN0XG4gICAqIGJlIHNldCB0byBgQXNzZXRIYXNoVHlwZS5DVVNUT01gLiBUaGUgdmFsdWUgaXMgdXNlZCB2ZXJiYXRpbSBhcyB0aGUgYXNzZXRcbiAgICogaGFzaCwgYW5kIGJlY2F1c2UgaXQgbmFtZXMgdGhlIHN0YWdlZCBhc3NldCBmaWxlIGl0IG1heSBvbmx5IGNvbnRhaW5cbiAgICogbGV0dGVycywgZGlnaXRzLCBgX2AsIGAuYCBhbmQgYC1gLlxuICAgKlxuICAgKiBUaGUgaGFzaCBpZGVudGlmaWVzIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIGFzc2V0IGFuZCBjYWNoZXMgZGVwbG95bWVudFxuICAgKiB3b3JrIChwYWNrYWdpbmcsIHVwbG9hZGluZykuIEEgY3VzdG9tIGhhc2ggbXVzdCBiZSB1cGRhdGVkIHdoZW5ldmVyIHRoZVxuICAgKiBhc3NldCBjaGFuZ2VzLCBvciBzb21lIGRlcGxveW1lbnRzIHdpbGwgbm90IGJlIGludmFsaWRhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGJhc2VkIG9uIGBhc3NldEhhc2hUeXBlYFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgaGFzaCB0byBjYWxjdWxhdGUgZm9yIHRoaXMgYXNzZXQuXG4gICAqXG4gICAqIElmIGBhc3NldEhhc2hgIGlzIGNvbmZpZ3VyZWQsIHRoaXMgb3B0aW9uIG11c3QgYmUgYHVuZGVmaW5lZGAgb3JcbiAgICogYEFzc2V0SGFzaFR5cGUuQ1VTVE9NYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBpcyBgQXNzZXRIYXNoVHlwZS5TT1VSQ0VgLCBidXQgaWYgYGFzc2V0SGFzaGAgaXNcbiAgICogZXhwbGljaXRseSBzcGVjaWZpZWQgdGhpcyB2YWx1ZSBkZWZhdWx0cyB0byBgQXNzZXRIYXNoVHlwZS5DVVNUT01gLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoVHlwZT86IEFzc2V0SGFzaFR5cGU7XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgYXNzZXQgaGFzaC5cbiAqXG4gKiBUaGUgaGFzaCBpZGVudGlmaWVzIGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIGFzc2V0IGFuZCBjYWNoZXMgZGVwbG95bWVudFxuICogd29yayBzdWNoIGFzIHBhY2thZ2luZyBhbmQgdXBsb2FkaW5nLlxuICovXG5leHBvcnQgZW51bSBBc3NldEhhc2hUeXBlIHtcbiAgLyoqXG4gICAqIEJhc2VkIG9uIHRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgcGF0aC5cbiAgICpcbiAgICogVXNlIGBTT1VSQ0VgIHRvIHRyYWNrIGNoYW5nZXMgdG8gdGhlIHNvdXJjZSBmaWxlcyBkaXJlY3RseS5cbiAgICovXG4gIFNPVVJDRSA9IFwic291cmNlXCIsXG5cbiAgLyoqXG4gICAqIEJhc2VkIG9uIHRoZSBjb250ZW50IG9mIHRoZSBidW5kbGluZyBvdXRwdXQuXG4gICAqXG4gICAqIFVzZSBgT1VUUFVUYCB3aGVuIHRoZSBzb3VyY2UgaXMgYSB0b3AtbGV2ZWwgZm9sZGVyIGhvbGRpbmcgY29kZSBhbmQvb3JcbiAgICogZGVwZW5kZW5jaWVzIG5vdCBkaXJlY3RseSBsaW5rZWQgdG8gdGhlIGFzc2V0LlxuICAgKi9cbiAgT1VUUFVUID0gXCJvdXRwdXRcIixcblxuICAvKipcbiAgICogVXNlIGEgY3VzdG9tIGhhc2guXG4gICAqL1xuICBDVVNUT00gPSBcImN1c3RvbVwiLFxufVxuXG4vKipcbiAqIEhvdyBhIHN0YWdlZCBhc3NldCBpcyBwcm9kdWNlZCBhbmQgd2hhdCBzaGFwZSBpdCB0YWtlcyBvbiBkaXNrLlxuICpcbiAqIFBhY2thZ2luZyBhbnN3ZXJzIHR3byBpbmRlcGVuZGVudCBxdWVzdGlvbnM6IGhvdyB0aGUgYXJ0aWZhY3QgaXMgcHJvZHVjZWRcbiAqIChjb3B5LCB6aXAsIHRhci5neiwgLi4uKSBhbmQgd2hldGhlciB0aGUgcmVzdWx0IGlzIGEgZGlyZWN0b3J5IG9yIGEgc2luZ2xlXG4gKiBmaWxlLiBBIGNsb3NlZCBlbnVtIGNhbiBvbmx5IGV2ZXIgYW5zd2VyIHRoZSBzZWNvbmQgb25lLCBzbyBpdCBpcyBhblxuICogaW50ZXJmYWNlIHJhdGhlciB0aGFuIGFuIGVudW0g4oCUIGN1c3RvbSBmb3JtYXRzIChlLmcuIGB0YXIuYnoyYCkgbmVlZCBub1xuICogY29yZSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0UGFja2FnaW5nIHtcbiAgLyoqXG4gICAqIEFwcGVuZGVkIHRvIHRoZSBzdGFnZWQgYXJ0aWZhY3QgbmFtZSwgZS5nLiBcIi56aXBcIiwgXCJcIiwgXCIudGFyLmJ6MlwiLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHN0YWdlZCByZXN1bHQgaXMgYSBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gYSBzaW5nbGUgZmlsZS5cbiAgICpcbiAgICogUHVibGlzaGVycyBicmFuY2ggb24gdGhpcyB0byBkZWNpZGUgd2hldGhlciB0aGV5IHVwbG9hZCBvbmUgb2JqZWN0IG9yXG4gICAqIHN5bmMgYSB0cmVlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZHVjZXNEaXJlY3Rvcnk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYHBhY2tgIGFjY2VwdHMgYSBkaXJlY3RvcnkgYXMgaXRzIGBzb3VyY2VgLlxuICAgKlxuICAgKiBJbmRlcGVuZGVudCBvZiBgcHJvZHVjZXNEaXJlY3RvcnlgIGFuZCBgb21pdHNEaXJlY3RvcnlFbnRyaWVzYCwgYm90aCBvZlxuICAgKiB3aGljaCBkZXNjcmliZSB0aGUgb3V0cHV0OiBhIGB0YXIuZ3pgIHBhY2thZ2luZyB0YWtlcyBhIGRpcmVjdG9yeSBzb3VyY2VcbiAgICogeWV0IGVtaXRzIGEgc2luZ2xlIGZpbGUuIEJ1bmRsZXIgb3V0cHV0IGlzIGFsd2F5cyBhIGRpcmVjdG9yeSwgc28gYVxuICAgKiBwYWNrYWdpbmcgdGhhdCBpcyBgZmFsc2VgIGhlcmUgY2Fubm90IHN0YWdlIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBgcGFja2AgZW1pdHMgYW4gYXJ0aWZhY3Qgd2l0aCBubyBkaXJlY3RvcnkgZW50cmllcyBvZiBpdHMgb3duIOKAlFxuICAgKiBvbmx5IHRoZSBpZ25vcmUtc3RyYXRlZ3ktYXdhcmUgc291cmNlIHdhbGsuIGBoYXNoUGF0aGAncyBgYXJjaGl2ZWAgZnJhbWVcbiAgICogbXVzdCBhZ3JlZSB3aXRoIHRoaXMgb3IgdGhlIGhhc2ggYW5kIHRoZSBhcnRpZmFjdCBkZXNjcmliZSBkaWZmZXJlbnRcbiAgICogZmlsZSBzZXRzLlxuICAgKlxuICAgKiBgWmlwUGFja2FnaW5nYCBzZXRzIHRoaXMgYmVjYXVzZSBgYXJjaGl2ZVN5bmNgIG5ldmVyIGVtaXRzIFpJUCBkaXJlY3RvcnlcbiAgICogZW50cmllcy4gQSBkaXJlY3RvcnktcHJvZHVjaW5nIHBhY2thZ2luZyB0aGF0IG1pcnJvcnMgdGhlIHNvdXJjZSB0cmVlXG4gICAqIChlLmcuIGBEaXJlY3RvcnlQYWNrYWdpbmdgKSBsZWF2ZXMgdGhpcyBmYWxzZSwgc2luY2UgaXRzIGRpcmVjdG9yaWVzIGFyZVxuICAgKiByZWFsIGVudHJpZXMgb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IG9taXRzRGlyZWN0b3J5RW50cmllczogYm9vbGVhbjtcblxuICAvKipcbiAgICogV3JpdGUgdGhlIHBhY2thZ2VkIHJlc3VsdCB0byBgb3B0aW9ucy50YXJnZXRgLlxuICAgKi9cbiAgcGFjayhvcHRpb25zOiBQYWNrT3B0aW9ucyk6IHZvaWQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIElBc3NldFBhY2thZ2luZy5wYWNrfS5cbiAqXG4gKiBBIHN0cnVjdCByYXRoZXIgdGhhbiBwb3NpdGlvbmFsIHBhcmFtZXRlcnM6IGFkZGluZyBhIHN0cnVjdCBmaWVsZCBpc1xuICogYWRkaXRpdmUsIGFkZGluZyBhIG1ldGhvZCBwYXJhbWV0ZXIgaXMgbm90LCBhbmQgYHBhY2tgIGlzIGNhbGxlZCB0aHJvdWdoXG4gKiBKU0lJIHdoZXJlIHRoYXQgZGlzdGluY3Rpb24gaXMgYSBicmVha2luZy1jaGFuZ2UgYm91bmRhcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja09wdGlvbnMge1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgcmVzb2x2ZWQgKGFscmVhZHkgYnVuZGxlZCwgaWYgYXBwbGljYWJsZSkgc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggdGhlIHBhY2thZ2VkIHJlc3VsdCBzaG91bGQgYmUgd3JpdHRlbiB0by5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbnRyaWVzIHRvIG9taXQgZnJvbSB0aGUgcGFja2FnZWQgcmVzdWx0LiBNdXN0IG1hdGNoIHRoZSBzdHJhdGVneSB1c2VkXG4gICAqIHRvIGhhc2ggdGhlIHNhbWUgc291cmNlLCBvciB0aGUgaGFzaCBhbmQgdGhlIGFydGlmYWN0IGRlc2NyaWJlXG4gICAqIGRpZmZlcmVudCBzZXRzIG9mIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdGhpbmcgaXMgZXhjbHVkZWRcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVN0cmF0ZWd5PzogSUlnbm9yZVN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIENvcGllcyBhIHNpbmdsZSBmaWxlIHZlcmJhdGltLlxuICovXG5jbGFzcyBGaWxlUGFja2FnaW5nIGltcGxlbWVudHMgSUFzc2V0UGFja2FnaW5nIHtcbiAgcHVibGljIHJlYWRvbmx5IGV4dGVuc2lvbiA9IFwiXCI7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWNlc0RpcmVjdG9yeSA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZSA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgb21pdHNEaXJlY3RvcnlFbnRyaWVzID0gZmFsc2U7XG4gIHB1YmxpYyBwYWNrKG9wdGlvbnM6IFBhY2tPcHRpb25zKTogdm9pZCB7XG4gICAgZnMuY29weUZpbGVTeW5jKG9wdGlvbnMuc291cmNlLCBvcHRpb25zLnRhcmdldCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb3BpZXMgYSBkaXJlY3RvcnkgdHJlZSB2ZXJiYXRpbSwgd2l0aG91dCBhcmNoaXZpbmcgaXQuXG4gKi9cbmNsYXNzIERpcmVjdG9yeVBhY2thZ2luZyBpbXBsZW1lbnRzIElBc3NldFBhY2thZ2luZyB7XG4gIHB1YmxpYyByZWFkb25seSBleHRlbnNpb24gPSBcIlwiO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvZHVjZXNEaXJlY3RvcnkgPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZSA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBvbWl0c0RpcmVjdG9yeUVudHJpZXMgPSBmYWxzZTtcbiAgcHVibGljIHBhY2sob3B0aW9uczogUGFja09wdGlvbnMpOiB2b2lkIHtcbiAgICBjb3B5U3luYyhvcHRpb25zLnNvdXJjZSwgb3B0aW9ucy50YXJnZXQsIHtcbiAgICAgIHNob3VsZEV4Y2x1ZGU6IG9wdGlvbnMuaWdub3JlU3RyYXRlZ3lcbiAgICAgICAgPyAocmVsYXRpdmVQYXRoLCBpc0RpcmVjdG9yeSkgPT5cbiAgICAgICAgICAgIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3khLmlnbm9yZXMoeyByZWxhdGl2ZVBhdGgsIGlzRGlyZWN0b3J5IH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVzY2VuZEludG9FeGNsdWRlZERpcmVjdG9yaWVzOlxuICAgICAgICBvcHRpb25zLmlnbm9yZVN0cmF0ZWd5Py5wcnVuZUV4Y2x1ZGVkRGlyZWN0b3JpZXMgPT09IGZhbHNlLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQXJjaGl2ZXMgYSBkaXJlY3RvcnkgdHJlZSBpbnRvIGEgc2luZ2xlIHppcCBmaWxlLlxuICovXG5jbGFzcyBaaXBQYWNrYWdpbmcgaW1wbGVtZW50cyBJQXNzZXRQYWNrYWdpbmcge1xuICBwdWJsaWMgcmVhZG9ubHkgZXh0ZW5zaW9uID0gXCIuemlwXCI7XG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWNlc0RpcmVjdG9yeSA9IGZhbHNlO1xuICBwdWJsaWMgcmVhZG9ubHkgYWNjZXB0c0RpcmVjdG9yeVNvdXJjZSA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBvbWl0c0RpcmVjdG9yeUVudHJpZXMgPSB0cnVlO1xuICBwdWJsaWMgcGFjayhvcHRpb25zOiBQYWNrT3B0aW9ucyk6IHZvaWQge1xuICAgIGFyY2hpdmVTeW5jKFxuICAgICAgb3B0aW9ucy5zb3VyY2UsXG4gICAgICBvcHRpb25zLnRhcmdldCxcbiAgICAgIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3lcbiAgICAgICAgPyAocmVsYXRpdmVQYXRoLCBpc0RpcmVjdG9yeSkgPT5cbiAgICAgICAgICAgIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3khLmlnbm9yZXMoeyByZWxhdGl2ZVBhdGgsIGlzRGlyZWN0b3J5IH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3B0aW9ucy5pZ25vcmVTdHJhdGVneT8ucHJ1bmVFeGNsdWRlZERpcmVjdG9yaWVzID09PSBmYWxzZSxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQnVpbHQtaW4gcGFja2FnaW5nIHN0cmF0ZWdpZXMuIEN1c3RvbSBmb3JtYXRzIGltcGxlbWVudCBgSUFzc2V0UGFja2FnaW5nYFxuICogZGlyZWN0bHkgcmF0aGVyIHRoYW4gZXh0ZW5kaW5nIHRoaXMgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NldFBhY2thZ2luZyB7XG4gIC8qKlxuICAgKiBDb3B5IGEgc2luZ2xlIGZpbGUgYXMtaXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTEU6IElBc3NldFBhY2thZ2luZyA9IG5ldyBGaWxlUGFja2FnaW5nKCk7XG5cbiAgLyoqXG4gICAqIENvcHkgYSBkaXJlY3RvcnkgdHJlZSBhcy1pcywgd2l0aG91dCBhcmNoaXZpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJUkVDVE9SWTogSUFzc2V0UGFja2FnaW5nID0gbmV3IERpcmVjdG9yeVBhY2thZ2luZygpO1xuXG4gIC8qKlxuICAgKiBBcmNoaXZlIGEgZGlyZWN0b3J5IHRyZWUgaW50byBhIHNpbmdsZSB6aXAgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgWklQOiBJQXNzZXRQYWNrYWdpbmcgPSBuZXcgWmlwUGFja2FnaW5nKCk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogT3B0aW9ucyBoYW5kZWQgdG8gYW4ge0BsaW5rIElBc3NldEJ1bmRsZXJ9IHdoZW4gaXQgcnVucy5cbiAqXG4gKiBBIHN0cnVjdCByYXRoZXIgdGhhbiBwb3NpdGlvbmFsIHBhcmFtZXRlcnM6IGFkZGluZyBhIGZpZWxkIGlzIGFkZGl0aXZlLFxuICogYWRkaW5nIGEgbWV0aG9kIHBhcmFtZXRlciBpcyBub3QsIGFuZCBgYnVuZGxlYCBpcyBjYWxsZWQgdGhyb3VnaCBKU0lJIHdoZXJlXG4gKiB0aGF0IGRpc3RpbmN0aW9uIGlzIGEgYnJlYWtpbmctY2hhbmdlIGJvdW5kYXJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZU9wdGlvbnMge1xuICAvKipcbiAgICogQWJzb2x1dGUgcGF0aCB0byB0aGUgYXNzZXQncyBzb3VyY2UgZmlsZSBvciBkaXJlY3RvcnkuIFRoZSBidW5kbGVyIHJlYWRzXG4gICAqIGZyb20gaGVyZSBhbmQgbXVzdCBub3QgbW9kaWZ5IGl0LlxuICAgKlxuICAgKiBFeGNsdXNpb25zIChgZXhjbHVkZWAgLyBgaWdub3JlU3RyYXRlZ3lgKSBhcmUgYWxyZWFkeSBhcHBsaWVkOiB3aGVuIGFueVxuICAgKiBhcmUgY29uZmlndXJlZCB0aGlzIHBvaW50cyBhdCBhIGZpbHRlcmVkIGNvcHksIG5vdCB0aGUgb3JpZ2luYWwgdHJlZSwgc29cbiAgICogdGhlIGJ1bmRsZXIgcmVhZHMgZXhhY3RseSB0aGUgZmlsZSBzZXQgdGhlIGFzc2V0IGhhc2ggd2FzIHRha2VuIG92ZXIuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzY3JhdGNoIGRpcmVjdG9yeSB0aGUgYnVuZGxlciBtYXkgd3JpdGUgaW50bywgb3duZWQgYW5kIGNyZWF0ZWQgYnkgdGhlXG4gICAqIGNhbGxlci4gVGhlIGJ1bmRsZXIgcHJvZHVjZXMgaXRzIG91dHB1dCBoZXJlIChvciBpbiBhIHN1YmRpcmVjdG9yeSkgYW5kXG4gICAqIHJldHVybnMgYSB7QGxpbmsgQnVuZGxlUmVzdWx0fSBwb2ludGluZyBhdCB0aGUgZmluaXNoZWQgYXJ0aWZhY3Qg4oCUIHNlZVxuICAgKiB7QGxpbmsgSUFzc2V0QnVuZGxlci5idW5kbGV9LlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHNoYXBlIG9mIGEgYnVuZGxlcidzIG91dHB1dCwgc28gc3RhZ2luZyBhbmQgcGFja2FnaW5nIGNhbiB0cmVhdCBhXG4gKiBzaW5nbGUtZmlsZSBhcnRpZmFjdCAoYSB0YXJiYWxsLCBhIGAuemlwYCkgZGlmZmVyZW50bHkgZnJvbSBhIGRpcmVjdG9yeVxuICogdHJlZSB3aXRob3V0IGluZmVycmluZyBpdCBmcm9tIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZW51bSBCdW5kbGVPdXRwdXRUeXBlIHtcbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgaXMgYSBkaXJlY3RvcnkgdHJlZS5cbiAgICpcbiAgICogUGFja2FnZWQgbGlrZSBhbiB1bmJ1bmRsZWQgc291cmNlIGRpcmVjdG9yeS4gVGhlIGRlZmF1bHQsIGFuZCB0aGUgb25seVxuICAgKiBzaGFwZSB0aGF0IHByZWRhdGVzIGFyY2hpdmUgc3VwcG9ydC5cbiAgICovXG4gIERJUkVDVE9SWSA9IFwiZGlyZWN0b3J5XCIsXG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgaXMgYSBzaW5nbGUgZmlsZSB0aGUgYnVuZGxlciBhbHJlYWR5IHByb2R1Y2VkIGluIGl0cyBmaW5hbFxuICAgKiBmb3JtLlxuICAgKlxuICAgKiBBIHRhcmJhbGwgb3IgYSBkZXRlcm1pbmlzdGljIGAuemlwYC4gU3RhZ2VkIHZlcmJhdGltIHJhdGhlciB0aGFuXG4gICAqIHJlLWFyY2hpdmVkLCBzbyBgQXNzZXRUeXBlLkZJTEVgIG5vIGxvbmdlciBoYXMgdG8gcmVqZWN0IGEgYnVuZGxlci5cbiAgICovXG4gIEZJTEUgPSBcImZpbGVcIixcbn1cblxuLyoqXG4gKiBXaGF0IGEgYnVuZGxlciBwcm9kdWNlZCwgcmV0dXJuZWQgZnJvbSB7QGxpbmsgSUFzc2V0QnVuZGxlci5idW5kbGV9LlxuICpcbiAqIENhcnJpZXMgdGhlIGFydGlmYWN0IHBhdGggYW5kIGl0cyBzaGFwZSwgb3IgYSBkZWNsaW5lZCBzdGF0ZSBzaWduYWxsaW5nIHRoZVxuICogY2FsbGVyIHNob3VsZCBmYWxsIGJhY2suIFNlZSB7QGxpbmsgZGVjbGluZWR9IGZvciB0aGUgZGVjbGluZSBwcm90b2NvbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJ1bmRsZVJlc3VsdCB7XG4gIC8qKlxuICAgKiBBIGRpcmVjdG9yeS10cmVlIGFydGlmYWN0IGF0IGBwYXRoYC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGlyZWN0b3J5KHBhdGg6IHN0cmluZyk6IEJ1bmRsZVJlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBCdW5kbGVSZXN1bHQoQnVuZGxlT3V0cHV0VHlwZS5ESVJFQ1RPUlksIHBhdGgsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNpbmdsZS1maWxlIGFydGlmYWN0IGF0IGBwYXRoYCAoYSB0YXJiYWxsLCBhIGAuemlwYCksIHN0YWdlZCB2ZXJiYXRpbS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmlsZShwYXRoOiBzdHJpbmcpOiBCdW5kbGVSZXN1bHQge1xuICAgIHJldHVybiBuZXcgQnVuZGxlUmVzdWx0KEJ1bmRsZU91dHB1dFR5cGUuRklMRSwgcGF0aCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBidW5kbGVyIGRlY2xpbmVkIHRvIHJ1biBoZXJlOyB0aGUgY2FsbGVyIHNob3VsZCBmYWxsIGJhY2suXG4gICAqXG4gICAqIERpc3RpbmN0IGZyb20gYSB0aHJvd24gZXJyb3IsIHdoaWNoIGlzIGEgaGFyZCBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWNsaW5lZCgpOiBCdW5kbGVSZXN1bHQge1xuICAgIHJldHVybiBuZXcgQnVuZGxlUmVzdWx0KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXJ0aWZhY3QncyBzaGFwZSwgb3IgdW5kZWZpbmVkIHdoZW4ge0BsaW5rIGlzRGVjbGluZWR9LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG91dHB1dFR5cGU/OiBCdW5kbGVPdXRwdXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJ0aWZhY3QgcGF0aCwgb3IgdW5kZWZpbmVkIHdoZW4ge0BsaW5rIGlzRGVjbGluZWR9LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGJ1bmRsZXIgZGVjbGluZWQgdG8gcnVuLCBzaWduYWxsaW5nIHRoZSBjYWxsZXIgdG8gZmFsbCBiYWNrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzRGVjbGluZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBvdXRwdXRUeXBlOiBCdW5kbGVPdXRwdXRUeXBlIHwgdW5kZWZpbmVkLFxuICAgIHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBpc0RlY2xpbmVkOiBib29sZWFuLFxuICApIHtcbiAgICB0aGlzLm91dHB1dFR5cGUgPSBvdXRwdXRUeXBlO1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5pc0RlY2xpbmVkID0gaXNEZWNsaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybXMgYSBzb3VyY2UgdHJlZSBpbnRvIGEgYnVpbHQgYXJ0aWZhY3QuIFJ1bnMgYXQgc3ludGgsIGJlZm9yZSB0aGVcbiAqIG91dHB1dCBpcyBwYWNrYWdlZCBhbmQgc3RhZ2VkLlxuICpcbiAqIFRoaXMgaXMgdGhlIGV4dGVuc2lvbiBwb2ludCBmb3IgYXNzZXQgYnVuZGxpbmc6IGNvcmUgc2hpcHMgbm8gYnVuZGxlci5cbiAqIERvY2tlciwgZXNidWlsZCwgcGlwLCBgZ28gYnVpbGRgLCBhbmQgc2ltaWxhciBhcmUgYW4gb3Blbi1lbmRlZCwgbm9uXG4gKiBjbG91ZC1zcGVjaWZpYyBzZXQsIHNvIGVhY2ggbGl2ZXMgaW4gaXRzIG93biBwYWNrYWdlIGFuZCBpbXBsZW1lbnRzIHRoaXNcbiAqIG9uZSBpbnRlcmZhY2Ug4oCUIHRoZSBzYW1lIHdheSB7QGxpbmsgSUlnbm9yZVN0cmF0ZWd5fSBsZXRzIHJpY2hlciBleGNsdXNpb25cbiAqIGxpdmUgb3V0c2lkZSBjb3JlLiBVc2VycyBwYXNzIGFuIGluc3RhbmNlIHZpYSB0aGUgY29uc3VtaW5nIGNvbnN0cnVjdCdzXG4gKiBgYnVuZGxlcmAgb3B0aW9uLlxuICpcbiAqIGBidW5kbGVgIHJ1bnMgZHVyaW5nIHRoZSBvd25pbmcgY29uc3RydWN0J3MgYG9uU3ludGhlc2l6ZWAgaG9vayBhbmQgbWF5XG4gKiB0b3VjaCB0aGUgZmlsZXN5c3RlbS4gRGVmZXJyaW5nIGl0IHRoZXJlIGtlZXBzIGl0IHNraXBwYWJsZSB3aGVuIHRoZSBhc3NldCdzXG4gKiBzdGFjayBpcyBub3QgYmVpbmcgc3ludGhlc2l6ZWQsIHdoaWNoIGhvbGRzIGFzIGxvbmcgYXMgdGhlIGhhc2ggaXMgdGFrZW5cbiAqIG92ZXIgdGhlIHNvdXJjZSByYXRoZXIgdGhhbiB0aGUgYnVpbHQgb3V0cHV0LlxuICpcbiAqIEJ1bmRsZXJzIGNvbXBvc2UgdGhyb3VnaCB7QGxpbmsgQ2hhaW5CdW5kbGVyfSByYXRoZXIgdGhhbiBhIGhpZXJhcmNoeTogYVxuICogYnVuZGxlciBkZWNsaW5lcyAoc2VlIHtAbGluayBCdW5kbGVSZXN1bHQuZGVjbGluZWR9KSBpbnN0ZWFkIG9mIGZhaWxpbmcgd2hlblxuICogaXQgY2Fubm90IHJ1biwgYW5kIHRoZSBjaGFpbiBmYWxscyB0aHJvdWdoIHRvIHRoZSBuZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldEJ1bmRsZXIge1xuICAvKipcbiAgICogQSB2YWx1ZSBpZGVudGlmeWluZyB0aGUgYnVpbGQsIGZvbGRlZCBpbnRvIHRoZSBhc3NldCBoYXNoLlxuICAgKlxuICAgKiBUaGUgc291cmNlIHRyZWUgYWxvbmUgY2Fubm90IHNlZSB0aGUgYnVpbGQsIHNvIHN3YXBwaW5nIGEgYG5vZGU6MThgIGJhc2VcbiAgICogaW1hZ2UgZm9yIGBub2RlOjIwYCB3b3VsZCBvdGhlcndpc2UgbGVhdmUgaWRlbnRpdHkgdW5jaGFuZ2VkLiBVbmRlclxuICAgKiBgU09VUkNFYCBoYXNoaW5nIHRoaXMgaXMgdGhlIG9ubHkgY2hhbm5lbCBieSB3aGljaCB0aGUgYnVpbGQgcmVhY2hlc1xuICAgKiBpZGVudGl0eSwgc28gaXQgbXVzdCBzZXJpYWxpemUgZXZlcnkgaW5wdXQgdGhhdCBjYW4gbW92ZSB0aGUgb3V0cHV0LCBvciBhXG4gICAqIGNoYW5nZWQgYnVpbGQgc2lsZW50bHkgcmV1c2VzIGEgc3RhbGUgYXJ0aWZhY3QuIHtAbGluayBCdW5kbGVyS2V5fSBidWlsZHNcbiAgICogb25lIGZyb20gYW4gb3JkZXJlZCBzZXQgb2YgcGFydHMuXG4gICAqXG4gICAqIE1pcnJvcnMge0BsaW5rIElJZ25vcmVTdHJhdGVneS5jYWNoZUtleX06IG9taXQgaXQgd2hlbiB0aGUgYnVpbGQgY2Fubm90IGJlXG4gICAqIHN1bW1hcml6ZWQgYXMgYSBzdHJpbmcsIGFuZCBmYWxsIGJhY2sgdG8gYGV4dHJhSGFzaGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGJ1aWxkIGRvZXMgbm90IGNvbnRyaWJ1dGUgdG8gdGhlIGhhc2hcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsZXJLZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIGEgc2luZ2xlLWZpbGUgYXJ0aWZhY3QgaXMgc3RhZ2VkIHVuZGVyIChlLmcuIGBhcmNoaXZlLnppcGApLlxuICAgKlxuICAgKiBBIGZpbGUtcHJvZHVjaW5nIGJ1bmRsZXIgKGBCdW5kbGVSZXN1bHQuZmlsZWApIHN0YWdlZCB3aXRoXG4gICAqIGBBc3NldFR5cGUuRklMRWAgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNvdXJjZSBwYXRoJ3MgYmFzZW5hbWUsIHdoaWNoIGlzXG4gICAqIGEgZGlyZWN0b3J5IG5hbWUgd2hlbiB0aGUgc291cmNlIGlzIGEgZGlyZWN0b3J5LiBEZWNsYXJpbmcgdGhlIG5hbWUgaGVyZVxuICAgKiBsZXRzIHRoZSBhcnRpZmFjdCByZWZsZWN0IHdoYXQgdGhlIGJ1bmRsZXIgcHJvZHVjZXMuIEl0IGlzIHN0YXRpY1xuICAgKiBjb25maWd1cmF0aW9uLCBuZWVkZWQgYXQgY29uc3RydWN0aW9uIGJlZm9yZSBhIGRlZmVycmVkIGBTT1VSQ0VgIGJ1aWxkXG4gICAqIHJ1bnMsIG5vdCB0aGUgZmlsZSdzIHJ1bnRpbWUgbmFtZS5cbiAgICpcbiAgICogVmFsaWQgb25seSBmb3IgYSBmaWxlLXByb2R1Y2luZyBidW5kbGVyOiBzZXR0aW5nIGl0IHdpdGggYSBkaXJlY3RvcnlcbiAgICogcGFja2FnaW5nIChhbnl0aGluZyBidXQgYEFzc2V0VHlwZS5GSUxFYCkgaXMgcmVqZWN0ZWQgYXQgY29uc3RydWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBzb3VyY2UgcGF0aCdzIGJhc2VuYW1lXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgYXJ0aWZhY3QgYW5kIHJldHVybiBhIHtAbGluayBCdW5kbGVSZXN1bHR9IGRlc2NyaWJpbmcgaXQuXG4gICAqXG4gICAqIEltcGxlbWVudGF0aW9ucyB3cml0ZSBpbnRvIGBvcHRpb25zLm91dHB1dERpcmAgYW5kIG5ldmVyIHdyaXRlIGJhY2sgdG9cbiAgICogYG9wdGlvbnMuc291cmNlYC4gVGhlIHJldHVybmVkIHBhdGggbXVzdCBleGlzdCBhbmQgbWF0Y2ggaXRzIGRlY2xhcmVkXG4gICAqIHNoYXBlLCBvciBzdGFnaW5nIHJlamVjdHMgaXQuXG4gICAqXG4gICAqIEEgYnVuZGxlciB0aGF0IGNhbm5vdCBydW4gaW4gdGhpcyBlbnZpcm9ubWVudCByZXR1cm5zXG4gICAqIGBCdW5kbGVSZXN1bHQuZGVjbGluZWQoKWAgc28gYSB7QGxpbmsgQ2hhaW5CdW5kbGVyfSBjYW4gZmFsbCB0aHJvdWdoIHRvXG4gICAqIHRoZSBuZXh0OyBhIHRocm93biBlcnJvciBpcyBhIGhhcmQgZmFpbHVyZSwgbm90IGEgZGVjbGluZS5cbiAgICovXG4gIGJ1bmRsZShvcHRpb25zOiBCdW5kbGVPcHRpb25zKTogQnVuZGxlUmVzdWx0O1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhbiB7QGxpbmsgSUFzc2V0QnVuZGxlci5idW5kbGVyS2V5fSBmcm9tIGFuIG9yZGVyZWQgc2V0IG9mIHBhcnRzLlxuICpcbiAqIEEgYGJ1bmRsZXJLZXlgIGhhcyB0byBzZXJpYWxpemUgZXZlcnl0aGluZyB0aGF0IGNhbiBtb3ZlIGEgYnVpbGQncyBvdXRwdXQ7XG4gKiBkb25lIGFkIGhvYywgZXZlcnkgYnVuZGxlciBpbnZlbnRzIGl0cyBvd24gZGVsaW1pdGVyIGFuZCBmb3JnZXRzIGFuIGlucHV0XG4gKiBkaWZmZXJlbnRseS4gVGhpcyBnaXZlcyB0aGUgY29udmVudGlvbiBvbmUgaW1wbGVtZW50YXRpb246IHBhcnRzIGFyZSBqb2luZWRcbiAqIHdpdGggYSBzZXBhcmF0b3IgdGhhdCBpcyBlc2NhcGVkIGluc2lkZSB2YWx1ZXMsIHNvIGRpc3RpbmN0IGlucHV0cyBjYW5ub3RcbiAqIGNvbGxpZGUgaW50byB0aGUgc2FtZSBrZXkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGtleSA9IEJ1bmRsZXJLZXkub2YoXCJkb2NrZXJcIiwgaW1hZ2UsIGNvbW1hbmQpXG4gKiAgIC53aXRoRW52KHsgTk9ERV9FTlY6IG5vZGVFbnYgfSlcbiAqICAgLnRvU3RyaW5nKCk7XG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGVyS2V5IHtcbiAgLyoqXG4gICAqIFN0YXJ0IGEga2V5IGZyb20gYW4gb3JkZXJlZCBsaXN0IG9mIHBhcnRzLlxuICAgKlxuICAgKiBPcmRlciBpcyBzaWduaWZpY2FudDogaXQgaXMgcGFydCBvZiB3aGF0IHRoZSBrZXkgaWRlbnRpZmllcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YoLi4ucGFydHM6IHN0cmluZ1tdKTogQnVuZGxlcktleSB7XG4gICAgcmV0dXJuIG5ldyBCdW5kbGVyS2V5KHBhcnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGVzY2FwZShwYXJ0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXJ0LnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKS5yZXBsYWNlKC86L2csIFwiXFxcXDpcIik7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGFydHM6IHN0cmluZ1tdKSB7fVxuXG4gIC8qKlxuICAgKiBBcHBlbmQgcGFydHMsIHJldHVybmluZyBhIG5ldyBrZXkuXG4gICAqL1xuICBwdWJsaWMgYWRkKC4uLnBhcnRzOiBzdHJpbmdbXSk6IEJ1bmRsZXJLZXkge1xuICAgIHJldHVybiBuZXcgQnVuZGxlcktleShbLi4udGhpcy5wYXJ0cywgLi4ucGFydHNdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmQgYGtleT12YWx1ZWAgcGFydHMgZm9yIGEgcmVjb3JkLCBzb3J0ZWQgYnkga2V5IHNvIHRoZSByZXN1bHQgZG9lc1xuICAgKiBub3QgZGVwZW5kIG9uIHByb3BlcnR5IG9yZGVyLlxuICAgKi9cbiAgcHVibGljIHdpdGhFbnYoZW50cmllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IEJ1bmRsZXJLZXkge1xuICAgIGNvbnN0IGtlcHQgPSBPYmplY3Qua2V5cyhlbnRyaWVzKVxuICAgICAgLnNvcnQoKVxuICAgICAgLm1hcCgoaykgPT4gYCR7a309JHtlbnRyaWVzW2tdfWApO1xuICAgIHJldHVybiBuZXcgQnVuZGxlcktleShbLi4udGhpcy5wYXJ0cywgLi4ua2VwdF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgY29sbGVjdGVkIHBhcnRzIHRvIHRoZSBzdHJpbmcgcGFzc2VkIGFzIGBidW5kbGVyS2V5YC5cbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhcnRzLm1hcChCdW5kbGVyS2V5LmVzY2FwZSkuam9pbihcIjpcIik7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wb3NlcyBidW5kbGVycyBpbnRvIGEgXCJ0cnkgZWFjaCBpbiBvcmRlciB1bnRpbCBvbmUgcnVuc1wiIGNoYWluLlxuICpcbiAqIFRoaXMgaXMgaG93IGEgbG9jYWwgYnVuZGxlciBhbmQgYSBEb2NrZXIgYnVuZGxlciBjb21wb3NlIHdpdGhvdXQgYmVpbmdcbiAqIHJld3JpdHRlbiBhcyBvbmU6IGVhY2ggbGVnIGRlY2xpbmVzIChgQnVuZGxlUmVzdWx0LmRlY2xpbmVkKClgKSB3aGVuIGl0XG4gKiBjYW5ub3QgcnVuIGhlcmUsIGFuZCB0aGUgY2hhaW4gbW92ZXMgdG8gdGhlIG5leHQuIFRoZSBmaXJzdCBub24tZGVjbGluaW5nXG4gKiByZXN1bHQgd2luczsgaWYgYWxsIGRlY2xpbmUsIGBidW5kbGVgIHRocm93cywgc2luY2Ugc3RhZ2luZyBoYXMgbm90aGluZyB0b1xuICogZmFsbCBiYWNrIHRvLiBFYWNoIGxlZyBidWlsZHMgaW50byBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksIHNvIGEgbGVnIHRoYXRcbiAqIHdyaXRlcyBiZWZvcmUgZGVjbGluaW5nIGNhbm5vdCBsZWFrIHBhcnRpYWwgZmlsZXMgaW50byB0aGUgbGVnIHRoYXQgd2lucy5cbiAqXG4gKiBUaGUgY2hhaW4ncyBgYnVuZGxlcktleWAgZm9sZHMgaW4gKmV2ZXJ5KiBsZWcncyBrZXksIHNvIGlkZW50aXR5IGlzIHRoZSBzYW1lXG4gKiByZWdhcmRsZXNzIG9mIHdoaWNoIGxlZyBlbmRzIHVwIHJ1bm5pbmcg4oCUIGEgYnVpbGQgdGhhdCBjb3VsZCBoYXZlIGdvbmUgbG9jYWxcbiAqIG9yIERvY2tlciBpcyBvbmUgYXNzZXQsIG5vdCB0d28uXG4gKlxuICogVGhpcyBtYWtlcyB0aGUgbGVncyBpbnRlcmNoYW5nZWFibGUgb25seSBpZiB0aGV5IHByb2R1Y2UgZXF1aXZhbGVudCBvdXRwdXQuXG4gKiBVbmRlciBgU09VUkNFYCBoYXNoaW5nIHRoZXkgbXVzdDogYSBtYWNoaW5lIHdpdGggYSBob3N0IHRvb2wgYW5kIG9uZSB3aXRob3V0XG4gKiBydW4gZGlmZmVyZW50IGxlZ3MsIGFuZCBub24tZXF1aXZhbGVudCBsZWdzIHdvdWxkIHN0YWdlIGRpZmZlcmVudCBieXRlcyB1bmRlclxuICogdGhlIHNhbWUgaGFzaC4gVXNlIGBPVVRQVVRgIGhhc2hpbmcgd2hlbiBsZWdzIG1heSBkaXZlcmdlLCBzbyBpZGVudGl0eSB0cmFja3NcbiAqIHRoZSBhcnRpZmFjdCBlYWNoIGxlZyBhY3R1YWxseSBwcm9kdWNlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIENoYWluQnVuZGxlciBpbXBsZW1lbnRzIElBc3NldEJ1bmRsZXIge1xuICAvKipcbiAgICogQ2hhaW4gYnVuZGxlcnMgaW4gdGhlIG9yZGVyIGdpdmVuOyBlYXJsaWVyIGJ1bmRsZXJzIGFyZSBwcmVmZXJyZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKC4uLmJ1bmRsZXJzOiBJQXNzZXRCdW5kbGVyW10pOiBDaGFpbkJ1bmRsZXIge1xuICAgIHJldHVybiBuZXcgQ2hhaW5CdW5kbGVyKGJ1bmRsZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBidW5kbGVyS2V5Pzogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBvdXRwdXRGaWxlTmFtZT86IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYnVuZGxlcnM6IElBc3NldEJ1bmRsZXJbXSkge1xuICAgIGlmIChidW5kbGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IGNoYWluQnVuZGxlclJlcXVpcmVzQXRMZWFzdE9uZUJ1bmRsZXIoKTtcbiAgICB9XG4gICAgLy8gRm9sZCBpbiBldmVyeSBsZWcncyBrZXkgc28gd2hpY2ggbGVnIHJ1bnMgY2Fubm90IGNoYW5nZSBpZGVudGl0eS4gQSBsZWdcbiAgICAvLyB3aXRob3V0IGEga2V5IGNvbnRyaWJ1dGVzIGFuIGVtcHR5IHBhcnQsIHN0aWxsIGRpc3Rpbmd1aXNoaW5nIFwidHdvIGxlZ3NcIlxuICAgIC8vIGZyb20gXCJvbmUgbGVnXCIgcG9zaXRpb25hbGx5LlxuICAgIGNvbnN0IGtleXMgPSBidW5kbGVycy5tYXAoKGIpID0+IGIuYnVuZGxlcktleSA/PyBcIlwiKTtcbiAgICB0aGlzLmJ1bmRsZXJLZXkgPSBrZXlzLnNvbWUoKGspID0+IGsgIT09IFwiXCIpXG4gICAgICA/IEJ1bmRsZXJLZXkub2YoXCJjaGFpblwiLCAuLi5rZXlzKS50b1N0cmluZygpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIC8vIFRoZSBzdGFnZWQgZmlsZSBuYW1lIGlzIGZpeGVkIGF0IGNvbnN0cnVjdGlvbiwgYmVmb3JlIGFueSBsZWcgcnVucywgc29cbiAgICAvLyBsZWdzIHRoYXQgZGVjbGFyZSBvbmUgbXVzdCBhZ3JlZSDigJQgb3RoZXJ3aXNlIHRoZSBuYW1lIHdvdWxkIGRlcGVuZCBvblxuICAgIC8vIHdoaWNoIGxlZyBoYXBwZW5zIHRvIHJ1bi5cbiAgICBjb25zdCBuYW1lcyA9IG5ldyBTZXQoXG4gICAgICBidW5kbGVyc1xuICAgICAgICAubWFwKChiKSA9PiBiLm91dHB1dEZpbGVOYW1lKVxuICAgICAgICAuZmlsdGVyKChuKTogbiBpcyBzdHJpbmcgPT4gbiAhPT0gdW5kZWZpbmVkKSxcbiAgICApO1xuICAgIGlmIChuYW1lcy5zaXplID4gMSkge1xuICAgICAgdGhyb3cgY2hhaW5CdW5kbGVyQ29uZmxpY3RpbmdPdXRwdXRGaWxlTmFtZShbLi4ubmFtZXNdKTtcbiAgICB9XG4gICAgdGhpcy5vdXRwdXRGaWxlTmFtZSA9IG5hbWVzLnNpemUgPT09IDEgPyBbLi4ubmFtZXNdWzBdIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGJ1bmRsZShvcHRpb25zOiBCdW5kbGVPcHRpb25zKTogQnVuZGxlUmVzdWx0IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYnVuZGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIEVhY2ggbGVnIGdldHMgaXRzIG93biBvdXRwdXQgZGlyZWN0b3J5LiBBIGxlZyBpcyBmcmVlIHRvIHdyaXRlIGJlZm9yZVxuICAgICAgLy8gaXQgZGVjbGluZXMgKGVzYnVpbGQgZmFpbGluZyBvbiBhbiB1bnN1cHBvcnRlZCB0YXJnZXQsIGEgRG9ja2VyIGxlZ1xuICAgICAgLy8gY3JlYXRpbmcgb3V0cHV0IGJlZm9yZSBmaW5kaW5nIHRoZSBkYWVtb24gZG93biksIGFuZCBzaGFyaW5nIG9uZVxuICAgICAgLy8gZGlyZWN0b3J5IHdvdWxkIGxlYWsgdGhvc2UgcGFydGlhbCBmaWxlcyBpbnRvIHRoZSBsZWcgdGhhdCBzdWNjZWVkcy5cbiAgICAgIGNvbnN0IGxlZ091dHB1dERpciA9IHBhdGguam9pbihvcHRpb25zLm91dHB1dERpciwgYGxlZy0ke2l9YCk7XG4gICAgICBmcy5ta2RpclN5bmMobGVnT3V0cHV0RGlyKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuYnVuZGxlcnNbaV0uYnVuZGxlKHtcbiAgICAgICAgc291cmNlOiBvcHRpb25zLnNvdXJjZSxcbiAgICAgICAgb3V0cHV0RGlyOiBsZWdPdXRwdXREaXIsXG4gICAgICB9KTtcbiAgICAgIGlmICghcmVzdWx0LmlzRGVjbGluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgY2hhaW5CdW5kbGVyQWxsRGVjbGluZWQodGhpcy5idW5kbGVycy5sZW5ndGgpO1xuICB9XG59XG5cbi8qKlxuICogQSBzdGFnZWQgYXJ0aWZhY3QsIHJlYWR5IHRvIGhhbmQgdG8gYW4gYElBc3NldFB1Ymxpc2hlcmAuXG4gKlxuICogRGVsaWJlcmF0ZWx5IG5hcnJvd2VyIHRoYW4gYSBsb2NhdGlvbjogYHBhdGhgIGFuZCBgaXNEaXJlY3RvcnlgIGFyZSBrbm93blxuICogb25jZSBzdGFnaW5nIHJ1bnMsIGF0IHN5bnRoIHRpbWUsIGJlZm9yZSBhbnl0aGluZyBpcyBwdWJsaXNoZWQuIFdoZXJlIGFuXG4gKiBhc3NldCBlbmRzIHVwIOKAlCBhIGJ1Y2tldCBuYW1lLCBhbiBvYmplY3Qga2V5LCBhIFVSTCDigJQgaXMgcmVzb2x2ZWQgYXRcbiAqIGFwcGx5IHRpbWUgYW5kIGJlbG9uZ3Mgb24gdGhlIHB1Ymxpc2hlcidzIG93biByZWZlcmVuY2UgdHlwZSBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlZEFzc2V0IHtcbiAgLyoqXG4gICAqIEEgaGFzaCBvbiB0aGUgY29udGVudCBzb3VyY2UsIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHRoaXMgYXNzZXQuXG4gICAqXG4gICAqIFRoZSBhc3NldCBpcyBub3QgcmVidWlsdCBvciByZXB1Ymxpc2hlZCB3aGlsZSB0aGlzIHZhbHVlIGlzIHVuY2hhbmdlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0SGFzaDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgc3RhZ2VkIGFydGlmYWN0LCByZWxhdGl2ZSB0byB0aGUgc3RhY2sgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdGFnZWQgYXJ0aWZhY3QgaXMgYSBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gYSBzaW5nbGUgZmlsZS5cbiAgICpcbiAgICogUHVibGlzaGVycyBicmFuY2ggb24gdGhpcyB0byBkZWNpZGUgd2hldGhlciB0aGV5IHVwbG9hZCBvbmUgb2JqZWN0IG9yXG4gICAqIHN5bmMgYSB0cmVlOyBzZWUgYElBc3NldFBhY2thZ2luZy5wcm9kdWNlc0RpcmVjdG9yeWAuXG4gICAqL1xuICByZWFkb25seSBpc0RpcmVjdG9yeTogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a, _b;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.DataTerraformRemoteStateAzurerm = exports.AzurermBackend = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -8,6 +7,8 @@ const util_1 = require("../util");
|
|
|
8
7
|
const terraform_remote_state_1 = require("../terraform-remote-state");
|
|
9
8
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
10
9
|
class AzurermBackend extends terraform_backend_1.TerraformBackend {
|
|
10
|
+
props;
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.AzurermBackend", version: "0.25.0" };
|
|
11
12
|
constructor(scope, props) {
|
|
12
13
|
super(scope, "backend", "azurerm");
|
|
13
14
|
this.props = props;
|
|
@@ -26,15 +27,12 @@ class AzurermBackend extends terraform_backend_1.TerraformBackend {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
exports.AzurermBackend = AzurermBackend;
|
|
29
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
30
|
-
AzurermBackend[_a] = { fqn: "cdktn.AzurermBackend", version: "0.25.0-pre.8" };
|
|
31
30
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
32
31
|
class DataTerraformRemoteStateAzurerm extends terraform_remote_state_1.TerraformRemoteState {
|
|
32
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.DataTerraformRemoteStateAzurerm", version: "0.25.0" };
|
|
33
33
|
constructor(scope, id, config) {
|
|
34
34
|
super(scope, id, "azurerm", config);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
exports.DataTerraformRemoteStateAzurerm = DataTerraformRemoteStateAzurerm;
|
|
38
|
-
_b = JSII_RTTI_SYMBOL_1;
|
|
39
|
-
DataTerraformRemoteStateAzurerm[_b] = { fqn: "cdktn.DataTerraformRemoteStateAzurerm", version: "0.25.0-pre.8" };
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmVybS1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JhY2tlbmRzL2F6dXJlcm0tYmFja2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLDREQUF3RDtBQUN4RCxrQ0FBMEM7QUFDMUMsc0VBR21DO0FBRW5DLCtDQUErQztBQUMvQyxNQUFhLGNBQWUsU0FBUSxvQ0FBZ0I7SUFDbEQsWUFDRSxLQUFnQixFQUNDLEtBQTJCO1FBRTVDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRmxCLFVBQUssR0FBTCxLQUFLLENBQXNCO0lBRzlDLENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsT0FBTyxJQUFBLHNCQUFlLEVBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyx1QkFBdUI7UUFDL0IsT0FBTyxJQUFBLHNCQUFlLEVBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSx3QkFBd0IsQ0FDN0IsS0FBZ0IsRUFDaEIsSUFBWSxFQUNaLFVBQWtCO1FBRWxCLE9BQU8sSUFBSSwrQkFBK0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3RELEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDYixTQUFTLEVBQUUsd0JBQXdCO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekJILHdDQTBCQzs7O0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsK0JBQWdDLFNBQVEsNkNBQW9CO0lBQ3ZFLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLE1BQTZDO1FBRTdDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDOztBQVBILDBFQVFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1CYWNrZW5kIH0gZnJvbSBcIi4uL3RlcnJhZm9ybS1iYWNrZW5kXCI7XG5pbXBvcnQgeyBrZXlzVG9TbmFrZUNhc2UgfSBmcm9tIFwiLi4vdXRpbFwiO1xuaW1wb3J0IHtcbiAgVGVycmFmb3JtUmVtb3RlU3RhdGUsXG4gIERhdGFUZXJyYWZvcm1SZW1vdGVTdGF0ZUNvbmZpZyxcbn0gZnJvbSBcIi4uL3RlcnJhZm9ybS1yZW1vdGUtc3RhdGVcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBBenVyZXJtQmFja2VuZCBleHRlbmRzIFRlcnJhZm9ybUJhY2tlbmQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEF6dXJlcm1CYWNrZW5kQ29uZmlnLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgXCJiYWNrZW5kXCIsIFwiYXp1cmVybVwiKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIGtleXNUb1NuYWtlQ2FzZSh7IC4uLnRoaXMucHJvcHMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBrZXlzVG9TbmFrZUNhc2UoeyAuLi50aGlzLnByb3BzIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFJlbW90ZVN0YXRlRGF0YVNvdXJjZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBfZnJvbVN0YWNrOiBzdHJpbmcsXG4gICk6IFRlcnJhZm9ybVJlbW90ZVN0YXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGFUZXJyYWZvcm1SZW1vdGVTdGF0ZUF6dXJlcm0oc2NvcGUsIG5hbWUsIHtcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICB3b3Jrc3BhY2U6IFwiJHt0ZXJyYWZvcm0ud29ya3NwYWNlfVwiLFxuICAgIH0pO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlQXp1cmVybSBleHRlbmRzIFRlcnJhZm9ybVJlbW90ZVN0YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGNvbmZpZzogRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlQXp1cmVybUNvbmZpZyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBcImF6dXJlcm1cIiwgY29uZmlnKTtcbiAgfVxufVxuLyoqXG4gKiBTdG9yZXMgdGhlIHN0YXRlIGFzIGEgQmxvYiB3aXRoIHRoZSBnaXZlbiBLZXlcbiAqIHdpdGhpbiB0aGUgQmxvYiBDb250YWluZXIgd2l0aGluIHRoZSBCbG9iIFN0b3JhZ2UgQWNjb3VudC5cbiAqXG4gKiBUaGlzIGJhY2tlbmQgc3VwcG9ydHMgc3RhdGUgbG9ja2luZyBhbmQgY29uc2lzdGVuY3kgY2hlY2tpbmdcbiAqIHdpdGggQXp1cmUgQmxvYiBTdG9yYWdlIG5hdGl2ZSBjYXBhYmlsaXRpZXMuXG4gKlxuICogTm90ZTogQnkgZGVmYXVsdCB0aGUgQXp1cmUgQmFja2VuZCB1c2VzIEFEQUwgZm9yIGF1dGhlbnRpY2F0aW9uIHdoaWNoIGlzIGRlcHJlY2F0ZWRcbiAqIGluIGZhdm91ciBvZiBNU0FMIC0gTVNBTCBjYW4gYmUgdXNlZCBieSBzZXR0aW5nIHVzZV9taWNyb3NvZnRfZ3JhcGggdG8gdHJ1ZS5cbiAqIFRoZSBkZWZhdWx0IGZvciB0aGlzIHdpbGwgY2hhbmdlIGluIFRlcnJhZm9ybSAxLjIsXG4gKiBzbyB0aGF0IE1TQUwgYXV0aGVudGljYXRpb24gaXMgdXNlZCBieSBkZWZhdWx0LlxuICpcbiAqIFJlYWQgbW9yZSBhYm91dCB0aGlzIGJhY2tlbmQgaW4gdGhlIFRlcnJhZm9ybSBkb2NzOlxuICogaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2Uvc2V0dGluZ3MvYmFja2VuZHMvYXp1cmVybVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF6dXJlcm1CYWNrZW5kQ29uZmlnIHtcbiAgLyoqXG4gICAqIChSZXF1aXJlZCkgVGhlIE5hbWUgb2YgdGhlIFN0b3JhZ2UgQWNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VBY2NvdW50TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogKFJlcXVpcmVkKSBUaGUgTmFtZSBvZiB0aGUgU3RvcmFnZSBDb250YWluZXIgd2l0aGluIHRoZSBTdG9yYWdlIEFjY291bnQuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoUmVxdWlyZWQpIFRoZSBuYW1lIG9mIHRoZSBCbG9iIHVzZWQgdG8gcmV0cmlldmUvc3RvcmUgVGVycmFmb3JtJ3MgU3RhdGUgZmlsZVxuICAgKiBpbnNpZGUgdGhlIFN0b3JhZ2UgQ29udGFpbmVyLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBBenVyZSBFbnZpcm9ubWVudCB3aGljaCBzaG91bGQgYmUgdXNlZC5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9FTlZJUk9OTUVOVCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogIFBvc3NpYmxlIHZhbHVlcyBhcmUgcHVibGljLCBjaGluYSwgZ2VybWFuLCBzdGFjayBhbmQgdXNnb3Zlcm5tZW50LiBEZWZhdWx0cyB0byBwdWJsaWMuXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIEN1c3RvbSBFbmRwb2ludCBmb3IgQXp1cmUgUmVzb3VyY2UgTWFuYWdlci5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9FTkRQT0lOVCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICpcbiAgICogTk9URTogQW4gZW5kcG9pbnQgc2hvdWxkIG9ubHkgYmUgY29uZmlndXJlZCB3aGVuIHVzaW5nIEF6dXJlIFN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBIb3N0bmFtZSBvZiB0aGUgQXp1cmUgTWV0YWRhdGEgU2VydmljZSAoZm9yIGV4YW1wbGUgbWFuYWdlbWVudC5henVyZS5jb20pLFxuICAgKiB1c2VkIHRvIG9idGFpbiB0aGUgQ2xvdWQgRW52aXJvbm1lbnQgd2hlbiB1c2luZyBhIEN1c3RvbSBBenVyZSBFbnZpcm9ubWVudC5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9NRVRBREFUQV9IT1NUTkFNRSBFbnZpcm9ubWVudCBWYXJpYWJsZS4pXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YUhvc3Q/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNob3VsZCB0aGUgQmxvYiB1c2VkIHRvIHN0b3JlIHRoZSBUZXJyYWZvcm0gU3RhdGVmaWxlIGJlXG4gICAqIHNuYXBzaG90dGVkIGJlZm9yZSB1c2U/IERlZmF1bHRzIHRvIGZhbHNlLiBUaGlzIHZhbHVlIGNhbiBhbHNvIGJlIHNvdXJjZWRcbiAgICogZnJvbSB0aGUgQVJNX1NOQVBTSE9UIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3Q/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgU3Vic2NyaXB0aW9uIElEIGluIHdoaWNoIHRoZSBTdG9yYWdlIEFjY291bnQgZXhpc3RzLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVJNX1NVQlNDUklQVElPTl9JRCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHN1YnNjcmlwdGlvbklkPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgVGVuYW50IElEIGluIHdoaWNoIHRoZSBTdWJzY3JpcHRpb24gZXhpc3RzLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVJNX1RFTkFOVF9JRCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHRlbmFudElkPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgcGF0aCB0byBhIGN1c3RvbSBNYW5hZ2VkIFNlcnZpY2UgSWRlbnRpdHkgZW5kcG9pbnQgd2hpY2ggaXMgYXV0b21hdGljYWxseVxuICAgKiBkZXRlcm1pbmVkIGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fTVNJX0VORFBPSU5UIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbXNpRW5kcG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFNob3VsZCBNYW5hZ2VkIFNlcnZpY2UgSWRlbnRpdHkgYXV0aGVudGljYXRpb24gYmUgdXNlZD9cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9VU0VfTVNJIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlTXNpPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIFNBUyBUb2tlbiB1c2VkIHRvIGFjY2VzcyB0aGUgQmxvYiBTdG9yYWdlIEFjY291bnQuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fU0FTX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2FzVG9rZW4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBhY2Nlc3Nfa2V5IC0gKE9wdGlvbmFsKSBUaGUgQWNjZXNzIEtleSB1c2VkIHRvIGFjY2VzcyB0aGUgQmxvYiBTdG9yYWdlIEFjY291bnQuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fQUNDRVNTX0tFWSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGFjY2Vzc0tleT86IHN0cmluZztcbiAgLyoqXG4gICAqIChSZXF1aXJlZCkgVGhlIE5hbWUgb2YgdGhlIFJlc291cmNlIEdyb3VwIGluIHdoaWNoIHRoZSBTdG9yYWdlIEFjY291bnQgZXhpc3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBDbGllbnQgSUQgb2YgdGhlIFNlcnZpY2UgUHJpbmNpcGFsLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVJNX0NMSUVOVF9JRCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudElkPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgQ2xpZW50IFNlY3JldCBvZiB0aGUgU2VydmljZSBQcmluY2lwYWwuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fQ0xJRU5UX1NFQ1JFVCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudFNlY3JldD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIHBhc3N3b3JkIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ2xpZW50IENlcnRpZmljYXRlIHNwZWNpZmllZFxuICAgKiBpbiBjbGllbnRfY2VydGlmaWNhdGVfcGF0aC4gVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlXG4gICAqIEFSTV9DTElFTlRfQ0VSVElGSUNBVEVfUEFTU1dPUkQgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBjbGllbnRDZXJ0aWZpY2F0ZVBhc3N3b3JkPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgcGF0aCB0byB0aGUgUEZYIGZpbGUgdXNlZCBhcyB0aGUgQ2xpZW50IENlcnRpZmljYXRlIHdoZW5cbiAgICogYXV0aGVudGljYXRpbmcgYXMgYSBTZXJ2aWNlIFByaW5jaXBhbC4gVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlXG4gICAqIEFSTV9DTElFTlRfQ0VSVElGSUNBVEVfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudENlcnRpZmljYXRlUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2hvdWxkIE1TQUwgYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24gaW5zdGVhZCBvZiBBREFMLCBhbmRcbiAgICogc2hvdWxkIE1pY3Jvc29mdCBHcmFwaCBiZSB1c2VkIGluc3RlYWQgb2YgQXp1cmUgQWN0aXZlIERpcmVjdG9yeSBHcmFwaD9cbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogTm90ZTogSW4gVGVycmFmb3JtIDEuMiB0aGUgQXp1cmUgQmFja2VuZCB1c2VzIE1TQUwgKGFuZCBNaWNyb3NvZnQgR3JhcGgpXG4gICAqIHJhdGhlciB0aGFuIEFEQUwgKGFuZCBBenVyZSBBY3RpdmUgRGlyZWN0b3J5IEdyYXBoKSBmb3IgYXV0aGVudGljYXRpb24gYnlcbiAgICogZGVmYXVsdCAtIHlvdSBjYW4gZGlzYWJsZSB0aGlzIGJ5IHNldHRpbmcgdXNlX21pY3Jvc29mdF9ncmFwaCB0byBmYWxzZS5cbiAgICogVGhpcyBzZXR0aW5nIHdpbGwgYmUgcmVtb3ZlZCBpbiBUZXJyYWZvcm0gMS4zLCBkdWUgdG8gTWljcm9zb2Z0J3NcbiAgICogZGVwcmVjYXRpb24gb2YgQURBTC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZU1pY3Jvc29mdEdyYXBoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIFVSTCBmb3IgdGhlIE9JREMgcHJvdmlkZXIgZnJvbSB3aGljaCB0byByZXF1ZXN0IGFuIElEIHRva2VuLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVJNX09JRENfUkVRVUVTVF9VUkwgb3JcbiAgICogQUNUSU9OU19JRF9UT0tFTl9SRVFVRVNUX1VSTCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBvaWRjUmVxdWVzdFVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIGJlYXJlciB0b2tlbiBmb3IgdGhlIHJlcXVlc3QgdG8gdGhlIE9JREMgcHJvdmlkZXIuIFRoaXMgY2FuXG4gICAqIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fT0lEQ19SRVFVRVNUX1RPS0VOIG9yXG4gICAqIEFDVElPTlNfSURfVE9LRU5fUkVRVUVTVF9UT0tFTiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBvaWRjUmVxdWVzdFRva2VuPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgSUQgdG9rZW4gd2hlbiBhdXRoZW50aWNhdGluZyB1c2luZyBPcGVuSUQgQ29ubmVjdCAoT0lEQykuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fT0lEQ19UT0tFTiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNUb2tlbj86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIHBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgYW4gSUQgdG9rZW4gd2hlbiBhdXRoZW50aWNhdGluZyB1c2luZyBPcGVuSUQgQ29ubmVjdCAoT0lEQykuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fT0lEQ19UT0tFTl9GSUxFX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBvaWRjVG9rZW5GaWxlUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2hvdWxkIE9JREMgYXV0aGVudGljYXRpb24gYmUgdXNlZD8gVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkXG4gICAqIGZyb20gdGhlIEFSTV9VU0VfT0lEQyBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICpcbiAgICogTm90ZTogV2hlbiB1c2luZyBPSURDIGZvciBhdXRoZW50aWNhdGlvbiwgdXNlX21pY3Jvc29mdF9ncmFwaFxuICAgKiBtdXN0IGJlIHNldCB0byB0cnVlICh3aGljaCBpcyB0aGUgZGVmYXVsdCkuXG4gICAqL1xuICByZWFkb25seSB1c2VPaWRjPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2hvdWxkIEF6dXJlQUQgQXV0aGVudGljYXRpb24gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIEJsb2IgU3RvcmFnZVxuICAgKiBBY2NvdW50LiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVJNX1VTRV9BWlVSRUFEIGVudmlyb25tZW50XG4gICAqIHZhcmlhYmxlLlxuICAgKlxuICAgKiBOb3RlOiBXaGVuIHVzaW5nIEF6dXJlQUQgZm9yIEF1dGhlbnRpY2F0aW9uIHRvIFN0b3JhZ2UgeW91IGFsc28gbmVlZCB0b1xuICAgKiBlbnN1cmUgdGhlIFN0b3JhZ2UgQmxvYiBEYXRhIE93bmVyIHJvbGUgaXMgYXNzaWduZWQuXG4gICAqL1xuICByZWFkb25seSB1c2VBenVyZWFkQXV0aD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlQXp1cmVybUNvbmZpZ1xuICBleHRlbmRzIERhdGFUZXJyYWZvcm1SZW1vdGVTdGF0ZUNvbmZpZywgQXp1cmVybUJhY2tlbmRDb25maWcge31cbiJdfQ==
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmVybS1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JhY2tlbmRzL2F6dXJlcm0tYmFja2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsNERBQXdEO0FBQ3hELGtDQUEwQztBQUMxQyxzRUFHbUM7QUFFbkMsK0NBQStDO0FBQy9DLE1BQWEsY0FBZSxTQUFRLG9DQUFnQjtJQUcvQjs7SUFGbkIsWUFDRSxLQUFnQixFQUNDLEtBQTJCO1FBRTVDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRmxCLFVBQUssR0FBTCxLQUFLLENBQXNCO0lBRzlDLENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsT0FBTyxJQUFBLHNCQUFlLEVBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyx1QkFBdUI7UUFDL0IsT0FBTyxJQUFBLHNCQUFlLEVBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSx3QkFBd0IsQ0FDN0IsS0FBZ0IsRUFDaEIsSUFBWSxFQUNaLFVBQWtCO1FBRWxCLE9BQU8sSUFBSSwrQkFBK0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3RELEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDYixTQUFTLEVBQUUsd0JBQXdCO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekJILHdDQTBCQztBQUVELCtDQUErQztBQUMvQyxNQUFhLCtCQUFnQyxTQUFRLDZDQUFvQjs7SUFDdkUsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsTUFBNkM7UUFFN0MsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7O0FBUEgsMEVBUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUJhY2tlbmQgfSBmcm9tIFwiLi4vdGVycmFmb3JtLWJhY2tlbmRcIjtcbmltcG9ydCB7IGtleXNUb1NuYWtlQ2FzZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQge1xuICBUZXJyYWZvcm1SZW1vdGVTdGF0ZSxcbiAgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlQ29uZmlnLFxufSBmcm9tIFwiLi4vdGVycmFmb3JtLXJlbW90ZS1zdGF0ZVwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIEF6dXJlcm1CYWNrZW5kIGV4dGVuZHMgVGVycmFmb3JtQmFja2VuZCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogQXp1cmVybUJhY2tlbmRDb25maWcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBcImJhY2tlbmRcIiwgXCJhenVyZXJtXCIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ga2V5c1RvU25ha2VDYXNlKHsgLi4udGhpcy5wcm9wcyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIGtleXNUb1NuYWtlQ2FzZSh7IC4uLnRoaXMucHJvcHMgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVtb3RlU3RhdGVEYXRhU291cmNlKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIF9mcm9tU3RhY2s6IHN0cmluZyxcbiAgKTogVGVycmFmb3JtUmVtb3RlU3RhdGUge1xuICAgIHJldHVybiBuZXcgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlQXp1cmVybShzY29wZSwgbmFtZSwge1xuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgIHdvcmtzcGFjZTogXCIke3RlcnJhZm9ybS53b3Jrc3BhY2V9XCIsXG4gICAgfSk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVBenVyZXJtIGV4dGVuZHMgVGVycmFmb3JtUmVtb3RlU3RhdGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgY29uZmlnOiBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVBenVyZXJtQ29uZmlnLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIFwiYXp1cmVybVwiLCBjb25maWcpO1xuICB9XG59XG4vKipcbiAqIFN0b3JlcyB0aGUgc3RhdGUgYXMgYSBCbG9iIHdpdGggdGhlIGdpdmVuIEtleVxuICogd2l0aGluIHRoZSBCbG9iIENvbnRhaW5lciB3aXRoaW4gdGhlIEJsb2IgU3RvcmFnZSBBY2NvdW50LlxuICpcbiAqIFRoaXMgYmFja2VuZCBzdXBwb3J0cyBzdGF0ZSBsb2NraW5nIGFuZCBjb25zaXN0ZW5jeSBjaGVja2luZ1xuICogd2l0aCBBenVyZSBCbG9iIFN0b3JhZ2UgbmF0aXZlIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBOb3RlOiBCeSBkZWZhdWx0IHRoZSBBenVyZSBCYWNrZW5kIHVzZXMgQURBTCBmb3IgYXV0aGVudGljYXRpb24gd2hpY2ggaXMgZGVwcmVjYXRlZFxuICogaW4gZmF2b3VyIG9mIE1TQUwgLSBNU0FMIGNhbiBiZSB1c2VkIGJ5IHNldHRpbmcgdXNlX21pY3Jvc29mdF9ncmFwaCB0byB0cnVlLlxuICogVGhlIGRlZmF1bHQgZm9yIHRoaXMgd2lsbCBjaGFuZ2UgaW4gVGVycmFmb3JtIDEuMixcbiAqIHNvIHRoYXQgTVNBTCBhdXRoZW50aWNhdGlvbiBpcyB1c2VkIGJ5IGRlZmF1bHQuXG4gKlxuICogUmVhZCBtb3JlIGFib3V0IHRoaXMgYmFja2VuZCBpbiB0aGUgVGVycmFmb3JtIGRvY3M6XG4gKiBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9zZXR0aW5ncy9iYWNrZW5kcy9henVyZXJtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXp1cmVybUJhY2tlbmRDb25maWcge1xuICAvKipcbiAgICogKFJlcXVpcmVkKSBUaGUgTmFtZSBvZiB0aGUgU3RvcmFnZSBBY2NvdW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUFjY291bnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoUmVxdWlyZWQpIFRoZSBOYW1lIG9mIHRoZSBTdG9yYWdlIENvbnRhaW5lciB3aXRoaW4gdGhlIFN0b3JhZ2UgQWNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lck5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIChSZXF1aXJlZCkgVGhlIG5hbWUgb2YgdGhlIEJsb2IgdXNlZCB0byByZXRyaWV2ZS9zdG9yZSBUZXJyYWZvcm0ncyBTdGF0ZSBmaWxlXG4gICAqIGluc2lkZSB0aGUgU3RvcmFnZSBDb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIEF6dXJlIEVudmlyb25tZW50IHdoaWNoIHNob3VsZCBiZSB1c2VkLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVJNX0VOVklST05NRU5UIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiAgUG9zc2libGUgdmFsdWVzIGFyZSBwdWJsaWMsIGNoaW5hLCBnZXJtYW4sIHN0YWNrIGFuZCB1c2dvdmVybm1lbnQuIERlZmF1bHRzIHRvIHB1YmxpYy5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgQ3VzdG9tIEVuZHBvaW50IGZvciBBenVyZSBSZXNvdXJjZSBNYW5hZ2VyLlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVJNX0VORFBPSU5UIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKlxuICAgKiBOT1RFOiBBbiBlbmRwb2ludCBzaG91bGQgb25seSBiZSBjb25maWd1cmVkIHdoZW4gdXNpbmcgQXp1cmUgU3RhY2suXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIEhvc3RuYW1lIG9mIHRoZSBBenVyZSBNZXRhZGF0YSBTZXJ2aWNlIChmb3IgZXhhbXBsZSBtYW5hZ2VtZW50LmF6dXJlLmNvbSksXG4gICAqIHVzZWQgdG8gb2J0YWluIHRoZSBDbG91ZCBFbnZpcm9ubWVudCB3aGVuIHVzaW5nIGEgQ3VzdG9tIEF6dXJlIEVudmlyb25tZW50LlxuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVJNX01FVEFEQVRBX0hPU1ROQU1FIEVudmlyb25tZW50IFZhcmlhYmxlLilcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhSG9zdD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2hvdWxkIHRoZSBCbG9iIHVzZWQgdG8gc3RvcmUgdGhlIFRlcnJhZm9ybSBTdGF0ZWZpbGUgYmVcbiAgICogc25hcHNob3R0ZWQgYmVmb3JlIHVzZT8gRGVmYXVsdHMgdG8gZmFsc2UuIFRoaXMgdmFsdWUgY2FuIGFsc28gYmUgc291cmNlZFxuICAgKiBmcm9tIHRoZSBBUk1fU05BUFNIT1QgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBTdWJzY3JpcHRpb24gSUQgaW4gd2hpY2ggdGhlIFN0b3JhZ2UgQWNjb3VudCBleGlzdHMuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fU1VCU0NSSVBUSU9OX0lEIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgc3Vic2NyaXB0aW9uSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBUZW5hbnQgSUQgaW4gd2hpY2ggdGhlIFN1YnNjcmlwdGlvbiBleGlzdHMuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fVEVOQU5UX0lEIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVuYW50SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBwYXRoIHRvIGEgY3VzdG9tIE1hbmFnZWQgU2VydmljZSBJZGVudGl0eSBlbmRwb2ludCB3aGljaCBpcyBhdXRvbWF0aWNhbGx5XG4gICAqIGRldGVybWluZWQgaWYgbm90IHNwZWNpZmllZC5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9NU0lfRU5EUE9JTlQgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBtc2lFbmRwb2ludD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgU2hvdWxkIE1hbmFnZWQgU2VydmljZSBJZGVudGl0eSBhdXRoZW50aWNhdGlvbiBiZSB1c2VkP1xuICAgKiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGUgQVJNX1VTRV9NU0kgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSB1c2VNc2k/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgU0FTIFRva2VuIHVzZWQgdG8gYWNjZXNzIHRoZSBCbG9iIFN0b3JhZ2UgQWNjb3VudC5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9TQVNfVE9LRU4gZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBzYXNUb2tlbj86IHN0cmluZztcbiAgLyoqXG4gICAqIGFjY2Vzc19rZXkgLSAoT3B0aW9uYWwpIFRoZSBBY2Nlc3MgS2V5IHVzZWQgdG8gYWNjZXNzIHRoZSBCbG9iIFN0b3JhZ2UgQWNjb3VudC5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9BQ0NFU1NfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXNzS2V5Pzogc3RyaW5nO1xuICAvKipcbiAgICogKFJlcXVpcmVkKSBUaGUgTmFtZSBvZiB0aGUgUmVzb3VyY2UgR3JvdXAgaW4gd2hpY2ggdGhlIFN0b3JhZ2UgQWNjb3VudCBleGlzdHMuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVGhlIENsaWVudCBJRCBvZiB0aGUgU2VydmljZSBQcmluY2lwYWwuXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fQ0xJRU5UX0lEIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBDbGllbnQgU2VjcmV0IG9mIHRoZSBTZXJ2aWNlIFByaW5jaXBhbC5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9DTElFTlRfU0VDUkVUIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50U2VjcmV0Pzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgcGFzc3dvcmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBDbGllbnQgQ2VydGlmaWNhdGUgc3BlY2lmaWVkXG4gICAqIGluIGNsaWVudF9jZXJ0aWZpY2F0ZV9wYXRoLiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGVcbiAgICogQVJNX0NMSUVOVF9DRVJUSUZJQ0FURV9QQVNTV09SRCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudENlcnRpZmljYXRlUGFzc3dvcmQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBwYXRoIHRvIHRoZSBQRlggZmlsZSB1c2VkIGFzIHRoZSBDbGllbnQgQ2VydGlmaWNhdGUgd2hlblxuICAgKiBhdXRoZW50aWNhdGluZyBhcyBhIFNlcnZpY2UgUHJpbmNpcGFsLiBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWQgZnJvbSB0aGVcbiAgICogQVJNX0NMSUVOVF9DRVJUSUZJQ0FURV9QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50Q2VydGlmaWNhdGVQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTaG91bGQgTVNBTCBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbiBpbnN0ZWFkIG9mIEFEQUwsIGFuZFxuICAgKiBzaG91bGQgTWljcm9zb2Z0IEdyYXBoIGJlIHVzZWQgaW5zdGVhZCBvZiBBenVyZSBBY3RpdmUgRGlyZWN0b3J5IEdyYXBoP1xuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKlxuICAgKiBOb3RlOiBJbiBUZXJyYWZvcm0gMS4yIHRoZSBBenVyZSBCYWNrZW5kIHVzZXMgTVNBTCAoYW5kIE1pY3Jvc29mdCBHcmFwaClcbiAgICogcmF0aGVyIHRoYW4gQURBTCAoYW5kIEF6dXJlIEFjdGl2ZSBEaXJlY3RvcnkgR3JhcGgpIGZvciBhdXRoZW50aWNhdGlvbiBieVxuICAgKiBkZWZhdWx0IC0geW91IGNhbiBkaXNhYmxlIHRoaXMgYnkgc2V0dGluZyB1c2VfbWljcm9zb2Z0X2dyYXBoIHRvIGZhbHNlLlxuICAgKiBUaGlzIHNldHRpbmcgd2lsbCBiZSByZW1vdmVkIGluIFRlcnJhZm9ybSAxLjMsIGR1ZSB0byBNaWNyb3NvZnQnc1xuICAgKiBkZXByZWNhdGlvbiBvZiBBREFMLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlTWljcm9zb2Z0R3JhcGg/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgVVJMIGZvciB0aGUgT0lEQyBwcm92aWRlciBmcm9tIHdoaWNoIHRvIHJlcXVlc3QgYW4gSUQgdG9rZW4uXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fT0lEQ19SRVFVRVNUX1VSTCBvclxuICAgKiBBQ1RJT05TX0lEX1RPS0VOX1JFUVVFU1RfVVJMIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNSZXF1ZXN0VXJsPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgYmVhcmVyIHRva2VuIGZvciB0aGUgcmVxdWVzdCB0byB0aGUgT0lEQyBwcm92aWRlci4gVGhpcyBjYW5cbiAgICogYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9PSURDX1JFUVVFU1RfVE9LRU4gb3JcbiAgICogQUNUSU9OU19JRF9UT0tFTl9SRVFVRVNUX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNSZXF1ZXN0VG9rZW4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFRoZSBJRCB0b2tlbiB3aGVuIGF1dGhlbnRpY2F0aW5nIHVzaW5nIE9wZW5JRCBDb25uZWN0IChPSURDKS5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9PSURDX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2lkY1Rva2VuPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBUaGUgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyBhbiBJRCB0b2tlbiB3aGVuIGF1dGhlbnRpY2F0aW5nIHVzaW5nIE9wZW5JRCBDb25uZWN0IChPSURDKS5cbiAgICogVGhpcyBjYW4gYWxzbyBiZSBzb3VyY2VkIGZyb20gdGhlIEFSTV9PSURDX1RPS0VOX0ZJTEVfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG9pZGNUb2tlbkZpbGVQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTaG91bGQgT0lEQyBhdXRoZW50aWNhdGlvbiBiZSB1c2VkPyBUaGlzIGNhbiBhbHNvIGJlIHNvdXJjZWRcbiAgICogZnJvbSB0aGUgQVJNX1VTRV9PSURDIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKlxuICAgKiBOb3RlOiBXaGVuIHVzaW5nIE9JREMgZm9yIGF1dGhlbnRpY2F0aW9uLCB1c2VfbWljcm9zb2Z0X2dyYXBoXG4gICAqIG11c3QgYmUgc2V0IHRvIHRydWUgKHdoaWNoIGlzIHRoZSBkZWZhdWx0KS5cbiAgICovXG4gIHJlYWRvbmx5IHVzZU9pZGM/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBTaG91bGQgQXp1cmVBRCBBdXRoZW50aWNhdGlvbiBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgQmxvYiBTdG9yYWdlXG4gICAqIEFjY291bnQuIFRoaXMgY2FuIGFsc28gYmUgc291cmNlZCBmcm9tIHRoZSBBUk1fVVNFX0FaVVJFQUQgZW52aXJvbm1lbnRcbiAgICogdmFyaWFibGUuXG4gICAqXG4gICAqIE5vdGU6IFdoZW4gdXNpbmcgQXp1cmVBRCBmb3IgQXV0aGVudGljYXRpb24gdG8gU3RvcmFnZSB5b3UgYWxzbyBuZWVkIHRvXG4gICAqIGVuc3VyZSB0aGUgU3RvcmFnZSBCbG9iIERhdGEgT3duZXIgcm9sZSBpcyBhc3NpZ25lZC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZUF6dXJlYWRBdXRoPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGVBenVyZXJtQ29uZmlnXG4gIGV4dGVuZHMgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlQ29uZmlnLCBBenVyZXJtQmFja2VuZENvbmZpZyB7fVxuIl19
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a, _b, _c, _d;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.TaggedCloudWorkspaces = exports.NamedCloudWorkspace = exports.CloudWorkspace = exports.CloudBackend = void 0;
|
|
5
4
|
exports.getHostNameType = getHostNameType;
|
|
@@ -7,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
7
6
|
const util_1 = require("../util");
|
|
8
7
|
const remote_backend_1 = require("./remote-backend");
|
|
9
8
|
const terraform_backend_1 = require("../terraform-backend");
|
|
10
|
-
const
|
|
9
|
+
const validations_1 = require("../validations");
|
|
11
10
|
const errors_1 = require("../errors");
|
|
12
11
|
/**
|
|
13
12
|
* checks whether the given hostname belongs to tfc or (else) to tfe
|
|
@@ -28,10 +27,15 @@ function getHostNameType(hostname) {
|
|
|
28
27
|
* When Terraform Cloud uses a configuration that contains a cloud block - for example, when a workspace is configured to use a VCS provider directly - it ignores the block and behaves according to its own workspace settings.
|
|
29
28
|
*/
|
|
30
29
|
class CloudBackend extends terraform_backend_1.TerraformBackend {
|
|
30
|
+
props;
|
|
31
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.CloudBackend", version: "0.25.0" };
|
|
31
32
|
constructor(scope, props) {
|
|
32
33
|
super(scope, "backend", "cloud");
|
|
33
34
|
this.props = props;
|
|
34
|
-
this.node.addValidation(new
|
|
35
|
+
this.node.addValidation(new validations_1.ValidateFeatureTargetSupport(this, "The cloud block", {
|
|
36
|
+
terraform: ">=1.1.0",
|
|
37
|
+
opentofu: ">=1.6.0",
|
|
38
|
+
}));
|
|
35
39
|
}
|
|
36
40
|
toHclTerraform() {
|
|
37
41
|
return {
|
|
@@ -86,21 +90,21 @@ class CloudBackend extends terraform_backend_1.TerraformBackend {
|
|
|
86
90
|
}
|
|
87
91
|
}
|
|
88
92
|
exports.CloudBackend = CloudBackend;
|
|
89
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
90
|
-
CloudBackend[_a] = { fqn: "cdktn.CloudBackend", version: "0.25.0-pre.8" };
|
|
91
93
|
/**
|
|
92
94
|
* A cloud workspace can either be a single named workspace, or a list of tagged workspaces.
|
|
93
95
|
*/
|
|
94
96
|
class CloudWorkspace {
|
|
97
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.CloudWorkspace", version: "0.25.0" };
|
|
95
98
|
}
|
|
96
99
|
exports.CloudWorkspace = CloudWorkspace;
|
|
97
|
-
_b = JSII_RTTI_SYMBOL_1;
|
|
98
|
-
CloudWorkspace[_b] = { fqn: "cdktn.CloudWorkspace", version: "0.25.0-pre.8" };
|
|
99
100
|
/**
|
|
100
101
|
* The name of a single Terraform Cloud workspace.
|
|
101
102
|
* You will only be able to use the workspace specified in the configuration with this working directory, and cannot manage workspaces from the CLI (e.g. terraform workspace select or terraform workspace new).
|
|
102
103
|
*/
|
|
103
104
|
class NamedCloudWorkspace extends CloudWorkspace {
|
|
105
|
+
name;
|
|
106
|
+
project;
|
|
107
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.NamedCloudWorkspace", version: "0.25.0" };
|
|
104
108
|
constructor(name, project) {
|
|
105
109
|
super();
|
|
106
110
|
this.name = name;
|
|
@@ -123,12 +127,13 @@ class NamedCloudWorkspace extends CloudWorkspace {
|
|
|
123
127
|
}
|
|
124
128
|
}
|
|
125
129
|
exports.NamedCloudWorkspace = NamedCloudWorkspace;
|
|
126
|
-
_c = JSII_RTTI_SYMBOL_1;
|
|
127
|
-
NamedCloudWorkspace[_c] = { fqn: "cdktn.NamedCloudWorkspace", version: "0.25.0-pre.8" };
|
|
128
130
|
/**
|
|
129
131
|
* A set of Terraform Cloud workspace tags. You will be able to use this working directory with any workspaces that have all of the specified tags, and can use the terraform workspace commands to switch between them or create new workspaces. New workspaces will automatically have the specified tags. This option conflicts with name.
|
|
130
132
|
*/
|
|
131
133
|
class TaggedCloudWorkspaces extends CloudWorkspace {
|
|
134
|
+
tags;
|
|
135
|
+
project;
|
|
136
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.TaggedCloudWorkspaces", version: "0.25.0" };
|
|
132
137
|
constructor(tags, project) {
|
|
133
138
|
super();
|
|
134
139
|
this.tags = tags;
|
|
@@ -151,6 +156,4 @@ class TaggedCloudWorkspaces extends CloudWorkspace {
|
|
|
151
156
|
}
|
|
152
157
|
}
|
|
153
158
|
exports.TaggedCloudWorkspaces = TaggedCloudWorkspaces;
|
|
154
|
-
_d = JSII_RTTI_SYMBOL_1;
|
|
155
|
-
TaggedCloudWorkspaces[_d] = { fqn: "cdktn.TaggedCloudWorkspaces", version: "0.25.0-pre.8" };
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYWNrZW5kcy9jbG91ZC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFnQkEsMENBR0M7O0FBaEJELGtDQUFxRDtBQUNyRCxxREFBNEQ7QUFFNUQsNERBQXdEO0FBQ3hELDBGQUFxRjtBQUNyRixzQ0FBb0U7QUFFcEU7Ozs7O0dBS0c7QUFDSCxTQUFnQixlQUFlLENBQUMsUUFBaUI7SUFDL0MsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLHlEQUF5RDtJQUN0RixPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDakUsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQWEsWUFBYSxTQUFRLG9DQUFnQjtJQUNoRCxZQUNFLEtBQWdCLEVBQ0MsS0FBeUI7UUFFMUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFGaEIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFJMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3JCLElBQUkscURBQXdCLENBQzFCLE9BQU8sRUFDUCwrRkFBK0YsQ0FDaEcsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsSUFBQSxnQkFBUyxFQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDcEU7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRSxJQUFBLGdCQUFTLEVBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFB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SSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQztJQUNKLENBQUM7O0FBdkJILHNEQXdCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsga2V5c1RvU25ha2VDYXNlLCBkZWVwTWVyZ2UgfSBmcm9tIFwiLi4vdXRpbFwiO1xuaW1wb3J0IHsgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlIH0gZnJvbSBcIi4vcmVtb3RlLWJhY2tlbmRcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVJlbW90ZVN0YXRlIH0gZnJvbSBcIi4uL3RlcnJhZm9ybS1yZW1vdGUtc3RhdGVcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUJhY2tlbmQgfSBmcm9tIFwiLi4vdGVycmFmb3JtLWJhY2tlbmRcIjtcbmltcG9ydCB7IFZhbGlkYXRlVGVycmFmb3JtVmVyc2lvbiB9IGZyb20gXCIuLi92YWxpZGF0aW9ucy92YWxpZGF0ZS10ZXJyYWZvcm0tdmVyc2lvblwiO1xuaW1wb3J0IHsgY2xvdWRCYWNrZW5kV29ya3NwYWNlSXNOb3REZWZpbmVkQnlOYW1lIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG4vKipcbiAqIGNoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBob3N0bmFtZSBiZWxvbmdzIHRvIHRmYyBvciAoZWxzZSkgdG8gdGZlXG4gKiBJZiBubyBob3N0bmFtZSBpcyBnaXZlbiwgaXQgd2lsbCByZXR1cm4gdGZjLCBhcyB0aGF0J3MgdGhlIGRlZmF1bHQgaW4gYmFja2VuZHMuXG4gKiBAcGFyYW0gaG9zdG5hbWUgZS5nLiBhcHAudGVycmFmb3JtLmlvLCBhcHAudGVycmFmb3JtLmlvOjgwLCB0ZmUubXlvcmcub3JnXG4gKiBAcmV0dXJucyBcInRmY1wiIG9yIFwidGZlXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhvc3ROYW1lVHlwZShob3N0bmFtZT86IHN0cmluZyk6IFwidGZjXCIgfCBcInRmZVwiIHtcbiAgaWYgKCFob3N0bmFtZSkgcmV0dXJuIFwidGZjXCI7IC8vIGRlZmF1bHQgaXMgdGZjIHdoZW4gbm90IHBhc3NpbmcgYSBob3N0bmFtZSB0byBiYWNrZW5kc1xuICByZXR1cm4gaG9zdG5hbWUuc3RhcnRzV2l0aChcImFwcC50ZXJyYWZvcm0uaW9cIikgPyBcInRmY1wiIDogXCJ0ZmVcIjtcbn1cblxuLyoqXG4gKiBUaGUgQ2xvdWQgQmFja2VuZCBzeW50aGVzaXplcyBhIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9jbGkvY2xvdWQvc2V0dGluZ3MjdGhlLWNsb3VkLWJsb2NrIGNsb3VkIGJsb2NrfS5cbiAqIFRoZSBjbG91ZCBibG9jayBpcyBhIG5lc3RlZCBibG9jayB3aXRoaW4gdGhlIHRvcC1sZXZlbCB0ZXJyYWZvcm0gc2V0dGluZ3MgYmxvY2suXG4gKiBJdCBzcGVjaWZpZXMgd2hpY2ggVGVycmFmb3JtIENsb3VkIHdvcmtzcGFjZXMgdG8gdXNlIGZvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIFRoZSBjbG91ZCBibG9jayBvbmx5IGFmZmVjdHMgVGVycmFmb3JtIENMSSdzIGJlaGF2aW9yLlxuICogV2hlbiBUZXJyYWZvcm0gQ2xvdWQgdXNlcyBhIGNvbmZpZ3VyYXRpb24gdGhhdCBjb250YWlucyBhIGNsb3VkIGJsb2NrIC0gZm9yIGV4YW1wbGUsIHdoZW4gYSB3b3Jrc3BhY2UgaXMgY29uZmlndXJlZCB0byB1c2UgYSBWQ1MgcHJvdmlkZXIgZGlyZWN0bHkgLSBpdCBpZ25vcmVzIHRoZSBibG9jayBhbmQgYmVoYXZlcyBhY2NvcmRpbmcgdG8gaXRzIG93biB3b3Jrc3BhY2Ugc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEJhY2tlbmQgZXh0ZW5kcyBUZXJyYWZvcm1CYWNrZW5kIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDbG91ZEJhY2tlbmRDb25maWcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBcImJhY2tlbmRcIiwgXCJjbG91ZFwiKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IFZhbGlkYXRlVGVycmFmb3JtVmVyc2lvbihcbiAgICAgICAgXCI+PTEuMVwiLFxuICAgICAgICBgVGhlIGNsb3VkIGJsb2NrIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBUZXJyYWZvcm0gPj0xLjEuIFBsZWFzZSB1cGdyYWRlIHlvdXIgVGVycmFmb3JtIHZlcnNpb24uYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0hjbFRlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB0ZXJyYWZvcm06IHtcbiAgICAgICAgY2xvdWQ6IGRlZXBNZXJnZSh0aGlzLnN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCksIHRoaXMucmF3T3ZlcnJpZGVzKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoaXMgcmVzb3VyY2UgdG8gdGhlIHRlcnJhZm9ybSBKU09OIG91dHB1dC5cbiAgICovXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB0ZXJyYWZvcm06IHtcbiAgICAgICAgY2xvdWQ6IGRlZXBNZXJnZSh0aGlzLnN5bnRoZXNpemVBdHRyaWJ1dGVzKCksIHRoaXMucmF3T3ZlcnJpZGVzKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b01ldGFkYXRhKCkge1xuICAgIGNvbnN0IGNsb3VkID0gZ2V0SG9zdE5hbWVUeXBlKHRoaXMucHJvcHMuaG9zdG5hbWUpO1xuICAgIHJldHVybiB7IC4uLnN1cGVyLnRvTWV0YWRhdGEoKSwgY2xvdWQgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmtleXNUb1NuYWtlQ2FzZSh0aGlzLnByb3BzKSxcbiAgICAgIHdvcmtzcGFjZXM6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMucHJvcHMud29ya3NwYWNlcy50b0hjbFRlcnJhZm9ybSgpLFxuICAgICAgICBpc0Jsb2NrOiB0cnVlLFxuICAgICAgICB0eXBlOiBcIm1hcFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ21hcFwiLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ga2V5c1RvU25ha2VDYXNlKHtcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICB3b3Jrc3BhY2VzOiB0aGlzLnByb3BzLndvcmtzcGFjZXMudG9UZXJyYWZvcm0oKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZW1vdGVTdGF0ZURhdGFTb3VyY2UoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgX2Zyb21TdGFjazogc3RyaW5nLFxuICApOiBUZXJyYWZvcm1SZW1vdGVTdGF0ZSB7XG4gICAgLy8gVGhlIGNsb3VkIFwiYmFja2VuZFwiIGRvZXMgbm90IGhhdmUgYSBjb3Jlc3BvbmRpbmcgcmVtb3RlIHN0YXRlIGRhdGEgc291cmNlIHNpbmNlIGl0J3MgbWVhbnQgdG8gYWxzb1xuICAgIC8vIHdvcmsgd2l0aCBtdWx0aXBsZSB3b3Jrc3BhY2VzIHRocm91Z2ggdGFncy5cbiAgICBpZiAoXCJuYW1lXCIgaW4gdGhpcy5wcm9wcy53b3Jrc3BhY2VzKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGFUZXJyYWZvcm1SZW1vdGVTdGF0ZShzY29wZSwgbmFtZSwge1xuICAgICAgICBvcmdhbml6YXRpb246IHRoaXMucHJvcHMub3JnYW5pemF0aW9uLFxuICAgICAgICB3b3Jrc3BhY2VzOiB7IG5hbWU6ICh0aGlzLnByb3BzLndvcmtzcGFjZXMgYXMgYW55KS5uYW1lIH0sXG4gICAgICAgIHRva2VuOiB0aGlzLnByb3BzLnRva2VuLFxuICAgICAgICBob3N0bmFtZTogdGhpcy5wcm9wcy5ob3N0bmFtZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRocm93IGNsb3VkQmFja2VuZFdvcmtzcGFjZUlzTm90RGVmaW5lZEJ5TmFtZSgpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIENsb3VkIEJhY2tlbmQgc3ludGhlc2l6ZXMgYSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vY2xpL2Nsb3VkL3NldHRpbmdzI3RoZS1jbG91ZC1ibG9jayBjbG91ZCBibG9ja30uXG4gKiBUaGUgY2xvdWQgYmxvY2sgaXMgYSBuZXN0ZWQgYmxvY2sgd2l0aGluIHRoZSB0b3AtbGV2ZWwgdGVycmFmb3JtIHNldHRpbmdzIGJsb2NrLlxuICogSXQgc3BlY2lmaWVzIHdoaWNoIFRlcnJhZm9ybSBDbG91ZCB3b3Jrc3BhY2VzIHRvIHVzZSBmb3IgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gKiBUaGUgY2xvdWQgYmxvY2sgb25seSBhZmZlY3RzIFRlcnJhZm9ybSBDTEkncyBiZWhhdmlvci5cbiAqIFdoZW4gVGVycmFmb3JtIENsb3VkIHVzZXMgYSBjb25maWd1cmF0aW9uIHRoYXQgY29udGFpbnMgYSBjbG91ZCBibG9jayAtIGZvciBleGFtcGxlLCB3aGVuIGEgd29ya3NwYWNlIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGEgVkNTIHByb3ZpZGVyIGRpcmVjdGx5IC0gaXQgaWdub3JlcyB0aGUgYmxvY2sgYW5kIGJlaGF2ZXMgYWNjb3JkaW5nIHRvIGl0cyBvd24gd29ya3NwYWNlIHNldHRpbmdzLlxuICpcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2NsaS9jbG91ZC9zZXR0aW5ncyNhcmd1bWVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbG91ZEJhY2tlbmRDb25maWcge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9yZ2FuaXphdGlvbiBjb250YWluaW5nIHRoZSB3b3Jrc3BhY2UocykgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzaG91bGQgdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbmVzdGVkIGJsb2NrIHRoYXQgc3BlY2lmaWVzIHdoaWNoIHJlbW90ZSBUZXJyYWZvcm0gQ2xvdWQgd29ya3NwYWNlcyB0byB1c2UgZm9yIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqIFRoZSB3b3Jrc3BhY2VzIGJsb2NrIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cywgZWFjaCBkZW5vdGluZyBhIHN0cmF0ZWd5IGZvciBob3cgd29ya3NwYWNlcyBzaG91bGQgYmUgbWFwcGVkOlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya3NwYWNlczogTmFtZWRDbG91ZFdvcmtzcGFjZSB8IFRhZ2dlZENsb3VkV29ya3NwYWNlcztcblxuICAvKipcbiAgICogVGhlIGhvc3RuYW1lIG9mIGEgVGVycmFmb3JtIEVudGVycHJpc2UgaW5zdGFsbGF0aW9uLCBpZiB1c2luZyBUZXJyYWZvcm0gRW50ZXJwcmlzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYXBwLnRlcnJhZm9ybS5pb1xuICAgKi9cbiAgcmVhZG9ubHkgaG9zdG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0b2tlbiB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIFRlcnJhZm9ybSBDbG91ZC5cbiAgICogV2UgcmVjb21tZW5kIG9taXR0aW5nIHRoZSB0b2tlbiBmcm9tIHRoZSBjb25maWd1cmF0aW9uLCBhbmQgaW5zdGVhZCB1c2luZyB0ZXJyYWZvcm0gbG9naW4gb3IgbWFudWFsbHkgY29uZmlndXJpbmcgY3JlZGVudGlhbHMgaW4gdGhlIENMSSBjb25maWcgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IHRva2VuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgY2xvdWQgd29ya3NwYWNlIGNhbiBlaXRoZXIgYmUgYSBzaW5nbGUgbmFtZWQgd29ya3NwYWNlLCBvciBhIGxpc3Qgb2YgdGFnZ2VkIHdvcmtzcGFjZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbG91ZFdvcmtzcGFjZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCB0b1RlcnJhZm9ybSgpOiBhbnk7XG59XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgYSBzaW5nbGUgVGVycmFmb3JtIENsb3VkIHdvcmtzcGFjZS5cbiAqIFlvdSB3aWxsIG9ubHkgYmUgYWJsZSB0byB1c2UgdGhlIHdvcmtzcGFjZSBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGlzIHdvcmtpbmcgZGlyZWN0b3J5LCBhbmQgY2Fubm90IG1hbmFnZSB3b3Jrc3BhY2VzIGZyb20gdGhlIENMSSAoZS5nLiB0ZXJyYWZvcm0gd29ya3NwYWNlIHNlbGVjdCBvciB0ZXJyYWZvcm0gd29ya3NwYWNlIG5ldykuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lZENsb3VkV29ya3NwYWNlIGV4dGVuZHMgQ2xvdWRXb3Jrc3BhY2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgcHJvamVjdD86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0hjbFRlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLm5hbWUsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiAgQSBzZXQgb2YgVGVycmFmb3JtIENsb3VkIHdvcmtzcGFjZSB0YWdzLiBZb3Ugd2lsbCBiZSBhYmxlIHRvIHVzZSB0aGlzIHdvcmtpbmcgZGlyZWN0b3J5IHdpdGggYW55IHdvcmtzcGFjZXMgdGhhdCBoYXZlIGFsbCBvZiB0aGUgc3BlY2lmaWVkIHRhZ3MsIGFuZCBjYW4gdXNlIHRoZSB0ZXJyYWZvcm0gd29ya3NwYWNlIGNvbW1hbmRzIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZW0gb3IgY3JlYXRlIG5ldyB3b3Jrc3BhY2VzLiBOZXcgd29ya3NwYWNlcyB3aWxsIGF1dG9tYXRpY2FsbHkgaGF2ZSB0aGUgc3BlY2lmaWVkIHRhZ3MuIFRoaXMgb3B0aW9uIGNvbmZsaWN0cyB3aXRoIG5hbWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdnZWRDbG91ZFdvcmtzcGFjZXMgZXh0ZW5kcyBDbG91ZFdvcmtzcGFjZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFnczogc3RyaW5nW10sXG4gICAgcHVibGljIHByb2plY3Q/OiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgdG9IY2xUZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFnczoge1xuICAgICAgICB2YWx1ZTogdGhpcy50YWdzLFxuICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdMaXN0XCIsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYWNrZW5kcy9jbG91ZC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdCQSwwQ0FHQzs7QUFoQkQsa0NBQXFEO0FBQ3JELHFEQUE0RDtBQUU1RCw0REFBd0Q7QUFDeEQsZ0RBQThEO0FBQzlELHNDQUFvRTtBQUVwRTs7Ozs7R0FLRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxRQUFpQjtJQUMvQyxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMseURBQXlEO0lBQ3RGLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRSxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxZQUFhLFNBQVEsb0NBQWdCO0lBRzdCOztJQUZuQixZQUNFLEtBQWdCLEVBQ0MsS0FBeUI7UUFFMUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFGaEIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFJMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3JCLElBQUksMENBQTRCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hELFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFBRSxTQUFTO1NBQ3BCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsSUFBQSxnQkFBUyxFQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDcEU7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNU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QUFFLFlBQVk7YUFDL0I7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO0lBQ0osQ0FBQzs7QUF2Qkgsc0RBd0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBrZXlzVG9TbmFrZUNhc2UsIGRlZXBNZXJnZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQgeyBEYXRhVGVycmFmb3JtUmVtb3RlU3RhdGUgfSBmcm9tIFwiLi9yZW1vdGUtYmFja2VuZFwiO1xuaW1wb3J0IHsgVGVycmFmb3JtUmVtb3RlU3RhdGUgfSBmcm9tIFwiLi4vdGVycmFmb3JtLXJlbW90ZS1zdGF0ZVwiO1xuaW1wb3J0IHsgVGVycmFmb3JtQmFja2VuZCB9IGZyb20gXCIuLi90ZXJyYWZvcm0tYmFja2VuZFwiO1xuaW1wb3J0IHsgVmFsaWRhdGVGZWF0dXJlVGFyZ2V0U3VwcG9ydCB9IGZyb20gXCIuLi92YWxpZGF0aW9uc1wiO1xuaW1wb3J0IHsgY2xvdWRCYWNrZW5kV29ya3NwYWNlSXNOb3REZWZpbmVkQnlOYW1lIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG4vKipcbiAqIGNoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBob3N0bmFtZSBiZWxvbmdzIHRvIHRmYyBvciAoZWxzZSkgdG8gdGZlXG4gKiBJZiBubyBob3N0bmFtZSBpcyBnaXZlbiwgaXQgd2lsbCByZXR1cm4gdGZjLCBhcyB0aGF0J3MgdGhlIGRlZmF1bHQgaW4gYmFja2VuZHMuXG4gKiBAcGFyYW0gaG9zdG5hbWUgZS5nLiBhcHAudGVycmFmb3JtLmlvLCBhcHAudGVycmFmb3JtLmlvOjgwLCB0ZmUubXlvcmcub3JnXG4gKiBAcmV0dXJucyBcInRmY1wiIG9yIFwidGZlXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhvc3ROYW1lVHlwZShob3N0bmFtZT86IHN0cmluZyk6IFwidGZjXCIgfCBcInRmZVwiIHtcbiAgaWYgKCFob3N0bmFtZSkgcmV0dXJuIFwidGZjXCI7IC8vIGRlZmF1bHQgaXMgdGZjIHdoZW4gbm90IHBhc3NpbmcgYSBob3N0bmFtZSB0byBiYWNrZW5kc1xuICByZXR1cm4gaG9zdG5hbWUuc3RhcnRzV2l0aChcImFwcC50ZXJyYWZvcm0uaW9cIikgPyBcInRmY1wiIDogXCJ0ZmVcIjtcbn1cblxuLyoqXG4gKiBUaGUgQ2xvdWQgQmFja2VuZCBzeW50aGVzaXplcyBhIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9jbGkvY2xvdWQvc2V0dGluZ3MjdGhlLWNsb3VkLWJsb2NrIGNsb3VkIGJsb2NrfS5cbiAqIFRoZSBjbG91ZCBibG9jayBpcyBhIG5lc3RlZCBibG9jayB3aXRoaW4gdGhlIHRvcC1sZXZlbCB0ZXJyYWZvcm0gc2V0dGluZ3MgYmxvY2suXG4gKiBJdCBzcGVjaWZpZXMgd2hpY2ggVGVycmFmb3JtIENsb3VkIHdvcmtzcGFjZXMgdG8gdXNlIGZvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIFRoZSBjbG91ZCBibG9jayBvbmx5IGFmZmVjdHMgVGVycmFmb3JtIENMSSdzIGJlaGF2aW9yLlxuICogV2hlbiBUZXJyYWZvcm0gQ2xvdWQgdXNlcyBhIGNvbmZpZ3VyYXRpb24gdGhhdCBjb250YWlucyBhIGNsb3VkIGJsb2NrIC0gZm9yIGV4YW1wbGUsIHdoZW4gYSB3b3Jrc3BhY2UgaXMgY29uZmlndXJlZCB0byB1c2UgYSBWQ1MgcHJvdmlkZXIgZGlyZWN0bHkgLSBpdCBpZ25vcmVzIHRoZSBibG9jayBhbmQgYmVoYXZlcyBhY2NvcmRpbmcgdG8gaXRzIG93biB3b3Jrc3BhY2Ugc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEJhY2tlbmQgZXh0ZW5kcyBUZXJyYWZvcm1CYWNrZW5kIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDbG91ZEJhY2tlbmRDb25maWcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBcImJhY2tlbmRcIiwgXCJjbG91ZFwiKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IFZhbGlkYXRlRmVhdHVyZVRhcmdldFN1cHBvcnQodGhpcywgXCJUaGUgY2xvdWQgYmxvY2tcIiwge1xuICAgICAgICB0ZXJyYWZvcm06IFwiPj0xLjEuMFwiLFxuICAgICAgICBvcGVudG9mdTogXCI+PTEuNi4wXCIsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlcnJhZm9ybToge1xuICAgICAgICBjbG91ZDogZGVlcE1lcmdlKHRoaXMuc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKSwgdGhpcy5yYXdPdmVycmlkZXMpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhpcyByZXNvdXJjZSB0byB0aGUgdGVycmFmb3JtIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgcHVibGljIHRvVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlcnJhZm9ybToge1xuICAgICAgICBjbG91ZDogZGVlcE1lcmdlKHRoaXMuc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKSwgdGhpcy5yYXdPdmVycmlkZXMpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvTWV0YWRhdGEoKSB7XG4gICAgY29uc3QgY2xvdWQgPSBnZXRIb3N0TmFtZVR5cGUodGhpcy5wcm9wcy5ob3N0bmFtZSk7XG4gICAgcmV0dXJuIHsgLi4uc3VwZXIudG9NZXRhZGF0YSgpLCBjbG91ZCB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ua2V5c1RvU25ha2VDYXNlKHRoaXMucHJvcHMpLFxuICAgICAgd29ya3NwYWNlczoge1xuICAgICAgICB2YWx1ZTogdGhpcy5wcm9wcy53b3Jrc3BhY2VzLnRvSGNsVGVycmFmb3JtKCksXG4gICAgICAgIGlzQmxvY2s6IHRydWUsXG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nbWFwXCIsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBrZXlzVG9TbmFrZUNhc2Uoe1xuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgIHdvcmtzcGFjZXM6IHRoaXMucHJvcHMud29ya3NwYWNlcy50b1RlcnJhZm9ybSgpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFJlbW90ZVN0YXRlRGF0YVNvdXJjZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBfZnJvbVN0YWNrOiBzdHJpbmcsXG4gICk6IFRlcnJhZm9ybVJlbW90ZVN0YXRlIHtcbiAgICAvLyBUaGUgY2xvdWQgXCJiYWNrZW5kXCIgZG9lcyBub3QgaGF2ZSBhIGNvcmVzcG9uZGluZyByZW1vdGUgc3RhdGUgZGF0YSBzb3VyY2Ugc2luY2UgaXQncyBtZWFudCB0byBhbHNvXG4gICAgLy8gd29yayB3aXRoIG11bHRpcGxlIHdvcmtzcGFjZXMgdGhyb3VnaCB0YWdzLlxuICAgIGlmIChcIm5hbWVcIiBpbiB0aGlzLnByb3BzLndvcmtzcGFjZXMpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVRlcnJhZm9ybVJlbW90ZVN0YXRlKHNjb3BlLCBuYW1lLCB7XG4gICAgICAgIG9yZ2FuaXphdGlvbjogdGhpcy5wcm9wcy5vcmdhbml6YXRpb24sXG4gICAgICAgIHdvcmtzcGFjZXM6IHsgbmFtZTogKHRoaXMucHJvcHMud29ya3NwYWNlcyBhcyBhbnkpLm5hbWUgfSxcbiAgICAgICAgdG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICAgIGhvc3RuYW1lOiB0aGlzLnByb3BzLmhvc3RuYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhyb3cgY2xvdWRCYWNrZW5kV29ya3NwYWNlSXNOb3REZWZpbmVkQnlOYW1lKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgQ2xvdWQgQmFja2VuZCBzeW50aGVzaXplcyBhIHtAbGluayBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9jbGkvY2xvdWQvc2V0dGluZ3MjdGhlLWNsb3VkLWJsb2NrIGNsb3VkIGJsb2NrfS5cbiAqIFRoZSBjbG91ZCBibG9jayBpcyBhIG5lc3RlZCBibG9jayB3aXRoaW4gdGhlIHRvcC1sZXZlbCB0ZXJyYWZvcm0gc2V0dGluZ3MgYmxvY2suXG4gKiBJdCBzcGVjaWZpZXMgd2hpY2ggVGVycmFmb3JtIENsb3VkIHdvcmtzcGFjZXMgdG8gdXNlIGZvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIFRoZSBjbG91ZCBibG9jayBvbmx5IGFmZmVjdHMgVGVycmFmb3JtIENMSSdzIGJlaGF2aW9yLlxuICogV2hlbiBUZXJyYWZvcm0gQ2xvdWQgdXNlcyBhIGNvbmZpZ3VyYXRpb24gdGhhdCBjb250YWlucyBhIGNsb3VkIGJsb2NrIC0gZm9yIGV4YW1wbGUsIHdoZW4gYSB3b3Jrc3BhY2UgaXMgY29uZmlndXJlZCB0byB1c2UgYSBWQ1MgcHJvdmlkZXIgZGlyZWN0bHkgLSBpdCBpZ25vcmVzIHRoZSBibG9jayBhbmQgYmVoYXZlcyBhY2NvcmRpbmcgdG8gaXRzIG93biB3b3Jrc3BhY2Ugc2V0dGluZ3MuXG4gKlxuICogaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vY2xpL2Nsb3VkL3NldHRpbmdzI2FyZ3VtZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkQmFja2VuZENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3JnYW5pemF0aW9uIGNvbnRhaW5pbmcgdGhlIHdvcmtzcGFjZShzKSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHNob3VsZCB1c2UuXG4gICAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogQSBuZXN0ZWQgYmxvY2sgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVtb3RlIFRlcnJhZm9ybSBDbG91ZCB3b3Jrc3BhY2VzIHRvIHVzZSBmb3IgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cbiAgICogVGhlIHdvcmtzcGFjZXMgYmxvY2sgbXVzdCBjb250YWluIGV4YWN0bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzLCBlYWNoIGRlbm90aW5nIGEgc3RyYXRlZ3kgZm9yIGhvdyB3b3Jrc3BhY2VzIHNob3VsZCBiZSBtYXBwZWQ6XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VzOiBOYW1lZENsb3VkV29ya3NwYWNlIHwgVGFnZ2VkQ2xvdWRXb3Jrc3BhY2VzO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdG5hbWUgb2YgYSBUZXJyYWZvcm0gRW50ZXJwcmlzZSBpbnN0YWxsYXRpb24sIGlmIHVzaW5nIFRlcnJhZm9ybSBFbnRlcnByaXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhcHAudGVycmFmb3JtLmlvXG4gICAqL1xuICByZWFkb25seSBob3N0bmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRva2VuIHVzZWQgdG8gYXV0aGVudGljYXRlIHdpdGggVGVycmFmb3JtIENsb3VkLlxuICAgKiBXZSByZWNvbW1lbmQgb21pdHRpbmcgdGhlIHRva2VuIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24sIGFuZCBpbnN0ZWFkIHVzaW5nIHRlcnJhZm9ybSBsb2dpbiBvciBtYW51YWxseSBjb25maWd1cmluZyBjcmVkZW50aWFscyBpbiB0aGUgQ0xJIGNvbmZpZyBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBjbG91ZCB3b3Jrc3BhY2UgY2FuIGVpdGhlciBiZSBhIHNpbmdsZSBuYW1lZCB3b3Jrc3BhY2UsIG9yIGEgbGlzdCBvZiB0YWdnZWQgd29ya3NwYWNlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsb3VkV29ya3NwYWNlIHtcbiAgcHVibGljIGFic3RyYWN0IHRvVGVycmFmb3JtKCk6IGFueTtcbn1cblxuLyoqXG4gKiBUaGUgbmFtZSBvZiBhIHNpbmdsZSBUZXJyYWZvcm0gQ2xvdWQgd29ya3NwYWNlLlxuICogWW91IHdpbGwgb25seSBiZSBhYmxlIHRvIHVzZSB0aGUgd29ya3NwYWNlIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiB3aXRoIHRoaXMgd29ya2luZyBkaXJlY3RvcnksIGFuZCBjYW5ub3QgbWFuYWdlIHdvcmtzcGFjZXMgZnJvbSB0aGUgQ0xJIChlLmcuIHRlcnJhZm9ybSB3b3Jrc3BhY2Ugc2VsZWN0IG9yIHRlcnJhZm9ybSB3b3Jrc3BhY2UgbmV3KS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVkQ2xvdWRXb3Jrc3BhY2UgZXh0ZW5kcyBDbG91ZFdvcmtzcGFjZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBwcm9qZWN0Pzogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMubmFtZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqICBBIHNldCBvZiBUZXJyYWZvcm0gQ2xvdWQgd29ya3NwYWNlIHRhZ3MuIFlvdSB3aWxsIGJlIGFibGUgdG8gdXNlIHRoaXMgd29ya2luZyBkaXJlY3Rvcnkgd2l0aCBhbnkgd29ya3NwYWNlcyB0aGF0IGhhdmUgYWxsIG9mIHRoZSBzcGVjaWZpZWQgdGFncywgYW5kIGNhbiB1c2UgdGhlIHRlcnJhZm9ybSB3b3Jrc3BhY2UgY29tbWFuZHMgdG8gc3dpdGNoIGJldHdlZW4gdGhlbSBvciBjcmVhdGUgbmV3IHdvcmtzcGFjZXMuIE5ldyB3b3Jrc3BhY2VzIHdpbGwgYXV0b21hdGljYWxseSBoYXZlIHRoZSBzcGVjaWZpZWQgdGFncy4gVGhpcyBvcHRpb24gY29uZmxpY3RzIHdpdGggbmFtZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhZ2dlZENsb3VkV29ya3NwYWNlcyBleHRlbmRzIENsb3VkV29ya3NwYWNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWdzOiBzdHJpbmdbXSxcbiAgICBwdWJsaWMgcHJvamVjdD86IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0hjbFRlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB0YWdzOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLnRhZ3MsXG4gICAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ0xpc3RcIixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB0YWdzOiB0aGlzLnRhZ3MsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfTtcbiAgfVxufVxuIl19
|