@angular/compiler-cli 10.1.4 → 10.2.1

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 (76) hide show
  1. package/ngcc/src/analysis/module_with_providers_analyzer.d.ts +2 -2
  2. package/ngcc/src/analysis/module_with_providers_analyzer.js +1 -1
  3. package/ngcc/src/analysis/ngcc_references_registry.d.ts +3 -3
  4. package/ngcc/src/analysis/ngcc_references_registry.js +2 -2
  5. package/ngcc/src/analysis/private_declarations_analyzer.js +1 -1
  6. package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
  7. package/ngcc/src/dependencies/dependency_host.d.ts +15 -0
  8. package/ngcc/src/dependencies/dependency_host.js +42 -9
  9. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +4 -6
  10. package/ngcc/src/host/commonjs_host.d.ts +5 -1
  11. package/ngcc/src/host/commonjs_host.js +50 -20
  12. package/ngcc/src/host/commonjs_umd_utils.d.ts +59 -12
  13. package/ngcc/src/host/commonjs_umd_utils.js +57 -15
  14. package/ngcc/src/host/delegating_host.d.ts +3 -3
  15. package/ngcc/src/host/delegating_host.js +1 -1
  16. package/ngcc/src/host/esm2015_host.d.ts +82 -27
  17. package/ngcc/src/host/esm2015_host.js +129 -107
  18. package/ngcc/src/host/esm5_host.js +7 -7
  19. package/ngcc/src/host/umd_host.d.ts +21 -1
  20. package/ngcc/src/host/umd_host.js +210 -25
  21. package/ngcc/src/locking/async_locker.d.ts +0 -2
  22. package/ngcc/src/locking/async_locker.js +8 -51
  23. package/ngcc/src/migrations/missing_injectable_migration.js +1 -1
  24. package/ngcc/src/migrations/undecorated_parent_migration.js +1 -1
  25. package/ngcc/src/migrations/utils.d.ts +1 -1
  26. package/ngcc/src/migrations/utils.js +1 -1
  27. package/ngcc/src/packages/build_marker.d.ts +1 -1
  28. package/ngcc/src/packages/build_marker.js +1 -1
  29. package/ngcc/src/utils.d.ts +3 -3
  30. package/ngcc/src/utils.js +1 -1
  31. package/package.json +2 -2
  32. package/src/ngtsc/annotations/src/component.js +1 -1
  33. package/src/ngtsc/annotations/src/directive.js +9 -3
  34. package/src/ngtsc/annotations/src/metadata.d.ts +2 -3
  35. package/src/ngtsc/annotations/src/metadata.js +1 -1
  36. package/src/ngtsc/annotations/src/ng_module.js +4 -9
  37. package/src/ngtsc/annotations/src/references_registry.d.ts +3 -3
  38. package/src/ngtsc/annotations/src/references_registry.js +1 -1
  39. package/src/ngtsc/core/src/compiler.d.ts +2 -1
  40. package/src/ngtsc/core/src/compiler.js +1 -1
  41. package/src/ngtsc/entry_point/src/private_export_checker.js +1 -1
  42. package/src/ngtsc/entry_point/src/reference_graph.d.ts +2 -2
  43. package/src/ngtsc/entry_point/src/reference_graph.js +1 -1
  44. package/src/ngtsc/imports/src/emitter.d.ts +2 -2
  45. package/src/ngtsc/imports/src/emitter.js +12 -8
  46. package/src/ngtsc/indexer/src/api.d.ts +2 -3
  47. package/src/ngtsc/indexer/src/api.js +1 -1
  48. package/src/ngtsc/indexer/src/transform.d.ts +2 -2
  49. package/src/ngtsc/indexer/src/transform.js +1 -1
  50. package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +1 -0
  51. package/src/ngtsc/partial_evaluator/src/interpreter.js +15 -20
  52. package/src/ngtsc/perf/src/api.d.ts +3 -3
  53. package/src/ngtsc/perf/src/api.js +1 -1
  54. package/src/ngtsc/perf/src/noop.d.ts +0 -7
  55. package/src/ngtsc/perf/src/noop.js +1 -8
  56. package/src/ngtsc/perf/src/tracking.d.ts +3 -2
  57. package/src/ngtsc/perf/src/tracking.js +1 -1
  58. package/src/ngtsc/program.d.ts +2 -1
  59. package/src/ngtsc/program.js +1 -1
  60. package/src/ngtsc/reflection/src/host.d.ts +39 -22
  61. package/src/ngtsc/reflection/src/host.js +10 -2
  62. package/src/ngtsc/reflection/src/typescript.d.ts +3 -3
  63. package/src/ngtsc/reflection/src/typescript.js +4 -2
  64. package/src/ngtsc/reflection/src/util.js +7 -4
  65. package/src/ngtsc/scope/src/local.js +1 -1
  66. package/src/ngtsc/sourcemaps/src/source_file.d.ts +3 -2
  67. package/src/ngtsc/sourcemaps/src/source_file.js +8 -7
  68. package/src/ngtsc/sourcemaps/src/source_file_loader.js +4 -5
  69. package/src/ngtsc/transform/src/compilation.d.ts +3 -3
  70. package/src/ngtsc/transform/src/compilation.js +1 -1
  71. package/src/ngtsc/typecheck/diagnostics/src/id.d.ts +2 -2
  72. package/src/ngtsc/typecheck/diagnostics/src/id.js +1 -1
  73. package/src/ngtsc/typecheck/src/type_parameter_emitter.js +1 -1
  74. package/src/ngtsc/util/src/typescript.d.ts +4 -1
  75. package/src/ngtsc/util/src/typescript.js +7 -2
  76. package/src/version.js +1 -1
@@ -95,12 +95,20 @@
95
95
  function LocalIdentifierStrategy() {
96
96
  }
97
97
  LocalIdentifierStrategy.prototype.emit = function (ref, context, importFlags) {
98
+ var refSf = typescript_1.getSourceFile(ref.node);
98
99
  // If the emitter has specified ForceNewImport, then LocalIdentifierStrategy should not use a
99
100
  // local identifier at all, *except* in the source file where the node is actually declared.
100
- if (importFlags & ImportFlags.ForceNewImport &&
101
- typescript_1.getSourceFile(ref.node) !== typescript_1.getSourceFile(context)) {
101
+ if (importFlags & ImportFlags.ForceNewImport && refSf !== context) {
102
102
  return null;
103
103
  }
104
+ // If referenced node is not an actual TS declaration (e.g. `class Foo` or `function foo() {}`,
105
+ // etc) and it is in the current file then just use it directly.
106
+ // This is important because the reference could be a property access (e.g. `exports.foo`). In
107
+ // such a case, the reference's `identities` property would be `[foo]`, which would result in an
108
+ // invalid emission of a free-standing `foo` identifier, rather than `exports.foo`.
109
+ if (!typescript_1.isDeclaration(ref.node) && refSf === context) {
110
+ return new compiler_1.WrappedNodeExpr(ref.node);
111
+ }
104
112
  // A Reference can have multiple identities in different files, so it may already have an
105
113
  // Identifier in the requested context file.
106
114
  var identifier = ref.getIdentityIn(context);
@@ -185,11 +193,7 @@
185
193
  }
186
194
  var exportMap = new Map();
187
195
  exports.forEach(function (declaration, name) {
188
- // It's okay to skip inline declarations, since by definition they're not target-able with a
189
- // ts.Declaration anyway.
190
- if (declaration.node !== null) {
191
- exportMap.set(declaration.node, name);
192
- }
196
+ exportMap.set(declaration.node, name);
193
197
  });
194
198
  return exportMap;
195
199
  };
@@ -281,4 +285,4 @@
281
285
  }());
282
286
  exports.UnifiedModulesStrategy = UnifiedModulesStrategy;
