projen 0.31.18 → 0.32.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.
Files changed (143) hide show
  1. package/.jsii +2150 -444
  2. package/API.md +735 -78
  3. package/README.md +1 -0
  4. package/docs/aws-lambda.md +103 -0
  5. package/docs/programmatic-api.md +56 -0
  6. package/lib/awscdk/auto-discover.d.ts +46 -0
  7. package/lib/awscdk/auto-discover.js +46 -0
  8. package/lib/awscdk/cdk-config.d.ts +103 -0
  9. package/lib/awscdk/cdk-config.js +56 -0
  10. package/lib/awscdk/cdk-tasks.d.ts +38 -0
  11. package/lib/awscdk/cdk-tasks.js +39 -0
  12. package/lib/awscdk/index.d.ts +5 -0
  13. package/lib/awscdk/index.js +18 -0
  14. package/lib/awscdk/internal.d.ts +8 -0
  15. package/lib/awscdk/internal.js +26 -0
  16. package/lib/awscdk/java-app.d.ts +92 -0
  17. package/lib/awscdk/java-app.js +90 -0
  18. package/lib/awscdk/lambda-function.d.ts +146 -0
  19. package/lib/awscdk/lambda-function.js +160 -0
  20. package/lib/awscdk-app-ts.d.ts +22 -40
  21. package/lib/awscdk-app-ts.js +21 -46
  22. package/lib/awscdk-construct.d.ts +15 -58
  23. package/lib/awscdk-construct.js +13 -62
  24. package/lib/cdk8s-app-ts.js +1 -1
  25. package/lib/cdk8s-construct.js +1 -1
  26. package/lib/cdktf-construct.js +1 -1
  27. package/lib/cli/cmds/new.js +23 -65
  28. package/lib/cli/util.d.ts +19 -0
  29. package/lib/cli/util.js +52 -0
  30. package/lib/common.js +6 -2
  31. package/lib/component.js +1 -1
  32. package/lib/construct-lib.js +1 -1
  33. package/lib/deps/dependencies.js +1 -1
  34. package/lib/dev-env.js +1 -1
  35. package/lib/docker-compose.js +2 -2
  36. package/lib/eslint.d.ts +18 -0
  37. package/lib/eslint.js +17 -5
  38. package/lib/file.js +1 -1
  39. package/lib/git/gitattributes.js +1 -1
  40. package/lib/github/auto-approve.js +1 -1
  41. package/lib/github/auto-merge.js +1 -1
  42. package/lib/github/dependabot.js +1 -1
  43. package/lib/github/github.js +1 -1
  44. package/lib/github/mergify.js +1 -1
  45. package/lib/github/pr-template.js +1 -1
  46. package/lib/github/stale.js +1 -1
  47. package/lib/github/task-workflow.js +1 -1
  48. package/lib/github/workflows.js +4 -5
  49. package/lib/gitpod.js +1 -1
  50. package/lib/ignore-file.js +1 -1
  51. package/lib/index.d.ts +2 -0
  52. package/lib/index.js +3 -1
  53. package/lib/ini.js +1 -1
  54. package/lib/inventory.d.ts +15 -3
  55. package/lib/inventory.js +53 -29
  56. package/lib/java/java-project.d.ts +28 -14
  57. package/lib/java/java-project.js +3 -2
  58. package/lib/java/junit.js +1 -1
  59. package/lib/java/maven-compile.js +1 -1
  60. package/lib/java/maven-packaging.js +1 -1
  61. package/lib/java/maven-sample.js +1 -1
  62. package/lib/java/pom.js +1 -1
  63. package/lib/java/projenrc.js +1 -1
  64. package/lib/javascript/bundler.d.ts +144 -0
  65. package/lib/javascript/bundler.js +93 -0
  66. package/lib/javascript/index.d.ts +1 -0
  67. package/lib/javascript/index.js +2 -1
  68. package/lib/javascript/npm-config.js +1 -1
  69. package/lib/javascript/projenrc.js +3 -3
  70. package/lib/javascript/render-options.d.ts +5 -0
  71. package/lib/javascript/render-options.js +24 -21
  72. package/lib/jest.js +1 -1
  73. package/lib/jsii-project.js +1 -1
  74. package/lib/json/projenrc.js +1 -1
  75. package/lib/json/run-projenrc.task.js +6 -11
  76. package/lib/json.js +1 -1
  77. package/lib/license.js +1 -1
  78. package/lib/logger.js +1 -1
  79. package/lib/makefile.js +1 -1
  80. package/lib/node-package.js +1 -1
  81. package/lib/node-project.d.ts +11 -1
  82. package/lib/node-project.js +9 -4
  83. package/lib/object-file.js +1 -1
  84. package/lib/project.js +2 -2
  85. package/lib/projects.d.ts +80 -0
  86. package/lib/projects.js +81 -0
  87. package/lib/python/pip.js +1 -1
  88. package/lib/python/poetry.js +2 -2
  89. package/lib/python/projenrc.js +4 -5
  90. package/lib/python/pytest.js +1 -1
  91. package/lib/python/python-project.js +1 -1
  92. package/lib/python/python-sample.js +1 -1
  93. package/lib/python/requirements-file.js +1 -1
  94. package/lib/python/setuppy.js +1 -1
  95. package/lib/python/setuptools.js +1 -1
  96. package/lib/python/venv.js +1 -1
  97. package/lib/readme.js +1 -1
  98. package/lib/release/publisher.js +1 -1
  99. package/lib/release/release-trigger.js +1 -1
  100. package/lib/release/release.js +1 -1
  101. package/lib/sample-file.js +2 -2
  102. package/lib/semver.js +1 -1
  103. package/lib/source-code.js +1 -1
  104. package/lib/tasks/runtime.js +1 -1
  105. package/lib/tasks/task.js +1 -1
  106. package/lib/tasks/tasks.js +1 -1
  107. package/lib/textfile.js +1 -1
  108. package/lib/toml.js +1 -1
  109. package/lib/typescript/projenrc.js +3 -3
  110. package/lib/typescript-config.js +1 -1
  111. package/lib/typescript.js +3 -3
  112. package/lib/upgrade-dependencies.js +2 -2
  113. package/lib/util/synth.d.ts +4 -0
  114. package/lib/util/synth.js +35 -2
  115. package/lib/util.js +11 -3
  116. package/lib/version.js +1 -1
  117. package/lib/vscode/devcontainer.js +1 -1
  118. package/lib/vscode/launch-config.js +1 -1
  119. package/lib/vscode/vscode.js +1 -1
  120. package/lib/web/next.js +3 -3
  121. package/lib/web/postcss.js +1 -1
  122. package/lib/web/react.js +4 -4
  123. package/lib/web/tailwind.js +1 -1
  124. package/lib/xmlfile.js +1 -1
  125. package/lib/yaml.js +1 -1
  126. package/node_modules/case/LICENSE +22 -0
  127. package/node_modules/case/README.md +139 -0
  128. package/node_modules/case/case.d.ts +43 -0
  129. package/node_modules/case/dist/Case.js +171 -0
  130. package/node_modules/case/dist/Case.min.js +5 -0
  131. package/node_modules/case/dist/Case.min.js.map +1 -0
  132. package/node_modules/case/dist/Case.plus.js +189 -0
  133. package/node_modules/case/dist/Case.plus.min.js +5 -0
  134. package/node_modules/case/dist/Case.plus.min.js.map +1 -0
  135. package/node_modules/case/package.json +58 -0
  136. package/package.json +4 -4
  137. package/lib/cli/create.d.ts +0 -41
  138. package/lib/cli/create.js +0 -48
  139. package/node_modules/decamelize/index.d.ts +0 -20
  140. package/node_modules/decamelize/index.js +0 -12
  141. package/node_modules/decamelize/license +0 -9
  142. package/node_modules/decamelize/package.json +0 -40
  143. package/node_modules/decamelize/readme.md +0 -51
