@xpertss/projen-types 0.0.27 → 0.0.28
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 +105 -85
- package/API.md +120 -15
- package/README.md +9 -8
- package/lib/actions/action-build-workflow.js +1 -1
- package/lib/actions/action-dogfood-workflow.js +1 -1
- package/lib/actions/action-sonar-workflow.js +1 -1
- package/lib/actions/github-action-project.js +1 -1
- package/lib/cdk/app-runtime-scaffold.js +1 -1
- package/lib/cdk/cdk-app-project.js +1 -1
- package/lib/cdk/cdk-infra-project.js +1 -1
- package/lib/cdk/cdk-typescript-base.js +1 -1
- package/lib/cdk/components/ecr-ecs-constructs.js +1 -1
- package/lib/cdk/components/edge-networking-constructs.js +1 -1
- package/lib/cdk/database-component.js +1 -1
- package/lib/common/code-options.d.ts +14 -0
- package/lib/common/code-options.js +3 -0
- package/lib/common/internal-actions.d.ts +1 -1
- package/lib/common/internal-actions.js +2 -2
- package/lib/common/projen-drift-check-workflow.js +1 -1
- package/lib/common/sonar-workflow.js +1 -1
- package/lib/common/workflow-change-notice-workflow.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/java/components/cdk-deploy-hook.js +1 -1
- package/lib/java/components/code-index-workflow.d.ts +1 -1
- package/lib/java/components/code-index-workflow.js +18 -5
- package/lib/java/components/docker-publish.js +1 -1
- package/lib/java/components/flyway-migration.js +1 -1
- package/lib/java/components/github-packages-publish.js +1 -1
- package/lib/java/components/maven-central-publish.js +1 -1
- package/lib/java/components/maven-upgrade-report.js +1 -1
- package/lib/java/java-app-project.js +1 -1
- package/lib/java/java-library-project.js +2 -6
- package/lib/java/java-maven-base.d.ts +2 -2
- package/lib/java/java-maven-base.js +8 -4
- package/lib/java/java-service-project.js +1 -1
- package/lib/java/java-spring-boot-project.js +1 -1
- package/lib/java/maven/maven-module.js +1 -1
- package/lib/java/maven/maven-pom.js +1 -1
- package/lib/java/options.d.ts +2 -3
- package/lib/java/options.js +1 -1
- package/package.json +1 -1
|
@@ -4,9 +4,9 @@ exports.CodeIndexWorkflow = void 0;
|
|
|
4
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
5
|
const projen_1 = require("projen");
|
|
6
6
|
const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
7
|
-
/** Generates a code index and publishes it to `.
|
|
7
|
+
/** Generates a code index and publishes it to `.xss/` on checkin. */
|
|
8
8
|
class CodeIndexWorkflow extends projen_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CodeIndexWorkflow", version: "0.0.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CodeIndexWorkflow", version: "0.0.28" };
|
|
10
10
|
constructor(project) {
|
|
11
11
|
super(project, 'CodeIndexWorkflow');
|
|
12
12
|
const gh = project.github;
|
|
@@ -16,7 +16,7 @@ class CodeIndexWorkflow extends projen_1.Component {
|
|
|
16
16
|
const indexTask = project.addTask('codeindex', {
|
|
17
17
|
// From the repo root, not `src/`: in a multi-module repo the sources
|
|
18
18
|
// live under each module directory.
|
|
19
|
-
exec: "mkdir -p .
|
|
19
|
+
exec: "mkdir -p .xss && find . -path ./node_modules -prune -o -name target -prune -o -name '*.java' -print | sort > .xss/index.txt",
|
|
20
20
|
});
|
|
21
21
|
const codeIndexWorkflow = new projen_1.github.TaskWorkflow(gh, {
|
|
22
22
|
name: 'codeindex',
|
|
@@ -28,12 +28,25 @@ class CodeIndexWorkflow extends projen_1.Component {
|
|
|
28
28
|
{
|
|
29
29
|
name: 'Commit code index',
|
|
30
30
|
uses: 'stefanzweifel/git-auto-commit-action@v5',
|
|
31
|
-
|
|
31
|
+
// No token input: the push uses the checkout's GITHUB_TOKEN, so the
|
|
32
|
+
// index commit starts no further workflows. `if_behind: skip` lets a
|
|
33
|
+
// run that lost the push race to a newer merge succeed - the newer
|
|
34
|
+
// run regenerates the index.
|
|
35
|
+
with: {
|
|
36
|
+
commit_message: 'chore: update code index',
|
|
37
|
+
folder: '.xss',
|
|
38
|
+
if_behind: 'skip',
|
|
39
|
+
},
|
|
32
40
|
},
|
|
33
41
|
],
|
|
34
42
|
});
|
|
43
|
+
// A newer push supersedes an index run still in progress.
|
|
44
|
+
codeIndexWorkflow.file?.addOverride('concurrency', {
|
|
45
|
+
'group': 'codeindex',
|
|
46
|
+
'cancel-in-progress': true,
|
|
47
|
+
});
|
|
35
48
|
(0, workflow_purpose_1.noteWorkflowPurpose)(codeIndexWorkflow.file, 'Regenerate and commit the code index on push to main.');
|
|
36
49
|
}
|
|
37
50
|
}
|
|
38
51
|
exports.CodeIndexWorkflow = CodeIndexWorkflow;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1pbmRleC13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qYXZhL2NvbXBvbmVudHMvY29kZS1pbmRleC13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQTJDO0FBQzNDLG9FQUFvRTtBQUdwRSxxRUFBcUU7QUFDckUsTUFBYSxpQkFBa0IsU0FBUSxrQkFBUzs7SUFDOUMsWUFBWSxPQUF5QjtRQUNuQyxLQUFLLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFcEMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQzdDLHFFQUFxRTtZQUNyRSxvQ0FBb0M7WUFDcEMsSUFBSSxFQUFFLDZIQUE2SDtTQUNwSSxDQUFDLENBQUM7UUFFSCxNQUFNLGlCQUFpQixHQUFHLElBQUksZUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDcEQsSUFBSSxFQUFFLFdBQVc7WUFDakIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsSUFBSSxFQUFFLFNBQVM7WUFDZixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQzFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxlQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDL0QsY0FBYyxFQUFFO2dCQUNkO29CQUNFLElBQUksRUFBRSxtQkFBbUI7b0JBQ3pCLElBQUksRUFBRSx5Q0FBeUM7b0JBQy9DLG9FQUFvRTtvQkFDcEUscUVBQXFFO29CQUNyRSxtRUFBbUU7b0JBQ25FLDZCQUE2QjtvQkFDN0IsSUFBSSxFQUFFO3dCQUNKLGNBQWMsRUFBRSwwQkFBMEI7d0JBQzFDLE1BQU0sRUFBRSxNQUFNO3dCQUNkLFNBQVMsRUFBRSxNQUFNO3FCQUNsQjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsMERBQTBEO1FBQzFELGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsYUFBYSxFQUFFO1lBQ2pELE9BQU8sRUFBRSxXQUFXO1lBQ3BCLG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQyxDQUFDO1FBQ0gsSUFBQSxzQ0FBbUIsRUFDakIsaUJBQWlCLENBQUMsSUFBSSxFQUN0Qix1REFBdUQsQ0FDeEQsQ0FBQztJQUNKLENBQUM7O0FBOUNILDhDQStDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZ2l0aHViIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IG5vdGVXb3JrZmxvd1B1cnBvc2UgfSBmcm9tICcuLi8uLi9jb21tb24vd29ya2Zsb3ctcHVycG9zZSc7XG5pbXBvcnQgdHlwZSB7IEphdmFNYXZlblByb2plY3QgfSBmcm9tICcuLi9qYXZhLW1hdmVuLWJhc2UnO1xuXG4vKiogR2VuZXJhdGVzIGEgY29kZSBpbmRleCBhbmQgcHVibGlzaGVzIGl0IHRvIGAueHNzL2Agb24gY2hlY2tpbi4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlSW5kZXhXb3JrZmxvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IEphdmFNYXZlblByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnQ29kZUluZGV4V29ya2Zsb3cnKTtcblxuICAgIGNvbnN0IGdoID0gcHJvamVjdC5naXRodWI7XG4gICAgaWYgKCFnaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2RlSW5kZXhXb3JrZmxvdyByZXF1aXJlcyBHaXRIdWIgaW50ZWdyYXRpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleFRhc2sgPSBwcm9qZWN0LmFkZFRhc2soJ2NvZGVpbmRleCcsIHtcbiAgICAgIC8vIEZyb20gdGhlIHJlcG8gcm9vdCwgbm90IGBzcmMvYDogaW4gYSBtdWx0aS1tb2R1bGUgcmVwbyB0aGUgc291cmNlc1xuICAgICAgLy8gbGl2ZSB1bmRlciBlYWNoIG1vZHVsZSBkaXJlY3RvcnkuXG4gICAgICBleGVjOiBcIm1rZGlyIC1wIC54c3MgJiYgZmluZCAuIC1wYXRoIC4vbm9kZV9tb2R1bGVzIC1wcnVuZSAtbyAtbmFtZSB0YXJnZXQgLXBydW5lIC1vIC1uYW1lICcqLmphdmEnIC1wcmludCB8IHNvcnQgPiAueHNzL2luZGV4LnR4dFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29kZUluZGV4V29ya2Zsb3cgPSBuZXcgZ2l0aHViLlRhc2tXb3JrZmxvdyhnaCwge1xuICAgICAgbmFtZTogJ2NvZGVpbmRleCcsXG4gICAgICBqb2JJZDogJ2NvZGVpbmRleCcsXG4gICAgICB0YXNrOiBpbmRleFRhc2ssXG4gICAgICB0cmlnZ2VyczogeyBwdXNoOiB7IGJyYW5jaGVzOiBbJ21haW4nXSB9IH0sXG4gICAgICBwZXJtaXNzaW9uczogeyBjb250ZW50czogZ2l0aHViLndvcmtmbG93cy5Kb2JQZXJtaXNzaW9uLldSSVRFIH0sXG4gICAgICBwb3N0QnVpbGRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NvbW1pdCBjb2RlIGluZGV4JyxcbiAgICAgICAgICB1c2VzOiAnc3RlZmFuendlaWZlbC9naXQtYXV0by1jb21taXQtYWN0aW9uQHY1JyxcbiAgICAgICAgICAvLyBObyB0b2tlbiBpbnB1dDogdGhlIHB1c2ggdXNlcyB0aGUgY2hlY2tvdXQncyBHSVRIVUJfVE9LRU4sIHNvIHRoZVxuICAgICAgICAgIC8vIGluZGV4IGNvbW1pdCBzdGFydHMgbm8gZnVydGhlciB3b3JrZmxvd3MuIGBpZl9iZWhpbmQ6IHNraXBgIGxldHMgYVxuICAgICAgICAgIC8vIHJ1biB0aGF0IGxvc3QgdGhlIHB1c2ggcmFjZSB0byBhIG5ld2VyIG1lcmdlIHN1Y2NlZWQgLSB0aGUgbmV3ZXJcbiAgICAgICAgICAvLyBydW4gcmVnZW5lcmF0ZXMgdGhlIGluZGV4LlxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlOiAnY2hvcmU6IHVwZGF0ZSBjb2RlIGluZGV4JyxcbiAgICAgICAgICAgIGZvbGRlcjogJy54c3MnLFxuICAgICAgICAgICAgaWZfYmVoaW5kOiAnc2tpcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgLy8gQSBuZXdlciBwdXNoIHN1cGVyc2VkZXMgYW4gaW5kZXggcnVuIHN0aWxsIGluIHByb2dyZXNzLlxuICAgIGNvZGVJbmRleFdvcmtmbG93LmZpbGU/LmFkZE92ZXJyaWRlKCdjb25jdXJyZW5jeScsIHtcbiAgICAgICdncm91cCc6ICdjb2RlaW5kZXgnLFxuICAgICAgJ2NhbmNlbC1pbi1wcm9ncmVzcyc6IHRydWUsXG4gICAgfSk7XG4gICAgbm90ZVdvcmtmbG93UHVycG9zZShcbiAgICAgIGNvZGVJbmRleFdvcmtmbG93LmZpbGUsXG4gICAgICAnUmVnZW5lcmF0ZSBhbmQgY29tbWl0IHRoZSBjb2RlIGluZGV4IG9uIHB1c2ggdG8gbWFpbi4nLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,7 +6,7 @@ const projen_1 = require("projen");
|
|
|
6
6
|
const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
7
7
|
/** On-demand build+push of a Docker image, defaulting to Docker Hub. */
|
|
8
8
|
class DockerPublish extends projen_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.DockerPublish", version: "0.0.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.DockerPublish", version: "0.0.28" };
|
|
10
10
|
constructor(project, options = {}) {
|
|
11
11
|
super(project, 'DockerPublish');
|
|
12
12
|
const gh = project.github;
|
|
@@ -11,7 +11,7 @@ const java_versions_1 = require("../java-versions");
|
|
|
11
11
|
* plugin (which Boot's BOM does not manage) is pinned for the Java line.
|
|
12
12
|
*/
|
|
13
13
|
class FlywayMigration extends projen_1.Component {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.FlywayMigration", version: "0.0.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.FlywayMigration", version: "0.0.28" };
|
|
15
15
|
constructor(project) {
|
|
16
16
|
super(project, 'FlywayMigration');
|
|
17
17
|
project.addPlugin(`${java_versions_1.FLYWAY_MAVEN_PLUGIN}@${project.pinnedVersion(java_versions_1.FLYWAY_MAVEN_PLUGIN)}`);
|
|
@@ -6,7 +6,7 @@ const projen_1 = require("projen");
|
|
|
6
6
|
const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
7
7
|
/** On-demand publish to GitHub Packages. */
|
|
8
8
|
class GitHubPackagesPublish extends projen_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.GitHubPackagesPublish", version: "0.0.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.GitHubPackagesPublish", version: "0.0.28" };
|
|
10
10
|
constructor(project, options = {}) {
|
|
11
11
|
super(project, 'GitHubPackagesPublish');
|
|
12
12
|
const gh = project.github;
|
|
@@ -9,7 +9,7 @@ const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
|
9
9
|
* or OIDC trusted publishing.
|
|
10
10
|
*/
|
|
11
11
|
class MavenCentralPublish extends projen_1.Component {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenCentralPublish", version: "0.0.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenCentralPublish", version: "0.0.28" };
|
|
13
13
|
constructor(project, options = {}) {
|
|
14
14
|
super(project, 'MavenCentralPublish');
|
|
15
15
|
const gh = project.github;
|
|
@@ -17,7 +17,7 @@ const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
|
17
17
|
* check. Apply an update by changing the version in `.projenrc.ts`.
|
|
18
18
|
*/
|
|
19
19
|
class MavenUpgradeReport extends projen_1.Component {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenUpgradeReport", version: "0.0.
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenUpgradeReport", version: "0.0.28" };
|
|
21
21
|
workflow;
|
|
22
22
|
constructor(scope, options) {
|
|
23
23
|
super(scope, 'MavenUpgradeReport');
|
|
@@ -9,7 +9,7 @@ const java_maven_base_1 = require("./java-maven-base");
|
|
|
9
9
|
* explicitly excludes Maven Central, Docker, and CDK deploy hooks.
|
|
10
10
|
*/
|
|
11
11
|
class JavaAppProject extends java_maven_base_1.JavaMavenProject {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaAppProject", version: "0.0.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaAppProject", version: "0.0.28" };
|
|
13
13
|
constructor(options) {
|
|
14
14
|
super(options);
|
|
15
15
|
new github_packages_publish_1.GitHubPackagesPublish(this, {
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JavaLibraryProject = void 0;
|
|
4
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
-
const code_index_workflow_1 = require("./components/code-index-workflow");
|
|
6
5
|
const maven_central_publish_1 = require("./components/maven-central-publish");
|
|
7
6
|
const java_maven_base_1 = require("./java-maven-base");
|
|
8
7
|
const java_versions_1 = require("./java-versions");
|
|
@@ -12,7 +11,7 @@ const java_versions_1 = require("./java-versions");
|
|
|
12
11
|
* reactor, every module inherits them).
|
|
13
12
|
*/
|
|
14
13
|
class JavaLibraryProject extends java_maven_base_1.JavaMavenProject {
|
|
15
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaLibraryProject", version: "0.0.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaLibraryProject", version: "0.0.28" };
|
|
16
15
|
constructor(options) {
|
|
17
16
|
super(options);
|
|
18
17
|
this.addPlugin(`${java_versions_1.MAVEN_SOURCE_PLUGIN}@${this.pinnedVersion(java_versions_1.MAVEN_SOURCE_PLUGIN)}`, {
|
|
@@ -22,10 +21,7 @@ class JavaLibraryProject extends java_maven_base_1.JavaMavenProject {
|
|
|
22
21
|
executions: [{ id: 'attach-javadocs', goals: ['jar'] }],
|
|
23
22
|
});
|
|
24
23
|
new maven_central_publish_1.MavenCentralPublish(this, { mavenCentralOidc: options.mavenCentralOidc });
|
|
25
|
-
if (options.publishCodeIndex ?? true) {
|
|
26
|
-
new code_index_workflow_1.CodeIndexWorkflow(this);
|
|
27
|
-
}
|
|
28
24
|
}
|
|
29
25
|
}
|
|
30
26
|
exports.JavaLibraryProject = JavaLibraryProject;
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1saWJyYXJ5LXByb2plY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9qYXZhLWxpYnJhcnktcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsOEVBQXlFO0FBQ3pFLHVEQUFxRDtBQUNyRCxtREFBNEU7QUFHNUU7Ozs7R0FJRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsa0NBQWdCOztJQUN0RCxZQUFZLE9BQWtDO1FBQzVDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxtQ0FBbUIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLG1DQUFtQixDQUFDLEVBQUUsRUFBRTtZQUNsRixVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1NBQy9ELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxvQ0FBb0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLG9DQUFvQixDQUFDLEVBQUUsRUFBRTtZQUNwRixVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQ3hELENBQUMsQ0FBQztRQUVILElBQUksMkNBQW1CLENBQUMsSUFBSSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNoRixDQUFDOztBQVpILGdEQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF2ZW5DZW50cmFsUHVibGlzaCB9IGZyb20gJy4vY29tcG9uZW50cy9tYXZlbi1jZW50cmFsLXB1Ymxpc2gnO1xuaW1wb3J0IHsgSmF2YU1hdmVuUHJvamVjdCB9IGZyb20gJy4vamF2YS1tYXZlbi1iYXNlJztcbmltcG9ydCB7IE1BVkVOX0pBVkFET0NfUExVR0lOLCBNQVZFTl9TT1VSQ0VfUExVR0lOIH0gZnJvbSAnLi9qYXZhLXZlcnNpb25zJztcbmltcG9ydCB7IEphdmFMaWJyYXJ5UHJvamVjdE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuXG4vKipcbiAqIFJldXNhYmxlIEphdmEgbGlicmFyeSwgcHVibGlzaGVkIHRvIE1hdmVuIENlbnRyYWwuIFNpbmdsZS0gb3JcbiAqIG11bHRpLW1vZHVsZTsgYXR0YWNoZXMgdGhlIHNvdXJjZSBhbmQgamF2YWRvYyBqYXJzIENlbnRyYWwgcmVxdWlyZXMgKGluIGFcbiAqIHJlYWN0b3IsIGV2ZXJ5IG1vZHVsZSBpbmhlcml0cyB0aGVtKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEphdmFMaWJyYXJ5UHJvamVjdCBleHRlbmRzIEphdmFNYXZlblByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKYXZhTGlicmFyeVByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9TT1VSQ0VfUExVR0lOfUAke3RoaXMucGlubmVkVmVyc2lvbihNQVZFTl9TT1VSQ0VfUExVR0lOKX1gLCB7XG4gICAgICBleGVjdXRpb25zOiBbeyBpZDogJ2F0dGFjaC1zb3VyY2VzJywgZ29hbHM6IFsnamFyLW5vLWZvcmsnXSB9XSxcbiAgICB9KTtcbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9KQVZBRE9DX1BMVUdJTn1AJHt0aGlzLnBpbm5lZFZlcnNpb24oTUFWRU5fSkFWQURPQ19QTFVHSU4pfWAsIHtcbiAgICAgIGV4ZWN1dGlvbnM6IFt7IGlkOiAnYXR0YWNoLWphdmFkb2NzJywgZ29hbHM6IFsnamFyJ10gfV0sXG4gICAgfSk7XG5cbiAgICBuZXcgTWF2ZW5DZW50cmFsUHVibGlzaCh0aGlzLCB7IG1hdmVuQ2VudHJhbE9pZGM6IG9wdGlvbnMubWF2ZW5DZW50cmFsT2lkYyB9KTtcbiAgfVxufVxuIl19
|
|
@@ -19,8 +19,8 @@ import { SonarWorkflow } from '../common/sonar-workflow';
|
|
|
19
19
|
* - `npx projen build` synthesizes, then runs Maven once: `mvn -B verify`
|
|
20
20
|
* (unit tests via surefire, `*IT` tests via failsafe).
|
|
21
21
|
* - CI: a PR build, the projen drift check, an optional SonarCloud scan
|
|
22
|
-
* (`sonar.yml`, when `sonarHostUrl` is set),
|
|
23
|
-
* update check.
|
|
22
|
+
* (`sonar.yml`, when `sonarHostUrl` is set), a nightly report-only
|
|
23
|
+
* update check, and the code index (`codeindex.yml`, on push to `main`).
|
|
24
24
|
*/
|
|
25
25
|
export declare class JavaMavenProject extends github.GitHubProject {
|
|
26
26
|
/** The root `pom.xml`. */
|
|
@@ -4,6 +4,7 @@ exports.JavaMavenProject = void 0;
|
|
|
4
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
5
|
const node_path_1 = require("node:path");
|
|
6
6
|
const projen_1 = require("projen");
|
|
7
|
+
const code_index_workflow_1 = require("./components/code-index-workflow");
|
|
7
8
|
const maven_upgrade_report_1 = require("./components/maven-upgrade-report");
|
|
8
9
|
const java_versions_1 = require("./java-versions");
|
|
9
10
|
const maven_module_1 = require("./maven/maven-module");
|
|
@@ -42,11 +43,11 @@ const PROJEN_TYPES_VERSION = require('../../package.json').version;
|
|
|
42
43
|
* - `npx projen build` synthesizes, then runs Maven once: `mvn -B verify`
|
|
43
44
|
* (unit tests via surefire, `*IT` tests via failsafe).
|
|
44
45
|
* - CI: a PR build, the projen drift check, an optional SonarCloud scan
|
|
45
|
-
* (`sonar.yml`, when `sonarHostUrl` is set),
|
|
46
|
-
* update check.
|
|
46
|
+
* (`sonar.yml`, when `sonarHostUrl` is set), a nightly report-only
|
|
47
|
+
* update check, and the code index (`codeindex.yml`, on push to `main`).
|
|
47
48
|
*/
|
|
48
49
|
class JavaMavenProject extends projen_1.github.GitHubProject {
|
|
49
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaMavenProject", version: "0.0.
|
|
50
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaMavenProject", version: "0.0.28" };
|
|
50
51
|
/** The root `pom.xml`. */
|
|
51
52
|
pom;
|
|
52
53
|
/** The canonical Java line the build targets (`1.8`, `17`, `21`, `25`). */
|
|
@@ -200,6 +201,9 @@ class JavaMavenProject extends projen_1.github.GitHubProject {
|
|
|
200
201
|
setupSteps: this.ciSetupSteps,
|
|
201
202
|
});
|
|
202
203
|
}
|
|
204
|
+
if (options.publishCodeIndex ?? true) {
|
|
205
|
+
new code_index_workflow_1.CodeIndexWorkflow(this);
|
|
206
|
+
}
|
|
203
207
|
}
|
|
204
208
|
/** The modules added with `addModule()`, in order. */
|
|
205
209
|
get modules() {
|
|
@@ -408,4 +412,4 @@ function normalizeModuleDir(dir) {
|
|
|
408
412
|
}
|
|
409
413
|
return normalized;
|
|
410
414
|
}
|
|
411
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1tYXZlbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1tYXZlbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx5Q0FBa0M7QUFDbEMsbUNBQWlFO0FBQ2pFLDRFQUF1RTtBQUN2RSxtREFXeUI7QUFDekIsdURBQW1EO0FBQ25ELGlEQUFpRTtBQUVqRSxpREFBa0U7QUFDbEUsbURBQStEO0FBQy9ELHlEQUF5RDtBQUN6RCxpRUFBMEU7QUFDMUUseURBQXdEO0FBQ3hELHVGQUFpRjtBQUNqRix1REFBaUU7QUFDakUsNkRBQXlEO0FBQ3pELCtGQUF5RjtBQUN6RixpRUFBaUU7QUFFakUsMkVBQTJFO0FBQzNFLHdFQUF3RTtBQUN4RSx5REFBeUQ7QUFDekQsMEJBQTBCO0FBQzFCLGlFQUFpRTtBQUNqRSxNQUFNLGNBQWMsR0FBVyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDdEUsaUVBQWlFO0FBQ2pFLE1BQU0sb0JBQW9CLEdBQVcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDO0FBRTNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLGVBQU0sQ0FBQyxhQUFhOztJQUN4RCwwQkFBMEI7SUFDVixHQUFHLENBQVc7SUFFOUIsMkVBQTJFO0lBQzNELFdBQVcsQ0FBUztJQUVwQyx5RUFBeUU7SUFDekQsV0FBVyxDQUFPO0lBRWxDOzs7O09BSUc7SUFDYSxtQkFBbUIsQ0FBc0I7SUFFekQ7OztPQUdHO0lBQ2EsWUFBWSxDQUE2QjtJQUV6RCxnREFBZ0Q7SUFDaEMsYUFBYSxDQUFpQjtJQUU3QixRQUFRLENBQWtCO0lBQzFCLGFBQWEsQ0FBVTtJQUN2QixPQUFPLENBQVM7SUFDaEIsTUFBTSxDQUFVO0lBQ2hCLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBRWxELFlBQVksT0FBZ0M7UUFDMUMsS0FBSyxD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QUM7SUFDNUUsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLGlCQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBSSxVQUFVLEtBQUssR0FBRyxJQUFJLFVBQVUsS0FBSyxFQUFFLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNwRixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsR0FBRyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9zaXggfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgSnNvbkZpbGUsIFNhbXBsZURpciwgVGFzaywgZ2l0aHViLCBqYXZhIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IE1hdmVuVXBncmFkZVJlcG9ydCB9IGZyb20gJy4vY29tcG9uZW50cy9tYXZlbi11cGdyYWRlLXJlcG9ydCc7XG5pbXBvcnQge1xuICBERUZBVUxUX01JTl9NQVZFTl9WRVJTSU9OLFxuICBKVU5JVF9CT00sXG4gIEphdmFMaW5lUHJvZmlsZSxcbiAgTUFWRU5fQ09NUElMRVJfUExVR0lOLFxuICBNQVZFTl9FTkZPUkNFUl9QTFVHSU4sXG4gIE1BVkVOX0ZBSUxTQUZFX1BMVUdJTixcbiAgTUFWRU5fSkFSX1BMVUdJTixcbiAgTUFWRU5fU1VSRUZJUkVfUExVR0lOLFxuICBWRVJTSU9OU19NQVZFTl9QTFVHSU4sXG4gIHJlc29sdmVKYXZhTGluZSxcbn0gZnJvbSAnLi9qYXZhLXZlcnNpb25zJztcbmltcG9ydCB7IE1hdmVuTW9kdWxlIH0gZnJvbSAnLi9tYXZlbi9tYXZlbi1tb2R1bGUnO1xuaW1wb3J0IHsgTWF2ZW5Qb20sIGFzc2VydEV4YWN0VmVyc2lvbiB9IGZyb20gJy4vbWF2ZW4vbWF2ZW4tcG9tJztcbmltcG9ydCB7IEphdmFNYXZlblByb2plY3RPcHRpb25zLCBNYXZlbk1vZHVsZU9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgTlBNX0NJX1NURVAsIFNFVFVQX05PREVfU1RFUCB9IGZyb20gJy4uL2NvbW1vbi9jaS1zdGVwcyc7XG5pbXBvcnQgeyBERUZBVUxUX0dIRV9UT0tFTl9TRUNSRVQgfSBmcm9tICcuLi9jb21tb24vY29uc3RhbnRzJztcbmltcG9ydCB7IGFkZEVkaXRvckNvbmZpZyB9IGZyb20gJy4uL2NvbW1vbi9lZGl0b3Jjb25maWcnO1xuaW1wb3J0IHsgYXBwbHlJbnRlcm5hbEFjdGlvbk92ZXJyaWRlcyB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC1hY3Rpb25zJztcbmltcG9ydCB7IGFkZExpY2Vuc2VGaWxlIH0gZnJvbSAnLi4vY29tbW9uL2xpY2Vuc2UtZmlsZSc7XG5pbXBvcnQgeyBQcm9qZW5EcmlmdENoZWNrV29ya2Zsb3cgfSBmcm9tICcuLi9jb21tb24vcHJvamVuLWRyaWZ0LWNoZWNrLXdvcmtmbG93JztcbmltcG9ydCB7IGF0dGFjaFR5cGVTY3JpcHRQcm9qZW5yYyB9IGZyb20gJy4uL2NvbW1vbi9wcm9qZW5yYy10cyc7XG5pbXBvcnQgeyBTb25hcldvcmtmbG93IH0gZnJvbSAnLi4vY29tbW9uL3NvbmFyLXdvcmtmbG93JztcbmltcG9ydCB7IFdvcmtmbG93Q2hhbmdlTm90aWNlV29ya2Zsb3cgfSBmcm9tICcuLi9jb21tb24vd29ya2Zsb3ctY2hhbmdlLW5vdGljZS13b3JrZmxvdyc7XG5pbXBvcnQgeyBub3RlV29ya2Zsb3dQdXJwb3NlIH0gZnJvbSAnLi4vY29tbW9uL3dvcmtmbG93LXB1cnBvc2UnO1xuXG4vLyBgcmVxdWlyZSguLi4pYCByZXNvbHZlcyB0aHJvdWdoIE5vZGUncyBub3JtYWwgbW9kdWxlIHJlc29sdXRpb24sIHNvIGluIGFcbi8vICpwdWJsaXNoZWQqIHBhY2thZ2UgdGhlc2UgYXJlIHRoZSB2ZXJzaW9ucyBpbnN0YWxsZWQgaW4gdGhlIGNvbnN1bWluZ1xuLy8gcmVwbyAtIGV4YWN0bHkgd2hhdCBpdHMgcGFja2FnZS5qc29uIG11c3QgcGluIChzYW1lIGFzXG4vLyBgR2l0SHViQWN0aW9uUHJvamVjdGApLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IFBST0pFTl9WRVJTSU9OOiBzdHJpbmcgPSByZXF1aXJlKCdwcm9qZW4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBQUk9KRU5fVFlQRVNfVkVSU0lPTjogc3RyaW5nID0gcmVxdWlyZSgnLi4vLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcblxuLyoqXG4gKiBCYXNlbGluZSBNYXZlbiBwcm9qZWN0LCBzaW5nbGUtIG9yIG11bHRpLW1vZHVsZSwgd2l0aCBubyBmcmFtZXdvcmtcbiAqIGFzc3VtcHRpb25zLiBJdCBpcyB0aGUgYmFzZSBvZiBldmVyeSBKYXZhIHR5cGUgaW4gdGhpcyBwYWNrYWdlIGFuZCBpc1xuICogdXNhYmxlIG9uIGl0cyBvd24gKGBwcm9qZW4gbmV3IC4uLiBqYXZhX21hdmVuYCkuXG4gKlxuICogLSBUaGUgcG9tIGlzIHdyaXR0ZW4gYnkgdGhpcyBwYWNrYWdlIChgTWF2ZW5Qb21gKSwgbm90IHByb2plbidzXG4gKiAgIGBqYXZhLlBvbWA6IGV4YWN0IHZlcnNpb25zIG9ubHksIEJPTSBpbXBvcnRzLCBgPG1vZHVsZXM+YCxcbiAqICAgYDxkZXBlbmRlbmN5TWFuYWdlbWVudD5gLCBgPHBsdWdpbk1hbmFnZW1lbnQ+YC5cbiAqIC0gRXZlcnl0aGluZyBKYXZhLXZlcnNpb24tZGVwZW5kZW50IChjb21waWxlciBsZXZlbCwgZW5mb3JjZXIgcnVsZSwgSlVuaXRcbiAqICAgbGluZSwgQ0kgSkRLKSBmb2xsb3dzIGBqYXZhVmVyc2lvbmAuXG4gKiAtIFdpdGggbm8gYGFkZE1vZHVsZSgpYCBjYWxscyB0aGUgcm9vdCBwb20gaXMgdGhlIGFydGlmYWN0LiBBZnRlciB0aGVcbiAqICAgZmlyc3QgYGFkZE1vZHVsZSgpYCBpdCBpcyBhIGBwb21gLXBhY2thZ2VkIHJlYWN0b3IgcGFyZW50IGFuZCB0aGVcbiAqICAgbW9kdWxlcyBpbmhlcml0IGl0cyBwbHVnaW5zIGFuZCB0ZXN0IGRlcGVuZGVuY2llcy5cbiAqIC0gYG5weCBwcm9qZW4gYnVpbGRgIHN5bnRoZXNpemVzLCB0aGVuIHJ1bnMgTWF2ZW4gb25jZTogYG12biAtQiB2ZXJpZnlgXG4gKiAgICh1bml0IHRlc3RzIHZpYSBzdXJlZmlyZSwgYCpJVGAgdGVzdHMgdmlhIGZhaWxzYWZlKS5cbiAgICogLSBDSTogYSBQUiBidWlsZCwgdGhlIHByb2plbiBkcmlmdCBjaGVjaywgYW4gb3B0aW9uYWwgU29uYXJDbG91ZCBzY2FuXG4gICAqICAgKGBzb25hci55bWxgLCB3aGVuIGBzb25hckhvc3RVcmxgIGlzIHNldCksIGFuZCBhIG5pZ2h0bHkgcmVwb3J0LW9ubHlcbiAgICogICB1cGRhdGUgY2hlY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBKYXZhTWF2ZW5Qcm9qZWN0IGV4dGVuZHMgZ2l0aHViLkdpdEh1YlByb2plY3Qge1xuICAvKiogVGhlIHJvb3QgYHBvbS54bWxgLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9tOiBNYXZlblBvbTtcblxuICAvKiogVGhlIGNhbm9uaWNhbCBKYXZhIGxpbmUgdGhlIGJ1aWxkIHRhcmdldHMgKGAxLjhgLCBgMTdgLCBgMjFgLCBgMjVgKS4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGphdmFWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqIFByaW50cyBhdmFpbGFibGUgZGVwZW5kZW5jeS9wbHVnaW4gdXBkYXRlcyAoYG5weCBwcm9qZW4gdXBncmFkZWApLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBncmFkZVRhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIFRoZSBQUiBidWlsZCB3b3JrZmxvdyAoYGJ1aWxkLnltbGApLiBBZGQgam9icyB0byBpdCB3aXRoXG4gICAqIGBidWlsZFZlcmlmeVdvcmtmbG93LmFkZEpvYihpZCwgam9iKWA7IHVzZSBgY2lTZXR1cFN0ZXBzYCBmb3IgYSBqb2IgdGhhdFxuICAgKiBuZWVkcyBOb2RlLCB0aGUgcHJvamVuIHRvb2xjaGFpbiwgYW5kIHRoZSBKREsuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRWZXJpZnlXb3JrZmxvdzogZ2l0aHViLlRhc2tXb3JrZmxvdztcblxuICAvKipcbiAgICogU3RlcHMgdGhhdCBpbnN0YWxsIE5vZGUgKHBpbm5lZCksIGBucG0gY2lgLCBhbmQgdGhlIHByb2plY3QncyBKREsgd2l0aCBhXG4gICAqIE1hdmVuIGNhY2hlIC0gdGhlIHNldHVwIGV2ZXJ5IE1hdmVuIENJIGpvYiBpbiB0aGlzIHJlcG8gbmVlZHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2lTZXR1cFN0ZXBzOiBnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXBbXTtcblxuICAvKiogU2V0IG9ubHkgd2hlbiBgc29uYXJIb3N0VXJsYCBpcyBwcm92aWRlZC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvbmFyV29ya2Zsb3c/OiBTb25hcldvcmtmbG93O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgamF2YUxpbmU6IEphdmFMaW5lUHJvZmlsZTtcbiAgcHJpdmF0ZSByZWFkb25seSByb290UGFja2FnaW5nPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGdyb3VwSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzYW1wbGU6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF2ZW5Nb2R1bGVzOiBNYXZlbk1vZHVsZVtdID0gW107XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogSmF2YU1hdmVuUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAvLyBTcHJlYWQgZmlyc3QsIG92ZXJyaWRlcyBhZnRlcjogZm9yd2FyZGluZyB0aGUgY2FsbGVyJ3Mgb3B0aW9ucyBpc1xuICAgICAgLy8gd2hhdCBsZXRzIGBwcm9qZW4gbmV3IC0tZnJvbSBAeHBlcnRzcy9wcm9qZW4tdHlwZXMgamF2YV9tYXZlbmAgd29ya1xuICAgICAgLy8gLSBwcm9qZW4gc211Z2dsZXMgaXRzIGJvb3RzdHJhcCBtYXJrZXIgKGBfX25ld19fYCkgdGhyb3VnaCB0aGVcbiAgICAgIC8vIG9wdGlvbnMgb2JqZWN0LCBhbmQgaXQgaXMgdGhhdCBtYXJrZXIgd2hpY2ggbWFrZXMgdGhlXG4gICAgICAvLyBgUHJvamVucmNGaWxlYCBjb21wb25lbnQgd3JpdGUgdGhlIGluaXRpYWwgYC5wcm9qZW5yYy50c2AuIERyb3AgaXRcbiAgICAgIC8vIGFuZCBgcHJvamVuIG5ld2Agc2NhZmZvbGRzIGEgcmVwbyB3aXRoIG5vIHByb2plbnJjIGF0IGFsbC5cbiAgICAgIC4uLnN0cmluZ2lmeVByb2plbk5ld0FyZ3Mob3B0aW9ucyksXG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAvLyBQUiB0aXRsZXMgYXJlIG5vdCBnYXRlZDogYGZlYXQ6YC9gZml4OmAgbWF0dGVyIG9ubHkgYmVjYXVzZSB0aGV5IGRyaXZlXG4gICAgICAvLyB0aGUgcmVsZWFzZSB3b3JrZmxvdyAodmlhIGByZWxlYXNhYmxlQ29tbWl0c2ApLCBub3QgUFIgY2hlY2tzLiBUaGVcbiAgICAgIC8vIGNvbnZlbnRpb25hbC1jb21taXQgUFItdGl0bGUgbGludCBpcyBhZGRlZCBieSB0aGUgYEdpdEh1YmAgY29tcG9uZW50XG4gICAgICAvLyB1bmxlc3MgYGdpdGh1Yk9wdGlvbnMucHVsbFJlcXVlc3RMaW50YCBpcyBgZmFsc2VgIChpdCBkZWZhdWx0cyB0cnVlKS5cbiAgICAgIGdpdGh1Yk9wdGlvbnM6IHsgcHVsbFJlcXVlc3RMaW50OiBmYWxzZSB9LFxuICAgICAgcHJvamVuQ3JlZGVudGlhbHM6IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscy5mcm9tUGVyc29uYWxBY2Nlc3NUb2tlbih7XG4gICAgICAgIHNlY3JldDogb3B0aW9ucy5naGVUb2tlblNlY3JldCA/PyBERUZBVUxUX0dIRV9UT0tFTl9TRUNSRVQsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgdmVyc2lvbiBvZiBPYmplY3QudmFsdWVzKG9wdGlvbnMucGx1Z2luVmVyc2lvbnMgPz8ge30pKSB7XG4gICAgICBhc3NlcnRFeGFjdFZlcnNpb24odmVyc2lvbiwgJ3BsdWdpblZlcnNpb25zJyk7XG4gICAgfVxuICAgIHRoaXMuamF2YUxpbmUgPSByZXNvbHZlSmF2YUxpbmUob3B0aW9ucy5qYXZhVmVyc2lvbiwgb3B0aW9ucy5wbHVnaW5WZXJzaW9ucyk7XG4gICAgdGhpcy5qYXZhVmVyc2lvbiA9IHRoaXMuamF2YUxpbmUubGluZTtcbiAgICB0aGlzLnJvb3RQYWNrYWdpbmcgPSBvcHRpb25zLnBhY2thZ2luZztcbiAgICB0aGlzLmdyb3VwSWQgPSBvcHRpb25zLmdyb3VwSWQ7XG4gICAgdGhpcy5zYW1wbGUgPSBvcHRpb25zLnNhbXBsZSA/PyBmYWxzZTtcblxuICAgIC8vIGAucHJvamVucmMudHNgICsgYG5weCBwcm9qZW5gLCBzYW1lIGFzIGV2ZXJ5IG90aGVyIHR5cGUgaGVyZS4gVGhlXG4gICAgLy8gTWF2ZW4gcmVwbyBuZWVkcyBubyBUeXBlU2NyaXB0IHRvb2xjaGFpbiBvZiBpdHMgb3duIC0gdGhlIHJ1bm5lciBpc1xuICAgIC8vIGZldGNoZWQgKHBpbm5lZCkgYnkgbnB4IGF0IHN5bnRoIHRpbWUuXG4gICAgYXR0YWNoVHlwZVNjcmlwdFByb2plbnJjKHRoaXMpO1xuXG4gICAgLy8gVGhlIHByb2plbiB0b29sY2hhaW4gYG5weCBwcm9qZW5gIHJ1bnMsIHBpbm5lZCBleGFjdGx5IHNvIGV2ZXJ5XG4gICAgLy8gbWFjaGluZSBhbmQgQ0kgcmVzb2x2ZSB0aGUgc2FtZSBnZW5lcmF0b3IuIE93bmVyLXdyaXRhYmxlIG9uIGRpc2sgc29cbiAgICAvLyB0aGUgZG9jdW1lbnRlZCB1cGRhdGUgZmxvdyAoYG5wbSBpIC1EIC1FIEB4cGVydHNzL3Byb2plbi10eXBlc0A8dj5gKVxuICAgIC8vIGNhbiByZXdyaXRlIGl0OyBoYW5kLWVkaXRzIGFyZSBzdGlsbCBjYXVnaHQgYnkgdGhlIGRyaWZ0IGNoZWNrLlxuICAgIG5ldyBKc29uRmlsZSh0aGlzLCAncGFja2FnZS5qc29uJywge1xuICAgICAgb2JqOiB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgdmVyc2lvbjogJzAuMC4wJyxcbiAgICAgICAgcHJpdmF0ZTogdHJ1ZSxcbiAgICAgICAgZGV2RGVwZW5kZW5jaWVzOiB7XG4gICAgICAgICAgJ3Byb2plbic6IFBST0pFTl9WRVJTSU9OLFxuICAgICAgICAgICdAeHBlcnRzcy9wcm9qZW4tdHlwZXMnOiBQUk9KRU5fVFlQRVNfVkVSU0lPTixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICByZWFkb25seTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBKZXRCcmFpbnMgSURFIHN0YXRlICguaWRlYS8pIGlzIG5ldmVyIHRyYWNrZWQgaW4gZ2VuZXJhdGVkIHJlcG9zLCBhbmRcbiAgICAvLyBuZWl0aGVyIGlzIC9zcGVjLyAobG9jYWwgcGxhbnMgYW5kIHNwZWNzOyB0aGUgcGF0dGVybiBjb3ZlcnMgZXZlcnlcbiAgICAvLyBzdWJkaXJlY3RvcnkpLlxuICAgIHRoaXMuYWRkR2l0SWdub3JlKCcvLmlkZWEvKicpO1xuICAgIHRoaXMuYWRkR2l0SWdub3JlKCcvc3BlYy8nKTtcbiAgICB0aGlzLmFkZEdpdElnbm9yZSgndGFyZ2V0LycpO1xuICAgIHRoaXMuYWRkR2l0SWdub3JlKCcuY2xhc3NwYXRoJyk7XG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy5wcm9qZWN0Jyk7XG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy5zZXR0aW5ncycpO1xuXG4gICAgaWYgKG9wdGlvbnMubGljZW5zZWQgPz8gdHJ1ZSkge1xuICAgICAgYWRkTGljZW5zZUZpbGUodGhpcywge1xuICAgICAgICBzcGR4OiBvcHRpb25zLmxpY2Vuc2UgPz8gJ01JVCcsXG4gICAgICAgIGNvcHlyaWdodE93bmVyOiBvcHRpb25zLmNvcHlyaWdodE93bmVyID8/ICdYcGVydCBTb2Z0d2FyZScsXG4gICAgICAgIGNvcHlyaWdodFBlcmlvZDogb3B0aW9ucy5jb3B5cmlnaHRQZXJpb2QsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZWRpdG9yY29uZmlnID8/IHRydWUpIHtcbiAgICAgIGFkZEVkaXRvckNvbmZpZyh0aGlzKTtcbiAgICB9XG5cbiAgICB0aGlzLnBvbSA9IG5ldyBNYXZlblBvbSh0aGlzLCB7XG4gICAgICBncm91cElkOiBvcHRpb25zLmdyb3VwSWQsXG4gICAgICBhcnRpZmFjdElkOiBvcHRpb25zLmFydGlmYWN0SWQsXG4gICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gJzAuMS4wJyxcbiAgICAgIHBhY2thZ2luZzogdGhpcy5yb290UGFja2FnaW5nID8/ICdqYXInLFxuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IG9wdGlvbnMuZGVzY3JpcHRpb24sXG4gICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgIH0pO1xuICAgIHRoaXMuY29uZmlndXJlQnVpbGQob3B0aW9ucyk7XG5cbiAgICAvLyBPbmUgTWF2ZW4gcnVuIHBlciBidWlsZDogYHZlcmlmeWAgcnVucyBldmVyeSBlYXJsaWVyIHBoYXNlIChjb21waWxlLFxuICAgIC8vIHVuaXQgdGVzdHMsIHBhY2thZ2UpIHBsdXMgaW50ZWdyYXRpb24gdGVzdHMuIE5vdGhpbmcgZGVwbG95cy5cbiAgICB0aGlzLnRlc3RUYXNrLmV4ZWMoJ212biAtQiB2ZXJpZnknKTtcblxuICAgIGNvbnN0IGdoID0gdGhpcy5naXRodWI7XG4gICAgaWYgKCFnaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdKYXZhTWF2ZW5Qcm9qZWN0IHJlcXVpcmVzIEdpdEh1YiBpbnRlZ3JhdGlvbicpO1xuICAgIH1cbiAgICBhcHBseUludGVybmFsQWN0aW9uT3ZlcnJpZGVzKGdoKTtcblxuICAgIG5ldyBQcm9qZW5EcmlmdENoZWNrV29ya2Zsb3codGhpcywge1xuICAgICAgZ2hlVG9rZW5TZWNyZXQ6IG9wdGlvbnMuZ2hlVG9rZW5TZWNyZXQgPz8gREVGQVVMVF9HSEVfVE9LRU5fU0VDUkVULFxuICAgIH0pO1xuICAgIG5ldyBXb3JrZmxvd0NoYW5nZU5vdGljZVdvcmtmbG93KHRoaXMpO1xuXG4gICAgaWYgKG9wdGlvbnMuc29uYXJIb3N0VXJsKSB7XG4gICAgICB0aGlzLnNvbmFyV29ya2Zsb3cgPSBuZXcgU29uYXJXb3JrZmxvdyh0aGlzLCB7XG4gICAgICAgIHNvbmFySG9zdFVybDogb3B0aW9ucy5zb25hckhvc3RVcmwsXG4gICAgICAgIHNvbmFyT3JnYW5pemF0aW9uOiBvcHRpb25zLnNvbmFyT3JnYW5pemF0aW9uLFxuICAgICAgICBzb25hclRva2VuU2VjcmV0OiBvcHRpb25zLnNvbmFyVG9rZW5TZWNyZXQsXG4gICAgICAgIHNvbmFyUHVsbFJlcXVlc3RHYXRlOiBvcHRpb25zLnNvbmFyUHVsbFJlcXVlc3RHYXRlLFxuICAgICAgICBzb25hclByb2plY3RLZXk6IG9wdGlvbnMuc29uYXJQcm9qZWN0S2V5LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jaVNldHVwU3RlcHMgPSBbXG4gICAgICBTRVRVUF9OT0RFX1NURVAsXG4gICAgICBOUE1fQ0lfU1RFUCxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1NldHVwIEphdmEnLFxuICAgICAgICB1c2VzOiAnYWN0aW9ucy9zZXR1cC1qYXZhQHY2JyxcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgICdkaXN0cmlidXRpb24nOiBvcHRpb25zLmphdmFEaXN0cmlidXRpb24gPz8gJ3RlbXVyaW4nLFxuICAgICAgICAgICdqYXZhLXZlcnNpb24nOiB0aGlzLmphdmFMaW5lLnNldHVwSmF2YVZlcnNpb24sXG4gICAgICAgICAgJ2NhY2hlJzogJ21hdmVuJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHRoaXMuYnVpbGRWZXJpZnlXb3JrZmxvdyA9IG5ldyBnaXRodWIuVGFza1dvcmtmbG93KGdoLCB7XG4gICAgICBuYW1lOiAnYnVpbGQnLFxuICAgICAgam9iSWQ6ICdidWlsZCcsXG4gICAgICB0YXNrOiB0aGlzLmJ1aWxkVGFzayxcbiAgICAgIHRyaWdnZXJzOiB7IHB1bGxSZXF1ZXN0OiB7fSwgd29ya2Zsb3dEaXNwYXRjaDoge30gfSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCB9LFxuICAgICAgcHJlQnVpbGRTdGVwczogdGhpcy5jaVNldHVwU3RlcHMsXG4gICAgfSk7XG4gICAgbm90ZVdvcmtmbG93UHVycG9zZShcbiAgICAgIHRoaXMuYnVpbGRWZXJpZnlXb3JrZmxvdy5maWxlLFxuICAgICAgJ0J1aWxkIGFuZCB0ZXN0IHRoZSBNYXZlbiBwcm9qZWN0IG9uIHB1bGwgcmVxdWVzdHMuJyxcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbnNQbHVnaW4gPSBgb3JnLmNvZGVoYXVzLm1vam86dmVyc2lvbnMtbWF2ZW4tcGx1Z2luOiR7dGhpcy5waW5uZWRWZXJzaW9uKFZFUlNJT05TX01BVkVOX1BMVUdJTil9YDtcbiAgICB0aGlzLnVwZ3JhZGVUYXNrID0gdGhpcy5hZGRUYXNrKCd1cGdyYWRlJywge1xuICAgICAgZXhlYzogYG12biAtQiAke3ZlcnNpb25zUGx1Z2lufTpkaXNwbGF5LWRlcGVuZGVuY3ktdXBkYXRlcyAke3ZlcnNpb25zUGx1Z2lufTpkaXNwbGF5LXBsdWdpbi11cGRhdGVzYCxcbiAgICB9KTtcbiAgICBpZiAob3B0aW9ucy51cGdyYWRlV29ya2Zsb3cgPz8gdHJ1ZSkge1xuICAgICAgbmV3IE1hdmVuVXBncmFkZVJlcG9ydCh0aGlzLCB7XG4gICAgICAgIHRhc2s6IHRoaXMudXBncmFkZVRhc2ssXG4gICAgICAgIHNldHVwU3RlcHM6IHRoaXMuY2lTZXR1cFN0ZXBzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBtb2R1bGVzIGFkZGVkIHdpdGggYGFkZE1vZHVsZSgpYCwgaW4gb3JkZXIuICovXG4gIHB1YmxpYyBnZXQgbW9kdWxlcygpOiBNYXZlbk1vZHVsZVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMubWF2ZW5Nb2R1bGVzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgTWF2ZW4gbW9kdWxlIGluIGBkaXJgIChyZWxhdGl2ZSB0byB0aGUgcmVwbyByb290OyBtYXkgYmUgbmVzdGVkLFxuICAgKiBlLmcuIGB0b29scy9zdHViLW1vZGVsYCkgYW5kIHR1cm5zIHRoZSByb290IHBvbSBpbnRvIHRoZSByZWFjdG9yIHBhcmVudFxuICAgKiAoYHBhY2thZ2luZz1wb21gLCBgPG1vZHVsZXM+YCBpbiB0aGUgb3JkZXIgYWRkZWQpLiBUaGUgcGFyZW50IG1hbmFnZXNcbiAgICogZXZlcnkgbW9kdWxlIGF0IGAke3Byb2plY3QudmVyc2lvbn1gLCBzbyBtb2R1bGVzIGRlcGVuZCBvbiBlYWNoIG90aGVyXG4gICAqIHdpdGggYGFkZE1vZHVsZURlcGVuZGVuY3koKWAsIHZlcnNpb25sZXNzLlxuICAgKi9cbiAgcHVibGljIGFkZE1vZHVsZShvcHRpb25zOiBNYXZlbk1vZHVsZU9wdGlvbnMpOiBNYXZlbk1vZHVsZSB7XG4gICAgaWYgKHRoaXMucm9vdFBhY2thZ2luZyAhPT0gdW5kZWZpbmVkICYmIHRoaXMucm9vdFBhY2thZ2luZyAhPT0gJ3BvbScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEEgbXVsdGktbW9kdWxlIHByb2plY3QncyByb290IHBvbSBpcyBwYWNrYWdlZCBhcyBcInBvbVwiOyByZW1vdmUgcGFja2FnaW5nOiBcIiR7dGhpcy5yb290UGFja2FnaW5nfVwiLmAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBkaXIgPSBub3JtYWxpemVNb2R1bGVEaXIob3B0aW9ucy5kaXIpO1xuICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLm1hdmVuTW9kdWxlcykge1xuICAgICAgaWYgKG0uYXJ0aWZhY3RJZCA9PT0gb3B0aW9ucy5hcnRpZmFjdElkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIG1vZHVsZSBhcnRpZmFjdElkIFwiJHtvcHRpb25zLmFydGlmYWN0SWR9XCIgKGRpcnMgXCIke20uZGlyfVwiIGFuZCBcIiR7ZGlyfVwiKS5gKTtcbiAgICAgIH1cbiAgICAgIGlmIChtLmRpciA9PT0gZGlyIHx8IGRpci5zdGFydHNXaXRoKGAke20uZGlyfS9gKSB8fCBtLmRpci5zdGFydHNXaXRoKGAke2Rpcn0vYCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgZGlyIFwiJHtkaXJ9XCIgb3ZlcmxhcHMgbW9kdWxlIGRpciBcIiR7bS5kaXJ9XCI6IG1vZHVsZSBkaXJzIG11c3QgYmUgZGlzdGluY3QgYW5kIG5vdCBuZXN0ZWQuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbW9kdWxlID0gbmV3IE1hdmVuTW9kdWxlKHRoaXMsIHRoaXMucG9tLCB7IC4uLm9wdGlvbnMsIGRpciB9KTtcbiAgICB0aGlzLm1hdmVuTW9kdWxlcy5wdXNoKG1vZHVsZSk7XG4gICAgdGhpcy5wb20ucGFja2FnaW5nID0gJ3BvbSc7XG4gICAgdGhpcy5wb20ubWFuYWdlUGx1Z2luVmVyc2lvbnMgPSB0cnVlO1xuICAgIHRoaXMucG9tLmFkZE1vZHVsZShkaXIpO1xuICAgIHRoaXMucG9tLmFkZE1hbmFnZWREZXBlbmRlbmN5KGAke3RoaXMuZ3JvdXBJZH0vJHtvcHRpb25zLmFydGlmYWN0SWR9QFxcJHtwcm9qZWN0LnZlcnNpb259YCk7XG4gICAgcmV0dXJuIG1vZHVsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIGEgQk9NIGludG8gdGhlIHJvb3QgYDxkZXBlbmRlbmN5TWFuYWdlbWVudD5gIChgdHlwZT1wb21gLFxuICAgKiBgc2NvcGU9aW1wb3J0YCkuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjIGBncm91cElkL2FydGlmYWN0SWRAdmVyc2lvbmBcbiAgICovXG4gIHB1YmxpYyBhZGRCb20oc3BlYzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wb20uYWRkQm9tKHNwZWMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBpbnMgYSB2ZXJzaW9uIGluIHRoZSByb290IGA8ZGVwZW5kZW5jeU1hbmFnZW1lbnQ+YCB3aXRob3V0IGFkZGluZyB0aGVcbiAgICogZGVwZW5kZW5jeSwgc28gbW9kdWxlcyAob3IgdGhlIHJvb3QpIGNhbiB1c2UgaXQgdmVyc2lvbmxlc3MuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjIGBncm91cElkL2FydGlmYWN0SWRAdmVyc2lvbmBcbiAgICovXG4gIHB1YmxpYyBhZGRNYW5hZ2VkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGRNYW5hZ2VkRGVwZW5kZW5jeShzcGVjKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY29tcGlsZS1zY29wZSBkZXBlbmRlbmN5IHRvIHRoZSByb290IHBvbS4gSW4gYSBtdWx0aS1tb2R1bGVcbiAgICogcHJvamVjdCBldmVyeSBtb2R1bGUgaW5oZXJpdHMgaXQ7IHVzZSBgTWF2ZW5Nb2R1bGUuYWRkRGVwZW5kZW5jeWAgZm9yXG4gICAqIG9uZSBtb2R1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjIGBncm91cElkL2FydGlmYWN0SWRbQHZlcnNpb25dYCAtIGV4YWN0IHZlcnNpb24sIG9yIG5vbmUgd2hlblxuICAgKiBhIEJPTSBtYW5hZ2VzIGl0XG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGREZXBlbmRlbmN5KHNwZWMpO1xuICB9XG5cbiAgLyoqIEFkZHMgYSB0ZXN0LXNjb3BlIGRlcGVuZGVuY3kgdG8gdGhlIHJvb3QgcG9tIChpbmhlcml0ZWQgYnkgZXZlcnkgbW9kdWxlKS4gKi9cbiAgcHVibGljIGFkZFRlc3REZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucG9tLmFkZFRlc3REZXBlbmRlbmN5KHNwZWMpO1xuICB9XG5cbiAgLyoqIEFkZHMgYSBidWlsZCBwbHVnaW4gdG8gdGhlIHJvb3QgcG9tIChpbmhlcml0ZWQgYnkgZXZlcnkgbW9kdWxlKS4gKi9cbiAgcHVibGljIGFkZFBsdWdpbihzcGVjOiBzdHJpbmcsIG9wdGlvbnM6IGphdmEuUGx1Z2luT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgdGhpcy5wb20uYWRkUGx1Z2luKHNwZWMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHByZVN5bnRoZXNpemUoKTogdm9pZCB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICAgIGlmICh0aGlzLnNhbXBsZSAmJiB0aGlzLm1hdmVuTW9kdWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYWRkU2FtcGxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBleGFjdCB2ZXJzaW9uIHRoaXMgcHJvamVjdCB1c2VzIGZvciBhIGBncm91cElkL2FydGlmYWN0SWRgIGl0IHBpbnNcbiAgICogYnkgZGVmYXVsdDogdGhlIGBwbHVnaW5WZXJzaW9uc2Agb3ZlcnJpZGUgaWYgc2V0LCBvdGhlcndpc2UgdGhlXG4gICAqIGRlZmF1bHQgZm9yIGBqYXZhVmVyc2lvbmAuXG4gICAqL1xuICBwdWJsaWMgcGlubmVkVmVyc2lvbihjb29yZGluYXRlczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5qYXZhTGluZS52ZXJzaW9uc1tjb29yZGluYXRlc107XG4gICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGRlZmF1bHQgdmVyc2lvbiBmb3IgJHtjb29yZGluYXRlc30uYCk7XG4gICAgfVxuICAgIHJldHVybiB2ZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBuZXdlc3QgU3ByaW5nIEJvb3QgbWFqb3IgdmVyc2lvbiBgamF2YVZlcnNpb25gIHN1cHBvcnRzLCBvclxuICAgKiB1bmRlZmluZWQgd2hlbiB0aGlzIHBhY2thZ2Uga25vd3Mgb2Ygbm8gY2FwLlxuICAgKi9cbiAgcHJvdGVjdGVkIG1heFNwcmluZ0Jvb3RNYWpvcigpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmphdmFMaW5lLm1heFNwcmluZ0Jvb3RNYWpvcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlQnVpbGQob3B0aW9uczogSmF2YU1hdmVuUHJvamVjdE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGRQcm9wZXJ0eSgncHJvamVjdC5idWlsZC5zb3VyY2VFbmNvZGluZycsICdVVEYtOCcpO1xuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmphdmFMaW5lLmNvbXBpbGVyUHJvcGVydGllcykpIHtcbiAgICAgIHRoaXMucG9tLmFkZFByb3BlcnR5KG5hbWUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBKVW5pdCdzIHZlcnNpb24gY29tZXMgZnJvbSBpdHMgQk9NIChvciBmcm9tIGEgZnJhbWV3b3JrIEJPTSB0aGF0XG4gICAgLy8gbWFuYWdlcyBpdCAtIHNlZSBKYXZhU3ByaW5nQm9vdFByb2plY3QpLCBuZXZlciBmcm9tIGEgZGVwZW5kZW5jeS5cbiAgICB0aGlzLnBvbS5hZGRCb20oYCR7SlVOSVRfQk9NfUAke3RoaXMucGlubmVkVmVyc2lvbihKVU5JVF9CT00pfWApO1xuICAgIHRoaXMucG9tLmFkZFRlc3REZXBlbmRlbmN5KCdvcmcuanVuaXQuanVwaXRlci9qdW5pdC1qdXBpdGVyJyk7XG5cbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9DT01QSUxFUl9QTFVHSU59QCR7dGhpcy5waW5uZWRWZXJzaW9uKE1BVkVOX0NPTVBJTEVSX1BMVUdJTil9YCk7XG4gICAgdGhpcy5hZGRQbHVnaW4oYCR7TUFWRU5fU1VSRUZJUkVfUExVR0lOfUAke3RoaXMucGlubmVkVmVyc2lvbihNQVZFTl9TVVJFRklSRV9QTFVHSU4pfWApO1xuICAgIC8vIGZhaWxzYWZlIGhhcyBubyBkZWZhdWx0IGxpZmVjeWNsZSBiaW5kaW5nOyBiaW5kIGl0IHNvIGAqSVRgIHRlc3RzIHJ1blxuICAgIC8vIGluIGBtdm4gdmVyaWZ5YC5cbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9GQUlMU0FGRV9QTFVHSU59QCR7dGhpcy5waW5uZWRWZXJzaW9uKE1BVkVOX0ZBSUxTQUZFX1BMVUdJTil9YCwge1xuICAgICAgZXhlY3V0aW9uczogW3sgaWQ6ICdpbnRlZ3JhdGlvbi10ZXN0cycsIGdvYWxzOiBbJ2ludGVncmF0aW9uLXRlc3QnLCAndmVyaWZ5J10gfV0sXG4gICAgfSk7XG4gICAgdGhpcy5hZGRQbHVnaW4oYCR7TUFWRU5fSkFSX1BMVUdJTn1AJHt0aGlzLnBpbm5lZFZlcnNpb24oTUFWRU5fSkFSX1BMVUdJTil9YCwge1xuICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICBhcmNoaXZlOiB7XG4gICAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICAgIGFkZERlZmF1bHRJbXBsZW1lbnRhdGlvbkVudHJpZXM6IHRydWUsXG4gICAgICAgICAgICBhZGREZWZhdWx0U3BlY2lmaWNhdGlvbkVudHJpZXM6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5lbmZvcmNlciA/PyB0cnVlKSB7XG4gICAgICBjb25zdCBtaW5NYXZlbiA9IG9wdGlvbnMubWluTWF2ZW5WZXJzaW9uID8/IERFRkFVTFRfTUlOX01BVkVOX1ZFUlNJT047XG4gICAgICBhc3NlcnRFeGFjdFZlcnNpb24obWluTWF2ZW4sICdtaW5NYXZlblZlcnNpb24nKTtcbiAgICAgIHRoaXMuYWRkUGx1Z2luKGAke01BVkVOX0VORk9SQ0VSX1BMVUdJTn1AJHt0aGlzLnBpbm5lZFZlcnNpb24oTUFWRU5fRU5GT1JDRVJfUExVR0lOKX1gLCB7XG4gICAgICAgIGV4ZWN1dGlvbnM6IFt7IGlkOiAnZW5mb3JjZS12ZXJzaW9ucycsIGdvYWxzOiBbJ2VuZm9yY2UnXSB9XSxcbiAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICByZXF1aXJlTWF2ZW5WZXJzaW9uOiB7IHZlcnNpb246IGBbJHttaW5NYXZlbn0sKWAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVKYXZhVmVyc2lvbjogeyB2ZXJzaW9uOiB0aGlzLmphdmFMaW5lLmVuZm9yY2VySmF2YVJhbmdlIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkU2FtcGxlKCk6IHZvaWQge1xuICAgIGNvbnN0IHBrZyA9IHRoaXMuZ3JvdXBJZC5yZXBsYWNlKC9bXkEtWmEtejAtOV8uXS9nLCAnXycpO1xuICAgIGNvbnN0IHBhdGggPSBwa2cuc3BsaXQoJy4nKTtcbiAgICBuZXcgU2FtcGxlRGlyKHRoaXMsIHBvc2l4LmpvaW4oJ3NyYy9tYWluL2phdmEnLCAuLi5wYXRoKSwge1xuICAgICAgZmlsZXM6IHtcbiAgICAgICAgJ01haW4uamF2YSc6IFtcbiAgICAgICAgICBgcGFja2FnZSAke3BrZ307YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAncHVibGljIGNsYXNzIE1haW4geycsXG4gICAgICAgICAgJyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7JyxcbiAgICAgICAgICAnICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oXCJIZWxsbywgd29ybGQhXCIpOycsXG4gICAgICAgICAgJyAgICB9JyxcbiAgICAgICAgICAnfScsXG4gICAgICAgICAgJycsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgcG9zaXguam9pbignc3JjL3Rlc3QvamF2YScsIC4uLnBhdGgpLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICAnTWFpblRlc3QuamF2YSc6IFtcbiAgICAgICAgICBgcGFja2FnZSAke3BrZ307YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnaW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5UZXN0OycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2NsYXNzIE1haW5UZXN0IHsnLFxuICAgICAgICAgICcgICAgQFRlc3QnLFxuICAgICAgICAgICcgICAgdm9pZCBydW5zKCkgeycsXG4gICAgICAgICAgJyAgICAgICAgTWFpbi5tYWluKG5ldyBTdHJpbmdbMF0pOycsXG4gICAgICAgICAgJyAgICB9JyxcbiAgICAgICAgICAnfScsXG4gICAgICAgICAgJycsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogYHByb2plbiBuZXcgLi4uIC0tamF2YS12ZXJzaW9uIDIxYCAob3IgYDEuOGAsIG9yIGAtLW1pbi1tYXZlbi12ZXJzaW9uIDMuOWApXG4gKiByZWFjaGVzIHRoZSBvcHRpb25zIGFzIGEgKm51bWJlcio6IHlhcmdzIHBhcnNlcyBudW1lcmljLWxvb2tpbmcgZmxhZ3MsIGFuZFxuICogcHJvamVuIHBhc3NlcyBzdHJpbmctdHlwZWQgb3B0aW9ucyB0aHJvdWdoIHVuY2hhbmdlZC4gVGhlIGluaXRpYWxcbiAqIGAucHJvamVucmMudHNgIGlzIHJlbmRlcmVkIGZyb20gdGhlIHNhbWUgYXJncywgc28gaXQgd291bGQgcmVhZFxuICogYGphdmFWZXJzaW9uOiAyMWAgYW5kIGZhaWwgdG8gdHlwZS1jaGVjay4gTm8gSmF2YSBvcHRpb24gaXMgbnVtYmVyLXR5cGVkLFxuICogc28gZXZlcnkgbnVtZXJpYyBhcmcgaXMgdHVybmVkIGJhY2sgaW50byB0aGUgc3RyaW5nIHRoZSB1c2VyIHR5cGVkLiBUaGlzXG4gKiBydW5zIGJlZm9yZSB0aGUgUHJvamVjdCBjb25zdHJ1Y3Rvciwgd2hpY2ggaXMgd2hlcmUgcHJvamVuIGNhcHR1cmVzIHRoZVxuICogYXJncyBpdCByZW5kZXJzLiBPcHRpb25zIGZyb20gYSBoYW5kLXdyaXR0ZW4gcHJvamVucmMgYXJlIG5ldmVyIG51bWJlcnNcbiAqICh0aGV5IHR5cGUtY2hlY2sgYXMgc3RyaW5ncykgYW5kIGFyZSBsZWZ0IGFsb25lLlxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlQcm9qZW5OZXdBcmdzPFQgZXh0ZW5kcyBvYmplY3Q+KG9wdGlvbnM6IFQpOiBUIHtcbiAgY29uc3QgbWFya2VyID0gKG9wdGlvbnMgYXMgYW55KS5fX25ld19fO1xuICBpZiAoIW1hcmtlcj8uYXJncykge1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG4gIGZvciAoY29uc3QgdGFyZ2V0IG9mIFtvcHRpb25zIGFzIGFueSwgbWFya2VyLmFyZ3NdKSB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRhcmdldCkpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHRhcmdldFtuYW1lXSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVNb2R1bGVEaXIoZGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB1bml4ID0gZGlyLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgaWYgKHVuaXguc3RhcnRzV2l0aCgnLycpIHx8IC9eW0EtWmEtel06Ly50ZXN0KHVuaXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgZGlyIFwiJHtkaXJ9XCIgbXVzdCBiZSByZWxhdGl2ZSB0byB0aGUgcmVwbyByb290LmApO1xuICB9XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBwb3NpeC5ub3JtYWxpemUodW5peCkucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gIGlmIChub3JtYWxpemVkID09PSAnLicgfHwgbm9ybWFsaXplZCA9PT0gJycgfHwgbm9ybWFsaXplZC5zcGxpdCgnLycpLmluY2x1ZGVzKCcuLicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgZGlyIFwiJHtkaXJ9XCIgbXVzdCBiZSBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgcmVwbyByb290LmApO1xuICB9XG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuIl19
|
|
415
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1tYXZlbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1tYXZlbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx5Q0FBa0M7QUFDbEMsbUNBQWlFO0FBQ2pFLDBFQUFxRTtBQUNyRSw0RUFBdUU7QUFDdkUsbURBV3lCO0FBQ3pCLHVEQUFtRDtBQUNuRCxpREFBaUU7QUFFakUsaURBQWtFO0FBQ2xFLG1EQUErRDtBQUMvRCx5REFBeUQ7QUFDekQsaUVBQTBFO0FBQzFFLHlEQUF3RDtBQUN4RCx1RkFBaUY7QUFDakYsdURBQWlFO0FBQ2pFLDZEQUF5RDtBQUN6RCwrRkFBeUY7QUFDekYsaUVBQWlFO0FBRWpFLDJFQUEyRTtBQUMzRSx3RUFBd0U7QUFDeEUseURBQXlEO0FBQ3pELDBCQUEwQjtBQUMxQixpRUFBaUU7QUFDakUsTUFBTSxjQUFjLEdBQVcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3RFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFXLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUUzRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxlQUFNLENBQUMsYUFBYTs7SUFDeEQsMEJBQTBCO0lBQ1YsR0FBRyxDQUFXO0lBRTlCLDJFQUEyRTtJQUMzRCxXQUFXLENBQVM7SUFFcEMseUVBQXlFO0lBQ3pELFdBQVcsQ0FBTztJQUVsQzs7OztPQUlHO0lBQ2EsbUJBQW1CLENBQXNCO0lBRXpEOzs7T0FHRztJQUNhLFlBQVksQ0FBNkI7SUFFekQsZ0RBQWdEO0lBQ2hDLGFBQWEsQ0FBaUI7SUFFN0IsUUFBUSxDQUFrQjtJQUMxQixhQUFhLENBQVU7SUFDdkIsT0FBTyxDQUFTO0lBQ2hCLE1BQU0sQ0FBVTtJQUNoQixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUVsRCxZQUFZLE9BQWdD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QUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsR0FBRyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxpQkFBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdELElBQUksVUFBVSxLQUFLLEdBQUcsSUFBSSxVQUFVLEtBQUssRUFBRSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLEdBQUcsNENBQTRDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvc2l4IH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IEpzb25GaWxlLCBTYW1wbGVEaXIsIFRhc2ssIGdpdGh1YiwgamF2YSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBDb2RlSW5kZXhXb3JrZmxvdyB9IGZyb20gJy4vY29tcG9uZW50cy9jb2RlLWluZGV4LXdvcmtmbG93JztcbmltcG9ydCB7IE1hdmVuVXBncmFkZVJlcG9ydCB9IGZyb20gJy4vY29tcG9uZW50cy9tYXZlbi11cGdyYWRlLXJlcG9ydCc7XG5pbXBvcnQge1xuICBERUZBVUxUX01JTl9NQVZFTl9WRVJTSU9OLFxuICBKVU5JVF9CT00sXG4gIEphdmFMaW5lUHJvZmlsZSxcbiAgTUFWRU5fQ09NUElMRVJfUExVR0lOLFxuICBNQVZFTl9FTkZPUkNFUl9QTFVHSU4sXG4gIE1BVkVOX0ZBSUxTQUZFX1BMVUdJTixcbiAgTUFWRU5fSkFSX1BMVUdJTixcbiAgTUFWRU5fU1VSRUZJUkVfUExVR0lOLFxuICBWRVJTSU9OU19NQVZFTl9QTFVHSU4sXG4gIHJlc29sdmVKYXZhTGluZSxcbn0gZnJvbSAnLi9qYXZhLXZlcnNpb25zJztcbmltcG9ydCB7IE1hdmVuTW9kdWxlIH0gZnJvbSAnLi9tYXZlbi9tYXZlbi1tb2R1bGUnO1xuaW1wb3J0IHsgTWF2ZW5Qb20sIGFzc2VydEV4YWN0VmVyc2lvbiB9IGZyb20gJy4vbWF2ZW4vbWF2ZW4tcG9tJztcbmltcG9ydCB7IEphdmFNYXZlblByb2plY3RPcHRpb25zLCBNYXZlbk1vZHVsZU9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgTlBNX0NJX1NURVAsIFNFVFVQX05PREVfU1RFUCB9IGZyb20gJy4uL2NvbW1vbi9jaS1zdGVwcyc7XG5pbXBvcnQgeyBERUZBVUxUX0dIRV9UT0tFTl9TRUNSRVQgfSBmcm9tICcuLi9jb21tb24vY29uc3RhbnRzJztcbmltcG9ydCB7IGFkZEVkaXRvckNvbmZpZyB9IGZyb20gJy4uL2NvbW1vbi9lZGl0b3Jjb25maWcnO1xuaW1wb3J0IHsgYXBwbHlJbnRlcm5hbEFjdGlvbk92ZXJyaWRlcyB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC1hY3Rpb25zJztcbmltcG9ydCB7IGFkZExpY2Vuc2VGaWxlIH0gZnJvbSAnLi4vY29tbW9uL2xpY2Vuc2UtZmlsZSc7XG5pbXBvcnQgeyBQcm9qZW5EcmlmdENoZWNrV29ya2Zsb3cgfSBmcm9tICcuLi9jb21tb24vcHJvamVuLWRyaWZ0LWNoZWNrLXdvcmtmbG93JztcbmltcG9ydCB7IGF0dGFjaFR5cGVTY3JpcHRQcm9qZW5yYyB9IGZyb20gJy4uL2NvbW1vbi9wcm9qZW5yYy10cyc7XG5pbXBvcnQgeyBTb25hcldvcmtmbG93IH0gZnJvbSAnLi4vY29tbW9uL3NvbmFyLXdvcmtmbG93JztcbmltcG9ydCB7IFdvcmtmbG93Q2hhbmdlTm90aWNlV29ya2Zsb3cgfSBmcm9tICcuLi9jb21tb24vd29ya2Zsb3ctY2hhbmdlLW5vdGljZS13b3JrZmxvdyc7XG5pbXBvcnQgeyBub3RlV29ya2Zsb3dQdXJwb3NlIH0gZnJvbSAnLi4vY29tbW9uL3dvcmtmbG93LXB1cnBvc2UnO1xuXG4vLyBgcmVxdWlyZSguLi4pYCByZXNvbHZlcyB0aHJvdWdoIE5vZGUncyBub3JtYWwgbW9kdWxlIHJlc29sdXRpb24sIHNvIGluIGFcbi8vICpwdWJsaXNoZWQqIHBhY2thZ2UgdGhlc2UgYXJlIHRoZSB2ZXJzaW9ucyBpbnN0YWxsZWQgaW4gdGhlIGNvbnN1bWluZ1xuLy8gcmVwbyAtIGV4YWN0bHkgd2hhdCBpdHMgcGFja2FnZS5qc29uIG11c3QgcGluIChzYW1lIGFzXG4vLyBgR2l0SHViQWN0aW9uUHJvamVjdGApLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IFBST0pFTl9WRVJTSU9OOiBzdHJpbmcgPSByZXF1aXJlKCdwcm9qZW4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBQUk9KRU5fVFlQRVNfVkVSU0lPTjogc3RyaW5nID0gcmVxdWlyZSgnLi4vLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcblxuLyoqXG4gKiBCYXNlbGluZSBNYXZlbiBwcm9qZWN0LCBzaW5nbGUtIG9yIG11bHRpLW1vZHVsZSwgd2l0aCBubyBmcmFtZXdvcmtcbiAqIGFzc3VtcHRpb25zLiBJdCBpcyB0aGUgYmFzZSBvZiBldmVyeSBKYXZhIHR5cGUgaW4gdGhpcyBwYWNrYWdlIGFuZCBpc1xuICogdXNhYmxlIG9uIGl0cyBvd24gKGBwcm9qZW4gbmV3IC4uLiBqYXZhX21hdmVuYCkuXG4gKlxuICogLSBUaGUgcG9tIGlzIHdyaXR0ZW4gYnkgdGhpcyBwYWNrYWdlIChgTWF2ZW5Qb21gKSwgbm90IHByb2plbidzXG4gKiAgIGBqYXZhLlBvbWA6IGV4YWN0IHZlcnNpb25zIG9ubHksIEJPTSBpbXBvcnRzLCBgPG1vZHVsZXM+YCxcbiAqICAgYDxkZXBlbmRlbmN5TWFuYWdlbWVudD5gLCBgPHBsdWdpbk1hbmFnZW1lbnQ+YC5cbiAqIC0gRXZlcnl0aGluZyBKYXZhLXZlcnNpb24tZGVwZW5kZW50IChjb21waWxlciBsZXZlbCwgZW5mb3JjZXIgcnVsZSwgSlVuaXRcbiAqICAgbGluZSwgQ0kgSkRLKSBmb2xsb3dzIGBqYXZhVmVyc2lvbmAuXG4gKiAtIFdpdGggbm8gYGFkZE1vZHVsZSgpYCBjYWxscyB0aGUgcm9vdCBwb20gaXMgdGhlIGFydGlmYWN0LiBBZnRlciB0aGVcbiAqICAgZmlyc3QgYGFkZE1vZHVsZSgpYCBpdCBpcyBhIGBwb21gLXBhY2thZ2VkIHJlYWN0b3IgcGFyZW50IGFuZCB0aGVcbiAqICAgbW9kdWxlcyBpbmhlcml0IGl0cyBwbHVnaW5zIGFuZCB0ZXN0IGRlcGVuZGVuY2llcy5cbiAqIC0gYG5weCBwcm9qZW4gYnVpbGRgIHN5bnRoZXNpemVzLCB0aGVuIHJ1bnMgTWF2ZW4gb25jZTogYG12biAtQiB2ZXJpZnlgXG4gKiAgICh1bml0IHRlc3RzIHZpYSBzdXJlZmlyZSwgYCpJVGAgdGVzdHMgdmlhIGZhaWxzYWZlKS5cbiAgICogLSBDSTogYSBQUiBidWlsZCwgdGhlIHByb2plbiBkcmlmdCBjaGVjaywgYW4gb3B0aW9uYWwgU29uYXJDbG91ZCBzY2FuXG4gICAqICAgKGBzb25hci55bWxgLCB3aGVuIGBzb25hckhvc3RVcmxgIGlzIHNldCksIGEgbmlnaHRseSByZXBvcnQtb25seVxuICAgKiAgIHVwZGF0ZSBjaGVjaywgYW5kIHRoZSBjb2RlIGluZGV4IChgY29kZWluZGV4LnltbGAsIG9uIHB1c2ggdG8gYG1haW5gKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEphdmFNYXZlblByb2plY3QgZXh0ZW5kcyBnaXRodWIuR2l0SHViUHJvamVjdCB7XG4gIC8qKiBUaGUgcm9vdCBgcG9tLnhtbGAuICovXG4gIHB1YmxpYyByZWFkb25seSBwb206IE1hdmVuUG9tO1xuXG4gIC8qKiBUaGUgY2Fub25pY2FsIEphdmEgbGluZSB0aGUgYnVpbGQgdGFyZ2V0cyAoYDEuOGAsIGAxN2AsIGAyMWAsIGAyNWApLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgamF2YVZlcnNpb246IHN0cmluZztcblxuICAvKiogUHJpbnRzIGF2YWlsYWJsZSBkZXBlbmRlbmN5L3BsdWdpbiB1cGRhdGVzIChgbnB4IHByb2plbiB1cGdyYWRlYCkuICovXG4gIHB1YmxpYyByZWFkb25seSB1cGdyYWRlVGFzazogVGFzaztcblxuICAvKipcbiAgICogVGhlIFBSIGJ1aWxkIHdvcmtmbG93IChgYnVpbGQueW1sYCkuIEFkZCBqb2JzIHRvIGl0IHdpdGhcbiAgICogYGJ1aWxkVmVyaWZ5V29ya2Zsb3cuYWRkSm9iKGlkLCBqb2IpYDsgdXNlIGBjaVNldHVwU3RlcHNgIGZvciBhIGpvYiB0aGF0XG4gICAqIG5lZWRzIE5vZGUsIHRoZSBwcm9qZW4gdG9vbGNoYWluLCBhbmQgdGhlIEpESy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWlsZFZlcmlmeVdvcmtmbG93OiBnaXRodWIuVGFza1dvcmtmbG93O1xuXG4gIC8qKlxuICAgKiBTdGVwcyB0aGF0IGluc3RhbGwgTm9kZSAocGlubmVkKSwgYG5wbSBjaWAsIGFuZCB0aGUgcHJvamVjdCdzIEpESyB3aXRoIGFcbiAgICogTWF2ZW4gY2FjaGUgLSB0aGUgc2V0dXAgZXZlcnkgTWF2ZW4gQ0kgam9iIGluIHRoaXMgcmVwbyBuZWVkcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjaVNldHVwU3RlcHM6IGdpdGh1Yi53b3JrZmxvd3MuSm9iU3RlcFtdO1xuXG4gIC8qKiBTZXQgb25seSB3aGVuIGBzb25hckhvc3RVcmxgIGlzIHByb3ZpZGVkLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc29uYXJXb3JrZmxvdz86IFNvbmFyV29ya2Zsb3c7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBqYXZhTGluZTogSmF2YUxpbmVQcm9maWxlO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvb3RQYWNrYWdpbmc/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbXBsZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXZlbk1vZHVsZXM6IE1hdmVuTW9kdWxlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKYXZhTWF2ZW5Qcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC8vIFNwcmVhZCBmaXJzdCwgb3ZlcnJpZGVzIGFmdGVyOiBmb3J3YXJkaW5nIHRoZSBjYWxsZXIncyBvcHRpb25zIGlzXG4gICAgICAvLyB3aGF0IGxldHMgYHByb2plbiBuZXcgLS1mcm9tIEB4cGVydHNzL3Byb2plbi10eXBlcyBqYXZhX21hdmVuYCB3b3JrXG4gICAgICAvLyAtIHByb2plbiBzbXVnZ2xlcyBpdHMgYm9vdHN0cmFwIG1hcmtlciAoYF9fbmV3X19gKSB0aHJvdWdoIHRoZVxuICAgICAgLy8gb3B0aW9ucyBvYmplY3QsIGFuZCBpdCBpcyB0aGF0IG1hcmtlciB3aGljaCBtYWtlcyB0aGVcbiAgICAgIC8vIGBQcm9qZW5yY0ZpbGVgIGNvbXBvbmVudCB3cml0ZSB0aGUgaW5pdGlhbCBgLnByb2plbnJjLnRzYC4gRHJvcCBpdFxuICAgICAgLy8gYW5kIGBwcm9qZW4gbmV3YCBzY2FmZm9sZHMgYSByZXBvIHdpdGggbm8gcHJvamVucmMgYXQgYWxsLlxuICAgICAgLi4uc3RyaW5naWZ5UHJvamVuTmV3QXJncyhvcHRpb25zKSxcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIC8vIFBSIHRpdGxlcyBhcmUgbm90IGdhdGVkOiBgZmVhdDpgL2BmaXg6YCBtYXR0ZXIgb25seSBiZWNhdXNlIHRoZXkgZHJpdmVcbiAgICAgIC8vIHRoZSByZWxlYXNlIHdvcmtmbG93ICh2aWEgYHJlbGVhc2FibGVDb21taXRzYCksIG5vdCBQUiBjaGVja3MuIFRoZVxuICAgICAgLy8gY29udmVudGlvbmFsLWNvbW1pdCBQUi10aXRsZSBsaW50IGlzIGFkZGVkIGJ5IHRoZSBgR2l0SHViYCBjb21wb25lbnRcbiAgICAgIC8vIHVubGVzcyBgZ2l0aHViT3B0aW9ucy5wdWxsUmVxdWVzdExpbnRgIGlzIGBmYWxzZWAgKGl0IGRlZmF1bHRzIHRydWUpLlxuICAgICAgZ2l0aHViT3B0aW9uczogeyBwdWxsUmVxdWVzdExpbnQ6IGZhbHNlIH0sXG4gICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21QZXJzb25hbEFjY2Vzc1Rva2VuKHtcbiAgICAgICAgc2VjcmV0OiBvcHRpb25zLmdoZVRva2VuU2VjcmV0ID8/IERFRkFVTFRfR0hFX1RPS0VOX1NFQ1JFVCxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCB2ZXJzaW9uIG9mIE9iamVjdC52YWx1ZXMob3B0aW9ucy5wbHVnaW5WZXJzaW9ucyA/PyB7fSkpIHtcbiAgICAgIGFzc2VydEV4YWN0VmVyc2lvbih2ZXJzaW9uLCAncGx1Z2luVmVyc2lvbnMnKTtcbiAgICB9XG4gICAgdGhpcy5qYXZhTGluZSA9IHJlc29sdmVKYXZhTGluZShvcHRpb25zLmphdmFWZXJzaW9uLCBvcHRpb25zLnBsdWdpblZlcnNpb25zKTtcbiAgICB0aGlzLmphdmFWZXJzaW9uID0gdGhpcy5qYXZhTGluZS5saW5lO1xuICAgIHRoaXMucm9vdFBhY2thZ2luZyA9IG9wdGlvbnMucGFja2FnaW5nO1xuICAgIHRoaXMuZ3JvdXBJZCA9IG9wdGlvbnMuZ3JvdXBJZDtcbiAgICB0aGlzLnNhbXBsZSA9IG9wdGlvbnMuc2FtcGxlID8/IGZhbHNlO1xuXG4gICAgLy8gYC5wcm9qZW5yYy50c2AgKyBgbnB4IHByb2plbmAsIHNhbWUgYXMgZXZlcnkgb3RoZXIgdHlwZSBoZXJlLiBUaGVcbiAgICAvLyBNYXZlbiByZXBvIG5lZWRzIG5vIFR5cGVTY3JpcHQgdG9vbGNoYWluIG9mIGl0cyBvd24gLSB0aGUgcnVubmVyIGlzXG4gICAgLy8gZmV0Y2hlZCAocGlubmVkKSBieSBucHggYXQgc3ludGggdGltZS5cbiAgICBhdHRhY2hUeXBlU2NyaXB0UHJvamVucmModGhpcyk7XG5cbiAgICAvLyBUaGUgcHJvamVuIHRvb2xjaGFpbiBgbnB4IHByb2plbmAgcnVucywgcGlubmVkIGV4YWN0bHkgc28gZXZlcnlcbiAgICAvLyBtYWNoaW5lIGFuZCBDSSByZXNvbHZlIHRoZSBzYW1lIGdlbmVyYXRvci4gT3duZXItd3JpdGFibGUgb24gZGlzayBzb1xuICAgIC8vIHRoZSBkb2N1bWVudGVkIHVwZGF0ZSBmbG93IChgbnBtIGkgLUQgLUUgQHhwZXJ0c3MvcHJvamVuLXR5cGVzQDx2PmApXG4gICAgLy8gY2FuIHJld3JpdGUgaXQ7IGhhbmQtZWRpdHMgYXJlIHN0aWxsIGNhdWdodCBieSB0aGUgZHJpZnQgY2hlY2suXG4gICAgbmV3IEpzb25GaWxlKHRoaXMsICdwYWNrYWdlLmpzb24nLCB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiAnMC4wLjAnLFxuICAgICAgICBwcml2YXRlOiB0cnVlLFxuICAgICAgICBkZXZEZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgICAncHJvamVuJzogUFJPSkVOX1ZFUlNJT04sXG4gICAgICAgICAgJ0B4cGVydHNzL3Byb2plbi10eXBlcyc6IFBST0pFTl9UWVBFU19WRVJTSU9OLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlYWRvbmx5OiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8vIEpldEJyYWlucyBJREUgc3RhdGUgKC5pZGVhLykgaXMgbmV2ZXIgdHJhY2tlZCBpbiBnZW5lcmF0ZWQgcmVwb3MsIGFuZFxuICAgIC8vIG5laXRoZXIgaXMgL3NwZWMvIChsb2NhbCBwbGFucyBhbmQgc3BlY3M7IHRoZSBwYXR0ZXJuIGNvdmVycyBldmVyeVxuICAgIC8vIHN1YmRpcmVjdG9yeSkuXG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy8uaWRlYS8qJyk7XG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy9zcGVjLycpO1xuICAgIHRoaXMuYWRkR2l0SWdub3JlKCd0YXJnZXQvJyk7XG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy5jbGFzc3BhdGgnKTtcbiAgICB0aGlzLmFkZEdpdElnbm9yZSgnLnByb2plY3QnKTtcbiAgICB0aGlzLmFkZEdpdElnbm9yZSgnLnNldHRpbmdzJyk7XG5cbiAgICBpZiAob3B0aW9ucy5saWNlbnNlZCA/PyB0cnVlKSB7XG4gICAgICBhZGRMaWNlbnNlRmlsZSh0aGlzLCB7XG4gICAgICAgIHNwZHg6IG9wdGlvbnMubGljZW5zZSA/PyAnTUlUJyxcbiAgICAgICAgY29weXJpZ2h0T3duZXI6IG9wdGlvbnMuY29weXJpZ2h0T3duZXIgPz8gJ1hwZXJ0IFNvZnR3YXJlJyxcbiAgICAgICAgY29weXJpZ2h0UGVyaW9kOiBvcHRpb25zLmNvcHlyaWdodFBlcmlvZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lZGl0b3Jjb25maWcgPz8gdHJ1ZSkge1xuICAgICAgYWRkRWRpdG9yQ29uZmlnKHRoaXMpO1xuICAgIH1cblxuICAgIHRoaXMucG9tID0gbmV3IE1hdmVuUG9tKHRoaXMsIHtcbiAgICAgIGdyb3VwSWQ6IG9wdGlvbnMuZ3JvdXBJZCxcbiAgICAgIGFydGlmYWN0SWQ6IG9wdGlvbnMuYXJ0aWZhY3RJZCxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyAnMC4xLjAnLFxuICAgICAgcGFja2FnaW5nOiB0aGlzLnJvb3RQYWNrYWdpbmcgPz8gJ2phcicsXG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgIHVybDogb3B0aW9ucy51cmwsXG4gICAgfSk7XG4gICAgdGhpcy5jb25maWd1cmVCdWlsZChvcHRpb25zKTtcblxuICAgIC8vIE9uZSBNYXZlbiBydW4gcGVyIGJ1aWxkOiBgdmVyaWZ5YCBydW5zIGV2ZXJ5IGVhcmxpZXIgcGhhc2UgKGNvbXBpbGUsXG4gICAgLy8gdW5pdCB0ZXN0cywgcGFja2FnZSkgcGx1cyBpbnRlZ3JhdGlvbiB0ZXN0cy4gTm90aGluZyBkZXBsb3lzLlxuICAgIHRoaXMudGVzdFRhc2suZXhlYygnbXZuIC1CIHZlcmlmeScpO1xuXG4gICAgY29uc3QgZ2ggPSB0aGlzLmdpdGh1YjtcbiAgICBpZiAoIWdoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0phdmFNYXZlblByb2plY3QgcmVxdWlyZXMgR2l0SHViIGludGVncmF0aW9uJyk7XG4gICAgfVxuICAgIGFwcGx5SW50ZXJuYWxBY3Rpb25PdmVycmlkZXMoZ2gpO1xuXG4gICAgbmV3IFByb2plbkRyaWZ0Q2hlY2tXb3JrZmxvdyh0aGlzLCB7XG4gICAgICBnaGVUb2tlblNlY3JldDogb3B0aW9ucy5naGVUb2tlblNlY3JldCA/PyBERUZBVUxUX0dIRV9UT0tFTl9TRUNSRVQsXG4gICAgfSk7XG4gICAgbmV3IFdvcmtmbG93Q2hhbmdlTm90aWNlV29ya2Zsb3codGhpcyk7XG5cbiAgICBpZiAob3B0aW9ucy5zb25hckhvc3RVcmwpIHtcbiAgICAgIHRoaXMuc29uYXJXb3JrZmxvdyA9IG5ldyBTb25hcldvcmtmbG93KHRoaXMsIHtcbiAgICAgICAgc29uYXJIb3N0VXJsOiBvcHRpb25zLnNvbmFySG9zdFVybCxcbiAgICAgICAgc29uYXJPcmdhbml6YXRpb246IG9wdGlvbnMuc29uYXJPcmdhbml6YXRpb24sXG4gICAgICAgIHNvbmFyVG9rZW5TZWNyZXQ6IG9wdGlvbnMuc29uYXJUb2tlblNlY3JldCxcbiAgICAgICAgc29uYXJQdWxsUmVxdWVzdEdhdGU6IG9wdGlvbnMuc29uYXJQdWxsUmVxdWVzdEdhdGUsXG4gICAgICAgIHNvbmFyUHJvamVjdEtleTogb3B0aW9ucy5zb25hclByb2plY3RLZXksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNpU2V0dXBTdGVwcyA9IFtcbiAgICAgIFNFVFVQX05PREVfU1RFUCxcbiAgICAgIE5QTV9DSV9TVEVQLFxuICAgICAge1xuICAgICAgICBuYW1lOiAnU2V0dXAgSmF2YScsXG4gICAgICAgIHVzZXM6ICdhY3Rpb25zL3NldHVwLWphdmFAdjYnLFxuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgJ2Rpc3RyaWJ1dGlvbic6IG9wdGlvbnMuamF2YURpc3RyaWJ1dGlvbiA/PyAndGVtdXJpbicsXG4gICAgICAgICAgJ2phdmEtdmVyc2lvbic6IHRoaXMuamF2YUxpbmUuc2V0dXBKYXZhVmVyc2lvbixcbiAgICAgICAgICAnY2FjaGUnOiAnbWF2ZW4nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgdGhpcy5idWlsZFZlcmlmeVdvcmtmbG93ID0gbmV3IGdpdGh1Yi5UYXNrV29ya2Zsb3coZ2gsIHtcbiAgICAgIG5hbWU6ICdidWlsZCcsXG4gICAgICBqb2JJZDogJ2J1aWxkJyxcbiAgICAgIHRhc2s6IHRoaXMuYnVpbGRUYXNrLFxuICAgICAgdHJpZ2dlcnM6IHsgcHVsbFJlcXVlc3Q6IHt9LCB3b3JrZmxvd0Rpc3BhdGNoOiB7fSB9LFxuICAgICAgcGVybWlzc2lvbnM6IHsgY29udGVudHM6IGdpdGh1Yi53b3JrZmxvd3MuSm9iUGVybWlzc2lvbi5SRUFEIH0sXG4gICAgICBwcmVCdWlsZFN0ZXBzOiB0aGlzLmNpU2V0dXBTdGVwcyxcbiAgICB9KTtcbiAgICBub3RlV29ya2Zsb3dQdXJwb3NlKFxuICAgICAgdGhpcy5idWlsZFZlcmlmeVdvcmtmbG93LmZpbGUsXG4gICAgICAnQnVpbGQgYW5kIHRlc3QgdGhlIE1hdmVuIHByb2plY3Qgb24gcHVsbCByZXF1ZXN0cy4nLFxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uc1BsdWdpbiA9IGBvcmcuY29kZWhhdXMubW9qbzp2ZXJzaW9ucy1tYXZlbi1wbHVnaW46JHt0aGlzLnBpbm5lZFZlcnNpb24oVkVSU0lPTlNfTUFWRU5fUExVR0lOKX1gO1xuICAgIHRoaXMudXBncmFkZVRhc2sgPSB0aGlzLmFkZFRhc2soJ3VwZ3JhZGUnLCB7XG4gICAgICBleGVjOiBgbXZuIC1CICR7dmVyc2lvbnNQbHVnaW59OmRpc3BsYXktZGVwZW5kZW5jeS11cGRhdGVzICR7dmVyc2lvbnNQbHVnaW59OmRpc3BsYXktcGx1Z2luLXVwZGF0ZXNgLFxuICAgIH0pO1xuICAgIGlmIChvcHRpb25zLnVwZ3JhZGVXb3JrZmxvdyA/PyB0cnVlKSB7XG4gICAgICBuZXcgTWF2ZW5VcGdyYWRlUmVwb3J0KHRoaXMsIHtcbiAgICAgICAgdGFzazogdGhpcy51cGdyYWRlVGFzayxcbiAgICAgICAgc2V0dXBTdGVwczogdGhpcy5jaVNldHVwU3RlcHMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wdWJsaXNoQ29kZUluZGV4ID8/IHRydWUpIHtcbiAgICAgIG5ldyBDb2RlSW5kZXhXb3JrZmxvdyh0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIG1vZHVsZXMgYWRkZWQgd2l0aCBgYWRkTW9kdWxlKClgLCBpbiBvcmRlci4gKi9cbiAgcHVibGljIGdldCBtb2R1bGVzKCk6IE1hdmVuTW9kdWxlW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5tYXZlbk1vZHVsZXNdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBNYXZlbiBtb2R1bGUgaW4gYGRpcmAgKHJlbGF0aXZlIHRvIHRoZSByZXBvIHJvb3Q7IG1heSBiZSBuZXN0ZWQsXG4gICAqIGUuZy4gYHRvb2xzL3N0dWItbW9kZWxgKSBhbmQgdHVybnMgdGhlIHJvb3QgcG9tIGludG8gdGhlIHJlYWN0b3IgcGFyZW50XG4gICAqIChgcGFja2FnaW5nPXBvbWAsIGA8bW9kdWxlcz5gIGluIHRoZSBvcmRlciBhZGRlZCkuIFRoZSBwYXJlbnQgbWFuYWdlc1xuICAgKiBldmVyeSBtb2R1bGUgYXQgYCR7cHJvamVjdC52ZXJzaW9ufWAsIHNvIG1vZHVsZXMgZGVwZW5kIG9uIGVhY2ggb3RoZXJcbiAgICogd2l0aCBgYWRkTW9kdWxlRGVwZW5kZW5jeSgpYCwgdmVyc2lvbmxlc3MuXG4gICAqL1xuICBwdWJsaWMgYWRkTW9kdWxlKG9wdGlvbnM6IE1hdmVuTW9kdWxlT3B0aW9ucyk6IE1hdmVuTW9kdWxlIHtcbiAgICBpZiAodGhpcy5yb290UGFja2FnaW5nICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yb290UGFja2FnaW5nICE9PSAncG9tJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBtdWx0aS1tb2R1bGUgcHJvamVjdCdzIHJvb3QgcG9tIGlzIHBhY2thZ2VkIGFzIFwicG9tXCI7IHJlbW92ZSBwYWNrYWdpbmc6IFwiJHt0aGlzLnJvb3RQYWNrYWdpbmd9XCIuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGRpciA9IG5vcm1hbGl6ZU1vZHVsZURpcihvcHRpb25zLmRpcik7XG4gICAgZm9yIChjb25zdCBtIG9mIHRoaXMubWF2ZW5Nb2R1bGVzKSB7XG4gICAgICBpZiAobS5hcnRpZmFjdElkID09PSBvcHRpb25zLmFydGlmYWN0SWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgbW9kdWxlIGFydGlmYWN0SWQgXCIke29wdGlvbnMuYXJ0aWZhY3RJZH1cIiAoZGlycyBcIiR7bS5kaXJ9XCIgYW5kIFwiJHtkaXJ9XCIpLmApO1xuICAgICAgfVxuICAgICAgaWYgKG0uZGlyID09PSBkaXIgfHwgZGlyLnN0YXJ0c1dpdGgoYCR7bS5kaXJ9L2ApIHx8IG0uZGlyLnN0YXJ0c1dpdGgoYCR7ZGlyfS9gKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBkaXIgXCIke2Rpcn1cIiBvdmVybGFwcyBtb2R1bGUgZGlyIFwiJHttLmRpcn1cIjogbW9kdWxlIGRpcnMgbXVzdCBiZSBkaXN0aW5jdCBhbmQgbm90IG5lc3RlZC5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgTWF2ZW5Nb2R1bGUodGhpcywgdGhpcy5wb20sIHsgLi4ub3B0aW9ucywgZGlyIH0pO1xuICAgIHRoaXMubWF2ZW5Nb2R1bGVzLnB1c2gobW9kdWxlKTtcbiAgICB0aGlzLnBvbS5wYWNrYWdpbmcgPSAncG9tJztcbiAgICB0aGlzLnBvbS5tYW5hZ2VQbHVnaW5WZXJzaW9ucyA9IHRydWU7XG4gICAgdGhpcy5wb20uYWRkTW9kdWxlKGRpcik7XG4gICAgdGhpcy5wb20uYWRkTWFuYWdlZERlcGVuZGVuY3koYCR7dGhpcy5ncm91cElkfS8ke29wdGlvbnMuYXJ0aWZhY3RJZH1AXFwke3Byb2plY3QudmVyc2lvbn1gKTtcbiAgICByZXR1cm4gbW9kdWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgYSBCT00gaW50byB0aGUgcm9vdCBgPGRlcGVuZGVuY3lNYW5hZ2VtZW50PmAgKGB0eXBlPXBvbWAsXG4gICAqIGBzY29wZT1pbXBvcnRgKS5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgYGdyb3VwSWQvYXJ0aWZhY3RJZEB2ZXJzaW9uYFxuICAgKi9cbiAgcHVibGljIGFkZEJvbShzcGVjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGRCb20oc3BlYyk7XG4gIH1cblxuICAvKipcbiAgICogUGlucyBhIHZlcnNpb24gaW4gdGhlIHJvb3QgYDxkZXBlbmRlbmN5TWFuYWdlbWVudD5gIHdpdGhvdXQgYWRkaW5nIHRoZVxuICAgKiBkZXBlbmRlbmN5LCBzbyBtb2R1bGVzIChvciB0aGUgcm9vdCkgY2FuIHVzZSBpdCB2ZXJzaW9ubGVzcy5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgYGdyb3VwSWQvYXJ0aWZhY3RJZEB2ZXJzaW9uYFxuICAgKi9cbiAgcHVibGljIGFkZE1hbmFnZWREZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucG9tLmFkZE1hbmFnZWREZXBlbmRlbmN5KHNwZWMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb21waWxlLXNjb3BlIGRlcGVuZGVuY3kgdG8gdGhlIHJvb3QgcG9tLiBJbiBhIG11bHRpLW1vZHVsZVxuICAgKiBwcm9qZWN0IGV2ZXJ5IG1vZHVsZSBpbmhlcml0cyBpdDsgdXNlIGBNYXZlbk1vZHVsZS5hZGREZXBlbmRlbmN5YCBmb3JcbiAgICogb25lIG1vZHVsZS5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgYGdyb3VwSWQvYXJ0aWZhY3RJZFtAdmVyc2lvbl1gIC0gZXhhY3QgdmVyc2lvbiwgb3Igbm9uZSB3aGVuXG4gICAqIGEgQk9NIG1hbmFnZXMgaXRcbiAgICovXG4gIHB1YmxpYyBhZGREZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucG9tLmFkZERlcGVuZGVuY3koc3BlYyk7XG4gIH1cblxuICAvKiogQWRkcyBhIHRlc3Qtc2NvcGUgZGVwZW5kZW5jeSB0byB0aGUgcm9vdCBwb20gKGluaGVyaXRlZCBieSBldmVyeSBtb2R1bGUpLiAqL1xuICBwdWJsaWMgYWRkVGVzdERlcGVuZGVuY3koc3BlYzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wb20uYWRkVGVzdERlcGVuZGVuY3koc3BlYyk7XG4gIH1cblxuICAvKiogQWRkcyBhIGJ1aWxkIHBsdWdpbiB0byB0aGUgcm9vdCBwb20gKGluaGVyaXRlZCBieSBldmVyeSBtb2R1bGUpLiAqL1xuICBwdWJsaWMgYWRkUGx1Z2luKHNwZWM6IHN0cmluZywgb3B0aW9uczogamF2YS5QbHVnaW5PcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGRQbHVnaW4oc3BlYywgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gICAgaWYgKHRoaXMuc2FtcGxlICYmIHRoaXMubWF2ZW5Nb2R1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5hZGRTYW1wbGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGV4YWN0IHZlcnNpb24gdGhpcyBwcm9qZWN0IHVzZXMgZm9yIGEgYGdyb3VwSWQvYXJ0aWZhY3RJZGAgaXQgcGluc1xuICAgKiBieSBkZWZhdWx0OiB0aGUgYHBsdWdpblZlcnNpb25zYCBvdmVycmlkZSBpZiBzZXQsIG90aGVyd2lzZSB0aGVcbiAgICogZGVmYXVsdCBmb3IgYGphdmFWZXJzaW9uYC5cbiAgICovXG4gIHB1YmxpYyBwaW5uZWRWZXJzaW9uKGNvb3JkaW5hdGVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmphdmFMaW5lLnZlcnNpb25zW2Nvb3JkaW5hdGVzXTtcbiAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gZGVmYXVsdCB2ZXJzaW9uIGZvciAke2Nvb3JkaW5hdGVzfS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5ld2VzdCBTcHJpbmcgQm9vdCBtYWpvciB2ZXJzaW9uIGBqYXZhVmVyc2lvbmAgc3VwcG9ydHMsIG9yXG4gICAqIHVuZGVmaW5lZCB3aGVuIHRoaXMgcGFja2FnZSBrbm93cyBvZiBubyBjYXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgbWF4U3ByaW5nQm9vdE1ham9yKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuamF2YUxpbmUubWF4U3ByaW5nQm9vdE1ham9yO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVCdWlsZChvcHRpb25zOiBKYXZhTWF2ZW5Qcm9qZWN0T3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMucG9tLmFkZFByb3BlcnR5KCdwcm9qZWN0LmJ1aWxkLnNvdXJjZUVuY29kaW5nJywgJ1VURi04Jyk7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuamF2YUxpbmUuY29tcGlsZXJQcm9wZXJ0aWVzKSkge1xuICAgICAgdGhpcy5wb20uYWRkUHJvcGVydHkobmFtZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEpVbml0J3MgdmVyc2lvbiBjb21lcyBmcm9tIGl0cyBCT00gKG9yIGZyb20gYSBmcmFtZXdvcmsgQk9NIHRoYXRcbiAgICAvLyBtYW5hZ2VzIGl0IC0gc2VlIEphdmFTcHJpbmdCb290UHJvamVjdCksIG5ldmVyIGZyb20gYSBkZXBlbmRlbmN5LlxuICAgIHRoaXMucG9tLmFkZEJvbShgJHtKVU5JVF9CT019QCR7dGhpcy5waW5uZWRWZXJzaW9uKEpVTklUX0JPTSl9YCk7XG4gICAgdGhpcy5wb20uYWRkVGVzdERlcGVuZGVuY3koJ29yZy5qdW5pdC5qdXBpdGVyL2p1bml0LWp1cGl0ZXInKTtcblxuICAgIHRoaXMuYWRkUGx1Z2luKGAke01BVkVOX0NPTVBJTEVSX1BMVUdJTn1AJHt0aGlzLnBpbm5lZFZlcnNpb24oTUFWRU5fQ09NUElMRVJfUExVR0lOKX1gKTtcbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9TVVJFRklSRV9QTFVHSU59QCR7dGhpcy5waW5uZWRWZXJzaW9uKE1BVkVOX1NVUkVGSVJFX1BMVUdJTil9YCk7XG4gICAgLy8gZmFpbHNhZmUgaGFzIG5vIGRlZmF1bHQgbGlmZWN5Y2xlIGJpbmRpbmc7IGJpbmQgaXQgc28gYCpJVGAgdGVzdHMgcnVuXG4gICAgLy8gaW4gYG12biB2ZXJpZnlgLlxuICAgIHRoaXMuYWRkUGx1Z2luKGAke01BVkVOX0ZBSUxTQUZFX1BMVUdJTn1AJHt0aGlzLnBpbm5lZFZlcnNpb24oTUFWRU5fRkFJTFNBRkVfUExVR0lOKX1gLCB7XG4gICAgICBleGVjdXRpb25zOiBbeyBpZDogJ2ludGVncmF0aW9uLXRlc3RzJywgZ29hbHM6IFsnaW50ZWdyYXRpb24tdGVzdCcsICd2ZXJpZnknXSB9XSxcbiAgICB9KTtcbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9KQVJfUExVR0lOfUAke3RoaXMucGlubmVkVmVyc2lvbihNQVZFTl9KQVJfUExVR0lOKX1gLCB7XG4gICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGFyY2hpdmU6IHtcbiAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgYWRkRGVmYXVsdEltcGxlbWVudGF0aW9uRW50cmllczogdHJ1ZSxcbiAgICAgICAgICAgIGFkZERlZmF1bHRTcGVjaWZpY2F0aW9uRW50cmllczogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLmVuZm9yY2VyID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IG1pbk1hdmVuID0gb3B0aW9ucy5taW5NYXZlblZlcnNpb24gPz8gREVGQVVMVF9NSU5fTUFWRU5fVkVSU0lPTjtcbiAgICAgIGFzc2VydEV4YWN0VmVyc2lvbihtaW5NYXZlbiwgJ21pbk1hdmVuVmVyc2lvbicpO1xuICAgICAgdGhpcy5hZGRQbHVnaW4oYCR7TUFWRU5fRU5GT1JDRVJfUExVR0lOfUAke3RoaXMucGlubmVkVmVyc2lvbihNQVZFTl9FTkZPUkNFUl9QTFVHSU4pfWAsIHtcbiAgICAgICAgZXhlY3V0aW9uczogW3sgaWQ6ICdlbmZvcmNlLXZlcnNpb25zJywgZ29hbHM6IFsnZW5mb3JjZSddIH1dLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgIHJlcXVpcmVNYXZlblZlcnNpb246IHsgdmVyc2lvbjogYFske21pbk1hdmVufSwpYCB9LFxuICAgICAgICAgICAgcmVxdWlyZUphdmFWZXJzaW9uOiB7IHZlcnNpb246IHRoaXMuamF2YUxpbmUuZW5mb3JjZXJKYXZhUmFuZ2UgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRTYW1wbGUoKTogdm9pZCB7XG4gICAgY29uc3QgcGtnID0gdGhpcy5ncm91cElkLnJlcGxhY2UoL1teQS1aYS16MC05Xy5dL2csICdfJyk7XG4gICAgY29uc3QgcGF0aCA9IHBrZy5zcGxpdCgnLicpO1xuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgcG9zaXguam9pbignc3JjL21haW4vamF2YScsIC4uLnBhdGgpLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICAnTWFpbi5qYXZhJzogW1xuICAgICAgICAgIGBwYWNrYWdlICR7cGtnfTtgLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdwdWJsaWMgY2xhc3MgTWFpbiB7JyxcbiAgICAgICAgICAnICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsnLFxuICAgICAgICAgICcgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihcIkhlbGxvLCB3b3JsZCFcIik7JyxcbiAgICAgICAgICAnICAgIH0nLFxuICAgICAgICAgICd9JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgbmV3IFNhbXBsZURpcih0aGlzLCBwb3NpeC5qb2luKCdzcmMvdGVzdC9qYXZhJywgLi4ucGF0aCksIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgICdNYWluVGVzdC5qYXZhJzogW1xuICAgICAgICAgIGBwYWNrYWdlICR7cGtnfTtgLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdpbXBvcnQgb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLlRlc3Q7JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnY2xhc3MgTWFpblRlc3QgeycsXG4gICAgICAgICAgJyAgICBAVGVzdCcsXG4gICAgICAgICAgJyAgICB2b2lkIHJ1bnMoKSB7JyxcbiAgICAgICAgICAnICAgICAgICBNYWluLm1haW4obmV3IFN0cmluZ1swXSk7JyxcbiAgICAgICAgICAnICAgIH0nLFxuICAgICAgICAgICd9JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBgcHJvamVuIG5ldyAuLi4gLS1qYXZhLXZlcnNpb24gMjFgIChvciBgMS44YCwgb3IgYC0tbWluLW1hdmVuLXZlcnNpb24gMy45YClcbiAqIHJlYWNoZXMgdGhlIG9wdGlvbnMgYXMgYSAqbnVtYmVyKjogeWFyZ3MgcGFyc2VzIG51bWVyaWMtbG9va2luZyBmbGFncywgYW5kXG4gKiBwcm9qZW4gcGFzc2VzIHN0cmluZy10eXBlZCBvcHRpb25zIHRocm91Z2ggdW5jaGFuZ2VkLiBUaGUgaW5pdGlhbFxuICogYC5wcm9qZW5yYy50c2AgaXMgcmVuZGVyZWQgZnJvbSB0aGUgc2FtZSBhcmdzLCBzbyBpdCB3b3VsZCByZWFkXG4gKiBgamF2YVZlcnNpb246IDIxYCBhbmQgZmFpbCB0byB0eXBlLWNoZWNrLiBObyBKYXZhIG9wdGlvbiBpcyBudW1iZXItdHlwZWQsXG4gKiBzbyBldmVyeSBudW1lcmljIGFyZyBpcyB0dXJuZWQgYmFjayBpbnRvIHRoZSBzdHJpbmcgdGhlIHVzZXIgdHlwZWQuIFRoaXNcbiAqIHJ1bnMgYmVmb3JlIHRoZSBQcm9qZWN0IGNvbnN0cnVjdG9yLCB3aGljaCBpcyB3aGVyZSBwcm9qZW4gY2FwdHVyZXMgdGhlXG4gKiBhcmdzIGl0IHJlbmRlcnMuIE9wdGlvbnMgZnJvbSBhIGhhbmQtd3JpdHRlbiBwcm9qZW5yYyBhcmUgbmV2ZXIgbnVtYmVyc1xuICogKHRoZXkgdHlwZS1jaGVjayBhcyBzdHJpbmdzKSBhbmQgYXJlIGxlZnQgYWxvbmUuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeVByb2plbk5ld0FyZ3M8VCBleHRlbmRzIG9iamVjdD4ob3B0aW9uczogVCk6IFQge1xuICBjb25zdCBtYXJrZXIgPSAob3B0aW9ucyBhcyBhbnkpLl9fbmV3X187XG4gIGlmICghbWFya2VyPy5hcmdzKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cbiAgZm9yIChjb25zdCB0YXJnZXQgb2YgW29wdGlvbnMgYXMgYW55LCBtYXJrZXIuYXJnc10pIHtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGFyZ2V0KSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdGFyZ2V0W25hbWVdID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1vZHVsZURpcihkaXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHVuaXggPSBkaXIucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICBpZiAodW5peC5zdGFydHNXaXRoKCcvJykgfHwgL15bQS1aYS16XTovLnRlc3QodW5peCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBkaXIgXCIke2Rpcn1cIiBtdXN0IGJlIHJlbGF0aXZlIHRvIHRoZSByZXBvIHJvb3QuYCk7XG4gIH1cbiAgY29uc3Qgbm9ybWFsaXplZCA9IHBvc2l4Lm5vcm1hbGl6ZSh1bml4KS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgaWYgKG5vcm1hbGl6ZWQgPT09ICcuJyB8fCBub3JtYWxpemVkID09PSAnJyB8fCBub3JtYWxpemVkLnNwbGl0KCcvJykuaW5jbHVkZXMoJy4uJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBkaXIgXCIke2Rpcn1cIiBtdXN0IGJlIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSByZXBvIHJvb3QuYCk7XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG4iXX0=
|
|
@@ -17,7 +17,7 @@ const java_spring_boot_project_1 = require("./java-spring-boot-project");
|
|
|
17
17
|
* repo use `JavaSpringBootProject`.
|
|
18
18
|
*/
|
|
19
19
|
class JavaServiceProject extends java_spring_boot_project_1.JavaSpringBootProject {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaServiceProject", version: "0.0.
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaServiceProject", version: "0.0.28" };
|
|
21
21
|
constructor(options) {
|
|
22
22
|
super(options);
|
|
23
23
|
this.addDependency('org.springframework.boot/spring-boot-starter-web');
|
|
@@ -22,7 +22,7 @@ const REPACKAGE = { executions: [{ id: 'repackage', goals: ['repackage'] }] };
|
|
|
22
22
|
* and a CDK deploy hook.
|
|
23
23
|
*/
|
|
24
24
|
class JavaSpringBootProject extends java_maven_base_1.JavaMavenProject {
|
|
25
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaSpringBootProject", version: "0.0.
|
|
25
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaSpringBootProject", version: "0.0.28" };
|
|
26
26
|
/** The Spring Boot version (BOM and Maven plugin). */
|
|
27
27
|
springBootVersion;
|
|
28
28
|
constructor(options) {
|
|
@@ -16,7 +16,7 @@ const maven_pom_1 = require("./maven-pom");
|
|
|
16
16
|
* an artifact gets the same version.
|
|
17
17
|
*/
|
|
18
18
|
class MavenModule extends projen_1.Component {
|
|
19
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenModule", version: "0.0.
|
|
19
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenModule", version: "0.0.28" };
|
|
20
20
|
/** Module directory, relative to the repo root. */
|
|
21
21
|
dir;
|
|
22
22
|
artifactId;
|
|
@@ -58,7 +58,7 @@ function key(c) {
|
|
|
58
58
|
* `executions` and `dependencies` appended.
|
|
59
59
|
*/
|
|
60
60
|
class MavenPom extends projen_1.Component {
|
|
61
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenPom", version: "0.0.
|
|
61
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenPom", version: "0.0.28" };
|
|
62
62
|
/** Path of the pom, relative to the project root. */
|
|
63
63
|
filePath;
|
|
64
64
|
groupId;
|
package/lib/java/options.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { CommonCodeOptions } from '../common/code-options';
|
|
1
2
|
import { EnvironmentOptions } from '../common/environment-options';
|
|
2
3
|
import { SonarScanOptions } from '../common/sonar-options';
|
|
3
|
-
export interface CommonJavaOptions extends SonarScanOptions {
|
|
4
|
+
export interface CommonJavaOptions extends SonarScanOptions, CommonCodeOptions {
|
|
4
5
|
readonly name: string;
|
|
5
6
|
readonly groupId: string;
|
|
6
7
|
readonly artifactId: string;
|
|
@@ -124,8 +125,6 @@ export interface JavaSpringBootProjectOptions extends CommonJavaOptions {
|
|
|
124
125
|
export interface JavaLibraryProjectOptions extends CommonJavaOptions {
|
|
125
126
|
/** Use Maven Central's OIDC trusted-publishing flow instead of secret-based GPG signing. */
|
|
126
127
|
readonly mavenCentralOidc?: boolean;
|
|
127
|
-
/** @default true */
|
|
128
|
-
readonly publishCodeIndex?: boolean;
|
|
129
128
|
}
|
|
130
129
|
export interface CdkDeployHookOptions {
|
|
131
130
|
/**
|
package/lib/java/options.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbkNvZGVPcHRpb25zIH0gZnJvbSAnLi4vY29tbW9uL2NvZGUtb3B0aW9ucyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudE9wdGlvbnMgfSBmcm9tICcuLi9jb21tb24vZW52aXJvbm1lbnQtb3B0aW9ucyc7XG5pbXBvcnQgeyBTb25hclNjYW5PcHRpb25zIH0gZnJvbSAnLi4vY29tbW9uL3NvbmFyLW9wdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbkphdmFPcHRpb25zIGV4dGVuZHMgU29uYXJTY2FuT3B0aW9ucywgQ29tbW9uQ29kZU9wdGlvbnMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGdyb3VwSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgYXJ0aWZhY3RJZDogc3RyaW5nO1xuXG4gIC8qKiBAZGVmYXVsdCBcIjAuMS4wXCIgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKiogUHJvamVjdCBkZXNjcmlwdGlvbiwgd3JpdHRlbiB0byB0aGUgcm9vdCBwb20uIEBkZWZhdWx0IC0gbm9uZSAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKiogUHJvamVjdCBVUkwsIHdyaXR0ZW4gdG8gdGhlIHJvb3QgcG9tLiBAZGVmYXVsdCAtIG5vbmUgKi9cbiAgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xuXG4gIC8qKiBAZGVmYXVsdCBcIlBST0pFTl9HSVRIVUJfVE9LRU5cIiAqL1xuICByZWFkb25seSBnaGVUb2tlblNlY3JldD86IHN0cmluZztcblxuICAvKipcbiAgICogSmF2YSBsaW5lIHRoZSBidWlsZCB0YXJnZXRzOiBgMS44YCAoYWxpYXMgYDhgKSwgYDE3YCwgYDIxYCwgb3IgYDI1YC5cbiAgICpcbiAgICogRHJpdmVzIGV2ZXJ5IEphdmEtZGVwZW5kZW50IHBhcnQgb2YgdGhlIGdlbmVyYXRlZCBidWlsZDogdGhlIGNvbXBpbGVyXG4gICAqIGxldmVsIChgbWF2ZW4uY29tcGlsZXIucmVsZWFzZWAsIG9yIGBzb3VyY2VgL2B0YXJnZXRgIGZvciAxLjgsIHdoaWNoIGhhc1xuICAgKiBubyBgLS1yZWxlYXNlYCksIHRoZSBlbmZvcmNlcidzIGByZXF1aXJlSmF2YVZlcnNpb25gIHJ1bGUsIHRoZSBKVW5pdCBsaW5lLFxuICAgKiB0aGUgZGVmYXVsdCBTcHJpbmcgQm9vdCBsaW5lLCBhbmQgdGhlIEpESyBDSSBpbnN0YWxscy4gQW55IG90aGVyIHZhbHVlXG4gICAqIGZhaWxzIGF0IHN5bnRoIGFuZCBsaXN0cyB0aGUgc3VwcG9ydGVkIGxpbmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIjIxXCJcbiAgICovXG4gIHJlYWRvbmx5IGphdmFWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBgYWN0aW9ucy9zZXR1cC1qYXZhYCBkaXN0cmlidXRpb24gQ0kgaW5zdGFsbHMgdGhlIEpESyBmcm9tLlxuICAgKiBAZGVmYXVsdCBcInRlbXVyaW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgamF2YURpc3RyaWJ1dGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogTWF2ZW4gcGFja2FnaW5nIG9mIHRoZSByb290IHBvbSB3aGlsZSB0aGUgcHJvamVjdCBoYXMgbm8gbW9kdWxlcy4gT25jZVxuICAgKiBgYWRkTW9kdWxlKClgIGlzIGNhbGxlZCB0aGUgcm9vdCBwb20gaXMgYWx3YXlzIGBwb21gLXBhY2thZ2VkIChhbmRcbiAgICogc2V0dGluZyBhbnl0aGluZyBvdGhlciB0aGFuIGBwb21gIGhlcmUgaXMgYSBzeW50aCBlcnJvcikuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiamFyXCJcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZz86IHN0cmluZztcblxuICAvKipcbiAgICogV3JpdGUgYSBzdGFydGVyIGBNYWluYCBjbGFzcyBhbmQgdGVzdCB1bmRlciB0aGUgYGdyb3VwSWRgIHBhY2thZ2UsIGlmXG4gICAqIGBzcmMvYCBkb2VzIG5vdCBleGlzdCB5ZXQuIE5ldmVyIHdyaXR0ZW4gZm9yIGEgbXVsdGktbW9kdWxlIHByb2plY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzYW1wbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgYG1hdmVuLWVuZm9yY2VyLXBsdWdpbmAsIHdoaWNoIGZhaWxzIHRoZSBidWlsZCB1cCBmcm9udCB3aGVuIHRoZSBKREtcbiAgICogb3IgTWF2ZW4gcnVubmluZyBpdCBpcyBvbGRlciB0aGFuIHRoZSBwcm9qZWN0IG5lZWRzIChyYXRoZXIgdGhhbiBsYXRlcixcbiAgICogd2l0aCBjb25mdXNpbmcgY29tcGlsZXIgZXJyb3JzKS4gSXRzIEphdmEgcnVsZSBhbHdheXMgZm9sbG93c1xuICAgKiBgamF2YVZlcnNpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmZvcmNlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExvd2VzdCBNYXZlbiB2ZXJzaW9uIHRoZSBlbmZvcmNlciBhY2NlcHRzIChgcmVxdWlyZU1hdmVuVmVyc2lvblxuICAgKiBbPHRoaXM+LClgKS4gSWdub3JlZCB3aGVuIGBlbmZvcmNlcmAgaXMgZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiMy45XCJcbiAgICovXG4gIHJlYWRvbmx5IG1pbk1hdmVuVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIGZvciB0aGUgcGx1Z2luL0JPTSB2ZXJzaW9ucyB0aGlzIHBhY2thZ2UgcGlucyBieSBkZWZhdWx0LFxuICAgKiBrZXllZCBieSBgZ3JvdXBJZC9hcnRpZmFjdElkYCwgZS5nLlxuICAgKiBgeyAnb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLXN1cmVmaXJlLXBsdWdpbic6ICczLjUuNicgfWAuIFZhbHVlc1xuICAgKiBtdXN0IGJlIGV4YWN0IHZlcnNpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBkZWZhdWx0cyBmb3IgYGphdmFWZXJzaW9uYFxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luVmVyc2lvbnM/OiB7IFtjb29yZGluYXRlczogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFdyaXRlIGEgYExJQ0VOU0VgIGZpbGUuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU1BEWCBpZGVudGlmaWVyIGZvciB0aGUgZ2VuZXJhdGVkIGBMSUNFTlNFYC5cbiAgICogQGRlZmF1bHQgXCJNSVRcIlxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ29weXJpZ2h0IG93bmVyIG5hbWVkIGluIHRoZSBgTElDRU5TRWAuXG4gICAqIEBkZWZhdWx0IFwiWHBlcnQgU29mdHdhcmVcIlxuICAgKi9cbiAgcmVhZG9ubHkgY29weXJpZ2h0T3duZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvcHlyaWdodCBwZXJpb2QgbmFtZWQgaW4gdGhlIGBMSUNFTlNFYC5cbiAgICogQGRlZmF1bHQgLSB0aGUgY3VycmVudCB5ZWFyXG4gICAqL1xuICByZWFkb25seSBjb3B5cmlnaHRQZXJpb2Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdyaXRlIGEgcHJvamVuLW1hbmFnZWQgYC5lZGl0b3Jjb25maWdgLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlZGl0b3Jjb25maWc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgbmlnaHRseSBgdXBncmFkZS55bWxgIHdvcmtmbG93LCB3aGljaCByZXBvcnRzIGF2YWlsYWJsZVxuICAgKiBkZXBlbmRlbmN5IGFuZCBwbHVnaW4gdXBkYXRlcyBpbiB0aGUgam9iIHN1bW1hcnkgKGl0IG5ldmVyIGVkaXRzIGZpbGVzIC1cbiAgICogdmVyc2lvbnMgYXJlIGNoYW5nZWQgaW4gYC5wcm9qZW5yYy50c2ApLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB1cGdyYWRlV29ya2Zsb3c/OiBib29sZWFuO1xufVxuXG4vKiogT3B0aW9ucyBmb3IgYEphdmFNYXZlblByb2plY3RgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBKYXZhTWF2ZW5Qcm9qZWN0T3B0aW9ucyBleHRlbmRzIENvbW1vbkphdmFPcHRpb25zIHt9XG5cbi8qKiBPcHRpb25zIGZvciBgSmF2YVNwcmluZ0Jvb3RQcm9qZWN0YC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSmF2YVNwcmluZ0Jvb3RQcm9qZWN0T3B0aW9ucyBleHRlbmRzIENvbW1vbkphdmFPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwcmluZyBCb290IHZlcnNpb246IGltcG9ydHMgYHNwcmluZy1ib290LWRlcGVuZGVuY2llc2AgYXMgdGhlIGZpcnN0XG4gICAqIEJPTSwgYW5kIHZlcnNpb25zIGBzcHJpbmctYm9vdC1tYXZlbi1wbHVnaW5gLiBNdXN0IGJlIGFuIGV4YWN0IHZlcnNpb24uXG4gICAqIFNwcmluZyBCb290IDMgYW5kIGxhdGVyIG5lZWQgSmF2YSAxNyssIHNvIHdpdGggYGphdmFWZXJzaW9uOiAnMS44J2Agb25seVxuICAgKiBhIDIueCB2ZXJzaW9uIGlzIGFjY2VwdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBuZXdlc3QgcmVsZWFzZSBvZiB0aGUgbGluZSBzdXBwb3J0aW5nIGBqYXZhVmVyc2lvbmBcbiAgICogKDIuNy54IGZvciAxLjgsIG90aGVyd2lzZSB0aGUgY3VycmVudCBtYWpvcilcbiAgICovXG4gIHJlYWRvbmx5IHNwcmluZ0Jvb3RWZXJzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEphdmFMaWJyYXJ5UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBDb21tb25KYXZhT3B0aW9ucyB7XG4gIC8qKiBVc2UgTWF2ZW4gQ2VudHJhbCdzIE9JREMgdHJ1c3RlZC1wdWJsaXNoaW5nIGZsb3cgaW5zdGVhZCBvZiBzZWNyZXQtYmFzZWQgR1BHIHNpZ25pbmcuICovXG4gIHJlYWRvbmx5IG1hdmVuQ2VudHJhbE9pZGM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0RlcGxveUhvb2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21wYW5pb24gQ0RLIGluZnJhL2FwcCByZXBvIChvd25lci9yZXBvKSB0aGF0IG93bnMgdGhlIGFjdHVhbFxuICAgKiBpbmZyYXN0cnVjdHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgd29ya2Zsb3cgaXMgc3RpbGwgZ2VuZXJhdGVkLCBidXQgaXRzIG9ubHkgc3RlcCBmYWlscyB3aXRoXG4gICAqIGluc3RydWN0aW9ucyAoc2VlIGBDZGtEZXBsb3lIb29rYClcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFJlcG8/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSmF2YVNlcnZpY2VQcm9qZWN0T3B0aW9ucyBleHRlbmRzIEphdmFTcHJpbmdCb290UHJvamVjdE9wdGlvbnMge1xuICAvKiogQGRlZmF1bHQgXCJkb2NrZXIuaW9cIiAqL1xuICByZWFkb25seSBkb2NrZXJSZWdpc3RyeT86IHN0cmluZztcblxuICAvKiogQGRlZmF1bHQgdHJ1ZSAqL1xuICByZWFkb25seSB1c2VGbHl3YXk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcGFuaW9uIENESyBpbmZyYS9hcHAgcmVwbyAoYG93bmVyL3JlcG9gKSB3aG9zZSBgZGVwbG95LnltbGAgdGhlXG4gICAqIGBkZXBsb3ktY2RrYCB3b3JrZmxvdyBkaXNwYXRjaGVzLlxuICAgKlxuICAgKiBBIHBsYWluIHN0cmluZyByYXRoZXIgdGhhbiBhIG5lc3RlZCBzdHJ1Y3Qgc28gdGhhdFxuICAgKiBgcHJvamVuIG5ldyAtLWZyb20gQHhwZXJ0c3MvcHJvamVuLXR5cGVzIGphdmFfc2VydmljZWAgY2FuIHBhc3MgaXRcbiAgICogKGAtLWNkay1kZXBsb3ktdGFyZ2V0LXJlcG8gb3duZXIvcmVwb2ApOiBwcm9qZW4ncyBDTEkgY2FuIG9ubHkgcmVuZGVyXG4gICAqIG9wdGlvbnMgd2hvc2UgdHlwZSBpcyBhIHN0cmluZy9udW1iZXIvYm9vbGVhbi9hcnJheS9lbnVtLCBzbyBhXG4gICAqIHN0cnVjdC10eXBlZCBvcHRpb24gaXMgaW52aXNpYmxlIHRvIGl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGBkZXBsb3ktY2RrLnltbGAgaXMgZ2VuZXJhdGVkIHdpdGggYSBzaW5nbGUgZmFpbGluZyBzdGVwIHRoYXRcbiAgICogdGVsbHMgeW91IHRvIHNldCB0aGlzXG4gICAqL1xuICByZWFkb25seSBjZGtEZXBsb3lUYXJnZXRSZXBvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGdlbmVyYXRlIHRoZSBgZGVwbG95LWNka2Agd29ya2Zsb3cgYXQgYWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjZGtEZXBsb3lIb29rPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVwbG95IHRhcmdldHMgdG8gb2ZmZXIgb24gdGhlIGBDZGtEZXBsb3lIb29rYCdzIG1hbnVhbC1kaXNwYXRjaFxuICAgKiB3b3JrZmxvdywgd2hlbiB0aGUgaG9vayBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXCJwcm9kXCJdXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudHM/OiAoc3RyaW5nIHwgRW52aXJvbm1lbnRPcHRpb25zKVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEphdmFBcHBQcm9qZWN0T3B0aW9ucyBleHRlbmRzIENvbW1vbkphdmFPcHRpb25zIHtcbiAgLyoqIEBkZWZhdWx0IFwiaHR0cHM6Ly9tYXZlbi5wa2cuZ2l0aHViLmNvbS9PV05FUi9SRVBPXCIgKGRlcml2ZWQgZnJvbSB0aGUgcmVwb3NpdG9yeSBVUkwpICovXG4gIHJlYWRvbmx5IGdoUGFja2FnZXNSZWdpc3RyeT86IHN0cmluZztcbn1cblxuLyoqIE9wdGlvbnMgZm9yIGBKYXZhTWF2ZW5Qcm9qZWN0LmFkZE1vZHVsZSgpYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF2ZW5Nb2R1bGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIE1vZHVsZSBkaXJlY3RvcnksIHJlbGF0aXZlIHRvIHRoZSByZXBvIHJvb3QgKG1heSBiZSBuZXN0ZWQsIGUuZy5cbiAgICogYHRvb2xzL3N0dWItbW9kZWxgKS4gSXRzIGBwb20ueG1sYCBpcyBnZW5lcmF0ZWQgdGhlcmUuXG4gICAqL1xuICByZWFkb25seSBkaXI6IHN0cmluZztcblxuICByZWFkb25seSBhcnRpZmFjdElkOiBzdHJpbmc7XG5cbiAgLyoqIEBkZWZhdWx0IC0gdGhlIGFydGlmYWN0SWQgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKiogQGRlZmF1bHQgLSBub25lICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKiBAZGVmYXVsdCBcImphclwiICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZz86IHN0cmluZztcbn1cbiJdfQ==
|