283
287
  });
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cy9zcmMvZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsOENBQStGO0lBQy9GLCtCQUFpQztJQUdqQywyRUFBcUk7SUFDckksNkVBQTBEO0lBRTFELGtGQUE0RztJQUU1Ryx1RkFBcUQ7SUFLckQ7O09BRUc7SUFDSCxJQUFZLFdBMkJYO0lBM0JELFdBQVksV0FBVztRQUNyQiw2Q0FBVyxDQUFBO1FBRVg7Ozs7O1dBS0c7UUFDSCxpRUFBcUIsQ0FBQTtRQUVyQjs7Ozs7V0FLRztRQUNILHlEQUFpQixDQUFBO1FBRWpCOzs7Ozs7V0FNRztRQUNILHFFQUF1QixDQUFBO0lBQ3pCLENBQUMsRUEzQlcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUEyQnRCO0lBMkJEOzs7OztPQUtHO0lBQ0g7UUFDRSwwQkFBb0IsVUFBbUM7WUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFBRyxDQUFDO1FBRTNELCtCQUFJLEdBQUosVUFBSyxHQUFjLEVBQUUsT0FBc0IsRUFBRSxXQUEyQzs7WUFBM0MsNEJBQUEsRUFBQSxjQUEyQixXQUFXLENBQUMsSUFBSTs7Z0JBRXRGLEtBQXVCLElBQUEsS0FBQSxpQkFBQSxJQUFJLENBQUMsVUFBVSxDQUFBLGdCQUFBLDRCQUFFO29CQUFuQyxJQUFNLFFBQVEsV0FBQTtvQkFDakIsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7d0JBQ3BCLE9BQU8sT0FBTyxDQUFDO3FCQUNoQjtpQkFDRjs7Ozs7Ozs7O1lBQ0QsTUFBTSxJQUFJLEtBQUss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SSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLE9BQU8sSUFBSSx1QkFBWSxDQUFDLEVBQUMsVUFBVSxZQUFBLEVBQUUsSUFBSSxNQUFBLEVBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDSCwyQkFBQztJQUFELENBQUMsQUFaRCxJQVlDO0lBWlksb0RBQW9CO0lBY2pDOzs7T0FHRztJQUNIO1FBQ0UsZ0NBQW9CLFNBQXlCLEVBQVUsa0JBQXNDO1lBQXpFLGNBQVMsR0FBVCxTQUFTLENBQWdCO1lBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFHLENBQUM7UUFFakcscUNBQUksR0FBSixVQUFLLEdBQXVCLEVBQUUsT0FBc0I7WUFDbEQsSUFBTSxNQUFNLEdBQUcsMEJBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBTSxJQUFJLEdBQUcsb0NBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDakIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQU0sVUFBVSxHQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVwRixPQUFPLElBQUksdUJBQVksQ0FBQyxFQUFDLFVBQVUsWUFBQSxFQUFFLElBQUksTUFBQSxFQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0gsNkJBQUM7SUFBRCxDQUFDLEFBZkQsSUFlQztJQWZZLHdEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtFeHByZXNzaW9uLCBFeHRlcm5hbEV4cHIsIEV4dGVybmFsUmVmZXJlbmNlLCBXcmFwcGVkTm9kZUV4cHJ9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1VuaWZpZWRNb2R1bGVzSG9zdH0gZnJvbSAnLi4vLi4vY29yZS9hcGknO1xuaW1wb3J0IHthYnNvbHV0ZUZyb21Tb3VyY2VGaWxlLCBkaXJuYW1lLCBMb2dpY2FsRmlsZVN5c3RlbSwgTG9naWNhbFByb2plY3RQYXRoLCByZWxhdGl2ZSwgdG9SZWxhdGl2ZUltcG9ydH0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtzdHJpcEV4dGVuc2lvbn0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0vc3JjL3V0aWwnO1xuaW1wb3J0IHtSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5pbXBvcnQge2dldFNvdXJjZUZpbGUsIGlzRGVjbGFyYXRpb24sIGlzVHlwZURlY2xhcmF0aW9uLCBub2RlTmFtZUZvckVycm9yfSBmcm9tICcuLi8uLi91dGlsL3NyYy90eXBlc2NyaXB0JztcblxuaW1wb3J0IHtmaW5kRXhwb3J0ZWROYW1lT2ZOb2RlfSBmcm9tICcuL2ZpbmRfZXhwb3J0JztcbmltcG9ydCB7UmVmZXJlbmNlfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHtNb2R1bGVSZXNvbHZlcn0gZnJvbSAnLi9yZXNvbHZlcic7XG5cblxuLyoqXG4gKiBGbGFncyB3aGljaCBhbHRlciB0aGUgaW1wb3J0cyBnZW5lcmF0ZWQgYnkgdGhlIGBSZWZlcmVuY2VFbWl0dGVyYC5cbiAqL1xuZXhwb3J0IGVudW0gSW1wb3J0RmxhZ3Mge1xuICBOb25lID0gMHgwMCxcblxuICAvKipcbiAgICogRm9yY2UgdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgaW1wb3J0IHdoZW4gZ2VuZXJhdGluZyBhIHJlZmVyZW5jZSwgZXZlbiBpZiBhbiBpZGVudGlmaWVyIGFscmVhZHlcbiAgICogZXhpc3RzIGluIHRoZSB0YXJnZXQgZmlsZSB3aGljaCBjb3VsZCBiZSB1c2VkIGluc3RlYWQuXG4gICAqXG4gICAqIFRoaXMgaXMgc29tZXRpbWVzIHJlcXVpcmVkIGlmIHRoZXJlJ3MgYSByaXNrIFR5cGVTY3JpcHQgbWlnaHQgcmVtb3ZlIGltcG9ydHMgZHVyaW5nIGVtaXQuXG4gICAqL1xuICBGb3JjZU5ld0ltcG9ydCA9IDB4MDEsXG5cbiAgLyoqXG4gICAqIERvbid0IG1ha2UgdXNlIG9mIGFueSBhbGlhc2luZyBpbmZvcm1hdGlvbiB3aGVuIGVtaXR0aW5nIGEgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBUaGlzIGlzIHNvbWV0aW1lcyByZXF1aXJlZCBpZiBlbWl0dGluZyBpbnRvIGEgY29udGV4dCB3aGVyZSBnZW5lcmF0ZWQgcmVmZXJlbmNlcyB3aWxsIGJlIGZlZFxuICAgKiBpbnRvIFR5cGVTY3JpcHQgYW5kIHR5cGUtY2hlY2tlZCAoc3VjaCBhcyBpbiB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nKS5cbiAgICovXG4gIE5vQWxpYXNpbmcgPSAweDAyLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBhbiBpbXBvcnQgdG8gYSB0eXBlLW9ubHkgZGVjbGFyYXRpb24gaXMgYWxsb3dlZC5cbiAgICpcbiAgICogRm9yIHJlZmVyZW5jZXMgdGhhdCBvY2N1ciBpbiB0eXBlLXBvc2l0aW9ucywgdGhlIHJlZmVycmVkIGRlY2xhcmF0aW9uIG1heSBiZSBhIHR5cGUtb25seVxuICAgKiBkZWNsYXJhdGlvbiB0aGF0IGlzIG5vdCByZXRhaW5lZCBkdXJpbmcgZW1pdC4gSW5jbHVkaW5nIHRoaXMgZmxhZyBhbGxvd3MgdG8gZW1pdCByZWZlcmVuY2VzIHRvXG4gICAqIHR5cGUtb25seSBkZWNsYXJhdGlvbnMgYXMgdXNlZCBpbiBlLmcuIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcuXG4gICAqL1xuICBBbGxvd1R5cGVJbXBvcnRzID0gMHgwNCxcbn1cblxuLyoqXG4gKiBBIHBhcnRpY3VsYXIgc3RyYXRlZ3kgZm9yIGdlbmVyYXRpbmcgYW4gZXhwcmVzc2lvbiB3aGljaCByZWZlcnMgdG8gYSBgUmVmZXJlbmNlYC5cbiAqXG4gKiBUaGVyZSBhcmUgbWFueSBwb3RlbnRpYWwgd2F5cyBhIGdpdmVuIGBSZWZlcmVuY2VgIGNvdWxkIGJlIHJlZmVycmVkIHRvIGluIHRoZSBjb250ZXh0IG9mIGEgZ2l2ZW5cbiAqIGZpbGUuIEEgbG9jYWwgZGVjbGFyYXRpb24gY291bGQgYmUgYXZhaWxhYmxlLCB0aGUgYFJlZmVyZW5jZWAgY291bGQgYmUgaW1wb3J0YWJsZSB2aWEgYSByZWxhdGl2ZVxuICogaW1wb3J0IHdpdGhpbiB0aGUgcHJvamVjdCwgb3IgYW4gYWJzb2x1dGUgaW1wb3J0IGludG8gYG5vZGVfbW9kdWxlc2AgbWlnaHQgYmUgbmVjZXNzYXJ5LlxuICpcbiAqIERpZmZlcmVudCBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCBpbXBsZW1lbnRhdGlvbnMgaW1wbGVtZW50IHNwZWNpZmljIGxvZ2ljIGZvciBnZW5lcmF0aW5nIHN1Y2hcbiAqIHJlZmVyZW5jZXMuIEEgc2luZ2xlIHN0cmF0ZWd5IChzdWNoIGFzIHVzaW5nIGEgbG9jYWwgZGVjbGFyYXRpb24pIG1heSBub3QgYWx3YXlzIGJlIGFibGUgdG9cbiAqIGdlbmVyYXRlIGFuIGV4cHJlc3Npb24gZm9yIGV2ZXJ5IGBSZWZlcmVuY2VgIChmb3IgZXhhbXBsZSwgaWYgbm8gbG9jYWwgaWRlbnRpZmllciBpcyBhdmFpbGFibGUpLFxuICogYW5kIG1heSByZXR1cm4gYG51bGxgIGluIHN1Y2ggYSBjYXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZUVtaXRTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBFbWl0IGFuIGBFeHByZXNzaW9uYCB3aGljaCByZWZlcnMgdG8gdGhlIGdpdmVuIGBSZWZlcmVuY2VgIGluIHRoZSBjb250ZXh0IG9mIGEgcGFydGljdWxhclxuICAgKiBzb3VyY2UgZmlsZSwgaWYgcG9zc2libGUuXG4gICAqXG4gICAqIEBwYXJhbSByZWYgdGhlIGBSZWZlcmVuY2VgIGZvciB3aGljaCB0byBnZW5lcmF0ZSBhbiBleHByZXNzaW9uXG4gICAqIEBwYXJhbSBjb250ZXh0IHRoZSBzb3VyY2UgZmlsZSBpbiB3aGljaCB0aGUgYEV4cHJlc3Npb25gIG11c3QgYmUgdmFsaWRcbiAgICogQHBhcmFtIGltcG9ydEZsYWdzIGEgZmxhZyB3aGljaCBjb250cm9scyB3aGV0aGVyIGltcG9ydHMgc2hvdWxkIGJlIGdlbmVyYXRlZCBvciBub3RcbiAgICogQHJldHVybnMgYW4gYEV4cHJlc3Npb25gIHdoaWNoIHJlZmVycyB0byB0aGUgYFJlZmVyZW5jZWAsIG9yIGBudWxsYCBpZiBub25lIGNhbiBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIGVtaXQocmVmOiBSZWZlcmVuY2UsIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIGltcG9ydEZsYWdzOiBJbXBvcnRGbGFncyk6IEV4cHJlc3Npb258bnVsbDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYEV4cHJlc3Npb25gcyB3aGljaCByZWZlciB0byBgUmVmZXJlbmNlYHMgaW4gYSBnaXZlbiBjb250ZXh0LlxuICpcbiAqIEEgYFJlZmVyZW5jZUVtaXR0ZXJgIHVzZXMgb25lIG9yIG1vcmUgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgaW1wbGVtZW50YXRpb25zIHRvIHByb2R1Y2UgYW5cbiAqIGBFeHByZXNzaW9uYCB3aGljaCByZWZlcnMgdG8gYSBgUmVmZXJlbmNlYCBpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZUVtaXR0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0cmF0ZWdpZXM6IFJlZmVyZW5jZUVtaXRTdHJhdGVneVtdKSB7fVxuXG4gIGVtaXQocmVmOiBSZWZlcmVuY2UsIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIGltcG9ydEZsYWdzOiBJbXBvcnRGbGFnc8KgPSBJbXBvcnRGbGFncy5Ob25lKTpcbiAgICAgIEV4cHJlc3Npb24ge1xuICAgIGZvciAoY29uc3Qgc3RyYXRlZ3kgb2YgdGhpcy5zdHJhdGVnaWVzKSB7XG4gICAgICBjb25zdCBlbWl0dGVkID0gc3RyYXRlZ3kuZW1pdChyZWYsIGNvbnRleHQsIGltcG9ydEZsYWdzKTtcbiAgICAgIGlmIChlbWl0dGVkICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBlbWl0dGVkO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byB3cml0ZSBhIHJlZmVyZW5jZSB0byAke25vZGVOYW1lRm9yRXJyb3IocmVmLm5vZGUpfSBpbiAke1xuICAgICAgICByZWYubm9kZS5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWV9IGZyb20gJHtjb250ZXh0LmZpbGVOYW1lfWApO1xuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB3aWxsIHJlZmVyIHRvIGRlY2xhcmF0aW9ucyBieSBhbnkgbG9jYWwgYHRzLklkZW50aWZpZXJgcywgaWZcbiAqIHN1Y2ggaWRlbnRpZmllcnMgYXJlIGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIExvY2FsSWRlbnRpZmllclN0cmF0ZWd5IGltcGxlbWVudHMgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5IHtcbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSwgaW1wb3J0RmxhZ3M6IEltcG9ydEZsYWdzKTogRXhwcmVzc2lvbnxudWxsIHtcbiAgICAvLyBJZiB0aGUgZW1pdHRlciBoYXMgc3BlY2lmaWVkIEZvcmNlTmV3SW1wb3J0LCB0aGVuIExvY2FsSWRlbnRpZmllclN0cmF0ZWd5IHNob3VsZCBub3QgdXNlIGFcbiAgICAvLyBsb2NhbCBpZGVudGlmaWVyIGF0IGFsbCwgKmV4Y2VwdCogaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSBub2RlIGlzIGFjdHVhbGx5IGRlY2xhcmVkLlxuICAgIGlmIChpbXBvcnRGbGFncyAmIEltcG9ydEZsYWdzLkZvcmNlTmV3SW1wb3J0ICYmXG4gICAgICAgIGdldFNvdXJjZUZpbGUocmVmLm5vZGUpICE9PSBnZXRTb3VyY2VGaWxlKGNvbnRleHQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBBIFJlZmVyZW5jZSBjYW4gaGF2ZSBtdWx0aXBsZSBpZGVudGl0aWVzIGluIGRpZmZlcmVudCBmaWxlcywgc28gaXQgbWF5IGFscmVhZHkgaGF2ZSBhblxuICAgIC8vIElkZW50aWZpZXIgaW4gdGhlIHJlcXVlc3RlZCBjb250ZXh0IGZpbGUuXG4gICAgY29uc3QgaWRlbnRpZmllciA9IHJlZi5nZXRJZGVudGl0eUluKGNvbnRleHQpO1xuICAgIGlmIChpZGVudGlmaWVyICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbmV3IFdyYXBwZWROb2RlRXhwcihpZGVudGlmaWVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB3aWxsIHJlZmVyIHRvIGRlY2xhcmF0aW9ucyB0aGF0IGNvbWUgZnJvbSBgbm9kZV9tb2R1bGVzYCB1c2luZ1xuICogYW4gYWJzb2x1dGUgaW1wb3J0LlxuICpcbiAqIFBhcnQgb2YgdGhpcyBzdHJhdGVneSBpbnZvbHZlcyBsb29raW5nIGF0IHRoZSB0YXJnZXQgZW50cnkgcG9pbnQgYW5kIGlkZW50aWZ5aW5nIHRoZSBleHBvcnRlZFxuICogbmFtZSBvZiB0aGUgdGFyZ2V0ZWQgZGVjbGFyYXRpb24sIGFzIGl0IG1pZ2h0IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWNsYXJlZCBuYW1lIChlLmcuIGFcbiAqIGRpcmVjdGl2ZSBtaWdodCBiZSBkZWNsYXJlZCBhcyBGb29EaXJJbXBsLCBidXQgZXhwb3J0ZWQgYXMgRm9vRGlyKS4gSWYgbm8gZXhwb3J0IGNhbiBiZSBmb3VuZFxuICogd2hpY2ggbWFwcyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBkaXJlY3RpdmUsIGFuIGVycm9yIGlzIHRocm93bi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFic29sdXRlTW9kdWxlU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICAvKipcbiAgICogQSBjYWNoZSBvZiB0aGUgZXhwb3J0cyBvZiBzcGVjaWZpYyBtb2R1bGVzLCBiZWNhdXNlIHJlc29sdmluZyBhIG1vZHVsZSB0byBpdHMgZXhwb3J0cyBpcyBhXG4gICAqIGNvc3RseSBvcGVyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIG1vZHVsZUV4cG9ydHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8dHMuRGVjbGFyYXRpb24sIHN0cmluZz58bnVsbD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByb3RlY3RlZCBwcm9ncmFtOiB0cy5Qcm9ncmFtLCBwcm90ZWN0ZWQgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgICBwcm90ZWN0ZWQgbW9kdWxlUmVzb2x2ZXI6IE1vZHVsZVJlc29sdmVyLCBwcml2YXRlIHJlZmxlY3Rpb25Ib3N0OiBSZWZsZWN0aW9uSG9zdCkge31cblxuICBlbWl0KHJlZjogUmVmZXJlbmNlPHRzLk5vZGU+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBpbXBvcnRGbGFnczogSW1wb3J0RmxhZ3MpOiBFeHByZXNzaW9ufG51bGwge1xuICAgIGlmIChyZWYuYmVzdEd1ZXNzT3duaW5nTW9kdWxlID09PSBudWxsKSB7XG4gICAgICAvLyBUaGVyZSBpcyBubyBtb2R1bGUgbmFtZSBhdmFpbGFibGUgZm9yIHRoaXMgUmVmZXJlbmNlLCBtZWFuaW5nIGl0IHdhcyBhcnJpdmVkIGF0IHZpYSBhXG4gICAgICAvLyByZWxhdGl2ZSBwYXRoLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmICghaXNEZWNsYXJhdGlvbihyZWYubm9kZSkpIHtcbiAgICAgIC8vIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGltcG9ydCBzb21ldGhpbmcgd2hpY2ggaXNuJ3QgYSBkZWNsYXJhdGlvbi5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGVidWcgYXNzZXJ0OiB1bmFibGUgdG8gaW1wb3J0IGEgUmVmZXJlbmNlIHRvIG5vbi1kZWNsYXJhdGlvbiBvZiB0eXBlICR7XG4gICAgICAgICAgdHMuU3ludGF4S2luZFtyZWYubm9kZS5raW5kXX0uYCk7XG4gICAgfSBlbHNlIGlmICgoaW1wb3J0RmxhZ3MgJiBJbXBvcnRGbGFncy5BbGxvd1R5cGVJbXBvcnRzKSA9PT0gMCAmJiBpc1R5cGVEZWNsYXJhdGlvbihyZWYubm9kZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW1wb3J0aW5nIGEgdHlwZS1vbmx5IGRlY2xhcmF0aW9uIG9mIHR5cGUgJHtcbiAgICAgICAgICB0cy5TeW50YXhLaW5kW3JlZi5ub2RlLmtpbmRdfSBpbiBhIHZhbHVlIHBvc2l0aW9uIGlzIG5vdCBhbGxvd2VkLmApO1xuICAgIH1cblxuICAgIC8vIFRyeSB0byBmaW5kIHRoZSBleHBvcnRlZCBuYW1lIG9mIHRoZSBkZWNsYXJhdGlvbiwgaWYgb25lIGlzIGF2YWlsYWJsZS5cbiAgICBjb25zdCB7c3BlY2lmaWVyLCByZXNvbHV0aW9uQ29udGV4dH0gPSByZWYuYmVzdEd1ZXNzT3duaW5nTW9kdWxlO1xuICAgIGNvbnN0IHN5bWJvbE5hbWUgPSB0aGlzLnJlc29sdmVJbXBvcnROYW1lKHNwZWNpZmllciwgcmVmLm5vZGUsIHJlc29sdXRpb25Db250ZXh0KTtcbiAgICBpZiAoc3ltYm9sTmFtZSA9PT0gbnVsbCkge1xuICAgICAgLy8gVE9ETyhhbHhodWIpOiBtYWtlIHRoaXMgZXJyb3IgYSB0cy5EaWFnbm9zdGljIHBvaW50aW5nIGF0IHdoYXRldmVyIGNhdXNlZCB0aGlzIGltcG9ydCB0byBiZVxuICAgICAgLy8gdHJpZ2dlcmVkLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTeW1ib2wgJHtyZWYuZGVidWdOYW1lfSBkZWNsYXJlZCBpbiAke1xuICAgICAgICAgIGdldFNvdXJjZUZpbGUocmVmLm5vZGUpLmZpbGVOYW1lfSBpcyBub3QgZXhwb3J0ZWQgZnJvbSAke3NwZWNpZmllcn0gKGltcG9ydCBpbnRvICR7XG4gICAgICAgICAgY29udGV4dC5maWxlTmFtZX0pYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBFeHRlcm5hbEV4cHIobmV3IEV4dGVybmFsUmVmZXJlbmNlKHNwZWNpZmllciwgc3ltYm9sTmFtZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlSW1wb3J0TmFtZShtb2R1bGVOYW1lOiBzdHJpbmcsIHRhcmdldDogdHMuRGVjbGFyYXRpb24sIGZyb21GaWxlOiBzdHJpbmcpOiBzdHJpbmdcbiAgICAgIHxudWxsIHtcbiAgICBjb25zdCBleHBvcnRzID0gdGhpcy5nZXRFeHBvcnRzT2ZNb2R1bGUobW9kdWxlTmFtZSwgZnJvbUZpbGUpO1xuICAgIGlmIChleHBvcnRzICE9PSBudWxsICYmIGV4cG9ydHMuaGFzKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBleHBvcnRzLmdldCh0YXJnZXQpITtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBvcnRzT2ZNb2R1bGUobW9kdWxlTmFtZTogc3RyaW5nLCBmcm9tRmlsZTogc3RyaW5nKTpcbiAgICAgIE1hcDx0cy5EZWNsYXJhdGlvbiwgc3RyaW5nPnxudWxsIHtcbiAgICBpZiAoIXRoaXMubW9kdWxlRXhwb3J0c0NhY2hlLmhhcyhtb2R1bGVOYW1lKSkge1xuICAgICAgdGhpcy5tb2R1bGVFeHBvcnRzQ2FjaGUuc2V0KG1vZHVsZU5hbWUsIHRoaXMuZW51bWVyYXRlRXhwb3J0c09mTW9kdWxlKG1vZHVsZU5hbWUsIGZyb21GaWxlKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1vZHVsZUV4cG9ydHNDYWNoZS5nZXQobW9kdWxlTmFtZSkhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVudW1lcmF0ZUV4cG9ydHNPZk1vZHVsZShzcGVjaWZpZXI6IHN0cmluZywgZnJvbUZpbGU6IHN0cmluZyk6XG4gICAgICBNYXA8dHMuRGVjbGFyYXRpb24sIHN0cmluZz58bnVsbCB7XG4gICAgLy8gRmlyc3QsIHJlc29sdmUgdGhlIG1vZHVsZSBzcGVjaWZpZXIgdG8gaXRzIGVudHJ5IHBvaW50LCBhbmQgZ2V0IHRoZSB0cy5TeW1ib2wgZm9yIGl0LlxuICAgIGNvbnN0IGVudHJ5UG9pbnRGaWxlID0gdGhpcy5tb2R1bGVSZXNvbHZlci5yZXNvbHZlTW9kdWxlKHNwZWNpZmllciwgZnJvbUZpbGUpO1xuICAgIGlmIChlbnRyeVBvaW50RmlsZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZXhwb3J0cyA9IHRoaXMucmVmbGVjdGlvbkhvc3QuZ2V0RXhwb3J0c09mTW9kdWxlKGVudHJ5UG9pbnRGaWxlKTtcbiAgICBpZiAoZXhwb3J0cyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGV4cG9ydE1hcCA9IG5ldyBNYXA8dHMuRGVjbGFyYXRpb24sIHN0cmluZz4oKTtcbiAgICBleHBvcnRzLmZvckVhY2goKGRlY2xhcmF0aW9uLCBuYW1lKSA9PiB7XG4gICAgICAvLyBJdCdzIG9rYXkgdG8gc2tpcCBpbmxpbmUgZGVjbGFyYXRpb25zLCBzaW5jZSBieSBkZWZpbml0aW9uIHRoZXkncmUgbm90IHRhcmdldC1hYmxlIHdpdGggYVxuICAgICAgLy8gdHMuRGVjbGFyYXRpb24gYW55d2F5LlxuICAgICAgaWYgKGRlY2xhcmF0aW9uLm5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgZXhwb3J0TWFwLnNldChkZWNsYXJhdGlvbi5ub2RlLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZXhwb3J0TWFwO1xuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB3aWxsIHJlZmVyIHRvIGRlY2xhcmF0aW9ucyB2aWEgcmVsYXRpdmUgcGF0aHMsIHByb3ZpZGVkIHRoZXkncmVcbiAqIGJvdGggaW4gdGhlIGxvZ2ljYWwgcHJvamVjdCBcInNwYWNlXCIgb2YgcGF0aHMuXG4gKlxuICogVGhpcyBpcyB0cmlja2llciB0aGFuIGl0IHNvdW5kcywgYXMgdGhlIHR3byBmaWxlcyBtYXkgYmUgaW4gZGlmZmVyZW50IHJvb3QgZGlyZWN0b3JpZXMgaW4gdGhlXG4gKiBwcm9qZWN0LiBTaW1wbHkgY2FsY3VsYXRpbmcgYSBmaWxlIHN5c3RlbSByZWxhdGl2ZSBwYXRoIGJldHdlZW4gdGhlIHR3byBpcyBub3Qgc3VmZmljaWVudC5cbiAqIEluc3RlYWQsIGBMb2dpY2FsUHJvamVjdFBhdGhgcyBhcmUgdXNlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIExvZ2ljYWxQcm9qZWN0U3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QsIHByaXZhdGUgbG9naWNhbEZzOiBMb2dpY2FsRmlsZVN5c3RlbSkge31cblxuICBlbWl0KHJlZjogUmVmZXJlbmNlPHRzLk5vZGU+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlKTogRXhwcmVzc2lvbnxudWxsIHtcbiAgICBjb25zdCBkZXN0U2YgPSBnZXRTb3VyY2VGaWxlKHJlZi5ub2RlKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgaW1wb3J0aW5nIGZpbGUgdG8gdGhlIGZpbGUgYmVpbmcgaW1wb3J0ZWQuIFRoaXMgaXMgZG9uZVxuICAgIC8vIGFzIGEgbG9naWNhbCBwYXRoIGNvbXB1dGF0aW9uLCBiZWNhdXNlIHRoZSB0d28gZmlsZXMgbWlnaHQgYmUgaW4gZGlmZmVyZW50IHJvb3REaXJzLlxuICAgIGNvbnN0IGRlc3RQYXRoID0gdGhpcy5sb2dpY2FsRnMubG9naWNhbFBhdGhPZlNmKGRlc3RTZik7XG4gICAgaWYgKGRlc3RQYXRoID09PSBudWxsKSB7XG4gICAgICAvLyBUaGUgaW1wb3J0ZWQgZmlsZSBpcyBub3Qgd2l0aGluIHRoZSBsb2dpY2FsIHByb2plY3QgZmlsZXN5c3RlbS5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpblBhdGggPSB0aGlzLmxvZ2ljYWxGcy5sb2dpY2FsUGF0aE9mU2YoY29udGV4dCk7XG4gICAgaWYgKG9yaWdpblBhdGggPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRGVidWcgYXNzZXJ0OiBhdHRlbXB0IHRvIGltcG9ydCBmcm9tICR7Y29udGV4dC5maWxlTmFtZX0gYnV0IGl0J3Mgb3V0c2lkZSB0aGUgcHJvZ3JhbT9gKTtcbiAgICB9XG5cbiAgICAvLyBUaGVyZSdzIG5vIHdheSB0byBlbWl0IGEgcmVsYXRpdmUgcmVmZXJlbmNlIGZyb20gYSBmaWxlIHRvIGl0c2VsZi5cbiAgICBpZiAoZGVzdFBhdGggPT09IG9yaWdpblBhdGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWUgPSBmaW5kRXhwb3J0ZWROYW1lT2ZOb2RlKHJlZi5ub2RlLCBkZXN0U2YsIHRoaXMucmVmbGVjdG9yKTtcbiAgICBpZiAobmFtZSA9PT0gbnVsbCkge1xuICAgICAgLy8gVGhlIHRhcmdldCBkZWNsYXJhdGlvbiBpc24ndCBleHBvcnRlZCBmcm9tIHRoZSBmaWxlIGl0J3MgZGVjbGFyZWQgaW4uIFRoaXMgaXMgYW4gaXNzdWUhXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBXaXRoIGJvdGggZmlsZXMgZXhwcmVzc2VkIGFzIExvZ2ljYWxQcm9qZWN0UGF0aHMsIGdldHRpbmcgdGhlIG1vZHVsZSBzcGVjaWZpZXIgYXMgYSByZWxhdGl2ZVxuICAgIC8vIHBhdGggaXMgbm93IHN0cmFpZ2h0Zm9yd2FyZC5cbiAgICBjb25zdCBtb2R1bGVOYW1lID0gTG9naWNhbFByb2plY3RQYXRoLnJlbGF0aXZlUGF0aEJldHdlZW4ob3JpZ2luUGF0aCwgZGVzdFBhdGgpO1xuICAgIHJldHVybiBuZXcgRXh0ZXJuYWxFeHByKHttb2R1bGVOYW1lLCBuYW1lfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGBSZWZlcmVuY2VFbWl0U3RyYXRlZ3lgIHdoaWNoIGNvbnN0cnVjdHMgcmVsYXRpdmVzIHBhdGhzIGJldHdlZW4gYHRzLlNvdXJjZUZpbGVgcy5cbiAqXG4gKiBUaGlzIHN0cmF0ZWd5IGNhbiBiZSB1c2VkIGlmIHRoZXJlIGlzIG5vIGByb290RGlyYC9gcm9vdERpcnNgIHN0cnVjdHVyZSBmb3IgdGhlIHByb2plY3Qgd2hpY2hcbiAqIG5lY2Vzc2l0YXRlcyB0aGUgc3Ryb25nZXIgbG9naWMgb2YgYExvZ2ljYWxQcm9qZWN0U3RyYXRlZ3lgLlxuICovXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVQYXRoU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSk6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgY29uc3QgZGVzdFNmID0gZ2V0U291cmNlRmlsZShyZWYubm9kZSk7XG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID1cbiAgICAgICAgcmVsYXRpdmUoZGlybmFtZShhYnNvbHV0ZUZyb21Tb3VyY2VGaWxlKGNvbnRleHQpKSwgYWJzb2x1dGVGcm9tU291cmNlRmlsZShkZXN0U2YpKTtcbiAgICBjb25zdCBtb2R1bGVOYW1lID0gdG9SZWxhdGl2ZUltcG9ydChzdHJpcEV4dGVuc2lvbihyZWxhdGl2ZVBhdGgpKTtcblxuICAgIGNvbnN0IG5hbWUgPSBmaW5kRXhwb3J0ZWROYW1lT2ZOb2RlKHJlZi5ub2RlLCBkZXN0U2YsIHRoaXMucmVmbGVjdG9yKTtcbiAgICByZXR1cm4gbmV3IEV4dGVybmFsRXhwcih7bW9kdWxlTmFtZSwgbmFtZX0pO1xuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB1c2VzIGEgYFVuaWZpZWRNb2R1bGVzSG9zdGAgdG8gZ2VuZXJhdGUgYWJzb2x1dGUgaW1wb3J0XG4gKiByZWZlcmVuY2VzLlxuICovXG5leHBvcnQgY2xhc3MgVW5pZmllZE1vZHVsZXNTdHJhdGVneSBpbXBsZW1lbnRzIFJlZmVyZW5jZUVtaXRTdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmbGVjdG9yOiBSZWZsZWN0aW9uSG9zdCwgcHJpdmF0ZSB1bmlmaWVkTW9kdWxlc0hvc3Q6IFVuaWZpZWRNb2R1bGVzSG9zdCkge31cblxuICBlbWl0KHJlZjogUmVmZXJlbmNlPHRzLk5vZGU+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlKTogRXhwcmVzc2lvbnxudWxsIHtcbiAgICBjb25zdCBkZXN0U2YgPSBnZXRTb3VyY2VGaWxlKHJlZi5ub2RlKTtcbiAgICBjb25zdCBuYW1lID0gZmluZEV4cG9ydGVkTmFtZU9mTm9kZShyZWYubm9kZSwgZGVzdFNmLCB0aGlzLnJlZmxlY3Rvcik7XG4gICAgaWYgKG5hbWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPVxuICAgICAgICB0aGlzLnVuaWZpZWRNb2R1bGVzSG9zdC5maWxlTmFtZVRvTW9kdWxlTmFtZShkZXN0U2YuZmlsZU5hbWUsIGNvbnRleHQuZmlsZU5hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBFeHRlcm5hbEV4cHIoe21vZHVsZU5hbWUsIG5hbWV9KTtcbiAgfVxufVxuIl19
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cy9zcmMvZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsOENBQStGO0lBQy9GLCtCQUFpQztJQUdqQywyRUFBcUk7SUFDckksNkVBQTBEO0lBRTFELGtGQUE0RztJQUU1Ryx1RkFBcUQ7SUFLckQ7O09BRUc7SUFDSCxJQUFZLFdBMkJYO0lBM0JELFdBQVksV0FBVztRQUNyQiw2Q0FBVyxDQUFBO1FBRVg7Ozs7O1dBS0c7UUFDSCxpRUFBcUIsQ0FBQTtRQUVyQjs7Ozs7V0FLRztRQUNILHlEQUFpQixDQUFBO1FBRWpCOzs7Ozs7V0FNRztRQUNILHFFQUF1QixDQUFBO0lBQ3pCLENBQUMsRUEzQlcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUEyQnRCO0lBMkJEOzs7OztPQUtHO0lBQ0g7UUFDRSwwQkFBb0IsVUFBbUM7WUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFBRyxDQUFDO1FBRTNELCtCQUFJLEdBQUosVUFBSyxHQUFjLEVBQUUsT0FBc0IsRUFBRSxXQUEyQzs7WUFBM0MsNEJBQUEsRUFBQSxjQUEyQixXQUFXLENBQUMsSUFBSTs7Z0JBRXRGLEtBQXVCLElBQUEsS0FBQSxpQkFBQSxJQUFJLENBQUMsVUFBVSxDQUFBLGdCQUFBLDRCQUFFO29CQUFuQyxJQUFNLFFBQVEsV0FBQTtvQkFDakIsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7d0JBQ3BCLE9BQU8sT0FBTyxDQUFDO3FCQUNoQjtpQkFDRjs7Ozs7Ozs7O1lBQ0QsTUFBTSxJQUFJLEtBQUss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biAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtFeHByZXNzaW9uLCBFeHRlcm5hbEV4cHIsIEV4dGVybmFsUmVmZXJlbmNlLCBXcmFwcGVkTm9kZUV4cHJ9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1VuaWZpZWRNb2R1bGVzSG9zdH0gZnJvbSAnLi4vLi4vY29yZS9hcGknO1xuaW1wb3J0IHthYnNvbHV0ZUZyb21Tb3VyY2VGaWxlLCBkaXJuYW1lLCBMb2dpY2FsRmlsZVN5c3RlbSwgTG9naWNhbFByb2plY3RQYXRoLCByZWxhdGl2ZSwgdG9SZWxhdGl2ZUltcG9ydH0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtzdHJpcEV4dGVuc2lvbn0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0vc3JjL3V0aWwnO1xuaW1wb3J0IHtEZWNsYXJhdGlvbk5vZGUsIGlzQ29uY3JldGVEZWNsYXJhdGlvbiwgUmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtnZXRTb3VyY2VGaWxlLCBpc0RlY2xhcmF0aW9uLCBpc1R5cGVEZWNsYXJhdGlvbiwgbm9kZU5hbWVGb3JFcnJvcn0gZnJvbSAnLi4vLi4vdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7ZmluZEV4cG9ydGVkTmFtZU9mTm9kZX0gZnJvbSAnLi9maW5kX2V4cG9ydCc7XG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7TW9kdWxlUmVzb2x2ZXJ9IGZyb20gJy4vcmVzb2x2ZXInO1xuXG5cbi8qKlxuICogRmxhZ3Mgd2hpY2ggYWx0ZXIgdGhlIGltcG9ydHMgZ2VuZXJhdGVkIGJ5IHRoZSBgUmVmZXJlbmNlRW1pdHRlcmAuXG4gKi9cbmV4cG9ydCBlbnVtIEltcG9ydEZsYWdzIHtcbiAgTm9uZSA9IDB4MDAsXG5cbiAgLyoqXG4gICAqIEZvcmNlIHRoZSBnZW5lcmF0aW9uIG9mIGEgbmV3IGltcG9ydCB3aGVuIGdlbmVyYXRpbmcgYSByZWZlcmVuY2UsIGV2ZW4gaWYgYW4gaWRlbnRpZmllciBhbHJlYWR5XG4gICAqIGV4aXN0cyBpbiB0aGUgdGFyZ2V0IGZpbGUgd2hpY2ggY291bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICAgKlxuICAgKiBUaGlzIGlzIHNvbWV0aW1lcyByZXF1aXJlZCBpZiB0aGVyZSdzIGEgcmlzayBUeXBlU2NyaXB0IG1pZ2h0IHJlbW92ZSBpbXBvcnRzIGR1cmluZyBlbWl0LlxuICAgKi9cbiAgRm9yY2VOZXdJbXBvcnQgPSAweDAxLFxuXG4gIC8qKlxuICAgKiBEb24ndCBtYWtlIHVzZSBvZiBhbnkgYWxpYXNpbmcgaW5mb3JtYXRpb24gd2hlbiBlbWl0dGluZyBhIHJlZmVyZW5jZS5cbiAgICpcbiAgICogVGhpcyBpcyBzb21ldGltZXMgcmVxdWlyZWQgaWYgZW1pdHRpbmcgaW50byBhIGNvbnRleHQgd2hlcmUgZ2VuZXJhdGVkIHJlZmVyZW5jZXMgd2lsbCBiZSBmZWRcbiAgICogaW50byBUeXBlU2NyaXB0IGFuZCB0eXBlLWNoZWNrZWQgKHN1Y2ggYXMgaW4gdGVtcGxhdGUgdHlwZS1jaGVja2luZykuXG4gICAqL1xuICBOb0FsaWFzaW5nID0gMHgwMixcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgYW4gaW1wb3J0IHRvIGEgdHlwZS1vbmx5IGRlY2xhcmF0aW9uIGlzIGFsbG93ZWQuXG4gICAqXG4gICAqIEZvciByZWZlcmVuY2VzIHRoYXQgb2NjdXIgaW4gdHlwZS1wb3NpdGlvbnMsIHRoZSByZWZlcnJlZCBkZWNsYXJhdGlvbiBtYXkgYmUgYSB0eXBlLW9ubHlcbiAgICogZGVjbGFyYXRpb24gdGhhdCBpcyBub3QgcmV0YWluZWQgZHVyaW5nIGVtaXQuIEluY2x1ZGluZyB0aGlzIGZsYWcgYWxsb3dzIHRvIGVtaXQgcmVmZXJlbmNlcyB0b1xuICAgKiB0eXBlLW9ubHkgZGVjbGFyYXRpb25zIGFzIHVzZWQgaW4gZS5nLiB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nLlxuICAgKi9cbiAgQWxsb3dUeXBlSW1wb3J0cyA9IDB4MDQsXG59XG5cbi8qKlxuICogQSBwYXJ0aWN1bGFyIHN0cmF0ZWd5IGZvciBnZW5lcmF0aW5nIGFuIGV4cHJlc3Npb24gd2hpY2ggcmVmZXJzIHRvIGEgYFJlZmVyZW5jZWAuXG4gKlxuICogVGhlcmUgYXJlIG1hbnkgcG90ZW50aWFsIHdheXMgYSBnaXZlbiBgUmVmZXJlbmNlYCBjb3VsZCBiZSByZWZlcnJlZCB0byBpbiB0aGUgY29udGV4dCBvZiBhIGdpdmVuXG4gKiBmaWxlLiBBIGxvY2FsIGRlY2xhcmF0aW9uIGNvdWxkIGJlIGF2YWlsYWJsZSwgdGhlIGBSZWZlcmVuY2VgIGNvdWxkIGJlIGltcG9ydGFibGUgdmlhIGEgcmVsYXRpdmVcbiAqIGltcG9ydCB3aXRoaW4gdGhlIHByb2plY3QsIG9yIGFuIGFic29sdXRlIGltcG9ydCBpbnRvIGBub2RlX21vZHVsZXNgIG1pZ2h0IGJlIG5lY2Vzc2FyeS5cbiAqXG4gKiBEaWZmZXJlbnQgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgaW1wbGVtZW50YXRpb25zIGltcGxlbWVudCBzcGVjaWZpYyBsb2dpYyBmb3IgZ2VuZXJhdGluZyBzdWNoXG4gKiByZWZlcmVuY2VzLiBBIHNpbmdsZSBzdHJhdGVneSAoc3VjaCBhcyB1c2luZyBhIGxvY2FsIGRlY2xhcmF0aW9uKSBtYXkgbm90IGFsd2F5cyBiZSBhYmxlIHRvXG4gKiBnZW5lcmF0ZSBhbiBleHByZXNzaW9uIGZvciBldmVyeSBgUmVmZXJlbmNlYCAoZm9yIGV4YW1wbGUsIGlmIG5vIGxvY2FsIGlkZW50aWZpZXIgaXMgYXZhaWxhYmxlKSxcbiAqIGFuZCBtYXkgcmV0dXJuIGBudWxsYCBpbiBzdWNoIGEgY2FzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICAvKipcbiAgICogRW1pdCBhbiBgRXhwcmVzc2lvbmAgd2hpY2ggcmVmZXJzIHRvIHRoZSBnaXZlbiBgUmVmZXJlbmNlYCBpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXJcbiAgICogc291cmNlIGZpbGUsIGlmIHBvc3NpYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gcmVmIHRoZSBgUmVmZXJlbmNlYCBmb3Igd2hpY2ggdG8gZ2VuZXJhdGUgYW4gZXhwcmVzc2lvblxuICAgKiBAcGFyYW0gY29udGV4dCB0aGUgc291cmNlIGZpbGUgaW4gd2hpY2ggdGhlIGBFeHByZXNzaW9uYCBtdXN0IGJlIHZhbGlkXG4gICAqIEBwYXJhbSBpbXBvcnRGbGFncyBhIGZsYWcgd2hpY2ggY29udHJvbHMgd2hldGhlciBpbXBvcnRzIHNob3VsZCBiZSBnZW5lcmF0ZWQgb3Igbm90XG4gICAqIEByZXR1cm5zIGFuIGBFeHByZXNzaW9uYCB3aGljaCByZWZlcnMgdG8gdGhlIGBSZWZlcmVuY2VgLCBvciBgbnVsbGAgaWYgbm9uZSBjYW4gYmUgZ2VuZXJhdGVkXG4gICAqL1xuICBlbWl0KHJlZjogUmVmZXJlbmNlLCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBpbXBvcnRGbGFnczogSW1wb3J0RmxhZ3MpOiBFeHByZXNzaW9ufG51bGw7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGBFeHByZXNzaW9uYHMgd2hpY2ggcmVmZXIgdG8gYFJlZmVyZW5jZWBzIGluIGEgZ2l2ZW4gY29udGV4dC5cbiAqXG4gKiBBIGBSZWZlcmVuY2VFbWl0dGVyYCB1c2VzIG9uZSBvciBtb3JlIGBSZWZlcmVuY2VFbWl0U3RyYXRlZ3lgIGltcGxlbWVudGF0aW9ucyB0byBwcm9kdWNlIGFuXG4gKiBgRXhwcmVzc2lvbmAgd2hpY2ggcmVmZXJzIHRvIGEgYFJlZmVyZW5jZWAgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdHJhdGVnaWVzOiBSZWZlcmVuY2VFbWl0U3RyYXRlZ3lbXSkge31cblxuICBlbWl0KHJlZjogUmVmZXJlbmNlLCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBpbXBvcnRGbGFnczogSW1wb3J0RmxhZ3PCoD0gSW1wb3J0RmxhZ3MuTm9uZSk6XG4gICAgICBFeHByZXNzaW9uIHtcbiAgICBmb3IgKGNvbnN0IHN0cmF0ZWd5IG9mIHRoaXMuc3RyYXRlZ2llcykge1xuICAgICAgY29uc3QgZW1pdHRlZCA9IHN0cmF0ZWd5LmVtaXQocmVmLCBjb250ZXh0LCBpbXBvcnRGbGFncyk7XG4gICAgICBpZiAoZW1pdHRlZCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZW1pdHRlZDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gd3JpdGUgYSByZWZlcmVuY2UgdG8gJHtub2RlTmFtZUZvckVycm9yKHJlZi5ub2RlKX0gaW4gJHtcbiAgICAgICAgcmVmLm5vZGUuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lfSBmcm9tICR7Y29udGV4dC5maWxlTmFtZX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgd2hpY2ggd2lsbCByZWZlciB0byBkZWNsYXJhdGlvbnMgYnkgYW55IGxvY2FsIGB0cy5JZGVudGlmaWVyYHMsIGlmXG4gKiBzdWNoIGlkZW50aWZpZXJzIGFyZSBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2NhbElkZW50aWZpZXJTdHJhdGVneSBpbXBsZW1lbnRzIFJlZmVyZW5jZUVtaXRTdHJhdGVneSB7XG4gIGVtaXQocmVmOiBSZWZlcmVuY2U8dHMuTm9kZT4sIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIGltcG9ydEZsYWdzOiBJbXBvcnRGbGFncyk6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgY29uc3QgcmVmU2YgPSBnZXRTb3VyY2VGaWxlKHJlZi5ub2RlKTtcblxuICAgIC8vIElmIHRoZSBlbWl0dGVyIGhhcyBzcGVjaWZpZWQgRm9yY2VOZXdJbXBvcnQsIHRoZW4gTG9jYWxJZGVudGlmaWVyU3RyYXRlZ3kgc2hvdWxkIG5vdCB1c2UgYVxuICAgIC8vIGxvY2FsIGlkZW50aWZpZXIgYXQgYWxsLCAqZXhjZXB0KiBpbiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIG5vZGUgaXMgYWN0dWFsbHkgZGVjbGFyZWQuXG4gICAgaWYgKGltcG9ydEZsYWdzICYgSW1wb3J0RmxhZ3MuRm9yY2VOZXdJbXBvcnQgJiYgcmVmU2YgIT09IGNvbnRleHQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIHJlZmVyZW5jZWQgbm9kZSBpcyBub3QgYW4gYWN0dWFsIFRTIGRlY2xhcmF0aW9uIChlLmcuIGBjbGFzcyBGb29gIG9yIGBmdW5jdGlvbiBmb28oKSB7fWAsXG4gICAgLy8gZXRjKSBhbmQgaXQgaXMgaW4gdGhlIGN1cnJlbnQgZmlsZSB0aGVuIGp1c3QgdXNlIGl0IGRpcmVjdGx5LlxuICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBjb3VsZCBiZSBhIHByb3BlcnR5IGFjY2VzcyAoZS5nLiBgZXhwb3J0cy5mb29gKS4gSW5cbiAgICAvLyBzdWNoIGEgY2FzZSwgdGhlIHJlZmVyZW5jZSdzIGBpZGVudGl0aWVzYCBwcm9wZXJ0eSB3b3VsZCBiZSBgW2Zvb11gLCB3aGljaCB3b3VsZCByZXN1bHQgaW4gYW5cbiAgICAvLyBpbnZhbGlkIGVtaXNzaW9uIG9mIGEgZnJlZS1zdGFuZGluZyBgZm9vYCBpZGVudGlmaWVyLCByYXRoZXIgdGhhbiBgZXhwb3J0cy5mb29gLlxuICAgIGlmICghaXNEZWNsYXJhdGlvbihyZWYubm9kZSkgJiYgcmVmU2YgPT09IGNvbnRleHQpIHtcbiAgICAgIHJldHVybiBuZXcgV3JhcHBlZE5vZGVFeHByKHJlZi5ub2RlKTtcbiAgICB9XG5cbiAgICAvLyBBIFJlZmVyZW5jZSBjYW4gaGF2ZSBtdWx0aXBsZSBpZGVudGl0aWVzIGluIGRpZmZlcmVudCBmaWxlcywgc28gaXQgbWF5IGFscmVhZHkgaGF2ZSBhblxuICAgIC8vIElkZW50aWZpZXIgaW4gdGhlIHJlcXVlc3RlZCBjb250ZXh0IGZpbGUuXG4gICAgY29uc3QgaWRlbnRpZmllciA9IHJlZi5nZXRJZGVudGl0eUluKGNvbnRleHQpO1xuICAgIGlmIChpZGVudGlmaWVyICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbmV3IFdyYXBwZWROb2RlRXhwcihpZGVudGlmaWVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCB3aWxsIHJlZmVyIHRvIGRlY2xhcmF0aW9ucyB0aGF0IGNvbWUgZnJvbSBgbm9kZV9tb2R1bGVzYCB1c2luZ1xuICogYW4gYWJzb2x1dGUgaW1wb3J0LlxuICpcbiAqIFBhcnQgb2YgdGhpcyBzdHJhdGVneSBpbnZvbHZlcyBsb29raW5nIGF0IHRoZSB0YXJnZXQgZW50cnkgcG9pbnQgYW5kIGlkZW50aWZ5aW5nIHRoZSBleHBvcnRlZFxuICogbmFtZSBvZiB0aGUgdGFyZ2V0ZWQgZGVjbGFyYXRpb24sIGFzIGl0IG1pZ2h0IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWNsYXJlZCBuYW1lIChlLmcuIGFcbiAqIGRpcmVjdGl2ZSBtaWdodCBiZSBkZWNsYXJlZCBhcyBGb29EaXJJbXBsLCBidXQgZXhwb3J0ZWQgYXMgRm9vRGlyKS4gSWYgbm8gZXhwb3J0IGNhbiBiZSBmb3VuZFxuICogd2hpY2ggbWFwcyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBkaXJlY3RpdmUsIGFuIGVycm9yIGlzIHRocm93bi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFic29sdXRlTW9kdWxlU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICAvKipcbiAgICogQSBjYWNoZSBvZiB0aGUgZXhwb3J0cyBvZiBzcGVjaWZpYyBtb2R1bGVzLCBiZWNhdXNlIHJlc29sdmluZyBhIG1vZHVsZSB0byBpdHMgZXhwb3J0cyBpcyBhXG4gICAqIGNvc3RseSBvcGVyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIG1vZHVsZUV4cG9ydHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8RGVjbGFyYXRpb25Ob2RlLCBzdHJpbmc+fG51bGw+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcm90ZWN0ZWQgcHJvZ3JhbTogdHMuUHJvZ3JhbSwgcHJvdGVjdGVkIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICAgICAgcHJvdGVjdGVkIG1vZHVsZVJlc29sdmVyOiBNb2R1bGVSZXNvbHZlciwgcHJpdmF0ZSByZWZsZWN0aW9uSG9zdDogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSwgaW1wb3J0RmxhZ3M6IEltcG9ydEZsYWdzKTogRXhwcmVzc2lvbnxudWxsIHtcbiAgICBpZiAocmVmLmJlc3RHdWVzc093bmluZ01vZHVsZSA9PT0gbnVsbCkge1xuICAgICAgLy8gVGhlcmUgaXMgbm8gbW9kdWxlIG5hbWUgYXZhaWxhYmxlIGZvciB0aGlzIFJlZmVyZW5jZSwgbWVhbmluZyBpdCB3YXMgYXJyaXZlZCBhdCB2aWEgYVxuICAgICAgLy8gcmVsYXRpdmUgcGF0aC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoIWlzRGVjbGFyYXRpb24ocmVmLm5vZGUpKSB7XG4gICAgICAvLyBJdCdzIG5vdCBwb3NzaWJsZSB0byBpbXBvcnQgc29tZXRoaW5nIHdoaWNoIGlzbid0IGEgZGVjbGFyYXRpb24uXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERlYnVnIGFzc2VydDogdW5hYmxlIHRvIGltcG9ydCBhIFJlZmVyZW5jZSB0byBub24tZGVjbGFyYXRpb24gb2YgdHlwZSAke1xuICAgICAgICAgIHRzLlN5bnRheEtpbmRbcmVmLm5vZGUua2luZF19LmApO1xuICAgIH0gZWxzZSBpZiAoKGltcG9ydEZsYWdzICYgSW1wb3J0RmxhZ3MuQWxsb3dUeXBlSW1wb3J0cykgPT09IDAgJiYgaXNUeXBlRGVjbGFyYXRpb24ocmVmLm5vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEltcG9ydGluZyBhIHR5cGUtb25seSBkZWNsYXJhdGlvbiBvZiB0eXBlICR7XG4gICAgICAgICAgdHMuU3ludGF4S2luZFtyZWYubm9kZS5raW5kXX0gaW4gYSB2YWx1ZSBwb3NpdGlvbiBpcyBub3QgYWxsb3dlZC5gKTtcbiAgICB9XG5cbiAgICAvLyBUcnkgdG8gZmluZCB0aGUgZXhwb3J0ZWQgbmFtZSBvZiB0aGUgZGVjbGFyYXRpb24sIGlmIG9uZSBpcyBhdmFpbGFibGUuXG4gICAgY29uc3Qge3NwZWNpZmllciwgcmVzb2x1dGlvbkNvbnRleHR9ID0gcmVmLmJlc3RHdWVzc093bmluZ01vZHVsZTtcbiAgICBjb25zdCBzeW1ib2xOYW1lID0gdGhpcy5yZXNvbHZlSW1wb3J0TmFtZShzcGVjaWZpZXIsIHJlZi5ub2RlLCByZXNvbHV0aW9uQ29udGV4dCk7XG4gICAgaWYgKHN5bWJvbE5hbWUgPT09IG51bGwpIHtcbiAgICAgIC8vIFRPRE8oYWx4aHViKTogbWFrZSB0aGlzIGVycm9yIGEgdHMuRGlhZ25vc3RpYyBwb2ludGluZyBhdCB3aGF0ZXZlciBjYXVzZWQgdGhpcyBpbXBvcnQgdG8gYmVcbiAgICAgIC8vIHRyaWdnZXJlZC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3ltYm9sICR7cmVmLmRlYnVnTmFtZX0gZGVjbGFyZWQgaW4gJHtcbiAgICAgICAgICBnZXRTb3VyY2VGaWxlKHJlZi5ub2RlKS5maWxlTmFtZX0gaXMgbm90IGV4cG9ydGVkIGZyb20gJHtzcGVjaWZpZXJ9IChpbXBvcnQgaW50byAke1xuICAgICAgICAgIGNvbnRleHQuZmlsZU5hbWV9KWApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRXh0ZXJuYWxFeHByKG5ldyBFeHRlcm5hbFJlZmVyZW5jZShzcGVjaWZpZXIsIHN5bWJvbE5hbWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUltcG9ydE5hbWUobW9kdWxlTmFtZTogc3RyaW5nLCB0YXJnZXQ6IERlY2xhcmF0aW9uTm9kZSwgZnJvbUZpbGU6IHN0cmluZyk6IHN0cmluZ1xuICAgICAgfG51bGwge1xuICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLmdldEV4cG9ydHNPZk1vZHVsZShtb2R1bGVOYW1lLCBmcm9tRmlsZSk7XG4gICAgaWYgKGV4cG9ydHMgIT09IG51bGwgJiYgZXhwb3J0cy5oYXModGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIGV4cG9ydHMuZ2V0KHRhcmdldCkhO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEV4cG9ydHNPZk1vZHVsZShtb2R1bGVOYW1lOiBzdHJpbmcsIGZyb21GaWxlOiBzdHJpbmcpOlxuICAgICAgTWFwPERlY2xhcmF0aW9uTm9kZSwgc3RyaW5nPnxudWxsIHtcbiAgICBpZiAoIXRoaXMubW9kdWxlRXhwb3J0c0NhY2hlLmhhcyhtb2R1bGVOYW1lKSkge1xuICAgICAgdGhpcy5tb2R1bGVFeHBvcnRzQ2FjaGUuc2V0KG1vZHVsZU5hbWUsIHRoaXMuZW51bWVyYXRlRXhwb3J0c09mTW9kdWxlKG1vZHVsZU5hbWUsIGZyb21GaWxlKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1vZHVsZUV4cG9ydHNDYWNoZS5nZXQobW9kdWxlTmFtZSkhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVudW1lcmF0ZUV4cG9ydHNPZk1vZHVsZShzcGVjaWZpZXI6IHN0cmluZywgZnJvbUZpbGU6IHN0cmluZyk6XG4gICAgICBNYXA8RGVjbGFyYXRpb25Ob2RlLCBzdHJpbmc+fG51bGwge1xuICAgIC8vIEZpcnN0LCByZXNvbHZlIHRoZSBtb2R1bGUgc3BlY2lmaWVyIHRvIGl0cyBlbnRyeSBwb2ludCwgYW5kIGdldCB0aGUgdHMuU3ltYm9sIGZvciBpdC5cbiAgICBjb25zdCBlbnRyeVBvaW50RmlsZSA9IHRoaXMubW9kdWxlUmVzb2x2ZXIucmVzb2x2ZU1vZHVsZShzcGVjaWZpZXIsIGZyb21GaWxlKTtcbiAgICBpZiAoZW50cnlQb2ludEZpbGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLnJlZmxlY3Rpb25Ib3N0LmdldEV4cG9ydHNPZk1vZHVsZShlbnRyeVBvaW50RmlsZSk7XG4gICAgaWYgKGV4cG9ydHMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBleHBvcnRNYXAgPSBuZXcgTWFwPERlY2xhcmF0aW9uTm9kZSwgc3RyaW5nPigpO1xuICAgIGV4cG9ydHMuZm9yRWFjaCgoZGVjbGFyYXRpb24sIG5hbWUpID0+IHtcbiAgICAgIGV4cG9ydE1hcC5zZXQoZGVjbGFyYXRpb24ubm9kZSwgbmFtZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGV4cG9ydE1hcDtcbiAgfVxufVxuXG4vKipcbiAqIEEgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgd2hpY2ggd2lsbCByZWZlciB0byBkZWNsYXJhdGlvbnMgdmlhIHJlbGF0aXZlIHBhdGhzLCBwcm92aWRlZCB0aGV5J3JlXG4gKiBib3RoIGluIHRoZSBsb2dpY2FsIHByb2plY3QgXCJzcGFjZVwiIG9mIHBhdGhzLlxuICpcbiAqIFRoaXMgaXMgdHJpY2tpZXIgdGhhbiBpdCBzb3VuZHMsIGFzIHRoZSB0d28gZmlsZXMgbWF5IGJlIGluIGRpZmZlcmVudCByb290IGRpcmVjdG9yaWVzIGluIHRoZVxuICogcHJvamVjdC4gU2ltcGx5IGNhbGN1bGF0aW5nIGEgZmlsZSBzeXN0ZW0gcmVsYXRpdmUgcGF0aCBiZXR3ZWVuIHRoZSB0d28gaXMgbm90IHN1ZmZpY2llbnQuXG4gKiBJbnN0ZWFkLCBgTG9naWNhbFByb2plY3RQYXRoYHMgYXJlIHVzZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dpY2FsUHJvamVjdFN0cmF0ZWd5IGltcGxlbWVudHMgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWZsZWN0b3I6IFJlZmxlY3Rpb25Ib3N0LCBwcml2YXRlIGxvZ2ljYWxGczogTG9naWNhbEZpbGVTeXN0ZW0pIHt9XG5cbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSk6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgY29uc3QgZGVzdFNmID0gZ2V0U291cmNlRmlsZShyZWYubm9kZSk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIGltcG9ydGluZyBmaWxlIHRvIHRoZSBmaWxlIGJlaW5nIGltcG9ydGVkLiBUaGlzIGlzIGRvbmVcbiAgICAvLyBhcyBhIGxvZ2ljYWwgcGF0aCBjb21wdXRhdGlvbiwgYmVjYXVzZSB0aGUgdHdvIGZpbGVzIG1pZ2h0IGJlIGluIGRpZmZlcmVudCByb290RGlycy5cbiAgICBjb25zdCBkZXN0UGF0aCA9IHRoaXMubG9naWNhbEZzLmxvZ2ljYWxQYXRoT2ZTZihkZXN0U2YpO1xuICAgIGlmIChkZXN0UGF0aCA9PT0gbnVsbCkge1xuICAgICAgLy8gVGhlIGltcG9ydGVkIGZpbGUgaXMgbm90IHdpdGhpbiB0aGUgbG9naWNhbCBwcm9qZWN0IGZpbGVzeXN0ZW0uXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5QYXRoID0gdGhpcy5sb2dpY2FsRnMubG9naWNhbFBhdGhPZlNmKGNvbnRleHQpO1xuICAgIGlmIChvcmlnaW5QYXRoID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYERlYnVnIGFzc2VydDogYXR0ZW1wdCB0byBpbXBvcnQgZnJvbSAke2NvbnRleHQuZmlsZU5hbWV9IGJ1dCBpdCdzIG91dHNpZGUgdGhlIHByb2dyYW0/YCk7XG4gICAgfVxuXG4gICAgLy8gVGhlcmUncyBubyB3YXkgdG8gZW1pdCBhIHJlbGF0aXZlIHJlZmVyZW5jZSBmcm9tIGEgZmlsZSB0byBpdHNlbGYuXG4gICAgaWYgKGRlc3RQYXRoID09PSBvcmlnaW5QYXRoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lID0gZmluZEV4cG9ydGVkTmFtZU9mTm9kZShyZWYubm9kZSwgZGVzdFNmLCB0aGlzLnJlZmxlY3Rvcik7XG4gICAgaWYgKG5hbWUgPT09IG51bGwpIHtcbiAgICAgIC8vIFRoZSB0YXJnZXQgZGVjbGFyYXRpb24gaXNuJ3QgZXhwb3J0ZWQgZnJvbSB0aGUgZmlsZSBpdCdzIGRlY2xhcmVkIGluLiBUaGlzIGlzIGFuIGlzc3VlIVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gV2l0aCBib3RoIGZpbGVzIGV4cHJlc3NlZCBhcyBMb2dpY2FsUHJvamVjdFBhdGhzLCBnZXR0aW5nIHRoZSBtb2R1bGUgc3BlY2lmaWVyIGFzIGEgcmVsYXRpdmVcbiAgICAvLyBwYXRoIGlzIG5vdyBzdHJhaWdodGZvcndhcmQuXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IExvZ2ljYWxQcm9qZWN0UGF0aC5yZWxhdGl2ZVBhdGhCZXR3ZWVuKG9yaWdpblBhdGgsIGRlc3RQYXRoKTtcbiAgICByZXR1cm4gbmV3IEV4dGVybmFsRXhwcih7bW9kdWxlTmFtZSwgbmFtZX0pO1xuICB9XG59XG5cbi8qKlxuICogQSBgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5YCB3aGljaCBjb25zdHJ1Y3RzIHJlbGF0aXZlcyBwYXRocyBiZXR3ZWVuIGB0cy5Tb3VyY2VGaWxlYHMuXG4gKlxuICogVGhpcyBzdHJhdGVneSBjYW4gYmUgdXNlZCBpZiB0aGVyZSBpcyBubyBgcm9vdERpcmAvYHJvb3REaXJzYCBzdHJ1Y3R1cmUgZm9yIHRoZSBwcm9qZWN0IHdoaWNoXG4gKiBuZWNlc3NpdGF0ZXMgdGhlIHN0cm9uZ2VyIGxvZ2ljIG9mIGBMb2dpY2FsUHJvamVjdFN0cmF0ZWd5YC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGF0aXZlUGF0aFN0cmF0ZWd5IGltcGxlbWVudHMgUmVmZXJlbmNlRW1pdFN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWZsZWN0b3I6IFJlZmxlY3Rpb25Ib3N0KSB7fVxuXG4gIGVtaXQocmVmOiBSZWZlcmVuY2U8dHMuTm9kZT4sIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUpOiBFeHByZXNzaW9ufG51bGwge1xuICAgIGNvbnN0IGRlc3RTZiA9IGdldFNvdXJjZUZpbGUocmVmLm5vZGUpO1xuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9XG4gICAgICAgIHJlbGF0aXZlKGRpcm5hbWUoYWJzb2x1dGVGcm9tU291cmNlRmlsZShjb250ZXh0KSksIGFic29sdXRlRnJvbVNvdXJjZUZpbGUoZGVzdFNmKSk7XG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHRvUmVsYXRpdmVJbXBvcnQoc3RyaXBFeHRlbnNpb24ocmVsYXRpdmVQYXRoKSk7XG5cbiAgICBjb25zdCBuYW1lID0gZmluZEV4cG9ydGVkTmFtZU9mTm9kZShyZWYubm9kZSwgZGVzdFNmLCB0aGlzLnJlZmxlY3Rvcik7XG4gICAgcmV0dXJuIG5ldyBFeHRlcm5hbEV4cHIoe21vZHVsZU5hbWUsIG5hbWV9KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgd2hpY2ggdXNlcyBhIGBVbmlmaWVkTW9kdWxlc0hvc3RgIHRvIGdlbmVyYXRlIGFic29sdXRlIGltcG9ydFxuICogcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFVuaWZpZWRNb2R1bGVzU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QsIHByaXZhdGUgdW5pZmllZE1vZHVsZXNIb3N0OiBVbmlmaWVkTW9kdWxlc0hvc3QpIHt9XG5cbiAgZW1pdChyZWY6IFJlZmVyZW5jZTx0cy5Ob2RlPiwgY29udGV4dDogdHMuU291cmNlRmlsZSk6IEV4cHJlc3Npb258bnVsbCB7XG4gICAgY29uc3QgZGVzdFNmID0gZ2V0U291cmNlRmlsZShyZWYubm9kZSk7XG4gICAgY29uc3QgbmFtZSA9IGZpbmRFeHBvcnRlZE5hbWVPZk5vZGUocmVmLm5vZGUsIGRlc3RTZiwgdGhpcy5yZWZsZWN0b3IpO1xuICAgIGlmIChuYW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVOYW1lID1cbiAgICAgICAgdGhpcy51bmlmaWVkTW9kdWxlc0hvc3QuZmlsZU5hbWVUb01vZHVsZU5hbWUoZGVzdFNmLmZpbGVOYW1lLCBjb250ZXh0LmZpbGVOYW1lKTtcblxuICAgIHJldHVybiBuZXcgRXh0ZXJuYWxFeHByKHttb2R1bGVOYW1lLCBuYW1lfSk7XG4gIH1cbn1cbiJdfQ==
@@ -7,8 +7,7 @@
7
7
  */
