cdklabs-projen-project-types 0.6.6 → 0.6.8
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 +818 -650
- package/.yarn/install-state.gz +0 -0
- package/API.md +750 -27
- package/lib/cdk-construct-library-options.d.ts +34 -0
- package/lib/cdk-construct-library-options.js +1 -1
- package/lib/cdk-jsii-options.d.ts +34 -0
- package/lib/cdk-jsii-options.js +1 -1
- package/lib/cdk.js +2 -2
- package/lib/cdklabs.js +3 -3
- package/lib/check-gha-expressions.js +7 -5
- package/lib/common-options.js +2 -2
- package/lib/jsii.js +1 -1
- package/lib/rosetta.js +1 -1
- package/lib/yarn/constraints.js +1 -1
- package/lib/yarn/gather-versions.exec.js +18 -1
- package/lib/yarn/jsii-build.js +1 -1
- package/lib/yarn/monorepo-options.d.ts +34 -0
- package/lib/yarn/monorepo-options.js +1 -1
- package/lib/yarn/monorepo-release.js +6 -3
- package/lib/yarn/monorepo.js +2 -2
- package/lib/yarn/typescript-workspace-options.d.ts +34 -0
- package/lib/yarn/typescript-workspace-options.js +1 -1
- package/lib/yarn/typescript-workspace-release.js +1 -1
- package/lib/yarn/typescript-workspace.js +9 -3
- package/package.json +8 -7
package/lib/cdklabs.js
CHANGED
|
@@ -112,7 +112,7 @@ function createNpmPublishingDefaults() {
|
|
|
112
112
|
* @pjid cdklabs-construct-lib
|
|
113
113
|
*/
|
|
114
114
|
class CdklabsConstructLibrary extends cdk_1.CdkConstructLibrary {
|
|
115
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsConstructLibrary", version: "0.6.
|
|
115
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsConstructLibrary", version: "0.6.8" };
|
|
116
116
|
constructor(options) {
|
|
117
117
|
const cdklabsPublishingDefaultProps = (options.cdklabsPublishingDefaults ?? true) ?
|
|
118
118
|
createCdklabsPublishingDefaults(options.name, options.jsiiTargetLanguages) : {};
|
|
@@ -134,7 +134,7 @@ exports.CdklabsConstructLibrary = CdklabsConstructLibrary;
|
|
|
134
134
|
* @pjid cdklabs-ts-proj
|
|
135
135
|
*/
|
|
136
136
|
class CdklabsTypeScriptProject extends cdk_1.CdkTypeScriptProject {
|
|
137
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsTypeScriptProject", version: "0.6.
|
|
137
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsTypeScriptProject", version: "0.6.8" };
|
|
138
138
|
constructor(options) {
|
|
139
139
|
// the leftmost object is mutated and returned by deepMerge
|
|
140
140
|
const mergedOptions = (0, util_1.deepMerge)([
|
|
@@ -154,7 +154,7 @@ exports.CdklabsTypeScriptProject = CdklabsTypeScriptProject;
|
|
|
154
154
|
* @pjid cdklabs-jsii-proj
|
|
155
155
|
*/
|
|
156
156
|
class CdklabsJsiiProject extends jsii_1.CdkJsiiProject {
|
|
157
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsJsiiProject", version: "0.6.
|
|
157
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdklabsJsiiProject", version: "0.6.8" };
|
|
158
158
|
constructor(options) {
|
|
159
159
|
const cdklabsPublishingDefaultProps = (options.cdklabsPublishingDefaults ?? true) ?
|
|
160
160
|
createCdklabsPublishingDefaults(options.name, options.jsiiTargetLanguages) : {};
|
|
@@ -12,7 +12,7 @@ const projen_1 = require("projen");
|
|
|
12
12
|
* Automatically added to all of our project types.
|
|
13
13
|
*/
|
|
14
14
|
class CheckGhaExpressions extends projen_1.Component {
|
|
15
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CheckGhaExpressions", version: "0.6.
|
|
15
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CheckGhaExpressions", version: "0.6.8" };
|
|
16
16
|
constructor(project) {
|
|
17
17
|
super(project, 'gha-variable-checker');
|
|
18
18
|
}
|
|
@@ -23,7 +23,7 @@ class CheckGhaExpressions extends projen_1.Component {
|
|
|
23
23
|
}
|
|
24
24
|
if (violations.length > 0) {
|
|
25
25
|
throw new Error([
|
|
26
|
-
'Found dangerous expressions
|
|
26
|
+
'Found dangerous expressions in workflow shell steps. Put these in environment variables and reference them instead. DO NOT FORGET TO QUOTE THEM!',
|
|
27
27
|
...violations.map((v) => `- wf ${v.workflowName}: job ${v.jobName}.${v.stepIndex + 1}: ${v.expression}`),
|
|
28
28
|
].join('\n'));
|
|
29
29
|
}
|
|
@@ -33,8 +33,10 @@ class CheckGhaExpressions extends projen_1.Component {
|
|
|
33
33
|
if (isJob(job)) {
|
|
34
34
|
for (const [stepIndex, step] of enumerate(projenResolve(job.steps) ?? [])) {
|
|
35
35
|
if (step.run) {
|
|
36
|
-
// Check for
|
|
37
|
-
|
|
36
|
+
// Check for a number of known dangerous expressions that are attacker controlled, and some more that our internal scanning
|
|
37
|
+
// tools will yell at us for.
|
|
38
|
+
//
|
|
39
|
+
const findings = projenResolve(step.run).matchAll(/\$\{\{([^}]*github\.(repository|base_ref|head_ref|ref|ref_name|action_r|event\.pull_request|event\.issue)[^}]*)\}\}/g);
|
|
38
40
|
for (const finding of findings) {
|
|
39
41
|
violations.push({
|
|
40
42
|
workflowName: workflow.name,
|
|
@@ -62,4 +64,4 @@ function enumerate(xs) {
|
|
|
62
64
|
function projenResolve(x) {
|
|
63
65
|
return typeof x === 'function' ? x() : x;
|
|
64
66
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stZ2hhLWV4cHJlc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NoZWNrLWdoYS1leHByZXNzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsbUNBQTJDO0FBRzNDOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGtCQUFTOztJQUNoRCxZQUFZLE9BQW1CO1FBQzdCLEtBQUssQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sY0FBYztRQUNuQixNQUFNLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBQ25DLEtBQUssTUFBTSxRQUFRLElBQUksZUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN2RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQztnQkFDZCxrSkFBa0o7Z0JBQ2xKLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxTQUFTLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQU0sQ0FBQyxDQUFDLFVBQVcsRUFBRSxDQUFDO2FBQzNHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUErQixFQUFFLFVBQXVCO1FBQy9FLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQzFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNiLDJIQUEySDt3QkFDM0gsNkJBQTZCO3dCQUM3QixFQUFFO3dCQUNGLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLHNIQUFzSCxDQUFDLENBQUM7d0JBRTFLLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7NEJBQy9CLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0NBQ2QsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dDQUMzQixPQUFPO2dDQUNQLFNBQVM7Z0NBQ1QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7NkJBQzlCLENBQUMsQ0FBQzt3QkFDTCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs7QUF6Q0gsa0RBMENDO0FBRUQsU0FBUyxLQUFLLENBQUMsQ0FBdUQ7SUFDcEUsT0FBUSxDQUFtQixDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDbEQsQ0FBQztBQVNELFNBQVMsU0FBUyxDQUFJLEVBQU87SUFDM0IsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGFBQWEsQ0FBSSxDQUFJO0lBQzVCLE9BQU8sT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IENvbXBvbmVudCwgZ2l0aHViIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB0eXBlIHsgd29ya2Zsb3dzIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWInO1xuXG4vKipcbiAqIENoZWNrIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cyBmb3IgdGhlIHVzZSBvZiBkYW5nZXJvdXMgZXhwcmVzc2lvbnMgZGlyZWN0bHkgaW50ZXJwb2xhdGVkIGluIHNoZWxsIHN0ZXBzLlxuICpcbiAqIFNvbWUgb2YgdGhlc2UgY2FuIGJlIHVzZWQgdG8gcGVyZm9ybSBjb21tYW5kIGluamVjdGlvbiBhdHRhY2tzLiBXZSBibG9jayBhbGwgb2YgdGhlbSB0byBiZSBvdmVybHkgc2FmZSxcbiAqIGV2ZW4gdGhlIG9uZXMgdGhhdCBhcmUgbm90IGRhbmdlcm91cy5cbiAqXG4gKiBBdXRvbWF0aWNhbGx5IGFkZGVkIHRvIGFsbCBvZiBvdXIgcHJvamVjdCB0eXBlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIENoZWNrR2hhRXhwcmVzc2lvbnMgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBJQ29uc3RydWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ2doYS12YXJpYWJsZS1jaGVja2VyJyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdFN5bnRoZXNpemUoKSB7XG4gICAgY29uc3QgdmlvbGF0aW9uczogVmlvbGF0aW9uW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHdvcmtmbG93IG9mIGdpdGh1Yi5HaXRIdWIub2YodGhpcy5wcm9qZWN0KT8ud29ya2Zsb3dzID8/IFtdKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlV29ya2Zsb3cod29ya2Zsb3csIHZpb2xhdGlvbnMpO1xuICAgIH1cblxuICAgIGlmICh2aW9sYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihbXG4gICAgICAgICdGb3VuZCBkYW5nZXJvdXMgZXhwcmVzc2lvbnMgaW4gd29ya2Zsb3cgc2hlbGwgc3RlcHMuIFB1dCB0aGVzZSBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHJlZmVyZW5jZSB0aGVtIGluc3RlYWQuIERPIE5PVCBGT1JHRVQgVE8gUVVPVEUgVEhFTSEnLFxuICAgICAgICAuLi52aW9sYXRpb25zLm1hcCgodikgPT4gYC0gd2YgJHt2LndvcmtmbG93TmFtZX06IGpvYiAke3Yuam9iTmFtZX0uJHt2LnN0ZXBJbmRleCArIDF9OiAkeyB2LmV4cHJlc3Npb24gfWApLFxuICAgICAgXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVdvcmtmbG93KHdvcmtmbG93OiBnaXRodWIuR2l0aHViV29ya2Zsb3csIHZpb2xhdGlvbnM6IFZpb2xhdGlvbltdKSB7XG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iXSBvZiBPYmplY3QuZW50cmllcyh3b3JrZmxvdy5qb2JzKSkge1xuICAgICAgaWYgKGlzSm9iKGpvYikpIHtcbiAgICAgICAgZm9yIChjb25zdCBbc3RlcEluZGV4LCBzdGVwXSBvZiBlbnVtZXJhdGUocHJvamVuUmVzb2x2ZShqb2Iuc3RlcHMpID8/IFtdKSkge1xuICAgICAgICAgIGlmIChzdGVwLnJ1bikge1xuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgbnVtYmVyIG9mIGtub3duIGRhbmdlcm91cyBleHByZXNzaW9ucyB0aGF0IGFyZSBhdHRhY2tlciBjb250cm9sbGVkLCBhbmQgc29tZSBtb3JlIHRoYXQgb3VyIGludGVybmFsIHNjYW5uaW5nXG4gICAgICAgICAgICAvLyB0b29scyB3aWxsIHllbGwgYXQgdXMgZm9yLlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIGNvbnN0IGZpbmRpbmdzID0gcHJvamVuUmVzb2x2ZShzdGVwLnJ1bikubWF0Y2hBbGwoL1xcJFxce1xceyhbXn1dKmdpdGh1YlxcLihyZXBvc2l0b3J5fGJhc2VfcmVmfGhlYWRfcmVmfHJlZnxyZWZfbmFtZXxhY3Rpb25fcnxldmVudFxcLnB1bGxfcmVxdWVzdHxldmVudFxcLmlzc3VlKVtefV0qKVxcfVxcfS9nKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaW5kaW5nIG9mIGZpbmRpbmdzKSB7XG4gICAgICAgICAgICAgIHZpb2xhdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgd29ya2Zsb3dOYW1lOiB3b3JrZmxvdy5uYW1lLFxuICAgICAgICAgICAgICAgIGpvYk5hbWUsXG4gICAgICAgICAgICAgICAgc3RlcEluZGV4LFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGZpbmRpbmdbMV0udHJpbSgpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNKb2IoeDogd29ya2Zsb3dzLkpvYiB8IHdvcmtmbG93cy5Kb2JDYWxsaW5nUmV1c2FibGVXb3JrZmxvdyk6IHggaXMgd29ya2Zsb3dzLkpvYiB7XG4gIHJldHVybiAoeCBhcyB3b3JrZmxvd3MuSm9iKS5zdGVwcyAhPT0gdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgVmlvbGF0aW9uIHtcbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGpvYk5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RlcEluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IGV4cHJlc3Npb246IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZW51bWVyYXRlPEE+KHhzOiBBW10pOiBbbnVtYmVyLCBBXVtdIHtcbiAgcmV0dXJuIHhzLm1hcCgoeCwgaSkgPT4gW2ksIHhdKTtcbn1cblxuLyoqXG4gKiBBbnkgcHJvamVuIHZhbHVlIGNhbiBiZSBhIGZ1bmN0aW9uLCByZXNvbHZlIGl0IGlmIG5lY2Vzc2FyeVxuICovXG5mdW5jdGlvbiBwcm9qZW5SZXNvbHZlPEE+KHg6IEEpOiBBIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnZnVuY3Rpb24nID8gKHggYXMgYW55KSgpIDogeDtcbn0iXX0=
|
package/lib/common-options.js
CHANGED
|
@@ -56,7 +56,7 @@ function withCommonOptionsDefaults(options) {
|
|
|
56
56
|
tenancy,
|
|
57
57
|
autoApproveOptions,
|
|
58
58
|
autoApproveUpgrades: options.autoApproveUpgrades ?? true,
|
|
59
|
-
depsUpgrade: !upgradeRuntimeDepsAsFix,
|
|
59
|
+
depsUpgrade: options.depsUpgrade ?? !upgradeRuntimeDepsAsFix,
|
|
60
60
|
upgradeRuntimeDepsAsFix,
|
|
61
61
|
repository,
|
|
62
62
|
upgradeCdklabsProjenProjectTypes: options.upgradeCdklabsProjenProjectTypes ?? true,
|
|
@@ -135,4 +135,4 @@ function automationUserForOrg(tenancy) {
|
|
|
135
135
|
return 'cdklabs-automation';
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29tbW9uLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUJBLDhEQXlEQztBQUVELDhEQXFFQztBQXpKRCxtQ0FBd0U7QUFDeEUsMENBQTRDO0FBRTVDLG1FQUE4RDtBQUM5RCx1Q0FBb0M7QUFDcEMscURBQWtEO0FBQ2xELGlHQUEwRjtBQUUxRixJQUFZLFVBR1g7QUFIRCxXQUFZLFVBQVU7SUFDcEIsaUNBQW1CLENBQUE7SUFDbkIseUJBQVcsQ0FBQTtBQUNiLENBQUMsRUFIVyxVQUFVLDBCQUFWLFVBQVUsUUFHckI7QUFjRCxTQUFnQix5QkFBeUIsQ0FBMkIsT0FBVTtJQUM1RSxnREFBZ0Q7SUFDaEQsSUFBSSxPQUFPLENBQUMsY0FBYyxLQUFLLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEUsT0FBTyxHQUFHO1lBQ1IsR0FBRyxPQUFPO1lBQ1YsZ0JBQWdCLEVBQUU7Z0JBQ2hCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQjtnQkFDM0IsYUFBYSxFQUFFO29CQUNiLFVBQVUsRUFBRSxtQkFBVSxDQUFDLGNBQWMsQ0FBQyxZQUFZO29CQUNsRCxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhO2lCQUMzQzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztJQUMxQyxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxTQUFTLENBQUM7SUFDakUsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLElBQUk7UUFDdkQsaUJBQWlCLEVBQUUsZUFBTSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLENBQUM7S0FDdkcsQ0FBQztJQUNGLE1BQU0s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LG1CQUFtQixDQUFDLE9BQU8sRUFBRTtZQUMxQyxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLEtBQUssRUFBRSxDQUFDLHVCQUFjLENBQUMsS0FBSyxFQUFFLHVCQUFjLENBQUMsTUFBTSxFQUFFLHVCQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3pFLE9BQU87WUFDUCxjQUFjLEVBQUUsT0FBTztZQUN2QixRQUFRO1lBQ1IsZ0JBQWdCLEVBQUUsMEJBQTBCO1lBQzVDLHlGQUF5RjtZQUN6RixlQUFlLEVBQUUsZUFBZSxDQUFDLFlBQVksQ0FBQztTQUMvQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDeEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLDhCQUE4QixDQUFDLEVBQUUsQ0FBQztRQUMvRSxPQUFPLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDckQsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLE9BQW1CO0lBQy9DLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxVQUFVLENBQUMsR0FBRztZQUNqQixPQUFPLG9CQUFvQixDQUFDO1FBQzlCLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUN4QjtZQUNFLE9BQU8sb0JBQW9CLENBQUM7SUFDaEMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSwgZ2l0aHViLCBqYXZhc2NyaXB0LCB0eXBlc2NyaXB0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gJ3Byb2plbi9saWIvdXRpbCc7XG5pbXBvcnQgeyBDZGtDb21tb25PcHRpb25zIH0gZnJvbSAnLi9jZGstY29tbW9uLW9wdGlvbnMnO1xuaW1wb3J0IHsgQ2hlY2tHaGFFeHByZXNzaW9ucyB9IGZyb20gJy4vY2hlY2stZ2hhLWV4cHJlc3Npb25zJztcbmltcG9ydCB7IFByaXZhdGUgfSBmcm9tICcuL3ByaXZhdGUnO1xuaW1wb3J0IHsgUmV0cnlBdXRvTWVyZ2UgfSBmcm9tICcuL3JldHJ5YXV0b21lcmdlJztcbmltcG9ydCB7IFVwZ3JhZGVDZGtsYWJzUHJvamVuUHJvamVjdFR5cGVzIH0gZnJvbSAnLi91cGdyYWRlLWNka2xhYnMtcHJvamVuLXByb2plY3QtdHlwZXMnO1xuXG5leHBvcnQgZW51bSBPcmdUZW5hbmN5IHtcbiAgQ0RLTEFCUyA9ICdjZGtsYWJzJyxcbiAgQVdTID0gJ2F3cycsXG59XG5cbnR5cGUgUHJvamVjdE9wdGlvbnMgPSBDZGtDb21tb25PcHRpb25zICYgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM7XG50eXBlIENvbmZpZ3VyZWRUeXBlU2NyaXB0T3B0aW9ucyA9IFBpY2s8dHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsXG58ICdnaXRodWJPcHRpb25zJ1xufCAnbnBtQWNjZXNzJ1xufCAnYXV0b0FwcHJvdmVPcHRpb25zJ1xufCAnYXV0b0FwcHJvdmVVcGdyYWRlcydcbnwgJ2RlcHNVcGdyYWRlJ1xufCAncmVwb3NpdG9yeSdcbnwgJ3dvcmtmbG93Tm9kZVZlcnNpb24nXG4+O1xudHlwZSBDb25maWd1cmVkQ29tbW9uT3B0aW9ucyA9IFJlcXVpcmVkPENka0NvbW1vbk9wdGlvbnMgJkNvbmZpZ3VyZWRUeXBlU2NyaXB0T3B0aW9ucz47XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ29tbW9uT3B0aW9uc0RlZmF1bHRzPFQgZXh0ZW5kcyBQcm9qZWN0T3B0aW9ucz4ob3B0aW9uczogVCk6IFQgJiBDb25maWd1cmVkQ29tbW9uT3B0aW9ucyB7XG4gIC8vIERlZmF1bHQgdG8gbm9kZV9tb2R1bGVzIGxpbmtlciBmb3IgWWFybiBCZXJyeVxuICBpZiAob3B0aW9ucy5wYWNrYWdlTWFuYWdlciA9PT0gamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuWUFSTl9CRVJSWSkge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgeWFybkJlcnJ5T3B0aW9uczoge1xuICAgICAgICAuLi5vcHRpb25zLnlhcm5CZXJyeU9wdGlvbnMsXG4gICAgICAgIHlhcm5SY09wdGlvbnM6IHtcbiAgICAgICAgICBub2RlTGlua2VyOiBqYXZhc2NyaXB0Lllhcm5Ob2RlTGlua2VyLk5PREVfTU9EVUxFUyxcbiAgICAgICAgICAuLi5vcHRpb25zLnlhcm5CZXJyeU9wdGlvbnM/Lnlhcm5SY09wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdCBpc1ByaXZhdGUgPSBvcHRpb25zLnByaXZhdGUgPz8gdHJ1ZTtcbiAgY29uc3QgZW5hYmxlUFJBdXRvTWVyZ2UgPSBvcHRpb25zLmVuYWJsZVBSQXV0b01lcmdlID8/IGlzUHJpdmF0ZTtcbiAgY29uc3QgZ2hBdXRvTWVyZ2VPcHRpb25zID0gb3B0aW9ucy5naEF1dG9NZXJnZU9wdGlvbnMgPz8ge1xuICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oeyBzZWNyZXQ6ICdQUk9KRU5fR0lUSFVCX1RPS0VOJyB9KSxcbiAgfTtcbiAgY29uc3QgZ2l0aHViT3B0aW9uczogZ2l0aHViLkdpdEh1Yk9wdGlvbnMgPSB7XG4gICAgbWVyZ2lmeTogIWVuYWJsZVBSQXV0b01lcmdlLFxuICAgIGRlcGVuZGVuY3lSZXZpZXc6IHRydWUsXG4gIH07XG4gIGNvbnN0IG5wbUFjY2VzcyA9IG9wdGlvbnMubnBtQWNjZXNzID8/IChpc1ByaXZhdGUgPyBqYXZhc2NyaXB0Lk5wbUFjY2Vzcy5SRVNUUklDVEVEIDogamF2YXNjcmlwdC5OcG1BY2Nlc3MuUFVCTElDKTtcbiAgY29uc3QgdGVuYW5jeSA9IG9wdGlvbnMudGVuYW5jeSA/PyAob3B0aW9ucy5uYW1lLnN0YXJ0c1dpdGgoJ0Bhd3MtY2RrLycpID8gT3JnVGVuYW5jeS5BV1MgOiBPcmdUZW5hbmN5LkNES0xBQlMpO1xuICBjb25zdCBzaG9ydG5hbWUgPSAob3B0aW9ucy5uYW1lLnN0YXJ0c1dpdGgoJ0AnKSAmJiBvcHRpb25zLm5hbWUuc3BsaXQoJy8nKVsxXSkgfHwgb3B0aW9ucy5uYW1lO1xuICBjb25zdCByZXBvc2l0b3J5ID0gb3B0aW9ucy5yZXBvc2l0b3J5ID8/IGBodHRwczovL2dpdGh1Yi5jb20vJHt0ZW5hbmN5fS8ke3Nob3J0bmFtZX0uZ2l0YDtcbiAgY29uc3QgYXV0b0FwcHJvdmVPcHRpb25zID0ge1xuICAgIGFsbG93ZWRVc2VybmFtZXM6IFthdXRvbWF0aW9uVXNlckZvck9yZyh0ZW5hbmN5KSwgJ2RlcGVuZGFib3RbYm90XSddLFxuICAgIHNlY3JldDogJ0dJVEhVQl9UT0tFTicsXG4gIH07XG4gIGNvbnN0IHVwZ3JhZGVSdW50aW1lRGVwc0FzRml4ID0gb3B0aW9ucy51cGdyYWRlUnVudGltZURlcHNBc0ZpeCA/PyB0cnVlO1xuXG4gIGNvbnN0IGNvbW1vbjogQ29uZmlndXJlZENvbW1vbk9wdGlvbnMgPSB7XG4gICAgcHJpdmF0ZTogaXNQcml2YXRlLFxuICAgIGVuYWJsZVBSQXV0b01lcmdlLFxuICAgIGdoQXV0b01lcmdlT3B0aW9ucyxcbiAgICBnaXRodWJPcHRpb25zLFxuICAgIHNldE5vZGVFbmdpbmVWZXJzaW9uOiBvcHRpb25zLnNldE5vZGVFbmdpbmVWZXJzaW9uID8/IHRydWUsXG4gICAgbnBtQWNjZXNzLFxuICAgIHRlbmFuY3ksXG4gICAgYXV0b0FwcHJvdmVPcHRpb25zLFxuICAgIGF1dG9BcHByb3ZlVXBncmFkZXM6IG9wdGlvbnMuYXV0b0FwcHJvdmVVcGdyYWRlcyA/PyB0cnVlLFxuICAgIGRlcHNVcGdyYWRlOiAhdXBncmFkZVJ1bnRpbWVEZXBzQXNGaXgsXG4gICAgdXBncmFkZVJ1bnRpbWVEZXBzQXNGaXgsXG4gICAgcmVwb3NpdG9yeSxcbiAgICB1cGdyYWRlQ2RrbGFic1Byb2plblByb2plY3RUeXBlczpcbiAgICAgIG9wdGlvbnMudXBncmFkZUNka2xhYnNQcm9qZW5Qcm9qZWN0VHlwZXMgPz8gdHJ1ZSxcblxuICAgIC8vIERldmlhdGlvbiBmcm9tIHVwc3RyZWFtIHByb2plbjogdXBzdHJlYW0gcHJvamVuIGRlZmF1bHRzIHRvIG1pbk5vZGVWZXJzaW9uLCBidXQgd2UgaGF2ZSB0b28gbWFueSB3b3JrZmxvd3NcbiAgICAvLyB0aGF0IHVzZSB0b29scyB0aGF0IHdhbnQgYSByZWNlbnQgTm9kZSB2ZXJzaW9uLCBzbyBkZWZhdWx0IHRvIGEgcmVhc29uYWJsZSBmbG9hdGluZyB2ZXJzaW9uLlxuICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IG9wdGlvbnMud29ya2Zsb3dOb2RlVmVyc2lvbiA/PyAnbHRzLyonLFxuICAgIGNoZWNrR2hhRXhwcmVzc2lvbnM6IG9wdGlvbnMuY2hlY2tHaGFFeHByZXNzaW9ucyA/PyB0cnVlLFxuICB9O1xuXG4gIHJldHVybiBkZWVwTWVyZ2UoW3t9LCBvcHRpb25zLCBjb21tb25dKSBhcyBUICYgQ29uZmlndXJlZENvbW1vbk9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVDb21tb25Db21wb25lbnRzKHByb2plY3Q6IHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3QsIG9wdHM6IENka0NvbW1vbk9wdGlvbnMgJiBQaWNrPGphdmFzY3JpcHQuTm9kZVByb2plY3RPcHRpb25zLCAnYXV0b0FwcHJvdmVVcGdyYWRlcycgfCAnYXV0b0FwcHJvdmVPcHRpb25zJyB8ICdkZXBzVXBncmFkZU9wdGlvbnMnPikge1xuICBuZXcgUmV0cnlBdXRvTWVyZ2UocHJvamVjdCk7XG5cbiAgaWYgKG9wdHMuY2hlY2tHaGFFeHByZXNzaW9ucyA/PyB0cnVlKSB7XG4gICAgbmV3IENoZWNrR2hhRXhwcmVzc2lvbnMocHJvamVjdCk7XG4gIH1cblxuICBpZiAob3B0cy5wcml2YXRlKSB7XG4gICAgbmV3IFByaXZhdGUocHJvamVjdCk7XG4gIH1cblxuICBpZiAob3B0cy5lbmFibGVQUkF1dG9NZXJnZSkge1xuICAgIG5ldyBnaXRodWIuTWVyZ2VRdWV1ZShwcm9qZWN0LCB7XG4gICAgICBhdXRvUXVldWVPcHRpb25zOiBvcHRzLmdoQXV0b01lcmdlT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRzLnVwZ3JhZGVDZGtsYWJzUHJvamVuUHJvamVjdFR5cGVzKSB7XG4gICAgbmV3IFVwZ3JhZGVDZGtsYWJzUHJvamVuUHJvamVjdFR5cGVzKHByb2plY3QsIG9wdHMuZGVwc1VwZ3JhZGVPcHRpb25zKTtcbiAgfVxuXG4gIGlmIChvcHRzLnVwZ3JhZGVSdW50aW1lRGVwc0FzRml4KSB7XG4gICAgY29uc3QgZXhjbHVkZSA9IG9wdHMudXBncmFkZUNka2xhYnNQcm9qZW5Qcm9qZWN0VHlwZXMgPyBVcGdyYWRlQ2RrbGFic1Byb2plblByb2plY3RUeXBlcy5kZXBzIDogW107XG4gICAgY29uc3QgbGFiZWxzID0gb3B0cy5hdXRvQXBwcm92ZVVwZ3JhZGVzID8gW29wdHMuYXV0b0FwcHJvdmVPcHRpb25zPy5sYWJlbCA/PyAnYXV0by1hcHByb3ZlJ10gOiBbXTtcblxuICAgIC8vIERlZmF1bHQgY29vbGRvd24gb2YgMyBkYXlzIGZvciBub24teWFybl9jbGFzc2ljIHBhY2thZ2UgbWFuYWdlcnNcbiAgICBjb25zdCBjb29sZG93biA9IHByb2plY3QucGFja2FnZS5wYWNrYWdlTWFuYWdlciAhPT0gamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuWUFSTl9DTEFTU0lDID8gMyA6IHVuZGVmaW5lZDtcblxuICAgIC8vIEdldCBicmFuY2ggY29uZmlndXJhdGlvbiBmcm9tIGRlcHNVcGdyYWRlT3B0aW9ucyBpZiBhdmFpbGFibGVcbiAgICBjb25zdCB3b3JrZmxvd09wdGlvbnMgPSAoY3Jvbjogc3RyaW5nKSA9PiAoe1xuICAgICAgbGFiZWxzLFxuICAgICAgc2NoZWR1bGU6IGphdmFzY3JpcHQuVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlLmV4cHJlc3Npb25zKFtjcm9uXSksXG4gICAgICAuLi4ob3B0cy5kZXBzVXBncmFkZU9wdGlvbnM/LndvcmtmbG93T3B0aW9ucyA/PyB7fSksXG4gICAgfSk7XG5cbiAgICBuZXcgamF2YXNjcmlwdC5VcGdyYWRlRGVwZW5kZW5jaWVzKHByb2plY3QsIHtcbiAgICAgIHRhc2tOYW1lOiAndXBncmFkZScsXG4gICAgICBjb29sZG93bixcbiAgICAgIC8vIE5PVEU6IHdlIGV4cGxpY2l0bHkgZG8gTk9UIHVwZ3JhZGUgUEVFUiBkZXBlbmRlbmNpZXMuIFdlIHdhbnQgdGhlIHdpZGVzdCByYW5nZSBvZiBjb21wYXRpYmlsaXR5IHBvc3NpYmxlLFxuICAgICAgLy8gYW5kIGJ5IGJ1bXBpbmcgcGVlciBkZXBlbmRlbmNpZXMgd2UgZm9yY2UgdGhlIGN1c3RvbWVyIHRvIGFsc28gdW5uZWNlc3NhcmlseSB1cGdyYWRlLCB3aGljaCB0aGV5IG1heSBub3Qgd2FudFxuICAgICAgLy8gdG8gZG8uIE5ldmVyIG1pbmQgdGhhdCBwZWVyRGVwZW5kZW5jaWVzIGFyZSB1c3VhbGx5IGFsc28gZGV2RGVwZW5kZW5jaWVzLCBzbyBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gdXBncmFkZVxuICAgICAgLy8gdGhlbSB3aXRob3V0IGFsc28gdXBncmFkaW5nIGRldkRlcGVuZGVuY2llcy5cbiAgICAgIHR5cGVzOiBbRGVwZW5kZW5jeVR5cGUuUlVOVElNRSwgRGVwZW5kZW5jeVR5cGUuQlVORExFRF0sXG4gICAgICBleGNsdWRlLFxuICAgICAgc2VtYW50aWNDb21taXQ6ICdmaXgnLFxuICAgICAgLy8gUnVuIGF0IDE4OjAwWiBldmVyeSBNb25kYXlcbiAgICAgIHdvcmtmbG93T3B0aW9uczogd29ya2Zsb3dPcHRpb25zKCcwIDE4ICogKiAxJyksXG4gICAgfSk7XG5cbiAgICBuZXcgamF2YXNjcmlwdC5VcGdyYWRlRGVwZW5kZW5jaWVzKHByb2plY3QsIHtcbiAgICAgIHRhc2tOYW1lOiAndXBncmFkZS1kZXYtZGVwcycsXG4gICAgICB0eXBlczogW0RlcGVuZGVuY3lUeXBlLkJVSUxELCBEZXBlbmRlbmN5VHlwZS5ERVZFTlYsIERlcGVuZGVuY3lUeXBlLlRFU1RdLFxuICAgICAgZXhjbHVkZSxcbiAgICAgIHNlbWFudGljQ29tbWl0OiAnY2hvcmUnLFxuICAgICAgY29vbGRvd24sXG4gICAgICBwdWxsUmVxdWVzdFRpdGxlOiAndXBncmFkZSBkZXYgZGVwZW5kZW5jaWVzJyxcbiAgICAgIC8vIFJ1biBhdCAyMjowMFogZXZlcnkgTW9uZGF5LCB0aGlzIGlzIGRlbGliZXJhdGVseSBhZnRlciBwcm9kIHVwZGF0ZXMgdG8gYXZvaWQgY29uZmxpY3RzXG4gICAgICB3b3JrZmxvd09wdGlvbnM6IHdvcmtmbG93T3B0aW9ucygnMCAyMiAqICogMScpLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKG9wdHMuc2V0Tm9kZUVuZ2luZVZlcnNpb24gPT09IGZhbHNlKSB7XG4gICAgcHJvamVjdC5wYWNrYWdlLmZpbGUuYWRkT3ZlcnJpZGUoJ2VuZ2luZXMubm9kZScsIHVuZGVmaW5lZCk7XG4gIH1cblxuICAvLyBJZiBjZGtsYWJzLXByb2plbi1wcm9qZWN0LXR5cGVzIGlzIG5vdCBhZGRlZCBleHBsaWNpdGx5LCBhZGQgaXQgbm93XG4gIGlmICghcHJvamVjdC5kZXBzLmFsbC5zb21lKGRlcCA9PiBkZXAubmFtZSA9PT0gJ2Nka2xhYnMtcHJvamVuLXByb2plY3QtdHlwZXMnKSkge1xuICAgIHByb2plY3QuYWRkRGV2RGVwcygnY2RrbGFicy1wcm9qZW4tcHJvamVjdC10eXBlcycpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGF1dG9tYXRpb25Vc2VyRm9yT3JnKHRlbmFuY3k6IE9yZ1RlbmFuY3kpIHtcbiAgc3dpdGNoICh0ZW5hbmN5KSB7XG4gICAgY2FzZSBPcmdUZW5hbmN5LkFXUzpcbiAgICAgIHJldHVybiAnYXdzLWNkay1hdXRvbWF0aW9uJztcbiAgICBjYXNlIE9yZ1RlbmFuY3kuQ0RLTEFCUzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdjZGtsYWJzLWF1dG9tYXRpb24nO1xuICB9XG59XG4iXX0=
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29tbW9uLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUJBLDhEQXlEQztBQUVELDhEQXFFQztBQXpKRCxtQ0FBd0U7QUFDeEUsMENBQTRDO0FBRTVDLG1FQUE4RDtBQUM5RCx1Q0FBb0M7QUFDcEMscURBQWtEO0FBQ2xELGlHQUEwRjtBQUUxRixJQUFZLFVBR1g7QUFIRCxXQUFZLFVBQVU7SUFDcEIsaUNBQW1CLENBQUE7SUFDbkIseUJBQVcsQ0FBQTtBQUNiLENBQUMsRUFIVyxVQUFVLDBCQUFWLFVBQVUsUUFHckI7QUFjRCxTQUFnQix5QkFBeUIsQ0FBMkIsT0FBVTtJQUM1RSxnREFBZ0Q7SUFDaEQsSUFBSSxPQUFPLENBQUMsY0FBYyxLQUFLLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEUsT0FBTyxHQUFHO1lBQ1IsR0FBRyxPQUFPO1lBQ1YsZ0JBQWdCLEVBQUU7Z0JBQ2hCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQjtnQkFDM0IsYUFBYSxFQUFFO29CQUNiLFVBQVUsRUFBRSxtQkFBVSxDQUFDLGNBQWMsQ0FBQyxZQUFZO29CQUNsRCxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhO2lCQUMzQzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztJQUMxQyxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxTQUFTLENBQUM7SUFDakUsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLElBQUk7UUFDdkQsaUJBQWlCLEVBQUUsZUFBTSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLENBQUM7S0FDdkcsQ0FBQztJQUNGLE1BQU0s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UUFFSCxJQUFJLG1CQUFVLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFO1lBQzFDLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsS0FBSyxFQUFFLENBQUMsdUJBQWMsQ0FBQyxLQUFLLEVBQUUsdUJBQWMsQ0FBQyxNQUFNLEVBQUUsdUJBQWMsQ0FBQyxJQUFJLENBQUM7WUFDekUsT0FBTztZQUNQLGNBQWMsRUFBRSxPQUFPO1lBQ3ZCLFFBQVE7WUFDUixnQkFBZ0IsRUFBRSwwQkFBMEI7WUFDNUMseUZBQXlGO1lBQ3pGLGVBQWUsRUFBRSxlQUFlLENBQUMsWUFBWSxDQUFDO1NBQy9DLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUN4QyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssOEJBQThCLENBQUMsRUFBRSxDQUFDO1FBQy9FLE9BQU8sQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsT0FBbUI7SUFDL0MsUUFBUSxPQUFPLEVBQUUsQ0FBQztRQUNoQixLQUFLLFVBQVUsQ0FBQyxHQUFHO1lBQ2pCLE9BQU8sb0JBQW9CLENBQUM7UUFDOUIsS0FBSyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3hCO1lBQ0UsT0FBTyxvQkFBb0IsQ0FBQztJQUNoQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlcGVuZGVuY3lUeXBlLCBnaXRodWIsIGphdmFzY3JpcHQsIHR5cGVzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSAncHJvamVuL2xpYi91dGlsJztcbmltcG9ydCB7IENka0NvbW1vbk9wdGlvbnMgfSBmcm9tICcuL2Nkay1jb21tb24tb3B0aW9ucyc7XG5pbXBvcnQgeyBDaGVja0doYUV4cHJlc3Npb25zIH0gZnJvbSAnLi9jaGVjay1naGEtZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgUHJpdmF0ZSB9IGZyb20gJy4vcHJpdmF0ZSc7XG5pbXBvcnQgeyBSZXRyeUF1dG9NZXJnZSB9IGZyb20gJy4vcmV0cnlhdXRvbWVyZ2UnO1xuaW1wb3J0IHsgVXBncmFkZUNka2xhYnNQcm9qZW5Qcm9qZWN0VHlwZXMgfSBmcm9tICcuL3VwZ3JhZGUtY2RrbGFicy1wcm9qZW4tcHJvamVjdC10eXBlcyc7XG5cbmV4cG9ydCBlbnVtIE9yZ1RlbmFuY3kge1xuICBDREtMQUJTID0gJ2Nka2xhYnMnLFxuICBBV1MgPSAnYXdzJyxcbn1cblxudHlwZSBQcm9qZWN0T3B0aW9ucyA9IENka0NvbW1vbk9wdGlvbnMgJiB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucztcbnR5cGUgQ29uZmlndXJlZFR5cGVTY3JpcHRPcHRpb25zID0gUGljazx0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbnwgJ2dpdGh1Yk9wdGlvbnMnXG58ICducG1BY2Nlc3MnXG58ICdhdXRvQXBwcm92ZU9wdGlvbnMnXG58ICdhdXRvQXBwcm92ZVVwZ3JhZGVzJ1xufCAnZGVwc1VwZ3JhZGUnXG58ICdyZXBvc2l0b3J5J1xufCAnd29ya2Zsb3dOb2RlVmVyc2lvbidcbj47XG50eXBlIENvbmZpZ3VyZWRDb21tb25PcHRpb25zID0gUmVxdWlyZWQ8Q2RrQ29tbW9uT3B0aW9ucyAmQ29uZmlndXJlZFR5cGVTY3JpcHRPcHRpb25zPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDb21tb25PcHRpb25zRGVmYXVsdHM8VCBleHRlbmRzIFByb2plY3RPcHRpb25zPihvcHRpb25zOiBUKTogVCAmIENvbmZpZ3VyZWRDb21tb25PcHRpb25zIHtcbiAgLy8gRGVmYXVsdCB0byBub2RlX21vZHVsZXMgbGlua2VyIGZvciBZYXJuIEJlcnJ5XG4gIGlmIChvcHRpb25zLnBhY2thZ2VNYW5hZ2VyID09PSBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0JFUlJZKSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB5YXJuQmVycnlPcHRpb25zOiB7XG4gICAgICAgIC4uLm9wdGlvbnMueWFybkJlcnJ5T3B0aW9ucyxcbiAgICAgICAgeWFyblJjT3B0aW9uczoge1xuICAgICAgICAgIG5vZGVMaW5rZXI6IGphdmFzY3JpcHQuWWFybk5vZGVMaW5rZXIuTk9ERV9NT0RVTEVTLFxuICAgICAgICAgIC4uLm9wdGlvbnMueWFybkJlcnJ5T3B0aW9ucz8ueWFyblJjT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGlzUHJpdmF0ZSA9IG9wdGlvbnMucHJpdmF0ZSA/PyB0cnVlO1xuICBjb25zdCBlbmFibGVQUkF1dG9NZXJnZSA9IG9wdGlvbnMuZW5hYmxlUFJBdXRvTWVyZ2UgPz8gaXNQcml2YXRlO1xuICBjb25zdCBnaEF1dG9NZXJnZU9wdGlvbnMgPSBvcHRpb25zLmdoQXV0b01lcmdlT3B0aW9ucyA/PyB7XG4gICAgcHJvamVuQ3JlZGVudGlhbHM6IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscy5mcm9tUGVyc29uYWxBY2Nlc3NUb2tlbih7IHNlY3JldDogJ1BST0pFTl9HSVRIVUJfVE9LRU4nIH0pLFxuICB9O1xuICBjb25zdCBnaXRodWJPcHRpb25zOiBnaXRodWIuR2l0SHViT3B0aW9ucyA9IHtcbiAgICBtZXJnaWZ5OiAhZW5hYmxlUFJBdXRvTWVyZ2UsXG4gICAgZGVwZW5kZW5jeVJldmlldzogdHJ1ZSxcbiAgfTtcbiAgY29uc3QgbnBtQWNjZXNzID0gb3B0aW9ucy5ucG1BY2Nlc3MgPz8gKGlzUHJpdmF0ZSA/IGphdmFzY3JpcHQuTnBtQWNjZXNzLlJFU1RSSUNURUQgOiBqYXZhc2NyaXB0Lk5wbUFjY2Vzcy5QVUJMSUMpO1xuICBjb25zdCB0ZW5hbmN5ID0gb3B0aW9ucy50ZW5hbmN5ID8/IChvcHRpb25zLm5hbWUuc3RhcnRzV2l0aCgnQGF3cy1jZGsvJykgPyBPcmdUZW5hbmN5LkFXUyA6IE9yZ1RlbmFuY3kuQ0RLTEFCUyk7XG4gIGNvbnN0IHNob3J0bmFtZSA9IChvcHRpb25zLm5hbWUuc3RhcnRzV2l0aCgnQCcpICYmIG9wdGlvbnMubmFtZS5zcGxpdCgnLycpWzFdKSB8fCBvcHRpb25zLm5hbWU7XG4gIGNvbnN0IHJlcG9zaXRvcnkgPSBvcHRpb25zLnJlcG9zaXRvcnkgPz8gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3RlbmFuY3l9LyR7c2hvcnRuYW1lfS5naXRgO1xuICBjb25zdCBhdXRvQXBwcm92ZU9wdGlvbnMgPSB7XG4gICAgYWxsb3dlZFVzZXJuYW1lczogW2F1dG9tYXRpb25Vc2VyRm9yT3JnKHRlbmFuY3kpLCAnZGVwZW5kYWJvdFtib3RdJ10sXG4gICAgc2VjcmV0OiAnR0lUSFVCX1RPS0VOJyxcbiAgfTtcbiAgY29uc3QgdXBncmFkZVJ1bnRpbWVEZXBzQXNGaXggPSBvcHRpb25zLnVwZ3JhZGVSdW50aW1lRGVwc0FzRml4ID8/IHRydWU7XG5cbiAgY29uc3QgY29tbW9uOiBDb25maWd1cmVkQ29tbW9uT3B0aW9ucyA9IHtcbiAgICBwcml2YXRlOiBpc1ByaXZhdGUsXG4gICAgZW5hYmxlUFJBdXRvTWVyZ2UsXG4gICAgZ2hBdXRvTWVyZ2VPcHRpb25zLFxuICAgIGdpdGh1Yk9wdGlvbnMsXG4gICAgc2V0Tm9kZUVuZ2luZVZlcnNpb246IG9wdGlvbnMuc2V0Tm9kZUVuZ2luZVZlcnNpb24gPz8gdHJ1ZSxcbiAgICBucG1BY2Nlc3MsXG4gICAgdGVuYW5jeSxcbiAgICBhdXRvQXBwcm92ZU9wdGlvbnMsXG4gICAgYXV0b0FwcHJvdmVVcGdyYWRlczogb3B0aW9ucy5hdXRvQXBwcm92ZVVwZ3JhZGVzID8/IHRydWUsXG4gICAgZGVwc1VwZ3JhZGU6IG9wdGlvbnMuZGVwc1VwZ3JhZGUgPz8gIXVwZ3JhZGVSdW50aW1lRGVwc0FzRml4LFxuICAgIHVwZ3JhZGVSdW50aW1lRGVwc0FzRml4LFxuICAgIHJlcG9zaXRvcnksXG4gICAgdXBncmFkZUNka2xhYnNQcm9qZW5Qcm9qZWN0VHlwZXM6XG4gICAgICBvcHRpb25zLnVwZ3JhZGVDZGtsYWJzUHJvamVuUHJvamVjdFR5cGVzID8/IHRydWUsXG5cbiAgICAvLyBEZXZpYXRpb24gZnJvbSB1cHN0cmVhbSBwcm9qZW46IHVwc3RyZWFtIHByb2plbiBkZWZhdWx0cyB0byBtaW5Ob2RlVmVyc2lvbiwgYnV0IHdlIGhhdmUgdG9vIG1hbnkgd29ya2Zsb3dzXG4gICAgLy8gdGhhdCB1c2UgdG9vbHMgdGhhdCB3YW50IGEgcmVjZW50IE5vZGUgdmVyc2lvbiwgc28gZGVmYXVsdCB0byBhIHJlYXNvbmFibGUgZmxvYXRpbmcgdmVyc2lvbi5cbiAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz8gJ2x0cy8qJyxcbiAgICBjaGVja0doYUV4cHJlc3Npb25zOiBvcHRpb25zLmNoZWNrR2hhRXhwcmVzc2lvbnMgPz8gdHJ1ZSxcbiAgfTtcblxuICByZXR1cm4gZGVlcE1lcmdlKFt7fSwgb3B0aW9ucywgY29tbW9uXSkgYXMgVCAmIENvbmZpZ3VyZWRDb21tb25PcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlQ29tbW9uQ29tcG9uZW50cyhwcm9qZWN0OiB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0LCBvcHRzOiBDZGtDb21tb25PcHRpb25zICYgUGljazxqYXZhc2NyaXB0Lk5vZGVQcm9qZWN0T3B0aW9ucywgJ2F1dG9BcHByb3ZlVXBncmFkZXMnIHwgJ2F1dG9BcHByb3ZlT3B0aW9ucycgfCAnZGVwc1VwZ3JhZGVPcHRpb25zJz4pIHtcbiAgbmV3IFJldHJ5QXV0b01lcmdlKHByb2plY3QpO1xuXG4gIGlmIChvcHRzLmNoZWNrR2hhRXhwcmVzc2lvbnMgPz8gdHJ1ZSkge1xuICAgIG5ldyBDaGVja0doYUV4cHJlc3Npb25zKHByb2plY3QpO1xuICB9XG5cbiAgaWYgKG9wdHMucHJpdmF0ZSkge1xuICAgIG5ldyBQcml2YXRlKHByb2plY3QpO1xuICB9XG5cbiAgaWYgKG9wdHMuZW5hYmxlUFJBdXRvTWVyZ2UpIHtcbiAgICBuZXcgZ2l0aHViLk1lcmdlUXVldWUocHJvamVjdCwge1xuICAgICAgYXV0b1F1ZXVlT3B0aW9uczogb3B0cy5naEF1dG9NZXJnZU9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBpZiAob3B0cy51cGdyYWRlQ2RrbGFic1Byb2plblByb2plY3RUeXBlcykge1xuICAgIG5ldyBVcGdyYWRlQ2RrbGFic1Byb2plblByb2plY3RUeXBlcyhwcm9qZWN0LCBvcHRzLmRlcHNVcGdyYWRlT3B0aW9ucyk7XG4gIH1cblxuICBpZiAob3B0cy51cGdyYWRlUnVudGltZURlcHNBc0ZpeCkge1xuICAgIGNvbnN0IGV4Y2x1ZGUgPSBvcHRzLnVwZ3JhZGVDZGtsYWJzUHJvamVuUHJvamVjdFR5cGVzID8gVXBncmFkZUNka2xhYnNQcm9qZW5Qcm9qZWN0VHlwZXMuZGVwcyA6IFtdO1xuICAgIGNvbnN0IGxhYmVscyA9IG9wdHMuYXV0b0FwcHJvdmVVcGdyYWRlcyA/IFtvcHRzLmF1dG9BcHByb3ZlT3B0aW9ucz8ubGFiZWwgPz8gJ2F1dG8tYXBwcm92ZSddIDogW107XG5cbiAgICAvLyBEZWZhdWx0IGNvb2xkb3duIG9mIDMgZGF5cyBmb3Igbm9uLXlhcm5fY2xhc3NpYyBwYWNrYWdlIG1hbmFnZXJzXG4gICAgY29uc3QgY29vbGRvd24gPSBwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgIT09IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQ0xBU1NJQyA/IDMgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBHZXQgYnJhbmNoIGNvbmZpZ3VyYXRpb24gZnJvbSBkZXBzVXBncmFkZU9wdGlvbnMgaWYgYXZhaWxhYmxlXG4gICAgY29uc3Qgd29ya2Zsb3dPcHRpb25zID0gKGNyb246IHN0cmluZykgPT4gKHtcbiAgICAgIGxhYmVscyxcbiAgICAgIHNjaGVkdWxlOiBqYXZhc2NyaXB0LlVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5leHByZXNzaW9ucyhbY3Jvbl0pLFxuICAgICAgLi4uKG9wdHMuZGVwc1VwZ3JhZGVPcHRpb25zPy53b3JrZmxvd09wdGlvbnMgPz8ge30pLFxuICAgIH0pO1xuXG4gICAgbmV3IGphdmFzY3JpcHQuVXBncmFkZURlcGVuZGVuY2llcyhwcm9qZWN0LCB7XG4gICAgICB0YXNrTmFtZTogJ3VwZ3JhZGUnLFxuICAgICAgY29vbGRvd24sXG4gICAgICAvLyBOT1RFOiB3ZSBleHBsaWNpdGx5IGRvIE5PVCB1cGdyYWRlIFBFRVIgZGVwZW5kZW5jaWVzLiBXZSB3YW50IHRoZSB3aWRlc3QgcmFuZ2Ugb2YgY29tcGF0aWJpbGl0eSBwb3NzaWJsZSxcbiAgICAgIC8vIGFuZCBieSBidW1waW5nIHBlZXIgZGVwZW5kZW5jaWVzIHdlIGZvcmNlIHRoZSBjdXN0b21lciB0byBhbHNvIHVubmVjZXNzYXJpbHkgdXBncmFkZSwgd2hpY2ggdGhleSBtYXkgbm90IHdhbnRcbiAgICAgIC8vIHRvIGRvLiBOZXZlciBtaW5kIHRoYXQgcGVlckRlcGVuZGVuY2llcyBhcmUgdXN1YWxseSBhbHNvIGRldkRlcGVuZGVuY2llcywgc28gaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHVwZ3JhZGVcbiAgICAgIC8vIHRoZW0gd2l0aG91dCBhbHNvIHVwZ3JhZGluZyBkZXZEZXBlbmRlbmNpZXMuXG4gICAgICB0eXBlczogW0RlcGVuZGVuY3lUeXBlLlJVTlRJTUUsIERlcGVuZGVuY3lUeXBlLkJVTkRMRURdLFxuICAgICAgZXhjbHVkZSxcbiAgICAgIHNlbWFudGljQ29tbWl0OiAnZml4JyxcbiAgICAgIC8vIFJ1biBhdCAxODowMFogZXZlcnkgTW9uZGF5XG4gICAgICB3b3JrZmxvd09wdGlvbnM6IHdvcmtmbG93T3B0aW9ucygnMCAxOCAqICogMScpLFxuICAgIH0pO1xuXG4gICAgbmV3IGphdmFzY3JpcHQuVXBncmFkZURlcGVuZGVuY2llcyhwcm9qZWN0LCB7XG4gICAgICB0YXNrTmFtZTogJ3VwZ3JhZGUtZGV2LWRlcHMnLFxuICAgICAgdHlwZXM6IFtEZXBlbmRlbmN5VHlwZS5CVUlMRCwgRGVwZW5kZW5jeVR5cGUuREVWRU5WLCBEZXBlbmRlbmN5VHlwZS5URVNUXSxcbiAgICAgIGV4Y2x1ZGUsXG4gICAgICBzZW1hbnRpY0NvbW1pdDogJ2Nob3JlJyxcbiAgICAgIGNvb2xkb3duLFxuICAgICAgcHVsbFJlcXVlc3RUaXRsZTogJ3VwZ3JhZGUgZGV2IGRlcGVuZGVuY2llcycsXG4gICAgICAvLyBSdW4gYXQgMjI6MDBaIGV2ZXJ5IE1vbmRheSwgdGhpcyBpcyBkZWxpYmVyYXRlbHkgYWZ0ZXIgcHJvZCB1cGRhdGVzIHRvIGF2b2lkIGNvbmZsaWN0c1xuICAgICAgd29ya2Zsb3dPcHRpb25zOiB3b3JrZmxvd09wdGlvbnMoJzAgMjIgKiAqIDEnKSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRzLnNldE5vZGVFbmdpbmVWZXJzaW9uID09PSBmYWxzZSkge1xuICAgIHByb2plY3QucGFja2FnZS5maWxlLmFkZE92ZXJyaWRlKCdlbmdpbmVzLm5vZGUnLCB1bmRlZmluZWQpO1xuICB9XG5cbiAgLy8gSWYgY2RrbGFicy1wcm9qZW4tcHJvamVjdC10eXBlcyBpcyBub3QgYWRkZWQgZXhwbGljaXRseSwgYWRkIGl0IG5vd1xuICBpZiAoIXByb2plY3QuZGVwcy5hbGwuc29tZShkZXAgPT4gZGVwLm5hbWUgPT09ICdjZGtsYWJzLXByb2plbi1wcm9qZWN0LXR5cGVzJykpIHtcbiAgICBwcm9qZWN0LmFkZERldkRlcHMoJ2Nka2xhYnMtcHJvamVuLXByb2plY3QtdHlwZXMnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhdXRvbWF0aW9uVXNlckZvck9yZyh0ZW5hbmN5OiBPcmdUZW5hbmN5KSB7XG4gIHN3aXRjaCAodGVuYW5jeSkge1xuICAgIGNhc2UgT3JnVGVuYW5jeS5BV1M6XG4gICAgICByZXR1cm4gJ2F3cy1jZGstYXV0b21hdGlvbic7XG4gICAgY2FzZSBPcmdUZW5hbmN5LkNES0xBQlM6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnY2RrbGFicy1hdXRvbWF0aW9uJztcbiAgfVxufVxuIl19
|
package/lib/jsii.js
CHANGED
|
@@ -10,7 +10,7 @@ const common_options_1 = require("./common-options");
|
|
|
10
10
|
* @pjid cdk-jsii-proj
|
|
11
11
|
*/
|
|
12
12
|
class CdkJsiiProject extends projen_1.cdk.JsiiProject {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdkJsiiProject", version: "0.6.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.CdkJsiiProject", version: "0.6.8" };
|
|
14
14
|
private;
|
|
15
15
|
constructor(options) {
|
|
16
16
|
const opts = (0, common_options_1.withCommonOptionsDefaults)({
|
package/lib/rosetta.js
CHANGED
|
@@ -10,7 +10,7 @@ const projen_1 = require("projen");
|
|
|
10
10
|
* ensure that rosetta will run successfully
|
|
11
11
|
*/
|
|
12
12
|
class Rosetta extends projen_1.Component {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.Rosetta", version: "0.6.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.Rosetta", version: "0.6.8" };
|
|
14
14
|
constructor(project, options = {}) {
|
|
15
15
|
super(project);
|
|
16
16
|
const strict = options.strict ?? true;
|
package/lib/yarn/constraints.js
CHANGED
|
@@ -5,7 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
5
5
|
const projen_1 = require("projen");
|
|
6
6
|
const DEV_DEP_TYPES = [projen_1.DependencyType.BUILD, projen_1.DependencyType.DEVENV, projen_1.DependencyType.TEST];
|
|
7
7
|
class Constraints extends projen_1.Component {
|
|
8
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.Constraints", version: "0.6.
|
|
8
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.Constraints", version: "0.6.8" };
|
|
9
9
|
packages;
|
|
10
10
|
constructor(project, options) {
|
|
11
11
|
super(project);
|
|
@@ -18,6 +18,9 @@ function main(argv, packageDirectory) {
|
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
const isReset = process.env.RESET_VERSIONS === 'true';
|
|
21
|
+
// Set to 'true' by the monorepo release task while it bumps and builds packages.
|
|
22
|
+
// Used to enforce the guard below only during a real release (not local dev/synth).
|
|
23
|
+
const isRelease = process.env.RELEASE === 'true';
|
|
21
24
|
const deps = Object.fromEntries(argv.map(x => x.split('=', 2)));
|
|
22
25
|
// The PJ file we are updating
|
|
23
26
|
const targetPjFile = `${packageDirectory ?? '.'}/package.json`;
|
|
@@ -28,6 +31,20 @@ function main(argv, packageDirectory) {
|
|
|
28
31
|
};
|
|
29
32
|
for (const [dep, depType] of Object.entries(deps)) {
|
|
30
33
|
const depVersion = dependencyInfo(dep, packageDirectory).version;
|
|
34
|
+
// A dependency that still resolves to the 0.0.0 placeholder was not versioned before this
|
|
35
|
+
// package gathered its dependency ranges: the dependency's bump task did not run (it was skipped
|
|
36
|
+
// or failed), so its package.json still holds the projen 0.0.0 placeholder. Writing a range off
|
|
37
|
+
// 0.0.0 publishes a broken '^0.0.0' (or '0.0.0'/'~0.0.0'/'>=0.0.0') dependency that npm resolves
|
|
38
|
+
// to the ancient 0.0.0 artifact. Fail loudly instead of publishing it. Only enforced for
|
|
39
|
+
// runtime/peer dependencies declared on this package, and only during a release, so local
|
|
40
|
+
// dev/synth and the reset (unbump) path are unaffected.
|
|
41
|
+
const isRuntimeOrPeerDep = Boolean(manifest.dependencies?.[dep]) || Boolean(manifest.peerDependencies?.[dep]);
|
|
42
|
+
if (isRelease && !isReset && isRuntimeOrPeerDep && depVersion === '0.0.0') {
|
|
43
|
+
throw new Error(`gather-versions: dependency '${dep}' of '${manifest.name}' resolved to the placeholder version 0.0.0. ` +
|
|
44
|
+
`Its bump task did not run before '${manifest.name}' gathered versions (skipped or failed), so publishing ` +
|
|
45
|
+
'now would ship a broken \'^0.0.0\' range. Re-run the release; if it recurs, check why the bump task for ' +
|
|
46
|
+
`'${dep}' was skipped (see its task condition).`);
|
|
47
|
+
}
|
|
31
48
|
const rangeVersion = versionForRange(depType, depVersion);
|
|
32
49
|
const dependencyClasses = [
|
|
33
50
|
['dependencies', rangeVersion],
|
|
@@ -117,4 +134,4 @@ function prefixFromRange(x) {
|
|
|
117
134
|
throw new Error(`Unknown range type: ${x}`);
|
|
118
135
|
}
|
|
119
136
|
}
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0aGVyLXZlcnNpb25zLmV4ZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi9nYXRoZXItdmVyc2lvbnMuZXhlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDBCQUVDO0FBRUQsb0JBNERDO0FBbEVELDJCQUFpRDtBQUVqRCxTQUFnQixPQUFPO0lBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsU0FBZ0IsSUFBSSxDQUFDLElBQWMsRUFBRSxnQkFBd0I7SUFDM0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztRQUN4RyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0dBQWtHLENBQUMsQ0FBQztRQUNsSCxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNyQixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLE1BQU0sQ0FBQztJQUV0RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQXFCLENBQUMsQ0FBQyxDQUFDO0lBRXBGLDhC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R0FBRyxDQUFDO1FBQ2IsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLE9BQU87WUFDVixPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssWUFBWTtZQUNmLE9BQU8sSUFBSSxDQUFDO1FBQ2Q7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2xpTWFpbigpIHtcbiAgbWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMSksIHByb2Nlc3MuY3dkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFpbihhcmd2OiBzdHJpbmdbXSwgcGFja2FnZURpcmVjdG9yeTogc3RyaW5nKSB7XG4gIGlmIChhcmd2LmluY2x1ZGVzKCctLWhlbHAnKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1VzYWdlOiBnYXRoZXItdmVyc2lvbnMgW1BLRz1UWVBFXSBbUEtHPVRZUEVdIFsuLi5dXFxuJyk7XG4gICAgY29uc29sZS5lcnJvcignUG9zaXRpb25hbHM6Jyk7XG4gICAgY29uc29sZS5lcnJvcignICBQS0dcXHRQYWNrYWdlIG5hbWUuJyk7XG4gICAgY29uc29sZS5lcnJvcignICBUWVBFXFx0YW55LW1pbm9yIHwgZnV0dXJlLW1pbm9yIHwgYW55LXBhdGNoIHwgZnV0dXJlLXBhdGNoIHwgZXhhY3QgfCBhbnktZnV0dXJlIHwgYW55Jyk7XG4gICAgY29uc29sZS5lcnJvcignJyk7XG4gICAgY29uc29sZS5lcnJvcignSWYgJFJFU0VUX1ZFUlNJT05TIGlzIFwidHJ1ZVwiLCBpZ25vcmUgdGhlIHZlcnNpb24gc3BlY2lmaWVyIGFuZCBqdXN0IHJlc2V0IGFsbCBwYWNrYWdlcyB0byBeMC4wLjAnKTtcbiAgICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBpc1Jlc2V0ID0gcHJvY2Vzcy5lbnYuUkVTRVRfVkVSU0lPTlMgPT09ICd0cnVlJztcblxuICBjb25zdCBkZXBzID0gT2JqZWN0LmZyb21FbnRyaWVzKGFyZ3YubWFwKHggPT4geC5zcGxpdCgnPScsIDIpIGFzIFtzdHJpbmcsIHN0cmluZ10pKTtcblxuICAvLyBUaGUgUEogZmlsZSB3ZSBhcmUgdXBkYXRpbmdcbiAgY29uc3QgdGFyZ2V0UGpGaWxlID0gYCR7cGFja2FnZURpcmVjdG9yeSA/PyAnLid9L3BhY2thZ2UuanNvbmA7XG5cbiAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyh0YXJnZXRQakZpbGUsICd1dGYtOCcpKTtcbiAgY29uc3QgY2hhbmdlUmVwb3J0OiBhbnkgPSB7XG4gICAgbmFtZTogbWFuaWZlc3QubmFtZSxcbiAgICB2ZXJzaW9uOiBtYW5pZmVzdC52ZXJzaW9uLFxuICB9O1xuXG4gIGZvciAoY29uc3QgW2RlcCwgZGVwVHlwZV0gb2YgT2JqZWN0LmVudHJpZXMoZGVwcykpIHtcbiAgICBjb25zdCBkZXBWZXJzaW9uID0gZGVwZW5kZW5jeUluZm8oZGVwLCBwYWNrYWdlRGlyZWN0b3J5KS52ZXJzaW9uO1xuICAgIGNvbnN0IHJhbmdlVmVyc2lvbiA9IHZlcnNpb25Gb3JSYW5nZShkZXBUeXBlLCBkZXBWZXJzaW9uKTtcblxuICAgIGNvbnN0IGRlcGVuZGVuY3lDbGFzc2VzID0gW1xuICAgICAgWydkZXBlbmRlbmNpZXMnLCByYW5nZVZlcnNpb25dLFxuICAgICAgWydwZWVyRGVwZW5kZW5jaWVzJywgcmFuZ2VWZXJzaW9uXSxcbiAgICAgIC8vIEl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQgd2UgZG8gZm9yIGRldkRlcGVuZGVuY2llcyAobWlnaHQgZXZlbiBkb1xuICAgICAgLy8gbm90aGluZyksIGJ1dCBpdCBmZWVscyBsaWtlIG5pY2UgZm9ybSB0byBzaG93IHRoZSBleGFjdCB2ZXJzaW9uIHdlIHVzZWRcbiAgICAgIC8vIHdoZW4gd2UgYnVpbHQgdGhpcyBwYWNrYWdlLlxuICAgICAgWydkZXZEZXBlbmRlbmNpZXMnLCBkZXBWZXJzaW9uXSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBbZGVwU2VjdGlvbiwgY29tcHV0ZWRWZXJzaW9uXSBvZiBkZXBlbmRlbmN5Q2xhc3Nlcykge1xuICAgICAgY29uc3QgYnVtcEZvcndhcmQgPSAhaXNSZXNldDtcbiAgICAgIGNvbnN0IHVwZGF0ZWRSYW5nZSA9IGJ1bXBGb3J3YXJkID8gY29tcHV0ZWRWZXJzaW9uIDogJ14wLjAuMCc7XG5cbiAgICAgIGlmIChtYW5pZmVzdFtkZXBTZWN0aW9uXT8uW2RlcF0pIHtcbiAgICAgICAgbWFuaWZlc3RbZGVwU2VjdGlvbl1bZGVwXSA9IHVwZGF0ZWRSYW5nZTtcblxuICAgICAgICAvLyBBbHNvIHVwZGF0ZSB0aGUgcmVwb3J0IHNvIHRoYXQgd2UgY2FuIHByaW50IHdoYXQgd2UgZGlkLlxuICAgICAgICAvLyBUaGUgYmVsb3cgc3ludGF4IHdvcmtzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBkZXBTZWN0aW9uIGFscmVhZHlcbiAgICAgICAgLy8gZXhpc3RzIG9yIG5vdCwgYW5kIG9ubHkgYWRkcyBkZXBTZWN0aW9uIGlmIHRoZXJlIGFyZSBjaGFuZ2VzIGluIGl0LlxuICAgICAgICBjaGFuZ2VSZXBvcnRbZGVwU2VjdGlvbl0gPSB7XG4gICAgICAgICAgLi4uY2hhbmdlUmVwb3J0W2RlcFNlY3Rpb25dLFxuICAgICAgICAgIFtkZXBdOiB1cGRhdGVkUmFuZ2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJpbnQgYSByZXBvcnQgb2Ygd2hhdCB3ZSBkaWRcbiAgY29uc29sZS5sb2coJ1VwZGF0ZWQgdmVyc2lvbnMnLCBKU09OLnN0cmluZ2lmeShjaGFuZ2VSZXBvcnQsIHVuZGVmaW5lZCwgMikpO1xuXG4gIHdyaXRlRmlsZVN5bmModGFyZ2V0UGpGaWxlLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdCwgbnVsbCwgMikgKyAnXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGRlcGVuZGVuY3lJbmZvKGRlcGVuZGVuY3k6IHN0cmluZywgc2VhcmNoRGlyZWN0b3J5OiBzdHJpbmcpOiBhbnkge1xuICAvLyBTZWFyY2ggbmVlZHMgdG8gYmUgdy5yLnQuIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgb3RoZXJ3aXNlIGl0IGlzIHcuci50LiB0aGUgY3VycmVudFxuICAvLyBmaWxlIGFuZCB0aGF0IGRvZXNuJ3Qgd29yayBpZiBgY2RrbGFicy1wcm9qZW4tcHJvamVjdC10eXBlc2AgaXMgbG9jYWxseSBzeW1saW5rZWQuXG5cbiAgLy8gVGhpcyB3aWxsIHRocm93IGlmIHRoZSByZXNvbHV0aW9uIGZhaWxzXG4gIGNvbnN0IHBqTG9jID0gcmVxdWlyZS5yZXNvbHZlKGAke2RlcGVuZGVuY3l9L3BhY2thZ2UuanNvbmAsIHsgcGF0aHM6IFtzZWFyY2hEaXJlY3RvcnldIH0pO1xuICByZXR1cm4gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGpMb2MsICd1dGYtOCcpKTtcbn1cblxuZnVuY3Rpb24gdmVyc2lvbkZvclJhbmdlKGRlcFR5cGU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nKSB7XG4gIGNvbnN0IHJ1bnRpbWVQcmVmaXggPSBwcmVmaXhGcm9tUmFuZ2UoZGVwVHlwZSk7XG5cbiAgc3dpdGNoIChkZXBUeXBlKSB7XG4gICAgY2FzZSAnZnV0dXJlLW1pbm9yJzpcbiAgICBjYXNlICdmdXR1cmUtcGF0Y2gnOlxuICAgIGNhc2UgJ2FueS1mdXR1cmUnOlxuICAgIGNhc2UgJ2V4YWN0JzpcbiAgICAgIHJldHVybiBydW50aW1lUHJlZml4ICsgdmVyc2lvbjtcbiAgICBjYXNlICdhbnknOlxuICAgICAgcmV0dXJuICcqJztcbiAgfVxuXG4gIGNvbnN0IGRldGFpbHMgPSBzZW12ZXIodmVyc2lvbik7XG4gIHN3aXRjaCAoZGVwVHlwZSkge1xuICAgIGNhc2UgJ2FueS1taW5vcic6XG4gICAgICByZXR1cm4gYCR7cnVudGltZVByZWZpeH0ke2RldGFpbHMubWFqb3J9YDtcbiAgICBjYXNlICdhbnktcGF0Y2gnOlxuICAgICAgcmV0dXJuIGAke3J1bnRpbWVQcmVmaXh9JHtkZXRhaWxzLm1ham9yfS4ke2RldGFpbHMubWlub3J9YDtcbiAgfVxuXG4gIHJldHVybiBydW50aW1lUHJlZml4ICsgdmVyc2lvbjtcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vc2VtdmVyLm9yZy8jaXMtdGhlcmUtYS1zdWdnZXN0ZWQtcmVndWxhci1leHByZXNzaW9uLXJlZ2V4LXRvLWNoZWNrLWEtc2VtdmVyLXN0cmluZ1xuICovXG5mdW5jdGlvbiBzZW12ZXIodmVyc2lvbjogc3RyaW5nKSB7XG4gIGNvbnN0IHJlcyA9IC9eKDB8WzEtOV1cXGQqKVxcLigwfFsxLTldXFxkKilcXC4oMHxbMS05XVxcZCopKD86LSgoPzowfFsxLTldXFxkKnxcXGQqW2EtekEtWi1dWzAtOWEtekEtWi1dKikoPzpcXC4oPzowfFsxLTldXFxkKnxcXGQqW2EtekEtWi1dWzAtOWEtekEtWi1dKikpKikpPyg/OlxcKyhbMC05YS16QS1aLV0rKD86XFwuWzAtOWEtekEtWi1dKykqKSk/JC8uZXhlYyh2ZXJzaW9uKTtcblxuICBpZiAoIXJlcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlIHZlcnNpb246ICR7dmVyc2lvbn1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogcmVzWzBdLFxuICAgIG1ham9yOiByZXNbMV0sXG4gICAgbWlub3I6IHJlc1syXSxcbiAgICBwYXRjaDogcmVzWzNdLFxuICAgIHByZXJlbGVhc2U6IHJlc1s0XSxcbiAgICBidWlsZG1ldGFkYXRhOiByZXNbNV0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHByZWZpeEZyb21SYW5nZSh4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHgpIHtcbiAgICBjYXNlICdhbnktbWlub3InOlxuICAgIGNhc2UgJ2Z1dHVyZS1taW5vcic6XG4gICAgICByZXR1cm4gJ14nO1xuICAgIGNhc2UgJ2FueS1wYXRjaCc6XG4gICAgY2FzZSAnZnV0dXJlLXBhdGNoJzpcbiAgICAgIHJldHVybiAnfic7XG4gICAgY2FzZSAnYW55JzpcbiAgICBjYXNlICdleGFjdCc6XG4gICAgICByZXR1cm4gJyc7XG4gICAgY2FzZSAnYW55LWZ1dHVyZSc6XG4gICAgICByZXR1cm4gJz49JztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJhbmdlIHR5cGU6ICR7eH1gKTtcbiAgfVxufVxuIl19
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0aGVyLXZlcnNpb25zLmV4ZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi9nYXRoZXItdmVyc2lvbnMuZXhlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDBCQUVDO0FBRUQsb0JBa0ZDO0FBeEZELDJCQUFpRDtBQUVqRCxTQUFnQixPQUFPO0lBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsU0FBZ0IsSUFBSSxDQUFDLElBQWMsRUFBRSxnQkFBd0I7SUFDM0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztRQUN4RyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0dBQWtHLENBQUMsQ0FBQztRQUNsSCxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNyQixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLE1BQU0sQ0FBQztJQUV0RCxpRkFBaUY7SUFDakYsb0ZBQW9GO0lBQ3BGLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQztJQUVqRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENB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QixNQUFNLEdBQUcsR0FBRyxxTEFBcUwsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFaE4sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2YsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDYixLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNiLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2IsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDdEIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxDQUFTO0lBQ2hDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDVixLQUFLLFdBQVcsQ0FBQztRQUNqQixLQUFLLGNBQWM7WUFDakIsT0FBTyxHQUFHLENBQUM7UUFDYixLQUFLLFdBQVcsQ0FBQztRQUNqQixLQUFLLGNBQWM7WUFDakIsT0FBTyxHQUFHLENBQUM7UUFDYixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssT0FBTztZQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1osS0FBSyxZQUFZO1lBQ2YsT0FBTyxJQUFJLENBQUM7UUFDZDtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGlNYWluKCkge1xuICBtYWluKHByb2Nlc3MuYXJndi5zbGljZSgxKSwgcHJvY2Vzcy5jd2QoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWluKGFyZ3Y6IHN0cmluZ1tdLCBwYWNrYWdlRGlyZWN0b3J5OiBzdHJpbmcpIHtcbiAgaWYgKGFyZ3YuaW5jbHVkZXMoJy0taGVscCcpKSB7XG4gICAgY29uc29sZS5lcnJvcignVXNhZ2U6IGdhdGhlci12ZXJzaW9ucyBbUEtHPVRZUEVdIFtQS0c9VFlQRV0gWy4uLl1cXG4nKTtcbiAgICBjb25zb2xlLmVycm9yKCdQb3NpdGlvbmFsczonKTtcbiAgICBjb25zb2xlLmVycm9yKCcgIFBLR1xcdFBhY2thZ2UgbmFtZS4nKTtcbiAgICBjb25zb2xlLmVycm9yKCcgIFRZUEVcXHRhbnktbWlub3IgfCBmdXR1cmUtbWlub3IgfCBhbnktcGF0Y2ggfCBmdXR1cmUtcGF0Y2ggfCBleGFjdCB8IGFueS1mdXR1cmUgfCBhbnknKTtcbiAgICBjb25zb2xlLmVycm9yKCcnKTtcbiAgICBjb25zb2xlLmVycm9yKCdJZiAkUkVTRVRfVkVSU0lPTlMgaXMgXCJ0cnVlXCIsIGlnbm9yZSB0aGUgdmVyc2lvbiBzcGVjaWZpZXIgYW5kIGp1c3QgcmVzZXQgYWxsIHBhY2thZ2VzIHRvIF4wLjAuMCcpO1xuICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGlzUmVzZXQgPSBwcm9jZXNzLmVudi5SRVNFVF9WRVJTSU9OUyA9PT0gJ3RydWUnO1xuXG4gIC8vIFNldCB0byAndHJ1ZScgYnkgdGhlIG1vbm9yZXBvIHJlbGVhc2UgdGFzayB3aGlsZSBpdCBidW1wcyBhbmQgYnVpbGRzIHBhY2thZ2VzLlxuICAvLyBVc2VkIHRvIGVuZm9yY2UgdGhlIGd1YXJkIGJlbG93IG9ubHkgZHVyaW5nIGEgcmVhbCByZWxlYXNlIChub3QgbG9jYWwgZGV2L3N5bnRoKS5cbiAgY29uc3QgaXNSZWxlYXNlID0gcHJvY2Vzcy5lbnYuUkVMRUFTRSA9PT0gJ3RydWUnO1xuXG4gIGNvbnN0IGRlcHMgPSBPYmplY3QuZnJvbUVudHJpZXMoYXJndi5tYXAoeCA9PiB4LnNwbGl0KCc9JywgMikgYXMgW3N0cmluZywgc3RyaW5nXSkpO1xuXG4gIC8vIFRoZSBQSiBmaWxlIHdlIGFyZSB1cGRhdGluZ1xuICBjb25zdCB0YXJnZXRQakZpbGUgPSBgJHtwYWNrYWdlRGlyZWN0b3J5ID8/ICcuJ30vcGFja2FnZS5qc29uYDtcblxuICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHRhcmdldFBqRmlsZSwgJ3V0Zi04JykpO1xuICBjb25zdCBjaGFuZ2VSZXBvcnQ6IGFueSA9IHtcbiAgICBuYW1lOiBtYW5pZmVzdC5uYW1lLFxuICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb24sXG4gIH07XG5cbiAgZm9yIChjb25zdCBbZGVwLCBkZXBUeXBlXSBvZiBPYmplY3QuZW50cmllcyhkZXBzKSkge1xuICAgIGNvbnN0IGRlcFZlcnNpb24gPSBkZXBlbmRlbmN5SW5mbyhkZXAsIHBhY2thZ2VEaXJlY3RvcnkpLnZlcnNpb247XG5cbiAgICAvLyBBIGRlcGVuZGVuY3kgdGhhdCBzdGlsbCByZXNvbHZlcyB0byB0aGUgMC4wLjAgcGxhY2Vob2xkZXIgd2FzIG5vdCB2ZXJzaW9uZWQgYmVmb3JlIHRoaXNcbiAgICAvLyBwYWNrYWdlIGdhdGhlcmVkIGl0cyBkZXBlbmRlbmN5IHJhbmdlczogdGhlIGRlcGVuZGVuY3kncyBidW1wIHRhc2sgZGlkIG5vdCBydW4gKGl0IHdhcyBza2lwcGVkXG4gICAgLy8gb3IgZmFpbGVkKSwgc28gaXRzIHBhY2thZ2UuanNvbiBzdGlsbCBob2xkcyB0aGUgcHJvamVuIDAuMC4wIHBsYWNlaG9sZGVyLiBXcml0aW5nIGEgcmFuZ2Ugb2ZmXG4gICAgLy8gMC4wLjAgcHVibGlzaGVzIGEgYnJva2VuICdeMC4wLjAnIChvciAnMC4wLjAnLyd+MC4wLjAnLyc+PTAuMC4wJykgZGVwZW5kZW5jeSB0aGF0IG5wbSByZXNvbHZlc1xuICAgIC8vIHRvIHRoZSBhbmNpZW50IDAuMC4wIGFydGlmYWN0LiBGYWlsIGxvdWRseSBpbnN0ZWFkIG9mIHB1Ymxpc2hpbmcgaXQuIE9ubHkgZW5mb3JjZWQgZm9yXG4gICAgLy8gcnVudGltZS9wZWVyIGRlcGVuZGVuY2llcyBkZWNsYXJlZCBvbiB0aGlzIHBhY2thZ2UsIGFuZCBvbmx5IGR1cmluZyBhIHJlbGVhc2UsIHNvIGxvY2FsXG4gICAgLy8gZGV2L3N5bnRoIGFuZCB0aGUgcmVzZXQgKHVuYnVtcCkgcGF0aCBhcmUgdW5hZmZlY3RlZC5cbiAgICBjb25zdCBpc1J1bnRpbWVPclBlZXJEZXAgPSBCb29sZWFuKG1hbmlmZXN0LmRlcGVuZGVuY2llcz8uW2RlcF0pIHx8IEJvb2xlYW4obWFuaWZlc3QucGVlckRlcGVuZGVuY2llcz8uW2RlcF0pO1xuICAgIGlmIChpc1JlbGVhc2UgJiYgIWlzUmVzZXQgJiYgaXNSdW50aW1lT3JQZWVyRGVwICYmIGRlcFZlcnNpb24gPT09ICcwLjAuMCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGdhdGhlci12ZXJzaW9uczogZGVwZW5kZW5jeSAnJHtkZXB9JyBvZiAnJHttYW5pZmVzdC5uYW1lfScgcmVzb2x2ZWQgdG8gdGhlIHBsYWNlaG9sZGVyIHZlcnNpb24gMC4wLjAuIGAgK1xuICAgICAgICBgSXRzIGJ1bXAgdGFzayBkaWQgbm90IHJ1biBiZWZvcmUgJyR7bWFuaWZlc3QubmFtZX0nIGdhdGhlcmVkIHZlcnNpb25zIChza2lwcGVkIG9yIGZhaWxlZCksIHNvIHB1Ymxpc2hpbmcgYCArXG4gICAgICAgICdub3cgd291bGQgc2hpcCBhIGJyb2tlbiBcXCdeMC4wLjBcXCcgcmFuZ2UuIFJlLXJ1biB0aGUgcmVsZWFzZTsgaWYgaXQgcmVjdXJzLCBjaGVjayB3aHkgdGhlIGJ1bXAgdGFzayBmb3IgJyArXG4gICAgICAgIGAnJHtkZXB9JyB3YXMgc2tpcHBlZCAoc2VlIGl0cyB0YXNrIGNvbmRpdGlvbikuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcmFuZ2VWZXJzaW9uID0gdmVyc2lvbkZvclJhbmdlKGRlcFR5cGUsIGRlcFZlcnNpb24pO1xuXG4gICAgY29uc3QgZGVwZW5kZW5jeUNsYXNzZXMgPSBbXG4gICAgICBbJ2RlcGVuZGVuY2llcycsIHJhbmdlVmVyc2lvbl0sXG4gICAgICBbJ3BlZXJEZXBlbmRlbmNpZXMnLCByYW5nZVZlcnNpb25dLFxuICAgICAgLy8gSXQgZG9lc24ndCBtYXR0ZXIgd2hhdCB3ZSBkbyBmb3IgZGV2RGVwZW5kZW5jaWVzIChtaWdodCBldmVuIGRvXG4gICAgICAvLyBub3RoaW5nKSwgYnV0IGl0IGZlZWxzIGxpa2UgbmljZSBmb3JtIHRvIHNob3cgdGhlIGV4YWN0IHZlcnNpb24gd2UgdXNlZFxuICAgICAgLy8gd2hlbiB3ZSBidWlsdCB0aGlzIHBhY2thZ2UuXG4gICAgICBbJ2RldkRlcGVuZGVuY2llcycsIGRlcFZlcnNpb25dLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IFtkZXBTZWN0aW9uLCBjb21wdXRlZFZlcnNpb25dIG9mIGRlcGVuZGVuY3lDbGFzc2VzKSB7XG4gICAgICBjb25zdCBidW1wRm9yd2FyZCA9ICFpc1Jlc2V0O1xuICAgICAgY29uc3QgdXBkYXRlZFJhbmdlID0gYnVtcEZvcndhcmQgPyBjb21wdXRlZFZlcnNpb24gOiAnXjAuMC4wJztcblxuICAgICAgaWYgKG1hbmlmZXN0W2RlcFNlY3Rpb25dPy5bZGVwXSkge1xuICAgICAgICBtYW5pZmVzdFtkZXBTZWN0aW9uXVtkZXBdID0gdXBkYXRlZFJhbmdlO1xuXG4gICAgICAgIC8vIEFsc28gdXBkYXRlIHRoZSByZXBvcnQgc28gdGhhdCB3ZSBjYW4gcHJpbnQgd2hhdCB3ZSBkaWQuXG4gICAgICAgIC8vIFRoZSBiZWxvdyBzeW50YXggd29ya3MgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGRlcFNlY3Rpb24gYWxyZWFkeVxuICAgICAgICAvLyBleGlzdHMgb3Igbm90LCBhbmQgb25seSBhZGRzIGRlcFNlY3Rpb24gaWYgdGhlcmUgYXJlIGNoYW5nZXMgaW4gaXQuXG4gICAgICAgIGNoYW5nZVJlcG9ydFtkZXBTZWN0aW9uXSA9IHtcbiAgICAgICAgICAuLi5jaGFuZ2VSZXBvcnRbZGVwU2VjdGlvbl0sXG4gICAgICAgICAgW2RlcF06IHVwZGF0ZWRSYW5nZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQcmludCBhIHJlcG9ydCBvZiB3aGF0IHdlIGRpZFxuICBjb25zb2xlLmxvZygnVXBkYXRlZCB2ZXJzaW9ucycsIEpTT04uc3RyaW5naWZ5KGNoYW5nZVJlcG9ydCwgdW5kZWZpbmVkLCAyKSk7XG5cbiAgd3JpdGVGaWxlU3luYyh0YXJnZXRQakZpbGUsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKSArICdcXG4nKTtcbn1cblxuZnVuY3Rpb24gZGVwZW5kZW5jeUluZm8oZGVwZW5kZW5jeTogc3RyaW5nLCBzZWFyY2hEaXJlY3Rvcnk6IHN0cmluZyk6IGFueSB7XG4gIC8vIFNlYXJjaCBuZWVkcyB0byBiZSB3LnIudC4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBvdGhlcndpc2UgaXQgaXMgdy5yLnQuIHRoZSBjdXJyZW50XG4gIC8vIGZpbGUgYW5kIHRoYXQgZG9lc24ndCB3b3JrIGlmIGBjZGtsYWJzLXByb2plbi1wcm9qZWN0LXR5cGVzYCBpcyBsb2NhbGx5IHN5bWxpbmtlZC5cblxuICAvLyBUaGlzIHdpbGwgdGhyb3cgaWYgdGhlIHJlc29sdXRpb24gZmFpbHNcbiAgY29uc3QgcGpMb2MgPSByZXF1aXJlLnJlc29sdmUoYCR7ZGVwZW5kZW5jeX0vcGFja2FnZS5qc29uYCwgeyBwYXRoczogW3NlYXJjaERpcmVjdG9yeV0gfSk7XG4gIHJldHVybiBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhwakxvYywgJ3V0Zi04JykpO1xufVxuXG5mdW5jdGlvbiB2ZXJzaW9uRm9yUmFuZ2UoZGVwVHlwZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgY29uc3QgcnVudGltZVByZWZpeCA9IHByZWZpeEZyb21SYW5nZShkZXBUeXBlKTtcblxuICBzd2l0Y2ggKGRlcFR5cGUpIHtcbiAgICBjYXNlICdmdXR1cmUtbWlub3InOlxuICAgIGNhc2UgJ2Z1dHVyZS1wYXRjaCc6XG4gICAgY2FzZSAnYW55LWZ1dHVyZSc6XG4gICAgY2FzZSAnZXhhY3QnOlxuICAgICAgcmV0dXJuIHJ1bnRpbWVQcmVmaXggKyB2ZXJzaW9uO1xuICAgIGNhc2UgJ2FueSc6XG4gICAgICByZXR1cm4gJyonO1xuICB9XG5cbiAgY29uc3QgZGV0YWlscyA9IHNlbXZlcih2ZXJzaW9uKTtcbiAgc3dpdGNoIChkZXBUeXBlKSB7XG4gICAgY2FzZSAnYW55LW1pbm9yJzpcbiAgICAgIHJldHVybiBgJHtydW50aW1lUHJlZml4fSR7ZGV0YWlscy5tYWpvcn1gO1xuICAgIGNhc2UgJ2FueS1wYXRjaCc6XG4gICAgICByZXR1cm4gYCR7cnVudGltZVByZWZpeH0ke2RldGFpbHMubWFqb3J9LiR7ZGV0YWlscy5taW5vcn1gO1xuICB9XG5cbiAgcmV0dXJuIHJ1bnRpbWVQcmVmaXggKyB2ZXJzaW9uO1xufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9zZW12ZXIub3JnLyNpcy10aGVyZS1hLXN1Z2dlc3RlZC1yZWd1bGFyLWV4cHJlc3Npb24tcmVnZXgtdG8tY2hlY2stYS1zZW12ZXItc3RyaW5nXG4gKi9cbmZ1bmN0aW9uIHNlbXZlcih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgY29uc3QgcmVzID0gL14oMHxbMS05XVxcZCopXFwuKDB8WzEtOV1cXGQqKVxcLigwfFsxLTldXFxkKikoPzotKCg/OjB8WzEtOV1cXGQqfFxcZCpbYS16QS1aLV1bMC05YS16QS1aLV0qKSg/OlxcLig/OjB8WzEtOV1cXGQqfFxcZCpbYS16QS1aLV1bMC05YS16QS1aLV0qKSkqKSk/KD86XFwrKFswLTlhLXpBLVotXSsoPzpcXC5bMC05YS16QS1aLV0rKSopKT8kLy5leGVjKHZlcnNpb24pO1xuXG4gIGlmICghcmVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgdmVyc2lvbjogJHt2ZXJzaW9ufWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiByZXNbMF0sXG4gICAgbWFqb3I6IHJlc1sxXSxcbiAgICBtaW5vcjogcmVzWzJdLFxuICAgIHBhdGNoOiByZXNbM10sXG4gICAgcHJlcmVsZWFzZTogcmVzWzRdLFxuICAgIGJ1aWxkbWV0YWRhdGE6IHJlc1s1XSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJlZml4RnJvbVJhbmdlKHg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoeCkge1xuICAgIGNhc2UgJ2FueS1taW5vcic6XG4gICAgY2FzZSAnZnV0dXJlLW1pbm9yJzpcbiAgICAgIHJldHVybiAnXic7XG4gICAgY2FzZSAnYW55LXBhdGNoJzpcbiAgICBjYXNlICdmdXR1cmUtcGF0Y2gnOlxuICAgICAgcmV0dXJuICd+JztcbiAgICBjYXNlICdhbnknOlxuICAgIGNhc2UgJ2V4YWN0JzpcbiAgICAgIHJldHVybiAnJztcbiAgICBjYXNlICdhbnktZnV0dXJlJzpcbiAgICAgIHJldHVybiAnPj0nO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmFuZ2UgdHlwZTogJHt4fWApO1xuICB9XG59XG4iXX0=
|
package/lib/yarn/jsii-build.js
CHANGED
|
@@ -11,7 +11,7 @@ const rosetta_1 = require("../rosetta");
|
|
|
11
11
|
* adding monorepo-appropriate defaults (Rosetta, composite, pypiClassifiers).
|
|
12
12
|
*/
|
|
13
13
|
class WorkspaceJsiiBuild {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceJsiiBuild", version: "0.6.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdklabs-projen-project-types.yarn.WorkspaceJsiiBuild", version: "0.6.8" };
|
|
15
15
|
options;
|
|
16
16
|
constructor(options = {}) {
|
|
17
17
|
this.options = options;
|
|
@@ -16,6 +16,35 @@ export interface MonorepoOptions {
|
|
|
16
16
|
* @default true
|
|
17
17
|
*/
|
|
18
18
|
readonly allowLibraryDependencies?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* List of dependency (package) names that are allowed to run lifecycle install scripts (`preinstall`, `install`, `postinstall`, `prepare`) during dependency installation.
|
|
21
|
+
* These scripts can execute arbitrary code, making them a common
|
|
22
|
+
* supply-chain attack vector. Package managers are moving toward
|
|
23
|
+
* blocking them by default and requiring an explicit allowlist.
|
|
24
|
+
* Configuring `allowScripts` sets up that allowlist so scripts only run
|
|
25
|
+
* for the packages you have explicitly reviewed and trust.
|
|
26
|
+
*
|
|
27
|
+
* Support for this setting depends on the configured `packageManager`:
|
|
28
|
+
*
|
|
29
|
+
* - `NPM`: written to the native `allowScripts` field in `package.json`
|
|
30
|
+
* (requires npm >= 11.16; see https://docs.npmjs.com/cli/v11/commands/npm-approve-scripts).
|
|
31
|
+
* - `BUN`: written to the native `trustedDependencies` field in
|
|
32
|
+
* `package.json` (see https://bun.com/docs/pm/lifecycle).
|
|
33
|
+
* - `PNPM`: written to the `onlyBuiltDependencies` setting in
|
|
34
|
+
* `pnpm-workspace.yaml` (see https://pnpm.io/settings#onlybuiltdependencies).
|
|
35
|
+
* - `YARN2`, `YARN_BERRY`: written to the native
|
|
36
|
+
* `dependenciesMeta.<pkg>.built` allowlist in `package.json`, combined
|
|
37
|
+
* with `enableScripts: false` in `.yarnrc.yml` (see
|
|
38
|
+
* https://yarnpkg.com/features/security#postinstalls). If you set
|
|
39
|
+
* `yarnBerryOptions.yarnRcOptions.enableScripts` explicitly, that value
|
|
40
|
+
* is respected instead of being overridden.
|
|
41
|
+
* - `YARN`, `YARN_CLASSIC`: not supported. Yarn Classic has no native
|
|
42
|
+
* mechanism to allowlist install scripts for specific dependencies.
|
|
43
|
+
* Setting this option with one of these package managers throws an
|
|
44
|
+
* error at synthesis time.
|
|
45
|
+
* @default - all install scripts are allowed to run (package manager default)
|
|
46
|
+
*/
|
|
47
|
+
readonly allowScripts?: Array<string>;
|
|
19
48
|
/**
|
|
20
49
|
* A directory which will contain build artifacts.
|
|
21
50
|
* @default "dist"
|
|
@@ -553,6 +582,11 @@ export interface MonorepoOptions {
|
|
|
553
582
|
* @default []
|
|
554
583
|
*/
|
|
555
584
|
readonly peerDeps?: Array<string>;
|
|
585
|
+
/**
|
|
586
|
+
* Options for pnpm.
|
|
587
|
+
* @default - all default options
|
|
588
|
+
*/
|
|
589
|
+
readonly pnpmOptions?: javascript.PnpmOptions;
|
|
556
590
|
/**
|
|
557
591
|
* The version of PNPM to use if using PNPM as a package manager.
|
|
558
592
|
* @default "10.33.0"
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy95YXJuL21vbm9yZXBvLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInlhcm4gcHJvamVuXCIuXG5pbXBvcnQgeyBqYXZhc2NyaXB0LCBnaXRodWIsIElnbm9yZUZpbGVPcHRpb25zLCBHaXRPcHRpb25zLCBMb2dnZXJPcHRpb25zLCBQcm9qZWN0LCBQcm9qZW5yY0pzb25PcHRpb25zLCB0eXBlc2NyaXB0LCBTYW1wbGVSZWFkbWVQcm9wcywgUmVsZWFzYWJsZUNvbW1pdHMsIHJlbGVhc2UsIFJlbm92YXRlYm90T3B0aW9ucywgR3JvdXBSdW5uZXJPcHRpb25zIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IHlhcm4gfSBmcm9tICcuLi8nO1xuXG4vKipcbiAqIE1vbm9yZXBvT3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbm9yZXBvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgcmVzb2x2ZWQgYHBhY2thZ2VNYW5hZ2VyYCB0byBgZGV2RW5naW5lcy5wYWNrYWdlTWFuYWdlcmAgaW4gYHBhY2thZ2UuanNvbmAsIHNldHRpbmcgYG9uRmFpbGAgdG8gYGlnbm9yZWAuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFkZFBhY2thZ2VNYW5hZ2VyVG9EZXZFbmdpbmVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93IHRoZSBwcm9qZWN0IHRvIGluY2x1ZGUgYHBlZXJEZXBlbmRlbmNpZXNgIGFuZCBgYnVuZGxlZERlcGVuZGVuY2llc2AuXG4gICAqIFRoaXMgaXMgbm9ybWFsbHkgb25seSBhbGxvd2VkIGZvciBsaWJyYXJpZXMuIEZvciBhcHBzLCB0aGVyZSdzIG5vIG1lYW5pbmdcbiAgICogZm9yIHNwZWNpZnlpbmcgdGhlc2UuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93TGlicmFyeURlcGVuZGVuY2llcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGRpcmVjdG9yeSB3aGljaCB3aWxsIGNvbnRhaW4gYnVpbGQgYXJ0aWZhY3RzLlxuICAgKiBAZGVmYXVsdCBcImRpc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RzRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogUnVuIHNlY3VyaXR5IGF1ZGl0IG9uIGRlcGVuZGVuY2llcy5cbiAgICogV2hlbiBlbmFibGVkLCBjcmVhdGVzIGFuIFwiYXVkaXRcIiB0YXNrIHRoYXQgY2hlY2tzIGZvciBrbm93biBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXNcbiAgICogaW4gZGVwZW5kZW5jaWVzLiBCeSBkZWZhdWx0LCBydW5zIGR1cmluZyBldmVyeSBidWlsZCBhbmQgY2hlY2tzIGZvciBcImhpZ2hcIiBzZXZlcml0eVxuICAgKiB2dWxuZXJhYmlsaXRpZXMgb3IgYWJvdmUgaW4gYWxsIGRlcGVuZGVuY2llcyAoaW5jbHVkaW5nIGRldiBkZXBlbmRlbmNpZXMpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYXVkaXREZXBzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNlY3VyaXR5IGF1ZGl0IG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBhdWRpdERlcHNPcHRpb25zPzogamF2YXNjcmlwdC5BdWRpdE9wdGlvbnM7XG4gIC8qKlxuICAgKiBBdXRob3IncyBlLW1haWwuXG4gICAqL1xuICByZWFkb25seSBhdXRob3JFbWFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEF1dGhvcidzIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBhdXRob3JOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogSXMgdGhlIGF1dGhvciBhbiBvcmdhbml6YXRpb24uXG4gICAqL1xuICByZWFkb25seSBhdXRob3JPcmdhbml6YXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0aG9yJ3MgVVJMIC8gV2Vic2l0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvclVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIEVuYWJsZSBhbmQgY29uZmlndXJlIHRoZSAnYXV0byBhcHByb3ZlJyB3b3JrZmxvdy5cbiAgICogQGRlZmF1bHQgLSBhdXRvIGFwcHJvdmUgaXMgZGlzYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9BcHByb3ZlT3B0aW9ucz86IGdpdGh1Yi5BdXRvQXBwcm92ZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFwcHJvdmUgZGVwcyB1cGdyYWRlIFBScywgYWxsb3dpbmcgdGhlbSB0byBiZSBtZXJnZWQgYnkgbWVyZ2lmeSAoaWYgY29uZmlndXJlZCkuXG4gICAqIFRocm93IGlmIHNldCB0byB0cnVlIGJ1dCBgYXV0b0FwcHJvdmVPcHRpb25zYCBhcmUgbm90IGRlZmluZWQuXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0FwcHJvdmVVcGdyYWRlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZCBhbGwgZXhlY3V0YWJsZXMgdW5kZXIgdGhlIGBiaW5gIGRpcmVjdG9yeSB0byB5b3VyIGBwYWNrYWdlLmpzb25gIGZpbGUgdW5kZXIgdGhlIGBiaW5gIHNlY3Rpb24uXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9EZXRlY3RCaW4/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIGF1dG9tYXRpYyBtZXJnaW5nIG9uIEdpdEh1Yi5cbiAgICogSGFzIG5vIGVmZmVjdCBpZiBgZ2l0aHViLm1lcmdpZnlgXG4gICAqIGlzIHNldCB0byBmYWxzZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b01lcmdlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBvcHRpb25zIGZvciBhdXRvbWF0aWMgbWVyZ2luZyBvbiBHaXRIdWIuXG4gICAqIEhhcyBubyBlZmZlY3QgaWZcbiAgICogYGdpdGh1Yi5tZXJnaWZ5YCBvciBgYXV0b01lcmdlYCBpcyBzZXQgdG8gZmFsc2UuXG4gICAqIEBkZWZhdWx0IC0gc2VlIGRlZmF1bHRzIGluIGBBdXRvTWVyZ2VPcHRpb25zYFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b01lcmdlT3B0aW9ucz86IGdpdGh1Yi5BdXRvTWVyZ2VPcHRpb25zO1xuICAvKipcbiAgICogQmluYXJ5IHByb2dyYW1zIHZlbmRlZCB3aXRoIHlvdXIgbW9kdWxlLlxuICAgKiBZb3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0byBhZGQvY3VzdG9taXplIGhvdyBiaW5hcmllcyBhcmUgcmVwcmVzZW50ZWQgaW5cbiAgICogeW91ciBgcGFja2FnZS5qc29uYCwgYnV0IHVubGVzcyBgYXV0b0RldGVjdEJpbmAgaXMgYGZhbHNlYCwgZXZlcnlcbiAgICogZXhlY3V0YWJsZSBmaWxlIHVuZGVyIGBiaW5gIHdpbGwgYXV0b21hdGljYWxseSBiZSBhZGRlZCB0byB0aGlzIHNlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBiaW4/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKipcbiAgICogU2V0dXAgQmlvbWUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBiaW9tZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCaW9tZSBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYmlvbWVPcHRpb25zPzogamF2YXNjcmlwdC5CaW9tZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgZW1haWwgYWRkcmVzcyB0byB3aGljaCBpc3N1ZXMgc2hvdWxkIGJlIHJlcG9ydGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVnc0VtYWlsPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHVybCB0byB5b3VyIHByb2plY3QncyBpc3N1ZSB0cmFja2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVnc1VybD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhY2thZ2VzIHRoYXQgc2hvdWxkIGhhdmUgdGhlaXIgYnVpbGQgc2NyaXB0cyBlbmFibGVkIGR1cmluZyBpbnN0YWxsLlxuICAgKiBZYXJuIEJlcnJ5IGRpc2FibGVzIGJ1aWxkIHNjcmlwdHMgYnkgZGVmYXVsdCAoYGVuYWJsZVNjcmlwdHM6IGZhbHNlYCkuXG4gICAqIFRoaXMgb3B0aW9uIHNldHMgYGRlcGVuZGVuY2llc01ldGEuPHBrZz4uYnVpbHQ6IHRydWVgIGluIHRoZSByb290IGBwYWNrYWdlLmpzb25gXG4gICAqIGZvciBlYWNoIGxpc3RlZCBwYWNrYWdlLCBhbGxvd2luZyB0aGVtIHRvIHJ1biB0aGVpciBpbnN0YWxsIHNjcmlwdHMuXG4gICAqIE9ubHkgaGFzIGFuIGVmZmVjdCB3aGVuIHRoZSBtb25vcmVwbyB1c2VzIFlhcm4gQmVycnkuXG4gICAqL1xuICByZWFkb25seSBidWlsZGFibGVQYWNrYWdlcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBXaGVuIE54IGlzIGVuYWJsZWQsIGFsd2F5cyBidWlsZCB0aGUgbW9ub3JlcG8gdXNpbmcgTnhcbiAgICogV2lsbCBidWlsZCBwcm9qZWN0cyBpbiBwYXJhbGxlbCBhbmQgY2FuIGltcHJvdmUgYnVpbGQgcGVyZm9ybWFuY2VcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkV2l0aE54PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZSBhIEdpdEh1YiB3b3JrZmxvdyBmb3IgYnVpbGRpbmcgUFJzLlxuICAgKiBAZGVmYXVsdCAtIHRydWUgaWYgbm90IGEgc3VicHJvamVjdFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRXb3JrZmxvdz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBQUiBidWlsZCB3b3JrZmxvdy5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkV29ya2Zsb3dPcHRpb25zPzogamF2YXNjcmlwdC5CdWlsZFdvcmtmbG93T3B0aW9ucztcbiAgLyoqXG4gICAqIFRoZSBgY29tbWl0LWFuZC10YWctdmVyc2lvbmAgY29tcGF0aWJsZSBwYWNrYWdlIHVzZWQgdG8gYnVtcCB0aGUgcGFja2FnZSB2ZXJzaW9uLCBhcyBhIGRlcGVuZGVuY3kgc3RyaW5nLlxuICAgKiBUaGlzIGNhbiBiZSBhbnkgY29tcGF0aWJsZSBwYWNrYWdlIHZlcnNpb24sIGluY2x1ZGluZyB0aGUgZGVwcmVjYXRlZCBgc3RhbmRhcmQtdmVyc2lvbkA5YC5cbiAgICogQGRlZmF1bHQgLSBBIHJlY2VudCB2ZXJzaW9uIG9mIFwiY29tbWl0LWFuZC10YWctdmVyc2lvblwiXG4gICAqL1xuICByZWFkb25seSBidW1wUGFja2FnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIExpc3Qgb2YgZGVwZW5kZW5jaWVzIHRvIGJ1bmRsZSBpbnRvIHRoaXMgbW9kdWxlLlxuICAgKiBUaGVzZSBtb2R1bGVzIHdpbGwgYmVcbiAgICogYWRkZWQgYm90aCB0byB0aGUgYGRlcGVuZGVuY2llc2Agc2VjdGlvbiBhbmQgYGJ1bmRsZWREZXBlbmRlbmNpZXNgIHNlY3Rpb24gb2ZcbiAgICogeW91ciBgcGFja2FnZS5qc29uYC5cbiAgICpcbiAgICogVGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIG9ubHkgc3BlY2lmeSB0aGUgbW9kdWxlIG5hbWUgaGVyZSAoZS5nLlxuICAgKiBgZXhwcmVzc2ApLiBUaGlzIHdpbGwgYmVoYXZlIHNpbWlsYXIgdG8gYHBucG0gYWRkYCBvciBgbnBtIGluc3RhbGxgIGluIHRoZVxuICAgKiBzZW5zZSB0aGF0IGl0IHdpbGwgYWRkIHRoZSBtb2R1bGUgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgYHBhY2thZ2UuanNvbmBcbiAgICogZmlsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiAoYF5gKS4gWW91IGNhbiBzcGVjaWZ5IHNlbXZlciByZXF1aXJlbWVudHMgaW5cbiAgICogdGhlIHNhbWUgc3ludGF4IHBhc3NlZCB0byBgcG5wbSBhZGRgIG9yIGBucG0gaWAgKGUuZy4gYGV4cHJlc3NAXjJgKSBhbmRcbiAgICogdGhpcyB3aWxsIGJlIHdoYXQgeW91ciBgcGFja2FnZS5qc29uYCB3aWxsIGV2ZW50dWFsbHkgaW5jbHVkZS5cbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsZWREZXBzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBCdW5kbGVyYC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsZXJPcHRpb25zPzogamF2YXNjcmlwdC5CdW5kbGVyT3B0aW9ucztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIEJ1biB0byB1c2UgaWYgdXNpbmcgQnVuIGFzIGEgcGFja2FnZSBtYW5hZ2VyLlxuICAgKiBAZGVmYXVsdCBcImxhdGVzdFwiXG4gICAqL1xuICByZWFkb25seSBidW5WZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogRW5hYmxlIEdpdEh1YiBBY3Rpb25zIGV4cHJlc3Npb25zIHZhbGlkYXRpb24uXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrR2hhRXhwcmVzc2lvbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29uZmlndXJlIHdoaWNoIGxpY2Vuc2VzIHNob3VsZCBiZSBkZWVtZWQgYWNjZXB0YWJsZSBmb3IgdXNlIGJ5IGRlcGVuZGVuY2llcy5cbiAgICogVGhpcyBzZXR0aW5nIHdpbGwgY2F1c2UgdGhlIGJ1aWxkIHRvIGZhaWwsIGlmIGFueSBwcm9oaWJpdGVkIG9yIG5vdCBhbGxvd2VkIGxpY2Vuc2VzIGFyZXMgZW5jb3VudGVyZWQuXG4gICAqIEBkZWZhdWx0IC0gbm8gbGljZW5zZSBjaGVja3MgYXJlIHJ1biBkdXJpbmcgdGhlIGJ1aWxkIGFuZCBhbGwgbGljZW5zZXMgd2lsbCBiZSBhY2NlcHRlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tMaWNlbnNlcz86IGphdmFzY3JpcHQuTGljZW5zZUNoZWNrZXJPcHRpb25zO1xuICAvKipcbiAgICogQWRkIGEgYGNsb2JiZXJgIHRhc2sgd2hpY2ggcmVzZXRzIHRoZSByZXBvIHRvIG9yaWdpbi5cbiAgICogQGRlZmF1bHQgLSB0cnVlLCBidXQgZmFsc2UgZm9yIHN1YnByb2plY3RzXG4gICAqL1xuICByZWFkb25seSBjbG9iYmVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIG5wbSBwYWNrYWdlcyB1c2luZyBBV1MgQ29kZUFydGlmYWN0LlxuICAgKiBUaGlzIGlzIHJlcXVpcmVkIGlmIHB1Ymxpc2hpbmcgcGFja2FnZXMgdG8sIG9yIGluc3RhbGxpbmcgc2NvcGVkIHBhY2thZ2VzIGZyb20gQVdTIENvZGVBcnRpZmFjdFxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgY29kZUFydGlmYWN0T3B0aW9ucz86IGphdmFzY3JpcHQuQ29kZUFydGlmYWN0T3B0aW9ucztcbiAgLyoqXG4gICAqIERlZmluZSBhIEdpdEh1YiB3b3JrZmxvdyBzdGVwIGZvciBzZW5kaW5nIGNvZGUgY292ZXJhZ2UgbWV0cmljcyB0byBodHRwczovL2NvZGVjb3YuaW8vIFVzZXMgY29kZWNvdi9jb2RlY292LWFjdGlvbkB2NSBCeSBkZWZhdWx0LCBPSURDIGF1dGggaXMgdXNlZC4gQWx0ZXJuYXRpdmVseSBhIHRva2VuIGNhbiBiZSBwcm92aWRlZCB2aWEgYGNvZGVDb3ZUb2tlblNlY3JldGAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjb2RlQ292PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZSB0aGUgc2VjcmV0IG5hbWUgZm9yIGEgc3BlY2lmaWVkIGh0dHBzOi8vY29kZWNvdi5pby8gdG9rZW4uXG4gICAqIEBkZWZhdWx0IC0gT0lEQyBhdXRoIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvZGVDb3ZUb2tlblNlY3JldD86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY29tbWl0IHRoZSBtYW5hZ2VkIGZpbGVzIGJ5IGRlZmF1bHQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1pdEdlbmVyYXRlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQYWNrYWdlIG5hbWVzIHRoYXQgbXVzdCB1c2UgYSBjb25zaXN0ZW50IHZlcnNpb24gYWNyb3NzIGFsbCB3b3Jrc3BhY2VzLlxuICAgKiBVc2VzIFlhcm4gQmVycnkgY29uc3RyYWludHMgdG8gZW5mb3JjZSB0aGF0IGFsbCB3b3Jrc3BhY2VzIHVzZSB0aGUgc2FtZSB2ZXJzaW9uXG4gICAqIG9mIHRoZSBsaXN0ZWQgcGFja2FnZXMuIFRoZSB2ZXJzaW9uIGlzIHJlYWQgZnJvbSB0aGUgcm9vdCBgZGV2RGVwZW5kZW5jaWVzYC5cbiAgICogT25seSBoYXMgYW4gZWZmZWN0IHdoZW4gdGhlIG1vbm9yZXBvIHVzZXMgWWFybiBCZXJyeS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnNpc3RlbnRWZXJzaW9ucz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBMaWNlbnNlIGNvcHlyaWdodCBvd25lci5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgYXV0aG9yTmFtZSBvciBcIlwiIGlmIGBhdXRob3JOYW1lYCBpcyB1bmRlZmluZWQuXG4gICAqL1xuICByZWFkb25seSBjb3B5cmlnaHRPd25lcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb3B5cmlnaHQgeWVhcnMgdG8gcHV0IGluIHRoZSBMSUNFTlNFIGZpbGUuXG4gICAqIEBkZWZhdWx0IC0gY3VycmVudCB5ZWFyXG4gICAqL1xuICByZWFkb25seSBjb3B5cmlnaHRQZXJpb2Q/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWFpbiByZWxlYXNlIGJyYW5jaC5cbiAgICogQGRlZmF1bHQgXCJtYWluXCJcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRSZWxlYXNlQnJhbmNoPzogc3RyaW5nO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBkZWxldGUgbG9ja2ZpbGVzIGZyb20gcGFja2FnZSBtYW5hZ2VycyB0aGF0IGFyZSBub3QgdGhlIGFjdGl2ZSBvbmUuXG4gICAqIE9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlIGxvY2tmaWxlIGZvciB0aGUgY29uZmlndXJlZCBwYWNrYWdlXG4gICAqIG1hbmFnZXIgYWxyZWFkeSBleGlzdHMuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gbWlncmF0aW5nIGJldHdlZW4gcGFja2FnZSBtYW5hZ2VycyB0byBhdm9pZCBjb25mbGljdHMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZU9ycGhhbmVkTG9ja0ZpbGVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVzZSBkZXBlbmRhYm90IHRvIGhhbmRsZSBkZXBlbmRlbmN5IHVwZ3JhZGVzLlxuICAgKiBDYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBkZXBzVXBncmFkZWAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRhYm90PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGRlcGVuZGFib3QuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRhYm90T3B0aW9ucz86IGdpdGh1Yi5EZXBlbmRhYm90T3B0aW9ucztcbiAgLyoqXG4gICAqIFJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgbW9kdWxlLlxuICAgKiBUaGUgcmVjb21tZW5kYXRpb24gaXMgdG8gb25seSBzcGVjaWZ5IHRoZSBtb2R1bGUgbmFtZSBoZXJlIChlLmcuXG4gICAqIGBleHByZXNzYCkuIFRoaXMgd2lsbCBiZWhhdmUgc2ltaWxhciB0byBgcG5wbSBhZGRgIG9yIGBucG0gaW5zdGFsbGAgaW4gdGhlXG4gICAqIHNlbnNlIHRoYXQgaXQgd2lsbCBhZGQgdGhlIG1vZHVsZSBhcyBhIGRlcGVuZGVuY3kgdG8geW91ciBgcGFja2FnZS5qc29uYFxuICAgKiBmaWxlIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIChgXmApLiBZb3UgY2FuIHNwZWNpZnkgc2VtdmVyIHJlcXVpcmVtZW50cyBpblxuICAgKiB0aGUgc2FtZSBzeW50YXggcGFzc2VkIHRvIGBwbnBtIGFkZGAgb3IgYG5wbSBpYCAoZS5nLiBgZXhwcmVzc0BeMmApIGFuZFxuICAgKiB0aGlzIHdpbGwgYmUgd2hhdCB5b3VyIGBwYWNrYWdlLmpzb25gIHdpbGwgZXZlbnR1YWxseSBpbmNsdWRlLlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgZGVwcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBVc2UgdGFza3MgYW5kIGdpdGh1YiB3b3JrZmxvd3MgdG8gaGFuZGxlIGRlcGVuZGVuY3kgdXBncmFkZXMuXG4gICAqIENhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYGRlcGVuZGFib3RgLlxuICAgKiBAZGVmYXVsdCAtIGB0cnVlYCBmb3Igcm9vdCBwcm9qZWN0cywgYGZhbHNlYCBmb3Igc3VicHJvamVjdHNcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNVcGdyYWRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBVcGdyYWRlRGVwZW5kZW5jaWVzYC5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNVcGdyYWRlT3B0aW9ucz86IGphdmFzY3JpcHQuVXBncmFkZURlcGVuZGVuY2llc09wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gaXMganVzdCBhIHN0cmluZyB0aGF0IGhlbHBzIHBlb3BsZSB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoZSBwYWNrYWdlLlxuICAgKiBJdCBjYW4gYmUgdXNlZCB3aGVuIHNlYXJjaGluZyBmb3IgcGFja2FnZXMgaW4gYSBwYWNrYWdlIG1hbmFnZXIgYXMgd2VsbC5cbiAgICogU2VlIGh0dHBzOi8vY2xhc3NpYy55YXJucGtnLmNvbS9lbi9kb2NzL3BhY2thZ2UtanNvbi8jdG9jLWRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZCBhIFZTQ29kZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAodXNlZCBmb3IgR2l0SHViIENvZGVzcGFjZXMpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGV2Q29udGFpbmVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJ1aWxkIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUuXG4gICAqIFRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIG9ubHkgYmVcbiAgICogYXZhaWxhYmxlIGluIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQgYnV0IHdpbGwgbm90IGJlIGZldGNoZWQgd2hlbiB0aGlzXG4gICAqIG1vZHVsZSBpcyBjb25zdW1lZC5cbiAgICpcbiAgICogVGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIG9ubHkgc3BlY2lmeSB0aGUgbW9kdWxlIG5hbWUgaGVyZSAoZS5nLlxuICAgKiBgZXhwcmVzc2ApLiBUaGlzIHdpbGwgYmVoYXZlIHNpbWlsYXIgdG8gYHBucG0gYWRkYCBvciBgbnBtIGluc3RhbGxgIGluIHRoZVxuICAgKiBzZW5zZSB0aGF0IGl0IHdpbGwgYWRkIHRoZSBtb2R1bGUgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgYHBhY2thZ2UuanNvbmBcbiAgICogZmlsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiAoYF5gKS4gWW91IGNhbiBzcGVjaWZ5IHNlbXZlciByZXF1aXJlbWVudHMgaW5cbiAgICogdGhlIHNhbWUgc3ludGF4IHBhc3NlZCB0byBgcG5wbSBhZGRgIG9yIGBucG0gaWAgKGUuZy4gYGV4cHJlc3NAXjJgKSBhbmRcbiAgICogdGhpcyB3aWxsIGJlIHdoYXQgeW91ciBgcGFja2FnZS5qc29uYCB3aWxsIGV2ZW50dWFsbHkgaW5jbHVkZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGRldkRlcHM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBgZGV2RW5naW5lc2AgZmllbGQgaW4gYHBhY2thZ2UuanNvbmAuXG4gICAqIFRoZSBgZGV2RW5naW5lcy5wYWNrYWdlTWFuYWdlcmAgZmllbGQgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgYmFzZWQgb25cbiAgICogdGhlIHJlc29sdmVkIGBwYWNrYWdlTWFuYWdlcmAgdmFsdWUuIEFueSBmaWVsZHMgcHJvdmlkZWQgaGVyZSBhcmUgbWVyZ2VkXG4gICAqIHdpdGggdGhlIGF1dG8tcG9wdWxhdGVkIGBwYWNrYWdlTWFuYWdlcmAgZW50cnkuXG4gICAqL1xuICByZWFkb25seSBkZXZFbmdpbmVzPzogamF2YXNjcmlwdC5EZXZFbmdpbmVzO1xuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGEgYHRzY29uZmlnLmpzb25gIGZpbGUgKHVzZWQgYnkganNpaSBwcm9qZWN0cyBzaW5jZSB0c2NvbmZpZy5qc29uIGlzIGdlbmVyYXRlZCBieSB0aGUganNpaSBjb21waWxlcikuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlVHNjb25maWc/OiBib29sZWFuO1xuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGEgZGV2ZWxvcG1lbnQgdHNjb25maWcgZmlsZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVUc2NvbmZpZ0Rldj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEb2NnZW4gYnkgVHlwZWRvYy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRvY2dlbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEb2NzIGRpcmVjdG9yeS5cbiAgICogQGRlZmF1bHQgXCJkb2NzXCJcbiAgICovXG4gIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNb2R1bGUgZW50cnlwb2ludCAoYG1haW5gIGluIGBwYWNrYWdlLmpzb25gKS5cbiAgICogU2V0IHRvIGFuIGVtcHR5IHN0cmluZyB0byBub3QgaW5jbHVkZSBgbWFpbmAgaW4geW91ciBwYWNrYWdlLmpzb25cbiAgICogQGRlZmF1bHQgXCJsaWIvaW5kZXguanNcIlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSAuZC50cyBmaWxlIHRoYXQgaW5jbHVkZXMgdGhlIHR5cGUgZGVjbGFyYXRpb25zIGZvciB0aGlzIG1vZHVsZS5cbiAgICogQGRlZmF1bHQgLSAuZC50cyBmaWxlIGRlcml2ZWQgZnJvbSB0aGUgcHJvamVjdCdzIGVudHJ5cG9pbnQgKHVzdWFsbHkgbGliL2luZGV4LmQudHMpXG4gICAqL1xuICByZWFkb25seSBlbnRyeXBvaW50VHlwZXM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFc2xpbnQgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBvcGluaW9uYXRlZCBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGVzbGludE9wdGlvbnM/OiBqYXZhc2NyaXB0LkVzbGludE9wdGlvbnM7XG4gIC8qKlxuICAgKiBFbmFibGUgR2l0SHViIGludGVncmF0aW9uLlxuICAgKiBFbmFibGVkIGJ5IGRlZmF1bHQgZm9yIHJvb3QgcHJvamVjdHMuIERpc2FibGVkIGZvciBub24tcm9vdCBwcm9qZWN0cy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIEdpdEh1YiBpbnRlZ3JhdGlvbi5cbiAgICogQGRlZmF1bHQgLSBzZWUgR2l0SHViT3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViT3B0aW9ucz86IGdpdGh1Yi5HaXRIdWJPcHRpb25zO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnRyaWVzIHRvIC5naXRpZ25vcmUuXG4gICAqL1xuICByZWFkb25seSBnaXRpZ25vcmU/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciAuZ2l0aWdub3JlIGZpbGUuXG4gICAqL1xuICByZWFkb25seSBnaXRJZ25vcmVPcHRpb25zPzogSWdub3JlRmlsZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGdpdC5cbiAgICovXG4gIHJlYWRvbmx5IGdpdE9wdGlvbnM/OiBHaXRPcHRpb25zO1xuICAvKipcbiAgICogQWRkIGEgR2l0cG9kIGRldmVsb3BtZW50IGVudmlyb25tZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0cG9kPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhY2thZ2UncyBIb21lcGFnZSAvIFdlYnNpdGUuXG4gICAqL1xuICByZWFkb25seSBob21lcGFnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFZlcnNpb24gcmVxdWlyZW1lbnQgb2YgYHB1YmxpYmAgd2hpY2ggaXMgdXNlZCB0byBwdWJsaXNoIG1vZHVsZXMgdG8gbnBtLlxuICAgKiBAZGVmYXVsdCBcImxhdGVzdFwiXG4gICAqL1xuICByZWFkb25seSBqc2lpUmVsZWFzZVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBLZXl3b3JkcyB0byBpbmNsdWRlIGluIGBwYWNrYWdlLmpzb25gLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5d29yZHM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogVHlwZXNjcmlwdCAgYXJ0aWZhY3RzIG91dHB1dCBkaXJlY3RvcnkuXG4gICAqIEBkZWZhdWx0IFwibGliXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpYmRpcj86IHN0cmluZztcbiAgLyoqXG4gICAqIExpY2Vuc2UncyBTUERYIGlkZW50aWZpZXIuXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi90cmVlL21haW4vbGljZW5zZS10ZXh0IGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpY2Vuc2VzLlxuICAgKiBVc2UgdGhlIGBsaWNlbnNlZGAgb3B0aW9uIGlmIHlvdSB3YW50IHRvIG5vIGxpY2Vuc2UgdG8gYmUgc3BlY2lmaWVkLlxuICAgKiBAZGVmYXVsdCBcIkFwYWNoZS0yLjBcIlxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBhIGxpY2Vuc2Ugc2hvdWxkIGJlIGFkZGVkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmUgbG9nZ2luZyBvcHRpb25zIHN1Y2ggYXMgdmVyYm9zaXR5LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZz86IExvZ2dlck9wdGlvbnM7XG4gIC8qKlxuICAgKiBNYWpvciB2ZXJzaW9uIHRvIHJlbGVhc2UgZnJvbSB0aGUgZGVmYXVsdCBicmFuY2guXG4gICAqIElmIHRoaXMgaXMgc3BlY2lmaWVkLCB3ZSBidW1wIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1ham9yIHZlcnNpb24gbGluZS5cbiAgICogSWYgbm90IHNwZWNpZmllZCwgd2UgYnVtcCB0aGUgZ2xvYmFsIGxhdGVzdCB2ZXJzaW9uLlxuICAgKiBAZGVmYXVsdCAtIE1ham9yIHZlcnNpb24gaXMgbm90IGVuZm9yY2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbm9kZSB2ZXJzaW9uIHN1cHBvcnRlZCBieSB0aGlzIHBhY2thZ2UuIE1vc3QgcHJvamVjdHMgc2hvdWxkIG5vdCB1c2UgdGhpcyBvcHRpb24uXG4gICAqIFRoZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgcGFja2FnZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBhbnkgbmV3ZXIgdmVyc2lvbnMgb2Ygbm9kZS5cbiAgICogVGhpcyByZXF1aXJlbWVudCBpcyBlbmZvcmNlZCB2aWEgdGhlIGVuZ2luZXMgZmllbGQuXG4gICAqXG4gICAqIFlvdSB3aWxsIG5vcm1hbGx5IG5vdCBuZWVkIHRvIHNldCB0aGlzIG9wdGlvbi5cbiAgICogQ29uc2lkZXIgdGhpcyBvcHRpb24gb25seSBpZiB5b3VyIHBhY2thZ2UgaXMga25vd24gdG8gbm90IGZ1bmN0aW9uIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2Ygbm9kZS5cbiAgICogQGRlZmF1bHQgLSBubyBtYXhpbXVtIHZlcnNpb24gaXMgZW5mb3JjZWRcbiAgICovXG4gIHJlYWRvbmx5IG1heE5vZGVWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogTWluaW1hbCBNYWpvciB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBzZXQgdG8gMSwgYXMgYnJlYWtpbmcgY2hhbmdlcyBiZWZvcmUgdGhlIDEueCBtYWpvclxuICAgKiByZWxlYXNlIGFyZSBub3QgaW5jcmVtZW50aW5nIHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlci5cbiAgICpcbiAgICogQ2FuIG5vdCBiZSBzZXQgdG9nZXRoZXIgd2l0aCBgbWFqb3JWZXJzaW9uYC5cbiAgICogQGRlZmF1bHQgLSBObyBtaW5pbXVtIHZlcnNpb24gaXMgYmVpbmcgZW5mb3JjZWRcbiAgICovXG4gIHJlYWRvbmx5IG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1pbmltdW0gTm9kZS5qcyB2ZXJzaW9uIHRvIHJlcXVpcmUgdmlhIHBhY2thZ2UuanNvbiBgZW5naW5lc2AgKGluY2x1c2l2ZSkuXG4gICAqXG4gICAqIE9ubHkgc2V0IHRoaXMgaWYgeW91ciBwYWNrYWdlIHdpbGwgbm90IHdvcmsgcHJvcGVybHkgb24gc3BlY2lmaWMgKG9sZGVyPylcbiAgICogTm9kZSB2ZXJzaW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBcImVuZ2luZXNcIiBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IG1pbk5vZGVWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhpcyBpcyB0aGUgbmFtZSBvZiB5b3VyIHByb2plY3QuXG4gICAqIEBkZWZhdWx0ICRCQVNFRElSXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgdG8gY29udHJvbCB0aGUgbmV4dCB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqIElmIHByZXNlbnQsIHRoaXMgc2hlbGwgY29tbWFuZCB3aWxsIGJlIHJ1biBiZWZvcmUgdGhlIGJ1bXAgaXMgZXhlY3V0ZWQsIGFuZFxuICAgKiBpdCBkZXRlcm1pbmVzIHdoYXQgdmVyc2lvbiB0byByZWxlYXNlLiBJdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBmb2xsb3dpbmdcbiAgICogZW52aXJvbm1lbnQ6XG4gICAqXG4gICAqIC0gV29ya2luZyBkaXJlY3Rvcnk6IHRoZSBwcm9qZWN0IGRpcmVjdG9yeS5cbiAgICogLSBgJFZFUlNJT05gOiB0aGUgY3VycmVudCB2ZXJzaW9uLiBMb29rcyBsaWtlIGAxLjIuM2AuXG4gICAqIC0gYCRMQVRFU1RfVEFHYDogdGhlIG1vc3QgcmVjZW50IHRhZy4gTG9va3MgbGlrZSBgcHJlZml4LXYxLjIuM2AsIG9yIG1heSBiZSB1bnNldC5cbiAgICogLSBgJFNVR0dFU1RFRF9CVU1QYDogdGhlIHN1Z2dlc3RlZCBidW1wIGFjdGlvbiBiYXNlZCBvbiBjb21taXRzLiBPbmUgb2YgYG1ham9yfG1pbm9yfHBhdGNofG5vbmVgLlxuICAgKlxuICAgKiBUaGUgY29tbWFuZCBzaG91bGQgcHJpbnQgb25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gYHN0ZG91dGA6XG4gICAqXG4gICAqIC0gTm90aGluZzogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIGNvbW1pdCBoaXN0b3J5LlxuICAgKiAtIGB4LnkuemA6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgYHgueS56YC5cbiAgICogLSBgbWFqb3J8bWlub3J8cGF0Y2hgOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIHRoZSBjdXJyZW50IHZlcnNpb24gbnVtYmVyXG4gICAqICAgd2l0aCB0aGUgaW5kaWNhdGVkIGNvbXBvbmVudCBidW1wZWQuXG4gICAqXG4gICAqIFRoaXMgc2V0dGluZyBjYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYG1pbk1ham9yVmVyc2lvbmA7IHRoZSBpbnZva2VkXG4gICAqIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBlZmZlY3RzIG9mIGBtaW5NYWpvclZlcnNpb25gLlxuICAgKiBAZGVmYXVsdCAtIFRoZSBuZXh0IHZlcnNpb24gd2lsbCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBjb21taXQgaGlzdG9yeSBhbmQgcHJvamVjdCBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IG5leHRWZXJzaW9uQ29tbWFuZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFjY2VzcyBsZXZlbCBvZiB0aGUgbnBtIHBhY2thZ2UuXG4gICAqIEBkZWZhdWx0IC0gZm9yIHNjb3BlZCBwYWNrYWdlcyAoZS5nLiBgZm9vQGJhcmApLCB0aGUgZGVmYXVsdCBpc1xuYE5wbUFjY2Vzcy5SRVNUUklDVEVEYCwgZm9yIG5vbi1zY29wZWQgcGFja2FnZXMsIHRoZSBkZWZhdWx0IGlzXG5gTnBtQWNjZXNzLlBVQkxJQ2AuXG4gICAqL1xuICByZWFkb25seSBucG1BY2Nlc3M/OiBqYXZhc2NyaXB0Lk5wbUFjY2VzcztcbiAgLyoqXG4gICAqIFRoZSBucG1EaXN0VGFnIHRvIHVzZSB3aGVuIHB1Ymxpc2hpbmcgZnJvbSB0aGUgZGVmYXVsdCBicmFuY2guXG4gICAqIFRvIHNldCB0aGUgbnBtIGRpc3QtdGFnIGZvciByZWxlYXNlIGJyYW5jaGVzLCBzZXQgdGhlIGBucG1EaXN0VGFnYCBwcm9wZXJ0eVxuICAgKiBmb3IgZWFjaCBicmFuY2guXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IG5wbURpc3RUYWc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmVzIGFuIC5ucG1pZ25vcmUgZmlsZS4gTm9ybWFsbHkgdGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgbGlicmFyaWVzIHRoYXQgYXJlIHBhY2thZ2VkIGFzIHRhcmJhbGxzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBucG1pZ25vcmVFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgLm5wbWlnbm9yZSBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbnBtSWdub3JlT3B0aW9ucz86IElnbm9yZUZpbGVPcHRpb25zO1xuICAvKipcbiAgICogU2hvdWxkIHByb3ZlbmFuY2Ugc3RhdGVtZW50cyBiZSBnZW5lcmF0ZWQgd2hlbiB0aGUgcGFja2FnZSBpcyBwdWJsaXNoZWQuXG4gICAqIEEgc3VwcG9ydGVkIHBhY2thZ2UgbWFuYWdlciBpcyByZXF1aXJlZCB0byBwdWJsaXNoIGEgcGFja2FnZSB3aXRoIG5wbSBwcm92ZW5hbmNlIHN0YXRlbWVudHMgYW5kXG4gICAqIHlvdSB3aWxsIG5lZWQgdG8gdXNlIGEgc3VwcG9ydGVkIENJL0NEIHByb3ZpZGVyLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHByb2plbiBgUmVsZWFzZWAgYW5kIGBQdWJsaXNoZXJgIGNvbXBvbmVudHMgYXJlIHVzaW5nIGBwdWJsaWJgIHRvIHB1Ymxpc2ggcGFja2FnZXMsXG4gICAqIHdoaWNoIGlzIHVzaW5nIG5wbSBpbnRlcm5hbGx5IGFuZCBzdXBwb3J0cyBwcm92ZW5hbmNlIHN0YXRlbWVudHMgaW5kZXBlbmRlbnRseSBvZiB0aGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQuXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgcHVibGljIHBhY2thZ2VzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IG5wbVByb3ZlbmFuY2U/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIG9mIHRoZSBucG0gcGFja2FnZSByZWdpc3RyeS5cbiAgICogTXVzdCBiZSBhIFVSTCAoZS5nLiBzdGFydCB3aXRoIFwiaHR0cHM6Ly9cIiBvciBcImh0dHA6Ly9cIilcbiAgICogQGRlZmF1bHQgXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZ1wiXG4gICAqL1xuICByZWFkb25seSBucG1SZWdpc3RyeVVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgd2hpY2ggY29udGFpbnMgdGhlIE5QTSB0b2tlbiB0byB1c2Ugd2hlbiBwdWJsaXNoaW5nIHBhY2thZ2VzLlxuICAgKiBAZGVmYXVsdCBcIk5QTV9UT0tFTlwiXG4gICAqL1xuICByZWFkb25seSBucG1Ub2tlblNlY3JldD86IHN0cmluZztcbiAgLyoqXG4gICAqIFVzZSB0cnVzdGVkIHB1Ymxpc2hpbmcgZm9yIHB1Ymxpc2hpbmcgdG8gbnBtanMuY29tIE5lZWRzIHRvIGJlIHByZS1jb25maWd1cmVkIG9uIG5wbS5qcyB0byB3b3JrLlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBucG1UcnVzdGVkUHVibGlzaGluZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIGludGVncmF0aW9uIHdpdGggTnggaW4gdGhlIG1vbm9yZXBvXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBueD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QuXG4gICAqIFJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LCBhbGwgZmlsZXMgYXJlIHN5bnRoZXNpemVkLlxuICAgKlxuICAgKiBJZiB0aGlzIHByb2plY3QgaGFzIGEgcGFyZW50LCB0aGlzIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50XG4gICAqIGRpcmVjdG9yeSBhbmQgaXQgY2Fubm90IGJlIHRoZSBzYW1lIGFzIHRoZSBwYXJlbnQgb3IgYW55IG9mIGl0J3Mgb3RoZXJcbiAgICogc3VicHJvamVjdHMuXG4gICAqIEBkZWZhdWx0IFwiLlwiXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgYHBhY2thZ2VgIHRhc2sgdGhhdCB3aWxsIHByb2R1Y2UgYW4gbnBtIHRhcmJhbGwgdW5kZXIgdGhlIGFydGlmYWN0cyBkaXJlY3RvcnkgKGUuZy4gYGRpc3RgKS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgXCJuYW1lXCIgaW4gcGFja2FnZS5qc29uLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHRzIHRvIHByb2plY3QgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcGFyZW50IHByb2plY3QsIGlmIHRoaXMgcHJvamVjdCBpcyBwYXJ0IG9mIGEgYmlnZ2VyIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSBwYXJlbnQ/OiBQcm9qZWN0O1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgYHBlZXJEZXBzYC5cbiAgICovXG4gIHJlYWRvbmx5IHBlZXJEZXBlbmRlbmN5T3B0aW9ucz86IGphdmFzY3JpcHQuUGVlckRlcGVuZGVuY3lPcHRpb25zO1xuICAvKipcbiAgICogUGVlciBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgbW9kdWxlLlxuICAgKiBEZXBlbmRlbmNpZXMgbGlzdGVkIGhlcmUgYXJlIHJlcXVpcmVkIHRvXG4gICAqIGJlIGluc3RhbGxlZCAoYW5kIHNhdGlzZmllZCkgYnkgdGhlIF9jb25zdW1lcl8gb2YgdGhpcyBsaWJyYXJ5LiBVc2luZyBwZWVyXG4gICAqIGRlcGVuZGVuY2llcyBhbGxvd3MgeW91IHRvIGVuc3VyZSB0aGF0IG9ubHkgYSBzaW5nbGUgbW9kdWxlIG9mIGEgY2VydGFpblxuICAgKiBsaWJyYXJ5IGV4aXN0cyBpbiB0aGUgYG5vZGVfbW9kdWxlc2AgdHJlZSBvZiB5b3VyIGNvbnN1bWVycy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHByaW9yIHRvIG5wbUA3LCBwZWVyIGRlcGVuZGVuY2llcyBhcmUgX25vdF8gYXV0b21hdGljYWxseVxuICAgKiBpbnN0YWxsZWQsIHdoaWNoIG1lYW5zIHRoYXQgYWRkaW5nIHBlZXIgZGVwZW5kZW5jaWVzIHRvIGEgbGlicmFyeSB3aWxsIGJlIGFcbiAgICogYnJlYWtpbmcgY2hhbmdlIGZvciB5b3VyIGN1c3RvbWVycy5cbiAgICpcbiAgICogVW5sZXNzIGBwZWVyRGVwZW5kZW5jeU9wdGlvbnMucGlubmVkRGV2RGVwZW5kZW5jeWAgaXMgZGlzYWJsZWQgKGl0IGlzXG4gICAqIGVuYWJsZWQgYnkgZGVmYXVsdCksIHByb2plbiB3aWxsIGF1dG9tYXRpY2FsbHkgYWRkIGEgZGV2IGRlcGVuZGVuY3kgd2l0aCBhXG4gICAqIHBpbm5lZCB2ZXJzaW9uIGZvciBlYWNoIHBlZXIgZGVwZW5kZW5jeS4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHlvdSBidWlsZCAmXG4gICAqIHRlc3QgeW91ciBtb2R1bGUgYWdhaW5zdCB0aGUgbG93ZXN0IHBlZXIgdmVyc2lvbiByZXF1aXJlZC5cbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IHBlZXJEZXBzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIFBOUE0gdG8gdXNlIGlmIHVzaW5nIFBOUE0gYXMgYSBwYWNrYWdlIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IFwiMTAuMzMuMFwiXG4gICAqL1xuICByZWFkb25seSBwbnBtVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFN0ZXBzIHRvIGV4ZWN1dGUgYWZ0ZXIgYnVpbGQgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSB3b3JrZmxvdy5cbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IHBvc3RCdWlsZFN0ZXBzPzogQXJyYXk8Z2l0aHViLndvcmtmbG93cy5Kb2JTdGVwPjtcbiAgLyoqXG4gICAqIEJ1bXAgdmVyc2lvbnMgZnJvbSB0aGUgZGVmYXVsdCBicmFuY2ggYXMgcHJlLXJlbGVhc2VzIChlLmcuIFwiYmV0YVwiLCBcImFscGhhXCIsIFwicHJlXCIpLlxuICAgKiBAZGVmYXVsdCAtIG5vcm1hbCBzZW1hbnRpYyB2ZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlcmVsZWFzZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFNldHVwIHByZXR0aWVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJldHRpZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHByZXR0aWVyT3B0aW9ucz86IGphdmFzY3JpcHQuUHJldHRpZXJPcHRpb25zO1xuICAvKipcbiAgICogR2VuZXJhdGUgYSBwcm9qZWN0IHRyZWUgZmlsZSAoYC5wcm9qZW4vdHJlZS5qc29uYCkgdGhhdCBzaG93cyBhbGwgY29tcG9uZW50cyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gVXNlZnVsIGZvciB1bmRlcnN0YW5kaW5nIHlvdXIgcHJvamVjdCBzdHJ1Y3R1cmUgYW5kIGRlYnVnZ2luZy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RUcmVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBzaGVsbCBjb21tYW5kIHRvIHVzZSBpbiBvcmRlciB0byBydW4gdGhlIHByb2plbiBDTEkuXG4gICAqIENhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSBpbiBzcGVjaWFsIGVudmlyb25tZW50cy5cbiAgICogQGRlZmF1bHQgXCJucHggcHJvamVuXCJcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbkNvbW1hbmQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDaG9vc2UgYSBtZXRob2Qgb2YgcHJvdmlkaW5nIEdpdEh1YiBBUEkgYWNjZXNzIGZvciBwcm9qZW4gd29ya2Zsb3dzLlxuICAgKiBAZGVmYXVsdCAtIHVzZSBhIHBlcnNvbmFsIGFjY2VzcyB0b2tlbiBuYW1lZCBQUk9KRU5fR0lUSFVCX1RPS0VOXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5DcmVkZW50aWFscz86IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscztcbiAgLyoqXG4gICAqIEluZGljYXRlcyBvZiBcInByb2plblwiIHNob3VsZCBiZSBpbnN0YWxsZWQgYXMgYSBkZXZEZXBlbmRlbmN5LlxuICAgKiBAZGVmYXVsdCAtIHRydWUgaWYgbm90IGEgc3VicHJvamVjdFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVuRGV2RGVwZW5kZW5jeT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSAob25jZSkgLnByb2plbnJjLmpzIChpbiBKYXZhU2NyaXB0KS4gU2V0IHRvIGBmYWxzZWAgaW4gb3JkZXIgdG8gZGlzYWJsZSAucHJvamVucmMuanMgZ2VuZXJhdGlvbi5cbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIHByb2plbnJjSnNvbiBpcyBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNKcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSAob25jZSkgLnByb2plbnJjLmpzb24gKGluIEpTT04pLiBTZXQgdG8gYGZhbHNlYCBpbiBvcmRlciB0byBkaXNhYmxlIC5wcm9qZW5yYy5qc29uIGdlbmVyYXRpb24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY0pzb24/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgLnByb2plbnJjLmpzb24uXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY0pzb25PcHRpb25zPzogUHJvamVucmNKc29uT3B0aW9ucztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIC5wcm9qZW5yYy5qcy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbnJjSnNPcHRpb25zPzogamF2YXNjcmlwdC5Qcm9qZW5yY09wdGlvbnM7XG4gIC8qKlxuICAgKiBVc2UgVHlwZVNjcmlwdCBmb3IgeW91ciBwcm9qZW5yYyBmaWxlIChgLnByb2plbnJjLnRzYCkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY1RzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIC5wcm9qZW5yYy50cy5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plbnJjVHNPcHRpb25zPzogdHlwZXNjcmlwdC5Qcm9qZW5yY09wdGlvbnM7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHByb2plbiB0byBpbnN0YWxsLlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHRzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plblZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbnN0ZWFkIG9mIGFjdHVhbGx5IHB1Ymxpc2hpbmcgdG8gcGFja2FnZSBtYW5hZ2VycywganVzdCBwcmludCB0aGUgcHVibGlzaGluZyBjb21tYW5kLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaERyeVJ1bj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZWZpbmUgcHVibGlzaGluZyB0YXNrcyB0aGF0IGNhbiBiZSBleGVjdXRlZCBtYW51YWxseSBhcyB3ZWxsIGFzIHdvcmtmbG93cy5cbiAgICogTm9ybWFsbHksIHB1Ymxpc2hpbmcgb25seSBoYXBwZW5zIHdpdGhpbiBhdXRvbWF0ZWQgd29ya2Zsb3dzLiBFbmFibGUgdGhpc1xuICAgKiBpbiBvcmRlciB0byBjcmVhdGUgYSBwdWJsaXNoaW5nIHRhc2sgZm9yIGVhY2ggcHVibGlzaGluZyBhY3Rpdml0eS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUYXNrcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmNsdWRlIGEgR2l0SHViIHB1bGwgcmVxdWVzdCB0ZW1wbGF0ZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RUZW1wbGF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgY29udGVudHMgb2YgdGhlIHB1bGwgcmVxdWVzdCB0ZW1wbGF0ZS5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IGNvbnRlbnRcbiAgICovXG4gIHJlYWRvbmx5IHB1bGxSZXF1ZXN0VGVtcGxhdGVDb250ZW50cz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgUkVBRE1FIHNldHVwLlxuICAgKiBAZGVmYXVsdCAtIHsgZmlsZW5hbWU6ICdSRUFETUUubWQnLCBjb250ZW50czogJyMgcmVwbGFjZSB0aGlzJyB9XG4gICAqL1xuICByZWFkb25seSByZWFkbWU/OiBTYW1wbGVSZWFkbWVQcm9wcztcbiAgLyoqXG4gICAqIEZpbmQgY29tbWl0cyB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIHJlbGVhc2FibGUgVXNlZCB0byBkZWNpZGUgaWYgYSByZWxlYXNlIGlzIHJlcXVpcmVkLlxuICAgKiBAZGVmYXVsdCBSZWxlYXNhYmxlQ29tbWl0cy5ldmVyeUNvbW1pdCgpXG4gICAqL1xuICByZWFkb25seSByZWxlYXNhYmxlQ29tbWl0cz86IFJlbGVhc2FibGVDb21taXRzO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWRkIHJlbGVhc2Ugd29ya2Zsb3dzIGZvciB0aGlzIHJlcG9zaXRvcnlcbiAgICogQGRlZmF1bHQgLSBObyByZWxlYXNlXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZXMgYWRkaXRpb25hbCByZWxlYXNlIGJyYW5jaGVzLlxuICAgKiBBIHdvcmtmbG93IHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaFxuICAgKiByZWxlYXNlIGJyYW5jaCB3aGljaCB3aWxsIHB1Ymxpc2ggcmVsZWFzZXMgZnJvbSBjb21taXRzIGluIHRoaXMgYnJhbmNoLlxuICAgKiBFYWNoIHJlbGVhc2UgYnJhbmNoIF9tdXN0XyBiZSBhc3NpZ25lZCBhIG1ham9yIHZlcnNpb24gbnVtYmVyIHdoaWNoIGlzIHVzZWRcbiAgICogdG8gZW5mb3JjZSB0aGF0IHZlcnNpb25zIHB1Ymxpc2hlZCBmcm9tIHRoYXQgYnJhbmNoIGFsd2F5cyB1c2UgdGhhdCBtYWpvclxuICAgKiB2ZXJzaW9uLiBJZiBtdWx0aXBsZSBicmFuY2hlcyBhcmUgdXNlZCwgdGhlIGBtYWpvclZlcnNpb25gIGZpZWxkIG11c3QgYWxzb1xuICAgKiBiZSBwcm92aWRlZCBmb3IgdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgYnJhbmNoZXMgYXJlIHVzZWQgZm9yIHJlbGVhc2UuIHlvdSBjYW4gdXNlXG5gYWRkQnJhbmNoKClgIHRvIGFkZCBhZGRpdGlvbmFsIGJyYW5jaGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUJyYW5jaGVzPzogUmVjb3JkPHN0cmluZywgcmVsZWFzZS5CcmFuY2hPcHRpb25zPjtcbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgQWN0aW9ucyBlbnZpcm9ubWVudCB1c2VkIGZvciB0aGUgcmVsZWFzZS5cbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBhZGQgYW4gZXhwbGljaXQgYXBwcm92YWwgc3RlcCB0byB0aGUgcmVsZWFzZVxuICAgKiBvciBsaW1pdCB3aG8gY2FuIGluaXRpYXRlIGEgcmVsZWFzZSB0aHJvdWdoIGVudmlyb25tZW50IHByb3RlY3Rpb24gcnVsZXMuXG4gICAqXG4gICAqIFdoZW4gbXVsdGlwbGUgYXJ0aWZhY3RzIGFyZSByZWxlYXNlZCwgdGhlIGVudmlyb25tZW50IGNhbiBiZSBvdmVyd3JpdHRlblxuICAgKiBvbiBhIHBlciBhcnRpZmFjdCBiYXNpcy5cbiAgICogQGRlZmF1bHQgLSBubyBlbnZpcm9ubWVudCB1c2VkLCB1bmxlc3Mgc2V0IGF0IHRoZSBhcnRpZmFjdCBsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUVudmlyb25tZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogQ3JlYXRlIGEgZ2l0aHViIGlzc3VlIG9uIGV2ZXJ5IGZhaWxlZCBwdWJsaXNoaW5nIHRhc2suXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlRmFpbHVyZUlzc3VlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCB0byBhcHBseSB0byBpc3N1ZXMgaW5kaWNhdGluZyBwdWJsaXNoIGZhaWx1cmVzLlxuICAgKiBPbmx5IGFwcGxpZXMgaWYgYHJlbGVhc2VGYWlsdXJlSXNzdWVgIGlzIHRydWUuXG4gICAqIEBkZWZhdWx0IFwiZmFpbGVkLXJlbGVhc2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUZhaWx1cmVJc3N1ZUxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIHJlbGVhc2Ugd29ya2Zsb3dzXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlT3B0aW9ucz86IHlhcm4uTW9ub3JlcG9SZWxlYXNlT3B0aW9ucztcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkIHRoZSBnaXZlbiBwcmVmaXggdG8gcmVsZWFzZSB0YWdzLiBVc2VmdWwgaWYgeW91IGFyZSByZWxlYXNpbmcgb24gbXVsdGlwbGUgYnJhbmNoZXMgd2l0aCBvdmVybGFwcGluZyB2ZXJzaW9uIG51bWJlcnMuXG4gICAqIE5vdGU6IHRoaXMgcHJlZml4IGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBsYXRlc3QgdGFnZ2VkIHZlcnNpb25cbiAgICogd2hlbiBidW1waW5nLCBzbyBpZiB5b3UgY2hhbmdlIHRoaXMgb24gYSBwcm9qZWN0IHdpdGggYW4gZXhpc3RpbmcgdmVyc2lvblxuICAgKiBoaXN0b3J5LCB5b3UgbWF5IG5lZWQgdG8gbWFudWFsbHkgdGFnIHlvdXIgbGF0ZXN0IHJlbGVhc2VcbiAgICogd2l0aCB0aGUgbmV3IHByZWZpeC5cbiAgICogQGRlZmF1bHQgXCJ2XCJcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUYWdQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHJlbGVhc2UgdG8gbnBtIHdoZW4gbmV3IHZlcnNpb25zIGFyZSBpbnRyb2R1Y2VkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRvTnBtPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSByZWxlYXNlIHRyaWdnZXIgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAtIENvbnRpbnVvdXMgcmVsZWFzZXMgKGBSZWxlYXNlVHJpZ2dlci5jb250aW51b3VzKClgKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRyaWdnZXI/OiByZWxlYXNlLlJlbGVhc2VUcmlnZ2VyO1xuICAvKipcbiAgICogQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciByZWxlYXNlIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd0Vudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGVmYXVsdCByZWxlYXNlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBcInJlbGVhc2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVdvcmtmbG93TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc2V0IG9mIHdvcmtmbG93IHN0ZXBzIHRvIGV4ZWN1dGUgaW4gb3JkZXIgdG8gc2V0dXAgdGhlIHdvcmtmbG93IGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd1NldHVwU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogVXNlIHJlbm92YXRlYm90IHRvIGhhbmRsZSBkZXBlbmRlbmN5IHVwZ3JhZGVzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVub3ZhdGVib3Q/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcmVub3ZhdGVib3QuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSByZW5vdmF0ZWJvdE9wdGlvbnM/OiBSZW5vdmF0ZWJvdE9wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSBpcyB0aGUgbG9jYXRpb24gd2hlcmUgdGhlIGFjdHVhbCBjb2RlIGZvciB5b3VyIHBhY2thZ2UgbGl2ZXMuXG4gICAqIFNlZSBodHRwczovL2NsYXNzaWMueWFybnBrZy5jb20vZW4vZG9jcy9wYWNrYWdlLWpzb24vI3RvYy1yZXBvc2l0b3J5XG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogSWYgdGhlIHBhY2thZ2UuanNvbiBmb3IgeW91ciBwYWNrYWdlIGlzIG5vdCBpbiB0aGUgcm9vdCBkaXJlY3RvcnkgKGZvciBleGFtcGxlIGlmIGl0IGlzIHBhcnQgb2YgYSBtb25vcmVwbyksIHlvdSBjYW4gc3BlY2lmeSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGl0IGxpdmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeURpcmVjdG9yeT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBUeXBlU2NyaXB0IHJ1bm5lciB0byB1c2UgZm9yIGV4ZWN1dGluZyBUeXBlU2NyaXB0IGZpbGVzLlxuICAgKiBUaGlzIGlzIGEgcHJvamVjdC1sZXZlbCBzZXR0aW5nIHRoYXQgY29tcG9uZW50cyAoZS5nLiBwcm9qZW5yYykgd2lsbFxuICAgKiB1c2UgYXMgdGhlaXIgZGVmYXVsdCBydW5uZXIuXG4gICAqIEBkZWZhdWx0IFR5cGVTY3JpcHRSdW5uZXIudHNOb2RlKClcbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lcj86IHR5cGVzY3JpcHQuVHlwZVNjcmlwdFJ1bm5lcjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHByaXZhdGVseSBob3N0ZWQgc2NvcGVkIHBhY2thZ2VzLlxuICAgKiBAZGVmYXVsdCAtIGZldGNoIGFsbCBzY29wZWQgcGFja2FnZXMgZnJvbSB0aGUgcHVibGljIG5wbSByZWdpc3RyeVxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGVkUGFja2FnZXNPcHRpb25zPzogQXJyYXk8amF2YXNjcmlwdC5TY29wZWRQYWNrYWdlc09wdGlvbnM+O1xuICAvKipcbiAgICogVHlwZXNjcmlwdCBzb3VyY2VzIGRpcmVjdG9yeS5cbiAgICogQGRlZmF1bHQgXCJzcmNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogUGFja2FnZSdzIFN0YWJpbGl0eS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWJpbGl0eT86IHN0cmluZztcbiAgLyoqXG4gICAqIEF1dG8tY2xvc2Ugb2Ygc3RhbGUgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3QuXG4gICAqIFNlZSBgc3RhbGVPcHRpb25zYCBmb3Igb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN0YWxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG8tY2xvc2Ugc3RhbGUgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzLlxuICAgKiBUbyBkaXNhYmxlIHNldCBgc3RhbGVgIHRvIGBmYWxzZWAuXG4gICAqIEBkZWZhdWx0IC0gc2VlIGRlZmF1bHRzIGluIGBTdGFsZU9wdGlvbnNgXG4gICAqL1xuICByZWFkb25seSBzdGFsZU9wdGlvbnM/OiBnaXRodWIuU3RhbGVPcHRpb25zO1xuICAvKipcbiAgICogSmVzdCB0ZXN0cyBkaXJlY3RvcnkuIFRlc3RzIGZpbGVzIHNob3VsZCBiZSBuYW1lZCBgeHh4LnRlc3QudHNgLlxuICAgKiBJZiB0aGlzIGRpcmVjdG9yeSBpcyB1bmRlciBgc3JjZGlyYCAoZS5nLiBgc3JjL3Rlc3RgLCBgc3JjL19fdGVzdHNfX2ApLFxuICAgKiB0aGVuIHRlc3RzIGFyZSBnb2luZyB0byBiZSBjb21waWxlZCBpbnRvIGBsaWIvYCBhbmQgZXhlY3V0ZWQgYXMgamF2YXNjcmlwdC5cbiAgICogSWYgdGhlIHRlc3QgZGlyZWN0b3J5IGlzIG91dHNpZGUgb2YgYHNyY2AsIHRoZW4gd2UgY29uZmlndXJlIGplc3QgdG9cbiAgICogY29tcGlsZSB0aGUgY29kZSBpbi1tZW1vcnkuXG4gICAqIEBkZWZhdWx0IFwidGVzdFwiXG4gICAqL1xuICByZWFkb25seSB0ZXN0ZGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIFRTQ29uZmlnLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWc/OiBqYXZhc2NyaXB0LlR5cGVzY3JpcHRDb25maWdPcHRpb25zO1xuICAvKipcbiAgICogQ3VzdG9tIHRzY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZy5qc29uIGZpbGUgKHVzZWQgZm9yIHRlc3RpbmcpLlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgcHJvZHVjdGlvbiB0c2NvbmZpZyBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZ0Rldj86IGphdmFzY3JpcHQuVHlwZXNjcmlwdENvbmZpZ09wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSAoYW5kIHBhdGgpIG9mIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZyBmaWxlLlxuICAgKiBCeSBkZWZhdWx0IHRoaXMgbGl2ZXMgaW5zaWRlIHRoZSB0ZXN0IGRpcmVjdG9yeSAoZS5nLiBgdGVzdC90c2NvbmZpZy5qc29uYClcbiAgICogc28gdGhhdCB0aGUgVHlwZVNjcmlwdCBsYW5ndWFnZSBzZXJ2aWNlIHJlc29sdmVzIGl0IGFzIHRoZSBuZWFyZXN0IGNvbmZpZ1xuICAgKiBmb3IgdGVzdCBmaWxlcy5cbiAgICogQGRlZmF1bHQgLSBcInt0ZXN0ZGlyfS90c2NvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnRGV2RmlsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHRzLWplc3QuXG4gICAqL1xuICByZWFkb25seSB0c0plc3RPcHRpb25zPzogdHlwZXNjcmlwdC5Uc0plc3RPcHRpb25zO1xuICAvKipcbiAgICogVHlwZVNjcmlwdCB2ZXJzaW9uIHRvIHVzZS5cbiAgICogTk9URTogVHlwZXNjcmlwdCBpcyBub3Qgc2VtYW50aWNhbGx5IHZlcnNpb25lZCBhbmQgc2hvdWxkIHJlbWFpbiBvbiB0aGVcbiAgICogc2FtZSBtaW5vciwgc28gd2UgcmVjb21tZW5kIHVzaW5nIGEgYH5gIGRlcGVuZGVuY3kgKGUuZy4gYH4xLjIuM2ApLlxuICAgKiBAZGVmYXVsdCBcImxhdGVzdFwiXG4gICAqL1xuICByZWFkb25seSB0eXBlc2NyaXB0VmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBjb25maWd1cmF0aW9uIHVzZWQgd2hlbiBjcmVhdGluZyBjaGFuZ2Vsb2cgd2l0aCBjb21taXQtYW5kLXRhZy12ZXJzaW9uIHBhY2thZ2UuXG4gICAqIEdpdmVuIHZhbHVlcyBlaXRoZXIgYXBwZW5kIHRvIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvciBvdmVyd3JpdGUgdmFsdWVzIGluIGl0LlxuICAgKiBAZGVmYXVsdCAtIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gYXBwbGljYWJsZSBmb3IgR2l0SHViIHJlcG9zaXRvcmllc1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnJjT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBFbmFibGUgVlNDb2RlIGludGVncmF0aW9uLlxuICAgKiBFbmFibGVkIGJ5IGRlZmF1bHQgZm9yIHJvb3QgcHJvamVjdHMuIERpc2FibGVkIGZvciBub24tcm9vdCBwcm9qZWN0cy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIFZTQ29kZSBtdWx0aS1yb290IHdvcmtzcGFjZSBmaWxlIGZvciBhbGwgbW9ub3JlcG8gd29ya3NwYWNlc1xuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlV29ya3NwYWNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFZTQ29kZSBtdWx0aS1yb290IHdvcmtzcGFjZSBmaWxlXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSB2c2NvZGVXb3Jrc3BhY2VPcHRpb25zPzogeWFybi5Wc0NvZGVXb3Jrc3BhY2VPcHRpb25zO1xuICAvKipcbiAgICogV29ya2Zsb3cgc3RlcHMgdG8gdXNlIGluIG9yZGVyIHRvIGJvb3RzdHJhcCB0aGlzIHJlcG8uXG4gICAqIEBkZWZhdWx0IFwieWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlICYmIHlhcm4gcHJvamVuXCJcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogQ29udGFpbmVyIGltYWdlIHRvIHVzZSBmb3IgR2l0SHViIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0NvbnRhaW5lckltYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGdpdCBpZGVudGl0eSB0byB1c2UgaW4gd29ya2Zsb3dzLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgR2l0SHViIEFjdGlvbnMgdXNlclxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dHaXRJZGVudGl0eT86IGdpdGh1Yi5HaXRJZGVudGl0eTtcbiAgLyoqXG4gICAqIFRoZSBub2RlIHZlcnNpb24gdG8gdXNlIGluIEdpdEh1YiB3b3JrZmxvd3MuXG4gICAqIEBkZWZhdWx0ICdsdHMvKidcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Tm9kZVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbmFibGUgTm9kZS5qcyBwYWNrYWdlIGNhY2hlIGluIEdpdEh1YiB3b3JrZmxvd3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1BhY2thZ2VDYWNoZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIHNlbGVjdGlvbiBsYWJlbHMuXG4gICAqIEBkZWZhdWx0IFtcInVidW50dS1sYXRlc3RcIl1cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93UnVuc09uPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEdpdGh1YiBSdW5uZXIgR3JvdXAgc2VsZWN0aW9uIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1J1bnNPbkdyb3VwPzogR3JvdXBSdW5uZXJPcHRpb25zO1xuICAvKipcbiAgICogVXNlIFlhcm4gQmVycnkgYXMgdGhlIHBhY2thZ2UgbWFuYWdlci5cbiAgICogV2hlbiBlbmFibGVkLCB0aGUgbW9ub3JlcG8gd2lsbCB1c2UgYFlBUk5fQkVSUllgIGluc3RlYWQgb2YgYFlBUk5fQ0xBU1NJQ2AuXG4gICAqIGB5YXJuQmVycnlPcHRpb25zYCBjYW4gYmUgdXNlZCB0byBmdXJ0aGVyIGNvbmZpZ3VyZSBZYXJuIEJlcnJ5LlxuICAgKiBUaGUgYG5vZGVMaW5rZXJgIGRlZmF1bHRzIHRvIGBub2RlLW1vZHVsZXNgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgeWFybkJlcnJ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIFlhcm4gQmVycnkuXG4gICAqIEBkZWZhdWx0IC0gWWFybiBCZXJyeSB2NCB3aXRoIGFsbCBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHlhcm5CZXJyeU9wdGlvbnM/OiBqYXZhc2NyaXB0Lllhcm5CZXJyeU9wdGlvbnM7XG59XG4iXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy95YXJuL21vbm9yZXBvLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcInlhcm4gcHJvamVuXCIuXG5pbXBvcnQgeyBqYXZhc2NyaXB0LCBnaXRodWIsIElnbm9yZUZpbGVPcHRpb25zLCBHaXRPcHRpb25zLCBMb2dnZXJPcHRpb25zLCBQcm9qZWN0LCBQcm9qZW5yY0pzb25PcHRpb25zLCB0eXBlc2NyaXB0LCBTYW1wbGVSZWFkbWVQcm9wcywgUmVsZWFzYWJsZUNvbW1pdHMsIHJlbGVhc2UsIFJlbm92YXRlYm90T3B0aW9ucywgR3JvdXBSdW5uZXJPcHRpb25zIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IHlhcm4gfSBmcm9tICcuLi8nO1xuXG4vKipcbiAqIE1vbm9yZXBvT3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbm9yZXBvT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgcmVzb2x2ZWQgYHBhY2thZ2VNYW5hZ2VyYCB0byBgZGV2RW5naW5lcy5wYWNrYWdlTWFuYWdlcmAgaW4gYHBhY2thZ2UuanNvbmAsIHNldHRpbmcgYG9uRmFpbGAgdG8gYGlnbm9yZWAuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFkZFBhY2thZ2VNYW5hZ2VyVG9EZXZFbmdpbmVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93IHRoZSBwcm9qZWN0IHRvIGluY2x1ZGUgYHBlZXJEZXBlbmRlbmNpZXNgIGFuZCBgYnVuZGxlZERlcGVuZGVuY2llc2AuXG4gICAqIFRoaXMgaXMgbm9ybWFsbHkgb25seSBhbGxvd2VkIGZvciBsaWJyYXJpZXMuIEZvciBhcHBzLCB0aGVyZSdzIG5vIG1lYW5pbmdcbiAgICogZm9yIHNwZWNpZnlpbmcgdGhlc2UuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93TGlicmFyeURlcGVuZGVuY2llcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMaXN0IG9mIGRlcGVuZGVuY3kgKHBhY2thZ2UpIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gcnVuIGxpZmVjeWNsZSBpbnN0YWxsIHNjcmlwdHMgKGBwcmVpbnN0YWxsYCwgYGluc3RhbGxgLCBgcG9zdGluc3RhbGxgLCBgcHJlcGFyZWApIGR1cmluZyBkZXBlbmRlbmN5IGluc3RhbGxhdGlvbi5cbiAgICogVGhlc2Ugc2NyaXB0cyBjYW4gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSwgbWFraW5nIHRoZW0gYSBjb21tb25cbiAgICogc3VwcGx5LWNoYWluIGF0dGFjayB2ZWN0b3IuIFBhY2thZ2UgbWFuYWdlcnMgYXJlIG1vdmluZyB0b3dhcmRcbiAgICogYmxvY2tpbmcgdGhlbSBieSBkZWZhdWx0IGFuZCByZXF1aXJpbmcgYW4gZXhwbGljaXQgYWxsb3dsaXN0LlxuICAgKiBDb25maWd1cmluZyBgYWxsb3dTY3JpcHRzYCBzZXRzIHVwIHRoYXQgYWxsb3dsaXN0IHNvIHNjcmlwdHMgb25seSBydW5cbiAgICogZm9yIHRoZSBwYWNrYWdlcyB5b3UgaGF2ZSBleHBsaWNpdGx5IHJldmlld2VkIGFuZCB0cnVzdC5cbiAgICpcbiAgICogU3VwcG9ydCBmb3IgdGhpcyBzZXR0aW5nIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyZWQgYHBhY2thZ2VNYW5hZ2VyYDpcbiAgICpcbiAgICogLSBgTlBNYDogd3JpdHRlbiB0byB0aGUgbmF0aXZlIGBhbGxvd1NjcmlwdHNgIGZpZWxkIGluIGBwYWNrYWdlLmpzb25gXG4gICAqICAgKHJlcXVpcmVzIG5wbSA+PSAxMS4xNjsgc2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpL3YxMS9jb21tYW5kcy9ucG0tYXBwcm92ZS1zY3JpcHRzKS5cbiAgICogLSBgQlVOYDogd3JpdHRlbiB0byB0aGUgbmF0aXZlIGB0cnVzdGVkRGVwZW5kZW5jaWVzYCBmaWVsZCBpblxuICAgKiAgIGBwYWNrYWdlLmpzb25gIChzZWUgaHR0cHM6Ly9idW4uY29tL2RvY3MvcG0vbGlmZWN5Y2xlKS5cbiAgICogLSBgUE5QTWA6IHdyaXR0ZW4gdG8gdGhlIGBvbmx5QnVpbHREZXBlbmRlbmNpZXNgIHNldHRpbmcgaW5cbiAgICogICBgcG5wbS13b3Jrc3BhY2UueWFtbGAgKHNlZSBodHRwczovL3BucG0uaW8vc2V0dGluZ3Mjb25seWJ1aWx0ZGVwZW5kZW5jaWVzKS5cbiAgICogLSBgWUFSTjJgLCBgWUFSTl9CRVJSWWA6IHdyaXR0ZW4gdG8gdGhlIG5hdGl2ZVxuICAgKiAgIGBkZXBlbmRlbmNpZXNNZXRhLjxwa2c+LmJ1aWx0YCBhbGxvd2xpc3QgaW4gYHBhY2thZ2UuanNvbmAsIGNvbWJpbmVkXG4gICAqICAgd2l0aCBgZW5hYmxlU2NyaXB0czogZmFsc2VgIGluIGAueWFybnJjLnltbGAgKHNlZVxuICAgKiAgIGh0dHBzOi8veWFybnBrZy5jb20vZmVhdHVyZXMvc2VjdXJpdHkjcG9zdGluc3RhbGxzKS4gSWYgeW91IHNldFxuICAgKiAgIGB5YXJuQmVycnlPcHRpb25zLnlhcm5SY09wdGlvbnMuZW5hYmxlU2NyaXB0c2AgZXhwbGljaXRseSwgdGhhdCB2YWx1ZVxuICAgKiAgIGlzIHJlc3BlY3RlZCBpbnN0ZWFkIG9mIGJlaW5nIG92ZXJyaWRkZW4uXG4gICAqIC0gYFlBUk5gLCBgWUFSTl9DTEFTU0lDYDogbm90IHN1cHBvcnRlZC4gWWFybiBDbGFzc2ljIGhhcyBubyBuYXRpdmVcbiAgICogICBtZWNoYW5pc20gdG8gYWxsb3dsaXN0IGluc3RhbGwgc2NyaXB0cyBmb3Igc3BlY2lmaWMgZGVwZW5kZW5jaWVzLlxuICAgKiAgIFNldHRpbmcgdGhpcyBvcHRpb24gd2l0aCBvbmUgb2YgdGhlc2UgcGFja2FnZSBtYW5hZ2VycyB0aHJvd3MgYW5cbiAgICogICBlcnJvciBhdCBzeW50aGVzaXMgdGltZS5cbiAgICogQGRlZmF1bHQgLSBhbGwgaW5zdGFsbCBzY3JpcHRzIGFyZSBhbGxvd2VkIHRvIHJ1biAocGFja2FnZSBtYW5hZ2VyIGRlZmF1bHQpXG4gICAqL1xuICByZWFkb25seSBhbGxvd1NjcmlwdHM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogQSBkaXJlY3Rvcnkgd2hpY2ggd2lsbCBjb250YWluIGJ1aWxkIGFydGlmYWN0cy5cbiAgICogQGRlZmF1bHQgXCJkaXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IGFydGlmYWN0c0RpcmVjdG9yeT86IHN0cmluZztcbiAgLyoqXG4gICAqIFJ1biBzZWN1cml0eSBhdWRpdCBvbiBkZXBlbmRlbmNpZXMuXG4gICAqIFdoZW4gZW5hYmxlZCwgY3JlYXRlcyBhbiBcImF1ZGl0XCIgdGFzayB0aGF0IGNoZWNrcyBmb3Iga25vd24gc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzXG4gICAqIGluIGRlcGVuZGVuY2llcy4gQnkgZGVmYXVsdCwgcnVucyBkdXJpbmcgZXZlcnkgYnVpbGQgYW5kIGNoZWNrcyBmb3IgXCJoaWdoXCIgc2V2ZXJpdHlcbiAgICogdnVsbmVyYWJpbGl0aWVzIG9yIGFib3ZlIGluIGFsbCBkZXBlbmRlbmNpZXMgKGluY2x1ZGluZyBkZXYgZGVwZW5kZW5jaWVzKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0RGVwcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTZWN1cml0eSBhdWRpdCBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYXVkaXREZXBzT3B0aW9ucz86IGphdmFzY3JpcHQuQXVkaXRPcHRpb25zO1xuICAvKipcbiAgICogQXV0aG9yJ3MgZS1tYWlsLlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yRW1haWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRob3IncyBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIElzIHRoZSBhdXRob3IgYW4gb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yT3JnYW5pemF0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dGhvcidzIFVSTCAvIFdlYnNpdGUuXG4gICAqL1xuICByZWFkb25seSBhdXRob3JVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbmFibGUgYW5kIGNvbmZpZ3VyZSB0aGUgJ2F1dG8gYXBwcm92ZScgd29ya2Zsb3cuXG4gICAqIEBkZWZhdWx0IC0gYXV0byBhcHByb3ZlIGlzIGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBhdXRvQXBwcm92ZU9wdGlvbnM/OiBnaXRodWIuQXV0b0FwcHJvdmVPcHRpb25zO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhcHByb3ZlIGRlcHMgdXBncmFkZSBQUnMsIGFsbG93aW5nIHRoZW0gdG8gYmUgbWVyZ2VkIGJ5IG1lcmdpZnkgKGlmIGNvbmZpZ3VyZWQpLlxuICAgKiBUaHJvdyBpZiBzZXQgdG8gdHJ1ZSBidXQgYGF1dG9BcHByb3ZlT3B0aW9uc2AgYXJlIG5vdCBkZWZpbmVkLlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9BcHByb3ZlVXBncmFkZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGQgYWxsIGV4ZWN1dGFibGVzIHVuZGVyIHRoZSBgYmluYCBkaXJlY3RvcnkgdG8geW91ciBgcGFja2FnZS5qc29uYCBmaWxlIHVuZGVyIHRoZSBgYmluYCBzZWN0aW9uLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhdXRvRGV0ZWN0QmluPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVuYWJsZSBhdXRvbWF0aWMgbWVyZ2luZyBvbiBHaXRIdWIuXG4gICAqIEhhcyBubyBlZmZlY3QgaWYgYGdpdGh1Yi5tZXJnaWZ5YFxuICAgKiBpcyBzZXQgdG8gZmFsc2UuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9NZXJnZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmUgb3B0aW9ucyBmb3IgYXV0b21hdGljIG1lcmdpbmcgb24gR2l0SHViLlxuICAgKiBIYXMgbm8gZWZmZWN0IGlmXG4gICAqIGBnaXRodWIubWVyZ2lmeWAgb3IgYGF1dG9NZXJnZWAgaXMgc2V0IHRvIGZhbHNlLlxuICAgKiBAZGVmYXVsdCAtIHNlZSBkZWZhdWx0cyBpbiBgQXV0b01lcmdlT3B0aW9uc2BcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9NZXJnZU9wdGlvbnM/OiBnaXRodWIuQXV0b01lcmdlT3B0aW9ucztcbiAgLyoqXG4gICAqIEJpbmFyeSBwcm9ncmFtcyB2ZW5kZWQgd2l0aCB5b3VyIG1vZHVsZS5cbiAgICogWW91IGNhbiB1c2UgdGhpcyBvcHRpb24gdG8gYWRkL2N1c3RvbWl6ZSBob3cgYmluYXJpZXMgYXJlIHJlcHJlc2VudGVkIGluXG4gICAqIHlvdXIgYHBhY2thZ2UuanNvbmAsIGJ1dCB1bmxlc3MgYGF1dG9EZXRlY3RCaW5gIGlzIGBmYWxzZWAsIGV2ZXJ5XG4gICAqIGV4ZWN1dGFibGUgZmlsZSB1bmRlciBgYmluYCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWRkZWQgdG8gdGhpcyBzZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYmluPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIFNldHVwIEJpb21lLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYmlvbWU/OiBib29sZWFuO1xuICAvKipcbiAgICogQmlvbWUgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGJpb21lT3B0aW9ucz86IGphdmFzY3JpcHQuQmlvbWVPcHRpb25zO1xuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdG8gd2hpY2ggaXNzdWVzIHNob3VsZCBiZSByZXBvcnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Z3NFbWFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1cmwgdG8geW91ciBwcm9qZWN0J3MgaXNzdWUgdHJhY2tlci5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Z3NVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYWNrYWdlcyB0aGF0IHNob3VsZCBoYXZlIHRoZWlyIGJ1aWxkIHNjcmlwdHMgZW5hYmxlZCBkdXJpbmcgaW5zdGFsbC5cbiAgICogWWFybiBCZXJyeSBkaXNhYmxlcyBidWlsZCBzY3JpcHRzIGJ5IGRlZmF1bHQgKGBlbmFibGVTY3JpcHRzOiBmYWxzZWApLlxuICAgKiBUaGlzIG9wdGlvbiBzZXRzIGBkZXBlbmRlbmNpZXNNZXRhLjxwa2c+LmJ1aWx0OiB0cnVlYCBpbiB0aGUgcm9vdCBgcGFja2FnZS5qc29uYFxuICAgKiBmb3IgZWFjaCBsaXN0ZWQgcGFja2FnZSwgYWxsb3dpbmcgdGhlbSB0byBydW4gdGhlaXIgaW5zdGFsbCBzY3JpcHRzLlxuICAgKiBPbmx5IGhhcyBhbiBlZmZlY3Qgd2hlbiB0aGUgbW9ub3JlcG8gdXNlcyBZYXJuIEJlcnJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRhYmxlUGFja2FnZXM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogV2hlbiBOeCBpcyBlbmFibGVkLCBhbHdheXMgYnVpbGQgdGhlIG1vbm9yZXBvIHVzaW5nIE54XG4gICAqIFdpbGwgYnVpbGQgcHJvamVjdHMgaW4gcGFyYWxsZWwgYW5kIGNhbiBpbXByb3ZlIGJ1aWxkIHBlcmZvcm1hbmNlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBidWlsZFdpdGhOeD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZWZpbmUgYSBHaXRIdWIgd29ya2Zsb3cgZm9yIGJ1aWxkaW5nIFBScy5cbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIG5vdCBhIHN1YnByb2plY3RcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkV29ya2Zsb3c/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgUFIgYnVpbGQgd29ya2Zsb3cuXG4gICAqL1xuICByZWFkb25seSBidWlsZFdvcmtmbG93T3B0aW9ucz86IGphdmFzY3JpcHQuQnVpbGRXb3JrZmxvd09wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgYGNvbW1pdC1hbmQtdGFnLXZlcnNpb25gIGNvbXBhdGlibGUgcGFja2FnZSB1c2VkIHRvIGJ1bXAgdGhlIHBhY2thZ2UgdmVyc2lvbiwgYXMgYSBkZXBlbmRlbmN5IHN0cmluZy5cbiAgICogVGhpcyBjYW4gYmUgYW55IGNvbXBhdGlibGUgcGFja2FnZSB2ZXJzaW9uLCBpbmNsdWRpbmcgdGhlIGRlcHJlY2F0ZWQgYHN0YW5kYXJkLXZlcnNpb25AOWAuXG4gICAqIEBkZWZhdWx0IC0gQSByZWNlbnQgdmVyc2lvbiBvZiBcImNvbW1pdC1hbmQtdGFnLXZlcnNpb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgYnVtcFBhY2thZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGRlcGVuZGVuY2llcyB0byBidW5kbGUgaW50byB0aGlzIG1vZHVsZS5cbiAgICogVGhlc2UgbW9kdWxlcyB3aWxsIGJlXG4gICAqIGFkZGVkIGJvdGggdG8gdGhlIGBkZXBlbmRlbmNpZXNgIHNlY3Rpb24gYW5kIGBidW5kbGVkRGVwZW5kZW5jaWVzYCBzZWN0aW9uIG9mXG4gICAqIHlvdXIgYHBhY2thZ2UuanNvbmAuXG4gICAqXG4gICAqIFRoZSByZWNvbW1lbmRhdGlvbiBpcyB0byBvbmx5IHNwZWNpZnkgdGhlIG1vZHVsZSBuYW1lIGhlcmUgKGUuZy5cbiAgICogYGV4cHJlc3NgKS4gVGhpcyB3aWxsIGJlaGF2ZSBzaW1pbGFyIHRvIGBwbnBtIGFkZGAgb3IgYG5wbSBpbnN0YWxsYCBpbiB0aGVcbiAgICogc2Vuc2UgdGhhdCBpdCB3aWxsIGFkZCB0aGUgbW9kdWxlIGFzIGEgZGVwZW5kZW5jeSB0byB5b3VyIGBwYWNrYWdlLmpzb25gXG4gICAqIGZpbGUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gKGBeYCkuIFlvdSBjYW4gc3BlY2lmeSBzZW12ZXIgcmVxdWlyZW1lbnRzIGluXG4gICAqIHRoZSBzYW1lIHN5bnRheCBwYXNzZWQgdG8gYHBucG0gYWRkYCBvciBgbnBtIGlgIChlLmcuIGBleHByZXNzQF4yYCkgYW5kXG4gICAqIHRoaXMgd2lsbCBiZSB3aGF0IHlvdXIgYHBhY2thZ2UuanNvbmAgd2lsbCBldmVudHVhbGx5IGluY2x1ZGUuXG4gICAqL1xuICByZWFkb25seSBidW5kbGVkRGVwcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBgQnVuZGxlcmAuXG4gICAqL1xuICByZWFkb25seSBidW5kbGVyT3B0aW9ucz86IGphdmFzY3JpcHQuQnVuZGxlck9wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiBCdW4gdG8gdXNlIGlmIHVzaW5nIEJ1biBhcyBhIHBhY2thZ2UgbWFuYWdlci5cbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkgYnVuVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEVuYWJsZSBHaXRIdWIgQWN0aW9ucyBleHByZXNzaW9ucyB2YWxpZGF0aW9uLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjaGVja0doYUV4cHJlc3Npb25zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB3aGljaCBsaWNlbnNlcyBzaG91bGQgYmUgZGVlbWVkIGFjY2VwdGFibGUgZm9yIHVzZSBieSBkZXBlbmRlbmNpZXMuXG4gICAqIFRoaXMgc2V0dGluZyB3aWxsIGNhdXNlIHRoZSBidWlsZCB0byBmYWlsLCBpZiBhbnkgcHJvaGliaXRlZCBvciBub3QgYWxsb3dlZCBsaWNlbnNlcyBhcmVzIGVuY291bnRlcmVkLlxuICAgKiBAZGVmYXVsdCAtIG5vIGxpY2Vuc2UgY2hlY2tzIGFyZSBydW4gZHVyaW5nIHRoZSBidWlsZCBhbmQgYWxsIGxpY2Vuc2VzIHdpbGwgYmUgYWNjZXB0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrTGljZW5zZXM/OiBqYXZhc2NyaXB0LkxpY2Vuc2VDaGVja2VyT3B0aW9ucztcbiAgLyoqXG4gICAqIEFkZCBhIGBjbG9iYmVyYCB0YXNrIHdoaWNoIHJlc2V0cyB0aGUgcmVwbyB0byBvcmlnaW4uXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSwgYnV0IGZhbHNlIGZvciBzdWJwcm9qZWN0c1xuICAgKi9cbiAgcmVhZG9ubHkgY2xvYmJlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBucG0gcGFja2FnZXMgdXNpbmcgQVdTIENvZGVBcnRpZmFjdC5cbiAgICogVGhpcyBpcyByZXF1aXJlZCBpZiBwdWJsaXNoaW5nIHBhY2thZ2VzIHRvLCBvciBpbnN0YWxsaW5nIHNjb3BlZCBwYWNrYWdlcyBmcm9tIEFXUyBDb2RlQXJ0aWZhY3RcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvZGVBcnRpZmFjdE9wdGlvbnM/OiBqYXZhc2NyaXB0LkNvZGVBcnRpZmFjdE9wdGlvbnM7XG4gIC8qKlxuICAgKiBEZWZpbmUgYSBHaXRIdWIgd29ya2Zsb3cgc3RlcCBmb3Igc2VuZGluZyBjb2RlIGNvdmVyYWdlIG1ldHJpY3MgdG8gaHR0cHM6Ly9jb2RlY292LmlvLyBVc2VzIGNvZGVjb3YvY29kZWNvdi1hY3Rpb25AdjUgQnkgZGVmYXVsdCwgT0lEQyBhdXRoIGlzIHVzZWQuIEFsdGVybmF0aXZlbHkgYSB0b2tlbiBjYW4gYmUgcHJvdmlkZWQgdmlhIGBjb2RlQ292VG9rZW5TZWNyZXRgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZUNvdj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIHNlY3JldCBuYW1lIGZvciBhIHNwZWNpZmllZCBodHRwczovL2NvZGVjb3YuaW8vIHRva2VuLlxuICAgKiBAZGVmYXVsdCAtIE9JREMgYXV0aCBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjb2RlQ292VG9rZW5TZWNyZXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNvbW1pdCB0aGUgbWFuYWdlZCBmaWxlcyBieSBkZWZhdWx0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjb21taXRHZW5lcmF0ZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogUGFja2FnZSBuYW1lcyB0aGF0IG11c3QgdXNlIGEgY29uc2lzdGVudCB2ZXJzaW9uIGFjcm9zcyBhbGwgd29ya3NwYWNlcy5cbiAgICogVXNlcyBZYXJuIEJlcnJ5IGNvbnN0cmFpbnRzIHRvIGVuZm9yY2UgdGhhdCBhbGwgd29ya3NwYWNlcyB1c2UgdGhlIHNhbWUgdmVyc2lvblxuICAgKiBvZiB0aGUgbGlzdGVkIHBhY2thZ2VzLiBUaGUgdmVyc2lvbiBpcyByZWFkIGZyb20gdGhlIHJvb3QgYGRldkRlcGVuZGVuY2llc2AuXG4gICAqIE9ubHkgaGFzIGFuIGVmZmVjdCB3aGVuIHRoZSBtb25vcmVwbyB1c2VzIFlhcm4gQmVycnkuXG4gICAqL1xuICByZWFkb25seSBjb25zaXN0ZW50VmVyc2lvbnM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogTGljZW5zZSBjb3B5cmlnaHQgb3duZXIuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIGF1dGhvck5hbWUgb3IgXCJcIiBpZiBgYXV0aG9yTmFtZWAgaXMgdW5kZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29weXJpZ2h0T3duZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29weXJpZ2h0IHllYXJzIHRvIHB1dCBpbiB0aGUgTElDRU5TRSBmaWxlLlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgeWVhclxuICAgKi9cbiAgcmVhZG9ubHkgY29weXJpZ2h0UGVyaW9kPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG1haW4gcmVsZWFzZSBicmFuY2guXG4gICAqIEBkZWZhdWx0IFwibWFpblwiXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0UmVsZWFzZUJyYW5jaD86IHN0cmluZztcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgZGVsZXRlIGxvY2tmaWxlcyBmcm9tIHBhY2thZ2UgbWFuYWdlcnMgdGhhdCBhcmUgbm90IHRoZSBhY3RpdmUgb25lLlxuICAgKiBPbmx5IHRyaWdnZXJlZCB3aGVuIHRoZSBsb2NrZmlsZSBmb3IgdGhlIGNvbmZpZ3VyZWQgcGFja2FnZVxuICAgKiBtYW5hZ2VyIGFscmVhZHkgZXhpc3RzLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIG1pZ3JhdGluZyBiZXR3ZWVuIHBhY2thZ2UgbWFuYWdlcnMgdG8gYXZvaWQgY29uZmxpY3RzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkZWxldGVPcnBoYW5lZExvY2tGaWxlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBVc2UgZGVwZW5kYWJvdCB0byBoYW5kbGUgZGVwZW5kZW5jeSB1cGdyYWRlcy5cbiAgICogQ2Fubm90IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgZGVwc1VwZ3JhZGVgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kYWJvdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBkZXBlbmRhYm90LlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kYWJvdE9wdGlvbnM/OiBnaXRodWIuRGVwZW5kYWJvdE9wdGlvbnM7XG4gIC8qKlxuICAgKiBSdW50aW1lIGRlcGVuZGVuY2llcyBvZiB0aGlzIG1vZHVsZS5cbiAgICogVGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIG9ubHkgc3BlY2lmeSB0aGUgbW9kdWxlIG5hbWUgaGVyZSAoZS5nLlxuICAgKiBgZXhwcmVzc2ApLiBUaGlzIHdpbGwgYmVoYXZlIHNpbWlsYXIgdG8gYHBucG0gYWRkYCBvciBgbnBtIGluc3RhbGxgIGluIHRoZVxuICAgKiBzZW5zZSB0aGF0IGl0IHdpbGwgYWRkIHRoZSBtb2R1bGUgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgYHBhY2thZ2UuanNvbmBcbiAgICogZmlsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiAoYF5gKS4gWW91IGNhbiBzcGVjaWZ5IHNlbXZlciByZXF1aXJlbWVudHMgaW5cbiAgICogdGhlIHNhbWUgc3ludGF4IHBhc3NlZCB0byBgcG5wbSBhZGRgIG9yIGBucG0gaWAgKGUuZy4gYGV4cHJlc3NAXjJgKSBhbmRcbiAgICogdGhpcyB3aWxsIGJlIHdoYXQgeW91ciBgcGFja2FnZS5qc29uYCB3aWxsIGV2ZW50dWFsbHkgaW5jbHVkZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGRlcHM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogVXNlIHRhc2tzIGFuZCBnaXRodWIgd29ya2Zsb3dzIHRvIGhhbmRsZSBkZXBlbmRlbmN5IHVwZ3JhZGVzLlxuICAgKiBDYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBkZXBlbmRhYm90YC5cbiAgICogQGRlZmF1bHQgLSBgdHJ1ZWAgZm9yIHJvb3QgcHJvamVjdHMsIGBmYWxzZWAgZm9yIHN1YnByb2plY3RzXG4gICAqL1xuICByZWFkb25seSBkZXBzVXBncmFkZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBgVXBncmFkZURlcGVuZGVuY2llc2AuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBkZXBzVXBncmFkZU9wdGlvbnM/OiBqYXZhc2NyaXB0LlVwZ3JhZGVEZXBlbmRlbmNpZXNPcHRpb25zO1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIGlzIGp1c3QgYSBzdHJpbmcgdGhhdCBoZWxwcyBwZW9wbGUgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGUgcGFja2FnZS5cbiAgICogSXQgY2FuIGJlIHVzZWQgd2hlbiBzZWFyY2hpbmcgZm9yIHBhY2thZ2VzIGluIGEgcGFja2FnZSBtYW5hZ2VyIGFzIHdlbGwuXG4gICAqIFNlZSBodHRwczovL2NsYXNzaWMueWFybnBrZy5jb20vZW4vZG9jcy9wYWNrYWdlLWpzb24vI3RvYy1kZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGQgYSBWU0NvZGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKHVzZWQgZm9yIEdpdEh1YiBDb2Rlc3BhY2VzKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRldkNvbnRhaW5lcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCdWlsZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgbW9kdWxlLlxuICAgKiBUaGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBvbmx5IGJlXG4gICAqIGF2YWlsYWJsZSBpbiB5b3VyIGJ1aWxkIGVudmlyb25tZW50IGJ1dCB3aWxsIG5vdCBiZSBmZXRjaGVkIHdoZW4gdGhpc1xuICAgKiBtb2R1bGUgaXMgY29uc3VtZWQuXG4gICAqXG4gICAqIFRoZSByZWNvbW1lbmRhdGlvbiBpcyB0byBvbmx5IHNwZWNpZnkgdGhlIG1vZHVsZSBuYW1lIGhlcmUgKGUuZy5cbiAgICogYGV4cHJlc3NgKS4gVGhpcyB3aWxsIGJlaGF2ZSBzaW1pbGFyIHRvIGBwbnBtIGFkZGAgb3IgYG5wbSBpbnN0YWxsYCBpbiB0aGVcbiAgICogc2Vuc2UgdGhhdCBpdCB3aWxsIGFkZCB0aGUgbW9kdWxlIGFzIGEgZGVwZW5kZW5jeSB0byB5b3VyIGBwYWNrYWdlLmpzb25gXG4gICAqIGZpbGUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gKGBeYCkuIFlvdSBjYW4gc3BlY2lmeSBzZW12ZXIgcmVxdWlyZW1lbnRzIGluXG4gICAqIHRoZSBzYW1lIHN5bnRheCBwYXNzZWQgdG8gYHBucG0gYWRkYCBvciBgbnBtIGlgIChlLmcuIGBleHByZXNzQF4yYCkgYW5kXG4gICAqIHRoaXMgd2lsbCBiZSB3aGF0IHlvdXIgYHBhY2thZ2UuanNvbmAgd2lsbCBldmVudHVhbGx5IGluY2x1ZGUuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBkZXZEZXBzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB0aGUgYGRldkVuZ2luZXNgIGZpZWxkIGluIGBwYWNrYWdlLmpzb25gLlxuICAgKiBUaGUgYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgcG9wdWxhdGVkIGJhc2VkIG9uXG4gICAqIHRoZSByZXNvbHZlZCBgcGFja2FnZU1hbmFnZXJgIHZhbHVlLiBBbnkgZmllbGRzIHByb3ZpZGVkIGhlcmUgYXJlIG1lcmdlZFxuICAgKiB3aXRoIHRoZSBhdXRvLXBvcHVsYXRlZCBgcGFja2FnZU1hbmFnZXJgIGVudHJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2RW5naW5lcz86IGphdmFzY3JpcHQuRGV2RW5naW5lcztcbiAgLyoqXG4gICAqIERvIG5vdCBnZW5lcmF0ZSBhIGB0c2NvbmZpZy5qc29uYCBmaWxlICh1c2VkIGJ5IGpzaWkgcHJvamVjdHMgc2luY2UgdHNjb25maWcuanNvbiBpcyBnZW5lcmF0ZWQgYnkgdGhlIGpzaWkgY29tcGlsZXIpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZVRzY29uZmlnPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERvIG5vdCBnZW5lcmF0ZSBhIGRldmVsb3BtZW50IHRzY29uZmlnIGZpbGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlVHNjb25maWdEZXY/OiBib29sZWFuO1xuICAvKipcbiAgICogRG9jZ2VuIGJ5IFR5cGVkb2MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkb2NnZW4/OiBib29sZWFuO1xuICAvKipcbiAgICogRG9jcyBkaXJlY3RvcnkuXG4gICAqIEBkZWZhdWx0IFwiZG9jc1wiXG4gICAqL1xuICByZWFkb25seSBkb2NzRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogTW9kdWxlIGVudHJ5cG9pbnQgKGBtYWluYCBpbiBgcGFja2FnZS5qc29uYCkuXG4gICAqIFNldCB0byBhbiBlbXB0eSBzdHJpbmcgdG8gbm90IGluY2x1ZGUgYG1haW5gIGluIHlvdXIgcGFja2FnZS5qc29uXG4gICAqIEBkZWZhdWx0IFwibGliL2luZGV4LmpzXCJcbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgLmQudHMgZmlsZSB0aGF0IGluY2x1ZGVzIHRoZSB0eXBlIGRlY2xhcmF0aW9ucyBmb3IgdGhpcyBtb2R1bGUuXG4gICAqIEBkZWZhdWx0IC0gLmQudHMgZmlsZSBkZXJpdmVkIGZyb20gdGhlIHByb2plY3QncyBlbnRyeXBvaW50ICh1c3VhbGx5IGxpYi9pbmRleC5kLnRzKVxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludFR5cGVzPzogc3RyaW5nO1xuICAvKipcbiAgICogRXNsaW50IG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gb3BpbmlvbmF0ZWQgZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBlc2xpbnRPcHRpb25zPzogamF2YXNjcmlwdC5Fc2xpbnRPcHRpb25zO1xuICAvKipcbiAgICogRW5hYmxlIEdpdEh1YiBpbnRlZ3JhdGlvbi5cbiAgICogRW5hYmxlZCBieSBkZWZhdWx0IGZvciByb290IHByb2plY3RzLiBEaXNhYmxlZCBmb3Igbm9uLXJvb3QgcHJvamVjdHMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1Yj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBHaXRIdWIgaW50ZWdyYXRpb24uXG4gICAqIEBkZWZhdWx0IC0gc2VlIEdpdEh1Yk9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1Yk9wdGlvbnM/OiBnaXRodWIuR2l0SHViT3B0aW9ucztcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW50cmllcyB0byAuZ2l0aWdub3JlLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aWdub3JlPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgLmdpdGlnbm9yZSBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0SWdub3JlT3B0aW9ucz86IElnbm9yZUZpbGVPcHRpb25zO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBnaXQuXG4gICAqL1xuICByZWFkb25seSBnaXRPcHRpb25zPzogR2l0T3B0aW9ucztcbiAgLyoqXG4gICAqIEFkZCBhIEdpdHBvZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGdpdHBvZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQYWNrYWdlJ3MgSG9tZXBhZ2UgLyBXZWJzaXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9tZXBhZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWZXJzaW9uIHJlcXVpcmVtZW50IG9mIGBwdWJsaWJgIHdoaWNoIGlzIHVzZWQgdG8gcHVibGlzaCBtb2R1bGVzIHRvIG5wbS5cbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkganNpaVJlbGVhc2VWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogS2V5d29yZHMgdG8gaW5jbHVkZSBpbiBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IGtleXdvcmRzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIFR5cGVzY3JpcHQgIGFydGlmYWN0cyBvdXRwdXQgZGlyZWN0b3J5LlxuICAgKiBAZGVmYXVsdCBcImxpYlwiXG4gICAqL1xuICByZWFkb25seSBsaWJkaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaWNlbnNlJ3MgU1BEWCBpZGVudGlmaWVyLlxuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Byb2plbi9wcm9qZW4vdHJlZS9tYWluL2xpY2Vuc2UtdGV4dCBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsaWNlbnNlcy5cbiAgICogVXNlIHRoZSBgbGljZW5zZWRgIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBubyBsaWNlbnNlIHRvIGJlIHNwZWNpZmllZC5cbiAgICogQGRlZmF1bHQgXCJBcGFjaGUtMi4wXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSBsaWNlbnNlIHNob3VsZCBiZSBhZGRlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29uZmlndXJlIGxvZ2dpbmcgb3B0aW9ucyBzdWNoIGFzIHZlcmJvc2l0eS5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmc/OiBMb2dnZXJPcHRpb25zO1xuICAvKipcbiAgICogTWFqb3IgdmVyc2lvbiB0byByZWxlYXNlIGZyb20gdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKiBJZiB0aGlzIGlzIHNwZWNpZmllZCwgd2UgYnVtcCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtYWpvciB2ZXJzaW9uIGxpbmUuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHdlIGJ1bXAgdGhlIGdsb2JhbCBsYXRlc3QgdmVyc2lvbi5cbiAgICogQGRlZmF1bHQgLSBNYWpvciB2ZXJzaW9uIGlzIG5vdCBlbmZvcmNlZC5cbiAgICovXG4gIHJlYWRvbmx5IG1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG5vZGUgdmVyc2lvbiBzdXBwb3J0ZWQgYnkgdGhpcyBwYWNrYWdlLiBNb3N0IHByb2plY3RzIHNob3VsZCBub3QgdXNlIHRoaXMgb3B0aW9uLlxuICAgKiBUaGUgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIHBhY2thZ2UgaXMgaW5jb21wYXRpYmxlIHdpdGggYW55IG5ld2VyIHZlcnNpb25zIG9mIG5vZGUuXG4gICAqIFRoaXMgcmVxdWlyZW1lbnQgaXMgZW5mb3JjZWQgdmlhIHRoZSBlbmdpbmVzIGZpZWxkLlxuICAgKlxuICAgKiBZb3Ugd2lsbCBub3JtYWxseSBub3QgbmVlZCB0byBzZXQgdGhpcyBvcHRpb24uXG4gICAqIENvbnNpZGVyIHRoaXMgb3B0aW9uIG9ubHkgaWYgeW91ciBwYWNrYWdlIGlzIGtub3duIHRvIG5vdCBmdW5jdGlvbiB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIG5vZGUuXG4gICAqIEBkZWZhdWx0IC0gbm8gbWF4aW11bSB2ZXJzaW9uIGlzIGVuZm9yY2VkXG4gICAqL1xuICByZWFkb25seSBtYXhOb2RlVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIE1pbmltYWwgTWFqb3IgdmVyc2lvbiB0byByZWxlYXNlLlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2V0IHRvIDEsIGFzIGJyZWFraW5nIGNoYW5nZXMgYmVmb3JlIHRoZSAxLnggbWFqb3JcbiAgICogcmVsZWFzZSBhcmUgbm90IGluY3JlbWVudGluZyB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIuXG4gICAqXG4gICAqIENhbiBub3QgYmUgc2V0IHRvZ2V0aGVyIHdpdGggYG1ham9yVmVyc2lvbmAuXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSB2ZXJzaW9uIGlzIGJlaW5nIGVuZm9yY2VkXG4gICAqL1xuICByZWFkb25seSBtaW5NYWpvclZlcnNpb24/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNaW5pbXVtIE5vZGUuanMgdmVyc2lvbiB0byByZXF1aXJlIHZpYSBwYWNrYWdlLmpzb24gYGVuZ2luZXNgIChpbmNsdXNpdmUpLlxuICAgKlxuICAgKiBPbmx5IHNldCB0aGlzIGlmIHlvdXIgcGFja2FnZSB3aWxsIG5vdCB3b3JrIHByb3Blcmx5IG9uIHNwZWNpZmljIChvbGRlcj8pXG4gICAqIE5vZGUgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gXCJlbmdpbmVzXCIgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBtaW5Ob2RlVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIG5hbWUgb2YgeW91ciBwcm9qZWN0LlxuICAgKiBAZGVmYXVsdCAkQkFTRURJUlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBzaGVsbCBjb21tYW5kIHRvIGNvbnRyb2wgdGhlIG5leHQgdmVyc2lvbiB0byByZWxlYXNlLlxuICAgKiBJZiBwcmVzZW50LCB0aGlzIHNoZWxsIGNvbW1hbmQgd2lsbCBiZSBydW4gYmVmb3JlIHRoZSBidW1wIGlzIGV4ZWN1dGVkLCBhbmRcbiAgICogaXQgZGV0ZXJtaW5lcyB3aGF0IHZlcnNpb24gdG8gcmVsZWFzZS4gSXQgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgZm9sbG93aW5nXG4gICAqIGVudmlyb25tZW50OlxuICAgKlxuICAgKiAtIFdvcmtpbmcgZGlyZWN0b3J5OiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuXG4gICAqIC0gYCRWRVJTSU9OYDogdGhlIGN1cnJlbnQgdmVyc2lvbi4gTG9va3MgbGlrZSBgMS4yLjNgLlxuICAgKiAtIGAkTEFURVNUX1RBR2A6IHRoZSBtb3N0IHJlY2VudCB0YWcuIExvb2tzIGxpa2UgYHByZWZpeC12MS4yLjNgLCBvciBtYXkgYmUgdW5zZXQuXG4gICAqIC0gYCRTVUdHRVNURURfQlVNUGA6IHRoZSBzdWdnZXN0ZWQgYnVtcCBhY3Rpb24gYmFzZWQgb24gY29tbWl0cy4gT25lIG9mIGBtYWpvcnxtaW5vcnxwYXRjaHxub25lYC5cbiAgICpcbiAgICogVGhlIGNvbW1hbmQgc2hvdWxkIHByaW50IG9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIGBzdGRvdXRgOlxuICAgKlxuICAgKiAtIE5vdGhpbmc6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiBjb21taXQgaGlzdG9yeS5cbiAgICogLSBgeC55LnpgOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIGB4LnkuemAuXG4gICAqIC0gYG1ham9yfG1pbm9yfHBhdGNoYDogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSB0aGUgY3VycmVudCB2ZXJzaW9uIG51bWJlclxuICAgKiAgIHdpdGggdGhlIGluZGljYXRlZCBjb21wb25lbnQgYnVtcGVkLlxuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgY2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGBtaW5NYWpvclZlcnNpb25gOyB0aGUgaW52b2tlZFxuICAgKiBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgZWZmZWN0cyBvZiBgbWluTWFqb3JWZXJzaW9uYC5cbiAgICogQGRlZmF1bHQgLSBUaGUgbmV4dCB2ZXJzaW9uIHdpbGwgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgY29tbWl0IGhpc3RvcnkgYW5kIHByb2plY3Qgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBuZXh0VmVyc2lvbkNvbW1hbmQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBY2Nlc3MgbGV2ZWwgb2YgdGhlIG5wbSBwYWNrYWdlLlxuICAgKiBAZGVmYXVsdCAtIGZvciBzY29wZWQgcGFja2FnZXMgKGUuZy4gYGZvb0BiYXJgKSwgdGhlIGRlZmF1bHQgaXNcbmBOcG1BY2Nlc3MuUkVTVFJJQ1RFRGAsIGZvciBub24tc2NvcGVkIHBhY2thZ2VzLCB0aGUgZGVmYXVsdCBpc1xuYE5wbUFjY2Vzcy5QVUJMSUNgLlxuICAgKi9cbiAgcmVhZG9ubHkgbnBtQWNjZXNzPzogamF2YXNjcmlwdC5OcG1BY2Nlc3M7XG4gIC8qKlxuICAgKiBUaGUgbnBtRGlzdFRhZyB0byB1c2Ugd2hlbiBwdWJsaXNoaW5nIGZyb20gdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKiBUbyBzZXQgdGhlIG5wbSBkaXN0LXRhZyBmb3IgcmVsZWFzZSBicmFuY2hlcywgc2V0IHRoZSBgbnBtRGlzdFRhZ2AgcHJvcGVydHlcbiAgICogZm9yIGVhY2ggYnJhbmNoLlxuICAgKiBAZGVmYXVsdCBcImxhdGVzdFwiXG4gICAqL1xuICByZWFkb25seSBucG1EaXN0VGFnPzogc3RyaW5nO1xuICAvKipcbiAgICogRGVmaW5lcyBhbiAubnBtaWdub3JlIGZpbGUuIE5vcm1hbGx5IHRoaXMgaXMgb25seSBuZWVkZWQgZm9yIGxpYnJhcmllcyB0aGF0IGFyZSBwYWNrYWdlZCBhcyB0YXJiYWxscy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbnBtaWdub3JlRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIC5ucG1pZ25vcmUgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IG5wbUlnbm9yZU9wdGlvbnM/OiBJZ25vcmVGaWxlT3B0aW9ucztcbiAgLyoqXG4gICAqIFNob3VsZCBwcm92ZW5hbmNlIHN0YXRlbWVudHMgYmUgZ2VuZXJhdGVkIHdoZW4gdGhlIHBhY2thZ2UgaXMgcHVibGlzaGVkLlxuICAgKiBBIHN1cHBvcnRlZCBwYWNrYWdlIG1hbmFnZXIgaXMgcmVxdWlyZWQgdG8gcHVibGlzaCBhIHBhY2thZ2Ugd2l0aCBucG0gcHJvdmVuYW5jZSBzdGF0ZW1lbnRzIGFuZFxuICAgKiB5b3Ugd2lsbCBuZWVkIHRvIHVzZSBhIHN1cHBvcnRlZCBDSS9DRCBwcm92aWRlci5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZSBwcm9qZW4gYFJlbGVhc2VgIGFuZCBgUHVibGlzaGVyYCBjb21wb25lbnRzIGFyZSB1c2luZyBgcHVibGliYCB0byBwdWJsaXNoIHBhY2thZ2VzLFxuICAgKiB3aGljaCBpcyB1c2luZyBucG0gaW50ZXJuYWxseSBhbmQgc3VwcG9ydHMgcHJvdmVuYW5jZSBzdGF0ZW1lbnRzIGluZGVwZW5kZW50bHkgb2YgdGhlIHBhY2thZ2UgbWFuYWdlciB1c2VkLlxuICAgKiBAZGVmYXVsdCAtIHRydWUgZm9yIHB1YmxpYyBwYWNrYWdlcywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBucG1Qcm92ZW5hbmNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIFVSTCBvZiB0aGUgbnBtIHBhY2thZ2UgcmVnaXN0cnkuXG4gICAqIE11c3QgYmUgYSBVUkwgKGUuZy4gc3RhcnQgd2l0aCBcImh0dHBzOi8vXCIgb3IgXCJodHRwOi8vXCIpXG4gICAqIEBkZWZhdWx0IFwiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmdcIlxuICAgKi9cbiAgcmVhZG9ubHkgbnBtUmVnaXN0cnlVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIHRoZSBOUE0gdG9rZW4gdG8gdXNlIHdoZW4gcHVibGlzaGluZyBwYWNrYWdlcy5cbiAgICogQGRlZmF1bHQgXCJOUE1fVE9LRU5cIlxuICAgKi9cbiAgcmVhZG9ubHkgbnBtVG9rZW5TZWNyZXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBVc2UgdHJ1c3RlZCBwdWJsaXNoaW5nIGZvciBwdWJsaXNoaW5nIHRvIG5wbWpzLmNvbSBOZWVkcyB0byBiZSBwcmUtY29uZmlndXJlZCBvbiBucG0uanMgdG8gd29yay5cbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbnBtVHJ1c3RlZFB1Ymxpc2hpbmc/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIHRoZSBpbnRlZ3JhdGlvbiB3aXRoIE54IGluIHRoZSBtb25vcmVwb1xuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbng/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0LlxuICAgKiBSZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeSwgYWxsIGZpbGVzIGFyZSBzeW50aGVzaXplZC5cbiAgICpcbiAgICogSWYgdGhpcyBwcm9qZWN0IGhhcyBhIHBhcmVudCwgdGhpcyBkaXJlY3RvcnkgaXMgcmVsYXRpdmUgdG8gdGhlIHBhcmVudFxuICAgKiBkaXJlY3RvcnkgYW5kIGl0IGNhbm5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgcGFyZW50IG9yIGFueSBvZiBpdCdzIG90aGVyXG4gICAqIHN1YnByb2plY3RzLlxuICAgKiBAZGVmYXVsdCBcIi5cIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogRGVmaW5lcyBhIGBwYWNrYWdlYCB0YXNrIHRoYXQgd2lsbCBwcm9kdWNlIGFuIG5wbSB0YXJiYWxsIHVuZGVyIHRoZSBhcnRpZmFjdHMgZGlyZWN0b3J5IChlLmcuIGBkaXN0YCkuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2U/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIFwibmFtZVwiIGluIHBhY2thZ2UuanNvbi5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0cyB0byBwcm9qZWN0IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhcmVudCBwcm9qZWN0LCBpZiB0aGlzIHByb2plY3QgaXMgcGFydCBvZiBhIGJpZ2dlciBwcm9qZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50PzogUHJvamVjdDtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBwZWVyRGVwc2AuXG4gICAqL1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jeU9wdGlvbnM/OiBqYXZhc2NyaXB0LlBlZXJEZXBlbmRlbmN5T3B0aW9ucztcbiAgLyoqXG4gICAqIFBlZXIgZGVwZW5kZW5jaWVzIGZvciB0aGlzIG1vZHVsZS5cbiAgICogRGVwZW5kZW5jaWVzIGxpc3RlZCBoZXJlIGFyZSByZXF1aXJlZCB0b1xuICAgKiBiZSBpbnN0YWxsZWQgKGFuZCBzYXRpc2ZpZWQpIGJ5IHRoZSBfY29uc3VtZXJfIG9mIHRoaXMgbGlicmFyeS4gVXNpbmcgcGVlclxuICAgKiBkZXBlbmRlbmNpZXMgYWxsb3dzIHlvdSB0byBlbnN1cmUgdGhhdCBvbmx5IGEgc2luZ2xlIG1vZHVsZSBvZiBhIGNlcnRhaW5cbiAgICogbGlicmFyeSBleGlzdHMgaW4gdGhlIGBub2RlX21vZHVsZXNgIHRyZWUgb2YgeW91ciBjb25zdW1lcnMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBwcmlvciB0byBucG1ANywgcGVlciBkZXBlbmRlbmNpZXMgYXJlIF9ub3RfIGF1dG9tYXRpY2FsbHlcbiAgICogaW5zdGFsbGVkLCB3aGljaCBtZWFucyB0aGF0IGFkZGluZyBwZWVyIGRlcGVuZGVuY2llcyB0byBhIGxpYnJhcnkgd2lsbCBiZSBhXG4gICAqIGJyZWFraW5nIGNoYW5nZSBmb3IgeW91ciBjdXN0b21lcnMuXG4gICAqXG4gICAqIFVubGVzcyBgcGVlckRlcGVuZGVuY3lPcHRpb25zLnBpbm5lZERldkRlcGVuZGVuY3lgIGlzIGRpc2FibGVkIChpdCBpc1xuICAgKiBlbmFibGVkIGJ5IGRlZmF1bHQpLCBwcm9qZW4gd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCBhIGRldiBkZXBlbmRlbmN5IHdpdGggYVxuICAgKiBwaW5uZWQgdmVyc2lvbiBmb3IgZWFjaCBwZWVyIGRlcGVuZGVuY3kuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB5b3UgYnVpbGQgJlxuICAgKiB0ZXN0IHlvdXIgbW9kdWxlIGFnYWluc3QgdGhlIGxvd2VzdCBwZWVyIHZlcnNpb24gcmVxdWlyZWQuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBwZWVyRGVwcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBwbnBtLlxuICAgKiBAZGVmYXVsdCAtIGFsbCBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHBucG1PcHRpb25zPzogamF2YXNjcmlwdC5QbnBtT3B0aW9ucztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIFBOUE0gdG8gdXNlIGlmIHVzaW5nIFBOUE0gYXMgYSBwYWNrYWdlIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IFwiMTAuMzMuMFwiXG4gICAqL1xuICByZWFkb25seSBwbnBtVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFN0ZXBzIHRvIGV4ZWN1dGUgYWZ0ZXIgYnVpbGQgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSB3b3JrZmxvdy5cbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IHBvc3RCdWlsZFN0ZXBzPzogQXJyYXk8Z2l0aHViLndvcmtmbG93cy5Kb2JTdGVwPjtcbiAgLyoqXG4gICAqIEJ1bXAgdmVyc2lvbnMgZnJvbSB0aGUgZGVmYXVsdCBicmFuY2ggYXMgcHJlLXJlbGVhc2VzIChlLmcuIFwiYmV0YVwiLCBcImFscGhhXCIsIFwicHJlXCIpLlxuICAgKiBAZGVmYXVsdCAtIG5vcm1hbCBzZW1hbnRpYyB2ZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlcmVsZWFzZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFNldHVwIHByZXR0aWVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJldHRpZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHByZXR0aWVyT3B0aW9ucz86IGphdmFzY3JpcHQuUHJldHRpZXJPcHRpb25zO1xuICAvKipcbiAgICogR2VuZXJhdGUgYSBwcm9qZWN0IHRyZWUgZmlsZSAoYC5wcm9qZW4vdHJlZS5qc29uYCkgdGhhdCBzaG93cyBhbGwgY29tcG9uZW50cyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gVXNlZnVsIGZvciB1bmRlcnN0YW5kaW5nIHlvdXIgcHJvamVjdCBzdHJ1Y3R1cmUgYW5kIGRlYnVnZ2luZy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RUcmVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBzaGVsbCBjb21tYW5kIHRvIHVzZSBpbiBvcmRlciB0byBydW4gdGhlIHByb2plbiBDTEkuXG4gICAqIENhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSBpbiBzcGVjaWFsIGVudmlyb25tZW50cy5cbiAgICogQGRlZmF1bHQgXCJucHggcHJvamVuXCJcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbkNvbW1hbmQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDaG9vc2UgYSBtZXRob2Qgb2YgcHJvdmlkaW5nIEdpdEh1YiBBUEkgYWNjZXNzIGZvciBwcm9qZW4gd29ya2Zsb3dzLlxuICAgKiBAZGVmYXVsdCAtIHVzZSBhIHBlcnNvbmFsIGFjY2VzcyB0b2tlbiBuYW1lZCBQUk9KRU5fR0lUSFVCX1RPS0VOXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5DcmVkZW50aWFscz86IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscztcbiAgLyoqXG4gICAqIEluZGljYXRlcyBvZiBcInByb2plblwiIHNob3VsZCBiZSBpbnN0YWxsZWQgYXMgYSBkZXZEZXBlbmRlbmN5LlxuICAgKiBAZGVmYXVsdCAtIHRydWUgaWYgbm90IGEgc3VicHJvamVjdFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVuRGV2RGVwZW5kZW5jeT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSAob25jZSkgLnByb2plbnJjLmpzIChpbiBKYXZhU2NyaXB0KS4gU2V0IHRvIGBmYWxzZWAgaW4gb3JkZXIgdG8gZGlzYWJsZSAucHJvamVucmMuanMgZ2VuZXJhdGlvbi5cbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIHByb2plbnJjSnNvbiBpcyBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNKcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSAob25jZSkgLnByb2plbnJjLmpzb24gKGluIEpTT04pLiBTZXQgdG8gYGZhbHNlYCBpbiBvcmRlciB0byBkaXNhYmxlIC5wcm9qZW5yYy5qc29uIGdlbmVyYXRpb24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY0pzb24/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgLnByb2plbnJjLmpzb24uXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY0pzb25PcHRpb25zPzogUHJvamVucmNKc29uT3B0aW9ucztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIC5wcm9qZW5yYy5qcy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbnJjSnNPcHRpb25zPzogamF2YXNjcmlwdC5Qcm9qZW5yY09wdGlvbnM7XG4gIC8qKlxuICAgKiBVc2UgVHlwZVNjcmlwdCBmb3IgeW91ciBwcm9qZW5yYyBmaWxlIChgLnByb2plbnJjLnRzYCkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY1RzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIC5wcm9qZW5yYy50cy5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plbnJjVHNPcHRpb25zPzogdHlwZXNjcmlwdC5Qcm9qZW5yY09wdGlvbnM7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHByb2plbiB0byBpbnN0YWxsLlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHRzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plblZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbnN0ZWFkIG9mIGFjdHVhbGx5IHB1Ymxpc2hpbmcgdG8gcGFja2FnZSBtYW5hZ2VycywganVzdCBwcmludCB0aGUgcHVibGlzaGluZyBjb21tYW5kLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaERyeVJ1bj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZWZpbmUgcHVibGlzaGluZyB0YXNrcyB0aGF0IGNhbiBiZSBleGVjdXRlZCBtYW51YWxseSBhcyB3ZWxsIGFzIHdvcmtmbG93cy5cbiAgICogTm9ybWFsbHksIHB1Ymxpc2hpbmcgb25seSBoYXBwZW5zIHdpdGhpbiBhdXRvbWF0ZWQgd29ya2Zsb3dzLiBFbmFibGUgdGhpc1xuICAgKiBpbiBvcmRlciB0byBjcmVhdGUgYSBwdWJsaXNoaW5nIHRhc2sgZm9yIGVhY2ggcHVibGlzaGluZyBhY3Rpdml0eS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUYXNrcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmNsdWRlIGEgR2l0SHViIHB1bGwgcmVxdWVzdCB0ZW1wbGF0ZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RUZW1wbGF0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgY29udGVudHMgb2YgdGhlIHB1bGwgcmVxdWVzdCB0ZW1wbGF0ZS5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IGNvbnRlbnRcbiAgICovXG4gIHJlYWRvbmx5IHB1bGxSZXF1ZXN0VGVtcGxhdGVDb250ZW50cz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgUkVBRE1FIHNldHVwLlxuICAgKiBAZGVmYXVsdCAtIHsgZmlsZW5hbWU6ICdSRUFETUUubWQnLCBjb250ZW50czogJyMgcmVwbGFjZSB0aGlzJyB9XG4gICAqL1xuICByZWFkb25seSByZWFkbWU/OiBTYW1wbGVSZWFkbWVQcm9wcztcbiAgLyoqXG4gICAqIEZpbmQgY29tbWl0cyB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIHJlbGVhc2FibGUgVXNlZCB0byBkZWNpZGUgaWYgYSByZWxlYXNlIGlzIHJlcXVpcmVkLlxuICAgKiBAZGVmYXVsdCBSZWxlYXNhYmxlQ29tbWl0cy5ldmVyeUNvbW1pdCgpXG4gICAqL1xuICByZWFkb25seSByZWxlYXNhYmxlQ29tbWl0cz86IFJlbGVhc2FibGVDb21taXRzO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWRkIHJlbGVhc2Ugd29ya2Zsb3dzIGZvciB0aGlzIHJlcG9zaXRvcnlcbiAgICogQGRlZmF1bHQgLSBObyByZWxlYXNlXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZXMgYWRkaXRpb25hbCByZWxlYXNlIGJyYW5jaGVzLlxuICAgKiBBIHdvcmtmbG93IHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaFxuICAgKiByZWxlYXNlIGJyYW5jaCB3aGljaCB3aWxsIHB1Ymxpc2ggcmVsZWFzZXMgZnJvbSBjb21taXRzIGluIHRoaXMgYnJhbmNoLlxuICAgKiBFYWNoIHJlbGVhc2UgYnJhbmNoIF9tdXN0XyBiZSBhc3NpZ25lZCBhIG1ham9yIHZlcnNpb24gbnVtYmVyIHdoaWNoIGlzIHVzZWRcbiAgICogdG8gZW5mb3JjZSB0aGF0IHZlcnNpb25zIHB1Ymxpc2hlZCBmcm9tIHRoYXQgYnJhbmNoIGFsd2F5cyB1c2UgdGhhdCBtYWpvclxuICAgKiB2ZXJzaW9uLiBJZiBtdWx0aXBsZSBicmFuY2hlcyBhcmUgdXNlZCwgdGhlIGBtYWpvclZlcnNpb25gIGZpZWxkIG11c3QgYWxzb1xuICAgKiBiZSBwcm92aWRlZCBmb3IgdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgYnJhbmNoZXMgYXJlIHVzZWQgZm9yIHJlbGVhc2UuIHlvdSBjYW4gdXNlXG5gYWRkQnJhbmNoKClgIHRvIGFkZCBhZGRpdGlvbmFsIGJyYW5jaGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUJyYW5jaGVzPzogUmVjb3JkPHN0cmluZywgcmVsZWFzZS5CcmFuY2hPcHRpb25zPjtcbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgQWN0aW9ucyBlbnZpcm9ubWVudCB1c2VkIGZvciB0aGUgcmVsZWFzZS5cbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBhZGQgYW4gZXhwbGljaXQgYXBwcm92YWwgc3RlcCB0byB0aGUgcmVsZWFzZVxuICAgKiBvciBsaW1pdCB3aG8gY2FuIGluaXRpYXRlIGEgcmVsZWFzZSB0aHJvdWdoIGVudmlyb25tZW50IHByb3RlY3Rpb24gcnVsZXMuXG4gICAqXG4gICAqIFdoZW4gbXVsdGlwbGUgYXJ0aWZhY3RzIGFyZSByZWxlYXNlZCwgdGhlIGVudmlyb25tZW50IGNhbiBiZSBvdmVyd3JpdHRlblxuICAgKiBvbiBhIHBlciBhcnRpZmFjdCBiYXNpcy5cbiAgICogQGRlZmF1bHQgLSBubyBlbnZpcm9ubWVudCB1c2VkLCB1bmxlc3Mgc2V0IGF0IHRoZSBhcnRpZmFjdCBsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUVudmlyb25tZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogQ3JlYXRlIGEgZ2l0aHViIGlzc3VlIG9uIGV2ZXJ5IGZhaWxlZCBwdWJsaXNoaW5nIHRhc2suXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlRmFpbHVyZUlzc3VlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCB0byBhcHBseSB0byBpc3N1ZXMgaW5kaWNhdGluZyBwdWJsaXNoIGZhaWx1cmVzLlxuICAgKiBPbmx5IGFwcGxpZXMgaWYgYHJlbGVhc2VGYWlsdXJlSXNzdWVgIGlzIHRydWUuXG4gICAqIEBkZWZhdWx0IFwiZmFpbGVkLXJlbGVhc2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUZhaWx1cmVJc3N1ZUxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIHJlbGVhc2Ugd29ya2Zsb3dzXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlT3B0aW9ucz86IHlhcm4uTW9ub3JlcG9SZWxlYXNlT3B0aW9ucztcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkIHRoZSBnaXZlbiBwcmVmaXggdG8gcmVsZWFzZSB0YWdzLiBVc2VmdWwgaWYgeW91IGFyZSByZWxlYXNpbmcgb24gbXVsdGlwbGUgYnJhbmNoZXMgd2l0aCBvdmVybGFwcGluZyB2ZXJzaW9uIG51bWJlcnMuXG4gICAqIE5vdGU6IHRoaXMgcHJlZml4IGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBsYXRlc3QgdGFnZ2VkIHZlcnNpb25cbiAgICogd2hlbiBidW1waW5nLCBzbyBpZiB5b3UgY2hhbmdlIHRoaXMgb24gYSBwcm9qZWN0IHdpdGggYW4gZXhpc3RpbmcgdmVyc2lvblxuICAgKiBoaXN0b3J5LCB5b3UgbWF5IG5lZWQgdG8gbWFudWFsbHkgdGFnIHlvdXIgbGF0ZXN0IHJlbGVhc2VcbiAgICogd2l0aCB0aGUgbmV3IHByZWZpeC5cbiAgICogQGRlZmF1bHQgXCJ2XCJcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUYWdQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHJlbGVhc2UgdG8gbnBtIHdoZW4gbmV3IHZlcnNpb25zIGFyZSBpbnRyb2R1Y2VkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRvTnBtPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSByZWxlYXNlIHRyaWdnZXIgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAtIENvbnRpbnVvdXMgcmVsZWFzZXMgKGBSZWxlYXNlVHJpZ2dlci5jb250aW51b3VzKClgKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRyaWdnZXI/OiByZWxlYXNlLlJlbGVhc2VUcmlnZ2VyO1xuICAvKipcbiAgICogQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciByZWxlYXNlIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd0Vudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGVmYXVsdCByZWxlYXNlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBcInJlbGVhc2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVdvcmtmbG93TmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc2V0IG9mIHdvcmtmbG93IHN0ZXBzIHRvIGV4ZWN1dGUgaW4gb3JkZXIgdG8gc2V0dXAgdGhlIHdvcmtmbG93IGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd1NldHVwU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogVXNlIHJlbm92YXRlYm90IHRvIGhhbmRsZSBkZXBlbmRlbmN5IHVwZ3JhZGVzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVub3ZhdGVib3Q/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcmVub3ZhdGVib3QuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSByZW5vdmF0ZWJvdE9wdGlvbnM/OiBSZW5vdmF0ZWJvdE9wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSBpcyB0aGUgbG9jYXRpb24gd2hlcmUgdGhlIGFjdHVhbCBjb2RlIGZvciB5b3VyIHBhY2thZ2UgbGl2ZXMuXG4gICAqIFNlZSBodHRwczovL2NsYXNzaWMueWFybnBrZy5jb20vZW4vZG9jcy9wYWNrYWdlLWpzb24vI3RvYy1yZXBvc2l0b3J5XG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogSWYgdGhlIHBhY2thZ2UuanNvbiBmb3IgeW91ciBwYWNrYWdlIGlzIG5vdCBpbiB0aGUgcm9vdCBkaXJlY3RvcnkgKGZvciBleGFtcGxlIGlmIGl0IGlzIHBhcnQgb2YgYSBtb25vcmVwbyksIHlvdSBjYW4gc3BlY2lmeSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGl0IGxpdmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeURpcmVjdG9yeT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBUeXBlU2NyaXB0IHJ1bm5lciB0byB1c2UgZm9yIGV4ZWN1dGluZyBUeXBlU2NyaXB0IGZpbGVzLlxuICAgKiBUaGlzIGlzIGEgcHJvamVjdC1sZXZlbCBzZXR0aW5nIHRoYXQgY29tcG9uZW50cyAoZS5nLiBwcm9qZW5yYykgd2lsbFxuICAgKiB1c2UgYXMgdGhlaXIgZGVmYXVsdCBydW5uZXIuXG4gICAqIEBkZWZhdWx0IFR5cGVTY3JpcHRSdW5uZXIudHNOb2RlKClcbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lcj86IHR5cGVzY3JpcHQuVHlwZVNjcmlwdFJ1bm5lcjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHByaXZhdGVseSBob3N0ZWQgc2NvcGVkIHBhY2thZ2VzLlxuICAgKiBAZGVmYXVsdCAtIGZldGNoIGFsbCBzY29wZWQgcGFja2FnZXMgZnJvbSB0aGUgcHVibGljIG5wbSByZWdpc3RyeVxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGVkUGFja2FnZXNPcHRpb25zPzogQXJyYXk8amF2YXNjcmlwdC5TY29wZWRQYWNrYWdlc09wdGlvbnM+O1xuICAvKipcbiAgICogVHlwZXNjcmlwdCBzb3VyY2VzIGRpcmVjdG9yeS5cbiAgICogQGRlZmF1bHQgXCJzcmNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogUGFja2FnZSdzIFN0YWJpbGl0eS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWJpbGl0eT86IHN0cmluZztcbiAgLyoqXG4gICAqIEF1dG8tY2xvc2Ugb2Ygc3RhbGUgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3QuXG4gICAqIFNlZSBgc3RhbGVPcHRpb25zYCBmb3Igb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN0YWxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG8tY2xvc2Ugc3RhbGUgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzLlxuICAgKiBUbyBkaXNhYmxlIHNldCBgc3RhbGVgIHRvIGBmYWxzZWAuXG4gICAqIEBkZWZhdWx0IC0gc2VlIGRlZmF1bHRzIGluIGBTdGFsZU9wdGlvbnNgXG4gICAqL1xuICByZWFkb25seSBzdGFsZU9wdGlvbnM/OiBnaXRodWIuU3RhbGVPcHRpb25zO1xuICAvKipcbiAgICogSmVzdCB0ZXN0cyBkaXJlY3RvcnkuIFRlc3RzIGZpbGVzIHNob3VsZCBiZSBuYW1lZCBgeHh4LnRlc3QudHNgLlxuICAgKiBJZiB0aGlzIGRpcmVjdG9yeSBpcyB1bmRlciBgc3JjZGlyYCAoZS5nLiBgc3JjL3Rlc3RgLCBgc3JjL19fdGVzdHNfX2ApLFxuICAgKiB0aGVuIHRlc3RzIGFyZSBnb2luZyB0byBiZSBjb21waWxlZCBpbnRvIGBsaWIvYCBhbmQgZXhlY3V0ZWQgYXMgamF2YXNjcmlwdC5cbiAgICogSWYgdGhlIHRlc3QgZGlyZWN0b3J5IGlzIG91dHNpZGUgb2YgYHNyY2AsIHRoZW4gd2UgY29uZmlndXJlIGplc3QgdG9cbiAgICogY29tcGlsZSB0aGUgY29kZSBpbi1tZW1vcnkuXG4gICAqIEBkZWZhdWx0IFwidGVzdFwiXG4gICAqL1xuICByZWFkb25seSB0ZXN0ZGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIFRTQ29uZmlnLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWc/OiBqYXZhc2NyaXB0LlR5cGVzY3JpcHRDb25maWdPcHRpb25zO1xuICAvKipcbiAgICogQ3VzdG9tIHRzY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZy5qc29uIGZpbGUgKHVzZWQgZm9yIHRlc3RpbmcpLlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgcHJvZHVjdGlvbiB0c2NvbmZpZyBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZ0Rldj86IGphdmFzY3JpcHQuVHlwZXNjcmlwdENvbmZpZ09wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSAoYW5kIHBhdGgpIG9mIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZyBmaWxlLlxuICAgKiBCeSBkZWZhdWx0IHRoaXMgbGl2ZXMgaW5zaWRlIHRoZSB0ZXN0IGRpcmVjdG9yeSAoZS5nLiBgdGVzdC90c2NvbmZpZy5qc29uYClcbiAgICogc28gdGhhdCB0aGUgVHlwZVNjcmlwdCBsYW5ndWFnZSBzZXJ2aWNlIHJlc29sdmVzIGl0IGFzIHRoZSBuZWFyZXN0IGNvbmZpZ1xuICAgKiBmb3IgdGVzdCBmaWxlcy5cbiAgICogQGRlZmF1bHQgLSBcInt0ZXN0ZGlyfS90c2NvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnRGV2RmlsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHRzLWplc3QuXG4gICAqL1xuICByZWFkb25seSB0c0plc3RPcHRpb25zPzogdHlwZXNjcmlwdC5Uc0plc3RPcHRpb25zO1xuICAvKipcbiAgICogVHlwZVNjcmlwdCB2ZXJzaW9uIHRvIHVzZS5cbiAgICogTk9URTogVHlwZXNjcmlwdCBpcyBub3Qgc2VtYW50aWNhbGx5IHZlcnNpb25lZCBhbmQgc2hvdWxkIHJlbWFpbiBvbiB0aGVcbiAgICogc2FtZSBtaW5vciwgc28gd2UgcmVjb21tZW5kIHVzaW5nIGEgYH5gIGRlcGVuZGVuY3kgKGUuZy4gYH4xLjIuM2ApLlxuICAgKiBAZGVmYXVsdCBcImxhdGVzdFwiXG4gICAqL1xuICByZWFkb25seSB0eXBlc2NyaXB0VmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBjb25maWd1cmF0aW9uIHVzZWQgd2hlbiBjcmVhdGluZyBjaGFuZ2Vsb2cgd2l0aCBjb21taXQtYW5kLXRhZy12ZXJzaW9uIHBhY2thZ2UuXG4gICAqIEdpdmVuIHZhbHVlcyBlaXRoZXIgYXBwZW5kIHRvIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvciBvdmVyd3JpdGUgdmFsdWVzIGluIGl0LlxuICAgKiBAZGVmYXVsdCAtIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gYXBwbGljYWJsZSBmb3IgR2l0SHViIHJlcG9zaXRvcmllc1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnJjT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBFbmFibGUgVlNDb2RlIGludGVncmF0aW9uLlxuICAgKiBFbmFibGVkIGJ5IGRlZmF1bHQgZm9yIHJvb3QgcHJvamVjdHMuIERpc2FibGVkIGZvciBub24tcm9vdCBwcm9qZWN0cy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIFZTQ29kZSBtdWx0aS1yb290IHdvcmtzcGFjZSBmaWxlIGZvciBhbGwgbW9ub3JlcG8gd29ya3NwYWNlc1xuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlV29ya3NwYWNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFZTQ29kZSBtdWx0aS1yb290IHdvcmtzcGFjZSBmaWxlXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSB2c2NvZGVXb3Jrc3BhY2VPcHRpb25zPzogeWFybi5Wc0NvZGVXb3Jrc3BhY2VPcHRpb25zO1xuICAvKipcbiAgICogV29ya2Zsb3cgc3RlcHMgdG8gdXNlIGluIG9yZGVyIHRvIGJvb3RzdHJhcCB0aGlzIHJlcG8uXG4gICAqIEBkZWZhdWx0IFwieWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlICYmIHlhcm4gcHJvamVuXCJcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogQ29udGFpbmVyIGltYWdlIHRvIHVzZSBmb3IgR2l0SHViIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0NvbnRhaW5lckltYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGdpdCBpZGVudGl0eSB0byB1c2UgaW4gd29ya2Zsb3dzLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgR2l0SHViIEFjdGlvbnMgdXNlclxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dHaXRJZGVudGl0eT86IGdpdGh1Yi5HaXRJZGVudGl0eTtcbiAgLyoqXG4gICAqIFRoZSBub2RlIHZlcnNpb24gdG8gdXNlIGluIEdpdEh1YiB3b3JrZmxvd3MuXG4gICAqIEBkZWZhdWx0ICdsdHMvKidcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Tm9kZVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbmFibGUgTm9kZS5qcyBwYWNrYWdlIGNhY2hlIGluIEdpdEh1YiB3b3JrZmxvd3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1BhY2thZ2VDYWNoZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHaXRodWIgUnVubmVyIHNlbGVjdGlvbiBsYWJlbHMuXG4gICAqIEBkZWZhdWx0IFtcInVidW50dS1sYXRlc3RcIl1cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93UnVuc09uPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEdpdGh1YiBSdW5uZXIgR3JvdXAgc2VsZWN0aW9uIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1J1bnNPbkdyb3VwPzogR3JvdXBSdW5uZXJPcHRpb25zO1xuICAvKipcbiAgICogVXNlIFlhcm4gQmVycnkgYXMgdGhlIHBhY2thZ2UgbWFuYWdlci5cbiAgICogV2hlbiBlbmFibGVkLCB0aGUgbW9ub3JlcG8gd2lsbCB1c2UgYFlBUk5fQkVSUllgIGluc3RlYWQgb2YgYFlBUk5fQ0xBU1NJQ2AuXG4gICAqIGB5YXJuQmVycnlPcHRpb25zYCBjYW4gYmUgdXNlZCB0byBmdXJ0aGVyIGNvbmZpZ3VyZSBZYXJuIEJlcnJ5LlxuICAgKiBUaGUgYG5vZGVMaW5rZXJgIGRlZmF1bHRzIHRvIGBub2RlLW1vZHVsZXNgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgeWFybkJlcnJ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIFlhcm4gQmVycnkuXG4gICAqIEBkZWZhdWx0IC0gWWFybiBCZXJyeSB2NCB3aXRoIGFsbCBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHlhcm5CZXJyeU9wdGlvbnM/OiBqYXZhc2NyaXB0Lllhcm5CZXJyeU9wdGlvbnM7XG59XG4iXX0=
|