@angular/compiler-cli 9.0.3 → 9.0.7

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 (71) hide show
  1. package/ngcc/index.d.ts +2 -2
  2. package/ngcc/index.js +4 -3
  3. package/ngcc/main-ngcc.js +4 -3
  4. package/ngcc/src/dependencies/dependency_resolver.d.ts +7 -1
  5. package/ngcc/src/dependencies/dependency_resolver.js +20 -6
  6. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.d.ts +3 -2
  7. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js +36 -21
  8. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +15 -10
  9. package/ngcc/src/execution/api.d.ts +2 -4
  10. package/ngcc/src/execution/api.js +1 -1
  11. package/ngcc/src/execution/cluster/executor.d.ts +2 -2
  12. package/ngcc/src/execution/cluster/executor.js +1 -1
  13. package/ngcc/src/execution/cluster/master.js +15 -8
  14. package/ngcc/src/execution/single_process_executor.d.ts +13 -7
  15. package/ngcc/src/execution/single_process_executor.js +55 -38
  16. package/ngcc/src/execution/utils.js +1 -1
  17. package/ngcc/src/host/commonjs_host.js +2 -7
  18. package/ngcc/src/host/delegating_host.d.ts +44 -0
  19. package/ngcc/src/host/delegating_host.js +146 -0
  20. package/ngcc/src/host/esm5_host.js +1 -7
  21. package/ngcc/src/host/umd_host.js +2 -7
  22. package/ngcc/src/locking/lock_file.d.ts +29 -0
  23. package/ngcc/src/locking/lock_file.js +17 -0
  24. package/ngcc/src/locking/lock_file_with_child_process/index.d.ts +41 -0
  25. package/ngcc/src/locking/lock_file_with_child_process/index.js +91 -0
  26. package/ngcc/src/locking/lock_file_with_child_process/unlocker.d.ts +2 -0
  27. package/ngcc/src/locking/lock_file_with_child_process/unlocker.js +44 -0
  28. package/ngcc/src/locking/lock_file_with_child_process/util.d.ts +17 -0
  29. package/ngcc/src/locking/lock_file_with_child_process/util.js +42 -0
  30. package/ngcc/src/locking/sync_locker.d.ts +36 -0
  31. package/ngcc/src/locking/sync_locker.js +67 -0
  32. package/ngcc/src/logging/console_logger.d.ts +3 -9
  33. package/ngcc/src/logging/console_logger.js +16 -15
  34. package/ngcc/src/logging/logger.d.ts +7 -0
  35. package/ngcc/src/logging/logger.js +8 -1
  36. package/ngcc/src/main.js +32 -24
  37. package/ngcc/src/packages/build_marker.d.ts +1 -1
  38. package/ngcc/src/packages/build_marker.js +1 -1
  39. package/ngcc/src/packages/configuration.d.ts +8 -0
  40. package/ngcc/src/packages/configuration.js +2 -2
  41. package/ngcc/src/packages/entry_point.d.ts +26 -2
  42. package/ngcc/src/packages/entry_point.js +34 -24
  43. package/ngcc/src/packages/transformer.js +8 -4
  44. package/ngcc/src/rendering/dts_renderer.js +2 -2
  45. package/ngcc/src/rendering/renderer.js +2 -2
  46. package/ngcc/src/rendering/source_maps.d.ts +2 -1
  47. package/ngcc/src/rendering/source_maps.js +24 -13
  48. package/ngcc/src/sourcemaps/segment_marker.d.ts +7 -15
  49. package/ngcc/src/sourcemaps/segment_marker.js +12 -41
  50. package/ngcc/src/sourcemaps/source_file.d.ts +31 -4
  51. package/ngcc/src/sourcemaps/source_file.js +130 -37
  52. package/package.json +2 -2
  53. package/src/ngtsc/annotations/src/directive.js +3 -2
  54. package/src/ngtsc/core/api/index.d.ts +11 -0
  55. package/src/ngtsc/core/api/index.js +20 -0
  56. package/src/ngtsc/core/api/src/interfaces.d.ts +65 -0
  57. package/src/ngtsc/core/api/src/interfaces.js +20 -0
  58. package/src/ngtsc/core/api/src/options.d.ts +32 -0
  59. package/src/ngtsc/core/api/src/options.js +20 -0
  60. package/src/ngtsc/core/{api.d.ts → api/src/public_options.d.ts} +14 -81
  61. package/src/ngtsc/core/api/src/public_options.js +20 -0
  62. package/src/ngtsc/diagnostics/src/error_code.d.ts +9 -0
  63. package/src/ngtsc/diagnostics/src/error_code.js +10 -1
  64. package/src/ngtsc/scope/src/local.js +50 -47
  65. package/src/ngtsc/typecheck/src/oob.d.ts +10 -0
  66. package/src/ngtsc/typecheck/src/oob.js +14 -1
  67. package/src/ngtsc/typecheck/src/type_check_block.js +11 -2
  68. package/src/version.js +1 -1
  69. package/ngcc/src/execution/lock_file.d.ts +0 -43
  70. package/ngcc/src/execution/lock_file.js +0 -129
  71. package/src/ngtsc/core/api.js +0 -20
@@ -5,58 +5,14 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- /// <amd-module name="@angular/compiler-cli/src/ngtsc/core/api" />
9
- import * as ts from 'typescript';
10
- /**
11
- * A host backed by a build system which has a unified view of the module namespace.
12
- *
13
- * Such a build system supports the `fileNameToModuleName` method provided by certain build system
14
- * integrations (such as the integration with Bazel). See the docs on `fileNameToModuleName` for
15
- * more details.
16
- */
17
- export interface UnifiedModulesHost {
18
- /**
19
- * Converts a file path to a module name that can be used as an `import ...`.
20
- *
21
- * For example, such a host might determine that `/absolute/path/to/monorepo/lib/importedFile.ts`
22
- * should be imported using a module specifier of `monorepo/lib/importedFile`.
23
- */
24
- fileNameToModuleName(importedFilePath: string, containingFilePath: string): string;
25
- }
26
- /**
27
- * A host which additionally tracks and produces "resources" (HTML templates, CSS
28
- * files, etc).
29
- */
30
- export interface ResourceHost {
31
- /**
32
- * Converts a file path for a resource that is used in a source file or another resource
33
- * into a filepath.
34
- */
35
- resourceNameToFileName(resourceName: string, containingFilePath: string): string | null;
36
- /**
37
- * Load a referenced resource either statically or asynchronously. If the host returns a
38
- * `Promise<string>` it is assumed the user of the corresponding `Program` will call
39
- * `loadNgStructureAsync()`. Returning `Promise<string>` outside `loadNgStructureAsync()` will
40
- * cause a diagnostics diagnostic error or an exception to be thrown.
41
- */
42
- readResource(fileName: string): Promise<string> | string;
43
- /**
44
- * Get the absolute paths to the changed files that triggered the current compilation
45
- * or `undefined` if this is not an incremental build.
46
- */
47
- getModifiedResourceFiles?(): Set<string> | undefined;
48
- }
49
- /**
50
- * A `ts.CompilerHost` interface which supports some number of optional methods in addition to the
51
- * core interface.
52
- */
53
- export interface ExtendedTsCompilerHost extends ts.CompilerHost, Partial<ResourceHost>, Partial<UnifiedModulesHost> {
54
- }
8
+ /// <amd-module name="@angular/compiler-cli/src/ngtsc/core/api/src/public_options" />
55
9
  /**
56
10
  * Options supported by the legacy View Engine compiler, which are still consumed by the Angular Ivy
57
11
  * compiler for backwards compatibility.
58
12
  *
59
13
  * These are expected to be removed at some point in the future.
14
+ *
15
+ * @publicApi
60
16
  */