8
8
  /// <amd-module name="@angular/compiler-cli/src/ngtsc/indexer/src/api" />
9
9
  import { ParseSourceFile } from '@angular/compiler';
10
- import * as ts from 'typescript';
11
- import { ClassDeclaration } from '../../reflection';
10
+ import { ClassDeclaration, DeclarationNode } from '../../reflection';
12
11
  /**
13
12
  * Describes the kind of identifier found in a template.
14
13
  */
@@ -114,7 +113,7 @@ export interface IndexedComponent {
114
113
  file: ParseSourceFile;
115
114
  template: {
116
115
  identifiers: Set<TopLevelIdentifier>;
117
- usedComponents: Set<ts.Declaration>;
116
+ usedComponents: Set<DeclarationNode>;
118
117
  isInline: boolean;
119
118
  file: ParseSourceFile;
120
119
  };
@@ -42,4 +42,4 @@
42
42
  }());
43
43
  exports.AbsoluteSourceSpan = AbsoluteSourceSpan;
44
44
  });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9pbmRleGVyL3NyYy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBTUg7O09BRUc7SUFDSCxJQUFZLGNBUVg7SUFSRCxXQUFZLGNBQWM7UUFDeEIsMkRBQVEsQ0FBQTtRQUNSLHVEQUFNLENBQUE7UUFDTix5REFBTyxDQUFBO1FBQ1AsMkRBQVEsQ0FBQTtRQUNSLDZEQUFTLENBQUE7UUFDVCw2REFBUyxDQUFBO1FBQ1QsMkRBQVEsQ0FBQTtJQUNWLENBQUMsRUFSVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQVF6QjtJQTRGRDs7T0FFRztJQUNIO1FBQ0UsNEJBQW1CLEtBQWEsRUFBUyxHQUFXO1lBQWpDLFVBQUssR0FBTCxLQUFLLENBQVE7WUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQUcsQ0FBQztRQUMxRCx5QkFBQztJQUFELENBQUMsQUFGRCxJQUVDO0lBRlksZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UGFyc2VTb3VyY2VGaWxlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7Q2xhc3NEZWNsYXJhdGlvbn0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBraW5kIG9mIGlkZW50aWZpZXIgZm91bmQgaW4gYSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGVudW0gSWRlbnRpZmllcktpbmQge1xuICBQcm9wZXJ0eSxcbiAgTWV0aG9kLFxuICBFbGVtZW50LFxuICBUZW1wbGF0ZSxcbiAgQXR0cmlidXRlLFxuICBSZWZlcmVuY2UsXG4gIFZhcmlhYmxlLFxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHNlbWFudGljYWxseS1pbnRlcmVzdGluZyBpZGVudGlmaWVyIGluIGEgdGVtcGxhdGUsIHN1Y2ggYXMgYW4gaW50ZXJwb2xhdGVkIHZhcmlhYmxlXG4gKiBvciBzZWxlY3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUlkZW50aWZpZXIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNwYW46IEFic29sdXRlU291cmNlU3BhbjtcbiAga2luZDogSWRlbnRpZmllcktpbmQ7XG59XG5cbi8qKiBEZXNjcmliZXMgYSB0ZW1wbGF0ZSBleHByZXNzaW9uLCB3aGljaCBtYXkgaGF2ZSBhIHRlbXBsYXRlIHJlZmVyZW5jZSBvciB2YXJpYWJsZSB0YXJnZXQuICovXG5pbnRlcmZhY2UgRXhwcmVzc2lvbklkZW50aWZpZXIgZXh0ZW5kcyBUZW1wbGF0ZUlkZW50aWZpZXIge1xuICAvKipcbiAgICogUmVmZXJlbmNlSWRlbnRpZmllciBvciBWYXJpYWJsZUlkZW50aWZpZXIgaW4gdGhlIHRlbXBsYXRlIHRoYXQgdGhpcyBpZGVudGlmaWVyIHRhcmdldHMsIGlmXG4gICAqIGFueS4gSWYgdGhlIHRhcmdldCBpcyBgbnVsbGAsIGl0IHBvaW50cyB0byBhIGRlY2xhcmF0aW9uIG9uIHRoZSBjb21wb25lbnQgY2xhc3MuXG4gICAqICovXG4gIHRhcmdldDogUmVmZXJlbmNlSWRlbnRpZmllcnxWYXJpYWJsZUlkZW50aWZpZXJ8bnVsbDtcbn1cblxuLyoqIERlc2NyaWJlcyBhIHByb3BlcnR5IGFjY2Vzc2VkIGluIGEgdGVtcGxhdGUuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SWRlbnRpZmllciBleHRlbmRzIEV4cHJlc3Npb25JZGVudGlmaWVyIHtcbiAga2luZDogSWRlbnRpZmllcktpbmQuUHJvcGVydHk7XG59XG5cbi8qKiBEZXNjcmliZXMgYSBtZXRob2QgYWNjZXNzZWQgaW4gYSB0ZW1wbGF0ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0aG9kSWRlbnRpZmllciBleHRlbmRzIEV4cHJlc3Npb25JZGVudGlmaWVyIHtcbiAga2luZDogSWRlbnRpZmllcktpbmQuTWV0aG9kO1xufVxuXG4vKiogRGVzY3JpYmVzIGFuIGVsZW1lbnQgYXR0cmlidXRlIGluIGEgdGVtcGxhdGUuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZUlkZW50aWZpZXIgZXh0ZW5kcyBUZW1wbGF0ZUlkZW50aWZpZXIge1xuICBraW5kOiBJZGVudGlmaWVyS2luZC5BdHRyaWJ1dGU7XG59XG5cbi8qKiBBIHJlZmVyZW5jZSB0byBhIGRpcmVjdGl2ZSBub2RlIGFuZCBpdHMgc2VsZWN0b3IuICovXG5pbnRlcmZhY2UgRGlyZWN0aXZlUmVmZXJlbmNlIHtcbiAgbm9kZTogQ2xhc3NEZWNsYXJhdGlvbjtcbiAgc2VsZWN0b3I6IHN0cmluZztcbn1cbi8qKiBBIGJhc2UgaW50ZXJmYWNlIGZvciBlbGVtZW50IGFuZCB0ZW1wbGF0ZSBpZGVudGlmaWVycy4gKi9cbmludGVyZmFjZSBCYXNlRWxlbWVudE9yVGVtcGxhdGVJZGVudGlmaWVyIGV4dGVuZHMgVGVtcGxhdGVJZGVudGlmaWVyIHtcbiAgLyoqIEF0dHJpYnV0ZXMgb24gYW4gZWxlbWVudCBvciB0ZW1wbGF0ZS4gKi9cbiAgYXR0cmlidXRlczogU2V0PEF0dHJpYnV0ZUlkZW50aWZpZXI+O1xuXG4gIC8qKiBEaXJlY3RpdmVzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCBvciB0ZW1wbGF0ZS4gKi9cbiAgdXNlZERpcmVjdGl2ZXM6IFNldDxEaXJlY3RpdmVSZWZlcmVuY2U+O1xufVxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaW5kZXhlZCBlbGVtZW50IGluIGEgdGVtcGxhdGUuIFRoZSBuYW1lIG9mIGFuIGBFbGVtZW50SWRlbnRpZmllcmAgaXMgdGhlIGVudGlyZVxuICogZWxlbWVudCB0YWcsIHdoaWNoIGNhbiBiZSBwYXJzZWQgYnkgYW4gaW5kZXhlciB0byBkZXRlcm1pbmUgd2hlcmUgdXNlZCBkaXJlY3RpdmVzIHNob3VsZCBiZVxuICogcmVmZXJlbmNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50SWRlbnRpZmllciBleHRlbmRzIEJhc2VFbGVtZW50T3JUZW1wbGF0ZUlkZW50aWZpZXIge1xuICBraW5kOiBJZGVudGlmaWVyS2luZC5FbGVtZW50O1xufVxuXG4vKiogRGVzY3JpYmVzIGFuIGluZGV4ZWQgdGVtcGxhdGUgbm9kZSBpbiBhIGNvbXBvbmVudCB0ZW1wbGF0ZSBmaWxlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZU5vZGVJZGVudGlmaWVyIGV4dGVuZHMgQmFzZUVsZW1lbnRPclRlbXBsYXRlSWRlbnRpZmllciB7XG4gIGtpbmQ6IElkZW50aWZpZXJLaW5kLlRlbXBsYXRlO1xufVxuXG4vKiogRGVzY3JpYmVzIGEgcmVmZXJlbmNlIGluIGEgdGVtcGxhdGUgbGlrZSBcImZvb1wiIGluIGA8ZGl2ICNmb28+PC9kaXY+YC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlSWRlbnRpZmllciBleHRlbmRzIFRlbXBsYXRlSWRlbnRpZmllciB7XG4gIGtpbmQ6IElkZW50aWZpZXJLaW5kLlJlZmVyZW5jZTtcblxuICAvKiogVGhlIHRhcmdldCBvZiB0aGlzIHJlZmVyZW5jZS4gSWYgdGhlIHRhcmdldCBpcyBub3Qga25vd24sIHRoaXMgaXMgYG51bGxgLiAqL1xuICB0YXJnZXQ6IHtcbiAgICAvKiogVGhlIHRlbXBsYXRlIEFTVCBub2RlIHRoYXQgdGhlIHJlZmVyZW5jZSB0YXJnZXRzLiAqL1xuICAgIG5vZGU6IEVsZW1lbnRJZGVudGlmaWVyfFRlbXBsYXRlSWRlbnRpZmllcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkaXJlY3RpdmUgb24gYG5vZGVgIHRoYXQgdGhlIHJlZmVyZW5jZSB0YXJnZXRzLiBJZiBubyBkaXJlY3RpdmUgaXMgdGFyZ2V0ZWQsIHRoaXMgaXNcbiAgICAgKiBgbnVsbGAuXG4gICAgICovXG4gICAgZGlyZWN0aXZlOiBDbGFzc0RlY2xhcmF0aW9uIHwgbnVsbDtcbiAgfXxudWxsO1xufVxuXG4vKiogRGVzY3JpYmVzIGEgdGVtcGxhdGUgdmFyaWFibGUgbGlrZSBcImZvb1wiIGluIGA8ZGl2ICpuZ0Zvcj1cImxldCBmb28gb2YgZm9vc1wiPjwvZGl2PmAuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlSWRlbnRpZmllciBleHRlbmRzIFRlbXBsYXRlSWRlbnRpZmllciB7XG4gIGtpbmQ6IElkZW50aWZpZXJLaW5kLlZhcmlhYmxlO1xufVxuXG4vKipcbiAqIElkZW50aWZpZXJzIHJlY29yZGVkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHRlbXBsYXRlLCB3aXRob3V0IGFueSBjb250ZXh0IGFib3V0IHRoZSBIVE1MIG5vZGVzXG4gKiB0aGV5IHdlcmUgZGlzY292ZXJlZCBpbi5cbiAqL1xuZXhwb3J0IHR5cGUgVG9wTGV2ZWxJZGVudGlmaWVyID0gUHJvcGVydHlJZGVudGlmaWVyfE1ldGhvZElkZW50aWZpZXJ8RWxlbWVudElkZW50aWZpZXJ8XG4gICAgVGVtcGxhdGVOb2RlSWRlbnRpZmllcnxSZWZlcmVuY2VJZGVudGlmaWVyfFZhcmlhYmxlSWRlbnRpZmllcjtcblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGFic29sdXRlIGJ5dGUgb2Zmc2V0cyBvZiBhIHRleHQgYW5jaG9yIGluIGEgc291cmNlIGNvZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYnNvbHV0ZVNvdXJjZVNwYW4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhcnQ6IG51bWJlciwgcHVibGljIGVuZDogbnVtYmVyKSB7fVxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBhbmFseXplZCwgaW5kZXhlZCBjb21wb25lbnQgYW5kIGl0cyB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmRleGVkQ29tcG9uZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICBzZWxlY3Rvcjogc3RyaW5nfG51bGw7XG4gIGZpbGU6IFBhcnNlU291cmNlRmlsZTtcbiAgdGVtcGxhdGU6IHtcbiAgICBpZGVudGlmaWVyczogU2V0PFRvcExldmVsSWRlbnRpZmllcj4sXG4gICAgdXNlZENvbXBvbmVudHM6IFNldDx0cy5EZWNsYXJhdGlvbj4sXG4gICAgaXNJbmxpbmU6IGJvb2xlYW4sXG4gICAgZmlsZTogUGFyc2VTb3VyY2VGaWxlO1xuICB9O1xufVxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9pbmRleGVyL3NyYy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBS0g7O09BRUc7SUFDSCxJQUFZLGNBUVg7SUFSRCxXQUFZLGNBQWM7UUFDeEIsMkRBQVEsQ0FBQTtRQUNSLHVEQUFNLENBQUE7UUFDTix5REFBTyxDQUFBO1FBQ1AsMkRBQVEsQ0FBQTtRQUNSLDZEQUFTLENBQUE7UUFDVCw2REFBUyxDQUFBO1FBQ1QsMkRBQVEsQ0FBQTtJQUNWLENBQUMsRUFSVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQVF6QjtJQTRGRDs7T0FFRztJQUNIO1FBQ0UsNEJBQW1CLEtBQWEsRUFBUyxHQUFXO1lBQWpDLFVBQUssR0FBTCxLQUFLLENBQVE7WUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQUcsQ0FBQztRQUMxRCx5QkFBQztJQUFELENBQUMsQUFGRCxJQUVDO0lBRlksZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UGFyc2VTb3VyY2VGaWxlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIERlY2xhcmF0aW9uTm9kZX0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBraW5kIG9mIGlkZW50aWZpZXIgZm91bmQgaW4gYSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGVudW0gSWRlbnRpZmllcktpbmQge1xuICBQcm9wZXJ0eSxcbiAgTWV0aG9kLFxuICBFbGVtZW50LFxuICBUZW1wbGF0ZSxcbiAgQXR0cmlidXRlLFxuICBSZWZlcmVuY2UsXG4gIFZhcmlhYmxlLFxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHNlbWFudGljYWxseS1pbnRlcmVzdGluZyBpZGVudGlmaWVyIGluIGEgdGVtcGxhdGUsIHN1Y2ggYXMgYW4gaW50ZXJwb2xhdGVkIHZhcmlhYmxlXG4gKiBvciBzZWxlY3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUlkZW50aWZpZXIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNwYW46IEFic29sdXRlU291cmNlU3BhbjtcbiAga2luZDogSWRlbnRpZmllcktpbmQ7XG59XG5cbi8qKiBEZXNjcmliZXMgYSB0ZW1wbGF0ZSBleHByZXNzaW9uLCB3aGljaCBtYXkgaGF2ZSBhIHRlbXBsYXRlIHJlZmVyZW5jZSBvciB2YXJpYWJsZSB0YXJnZXQuICovXG5pbnRlcmZhY2UgRXhwcmVzc2lvbklkZW50aWZpZXIgZXh0ZW5kcyBUZW1wbGF0ZUlkZW50aWZpZXIge1xuICAvKipcbiAgICogUmVmZXJlbmNlSWRlbnRpZmllciBvciBWYXJpYWJsZUlkZW50aWZpZXIgaW4gdGhlIHRlbXBsYXRlIHRoYXQgdGhpcyBpZGVudGlmaWVyIHRhcmdldHMsIGlmXG4gICAqIGFueS4gSWYgdGhlIHRhcmdldCBpcyBgbnVsbGAsIGl0IHBvaW50cyB0byBhIGRlY2xhcmF0aW9uIG9uIHRoZSBjb21wb25lbnQgY2xhc3MuXG4gICAqICovXG4gIHRhcmdldDogUmVmZXJlbmNlSWRlbnRpZmllcnxWYXJpYWJsZUlkZW50aWZpZXJ8bnVsbDtcbn1cblxuLyoqIERlc2NyaWJlcyBhIHByb3BlcnR5IGFjY2Vzc2VkIGluIGEgdGVtcGxhdGUuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SWRlbnRpZmllciBleHRlbmRzIEV4cHJlc3Npb25JZGVudGlmaWVyIHtcbiAga2luZDogSWRlbnRpZmllcktpbmQuUHJvcGVydHk7XG59XG5cbi8qKiBEZXNjcmliZXMgYSBtZXRob2QgYWNjZXNzZWQgaW4gYSB0ZW1wbGF0ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0aG9kSWRlbnRpZmllciBleHRlbmRzIEV4cHJlc3Npb25JZGVudGlmaWVyIHtcbiAga2luZDogSWRlbnRpZmllcktpbmQuTWV0aG9kO1xufVxuXG4vKiogRGVzY3JpYmVzIGFuIGVsZW1lbnQgYXR0cmlidXRlIGluIGEgdGVtcGxhdGUuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZUlkZW50aWZpZXIgZXh0ZW5kcyBUZW1wbGF0ZUlkZW50aWZpZXIge1xuICBraW5kOiBJZGVudGlmaWVyS2luZC5BdHRyaWJ1dGU7XG59XG5cbi8qKiBBIHJlZmVyZW5jZSB0byBhIGRpcmVjdGl2ZSBub2RlIGFuZCBpdHMgc2VsZWN0b3IuICovXG5pbnRlcmZhY2UgRGlyZWN0aXZlUmVmZXJlbmNlIHtcbiAgbm9kZTogQ2xhc3NEZWNsYXJhdGlvbjtcbiAgc2VsZWN0b3I6IHN0cmluZztcbn1cbi8qKiBBIGJhc2UgaW50ZXJmYWNlIGZvciBlbGVtZW50IGFuZCB0ZW1wbGF0ZSBpZGVudGlmaWVycy4gKi9cbmludGVyZmFjZSBCYXNlRWxlbWVudE9yVGVtcGxhdGVJZGVudGlmaWVyIGV4dGVuZHMgVGVtcGxhdGVJZGVudGlmaWVyIHtcbiAgLyoqIEF0dHJpYnV0ZXMgb24gYW4gZWxlbWVudCBvciB0ZW1wbGF0ZS4gKi9cbiAgYXR0cmlidXRlczogU2V0PEF0dHJpYnV0ZUlkZW50aWZpZXI+O1xuXG4gIC8qKiBEaXJlY3RpdmVzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCBvciB0ZW1wbGF0ZS4gKi9cbiAgdXNlZERpcmVjdGl2ZXM6IFNldDxEaXJlY3RpdmVSZWZlcmVuY2U+O1xufVxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaW5kZXhlZCBlbGVtZW50IGluIGEgdGVtcGxhdGUuIFRoZSBuYW1lIG9mIGFuIGBFbGVtZW50SWRlbnRpZmllcmAgaXMgdGhlIGVudGlyZVxuICogZWxlbWVudCB0YWcsIHdoaWNoIGNhbiBiZSBwYXJzZWQgYnkgYW4gaW5kZXhlciB0byBkZXRlcm1pbmUgd2hlcmUgdXNlZCBkaXJlY3RpdmVzIHNob3VsZCBiZVxuICogcmVmZXJlbmNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50SWRlbnRpZmllciBleHRlbmRzIEJhc2VFbGVtZW50T3JUZW1wbGF0ZUlkZW50aWZpZXIge1xuICBraW5kOiBJZGVudGlmaWVyS2luZC5FbGVtZW50O1xufVxuXG4vKiogRGVzY3JpYmVzIGFuIGluZGV4ZWQgdGVtcGxhdGUgbm9kZSBpbiBhIGNvbXBvbmVudCB0ZW1wbGF0ZSBmaWxlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZU5vZGVJZGVudGlmaWVyIGV4dGVuZHMgQmFzZUVsZW1lbnRPclRlbXBsYXRlSWRlbnRpZmllciB7XG4gIGtpbmQ6IElkZW50aWZpZXJLaW5kLlRlbXBsYXRlO1xufVxuXG4vKiogRGVzY3JpYmVzIGEgcmVmZXJlbmNlIGluIGEgdGVtcGxhdGUgbGlrZSBcImZvb1wiIGluIGA8ZGl2ICNmb28+PC9kaXY+YC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlSWRlbnRpZmllciBleHRlbmRzIFRlbXBsYXRlSWRlbnRpZmllciB7XG4gIGtpbmQ6IElkZW50aWZpZXJLaW5kLlJlZmVyZW5jZTtcblxuICAvKiogVGhlIHRhcmdldCBvZiB0aGlzIHJlZmVyZW5jZS4gSWYgdGhlIHRhcmdldCBpcyBub3Qga25vd24sIHRoaXMgaXMgYG51bGxgLiAqL1xuICB0YXJnZXQ6IHtcbiAgICAvKiogVGhlIHRlbXBsYXRlIEFTVCBub2RlIHRoYXQgdGhlIHJlZmVyZW5jZSB0YXJnZXRzLiAqL1xuICAgIG5vZGU6IEVsZW1lbnRJZGVudGlmaWVyfFRlbXBsYXRlSWRlbnRpZmllcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkaXJlY3RpdmUgb24gYG5vZGVgIHRoYXQgdGhlIHJlZmVyZW5jZSB0YXJnZXRzLiBJZiBubyBkaXJlY3RpdmUgaXMgdGFyZ2V0ZWQsIHRoaXMgaXNcbiAgICAgKiBgbnVsbGAuXG4gICAgICovXG4gICAgZGlyZWN0aXZlOiBDbGFzc0RlY2xhcmF0aW9uIHwgbnVsbDtcbiAgfXxudWxsO1xufVxuXG4vKiogRGVzY3JpYmVzIGEgdGVtcGxhdGUgdmFyaWFibGUgbGlrZSBcImZvb1wiIGluIGA8ZGl2ICpuZ0Zvcj1cImxldCBmb28gb2YgZm9vc1wiPjwvZGl2PmAuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlSWRlbnRpZmllciBleHRlbmRzIFRlbXBsYXRlSWRlbnRpZmllciB7XG4gIGtpbmQ6IElkZW50aWZpZXJLaW5kLlZhcmlhYmxlO1xufVxuXG4vKipcbiAqIElkZW50aWZpZXJzIHJlY29yZGVkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHRlbXBsYXRlLCB3aXRob3V0IGFueSBjb250ZXh0IGFib3V0IHRoZSBIVE1MIG5vZGVzXG4gKiB0aGV5IHdlcmUgZGlzY292ZXJlZCBpbi5cbiAqL1xuZXhwb3J0IHR5cGUgVG9wTGV2ZWxJZGVudGlmaWVyID0gUHJvcGVydHlJZGVudGlmaWVyfE1ldGhvZElkZW50aWZpZXJ8RWxlbWVudElkZW50aWZpZXJ8XG4gICAgVGVtcGxhdGVOb2RlSWRlbnRpZmllcnxSZWZlcmVuY2VJZGVudGlmaWVyfFZhcmlhYmxlSWRlbnRpZmllcjtcblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGFic29sdXRlIGJ5dGUgb2Zmc2V0cyBvZiBhIHRleHQgYW5jaG9yIGluIGEgc291cmNlIGNvZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYnNvbHV0ZVNvdXJjZVNwYW4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhcnQ6IG51bWJlciwgcHVibGljIGVuZDogbnVtYmVyKSB7fVxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBhbmFseXplZCwgaW5kZXhlZCBjb21wb25lbnQgYW5kIGl0cyB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmRleGVkQ29tcG9uZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICBzZWxlY3Rvcjogc3RyaW5nfG51bGw7XG4gIGZpbGU6IFBhcnNlU291cmNlRmlsZTtcbiAgdGVtcGxhdGU6IHtcbiAgICBpZGVudGlmaWVyczogU2V0PFRvcExldmVsSWRlbnRpZmllcj4sXG4gICAgdXNlZENvbXBvbmVudHM6IFNldDxEZWNsYXJhdGlvbk5vZGU+LFxuICAgIGlzSW5saW5lOiBib29sZWFuLFxuICAgIGZpbGU6IFBhcnNlU291cmNlRmlsZTtcbiAgfTtcbn1cbiJdfQ==