@@ -3,8 +3,12 @@ export interface ProjectOption {
3
3
  name: string;
4
4
  fqn?: string;
5
5
  switch: string;
6
- type: string;
7
- kind?: string;
6
+ /** Simple type name, e.g. "string", "boolean", "number", "EslintOptions", "MyEnum". Collections are "unknown" */
7
+ simpleType: string;
8
+ /** Full JSII type, e.g. { primitive: "string" } or { collection: { elementtype: { primitive: 'string' }, kind: 'map' } } */
9
+ fullType: JsiiPropertyType;
10
+ kind?: 'class' | 'enum' | 'interface';
11
+ jsonLike?: boolean;
8
12
  parent: string;
9
13
  docs?: string;
10
14
  default?: string;
@@ -21,6 +25,14 @@ export interface ProjectType {
21
25
  docs?: string;
22
26
  docsurl: string;
23
27
  }
28
+ export interface JsiiPropertyType {
29
+ primitive?: string;
30
+ fqn?: string;
31
+ collection?: {
32
+ elementtype: JsiiPropertyType;
33
+ kind: string;
34
+ };
35
+ }
24
36
  /**
25
37
  * Returns a list of project types exported the modules defined in `moduleDirs`.
26
38
  * This list will always also include the built-in projen project types.
@@ -29,5 +41,5 @@ export interface ProjectType {
29
41
  * @param moduleDirs A list of npm module directories
30
42
  */
31
43
  export declare function discover(...moduleDirs: string[]): ProjectType[];
32
- export declare function resolveProjectType(projectFqn: string): ProjectType | undefined;
44
+ export declare function resolveProjectType(projectFqn: string): ProjectType;
33
45
  export declare function readJsiiManifest(jsiiFqn: string): any;
package/lib/inventory.js CHANGED
@@ -2,9 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.readJsiiManifest = exports.resolveProjectType = exports.discover = void 0;
4
4
  const path = require("path");
5
+ const case_1 = require("case");
5
6
  const fs = require("fs-extra");
6
- // eslint-disable-next-line @typescript-eslint/no-require-imports
7
- const decamelize = require('decamelize');
8
7
  const PROJEN_MODULE_ROOT = path.join(__dirname, '..');
9
8
  const PROJECT_BASE_FQN = 'projen.Project';
10
9
  /**
@@ -18,11 +17,10 @@ function discover(...moduleDirs) {
18
17
  const jsii = discoverJsiiTypes(...moduleDirs);
19
18
  const result = new Array();
20
19
  for (const fqn of Object.keys(jsii)) {
21
- const p = toProjectType(jsii, fqn);
22
- if (!p) {
23
- continue;
20
+ if (isProjectType(jsii, fqn)) {
21
+ const p = toProjectType(jsii, fqn);
22
+ result.push(p);
24
23
  }
25
- result.push(p);
26
24
  }
27
25
  return result.sort((r1, r2) => r1.pjid.localeCompare(r2.pjid));
28
26
  }
@@ -99,13 +97,13 @@ exports.resolveProjectType = resolveProjectType;
99
97
  function toProjectType(jsii, fqn) {
100
98
  var _a, _b, _c, _d;
101
99
  if (!isProjectType(jsii, fqn)) {
102
- return undefined;
100
+ throw new Error(`Fully qualified name "${fqn}" is not a valid project type.`);
103
101
  }
104
102
  const typeinfo = jsii[fqn];
105
103
  // projen.web.ReactProject -> web.ReactProject
106
104
  const typename = fqn.substring(fqn.indexOf('.') + 1);
107
105
  const docsurl = `https://github.com/projen/projen/blob/main/API.md#projen-${typename.toLocaleLowerCase().replace(/\./g, '-')}`;
108
- let pjid = (_c = (_b = (_a = typeinfo.docs) === null || _a === void 0 ? void 0 : _a.custom) === null || _b === void 0 ? void 0 : _b.pjid) !== null && _c !== void 0 ? _c : decamelize(typename).replace(/_project$/, '');
106
+ let pjid = (_c = (_b = (_a = typeinfo.docs) === null || _a === void 0 ? void 0 : _a.custom) === null || _b === void 0 ? void 0 : _b.pjid) !== null && _c !== void 0 ? _c : case_1.snake(typename).replace(/_project$/, '');
109
107
  return {
110
108
  moduleName: typeinfo.assembly,
111
109
  typename,
@@ -138,7 +136,7 @@ function discoverOptions(jsii, fqn) {
138
136
  const opts = Object.values(options);
139
137
  return opts.sort((a, b) => a.switch.localeCompare(b.switch));
140
138
  function addOptions(ofqn, basePath = [], optional = false) {
141
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
139
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
142
140
  if (!ofqn) {
143
141
  return;
144
142
  }
@@ -152,50 +150,73 @@ function discoverOptions(jsii, fqn) {
152
150
  if (prop.name in options) {
153
151
  throw new Error(`duplicate option "${prop.name}" in ${fqn} (already declared in ${options[prop.name].parent})`);
154
152
  }
155
- let typeName;
156
153
  let jsiiKind;
157
- if ((_b = prop.type) === null || _b === void 0 ? void 0 : _b.primitive) {
158
- typeName = (_c = prop.type) === null || _c === void 0 ? void 0 : _c.primitive; // e.g. 'string', 'boolean', 'number'
159
- }
160
- else if ((_d = prop.type) === null || _d === void 0 ? void 0 : _d.fqn) {
161
- typeName = (_e = prop.type) === null || _e === void 0 ? void 0 : _e.fqn.split('.').pop(); // projen.NodeProjectOptions -> NodeProjectOptions
162
- jsiiKind = jsii[(_f = prop.type) === null || _f === void 0 ? void 0 : _f.fqn].kind; // e.g. 'class', 'interface', 'enum'
163
- }
164
- else { // any other types such as collection types
165
- typeName = 'unknown';
154
+ if ((_b = prop.type) === null || _b === void 0 ? void 0 : _b.fqn) {
155
+ jsiiKind = jsii[(_c = prop.type) === null || _c === void 0 ? void 0 : _c.fqn].kind; // e.g. 'class', 'interface', 'enum'
166
156
  }
167
157
  const isOptional = optional || prop.optional;
168
- let defaultValue = (_g = prop.docs) === null || _g === void 0 ? void 0 : _g.default;
158
+ let defaultValue = (_d = prop.docs) === null || _d === void 0 ? void 0 : _d.default;
169
159
  if (defaultValue === 'undefined') {
170
160
  defaultValue = undefined;
171
161
  }
172
162
  // if this is a mandatory option and we have a default value, it has to be JSON-parsable to the correct type
173
163
  if (!isOptional && defaultValue) {
174
- if (!((_h = prop.type) === null || _h === void 0 ? void 0 : _h.primitive)) {
175
- throw new Error(`required option "${prop.name}" with a @default must use primitive types (string, number or boolean). type found is: ${typeName}`);
164
+ if (!((_e = prop.type) === null || _e === void 0 ? void 0 : _e.primitive)) {
165
+ throw new Error(`required option "${prop.name}" with a @default must use primitive types (string, number or boolean). type found is: ${JSON.stringify(prop.type)}`);
176
166
  }
177
- checkDefaultIsParsable(prop.name, defaultValue, (_j = prop.type) === null || _j === void 0 ? void 0 : _j.primitive);
167
+ checkDefaultIsParsable(prop.name, defaultValue, (_f = prop.type) === null || _f === void 0 ? void 0 : _f.primitive);
178
168
  }
179
169
  options[prop.name] = filterUndefined({
180
170
  path: propPath,
181
171
  parent: struct.name,
182
172
  name: prop.name,
183
- fqn: (_k = prop.type) === null || _k === void 0 ? void 0 : _k.fqn,
173
+ fqn: (_g = prop.type) === null || _g === void 0 ? void 0 : _g.fqn,
184
174
  docs: prop.docs.summary,
185
- type: typeName,
175
+ simpleType: prop.type ? getSimpleTypeName(prop.type) : 'unknown',
176
+ fullType: prop.type,
186
177
  kind: jsiiKind,
187
- switch: propPath.map(p => decamelize(p).replace(/_/g, '-')).join('-'),
178
+ jsonLike: prop.type ? isJsonLike(jsii, prop.type) : undefined,
179
+ switch: propPath.map(p => case_1.snake(p).replace(/_/g, '-')).join('-'),
188
180
  default: defaultValue,
189
181
  optional: isOptional,
190
- featured: ((_m = (_l = prop.docs) === null || _l === void 0 ? void 0 : _l.custom) === null || _m === void 0 ? void 0 : _m.featured) === 'true',
182
+ featured: ((_j = (_h = prop.docs) === null || _h === void 0 ? void 0 : _h.custom) === null || _j === void 0 ? void 0 : _j.featured) === 'true',
191
183
  deprecated: prop.docs.stability === 'deprecated' ? true : undefined,
192
184
  });
193
185
  }
194
- for (const ifc of (_o = struct.interfaces) !== null && _o !== void 0 ? _o : []) {
186
+ for (const ifc of (_k = struct.interfaces) !== null && _k !== void 0 ? _k : []) {
195
187
  addOptions(ifc);
196
188
  }
197
189
  }
198
190
  }
191
+ function getSimpleTypeName(type) {
192
+ if (type === null || type === void 0 ? void 0 : type.primitive) {
193
+ return type.primitive; // e.g. 'string', 'boolean', 'number'
194
+ }
195
+ else if (type === null || type === void 0 ? void 0 : type.fqn) {
196
+ return type.fqn.split('.').pop(); // projen.NodeProjectOptions -> NodeProjectOptions
197
+ }
198
+ else { // any other types such as collection types
199
+ return 'unknown';
200
+ }
201
+ }
202
+ /**
203
+ * Whether a value of this type is serializable into JSON.
204
+ */
205
+ function isJsonLike(jsii, type) {
206
+ if (type.primitive) { // string, boolean, number, any
207
+ return true;
208
+ }
209
+ else if (type.fqn) {
210
+ const kind = jsii[type.fqn].kind;
211
+ if (['interface', 'enum'].includes(kind)) { // not 'class'
212
+ return true;
213
+ }
214
+ }
215
+ else if (type.collection) {
216
+ return isJsonLike(jsii, type.collection.elementtype);
217
+ }
218
+ return false;
219
+ }
199
220
  function filterUndefined(obj) {
200
221
  const ret = {};
201
222
  for (const [k, v] of Object.entries(obj)) {
@@ -208,6 +229,9 @@ function filterUndefined(obj) {
208
229
  function isProjectType(jsii, fqn) {
209
230
  var _a;
210
231
  const type = jsii[fqn];
232
+ if (!type) {
233
+ throw new Error(`Could not find project type with fqn "${fqn}" in .jsii file.`);
234
+ }
211
235
  if (type.kind !== 'class') {
212
236
  return false;
213
237
  }
@@ -246,4 +270,4 @@ function checkDefaultIsParsable(prop, value, type) {
246
270
  throw new Error(`unable to JSON.parse() value "${value}" specified as @default for mandatory option "${prop}": ${e.message}`);
247
271
  }
248
272
  }
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludmVudG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsK0JBQStCO0FBRS9CLGlFQUFpRTtBQUNqRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RCxNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBbUUxQzs7Ozs7O0dBTUc7QUFDSCxTQUFnQixRQUFRLENBQUMsR0FBRyxVQUFvQjtJQUU5QyxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBRTlDLE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxFQUFlLENBQUM7SUFFeEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNOLFNBQVM7U0FDVjtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDaEI7SUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBaEJELDRCQWdCQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsaUJBQWlCLENBQUMsR0FBRyxVQUFvQjtJQUNoRCxNQUFNLElBQUksR0FBYyxFQUFFLENBQUM7SUFDM0IsTUFBTSxtQkFBbUIsR0FBa0IsRUFB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LEVBQUU7UUFDekIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztJQUNoQixPQUFPLElBQUksRUFBRTtRQUNYLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7S0FDRjtBQUNILENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsSUFBWTtJQUN2RSwwQkFBMEI7SUFDMUIsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3pCLE9BQU87S0FDUjtJQUNELElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksT0FBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxJQUFJLFNBQVMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDckc7S0FFRjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsS0FBSyxpREFBaUQsSUFBSSxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQy9IO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBkZWNhbWVsaXplID0gcmVxdWlyZSgnZGVjYW1lbGl6ZScpO1xuY29uc3QgUFJPSkVOX01PRFVMRV9ST09UID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJyk7XG5jb25zdCBQUk9KRUNUX0JBU0VfRlFOID0gJ3Byb2plbi5Qcm9qZWN0JztcblxudHlwZSBKc2lpVHlwZXMgPSB7IFtuYW1lOiBzdHJpbmddOiBKc2lpVHlwZSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RPcHRpb24ge1xuICBwYXRoOiBzdHJpbmdbXTtcbiAgbmFtZTogc3RyaW5nO1xuICBmcW4/OiBzdHJpbmc7XG4gIHN3aXRjaDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIHBhcmVudDogc3RyaW5nO1xuICBkb2NzPzogc3RyaW5nO1xuICBkZWZhdWx0Pzogc3RyaW5nO1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIGRlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICBmZWF0dXJlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdFR5cGUge1xuICBtb2R1bGVOYW1lOiBzdHJpbmc7XG4gIHBqaWQ6IHN0cmluZztcbiAgZnFuOiBzdHJpbmc7XG4gIHR5cGVuYW1lOiBzdHJpbmc7XG4gIG9wdGlvbnM6IFByb2plY3RPcHRpb25bXTtcbiAgZG9jcz86IHN0cmluZztcbiAgZG9jc3VybDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSnNpaVR5cGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFzc2VtYmx5OiBzdHJpbmc7XG4gIGtpbmQ6IHN0cmluZztcbiAgYWJzdHJhY3Q/OiBib29sZWFuO1xuICBiYXNlPzogc3RyaW5nO1xuICBmcW46IHN0cmluZztcbiAgaW50ZXJmYWNlcz86IHN0cmluZ1tdO1xuICBpbml0aWFsaXplcj86IHtcbiAgICBwYXJhbWV0ZXJzPzogQXJyYXk8e1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgdHlwZT86IHsgZnFuPzogc3RyaW5nIH07XG4gICAgfT47XG4gIH07XG4gIHByb3BlcnRpZXM/OiBBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRvY3M6IHtcbiAgICAgIHN1bW1hcnk/OiBzdHJpbmc7XG4gICAgICBkZWZhdWx0Pzogc3RyaW5nO1xuICAgICAgZGVwcmVjYXRlZD86IHN0cmluZztcbiAgICAgIHN0YWJpbGl0eT86IHN0cmluZztcbiAgICAgIGN1c3RvbT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIH07XG4gICAgb3B0aW9uYWw/OiBib29sZWFuO1xuICAgIHR5cGU/OiB7XG4gICAgICBwcmltaXRpdmU/OiBzdHJpbmc7XG4gICAgICBmcW4/OiBzdHJpbmc7XG4gICAgfTtcbiAgfT47XG4gIGRvY3M/OiB7XG4gICAgc3VtbWFyeT86IHN0cmluZztcbiAgICBkZXByZWNhdGVkPzogc3RyaW5nO1xuICAgIGN1c3RvbT86IHtcbiAgICAgIHBqaWQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBwcm9qZWN0IHR5cGVzIGV4cG9ydGVkIHRoZSBtb2R1bGVzIGRlZmluZWQgaW4gYG1vZHVsZURpcnNgLlxuICogVGhpcyBsaXN0IHdpbGwgYWx3YXlzIGFsc28gaW5jbHVkZSB0aGUgYnVpbHQtaW4gcHJvamVuIHByb2plY3QgdHlwZXMuXG4gKiBNb2R1bGVzIHdpdGhvdXQgYSAuanNpaSBtYW5pZmVzdCBhcmUgc2tpcHBlZC5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlRGlycyBBIGxpc3Qgb2YgbnBtIG1vZHVsZSBkaXJlY3Rvcmllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzY292ZXIoLi4ubW9kdWxlRGlyczogc3RyaW5nW10pIHtcblxuICBjb25zdCBqc2lpID0gZGlzY292ZXJKc2lpVHlwZXMoLi4ubW9kdWxlRGlycyk7XG5cbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PFByb2plY3RUeXBlPigpO1xuXG4gIGZvciAoY29uc3QgZnFuIG9mIE9iamVjdC5rZXlzKGpzaWkpKSB7XG4gICAgY29uc3QgcCA9IHRvUHJvamVjdFR5cGUoanNpaSwgZnFuKTtcbiAgICBpZiAoIXApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc3VsdC5wdXNoKHApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5zb3J0KChyMSwgcjIpID0+IHIxLnBqaWQubG9jYWxlQ29tcGFyZShyMi5wamlkKSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhbGwganNpaSB0eXBlcyBmcm9tIEBtb2R1bGVzRGlycy5cbiAqIFdoZW4gYSBqc2lpIG1vZHVsZSBpcyBmb3VuZCBpdCB3aWxsIHJlY3VzaXZlbHkgbGlzdCB0aGUgdHlwZXMgZnJvbSB0aGUgZGVwZW5kYW50IG1vZHVsZSBhcyB3ZWxsXG4gKlxuICogQHBhcmFtIG1vZHVsZURpcnNcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGRpc2NvdmVySnNpaVR5cGVzKC4uLm1vZHVsZURpcnM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGpzaWk6IEpzaWlUeXBlcyA9IHt9O1xuICBjb25zdCBkaXNjb3ZlcmVkTWFuaWZlc3RzOiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgY29uc3QgZGlzY292ZXJKc2lpID0gKGRpcjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QganNpaUZpbGUgPSBwYXRoLmpvaW4oZGlyLCAnLmpzaWknKTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoanNpaUZpbGUpKSB7IHJldHVybjsgfSAvLyBubyBqc2lpIG1hbmlmZXN0XG5cbiAgICBjb25zdCBtYW5pZmVzdCA9IGZzLnJlYWRKc29uU3luYyhqc2lpRmlsZSk7XG5cbiAgICBpZiAoZGlzY292ZXJlZE1hbmlmZXN0cy5pbmNsdWRlcyhtYW5pZmVzdC5maW5nZXJwcmludCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZGlzY292ZXJlZE1hbmlmZXN0cy5wdXNoKG1hbmlmZXN0LmZpbmdlcnByaW50KTtcblxuICAgIGZvciAoY29uc3QgW2ZxbiwgdHlwZV0gb2YgT2JqZWN0LmVudHJpZXMobWFuaWZlc3QudHlwZXMgYXMgSnNpaVR5cGVzKSkge1xuICAgICAganNpaVtmcW5dID0ge1xuICAgICAgICAuLi50eXBlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBBbHNvIHNlYXJjaCByZWN1cnNpdmVseSBpbiBuZXN0ZWQgcHJvamVjdCBkZXBlbmRlbmNpZXMuIElmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIGFuIGV4dGVybmFsIG1vZHVsZVxuICAgIC8vIHRoaXMgd2lsbCBhbHNvIGVuZC11cCBpbiB0aGUgcHJvamVuIG1vZHVsZSBhbmQgYWRkIHRoZSBwcm9qZW4gdHlwZXNcbiAgICBpZiAobWFuaWZlc3QuZGVwZW5kZW5jaWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgT2JqZWN0LmtleXMobWFuaWZlc3QuZGVwZW5kZW5jaWVzKSkge1xuICAgICAgICBjb25zdCBuZXN0ZWREZXBlbmRlbmN5Rm9sZGVyID0gcGF0aC5kaXJuYW1lKHJlcXVpcmUucmVzb2x2ZShgJHtkZXBlbmRlbmN5fS9wYWNrYWdlLmpzb25gLCB7XG4gICAgICAgICAgcGF0aHM6IFtkaXJdLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMobmVzdGVkRGVwZW5kZW5jeUZvbGRlcikpIHtcbiAgICAgICAgICBkaXNjb3ZlckpzaWkobmVzdGVkRGVwZW5kZW5jeUZvbGRlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLy8gcmVhZCBhbGwgLmpzaWkgbWFuaWZlc3RzIGZyb20gYWxsIHJlcXVlc3RlZCBtb2R1bGVzIGFuZCBtZXJnZVxuICAvLyB0aGVtIGFsbCBpbnRvIGEgc2luZ2xlIG1hcCBvZiBmcW4tPnR5cGUuXG4gIGZvciAoY29uc3QgZGlyIG9mIFsuLi5tb2R1bGVEaXJzLCBQUk9KRU5fTU9EVUxFX1JPT1RdKSB7XG4gICAgZGlzY292ZXJKc2lpKGRpcik7XG5cbiAgICAvLyBSZWFkIGZyb20gc2NvcGVkIHBhY2thZ2VzXG4gICAgaWYgKGRpci5pbmNsdWRlcygnQCcpICYmIGZzLmxzdGF0U3luYyhkaXIpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGNvbnN0IGNoaWxkRGlycyA9IGZzLnJlYWRkaXJTeW5jKGRpcikubWFwKGZpbGUgPT4gcGF0aC5qb2luKGRpciwgZmlsZSkpO1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZERpcnMpIHtcbiAgICAgICAgZGlzY292ZXJKc2lpKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ganNpaTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQcm9qZWN0VHlwZShwcm9qZWN0RnFuOiBzdHJpbmcpIHtcbiAgbGV0IFttb2R1bGVOYW1lXSA9IHByb2plY3RGcW4uc3BsaXQoJy4nKTtcbiAgaWYgKG1vZHVsZU5hbWUgPT09ICdwcm9qZW4nKSB7XG4gICAgbW9kdWxlTmFtZSA9IFBST0pFTl9NT0RVTEVfUk9PVDtcbiAgfVxuXG4gIC8vIHRyeSBwaWNraW5nIHRoZSBtYW5pZmVzdC4gV2Ugb25seSBuZWVkIHRoZSBiYXNlIGZvbGRlciBidXQgdGhpcyBpcyBkaXJlY3RseSBhIG5pY2UgY2hlY2sgaWYgd2UgcmVxdWVzdCBmcm9tIGEgdmFsaWQganNpaSBwYWNrYWdlXG4gIGNvbnN0IGpzaWlNYW5pZmVzdEZpbGUgPSByZXF1aXJlLnJlc29sdmUoYCR7bW9kdWxlTmFtZX0vLmpzaWlgLCB7XG4gICAgcGF0aHM6IFtcbiAgICAgIHByb2Nlc3MuY3dkKCksXG4gICAgXSxcbiAgfSk7XG4gIGNvbnN0IG1vZHVsZUZvbGRlciA9IHBhdGguZGlybmFtZShqc2lpTWFuaWZlc3RGaWxlKTtcblxuICAvLyBSZWFkIGFsbCBqc2lpIHR5cGVzIHRoYXQgY2FuIGJlIGxvYWRlZCBmcm9tIHRoaXMgcHJvamVjdCB0eXBlXG4gIGNvbnN0IGpzaWkgPSBkaXNjb3ZlckpzaWlUeXBlcyhtb2R1bGVGb2xkZXIpO1xuICByZXR1cm4gdG9Qcm9qZWN0VHlwZShqc2lpLCBwcm9qZWN0RnFuKTtcbn1cblxuZnVuY3Rpb24gdG9Qcm9qZWN0VHlwZShqc2lpOiBKc2lpVHlwZXMsIGZxbjogc3RyaW5nKSB7XG4gIGlmICghaXNQcm9qZWN0VHlwZShqc2lpLCBmcW4pKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHR5cGVpbmZvID0ganNpaVtmcW5dO1xuXG4gIC8vIHByb2plbi53ZWIuUmVhY3RQcm9qZWN0IC0+IHdlYi5SZWFjdFByb2plY3RcbiAgY29uc3QgdHlwZW5hbWUgPSBmcW4uc3Vic3RyaW5nKGZxbi5pbmRleE9mKCcuJykgKyAxKTtcblxuICBjb25zdCBkb2NzdXJsID0gYGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZW4vcHJvamVuL2Jsb2IvbWFpbi9BUEkubWQjcHJvamVuLSR7dHlwZW5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKS5yZXBsYWNlKC9cXC4vZywgJy0nKX1gO1xuICBsZXQgcGppZCA9IHR5cGVpbmZvLmRvY3M/LmN1c3RvbT8ucGppZCA/PyBkZWNhbWVsaXplKHR5cGVuYW1lKS5yZXBsYWNlKC9fcHJvamVjdCQvLCAnJyk7XG4gIHJldHVybiB7XG4gICAgbW9kdWxlTmFtZTogdHlwZWluZm8uYXNzZW1ibHksXG4gICAgdHlwZW5hbWUsXG4gICAgcGppZCxcbiAgICBmcW4sXG4gICAgb3B0aW9uczogZGlzY292ZXJPcHRpb25zKGpzaWksIGZxbikuc29ydCgobzEsIG8yKSA9PiBvMS5uYW1lLmxvY2FsZUNvbXBhcmUobzIubmFtZSkpLFxuICAgIGRvY3M6IHR5cGVpbmZvLmRvY3M/LnN1bW1hcnksXG4gICAgZG9jc3VybCxcbiAgfSBhcyBQcm9qZWN0VHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRKc2lpTWFuaWZlc3QoanNpaUZxbjogc3RyaW5nKTogYW55IHtcbiAgbGV0IFttb2R1bGVOYW1lXSA9IGpzaWlGcW4uc3BsaXQoJy4nKTtcbiAgaWYgKG1vZHVsZU5hbWUgPT09ICdwcm9qZW4nKSB7XG4gICAgbW9kdWxlTmFtZSA9IFBST0pFTl9NT0RVTEVfUk9PVDtcbiAgfVxuXG4gIGNvbnN0IGpzaWlNYW5pZmVzdEZpbGUgPSByZXF1aXJlLnJlc29sdmUoYCR7bW9kdWxlTmFtZX0vLmpzaWlgKTtcbiAgcmV0dXJuIGZzLnJlYWRKc29uU3luYyhqc2lpTWFuaWZlc3RGaWxlKTtcbn1cblxuZnVuY3Rpb24gZGlzY292ZXJPcHRpb25zKGpzaWk6IEpzaWlUeXBlcywgZnFuOiBzdHJpbmcpOiBQcm9qZWN0T3B0aW9uW10ge1xuICBjb25zdCBvcHRpb25zOiB7IFtuYW1lOiBzdHJpbmddOiBQcm9qZWN0T3B0aW9uIH0gPSB7fTtcbiAgY29uc3QgcGFyYW1zID0ganNpaVtmcW5dPy5pbml0aWFsaXplcj8ucGFyYW1ldGVycyA/PyBbXTtcbiAgY29uc3Qgb3B0aW9uc1BhcmFtID0gcGFyYW1zWzBdO1xuICBjb25zdCBvcHRpb25zVHlwZUZxbiA9IG9wdGlvbnNQYXJhbT8udHlwZT8uZnFuO1xuXG4gIGlmIChwYXJhbXMubGVuZ3RoID4gMSB8fCAocGFyYW1zLmxlbmd0aCA9PT0gMSAmJiBvcHRpb25zUGFyYW0/Lm5hbWUgIT09ICdvcHRpb25zJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbnN0cnVjdG9yIGZvciBwcm9qZWN0ICR7ZnFufSBtdXN0IGhhdmUgYSBzaW5nbGUgXCJvcHRpb25zXCIgYXJndW1lbnQgb2YgYSBzdHJ1Y3QgdHlwZS4gZ290ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX1gKTtcbiAgfVxuXG4gIGFkZE9wdGlvbnMob3B0aW9uc1R5cGVGcW4pO1xuXG4gIGNvbnN0IG9wdHMgPSBPYmplY3QudmFsdWVzKG9wdGlvbnMpO1xuXG4gIHJldHVybiBvcHRzLnNvcnQoKGEsIGIpID0+IGEuc3dpdGNoLmxvY2FsZUNvbXBhcmUoYi5zd2l0Y2gpKTtcblxuICBmdW5jdGlvbiBhZGRPcHRpb25zKG9mcW4/OiBzdHJpbmcsIGJhc2VQYXRoOiBzdHJpbmdbXSA9IFtdLCBvcHRpb25hbCA9IGZhbHNlKSB7XG4gICAgaWYgKCFvZnFuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RydWN0ID0ganNpaVtvZnFuXTtcbiAgICBpZiAoIXN0cnVjdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gZmluZCBvcHRpb25zIHR5cGUgJHtvZnFufSBmb3IgcHJvamVjdCAke2Zxbn1gKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2Ygc3RydWN0LnByb3BlcnRpZXMgPz8gW10pIHtcbiAgICAgIGNvbnN0IHByb3BQYXRoID0gWy4uLmJhc2VQYXRoLCBwcm9wLm5hbWVdO1xuXG4gICAgICAvLyBwcm90ZWN0IGFnYWluc3QgZG91YmxlLWJvb2tpbmdcbiAgICAgIGlmIChwcm9wLm5hbWUgaW4gb3B0aW9ucykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGR1cGxpY2F0ZSBvcHRpb24gXCIke3Byb3AubmFtZX1cIiBpbiAke2Zxbn0gKGFscmVhZHkgZGVjbGFyZWQgaW4gJHtvcHRpb25zW3Byb3AubmFtZV0ucGFyZW50fSlgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHR5cGVOYW1lO1xuICAgICAgbGV0IGpzaWlLaW5kO1xuICAgICAgaWYgKHByb3AudHlwZT8ucHJpbWl0aXZlKSB7XG4gICAgICAgIHR5cGVOYW1lID0gcHJvcC50eXBlPy5wcmltaXRpdmU7IC8vIGUuZy4gJ3N0cmluZycsICdib29sZWFuJywgJ251bWJlcidcbiAgICAgIH0gZWxzZSBpZiAocHJvcC50eXBlPy5mcW4pIHtcbiAgICAgICAgdHlwZU5hbWUgPSBwcm9wLnR5cGU/LmZxbi5zcGxpdCgnLicpLnBvcCgpOyAvLyBwcm9qZW4uTm9kZVByb2plY3RPcHRpb25zIC0+IE5vZGVQcm9qZWN0T3B0aW9uc1xuICAgICAgICBqc2lpS2luZCA9IGpzaWlbcHJvcC50eXBlPy5mcW5dLmtpbmQ7IC8vIGUuZy4gJ2NsYXNzJywgJ2ludGVyZmFjZScsICdlbnVtJ1xuICAgICAgfSBlbHNlIHsgLy8gYW55IG90aGVyIHR5cGVzIHN1Y2ggYXMgY29sbGVjdGlvbiB0eXBlc1xuICAgICAgICB0eXBlTmFtZSA9ICd1bmtub3duJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNPcHRpb25hbCA9IG9wdGlvbmFsIHx8IHByb3Aub3B0aW9uYWw7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gcHJvcC5kb2NzPy5kZWZhdWx0O1xuXG4gICAgICBpZiAoZGVmYXVsdFZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHRoaXMgaXMgYSBtYW5kYXRvcnkgb3B0aW9uIGFuZCB3ZSBoYXZlIGEgZGVmYXVsdCB2YWx1ZSwgaXQgaGFzIHRvIGJlIEpTT04tcGFyc2FibGUgdG8gdGhlIGNvcnJlY3QgdHlwZVxuICAgICAgaWYgKCFpc09wdGlvbmFsICYmIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBpZiAoIXByb3AudHlwZT8ucHJpbWl0aXZlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZXF1aXJlZCBvcHRpb24gXCIke3Byb3AubmFtZX1cIiB3aXRoIGEgQGRlZmF1bHQgbXVzdCB1c2UgcHJpbWl0aXZlIHR5cGVzIChzdHJpbmcsIG51bWJlciBvciBib29sZWFuKS4gdHlwZSBmb3VuZCBpczogJHt0eXBlTmFtZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoZWNrRGVmYXVsdElzUGFyc2FibGUocHJvcC5uYW1lLCBkZWZhdWx0VmFsdWUsIHByb3AudHlwZT8ucHJpbWl0aXZlKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9uc1twcm9wLm5hbWVdID0gZmlsdGVyVW5kZWZpbmVkKHtcbiAgICAgICAgcGF0aDogcHJvcFBhdGgsXG4gICAgICAgIHBhcmVudDogc3RydWN0Lm5hbWUsXG4gICAgICAgIG5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgZnFuOiBwcm9wLnR5cGU/LmZxbixcbiAgICAgICAgZG9jczogcHJvcC5kb2NzLnN1bW1hcnksXG4gICAgICAgIHR5cGU6IHR5cGVOYW1lLFxuICAgICAgICBraW5kOiBqc2lpS2luZCxcbiAgICAgICAgc3dpdGNoOiBwcm9wUGF0aC5tYXAocCA9PiBkZWNhbWVsaXplKHApLnJlcGxhY2UoL18vZywgJy0nKSkuam9pbignLScpLFxuICAgICAgICBkZWZhdWx0OiBkZWZhdWx0VmFsdWUsXG4gICAgICAgIG9wdGlvbmFsOiBpc09wdGlvbmFsLFxuICAgICAgICBmZWF0dXJlZDogcHJvcC5kb2NzPy5jdXN0b20/LmZlYXR1cmVkID09PSAndHJ1ZScsXG4gICAgICAgIGRlcHJlY2F0ZWQ6IHByb3AuZG9jcy5zdGFiaWxpdHkgPT09ICdkZXByZWNhdGVkJyA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGlmYyBvZiBzdHJ1Y3QuaW50ZXJmYWNlcyA/PyBbXSkge1xuICAgICAgYWRkT3B0aW9ucyhpZmMpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaWx0ZXJVbmRlZmluZWQob2JqOiBhbnkpIHtcbiAgY29uc3QgcmV0OiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGlzUHJvamVjdFR5cGUoanNpaTogSnNpaVR5cGVzLCBmcW46IHN0cmluZykge1xuICBjb25zdCB0eXBlID0ganNpaVtmcW5dO1xuXG4gIGlmICh0eXBlLmtpbmQgIT09ICdjbGFzcycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGUuYWJzdHJhY3QpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZS5kb2NzPy5kZXByZWNhdGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IGN1cnIgPSB0eXBlO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChjdXJyLmZxbiA9PT0gUFJPSkVDVF9CQVNFX0ZRTikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFjdXJyLmJhc2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjdXJyID0ganNpaVtjdXJyLmJhc2VdO1xuICAgIGlmICghY3Vycikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0RlZmF1bHRJc1BhcnNhYmxlKHByb3A6IHN0cmluZywgdmFsdWU6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XG4gIC8vIG1hY3JvcyBhcmUgcGFzcy10aHJvdWdoXG4gIGlmICh2YWx1ZS5zdGFydHNXaXRoKCckJykpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICBpZiAodHlwZW9mKHBhcnNlZCkgIT09IHR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHBhcnNlIEBkZWZhdWx0IHZhbHVlIGZvciBtYW5kYXRvcnkgb3B0aW9uICR7cHJvcH0gYXMgYSAke3R5cGV9OiAke3BhcnNlZH1gKTtcbiAgICB9XG5cbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5hYmxlIHRvIEpTT04ucGFyc2UoKSB2YWx1ZSBcIiR7dmFsdWV9XCIgc3BlY2lmaWVkIGFzIEBkZWZhdWx0IGZvciBtYW5kYXRvcnkgb3B0aW9uIFwiJHtwcm9wfVwiOiAke2UubWVzc2FnZX1gKTtcbiAgfVxufVxuIl19
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludmVudG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsK0JBQTZCO0FBQzdCLCtCQUErQjtBQUUvQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RELE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUE2RTFDOzs7Ozs7R0FNRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxHQUFHLFVBQW9CO0lBRTlDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFFOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWUsQ0FBQztJQUV4QyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbkMsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQjtLQUNGO0lBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQWRELDRCQWNDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLFVBQW9CO0lBQ2hELE1BQU0sSUFBSSxHQUFjLEVBQUUsQ0FBQztJQUMzQixNQUFNLG1CQUFtQixHQUFrQixFQUFFLENBQUM7SUFFOUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFX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QixPQUFPLElBQUksRUFBRTtRQUNYLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7S0FDRjtBQUNILENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsSUFBWTtJQUN2RSwwQkFBMEI7SUFDMUIsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3pCLE9BQU87S0FDUjtJQUNELElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksT0FBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxJQUFJLFNBQVMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDckc7S0FFRjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsS0FBSyxpREFBaUQsSUFBSSxNQUFPLENBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3hJO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzbmFrZSB9IGZyb20gJ2Nhc2UnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG5jb25zdCBQUk9KRU5fTU9EVUxFX1JPT1QgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nKTtcbmNvbnN0IFBST0pFQ1RfQkFTRV9GUU4gPSAncHJvamVuLlByb2plY3QnO1xuXG50eXBlIEpzaWlUeXBlcyA9IHsgW25hbWU6IHN0cmluZ106IEpzaWlUeXBlIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdE9wdGlvbiB7XG4gIHBhdGg6IHN0cmluZ1tdO1xuICBuYW1lOiBzdHJpbmc7XG4gIGZxbj86IHN0cmluZztcbiAgc3dpdGNoOiBzdHJpbmc7XG4gIC8qKiBTaW1wbGUgdHlwZSBuYW1lLCBlLmcuIFwic3RyaW5nXCIsIFwiYm9vbGVhblwiLCBcIm51bWJlclwiLCBcIkVzbGludE9wdGlvbnNcIiwgXCJNeUVudW1cIi4gQ29sbGVjdGlvbnMgYXJlIFwidW5rbm93blwiICovXG4gIHNpbXBsZVR5cGU6IHN0cmluZztcbiAgLyoqIEZ1bGwgSlNJSSB0eXBlLCBlLmcuIHsgcHJpbWl0aXZlOiBcInN0cmluZ1wiIH0gb3IgeyBjb2xsZWN0aW9uOiB7IGVsZW1lbnR0eXBlOiB7IHByaW1pdGl2ZTogJ3N0cmluZycgfSwga2luZDogJ21hcCcgfSB9ICovXG4gIGZ1bGxUeXBlOiBKc2lpUHJvcGVydHlUeXBlO1xuICBraW5kPzogJ2NsYXNzJyB8ICdlbnVtJyB8ICdpbnRlcmZhY2UnO1xuICBqc29uTGlrZT86IGJvb2xlYW47XG4gIHBhcmVudDogc3RyaW5nO1xuICBkb2NzPzogc3RyaW5nO1xuICBkZWZhdWx0Pzogc3RyaW5nO1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIGRlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICBmZWF0dXJlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdFR5cGUge1xuICBtb2R1bGVOYW1lOiBzdHJpbmc7XG4gIHBqaWQ6IHN0cmluZztcbiAgZnFuOiBzdHJpbmc7XG4gIHR5cGVuYW1lOiBzdHJpbmc7XG4gIG9wdGlvbnM6IFByb2plY3RPcHRpb25bXTtcbiAgZG9jcz86IHN0cmluZztcbiAgZG9jc3VybDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSnNpaVR5cGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFzc2VtYmx5OiBzdHJpbmc7XG4gIGtpbmQ6IHN0cmluZztcbiAgYWJzdHJhY3Q/OiBib29sZWFuO1xuICBiYXNlPzogc3RyaW5nO1xuICBmcW46IHN0cmluZztcbiAgaW50ZXJmYWNlcz86IHN0cmluZ1tdO1xuICBpbml0aWFsaXplcj86IHtcbiAgICBwYXJhbWV0ZXJzPzogQXJyYXk8e1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgdHlwZT86IHsgZnFuPzogc3RyaW5nIH07XG4gICAgfT47XG4gIH07XG4gIHByb3BlcnRpZXM/OiBBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRvY3M6IHtcbiAgICAgIHN1bW1hcnk/OiBzdHJpbmc7XG4gICAgICBkZWZhdWx0Pzogc3RyaW5nO1xuICAgICAgZGVwcmVjYXRlZD86IHN0cmluZztcbiAgICAgIHN0YWJpbGl0eT86IHN0cmluZztcbiAgICAgIGN1c3RvbT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIH07XG4gICAgb3B0aW9uYWw/OiBib29sZWFuO1xuICAgIHR5cGU/OiBKc2lpUHJvcGVydHlUeXBlO1xuICB9PjtcbiAgZG9jcz86IHtcbiAgICBzdW1tYXJ5Pzogc3RyaW5nO1xuICAgIGRlcHJlY2F0ZWQ/OiBzdHJpbmc7XG4gICAgY3VzdG9tPzoge1xuICAgICAgcGppZD86IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlQcm9wZXJ0eVR5cGUge1xuICBwcmltaXRpdmU/OiBzdHJpbmc7XG4gIGZxbj86IHN0cmluZztcbiAgY29sbGVjdGlvbj86IHtcbiAgICBlbGVtZW50dHlwZTogSnNpaVByb3BlcnR5VHlwZTtcbiAgICBraW5kOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgcHJvamVjdCB0eXBlcyBleHBvcnRlZCB0aGUgbW9kdWxlcyBkZWZpbmVkIGluIGBtb2R1bGVEaXJzYC5cbiAqIFRoaXMgbGlzdCB3aWxsIGFsd2F5cyBhbHNvIGluY2x1ZGUgdGhlIGJ1aWx0LWluIHByb2plbiBwcm9qZWN0IHR5cGVzLlxuICogTW9kdWxlcyB3aXRob3V0IGEgLmpzaWkgbWFuaWZlc3QgYXJlIHNraXBwZWQuXG4gKlxuICogQHBhcmFtIG1vZHVsZURpcnMgQSBsaXN0IG9mIG5wbSBtb2R1bGUgZGlyZWN0b3JpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc2NvdmVyKC4uLm1vZHVsZURpcnM6IHN0cmluZ1tdKSB7XG5cbiAgY29uc3QganNpaSA9IGRpc2NvdmVySnNpaVR5cGVzKC4uLm1vZHVsZURpcnMpO1xuXG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxQcm9qZWN0VHlwZT4oKTtcblxuICBmb3IgKGNvbnN0IGZxbiBvZiBPYmplY3Qua2V5cyhqc2lpKSkge1xuICAgIGlmIChpc1Byb2plY3RUeXBlKGpzaWksIGZxbikpIHtcbiAgICAgIGNvbnN0IHAgPSB0b1Byb2plY3RUeXBlKGpzaWksIGZxbik7XG4gICAgICByZXN1bHQucHVzaChwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnNvcnQoKHIxLCByMikgPT4gcjEucGppZC5sb2NhbGVDb21wYXJlKHIyLnBqaWQpKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFsbCBqc2lpIHR5cGVzIGZyb20gQG1vZHVsZXNEaXJzLlxuICogV2hlbiBhIGpzaWkgbW9kdWxlIGlzIGZvdW5kIGl0IHdpbGwgcmVjdXNpdmVseSBsaXN0IHRoZSB0eXBlcyBmcm9tIHRoZSBkZXBlbmRhbnQgbW9kdWxlIGFzIHdlbGxcbiAqXG4gKiBAcGFyYW0gbW9kdWxlRGlyc1xuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gZGlzY292ZXJKc2lpVHlwZXMoLi4ubW9kdWxlRGlyczogc3RyaW5nW10pIHtcbiAgY29uc3QganNpaTogSnNpaVR5cGVzID0ge307XG4gIGNvbnN0IGRpc2NvdmVyZWRNYW5pZmVzdHM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICBjb25zdCBkaXNjb3ZlckpzaWkgPSAoZGlyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBqc2lpRmlsZSA9IHBhdGguam9pbihkaXIsICcuanNpaScpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhqc2lpRmlsZSkpIHsgcmV0dXJuOyB9IC8vIG5vIGpzaWkgbWFuaWZlc3RcblxuICAgIGNvbnN0IG1hbmlmZXN0ID0gZnMucmVhZEpzb25TeW5jKGpzaWlGaWxlKTtcblxuICAgIGlmIChkaXNjb3ZlcmVkTWFuaWZlc3RzLmluY2x1ZGVzKG1hbmlmZXN0LmZpbmdlcnByaW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkaXNjb3ZlcmVkTWFuaWZlc3RzLnB1c2gobWFuaWZlc3QuZmluZ2VycHJpbnQpO1xuXG4gICAgZm9yIChjb25zdCBbZnFuLCB0eXBlXSBvZiBPYmplY3QuZW50cmllcyhtYW5pZmVzdC50eXBlcyBhcyBKc2lpVHlwZXMpKSB7XG4gICAgICBqc2lpW2Zxbl0gPSB7XG4gICAgICAgIC4uLnR5cGUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEFsc28gc2VhcmNoIHJlY3Vyc2l2ZWx5IGluIG5lc3RlZCBwcm9qZWN0IGRlcGVuZGVuY2llcy4gSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgYW4gZXh0ZXJuYWwgbW9kdWxlXG4gICAgLy8gdGhpcyB3aWxsIGFsc28gZW5kLXVwIGluIHRoZSBwcm9qZW4gbW9kdWxlIGFuZCBhZGQgdGhlIHByb2plbiB0eXBlc1xuICAgIGlmIChtYW5pZmVzdC5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeSBvZiBPYmplY3Qua2V5cyhtYW5pZmVzdC5kZXBlbmRlbmNpZXMpKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZERlcGVuZGVuY3lGb2xkZXIgPSBwYXRoLmRpcm5hbWUocmVxdWlyZS5yZXNvbHZlKGAke2RlcGVuZGVuY3l9L3BhY2thZ2UuanNvbmAsIHtcbiAgICAgICAgICBwYXRoczogW2Rpcl0sXG4gICAgICAgIH0pKTtcblxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhuZXN0ZWREZXBlbmRlbmN5Rm9sZGVyKSkge1xuICAgICAgICAgIGRpc2NvdmVySnNpaShuZXN0ZWREZXBlbmRlbmN5Rm9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvLyByZWFkIGFsbCAuanNpaSBtYW5pZmVzdHMgZnJvbSBhbGwgcmVxdWVzdGVkIG1vZHVsZXMgYW5kIG1lcmdlXG4gIC8vIHRoZW0gYWxsIGludG8gYSBzaW5nbGUgbWFwIG9mIGZxbi0+dHlwZS5cbiAgZm9yIChjb25zdCBkaXIgb2YgWy4uLm1vZHVsZURpcnMsIFBST0pFTl9NT0RVTEVfUk9PVF0pIHtcbiAgICBkaXNjb3ZlckpzaWkoZGlyKTtcblxuICAgIC8vIFJlYWQgZnJvbSBzY29wZWQgcGFja2FnZXNcbiAgICBpZiAoZGlyLmluY2x1ZGVzKCdAJykgJiYgZnMubHN0YXRTeW5jKGRpcikuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgY29uc3QgY2hpbGREaXJzID0gZnMucmVhZGRpclN5bmMoZGlyKS5tYXAoZmlsZSA9PiBwYXRoLmpvaW4oZGlyLCBmaWxlKSk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkRGlycykge1xuICAgICAgICBkaXNjb3ZlckpzaWkoY2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBqc2lpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVByb2plY3RUeXBlKHByb2plY3RGcW46IHN0cmluZyk6IFByb2plY3RUeXBlIHtcbiAgbGV0IFttb2R1bGVOYW1lXSA9IHByb2plY3RGcW4uc3BsaXQoJy4nKTtcbiAgaWYgKG1vZHVsZU5hbWUgPT09ICdwcm9qZW4nKSB7XG4gICAgbW9kdWxlTmFtZSA9IFBST0pFTl9NT0RVTEVfUk9PVDtcbiAgfVxuXG4gIC8vIHRyeSBwaWNraW5nIHRoZSBtYW5pZmVzdC4gV2Ugb25seSBuZWVkIHRoZSBiYXNlIGZvbGRlciBidXQgdGhpcyBpcyBkaXJlY3RseSBhIG5pY2UgY2hlY2sgaWYgd2UgcmVxdWVzdCBmcm9tIGEgdmFsaWQganNpaSBwYWNrYWdlXG4gIGNvbnN0IGpzaWlNYW5pZmVzdEZpbGUgPSByZXF1aXJlLnJlc29sdmUoYCR7bW9kdWxlTmFtZX0vLmpzaWlgLCB7XG4gICAgcGF0aHM6IFtcbiAgICAgIHByb2Nlc3MuY3dkKCksXG4gICAgXSxcbiAgfSk7XG4gIGNvbnN0IG1vZHVsZUZvbGRlciA9IHBhdGguZGlybmFtZShqc2lpTWFuaWZlc3RGaWxlKTtcblxuICAvLyBSZWFkIGFsbCBqc2lpIHR5cGVzIHRoYXQgY2FuIGJlIGxvYWRlZCBmcm9tIHRoaXMgcHJvamVjdCB0eXBlXG4gIGNvbnN0IGpzaWkgPSBkaXNjb3ZlckpzaWlUeXBlcyhtb2R1bGVGb2xkZXIpO1xuICByZXR1cm4gdG9Qcm9qZWN0VHlwZShqc2lpLCBwcm9qZWN0RnFuKTtcbn1cblxuZnVuY3Rpb24gdG9Qcm9qZWN0VHlwZShqc2lpOiBKc2lpVHlwZXMsIGZxbjogc3RyaW5nKTogUHJvamVjdFR5cGUge1xuICBpZiAoIWlzUHJvamVjdFR5cGUoanNpaSwgZnFuKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRnVsbHkgcXVhbGlmaWVkIG5hbWUgXCIke2Zxbn1cIiBpcyBub3QgYSB2YWxpZCBwcm9qZWN0IHR5cGUuYCk7XG4gIH1cblxuICBjb25zdCB0eXBlaW5mbyA9IGpzaWlbZnFuXTtcblxuICAvLyBwcm9qZW4ud2ViLlJlYWN0UHJvamVjdCAtPiB3ZWIuUmVhY3RQcm9qZWN0XG4gIGNvbnN0IHR5cGVuYW1lID0gZnFuLnN1YnN0cmluZyhmcW4uaW5kZXhPZignLicpICsgMSk7XG5cbiAgY29uc3QgZG9jc3VybCA9IGBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9ibG9iL21haW4vQVBJLm1kI3Byb2plbi0ke3R5cGVuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgvXFwuL2csICctJyl9YDtcbiAgbGV0IHBqaWQgPSB0eXBlaW5mby5kb2NzPy5jdXN0b20/LnBqaWQgPz8gc25ha2UodHlwZW5hbWUpLnJlcGxhY2UoL19wcm9qZWN0JC8sICcnKTtcbiAgcmV0dXJuIHtcbiAgICBtb2R1bGVOYW1lOiB0eXBlaW5mby5hc3NlbWJseSxcbiAgICB0eXBlbmFtZSxcbiAgICBwamlkLFxuICAgIGZxbixcbiAgICBvcHRpb25zOiBkaXNjb3Zlck9wdGlvbnMoanNpaSwgZnFuKS5zb3J0KChvMSwgbzIpID0+IG8xLm5hbWUubG9jYWxlQ29tcGFyZShvMi5uYW1lKSksXG4gICAgZG9jczogdHlwZWluZm8uZG9jcz8uc3VtbWFyeSxcbiAgICBkb2NzdXJsLFxuICB9IGFzIFByb2plY3RUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEpzaWlNYW5pZmVzdChqc2lpRnFuOiBzdHJpbmcpOiBhbnkge1xuICBsZXQgW21vZHVsZU5hbWVdID0ganNpaUZxbi5zcGxpdCgnLicpO1xuICBpZiAobW9kdWxlTmFtZSA9PT0gJ3Byb2plbicpIHtcbiAgICBtb2R1bGVOYW1lID0gUFJPSkVOX01PRFVMRV9ST09UO1xuICB9XG5cbiAgY29uc3QganNpaU1hbmlmZXN0RmlsZSA9IHJlcXVpcmUucmVzb2x2ZShgJHttb2R1bGVOYW1lfS8uanNpaWApO1xuICByZXR1cm4gZnMucmVhZEpzb25TeW5jKGpzaWlNYW5pZmVzdEZpbGUpO1xufVxuXG5mdW5jdGlvbiBkaXNjb3Zlck9wdGlvbnMoanNpaTogSnNpaVR5cGVzLCBmcW46IHN0cmluZyk6IFByb2plY3RPcHRpb25bXSB7XG4gIGNvbnN0IG9wdGlvbnM6IHsgW25hbWU6IHN0cmluZ106IFByb2plY3RPcHRpb24gfSA9IHt9O1xuICBjb25zdCBwYXJhbXMgPSBqc2lpW2Zxbl0/LmluaXRpYWxpemVyPy5wYXJhbWV0ZXJzID8/IFtdO1xuICBjb25zdCBvcHRpb25zUGFyYW0gPSBwYXJhbXNbMF07XG4gIGNvbnN0IG9wdGlvbnNUeXBlRnFuID0gb3B0aW9uc1BhcmFtPy50eXBlPy5mcW47XG5cbiAgaWYgKHBhcmFtcy5sZW5ndGggPiAxIHx8IChwYXJhbXMubGVuZ3RoID09PSAxICYmIG9wdGlvbnNQYXJhbT8ubmFtZSAhPT0gJ29wdGlvbnMnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgY29uc3RydWN0b3IgZm9yIHByb2plY3QgJHtmcW59IG11c3QgaGF2ZSBhIHNpbmdsZSBcIm9wdGlvbnNcIiBhcmd1bWVudCBvZiBhIHN0cnVjdCB0eXBlLiBnb3QgJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfWApO1xuICB9XG5cbiAgYWRkT3B0aW9ucyhvcHRpb25zVHlwZUZxbik7XG5cbiAgY29uc3Qgb3B0cyA9IE9iamVjdC52YWx1ZXMob3B0aW9ucyk7XG5cbiAgcmV0dXJuIG9wdHMuc29ydCgoYSwgYikgPT4gYS5zd2l0Y2gubG9jYWxlQ29tcGFyZShiLnN3aXRjaCkpO1xuXG4gIGZ1bmN0aW9uIGFkZE9wdGlvbnMob2Zxbj86IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZ1tdID0gW10sIG9wdGlvbmFsID0gZmFsc2UpIHtcbiAgICBpZiAoIW9mcW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJ1Y3QgPSBqc2lpW29mcW5dO1xuICAgIGlmICghc3RydWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuYWJsZSB0byBmaW5kIG9wdGlvbnMgdHlwZSAke29mcW59IGZvciBwcm9qZWN0ICR7ZnFufWApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBzdHJ1Y3QucHJvcGVydGllcyA/PyBbXSkge1xuICAgICAgY29uc3QgcHJvcFBhdGggPSBbLi4uYmFzZVBhdGgsIHByb3AubmFtZV07XG5cbiAgICAgIC8vIHByb3RlY3QgYWdhaW5zdCBkb3VibGUtYm9va2luZ1xuICAgICAgaWYgKHByb3AubmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgZHVwbGljYXRlIG9wdGlvbiBcIiR7cHJvcC5uYW1lfVwiIGluICR7ZnFufSAoYWxyZWFkeSBkZWNsYXJlZCBpbiAke29wdGlvbnNbcHJvcC5uYW1lXS5wYXJlbnR9KWApO1xuICAgICAgfVxuXG4gICAgICBsZXQganNpaUtpbmQ7XG4gICAgICBpZiAocHJvcC50eXBlPy5mcW4pIHtcbiAgICAgICAganNpaUtpbmQgPSBqc2lpW3Byb3AudHlwZT8uZnFuXS5raW5kOyAvLyBlLmcuICdjbGFzcycsICdpbnRlcmZhY2UnLCAnZW51bSdcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNPcHRpb25hbCA9IG9wdGlvbmFsIHx8IHByb3Aub3B0aW9uYWw7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gcHJvcC5kb2NzPy5kZWZhdWx0O1xuXG4gICAgICBpZiAoZGVmYXVsdFZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHRoaXMgaXMgYSBtYW5kYXRvcnkgb3B0aW9uIGFuZCB3ZSBoYXZlIGEgZGVmYXVsdCB2YWx1ZSwgaXQgaGFzIHRvIGJlIEpTT04tcGFyc2FibGUgdG8gdGhlIGNvcnJlY3QgdHlwZVxuICAgICAgaWYgKCFpc09wdGlvbmFsICYmIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBpZiAoIXByb3AudHlwZT8ucHJpbWl0aXZlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZXF1aXJlZCBvcHRpb24gXCIke3Byb3AubmFtZX1cIiB3aXRoIGEgQGRlZmF1bHQgbXVzdCB1c2UgcHJpbWl0aXZlIHR5cGVzIChzdHJpbmcsIG51bWJlciBvciBib29sZWFuKS4gdHlwZSBmb3VuZCBpczogJHtKU09OLnN0cmluZ2lmeShwcm9wLnR5cGUpfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hlY2tEZWZhdWx0SXNQYXJzYWJsZShwcm9wLm5hbWUsIGRlZmF1bHRWYWx1ZSwgcHJvcC50eXBlPy5wcmltaXRpdmUpO1xuICAgICAgfVxuXG4gICAgICBvcHRpb25zW3Byb3AubmFtZV0gPSBmaWx0ZXJVbmRlZmluZWQoe1xuICAgICAgICBwYXRoOiBwcm9wUGF0aCxcbiAgICAgICAgcGFyZW50OiBzdHJ1Y3QubmFtZSxcbiAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICBmcW46IHByb3AudHlwZT8uZnFuLFxuICAgICAgICBkb2NzOiBwcm9wLmRvY3Muc3VtbWFyeSxcbiAgICAgICAgc2ltcGxlVHlwZTogcHJvcC50eXBlID8gZ2V0U2ltcGxlVHlwZU5hbWUocHJvcC50eXBlKSA6ICd1bmtub3duJyxcbiAgICAgICAgZnVsbFR5cGU6IHByb3AudHlwZSxcbiAgICAgICAga2luZDoganNpaUtpbmQsXG4gICAgICAgIGpzb25MaWtlOiBwcm9wLnR5cGUgPyBpc0pzb25MaWtlKGpzaWksIHByb3AudHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIHN3aXRjaDogcHJvcFBhdGgubWFwKHAgPT4gc25ha2UocCkucmVwbGFjZSgvXy9nLCAnLScpKS5qb2luKCctJyksXG4gICAgICAgIGRlZmF1bHQ6IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgb3B0aW9uYWw6IGlzT3B0aW9uYWwsXG4gICAgICAgIGZlYXR1cmVkOiBwcm9wLmRvY3M/LmN1c3RvbT8uZmVhdHVyZWQgPT09ICd0cnVlJyxcbiAgICAgICAgZGVwcmVjYXRlZDogcHJvcC5kb2NzLnN0YWJpbGl0eSA9PT0gJ2RlcHJlY2F0ZWQnID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaWZjIG9mIHN0cnVjdC5pbnRlcmZhY2VzID8/IFtdKSB7XG4gICAgICBhZGRPcHRpb25zKGlmYyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNpbXBsZVR5cGVOYW1lKHR5cGU6IEpzaWlQcm9wZXJ0eVR5cGUpOiBzdHJpbmcge1xuICBpZiAodHlwZT8ucHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHR5cGUucHJpbWl0aXZlOyAvLyBlLmcuICdzdHJpbmcnLCAnYm9vbGVhbicsICdudW1iZXInXG4gIH0gZWxzZSBpZiAodHlwZT8uZnFuKSB7XG4gICAgcmV0dXJuIHR5cGUuZnFuLnNwbGl0KCcuJykucG9wKCkhOyAvLyBwcm9qZW4uTm9kZVByb2plY3RPcHRpb25zIC0+IE5vZGVQcm9qZWN0T3B0aW9uc1xuICB9IGVsc2UgeyAvLyBhbnkgb3RoZXIgdHlwZXMgc3VjaCBhcyBjb2xsZWN0aW9uIHR5cGVzXG4gICAgcmV0dXJuICd1bmtub3duJztcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgYSB2YWx1ZSBvZiB0aGlzIHR5cGUgaXMgc2VyaWFsaXphYmxlIGludG8gSlNPTi5cbiAqL1xuZnVuY3Rpb24gaXNKc29uTGlrZShqc2lpOiBKc2lpVHlwZXMsIHR5cGU6IEpzaWlQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgaWYgKHR5cGUucHJpbWl0aXZlKSB7IC8vIHN0cmluZywgYm9vbGVhbiwgbnVtYmVyLCBhbnlcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmICh0eXBlLmZxbikge1xuICAgIGNvbnN0IGtpbmQgPSBqc2lpW3R5cGUuZnFuXS5raW5kO1xuICAgIGlmIChbJ2ludGVyZmFjZScsICdlbnVtJ10uaW5jbHVkZXMoa2luZCkpIHsgLy8gbm90ICdjbGFzcydcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlLmNvbGxlY3Rpb24pIHtcbiAgICByZXR1cm4gaXNKc29uTGlrZShqc2lpLCB0eXBlLmNvbGxlY3Rpb24uZWxlbWVudHR5cGUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZmlsdGVyVW5kZWZpbmVkKG9iajogYW55KSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXRba10gPSB2O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBpc1Byb2plY3RUeXBlKGpzaWk6IEpzaWlUeXBlcywgZnFuOiBzdHJpbmcpIHtcbiAgY29uc3QgdHlwZSA9IGpzaWlbZnFuXTtcblxuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHByb2plY3QgdHlwZSB3aXRoIGZxbiBcIiR7ZnFufVwiIGluICAuanNpaSBmaWxlLmApO1xuICB9XG5cbiAgaWYgKHR5cGUua2luZCAhPT0gJ2NsYXNzJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZS5hYnN0cmFjdCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlLmRvY3M/LmRlcHJlY2F0ZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsZXQgY3VyciA9IHR5cGU7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGN1cnIuZnFuID09PSBQUk9KRUNUX0JBU0VfRlFOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnIuYmFzZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGN1cnIgPSBqc2lpW2N1cnIuYmFzZV07XG4gICAgaWYgKCFjdXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrRGVmYXVsdElzUGFyc2FibGUocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpIHtcbiAgLy8gbWFjcm9zIGFyZSBwYXNzLXRocm91Z2hcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJyQnKSkge1xuICAgIHJldHVybjtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgIGlmICh0eXBlb2YocGFyc2VkKSAhPT0gdHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgcGFyc2UgQGRlZmF1bHQgdmFsdWUgZm9yIG1hbmRhdG9yeSBvcHRpb24gJHtwcm9wfSBhcyBhICR7dHlwZX06ICR7cGFyc2VkfWApO1xuICAgIH1cblxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gSlNPTi5wYXJzZSgpIHZhbHVlIFwiJHt2YWx1ZX1cIiBzcGVjaWZpZWQgYXMgQGRlZmF1bHQgZm9yIG1hbmRhdG9yeSBvcHRpb24gXCIke3Byb3B9XCI6ICR7KGUgYXMgYW55KS5tZXNzYWdlfWApO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,5 @@
1
1
  import { GitHubProject, GitHubProjectOptions } from '../project';
2
+ import { Task } from '../tasks';
2
3
  import { Junit, JunitOptions } from './junit';
3
4
  import { MavenCompile, MavenCompileOptions } from './maven-compile';
4
5
  import { MavenPackaging, MavenPackagingOptions } from './maven-packaging';
@@ -9,7 +10,7 @@ import { Projenrc as ProjenrcJava, ProjenrcOptions } from './projenrc';
9
10
  *
10
11
  * @experimental
11
12
  */
12
- export interface JavaProjectOptions extends GitHubProjectOptions, PomOptions {
13
+ export interface JavaProjectCommonOptions extends GitHubProjectOptions, PomOptions {
13
14
  /**
14
15
  * (experimental) Final artifact output directory.
15
16
  *
@@ -69,19 +70,6 @@ export interface JavaProjectOptions extends GitHubProjectOptions, PomOptions {
69
70
  * @experimental
70
71
  */
71
72
  readonly compileOptions?: MavenCompileOptions;
72
- /**
73
- * (experimental) Include sample code and test if the relevant directories don't exist.
74
- *
75
- * @experimental
76
- */
77
- readonly sample?: boolean;
78
- /**
79
- * (experimental) The java package to use for the code sample.
80
- *
81
- * @default "org.acme"
82
- * @experimental
83
- */
84
- readonly sampleJavaPackage?: string;
85
73
  /**
86
74
  * (experimental) Use projenrc in java.
87
75
  *
@@ -100,6 +88,26 @@ export interface JavaProjectOptions extends GitHubProjectOptions, PomOptions {
100
88
  */
101
89
  readonly projenrcJavaOptions?: ProjenrcOptions;
102
90
  }
91
+ /**
92
+ * (experimental) Options for `JavaProject`.
93
+ *
94
+ * @experimental
95
+ */
96
+ export interface JavaProjectOptions extends JavaProjectCommonOptions {
97
+ /**
98
+ * (experimental) Include sample code and test if the relevant directories don't exist.
99
+ *
100
+ * @experimental
101
+ */
102
+ readonly sample?: boolean;
103
+ /**
104
+ * (experimental) The java package to use for the code sample.
105
+ *
106
+ * @default "org.acme"
107
+ * @experimental
108
+ */
109
+ readonly sampleJavaPackage?: string;
110
+ }
103
111
  /**
104
112
  * (experimental) Java project.
105
113
  *
@@ -143,6 +151,12 @@ export declare class JavaProject extends GitHubProject {
143
151
  * @experimental
144
152
  */
145
153
  readonly distdir: string;
154
+ /**
155
+ * (experimental) The primary build task.
156
+ *
157
+ * @experimental
158
+ */
159
+ readonly buildTask: Task;
146
160
  /**
147
161
  * @experimental
148
162
  */
@@ -56,6 +56,7 @@ class JavaProject extends project_1.GitHubProject {
56
56
  });
57
57
  const buildTask = this.addTask('build', { description: 'Full CI build' });
58
58
  buildTask.spawn(this.packaging.task);
59
+ this.buildTask = buildTask;
59
60
  for (const dep of (_g = options.deps) !== null && _g !== void 0 ? _g : []) {
60
61
  this.addDependency(dep);
61
62
  }
@@ -96,5 +97,5 @@ class JavaProject extends project_1.GitHubProject {
96
97
  }
97
98
  exports.JavaProject = JavaProject;
98
99
  _a = JSII_RTTI_SYMBOL_1;
99
- JavaProject[_a] = { fqn: "projen.java.JavaProject", version: "0.31.18" };
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0NBQWlFO0FBQ2pFLG1DQUE4QztBQUM5QyxtREFBb0U7QUFDcEUsdURBQTBFO0FBQzFFLGlEQUE2QztBQUM3QywrQkFBdUQ7QUFDdkQseUNBQXVFOzs7Ozs7O0FBMkN2RSxNQUFhLFdBQVksU0FBUSx1QkFBYTs7OztJQW1CNUMsWUFBWSxPQUEyQjs7UUFDckMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLE9BQU8sU0FBRyxPQUFPLENBQUMsT0FBTyxtQ0FBSSxXQUFXLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEMsVUFBSSxPQUFPLENBQUMsWUFBWSxtQ0FBSSxJQUFJLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDL0U7UUFFRCxNQUFNLGlCQUFpQixTQUFHLE9BQU8sQ0FBQyxpQkFBaUIsbUNBQUksVUFBVSxDQUFDO1FBRWxFLFVBQUksT0FBTyxDQUFDLEtBQUssbUNBQUksSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxhQUFLLENBQUMsSUFBSSxFQUFFO2dCQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsaUJBQWlCO2dCQUNqQixHQUFHLE9BQU8sQ0FBQyxZQUFZO2FBQ3hCLENBQUMsQ0FBQztTQUNKO1FBRUQsVUFBSSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxJQUFJLEVBQUU7WUFDMUIsSUFBSSwwQkFBVyxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7U0FDdkQ7UUFFRCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsOEJBQThCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxTQUFTLENBQUMseURBQXlELEVBQUU7WUFDeEUsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsYUFBYSxFQUFFO2dCQUNiLEtBQUssRUFBRTtvQkFDTCxFQUFFLG1CQUFtQixFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtpQkFDOUM7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDMUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLEtBQUssTUFBTSxHQUFHLFVBQUksT0FBTyxDQUFDLElBQUksbUNBQUksRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxLQUFLLE1BQU0sR0FBRyxVQUFJLE9BQU8sQ0FBQyxRQUFRLG1DQUFJLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDOzs7Ozs7O0lBR00sYUFBYSxDQUFDLElBQVk7UUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7Ozs7O0lBR00saUJBQWlCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Ozs7Ozs7OztJQUdNLFNBQVMsQ0FBQyxJQUFZLEVBQUUsVUFBeUIsRUFBRTtRQUN4RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDOztBQXZGSCxrQ0F3RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHaXRIdWJQcm9qZWN0LCBHaXRIdWJQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4uL3Byb2plY3QnO1xuaW1wb3J0IHsgSnVuaXQsIEp1bml0T3B0aW9ucyB9IGZyb20gJy4vanVuaXQnO1xuaW1wb3J0IHsgTWF2ZW5Db21waWxlLCBNYXZlbkNvbXBpbGVPcHRpb25zIH0gZnJvbSAnLi9tYXZlbi1jb21waWxlJztcbmltcG9ydCB7IE1hdmVuUGFja2FnaW5nLCBNYXZlblBhY2thZ2luZ09wdGlvbnMgfSBmcm9tICcuL21hdmVuLXBhY2thZ2luZyc7XG5pbXBvcnQgeyBNYXZlblNhbXBsZSB9IGZyb20gJy4vbWF2ZW4tc2FtcGxlJztcbmltcG9ydCB7IFBsdWdpbk9wdGlvbnMsIFBvbSwgUG9tT3B0aW9ucyB9IGZyb20gJy4vcG9tJztcbmltcG9ydCB7IFByb2plbnJjIGFzIFByb2plbnJjSmF2YSwgUHJvamVucmNPcHRpb25zIH0gZnJvbSAnLi9wcm9qZW5yYyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgSmF2YVByb2plY3RPcHRpb25zIGV4dGVuZHMgR2l0SHViUHJvamVjdE9wdGlvbnMsIFBvbU9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGlzdGRpcj86IHN0cmluZztcblxuICAvLyAtLSBkZXBlbmRlbmNpZXMgLS1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVwcz86IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGVzdERlcHM/OiBzdHJpbmdbXTtcblxuICAvLyAtLSBjb21wb25lbnRzIC0tXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGp1bml0PzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBqdW5pdE9wdGlvbnM/OiBKdW5pdE9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwYWNrYWdpbmdPcHRpb25zPzogTWF2ZW5QYWNrYWdpbmdPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvbXBpbGVPcHRpb25zPzogTWF2ZW5Db21waWxlT3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlSmF2YVBhY2thZ2U/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHByb2plbnJjSmF2YT86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvamVucmNKYXZhT3B0aW9ucz86IFByb2plbnJjT3B0aW9ucztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBKYXZhUHJvamVjdCBleHRlbmRzIEdpdEh1YlByb2plY3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHBvbTogUG9tO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGp1bml0PzogSnVuaXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHBhY2thZ2luZzogTWF2ZW5QYWNrYWdpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjb21waWxlOiBNYXZlbkNvbXBpbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVucmM/OiBQcm9qZW5yY0phdmE7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGRpc3RkaXI6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKYXZhUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuZGlzdGRpciA9IG9wdGlvbnMuZGlzdGRpciA/PyAnZGlzdC9qYXZhJztcbiAgICB0aGlzLnBvbSA9IG5ldyBQb20odGhpcywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5wcm9qZW5yY0phdmEgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5wcm9qZW5yYyA9IG5ldyBQcm9qZW5yY0phdmEodGhpcywgdGhpcy5wb20sIG9wdGlvbnMucHJvamVucmNKYXZhT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2FtcGxlSmF2YVBhY2thZ2UgPSBvcHRpb25zLnNhbXBsZUphdmFQYWNrYWdlID8/ICdvcmcuYWNtZSc7XG5cbiAgICBpZiAob3B0aW9ucy5qdW5pdCA/PyB0cnVlKSB7XG4gICAgICB0aGlzLmp1bml0ID0gbmV3IEp1bml0KHRoaXMsIHtcbiAgICAgICAgcG9tOiB0aGlzLnBvbSxcbiAgICAgICAgc2FtcGxlSmF2YVBhY2thZ2UsXG4gICAgICAgIC4uLm9wdGlvbnMuanVuaXRPcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlID8/IHRydWUpIHtcbiAgICAgIG5ldyBNYXZlblNhbXBsZSh0aGlzLCB7IHBhY2thZ2U6IHNhbXBsZUphdmFQYWNrYWdlIH0pO1xuICAgIH1cblxuICAgIC8vIHBsYXRmb3JtIGluZGVwZW5kZW50IGJ1aWxkXG4gICAgdGhpcy5wb20uYWRkUHJvcGVydHkoJ3Byb2plY3QuYnVpbGQuc291cmNlRW5jb2RpbmcnLCAnVVRGLTgnKTtcblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoJy5jbGFzc3BhdGgnKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCcucHJvamVjdCcpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoJy5zZXR0aW5ncycpO1xuXG4gICAgdGhpcy5jb21waWxlID0gbmV3IE1hdmVuQ29tcGlsZSh0aGlzLCB0aGlzLnBvbSwgb3B0aW9ucy5jb21waWxlT3B0aW9ucyk7XG4gICAgdGhpcy5wYWNrYWdpbmcgPSBuZXcgTWF2ZW5QYWNrYWdpbmcodGhpcywgdGhpcy5wb20sIG9wdGlvbnMucGFja2FnaW5nT3B0aW9ucyk7XG5cbiAgICB0aGlzLmFkZFBsdWdpbignb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLWVuZm9yY2VyLXBsdWdpbkAzLjAuMC1NMycsIHtcbiAgICAgIGV4ZWN1dGlvbnM6IFt7IGlkOiAnZW5mb3JjZS1tYXZlbicsIGdvYWxzOiBbJ2VuZm9yY2UnXSB9XSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICB7IHJlcXVpcmVNYXZlblZlcnNpb246IFt7IHZlcnNpb246ICczLjYnIH1dIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgYnVpbGRUYXNrID0gdGhpcy5hZGRUYXNrKCdidWlsZCcsIHsgZGVzY3JpcHRpb246ICdGdWxsIENJIGJ1aWxkJyB9KTtcbiAgICBidWlsZFRhc2suc3Bhd24odGhpcy5wYWNrYWdpbmcudGFzayk7XG5cbiAgICBmb3IgKGNvbnN0IGRlcCBvZiBvcHRpb25zLmRlcHMgPz8gW10pIHtcbiAgICAgIHRoaXMuYWRkRGVwZW5kZW5jeShkZXApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGVwIG9mIG9wdGlvbnMudGVzdERlcHMgPz8gW10pIHtcbiAgICAgIHRoaXMuYWRkVGVzdERlcGVuZGVuY3koZGVwKTtcbiAgICB9XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wb20uYWRkRGVwZW5kZW5jeShzcGVjKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhZGRUZXN0RGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wb20uYWRkVGVzdERlcGVuZGVuY3koc3BlYyk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFkZFBsdWdpbihzcGVjOiBzdHJpbmcsIG9wdGlvbnM6IFBsdWdpbk9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnBvbS5hZGRQbHVnaW4oc3BlYywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
100
+ JavaProject[_a] = { fqn: "projen.java.JavaProject", version: "0.32.2" };
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0NBQWlFO0FBRWpFLG1DQUE4QztBQUM5QyxtREFBb0U7QUFDcEUsdURBQTBFO0FBQzFFLGlEQUE2QztBQUM3QywrQkFBdUQ7QUFDdkQseUNBQXVFOzs7Ozs7O0FBOEN2RSxNQUFhLFdBQVksU0FBUSx1QkFBYTs7OztJQXNCNUMsWUFBWSxPQUEyQjs7UUFDckMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLE9BQU8sU0FBRyxPQUFPLENBQUMsT0FBTyxtQ0FBSSxXQUFXLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEMsVUFBSSxPQUFPLENBQUMsWUFBWSxtQ0FBSSxJQUFJLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDL0U7UUFFRCxNQUFNLGlCQUFpQixTQUFHLE9BQU8sQ0FBQyxpQkFBaUIsbUNBQUksVUFBVSxDQUFDO1FBRWxFLFVBQUksT0FBTyxDQUFDLEtBQUssbUNBQUksSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxhQUFLLENBQUMsSUFBSSxFQUFFO2dCQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsaUJBQWlCO2dCQUNqQixHQUFHLE9BQU8sQ0FBQyxZQUFZO2FBQ3hCLENBQUMsQ0FBQztTQUNKO1FBRUQsVUFBSSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxJQUFJLEVBQUU7WUFDMUIsSUFBSSwwQkFBVyxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7U0FDdkQ7UUFFRCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsOEJBQThCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxTQUFTLENBQUMseURBQXlELEVBQUU7WUFDeEUsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsYUFBYSxFQUFFO2dCQUNiLEtBQUssRUFBRTtvQkFDTCxFQUFFLG1CQUFtQixFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtpQkFDOUM7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDMUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLEtBQUssTUFBTSxHQUFHLFVBQUksT0FBTyxDQUFDLElBQUksbUNBQUksRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxLQUFLLE1BQU0sR0FBRyxVQUFJLE9BQU8sQ0FBQyxRQUFRLG1DQUFJLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDOzs7Ozs7O0lBR00sYUFBYSxDQUFDLElBQVk7UUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7Ozs7O0lBR00saUJBQWlCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Ozs7Ozs7OztJQUdNLFNBQVMsQ0FBQyxJQUFZLEVBQUUsVUFBeUIsRUFBRTtRQUN4RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDOztBQTNGSCxrQ0E0RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHaXRIdWJQcm9qZWN0LCBHaXRIdWJQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4uL3Byb2plY3QnO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzJztcbmltcG9ydCB7IEp1bml0LCBKdW5pdE9wdGlvbnMgfSBmcm9tICcuL2p1bml0JztcbmltcG9ydCB7IE1hdmVuQ29tcGlsZSwgTWF2ZW5Db21waWxlT3B0aW9ucyB9IGZyb20gJy4vbWF2ZW4tY29tcGlsZSc7XG5pbXBvcnQgeyBNYXZlblBhY2thZ2luZywgTWF2ZW5QYWNrYWdpbmdPcHRpb25zIH0gZnJvbSAnLi9tYXZlbi1wYWNrYWdpbmcnO1xuaW1wb3J0IHsgTWF2ZW5TYW1wbGUgfSBmcm9tICcuL21hdmVuLXNhbXBsZSc7XG5pbXBvcnQgeyBQbHVnaW5PcHRpb25zLCBQb20sIFBvbU9wdGlvbnMgfSBmcm9tICcuL3BvbSc7XG5pbXBvcnQgeyBQcm9qZW5yYyBhcyBQcm9qZW5yY0phdmEsIFByb2plbnJjT3B0aW9ucyB9IGZyb20gJy4vcHJvamVucmMnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEphdmFQcm9qZWN0Q29tbW9uT3B0aW9ucyBleHRlbmRzIEdpdEh1YlByb2plY3RPcHRpb25zLCBQb21PcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRpc3RkaXI/OiBzdHJpbmc7XG5cbiAgLy8gLS0gZGVwZW5kZW5jaWVzIC0tXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRlcHM/OiBzdHJpbmdbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRlc3REZXBzPzogc3RyaW5nW107XG5cbiAgLy8gLS0gY29tcG9uZW50cyAtLVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBqdW5pdD86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkganVuaXRPcHRpb25zPzogSnVuaXRPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcGFja2FnaW5nT3B0aW9ucz86IE1hdmVuUGFja2FnaW5nT3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjb21waWxlT3B0aW9ucz86IE1hdmVuQ29tcGlsZU9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHByb2plbnJjSmF2YT86IGJvb2xlYW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvamVucmNKYXZhT3B0aW9ucz86IFByb2plbnJjT3B0aW9ucztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBKYXZhUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBKYXZhUHJvamVjdENvbW1vbk9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlSmF2YVBhY2thZ2U/OiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgSmF2YVByb2plY3QgZXh0ZW5kcyBHaXRIdWJQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBwb206IFBvbTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBqdW5pdD86IEp1bml0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBwYWNrYWdpbmc6IE1hdmVuUGFja2FnaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY29tcGlsZTogTWF2ZW5Db21waWxlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHByb2plbnJjPzogUHJvamVucmNKYXZhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBkaXN0ZGlyOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkVGFzazogVGFzaztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKYXZhUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuZGlzdGRpciA9IG9wdGlvbnMuZGlzdGRpciA/PyAnZGlzdC9qYXZhJztcbiAgICB0aGlzLnBvbSA9IG5ldyBQb20odGhpcywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5wcm9qZW5yY0phdmEgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5wcm9qZW5yYyA9IG5ldyBQcm9qZW5yY0phdmEodGhpcywgdGhpcy5wb20sIG9wdGlvbnMucHJvamVucmNKYXZhT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2FtcGxlSmF2YVBhY2thZ2UgPSBvcHRpb25zLnNhbXBsZUphdmFQYWNrYWdlID8/ICdvcmcuYWNtZSc7XG5cbiAgICBpZiAob3B0aW9ucy5qdW5pdCA/PyB0cnVlKSB7XG4gICAgICB0aGlzLmp1bml0ID0gbmV3IEp1bml0KHRoaXMsIHtcbiAgICAgICAgcG9tOiB0aGlzLnBvbSxcbiAgICAgICAgc2FtcGxlSmF2YVBhY2thZ2UsXG4gICAgICAgIC4uLm9wdGlvbnMuanVuaXRPcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlID8/IHRydWUpIHtcbiAgICAgIG5ldyBNYXZlblNhbXBsZSh0aGlzLCB7IHBhY2thZ2U6IHNhbXBsZUphdmFQYWNrYWdlIH0pO1xuICAgIH1cblxuICAgIC8vIHBsYXRmb3JtIGluZGVwZW5kZW50IGJ1aWxkXG4gICAgdGhpcy5wb20uYWRkUHJvcGVydHkoJ3Byb2plY3QuYnVpbGQuc291cmNlRW5jb2RpbmcnLCAnVVRGLTgnKTtcblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoJy5jbGFzc3BhdGgnKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCcucHJvamVjdCcpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoJy5zZXR0aW5ncycpO1xuXG4gICAgdGhpcy5jb21waWxlID0gbmV3IE1hdmVuQ29tcGlsZSh0aGlzLCB0aGlzLnBvbSwgb3B0aW9ucy5jb21waWxlT3B0aW9ucyk7XG4gICAgdGhpcy5wYWNrYWdpbmcgPSBuZXcgTWF2ZW5QYWNrYWdpbmcodGhpcywgdGhpcy5wb20sIG9wdGlvbnMucGFja2FnaW5nT3B0aW9ucyk7XG5cbiAgICB0aGlzLmFkZFBsdWdpbignb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLWVuZm9yY2VyLXBsdWdpbkAzLjAuMC1NMycsIHtcbiAgICAgIGV4ZWN1dGlvbnM6IFt7IGlkOiAnZW5mb3JjZS1tYXZlbicsIGdvYWxzOiBbJ2VuZm9yY2UnXSB9XSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICB7IHJlcXVpcmVNYXZlblZlcnNpb246IFt7IHZlcnNpb246ICczLjYnIH1dIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgYnVpbGRUYXNrID0gdGhpcy5hZGRUYXNrKCdidWlsZCcsIHsgZGVzY3JpcHRpb246ICdGdWxsIENJIGJ1aWxkJyB9KTtcbiAgICBidWlsZFRhc2suc3Bhd24odGhpcy5wYWNrYWdpbmcudGFzayk7XG4gICAgdGhpcy5idWlsZFRhc2sgPSBidWlsZFRhc2s7XG5cbiAgICBmb3IgKGNvbnN0IGRlcCBvZiBvcHRpb25zLmRlcHMgPz8gW10pIHtcbiAgICAgIHRoaXMuYWRkRGVwZW5kZW5jeShkZXApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGVwIG9mIG9wdGlvbnMudGVzdERlcHMgPz8gW10pIHtcbiAgICAgIHRoaXMuYWRkVGVzdERlcGVuZGVuY3koZGVwKTtcbiAgICB9XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wb20uYWRkRGVwZW5kZW5jeShzcGVjKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhZGRUZXN0RGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wb20uYWRkVGVzdERlcGVuZGVuY3koc3BlYyk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFkZFBsdWdpbihzcGVjOiBzdHJpbmcsIG9wdGlvbnM6IFBsdWdpbk9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnBvbS5hZGRQbHVnaW4oc3BlYywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
package/lib/java/junit.js CHANGED
@@ -49,5 +49,5 @@ class Junit extends component_1.Component {
49
49
  }
50
50
  exports.Junit = Junit;
51
51
  _a = JSII_RTTI_SYMBOL_1;
52
- Junit[_a] = { fqn: "projen.java.Junit", version: "0.31.18" };
52
+ Junit[_a] = { fqn: "projen.java.Junit", version: "0.32.2" };
53
53
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9qdW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUE0QjtBQUM1Qiw0Q0FBeUM7QUFFekMsZ0RBQTJDO0FBRzNDLE1BQU0sT0FBTyxHQUFHLFdBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDOzs7Ozs7QUFlNUMsTUFBYSxLQUFNLFNBQVEscUJBQVM7Ozs7SUFDbEMsWUFBWSxPQUFnQixFQUFFLE9BQXFCOztRQUNqRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxTQUFHLE9BQU8sQ0FBQyxPQUFPLG1DQUFJLE9BQU8sQ0FBQztRQUUzQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsdUNBQXVDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLDBDQUEwQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3RCLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxTQUFHLE9BQU8sQ0FBQyxpQkFBaUIsbUNBQUksVUFBVSxDQUFDO1FBQzVELE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsSUFBSSx1QkFBUyxDQUFDLE9BQU8sRUFBRSxXQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsZUFBZSxDQUFDLEVBQUU7WUFDeEQsS0FBSyxFQUFFO2dCQUNMLGFBQWEsRUFBRTtvQkFDYixXQUFXLFdBQVcsR0FBRztvQkFDekIsRUFBRTtvQkFDRixvQ0FBb0M7b0JBQ3BDLEVBQUU7b0JBQ0YsdUJBQXVCO29CQUN2QixTQUFTO29CQUNULDZCQUE2QjtvQkFDN0IsMENBQTBDO29CQUMxQyxLQUFLO29CQUNMLEdBQUc7aUJBQ0osQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2I7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWpDSCxzQkFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3Byb2plY3QnO1xuaW1wb3J0IHsgU2FtcGxlRGlyIH0gZnJvbSAnLi4vc2FtcGxlLWZpbGUnO1xuaW1wb3J0IHsgUG9tIH0gZnJvbSAnLi9wb20nO1xuXG5jb25zdCBURVNURElSID0gam9pbignc3JjJywgJ3Rlc3QnLCAnamF2YScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEp1bml0T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwb206IFBvbTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNhbXBsZUphdmFQYWNrYWdlPzogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBKdW5pdCBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEp1bml0T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgcG9tID0gb3B0aW9ucy5wb207XG4gICAgY29uc3QgdmVyc2lvbiA9IG9wdGlvbnMudmVyc2lvbiA/PyAnNS43LjAnO1xuXG4gICAgcG9tLmFkZFRlc3REZXBlbmRlbmN5KGBvcmcuanVuaXQuanVwaXRlci9qdW5pdC1qdXBpdGVyLWFwaUAke3ZlcnNpb259YCk7XG4gICAgcG9tLmFkZFRlc3REZXBlbmRlbmN5KGBvcmcuanVuaXQuanVwaXRlci9qdW5pdC1qdXBpdGVyLWVuZ2luZUAke3ZlcnNpb259YCk7XG5cbiAgICBwcm9qZWN0LmFkZFRhc2soJ3Rlc3QnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1J1bnMgdGVzdHMnLFxuICAgICAgZXhlYzogJ212biB0ZXN0JyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGphdmFQYWNrYWdlID0gb3B0aW9ucy5zYW1wbGVKYXZhUGFja2FnZSA/PyAnb3JnLmFjbWUnO1xuICAgIGNvbnN0IGphdmFQYWNrYWdlUGF0aCA9IGphdmFQYWNrYWdlLnNwbGl0KCcuJyk7XG4gICAgbmV3IFNhbXBsZURpcihwcm9qZWN0LCBqb2luKFRFU1RESVIsIC4uLmphdmFQYWNrYWdlUGF0aCksIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgICdNeVRlc3QuamF2YSc6IFtcbiAgICAgICAgICBgcGFja2FnZSAke2phdmFQYWNrYWdlfTtgLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdpbXBvcnQgb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLlRlc3Q7JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAncHVibGljIGNsYXNzIE15VGVzdCB7JyxcbiAgICAgICAgICAnICBAVGVzdCcsXG4gICAgICAgICAgJyAgcHVibGljIHZvaWQgdGVzdEhlbGxvKCkgeycsXG4gICAgICAgICAgJyAgICBTeXN0ZW0ub3V0LnByaW50bG4oXCJIZWxsbywgd29ybGQhXCIpOycsXG4gICAgICAgICAgJyAgfScsXG4gICAgICAgICAgJ30nLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -31,5 +31,5 @@ class MavenCompile extends component_1.Component {
31
31
  }
32
32
  exports.MavenCompile = MavenCompile;
33
33
  _a = JSII_RTTI_SYMBOL_1;
34
- MavenCompile[_a] = { fqn: "projen.java.MavenCompile", version: "0.31.18" };
34
+ MavenCompile[_a] = { fqn: "projen.java.MavenCompile", version: "0.32.2" };
35
35
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW4tY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhL21hdmVuLWNvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7Ozs7OztBQWV6QyxNQUFhLFlBQWEsU0FBUSxxQkFBUzs7OztJQUd6QyxZQUFZLE9BQWdCLEVBQUUsR0FBUSxFQUFFLFVBQStCLEVBQUU7O1FBQ3ZFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLEdBQUcsQ0FBQyxTQUFTLENBQUMsc0RBQXNELEVBQUU7WUFDcEUsYUFBYSxFQUFFO2dCQUNiLE1BQU0sUUFBRSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxLQUFLO2dCQUMvQixNQUFNLFFBQUUsT0FBTyxDQUFDLE1BQU0sbUNBQUksS0FBSzthQUNoQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDNUMsV0FBVyxFQUFFLCtCQUErQjtZQUM1QyxJQUFJLEVBQUUsc0JBQXNCO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbkJILG9DQW9CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vcHJvamVjdCc7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdGFza3MnO1xuaW1wb3J0IHsgUG9tIH0gZnJvbSAnLi9wb20nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBNYXZlbkNvbXBpbGVPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzb3VyY2U/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgTWF2ZW5Db21waWxlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbXBpbGVUYXNrOiBUYXNrO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHBvbTogUG9tLCBvcHRpb25zOiBNYXZlbkNvbXBpbGVPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHByb2plY3QuZ2l0aWdub3JlLmV4Y2x1ZGUoJ3RhcmdldCcpO1xuXG4gICAgcG9tLmFkZFBsdWdpbignb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLWNvbXBpbGVyLXBsdWdpbkAzLjguMScsIHtcbiAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgc291cmNlOiBvcHRpb25zLnNvdXJjZSA/PyAnMS44JyxcbiAgICAgICAgdGFyZ2V0OiBvcHRpb25zLnRhcmdldCA/PyAnMS44JyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbXBpbGVUYXNrID0gcHJvamVjdC5hZGRUYXNrKCdjb21waWxlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdDb21waWxlIHRoZSBtYWluIHNvdXJjZSBmaWxlcycsXG4gICAgICBleGVjOiAnbXZuIGNvbXBpbGVyOmNvbXBpbGUnLFxuICAgIH0pO1xuICB9XG59Il19
@@ -68,5 +68,5 @@ class MavenPackaging extends component_1.Component {
68
68
  }
69
69
  exports.MavenPackaging = MavenPackaging;
70
70
  _a = JSII_RTTI_SYMBOL_1;
71
- MavenPackaging[_a] = { fqn: "projen.java.MavenPackaging", version: "0.31.18" };
71
+ MavenPackaging[_a] = { fqn: "projen.java.MavenPackaging", version: "0.32.2" };
72
72
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW4tcGFja2FnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvbWF2ZW4tcGFja2FnaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQXlDOzs7Ozs7QUFxQnpDLE1BQWEsY0FBZSxTQUFRLHFCQUFTOzs7O0lBSTNDLFlBQVksT0FBZ0IsRUFBRSxHQUFRLEVBQUUsVUFBaUMsRUFBRTs7UUFDekUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsR0FBRyxDQUFDLFNBQVMsQ0FBQyxpREFBaUQsRUFBRTtZQUMvRCxhQUFhLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFO29CQUNQLEtBQUssRUFBRSxJQUFJO29CQUNYLFFBQVEsRUFBRTt3QkFDUiwrQkFBK0IsRUFBRSxJQUFJO3dCQUNyQyw4QkFBOEIsRUFBRSxJQUFJO3FCQUNyQztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsVUFBSSxPQUFPLENBQUMsT0FBTyxtQ0FBSSxJQUFJLEVBQUU7WUFDM0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxvREFBb0QsRUFBRTtnQkFDbEUsVUFBVSxFQUFFO29CQUNWLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO2lCQUN6QzthQUNGLENBQUMsQ0FBQztTQUNKO1FBRUQsVUFBSSxPQUFPLENBQUMsUUFBUSxtQ0FBSSxJQUFJLEVBQUU7WUFDNUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxxREFBcUQsRUFBRTtnQkFDbkUsVUFBVSxFQUFFO29CQUNWLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO2lCQUMxQztnQkFDRCxhQUFhLEVBQUU7b0JBQ2IsV0FBVyxFQUFFLEtBQUs7b0JBQ2xCLElBQUksRUFBRSxXQUFXO29CQUNqQixrQkFBa0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFO29CQUN4RCxpQkFBaUIsRUFBRSxLQUFLO29CQUN4QixrQkFBa0IsRUFBRTt3QkFDbEIsaUJBQWlCLEVBQUU7NEJBQ2pCLDBCQUEwQjs0QkFDMUIsMkJBQTJCO3lCQUM1QjtxQkFDRjtpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO1FBRUQsTUFBTSxHQUFHLEdBQUc7WUFDVixVQUFVLEVBQUUsZ0RBQWdEO1NBQzdELENBQUM7UUFFRixNQUFNLE9BQU8sU0FBRyxPQUFPLENBQUMsT0FBTyxtQ0FBSSxXQUFXLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNyQyxXQUFXLEVBQUUsMkNBQTJDLE9BQU8sRUFBRTtZQUNqRSxHQUFHO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNFQUFzRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRWhHLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7O0FBNURILHdDQTZEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vcHJvamVjdCc7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdGFza3MnO1xuaW1wb3J0IHsgUG9tIH0gZnJvbSAnLi9wb20nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBNYXZlblBhY2thZ2luZ09wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzb3VyY2VzPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGlzdGRpcj86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgamF2YWRvY3M/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBqYXZhZG9jc0V4Y2x1ZGU/OiBzdHJpbmdbXTtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgTWF2ZW5QYWNrYWdpbmcgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSB0YXNrOiBUYXNrO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHBvbTogUG9tLCBvcHRpb25zOiBNYXZlblBhY2thZ2luZ09wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgcG9tLmFkZFBsdWdpbignb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLWphci1wbHVnaW5AMy4yLjAnLCB7XG4gICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGFyY2hpdmU6IHtcbiAgICAgICAgICBpbmRleDogdHJ1ZSxcbiAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgYWRkRGVmYXVsdEltcGxlbWVudGF0aW9uRW50cmllczogdHJ1ZSxcbiAgICAgICAgICAgIGFkZERlZmF1bHRTcGVjaWZpY2F0aW9uRW50cmllczogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLnNvdXJjZXMgPz8gdHJ1ZSkge1xuICAgICAgcG9tLmFkZFBsdWdpbignb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLXNvdXJjZS1wbHVnaW5AMy4yLjEnLCB7XG4gICAgICAgIGV4ZWN1dGlvbnM6IFtcbiAgICAgICAgICB7IGlkOiAnYXR0YWNoLXNvdXJjZXMnLCBnb2FsczogWydqYXInXSB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuamF2YWRvY3MgPz8gdHJ1ZSkge1xuICAgICAgcG9tLmFkZFBsdWdpbignb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLWphdmFkb2MtcGx1Z2luQDMuMi4wJywge1xuICAgICAgICBleGVjdXRpb25zOiBbXG4gICAgICAgICAgeyBpZDogJ2F0dGFjaC1qYXZhZG9jcycsIGdvYWxzOiBbJ2phciddIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICBmYWlsT25FcnJvcjogZmFsc2UsXG4gICAgICAgICAgc2hvdzogJ3Byb3RlY3RlZCcsXG4gICAgICAgICAgc291cmNlRmlsZUV4Y2x1ZGVzOiB7IGV4Y2x1ZGU6IG9wdGlvbnMuamF2YWRvY3NFeGNsdWRlIH0sXG4gICAgICAgICAgZGV0ZWN0SmF2YUFwaUxpbms6IGZhbHNlLCAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjE4ODQyNjdcbiAgICAgICAgICBhZGRpdGlvbmFsSk9wdGlvbnM6IHtcbiAgICAgICAgICAgIGFkZGl0aW9uYWxKT3B0aW9uOiBbXG4gICAgICAgICAgICAgICctSi1YWDorVGllcmVkQ29tcGlsYXRpb24nLFxuICAgICAgICAgICAgICAnLUotWFg6VGllcmVkU3RvcEF0TGV2ZWw9MScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnYgPSB7XG4gICAgICBNQVZFTl9PUFRTOiAnLVhYOitUaWVyZWRDb21waWxhdGlvbiAtWFg6VGllcmVkU3RvcEF0TGV2ZWw9MScsXG4gICAgfTtcblxuICAgIGNvbnN0IGRpc3RkaXIgPSBvcHRpb25zLmRpc3RkaXIgPz8gJ2Rpc3QvamF2YSc7XG4gICAgdGhpcy50YXNrID0gcHJvamVjdC5hZGRUYXNrKCdwYWNrYWdlJywge1xuICAgICAgZGVzY3JpcHRpb246IGBDcmVhdGVzIGEgamF2YSBkZXBsb3ltZW50IHBhY2thZ2UgdW5kZXIgJHtkaXN0ZGlyfWAsXG4gICAgICBlbnYsXG4gICAgfSk7XG4gICAgdGhpcy50YXNrLmV4ZWMoYG1rZGlyIC1wICR7ZGlzdGRpcn1gKTtcbiAgICB0aGlzLnRhc2suZXhlYyhgbXZuIGRlcGxveSAtRD1hbHREZXBsb3ltZW50UmVwb3NpdG9yeT1sb2NhbDo6ZGVmYXVsdDo6ZmlsZTovLy8kUFdELyR7ZGlzdGRpcn1gKTtcblxuICAgIHByb2plY3QuZ2l0aWdub3JlLmV4Y2x1ZGUoZGlzdGRpcik7XG4gIH1cbn0iXX0=
@@ -35,5 +35,5 @@ class MavenSample extends component_1.Component {
35
35
  }
36
36
  exports.MavenSample = MavenSample;
37
37
  _a = JSII_RTTI_SYMBOL_1;
38
- MavenSample[_a] = { fqn: "projen.java.MavenSample", version: "0.31.18" };
38
+ MavenSample[_a] = { fqn: "projen.java.MavenSample", version: "0.32.2" };
39
39
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW4tc2FtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvbWF2ZW4tc2FtcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLDRDQUF5QztBQUV6QyxnREFBMkM7Ozs7OztBQVEzQyxNQUFhLFdBQVksU0FBUSxxQkFBUzs7OztJQUN4QyxZQUFZLE9BQWdCLEVBQUUsT0FBMkI7UUFDdkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSx1QkFBUyxDQUFDLE9BQU8sRUFBRSxXQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRTtZQUMxRCxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFO29CQUNYLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN6RCxFQUFFO29CQUNGLHFCQUFxQjtvQkFDckIsa0RBQWtEO29CQUNsRCwwQ0FBMEM7b0JBQzFDLEtBQUs7b0JBQ0wsR0FBRztpQkFDSixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDYjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbEJILGtDQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vcHJvamVjdCc7XG5pbXBvcnQgeyBTYW1wbGVEaXIgfSBmcm9tICcuLi9zYW1wbGUtZmlsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF2ZW5TYW1wbGVPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcGFja2FnZTogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgTWF2ZW5TYW1wbGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBNYXZlblNhbXBsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IHBrZyA9IG9wdGlvbnMucGFja2FnZS5zcGxpdCgnLicpO1xuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgam9pbignc3JjJywgJ21haW4nLCAnamF2YScsIC4uLnBrZyksIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgICdNYWluLmphdmEnOiBbXG4gICAgICAgICAgLi4ub3B0aW9ucy5wYWNrYWdlID8gW2BwYWNrYWdlICR7b3B0aW9ucy5wYWNrYWdlfTtgXSA6IFtdLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdwdWJsaWMgY2xhc3MgTWFpbiB7JyxcbiAgICAgICAgICAnICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihmaW5hbCBTdHJpbmdbXSBhcmdzKSB7JyxcbiAgICAgICAgICAnICAgIFN5c3RlbS5vdXQucHJpbnRsbihcIkhlbGxvLCB3b3JsZCFcIik7JyxcbiAgICAgICAgICAnICB9JyxcbiAgICAgICAgICAnfScsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59Il19
package/lib/java/pom.js CHANGED
@@ -139,7 +139,7 @@ class Pom extends component_1.Component {
139
139
  }
140
140
  exports.Pom = Pom;
141
141
  _a = JSII_RTTI_SYMBOL_1;
142
- Pom[_a] = { fqn: "projen.java.Pom", version: "0.31.18" };
142
+ Pom[_a] = { fqn: "projen.java.Pom", version: "0.32.2" };
143
143
  /**
144
144
  * Parses maven groupId and artifactId from a dependency name.
145
145
  *
@@ -112,7 +112,7 @@ class Projenrc extends component_1.Component {
112
112
  }
113
113
  exports.Projenrc = Projenrc;
114
114
  _a = JSII_RTTI_SYMBOL_1;
115
- Projenrc[_a] = { fqn: "projen.java.Projenrc", version: "0.31.18" };
115
+ Projenrc[_a] = { fqn: "projen.java.Projenrc", version: "0.32.2" };
116
116
  function renderJavaOptions(indent, optionsTypeName, optionFqns, initOptions) {
117
117
  const imports = new Set();
118
118
  if (!initOptions || Object.keys(initOptions).length === 0) {