projen 0.48.0 → 0.49.2
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 +6276 -1413
- package/.prettierignore +1 -0
- package/.prettierrc.json +3 -0
- package/API.md +1111 -41
- package/changelog.md +2 -8
- package/docs/gitlab.md +67 -0
- package/lib/_resolve.d.ts +1 -1
- package/lib/_resolve.js +5 -7
- package/lib/awscdk/auto-discover.d.ts +4 -4
- package/lib/awscdk/auto-discover.js +2 -2
- package/lib/awscdk/{java-app.d.ts → awscdk-app-java.d.ts} +13 -30
- package/lib/awscdk/awscdk-app-java.js +91 -0
- package/lib/awscdk/awscdk-app-ts.d.ts +5 -5
- package/lib/awscdk/awscdk-app-ts.js +35 -34
- package/lib/awscdk/awscdk-construct.d.ts +3 -3
- package/lib/awscdk/awscdk-construct.js +12 -10
- package/lib/awscdk/awscdk-deps-java.d.ts +14 -0
- package/lib/awscdk/awscdk-deps-java.js +30 -0
- package/lib/awscdk/awscdk-deps-js.d.ts +14 -0
- package/lib/awscdk/awscdk-deps-js.js +31 -0
- package/lib/awscdk/awscdk-deps.d.ts +59 -11
- package/lib/awscdk/awscdk-deps.js +27 -23
- package/lib/awscdk/cdk-config.d.ts +3 -3
- package/lib/awscdk/cdk-config.js +5 -5
- package/lib/awscdk/cdk-tasks.d.ts +3 -3
- package/lib/awscdk/cdk-tasks.js +21 -20
- package/lib/awscdk/index.d.ts +11 -9
- package/lib/awscdk/index.js +4 -2
- package/lib/awscdk/integration-test.d.ts +4 -4
- package/lib/awscdk/integration-test.js +15 -13
- package/lib/awscdk/internal.js +16 -16
- package/lib/awscdk/lambda-function.d.ts +4 -4
- package/lib/awscdk/lambda-function.js +29 -29
- package/lib/build/build-workflow.d.ts +5 -5
- package/lib/build/build-workflow.js +36 -30
- package/lib/build/index.d.ts +1 -1
- package/lib/build/index.js +1 -1
- package/lib/builtin-example.task.js +3 -3
- package/lib/cdk/construct-lib.d.ts +1 -1
- package/lib/cdk/construct-lib.js +4 -4
- package/lib/cdk/consts.d.ts +2 -2
- package/lib/cdk/consts.js +5 -5
- package/lib/cdk/index.d.ts +3 -3
- package/lib/cdk/index.js +1 -1
- package/lib/cdk/jsii-docgen.d.ts +1 -1
- package/lib/cdk/jsii-docgen.js +7 -7
- package/lib/cdk/jsii-project.d.ts +3 -3
- package/lib/cdk/jsii-project.js +39 -39
- package/lib/cdk8s/cdk8s-app-ts.d.ts +1 -1
- package/lib/cdk8s/cdk8s-app-ts.js +28 -21
- package/lib/cdk8s/cdk8s-construct.d.ts +1 -1
- package/lib/cdk8s/cdk8s-construct.js +10 -6
- package/lib/cdk8s/index.d.ts +2 -2
- package/lib/cdk8s/index.js +1 -1
- package/lib/cdktf/cdktf-construct.d.ts +1 -1
- package/lib/cdktf/cdktf-construct.js +4 -4
- package/lib/cdktf/index.d.ts +1 -1
- package/lib/cdktf/index.js +1 -1
- package/lib/cleanup.js +20 -14
- package/lib/cli/cmds/new.js +71 -42
- package/lib/cli/index.js +27 -10
- package/lib/cli/macros.js +15 -11
- package/lib/cli/synth.d.ts +1 -1
- package/lib/cli/synth.js +15 -12
- package/lib/cli/tasks.d.ts +2 -2
- package/lib/cli/tasks.js +9 -6
- package/lib/cli/util.js +4 -4
- package/lib/clobber.d.ts +2 -2
- package/lib/clobber.js +14 -10
- package/lib/common.js +7 -9
- package/lib/component.d.ts +1 -1
- package/lib/component.js +2 -2
- package/lib/dependencies.d.ts +2 -2
- package/lib/dependencies.js +14 -12
- package/lib/dev-env.d.ts +1 -1
- package/lib/dev-env.js +2 -2
- package/lib/docker-compose.d.ts +2 -2
- package/lib/docker-compose.js +23 -19
- package/lib/file.d.ts +2 -2
- package/lib/file.js +7 -5
- package/lib/gitattributes.d.ts +2 -2
- package/lib/gitattributes.js +7 -8
- package/lib/github/auto-approve.d.ts +2 -2
- package/lib/github/auto-approve.js +25 -15
- package/lib/github/auto-merge.d.ts +2 -2
- package/lib/github/auto-merge.js +14 -14
- package/lib/github/constants.d.ts +1 -1
- package/lib/github/constants.js +4 -4
- package/lib/github/dependabot.d.ts +2 -2
- package/lib/github/dependabot.js +16 -14
- package/lib/github/github-project.d.ts +5 -5
- package/lib/github/github-project.js +14 -10
- package/lib/github/github.d.ts +7 -7
- package/lib/github/github.js +7 -5
- package/lib/github/index.d.ts +13 -13
- package/lib/github/index.js +1 -1
- package/lib/github/mergify.d.ts +2 -2
- package/lib/github/mergify.js +3 -3
- package/lib/github/pr-template.d.ts +2 -2
- package/lib/github/pr-template.js +5 -5
- package/lib/github/pull-request-lint.d.ts +2 -2
- package/lib/github/pull-request-lint.js +17 -14
- package/lib/github/stale-util.d.ts +1 -1
- package/lib/github/stale-util.js +2 -3
- package/lib/github/stale.d.ts +2 -2
- package/lib/github/stale.js +28 -20
- package/lib/github/task-workflow.d.ts +4 -4
- package/lib/github/task-workflow.js +12 -10
- package/lib/github/workflow-actions.d.ts +2 -2
- package/lib/github/workflow-actions.js +22 -20
- package/lib/github/workflows-model.d.ts +20 -20
- package/lib/github/workflows-model.js +1 -1
- package/lib/github/workflows.d.ts +4 -4
- package/lib/github/workflows.js +42 -27
- package/lib/gitlab/configuration-model.d.ts +1308 -0
- package/lib/gitlab/configuration-model.js +122 -0
- package/lib/gitlab/configuration.d.ts +260 -0
- package/lib/gitlab/configuration.js +296 -0
- package/lib/gitlab/gitlab-configuration.d.ts +30 -0
- package/lib/gitlab/gitlab-configuration.js +49 -0
- package/lib/gitlab/index.d.ts +4 -0
- package/lib/gitlab/index.js +17 -0
- package/lib/gitlab/nested-configuration.d.ts +26 -0
- package/lib/gitlab/nested-configuration.js +38 -0
- package/lib/gitpod.d.ts +4 -4
- package/lib/gitpod.js +12 -9
- package/lib/ignore-file.d.ts +2 -2
- package/lib/ignore-file.js +10 -13
- package/lib/index.d.ts +47 -46
- package/lib/index.js +2 -1
- package/lib/ini.d.ts +3 -3
- package/lib/ini.js +4 -4
- package/lib/inventory.d.ts +1 -1
- package/lib/inventory.js +34 -30
- package/lib/java/index.d.ts +7 -7
- package/lib/java/index.js +1 -1
- package/lib/java/java-project.d.ts +7 -6
- package/lib/java/java-project.js +11 -13
- package/lib/java/junit.d.ts +3 -3
- package/lib/java/junit.js +17 -17
- package/lib/java/maven-compile.d.ts +3 -3
- package/lib/java/maven-compile.js +7 -7
- package/lib/java/maven-packaging.d.ts +3 -3
- package/lib/java/maven-packaging.js +12 -16
- package/lib/java/maven-sample.d.ts +2 -2
- package/lib/java/maven-sample.js +12 -12
- package/lib/java/pom.d.ts +2 -2
- package/lib/java/pom.js +16 -14
- package/lib/java/projenrc.d.ts +3 -3
- package/lib/java/projenrc.js +35 -25
- package/lib/javascript/bundler.d.ts +3 -3
- package/lib/javascript/bundler.js +14 -12
- package/lib/javascript/eslint.d.ts +4 -3
- package/lib/javascript/eslint.js +102 -86
- package/lib/javascript/index.d.ts +10 -10
- package/lib/javascript/index.js +1 -1
- package/lib/javascript/jest.d.ts +4 -4
- package/lib/javascript/jest.js +48 -37
- package/lib/javascript/node-package.d.ts +9 -2
- package/lib/javascript/node-package.js +111 -81
- package/lib/javascript/node-project.d.ts +11 -11
- package/lib/javascript/node-project.js +78 -52
- package/lib/javascript/npm-config.d.ts +2 -2
- package/lib/javascript/npm-config.js +4 -4
- package/lib/javascript/prettier.d.ts +4 -4
- package/lib/javascript/prettier.js +5 -5
- package/lib/javascript/projenrc.d.ts +2 -2
- package/lib/javascript/projenrc.js +8 -8
- package/lib/javascript/render-options.d.ts +2 -2
- package/lib/javascript/render-options.js +23 -18
- package/lib/javascript/typescript-config.d.ts +2 -2
- package/lib/javascript/typescript-config.js +5 -5
- package/lib/javascript/upgrade-dependencies.d.ts +4 -4
- package/lib/javascript/upgrade-dependencies.js +67 -53
- package/lib/javascript/util.js +2 -2
- package/lib/json.d.ts +3 -3
- package/lib/json.js +4 -4
- package/lib/license.d.ts +2 -2
- package/lib/license.js +7 -7
- package/lib/logger.d.ts +2 -2
- package/lib/logger.js +14 -9
- package/lib/logging.js +2 -2
- package/lib/makefile.d.ts +2 -2
- package/lib/makefile.js +12 -15
- package/lib/object-file.d.ts +2 -2
- package/lib/object-file.js +9 -7
- package/lib/option-hints.js +1 -1
- package/lib/project-build.d.ts +3 -3
- package/lib/project-build.js +14 -14
- package/lib/project.d.ts +14 -14
- package/lib/project.js +41 -23
- package/lib/projects.d.ts +1 -1
- package/lib/projects.js +10 -11
- package/lib/projenrc-json.d.ts +2 -2
- package/lib/projenrc-json.js +5 -5
- package/lib/python/index.d.ts +13 -13
- package/lib/python/index.js +1 -1
- package/lib/python/pip.d.ts +4 -4
- package/lib/python/pip.js +16 -12
- package/lib/python/poetry.d.ts +7 -7
- package/lib/python/poetry.js +41 -33
- package/lib/python/projenrc.d.ts +2 -2
- package/lib/python/projenrc.js +24 -21
- package/lib/python/pytest.d.ts +2 -2
- package/lib/python/pytest.js +19 -19
- package/lib/python/python-deps.d.ts +2 -2
- package/lib/python/python-deps.js +1 -1
- package/lib/python/python-packaging.d.ts +2 -2
- package/lib/python/python-packaging.js +1 -1
- package/lib/python/python-project.d.ts +7 -7
- package/lib/python/python-project.js +14 -13
- package/lib/python/python-sample.d.ts +2 -2
- package/lib/python/python-sample.js +17 -17
- package/lib/python/requirements-file.d.ts +3 -3
- package/lib/python/requirements-file.js +7 -8
- package/lib/python/setuppy.d.ts +2 -2
- package/lib/python/setuppy.js +23 -23
- package/lib/python/setuptools.d.ts +4 -4
- package/lib/python/setuptools.js +11 -11
- package/lib/python/venv.d.ts +3 -3
- package/lib/python/venv.js +6 -6
- package/lib/readme.d.ts +2 -2
- package/lib/readme.js +5 -3
- package/lib/release/bump-version.d.ts +1 -1
- package/lib/release/bump-version.js +37 -26
- package/lib/release/bump-version.task.js +7 -7
- package/lib/release/index.d.ts +3 -3
- package/lib/release/index.js +1 -1
- package/lib/release/publisher.d.ts +4 -4
- package/lib/release/publisher.js +93 -78
- package/lib/release/release-trigger.js +3 -3
- package/lib/release/release.d.ts +6 -6
- package/lib/release/release.js +37 -23
- package/lib/release/reset-version.task.js +4 -4
- package/lib/release/tag-version.js +1 -1
- package/lib/release/tag-version.task.js +3 -3
- package/lib/release/update-changelog.js +6 -4
- package/lib/release/update-changelog.task.js +4 -4
- package/lib/run-projenrc-json.task.js +5 -5
- package/lib/sample-file.d.ts +2 -2
- package/lib/sample-file.js +8 -8
- package/lib/semver.js +17 -7
- package/lib/source-code.d.ts +2 -2
- package/lib/source-code.js +5 -5
- package/lib/task-model.js +1 -1
- package/lib/task-runtime.d.ts +1 -1
- package/lib/task-runtime.js +27 -27
- package/lib/task.d.ts +1 -1
- package/lib/task.js +2 -2
- package/lib/tasks.d.ts +3 -3
- package/lib/tasks.js +5 -5
- package/lib/testing.d.ts +1 -1
- package/lib/testing.js +2 -2
- package/lib/textfile.d.ts +2 -2
- package/lib/textfile.js +3 -3
- package/lib/toml.d.ts +3 -3
- package/lib/toml.js +4 -4
- package/lib/typescript/index.d.ts +3 -3
- package/lib/typescript/index.js +1 -1
- package/lib/typescript/projenrc.d.ts +2 -2
- package/lib/typescript/projenrc.js +10 -10
- package/lib/typescript/typescript-typedoc.d.ts +1 -1
- package/lib/typescript/typescript-typedoc.js +4 -4
- package/lib/typescript/typescript.d.ts +3 -3
- package/lib/typescript/typescript.js +59 -62
- package/lib/util/semver.js +33 -33
- package/lib/util/synth.d.ts +1 -1
- package/lib/util/synth.js +15 -12
- package/lib/util.js +39 -32
- package/lib/version.d.ts +3 -3
- package/lib/version.js +12 -12
- package/lib/vscode/devcontainer.d.ts +4 -4
- package/lib/vscode/devcontainer.js +13 -8
- package/lib/vscode/index.d.ts +3 -3
- package/lib/vscode/index.js +1 -1
- package/lib/vscode/launch-config.d.ts +2 -2
- package/lib/vscode/launch-config.js +4 -4
- package/lib/vscode/vscode.d.ts +3 -3
- package/lib/vscode/vscode.js +2 -2
- package/lib/web/index.d.ts +4 -4
- package/lib/web/index.js +1 -1
- package/lib/web/next.d.ts +3 -3
- package/lib/web/next.js +241 -237
- package/lib/web/postcss.d.ts +3 -3
- package/lib/web/postcss.js +9 -6
- package/lib/web/react.d.ts +4 -4
- package/lib/web/react.js +172 -177
- package/lib/web/tailwind.d.ts +2 -2
- package/lib/web/tailwind.js +3 -3
- package/lib/xmlfile.d.ts +3 -3
- package/lib/xmlfile.js +5 -5
- package/lib/yaml.d.ts +3 -3
- package/lib/yaml.js +4 -4
- package/package.json +4 -1
- package/releasetag.txt +1 -1
- package/version.txt +1 -1
- package/lib/awscdk/java-app.js +0 -90
package/lib/web/next.js
CHANGED
|
@@ -23,17 +23,17 @@ class NextJsProject extends javascript_1.NodeProject {
|
|
|
23
23
|
var _d, _e, _f, _g;
|
|
24
24
|
super({
|
|
25
25
|
jest: false,
|
|
26
|
-
minNodeVersion:
|
|
26
|
+
minNodeVersion: "12.13.0",
|
|
27
27
|
...options,
|
|
28
28
|
});
|
|
29
|
-
this.srcdir = (_d = options.srcdir) !== null && _d !== void 0 ? _d :
|
|
30
|
-
this.assetsdir = (_e = options.assetsdir) !== null && _e !== void 0 ? _e :
|
|
29
|
+
this.srcdir = (_d = options.srcdir) !== null && _d !== void 0 ? _d : "pages";
|
|
30
|
+
this.assetsdir = (_e = options.assetsdir) !== null && _e !== void 0 ? _e : "public";
|
|
31
31
|
this.tailwind = (_f = options.tailwind) !== null && _f !== void 0 ? _f : true;
|
|
32
32
|
new NextComponent(this, { typescript: false, tailwind: this.tailwind });
|
|
33
33
|
// generate sample code in `pages` and `public` if these directories are empty or non-existent.
|
|
34
34
|
if ((_g = options.sampleCode) !== null && _g !== void 0 ? _g : true) {
|
|
35
35
|
new NextSampleCode(this, {
|
|
36
|
-
fileExt:
|
|
36
|
+
fileExt: "js",
|
|
37
37
|
srcdir: this.srcdir,
|
|
38
38
|
assetsdir: this.assetsdir,
|
|
39
39
|
tailwind: this.tailwind,
|
|
@@ -43,7 +43,7 @@ class NextJsProject extends javascript_1.NodeProject {
|
|
|
43
43
|
}
|
|
44
44
|
exports.NextJsProject = NextJsProject;
|
|
45
45
|
_a = JSII_RTTI_SYMBOL_1;
|
|
46
|
-
NextJsProject[_a] = { fqn: "projen.web.NextJsProject", version: "0.
|
|
46
|
+
NextJsProject[_a] = { fqn: "projen.web.NextJsProject", version: "0.49.2" };
|
|
47
47
|
/**
|
|
48
48
|
* (experimental) Next.js project with TypeScript.
|
|
49
49
|
*
|
|
@@ -57,16 +57,16 @@ class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
|
|
|
57
57
|
constructor(options) {
|
|
58
58
|
var _d, _e, _f, _g;
|
|
59
59
|
const defaultOptions = {
|
|
60
|
-
srcdir:
|
|
60
|
+
srcdir: "pages",
|
|
61
61
|
eslint: false,
|
|
62
|
-
minNodeVersion:
|
|
62
|
+
minNodeVersion: "12.13.0",
|
|
63
63
|
jest: false,
|
|
64
64
|
tsconfig: {
|
|
65
|
-
include: [
|
|
65
|
+
include: ["**/*.ts", "**/*.tsx"],
|
|
66
66
|
compilerOptions: {
|
|
67
67
|
// required by Next.js
|
|
68
68
|
esModuleInterop: true,
|
|
69
|
-
module:
|
|
69
|
+
module: "esnext",
|
|
70
70
|
moduleResolution: javascript_1.TypeScriptModuleResolution.NODE,
|
|
71
71
|
isolatedModules: true,
|
|
72
72
|
resolveJsonModule: true,
|
|
@@ -76,16 +76,20 @@ class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
|
|
|
76
76
|
skipLibCheck: true,
|
|
77
77
|
forceConsistentCasingInFileNames: true,
|
|
78
78
|
noEmit: true,
|
|
79
|
-
lib: [
|
|
79
|
+
lib: ["dom", "dom.iterable", "esnext"],
|
|
80
80
|
strict: false,
|
|
81
|
-
target:
|
|
81
|
+
target: "es5",
|
|
82
82
|
},
|
|
83
83
|
},
|
|
84
84
|
};
|
|
85
85
|
// never generate default TypeScript sample code, since this class provides its own
|
|
86
|
-
super(util_1.deepMerge([
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
super(util_1.deepMerge([
|
|
87
|
+
defaultOptions,
|
|
88
|
+
options,
|
|
89
|
+
{ sampleCode: false },
|
|
90
|
+
]));
|
|
91
|
+
this.srcdir = (_d = options.srcdir) !== null && _d !== void 0 ? _d : "pages";
|
|
92
|
+
this.assetsdir = (_e = options.assetsdir) !== null && _e !== void 0 ? _e : "public";
|
|
89
93
|
this.tailwind = (_f = options.tailwind) !== null && _f !== void 0 ? _f : true;
|
|
90
94
|
new NextComponent(this, { typescript: true, tailwind: this.tailwind });
|
|
91
95
|
// 'next build' command fails if tsconfig.json is immutable
|
|
@@ -95,7 +99,7 @@ class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
|
|
|
95
99
|
// generate sample code in `pages` and `public` if these directories are empty or non-existent.
|
|
96
100
|
if ((_g = options.sampleCode) !== null && _g !== void 0 ? _g : true) {
|
|
97
101
|
new NextSampleCode(this, {
|
|
98
|
-
fileExt:
|
|
102
|
+
fileExt: "tsx",
|
|
99
103
|
srcdir: this.srcdir,
|
|
100
104
|
assetsdir: this.assetsdir,
|
|
101
105
|
tailwind: this.tailwind,
|
|
@@ -105,7 +109,7 @@ class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
|
|
|
105
109
|
}
|
|
106
110
|
exports.NextJsTypeScriptProject = NextJsTypeScriptProject;
|
|
107
111
|
_b = JSII_RTTI_SYMBOL_1;
|
|
108
|
-
NextJsTypeScriptProject[_b] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.
|
|
112
|
+
NextJsTypeScriptProject[_b] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.49.2" };
|
|
109
113
|
/**
|
|
110
114
|
* @experimental
|
|
111
115
|
*/
|
|
@@ -118,256 +122,256 @@ class NextComponent extends component_1.Component {
|
|
|
118
122
|
super(project);
|
|
119
123
|
this.typescript = (_d = options.typescript) !== null && _d !== void 0 ? _d : false;
|
|
120
124
|
this.tailwind = (_e = options.tailwind) !== null && _e !== void 0 ? _e : true;
|
|
121
|
-
project.addDeps(
|
|
125
|
+
project.addDeps("next", "react", "react-dom");
|
|
122
126
|
if (this.typescript) {
|
|
123
|
-
project.addDevDeps(
|
|
127
|
+
project.addDevDeps("@types/react", "@types/react-dom");
|
|
124
128
|
}
|
|
125
129
|
if (this.tailwind) {
|
|
126
130
|
new postcss_1.PostCss(project, { tailwind: true });
|
|
127
131
|
}
|
|
128
132
|
// NextJS CLI commands, see: https://nextjs.org/docs/api-reference/cli
|
|
129
|
-
project.addTask(
|
|
130
|
-
description:
|
|
131
|
-
exec:
|
|
133
|
+
project.addTask("dev", {
|
|
134
|
+
description: "Starts the Next.js application in development mode",
|
|
135
|
+
exec: "next dev",
|
|
132
136
|
});
|
|
133
|
-
project.compileTask.exec(
|
|
134
|
-
project.addTask(
|
|
135
|
-
description:
|
|
136
|
-
exec:
|
|
137
|
+
project.compileTask.exec("next build");
|
|
138
|
+
project.addTask("export", {
|
|
139
|
+
description: "Exports the application for production deployment",
|
|
140
|
+
exec: "next export",
|
|
137
141
|
});
|
|
138
|
-
project.addTask(
|
|
139
|
-
description:
|
|
140
|
-
exec:
|
|
142
|
+
project.addTask("server", {
|
|
143
|
+
description: "Starts the Next.js application in production mode",
|
|
144
|
+
exec: "next start",
|
|
141
145
|
});
|
|
142
|
-
project.addTask(
|
|
143
|
-
description:
|
|
144
|
-
exec:
|
|
146
|
+
project.addTask("telemetry", {
|
|
147
|
+
description: "Checks the status of Next.js telemetry collection",
|
|
148
|
+
exec: "next telemetry",
|
|
145
149
|
});
|
|
146
|
-
(_f = project.npmignore) === null || _f === void 0 ? void 0 : _f.exclude(
|
|
147
|
-
project.gitignore.exclude(
|
|
150
|
+
(_f = project.npmignore) === null || _f === void 0 ? void 0 : _f.exclude("# Next.js", "/.next/");
|
|
151
|
+
project.gitignore.exclude("# Next.js", "/.next/");
|
|
148
152
|
}
|
|
149
153
|
}
|
|
150
154
|
exports.NextComponent = NextComponent;
|
|
151
155
|
_c = JSII_RTTI_SYMBOL_1;
|
|
152
|
-
NextComponent[_c] = { fqn: "projen.web.NextComponent", version: "0.
|
|
156
|
+
NextComponent[_c] = { fqn: "projen.web.NextComponent", version: "0.49.2" };
|
|
153
157
|
class NextSampleCode extends component_1.Component {
|
|
154
158
|
constructor(project, options) {
|
|
155
159
|
var _d;
|
|
156
160
|
super(project);
|
|
157
|
-
this.fileExt = (_d = options.fileExt) !== null && _d !== void 0 ? _d :
|
|
161
|
+
this.fileExt = (_d = options.fileExt) !== null && _d !== void 0 ? _d : "js";
|
|
158
162
|
this.srcdir = options.srcdir;
|
|
159
163
|
this.assetsdir = options.assetsdir;
|
|
160
164
|
this.tailwind = options.tailwind;
|
|
161
165
|
const indexJs = [
|
|
162
166
|
'import Head from "next/head"',
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
167
|
+
"",
|
|
168
|
+
"export default function Home() {",
|
|
169
|
+
" return (",
|
|
166
170
|
' <div className="container">',
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
171
|
+
" <Head>",
|
|
172
|
+
" <title>Create Next App</title>",
|
|
173
|
+
" </Head>",
|
|
174
|
+
"",
|
|
175
|
+
" <main>",
|
|
172
176
|
' <h1 className="title">',
|
|
173
177
|
' Welcome to <a href="https://nextjs.org">Next.js!</a>',
|
|
174
|
-
|
|
175
|
-
|
|
178
|
+
" </h1>",
|
|
179
|
+
"",
|
|
176
180
|
' <p className="description">',
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
181
|
+
" Get started by editing <code>pages/index.js</code>",
|
|
182
|
+
" </p>",
|
|
183
|
+
"",
|
|
180
184
|
' <div className="grid">',
|
|
181
185
|
' <a href="https://nextjs.org/docs" className="card">',
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
+
" <h3>Documentation →</h3>",
|
|
187
|
+
" <p>Find in-depth information about Next.js features and API.</p>",
|
|
188
|
+
" </a>",
|
|
189
|
+
"",
|
|
186
190
|
' <a href="https://nextjs.org/learn" className="card">',
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
191
|
+
" <h3>Learn →</h3>",
|
|
192
|
+
" <p>Learn about Next.js in an interactive course with quizzes!</p>",
|
|
193
|
+
" </a>",
|
|
194
|
+
"",
|
|
195
|
+
" <a",
|
|
192
196
|
' href="https://github.com/vercel/next.js/tree/master/examples"',
|
|
193
197
|
' className="card"',
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
198
|
+
" >",
|
|
199
|
+
" <h3>Examples →</h3>",
|
|
200
|
+
" <p>Discover and deploy boilerplate example Next.js projects.</p>",
|
|
201
|
+
" </a>",
|
|
202
|
+
"",
|
|
203
|
+
" <a",
|
|
200
204
|
' href="https://vercel.com/import?filter=next.js&utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"',
|
|
201
205
|
' className="card"',
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
206
|
+
" >",
|
|
207
|
+
" <h3>Deploy →</h3>",
|
|
208
|
+
" <p>",
|
|
209
|
+
" Instantly deploy your Next.js site to a public URL with Vercel.",
|
|
210
|
+
" </p>",
|
|
211
|
+
" </a>",
|
|
212
|
+
" </div>",
|
|
213
|
+
" </main>",
|
|
214
|
+
"",
|
|
215
|
+
" <footer>",
|
|
216
|
+
" <a",
|
|
213
217
|
' href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"',
|
|
214
218
|
' target="_blank"',
|
|
215
219
|
' rel="noopener noreferrer"',
|
|
216
|
-
|
|
217
|
-
|
|
220
|
+
" >",
|
|
221
|
+
" Powered by Vercel",
|
|
218
222
|
' <img src="/vercel.svg" alt="Vercel Logo" className="logo" />',
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
223
|
+
" </a>",
|
|
224
|
+
" </footer>",
|
|
225
|
+
"",
|
|
226
|
+
" <style jsx>{`",
|
|
227
|
+
" .container {",
|
|
228
|
+
" min-height: 100vh;",
|
|
229
|
+
" padding: 0 0.5rem;",
|
|
230
|
+
" display: flex;",
|
|
231
|
+
" flex-direction: column;",
|
|
232
|
+
" justify-content: center;",
|
|
233
|
+
" align-items: center;",
|
|
234
|
+
" }",
|
|
235
|
+
"",
|
|
236
|
+
" main {",
|
|
237
|
+
" padding: 5rem 0;",
|
|
238
|
+
" flex: 1;",
|
|
239
|
+
" display: flex;",
|
|
240
|
+
" flex-direction: column;",
|
|
241
|
+
" justify-content: center;",
|
|
242
|
+
" align-items: center;",
|
|
243
|
+
" }",
|
|
244
|
+
"",
|
|
245
|
+
" footer {",
|
|
246
|
+
" width: 100%;",
|
|
247
|
+
" height: 100px;",
|
|
248
|
+
" border-top: 1px solid #eaeaea;",
|
|
249
|
+
" display: flex;",
|
|
250
|
+
" justify-content: center;",
|
|
251
|
+
" align-items: center;",
|
|
252
|
+
" }",
|
|
253
|
+
"",
|
|
254
|
+
" footer img {",
|
|
255
|
+
" margin-left: 0.5rem;",
|
|
256
|
+
" }",
|
|
257
|
+
"",
|
|
258
|
+
" footer a {",
|
|
259
|
+
" display: flex;",
|
|
260
|
+
" justify-content: center;",
|
|
261
|
+
" align-items: center;",
|
|
262
|
+
" }",
|
|
263
|
+
"",
|
|
264
|
+
" a {",
|
|
265
|
+
" color: inherit;",
|
|
266
|
+
" text-decoration: none;",
|
|
267
|
+
" }",
|
|
268
|
+
"",
|
|
269
|
+
" .title a {",
|
|
270
|
+
" color: #0070f3;",
|
|
271
|
+
" text-decoration: none;",
|
|
272
|
+
" }",
|
|
273
|
+
"",
|
|
274
|
+
" .title a:hover,",
|
|
275
|
+
" .title a:focus,",
|
|
276
|
+
" .title a:active {",
|
|
277
|
+
" text-decoration: underline;",
|
|
278
|
+
" }",
|
|
279
|
+
"",
|
|
280
|
+
" .title {",
|
|
281
|
+
" margin: 0;",
|
|
282
|
+
" line-height: 1.15;",
|
|
283
|
+
" font-size: 4rem;",
|
|
284
|
+
" }",
|
|
285
|
+
"",
|
|
286
|
+
" .title,",
|
|
287
|
+
" .description {",
|
|
288
|
+
" text-align: center;",
|
|
289
|
+
" }",
|
|
290
|
+
"",
|
|
291
|
+
" .description {",
|
|
292
|
+
" line-height: 1.5;",
|
|
293
|
+
" font-size: 1.5rem;",
|
|
294
|
+
" }",
|
|
295
|
+
"",
|
|
296
|
+
" code {",
|
|
297
|
+
" background: #fafafa;",
|
|
298
|
+
" border-radius: 5px;",
|
|
299
|
+
" padding: 0.75rem;",
|
|
300
|
+
" font-size: 1.1rem;",
|
|
301
|
+
" font-family: Menlo, Monaco, Lucida Console, Liberation Mono,",
|
|
302
|
+
" DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace;",
|
|
303
|
+
" }",
|
|
304
|
+
"",
|
|
305
|
+
" .grid {",
|
|
306
|
+
" display: flex;",
|
|
307
|
+
" align-items: center;",
|
|
308
|
+
" justify-content: center;",
|
|
309
|
+
" flex-wrap: wrap;",
|
|
310
|
+
"",
|
|
311
|
+
" max-width: 800px;",
|
|
312
|
+
" margin-top: 3rem;",
|
|
313
|
+
" }",
|
|
314
|
+
"",
|
|
315
|
+
" .card {",
|
|
316
|
+
" margin: 1rem;",
|
|
317
|
+
" flex-basis: 45%;",
|
|
318
|
+
" padding: 1.5rem;",
|
|
319
|
+
" text-align: left;",
|
|
320
|
+
" color: inherit;",
|
|
321
|
+
" text-decoration: none;",
|
|
322
|
+
" border: 1px solid #eaeaea;",
|
|
323
|
+
" border-radius: 10px;",
|
|
324
|
+
" transition: color 0.15s ease, border-color 0.15s ease;",
|
|
325
|
+
" }",
|
|
326
|
+
"",
|
|
327
|
+
" .card:hover,",
|
|
328
|
+
" .card:focus,",
|
|
329
|
+
" .card:active {",
|
|
330
|
+
" color: #0070f3;",
|
|
331
|
+
" border-color: #0070f3;",
|
|
332
|
+
" }",
|
|
333
|
+
"",
|
|
334
|
+
" .card h3 {",
|
|
335
|
+
" margin: 0 0 1rem 0;",
|
|
336
|
+
" font-size: 1.5rem;",
|
|
337
|
+
" }",
|
|
338
|
+
"",
|
|
339
|
+
" .card p {",
|
|
340
|
+
" margin: 0;",
|
|
341
|
+
" font-size: 1.25rem;",
|
|
342
|
+
" line-height: 1.5;",
|
|
343
|
+
" }",
|
|
344
|
+
"",
|
|
345
|
+
" .logo {",
|
|
346
|
+
" height: 1em;",
|
|
347
|
+
" }",
|
|
348
|
+
"",
|
|
349
|
+
" @media (max-width: 600px) {",
|
|
350
|
+
" .grid {",
|
|
351
|
+
" width: 100%;",
|
|
352
|
+
" flex-direction: column;",
|
|
353
|
+
" }",
|
|
354
|
+
" }",
|
|
355
|
+
" `}</style>",
|
|
356
|
+
"",
|
|
357
|
+
" <style jsx global>{`",
|
|
358
|
+
" html,",
|
|
359
|
+
" body {",
|
|
360
|
+
" padding: 0;",
|
|
361
|
+
" margin: 0;",
|
|
362
|
+
" font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto,",
|
|
363
|
+
" Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue,",
|
|
364
|
+
" sans-serif;",
|
|
365
|
+
" }",
|
|
366
|
+
"",
|
|
367
|
+
" * {",
|
|
368
|
+
" box-sizing: border-box;",
|
|
369
|
+
" }",
|
|
370
|
+
" `}</style>",
|
|
371
|
+
" </div>",
|
|
372
|
+
" )",
|
|
373
|
+
"}",
|
|
374
|
+
"",
|
|
371
375
|
];
|
|
372
376
|
if (this.tailwind) {
|
|
373
377
|
indexJs.unshift('import "tailwindcss/tailwind.css"');
|
|
@@ -376,28 +380,28 @@ class NextSampleCode extends component_1.Component {
|
|
|
376
380
|
'<svg width="283" height="64" viewBox="0 0 283 64" fill="none" ',
|
|
377
381
|
' xmlns="http://www.w3.org/2000/svg">',
|
|
378
382
|
' <path d="M141.04 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.46 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM248.72 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.45 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM200.24 34c0 6 3.92 10 10 10 4.12 0 7.21-1.87 8.8-4.92l7.68 4.43c-3.18 5.3-9.14 8.49-16.48 8.49-11.05 0-19-7.2-19-18s7.96-18 19-18c7.34 0 13.29 3.19 16.48 8.49l-7.68 4.43c-1.59-3.05-4.68-4.92-8.8-4.92-6.07 0-10 4-10 10zm82.48-29v46h-9V5h9zM36.95 0L73.9 64H0L36.95 0zm92.38 5l-27.71 48L73.91 5H84.3l17.32 30 17.32-30h10.39zm58.91 12v9.69c-1-.29-2.06-.49-3.2-.49-5.81 0-10 4-10 10V51h-9V17h9v9.2c0-5.08 5.91-9.2 13.2-9.2z" fill="#000"/>',
|
|
379
|
-
|
|
383
|
+
"</svg>",
|
|
380
384
|
];
|
|
381
385
|
new sample_file_1.SampleDir(project, this.srcdir, {
|
|
382
386
|
files: {
|
|
383
|
-
[
|
|
387
|
+
["index." + this.fileExt]: indexJs.join("\n"),
|
|
384
388
|
},
|
|
385
389
|
});
|
|
386
390
|
new sample_file_1.SampleDir(project, this.assetsdir, {
|
|
387
391
|
files: {
|
|
388
|
-
|
|
392
|
+
"vercel.svg": vercelSvg.join("\n"),
|
|
389
393
|
},
|
|
390
394
|
});
|
|
391
|
-
new sample_file_1.SampleFile(project,
|
|
395
|
+
new sample_file_1.SampleFile(project, "next-env.d.ts", {
|
|
392
396
|
contents: [
|
|
393
397
|
'/// <reference types="next" />',
|
|
394
398
|
'/// <reference types="next/types/global" />',
|
|
395
399
|
'/// <reference types="next/image-types/global" />',
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
].join(
|
|
400
|
+
"// NOTE: This file should not be edited",
|
|
401
|
+
"// see https://nextjs.org/docs/basic-features/typescript for more information.",
|
|
402
|
+
"",
|
|
403
|
+
].join("\n"),
|
|
400
404
|
});
|
|
401
405
|
}
|
|
402
406
|
}
|
|
403
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWIvbmV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUF5QztBQUN6Qyw4Q0FBK0c7QUFDL0csZ0RBQXVEO0FBQ3ZELDhDQUErRTtBQUMvRSxrQ0FBb0M7QUFDcEMsdUNBQW9DOzs7Ozs7O0FBcUJwQyxNQUFhLGFBQWMsU0FBUSx3QkFBVzs7OztJQVU1QyxZQUFZLE9BQTZCOztRQUN2QyxLQUFLLENBQUM7WUFDSixJQUFJLEVBQUUsS0FBSztZQUNYLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLFNBQUcsT0FBTyxDQUFDLE1BQU0sbUNBQUksT0FBTyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLFNBQUcsT0FBTyxDQUFDLFNBQVMsbUNBQUksUUFBUSxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLFNBQUcsT0FBTyxDQUFDLFFBQVEsbUNBQUksSUFBSSxDQUFDO1FBRXpDLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLCtGQUErRjtRQUMvRixVQUFJLE9BQU8sQ0FBQyxVQUFVLG1DQUFJLElBQUksRUFBRTtZQUM5QixJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDeEIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztBQWhDSCxzQ0FpQ0M7Ozs7Ozs7OztBQUdELE1BQWEsdUJBQXdCLFNBQVEsaUNBQW9COzs7O0lBVS9ELFlBQVksT0FBdUM7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QUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDOUM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDckMsS0FBSyxFQUFFO2dCQUNMLFlBQVksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNuQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksd0JBQVUsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFO1lBQ3ZDLFFBQVEsRUFBRTtnQkFDUixnQ0FBZ0M7Z0JBQ2hDLDZDQUE2QztnQkFDN0MsbURBQW1EO2dCQUNuRCx5Q0FBeUM7Z0JBQ3pDLGdGQUFnRjtnQkFDaEYsRUFBRTthQUNILENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCwgTm9kZVByb2plY3RPcHRpb25zLCBUeXBlU2NyaXB0SnN4TW9kZSwgVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24gfSBmcm9tICcuLi9qYXZhc2NyaXB0JztcbmltcG9ydCB7IFNhbXBsZURpciwgU2FtcGxlRmlsZSB9IGZyb20gJy4uL3NhbXBsZS1maWxlJztcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0LCBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlc2NyaXB0JztcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgUG9zdENzcyB9IGZyb20gJy4vcG9zdGNzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dEpzQ29tbW9uUHJvamVjdE9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhc3NldHNkaXI/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRhaWx3aW5kPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0SnNUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBOZXh0SnNDb21tb25Qcm9qZWN0T3B0aW9ucywgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHsgfVxuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRKc1Byb2plY3RPcHRpb25zIGV4dGVuZHMgTmV4dEpzQ29tbW9uUHJvamVjdE9wdGlvbnMsIE5vZGVQcm9qZWN0T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgTmV4dEpzUHJvamVjdCBleHRlbmRzIE5vZGVQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGFzc2V0c2Rpcjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSB0YWlsd2luZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBOZXh0SnNQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246ICcxMi4xMy4wJywgLy8gaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnN0YWxsYXRpb25cbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNyY2RpciA9IG9wdGlvbnMuc3JjZGlyID8/ICdwYWdlcyc7XG4gICAgdGhpcy5hc3NldHNkaXIgPSBvcHRpb25zLmFzc2V0c2RpciA/PyAncHVibGljJztcbiAgICB0aGlzLnRhaWx3aW5kID0gb3B0aW9ucy50YWlsd2luZCA/PyB0cnVlO1xuXG4gICAgbmV3IE5leHRDb21wb25lbnQodGhpcywgeyB0eXBlc2NyaXB0OiBmYWxzZSwgdGFpbHdpbmQ6IHRoaXMudGFpbHdpbmQgfSk7XG5cbiAgICAvLyBnZW5lcmF0ZSBzYW1wbGUgY29kZSBpbiBgcGFnZXNgIGFuZCBgcHVibGljYCBpZiB0aGVzZSBkaXJlY3RvcmllcyBhcmUgZW1wdHkgb3Igbm9uLWV4aXN0ZW50LlxuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IE5leHRTYW1wbGVDb2RlKHRoaXMsIHtcbiAgICAgICAgZmlsZUV4dDogJ2pzJyxcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgICAgYXNzZXRzZGlyOiB0aGlzLmFzc2V0c2RpcixcbiAgICAgICAgdGFpbHdpbmQ6IHRoaXMudGFpbHdpbmQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBOZXh0SnNUeXBlU2NyaXB0UHJvamVjdCBleHRlbmRzIFR5cGVTY3JpcHRBcHBQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGFzc2V0c2Rpcjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSB0YWlsd2luZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBOZXh0SnNUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIHNyY2RpcjogJ3BhZ2VzJyxcbiAgICAgIGVzbGludDogZmFsc2UsXG4gICAgICBtaW5Ob2RlVmVyc2lvbjogJzEyLjEzLjAnLCAvLyBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICBpbmNsdWRlOiBbJyoqLyoudHMnLCAnKiovKi50c3gnXSxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgLy8gcmVxdWlyZWQgYnkgTmV4dC5qc1xuICAgICAgICAgIGVzTW9kdWxlSW50ZXJvcDogdHJ1ZSxcbiAgICAgICAgICBtb2R1bGU6ICdlc25leHQnLFxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uLk5PREUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIHJlc29sdmVKc29uTW9kdWxlOiB0cnVlLFxuICAgICAgICAgIGpzeDogVHlwZVNjcmlwdEpzeE1vZGUuUFJFU0VSVkUsXG5cbiAgICAgICAgICAvLyByZWNvbW1lbmRlZCBieSBOZXh0LmpzXG4gICAgICAgICAgYWxsb3dKczogdHJ1ZSxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG4gICAgICAgICAgZm9yY2VDb25zaXN0ZW50Q2FzaW5nSW5GaWxlTmFtZXM6IHRydWUsXG4gICAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICAgIGxpYjogWydkb20nLCAnZG9tLml0ZXJhYmxlJywgJ2VzbmV4dCddLFxuICAgICAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgICAgICAgdGFyZ2V0OiAnZXM1JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIG5ldmVyIGdlbmVyYXRlIGRlZmF1bHQgVHlwZVNjcmlwdCBzYW1wbGUgY29kZSwgc2luY2UgdGhpcyBjbGFzcyBwcm92aWRlcyBpdHMgb3duXG4gICAgc3VwZXIoZGVlcE1lcmdlKFtkZWZhdWx0T3B0aW9ucywgb3B0aW9ucywgeyBzYW1wbGVDb2RlOiBmYWxzZSB9XSkgYXMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zKTtcblxuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXIgPz8gJ3BhZ2VzJztcbiAgICB0aGlzLmFzc2V0c2RpciA9IG9wdGlvbnMuYXNzZXRzZGlyID8/ICdwdWJsaWMnO1xuICAgIHRoaXMudGFpbHdpbmQgPSBvcHRpb25zLnRhaWx3aW5kID8/IHRydWU7XG5cbiAgICBuZXcgTmV4dENvbXBvbmVudCh0aGlzLCB7IHR5cGVzY3JpcHQ6IHRydWUsIHRhaWx3aW5kOiB0aGlzLnRhaWx3aW5kIH0pO1xuXG4gICAgLy8gJ25leHQgYnVpbGQnIGNvbW1hbmQgZmFpbHMgaWYgdHNjb25maWcuanNvbiBpcyBpbW11dGFibGVcbiAgICBpZiAodGhpcy50c2NvbmZpZykge1xuICAgICAgdGhpcy50c2NvbmZpZy5maWxlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHBhZ2VzYCBhbmQgYHB1YmxpY2AgaWYgdGhlc2UgZGlyZWN0b3JpZXMgYXJlIGVtcHR5IG9yIG5vbi1leGlzdGVudC5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGVDb2RlID8/IHRydWUpIHtcbiAgICAgIG5ldyBOZXh0U2FtcGxlQ29kZSh0aGlzLCB7XG4gICAgICAgIGZpbGVFeHQ6ICd0c3gnLFxuICAgICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICBhc3NldHNkaXI6IHRoaXMuYXNzZXRzZGlyLFxuICAgICAgICB0YWlsd2luZDogdGhpcy50YWlsd2luZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRDb21wb25lbnRPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0eXBlc2NyaXB0PzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0YWlsd2luZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBOZXh0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0eXBlc2NyaXB0OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhaWx3aW5kOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zOiBOZXh0Q29tcG9uZW50T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy50eXBlc2NyaXB0ID0gb3B0aW9ucy50eXBlc2NyaXB0ID8/IGZhbHNlO1xuICAgIHRoaXMudGFpbHdpbmQgPSBvcHRpb25zLnRhaWx3aW5kID8/IHRydWU7XG5cbiAgICBwcm9qZWN0LmFkZERlcHMoJ25leHQnLCAncmVhY3QnLCAncmVhY3QtZG9tJyk7XG4gICAgaWYgKHRoaXMudHlwZXNjcmlwdCkge1xuICAgICAgcHJvamVjdC5hZGREZXZEZXBzKCdAdHlwZXMvcmVhY3QnLCAnQHR5cGVzL3JlYWN0LWRvbScpO1xuICAgIH1cbiAgICBpZiAodGhpcy50YWlsd2luZCkge1xuICAgICAgbmV3IFBvc3RDc3MocHJvamVjdCwgeyB0YWlsd2luZDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBOZXh0SlMgQ0xJIGNvbW1hbmRzLCBzZWU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwaS1yZWZlcmVuY2UvY2xpXG4gICAgcHJvamVjdC5hZGRUYXNrKCdkZXYnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0cyB0aGUgTmV4dC5qcyBhcHBsaWNhdGlvbiBpbiBkZXZlbG9wbWVudCBtb2RlJyxcbiAgICAgIGV4ZWM6ICduZXh0IGRldicsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLmV4ZWMoJ25leHQgYnVpbGQnKTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnZXhwb3J0Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdFeHBvcnRzIHRoZSBhcHBsaWNhdGlvbiBmb3IgcHJvZHVjdGlvbiBkZXBsb3ltZW50JyxcbiAgICAgIGV4ZWM6ICduZXh0IGV4cG9ydCcsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmFkZFRhc2soJ3NlcnZlcicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnU3RhcnRzIHRoZSBOZXh0LmpzIGFwcGxpY2F0aW9uIGluIHByb2R1Y3Rpb24gbW9kZScsXG4gICAgICBleGVjOiAnbmV4dCBzdGFydCcsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmFkZFRhc2soJ3RlbGVtZXRyeScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ2hlY2tzIHRoZSBzdGF0dXMgb2YgTmV4dC5qcyB0ZWxlbWV0cnkgY29sbGVjdGlvbicsXG4gICAgICBleGVjOiAnbmV4dCB0ZWxlbWV0cnknLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5ucG1pZ25vcmU/LmV4Y2x1ZGUoJyMgTmV4dC5qcycsICcvLm5leHQvJyk7XG4gICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZSgnIyBOZXh0LmpzJywgJy8ubmV4dC8nKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgTmV4dFNhbXBsZUNvZGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGUgZXh0ZW5zaW9uIGZvciBzYW1wbGUgamF2YXNjcmlwdCBjb2RlIHRvIGJlIHNhdmVkIGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImpzXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVFeHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggTmV4dC5qcyBwYWdlcyBhcmUgZGVjbGFyZWQuXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBhcHAgYXNzZXRzIHJlc2lkZS5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0c2Rpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXR1cCBUYWlsd2luZCBhcyBhIFBvc3RDU1MgcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFpbHdpbmQ6IGJvb2xlYW47XG59XG5cbmNsYXNzIE5leHRTYW1wbGVDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlRXh0OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXNzZXRzZGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFpbHdpbmQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IE5leHRTYW1wbGVDb2RlT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5maWxlRXh0ID0gb3B0aW9ucy5maWxlRXh0ID8/ICdqcyc7XG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpcjtcbiAgICB0aGlzLmFzc2V0c2RpciA9IG9wdGlvbnMuYXNzZXRzZGlyO1xuICAgIHRoaXMudGFpbHdpbmQgPSBvcHRpb25zLnRhaWx3aW5kO1xuXG4gICAgY29uc3QgaW5kZXhKcyA9IFtcbiAgICAgICdpbXBvcnQgSGVhZCBmcm9tIFwibmV4dC9oZWFkXCInLFxuICAgICAgJycsXG4gICAgICAnZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSG9tZSgpIHsnLFxuICAgICAgJyAgcmV0dXJuICgnLFxuICAgICAgJyAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPicsXG4gICAgICAnICAgICAgPEhlYWQ+JyxcbiAgICAgICcgICAgICAgIDx0aXRsZT5DcmVhdGUgTmV4dCBBcHA8L3RpdGxlPicsXG4gICAgICAnICAgICAgPC9IZWFkPicsXG4gICAgICAnJyxcbiAgICAgICcgICAgICA8bWFpbj4nLFxuICAgICAgJyAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRpdGxlXCI+JyxcbiAgICAgICcgICAgICAgICAgV2VsY29tZSB0byA8YSBocmVmPVwiaHR0cHM6Ly9uZXh0anMub3JnXCI+TmV4dC5qcyE8L2E+JyxcbiAgICAgICcgICAgICAgIDwvaDE+JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgPHAgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj4nLFxuICAgICAgJyAgICAgICAgICBHZXQgc3RhcnRlZCBieSBlZGl0aW5nIDxjb2RlPnBhZ2VzL2luZGV4LmpzPC9jb2RlPicsXG4gICAgICAnICAgICAgICA8L3A+JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkXCI+JyxcbiAgICAgICcgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzXCIgY2xhc3NOYW1lPVwiY2FyZFwiPicsXG4gICAgICAnICAgICAgICAgICAgPGgzPkRvY3VtZW50YXRpb24gJnJhcnI7PC9oMz4nLFxuICAgICAgJyAgICAgICAgICAgIDxwPkZpbmQgaW4tZGVwdGggaW5mb3JtYXRpb24gYWJvdXQgTmV4dC5qcyBmZWF0dXJlcyBhbmQgQVBJLjwvcD4nLFxuICAgICAgJyAgICAgICAgICA8L2E+JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9uZXh0anMub3JnL2xlYXJuXCIgY2xhc3NOYW1lPVwiY2FyZFwiPicsXG4gICAgICAnICAgICAgICAgICAgPGgzPkxlYXJuICZyYXJyOzwvaDM+JyxcbiAgICAgICcgICAgICAgICAgICA8cD5MZWFybiBhYm91dCBOZXh0LmpzIGluIGFuIGludGVyYWN0aXZlIGNvdXJzZSB3aXRoIHF1aXp6ZXMhPC9wPicsXG4gICAgICAnICAgICAgICAgIDwvYT4nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgICAgIDxhJyxcbiAgICAgICcgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL3RyZWUvbWFzdGVyL2V4YW1wbGVzXCInLFxuICAgICAgJyAgICAgICAgICAgIGNsYXNzTmFtZT1cImNhcmRcIicsXG4gICAgICAnICAgICAgICAgID4nLFxuICAgICAgJyAgICAgICAgICAgIDxoMz5FeGFtcGxlcyAmcmFycjs8L2gzPicsXG4gICAgICAnICAgICAgICAgICAgPHA+RGlzY292ZXIgYW5kIGRlcGxveSBib2lsZXJwbGF0ZSBleGFtcGxlIE5leHQuanMgcHJvamVjdHMuPC9wPicsXG4gICAgICAnICAgICAgICAgIDwvYT4nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgICAgIDxhJyxcbiAgICAgICcgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly92ZXJjZWwuY29tL2ltcG9ydD9maWx0ZXI9bmV4dC5qcyZ1dG1fc291cmNlPWNyZWF0ZS1uZXh0LWFwcCZ1dG1fbWVkaXVtPWRlZmF1bHQtdGVtcGxhdGUmdXRtX2NhbXBhaWduPWNyZWF0ZS1uZXh0LWFwcFwiJyxcbiAgICAgICcgICAgICAgICAgICBjbGFzc05hbWU9XCJjYXJkXCInLFxuICAgICAgJyAgICAgICAgICA+JyxcbiAgICAgICcgICAgICAgICAgICA8aDM+RGVwbG95ICZyYXJyOzwvaDM+JyxcbiAgICAgICcgICAgICAgICAgICA8cD4nLFxuICAgICAgJyAgICAgICAgICAgICAgSW5zdGFudGx5IGRlcGxveSB5b3VyIE5leHQuanMgc2l0ZSB0byBhIHB1YmxpYyBVUkwgd2l0aCBWZXJjZWwuJyxcbiAgICAgICcgICAgICAgICAgICA8L3A+JyxcbiAgICAgICcgICAgICAgICAgPC9hPicsXG4gICAgICAnICAgICAgICA8L2Rpdj4nLFxuICAgICAgJyAgICAgIDwvbWFpbj4nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgPGZvb3Rlcj4nLFxuICAgICAgJyAgICAgICAgPGEnLFxuICAgICAgJyAgICAgICAgICBocmVmPVwiaHR0cHM6Ly92ZXJjZWwuY29tP3V0bV9zb3VyY2U9Y3JlYXRlLW5leHQtYXBwJnV0bV9tZWRpdW09ZGVmYXVsdC10ZW1wbGF0ZSZ1dG1fY2FtcGFpZ249Y3JlYXRlLW5leHQtYXBwXCInLFxuICAgICAgJyAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIicsXG4gICAgICAnICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIicsXG4gICAgICAnICAgICAgICA+JyxcbiAgICAgICcgICAgICAgICAgUG93ZXJlZCBieSBWZXJjZWwnLFxuICAgICAgJyAgICAgICAgICA8aW1nIHNyYz1cIi92ZXJjZWwuc3ZnXCIgYWx0PVwiVmVyY2VsIExvZ29cIiBjbGFzc05hbWU9XCJsb2dvXCIgLz4nLFxuICAgICAgJyAgICAgICAgPC9hPicsXG4gICAgICAnICAgICAgPC9mb290ZXI+JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgIDxzdHlsZSBqc3g+e2AnLFxuICAgICAgJyAgICAgICAgLmNvbnRhaW5lciB7JyxcbiAgICAgICcgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7JyxcbiAgICAgICcgICAgICAgICAgcGFkZGluZzogMCAwLjVyZW07JyxcbiAgICAgICcgICAgICAgICAgZGlzcGxheTogZmxleDsnLFxuICAgICAgJyAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOycsXG4gICAgICAnICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOycsXG4gICAgICAnICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7JyxcbiAgICAgICcgICAgICAgIH0nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgICBtYWluIHsnLFxuICAgICAgJyAgICAgICAgICBwYWRkaW5nOiA1cmVtIDA7JyxcbiAgICAgICcgICAgICAgICAgZmxleDogMTsnLFxuICAgICAgJyAgICAgICAgICBkaXNwbGF5OiBmbGV4OycsXG4gICAgICAnICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47JyxcbiAgICAgICcgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7JyxcbiAgICAgICcgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsnLFxuICAgICAgJyAgICAgICAgfScsXG4gICAgICAnJyxcbiAgICAgICcgICAgICAgIGZvb3RlciB7JyxcbiAgICAgICcgICAgICAgICAgd2lkdGg6IDEwMCU7JyxcbiAgICAgICcgICAgICAgICAgaGVpZ2h0OiAxMDBweDsnLFxuICAgICAgJyAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2VhZWFlYTsnLFxuICAgICAgJyAgICAgICAgICBkaXNwbGF5OiBmbGV4OycsXG4gICAgICAnICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOycsXG4gICAgICAnICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7JyxcbiAgICAgICcgICAgICAgIH0nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgICBmb290ZXIgaW1nIHsnLFxuICAgICAgJyAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtOycsXG4gICAgICAnICAgICAgICB9JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgZm9vdGVyIGEgeycsXG4gICAgICAnICAgICAgICAgIGRpc3BsYXk6IGZsZXg7JyxcbiAgICAgICcgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7JyxcbiAgICAgICcgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsnLFxuICAgICAgJyAgICAgICAgfScsXG4gICAgICAnJyxcbiAgICAgICcgICAgICAgIGEgeycsXG4gICAgICAnICAgICAgICAgIGNvbG9yOiBpbmhlcml0OycsXG4gICAgICAnICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsnLFxuICAgICAgJyAgICAgICAgfScsXG4gICAgICAnJyxcbiAgICAgICcgICAgICAgIC50aXRsZSBhIHsnLFxuICAgICAgJyAgICAgICAgICBjb2xvcjogIzAwNzBmMzsnLFxuICAgICAgJyAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7JyxcbiAgICAgICcgICAgICAgIH0nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgICAudGl0bGUgYTpob3ZlciwnLFxuICAgICAgJyAgICAgICAgLnRpdGxlIGE6Zm9jdXMsJyxcbiAgICAgICcgICAgICAgIC50aXRsZSBhOmFjdGl2ZSB7JyxcbiAgICAgICcgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7JyxcbiAgICAgICcgICAgICAgIH0nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgICAudGl0bGUgeycsXG4gICAgICAnICAgICAgICAgIG1hcmdpbjogMDsnLFxuICAgICAgJyAgICAgICAgICBsaW5lLWhlaWdodDogMS4xNTsnLFxuICAgICAgJyAgICAgICAgICBmb250LXNpemU6IDRyZW07JyxcbiAgICAgICcgICAgICAgIH0nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgICAudGl0bGUsJyxcbiAgICAgICcgICAgICAgIC5kZXNjcmlwdGlvbiB7JyxcbiAgICAgICcgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOycsXG4gICAgICAnICAgICAgICB9JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgLmRlc2NyaXB0aW9uIHsnLFxuICAgICAgJyAgICAgICAgICBsaW5lLWhlaWdodDogMS41OycsXG4gICAgICAnICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOycsXG4gICAgICAnICAgICAgICB9JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgY29kZSB7JyxcbiAgICAgICcgICAgICAgICAgYmFja2dyb3VuZDogI2ZhZmFmYTsnLFxuICAgICAgJyAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7JyxcbiAgICAgICcgICAgICAgICAgcGFkZGluZzogMC43NXJlbTsnLFxuICAgICAgJyAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsnLFxuICAgICAgJyAgICAgICAgICBmb250LWZhbWlseTogTWVubG8sIE1vbmFjbywgTHVjaWRhIENvbnNvbGUsIExpYmVyYXRpb24gTW9ubywnLFxuICAgICAgJyAgICAgICAgICAgIERlamFWdSBTYW5zIE1vbm8sIEJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ubywgQ291cmllciBOZXcsIG1vbm9zcGFjZTsnLFxuICAgICAgJyAgICAgICAgfScsXG4gICAgICAnJyxcbiAgICAgICcgICAgICAgIC5ncmlkIHsnLFxuICAgICAgJyAgICAgICAgICBkaXNwbGF5OiBmbGV4OycsXG4gICAgICAnICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7JyxcbiAgICAgICcgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7JyxcbiAgICAgICcgICAgICAgICAgZmxleC13cmFwOiB3cmFwOycsXG4gICAgICAnJyxcbiAgICAgICcgICAgICAgICAgbWF4LXdpZHRoOiA4MDBweDsnLFxuICAgICAgJyAgICAgICAgICBtYXJnaW4tdG9wOiAzcmVtOycsXG4gICAgICAnICAgICAgICB9JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgLmNhcmQgeycsXG4gICAgICAnICAgICAgICAgIG1hcmdpbjogMXJlbTsnLFxuICAgICAgJyAgICAgICAgICBmbGV4LWJhc2lzOiA0NSU7JyxcbiAgICAgICcgICAgICAgICAgcGFkZGluZzogMS41cmVtOycsXG4gICAgICAnICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7JyxcbiAgICAgICcgICAgICAgICAgY29sb3I6IGluaGVyaXQ7JyxcbiAgICAgICcgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOycsXG4gICAgICAnICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWE7JyxcbiAgICAgICcgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsnLFxuICAgICAgJyAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlLCBib3JkZXItY29sb3IgMC4xNXMgZWFzZTsnLFxuICAgICAgJyAgICAgICAgfScsXG4gICAgICAnJyxcbiAgICAgICcgICAgICAgIC5jYXJkOmhvdmVyLCcsXG4gICAgICAnICAgICAgICAuY2FyZDpmb2N1cywnLFxuICAgICAgJyAgICAgICAgLmNhcmQ6YWN0aXZlIHsnLFxuICAgICAgJyAgICAgICAgICBjb2xvcjogIzAwNzBmMzsnLFxuICAgICAgJyAgICAgICAgICBib3JkZXItY29sb3I6ICMwMDcwZjM7JyxcbiAgICAgICcgICAgICAgIH0nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgICAuY2FyZCBoMyB7JyxcbiAgICAgICcgICAgICAgICAgbWFyZ2luOiAwIDAgMXJlbSAwOycsXG4gICAgICAnICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOycsXG4gICAgICAnICAgICAgICB9JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgLmNhcmQgcCB7JyxcbiAgICAgICcgICAgICAgICAgbWFyZ2luOiAwOycsXG4gICAgICAnICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTsnLFxuICAgICAgJyAgICAgICAgICBsaW5lLWhlaWdodDogMS41OycsXG4gICAgICAnICAgICAgICB9JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgLmxvZ28geycsXG4gICAgICAnICAgICAgICAgIGhlaWdodDogMWVtOycsXG4gICAgICAnICAgICAgICB9JyxcbiAgICAgICcnLFxuICAgICAgJyAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7JyxcbiAgICAgICcgICAgICAgICAgLmdyaWQgeycsXG4gICAgICAnICAgICAgICAgICAgd2lkdGg6IDEwMCU7JyxcbiAgICAgICcgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOycsXG4gICAgICAnICAgICAgICAgIH0nLFxuICAgICAgJyAgICAgICAgfScsXG4gICAgICAnICAgICAgYH08L3N0eWxlPicsXG4gICAgICAnJyxcbiAgICAgICcgICAgICA8c3R5bGUganN4IGdsb2JhbD57YCcsXG4gICAgICAnICAgICAgICBodG1sLCcsXG4gICAgICAnICAgICAgICBib2R5IHsnLFxuICAgICAgJyAgICAgICAgICBwYWRkaW5nOiAwOycsXG4gICAgICAnICAgICAgICAgIG1hcmdpbjogMDsnLFxuICAgICAgJyAgICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBTZWdvZSBVSSwgUm9ib3RvLCcsXG4gICAgICAnICAgICAgICAgICAgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgRmlyYSBTYW5zLCBEcm9pZCBTYW5zLCBIZWx2ZXRpY2EgTmV1ZSwnLFxuICAgICAgJyAgICAgICAgICAgIHNhbnMtc2VyaWY7JyxcbiAgICAgICcgICAgICAgIH0nLFxuICAgICAgJycsXG4gICAgICAnICAgICAgICAqIHsnLFxuICAgICAgJyAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OycsXG4gICAgICAnICAgICAgICB9JyxcbiAgICAgICcgICAgICBgfTwvc3R5bGU+JyxcbiAgICAgICcgICAgPC9kaXY+JyxcbiAgICAgICcgICknLFxuICAgICAgJ30nLFxuICAgICAgJycsXG4gICAgXTtcblxuICAgIGlmICh0aGlzLnRhaWx3aW5kKSB7XG4gICAgICBpbmRleEpzLnVuc2hpZnQoJ2ltcG9ydCBcInRhaWx3aW5kY3NzL3RhaWx3aW5kLmNzc1wiJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmVyY2VsU3ZnID0gW1xuICAgICAgJzxzdmcgd2lkdGg9XCIyODNcIiBoZWlnaHQ9XCI2NFwiIHZpZXdCb3g9XCIwIDAgMjgzIDY0XCIgZmlsbD1cIm5vbmVcIiAnLFxuICAgICAgJyAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+JyxcbiAgICAgICcgICAgPHBhdGggZD1cIk0xNDEuMDQgMTZjLTExLjA0IDAtMTkgNy4yLTE5IDE4czguOTYgMTggMjAgMThjNi42NyAwIDEyLjU1LTIuNjQgMTYuMTktNy4wOWwtNy42NS00LjQyYy0yLjAyIDIuMjEtNS4wOSAzLjUtOC41NCAzLjUtNC43OSAwLTguODYtMi41LTEwLjM3LTYuNWgyOC4wMmMuMjItMS4xMi4zNS0yLjI4LjM1LTMuNSAwLTEwLjc5LTcuOTYtMTcuOTktMTktMTcuOTl6bS05LjQ2IDE0LjVjMS4yNS0zLjk5IDQuNjctNi41IDkuNDUtNi41IDQuNzkgMCA4LjIxIDIuNTEgOS40NSA2LjVoLTE4Ljl6TTI0OC43MiAxNmMtMTEuMDQgMC0xOSA3LjItMTkgMThzOC45NiAxOCAyMCAxOGM2LjY3IDAgMTIuNTUtMi42NCAxNi4xOS03LjA5bC03LjY1LTQuNDJjLTIuMDIgMi4yMS01LjA5IDMuNS04LjU0IDMuNS00Ljc5IDAtOC44Ni0yLjUtMTAuMzctNi41aDI4LjAyYy4yMi0xLjEyLjM1LTIuMjguMzUtMy41IDAtMTAuNzktNy45Ni0xNy45OS0xOS0xNy45OXptLTkuNDUgMTQuNWMxLjI1LTMuOTkgNC42Ny02LjUgOS40NS02LjUgNC43OSAwIDguMjEgMi41MSA5LjQ1IDYuNWgtMTguOXpNMjAwLjI0IDM0YzAgNiAzLjkyIDEwIDEwIDEwIDQuMTIgMCA3LjIxLTEuODcgOC44LTQuOTJsNy42OCA0LjQzYy0zLjE4IDUuMy05LjE0IDguNDktMTYuNDggOC40OS0xMS4wNSAwLTE5LTcuMi0xOS0xOHM3Ljk2LTE4IDE5LTE4YzcuMzQgMCAxMy4yOSAzLjE5IDE2LjQ4IDguNDlsLTcuNjggNC40M2MtMS41OS0zLjA1LTQuNjgtNC45Mi04LjgtNC45Mi02LjA3IDAtMTAgNC0xMCAxMHptODIuNDgtMjl2NDZoLTlWNWg5ek0zNi45NSAwTDczLjkgNjRIMEwzNi45NSAwem05Mi4zOCA1bC0yNy43MSA0OEw3My45MSA1SDg0LjNsMTcuMzIgMzAgMTcuMzItMzBoMTAuMzl6bTU4LjkxIDEydjkuNjljLTEtLjI5LTIuMDYtLjQ5LTMuMi0uNDktNS44MSAwLTEwIDQtMTAgMTBWNTFoLTlWMTdoOXY5LjJjMC01LjA4IDUuOTEtOS4yIDEzLjItOS4yelwiIGZpbGw9XCIjMDAwXCIvPicsXG4gICAgICAnPC9zdmc+JyxcbiAgICBdO1xuXG4gICAgbmV3IFNhbXBsZURpcihwcm9qZWN0LCB0aGlzLnNyY2Rpciwge1xuICAgICAgZmlsZXM6IHtcbiAgICAgICAgWydpbmRleC4nICsgdGhpcy5maWxlRXh0XTogaW5kZXhKcy5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgU2FtcGxlRGlyKHByb2plY3QsIHRoaXMuYXNzZXRzZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICAndmVyY2VsLnN2Zyc6IHZlcmNlbFN2Zy5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgU2FtcGxlRmlsZShwcm9qZWN0LCAnbmV4dC1lbnYuZC50cycsIHtcbiAgICAgIGNvbnRlbnRzOiBbXG4gICAgICAgICcvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIm5leHRcIiAvPicsXG4gICAgICAgICcvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIm5leHQvdHlwZXMvZ2xvYmFsXCIgLz4nLFxuICAgICAgICAnLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJuZXh0L2ltYWdlLXR5cGVzL2dsb2JhbFwiIC8+JyxcbiAgICAgICAgJy8vIE5PVEU6IFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGVkaXRlZCcsXG4gICAgICAgICcvLyBzZWUgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYmFzaWMtZmVhdHVyZXMvdHlwZXNjcmlwdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLFxuICAgICAgICAnJyxcbiAgICAgIF0uam9pbignXFxuJyksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWIvbmV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUF5QztBQUN6Qyw4Q0FLdUI7QUFDdkIsZ0RBQXVEO0FBQ3ZELDhDQUErRTtBQUMvRSxrQ0FBb0M7QUFDcEMsdUNBQW9DOzs7Ozs7O0FBeUJwQyxNQUFhLGFBQWMsU0FBUSx3QkFBVzs7OztJQVU1QyxZQUFZLE9BQTZCOztRQUN2QyxLQUFLLENBQUM7WUFDSixJQUFJLEVBQUUsS0FBSztZQUNYLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLFNBQUcsT0FBTyxDQUFDLE1BQU0sbUNBQUksT0FBTyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLFNBQUcsT0FBTyxDQUFDLFNBQVMsbUNBQUksUUFBUSxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLFNBQUcsT0FBTyxDQUFDLFFBQVEsbUNBQUksSUFBSSxDQUFDO1FBRXpDLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLCtGQUErRjtRQUMvRixVQUFJLE9BQU8sQ0FBQyxVQUFVLG1DQUFJLElBQUksRUFBRTtZQUM5QixJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDeEIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztBQWhDSCxzQ0FpQ0M7Ozs7Ozs7OztBQUdELE1BQWEsdUJBQXdCLFNBQVEsaUNBQW9COzs7O0lBVS9ELFlBQVksT0FBdUM7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Q0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzlDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSx1QkFBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JDLEtBQUssRUFBRTtnQkFDTCxZQUFZLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbkM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLHdCQUFVLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRTtZQUN2QyxRQUFRLEVBQUU7Z0JBQ1IsZ0NBQWdDO2dCQUNoQyw2Q0FBNkM7Z0JBQzdDLG1EQUFtRDtnQkFDbkQseUNBQXlDO2dCQUN6QyxnRkFBZ0Y7Z0JBQ2hGLEVBQUU7YUFDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICBOb2RlUHJvamVjdCxcbiAgTm9kZVByb2plY3RPcHRpb25zLFxuICBUeXBlU2NyaXB0SnN4TW9kZSxcbiAgVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24sXG59IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBTYW1wbGVEaXIsIFNhbXBsZUZpbGUgfSBmcm9tIFwiLi4vc2FtcGxlLWZpbGVcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0LCBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7IFBvc3RDc3MgfSBmcm9tIFwiLi9wb3N0Y3NzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dEpzQ29tbW9uUHJvamVjdE9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhc3NldHNkaXI/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRhaWx3aW5kPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0SnNUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcbiAgZXh0ZW5kcyBOZXh0SnNDb21tb25Qcm9qZWN0T3B0aW9ucyxcbiAgICBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0SnNQcm9qZWN0T3B0aW9uc1xuICBleHRlbmRzIE5leHRKc0NvbW1vblByb2plY3RPcHRpb25zLFxuICAgIE5vZGVQcm9qZWN0T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgTmV4dEpzUHJvamVjdCBleHRlbmRzIE5vZGVQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGFzc2V0c2Rpcjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSB0YWlsd2luZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBOZXh0SnNQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246IFwiMTIuMTMuMFwiLCAvLyBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXIgPz8gXCJwYWdlc1wiO1xuICAgIHRoaXMuYXNzZXRzZGlyID0gb3B0aW9ucy5hc3NldHNkaXIgPz8gXCJwdWJsaWNcIjtcbiAgICB0aGlzLnRhaWx3aW5kID0gb3B0aW9ucy50YWlsd2luZCA/PyB0cnVlO1xuXG4gICAgbmV3IE5leHRDb21wb25lbnQodGhpcywgeyB0eXBlc2NyaXB0OiBmYWxzZSwgdGFpbHdpbmQ6IHRoaXMudGFpbHdpbmQgfSk7XG5cbiAgICAvLyBnZW5lcmF0ZSBzYW1wbGUgY29kZSBpbiBgcGFnZXNgIGFuZCBgcHVibGljYCBpZiB0aGVzZSBkaXJlY3RvcmllcyBhcmUgZW1wdHkgb3Igbm9uLWV4aXN0ZW50LlxuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IE5leHRTYW1wbGVDb2RlKHRoaXMsIHtcbiAgICAgICAgZmlsZUV4dDogXCJqc1wiLFxuICAgICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICBhc3NldHNkaXI6IHRoaXMuYXNzZXRzZGlyLFxuICAgICAgICB0YWlsd2luZDogdGhpcy50YWlsd2luZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIE5leHRKc1R5cGVTY3JpcHRQcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdEFwcFByb2plY3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgYXNzZXRzZGlyOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHRhaWx3aW5kOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE5leHRKc1R5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgc3JjZGlyOiBcInBhZ2VzXCIsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246IFwiMTIuMTMuMFwiLCAvLyBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICBpbmNsdWRlOiBbXCIqKi8qLnRzXCIsIFwiKiovKi50c3hcIl0sXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIC8vIHJlcXVpcmVkIGJ5IE5leHQuanNcbiAgICAgICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICAgICAgbW9kdWxlOiBcImVzbmV4dFwiLFxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uLk5PREUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIHJlc29sdmVKc29uTW9kdWxlOiB0cnVlLFxuICAgICAgICAgIGpzeDogVHlwZVNjcmlwdEpzeE1vZGUuUFJFU0VSVkUsXG5cbiAgICAgICAgICAvLyByZWNvbW1lbmRlZCBieSBOZXh0LmpzXG4gICAgICAgICAgYWxsb3dKczogdHJ1ZSxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG4gICAgICAgICAgZm9yY2VDb25zaXN0ZW50Q2FzaW5nSW5GaWxlTmFtZXM6IHRydWUsXG4gICAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICAgIGxpYjogW1wiZG9tXCIsIFwiZG9tLml0ZXJhYmxlXCIsIFwiZXNuZXh0XCJdLFxuICAgICAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgICAgICAgdGFyZ2V0OiBcImVzNVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gbmV2ZXIgZ2VuZXJhdGUgZGVmYXVsdCBUeXBlU2NyaXB0IHNhbXBsZSBjb2RlLCBzaW5jZSB0aGlzIGNsYXNzIHByb3ZpZGVzIGl0cyBvd25cbiAgICBzdXBlcihcbiAgICAgIGRlZXBNZXJnZShbXG4gICAgICAgIGRlZmF1bHRPcHRpb25zLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICB7IHNhbXBsZUNvZGU6IGZhbHNlIH0sXG4gICAgICBdKSBhcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcbiAgICApO1xuXG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpciA/PyBcInBhZ2VzXCI7XG4gICAgdGhpcy5hc3NldHNkaXIgPSBvcHRpb25zLmFzc2V0c2RpciA/PyBcInB1YmxpY1wiO1xuICAgIHRoaXMudGFpbHdpbmQgPSBvcHRpb25zLnRhaWx3aW5kID8/IHRydWU7XG5cbiAgICBuZXcgTmV4dENvbXBvbmVudCh0aGlzLCB7IHR5cGVzY3JpcHQ6IHRydWUsIHRhaWx3aW5kOiB0aGlzLnRhaWx3aW5kIH0pO1xuXG4gICAgLy8gJ25leHQgYnVpbGQnIGNvbW1hbmQgZmFpbHMgaWYgdHNjb25maWcuanNvbiBpcyBpbW11dGFibGVcbiAgICBpZiAodGhpcy50c2NvbmZpZykge1xuICAgICAgdGhpcy50c2NvbmZpZy5maWxlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHBhZ2VzYCBhbmQgYHB1YmxpY2AgaWYgdGhlc2UgZGlyZWN0b3JpZXMgYXJlIGVtcHR5IG9yIG5vbi1leGlzdGVudC5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGVDb2RlID8/IHRydWUpIHtcbiAgICAgIG5ldyBOZXh0U2FtcGxlQ29kZSh0aGlzLCB7XG4gICAgICAgIGZpbGVFeHQ6IFwidHN4XCIsXG4gICAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgICAgIGFzc2V0c2RpcjogdGhpcy5hc3NldHNkaXIsXG4gICAgICAgIHRhaWx3aW5kOiB0aGlzLnRhaWx3aW5kLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dENvbXBvbmVudE9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHR5cGVzY3JpcHQ/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRhaWx3aW5kPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE5leHRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHR5cGVzY3JpcHQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFpbHdpbmQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IE5leHRDb21wb25lbnRPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLnR5cGVzY3JpcHQgPSBvcHRpb25zLnR5cGVzY3JpcHQgPz8gZmFsc2U7XG4gICAgdGhpcy50YWlsd2luZCA9IG9wdGlvbnMudGFpbHdpbmQgPz8gdHJ1ZTtcblxuICAgIHByb2plY3QuYWRkRGVwcyhcIm5leHRcIiwgXCJyZWFjdFwiLCBcInJlYWN0LWRvbVwiKTtcbiAgICBpZiAodGhpcy50eXBlc2NyaXB0KSB7XG4gICAgICBwcm9qZWN0LmFkZERldkRlcHMoXCJAdHlwZXMvcmVhY3RcIiwgXCJAdHlwZXMvcmVhY3QtZG9tXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy50YWlsd2luZCkge1xuICAgICAgbmV3IFBvc3RDc3MocHJvamVjdCwgeyB0YWlsd2luZDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBOZXh0SlMgQ0xJIGNvbW1hbmRzLCBzZWU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwaS1yZWZlcmVuY2UvY2xpXG4gICAgcHJvamVjdC5hZGRUYXNrKFwiZGV2XCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlN0YXJ0cyB0aGUgTmV4dC5qcyBhcHBsaWNhdGlvbiBpbiBkZXZlbG9wbWVudCBtb2RlXCIsXG4gICAgICBleGVjOiBcIm5leHQgZGV2XCIsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLmV4ZWMoXCJuZXh0IGJ1aWxkXCIpO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKFwiZXhwb3J0XCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkV4cG9ydHMgdGhlIGFwcGxpY2F0aW9uIGZvciBwcm9kdWN0aW9uIGRlcGxveW1lbnRcIixcbiAgICAgIGV4ZWM6IFwibmV4dCBleHBvcnRcIixcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzayhcInNlcnZlclwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTdGFydHMgdGhlIE5leHQuanMgYXBwbGljYXRpb24gaW4gcHJvZHVjdGlvbiBtb2RlXCIsXG4gICAgICBleGVjOiBcIm5leHQgc3RhcnRcIixcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzayhcInRlbGVtZXRyeVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDaGVja3MgdGhlIHN0YXR1cyBvZiBOZXh0LmpzIHRlbGVtZXRyeSBjb2xsZWN0aW9uXCIsXG4gICAgICBleGVjOiBcIm5leHQgdGVsZW1ldHJ5XCIsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uZXhjbHVkZShcIiMgTmV4dC5qc1wiLCBcIi8ubmV4dC9cIik7XG4gICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZShcIiMgTmV4dC5qc1wiLCBcIi8ubmV4dC9cIik7XG4gIH1cbn1cblxuaW50ZXJmYWNlIE5leHRTYW1wbGVDb2RlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWxlIGV4dGVuc2lvbiBmb3Igc2FtcGxlIGphdmFzY3JpcHQgY29kZSB0byBiZSBzYXZlZCBhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJqc1wiXG4gICAqL1xuICByZWFkb25seSBmaWxlRXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIE5leHQuanMgcGFnZXMgYXJlIGRlY2xhcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggYXBwIGFzc2V0cyByZXNpZGUuXG4gICAqL1xuICByZWFkb25seSBhc3NldHNkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogU2V0dXAgVGFpbHdpbmQgYXMgYSBQb3N0Q1NTIHBsdWdpbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhaWx3aW5kOiBib29sZWFuO1xufVxuXG5jbGFzcyBOZXh0U2FtcGxlQ29kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZUV4dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0c2Rpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhaWx3aW5kOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zOiBOZXh0U2FtcGxlQ29kZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuZmlsZUV4dCA9IG9wdGlvbnMuZmlsZUV4dCA/PyBcImpzXCI7XG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpcjtcbiAgICB0aGlzLmFzc2V0c2RpciA9IG9wdGlvbnMuYXNzZXRzZGlyO1xuICAgIHRoaXMudGFpbHdpbmQgPSBvcHRpb25zLnRhaWx3aW5kO1xuXG4gICAgY29uc3QgaW5kZXhKcyA9IFtcbiAgICAgICdpbXBvcnQgSGVhZCBmcm9tIFwibmV4dC9oZWFkXCInLFxuICAgICAgXCJcIixcbiAgICAgIFwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSG9tZSgpIHtcIixcbiAgICAgIFwiICByZXR1cm4gKFwiLFxuICAgICAgJyAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPicsXG4gICAgICBcIiAgICAgIDxIZWFkPlwiLFxuICAgICAgXCIgICAgICAgIDx0aXRsZT5DcmVhdGUgTmV4dCBBcHA8L3RpdGxlPlwiLFxuICAgICAgXCIgICAgICA8L0hlYWQ+XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICA8bWFpbj5cIixcbiAgICAgICcgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0aXRsZVwiPicsXG4gICAgICAnICAgICAgICAgIFdlbGNvbWUgdG8gPGEgaHJlZj1cImh0dHBzOi8vbmV4dGpzLm9yZ1wiPk5leHQuanMhPC9hPicsXG4gICAgICBcIiAgICAgICAgPC9oMT5cIixcbiAgICAgIFwiXCIsXG4gICAgICAnICAgICAgICA8cCBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPicsXG4gICAgICBcIiAgICAgICAgICBHZXQgc3RhcnRlZCBieSBlZGl0aW5nIDxjb2RlPnBhZ2VzL2luZGV4LmpzPC9jb2RlPlwiLFxuICAgICAgXCIgICAgICAgIDwvcD5cIixcbiAgICAgIFwiXCIsXG4gICAgICAnICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWRcIj4nLFxuICAgICAgJyAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3NcIiBjbGFzc05hbWU9XCJjYXJkXCI+JyxcbiAgICAgIFwiICAgICAgICAgICAgPGgzPkRvY3VtZW50YXRpb24gJnJhcnI7PC9oMz5cIixcbiAgICAgIFwiICAgICAgICAgICAgPHA+RmluZCBpbi1kZXB0aCBpbmZvcm1hdGlvbiBhYm91dCBOZXh0LmpzIGZlYXR1cmVzIGFuZCBBUEkuPC9wPlwiLFxuICAgICAgXCIgICAgICAgICAgPC9hPlwiLFxuICAgICAgXCJcIixcbiAgICAgICcgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vbmV4dGpzLm9yZy9sZWFyblwiIGNsYXNzTmFtZT1cImNhcmRcIj4nLFxuICAgICAgXCIgICAgICAgICAgICA8aDM+TGVhcm4gJnJhcnI7PC9oMz5cIixcbiAgICAgIFwiICAgICAgICAgICAgPHA+TGVhcm4gYWJvdXQgTmV4dC5qcyBpbiBhbiBpbnRlcmFjdGl2ZSBjb3Vyc2Ugd2l0aCBxdWl6emVzITwvcD5cIixcbiAgICAgIFwiICAgICAgICAgIDwvYT5cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgICA8YVwiLFxuICAgICAgJyAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvdHJlZS9tYXN0ZXIvZXhhbXBsZXNcIicsXG4gICAgICAnICAgICAgICAgICAgY2xhc3NOYW1lPVwiY2FyZFwiJyxcbiAgICAgIFwiICAgICAgICAgID5cIixcbiAgICAgIFwiICAgICAgICAgICAgPGgzPkV4YW1wbGVzICZyYXJyOzwvaDM+XCIsXG4gICAgICBcIiAgICAgICAgICAgIDxwPkRpc2NvdmVyIGFuZCBkZXBsb3kgYm9pbGVycGxhdGUgZXhhbXBsZSBOZXh0LmpzIHByb2plY3RzLjwvcD5cIixcbiAgICAgIFwiICAgICAgICAgIDwvYT5cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgICA8YVwiLFxuICAgICAgJyAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3ZlcmNlbC5jb20vaW1wb3J0P2ZpbHRlcj1uZXh0LmpzJnV0bV9zb3VyY2U9Y3JlYXRlLW5leHQtYXBwJnV0bV9tZWRpdW09ZGVmYXVsdC10ZW1wbGF0ZSZ1dG1fY2FtcGFpZ249Y3JlYXRlLW5leHQtYXBwXCInLFxuICAgICAgJyAgICAgICAgICAgIGNsYXNzTmFtZT1cImNhcmRcIicsXG4gICAgICBcIiAgICAgICAgICA+XCIsXG4gICAgICBcIiAgICAgICAgICAgIDxoMz5EZXBsb3kgJnJhcnI7PC9oMz5cIixcbiAgICAgIFwiICAgICAgICAgICAgPHA+XCIsXG4gICAgICBcIiAgICAgICAgICAgICAgSW5zdGFudGx5IGRlcGxveSB5b3VyIE5leHQuanMgc2l0ZSB0byBhIHB1YmxpYyBVUkwgd2l0aCBWZXJjZWwuXCIsXG4gICAgICBcIiAgICAgICAgICAgIDwvcD5cIixcbiAgICAgIFwiICAgICAgICAgIDwvYT5cIixcbiAgICAgIFwiICAgICAgICA8L2Rpdj5cIixcbiAgICAgIFwiICAgICAgPC9tYWluPlwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgPGZvb3Rlcj5cIixcbiAgICAgIFwiICAgICAgICA8YVwiLFxuICAgICAgJyAgICAgICAgICBocmVmPVwiaHR0cHM6Ly92ZXJjZWwuY29tP3V0bV9zb3VyY2U9Y3JlYXRlLW5leHQtYXBwJnV0bV9tZWRpdW09ZGVmYXVsdC10ZW1wbGF0ZSZ1dG1fY2FtcGFpZ249Y3JlYXRlLW5leHQtYXBwXCInLFxuICAgICAgJyAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIicsXG4gICAgICAnICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIicsXG4gICAgICBcIiAgICAgICAgPlwiLFxuICAgICAgXCIgICAgICAgICAgUG93ZXJlZCBieSBWZXJjZWxcIixcbiAgICAgICcgICAgICAgICAgPGltZyBzcmM9XCIvdmVyY2VsLnN2Z1wiIGFsdD1cIlZlcmNlbCBMb2dvXCIgY2xhc3NOYW1lPVwibG9nb1wiIC8+JyxcbiAgICAgIFwiICAgICAgICA8L2E+XCIsXG4gICAgICBcIiAgICAgIDwvZm9vdGVyPlwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgPHN0eWxlIGpzeD57YFwiLFxuICAgICAgXCIgICAgICAgIC5jb250YWluZXIge1wiLFxuICAgICAgXCIgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7XCIsXG4gICAgICBcIiAgICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcIixcbiAgICAgIFwiICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XCIsXG4gICAgICBcIiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1wiLFxuICAgICAgXCIgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCIsXG4gICAgICBcIiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgbWFpbiB7XCIsXG4gICAgICBcIiAgICAgICAgICBwYWRkaW5nOiA1cmVtIDA7XCIsXG4gICAgICBcIiAgICAgICAgICBmbGV4OiAxO1wiLFxuICAgICAgXCIgICAgICAgICAgZGlzcGxheTogZmxleDtcIixcbiAgICAgIFwiICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCIsXG4gICAgICBcIiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICBmb290ZXIge1wiLFxuICAgICAgXCIgICAgICAgICAgd2lkdGg6IDEwMCU7XCIsXG4gICAgICBcIiAgICAgICAgICBoZWlnaHQ6IDEwMHB4O1wiLFxuICAgICAgXCIgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlYWVhZWE7XCIsXG4gICAgICBcIiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1wiLFxuICAgICAgXCIgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCIsXG4gICAgICBcIiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgZm9vdGVyIGltZyB7XCIsXG4gICAgICBcIiAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgZm9vdGVyIGEge1wiLFxuICAgICAgXCIgICAgICAgICAgZGlzcGxheTogZmxleDtcIixcbiAgICAgIFwiICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIGEge1wiLFxuICAgICAgXCIgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XCIsXG4gICAgICBcIiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAudGl0bGUgYSB7XCIsXG4gICAgICBcIiAgICAgICAgICBjb2xvcjogIzAwNzBmMztcIixcbiAgICAgIFwiICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSBhOmhvdmVyLFwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSBhOmZvY3VzLFwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSBhOmFjdGl2ZSB7XCIsXG4gICAgICBcIiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSB7XCIsXG4gICAgICBcIiAgICAgICAgICBtYXJnaW46IDA7XCIsXG4gICAgICBcIiAgICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcIixcbiAgICAgIFwiICAgICAgICAgIGZvbnQtc2l6ZTogNHJlbTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSxcIixcbiAgICAgIFwiICAgICAgICAuZGVzY3JpcHRpb24ge1wiLFxuICAgICAgXCIgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLmRlc2NyaXB0aW9uIHtcIixcbiAgICAgIFwiICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XCIsXG4gICAgICBcIiAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIGNvZGUge1wiLFxuICAgICAgXCIgICAgICAgICAgYmFja2dyb3VuZDogI2ZhZmFmYTtcIixcbiAgICAgIFwiICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcIixcbiAgICAgIFwiICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XCIsXG4gICAgICBcIiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcIixcbiAgICAgIFwiICAgICAgICAgIGZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBMdWNpZGEgQ29uc29sZSwgTGliZXJhdGlvbiBNb25vLFwiLFxuICAgICAgXCIgICAgICAgICAgICBEZWphVnUgU2FucyBNb25vLCBCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sIENvdXJpZXIgTmV3LCBtb25vc3BhY2U7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAuZ3JpZCB7XCIsXG4gICAgICBcIiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1wiLFxuICAgICAgXCIgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAgIG1heC13aWR0aDogODAwcHg7XCIsXG4gICAgICBcIiAgICAgICAgICBtYXJnaW4tdG9wOiAzcmVtO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLmNhcmQge1wiLFxuICAgICAgXCIgICAgICAgICAgbWFyZ2luOiAxcmVtO1wiLFxuICAgICAgXCIgICAgICAgICAgZmxleC1iYXNpczogNDUlO1wiLFxuICAgICAgXCIgICAgICAgICAgcGFkZGluZzogMS41cmVtO1wiLFxuICAgICAgXCIgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcIixcbiAgICAgIFwiICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1wiLFxuICAgICAgXCIgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1wiLFxuICAgICAgXCIgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VhZWFlYTtcIixcbiAgICAgIFwiICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XCIsXG4gICAgICBcIiAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlLCBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkOmhvdmVyLFwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkOmZvY3VzLFwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkOmFjdGl2ZSB7XCIsXG4gICAgICBcIiAgICAgICAgICBjb2xvcjogIzAwNzBmMztcIixcbiAgICAgIFwiICAgICAgICAgIGJvcmRlci1jb2xvcjogIzAwNzBmMztcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkIGgzIHtcIixcbiAgICAgIFwiICAgICAgICAgIG1hcmdpbjogMCAwIDFyZW0gMDtcIixcbiAgICAgIFwiICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLmNhcmQgcCB7XCIsXG4gICAgICBcIiAgICAgICAgICBtYXJnaW46IDA7XCIsXG4gICAgICBcIiAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XCIsXG4gICAgICBcIiAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLmxvZ28ge1wiLFxuICAgICAgXCIgICAgICAgICAgaGVpZ2h0OiAxZW07XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcIixcbiAgICAgIFwiICAgICAgICAgIC5ncmlkIHtcIixcbiAgICAgIFwiICAgICAgICAgICAgd2lkdGg6IDEwMCU7XCIsXG4gICAgICBcIiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCIsXG4gICAgICBcIiAgICAgICAgICB9XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCIgICAgICBgfTwvc3R5bGU+XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICA8c3R5bGUganN4IGdsb2JhbD57YFwiLFxuICAgICAgXCIgICAgICAgIGh0bWwsXCIsXG4gICAgICBcIiAgICAgICAgYm9keSB7XCIsXG4gICAgICBcIiAgICAgICAgICBwYWRkaW5nOiAwO1wiLFxuICAgICAgXCIgICAgICAgICAgbWFyZ2luOiAwO1wiLFxuICAgICAgXCIgICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgU2Vnb2UgVUksIFJvYm90byxcIixcbiAgICAgIFwiICAgICAgICAgICAgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgRmlyYSBTYW5zLCBEcm9pZCBTYW5zLCBIZWx2ZXRpY2EgTmV1ZSxcIixcbiAgICAgIFwiICAgICAgICAgICAgc2Fucy1zZXJpZjtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgICoge1wiLFxuICAgICAgXCIgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIiAgICAgIGB9PC9zdHlsZT5cIixcbiAgICAgIFwiICAgIDwvZGl2PlwiLFxuICAgICAgXCIgIClcIixcbiAgICAgIFwifVwiLFxuICAgICAgXCJcIixcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMudGFpbHdpbmQpIHtcbiAgICAgIGluZGV4SnMudW5zaGlmdCgnaW1wb3J0IFwidGFpbHdpbmRjc3MvdGFpbHdpbmQuY3NzXCInKTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJjZWxTdmcgPSBbXG4gICAgICAnPHN2ZyB3aWR0aD1cIjI4M1wiIGhlaWdodD1cIjY0XCIgdmlld0JveD1cIjAgMCAyODMgNjRcIiBmaWxsPVwibm9uZVwiICcsXG4gICAgICAnICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4nLFxuICAgICAgJyAgICA8cGF0aCBkPVwiTTE0MS4wNCAxNmMtMTEuMDQgMC0xOSA3LjItMTkgMThzOC45NiAxOCAyMCAxOGM2LjY3IDAgMTIuNTUtMi42NCAxNi4xOS03LjA5bC03LjY1LTQuNDJjLTIuMDIgMi4yMS01LjA5IDMuNS04LjU0IDMuNS00Ljc5IDAtOC44Ni0yLjUtMTAuMzctNi41aDI4LjAyYy4yMi0xLjEyLjM1LTIuMjguMzUtMy41IDAtMTAuNzktNy45Ni0xNy45OS0xOS0xNy45OXptLTkuNDYgMTQuNWMxLjI1LTMuOTkgNC42Ny02LjUgOS40NS02LjUgNC43OSAwIDguMjEgMi41MSA5LjQ1IDYuNWgtMTguOXpNMjQ4LjcyIDE2Yy0xMS4wNCAwLTE5IDcuMi0xOSAxOHM4Ljk2IDE4IDIwIDE4YzYuNjcgMCAxMi41NS0yLjY0IDE2LjE5LTcuMDlsLTcuNjUtNC40MmMtMi4wMiAyLjIxLTUuMDkgMy41LTguNTQgMy41LTQuNzkgMC04Ljg2LTIuNS0xMC4zNy02LjVoMjguMDJjLjIyLTEuMTIuMzUtMi4yOC4zNS0zLjUgMC0xMC43OS03Ljk2LTE3Ljk5LTE5LTE3Ljk5em0tOS40NSAxNC41YzEuMjUtMy45OSA0LjY3LTYuNSA5LjQ1LTYuNSA0Ljc5IDAgOC4yMSAyLjUxIDkuNDUgNi41aC0xOC45ek0yMDAuMjQgMzRjMCA2IDMuOTIgMTAgMTAgMTAgNC4xMiAwIDcuMjEtMS44NyA4LjgtNC45Mmw3LjY4IDQuNDNjLTMuMTggNS4zLTkuMTQgOC40OS0xNi40OCA4LjQ5LTExLjA1IDAtMTktNy4yLTE5LTE4czcuOTYtMTggMTktMThjNy4zNCAwIDEzLjI5IDMuMTkgMTYuNDggOC40OWwtNy42OCA0LjQzYy0xLjU5LTMuMDUtNC42OC00LjkyLTguOC00LjkyLTYuMDcgMC0xMCA0LTEwIDEwem04Mi40OC0yOXY0NmgtOVY1aDl6TTM2Ljk1IDBMNzMuOSA2NEgwTDM2Ljk1IDB6bTkyLjM4IDVsLTI3LjcxIDQ4TDczLjkxIDVIODQuM2wxNy4zMiAzMCAxNy4zMi0zMGgxMC4zOXptNTguOTEgMTJ2OS42OWMtMS0uMjktMi4wNi0uNDktMy4yLS40OS01LjgxIDAtMTAgNC0xMCAxMFY1MWgtOVYxN2g5djkuMmMwLTUuMDggNS45MS05LjIgMTMuMi05LjJ6XCIgZmlsbD1cIiMwMDBcIi8+JyxcbiAgICAgIFwiPC9zdmc+XCIsXG4gICAgXTtcblxuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgdGhpcy5zcmNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFtcImluZGV4LlwiICsgdGhpcy5maWxlRXh0XTogaW5kZXhKcy5qb2luKFwiXFxuXCIpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgdGhpcy5hc3NldHNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFwidmVyY2VsLnN2Z1wiOiB2ZXJjZWxTdmcuam9pbihcIlxcblwiKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgU2FtcGxlRmlsZShwcm9qZWN0LCBcIm5leHQtZW52LmQudHNcIiwge1xuICAgICAgY29udGVudHM6IFtcbiAgICAgICAgJy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibmV4dFwiIC8+JyxcbiAgICAgICAgJy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibmV4dC90eXBlcy9nbG9iYWxcIiAvPicsXG4gICAgICAgICcvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIm5leHQvaW1hZ2UtdHlwZXMvZ2xvYmFsXCIgLz4nLFxuICAgICAgICBcIi8vIE5PVEU6IFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGVkaXRlZFwiLFxuICAgICAgICBcIi8vIHNlZSBodHRwczovL25leHRqcy5vcmcvZG9jcy9iYXNpYy1mZWF0dXJlcy90eXBlc2NyaXB0IGZvciBtb3JlIGluZm9ybWF0aW9uLlwiLFxuICAgICAgICBcIlwiLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|