@@ -6,7 +6,7 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/compiler-cli/src/ngtsc/indexer/src/transform" />
9
- import * as ts from 'typescript';
9
+ import { DeclarationNode } from '../../reflection';
10
10
  import { IndexedComponent } from './api';
11
11
  import { IndexingContext } from './context';
12
12
  /**
@@ -15,4 +15,4 @@ import { IndexingContext } from './context';
15
15
  *
16
16
  * The context must be populated before `generateAnalysis` is called.
17
17
  */
18
- export declare function generateAnalysis(context: IndexingContext): Map<ts.Declaration, IndexedComponent>;
18
+ export declare function generateAnalysis(context: IndexingContext): Map<DeclarationNode, IndexedComponent>;
@@ -63,4 +63,4 @@
63
63
  }
64
64
  exports.generateAnalysis = generateAnalysis;
65
65
  });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9pbmRleGVyL3NyYy90cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsOENBQWtEO0lBSWxELGlGQUFrRDtJQUVsRDs7Ozs7T0FLRztJQUNILFNBQWdCLGdCQUFnQixDQUFDLE9BQXdCO1FBQ3ZELElBQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFvQyxDQUFDO1FBRTdELE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUMsRUFBb0Q7Z0JBQW5ELFdBQVcsaUJBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxhQUFhLG1CQUFBLEVBQUUsWUFBWSxrQkFBQTtZQUM3RSxJQUFNLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRXhDLElBQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1lBQ2pELElBQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO2dCQUNsQixJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7b0JBQ25CLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbEM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILDZGQUE2RjtZQUM3RiwyQkFBMkI7WUFDM0IsSUFBTSxhQUFhLEdBQUcsSUFBSSwwQkFBZSxDQUNyQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JGLElBQUksWUFBNkIsQ0FBQztZQUNsQyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLFlBQVksR0FBRyxhQUFhLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7YUFDbEM7WUFFRCxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtnQkFDeEIsSUFBSSxNQUFBO2dCQUNKLFFBQVEsVUFBQTtnQkFDUixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsUUFBUSxFQUFFO29CQUNSLFdBQVcsRUFBRSxpQ0FBc0IsQ0FBQyxhQUFhLENBQUM7b0JBQ2xELGNBQWMsZ0JBQUE7b0JBQ2QsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRO29CQUMvQixJQUFJLEVBQUUsWUFBWTtpQkFDbkI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUF2Q0QsNENBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UGFyc2VTb3VyY2VGaWxlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7SW5kZXhlZENvbXBvbmVudH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHtJbmRleGluZ0NvbnRleHR9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQge2dldFRlbXBsYXRlSWRlbnRpZmllcnN9IGZyb20gJy4vdGVtcGxhdGUnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBgSW5kZXhlZENvbXBvbmVudGAgZW50cmllcyBmcm9tIGEgYEluZGV4aW5nQ29udGV4dGAsIHdoaWNoIGhhcyBpbmZvcm1hdGlvblxuICogYWJvdXQgY29tcG9uZW50cyBkaXNjb3ZlcmVkIGluIHRoZSBwcm9ncmFtIHJlZ2lzdGVyZWQgaW4gaXQuXG4gKlxuICogVGhlIGNvbnRleHQgbXVzdCBiZSBwb3B1bGF0ZWQgYmVmb3JlIGBnZW5lcmF0ZUFuYWx5c2lzYCBpcyBjYWxsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFuYWx5c2lzKGNvbnRleHQ6IEluZGV4aW5nQ29udGV4dCk6IE1hcDx0cy5EZWNsYXJhdGlvbiwgSW5kZXhlZENvbXBvbmVudD4ge1xuICBjb25zdCBhbmFseXNpcyA9IG5ldyBNYXA8dHMuRGVjbGFyYXRpb24sIEluZGV4ZWRDb21wb25lbnQ+KCk7XG5cbiAgY29udGV4dC5jb21wb25lbnRzLmZvckVhY2goKHtkZWNsYXJhdGlvbiwgc2VsZWN0b3IsIGJvdW5kVGVtcGxhdGUsIHRlbXBsYXRlTWV0YX0pID0+IHtcbiAgICBjb25zdCBuYW1lID0gZGVjbGFyYXRpb24ubmFtZS5nZXRUZXh0KCk7XG5cbiAgICBjb25zdCB1c2VkQ29tcG9uZW50cyA9IG5ldyBTZXQ8dHMuRGVjbGFyYXRpb24+KCk7XG4gICAgY29uc3QgdXNlZERpcnMgPSBib3VuZFRlbXBsYXRlLmdldFVzZWREaXJlY3RpdmVzKCk7XG4gICAgdXNlZERpcnMuZm9yRWFjaChkaXIgPT4ge1xuICAgICAgaWYgKGRpci5pc0NvbXBvbmVudCkge1xuICAgICAgICB1c2VkQ29tcG9uZW50cy5hZGQoZGlyLnJlZi5ub2RlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEdldCBzb3VyY2UgZmlsZXMgZm9yIHRoZSBjb21wb25lbnQgYW5kIHRoZSB0ZW1wbGF0ZS4gSWYgdGhlIHRlbXBsYXRlIGlzIGlubGluZSwgaXRzIHNvdXJjZVxuICAgIC8vIGZpbGUgaXMgdGhlIGNvbXBvbmVudCdzLlxuICAgIGNvbnN0IGNvbXBvbmVudEZpbGUgPSBuZXcgUGFyc2VTb3VyY2VGaWxlKFxuICAgICAgICBkZWNsYXJhdGlvbi5nZXRTb3VyY2VGaWxlKCkuZ2V0RnVsbFRleHQoKSwgZGVjbGFyYXRpb24uZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lKTtcbiAgICBsZXQgdGVtcGxhdGVGaWxlOiBQYXJzZVNvdXJjZUZpbGU7XG4gICAgaWYgKHRlbXBsYXRlTWV0YS5pc0lubGluZSkge1xuICAgICAgdGVtcGxhdGVGaWxlID0gY29tcG9uZW50RmlsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVtcGxhdGVGaWxlID0gdGVtcGxhdGVNZXRhLmZpbGU7XG4gICAgfVxuXG4gICAgYW5hbHlzaXMuc2V0KGRlY2xhcmF0aW9uLCB7XG4gICAgICBuYW1lLFxuICAgICAgc2VsZWN0b3IsXG4gICAgICBmaWxlOiBjb21wb25lbnRGaWxlLFxuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgaWRlbnRpZmllcnM6IGdldFRlbXBsYXRlSWRlbnRpZmllcnMoYm91bmRUZW1wbGF0ZSksXG4gICAgICAgIHVzZWRDb21wb25lbnRzLFxuICAgICAgICBpc0lubGluZTogdGVtcGxhdGVNZXRhLmlzSW5saW5lLFxuICAgICAgICBmaWxlOiB0ZW1wbGF0ZUZpbGUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gYW5hbHlzaXM7XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9pbmRleGVyL3NyYy90cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsOENBQWtEO0lBSWxELGlGQUFrRDtJQUVsRDs7Ozs7T0FLRztJQUNILFNBQWdCLGdCQUFnQixDQUFDLE9BQXdCO1FBQ3ZELElBQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFxQyxDQUFDO1FBRTlELE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUMsRUFBb0Q7Z0JBQW5ELFdBQVcsaUJBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxhQUFhLG1CQUFBLEVBQUUsWUFBWSxrQkFBQTtZQUM3RSxJQUFNLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRXhDLElBQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1lBQ2xELElBQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO2dCQUNsQixJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7b0JBQ25CLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbEM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILDZGQUE2RjtZQUM3RiwyQkFBMkI7WUFDM0IsSUFBTSxhQUFhLEdBQUcsSUFBSSwwQkFBZSxDQUNyQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JGLElBQUksWUFBNkIsQ0FBQztZQUNsQyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLFlBQVksR0FBRyxhQUFhLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7YUFDbEM7WUFFRCxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtnQkFDeEIsSUFBSSxNQUFBO2dCQUNKLFFBQVEsVUFBQTtnQkFDUixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsUUFBUSxFQUFFO29CQUNSLFdBQVcsRUFBRSxpQ0FBc0IsQ0FBQyxhQUFhLENBQUM7b0JBQ2xELGNBQWMsZ0JBQUE7b0JBQ2QsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRO29CQUMvQixJQUFJLEVBQUUsWUFBWTtpQkFDbkI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUF2Q0QsNENBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UGFyc2VTb3VyY2VGaWxlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQge0RlY2xhcmF0aW9uTm9kZX0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5pbXBvcnQge0luZGV4ZWRDb21wb25lbnR9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7SW5kZXhpbmdDb250ZXh0fSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHtnZXRUZW1wbGF0ZUlkZW50aWZpZXJzfSBmcm9tICcuL3RlbXBsYXRlJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYEluZGV4ZWRDb21wb25lbnRgIGVudHJpZXMgZnJvbSBhIGBJbmRleGluZ0NvbnRleHRgLCB3aGljaCBoYXMgaW5mb3JtYXRpb25cbiAqIGFib3V0IGNvbXBvbmVudHMgZGlzY292ZXJlZCBpbiB0aGUgcHJvZ3JhbSByZWdpc3RlcmVkIGluIGl0LlxuICpcbiAqIFRoZSBjb250ZXh0IG11c3QgYmUgcG9wdWxhdGVkIGJlZm9yZSBgZ2VuZXJhdGVBbmFseXNpc2AgaXMgY2FsbGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBbmFseXNpcyhjb250ZXh0OiBJbmRleGluZ0NvbnRleHQpOiBNYXA8RGVjbGFyYXRpb25Ob2RlLCBJbmRleGVkQ29tcG9uZW50PiB7XG4gIGNvbnN0IGFuYWx5c2lzID0gbmV3IE1hcDxEZWNsYXJhdGlvbk5vZGUsIEluZGV4ZWRDb21wb25lbnQ+KCk7XG5cbiAgY29udGV4dC5jb21wb25lbnRzLmZvckVhY2goKHtkZWNsYXJhdGlvbiwgc2VsZWN0b3IsIGJvdW5kVGVtcGxhdGUsIHRlbXBsYXRlTWV0YX0pID0+IHtcbiAgICBjb25zdCBuYW1lID0gZGVjbGFyYXRpb24ubmFtZS5nZXRUZXh0KCk7XG5cbiAgICBjb25zdCB1c2VkQ29tcG9uZW50cyA9IG5ldyBTZXQ8RGVjbGFyYXRpb25Ob2RlPigpO1xuICAgIGNvbnN0IHVzZWREaXJzID0gYm91bmRUZW1wbGF0ZS5nZXRVc2VkRGlyZWN0aXZlcygpO1xuICAgIHVzZWREaXJzLmZvckVhY2goZGlyID0+IHtcbiAgICAgIGlmIChkaXIuaXNDb21wb25lbnQpIHtcbiAgICAgICAgdXNlZENvbXBvbmVudHMuYWRkKGRpci5yZWYubm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBHZXQgc291cmNlIGZpbGVzIGZvciB0aGUgY29tcG9uZW50IGFuZCB0aGUgdGVtcGxhdGUuIElmIHRoZSB0ZW1wbGF0ZSBpcyBpbmxpbmUsIGl0cyBzb3VyY2VcbiAgICAvLyBmaWxlIGlzIHRoZSBjb21wb25lbnQncy5cbiAgICBjb25zdCBjb21wb25lbnRGaWxlID0gbmV3IFBhcnNlU291cmNlRmlsZShcbiAgICAgICAgZGVjbGFyYXRpb24uZ2V0U291cmNlRmlsZSgpLmdldEZ1bGxUZXh0KCksIGRlY2xhcmF0aW9uLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSk7XG4gICAgbGV0IHRlbXBsYXRlRmlsZTogUGFyc2VTb3VyY2VGaWxlO1xuICAgIGlmICh0ZW1wbGF0ZU1ldGEuaXNJbmxpbmUpIHtcbiAgICAgIHRlbXBsYXRlRmlsZSA9IGNvbXBvbmVudEZpbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlbXBsYXRlRmlsZSA9IHRlbXBsYXRlTWV0YS5maWxlO1xuICAgIH1cblxuICAgIGFuYWx5c2lzLnNldChkZWNsYXJhdGlvbiwge1xuICAgICAgbmFtZSxcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgZmlsZTogY29tcG9uZW50RmlsZSxcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIGlkZW50aWZpZXJzOiBnZXRUZW1wbGF0ZUlkZW50aWZpZXJzKGJvdW5kVGVtcGxhdGUpLFxuICAgICAgICB1c2VkQ29tcG9uZW50cyxcbiAgICAgICAgaXNJbmxpbmU6IHRlbXBsYXRlTWV0YS5pc0lubGluZSxcbiAgICAgICAgZmlsZTogdGVtcGxhdGVGaWxlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFuYWx5c2lzO1xufVxuIl19
@@ -47,6 +47,7 @@ export declare class StaticInterpreter {
47
47
  private visitElementAccessExpression;
48
48
  private visitPropertyAccessExpression;
49
49
  private visitSourceFile;
50
+ private visitAmbiguousDeclaration;
50
51
  private accessHelper;
51
52
  private visitCallExpression;
52
53
  /**