61
17
  export interface LegacyNgcOptions {
62
18
  /** generate all possible generated files */
@@ -122,6 +78,8 @@ export interface LegacyNgcOptions {
122
78
  * existing View Engine applications.
123
79
  *
124
80
  * These are expected to be removed at some point in the future.
81
+ *
82
+ * @publicApi
125
83
  */
126
84
  export interface NgcCompatibilityOptions {
127
85
  /**
@@ -153,6 +111,8 @@ export interface NgcCompatibilityOptions {
153
111
  }
154
112
  /**
155
113
  * Options related to template type-checking and its strictness.
114
+ *
115
+ * @publicApi
156
116
  */
157
117
  export interface StrictTemplateOptions {
158
118
  /**
@@ -265,6 +225,8 @@ export interface StrictTemplateOptions {
265
225
  /**
266
226
  * Options which control behavior useful for "monorepo" build cases using Bazel (such as the
267
227
  * internal Google monorepo, g3).
228
+ *
229
+ * @publicApi
268
230
  */
269
231
  export interface BazelAndG3Options {
270
232
  /**
@@ -304,6 +266,8 @@ export interface BazelAndG3Options {
304
266
  }
305
267
  /**
306
268
  * Options related to i18n compilation support.
269
+ *
270
+ * @publicApi
307
271
  */
308
272
  export interface I18nOptions {
309
273
  /**
@@ -327,49 +291,18 @@ export interface I18nOptions {
327
291
  i18nUseExternalIds?: boolean;
328
292
  }
329
293
  /**
330
- * Non-public options which are useful during testing of the compiler.
331
- */
332
- export interface TestOnlyOptions {
333
- }
334
- /**
335
- * A merged interface of all of the various Angular compiler options, as well as the standard
336
- * `ts.CompilerOptions`.
294
+ * Miscellaneous options that don't fall into any other category
337
295
  *
338
- * Also includes a few miscellaneous options.
296
+ * @publicApi
339
297
  */
340
- export interface NgCompilerOptions extends ts.CompilerOptions, LegacyNgcOptions, BazelAndG3Options, NgcCompatibilityOptions, StrictTemplateOptions, TestOnlyOptions, I18nOptions {
298
+ export interface MiscOptions {
341
299
  /**
342
300
  * Whether the compiler should avoid generating code for classes that haven't been exported.
343
301
  * This is only active when building with `enableIvy: true`. Defaults to `true`.
344
302
  */
345
303
  compileNonExportedClasses?: boolean;
346
- /**
347
- * Whether to remove blank text nodes from compiled templates. It is `false` by default starting
348
- * from Angular 6.
349
- */
350
- preserveWhitespaces?: boolean;
351
304
  /**
352
305
  * Disable TypeScript Version Check.
353
306
  */
354
307
  disableTypeScriptVersionCheck?: boolean;
355
- /** An option to enable ngtsc's internal performance tracing.
356
- *
357
- * This should be a path to a JSON file where trace information will be written. An optional 'ts:'
358
- * prefix will cause the trace to be written via the TS host instead of directly to the filesystem
359
- * (not all hosts support this mode of operation).
360
- *
361
- * This is currently not exposed to users as the trace format is still unstable.
362
- */
363
- tracePerformance?: string;
364
- }
365
- export interface LazyRoute {
366
- route: string;
367
- module: {
368
- name: string;
369
- filePath: string;
370
- };
371
- referencedModule: {
372
- name: string;
373
- filePath: string;
374
- };
375
308
  }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google Inc. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/compiler-cli/src/ngtsc/core/api/src/public_options", ["require", "exports"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX29wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2NvcmUvYXBpL3NyYy9wdWJsaWNfb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogT3B0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGxlZ2FjeSBWaWV3IEVuZ2luZSBjb21waWxlciwgd2hpY2ggYXJlIHN0aWxsIGNvbnN1bWVkIGJ5IHRoZSBBbmd1bGFyIEl2eVxuICogY29tcGlsZXIgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICpcbiAqIFRoZXNlIGFyZSBleHBlY3RlZCB0byBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5TmdjT3B0aW9ucyB7XG4gIC8qKiBnZW5lcmF0ZSBhbGwgcG9zc2libGUgZ2VuZXJhdGVkIGZpbGVzICAqL1xuICBhbGxvd0VtcHR5Q29kZWdlbkZpbGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byB0eXBlIGNoZWNrIHRoZSBlbnRpcmUgdGVtcGxhdGUuXG4gICAqXG4gICAqIFRoaXMgZmxhZyBjdXJyZW50bHkgY29udHJvbHMgYSBjb3VwbGUgYXNwZWN0cyBvZiB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nLCBpbmNsdWRpbmdcbiAgICogd2hldGhlciBlbWJlZGRlZCB2aWV3cyBhcmUgY2hlY2tlZC5cbiAgICpcbiAgICogRm9yIG1heGltdW0gdHlwZS1jaGVja2luZywgc2V0IHRoaXMgdG8gYHRydWVgLCBhbmQgc2V0IGBzdHJpY3RUZW1wbGF0ZXNgIHRvIGB0cnVlYC5cbiAgICpcbiAgICogSXQgaXMgYW4gZXJyb3IgZm9yIHRoaXMgZmxhZyB0byBiZSBgZmFsc2VgLCB3aGlsZSBgc3RyaWN0VGVtcGxhdGVzYCBpcyBzZXQgdG8gYHRydWVgLlxuICAgKi9cbiAgZnVsbFRlbXBsYXRlVHlwZUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBnZW5lcmF0ZSBhIGZsYXQgbW9kdWxlIGluZGV4IG9mIHRoZSBnaXZlbiBuYW1lIGFuZCB0aGUgY29ycmVzcG9uZGluZ1xuICAgKiBmbGF0IG1vZHVsZSBtZXRhZGF0YS4gVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIGNyZWF0aW5nIGZsYXRcbiAgICogbW9kdWxlcyBzaW1pbGFyIHRvIGhvdyBgQGFuZ3VsYXIvY29yZWAgYW5kIGBAYW5ndWxhci9jb21tb25gIGFyZSBwYWNrYWdlZC5cbiAgICogV2hlbiB0aGlzIG9wdGlvbiBpcyB1c2VkIHRoZSBgcGFja2FnZS5qc29uYCBmb3IgdGhlIGxpYnJhcnkgc2hvdWxkIHJlZmVyIHRvIHRoZVxuICAgKiBnZW5lcmF0ZWQgZmxhdCBtb2R1bGUgaW5kZXggaW5zdGVhZCBvZiB0aGUgbGlicmFyeSBpbmRleCBmaWxlLiBXaGVuIHVzaW5nIHRoaXNcbiAgICogb3B0aW9uIG9ubHkgb25lIC5tZXRhZGF0YS5qc29uIGZpbGUgaXMgcHJvZHVjZWQgdGhhdCBjb250YWlucyBhbGwgdGhlIG1ldGFkYXRhXG4gICAqIG5lY2Vzc2FyeSBmb3Igc3ltYm9scyBleHBvcnRlZCBmcm9tIHRoZSBsaWJyYXJ5IGluZGV4LlxuICAgKiBJbiB0aGUgZ2VuZXJhdGVkIC5uZ2ZhY3RvcnkudHMgZmlsZXMgZmxhdCBtb2R1bGUgaW5kZXggaXMgdXNlZCB0byBpbXBvcnQgc3ltYm9sc1xuICAgKiBpbmNsdWRpbmcgYm90aCB0aGUgcHVibGljIEFQSSBmcm9tIHRoZSBsaWJyYXJ5IGluZGV4IGFzIHdlbGwgYXMgc2hyb3dkZWQgaW50ZXJuYWxcbiAgICogc3ltYm9scy5cbiAgICogQnkgZGVmYXVsdCB0aGUgLnRzIGZpbGUgc3VwcGxpZWQgaW4gdGhlIGBmaWxlc2AgZmllbGQgaXMgYXNzdW1lZCB0byBiZSB0aGVcbiAgICogbGlicmFyeSBpbmRleC4gSWYgbW9yZSB0aGFuIG9uZSBpcyBzcGVjaWZpZWQsIHVzZXMgYGxpYnJhcnlJbmRleGAgdG8gc2VsZWN0IHRoZVxuICAgKiBmaWxlIHRvIHVzZS4gSWYgbW9yZSB0aGFuIG9uZSAudHMgZmlsZSBpcyBzdXBwbGllZCBhbmQgbm8gYGxpYnJhcnlJbmRleGAgaXMgc3VwcGxpZWRcbiAgICogYW4gZXJyb3IgaXMgcHJvZHVjZWQuXG4gICAqIEEgZmxhdCBtb2R1bGUgaW5kZXggLmQudHMgYW5kIC5qcyB3aWxsIGJlIGNyZWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gYGZsYXRNb2R1bGVPdXRGaWxlYFxuICAgKiBuYW1lIGluIHRoZSBzYW1lIGxvY2F0aW9uIGFzIHRoZSBsaWJyYXJ5IGluZGV4IC5kLnRzIGZpbGUgaXMgZW1pdHRlZC5cbiAgICogRm9yIGV4YW1wbGUsIGlmIGEgbGlicmFyeSB1c2VzIGBwdWJsaWNfYXBpLnRzYCBmaWxlIGFzIHRoZSBsaWJyYXJ5IGluZGV4IG9mIHRoZVxuICAgKiBtb2R1bGUgdGhlIGB0c2NvbmZpZy5qc29uYCBgZmlsZXNgIGZpZWxkIHdvdWxkIGJlIGBbXCJwdWJsaWNfYXBpLnRzXCJdYC4gVGhlXG4gICAqIGBmbGF0TW9kdWxlT3V0RmlsZWAgb3B0aW9ucyBjb3VsZCB0aGVuIGJlIHNldCB0bywgZm9yIGV4YW1wbGUgYFwiaW5kZXguanNcImAsIHdoaWNoXG4gICAqIHByb2R1Y2VzIGBpbmRleC5kLnRzYCBhbmQgIGBpbmRleC5tZXRhZGF0YS5qc29uYCBmaWxlcy4gVGhlIGxpYnJhcnknc1xuICAgKiBgcGFja2FnZS5qc29uYCdzIGBtb2R1bGVgIGZpZWxkIHdvdWxkIGJlIGBcImluZGV4LmpzXCJgIGFuZCB0aGUgYHR5cGluZ3NgIGZpZWxkIHdvdWxkXG4gICAqIGJlIGBcImluZGV4LmQudHNcImAuXG4gICAqL1xuICBmbGF0TW9kdWxlT3V0RmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogUHJlZmVycmVkIG1vZHVsZSBpZCB0byB1c2UgZm9yIGltcG9ydGluZyBmbGF0IG1vZHVsZS4gUmVmZXJlbmNlcyBnZW5lcmF0ZWQgYnkgYG5nY2BcbiAgICogd2lsbCB1c2UgdGhpcyBtb2R1bGUgbmFtZSB3aGVuIGltcG9ydGluZyBzeW1ib2xzIGZyb20gdGhlIGZsYXQgbW9kdWxlLiBUaGlzIGlzIG9ubHlcbiAgICogbWVhbmluZ2Z1bCB3aGVuIGBmbGF0TW9kdWxlT3V0RmlsZWAgaXMgYWxzbyBzdXBwbGllZC4gSXQgaXMgb3RoZXJ3aXNlIGlnbm9yZWQuXG4gICAqL1xuICBmbGF0TW9kdWxlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsd2F5cyByZXBvcnQgZXJyb3JzIGEgcGFyYW1ldGVyIGlzIHN1cHBsaWVkIHdob3NlIGluamVjdGlvbiB0eXBlIGNhbm5vdFxuICAgKiBiZSBkZXRlcm1pbmVkLiBXaGVuIHRoaXMgdmFsdWUgb3B0aW9uIGlzIG5vdCBwcm92aWRlZCBvciBpcyBgZmFsc2VgLCBjb25zdHJ1Y3RvclxuICAgKiBwYXJhbWV0ZXJzIG9mIGNsYXNzZXMgbWFya2VkIHdpdGggYEBJbmplY3RhYmxlYCB3aG9zZSB0eXBlIGNhbm5vdCBiZSByZXNvbHZlZCB3aWxsXG4gICAqIHByb2R1Y2UgYSB3YXJuaW5nLiBXaXRoIHRoaXMgb3B0aW9uIGB0cnVlYCwgdGhleSBwcm9kdWNlIGFuIGVycm9yLiBXaGVuIHRoaXMgb3B0aW9uIGlzXG4gICAqIG5vdCBwcm92aWRlZCBpcyB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgYGZhbHNlYC5cbiAgICovXG4gIHN0cmljdEluamVjdGlvblBhcmFtZXRlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlbW92ZSBibGFuayB0ZXh0IG5vZGVzIGZyb20gY29tcGlsZWQgdGVtcGxhdGVzLiBJdCBpcyBgZmFsc2VgIGJ5IGRlZmF1bHQgc3RhcnRpbmdcbiAgICogZnJvbSBBbmd1bGFyIDYuXG4gICAqL1xuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHdoaWNoIHdlcmUgYWRkZWQgdG8gdGhlIEFuZ3VsYXIgSXZ5IGNvbXBpbGVyIHRvIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aFxuICogZXhpc3RpbmcgVmlldyBFbmdpbmUgYXBwbGljYXRpb25zLlxuICpcbiAqIFRoZXNlIGFyZSBleHBlY3RlZCB0byBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdjQ29tcGF0aWJpbGl0eU9wdGlvbnMge1xuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBuZ3RzYyB3aWxsIGVtaXQgYC5uZ2ZhY3RvcnkuanNgIHNoaW1zIGZvciBlYWNoIGNvbXBpbGVkIGAudHNgIGZpbGUuXG4gICAqXG4gICAqIFRoZXNlIHNoaW1zIHN1cHBvcnQgbGVnYWN5IGltcG9ydHMgZnJvbSBgbmdmYWN0b3J5YCBmaWxlcywgYnkgZXhwb3J0aW5nIGEgZmFjdG9yeSBzaGltXG4gICAqIGZvciBlYWNoIGNvbXBvbmVudCBvciBOZ01vZHVsZSBpbiB0aGUgb3JpZ2luYWwgYC50c2AgZmlsZS5cbiAgICovXG4gIGdlbmVyYXRlTmdGYWN0b3J5U2hpbXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIG5ndHNjIHdpbGwgZW1pdCBgLm5nc3VtbWFyeS5qc2Agc2hpbXMgZm9yIGVhY2ggY29tcGlsZWQgYC50c2AgZmlsZS5cbiAgICpcbiAgICogVGhlc2Ugc2hpbXMgc3VwcG9ydCBsZWdhY3kgaW1wb3J0cyBmcm9tIGBuZ3N1bW1hcnlgIGZpbGVzLCBieSBleHBvcnRpbmcgYW4gZW1wdHkgb2JqZWN0XG4gICAqIGZvciBlYWNoIE5nTW9kdWxlIGluIHRoZSBvcmlnaW5hbCBgLnRzYCBmaWxlLiBUaGUgb25seSBwdXJwb3NlIG9mIHN1bW1hcmllcyBpcyB0byBmZWVkIHRoZW0gdG9cbiAgICogYFRlc3RCZWRgLCB3aGljaCBpcyBhIG5vLW9wIGluIEl2eS5cbiAgICovXG4gIGdlbmVyYXRlTmdTdW1tYXJ5U2hpbXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUZWxscyB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGUgZGVmaW5pdGlvbnMgdXNpbmcgdGhlIFJlbmRlcjMgc3R5bGUgY29kZSBnZW5lcmF0aW9uLlxuICAgKiBUaGlzIG9wdGlvbiBkZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqXG4gICAqIEFjY2VwdGFibGUgdmFsdWVzIGFyZSBhcyBmb2xsb3dzOlxuICAgKlxuICAgKiBgZmFsc2VgIC0gcnVuIG5nYyBub3JtYWxseVxuICAgKiBgdHJ1ZWAgLSBydW4gdGhlIG5ndHNjIGNvbXBpbGVyIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBuZ2MgY29tcGlsZXJcbiAgICogYG5ndHNjYCAtIGFsaWFzIGZvciBgdHJ1ZWBcbiAgICovXG4gIGVuYWJsZUl2eT86IGJvb2xlYW58J25ndHNjJztcbn1cblxuLyoqXG4gKiBPcHRpb25zIHJlbGF0ZWQgdG8gdGVtcGxhdGUgdHlwZS1jaGVja2luZyBhbmQgaXRzIHN0cmljdG5lc3MuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmljdFRlbXBsYXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGltcGxpZXMgYWxsIHRlbXBsYXRlIHN0cmljdG5lc3MgZmxhZ3MgYmVsb3cgKHVubGVzcyBpbmRpdmlkdWFsbHkgZGlzYWJsZWQpLlxuICAgKlxuICAgKiBIYXMgbm8gZWZmZWN0IHVubGVzcyBgZnVsbFRlbXBsYXRlVHlwZUNoZWNrYCBpcyBhbHNvIGVuYWJsZWQuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAsIGV2ZW4gaWYgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIiBpcyBzZXQuXG4gICAqL1xuICBzdHJpY3RUZW1wbGF0ZXM/OiBib29sZWFuO1xuXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY2hlY2sgdGhlIHR5cGUgb2YgYSBiaW5kaW5nIHRvIGEgZGlyZWN0aXZlL2NvbXBvbmVudCBpbnB1dCBhZ2FpbnN0IHRoZSB0eXBlIG9mIHRoZVxuICAgKiBmaWVsZCBvbiB0aGUgZGlyZWN0aXZlL2NvbXBvbmVudC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgYGZhbHNlYCB0aGVuIHRoZSBleHByZXNzaW9uIGBbaW5wdXRdPVwiZXhwclwiYCB3aWxsIGhhdmUgYGV4cHJgIHR5cGUtXG4gICAqIGNoZWNrZWQsIGJ1dCBub3QgdGhlIGFzc2lnbm1lbnQgb2YgdGhlIHJlc3VsdGluZyB0eXBlIHRvIHRoZSBgaW5wdXRgIHByb3BlcnR5IG9mIHdoaWNoZXZlclxuICAgKiBkaXJlY3RpdmUgb3IgY29tcG9uZW50IGlzIHJlY2VpdmluZyB0aGUgYmluZGluZy4gSWYgc2V0IHRvIGB0cnVlYCwgYm90aCBzaWRlcyBvZiB0aGUgYXNzaWdubWVudFxuICAgKiBhcmUgY2hlY2tlZC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC5cbiAgICovXG4gIHN0cmljdElucHV0VHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSBzdHJpY3QgbnVsbCB0eXBlcyBmb3IgaW5wdXQgYmluZGluZ3MgZm9yIGRpcmVjdGl2ZXMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHRydWVgLCBhcHBsaWNhdGlvbnMgdGhhdCBhcmUgY29tcGlsZWQgd2l0aCBUeXBlU2NyaXB0J3MgYHN0cmljdE51bGxDaGVja3NgIGVuYWJsZWRcbiAgICogd2lsbCBwcm9kdWNlIHR5cGUgZXJyb3JzIGZvciBiaW5kaW5ncyB3aGljaCBjYW4gZXZhbHVhdGUgdG8gYHVuZGVmaW5lZGAgb3IgYG51bGxgIHdoZXJlIHRoZVxuICAgKiBpbnB1dHMncyB0eXBlIGRvZXMgbm90IGluY2x1ZGUgYHVuZGVmaW5lZGAgb3IgYG51bGxgIGluIGl0cyB0eXBlLiBJZiBzZXQgdG8gYGZhbHNlYCwgYWxsXG4gICAqIGJpbmRpbmcgZXhwcmVzc2lvbnMgYXJlIHdyYXBwZWQgaW4gYSBub24tbnVsbCBhc3NlcnRpb24gb3BlcmF0b3IgdG8gZWZmZWN0aXZlbHkgZGlzYWJsZSBzdHJpY3RcbiAgICogbnVsbCBjaGVja3MuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAsIGV2ZW4gaWYgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIiBpcyBzZXQuIE5vdGUgdGhhdCBpZiBgc3RyaWN0SW5wdXRUeXBlc2AgaXNcbiAgICogbm90IHNldCwgb3Igc2V0IHRvIGBmYWxzZWAsIHRoaXMgZmxhZyBoYXMgbm8gZWZmZWN0LlxuICAgKi9cbiAgc3RyaWN0TnVsbElucHV0VHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNoZWNrIHRleHQgYXR0cmlidXRlcyB0aGF0IGhhcHBlbiB0byBiZSBjb25zdW1lZCBieSBhIGRpcmVjdGl2ZSBvciBjb21wb25lbnQuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpbiBhIHRlbXBsYXRlIGNvbnRhaW5pbmcgYDxpbnB1dCBtYXRJbnB1dCBkaXNhYmxlZD5gIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSBlbmRzXG4gICAqIHVwIGJlaW5nIGNvbnN1bWVkIGFzIGFuIGlucHV0IHdpdGggdHlwZSBgYm9vbGVhbmAgYnkgdGhlIGBtYXRJbnB1dGAgZGlyZWN0aXZlLiBBdCBydW50aW1lLCB0aGVcbiAgICogaW5wdXQgd2lsbCBiZSBzZXQgdG8gdGhlIGF0dHJpYnV0ZSdzIHN0cmluZyB2YWx1ZSwgd2hpY2ggaXMgYW4gZW1wdHkgc3RyaW5nIGZvciBhdHRyaWJ1dGVzXG4gICAqIHdpdGhvdXQgYSB2YWx1ZSwgc28gd2l0aCB0aGlzIGZsYWcgc2V0IHRvIGB0cnVlYCwgYW4gZXJyb3Igd291bGQgYmUgcmVwb3J0ZWQuIElmIHNldCB0b1xuICAgKiBgZmFsc2VgLCB0ZXh0IGF0dHJpYnV0ZXMgd2lsbCBuZXZlciByZXBvcnQgYW4gZXJyb3IuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAsIGV2ZW4gaWYgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIiBpcyBzZXQuIE5vdGUgdGhhdCBpZiBgc3RyaWN0SW5wdXRUeXBlc2AgaXNcbiAgICogbm90IHNldCwgb3Igc2V0IHRvIGBmYWxzZWAsIHRoaXMgZmxhZyBoYXMgbm8gZWZmZWN0LlxuICAgKi9cbiAgc3RyaWN0QXR0cmlidXRlVHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSBhIHN0cmljdCB0eXBlIGZvciBudWxsLXNhZmUgbmF2aWdhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIGBmYWxzZWAsIHRoZW4gdGhlIHJldHVybiB0eXBlIG9mIGBhPy5iYCBvciBgYT8oKWAgd2lsbCBiZSBgYW55YC4gSWYgc2V0IHRvIGB0cnVlYCxcbiAgICogdGhlbiB0aGUgcmV0dXJuIHR5cGUgb2YgYGE/LmJgIGZvciBleGFtcGxlIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIHR5cGUgb2YgdGhlIHRlcm5hcnlcbiAgICogZXhwcmVzc2lvbiBgYSAhPSBudWxsID8gYS5iIDogYWAuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAsIGV2ZW4gaWYgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIiBpcyBzZXQuXG4gICAqL1xuICBzdHJpY3RTYWZlTmF2aWdhdGlvblR5cGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmZlciB0aGUgdHlwZSBvZiBsb2NhbCByZWZlcmVuY2VzLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIGB0cnVlYCwgdGhlIHR5cGUgb2YgYSBgI3JlZmAgdmFyaWFibGUgb24gYSBET00gbm9kZSBpbiB0aGUgdGVtcGxhdGUgd2lsbCBiZVxuICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSB0eXBlIG9mIGBkb2N1bWVudC5jcmVhdGVFbGVtZW50YCBmb3IgdGhlIGdpdmVuIERPTSBub2RlLiBJZiBzZXQgdG8gYGZhbHNlYCxcbiAgICogdGhlIHR5cGUgb2YgYHJlZmAgZm9yIERPTSBub2RlcyB3aWxsIGJlIGBhbnlgLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLCBldmVuIGlmIFwiZnVsbFRlbXBsYXRlVHlwZUNoZWNrXCIgaXMgc2V0LlxuICAgKi9cbiAgc3RyaWN0RG9tTG9jYWxSZWZUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5mZXIgdGhlIHR5cGUgb2YgdGhlIGAkZXZlbnRgIHZhcmlhYmxlIGluIGV2ZW50IGJpbmRpbmdzIGZvciBkaXJlY3RpdmUgb3V0cHV0cyBvclxuICAgKiBhbmltYXRpb24gZXZlbnRzLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIGB0cnVlYCwgdGhlIHR5cGUgb2YgYCRldmVudGAgd2lsbCBiZSBpbmZlcnJlZCBiYXNlZCBvbiB0aGUgZ2VuZXJpYyB0eXBlIG9mXG4gICAqIGBFdmVudEVtaXR0ZXJgL2BTdWJqZWN0YCBvZiB0aGUgb3V0cHV0LiBJZiBzZXQgdG8gYGZhbHNlYCwgdGhlIGAkZXZlbnRgIHZhcmlhYmxlIHdpbGwgYmUgb2ZcbiAgICogdHlwZSBgYW55YC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC5cbiAgICovXG4gIHN0cmljdE91dHB1dEV2ZW50VHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluZmVyIHRoZSB0eXBlIG9mIHRoZSBgJGV2ZW50YCB2YXJpYWJsZSBpbiBldmVudCBiaW5kaW5ncyB0byBET00gZXZlbnRzLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIGB0cnVlYCwgdGhlIHR5cGUgb2YgYCRldmVudGAgd2lsbCBiZSBpbmZlcnJlZCBiYXNlZCBvbiBUeXBlU2NyaXB0J3NcbiAgICogYEhUTUxFbGVtZW50RXZlbnRNYXBgLCB3aXRoIGEgZmFsbGJhY2sgdG8gdGhlIG5hdGl2ZSBgRXZlbnRgIHR5cGUuIElmIHNldCB0byBgZmFsc2VgLCB0aGVcbiAgICogYCRldmVudGAgdmFyaWFibGUgd2lsbCBiZSBvZiB0eXBlIGBhbnlgLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLCBldmVuIGlmIFwiZnVsbFRlbXBsYXRlVHlwZUNoZWNrXCIgaXMgc2V0LlxuICAgKi9cbiAgc3RyaWN0RG9tRXZlbnRUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgZ2VuZXJpYyB0eXBlIG9mIGNvbXBvbmVudHMgd2hlbiB0eXBlLWNoZWNraW5nIHRoZSB0ZW1wbGF0ZS5cbiAgICpcbiAgICogSWYgbm8gY29tcG9uZW50IGhhcyBnZW5lcmljIHR5cGUgcGFyYW1ldGVycywgdGhpcyBzZXR0aW5nIGhhcyBubyBlZmZlY3QuXG4gICAqXG4gICAqIElmIGEgY29tcG9uZW50IGhhcyBnZW5lcmljIHR5cGUgcGFyYW1ldGVycyBhbmQgdGhpcyBzZXR0aW5nIGlzIGB0cnVlYCwgdGhvc2UgZ2VuZXJpYyBwYXJhbWV0ZXJzXG4gICAqIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGNvbnRleHQgdHlwZSBmb3IgdGhlIHRlbXBsYXRlLiBJZiBgZmFsc2VgLCBhbnkgZ2VuZXJpYyBwYXJhbWV0ZXJzIHdpbGxcbiAgICogYmUgc2V0IHRvIGBhbnlgIGluIHRoZSB0ZW1wbGF0ZSBjb250ZXh0IHR5cGUuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAsIGV2ZW4gaWYgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIiBpcyBzZXQuXG4gICAqL1xuICBzdHJpY3RDb250ZXh0R2VuZXJpY3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9iamVjdCBvciBhcnJheSBsaXRlcmFscyBkZWZpbmVkIGluIHRlbXBsYXRlcyB1c2UgdGhlaXIgaW5mZXJyZWQgdHlwZSwgb3IgYXJlXG4gICAqIGludGVycHJldGVkIGFzIGBhbnlgLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgIHVubGVzcyBgZnVsbFRlbXBsYXRlVHlwZUNoZWNrYCBvciBgc3RyaWN0VGVtcGxhdGVzYCBhcmUgc2V0LlxuICAgKi9cbiAgc3RyaWN0TGl0ZXJhbFR5cGVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHdoaWNoIGNvbnRyb2wgYmVoYXZpb3IgdXNlZnVsIGZvciBcIm1vbm9yZXBvXCIgYnVpbGQgY2FzZXMgdXNpbmcgQmF6ZWwgKHN1Y2ggYXMgdGhlXG4gKiBpbnRlcm5hbCBHb29nbGUgbW9ub3JlcG8sIGczKS5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmF6ZWxBbmRHM09wdGlvbnMge1xuICAvKipcbiAgICogRW5hYmxlcyB0aGUgZ2VuZXJhdGlvbiBvZiBhbGlhcyByZS1leHBvcnRzIG9mIGRpcmVjdGl2ZXMvcGlwZXMgdGhhdCBhcmUgdmlzaWJsZSBmcm9tIGFuXG4gICAqIE5nTW9kdWxlIGZyb20gdGhhdCBOZ01vZHVsZSdzIGZpbGUuXG4gICAqXG4gICAqIFRoaXMgb3B0aW9uIHNob3VsZCBiZSBkaXNhYmxlZCBmb3IgYXBwbGljYXRpb24gYnVpbGRzIG9yIGZvciBBbmd1bGFyIFBhY2thZ2UgRm9ybWF0IGxpYnJhcmllc1xuICAgKiAod2hlcmUgTmdNb2R1bGVzIGFsb25nIHdpdGggdGhlaXIgZGlyZWN0aXZlcy9waXBlcyBhcmUgZXhwb3J0ZWQgdmlhIGEgc2luZ2xlIGVudHJ5cG9pbnQpLlxuICAgKlxuICAgKiBGb3Igb3RoZXIgbGlicmFyeSBjb21waWxhdGlvbnMgd2hpY2ggYXJlIGludGVuZGVkIHRvIGJlIHBhdGgtbWFwcGVkIGludG8gYW4gYXBwbGljYXRpb24gYnVpbGRcbiAgICogKG9yIGFub3RoZXIgbGlicmFyeSksIGVuYWJsaW5nIHRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIHJlc3VsdGluZyBkZWVwIGltcG9ydHMgdG8gd29ya1xuICAgKiBjb3JyZWN0bHkuXG4gICAqXG4gICAqIEEgY29uc3VtZXIgb2Ygc3VjaCBhIHBhdGgtbWFwcGVkIGxpYnJhcnkgd2lsbCB3cml0ZSBhbiBpbXBvcnQgbGlrZTpcbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbXBvcnQge0xpYk1vZHVsZX0gZnJvbSAnbGliL2RlZXAvcGF0aC90by9tb2R1bGUnO1xuICAgKiBgYGBcbiAgICpcbiAgICogVGhlIGNvbXBpbGVyIHdpbGwgYXR0ZW1wdCB0byBnZW5lcmF0ZSBpbXBvcnRzIG9mIGRpcmVjdGl2ZXMvcGlwZXMgZnJvbSB0aGF0IHNhbWUgbW9kdWxlXG4gICAqIHNwZWNpZmllciAodGhlIGNvbXBpbGVyIGRvZXMgbm90IHJld3JpdGUgdGhlIHVzZXIncyBnaXZlbiBpbXBvcnQgcGF0aCwgdW5saWtlIFZpZXcgRW5naW5lKS5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbXBvcnQge0xpYkRpciwgTGliQ21wLCBMaWJQaXBlfSBmcm9tICdsaWIvZGVlcC9wYXRoL3RvL21vZHVsZSc7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJdCB3b3VsZCBiZSBidXJkZW5zb21lIGZvciB1c2VycyB0byBoYXZlIHRvIHJlLWV4cG9ydCBhbGwgZGlyZWN0aXZlcy9waXBlcyBhbG9uZ3NpZGUgZWFjaFxuICAgKiBOZ01vZHVsZSB0byBzdXBwb3J0IHRoaXMgaW1wb3J0IG1vZGVsLiBFbmFibGluZyB0aGlzIG9wdGlvbiB0ZWxscyB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGVcbiAgICogcHJpdmF0ZSByZS1leHBvcnRzIGFsb25nc2lkZSB0aGUgTmdNb2R1bGUgb2YgYWxsIHRoZSBkaXJlY3RpdmVzL3BpcGVzIGl0IG1ha2VzIGF2YWlsYWJsZSwgdG9cbiAgICogc3VwcG9ydCB0aGVzZSBmdXR1cmUgaW1wb3J0cy5cbiAgICovXG4gIGdlbmVyYXRlRGVlcFJlZXhwb3J0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluc2VydCBKU0RvYyB0eXBlIGFubm90YXRpb25zIG5lZWRlZCBieSBDbG9zdXJlIENvbXBpbGVyXG4gICAqL1xuICBhbm5vdGF0ZUZvckNsb3N1cmVDb21waWxlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyByZWxhdGVkIHRvIGkxOG4gY29tcGlsYXRpb24gc3VwcG9ydC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bk9wdGlvbnMge1xuICAvKipcbiAgICogTG9jYWxlIG9mIHRoZSBpbXBvcnRlZCB0cmFuc2xhdGlvbnNcbiAgICovXG4gIGkxOG5JbkxvY2FsZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVuZGVyIGAkbG9jYWxpemVgIG1lc3NhZ2VzIHdpdGggbGVnYWN5IGZvcm1hdCBpZHMuXG4gICAqXG4gICAqIFRoaXMgaXMgb25seSBhY3RpdmUgaWYgd2UgYXJlIGJ1aWxkaW5nIHdpdGggYGVuYWJsZUl2eTogdHJ1ZWAuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBub3cgaXMgYHRydWVgLlxuICAgKlxuICAgKiBVc2UgdGhpcyBvcHRpb24gd2hlbiB1c2UgYXJlIHVzaW5nIHRoZSBgJGxvY2FsaXplYCBiYXNlZCBsb2NhbGl6YXRpb24gbWVzc2FnZXMgYnV0XG4gICAqIGhhdmUgbm90IG1pZ3JhdGVkIHRoZSB0cmFuc2xhdGlvbiBmaWxlcyB0byB1c2UgdGhlIG5ldyBgJGxvY2FsaXplYCBtZXNzYWdlIGlkIGZvcm1hdC5cbiAgICovXG4gIGVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRyYW5zbGF0aW9uIHZhcmlhYmxlIG5hbWUgc2hvdWxkIGNvbnRhaW4gZXh0ZXJuYWwgbWVzc2FnZSBpZFxuICAgKiAodXNlZCBieSBDbG9zdXJlIENvbXBpbGVyJ3Mgb3V0cHV0IG9mIGBnb29nLmdldE1zZ2AgZm9yIHRyYW5zaXRpb24gcGVyaW9kKVxuICAgKi9cbiAgaTE4blVzZUV4dGVybmFsSWRzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBNaXNjZWxsYW5lb3VzIG9wdGlvbnMgdGhhdCBkb24ndCBmYWxsIGludG8gYW55IG90aGVyIGNhdGVnb3J5XG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc2NPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbXBpbGVyIHNob3VsZCBhdm9pZCBnZW5lcmF0aW5nIGNvZGUgZm9yIGNsYXNzZXMgdGhhdCBoYXZlbid0IGJlZW4gZXhwb3J0ZWQuXG4gICAqIFRoaXMgaXMgb25seSBhY3RpdmUgd2hlbiBidWlsZGluZyB3aXRoIGBlbmFibGVJdnk6IHRydWVgLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBjb21waWxlTm9uRXhwb3J0ZWRDbGFzc2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzYWJsZSBUeXBlU2NyaXB0IFZlcnNpb24gQ2hlY2suXG4gICAqL1xuICBkaXNhYmxlVHlwZVNjcmlwdFZlcnNpb25DaGVjaz86IGJvb2xlYW47XG59Il19
@@ -101,6 +101,15 @@ export declare enum ErrorCode {
101
101
  * Template variables are read-only.
102
102
  */
103
103
  WRITE_TO_READ_ONLY_VARIABLE = 8005,
104
+ /**
105
+ * A template variable was declared twice. For example:
106
+ *
107
+ * ```html
108
+ * <div *ngFor="let i of items; let i = index">
109
+ * </div>
110
+ * ```
111
+ */
112
+ DUPLICATE_VARIABLE_DECLARATION = 8006,
104
113
  /**
105
114
  * An injectable already has a `ɵprov` property.
106
115
  */
@@ -112,6 +112,15 @@
112
112
  * Template variables are read-only.
113
113
  */
114
114
  ErrorCode[ErrorCode["WRITE_TO_READ_ONLY_VARIABLE"] = 8005] = "WRITE_TO_READ_ONLY_VARIABLE";
115
+ /**
116
+ * A template variable was declared twice. For example:
117
+ *
118
+ * ```html
119
+ * <div *ngFor="let i of items; let i = index">
120
+ * </div>
121
+ * ```
122
+ */
123
+ ErrorCode[ErrorCode["DUPLICATE_VARIABLE_DECLARATION"] = 8006] = "DUPLICATE_VARIABLE_DECLARATION";
115
124
  /**
116
125
  * An injectable already has a `ɵprov` property.
117
126
  */
@@ -125,4 +134,4 @@
125
134
  }
126
135
  exports.ngErrorCode = ngErrorCode;
127
136
  });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JfY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvZGlhZ25vc3RpY3Mvc3JjL2Vycm9yX2NvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSDs7T0FFRztJQUNILElBQVksU0FxSFg7SUFySEQsV0FBWSxTQUFTO1FBQ25CLHNGQUFnQyxDQUFBO1FBQ2hDLDhFQUE0QixDQUFBO1FBQzVCLDRFQUEyQixDQUFBO1FBQzNCLDRGQUFtQyxDQUFBO1FBQ25DLDRFQUEyQixDQUFBO1FBRTNCOztXQUVHO1FBQ0gsMEVBQTBCLENBQUE7UUFFMUIsNEVBQTJCLENBQUE7UUFDM0Isc0VBQXdCLENBQUE7UUFFeEIsd0ZBQWlDLENBQUE7UUFDakMsc0VBQXdCLENBQUE7UUFDeEIsMEVBQTBCLENBQUE7UUFDMUIsd0ZBQWlDLENBQUE7UUFFakMsOEZBQThGO1FBQzlGLDRFQUEyQixDQUFBO1FBRTNCOzs7V0FHRztRQUNILDBHQUEwQyxDQUFBO1FBRTFDLDBFQUEwQixDQUFBO1FBQzFCLDRHQUEyQyxDQUFBO1FBRTNDLDBGQUFrQyxDQUFBO1FBQ2xDLGtKQUE4RCxDQUFBO1FBRTlEOzs7V0FHRztRQUNILG9GQUErQixDQUFBO1FBRS9COztXQUVHO1FBQ0gsNEZBQW1DLENBQUE7UUFFbkM7O1dBRUc7UUFDSCxrRkFBOEIsQ0FBQTtRQUU5Qjs7V0FFRztRQUNILGtGQUE4QixDQUFBO1FBRTlCOzs7V0FHRztRQUNILHNGQUFnQyxDQUFBO1FBRWhDOzs7V0FHRztRQUNILGdJQUFxRCxDQUFBO1FBRXJEOzs7V0FHRztRQUNILG9HQUF1QyxDQUFBO1FBRXZDOztXQUVHO1FBQ0gsa0dBQXNDLENBQUE7UUFFdEM7O1dBRUc7UUFDSCxnRkFBNkIsQ0FBQTtRQUU3Qjs7V0FFRztRQUNILG9GQUErQixDQUFBO1FBRS9COztXQUVHO1FBQ0gsb0ZBQStCLENBQUE7UUFFL0I7O1dBRUc7UUFDSCw0REFBbUIsQ0FBQTtRQUVuQjs7Ozs7Ozs7Ozs7V0FXRztRQUNILDBGQUFrQyxDQUFBO1FBRWxDOztXQUVHO1FBQ0gsc0ZBQWdDLENBQUE7SUFDbEMsQ0FBQyxFQXJIVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQXFIcEI7SUFFRDs7T0FFRztJQUNILFNBQWdCLFdBQVcsQ0FBQyxJQUFlO1FBQ3pDLE9BQU8sUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRkQsa0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgZW51bSBFcnJvckNvZGUge1xuICBERUNPUkFUT1JfQVJHX05PVF9MSVRFUkFMID0gMTAwMSxcbiAgREVDT1JBVE9SX0FSSVRZX1dST05HID0gMTAwMixcbiAgREVDT1JBVE9SX05PVF9DQUxMRUQgPSAxMDAzLFxuICBERUNPUkFUT1JfT05fQU5PTllNT1VTX0NMQVNTID0gMTAwNCxcbiAgREVDT1JBVE9SX1VORVhQRUNURUQgPSAxMDA1LFxuXG4gIC8qKlxuICAgKiBUaGlzIGVycm9yIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlcmUgYXJlIGluY29tcGF0aWJsZSBkZWNvcmF0b3JzIG9uIGEgdHlwZSBvciBhIGNsYXNzIGZpZWxkLlxuICAgKi9cbiAgREVDT1JBVE9SX0NPTExJU0lPTiA9IDEwMDYsXG5cbiAgVkFMVUVfSEFTX1dST05HX1RZUEUgPSAxMDEwLFxuICBWQUxVRV9OT1RfTElURVJBTCA9IDEwMTEsXG5cbiAgQ09NUE9ORU5UX01JU1NJTkdfVEVNUExBVEUgPSAyMDAxLFxuICBQSVBFX01JU1NJTkdfTkFNRSA9IDIwMDIsXG4gIFBBUkFNX01JU1NJTkdfVE9LRU4gPSAyMDAzLFxuICBESVJFQ1RJVkVfTUlTU0lOR19TRUxFQ1RPUiA9IDIwMDQsXG5cbiAgLyoqIFJhaXNlZCB3aGVuIGFuIHVuZGVjb3JhdGVkIGNsYXNzIGlzIHBhc3NlZCBpbiBhcyBhIHByb3ZpZGVyIHRvIGEgbW9kdWxlIG9yIGEgZGlyZWN0aXZlLiAqL1xuICBVTkRFQ09SQVRFRF9QUk9WSURFUiA9IDIwMDUsXG5cbiAgLyoqXG4gICAqIFJhaXNlZCB3aGVuIGEgRGlyZWN0aXZlIGluaGVyaXRzIGl0cyBjb25zdHJ1Y3RvciBmcm9tIGEgYmFzZSBjbGFzcyB3aXRob3V0IGFuIEFuZ3VsYXJcbiAgICogZGVjb3JhdG9yLlxuICAgKi9cbiAgRElSRUNUSVZFX0lOSEVSSVRTX1VOREVDT1JBVEVEX0NUT1IgPSAyMDA2LFxuXG4gIFNZTUJPTF9OT1RfRVhQT1JURUQgPSAzMDAxLFxuICBTWU1CT0xfRVhQT1JURURfVU5ERVJfRElGRkVSRU5UX05BTUUgPSAzMDAyLFxuXG4gIENPTkZJR19GTEFUX01PRFVMRV9OT19JTkRFWCA9IDQwMDEsXG4gIENPTkZJR19TVFJJQ1RfVEVNUExBVEVTX0lNUExJRVNfRlVMTF9URU1QTEFURV9UWVBFQ0hFQ0sgPSA0MDAyLFxuXG4gIC8qKlxuICAgKiBSYWlzZWQgd2hlbiBhIGhvc3QgZXhwcmVzc2lvbiBoYXMgYSBwYXJzZSBlcnJvciwgc3VjaCBhcyBhIGhvc3QgbGlzdGVuZXIgb3IgaG9zdCBiaW5kaW5nXG4gICAqIGV4cHJlc3Npb24gY29udGFpbmluZyBhIHBpcGUuXG4gICAqL1xuICBIT1NUX0JJTkRJTkdfUEFSU0VfRVJST1IgPSA1MDAxLFxuXG4gIC8qKlxuICAgKiBSYWlzZWQgd2hlbiBhbiBOZ01vZHVsZSBjb250YWlucyBhbiBpbnZhbGlkIHJlZmVyZW5jZSBpbiBgZGVjbGFyYXRpb25zYC5cbiAgICovXG4gIE5HTU9EVUxFX0lOVkFMSURfREVDTEFSQVRJT04gPSA2MDAxLFxuXG4gIC8qKlxuICAgKiBSYWlzZWQgd2hlbiBhbiBOZ01vZHVsZSBjb250YWlucyBhbiBpbnZhbGlkIHR5cGUgaW4gYGltcG9ydHNgLlxuICAgKi9cbiAgTkdNT0RVTEVfSU5WQUxJRF9JTVBPUlQgPSA2MDAyLFxuXG4gIC8qKlxuICAgKiBSYWlzZWQgd2hlbiBhbiBOZ01vZHVsZSBjb250YWlucyBhbiBpbnZhbGlkIHR5cGUgaW4gYGV4cG9ydHNgLlxuICAgKi9cbiAgTkdNT0RVTEVfSU5WQUxJRF9FWFBPUlQgPSA2MDAzLFxuXG4gIC8qKlxuICAgKiBSYWlzZWQgd2hlbiBhbiBOZ01vZHVsZSBjb250YWlucyBhIHR5cGUgaW4gYGV4cG9ydHNgIHdoaWNoIGlzIG5laXRoZXIgaW4gYGRlY2xhcmF0aW9uc2Agbm9yXG4gICAqIG90aGVyd2lzZSBpbXBvcnRlZC5cbiAgICovXG4gIE5HTU9EVUxFX0lOVkFMSURfUkVFWFBPUlQgPSA2MDA0LFxuXG4gIC8qKlxuICAgKiBSYWlzZWQgd2hlbiBhIGBNb2R1bGVXaXRoUHJvdmlkZXJzYCB3aXRoIGEgbWlzc2luZ1xuICAgKiBnZW5lcmljIHR5cGUgYXJndW1lbnQgaXMgcGFzc2VkIGludG8gYW4gYE5nTW9kdWxlYC5cbiAgICovXG4gIE5HTU9EVUxFX01PRFVMRV9XSVRIX1BST1ZJREVSU19NSVNTSU5HX0dFTkVSSUMgPSA2MDA1LFxuXG4gIC8qKlxuICAgKiBSYWlzZWQgd2hlbiBhbiBOZ01vZHVsZSBleHBvcnRzIG11bHRpcGxlIGRpcmVjdGl2ZXMvcGlwZXMgb2YgdGhlIHNhbWUgbmFtZSBhbmQgdGhlIGNvbXBpbGVyXG4gICAqIGF0dGVtcHRzIHRvIGdlbmVyYXRlIHByaXZhdGUgcmUtZXhwb3J0cyB3aXRoaW4gdGhlIE5nTW9kdWxlIGZpbGUuXG4gICAqL1xuICBOR01PRFVMRV9SRUVYUE9SVF9OQU1FX0NPTExJU0lPTiA9IDYwMDYsXG5cbiAgLyoqXG4gICAqIFJhaXNlZCB3aGVuIGEgZGlyZWN0aXZlL3BpcGUgaXMgcGFydCBvZiB0aGUgZGVjbGFyYXRpb25zIG9mIHR3byBvciBtb3JlIE5nTW9kdWxlcy5cbiAgICovXG4gIE5HTU9EVUxFX0RFQ0xBUkFUSU9OX05PVF9VTklRVUUgPSA2MDA3LFxuXG4gIC8qKlxuICAgKiBBbiBlbGVtZW50IG5hbWUgZmFpbGVkIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgRE9NIHNjaGVtYS5cbiAgICovXG4gIFNDSEVNQV9JTlZBTElEX0VMRU1FTlQgPSA4MDAxLFxuXG4gIC8qKlxuICAgKiBBbiBlbGVtZW50J3MgYXR0cmlidXRlIG5hbWUgZmFpbGVkIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgRE9NIHNjaGVtYS5cbiAgICovXG4gIFNDSEVNQV9JTlZBTElEX0FUVFJJQlVURSA9IDgwMDIsXG5cbiAgLyoqXG4gICAqIE5vIG1hdGNoaW5nIGRpcmVjdGl2ZSB3YXMgZm91bmQgZm9yIGEgYCNyZWY9XCJ0YXJnZXRcImAgZXhwcmVzc2lvbi5cbiAgICovXG4gIE1JU1NJTkdfUkVGRVJFTkNFX1RBUkdFVCA9IDgwMDMsXG5cbiAgLyoqXG4gICAqIE5vIG1hdGNoaW5nIHBpcGUgd2FzIGZvdW5kIGZvciBhXG4gICAqL1xuICBNSVNTSU5HX1BJUEUgPSA4MDA0LFxuXG4gIC8qKlxuICAgKiBUaGUgbGVmdC1oYW5kIHNpZGUgb2YgYW4gYXNzaWdubWVudCBleHByZXNzaW9uIHdhcyBhIHRlbXBsYXRlIHZhcmlhYmxlLiBFZmZlY3RpdmVseSwgdGhlXG4gICAqIHRlbXBsYXRlIGxvb2tlZCBsaWtlOlxuICAgKlxuICAgKiBgYGBcbiAgICogPG5nLXRlbXBsYXRlIGxldC1zb21ldGhpbmc+XG4gICAqICAgPGJ1dHRvbiAoY2xpY2spPVwic29tZXRoaW5nID0gLi4uXCI+Li4uPC9idXR0b24+XG4gICAqIDwvbmctdGVtcGxhdGU+XG4gICAqIGBgYFxuICAgKlxuICAgKiBUZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIHJlYWQtb25seS5cbiAgICovXG4gIFdSSVRFX1RPX1JFQURfT05MWV9WQVJJQUJMRSA9IDgwMDUsXG5cbiAgLyoqXG4gICAqIEFuIGluamVjdGFibGUgYWxyZWFkeSBoYXMgYSBgybVwcm92YCBwcm9wZXJ0eS5cbiAgICovXG4gIElOSkVDVEFCTEVfRFVQTElDQVRFX1BST1YgPSA5MDAxLFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gbmdFcnJvckNvZGUoY29kZTogRXJyb3JDb2RlKTogbnVtYmVyIHtcbiAgcmV0dXJuIHBhcnNlSW50KCctOTknICsgY29kZSk7XG59XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JfY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvZGlhZ25vc3RpY3Mvc3JjL2Vycm9yX2NvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSDs7T0FFRztJQUNILElBQVksU0ErSFg7SUEvSEQsV0FBWSxTQUFTO1FBQ25CLHNGQUFnQyxDQUFBO1FBQ2hDLDhFQUE0QixDQUFBO1FBQzVCLDRFQUEyQixDQUFBO1FBQzNCLDRGQUFtQyxDQUFBO1FBQ25DLDRFQUEyQixDQUFBO1FBRTNCOztXQUVHO1FBQ0gsMEVBQTBCLENBQUE7UUFFMUIsNEVBQTJCLENBQUE7UUFDM0Isc0VBQXdCLENBQUE7UUFFeEIsd0ZBQWlDLENBQUE7UUFDakMsc0VBQXdCLENBQUE7UUFDeEIsMEVBQTBCLENBQUE7UUFDMUIsd0ZBQWlDLENBQUE7UUFFakMsOEZBQThGO1FBQzlGLDRFQUEyQixDQUFBO1FBRTNCOzs7V0FHRztRQUNILDBHQUEwQyxDQUFBO1FBRTFDLDBFQUEwQixDQUFBO1FBQzFCLDRHQUEyQyxDQUFBO1FBRTNDLDBGQUFrQyxDQUFBO1FBQ2xDLGtKQUE4RCxDQUFBO1FBRTlEOzs7V0FHRztRQUNILG9GQUErQixDQUFBO1FBRS9COztXQUVHO1FBQ0gsNEZBQW1DLENBQUE7UUFFbkM7O1dBRUc7UUFDSCxrRkFBOEIsQ0FBQTtRQUU5Qjs7V0FFRztRQUNILGtGQUE4QixDQUFBO1FBRTlCOzs7V0FHRztRQUNILHNGQUFnQyxDQUFBO1FBRWhDOzs7V0FHRztRQUNILGdJQUFxRCxDQUFBO1FBRXJEOzs7V0FHRztRQUNILG9HQUF1QyxDQUFBO1FBRXZDOztXQUVHO1FBQ0gsa0dBQXNDLENBQUE7UUFFdEM7O1dBRUc7UUFDSCxnRkFBNkIsQ0FBQTtRQUU3Qjs7V0FFRztRQUNILG9GQUErQixDQUFBO1FBRS9COztXQUVHO1FBQ0gsb0ZBQStCLENBQUE7UUFFL0I7O1dBRUc7UUFDSCw0REFBbUIsQ0FBQTtRQUVuQjs7Ozs7Ozs7Ozs7V0FXRztRQUNILDBGQUFrQyxDQUFBO1FBRWxDOzs7Ozs7O1dBT0c7UUFDSCxnR0FBcUMsQ0FBQTtRQUVyQzs7V0FFRztRQUNILHNGQUFnQyxDQUFBO0lBQ2xDLENBQUMsRUEvSFcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUErSHBCO0lBRUQ7O09BRUc7SUFDSCxTQUFnQixXQUFXLENBQUMsSUFBZTtRQUN6QyxPQUFPLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUZELGtDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGVudW0gRXJyb3JDb2RlIHtcbiAgREVDT1JBVE9SX0FSR19OT1RfTElURVJBTCA9IDEwMDEsXG4gIERFQ09SQVRPUl9BUklUWV9XUk9ORyA9IDEwMDIsXG4gIERFQ09SQVRPUl9OT1RfQ0FMTEVEID0gMTAwMyxcbiAgREVDT1JBVE9SX09OX0FOT05ZTU9VU19DTEFTUyA9IDEwMDQsXG4gIERFQ09SQVRPUl9VTkVYUEVDVEVEID0gMTAwNSxcblxuICAvKipcbiAgICogVGhpcyBlcnJvciBjb2RlIGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBpbmNvbXBhdGlibGUgZGVjb3JhdG9ycyBvbiBhIHR5cGUgb3IgYSBjbGFzcyBmaWVsZC5cbiAgICovXG4gIERFQ09SQVRPUl9DT0xMSVNJT04gPSAxMDA2LFxuXG4gIFZBTFVFX0hBU19XUk9OR19UWVBFID0gMTAxMCxcbiAgVkFMVUVfTk9UX0xJVEVSQUwgPSAxMDExLFxuXG4gIENPTVBPTkVOVF9NSVNTSU5HX1RFTVBMQVRFID0gMjAwMSxcbiAgUElQRV9NSVNTSU5HX05BTUUgPSAyMDAyLFxuICBQQVJBTV9NSVNTSU5HX1RPS0VOID0gMjAwMyxcbiAgRElSRUNUSVZFX01JU1NJTkdfU0VMRUNUT1IgPSAyMDA0LFxuXG4gIC8qKiBSYWlzZWQgd2hlbiBhbiB1bmRlY29yYXRlZCBjbGFzcyBpcyBwYXNzZWQgaW4gYXMgYSBwcm92aWRlciB0byBhIG1vZHVsZSBvciBhIGRpcmVjdGl2ZS4gKi9cbiAgVU5ERUNPUkFURURfUFJPVklERVIgPSAyMDA1LFxuXG4gIC8qKlxuICAgKiBSYWlzZWQgd2hlbiBhIERpcmVjdGl2ZSBpbmhlcml0cyBpdHMgY29uc3RydWN0b3IgZnJvbSBhIGJhc2UgY2xhc3Mgd2l0aG91dCBhbiBBbmd1bGFyXG4gICAqIGRlY29yYXRvci5cbiAgICovXG4gIERJUkVDVElWRV9JTkhFUklUU19VTkRFQ09SQVRFRF9DVE9SID0gMjAwNixcblxuICBTWU1CT0xfTk9UX0VYUE9SVEVEID0gMzAwMSxcbiAgU1lNQk9MX0VYUE9SVEVEX1VOREVSX0RJRkZFUkVOVF9OQU1FID0gMzAwMixcblxuICBDT05GSUdfRkxBVF9NT0RVTEVfTk9fSU5ERVggPSA0MDAxLFxuICBDT05GSUdfU1RSSUNUX1RFTVBMQVRFU19JTVBMSUVTX0ZVTExfVEVNUExBVEVfVFlQRUNIRUNLID0gNDAwMixcblxuICAvKipcbiAgICogUmFpc2VkIHdoZW4gYSBob3N0IGV4cHJlc3Npb24gaGFzIGEgcGFyc2UgZXJyb3IsIHN1Y2ggYXMgYSBob3N0IGxpc3RlbmVyIG9yIGhvc3QgYmluZGluZ1xuICAgKiBleHByZXNzaW9uIGNvbnRhaW5pbmcgYSBwaXBlLlxuICAgKi9cbiAgSE9TVF9CSU5ESU5HX1BBUlNFX0VSUk9SID0gNTAwMSxcblxuICAvKipcbiAgICogUmFpc2VkIHdoZW4gYW4gTmdNb2R1bGUgY29udGFpbnMgYW4gaW52YWxpZCByZWZlcmVuY2UgaW4gYGRlY2xhcmF0aW9uc2AuXG4gICAqL1xuICBOR01PRFVMRV9JTlZBTElEX0RFQ0xBUkFUSU9OID0gNjAwMSxcblxuICAvKipcbiAgICogUmFpc2VkIHdoZW4gYW4gTmdNb2R1bGUgY29udGFpbnMgYW4gaW52YWxpZCB0eXBlIGluIGBpbXBvcnRzYC5cbiAgICovXG4gIE5HTU9EVUxFX0lOVkFMSURfSU1QT1JUID0gNjAwMixcblxuICAvKipcbiAgICogUmFpc2VkIHdoZW4gYW4gTmdNb2R1bGUgY29udGFpbnMgYW4gaW52YWxpZCB0eXBlIGluIGBleHBvcnRzYC5cbiAgICovXG4gIE5HTU9EVUxFX0lOVkFMSURfRVhQT1JUID0gNjAwMyxcblxuICAvKipcbiAgICogUmFpc2VkIHdoZW4gYW4gTmdNb2R1bGUgY29udGFpbnMgYSB0eXBlIGluIGBleHBvcnRzYCB3aGljaCBpcyBuZWl0aGVyIGluIGBkZWNsYXJhdGlvbnNgIG5vclxuICAgKiBvdGhlcndpc2UgaW1wb3J0ZWQuXG4gICAqL1xuICBOR01PRFVMRV9JTlZBTElEX1JFRVhQT1JUID0gNjAwNCxcblxuICAvKipcbiAgICogUmFpc2VkIHdoZW4gYSBgTW9kdWxlV2l0aFByb3ZpZGVyc2Agd2l0aCBhIG1pc3NpbmdcbiAgICogZ2VuZXJpYyB0eXBlIGFyZ3VtZW50IGlzIHBhc3NlZCBpbnRvIGFuIGBOZ01vZHVsZWAuXG4gICAqL1xuICBOR01PRFVMRV9NT0RVTEVfV0lUSF9QUk9WSURFUlNfTUlTU0lOR19HRU5FUklDID0gNjAwNSxcblxuICAvKipcbiAgICogUmFpc2VkIHdoZW4gYW4gTmdNb2R1bGUgZXhwb3J0cyBtdWx0aXBsZSBkaXJlY3RpdmVzL3BpcGVzIG9mIHRoZSBzYW1lIG5hbWUgYW5kIHRoZSBjb21waWxlclxuICAgKiBhdHRlbXB0cyB0byBnZW5lcmF0ZSBwcml2YXRlIHJlLWV4cG9ydHMgd2l0aGluIHRoZSBOZ01vZHVsZSBmaWxlLlxuICAgKi9cbiAgTkdNT0RVTEVfUkVFWFBPUlRfTkFNRV9DT0xMSVNJT04gPSA2MDA2LFxuXG4gIC8qKlxuICAgKiBSYWlzZWQgd2hlbiBhIGRpcmVjdGl2ZS9waXBlIGlzIHBhcnQgb2YgdGhlIGRlY2xhcmF0aW9ucyBvZiB0d28gb3IgbW9yZSBOZ01vZHVsZXMuXG4gICAqL1xuICBOR01PRFVMRV9ERUNMQVJBVElPTl9OT1RfVU5JUVVFID0gNjAwNyxcblxuICAvKipcbiAgICogQW4gZWxlbWVudCBuYW1lIGZhaWxlZCB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIERPTSBzY2hlbWEuXG4gICAqL1xuICBTQ0hFTUFfSU5WQUxJRF9FTEVNRU5UID0gODAwMSxcblxuICAvKipcbiAgICogQW4gZWxlbWVudCdzIGF0dHJpYnV0ZSBuYW1lIGZhaWxlZCB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIERPTSBzY2hlbWEuXG4gICAqL1xuICBTQ0hFTUFfSU5WQUxJRF9BVFRSSUJVVEUgPSA4MDAyLFxuXG4gIC8qKlxuICAgKiBObyBtYXRjaGluZyBkaXJlY3RpdmUgd2FzIGZvdW5kIGZvciBhIGAjcmVmPVwidGFyZ2V0XCJgIGV4cHJlc3Npb24uXG4gICAqL1xuICBNSVNTSU5HX1JFRkVSRU5DRV9UQVJHRVQgPSA4MDAzLFxuXG4gIC8qKlxuICAgKiBObyBtYXRjaGluZyBwaXBlIHdhcyBmb3VuZCBmb3IgYVxuICAgKi9cbiAgTUlTU0lOR19QSVBFID0gODAwNCxcblxuICAvKipcbiAgICogVGhlIGxlZnQtaGFuZCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiB3YXMgYSB0ZW1wbGF0ZSB2YXJpYWJsZS4gRWZmZWN0aXZlbHksIHRoZVxuICAgKiB0ZW1wbGF0ZSBsb29rZWQgbGlrZTpcbiAgICpcbiAgICogYGBgXG4gICAqIDxuZy10ZW1wbGF0ZSBsZXQtc29tZXRoaW5nPlxuICAgKiAgIDxidXR0b24gKGNsaWNrKT1cInNvbWV0aGluZyA9IC4uLlwiPi4uLjwvYnV0dG9uPlxuICAgKiA8L25nLXRlbXBsYXRlPlxuICAgKiBgYGBcbiAgICpcbiAgICogVGVtcGxhdGUgdmFyaWFibGVzIGFyZSByZWFkLW9ubHkuXG4gICAqL1xuICBXUklURV9UT19SRUFEX09OTFlfVkFSSUFCTEUgPSA4MDA1LFxuXG4gIC8qKlxuICAgKiBBIHRlbXBsYXRlIHZhcmlhYmxlIHdhcyBkZWNsYXJlZCB0d2ljZS4gRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYGh0bWxcbiAgICogPGRpdiAqbmdGb3I9XCJsZXQgaSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgKiA8L2Rpdj5cbiAgICogYGBgXG4gICAqL1xuICBEVVBMSUNBVEVfVkFSSUFCTEVfREVDTEFSQVRJT04gPSA4MDA2LFxuXG4gIC8qKlxuICAgKiBBbiBpbmplY3RhYmxlIGFscmVhZHkgaGFzIGEgYMm1cHJvdmAgcHJvcGVydHkuXG4gICAqL1xuICBJTkpFQ1RBQkxFX0RVUExJQ0FURV9QUk9WID0gOTAwMSxcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5nRXJyb3JDb2RlKGNvZGU6IEVycm9yQ29kZSk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludCgnLTk5JyArIGNvZGUpO1xufVxuIl19