@angular/compiler-cli 11.2.0-rc.0 → 11.2.0

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.
@@ -17,7 +17,7 @@ export declare const declarationFunctions: string[];
17
17
  * Also, ranges are matched to include "pre-releases", therefore if the range is `>=11.1.0-next.1`
18
18
  * then this includes `11.1.0-next.2` and also `12.0.0-next.1`.
19
19
  *
20
- * Finally, note that we always start with the current version (i.e. `11.2.0-rc.0`). This
20
+ * Finally, note that we always start with the current version (i.e. `11.2.0`). This
21
21
  * allows the linker to work on local builds effectively.
22
22
  */
23
23
  export declare class PartialLinkerSelector<TStatement, TExpression> {
@@ -37,7 +37,7 @@
37
37
  * Also, ranges are matched to include "pre-releases", therefore if the range is `>=11.1.0-next.1`
38
38
  * then this includes `11.1.0-next.2` and also `12.0.0-next.1`.
39
39
  *
40
- * Finally, note that we always start with the current version (i.e. `11.2.0-rc.0`). This
40
+ * Finally, note that we always start with the current version (i.e. `11.2.0`). This
41
41
  * allows the linker to work on local builds effectively.
42
42
  */
43
43
  var PartialLinkerSelector = /** @class */ (function () {
@@ -83,11 +83,11 @@
83
83
  var partialComponentLinkerVersion1 = new partial_component_linker_1_1.PartialComponentLinkerVersion1(environment, get_source_file_1.createGetSourceFile(sourceUrl, code, environment.sourceFileLoader), sourceUrl, code);
84
84
  var linkers = new Map();
85
85
  linkers.set(exports.ɵɵngDeclareDirective, [
86
- { range: '11.2.0-rc.0', linker: partialDirectiveLinkerVersion1 },
86
+ { range: '11.2.0', linker: partialDirectiveLinkerVersion1 },
87
87
  { range: '>=11.1.0-next.1', linker: partialDirectiveLinkerVersion1 },
88
88
  ]);
89
89
  linkers.set(exports.ɵɵngDeclareComponent, [
90
- { range: '11.2.0-rc.0', linker: partialComponentLinkerVersion1 },
90
+ { range: '11.2.0', linker: partialComponentLinkerVersion1 },
91
91
  { range: '>=11.1.0-next.1', linker: partialComponentLinkerVersion1 },
92
92
  ]);
93
93
  return linkers;
@@ -9,7 +9,7 @@
9
9
  import { AbsoluteFsPath } from '../../../src/ngtsc/file_system';
10
10
  import { PackageJsonUpdater } from '../writing/package_json_updater';
11
11
  import { EntryPointPackageJson, PackageJsonFormatProperties } from './entry_point';
12
- export declare const NGCC_VERSION = "11.2.0-rc.0";
12
+ export declare const NGCC_VERSION = "11.2.0";
13
13
  /**
14
14
  * Returns true if there is a format in this entry-point that was compiled with an outdated version
15
15
  * of ngcc.
@@ -12,7 +12,7 @@
12
12
  exports.markAsProcessed = exports.hasBeenProcessed = exports.cleanPackageJson = exports.needsCleaning = exports.NGCC_VERSION = void 0;
13
13
  var tslib_1 = require("tslib");
14
14
  var new_entry_point_file_writer_1 = require("@angular/compiler-cli/ngcc/src/writing/new_entry_point_file_writer");
15
- exports.NGCC_VERSION = '11.2.0-rc.0';
15
+ exports.NGCC_VERSION = '11.2.0';
16
16
  /**
17
17
  * Returns true if there is a format in this entry-point that was compiled with an outdated version
18
18
  * of ngcc.
@@ -264,4 +264,4 @@
264
264
  };
265
265
  }
266
266
  });
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlfcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcGFja2FnZXMvZW50cnlfcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILCtCQUFpQztJQUlqQyx5RUFBNEQ7SUFDNUQsOERBQWtEO0lBc0VsRCw0RkFBNEY7SUFDL0UsUUFBQSwyQkFBMkIsR0FDcEMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFHcEY7OztPQUdHO0lBQ1UsUUFBQSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7SUFFL0M7O09BRUc7SUFDVSxRQUFBLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0lBRXpEOztPQUVHO0lBQ1UsUUFBQSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztJQWVuRTs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxTQUFnQixpQkFBaUIsQ0FDN0IsRUFBc0IsRUFBRSxNQUF5QixFQUFFLE1BQWMsRUFBRSxXQUEyQixFQUM5RixjQUE4QjtRQUNoQyxJQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZFLElBQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDN0UsSUFBTSx3QkFBd0IsR0FBRyxlQUFlLENBQUMsRUFBRSxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDN0UsSUFBTSwyQkFBMkIsR0FBRyxDQUFDLHNCQUFzQixLQUFLLHlCQUF5QixDQUFDLENBQUMsQ0FBQztZQUN4Rix3QkFBd0IsQ0FBQyxDQUFDO1lBQzFCLGVBQWUsQ0FBQyxFQUFFLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxJQUFBLEtBQWdDLHdCQUF3QixDQUMxRCxFQUFFLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLDJCQUEyQixDQUFDLEVBRHBFLFdBQVcsaUJBQUEsRUFBRSxjQUFjLG9CQUN5QyxDQUFDO1FBRTVFLElBQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3hGLElBQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkUsSUFBSSxxQkFBNEMsQ0FBQztRQUVqRCxJQUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtZQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO2dCQUN6QyxtQ0FBbUM7Z0JBQ25DLE9BQU8sc0JBQWMsQ0FBQzthQUN2QjtpQkFBTSxJQUFJLDJCQUEyQixLQUFLLElBQUksRUFBRTtnQkFDL0Msa0ZBQWtGO2dCQUNsRixNQUFNLENBQUMsSUFBSSxDQUFDLHVFQUNSLHlCQUEyQixDQUFDLENBQUM7Z0JBRWpDLE9BQU8sZ0NBQXdCLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wscUJBQXFCLEdBQUcsMkJBQTJCLENBQUM7YUFDckQ7U0FDRjthQUFNLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRTtZQUMzQyxrQ0FBa0M7WUFDbEMsT0FBTywyQkFBbUIsQ0FBQztTQUM1QjthQUFNO1lBQ0wscUJBQXFCLEdBQUcseUJBQXlCLENBQzdDLEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDckY7UUFFRCxJQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLElBQUkscUJBQXFCLENBQUMsS0FBSztZQUN4RSwyQkFBMkIsQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDM0UsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsMENBQTBDO1lBQzFDLE9BQU8sZ0NBQXdCLENBQUM7U0FDakM7UUFFRCwwRUFBMEU7UUFDMUUsMkRBQTJEO1FBQzNELHlDQUF5QztRQUN6QyxJQUFNLFlBQVksR0FDZCxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ25GLElBQU0saUJBQWlCLEdBQUcsZ0JBQWdCLEtBQUssU0FBUyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFcEYsSUFBTSxjQUFjLEdBQWU7WUFDakMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUk7WUFDaEMsSUFBSSxFQUFFLGNBQWM7WUFDcEIsV0FBVyxhQUFBO1lBQ1gsV0FBVyxhQUFBO1lBQ1gsV0FBVyxFQUFFLHFCQUFxQjtZQUNsQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDO1lBQzVDLGlCQUFpQixtQkFBQTtZQUNqQix5QkFBeUIsRUFDckIsZ0JBQWdCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDekYscUJBQXFCLEVBQ2pCLGdCQUFnQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxLQUFLO1NBQ3RGLENBQUM7UUFFRixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBbEVELDhDQWtFQztJQUVELFNBQWdCLFlBQVksQ0FBQyxNQUEyQjtRQUN0RCxPQUFPLE1BQU0sS0FBSyxzQkFBYyxJQUFJLE1BQU0sS0FBSyxnQ0FBd0I7WUFDbkUsTUFBTSxLQUFLLDJCQUFtQixDQUFDO0lBQ3JDLENBQUM7SUFIRCxvQ0FHQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBZ0IsbUJBQW1CLENBQy9CLEVBQXNCLEVBQUUsVUFBc0IsRUFDOUMsUUFBZ0M7UUFDbEMsUUFBUSxRQUFRLEVBQUU7WUFDaEIsS0FBSyxVQUFVO2dCQUNiLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssT0FBTztnQkFDVixPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFNBQVM7Z0JBQ1osSUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQUU7b0JBQ25DLE9BQU8sU0FBUyxDQUFDO2lCQUNsQjtnQkFDRCxPQUFPLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0RSxLQUFLLE1BQU07Z0JBQ1QsSUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO29CQUMxQixPQUFPLFNBQVMsQ0FBQztpQkFDbEI7Z0JBQ0QsT0FBTyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbkUsS0FBSyxRQUFRO2dCQUNYLElBQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hELDRFQUE0RTtnQkFDNUUsOEVBQThFO2dCQUM5RSwrRUFBK0U7Z0JBQy9FLGtGQUFrRjtnQkFDbEYsMERBQTBEO2dCQUMxRCxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUM1RSxPQUFPLFNBQVMsQ0FBQztpQkFDbEI7Z0JBQ0QsT0FBTyxNQUFNLENBQUM7WUFDaEI7Z0JBQ0UsT0FBTyxTQUFTLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBeENELGtEQXdDQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLGVBQWUsQ0FDcEIsRUFBc0IsRUFBRSxlQUErQjtRQUN6RCxJQUFJO1lBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztTQUNqRDtRQUFDLFdBQU07WUFDTixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELFNBQVMsaUJBQWlCLENBQ3RCLEVBQXNCLEVBQUUsY0FBOEI7UUFDeEQsSUFBTSxZQUFZLEdBQUcsZ0NBQXdCLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM1RixJQUFJLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDekIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxJQUFNLFVBQVUsR0FDWixFQUFFLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RixJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0QyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUNELElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLHFDQUEwQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDeEUsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsT0FBTyxVQUFVLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsU0FBUyx5QkFBeUIsQ0FDOUIsRUFBb0IsRUFBRSxxQkFBaUQsRUFDdkUsZ0JBQXNDLEVBQUUsV0FBMkIsRUFDbkUsY0FBOEI7UUFDaEMsSUFBSSxxQkFBcUIsS0FBSyxJQUFJLEVBQUU7WUFDbEMsNkNBQVcscUJBQXFCLEdBQUssZ0JBQWdCLENBQUMsUUFBUSxFQUFFO1NBQ2pFO2FBQU07WUFDTCxJQUFNLElBQUksR0FBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBRyxDQUFDO1lBQ3ZGLDBCQUFRLElBQUksTUFBQSxJQUFLLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtTQUM3QztJQUNILENBQUM7SUFFRCxTQUFTLDJCQUEyQixDQUNoQyxFQUFzQixFQUFFLGNBQThCLEVBQ3RELHFCQUE0Qzs7O1lBQzlDLEtBQW1CLElBQUEsZ0NBQUEsaUJBQUEsbUNBQTJCLENBQUEsd0VBQUEsaUhBQUU7Z0JBQTNDLElBQU0sSUFBSSx3Q0FBQTtnQkFDYixJQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7b0JBQzdCLCtEQUErRDtvQkFDL0QsU0FBUztpQkFDVjtnQkFDRCxJQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUM1RCxJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQzFCLE9BQU8sV0FBVyxDQUFDO2lCQUNwQjthQUNGOzs7Ozs7Ozs7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsU0FBUyx3QkFBd0IsQ0FDN0IsRUFBb0IsRUFBRSxXQUEyQixFQUNqRCxrQkFBOEMsRUFDOUMscUJBQ0k7O1FBQ04sSUFBSSxXQUFtQixDQUFDO1FBRXhCLElBQUksa0JBQWtCLEtBQUssSUFBSSxFQUFFO1lBQy9CLGtGQUFrRjtZQUNsRixXQUFXLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1NBQ3ZDO2FBQU0sSUFBSSxxQkFBcUIsS0FBSyxJQUFJLEVBQUU7WUFDekMsc0ZBQXNGO1lBQ3RGLDJGQUEyRjtZQUMzRixrRUFBa0U7WUFDbEUsV0FBVyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRTthQUFNO1lBQ0wsd0ZBQXdGO1lBQ3hGLElBQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0MsSUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUUvRCxXQUFXO2dCQUNQLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUksaUJBQWlCLFNBQUksV0FBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7U0FDN0Y7UUFFRCxPQUFPO1lBQ0wsV0FBVyxhQUFBO1lBQ1gsY0FBYyxRQUFFLGtCQUFrQixhQUFsQixrQkFBa0IsdUJBQWxCLGtCQUFrQixDQUFFLE9BQU8sbUNBQUksSUFBSTtTQUNwRCxDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIFBhdGhNYW5pcHVsYXRpb24sIFJlYWRvbmx5RmlsZVN5c3RlbX0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvbG9nZ2luZyc7XG5pbXBvcnQge3BhcnNlU3RhdGVtZW50Rm9yVW1kTW9kdWxlfSBmcm9tICcuLi9ob3N0L3VtZF9ob3N0JztcbmltcG9ydCB7cmVzb2x2ZUZpbGVXaXRoUG9zdGZpeGVzfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7TmdjY0NvbmZpZ3VyYXRpb24sIE5nY2NFbnRyeVBvaW50Q29uZmlnfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24nO1xuXG4vKipcbiAqIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBmb3JtYXQgb2YgYW4gZW50cnktcG9pbnQuXG4gKi9cbmV4cG9ydCB0eXBlIEVudHJ5UG9pbnRGb3JtYXQgPSAnZXNtNSd8J2VzbTIwMTUnfCd1bWQnfCdjb21tb25qcyc7XG5cbi8qKlxuICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgYW4gZW50cnktcG9pbnQsIGluY2x1ZGluZyBwYXRoc1xuICogdG8gZWFjaCBvZiB0aGUgcG9zc2libGUgZW50cnktcG9pbnQgZm9ybWF0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRyeVBvaW50IGV4dGVuZHMgSnNvbk9iamVjdCB7XG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgZW50cnktcG9pbnQgKGUuZy4gYEBhbmd1bGFyL2NvcmVgIG9yIGBAYW5ndWxhci9jb21tb24vaHR0cGApLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgcGF0aCB0byB0aGlzIGVudHJ5IHBvaW50LiAqL1xuICBwYXRoOiBBYnNvbHV0ZUZzUGF0aDtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhpcyBlbnRyeS1wb2ludCAoZS5nLiBgQGFuZ3VsYXIvY29yZWAgb3JcbiAgICogYEBhbmd1bGFyL2NvbW1vbmApLlxuICAgKi9cbiAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBwYXRoIHRvIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhpcyBlbnRyeS1wb2ludC4gKi9cbiAgcGFja2FnZVBhdGg6IEFic29sdXRlRnNQYXRoO1xuICAvKiogVGhlIHBhcnNlZCBwYWNrYWdlLmpzb24gZmlsZSBmb3IgdGhpcyBlbnRyeS1wb2ludC4gKi9cbiAgcGFja2FnZUpzb246IEVudHJ5UG9pbnRQYWNrYWdlSnNvbjtcbiAgLyoqIFRoZSBwYXRoIHRvIGEgdHlwaW5ncyAoLmQudHMpIGZpbGUgZm9yIHRoaXMgZW50cnktcG9pbnQuICovXG4gIHR5cGluZ3M6IEFic29sdXRlRnNQYXRoO1xuICAvKiogSXMgdGhpcyBFbnRyeVBvaW50IGNvbXBpbGVkIHdpdGggdGhlIEFuZ3VsYXIgVmlldyBFbmdpbmUgY29tcGlsZXI/ICovXG4gIGNvbXBpbGVkQnlBbmd1bGFyOiBib29sZWFuO1xuICAvKiogU2hvdWxkIG5nY2MgaWdub3JlIG1pc3NpbmcgZGVwZW5kZW5jaWVzIGFuZCBwcm9jZXNzIHRoaXMgZW50cnlwb2ludCBhbnl3YXk/ICovXG4gIGlnbm9yZU1pc3NpbmdEZXBlbmRlbmNpZXM6IGJvb2xlYW47XG4gIC8qKiBTaG91bGQgbmdjYyBnZW5lcmF0ZSBkZWVwIHJlLWV4cG9ydHMgZm9yIHRoaXMgZW50cnlwb2ludD8gKi9cbiAgZ2VuZXJhdGVEZWVwUmVleHBvcnRzOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBKc29uUHJpbWl0aXZlID0gc3RyaW5nfG51bWJlcnxib29sZWFufG51bGw7XG5leHBvcnQgdHlwZSBKc29uVmFsdWUgPSBKc29uUHJpbWl0aXZlfEpzb25BcnJheXxKc29uT2JqZWN0fHVuZGVmaW5lZDtcbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkFycmF5IGV4dGVuZHMgQXJyYXk8SnNvblZhbHVlPiB7fVxuZXhwb3J0IGludGVyZmFjZSBKc29uT2JqZWN0IHtcbiAgW2tleTogc3RyaW5nXTogSnNvblZhbHVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VKc29uRm9ybWF0UHJvcGVydGllc01hcCB7XG4gIGJyb3dzZXI/OiBzdHJpbmc7XG4gIGZlc20yMDE1Pzogc3RyaW5nO1xuICBmZXNtNT86IHN0cmluZztcbiAgZXMyMDE1Pzogc3RyaW5nOyAgLy8gaWYgZXhpc3RzIHRoZW4gaXQgaXMgYWN0dWFsbHkgRkVTTTIwMTVcbiAgZXNtMjAxNT86IHN0cmluZztcbiAgZXNtNT86IHN0cmluZztcbiAgbWFpbj86IHN0cmluZzsgICAgIC8vIFVNRFxuICBtb2R1bGU/OiBzdHJpbmc7ICAgLy8gaWYgZXhpc3RzIHRoZW4gaXQgaXMgYWN0dWFsbHkgRkVTTTVcbiAgdHlwZXM/OiBzdHJpbmc7ICAgIC8vIFN5bm9ueW1vdXMgdG8gYHR5cGluZ3NgIHByb3BlcnR5IC0gc2VlIGh0dHBzOi8vYml0Lmx5LzJPZ1dwMkhcbiAgdHlwaW5ncz86IHN0cmluZzsgIC8vIFR5cGVTY3JpcHQgLmQudHMgZmlsZXNcbn1cblxuZXhwb3J0IHR5cGUgUGFja2FnZUpzb25Gb3JtYXRQcm9wZXJ0aWVzID0ga2V5b2YgUGFja2FnZUpzb25Gb3JtYXRQcm9wZXJ0aWVzTWFwO1xuXG4vKipcbiAqIFRoZSBwcm9wZXJ0aWVzIHRoYXQgbWF5IGJlIGxvYWRlZCBmcm9tIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudHJ5UG9pbnRQYWNrYWdlSnNvbiBleHRlbmRzIEpzb25PYmplY3QsIFBhY2thZ2VKc29uRm9ybWF0UHJvcGVydGllc01hcCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgc2NyaXB0cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIF9fcHJvY2Vzc2VkX2J5X2l2eV9uZ2NjX18/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgdHlwZSBFbnRyeVBvaW50SnNvblByb3BlcnR5ID0gRXhjbHVkZTxQYWNrYWdlSnNvbkZvcm1hdFByb3BlcnRpZXMsICd0eXBlcyd8J3R5cGluZ3MnPjtcbi8vIFdlIG5lZWQgdG8ga2VlcCB0aGUgZWxlbWVudHMgb2YgdGhpcyBjb25zdCBhbmQgdGhlIGBFbnRyeVBvaW50SnNvblByb3BlcnR5YCB0eXBlIGluIHN5bmMuXG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTOiBFbnRyeVBvaW50SnNvblByb3BlcnR5W10gPVxuICAgIFsnZmVzbTIwMTUnLCAnZmVzbTUnLCAnZXMyMDE1JywgJ2VzbTIwMTUnLCAnZXNtNScsICdtYWluJywgJ21vZHVsZScsICdicm93c2VyJ107XG5cblxuLyoqXG4gKiBUaGUgcGF0aCBkb2VzIG5vdCByZXByZXNlbnQgYW4gZW50cnktcG9pbnQsIGkuZS4gdGhlcmUgaXMgbm8gcGFja2FnZS5qc29uIGF0IHRoZSBwYXRoIGFuZCB0aGVyZVxuICogaXMgbm8gY29uZmlnIHRvIGZvcmNlIGFuIGVudHJ5LXBvaW50LlxuICovXG5leHBvcnQgY29uc3QgTk9fRU5UUllfUE9JTlQgPSAnbm8tZW50cnktcG9pbnQnO1xuXG4vKipcbiAqIFRoZSBwYXRoIHJlcHJlc2VudHMgYW4gZW50cnktcG9pbnQgdGhhdCBpcyBgaWdub3JlZGAgYnkgYW4gbmdjYyBjb25maWcuXG4gKi9cbmV4cG9ydCBjb25zdCBJR05PUkVEX0VOVFJZX1BPSU5UID0gJ2lnbm9yZWQtZW50cnktcG9pbnQnO1xuXG4vKipcbiAqIFRoZSBwYXRoIGhhcyBhIHBhY2thZ2UuanNvbiwgYnV0IGl0IGlzIG5vdCBhIHZhbGlkIGVudHJ5LXBvaW50IGZvciBuZ2NjIHByb2Nlc3NpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBJTkNPTVBBVElCTEVfRU5UUllfUE9JTlQgPSAnaW5jb21wYXRpYmxlLWVudHJ5LXBvaW50JztcblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIGNhbGxpbmcgYGdldEVudHJ5UG9pbnRJbmZvKClgLlxuICpcbiAqIFRoaXMgd2lsbCBiZSBhbiBgRW50cnlQb2ludGAgb2JqZWN0IGlmIGFuIEFuZ3VsYXIgZW50cnktcG9pbnQgd2FzIGlkZW50aWZpZWQ7XG4gKiBPdGhlcndpc2UgaXQgd2lsbCBiZSBhIGZsYWcgaW5kaWNhdGluZyBvbmUgb2Y6XG4gKiAqIE5PX0VOVFJZX1BPSU5UIC0gdGhlIHBhdGggaXMgbm90IGFuIGVudHJ5LXBvaW50IG9yIG5nY2MgaXMgY29uZmlndXJlZCB0byBpZ25vcmUgaXRcbiAqICogSU5DT01QQVRJQkxFX0VOVFJZX1BPSU5UIC0gdGhlIHBhdGggd2FzIGEgbm9uLXByb2Nlc3NhYmxlIGVudHJ5LXBvaW50IHRoYXQgc2hvdWxkIGJlIHNlYXJjaGVkXG4gKiBmb3Igc3ViLWVudHJ5LXBvaW50c1xuICovXG5leHBvcnQgdHlwZSBHZXRFbnRyeVBvaW50UmVzdWx0ID1cbiAgICBFbnRyeVBvaW50fHR5cGVvZiBJR05PUkVEX0VOVFJZX1BPSU5UfHR5cGVvZiBJTkNPTVBBVElCTEVfRU5UUllfUE9JTlR8dHlwZW9mIE5PX0VOVFJZX1BPSU5UO1xuXG5cbi8qKlxuICogVHJ5IHRvIGNyZWF0ZSBhbiBlbnRyeS1wb2ludCBmcm9tIHRoZSBnaXZlbiBwYXRocyBhbmQgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gcGFja2FnZVBhdGggdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGNvbnRhaW5pbmcgbnBtIHBhY2thZ2VcbiAqIEBwYXJhbSBlbnRyeVBvaW50UGF0aCB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcG90ZW50aWFsIGVudHJ5LXBvaW50LlxuICogQHJldHVybnNcbiAqIC0gQW4gZW50cnktcG9pbnQgaWYgaXQgaXMgdmFsaWQgYW5kIG5vdCBpZ25vcmVkLlxuICogLSBgTk9fRU5UUllfUE9JTlRgIHdoZW4gdGhlcmUgaXMgbm8gcGFja2FnZS5qc29uIGF0IHRoZSBwYXRoIGFuZCB0aGVyZSBpcyBubyBjb25maWcgdG8gZm9yY2UgYW5cbiAqICAgZW50cnktcG9pbnQsXG4gKiAtIGBJR05PUkVEX0VOVFJZX1BPSU5UYCB3aGVuIHRoZSBlbnRyeS1wb2ludCBpcyBpZ25vcmVkIGJ5IGFuIG5nY2MgY29uZmlnLlxuICogLSBgSU5DT01QQVRJQkxFX0VOVFJZX1BPSU5UYCB3aGVuIHRoZXJlIGlzIGEgcGFja2FnZS5qc29uIGJ1dCBpdCBpcyBub3QgYSB2YWxpZCBBbmd1bGFyIGNvbXBpbGVkXG4gKiAgIGVudHJ5LXBvaW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cnlQb2ludEluZm8oXG4gICAgZnM6IFJlYWRvbmx5RmlsZVN5c3RlbSwgY29uZmlnOiBOZ2NjQ29uZmlndXJhdGlvbiwgbG9nZ2VyOiBMb2dnZXIsIHBhY2thZ2VQYXRoOiBBYnNvbHV0ZUZzUGF0aCxcbiAgICBlbnRyeVBvaW50UGF0aDogQWJzb2x1dGVGc1BhdGgpOiBHZXRFbnRyeVBvaW50UmVzdWx0IHtcbiAgY29uc3QgcGFja2FnZVBhY2thZ2VKc29uUGF0aCA9IGZzLnJlc29sdmUocGFja2FnZVBhdGgsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgZW50cnlQb2ludFBhY2thZ2VKc29uUGF0aCA9IGZzLnJlc29sdmUoZW50cnlQb2ludFBhdGgsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgbG9hZGVkUGFja2FnZVBhY2thZ2VKc29uID0gbG9hZFBhY2thZ2VKc29uKGZzLCBwYWNrYWdlUGFja2FnZUpzb25QYXRoKTtcbiAgY29uc3QgbG9hZGVkRW50cnlQb2ludFBhY2thZ2VKc29uID0gKHBhY2thZ2VQYWNrYWdlSnNvblBhdGggPT09IGVudHJ5UG9pbnRQYWNrYWdlSnNvblBhdGgpID9cbiAgICAgIGxvYWRlZFBhY2thZ2VQYWNrYWdlSnNvbiA6XG4gICAgICBsb2FkUGFja2FnZUpzb24oZnMsIGVudHJ5UG9pbnRQYWNrYWdlSnNvblBhdGgpO1xuICBjb25zdCB7cGFja2FnZU5hbWUsIHBhY2thZ2VWZXJzaW9ufSA9IGdldFBhY2thZ2VOYW1lQW5kVmVyc2lvbihcbiAgICAgIGZzLCBwYWNrYWdlUGF0aCwgbG9hZGVkUGFja2FnZVBhY2thZ2VKc29uLCBsb2FkZWRFbnRyeVBvaW50UGFja2FnZUpzb24pO1xuXG4gIGNvbnN0IHBhY2thZ2VDb25maWcgPSBjb25maWcuZ2V0UGFja2FnZUNvbmZpZyhwYWNrYWdlTmFtZSwgcGFja2FnZVBhdGgsIHBhY2thZ2VWZXJzaW9uKTtcbiAgY29uc3QgZW50cnlQb2ludENvbmZpZyA9IHBhY2thZ2VDb25maWcuZW50cnlQb2ludHMuZ2V0KGVudHJ5UG9pbnRQYXRoKTtcbiAgbGV0IGVudHJ5UG9pbnRQYWNrYWdlSnNvbjogRW50cnlQb2ludFBhY2thZ2VKc29uO1xuXG4gIGlmIChlbnRyeVBvaW50Q29uZmlnID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWZzLmV4aXN0cyhlbnRyeVBvaW50UGFja2FnZUpzb25QYXRoKSkge1xuICAgICAgLy8gTm8gYHBhY2thZ2UuanNvbmAgYW5kIG5vIGNvbmZpZy5cbiAgICAgIHJldHVybiBOT19FTlRSWV9QT0lOVDtcbiAgICB9IGVsc2UgaWYgKGxvYWRlZEVudHJ5UG9pbnRQYWNrYWdlSnNvbiA9PT0gbnVsbCkge1xuICAgICAgLy8gYHBhY2thZ2UuanNvbmAgZXhpc3RzIGJ1dCBjb3VsZCBub3QgYmUgcGFyc2VkIGFuZCB0aGVyZSBpcyBubyByZWRlZW1pbmcgY29uZmlnLlxuICAgICAgbG9nZ2VyLndhcm4oYEZhaWxlZCB0byByZWFkIGVudHJ5IHBvaW50IGluZm8gZnJvbSBpbnZhbGlkICdwYWNrYWdlLmpzb24nIGZpbGU6ICR7XG4gICAgICAgICAgZW50cnlQb2ludFBhY2thZ2VKc29uUGF0aH1gKTtcblxuICAgICAgcmV0dXJuIElOQ09NUEFUSUJMRV9FTlRSWV9QT0lOVDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50cnlQb2ludFBhY2thZ2VKc29uID0gbG9hZGVkRW50cnlQb2ludFBhY2thZ2VKc29uO1xuICAgIH1cbiAgfSBlbHNlIGlmIChlbnRyeVBvaW50Q29uZmlnLmlnbm9yZSA9PT0gdHJ1ZSkge1xuICAgIC8vIEV4cGxpY2l0bHkgaWdub3JlZCBlbnRyeS1wb2ludC5cbiAgICByZXR1cm4gSUdOT1JFRF9FTlRSWV9QT0lOVDtcbiAgfSBlbHNlIHtcbiAgICBlbnRyeVBvaW50UGFja2FnZUpzb24gPSBtZXJnZUNvbmZpZ0FuZFBhY2thZ2VKc29uKFxuICAgICAgICBmcywgbG9hZGVkRW50cnlQb2ludFBhY2thZ2VKc29uLCBlbnRyeVBvaW50Q29uZmlnLCBwYWNrYWdlUGF0aCwgZW50cnlQb2ludFBhdGgpO1xuICB9XG5cbiAgY29uc3QgdHlwaW5ncyA9IGVudHJ5UG9pbnRQYWNrYWdlSnNvbi50eXBpbmdzIHx8IGVudHJ5UG9pbnRQYWNrYWdlSnNvbi50eXBlcyB8fFxuICAgICAgZ3Vlc3NUeXBpbmdzRnJvbVBhY2thZ2VKc29uKGZzLCBlbnRyeVBvaW50UGF0aCwgZW50cnlQb2ludFBhY2thZ2VKc29uKTtcbiAgaWYgKHR5cGVvZiB0eXBpbmdzICE9PSAnc3RyaW5nJykge1xuICAgIC8vIE1pc3NpbmcgdGhlIHJlcXVpcmVkIGB0eXBpbmdzYCBwcm9wZXJ0eVxuICAgIHJldHVybiBJTkNPTVBBVElCTEVfRU5UUllfUE9JTlQ7XG4gIH1cblxuICAvLyBBbiBlbnRyeS1wb2ludCBpcyBhc3N1bWVkIHRvIGJlIGNvbXBpbGVkIGJ5IEFuZ3VsYXIgaWYgdGhlcmUgaXMgZWl0aGVyOlxuICAvLyAqIGEgYG1ldGFkYXRhLmpzb25gIGZpbGUgbmV4dCB0byB0aGUgdHlwaW5ncyBlbnRyeS1wb2ludFxuICAvLyAqIGEgY3VzdG9tIGNvbmZpZyBmb3IgdGhpcyBlbnRyeS1wb2ludFxuICBjb25zdCBtZXRhZGF0YVBhdGggPVxuICAgICAgZnMucmVzb2x2ZShlbnRyeVBvaW50UGF0aCwgdHlwaW5ncy5yZXBsYWNlKC9cXC5kXFwudHMkLywgJycpICsgJy5tZXRhZGF0YS5qc29uJyk7XG4gIGNvbnN0IGNvbXBpbGVkQnlBbmd1bGFyID0gZW50cnlQb2ludENvbmZpZyAhPT0gdW5kZWZpbmVkIHx8IGZzLmV4aXN0cyhtZXRhZGF0YVBhdGgpO1xuXG4gIGNvbnN0IGVudHJ5UG9pbnRJbmZvOiBFbnRyeVBvaW50ID0ge1xuICAgIG5hbWU6IGVudHJ5UG9pbnRQYWNrYWdlSnNvbi5uYW1lLFxuICAgIHBhdGg6IGVudHJ5UG9pbnRQYXRoLFxuICAgIHBhY2thZ2VOYW1lLFxuICAgIHBhY2thZ2VQYXRoLFxuICAgIHBhY2thZ2VKc29uOiBlbnRyeVBvaW50UGFja2FnZUpzb24sXG4gICAgdHlwaW5nczogZnMucmVzb2x2ZShlbnRyeVBvaW50UGF0aCwgdHlwaW5ncyksXG4gICAgY29tcGlsZWRCeUFuZ3VsYXIsXG4gICAgaWdub3JlTWlzc2luZ0RlcGVuZGVuY2llczpcbiAgICAgICAgZW50cnlQb2ludENvbmZpZyAhPT0gdW5kZWZpbmVkID8gISFlbnRyeVBvaW50Q29uZmlnLmlnbm9yZU1pc3NpbmdEZXBlbmRlbmNpZXMgOiBmYWxzZSxcbiAgICBnZW5lcmF0ZURlZXBSZWV4cG9ydHM6XG4gICAgICAgIGVudHJ5UG9pbnRDb25maWcgIT09IHVuZGVmaW5lZCA/ICEhZW50cnlQb2ludENvbmZpZy5nZW5lcmF0ZURlZXBSZWV4cG9ydHMgOiBmYWxzZSxcbiAgfTtcblxuICByZXR1cm4gZW50cnlQb2ludEluZm87XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VudHJ5UG9pbnQocmVzdWx0OiBHZXRFbnRyeVBvaW50UmVzdWx0KTogcmVzdWx0IGlzIEVudHJ5UG9pbnQge1xuICByZXR1cm4gcmVzdWx0ICE9PSBOT19FTlRSWV9QT0lOVCAmJiByZXN1bHQgIT09IElOQ09NUEFUSUJMRV9FTlRSWV9QT0lOVCAmJlxuICAgICAgcmVzdWx0ICE9PSBJR05PUkVEX0VOVFJZX1BPSU5UO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBwYWNrYWdlLmpzb24gcHJvcGVydHkgaW50byBhbiBlbnRyeS1wb2ludCBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHByb3BlcnR5IFRoZSBwcm9wZXJ0eSB0byBjb252ZXJ0IHRvIGEgZm9ybWF0LlxuICogQHJldHVybnMgQW4gZW50cnktcG9pbnQgZm9ybWF0IG9yIGB1bmRlZmluZWRgIGlmIG5vbmUgbWF0Y2ggdGhlIGdpdmVuIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cnlQb2ludEZvcm1hdChcbiAgICBmczogUmVhZG9ubHlGaWxlU3lzdGVtLCBlbnRyeVBvaW50OiBFbnRyeVBvaW50LFxuICAgIHByb3BlcnR5OiBFbnRyeVBvaW50SnNvblByb3BlcnR5KTogRW50cnlQb2ludEZvcm1hdHx1bmRlZmluZWQge1xuICBzd2l0Y2ggKHByb3BlcnR5KSB7XG4gICAgY2FzZSAnZmVzbTIwMTUnOlxuICAgICAgcmV0dXJuICdlc20yMDE1JztcbiAgICBjYXNlICdmZXNtNSc6XG4gICAgICByZXR1cm4gJ2VzbTUnO1xuICAgIGNhc2UgJ2VzMjAxNSc6XG4gICAgICByZXR1cm4gJ2VzbTIwMTUnO1xuICAgIGNhc2UgJ2VzbTIwMTUnOlxuICAgICAgcmV0dXJuICdlc20yMDE1JztcbiAgICBjYXNlICdlc201JzpcbiAgICAgIHJldHVybiAnZXNtNSc7XG4gICAgY2FzZSAnYnJvd3Nlcic6XG4gICAgICBjb25zdCBicm93c2VyRmlsZSA9IGVudHJ5UG9pbnQucGFja2FnZUpzb25bJ2Jyb3dzZXInXTtcbiAgICAgIGlmICh0eXBlb2YgYnJvd3NlckZpbGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gc25pZmZNb2R1bGVGb3JtYXQoZnMsIGZzLmpvaW4oZW50cnlQb2ludC5wYXRoLCBicm93c2VyRmlsZSkpO1xuICAgIGNhc2UgJ21haW4nOlxuICAgICAgY29uc3QgbWFpbkZpbGUgPSBlbnRyeVBvaW50LnBhY2thZ2VKc29uWydtYWluJ107XG4gICAgICBpZiAobWFpbkZpbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNuaWZmTW9kdWxlRm9ybWF0KGZzLCBmcy5qb2luKGVudHJ5UG9pbnQucGF0aCwgbWFpbkZpbGUpKTtcbiAgICBjYXNlICdtb2R1bGUnOlxuICAgICAgY29uc3QgbW9kdWxlRmlsZVBhdGggPSBlbnRyeVBvaW50LnBhY2thZ2VKc29uWydtb2R1bGUnXTtcbiAgICAgIC8vIEFzIG9mIHZlcnNpb24gMTAsIHRoZSBgbW9kdWxlYCBwcm9wZXJ0eSBpbiBgcGFja2FnZS5qc29uYCBzaG91bGQgcG9pbnQgdG9cbiAgICAgIC8vIHRoZSBFU00yMDE1IGZvcm1hdCBvdXRwdXQgYXMgcGVyIEFuZ3VsYXIgUGFja2FnZSBmb3JtYXQgc3BlY2lmaWNhdGlvbi4gVGhpc1xuICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgYG1vZHVsZWAgcHJvcGVydHkgY2FwdHVyZXMgbXVsdGlwbGUgZm9ybWF0cywgYXMgb2xkIGxpYnJhcmllc1xuICAgICAgLy8gYnVpbHQgd2l0aCB0aGUgb2xkIEFQRiBjYW4gc3RpbGwgYmUgcHJvY2Vzc2VkLiBXZSBkZXRlY3QgdGhlIGZvcm1hdCBieSBjaGVja2luZ1xuICAgICAgLy8gdGhlIHBhdGhzIHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgcGVyIEFQRiBzcGVjaWZpY2F0aW9uLlxuICAgICAgaWYgKHR5cGVvZiBtb2R1bGVGaWxlUGF0aCA9PT0gJ3N0cmluZycgJiYgbW9kdWxlRmlsZVBhdGguaW5jbHVkZXMoJ2VzbTIwMTUnKSkge1xuICAgICAgICByZXR1cm4gYGVzbTIwMTVgO1xuICAgICAgfVxuICAgICAgcmV0dXJuICdlc201JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBKU09OIGZyb20gYSBgcGFja2FnZS5qc29uYCBmaWxlLlxuICogQHBhcmFtIHBhY2thZ2VKc29uUGF0aCB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZS5cbiAqIEByZXR1cm5zIEpTT04gZnJvbSB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZSBpZiBpdCBpcyB2YWxpZCwgYG51bGxgIG90aGVyd2lzZS5cbiAqL1xuZnVuY3Rpb24gbG9hZFBhY2thZ2VKc29uKFxuICAgIGZzOiBSZWFkb25seUZpbGVTeXN0ZW0sIHBhY2thZ2VKc29uUGF0aDogQWJzb2x1dGVGc1BhdGgpOiBFbnRyeVBvaW50UGFja2FnZUpzb258bnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZnMucmVhZEZpbGUocGFja2FnZUpzb25QYXRoKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNuaWZmTW9kdWxlRm9ybWF0KFxuICAgIGZzOiBSZWFkb25seUZpbGVTeXN0ZW0sIHNvdXJjZUZpbGVQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEVudHJ5UG9pbnRGb3JtYXR8dW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZUZpbGVXaXRoUG9zdGZpeGVzKGZzLCBzb3VyY2VGaWxlUGF0aCwgWycnLCAnLmpzJywgJy9pbmRleC5qcyddKTtcbiAgaWYgKHJlc29sdmVkUGF0aCA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzb3VyY2VGaWxlID1cbiAgICAgIHRzLmNyZWF0ZVNvdXJjZUZpbGUoc291cmNlRmlsZVBhdGgsIGZzLnJlYWRGaWxlKHJlc29sdmVkUGF0aCksIHRzLlNjcmlwdFRhcmdldC5FUzUpO1xuICBpZiAoc291cmNlRmlsZS5zdGF0ZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHRzLmlzRXh0ZXJuYWxNb2R1bGUoc291cmNlRmlsZSkpIHtcbiAgICByZXR1cm4gJ2VzbTUnO1xuICB9IGVsc2UgaWYgKHBhcnNlU3RhdGVtZW50Rm9yVW1kTW9kdWxlKHNvdXJjZUZpbGUuc3RhdGVtZW50c1swXSkgIT09IG51bGwpIHtcbiAgICByZXR1cm4gJ3VtZCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICdjb21tb25qcyc7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VDb25maWdBbmRQYWNrYWdlSnNvbihcbiAgICBmczogUGF0aE1hbmlwdWxhdGlvbiwgZW50cnlQb2ludFBhY2thZ2VKc29uOiBFbnRyeVBvaW50UGFja2FnZUpzb258bnVsbCxcbiAgICBlbnRyeVBvaW50Q29uZmlnOiBOZ2NjRW50cnlQb2ludENvbmZpZywgcGFja2FnZVBhdGg6IEFic29sdXRlRnNQYXRoLFxuICAgIGVudHJ5UG9pbnRQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEVudHJ5UG9pbnRQYWNrYWdlSnNvbiB7XG4gIGlmIChlbnRyeVBvaW50UGFja2FnZUpzb24gIT09IG51bGwpIHtcbiAgICByZXR1cm4gey4uLmVudHJ5UG9pbnRQYWNrYWdlSnNvbiwgLi4uZW50cnlQb2ludENvbmZpZy5vdmVycmlkZX07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbmFtZSA9IGAke2ZzLmJhc2VuYW1lKHBhY2thZ2VQYXRoKX0vJHtmcy5yZWxhdGl2ZShwYWNrYWdlUGF0aCwgZW50cnlQb2ludFBhdGgpfWA7XG4gICAgcmV0dXJuIHtuYW1lLCAuLi5lbnRyeVBvaW50Q29uZmlnLm92ZXJyaWRlfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBndWVzc1R5cGluZ3NGcm9tUGFja2FnZUpzb24oXG4gICAgZnM6IFJlYWRvbmx5RmlsZVN5c3RlbSwgZW50cnlQb2ludFBhdGg6IEFic29sdXRlRnNQYXRoLFxuICAgIGVudHJ5UG9pbnRQYWNrYWdlSnNvbjogRW50cnlQb2ludFBhY2thZ2VKc29uKTogQWJzb2x1dGVGc1BhdGh8bnVsbCB7XG4gIGZvciAoY29uc3QgcHJvcCBvZiBTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVMpIHtcbiAgICBjb25zdCBmaWVsZCA9IGVudHJ5UG9pbnRQYWNrYWdlSnNvbltwcm9wXTtcbiAgICBpZiAodHlwZW9mIGZpZWxkICE9PSAnc3RyaW5nJykge1xuICAgICAgLy8gU29tZSBjcmF6eSBwYWNrYWdlcyBoYXZlIHRoaW5ncyBsaWtlIGFycmF5cyBpbiB0aGVzZSBmaWVsZHMhXG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgcmVsYXRpdmVUeXBpbmdzUGF0aCA9IGZpZWxkLnJlcGxhY2UoL1xcLmpzJC8sICcuZC50cycpO1xuICAgIGNvbnN0IHR5cGluZ3NQYXRoID0gZnMucmVzb2x2ZShlbnRyeVBvaW50UGF0aCwgcmVsYXRpdmVUeXBpbmdzUGF0aCk7XG4gICAgaWYgKGZzLmV4aXN0cyh0eXBpbmdzUGF0aCkpIHtcbiAgICAgIHJldHVybiB0eXBpbmdzUGF0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRmluZCBvciBpbmZlciB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiBhIHBhY2thZ2UuXG4gKlxuICogLSBUaGUgbmFtZSBpcyBjb21wdXRlZCBiYXNlZCBvbiB0aGUgYG5hbWVgIHByb3BlcnR5IG9mIHRoZSBwYWNrYWdlJ3Mgb3IgdGhlIGVudHJ5LXBvaW50J3NcbiAqICAgYHBhY2thZ2UuanNvbmAgZmlsZSAoaWYgYXZhaWxhYmxlKSBvciBpbmZlcnJlZCBmcm9tIHRoZSBwYWNrYWdlJ3MgcGF0aC5cbiAqIC0gVGhlIHZlcnNpb24gaXMgcmVhZCBvZmYgb2YgdGhlIGB2ZXJzaW9uYCBwcm9wZXJ0eSBvZiB0aGUgcGFja2FnZSdzIGBwYWNrYWdlLmpzb25gIGZpbGUgKGlmXG4gKiAgIGF2YWlsYWJsZSkuXG4gKlxuICogQHBhcmFtIGZzIFRoZSBmaWxlLXN5c3RlbSB0byB1c2UgZm9yIHByb2Nlc3NpbmcgYHBhY2thZ2VQYXRoYC5cbiAqIEBwYXJhbSBwYWNrYWdlUGF0aCB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS5cbiAqIEBwYXJhbSBwYWNrYWdlUGFja2FnZUpzb24gdGhlIHBhcnNlZCBgcGFja2FnZS5qc29uYCBvZiB0aGUgcGFja2FnZSAoaWYgYXZhaWxhYmxlKS5cbiAqIEBwYXJhbSBlbnRyeVBvaW50UGFja2FnZUpzb24gdGhlIHBhcnNlZCBgcGFja2FnZS5qc29uYCBvZiBhbiBlbnRyeS1wb2ludCAoaWYgYXZhaWxhYmxlKS5cbiAqIEByZXR1cm5zIHRoZSBjb21wdXRlZCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlLlxuICovXG5mdW5jdGlvbiBnZXRQYWNrYWdlTmFtZUFuZFZlcnNpb24oXG4gICAgZnM6IFBhdGhNYW5pcHVsYXRpb24sIHBhY2thZ2VQYXRoOiBBYnNvbHV0ZUZzUGF0aCxcbiAgICBwYWNrYWdlUGFja2FnZUpzb246IEVudHJ5UG9pbnRQYWNrYWdlSnNvbnxudWxsLFxuICAgIGVudHJ5UG9pbnRQYWNrYWdlSnNvbjogRW50cnlQb2ludFBhY2thZ2VKc29ufFxuICAgIG51bGwpOiB7cGFja2FnZU5hbWU6IHN0cmluZywgcGFja2FnZVZlcnNpb246IHN0cmluZ3xudWxsfSB7XG4gIGxldCBwYWNrYWdlTmFtZTogc3RyaW5nO1xuXG4gIGlmIChwYWNrYWdlUGFja2FnZUpzb24gIT09IG51bGwpIHtcbiAgICAvLyBXZSBoYXZlIGEgdmFsaWQgYHBhY2thZ2UuanNvbmAgZm9yIHRoZSBwYWNrYWdlOiBHZXQgdGhlIHBhY2thZ2UgbmFtZSBmcm9tIHRoYXQuXG4gICAgcGFja2FnZU5hbWUgPSBwYWNrYWdlUGFja2FnZUpzb24ubmFtZTtcbiAgfSBlbHNlIGlmIChlbnRyeVBvaW50UGFja2FnZUpzb24gIT09IG51bGwpIHtcbiAgICAvLyBXZSBoYXZlIGEgdmFsaWQgYHBhY2thZ2UuanNvbmAgZm9yIHRoZSBlbnRyeS1wb2ludDogR2V0IHRoZSBwYWNrYWdlIG5hbWUgZnJvbSB0aGF0LlxuICAgIC8vIFRoaXMgbWlnaHQgYmUgYSBzZWNvbmRhcnkgZW50cnktcG9pbnQsIHNvIG1ha2Ugc3VyZSB3ZSBvbmx5IGtlZXAgdGhlIG1haW4gcGFja2FnZSdzIG5hbWVcbiAgICAvLyAoZS5nLiBvbmx5IGtlZXAgYEBhbmd1bGFyL2NvbW1vbmAgZnJvbSBgQGFuZ3VsYXIvY29tbW9uL2h0dHBgKS5cbiAgICBwYWNrYWdlTmFtZSA9IC9eKD86QFteL10rXFwvKT9bXi9dKi8uZXhlYyhlbnRyeVBvaW50UGFja2FnZUpzb24ubmFtZSkhWzBdO1xuICB9IGVsc2Uge1xuICAgIC8vIFdlIGRvbid0IGhhdmUgYSB2YWxpZCBgcGFja2FnZS5qc29uYDogSW5mZXIgdGhlIHBhY2thZ2UgbmFtZSBmcm9tIHRoZSBwYWNrYWdlJ3MgcGF0aC5cbiAgICBjb25zdCBsYXN0U2VnbWVudCA9IGZzLmJhc2VuYW1lKHBhY2thZ2VQYXRoKTtcbiAgICBjb25zdCBzZWNvbmRMYXN0U2VnbWVudCA9IGZzLmJhc2VuYW1lKGZzLmRpcm5hbWUocGFja2FnZVBhdGgpKTtcblxuICAgIHBhY2thZ2VOYW1lID1cbiAgICAgICAgc2Vjb25kTGFzdFNlZ21lbnQuc3RhcnRzV2l0aCgnQCcpID8gYCR7c2Vjb25kTGFzdFNlZ21lbnR9LyR7bGFzdFNlZ21lbnR9YCA6IGxhc3RTZWdtZW50O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYWNrYWdlTmFtZSxcbiAgICBwYWNrYWdlVmVyc2lvbjogcGFja2FnZVBhY2thZ2VKc29uPy52ZXJzaW9uID8/IG51bGwsXG4gIH07XG59XG4iXX0=
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlfcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcGFja2FnZXMvZW50cnlfcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILCtCQUFpQztJQUlqQyx5RUFBNEQ7SUFDNUQsOERBQWtEO0lBc0VsRCw0RkFBNEY7SUFDL0UsUUFBQSwyQkFBMkIsR0FDcEMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFHcEY7OztPQUdHO0lBQ1UsUUFBQSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7SUFFL0M7O09BRUc7SUFDVSxRQUFBLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0lBRXpEOztPQUVHO0lBQ1UsUUFBQSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztJQWVuRTs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxTQUFnQixpQkFBaUIsQ0FDN0IsRUFBc0IsRUFBRSxNQUF5QixFQUFFLE1BQWMsRUFBRSxXQUEyQixFQUM5RixjQUE4QjtRQUNoQyxJQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZFLElBQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDN0UsSUFBTSx3QkFBd0IsR0FBRyxlQUFlLENBQUMsRUFBRSxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDN0UsSUFBTSwyQkFBMkIsR0FBRyxDQUFDLHNCQUFzQixLQUFLLHlCQUF5QixDQUFDLENBQUMsQ0FBQztZQUN4Rix3QkFBd0IsQ0FBQyxDQUFDO1lBQzFCLGVBQWUsQ0FBQyxFQUFFLEVB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LFNBQVMsd0JBQXdCLENBQzdCLEVBQW9CLEVBQUUsV0FBMkIsRUFDakQsa0JBQThDLEVBQzlDLHFCQUNJOztRQUNOLElBQUksV0FBbUIsQ0FBQztRQUV4QixJQUFJLGtCQUFrQixLQUFLLElBQUksRUFBRTtZQUMvQixrRkFBa0Y7WUFDbEYsV0FBVyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQztTQUN2QzthQUFNLElBQUkscUJBQXFCLEtBQUssSUFBSSxFQUFFO1lBQ3pDLHNGQUFzRjtZQUN0RiwyRkFBMkY7WUFDM0Ysa0VBQWtFO1lBQ2xFLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUU7YUFBTTtZQUNMLHdGQUF3RjtZQUN4RixJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdDLElBQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFFL0QsV0FBVztnQkFDUCxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFJLGlCQUFpQixTQUFJLFdBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1NBQzdGO1FBRUQsT0FBTztZQUNMLFdBQVcsYUFBQTtZQUNYLGNBQWMsUUFBRSxrQkFBa0IsYUFBbEIsa0JBQWtCLHVCQUFsQixrQkFBa0IsQ0FBRSxPQUFPLG1DQUFJLElBQUk7U0FDcEQsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0Fic29sdXRlRnNQYXRoLCBQYXRoTWFuaXB1bGF0aW9uLCBSZWFkb25seUZpbGVTeXN0ZW19IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2xvZ2dpbmcnO1xuaW1wb3J0IHtwYXJzZVN0YXRlbWVudEZvclVtZE1vZHVsZX0gZnJvbSAnLi4vaG9zdC91bWRfaG9zdCc7XG5pbXBvcnQge3Jlc29sdmVGaWxlV2l0aFBvc3RmaXhlc30gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQge05nY2NDb25maWd1cmF0aW9uLCBOZ2NjRW50cnlQb2ludENvbmZpZ30gZnJvbSAnLi9jb25maWd1cmF0aW9uJztcblxuLyoqXG4gKiBUaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgZm9ybWF0IG9mIGFuIGVudHJ5LXBvaW50LlxuICovXG5leHBvcnQgdHlwZSBFbnRyeVBvaW50Rm9ybWF0ID0gJ2VzbTUnfCdlc20yMDE1J3wndW1kJ3wnY29tbW9uanMnO1xuXG4vKipcbiAqIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IGFuIGVudHJ5LXBvaW50LCBpbmNsdWRpbmcgcGF0aHNcbiAqIHRvIGVhY2ggb2YgdGhlIHBvc3NpYmxlIGVudHJ5LXBvaW50IGZvcm1hdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50cnlQb2ludCBleHRlbmRzIEpzb25PYmplY3Qge1xuICAvKiogVGhlIG5hbWUgb2YgdGhlIGVudHJ5LXBvaW50IChlLmcuIGBAYW5ndWxhci9jb3JlYCBvciBgQGFuZ3VsYXIvY29tbW9uL2h0dHBgKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIHBhdGggdG8gdGhpcyBlbnRyeSBwb2ludC4gKi9cbiAgcGF0aDogQWJzb2x1dGVGc1BhdGg7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoaXMgZW50cnktcG9pbnQgKGUuZy4gYEBhbmd1bGFyL2NvcmVgIG9yXG4gICAqIGBAYW5ndWxhci9jb21tb25gKS5cbiAgICovXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgcGF0aCB0byB0aGUgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoaXMgZW50cnktcG9pbnQuICovXG4gIHBhY2thZ2VQYXRoOiBBYnNvbHV0ZUZzUGF0aDtcbiAgLyoqIFRoZSBwYXJzZWQgcGFja2FnZS5qc29uIGZpbGUgZm9yIHRoaXMgZW50cnktcG9pbnQuICovXG4gIHBhY2thZ2VKc29uOiBFbnRyeVBvaW50UGFja2FnZUpzb247XG4gIC8qKiBUaGUgcGF0aCB0byBhIHR5cGluZ3MgKC5kLnRzKSBmaWxlIGZvciB0aGlzIGVudHJ5LXBvaW50LiAqL1xuICB0eXBpbmdzOiBBYnNvbHV0ZUZzUGF0aDtcbiAgLyoqIElzIHRoaXMgRW50cnlQb2ludCBjb21waWxlZCB3aXRoIHRoZSBBbmd1bGFyIFZpZXcgRW5naW5lIGNvbXBpbGVyPyAqL1xuICBjb21waWxlZEJ5QW5ndWxhcjogYm9vbGVhbjtcbiAgLyoqIFNob3VsZCBuZ2NjIGlnbm9yZSBtaXNzaW5nIGRlcGVuZGVuY2llcyBhbmQgcHJvY2VzcyB0aGlzIGVudHJ5cG9pbnQgYW55d2F5PyAqL1xuICBpZ25vcmVNaXNzaW5nRGVwZW5kZW5jaWVzOiBib29sZWFuO1xuICAvKiogU2hvdWxkIG5nY2MgZ2VuZXJhdGUgZGVlcCByZS1leHBvcnRzIGZvciB0aGlzIGVudHJ5cG9pbnQ/ICovXG4gIGdlbmVyYXRlRGVlcFJlZXhwb3J0czogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgSnNvblByaW1pdGl2ZSA9IHN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxudWxsO1xuZXhwb3J0IHR5cGUgSnNvblZhbHVlID0gSnNvblByaW1pdGl2ZXxKc29uQXJyYXl8SnNvbk9iamVjdHx1bmRlZmluZWQ7XG5leHBvcnQgaW50ZXJmYWNlIEpzb25BcnJheSBleHRlbmRzIEFycmF5PEpzb25WYWx1ZT4ge31cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbk9iamVjdCB7XG4gIFtrZXk6IHN0cmluZ106IEpzb25WYWx1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlSnNvbkZvcm1hdFByb3BlcnRpZXNNYXAge1xuICBicm93c2VyPzogc3RyaW5nO1xuICBmZXNtMjAxNT86IHN0cmluZztcbiAgZmVzbTU/OiBzdHJpbmc7XG4gIGVzMjAxNT86IHN0cmluZzsgIC8vIGlmIGV4aXN0cyB0aGVuIGl0IGlzIGFjdHVhbGx5IEZFU00yMDE1XG4gIGVzbTIwMTU/OiBzdHJpbmc7XG4gIGVzbTU/OiBzdHJpbmc7XG4gIG1haW4/OiBzdHJpbmc7ICAgICAvLyBVTURcbiAgbW9kdWxlPzogc3RyaW5nOyAgIC8vIGlmIGV4aXN0cyB0aGVuIGl0IGlzIGFjdHVhbGx5IEZFU001XG4gIHR5cGVzPzogc3RyaW5nOyAgICAvLyBTeW5vbnltb3VzIHRvIGB0eXBpbmdzYCBwcm9wZXJ0eSAtIHNlZSBodHRwczovL2JpdC5seS8yT2dXcDJIXG4gIHR5cGluZ3M/OiBzdHJpbmc7ICAvLyBUeXBlU2NyaXB0IC5kLnRzIGZpbGVzXG59XG5cbmV4cG9ydCB0eXBlIFBhY2thZ2VKc29uRm9ybWF0UHJvcGVydGllcyA9IGtleW9mIFBhY2thZ2VKc29uRm9ybWF0UHJvcGVydGllc01hcDtcblxuLyoqXG4gKiBUaGUgcHJvcGVydGllcyB0aGF0IG1heSBiZSBsb2FkZWQgZnJvbSB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRyeVBvaW50UGFja2FnZUpzb24gZXh0ZW5kcyBKc29uT2JqZWN0LCBQYWNrYWdlSnNvbkZvcm1hdFByb3BlcnRpZXNNYXAge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIHNjcmlwdHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBfX3Byb2Nlc3NlZF9ieV9pdnlfbmdjY19fPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuZXhwb3J0IHR5cGUgRW50cnlQb2ludEpzb25Qcm9wZXJ0eSA9IEV4Y2x1ZGU8UGFja2FnZUpzb25Gb3JtYXRQcm9wZXJ0aWVzLCAndHlwZXMnfCd0eXBpbmdzJz47XG4vLyBXZSBuZWVkIHRvIGtlZXAgdGhlIGVsZW1lbnRzIG9mIHRoaXMgY29uc3QgYW5kIHRoZSBgRW50cnlQb2ludEpzb25Qcm9wZXJ0eWAgdHlwZSBpbiBzeW5jLlxuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9GT1JNQVRfUFJPUEVSVElFUzogRW50cnlQb2ludEpzb25Qcm9wZXJ0eVtdID1cbiAgICBbJ2Zlc20yMDE1JywgJ2Zlc201JywgJ2VzMjAxNScsICdlc20yMDE1JywgJ2VzbTUnLCAnbWFpbicsICdtb2R1bGUnLCAnYnJvd3NlciddO1xuXG5cbi8qKlxuICogVGhlIHBhdGggZG9lcyBub3QgcmVwcmVzZW50IGFuIGVudHJ5LXBvaW50LCBpLmUuIHRoZXJlIGlzIG5vIHBhY2thZ2UuanNvbiBhdCB0aGUgcGF0aCBhbmQgdGhlcmVcbiAqIGlzIG5vIGNvbmZpZyB0byBmb3JjZSBhbiBlbnRyeS1wb2ludC5cbiAqL1xuZXhwb3J0IGNvbnN0IE5PX0VOVFJZX1BPSU5UID0gJ25vLWVudHJ5LXBvaW50JztcblxuLyoqXG4gKiBUaGUgcGF0aCByZXByZXNlbnRzIGFuIGVudHJ5LXBvaW50IHRoYXQgaXMgYGlnbm9yZWRgIGJ5IGFuIG5nY2MgY29uZmlnLlxuICovXG5leHBvcnQgY29uc3QgSUdOT1JFRF9FTlRSWV9QT0lOVCA9ICdpZ25vcmVkLWVudHJ5LXBvaW50JztcblxuLyoqXG4gKiBUaGUgcGF0aCBoYXMgYSBwYWNrYWdlLmpzb24sIGJ1dCBpdCBpcyBub3QgYSB2YWxpZCBlbnRyeS1wb2ludCBmb3IgbmdjYyBwcm9jZXNzaW5nLlxuICovXG5leHBvcnQgY29uc3QgSU5DT01QQVRJQkxFX0VOVFJZX1BPSU5UID0gJ2luY29tcGF0aWJsZS1lbnRyeS1wb2ludCc7XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiBjYWxsaW5nIGBnZXRFbnRyeVBvaW50SW5mbygpYC5cbiAqXG4gKiBUaGlzIHdpbGwgYmUgYW4gYEVudHJ5UG9pbnRgIG9iamVjdCBpZiBhbiBBbmd1bGFyIGVudHJ5LXBvaW50IHdhcyBpZGVudGlmaWVkO1xuICogT3RoZXJ3aXNlIGl0IHdpbGwgYmUgYSBmbGFnIGluZGljYXRpbmcgb25lIG9mOlxuICogKiBOT19FTlRSWV9QT0lOVCAtIHRoZSBwYXRoIGlzIG5vdCBhbiBlbnRyeS1wb2ludCBvciBuZ2NjIGlzIGNvbmZpZ3VyZWQgdG8gaWdub3JlIGl0XG4gKiAqIElOQ09NUEFUSUJMRV9FTlRSWV9QT0lOVCAtIHRoZSBwYXRoIHdhcyBhIG5vbi1wcm9jZXNzYWJsZSBlbnRyeS1wb2ludCB0aGF0IHNob3VsZCBiZSBzZWFyY2hlZFxuICogZm9yIHN1Yi1lbnRyeS1wb2ludHNcbiAqL1xuZXhwb3J0IHR5cGUgR2V0RW50cnlQb2ludFJlc3VsdCA9XG4gICAgRW50cnlQb2ludHx0eXBlb2YgSUdOT1JFRF9FTlRSWV9QT0lOVHx0eXBlb2YgSU5DT01QQVRJQkxFX0VOVFJZX1BPSU5UfHR5cGVvZiBOT19FTlRSWV9QT0lOVDtcblxuXG4vKipcbiAqIFRyeSB0byBjcmVhdGUgYW4gZW50cnktcG9pbnQgZnJvbSB0aGUgZ2l2ZW4gcGF0aHMgYW5kIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHBhY2thZ2VQYXRoIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBjb250YWluaW5nIG5wbSBwYWNrYWdlXG4gKiBAcGFyYW0gZW50cnlQb2ludFBhdGggdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHBvdGVudGlhbCBlbnRyeS1wb2ludC5cbiAqIEByZXR1cm5zXG4gKiAtIEFuIGVudHJ5LXBvaW50IGlmIGl0IGlzIHZhbGlkIGFuZCBub3QgaWdub3JlZC5cbiAqIC0gYE5PX0VOVFJZX1BPSU5UYCB3aGVuIHRoZXJlIGlzIG5vIHBhY2thZ2UuanNvbiBhdCB0aGUgcGF0aCBhbmQgdGhlcmUgaXMgbm8gY29uZmlnIHRvIGZvcmNlIGFuXG4gKiAgIGVudHJ5LXBvaW50LFxuICogLSBgSUdOT1JFRF9FTlRSWV9QT0lOVGAgd2hlbiB0aGUgZW50cnktcG9pbnQgaXMgaWdub3JlZCBieSBhbiBuZ2NjIGNvbmZpZy5cbiAqIC0gYElOQ09NUEFUSUJMRV9FTlRSWV9QT0lOVGAgd2hlbiB0aGVyZSBpcyBhIHBhY2thZ2UuanNvbiBidXQgaXQgaXMgbm90IGEgdmFsaWQgQW5ndWxhciBjb21waWxlZFxuICogICBlbnRyeS1wb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVudHJ5UG9pbnRJbmZvKFxuICAgIGZzOiBSZWFkb25seUZpbGVTeXN0ZW0sIGNvbmZpZzogTmdjY0NvbmZpZ3VyYXRpb24sIGxvZ2dlcjogTG9nZ2VyLCBwYWNrYWdlUGF0aDogQWJzb2x1dGVGc1BhdGgsXG4gICAgZW50cnlQb2ludFBhdGg6IEFic29sdXRlRnNQYXRoKTogR2V0RW50cnlQb2ludFJlc3VsdCB7XG4gIGNvbnN0IHBhY2thZ2VQYWNrYWdlSnNvblBhdGggPSBmcy5yZXNvbHZlKHBhY2thZ2VQYXRoLCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IGVudHJ5UG9pbnRQYWNrYWdlSnNvblBhdGggPSBmcy5yZXNvbHZlKGVudHJ5UG9pbnRQYXRoLCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IGxvYWRlZFBhY2thZ2VQYWNrYWdlSnNvbiA9IGxvYWRQYWNrYWdlSnNvbihmcywgcGFja2FnZVBhY2thZ2VKc29uUGF0aCk7XG4gIGNvbnN0IGxvYWRlZEVudHJ5UG9pbnRQYWNrYWdlSnNvbiA9IChwYWNrYWdlUGFja2FnZUpzb25QYXRoID09PSBlbnRyeVBvaW50UGFja2FnZUpzb25QYXRoKSA/XG4gICAgICBsb2FkZWRQYWNrYWdlUGFja2FnZUpzb24gOlxuICAgICAgbG9hZFBhY2thZ2VKc29uKGZzLCBlbnRyeVBvaW50UGFja2FnZUpzb25QYXRoKTtcbiAgY29uc3Qge3BhY2thZ2VOYW1lLCBwYWNrYWdlVmVyc2lvbn0gPSBnZXRQYWNrYWdlTmFtZUFuZFZlcnNpb24oXG4gICAgICBmcywgcGFja2FnZVBhdGgsIGxvYWRlZFBhY2thZ2VQYWNrYWdlSnNvbiwgbG9hZGVkRW50cnlQb2ludFBhY2thZ2VKc29uKTtcblxuICBjb25zdCBwYWNrYWdlQ29uZmlnID0gY29uZmlnLmdldFBhY2thZ2VDb25maWcocGFja2FnZU5hbWUsIHBhY2thZ2VQYXRoLCBwYWNrYWdlVmVyc2lvbik7XG4gIGNvbnN0IGVudHJ5UG9pbnRDb25maWcgPSBwYWNrYWdlQ29uZmlnLmVudHJ5UG9pbnRzLmdldChlbnRyeVBvaW50UGF0aCk7XG4gIGxldCBlbnRyeVBvaW50UGFja2FnZUpzb246IEVudHJ5UG9pbnRQYWNrYWdlSnNvbjtcblxuICBpZiAoZW50cnlQb2ludENvbmZpZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFmcy5leGlzdHMoZW50cnlQb2ludFBhY2thZ2VKc29uUGF0aCkpIHtcbiAgICAgIC8vIE5vIGBwYWNrYWdlLmpzb25gIGFuZCBubyBjb25maWcuXG4gICAgICByZXR1cm4gTk9fRU5UUllfUE9JTlQ7XG4gICAgfSBlbHNlIGlmIChsb2FkZWRFbnRyeVBvaW50UGFja2FnZUpzb24gPT09IG51bGwpIHtcbiAgICAgIC8vIGBwYWNrYWdlLmpzb25gIGV4aXN0cyBidXQgY291bGQgbm90IGJlIHBhcnNlZCBhbmQgdGhlcmUgaXMgbm8gcmVkZWVtaW5nIGNvbmZpZy5cbiAgICAgIGxvZ2dlci53YXJuKGBGYWlsZWQgdG8gcmVhZCBlbnRyeSBwb2ludCBpbmZvIGZyb20gaW52YWxpZCAncGFja2FnZS5qc29uJyBmaWxlOiAke1xuICAgICAgICAgIGVudHJ5UG9pbnRQYWNrYWdlSnNvblBhdGh9YCk7XG5cbiAgICAgIHJldHVybiBJTkNPTVBBVElCTEVfRU5UUllfUE9JTlQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudHJ5UG9pbnRQYWNrYWdlSnNvbiA9IGxvYWRlZEVudHJ5UG9pbnRQYWNrYWdlSnNvbjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZW50cnlQb2ludENvbmZpZy5pZ25vcmUgPT09IHRydWUpIHtcbiAgICAvLyBFeHBsaWNpdGx5IGlnbm9yZWQgZW50cnktcG9pbnQuXG4gICAgcmV0dXJuIElHTk9SRURfRU5UUllfUE9JTlQ7XG4gIH0gZWxzZSB7XG4gICAgZW50cnlQb2ludFBhY2thZ2VKc29uID0gbWVyZ2VDb25maWdBbmRQYWNrYWdlSnNvbihcbiAgICAgICAgZnMsIGxvYWRlZEVudHJ5UG9pbnRQYWNrYWdlSnNvbiwgZW50cnlQb2ludENvbmZpZywgcGFja2FnZVBhdGgsIGVudHJ5UG9pbnRQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGluZ3MgPSBlbnRyeVBvaW50UGFja2FnZUpzb24udHlwaW5ncyB8fCBlbnRyeVBvaW50UGFja2FnZUpzb24udHlwZXMgfHxcbiAgICAgIGd1ZXNzVHlwaW5nc0Zyb21QYWNrYWdlSnNvbihmcywgZW50cnlQb2ludFBhdGgsIGVudHJ5UG9pbnRQYWNrYWdlSnNvbik7XG4gIGlmICh0eXBlb2YgdHlwaW5ncyAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBNaXNzaW5nIHRoZSByZXF1aXJlZCBgdHlwaW5nc2AgcHJvcGVydHlcbiAgICByZXR1cm4gSU5DT01QQVRJQkxFX0VOVFJZX1BPSU5UO1xuICB9XG5cbiAgLy8gQW4gZW50cnktcG9pbnQgaXMgYXNzdW1lZCB0byBiZSBjb21waWxlZCBieSBBbmd1bGFyIGlmIHRoZXJlIGlzIGVpdGhlcjpcbiAgLy8gKiBhIGBtZXRhZGF0YS5qc29uYCBmaWxlIG5leHQgdG8gdGhlIHR5cGluZ3MgZW50cnktcG9pbnRcbiAgLy8gKiBhIGN1c3RvbSBjb25maWcgZm9yIHRoaXMgZW50cnktcG9pbnRcbiAgY29uc3QgbWV0YWRhdGFQYXRoID1cbiAgICAgIGZzLnJlc29sdmUoZW50cnlQb2ludFBhdGgsIHR5cGluZ3MucmVwbGFjZSgvXFwuZFxcLnRzJC8sICcnKSArICcubWV0YWRhdGEuanNvbicpO1xuICBjb25zdCBjb21waWxlZEJ5QW5ndWxhciA9IGVudHJ5UG9pbnRDb25maWcgIT09IHVuZGVmaW5lZCB8fCBmcy5leGlzdHMobWV0YWRhdGFQYXRoKTtcblxuICBjb25zdCBlbnRyeVBvaW50SW5mbzogRW50cnlQb2ludCA9IHtcbiAgICBuYW1lOiBlbnRyeVBvaW50UGFja2FnZUpzb24ubmFtZSxcbiAgICBwYXRoOiBlbnRyeVBvaW50UGF0aCxcbiAgICBwYWNrYWdlTmFtZSxcbiAgICBwYWNrYWdlUGF0aCxcbiAgICBwYWNrYWdlSnNvbjogZW50cnlQb2ludFBhY2thZ2VKc29uLFxuICAgIHR5cGluZ3M6IGZzLnJlc29sdmUoZW50cnlQb2ludFBhdGgsIHR5cGluZ3MpLFxuICAgIGNvbXBpbGVkQnlBbmd1bGFyLFxuICAgIGlnbm9yZU1pc3NpbmdEZXBlbmRlbmNpZXM6XG4gICAgICAgIGVudHJ5UG9pbnRDb25maWcgIT09IHVuZGVmaW5lZCA/ICEhZW50cnlQb2ludENvbmZpZy5pZ25vcmVNaXNzaW5nRGVwZW5kZW5jaWVzIDogZmFsc2UsXG4gICAgZ2VuZXJhdGVEZWVwUmVleHBvcnRzOlxuICAgICAgICBlbnRyeVBvaW50Q29uZmlnICE9PSB1bmRlZmluZWQgPyAhIWVudHJ5UG9pbnRDb25maWcuZ2VuZXJhdGVEZWVwUmVleHBvcnRzIDogZmFsc2UsXG4gIH07XG5cbiAgcmV0dXJuIGVudHJ5UG9pbnRJbmZvO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbnRyeVBvaW50KHJlc3VsdDogR2V0RW50cnlQb2ludFJlc3VsdCk6IHJlc3VsdCBpcyBFbnRyeVBvaW50IHtcbiAgcmV0dXJuIHJlc3VsdCAhPT0gTk9fRU5UUllfUE9JTlQgJiYgcmVzdWx0ICE9PSBJTkNPTVBBVElCTEVfRU5UUllfUE9JTlQgJiZcbiAgICAgIHJlc3VsdCAhPT0gSUdOT1JFRF9FTlRSWV9QT0lOVDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcGFja2FnZS5qc29uIHByb3BlcnR5IGludG8gYW4gZW50cnktcG9pbnQgZm9ybWF0LlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY29udmVydCB0byBhIGZvcm1hdC5cbiAqIEByZXR1cm5zIEFuIGVudHJ5LXBvaW50IGZvcm1hdCBvciBgdW5kZWZpbmVkYCBpZiBub25lIG1hdGNoIHRoZSBnaXZlbiBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVudHJ5UG9pbnRGb3JtYXQoXG4gICAgZnM6IFJlYWRvbmx5RmlsZVN5c3RlbSwgZW50cnlQb2ludDogRW50cnlQb2ludCxcbiAgICBwcm9wZXJ0eTogRW50cnlQb2ludEpzb25Qcm9wZXJ0eSk6IEVudHJ5UG9pbnRGb3JtYXR8dW5kZWZpbmVkIHtcbiAgc3dpdGNoIChwcm9wZXJ0eSkge1xuICAgIGNhc2UgJ2Zlc20yMDE1JzpcbiAgICAgIHJldHVybiAnZXNtMjAxNSc7XG4gICAgY2FzZSAnZmVzbTUnOlxuICAgICAgcmV0dXJuICdlc201JztcbiAgICBjYXNlICdlczIwMTUnOlxuICAgICAgcmV0dXJuICdlc20yMDE1JztcbiAgICBjYXNlICdlc20yMDE1JzpcbiAgICAgIHJldHVybiAnZXNtMjAxNSc7XG4gICAgY2FzZSAnZXNtNSc6XG4gICAgICByZXR1cm4gJ2VzbTUnO1xuICAgIGNhc2UgJ2Jyb3dzZXInOlxuICAgICAgY29uc3QgYnJvd3NlckZpbGUgPSBlbnRyeVBvaW50LnBhY2thZ2VKc29uWydicm93c2VyJ107XG4gICAgICBpZiAodHlwZW9mIGJyb3dzZXJGaWxlICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNuaWZmTW9kdWxlRm9ybWF0KGZzLCBmcy5qb2luKGVudHJ5UG9pbnQucGF0aCwgYnJvd3NlckZpbGUpKTtcbiAgICBjYXNlICdtYWluJzpcbiAgICAgIGNvbnN0IG1haW5GaWxlID0gZW50cnlQb2ludC5wYWNrYWdlSnNvblsnbWFpbiddO1xuICAgICAgaWYgKG1haW5GaWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzbmlmZk1vZHVsZUZvcm1hdChmcywgZnMuam9pbihlbnRyeVBvaW50LnBhdGgsIG1haW5GaWxlKSk7XG4gICAgY2FzZSAnbW9kdWxlJzpcbiAgICAgIGNvbnN0IG1vZHVsZUZpbGVQYXRoID0gZW50cnlQb2ludC5wYWNrYWdlSnNvblsnbW9kdWxlJ107XG4gICAgICAvLyBBcyBvZiB2ZXJzaW9uIDEwLCB0aGUgYG1vZHVsZWAgcHJvcGVydHkgaW4gYHBhY2thZ2UuanNvbmAgc2hvdWxkIHBvaW50IHRvXG4gICAgICAvLyB0aGUgRVNNMjAxNSBmb3JtYXQgb3V0cHV0IGFzIHBlciBBbmd1bGFyIFBhY2thZ2UgZm9ybWF0IHNwZWNpZmljYXRpb24uIFRoaXNcbiAgICAgIC8vIG1lYW5zIHRoYXQgdGhlIGBtb2R1bGVgIHByb3BlcnR5IGNhcHR1cmVzIG11bHRpcGxlIGZvcm1hdHMsIGFzIG9sZCBsaWJyYXJpZXNcbiAgICAgIC8vIGJ1aWx0IHdpdGggdGhlIG9sZCBBUEYgY2FuIHN0aWxsIGJlIHByb2Nlc3NlZC4gV2UgZGV0ZWN0IHRoZSBmb3JtYXQgYnkgY2hlY2tpbmdcbiAgICAgIC8vIHRoZSBwYXRocyB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIHBlciBBUEYgc3BlY2lmaWNhdGlvbi5cbiAgICAgIGlmICh0eXBlb2YgbW9kdWxlRmlsZVBhdGggPT09ICdzdHJpbmcnICYmIG1vZHVsZUZpbGVQYXRoLmluY2x1ZGVzKCdlc20yMDE1JykpIHtcbiAgICAgICAgcmV0dXJuIGBlc20yMDE1YDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnZXNtNSc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSB0aGUgSlNPTiBmcm9tIGEgYHBhY2thZ2UuanNvbmAgZmlsZS5cbiAqIEBwYXJhbSBwYWNrYWdlSnNvblBhdGggdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUuXG4gKiBAcmV0dXJucyBKU09OIGZyb20gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUgaWYgaXQgaXMgdmFsaWQsIGBudWxsYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGxvYWRQYWNrYWdlSnNvbihcbiAgICBmczogUmVhZG9ubHlGaWxlU3lzdGVtLCBwYWNrYWdlSnNvblBhdGg6IEFic29sdXRlRnNQYXRoKTogRW50cnlQb2ludFBhY2thZ2VKc29ufG51bGwge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlKHBhY2thZ2VKc29uUGF0aCkpIGFzIEVudHJ5UG9pbnRQYWNrYWdlSnNvbjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gc25pZmZNb2R1bGVGb3JtYXQoXG4gICAgZnM6IFJlYWRvbmx5RmlsZVN5c3RlbSwgc291cmNlRmlsZVBhdGg6IEFic29sdXRlRnNQYXRoKTogRW50cnlQb2ludEZvcm1hdHx1bmRlZmluZWQge1xuICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlRmlsZVdpdGhQb3N0Zml4ZXMoZnMsIHNvdXJjZUZpbGVQYXRoLCBbJycsICcuanMnLCAnL2luZGV4LmpzJ10pO1xuICBpZiAocmVzb2x2ZWRQYXRoID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPVxuICAgICAgdHMuY3JlYXRlU291cmNlRmlsZShzb3VyY2VGaWxlUGF0aCwgZnMucmVhZEZpbGUocmVzb2x2ZWRQYXRoKSwgdHMuU2NyaXB0VGFyZ2V0LkVTNSk7XG4gIGlmIChzb3VyY2VGaWxlLnN0YXRlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAodHMuaXNFeHRlcm5hbE1vZHVsZShzb3VyY2VGaWxlKSkge1xuICAgIHJldHVybiAnZXNtNSc7XG4gIH0gZWxzZSBpZiAocGFyc2VTdGF0ZW1lbnRGb3JVbWRNb2R1bGUoc291cmNlRmlsZS5zdGF0ZW1lbnRzWzBdKSAhPT0gbnVsbCkge1xuICAgIHJldHVybiAndW1kJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJ2NvbW1vbmpzJztcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUNvbmZpZ0FuZFBhY2thZ2VKc29uKFxuICAgIGZzOiBQYXRoTWFuaXB1bGF0aW9uLCBlbnRyeVBvaW50UGFja2FnZUpzb246IEVudHJ5UG9pbnRQYWNrYWdlSnNvbnxudWxsLFxuICAgIGVudHJ5UG9pbnRDb25maWc6IE5nY2NFbnRyeVBvaW50Q29uZmlnLCBwYWNrYWdlUGF0aDogQWJzb2x1dGVGc1BhdGgsXG4gICAgZW50cnlQb2ludFBhdGg6IEFic29sdXRlRnNQYXRoKTogRW50cnlQb2ludFBhY2thZ2VKc29uIHtcbiAgaWYgKGVudHJ5UG9pbnRQYWNrYWdlSnNvbiAhPT0gbnVsbCkge1xuICAgIHJldHVybiB7Li4uZW50cnlQb2ludFBhY2thZ2VKc29uLCAuLi5lbnRyeVBvaW50Q29uZmlnLm92ZXJyaWRlfTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBuYW1lID0gYCR7ZnMuYmFzZW5hbWUocGFja2FnZVBhdGgpfS8ke2ZzLnJlbGF0aXZlKHBhY2thZ2VQYXRoLCBlbnRyeVBvaW50UGF0aCl9YDtcbiAgICByZXR1cm4ge25hbWUsIC4uLmVudHJ5UG9pbnRDb25maWcub3ZlcnJpZGV9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGd1ZXNzVHlwaW5nc0Zyb21QYWNrYWdlSnNvbihcbiAgICBmczogUmVhZG9ubHlGaWxlU3lzdGVtLCBlbnRyeVBvaW50UGF0aDogQWJzb2x1dGVGc1BhdGgsXG4gICAgZW50cnlQb2ludFBhY2thZ2VKc29uOiBFbnRyeVBvaW50UGFja2FnZUpzb24pOiBBYnNvbHV0ZUZzUGF0aHxudWxsIHtcbiAgZm9yIChjb25zdCBwcm9wIG9mIFNVUFBPUlRFRF9GT1JNQVRfUFJPUEVSVElFUykge1xuICAgIGNvbnN0IGZpZWxkID0gZW50cnlQb2ludFBhY2thZ2VKc29uW3Byb3BdO1xuICAgIGlmICh0eXBlb2YgZmllbGQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBTb21lIGNyYXp5IHBhY2thZ2VzIGhhdmUgdGhpbmdzIGxpa2UgYXJyYXlzIGluIHRoZXNlIGZpZWxkcyFcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCByZWxhdGl2ZVR5cGluZ3NQYXRoID0gZmllbGQucmVwbGFjZSgvXFwuanMkLywgJy5kLnRzJyk7XG4gICAgY29uc3QgdHlwaW5nc1BhdGggPSBmcy5yZXNvbHZlKGVudHJ5UG9pbnRQYXRoLCByZWxhdGl2ZVR5cGluZ3NQYXRoKTtcbiAgICBpZiAoZnMuZXhpc3RzKHR5cGluZ3NQYXRoKSkge1xuICAgICAgcmV0dXJuIHR5cGluZ3NQYXRoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBGaW5kIG9yIGluZmVyIHRoZSBuYW1lIGFuZCB2ZXJzaW9uIG9mIGEgcGFja2FnZS5cbiAqXG4gKiAtIFRoZSBuYW1lIGlzIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSBgbmFtZWAgcHJvcGVydHkgb2YgdGhlIHBhY2thZ2UncyBvciB0aGUgZW50cnktcG9pbnQnc1xuICogICBgcGFja2FnZS5qc29uYCBmaWxlIChpZiBhdmFpbGFibGUpIG9yIGluZmVycmVkIGZyb20gdGhlIHBhY2thZ2UncyBwYXRoLlxuICogLSBUaGUgdmVyc2lvbiBpcyByZWFkIG9mZiBvZiB0aGUgYHZlcnNpb25gIHByb3BlcnR5IG9mIHRoZSBwYWNrYWdlJ3MgYHBhY2thZ2UuanNvbmAgZmlsZSAoaWZcbiAqICAgYXZhaWxhYmxlKS5cbiAqXG4gKiBAcGFyYW0gZnMgVGhlIGZpbGUtc3lzdGVtIHRvIHVzZSBmb3IgcHJvY2Vzc2luZyBgcGFja2FnZVBhdGhgLlxuICogQHBhcmFtIHBhY2thZ2VQYXRoIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBwYWNrYWdlLlxuICogQHBhcmFtIHBhY2thZ2VQYWNrYWdlSnNvbiB0aGUgcGFyc2VkIGBwYWNrYWdlLmpzb25gIG9mIHRoZSBwYWNrYWdlIChpZiBhdmFpbGFibGUpLlxuICogQHBhcmFtIGVudHJ5UG9pbnRQYWNrYWdlSnNvbiB0aGUgcGFyc2VkIGBwYWNrYWdlLmpzb25gIG9mIGFuIGVudHJ5LXBvaW50IChpZiBhdmFpbGFibGUpLlxuICogQHJldHVybnMgdGhlIGNvbXB1dGVkIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UuXG4gKi9cbmZ1bmN0aW9uIGdldFBhY2thZ2VOYW1lQW5kVmVyc2lvbihcbiAgICBmczogUGF0aE1hbmlwdWxhdGlvbiwgcGFja2FnZVBhdGg6IEFic29sdXRlRnNQYXRoLFxuICAgIHBhY2thZ2VQYWNrYWdlSnNvbjogRW50cnlQb2ludFBhY2thZ2VKc29ufG51bGwsXG4gICAgZW50cnlQb2ludFBhY2thZ2VKc29uOiBFbnRyeVBvaW50UGFja2FnZUpzb258XG4gICAgbnVsbCk6IHtwYWNrYWdlTmFtZTogc3RyaW5nLCBwYWNrYWdlVmVyc2lvbjogc3RyaW5nfG51bGx9IHtcbiAgbGV0IHBhY2thZ2VOYW1lOiBzdHJpbmc7XG5cbiAgaWYgKHBhY2thZ2VQYWNrYWdlSnNvbiAhPT0gbnVsbCkge1xuICAgIC8vIFdlIGhhdmUgYSB2YWxpZCBgcGFja2FnZS5qc29uYCBmb3IgdGhlIHBhY2thZ2U6IEdldCB0aGUgcGFja2FnZSBuYW1lIGZyb20gdGhhdC5cbiAgICBwYWNrYWdlTmFtZSA9IHBhY2thZ2VQYWNrYWdlSnNvbi5uYW1lO1xuICB9IGVsc2UgaWYgKGVudHJ5UG9pbnRQYWNrYWdlSnNvbiAhPT0gbnVsbCkge1xuICAgIC8vIFdlIGhhdmUgYSB2YWxpZCBgcGFja2FnZS5qc29uYCBmb3IgdGhlIGVudHJ5LXBvaW50OiBHZXQgdGhlIHBhY2thZ2UgbmFtZSBmcm9tIHRoYXQuXG4gICAgLy8gVGhpcyBtaWdodCBiZSBhIHNlY29uZGFyeSBlbnRyeS1wb2ludCwgc28gbWFrZSBzdXJlIHdlIG9ubHkga2VlcCB0aGUgbWFpbiBwYWNrYWdlJ3MgbmFtZVxuICAgIC8vIChlLmcuIG9ubHkga2VlcCBgQGFuZ3VsYXIvY29tbW9uYCBmcm9tIGBAYW5ndWxhci9jb21tb24vaHR0cGApLlxuICAgIHBhY2thZ2VOYW1lID0gL14oPzpAW14vXStcXC8pP1teL10qLy5leGVjKGVudHJ5UG9pbnRQYWNrYWdlSnNvbi5uYW1lKSFbMF07XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIHZhbGlkIGBwYWNrYWdlLmpzb25gOiBJbmZlciB0aGUgcGFja2FnZSBuYW1lIGZyb20gdGhlIHBhY2thZ2UncyBwYXRoLlxuICAgIGNvbnN0IGxhc3RTZWdtZW50ID0gZnMuYmFzZW5hbWUocGFja2FnZVBhdGgpO1xuICAgIGNvbnN0IHNlY29uZExhc3RTZWdtZW50ID0gZnMuYmFzZW5hbWUoZnMuZGlybmFtZShwYWNrYWdlUGF0aCkpO1xuXG4gICAgcGFja2FnZU5hbWUgPVxuICAgICAgICBzZWNvbmRMYXN0U2VnbWVudC5zdGFydHNXaXRoKCdAJykgPyBgJHtzZWNvbmRMYXN0U2VnbWVudH0vJHtsYXN0U2VnbWVudH1gIDogbGFzdFNlZ21lbnQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhY2thZ2VOYW1lLFxuICAgIHBhY2thZ2VWZXJzaW9uOiBwYWNrYWdlUGFja2FnZUpzb24/LnZlcnNpb24gPz8gbnVsbCxcbiAgfTtcbn1cbiJdfQ==
@@ -3,6 +3,7 @@ import { AbsoluteFsPath, FileSystem, PathSegment } from '../../../src/ngtsc/file
3
3
  import { Logger } from '../../../src/ngtsc/logging';
4
4
  import { EntryPointWithDependencies } from '../dependencies/dependency_host';
5
5
  import { NgccConfiguration } from './configuration';
6
+ import { PackageJsonFormatProperties } from './entry_point';
6
7
  /**
7
8
  * Manages reading and writing a manifest file that contains a list of all the entry-points that
8
9
  * were found below a given basePath.
@@ -73,3 +74,7 @@ export interface EntryPointManifestFile {
73
74
  lockFileHash: string;
74
75
  entryPointPaths: EntryPointPaths[];
75
76
  }
77
+ /** The JSON format of the entrypoint properties. */
78
+ export declare type NewEntryPointPropertiesMap = {
79
+ [Property in PackageJsonFormatProperties as `${Property}_ivy_ngcc`]?: string;
80
+ };
@@ -204,4 +204,4 @@
204
204
  }(EntryPointManifest));
205
205
  exports.InvalidatingEntryPointManifest = InvalidatingEntryPointManifest;
206
206
  });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlfcG9pbnRfbWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcGFja2FnZXMvZW50cnlfcG9pbnRfbWFuaWZlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILGlDQUFrQztJQU1sQyxxRkFBNEM7SUFFNUMsbUZBQThEO0lBRTlEOzs7Ozs7T0FNRztJQUNIO1FBQ0UsNEJBQW9CLEVBQWMsRUFBVSxNQUF5QixFQUFVLE1BQWM7WUFBekUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtZQUFVLFdBQU0sR0FBTixNQUFNLENBQW1CO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFHLENBQUM7UUFFakc7Ozs7Ozs7Ozs7Ozs7OztXQWVHO1FBQ0gseURBQTRCLEdBQTVCLFVBQTZCLFFBQXdCOztZQUNuRCxJQUFJO2dCQUNGLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssY0FBYyxFQUFFO29CQUNqRCxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFFRCxJQUFNLFlBQVksR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDakMsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBRUQsSUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hFLElBQUksb0JBQW9CLEtBQUssSUFBSSxFQUFFO29CQUNqQyxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFFSyxJQUFBLEtBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZ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LENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ2pFO2lCQUNGOzs7Ozs7Ozs7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDSCx5QkFBQztJQUFELENBQUMsQUE5SUQsSUE4SUM7SUE5SVksZ0RBQWtCO0lBZ0ovQjs7Ozs7OztPQU9HO0lBQ0g7UUFBb0QsMERBQWtCO1FBQXRFOztRQUlBLENBQUM7UUFIQyxxRUFBNEIsR0FBNUIsVUFBNkIsU0FBeUI7WUFDcEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0gscUNBQUM7SUFBRCxDQUFDLEFBSkQsQ0FBb0Qsa0JBQWtCLEdBSXJFO0lBSlksd0VBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2h9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIEZpbGVTeXN0ZW0sIFBhdGhTZWdtZW50fSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7RW50cnlQb2ludFdpdGhEZXBlbmRlbmNpZXN9IGZyb20gJy4uL2RlcGVuZGVuY2llcy9kZXBlbmRlbmN5X2hvc3QnO1xuXG5pbXBvcnQge05HQ0NfVkVSU0lPTn0gZnJvbSAnLi9idWlsZF9tYXJrZXInO1xuaW1wb3J0IHtOZ2NjQ29uZmlndXJhdGlvbn0gZnJvbSAnLi9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7Z2V0RW50cnlQb2ludEluZm8sIGlzRW50cnlQb2ludH0gZnJvbSAnLi9lbnRyeV9wb2ludCc7XG5cbi8qKlxuICogTWFuYWdlcyByZWFkaW5nIGFuZCB3cml0aW5nIGEgbWFuaWZlc3QgZmlsZSB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBhbGwgdGhlIGVudHJ5LXBvaW50cyB0aGF0XG4gKiB3ZXJlIGZvdW5kIGJlbG93IGEgZ2l2ZW4gYmFzZVBhdGguXG4gKlxuICogVGhpcyBpcyBhIHN1cGVyLXNldCBvZiB0aGUgZW50cnktcG9pbnRzIHRoYXQgYXJlIGFjdHVhbGx5IHByb2Nlc3NlZCBmb3IgYSBnaXZlbiBydW4gb2YgbmdjYyxcbiAqIHNpbmNlIHNvbWUgbWF5IGFscmVhZHkgYmUgcHJvY2Vzc2VkLCBvciBleGNsdWRlZCBpZiB0aGV5IGRvIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnRyeVBvaW50TWFuaWZlc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZzOiBGaWxlU3lzdGVtLCBwcml2YXRlIGNvbmZpZzogTmdjY0NvbmZpZ3VyYXRpb24sIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIpIHt9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBnZXQgdGhlIGVudHJ5LXBvaW50IGluZm8gZnJvbSBhIG1hbmlmZXN0IGZpbGUgZm9yIHRoZSBnaXZlbiBgYmFzZVBhdGhgIGlmIGl0IGV4aXN0cyBhbmRcbiAgICogaXMgbm90IG91dCBvZiBkYXRlLlxuICAgKlxuICAgKiBSZWFzb25zIGZvciB0aGUgbWFuaWZlc3QgdG8gYmUgb3V0IG9mIGRhdGUgYXJlOlxuICAgKlxuICAgKiAqIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0XG4gICAqICogdGhlIG5nY2MgdmVyc2lvbiBoYXMgY2hhbmdlZFxuICAgKiAqIHRoZSBwYWNrYWdlIGxvY2stZmlsZSAoaS5lLiB5YXJuLmxvY2sgb3IgcGFja2FnZS1sb2NrLmpzb24pIGhhcyBjaGFuZ2VkXG4gICAqICogdGhlIHByb2plY3QgY29uZmlndXJhdGlvbiBoYXMgY2hhbmdlZFxuICAgKiAqIG9uZSBvciBtb3JlIGVudHJ5LXBvaW50cyBpbiB0aGUgbWFuaWZlc3QgYXJlIG5vdCB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0gYmFzZVBhdGggVGhlIHBhdGggdGhhdCB3b3VsZCBjb250YWluIHRoZSBlbnRyeS1wb2ludHMgYW5kIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKiBAcmV0dXJucyBhbiBhcnJheSBvZiBlbnRyeS1wb2ludCBpbmZvcm1hdGlvbiBmb3IgYWxsIGVudHJ5LXBvaW50cyBmb3VuZCBiZWxvdyB0aGUgZ2l2ZW5cbiAgICogYGJhc2VQYXRoYCBvciBgbnVsbGAgaWYgdGhlIG1hbmlmZXN0IHdhcyBvdXQgb2YgZGF0ZS5cbiAgICovXG4gIHJlYWRFbnRyeVBvaW50c1VzaW5nTWFuaWZlc3QoYmFzZVBhdGg6IEFic29sdXRlRnNQYXRoKTogRW50cnlQb2ludFdpdGhEZXBlbmRlbmNpZXNbXXxudWxsIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuZnMuYmFzZW5hbWUoYmFzZVBhdGgpICE9PSAnbm9kZV9tb2R1bGVzJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFuaWZlc3RQYXRoID0gdGhpcy5nZXRFbnRyeVBvaW50TWFuaWZlc3RQYXRoKGJhc2VQYXRoKTtcbiAgICAgIGlmICghdGhpcy5mcy5leGlzdHMobWFuaWZlc3RQYXRoKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29tcHV0ZWRMb2NrRmlsZUhhc2ggPSB0aGlzLmNvbXB1dGVMb2NrRmlsZUhhc2goYmFzZVBhdGgpO1xuICAgICAgaWYgKGNvbXB1dGVkTG9ja0ZpbGVIYXNoID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7bmdjY1ZlcnNpb24sIGNvbmZpZ0ZpbGVIYXNoLCBsb2NrRmlsZUhhc2gsIGVudHJ5UG9pbnRQYXRoc30gPVxuICAgICAgICAgIEpTT04ucGFyc2UodGhpcy5mcy5yZWFkRmlsZShtYW5pZmVzdFBhdGgpKSBhcyBFbnRyeVBvaW50TWFuaWZlc3RGaWxlO1xuICAgICAgaWYgKG5nY2NWZXJzaW9uICE9PSBOR0NDX1ZFUlNJT04gfHwgY29uZmlnRmlsZUhhc2ggIT09IHRoaXMuY29uZmlnLmhhc2ggfHxcbiAgICAgICAgICBsb2NrRmlsZUhhc2ggIT09IGNvbXB1dGVkTG9ja0ZpbGVIYXNoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgRW50cnktcG9pbnQgbWFuaWZlc3QgZm91bmQgZm9yICR7XG4gICAgICAgICAgYmFzZVBhdGh9IHNvIGxvYWRpbmcgZW50cnktcG9pbnQgaW5mb3JtYXRpb24gZGlyZWN0bHkuYCk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICBjb25zdCBlbnRyeVBvaW50czogRW50cnlQb2ludFdpdGhEZXBlbmRlbmNpZXNbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdFxuICAgICAgICAgICAgICAgW3BhY2thZ2VQYXRoLCBlbnRyeVBvaW50UGF0aCwgZGVwZW5kZW5jeVBhdGhzID0gW10sIG1pc3NpbmdQYXRocyA9IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcEltcG9ydFBhdGhzID0gW11dIG9mIGVudHJ5UG9pbnRQYXRocykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRFbnRyeVBvaW50SW5mbyhcbiAgICAgICAgICAgIHRoaXMuZnMsIHRoaXMuY29uZmlnLCB0aGlzLmxvZ2dlciwgdGhpcy5mcy5yZXNvbHZlKGJhc2VQYXRoLCBwYWNrYWdlUGF0aCksXG4gICAgICAgICAgICB0aGlzLmZzLnJlc29sdmUoYmFzZVBhdGgsIGVudHJ5UG9pbnRQYXRoKSk7XG4gICAgICAgIGlmICghaXNFbnRyeVBvaW50KHJlc3VsdCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBlbnRyeS1wb2ludCBtYW5pZmVzdCBhdCAke1xuICAgICAgICAgICAgICBtYW5pZmVzdFBhdGh9IGNvbnRhaW5lZCBhbiBpbnZhbGlkIHBhaXIgb2YgcGFja2FnZSBwYXRoczogWyR7cGFja2FnZVBhdGh9LCAke1xuICAgICAgICAgICAgICBlbnRyeVBvaW50UGF0aH1dYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW50cnlQb2ludHMucHVzaCh7XG4gICAgICAgICAgICBlbnRyeVBvaW50OiByZXN1bHQsXG4gICAgICAgICAgICBkZXBJbmZvOiB7XG4gICAgICAgICAgICAgIGRlcGVuZGVuY2llczogbmV3IFNldChkZXBlbmRlbmN5UGF0aHMpLFxuICAgICAgICAgICAgICBtaXNzaW5nOiBuZXcgU2V0KG1pc3NpbmdQYXRocyksXG4gICAgICAgICAgICAgIGRlZXBJbXBvcnRzOiBuZXcgU2V0KGRlZXBJbXBvcnRQYXRocyksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gTWF0aC5yb3VuZCgoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSkgLyAxMDApIC8gMTA7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgUmVhZGluZyBlbnRyeS1wb2ludHMgdXNpbmcgdGhlIG1hbmlmZXN0IGVudHJpZXMgdG9vayAke2R1cmF0aW9ufXMuYCk7XG4gICAgICByZXR1cm4gZW50cnlQb2ludHM7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICBgVW5hYmxlIHRvIHJlYWQgdGhlIGVudHJ5LXBvaW50IG1hbmlmZXN0IGZvciAke2Jhc2VQYXRofTpcXG5gLCBlLnN0YWNrIHx8IGUudG9TdHJpbmcoKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgYSBtYW5pZmVzdCBmaWxlIGF0IHRoZSBnaXZlbiBgYmFzZVBhdGhgLlxuICAgKlxuICAgKiBUaGUgbWFuaWZlc3QgaW5jbHVkZXMgdGhlIGN1cnJlbnQgbmdjYyB2ZXJzaW9uIGFuZCBoYXNoZXMgb2YgdGhlIHBhY2thZ2UgbG9jay1maWxlIGFuZCBjdXJyZW50XG4gICAqIHByb2plY3QgY29uZmlnLiBUaGVzZSB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgbWFuaWZlc3QgZmlsZSBpcyBvdXQgb2YgZGF0ZS4gU2VlXG4gICAqIGByZWFkRW50cnlQb2ludHNVc2luZ01hbmlmZXN0KClgLlxuICAgKlxuICAgKiBAcGFyYW0gYmFzZVBhdGggVGhlIHBhdGggd2hlcmUgdGhlIG1hbmlmZXN0IGZpbGUgaXMgdG8gYmUgd3JpdHRlbi5cbiAgICogQHBhcmFtIGVudHJ5UG9pbnRzIEEgY29sbGVjdGlvbiBvZiBlbnRyeS1wb2ludHMgdG8gcmVjb3JkIGluIHRoZSBtYW5pZmVzdC5cbiAgICovXG4gIHdyaXRlRW50cnlQb2ludE1hbmlmZXN0KGJhc2VQYXRoOiBBYnNvbHV0ZUZzUGF0aCwgZW50cnlQb2ludHM6IEVudHJ5UG9pbnRXaXRoRGVwZW5kZW5jaWVzW10pOlxuICAgICAgdm9pZCB7XG4gICAgaWYgKHRoaXMuZnMuYmFzZW5hbWUoYmFzZVBhdGgpICE9PSAnbm9kZV9tb2R1bGVzJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2tGaWxlSGFzaCA9IHRoaXMuY29tcHV0ZUxvY2tGaWxlSGFzaChiYXNlUGF0aCk7XG4gICAgaWYgKGxvY2tGaWxlSGFzaCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtYW5pZmVzdDogRW50cnlQb2ludE1hbmlmZXN0RmlsZSA9IHtcbiAgICAgIG5nY2NWZXJzaW9uOiBOR0NDX1ZFUlNJT04sXG4gICAgICBjb25maWdGaWxlSGFzaDogdGhpcy5jb25maWcuaGFzaCxcbiAgICAgIGxvY2tGaWxlSGFzaDogbG9ja0ZpbGVIYXNoLFxuICAgICAgZW50cnlQb2ludFBhdGhzOiBlbnRyeVBvaW50cy5tYXAoZSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5UG9pbnRQYXRoczogRW50cnlQb2ludFBhdGhzID0gW1xuICAgICAgICAgIHRoaXMuZnMucmVsYXRpdmUoYmFzZVBhdGgsIGUuZW50cnlQb2ludC5wYWNrYWdlUGF0aCksXG4gICAgICAgICAgdGhpcy5mcy5yZWxhdGl2ZShiYXNlUGF0aCwgZS5lbnRyeVBvaW50LnBhdGgpLFxuICAgICAgICBdO1xuICAgICAgICAvLyBPbmx5IGFkZCBkZXBJbmZvIGFycmF5cyBpZiBuZWVkZWQuXG4gICAgICAgIGlmIChlLmRlcEluZm8uZGVwZW5kZW5jaWVzLnNpemUgPiAwKSB7XG4gICAgICAgICAgZW50cnlQb2ludFBhdGhzWzJdID0gQXJyYXkuZnJvbShlLmRlcEluZm8uZGVwZW5kZW5jaWVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChlLmRlcEluZm8ubWlzc2luZy5zaXplID4gMCB8fCBlLmRlcEluZm8uZGVlcEltcG9ydHMuc2l6ZSA+IDApIHtcbiAgICAgICAgICBlbnRyeVBvaW50UGF0aHNbMl0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZS5kZXBJbmZvLm1pc3Npbmcuc2l6ZSA+IDApIHtcbiAgICAgICAgICBlbnRyeVBvaW50UGF0aHNbM10gPSBBcnJheS5mcm9tKGUuZGVwSW5mby5taXNzaW5nKTtcbiAgICAgICAgfSBlbHNlIGlmIChlLmRlcEluZm8uZGVlcEltcG9ydHMuc2l6ZSA+IDApIHtcbiAgICAgICAgICBlbnRyeVBvaW50UGF0aHNbM10gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZS5kZXBJbmZvLmRlZXBJbXBvcnRzLnNpemUgPiAwKSB7XG4gICAgICAgICAgZW50cnlQb2ludFBhdGhzWzRdID0gQXJyYXkuZnJvbShlLmRlcEluZm8uZGVlcEltcG9ydHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnRyeVBvaW50UGF0aHM7XG4gICAgICB9KSxcbiAgICB9O1xuICAgIHRoaXMuZnMud3JpdGVGaWxlKHRoaXMuZ2V0RW50cnlQb2ludE1hbmlmZXN0UGF0aChiYXNlUGF0aCksIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0KSk7XG4gIH1cblxuICBwcml2YXRlIGdldEVudHJ5UG9pbnRNYW5pZmVzdFBhdGgoYmFzZVBhdGg6IEFic29sdXRlRnNQYXRoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVzb2x2ZShiYXNlUGF0aCwgJ19fbmdjY19lbnRyeV9wb2ludHNfXy5qc29uJyk7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVMb2NrRmlsZUhhc2goYmFzZVBhdGg6IEFic29sdXRlRnNQYXRoKTogc3RyaW5nfG51bGwge1xuICAgIGNvbnN0IGRpcmVjdG9yeSA9IHRoaXMuZnMuZGlybmFtZShiYXNlUGF0aCk7XG4gICAgZm9yIChjb25zdCBsb2NrRmlsZU5hbWUgb2YgWyd5YXJuLmxvY2snLCAncGFja2FnZS1sb2NrLmpzb24nXSkge1xuICAgICAgY29uc3QgbG9ja0ZpbGVQYXRoID0gdGhpcy5mcy5yZXNvbHZlKGRpcmVjdG9yeSwgbG9ja0ZpbGVOYW1lKTtcbiAgICAgIGlmICh0aGlzLmZzLmV4aXN0cyhsb2NrRmlsZVBhdGgpKSB7XG4gICAgICAgIGNvbnN0IGxvY2tGaWxlQ29udGVudHMgPSB0aGlzLmZzLnJlYWRGaWxlKGxvY2tGaWxlUGF0aCk7XG4gICAgICAgIHJldHVybiBjcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUobG9ja0ZpbGVDb250ZW50cykuZGlnZXN0KCdoZXgnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgRW50cnlQb2ludE1hbmlmZXN0YCB0aGF0IGNhbiBiZSB1c2VkIHRvIGludmFsaWRhdGUgdGhlXG4gKiBjdXJyZW50IG1hbmlmZXN0IGZpbGUuXG4gKlxuICogSXQgYWx3YXlzIHJldHVybnMgYG51bGxgIGZyb20gdGhlIGByZWFkRW50cnlQb2ludHNVc2luZ01hbmlmZXN0KClgIG1ldGhvZCwgd2hpY2ggZm9yY2VzIGEgbmV3XG4gKiBtYW5pZmVzdCB0byBiZSBjcmVhdGVkLCB3aGljaCB3aWxsIG92ZXJ3cml0ZSB0aGUgY3VycmVudCBmaWxlIHdoZW4gYHdyaXRlRW50cnlQb2ludE1hbmlmZXN0KClgXG4gKiBpcyBjYWxsZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkYXRpbmdFbnRyeVBvaW50TWFuaWZlc3QgZXh0ZW5kcyBFbnRyeVBvaW50TWFuaWZlc3Qge1xuICByZWFkRW50cnlQb2ludHNVc2luZ01hbmlmZXN0KF9iYXNlUGF0aDogQWJzb2x1dGVGc1BhdGgpOiBFbnRyeVBvaW50V2l0aERlcGVuZGVuY2llc1tdfG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEVudHJ5UG9pbnRQYXRocyA9IFtcbiAgc3RyaW5nLFxuICBzdHJpbmcsXG4gIEFycmF5PEFic29sdXRlRnNQYXRoPj8sXG4gIEFycmF5PEFic29sdXRlRnNQYXRofFBhdGhTZWdtZW50Pj8sXG4gIEFycmF5PEFic29sdXRlRnNQYXRoPj8sXG5dO1xuXG4vKipcbiAqIFRoZSBKU09OIGZvcm1hdCBvZiB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGlzIHdyaXR0ZW4gdG8gZGlzay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRyeVBvaW50TWFuaWZlc3RGaWxlIHtcbiAgbmdjY1ZlcnNpb246IHN0cmluZztcbiAgY29uZmlnRmlsZUhhc2g6IHN0cmluZztcbiAgbG9ja0ZpbGVIYXNoOiBzdHJpbmc7XG4gIGVudHJ5UG9pbnRQYXRoczogRW50cnlQb2ludFBhdGhzW107XG59XG4iXX0=
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlfcG9pbnRfbWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcGFja2FnZXMvZW50cnlfcG9pbnRfbWFuaWZlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILGlDQUFrQztJQU1sQyxxRkFBNEM7SUFFNUMsbUZBQTJGO0lBRTNGOzs7Ozs7T0FNRztJQUNIO1FBQ0UsNEJBQW9CLEVBQWMsRUFBVSxNQUF5QixFQUFVLE1BQWM7WUFBekUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtZQUFVLFdBQU0sR0FBTixNQUFNLENBQW1CO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFHLENBQUM7UUFFakc7Ozs7Ozs7Ozs7Ozs7OztXQWVHO1FBQ0gseURBQTRCLEdBQTVCLFVBQTZCLFFBQXdCOztZQUNuRCxJQUFJO2dCQUNGLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssY0FBYyxFQUFFO29CQUNqRCxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFFRCxJQUFNLFlBQVksR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDakMsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBRUQsSUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hFLElBQUksb0JBQW9CLEtBQUssSUFBSSxFQUFFO29CQUNqQyxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFFSyxJQUFBLEtBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZ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LENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ2pFO2lCQUNGOzs7Ozs7Ozs7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDSCx5QkFBQztJQUFELENBQUMsQUE5SUQsSUE4SUM7SUE5SVksZ0RBQWtCO0lBZ0ovQjs7Ozs7OztPQU9HO0lBQ0g7UUFBb0QsMERBQWtCO1FBQXRFOztRQUlBLENBQUM7UUFIQyxxRUFBNEIsR0FBNUIsVUFBNkIsU0FBeUI7WUFDcEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0gscUNBQUM7SUFBRCxDQUFDLEFBSkQsQ0FBb0Qsa0JBQWtCLEdBSXJFO0lBSlksd0VBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2h9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIEZpbGVTeXN0ZW0sIFBhdGhTZWdtZW50fSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7RW50cnlQb2ludFdpdGhEZXBlbmRlbmNpZXN9IGZyb20gJy4uL2RlcGVuZGVuY2llcy9kZXBlbmRlbmN5X2hvc3QnO1xuXG5pbXBvcnQge05HQ0NfVkVSU0lPTn0gZnJvbSAnLi9idWlsZF9tYXJrZXInO1xuaW1wb3J0IHtOZ2NjQ29uZmlndXJhdGlvbn0gZnJvbSAnLi9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7Z2V0RW50cnlQb2ludEluZm8sIGlzRW50cnlQb2ludCwgUGFja2FnZUpzb25Gb3JtYXRQcm9wZXJ0aWVzfSBmcm9tICcuL2VudHJ5X3BvaW50JztcblxuLyoqXG4gKiBNYW5hZ2VzIHJlYWRpbmcgYW5kIHdyaXRpbmcgYSBtYW5pZmVzdCBmaWxlIHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIGFsbCB0aGUgZW50cnktcG9pbnRzIHRoYXRcbiAqIHdlcmUgZm91bmQgYmVsb3cgYSBnaXZlbiBiYXNlUGF0aC5cbiAqXG4gKiBUaGlzIGlzIGEgc3VwZXItc2V0IG9mIHRoZSBlbnRyeS1wb2ludHMgdGhhdCBhcmUgYWN0dWFsbHkgcHJvY2Vzc2VkIGZvciBhIGdpdmVuIHJ1biBvZiBuZ2NjLFxuICogc2luY2Ugc29tZSBtYXkgYWxyZWFkeSBiZSBwcm9jZXNzZWQsIG9yIGV4Y2x1ZGVkIGlmIHRoZXkgZG8gbm90IGhhdmUgdGhlIHJlcXVpcmVkIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudHJ5UG9pbnRNYW5pZmVzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnM6IEZpbGVTeXN0ZW0sIHByaXZhdGUgY29uZmlnOiBOZ2NjQ29uZmlndXJhdGlvbiwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcikge31cblxuICAvKipcbiAgICogVHJ5IHRvIGdldCB0aGUgZW50cnktcG9pbnQgaW5mbyBmcm9tIGEgbWFuaWZlc3QgZmlsZSBmb3IgdGhlIGdpdmVuIGBiYXNlUGF0aGAgaWYgaXQgZXhpc3RzIGFuZFxuICAgKiBpcyBub3Qgb3V0IG9mIGRhdGUuXG4gICAqXG4gICAqIFJlYXNvbnMgZm9yIHRoZSBtYW5pZmVzdCB0byBiZSBvdXQgb2YgZGF0ZSBhcmU6XG4gICAqXG4gICAqICogdGhlIGZpbGUgZG9lcyBub3QgZXhpc3RcbiAgICogKiB0aGUgbmdjYyB2ZXJzaW9uIGhhcyBjaGFuZ2VkXG4gICAqICogdGhlIHBhY2thZ2UgbG9jay1maWxlIChpLmUuIHlhcm4ubG9jayBvciBwYWNrYWdlLWxvY2suanNvbikgaGFzIGNoYW5nZWRcbiAgICogKiB0aGUgcHJvamVjdCBjb25maWd1cmF0aW9uIGhhcyBjaGFuZ2VkXG4gICAqICogb25lIG9yIG1vcmUgZW50cnktcG9pbnRzIGluIHRoZSBtYW5pZmVzdCBhcmUgbm90IHZhbGlkXG4gICAqXG4gICAqIEBwYXJhbSBiYXNlUGF0aCBUaGUgcGF0aCB0aGF0IHdvdWxkIGNvbnRhaW4gdGhlIGVudHJ5LXBvaW50cyBhbmQgdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqIEByZXR1cm5zIGFuIGFycmF5IG9mIGVudHJ5LXBvaW50IGluZm9ybWF0aW9uIGZvciBhbGwgZW50cnktcG9pbnRzIGZvdW5kIGJlbG93IHRoZSBnaXZlblxuICAgKiBgYmFzZVBhdGhgIG9yIGBudWxsYCBpZiB0aGUgbWFuaWZlc3Qgd2FzIG91dCBvZiBkYXRlLlxuICAgKi9cbiAgcmVhZEVudHJ5UG9pbnRzVXNpbmdNYW5pZmVzdChiYXNlUGF0aDogQWJzb2x1dGVGc1BhdGgpOiBFbnRyeVBvaW50V2l0aERlcGVuZGVuY2llc1tdfG51bGwge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5mcy5iYXNlbmFtZShiYXNlUGF0aCkgIT09ICdub2RlX21vZHVsZXMnKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYW5pZmVzdFBhdGggPSB0aGlzLmdldEVudHJ5UG9pbnRNYW5pZmVzdFBhdGgoYmFzZVBhdGgpO1xuICAgICAgaWYgKCF0aGlzLmZzLmV4aXN0cyhtYW5pZmVzdFBhdGgpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21wdXRlZExvY2tGaWxlSGFzaCA9IHRoaXMuY29tcHV0ZUxvY2tGaWxlSGFzaChiYXNlUGF0aCk7XG4gICAgICBpZiAoY29tcHV0ZWRMb2NrRmlsZUhhc2ggPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHtuZ2NjVmVyc2lvbiwgY29uZmlnRmlsZUhhc2gsIGxvY2tGaWxlSGFzaCwgZW50cnlQb2ludFBhdGhzfSA9XG4gICAgICAgICAgSlNPTi5wYXJzZSh0aGlzLmZzLnJlYWRGaWxlKG1hbmlmZXN0UGF0aCkpIGFzIEVudHJ5UG9pbnRNYW5pZmVzdEZpbGU7XG4gICAgICBpZiAobmdjY1ZlcnNpb24gIT09IE5HQ0NfVkVSU0lPTiB8fCBjb25maWdGaWxlSGFzaCAhPT0gdGhpcy5jb25maWcuaGFzaCB8fFxuICAgICAgICAgIGxvY2tGaWxlSGFzaCAhPT0gY29tcHV0ZWRMb2NrRmlsZUhhc2gpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBFbnRyeS1wb2ludCBtYW5pZmVzdCBmb3VuZCBmb3IgJHtcbiAgICAgICAgICBiYXNlUGF0aH0gc28gbG9hZGluZyBlbnRyeS1wb2ludCBpbmZvcm1hdGlvbiBkaXJlY3RseS5gKTtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgIGNvbnN0IGVudHJ5UG9pbnRzOiBFbnRyeVBvaW50V2l0aERlcGVuZGVuY2llc1tdID0gW107XG4gICAgICBmb3IgKGNvbnN0XG4gICAgICAgICAgICAgICBbcGFja2FnZVBhdGgsIGVudHJ5UG9pbnRQYXRoLCBkZXBlbmRlbmN5UGF0aHMgPSBbXSwgbWlzc2luZ1BhdGhzID0gW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwSW1wb3J0UGF0aHMgPSBbXV0gb2YgZW50cnlQb2ludFBhdGhzKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEVudHJ5UG9pbnRJbmZvKFxuICAgICAgICAgICAgdGhpcy5mcywgdGhpcy5jb25maWcsIHRoaXMubG9nZ2VyLCB0aGlzLmZzLnJlc29sdmUoYmFzZVBhdGgsIHBhY2thZ2VQYXRoKSxcbiAgICAgICAgICAgIHRoaXMuZnMucmVzb2x2ZShiYXNlUGF0aCwgZW50cnlQb2ludFBhdGgpKTtcbiAgICAgICAgaWYgKCFpc0VudHJ5UG9pbnQocmVzdWx0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGVudHJ5LXBvaW50IG1hbmlmZXN0IGF0ICR7XG4gICAgICAgICAgICAgIG1hbmlmZXN0UGF0aH0gY29udGFpbmVkIGFuIGludmFsaWQgcGFpciBvZiBwYWNrYWdlIHBhdGhzOiBbJHtwYWNrYWdlUGF0aH0sICR7XG4gICAgICAgICAgICAgIGVudHJ5UG9pbnRQYXRofV1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbnRyeVBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgIGVudHJ5UG9pbnQ6IHJlc3VsdCxcbiAgICAgICAgICAgIGRlcEluZm86IHtcbiAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBuZXcgU2V0KGRlcGVuZGVuY3lQYXRocyksXG4gICAgICAgICAgICAgIG1pc3Npbmc6IG5ldyBTZXQobWlzc2luZ1BhdGhzKSxcbiAgICAgICAgICAgICAgZGVlcEltcG9ydHM6IG5ldyBTZXQoZGVlcEltcG9ydFBhdGhzKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgZHVyYXRpb24gPSBNYXRoLnJvdW5kKChEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSAvIDEwMCkgLyAxMDtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBSZWFkaW5nIGVudHJ5LXBvaW50cyB1c2luZyB0aGUgbWFuaWZlc3QgZW50cmllcyB0b29rICR7ZHVyYXRpb259cy5gKTtcbiAgICAgIHJldHVybiBlbnRyeVBvaW50cztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICAgIGBVbmFibGUgdG8gcmVhZCB0aGUgZW50cnktcG9pbnQgbWFuaWZlc3QgZm9yICR7YmFzZVBhdGh9OlxcbmAsIGUuc3RhY2sgfHwgZS50b1N0cmluZygpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSBhIG1hbmlmZXN0IGZpbGUgYXQgdGhlIGdpdmVuIGBiYXNlUGF0aGAuXG4gICAqXG4gICAqIFRoZSBtYW5pZmVzdCBpbmNsdWRlcyB0aGUgY3VycmVudCBuZ2NjIHZlcnNpb24gYW5kIGhhc2hlcyBvZiB0aGUgcGFja2FnZSBsb2NrLWZpbGUgYW5kIGN1cnJlbnRcbiAgICogcHJvamVjdCBjb25maWcuIFRoZXNlIHdpbGwgYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBtYW5pZmVzdCBmaWxlIGlzIG91dCBvZiBkYXRlLiBTZWVcbiAgICogYHJlYWRFbnRyeVBvaW50c1VzaW5nTWFuaWZlc3QoKWAuXG4gICAqXG4gICAqIEBwYXJhbSBiYXNlUGF0aCBUaGUgcGF0aCB3aGVyZSB0aGUgbWFuaWZlc3QgZmlsZSBpcyB0byBiZSB3cml0dGVuLlxuICAgKiBAcGFyYW0gZW50cnlQb2ludHMgQSBjb2xsZWN0aW9uIG9mIGVudHJ5LXBvaW50cyB0byByZWNvcmQgaW4gdGhlIG1hbmlmZXN0LlxuICAgKi9cbiAgd3JpdGVFbnRyeVBvaW50TWFuaWZlc3QoYmFzZVBhdGg6IEFic29sdXRlRnNQYXRoLCBlbnRyeVBvaW50czogRW50cnlQb2ludFdpdGhEZXBlbmRlbmNpZXNbXSk6XG4gICAgICB2b2lkIHtcbiAgICBpZiAodGhpcy5mcy5iYXNlbmFtZShiYXNlUGF0aCkgIT09ICdub2RlX21vZHVsZXMnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9ja0ZpbGVIYXNoID0gdGhpcy5jb21wdXRlTG9ja0ZpbGVIYXNoKGJhc2VQYXRoKTtcbiAgICBpZiAobG9ja0ZpbGVIYXNoID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1hbmlmZXN0OiBFbnRyeVBvaW50TWFuaWZlc3RGaWxlID0ge1xuICAgICAgbmdjY1ZlcnNpb246IE5HQ0NfVkVSU0lPTixcbiAgICAgIGNvbmZpZ0ZpbGVIYXNoOiB0aGlzLmNvbmZpZy5oYXNoLFxuICAgICAgbG9ja0ZpbGVIYXNoOiBsb2NrRmlsZUhhc2gsXG4gICAgICBlbnRyeVBvaW50UGF0aHM6IGVudHJ5UG9pbnRzLm1hcChlID0+IHtcbiAgICAgICAgY29uc3QgZW50cnlQb2ludFBhdGhzOiBFbnRyeVBvaW50UGF0aHMgPSBbXG4gICAgICAgICAgdGhpcy5mcy5yZWxhdGl2ZShiYXNlUGF0aCwgZS5lbnRyeVBvaW50LnBhY2thZ2VQYXRoKSxcbiAgICAgICAgICB0aGlzLmZzLnJlbGF0aXZlKGJhc2VQYXRoLCBlLmVudHJ5UG9pbnQucGF0aCksXG4gICAgICAgIF07XG4gICAgICAgIC8vIE9ubHkgYWRkIGRlcEluZm8gYXJyYXlzIGlmIG5lZWRlZC5cbiAgICAgICAgaWYgKGUuZGVwSW5mby5kZXBlbmRlbmNpZXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICBlbnRyeVBvaW50UGF0aHNbMl0gPSBBcnJheS5mcm9tKGUuZGVwSW5mby5kZXBlbmRlbmNpZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGUuZGVwSW5mby5taXNzaW5nLnNpemUgPiAwIHx8IGUuZGVwSW5mby5kZWVwSW1wb3J0cy5zaXplID4gMCkge1xuICAgICAgICAgIGVudHJ5UG9pbnRQYXRoc1syXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlLmRlcEluZm8ubWlzc2luZy5zaXplID4gMCkge1xuICAgICAgICAgIGVudHJ5UG9pbnRQYXRoc1szXSA9IEFycmF5LmZyb20oZS5kZXBJbmZvLm1pc3NpbmcpO1xuICAgICAgICB9IGVsc2UgaWYgKGUuZGVwSW5mby5kZWVwSW1wb3J0cy5zaXplID4gMCkge1xuICAgICAgICAgIGVudHJ5UG9pbnRQYXRoc1szXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlLmRlcEluZm8uZGVlcEltcG9ydHMuc2l6ZSA+IDApIHtcbiAgICAgICAgICBlbnRyeVBvaW50UGF0aHNbNF0gPSBBcnJheS5mcm9tKGUuZGVwSW5mby5kZWVwSW1wb3J0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5UG9pbnRQYXRocztcbiAgICAgIH0pLFxuICAgIH07XG4gICAgdGhpcy5mcy53cml0ZUZpbGUodGhpcy5nZXRFbnRyeVBvaW50TWFuaWZlc3RQYXRoKGJhc2VQYXRoKSwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW50cnlQb2ludE1hbmlmZXN0UGF0aChiYXNlUGF0aDogQWJzb2x1dGVGc1BhdGgpIHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZXNvbHZlKGJhc2VQYXRoLCAnX19uZ2NjX2VudHJ5X3BvaW50c19fLmpzb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUxvY2tGaWxlSGFzaChiYXNlUGF0aDogQWJzb2x1dGVGc1BhdGgpOiBzdHJpbmd8bnVsbCB7XG4gICAgY29uc3QgZGlyZWN0b3J5ID0gdGhpcy5mcy5kaXJuYW1lKGJhc2VQYXRoKTtcbiAgICBmb3IgKGNvbnN0IGxvY2tGaWxlTmFtZSBvZiBbJ3lhcm4ubG9jaycsICdwYWNrYWdlLWxvY2suanNvbiddKSB7XG4gICAgICBjb25zdCBsb2NrRmlsZVBhdGggPSB0aGlzLmZzLnJlc29sdmUoZGlyZWN0b3J5LCBsb2NrRmlsZU5hbWUpO1xuICAgICAgaWYgKHRoaXMuZnMuZXhpc3RzKGxvY2tGaWxlUGF0aCkpIHtcbiAgICAgICAgY29uc3QgbG9ja0ZpbGVDb250ZW50cyA9IHRoaXMuZnMucmVhZEZpbGUobG9ja0ZpbGVQYXRoKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUhhc2goJ21kNScpLnVwZGF0ZShsb2NrRmlsZUNvbnRlbnRzKS5kaWdlc3QoJ2hleCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBFbnRyeVBvaW50TWFuaWZlc3RgIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW52YWxpZGF0ZSB0aGVcbiAqIGN1cnJlbnQgbWFuaWZlc3QgZmlsZS5cbiAqXG4gKiBJdCBhbHdheXMgcmV0dXJucyBgbnVsbGAgZnJvbSB0aGUgYHJlYWRFbnRyeVBvaW50c1VzaW5nTWFuaWZlc3QoKWAgbWV0aG9kLCB3aGljaCBmb3JjZXMgYSBuZXdcbiAqIG1hbmlmZXN0IHRvIGJlIGNyZWF0ZWQsIHdoaWNoIHdpbGwgb3ZlcndyaXRlIHRoZSBjdXJyZW50IGZpbGUgd2hlbiBgd3JpdGVFbnRyeVBvaW50TWFuaWZlc3QoKWBcbiAqIGlzIGNhbGxlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRhdGluZ0VudHJ5UG9pbnRNYW5pZmVzdCBleHRlbmRzIEVudHJ5UG9pbnRNYW5pZmVzdCB7XG4gIHJlYWRFbnRyeVBvaW50c1VzaW5nTWFuaWZlc3QoX2Jhc2VQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEVudHJ5UG9pbnRXaXRoRGVwZW5kZW5jaWVzW118bnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRW50cnlQb2ludFBhdGhzID0gW1xuICBzdHJpbmcsXG4gIHN0cmluZyxcbiAgQXJyYXk8QWJzb2x1dGVGc1BhdGg+PyxcbiAgQXJyYXk8QWJzb2x1dGVGc1BhdGh8UGF0aFNlZ21lbnQ+PyxcbiAgQXJyYXk8QWJzb2x1dGVGc1BhdGg+Pyxcbl07XG5cbi8qKlxuICogVGhlIEpTT04gZm9ybWF0IG9mIHRoZSBtYW5pZmVzdCBmaWxlIHRoYXQgaXMgd3JpdHRlbiB0byBkaXNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudHJ5UG9pbnRNYW5pZmVzdEZpbGUge1xuICBuZ2NjVmVyc2lvbjogc3RyaW5nO1xuICBjb25maWdGaWxlSGFzaDogc3RyaW5nO1xuICBsb2NrRmlsZUhhc2g6IHN0cmluZztcbiAgZW50cnlQb2ludFBhdGhzOiBFbnRyeVBvaW50UGF0aHNbXTtcbn1cblxuXG4vKiogVGhlIEpTT04gZm9ybWF0IG9mIHRoZSBlbnRyeXBvaW50IHByb3BlcnRpZXMuICovXG5leHBvcnQgdHlwZSBOZXdFbnRyeVBvaW50UHJvcGVydGllc01hcCA9IHtcbiAgW1Byb3BlcnR5IGluIFBhY2thZ2VKc29uRm9ybWF0UHJvcGVydGllcyBhcyBgJHtQcm9wZXJ0eX1faXZ5X25nY2NgXT86IHN0cmluZztcbn07XG4iXX0=
@@ -77,4 +77,4 @@
77
77
  }());
78
78
  exports.BackupFileCleaner = BackupFileCleaner;
79
79
  });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW5pbmdfc3RyYXRlZ2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy93cml0aW5nL2NsZWFuaW5nL2NsZWFuaW5nX3N0cmF0ZWdpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsMkVBQXdHO0lBQ3hHLHFGQUE2RDtJQUM3RCxvR0FBOEQ7SUFDOUQsa0hBQThEO0lBRTlELCtFQUF5QztJQVV6Qzs7O09BR0c7SUFDSDtRQUNFLDRCQUFvQixFQUFjO1lBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFHLENBQUM7UUFDdEMscUNBQVEsR0FBUixVQUFTLEtBQXFCLEVBQUUsUUFBcUI7WUFDbkQsT0FBTyxRQUFRLEtBQUssY0FBYyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxrQ0FBSyxHQUFMLFVBQU0sSUFBb0IsRUFBRSxTQUFzQjtZQUNoRCxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSwrQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsT0FBSSxDQUFDLENBQUM7YUFDdEU7UUFDSCxDQUFDO1FBQ0gseUJBQUM7SUFBRCxDQUFDLEFBWEQsSUFXQztJQVhZLGdEQUFrQjtJQWEvQjs7T0FFRztJQUNIO1FBQ0UsOEJBQW9CLEVBQWM7WUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQUcsQ0FBQztRQUN0Qyx1Q0FBUSxHQUFSLFVBQVMsSUFBb0IsRUFBRSxRQUFxQjtZQUNsRCxPQUFPLFFBQVEsS0FBSyw0Q0FBYyxJQUFJLHdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELG9DQUFLLEdBQUwsVUFBTSxJQUFvQixFQUFFLFNBQXNCO1lBQ2hELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDSCwyQkFBQztJQUFELENBQUMsQUFSRCxJQVFDO0lBUlksb0RBQW9CO0lBVWpDOzs7T0FHRztJQUNIO1FBQ0UsMkJBQW9CLEVBQWM7WUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQUcsQ0FBQztRQUN0QyxvQ0FBUSxHQUFSLFVBQVMsSUFBb0IsRUFBRSxRQUFxQjtZQUNsRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLDRDQUFxQjtnQkFDdEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsMEJBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLDRDQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsaUNBQUssR0FBTCxVQUFNLElBQW9CLEVBQUUsU0FBc0I7WUFDaEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLDBCQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyw0Q0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUNILHdCQUFDO0lBQUQsQ0FBQyxBQVRELElBU0M7SUFUWSw4Q0FBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7YWJzb2x1dGVGcm9tLCBBYnNvbHV0ZUZzUGF0aCwgRmlsZVN5c3RlbSwgUGF0aFNlZ21lbnR9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge2NsZWFuUGFja2FnZUpzb259IGZyb20gJy4uLy4uL3BhY2thZ2VzL2J1aWxkX21hcmtlcic7XG5pbXBvcnQge05HQ0NfQkFDS1VQX0VYVEVOU0lPTn0gZnJvbSAnLi4vaW5fcGxhY2VfZmlsZV93cml0ZXInO1xuaW1wb3J0IHtOR0NDX0RJUkVDVE9SWX0gZnJvbSAnLi4vbmV3X2VudHJ5X3BvaW50X2ZpbGVfd3JpdGVyJztcblxuaW1wb3J0IHtpc0xvY2FsRGlyZWN0b3J5fSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gZXh0ZW5kIHRoZSBjbGVhbmluZyBzdHJhdGVnaWVzIG9mIHRoZSBgUGFja2FnZUNsZWFuZXJgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsZWFuaW5nU3RyYXRlZ3kge1xuICBjYW5DbGVhbihwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgYmFzZW5hbWU6IFBhdGhTZWdtZW50KTogYm9vbGVhbjtcbiAgY2xlYW4ocGF0aDogQWJzb2x1dGVGc1BhdGgsIGJhc2VuYW1lOiBQYXRoU2VnbWVudCk6IHZvaWQ7XG59XG5cbi8qKlxuICogQSBDbGVhbmluZ1N0cmF0ZWd5IHRoYXQgcmV2ZXJ0cyBjaGFuZ2VzIHRvIHBhY2thZ2UuanNvbiBmaWxlcyBieSByZW1vdmluZyB0aGUgYnVpbGQgbWFya2VyIGFuZFxuICogb3RoZXIgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhY2thZ2VKc29uQ2xlYW5lciBpbXBsZW1lbnRzIENsZWFuaW5nU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZzOiBGaWxlU3lzdGVtKSB7fVxuICBjYW5DbGVhbihfcGF0aDogQWJzb2x1dGVGc1BhdGgsIGJhc2VuYW1lOiBQYXRoU2VnbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBiYXNlbmFtZSA9PT0gJ3BhY2thZ2UuanNvbic7XG4gIH1cbiAgY2xlYW4ocGF0aDogQWJzb2x1dGVGc1BhdGgsIF9iYXNlbmFtZTogUGF0aFNlZ21lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UodGhpcy5mcy5yZWFkRmlsZShwYXRoKSk7XG4gICAgaWYgKGNsZWFuUGFja2FnZUpzb24ocGFja2FnZUpzb24pKSB7XG4gICAgICB0aGlzLmZzLndyaXRlRmlsZShwYXRoLCBgJHtKU09OLnN0cmluZ2lmeShwYWNrYWdlSnNvbiwgbnVsbCwgMil9XFxuYCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBDbGVhbmluZ1N0cmF0ZWd5IHRoYXQgcmVtb3ZlcyB0aGUgZXh0cmEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgZ2VuZXJhdGVkIGVudHJ5LXBvaW50IGZvcm1hdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ2NjRGlyZWN0b3J5Q2xlYW5lciBpbXBsZW1lbnRzIENsZWFuaW5nU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZzOiBGaWxlU3lzdGVtKSB7fVxuICBjYW5DbGVhbihwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgYmFzZW5hbWU6IFBhdGhTZWdtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGJhc2VuYW1lID09PSBOR0NDX0RJUkVDVE9SWSAmJiBpc0xvY2FsRGlyZWN0b3J5KHRoaXMuZnMsIHBhdGgpO1xuICB9XG4gIGNsZWFuKHBhdGg6IEFic29sdXRlRnNQYXRoLCBfYmFzZW5hbWU6IFBhdGhTZWdtZW50KTogdm9pZCB7XG4gICAgdGhpcy5mcy5yZW1vdmVEZWVwKHBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogQSBDbGVhbmluZ1N0cmF0ZWd5IHRoYXQgcmV2ZXJ0cyBmaWxlcyB0aGF0IHdlcmUgb3ZlcndyaXR0ZW4gYW5kIHJlbW92ZXMgdGhlIGJhY2t1cCBmaWxlcyB0aGF0XG4gKiBuZ2NjIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYWNrdXBGaWxlQ2xlYW5lciBpbXBsZW1lbnRzIENsZWFuaW5nU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZzOiBGaWxlU3lzdGVtKSB7fVxuICBjYW5DbGVhbihwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgYmFzZW5hbWU6IFBhdGhTZWdtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXh0bmFtZShiYXNlbmFtZSkgPT09IE5HQ0NfQkFDS1VQX0VYVEVOU0lPTiAmJlxuICAgICAgICB0aGlzLmZzLmV4aXN0cyhhYnNvbHV0ZUZyb20ocGF0aC5yZXBsYWNlKE5HQ0NfQkFDS1VQX0VYVEVOU0lPTiwgJycpKSk7XG4gIH1cbiAgY2xlYW4ocGF0aDogQWJzb2x1dGVGc1BhdGgsIF9iYXNlbmFtZTogUGF0aFNlZ21lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmZzLm1vdmVGaWxlKHBhdGgsIGFic29sdXRlRnJvbShwYXRoLnJlcGxhY2UoTkdDQ19CQUNLVVBfRVhURU5TSU9OLCAnJykpKTtcbiAgfVxufVxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW5pbmdfc3RyYXRlZ2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy93cml0aW5nL2NsZWFuaW5nL2NsZWFuaW5nX3N0cmF0ZWdpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsMkVBQXdHO0lBQ3hHLHFGQUE2RDtJQUU3RCxvR0FBOEQ7SUFDOUQsa0hBQThEO0lBRTlELCtFQUF5QztJQVV6Qzs7O09BR0c7SUFDSDtRQUNFLDRCQUFvQixFQUFjO1lBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFHLENBQUM7UUFDdEMscUNBQVEsR0FBUixVQUFTLEtBQXFCLEVBQUUsUUFBcUI7WUFDbkQsT0FBTyxRQUFRLEtBQUssY0FBYyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxrQ0FBSyxHQUFMLFVBQU0sSUFBb0IsRUFBRSxTQUFzQjtZQUNoRCxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUEwQixDQUFDO1lBQ2hGLElBQUksK0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQUksQ0FBQyxDQUFDO2FBQ3RFO1FBQ0gsQ0FBQztRQUNILHlCQUFDO0lBQUQsQ0FBQyxBQVhELElBV0M7SUFYWSxnREFBa0I7SUFhL0I7O09BRUc7SUFDSDtRQUNFLDhCQUFvQixFQUFjO1lBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFHLENBQUM7UUFDdEMsdUNBQVEsR0FBUixVQUFTLElBQW9CLEVBQUUsUUFBcUI7WUFDbEQsT0FBTyxRQUFRLEtBQUssNENBQWMsSUFBSSx3QkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxvQ0FBSyxHQUFMLFVBQU0sSUFBb0IsRUFBRSxTQUFzQjtZQUNoRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0gsMkJBQUM7SUFBRCxDQUFDLEFBUkQsSUFRQztJQVJZLG9EQUFvQjtJQVVqQzs7O09BR0c7SUFDSDtRQUNFLDJCQUFvQixFQUFjO1lBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFHLENBQUM7UUFDdEMsb0NBQVEsR0FBUixVQUFTLElBQW9CLEVBQUUsUUFBcUI7WUFDbEQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyw0Q0FBcUI7Z0JBQ3RELElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLDBCQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyw0Q0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELGlDQUFLLEdBQUwsVUFBTSxJQUFvQixFQUFFLFNBQXNCO1lBQ2hELElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSwwQkFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsNENBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7UUFDSCx3QkFBQztJQUFELENBQUMsQUFURCxJQVNDO0lBVFksOENBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge2Fic29sdXRlRnJvbSwgQWJzb2x1dGVGc1BhdGgsIEZpbGVTeXN0ZW0sIFBhdGhTZWdtZW50fSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtjbGVhblBhY2thZ2VKc29ufSBmcm9tICcuLi8uLi9wYWNrYWdlcy9idWlsZF9tYXJrZXInO1xuaW1wb3J0IHtFbnRyeVBvaW50UGFja2FnZUpzb259IGZyb20gJy4uLy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50JztcbmltcG9ydCB7TkdDQ19CQUNLVVBfRVhURU5TSU9OfSBmcm9tICcuLi9pbl9wbGFjZV9maWxlX3dyaXRlcic7XG5pbXBvcnQge05HQ0NfRElSRUNUT1JZfSBmcm9tICcuLi9uZXdfZW50cnlfcG9pbnRfZmlsZV93cml0ZXInO1xuXG5pbXBvcnQge2lzTG9jYWxEaXJlY3Rvcnl9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEltcGxlbWVudCB0aGlzIGludGVyZmFjZSB0byBleHRlbmQgdGhlIGNsZWFuaW5nIHN0cmF0ZWdpZXMgb2YgdGhlIGBQYWNrYWdlQ2xlYW5lcmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xlYW5pbmdTdHJhdGVneSB7XG4gIGNhbkNsZWFuKHBhdGg6IEFic29sdXRlRnNQYXRoLCBiYXNlbmFtZTogUGF0aFNlZ21lbnQpOiBib29sZWFuO1xuICBjbGVhbihwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgYmFzZW5hbWU6IFBhdGhTZWdtZW50KTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIENsZWFuaW5nU3RyYXRlZ3kgdGhhdCByZXZlcnRzIGNoYW5nZXMgdG8gcGFja2FnZS5qc29uIGZpbGVzIGJ5IHJlbW92aW5nIHRoZSBidWlsZCBtYXJrZXIgYW5kXG4gKiBvdGhlciBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgY2xhc3MgUGFja2FnZUpzb25DbGVhbmVyIGltcGxlbWVudHMgQ2xlYW5pbmdTdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnM6IEZpbGVTeXN0ZW0pIHt9XG4gIGNhbkNsZWFuKF9wYXRoOiBBYnNvbHV0ZUZzUGF0aCwgYmFzZW5hbWU6IFBhdGhTZWdtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGJhc2VuYW1lID09PSAncGFja2FnZS5qc29uJztcbiAgfVxuICBjbGVhbihwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgX2Jhc2VuYW1lOiBQYXRoU2VnbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZSh0aGlzLmZzLnJlYWRGaWxlKHBhdGgpKSBhcyBFbnRyeVBvaW50UGFja2FnZUpzb247XG4gICAgaWYgKGNsZWFuUGFja2FnZUpzb24ocGFja2FnZUpzb24pKSB7XG4gICAgICB0aGlzLmZzLndyaXRlRmlsZShwYXRoLCBgJHtKU09OLnN0cmluZ2lmeShwYWNrYWdlSnNvbiwgbnVsbCwgMil9XFxuYCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBDbGVhbmluZ1N0cmF0ZWd5IHRoYXQgcmVtb3ZlcyB0aGUgZXh0cmEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgZ2VuZXJhdGVkIGVudHJ5LXBvaW50IGZvcm1hdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ2NjRGlyZWN0b3J5Q2xlYW5lciBpbXBsZW1lbnRzIENsZWFuaW5nU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZzOiBGaWxlU3lzdGVtKSB7fVxuICBjYW5DbGVhbihwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgYmFzZW5hbWU6IFBhdGhTZWdtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGJhc2VuYW1lID09PSBOR0NDX0RJUkVDVE9SWSAmJiBpc0xvY2FsRGlyZWN0b3J5KHRoaXMuZnMsIHBhdGgpO1xuICB9XG4gIGNsZWFuKHBhdGg6IEFic29sdXRlRnNQYXRoLCBfYmFzZW5hbWU6IFBhdGhTZWdtZW50KTogdm9pZCB7XG4gICAgdGhpcy5mcy5yZW1vdmVEZWVwKHBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogQSBDbGVhbmluZ1N0cmF0ZWd5IHRoYXQgcmV2ZXJ0cyBmaWxlcyB0aGF0IHdlcmUgb3ZlcndyaXR0ZW4gYW5kIHJlbW92ZXMgdGhlIGJhY2t1cCBmaWxlcyB0aGF0XG4gKiBuZ2NjIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYWNrdXBGaWxlQ2xlYW5lciBpbXBsZW1lbnRzIENsZWFuaW5nU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZzOiBGaWxlU3lzdGVtKSB7fVxuICBjYW5DbGVhbihwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgYmFzZW5hbWU6IFBhdGhTZWdtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXh0bmFtZShiYXNlbmFtZSkgPT09IE5HQ0NfQkFDS1VQX0VYVEVOU0lPTiAmJlxuICAgICAgICB0aGlzLmZzLmV4aXN0cyhhYnNvbHV0ZUZyb20ocGF0aC5yZXBsYWNlKE5HQ0NfQkFDS1VQX0VYVEVOU0lPTiwgJycpKSk7XG4gIH1cbiAgY2xlYW4ocGF0aDogQWJzb2x1dGVGc1BhdGgsIF9iYXNlbmFtZTogUGF0aFNlZ21lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmZzLm1vdmVGaWxlKHBhdGgsIGFic29sdXRlRnJvbShwYXRoLnJlcGxhY2UoTkdDQ19CQUNLVVBfRVhURU5TSU9OLCAnJykpKTtcbiAgfVxufVxuIl19
@@ -112,7 +112,7 @@
112
112
  var sourceMap = JSON.parse(this.fs.readFile(sourceMapPath));
113
113
  var newSourceMapPath = (newSrcPath + '.map');
114
114
  var relativePath = this.fs.relative(this.fs.dirname(newSourceMapPath), this.fs.dirname(sourceMapPath));
115
- sourceMap['sourceRoot'] = this.fs.join(relativePath, sourceMap['sourceRoot'] || '.');
115
+ sourceMap.sourceRoot = this.fs.join(relativePath, sourceMap.sourceRoot || '.');
116
116
  this.fs.ensureDir(this.fs.dirname(newSourceMapPath));
117
117
  this.fs.writeFile(newSourceMapPath, JSON.stringify(sourceMap));
118
118
  }
@@ -211,4 +211,4 @@
211
211
  }(in_place_file_writer_1.InPlaceFileWriter));
212
212
  exports.NewEntryPointFileWriter = NewEntryPointFileWriter;
213
213
  });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3X2VudHJ5X3BvaW50X2ZpbGVfd3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL3dyaXRpbmcvbmV3X2VudHJ5X3BvaW50X2ZpbGVfd3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7SUFDQTs7Ozs7O09BTUc7SUFDSCwyRUFBdUg7SUFFdkgsa0ZBQWlFO0lBS2pFLG9HQUF5RDtJQUc1QyxRQUFBLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDaEMsUUFBQSx1QkFBdUIsR0FBRyxXQUFXLENBQUM7SUFFbkQ7Ozs7Ozs7T0FPRztJQUNIO1FBQTZDLG1EQUFpQjtRQUM1RCxpQ0FDSSxFQUFjLEVBQUUsTUFBYyxFQUFFLHVCQUFnQyxFQUN4RCxjQUFrQztZQUY5QyxZQUdFLGtCQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLENBQUMsU0FDM0M7WUFGVyxvQkFBYyxHQUFkLGNBQWMsQ0FBb0I7O1FBRTlDLENBQUM7UUFFRCw2Q0FBVyxHQUFYLFVBQ0ksTUFBd0IsRUFBRSxnQkFBK0IsRUFDekQsZ0JBQTBDO1lBRjlDLGlCQVNDO1lBTkMsdURBQXVEO1lBQ3ZELElBQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDckMsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxzQkFBYyxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM5RSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLFVBQVUs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QTNCLFVBQTRCLFVBQXNCLEVBQUUsZ0JBQTBDOztZQUM1RixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2pDLHVDQUF1QztnQkFDdkMsT0FBTzthQUNSO1lBRUQsSUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUMzQyxJQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRXRFLHdFQUF3RTtZQUN4RSw0RkFBNEY7WUFDNUYsVUFBVTtZQUNWLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7O2dCQUVsRCxLQUE2QixJQUFBLHFCQUFBLGlCQUFBLGdCQUFnQixDQUFBLGtEQUFBLGdGQUFFO29CQUExQyxJQUFNLGNBQWMsNkJBQUE7b0JBQ3ZCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFHLGNBQWMsR0FBRywrQkFBeUIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUM5RTs7Ozs7Ozs7O1lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNILDhCQUFDO0lBQUQsQ0FBQyxBQTFLRCxDQUE2Qyx3Q0FBaUIsR0EwSzdEO0lBMUtZLDBEQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge2Fic29sdXRlRnJvbVNvdXJjZUZpbGUsIEFic29sdXRlRnNQYXRoLCBGaWxlU3lzdGVtLCBpc0xvY2FsUmVsYXRpdmVQYXRofSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7aXNEdHNQYXRofSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5pbXBvcnQge0VudHJ5UG9pbnQsIEVudHJ5UG9pbnRKc29uUHJvcGVydHl9IGZyb20gJy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50JztcbmltcG9ydCB7RW50cnlQb2ludEJ1bmRsZX0gZnJvbSAnLi4vcGFja2FnZXMvZW50cnlfcG9pbnRfYnVuZGxlJztcbmltcG9ydCB7RmlsZVRvV3JpdGV9IGZyb20gJy4uL3JlbmRlcmluZy91dGlscyc7XG5cbmltcG9ydCB7SW5QbGFjZUZpbGVXcml0ZXJ9IGZyb20gJy4vaW5fcGxhY2VfZmlsZV93cml0ZXInO1xuaW1wb3J0IHtQYWNrYWdlSnNvblVwZGF0ZXJ9IGZyb20gJy4vcGFja2FnZV9qc29uX3VwZGF0ZXInO1xuXG5leHBvcnQgY29uc3QgTkdDQ19ESVJFQ1RPUlkgPSAnX19pdnlfbmdjY19fJztcbmV4cG9ydCBjb25zdCBOR0NDX1BST1BFUlRZX0VYVEVOU0lPTiA9ICdfaXZ5X25nY2MnO1xuXG4vKipcbiAqIFRoaXMgRmlsZVdyaXRlciBjcmVhdGVzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZW50cnktcG9pbnQsIHRoZW4gd3JpdGVzIHRoZSB0cmFuc2Zvcm1lZFxuICogZmlsZXMgb250byB0aGUgZmlsZXMgaW4gdGhpcyBjb3B5LCBhbmQgZmluYWxseSB1cGRhdGVzIHRoZSBwYWNrYWdlLmpzb24gd2l0aCBhIG5ld1xuICogZW50cnktcG9pbnQgZm9ybWF0IHByb3BlcnR5IHRoYXQgcG9pbnRzIHRvIHRoaXMgbmV3IGVudHJ5LXBvaW50LlxuICpcbiAqIElmIHRoZXJlIGFyZSB0cmFuc2Zvcm1lZCB0eXBpbmdzIGZpbGVzIGluIHRoaXMgYnVuZGxlLCB0aGV5IGFyZSB1cGRhdGVkIGluLXBsYWNlIChzZWUgdGhlXG4gKiBgSW5QbGFjZUZpbGVXcml0ZXJgKS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5ld0VudHJ5UG9pbnRGaWxlV3JpdGVyIGV4dGVuZHMgSW5QbGFjZUZpbGVXcml0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIGZzOiBGaWxlU3lzdGVtLCBsb2dnZXI6IExvZ2dlciwgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQ6IGJvb2xlYW4sXG4gICAgICBwcml2YXRlIHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIpIHtcbiAgICBzdXBlcihmcywgbG9nZ2VyLCBlcnJvck9uRmFpbGVkRW50cnlQb2ludCk7XG4gIH1cblxuICB3cml0ZUJ1bmRsZShcbiAgICAgIGJ1bmRsZTogRW50cnlQb2ludEJ1bmRsZSwgdHJhbnNmb3JtZWRGaWxlczogRmlsZVRvV3JpdGVbXSxcbiAgICAgIGZvcm1hdFByb3BlcnRpZXM6IEVudHJ5UG9pbnRKc29uUHJvcGVydHlbXSkge1xuICAgIC8vIFRoZSBuZXcgZm9sZGVyIGlzIGF0IHRoZSByb290IG9mIHRoZSBvdmVyYWxsIHBhY2thZ2VcbiAgICBjb25zdCBlbnRyeVBvaW50ID0gYnVuZGxlLmVudHJ5UG9pbnQ7XG4gICAgY29uc3QgbmdjY0ZvbGRlciA9IHRoaXMuZnMuam9pbihlbnRyeVBvaW50LnBhY2thZ2VQYXRoLCBOR0NDX0RJUkVDVE9SWSk7XG4gICAgdGhpcy5jb3B5QnVuZGxlKGJ1bmRsZSwgZW50cnlQb2ludC5wYWNrYWdlUGF0aCwgbmdjY0ZvbGRlciwgdHJhbnNmb3JtZWRGaWxlcyk7XG4gICAgdHJhbnNmb3JtZWRGaWxlcy5mb3JFYWNoKGZpbGUgPT4gdGhpcy53cml0ZUZpbGUoZmlsZSwgZW50cnlQb2ludC5wYWNrYWdlUGF0aCwgbmdjY0ZvbGRlcikpO1xuICAgIHRoaXMudXBkYXRlUGFja2FnZUpzb24oZW50cnlQb2ludCwgZm9ybWF0UHJvcGVydGllcywgbmdjY0ZvbGRlcik7XG4gIH1cblxuICByZXZlcnRCdW5kbGUoXG4gICAgICBlbnRyeVBvaW50OiBFbnRyeVBvaW50LCB0cmFuc2Zvcm1lZEZpbGVQYXRoczogQWJzb2x1dGVGc1BhdGhbXSxcbiAgICAgIGZvcm1hdFByb3BlcnRpZXM6IEVudHJ5UG9pbnRKc29uUHJvcGVydHlbXSk6IHZvaWQge1xuICAgIC8vIElNUExFTUVOVEFUSU9OIE5PVEU6XG4gICAgLy9cbiAgICAvLyBUaGUgY2hhbmdlcyBtYWRlIGJ5IGBjb3B5QnVuZGxlKClgIGFyZSBub3QgcmV2ZXJ0ZWQgaGVyZS4gVGhlIG5vbi10cmFuc2Zvcm1lZCBjb3BpZWQgZmlsZXNcbiAgICAvLyBhcmUgaWRlbnRpY2FsIHRvIHRoZSBvcmlnaW5hbCBvbmVzIGFuZCB0aGV5IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2hlbiByZS1wcm9jZXNzaW5nIHRoZVxuICAgIC8vIGVudHJ5LXBvaW50IGFueXdheS5cbiAgICAvL1xuICAgIC8vIFRoaXMgd2F5LCB3ZSBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgaGF2aW5nIHRvIGluZm9ybSB0aGUgbWFzdGVyIHByb2Nlc3MgYWJvdXQgYWxsIHNvdXJjZSBmaWxlc1xuICAgIC8vIGJlaW5nIGNvcGllZCBpbiBgY29weUJ1bmRsZSgpYC5cblxuICAgIC8vIFJldmVydCB0aGUgdHJhbnNmb3JtZWQgZmlsZXMuXG4gICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiB0cmFuc2Zvcm1lZEZpbGVQYXRocykge1xuICAgICAgdGhpcy5yZXZlcnRGaWxlKGZpbGVQYXRoLCBlbnRyeVBvaW50LnBhY2thZ2VQYXRoKTtcbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgYW55IGNoYW5nZXMgdG8gYHBhY2thZ2UuanNvbmAuXG4gICAgdGhpcy5yZXZlcnRQYWNrYWdlSnNvbihlbnRyeVBvaW50LCBmb3JtYXRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3B5QnVuZGxlKFxuICAgICAgYnVuZGxlOiBFbnRyeVBvaW50QnVuZGxlLCBwYWNrYWdlUGF0aDogQWJzb2x1dGVGc1BhdGgsIG5nY2NGb2xkZXI6IEFic29sdXRlRnNQYXRoLFxuICAgICAgdHJhbnNmb3JtZWRGaWxlczogRmlsZVRvV3JpdGVbXSkge1xuICAgIGNvbnN0IGRvTm90Q29weSA9IG5ldyBTZXQodHJhbnNmb3JtZWRGaWxlcy5tYXAoZiA9PiBmLnBhdGgpKTtcbiAgICBidW5kbGUuc3JjLnByb2dyYW0uZ2V0U291cmNlRmlsZXMoKS5mb3JFYWNoKHNvdXJjZUZpbGUgPT4ge1xuICAgICAgY29uc3Qgb3JpZ2luYWxQYXRoID0gYWJzb2x1dGVGcm9tU291cmNlRmlsZShzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChkb05vdENvcHkuaGFzKG9yaWdpbmFsUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gdGhpcy5mcy5yZWxhdGl2ZShwYWNrYWdlUGF0aCwgb3JpZ2luYWxQYXRoKTtcbiAgICAgIGNvbnN0IGlzSW5zaWRlUGFja2FnZSA9IGlzTG9jYWxSZWxhdGl2ZVBhdGgocmVsYXRpdmVQYXRoKTtcbiAgICAgIGlmICghc291cmNlRmlsZS5pc0RlY2xhcmF0aW9uRmlsZSAmJiBpc0luc2lkZVBhY2thZ2UpIHtcbiAgICAgICAgY29uc3QgbmV3UGF0aCA9IHRoaXMuZnMucmVzb2x2ZShuZ2NjRm9sZGVyLCByZWxhdGl2ZVBhdGgpO1xuICAgICAgICB0aGlzLmZzLmVuc3VyZURpcih0aGlzLmZzLmRpcm5hbWUobmV3UGF0aCkpO1xuICAgICAgICB0aGlzLmZzLmNvcHlGaWxlKG9yaWdpbmFsUGF0aCwgbmV3UGF0aCk7XG4gICAgICAgIHRoaXMuY29weUFuZFVwZGF0ZVNvdXJjZU1hcChvcmlnaW5hbFBhdGgsIG5ld1BhdGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIGEgc291cmNlIGZpbGUgaGFzIGFuIGFzc29jaWF0ZWQgc291cmNlLW1hcCwgdGhlbiBjb3B5IHRoaXMsIHdoaWxlIHVwZGF0aW5nIGl0cyBzb3VyY2VSb290XG4gICAqIGFjY29yZGluZ2x5LlxuICAgKlxuICAgKiBGb3Igbm93IGRvbid0IHRyeSB0byBwYXJzZSB0aGUgc291cmNlIGZvciBpbmxpbmUgc291cmNlLW1hcHMgb3IgZXh0ZXJuYWwgc291cmNlLW1hcCBsaW5rcyxcbiAgICogc2luY2UgdGhhdCBpcyBtb3JlIGNvbXBsZXggYW5kIHdpbGwgc2xvdyBuZ2NjIGRvd24uXG4gICAqIEluc3RlYWQganVzdCBjaGVjayBmb3IgYSBzb3VyY2UtbWFwIGZpbGUgcmVzaWRpbmcgbmV4dCB0byB0aGUgc291cmNlIGZpbGUsIHdoaWNoIGlzIGJ5IGZhclxuICAgKiB0aGUgbW9zdCBjb21tb24gY2FzZS5cbiAgICpcbiAgICogQHBhcmFtIG9yaWdpbmFsU3JjUGF0aCBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSBiZWluZyBjb3BpZWQuXG4gICAqIEBwYXJhbSBuZXdTcmNQYXRoIGFic29sdXRlIHBhdGggdG8gd2hlcmUgdGhlIHNvdXJjZSB3aWxsIGJlIHdyaXR0ZW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgY29weUFuZFVwZGF0ZVNvdXJjZU1hcChvcmlnaW5hbFNyY1BhdGg6IEFic29sdXRlRnNQYXRoLCBuZXdTcmNQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6XG4gICAgICB2b2lkIHtcbiAgICBjb25zdCBzb3VyY2VNYXBQYXRoID0gKG9yaWdpbmFsU3JjUGF0aCArICcubWFwJykgYXMgQWJzb2x1dGVGc1BhdGg7XG4gICAgaWYgKHRoaXMuZnMuZXhpc3RzKHNvdXJjZU1hcFBhdGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzb3VyY2VNYXAgPSBKU09OLnBhcnNlKHRoaXMuZnMucmVhZEZpbGUoc291cmNlTWFwUGF0aCkpO1xuICAgICAgICBjb25zdCBuZXdTb3VyY2VNYXBQYXRoID0gKG5ld1NyY1BhdGggKyAnLm1hcCcpIGFzIEFic29sdXRlRnNQYXRoO1xuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5mcy5yZWxhdGl2ZSh0aGlzLmZzLmRpcm5hbWUobmV3U291cmNlTWFwUGF0aCksIHRoaXMuZnMuZGlybmFtZShzb3VyY2VNYXBQYXRoKSk7XG4gICAgICAgIHNvdXJjZU1hcFsnc291cmNlUm9vdCddID0gdGhpcy5mcy5qb2luKHJlbGF0aXZlUGF0aCwgc291cmNlTWFwWydzb3VyY2VSb290J10gfHwgJy4nKTtcbiAgICAgICAgdGhpcy5mcy5lbnN1cmVEaXIodGhpcy5mcy5kaXJuYW1lKG5ld1NvdXJjZU1hcFBhdGgpKTtcbiAgICAgICAgdGhpcy5mcy53cml0ZUZpbGUobmV3U291cmNlTWFwUGF0aCwgSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYEZhaWxlZCB0byBwcm9jZXNzIHNvdXJjZS1tYXAgYXQgJHtzb3VyY2VNYXBQYXRofWApO1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGUubWVzc2FnZSA/PyBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgd3JpdGVGaWxlKGZpbGU6IEZpbGVUb1dyaXRlLCBwYWNrYWdlUGF0aDogQWJzb2x1dGVGc1BhdGgsIG5nY2NGb2xkZXI6IEFic29sdXRlRnNQYXRoKTpcbiAgICAgIHZvaWQge1xuICAgIGlmIChpc0R0c1BhdGgoZmlsZS5wYXRoLnJlcGxhY2UoL1xcLm1hcCQvLCAnJykpKSB7XG4gICAgICAvLyBUaGlzIGlzIGVpdGhlciBgLmQudHNgIG9yIGAuZC50cy5tYXBgIGZpbGVcbiAgICAgIHN1cGVyLndyaXRlRmlsZUFuZEJhY2t1cChmaWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gdGhpcy5mcy5yZWxhdGl2ZShwYWNrYWdlUGF0aCwgZmlsZS5wYXRoKTtcbiAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID0gdGhpcy5mcy5yZXNvbHZlKG5nY2NGb2xkZXIsIHJlbGF0aXZlUGF0aCk7XG4gICAgICB0aGlzLmZzLmVuc3VyZURpcih0aGlzLmZzLmRpcm5hbWUobmV3RmlsZVBhdGgpKTtcbiAgICAgIHRoaXMuZnMud3JpdGVGaWxlKG5ld0ZpbGVQYXRoLCBmaWxlLmNvbnRlbnRzKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmV2ZXJ0RmlsZShmaWxlUGF0aDogQWJzb2x1dGVGc1BhdGgsIHBhY2thZ2VQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQge1xuICAgIGlmIChpc0R0c1BhdGgoZmlsZVBhdGgucmVwbGFjZSgvXFwubWFwJC8sICcnKSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgZWl0aGVyIGAuZC50c2Agb3IgYC5kLnRzLm1hcGAgZmlsZVxuICAgICAgc3VwZXIucmV2ZXJ0RmlsZUFuZEJhY2t1cChmaWxlUGF0aCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZzLmV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHRoaXMuZnMucmVsYXRpdmUocGFja2FnZVBhdGgsIGZpbGVQYXRoKTtcbiAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID0gdGhpcy5mcy5yZXNvbHZlKHBhY2thZ2VQYXRoLCBOR0NDX0RJUkVDVE9SWSwgcmVsYXRpdmVQYXRoKTtcbiAgICAgIHRoaXMuZnMucmVtb3ZlRmlsZShuZXdGaWxlUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVBhY2thZ2VKc29uKFxuICAgICAgZW50cnlQb2ludDogRW50cnlQb2ludCwgZm9ybWF0UHJvcGVydGllczogRW50cnlQb2ludEpzb25Qcm9wZXJ0eVtdLFxuICAgICAgbmdjY0ZvbGRlcjogQWJzb2x1dGVGc1BhdGgpIHtcbiAgICBpZiAoZm9ybWF0UHJvcGVydGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIE5vIGZvcm1hdCBwcm9wZXJ0aWVzIG5lZWQgdXBkYXRpbmcuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBlbnRyeVBvaW50LnBhY2thZ2VKc29uO1xuICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHRoaXMuZnMuam9pbihlbnRyeVBvaW50LnBhdGgsICdwYWNrYWdlLmpzb24nKTtcblxuICAgIC8vIEFsbCBmb3JtYXQgcHJvcGVydGllcyBwb2ludCB0byB0aGUgc2FtZSBmb3JtYXQtcGF0aC5cbiAgICBjb25zdCBvbGRGb3JtYXRQcm9wID0gZm9ybWF0UHJvcGVydGllc1swXSE7XG4gICAgY29uc3Qgb2xkRm9ybWF0UGF0aCA9IHBhY2thZ2VKc29uW29sZEZvcm1hdFByb3BdITtcbiAgICBjb25zdCBvbGRBYnNGb3JtYXRQYXRoID0gdGhpcy5mcy5yZXNvbHZlKGVudHJ5UG9pbnQucGF0aCwgb2xkRm9ybWF0UGF0aCk7XG4gICAgY29uc3QgbmV3QWJzRm9ybWF0UGF0aCA9XG4gICAgICAgIHRoaXMuZnMucmVzb2x2ZShuZ2NjRm9sZGVyLCB0aGlzLmZzLnJlbGF0aXZlKGVudHJ5UG9pbnQucGFja2FnZVBhdGgsIG9sZEFic0Zvcm1hdFBhdGgpKTtcbiAgICBjb25zdCBuZXdGb3JtYXRQYXRoID0gdGhpcy5mcy5yZWxhdGl2ZShlbnRyeVBvaW50LnBhdGgsIG5ld0Fic0Zvcm1hdFBhdGgpO1xuXG4gICAgLy8gVXBkYXRlIGFsbCBwcm9wZXJ0aWVzIGluIGBwYWNrYWdlLmpzb25gIChib3RoIGluIG1lbW9yeSBhbmQgb24gZGlzaykuXG4gICAgY29uc3QgdXBkYXRlID0gdGhpcy5wa2dKc29uVXBkYXRlci5jcmVhdGVVcGRhdGUoKTtcblxuICAgIGZvciAoY29uc3QgZm9ybWF0UHJvcGVydHkgb2YgZm9ybWF0UHJvcGVydGllcykge1xuICAgICAgaWYgKHBhY2thZ2VKc29uW2Zvcm1hdFByb3BlcnR5XSAhPT0gb2xkRm9ybWF0UGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIHVwZGF0ZSAnJHtwYWNrYWdlSnNvblBhdGh9JzogRm9ybWF0IHByb3BlcnRpZXMgYCArXG4gICAgICAgICAgICBgKCR7Zm9ybWF0UHJvcGVydGllcy5qb2luKCcsICcpfSkgbWFwIHRvIG1vcmUgdGhhbiBvbmUgZm9ybWF0LXBhdGguYCk7XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZS5hZGRDaGFuZ2UoXG4gICAgICAgICAgW2Ake2Zvcm1hdFByb3BlcnR5fSR7TkdDQ19QUk9QRVJUWV9FWFRFTlNJT059YF0sIG5ld0Zvcm1hdFBhdGgsIHtiZWZvcmU6IGZvcm1hdFByb3BlcnR5fSk7XG4gICAgfVxuXG4gICAgdXBkYXRlLndyaXRlQ2hhbmdlcyhwYWNrYWdlSnNvblBhdGgsIHBhY2thZ2VKc29uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXZlcnRQYWNrYWdlSnNvbihlbnRyeVBvaW50OiBFbnRyeVBvaW50LCBmb3JtYXRQcm9wZXJ0aWVzOiBFbnRyeVBvaW50SnNvblByb3BlcnR5W10pIHtcbiAgICBpZiAoZm9ybWF0UHJvcGVydGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIE5vIGZvcm1hdCBwcm9wZXJ0aWVzIG5lZWQgcmV2ZXJ0aW5nLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VKc29uID0gZW50cnlQb2ludC5wYWNrYWdlSnNvbjtcbiAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSB0aGlzLmZzLmpvaW4oZW50cnlQb2ludC5wYXRoLCAncGFja2FnZS5qc29uJyk7XG5cbiAgICAvLyBSZXZlcnQgYWxsIHByb3BlcnRpZXMgaW4gYHBhY2thZ2UuanNvbmAgKGJvdGggaW4gbWVtb3J5IGFuZCBvbiBkaXNrKS5cbiAgICAvLyBTaW5jZSBgdXBkYXRlUGFja2FnZUpzb24oKWAgb25seSBhZGRzIHByb3BlcnRpZXMsIGl0IGlzIHNhZmUgdG8ganVzdCByZW1vdmUgdGhlbSAoaWYgdGhleVxuICAgIC8vIGV4aXN0KS5cbiAgICBjb25zdCB1cGRhdGUgPSB0aGlzLnBrZ0pzb25VcGRhdGVyLmNyZWF0ZVVwZGF0ZSgpO1xuXG4gICAgZm9yIChjb25zdCBmb3JtYXRQcm9wZXJ0eSBvZiBmb3JtYXRQcm9wZXJ0aWVzKSB7XG4gICAgICB1cGRhdGUuYWRkQ2hhbmdlKFtgJHtmb3JtYXRQcm9wZXJ0eX0ke05HQ0NfUFJPUEVSVFlfRVhURU5TSU9OfWBdLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHVwZGF0ZS53cml0ZUNoYW5nZXMocGFja2FnZUpzb25QYXRoLCBwYWNrYWdlSnNvbik7XG4gIH1cbn1cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3X2VudHJ5X3BvaW50X2ZpbGVfd3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL3dyaXRpbmcvbmV3X2VudHJ5X3BvaW50X2ZpbGVfd3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7SUFDQTs7Ozs7O09BTUc7SUFDSCwyRUFBdUg7SUFFdkgsa0ZBQWlFO0lBS2pFLG9HQUF5RDtJQUc1QyxRQUFBLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDaEMsUUFBQSx1QkFBdUIsR0FBRyxXQUFXLENBQUM7SUFFbkQ7Ozs7Ozs7T0FPRztJQUNIO1FBQTZDLG1EQUFpQjtRQUM1RCxpQ0FDSSxFQUFjLEVBQUUsTUFBYyxFQUFFLHVCQUFnQyxFQUN4RCxjQUFrQztZQUY5QyxZQUdFLGtCQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLENBQUMsU0FDM0M7WUFGVyxvQkFBYyxHQUFkLGNBQWMsQ0FBb0I7O1FBRTlDLENBQUM7UUFFRCw2Q0FBVyxHQUFYLFVBQ0ksTUFBd0IsRUFBRSxnQkFBK0IsRUFDekQsZ0JBQTBDO1lBRjlDLGlCQVNDO1lBTkMsdURBQXVEO1lBQ3ZELElBQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDckMsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxzQkFBYyxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM5RSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLFVBQVUs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LFVBQXNCLEVBQUUsZ0JBQTBDOztZQUM1RixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2pDLHVDQUF1QztnQkFDdkMsT0FBTzthQUNSO1lBRUQsSUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUMzQyxJQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRXRFLHdFQUF3RTtZQUN4RSw0RkFBNEY7WUFDNUYsVUFBVTtZQUNWLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7O2dCQUVsRCxLQUE2QixJQUFBLHFCQUFBLGlCQUFBLGdCQUFnQixDQUFBLGtEQUFBLGdGQUFFO29CQUExQyxJQUFNLGNBQWMsNkJBQUE7b0JBQ3ZCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFHLGNBQWMsR0FBRywrQkFBeUIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUM5RTs7Ozs7Ozs7O1lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNILDhCQUFDO0lBQUQsQ0FBQyxBQTNLRCxDQUE2Qyx3Q0FBaUIsR0EySzdEO0lBM0tZLDBEQUF1QiIsInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge2Fic29sdXRlRnJvbVNvdXJjZUZpbGUsIEFic29sdXRlRnNQYXRoLCBGaWxlU3lzdGVtLCBpc0xvY2FsUmVsYXRpdmVQYXRofSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7aXNEdHNQYXRofSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5pbXBvcnQge0VudHJ5UG9pbnQsIEVudHJ5UG9pbnRKc29uUHJvcGVydHl9IGZyb20gJy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50JztcbmltcG9ydCB7RW50cnlQb2ludEJ1bmRsZX0gZnJvbSAnLi4vcGFja2FnZXMvZW50cnlfcG9pbnRfYnVuZGxlJztcbmltcG9ydCB7RmlsZVRvV3JpdGV9IGZyb20gJy4uL3JlbmRlcmluZy91dGlscyc7XG5cbmltcG9ydCB7SW5QbGFjZUZpbGVXcml0ZXJ9IGZyb20gJy4vaW5fcGxhY2VfZmlsZV93cml0ZXInO1xuaW1wb3J0IHtQYWNrYWdlSnNvblVwZGF0ZXJ9IGZyb20gJy4vcGFja2FnZV9qc29uX3VwZGF0ZXInO1xuXG5leHBvcnQgY29uc3QgTkdDQ19ESVJFQ1RPUlkgPSAnX19pdnlfbmdjY19fJztcbmV4cG9ydCBjb25zdCBOR0NDX1BST1BFUlRZX0VYVEVOU0lPTiA9ICdfaXZ5X25nY2MnO1xuXG4vKipcbiAqIFRoaXMgRmlsZVdyaXRlciBjcmVhdGVzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZW50cnktcG9pbnQsIHRoZW4gd3JpdGVzIHRoZSB0cmFuc2Zvcm1lZFxuICogZmlsZXMgb250byB0aGUgZmlsZXMgaW4gdGhpcyBjb3B5LCBhbmQgZmluYWxseSB1cGRhdGVzIHRoZSBwYWNrYWdlLmpzb24gd2l0aCBhIG5ld1xuICogZW50cnktcG9pbnQgZm9ybWF0IHByb3BlcnR5IHRoYXQgcG9pbnRzIHRvIHRoaXMgbmV3IGVudHJ5LXBvaW50LlxuICpcbiAqIElmIHRoZXJlIGFyZSB0cmFuc2Zvcm1lZCB0eXBpbmdzIGZpbGVzIGluIHRoaXMgYnVuZGxlLCB0aGV5IGFyZSB1cGRhdGVkIGluLXBsYWNlIChzZWUgdGhlXG4gKiBgSW5QbGFjZUZpbGVXcml0ZXJgKS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5ld0VudHJ5UG9pbnRGaWxlV3JpdGVyIGV4dGVuZHMgSW5QbGFjZUZpbGVXcml0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIGZzOiBGaWxlU3lzdGVtLCBsb2dnZXI6IExvZ2dlciwgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQ6IGJvb2xlYW4sXG4gICAgICBwcml2YXRlIHBrZ0pzb25VcGRhdGVyOiBQYWNrYWdlSnNvblVwZGF0ZXIpIHtcbiAgICBzdXBlcihmcywgbG9nZ2VyLCBlcnJvck9uRmFpbGVkRW50cnlQb2ludCk7XG4gIH1cblxuICB3cml0ZUJ1bmRsZShcbiAgICAgIGJ1bmRsZTogRW50cnlQb2ludEJ1bmRsZSwgdHJhbnNmb3JtZWRGaWxlczogRmlsZVRvV3JpdGVbXSxcbiAgICAgIGZvcm1hdFByb3BlcnRpZXM6IEVudHJ5UG9pbnRKc29uUHJvcGVydHlbXSkge1xuICAgIC8vIFRoZSBuZXcgZm9sZGVyIGlzIGF0IHRoZSByb290IG9mIHRoZSBvdmVyYWxsIHBhY2thZ2VcbiAgICBjb25zdCBlbnRyeVBvaW50ID0gYnVuZGxlLmVudHJ5UG9pbnQ7XG4gICAgY29uc3QgbmdjY0ZvbGRlciA9IHRoaXMuZnMuam9pbihlbnRyeVBvaW50LnBhY2thZ2VQYXRoLCBOR0NDX0RJUkVDVE9SWSk7XG4gICAgdGhpcy5jb3B5QnVuZGxlKGJ1bmRsZSwgZW50cnlQb2ludC5wYWNrYWdlUGF0aCwgbmdjY0ZvbGRlciwgdHJhbnNmb3JtZWRGaWxlcyk7XG4gICAgdHJhbnNmb3JtZWRGaWxlcy5mb3JFYWNoKGZpbGUgPT4gdGhpcy53cml0ZUZpbGUoZmlsZSwgZW50cnlQb2ludC5wYWNrYWdlUGF0aCwgbmdjY0ZvbGRlcikpO1xuICAgIHRoaXMudXBkYXRlUGFja2FnZUpzb24oZW50cnlQb2ludCwgZm9ybWF0UHJvcGVydGllcywgbmdjY0ZvbGRlcik7XG4gIH1cblxuICByZXZlcnRCdW5kbGUoXG4gICAgICBlbnRyeVBvaW50OiBFbnRyeVBvaW50LCB0cmFuc2Zvcm1lZEZpbGVQYXRoczogQWJzb2x1dGVGc1BhdGhbXSxcbiAgICAgIGZvcm1hdFByb3BlcnRpZXM6IEVudHJ5UG9pbnRKc29uUHJvcGVydHlbXSk6IHZvaWQge1xuICAgIC8vIElNUExFTUVOVEFUSU9OIE5PVEU6XG4gICAgLy9cbiAgICAvLyBUaGUgY2hhbmdlcyBtYWRlIGJ5IGBjb3B5QnVuZGxlKClgIGFyZSBub3QgcmV2ZXJ0ZWQgaGVyZS4gVGhlIG5vbi10cmFuc2Zvcm1lZCBjb3BpZWQgZmlsZXNcbiAgICAvLyBhcmUgaWRlbnRpY2FsIHRvIHRoZSBvcmlnaW5hbCBvbmVzIGFuZCB0aGV5IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2hlbiByZS1wcm9jZXNzaW5nIHRoZVxuICAgIC8vIGVudHJ5LXBvaW50IGFueXdheS5cbiAgICAvL1xuICAgIC8vIFRoaXMgd2F5LCB3ZSBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgaGF2aW5nIHRvIGluZm9ybSB0aGUgbWFzdGVyIHByb2Nlc3MgYWJvdXQgYWxsIHNvdXJjZSBmaWxlc1xuICAgIC8vIGJlaW5nIGNvcGllZCBpbiBgY29weUJ1bmRsZSgpYC5cblxuICAgIC8vIFJldmVydCB0aGUgdHJhbnNmb3JtZWQgZmlsZXMuXG4gICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiB0cmFuc2Zvcm1lZEZpbGVQYXRocykge1xuICAgICAgdGhpcy5yZXZlcnRGaWxlKGZpbGVQYXRoLCBlbnRyeVBvaW50LnBhY2thZ2VQYXRoKTtcbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgYW55IGNoYW5nZXMgdG8gYHBhY2thZ2UuanNvbmAuXG4gICAgdGhpcy5yZXZlcnRQYWNrYWdlSnNvbihlbnRyeVBvaW50LCBmb3JtYXRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3B5QnVuZGxlKFxuICAgICAgYnVuZGxlOiBFbnRyeVBvaW50QnVuZGxlLCBwYWNrYWdlUGF0aDogQWJzb2x1dGVGc1BhdGgsIG5nY2NGb2xkZXI6IEFic29sdXRlRnNQYXRoLFxuICAgICAgdHJhbnNmb3JtZWRGaWxlczogRmlsZVRvV3JpdGVbXSkge1xuICAgIGNvbnN0IGRvTm90Q29weSA9IG5ldyBTZXQodHJhbnNmb3JtZWRGaWxlcy5tYXAoZiA9PiBmLnBhdGgpKTtcbiAgICBidW5kbGUuc3JjLnByb2dyYW0uZ2V0U291cmNlRmlsZXMoKS5mb3JFYWNoKHNvdXJjZUZpbGUgPT4ge1xuICAgICAgY29uc3Qgb3JpZ2luYWxQYXRoID0gYWJzb2x1dGVGcm9tU291cmNlRmlsZShzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChkb05vdENvcHkuaGFzKG9yaWdpbmFsUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gdGhpcy5mcy5yZWxhdGl2ZShwYWNrYWdlUGF0aCwgb3JpZ2luYWxQYXRoKTtcbiAgICAgIGNvbnN0IGlzSW5zaWRlUGFja2FnZSA9IGlzTG9jYWxSZWxhdGl2ZVBhdGgocmVsYXRpdmVQYXRoKTtcbiAgICAgIGlmICghc291cmNlRmlsZS5pc0RlY2xhcmF0aW9uRmlsZSAmJiBpc0luc2lkZVBhY2thZ2UpIHtcbiAgICAgICAgY29uc3QgbmV3UGF0aCA9IHRoaXMuZnMucmVzb2x2ZShuZ2NjRm9sZGVyLCByZWxhdGl2ZVBhdGgpO1xuICAgICAgICB0aGlzLmZzLmVuc3VyZURpcih0aGlzLmZzLmRpcm5hbWUobmV3UGF0aCkpO1xuICAgICAgICB0aGlzLmZzLmNvcHlGaWxlKG9yaWdpbmFsUGF0aCwgbmV3UGF0aCk7XG4gICAgICAgIHRoaXMuY29weUFuZFVwZGF0ZVNvdXJjZU1hcChvcmlnaW5hbFBhdGgsIG5ld1BhdGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIGEgc291cmNlIGZpbGUgaGFzIGFuIGFzc29jaWF0ZWQgc291cmNlLW1hcCwgdGhlbiBjb3B5IHRoaXMsIHdoaWxlIHVwZGF0aW5nIGl0cyBzb3VyY2VSb290XG4gICAqIGFjY29yZGluZ2x5LlxuICAgKlxuICAgKiBGb3Igbm93IGRvbid0IHRyeSB0byBwYXJzZSB0aGUgc291cmNlIGZvciBpbmxpbmUgc291cmNlLW1hcHMgb3IgZXh0ZXJuYWwgc291cmNlLW1hcCBsaW5rcyxcbiAgICogc2luY2UgdGhhdCBpcyBtb3JlIGNvbXBsZXggYW5kIHdpbGwgc2xvdyBuZ2NjIGRvd24uXG4gICAqIEluc3RlYWQganVzdCBjaGVjayBmb3IgYSBzb3VyY2UtbWFwIGZpbGUgcmVzaWRpbmcgbmV4dCB0byB0aGUgc291cmNlIGZpbGUsIHdoaWNoIGlzIGJ5IGZhclxuICAgKiB0aGUgbW9zdCBjb21tb24gY2FzZS5cbiAgICpcbiAgICogQHBhcmFtIG9yaWdpbmFsU3JjUGF0aCBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSBiZWluZyBjb3BpZWQuXG4gICAqIEBwYXJhbSBuZXdTcmNQYXRoIGFic29sdXRlIHBhdGggdG8gd2hlcmUgdGhlIHNvdXJjZSB3aWxsIGJlIHdyaXR0ZW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgY29weUFuZFVwZGF0ZVNvdXJjZU1hcChvcmlnaW5hbFNyY1BhdGg6IEFic29sdXRlRnNQYXRoLCBuZXdTcmNQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6XG4gICAgICB2b2lkIHtcbiAgICBjb25zdCBzb3VyY2VNYXBQYXRoID0gKG9yaWdpbmFsU3JjUGF0aCArICcubWFwJykgYXMgQWJzb2x1dGVGc1BhdGg7XG4gICAgaWYgKHRoaXMuZnMuZXhpc3RzKHNvdXJjZU1hcFBhdGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzb3VyY2VNYXAgPVxuICAgICAgICAgICAgSlNPTi5wYXJzZSh0aGlzLmZzLnJlYWRGaWxlKHNvdXJjZU1hcFBhdGgpKSBhcyB7c291cmNlUm9vdDogc3RyaW5nLCBba2V5OiBzdHJpbmddOiBhbnl9O1xuICAgICAgICBjb25zdCBuZXdTb3VyY2VNYXBQYXRoID0gKG5ld1NyY1BhdGggKyAnLm1hcCcpIGFzIEFic29sdXRlRnNQYXRoO1xuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5mcy5yZWxhdGl2ZSh0aGlzLmZzLmRpcm5hbWUobmV3U291cmNlTWFwUGF0aCksIHRoaXMuZnMuZGlybmFtZShzb3VyY2VNYXBQYXRoKSk7XG4gICAgICAgIHNvdXJjZU1hcC5zb3VyY2VSb290ID0gdGhpcy5mcy5qb2luKHJlbGF0aXZlUGF0aCwgc291cmNlTWFwLnNvdXJjZVJvb3QgfHwgJy4nKTtcbiAgICAgICAgdGhpcy5mcy5lbnN1cmVEaXIodGhpcy5mcy5kaXJuYW1lKG5ld1NvdXJjZU1hcFBhdGgpKTtcbiAgICAgICAgdGhpcy5mcy53cml0ZUZpbGUobmV3U291cmNlTWFwUGF0aCwgSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYEZhaWxlZCB0byBwcm9jZXNzIHNvdXJjZS1tYXAgYXQgJHtzb3VyY2VNYXBQYXRofWApO1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGUubWVzc2FnZSA/PyBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgd3JpdGVGaWxlKGZpbGU6IEZpbGVUb1dyaXRlLCBwYWNrYWdlUGF0aDogQWJzb2x1dGVGc1BhdGgsIG5nY2NGb2xkZXI6IEFic29sdXRlRnNQYXRoKTpcbiAgICAgIHZvaWQge1xuICAgIGlmIChpc0R0c1BhdGgoZmlsZS5wYXRoLnJlcGxhY2UoL1xcLm1hcCQvLCAnJykpKSB7XG4gICAgICAvLyBUaGlzIGlzIGVpdGhlciBgLmQudHNgIG9yIGAuZC50cy5tYXBgIGZpbGVcbiAgICAgIHN1cGVyLndyaXRlRmlsZUFuZEJhY2t1cChmaWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gdGhpcy5mcy5yZWxhdGl2ZShwYWNrYWdlUGF0aCwgZmlsZS5wYXRoKTtcbiAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID0gdGhpcy5mcy5yZXNvbHZlKG5nY2NGb2xkZXIsIHJlbGF0aXZlUGF0aCk7XG4gICAgICB0aGlzLmZzLmVuc3VyZURpcih0aGlzLmZzLmRpcm5hbWUobmV3RmlsZVBhdGgpKTtcbiAgICAgIHRoaXMuZnMud3JpdGVGaWxlKG5ld0ZpbGVQYXRoLCBmaWxlLmNvbnRlbnRzKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmV2ZXJ0RmlsZShmaWxlUGF0aDogQWJzb2x1dGVGc1BhdGgsIHBhY2thZ2VQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHZvaWQge1xuICAgIGlmIChpc0R0c1BhdGgoZmlsZVBhdGgucmVwbGFjZSgvXFwubWFwJC8sICcnKSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgZWl0aGVyIGAuZC50c2Agb3IgYC5kLnRzLm1hcGAgZmlsZVxuICAgICAgc3VwZXIucmV2ZXJ0RmlsZUFuZEJhY2t1cChmaWxlUGF0aCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZzLmV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHRoaXMuZnMucmVsYXRpdmUocGFja2FnZVBhdGgsIGZpbGVQYXRoKTtcbiAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID0gdGhpcy5mcy5yZXNvbHZlKHBhY2thZ2VQYXRoLCBOR0NDX0RJUkVDVE9SWSwgcmVsYXRpdmVQYXRoKTtcbiAgICAgIHRoaXMuZnMucmVtb3ZlRmlsZShuZXdGaWxlUGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVBhY2thZ2VKc29uKFxuICAgICAgZW50cnlQb2ludDogRW50cnlQb2ludCwgZm9ybWF0UHJvcGVydGllczogRW50cnlQb2ludEpzb25Qcm9wZXJ0eVtdLFxuICAgICAgbmdjY0ZvbGRlcjogQWJzb2x1dGVGc1BhdGgpIHtcbiAgICBpZiAoZm9ybWF0UHJvcGVydGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIE5vIGZvcm1hdCBwcm9wZXJ0aWVzIG5lZWQgdXBkYXRpbmcuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBlbnRyeVBvaW50LnBhY2thZ2VKc29uO1xuICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHRoaXMuZnMuam9pbihlbnRyeVBvaW50LnBhdGgsICdwYWNrYWdlLmpzb24nKTtcblxuICAgIC8vIEFsbCBmb3JtYXQgcHJvcGVydGllcyBwb2ludCB0byB0aGUgc2FtZSBmb3JtYXQtcGF0aC5cbiAgICBjb25zdCBvbGRGb3JtYXRQcm9wID0gZm9ybWF0UHJvcGVydGllc1swXSE7XG4gICAgY29uc3Qgb2xkRm9ybWF0UGF0aCA9IHBhY2thZ2VKc29uW29sZEZvcm1hdFByb3BdITtcbiAgICBjb25zdCBvbGRBYnNGb3JtYXRQYXRoID0gdGhpcy5mcy5yZXNvbHZlKGVudHJ5UG9pbnQucGF0aCwgb2xkRm9ybWF0UGF0aCk7XG4gICAgY29uc3QgbmV3QWJzRm9ybWF0UGF0aCA9XG4gICAgICAgIHRoaXMuZnMucmVzb2x2ZShuZ2NjRm9sZGVyLCB0aGlzLmZzLnJlbGF0aXZlKGVudHJ5UG9pbnQucGFja2FnZVBhdGgsIG9sZEFic0Zvcm1hdFBhdGgpKTtcbiAgICBjb25zdCBuZXdGb3JtYXRQYXRoID0gdGhpcy5mcy5yZWxhdGl2ZShlbnRyeVBvaW50LnBhdGgsIG5ld0Fic0Zvcm1hdFBhdGgpO1xuXG4gICAgLy8gVXBkYXRlIGFsbCBwcm9wZXJ0aWVzIGluIGBwYWNrYWdlLmpzb25gIChib3RoIGluIG1lbW9yeSBhbmQgb24gZGlzaykuXG4gICAgY29uc3QgdXBkYXRlID0gdGhpcy5wa2dKc29uVXBkYXRlci5jcmVhdGVVcGRhdGUoKTtcblxuICAgIGZvciAoY29uc3QgZm9ybWF0UHJvcGVydHkgb2YgZm9ybWF0UHJvcGVydGllcykge1xuICAgICAgaWYgKHBhY2thZ2VKc29uW2Zvcm1hdFByb3BlcnR5XSAhPT0gb2xkRm9ybWF0UGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIHVwZGF0ZSAnJHtwYWNrYWdlSnNvblBhdGh9JzogRm9ybWF0IHByb3BlcnRpZXMgYCArXG4gICAgICAgICAgICBgKCR7Zm9ybWF0UHJvcGVydGllcy5qb2luKCcsICcpfSkgbWFwIHRvIG1vcmUgdGhhbiBvbmUgZm9ybWF0LXBhdGguYCk7XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZS5hZGRDaGFuZ2UoXG4gICAgICAgICAgW2Ake2Zvcm1hdFByb3BlcnR5fSR7TkdDQ19QUk9QRVJUWV9FWFRFTlNJT059YF0sIG5ld0Zvcm1hdFBhdGgsIHtiZWZvcmU6IGZvcm1hdFByb3BlcnR5fSk7XG4gICAgfVxuXG4gICAgdXBkYXRlLndyaXRlQ2hhbmdlcyhwYWNrYWdlSnNvblBhdGgsIHBhY2thZ2VKc29uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXZlcnRQYWNrYWdlSnNvbihlbnRyeVBvaW50OiBFbnRyeVBvaW50LCBmb3JtYXRQcm9wZXJ0aWVzOiBFbnRyeVBvaW50SnNvblByb3BlcnR5W10pIHtcbiAgICBpZiAoZm9ybWF0UHJvcGVydGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIE5vIGZvcm1hdCBwcm9wZXJ0aWVzIG5lZWQgcmV2ZXJ0aW5nLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VKc29uID0gZW50cnlQb2ludC5wYWNrYWdlSnNvbjtcbiAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSB0aGlzLmZzLmpvaW4oZW50cnlQb2ludC5wYXRoLCAncGFja2FnZS5qc29uJyk7XG5cbiAgICAvLyBSZXZlcnQgYWxsIHByb3BlcnRpZXMgaW4gYHBhY2thZ2UuanNvbmAgKGJvdGggaW4gbWVtb3J5IGFuZCBvbiBkaXNrKS5cbiAgICAvLyBTaW5jZSBgdXBkYXRlUGFja2FnZUpzb24oKWAgb25seSBhZGRzIHByb3BlcnRpZXMsIGl0IGlzIHNhZmUgdG8ganVzdCByZW1vdmUgdGhlbSAoaWYgdGhleVxuICAgIC8vIGV4aXN0KS5cbiAgICBjb25zdCB1cGRhdGUgPSB0aGlzLnBrZ0pzb25VcGRhdGVyLmNyZWF0ZVVwZGF0ZSgpO1xuXG4gICAgZm9yIChjb25zdCBmb3JtYXRQcm9wZXJ0eSBvZiBmb3JtYXRQcm9wZXJ0aWVzKSB7XG4gICAgICB1cGRhdGUuYWRkQ2hhbmdlKFtgJHtmb3JtYXRQcm9wZXJ0eX0ke05HQ0NfUFJPUEVSVFlfRVhURU5TSU9OfWBdLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHVwZGF0ZS53cml0ZUNoYW5nZXMocGFja2FnZUpzb25QYXRoLCBwYWNrYWdlSnNvbik7XG4gIH1cbn1cbiJdfQ==
@@ -99,7 +99,9 @@
99
99
  // Read and parse the `package.json` content.
100
100
  // NOTE: We are not using `preExistingParsedJson` (even if specified) to avoid corrupting the
101
101
  // content on disk in case `preExistingParsedJson` is outdated.
102
- var parsedJson = this.fs.exists(packageJsonPath) ? JSON.parse(this.fs.readFile(packageJsonPath)) : {};
102
+ var parsedJson = this.fs.exists(packageJsonPath) ?
103
+ JSON.parse(this.fs.readFile(packageJsonPath)) :
104
+ {};
103
105
  try {
104
106
  // Apply all changes to both the canonical representation (read from disk) and any pre-existing,
105
107
  // in-memory representation.
@@ -177,4 +179,4 @@
177
179
  }
178
180
  }
179
181
  });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZV9qc29uX3VwZGF0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBRUgsMkVBQW1GO0lBK0NuRjs7Ozs7O09BTUc7SUFDSDtRQUlFLDJCQUFvQixnQkFBMkM7WUFBM0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEyQjtZQUh2RCxZQUFPLEdBQXdCLEVBQUUsQ0FBQztZQUNsQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRTBDLENBQUM7UUFFbkU7Ozs7Ozs7Ozs7Ozs7Ozs7V0FnQkc7UUFDSCxxQ0FBUyxHQUFULFVBQ0ksWUFBc0IsRUFBRSxLQUFnQixFQUN4QyxXQUEyRDtZQUEzRCw0QkFBQSxFQUFBLDJCQUEyRDtZQUM3RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRDs7Ozs7OztXQU9HO1FBQ0gsd0NBQVksR0FBWixVQUFhLGVBQStCLEVBQUUsVUFBdUI7WUFDbkUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7UUFFTyw0Q0FBZ0IsR0FBeEI7WUFDRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENB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UyxhQUFhLENBQUMsR0FBZSxFQUFFLElBQVk7UUFDbEQsSUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVMsZ0JBQWdCLENBQ3JCLEdBQWUsRUFBRSxJQUFZLEVBQUUsV0FBMkM7UUFDNUUsUUFBUSxXQUFXLEVBQUU7WUFDbkIsS0FBSyxZQUFZO2dCQUNmLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxHQUFHLElBQUksRUFBUixDQUFRLENBQUMsQ0FBQztnQkFDekMsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsNEZBQTRGO2dCQUM1RiwwQ0FBMEM7Z0JBQzFDLE1BQU07WUFDUjtnQkFDRSxJQUFJLENBQUMsT0FBTyxXQUFXLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxFQUFFO29CQUMzRSxNQUFNLElBQUksS0FBSyxDQUNYLDBCQUF3QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyx3QkFBbUIsSUFBSSxPQUFJLENBQUMsQ0FBQztpQkFDckY7Z0JBRUQsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLEtBQUssV0FBVyxDQUFDLE1BQU0sRUFBeEIsQ0FBd0IsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNO1NBQ1Q7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIGRpcm5hbWUsIEZpbGVTeXN0ZW19IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0pzb25PYmplY3QsIEpzb25WYWx1ZX0gZnJvbSAnLi4vcGFja2FnZXMvZW50cnlfcG9pbnQnO1xuXG5cbmV4cG9ydCB0eXBlIFBhY2thZ2VKc29uQ2hhbmdlID0gW3N0cmluZ1tdLCBKc29uVmFsdWUsIFBhY2thZ2VKc29uUHJvcGVydHlQb3NpdGlvbmluZ107XG5leHBvcnQgdHlwZSBQYWNrYWdlSnNvblByb3BlcnR5UG9zaXRpb25pbmcgPSAndW5pbXBvcnRhbnQnfCdhbHBoYWJldGljJ3x7YmVmb3JlOiBzdHJpbmd9O1xuZXhwb3J0IHR5cGUgV3JpdGVQYWNrYWdlSnNvbkNoYW5nZXNGbiA9XG4gICAgKGNoYW5nZXM6IFBhY2thZ2VKc29uQ2hhbmdlW10sIHBhY2thZ2VKc29uUGF0aDogQWJzb2x1dGVGc1BhdGgsIHBhcnNlZEpzb24/OiBKc29uT2JqZWN0KSA9PlxuICAgICAgICB2b2lkO1xuXG4vKipcbiAqIEEgdXRpbGl0eSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBzYWZlbHkgdXBkYXRlIHZhbHVlcyBpbiBhIGBwYWNrYWdlLmpzb25gIGZpbGUuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqIGBgYHRzXG4gKiBjb25zdCB1cGRhdGVQYWNrYWdlSnNvbiA9IHBhY2thZ2VKc29uVXBkYXRlclxuICogICAgIC5jcmVhdGVVcGRhdGUoKVxuICogICAgIC5hZGRDaGFuZ2UoWyduYW1lJ10sICdwYWNrYWdlLWZvbycpXG4gKiAgICAgLmFkZENoYW5nZShbJ3NjcmlwdHMnLCAnZm9vJ10sICdlY2hvIEZPT09PLi4uJywgJ3VuaW1wb3J0YW50JylcbiAqICAgICAuYWRkQ2hhbmdlKFsnZGVwZW5kZW5jaWVzJywgJ2JheiddLCAnMS4wLjAnLCAnYWxwaGFiZXRpYycpXG4gKiAgICAgLmFkZENoYW5nZShbJ2RlcGVuZGVuY2llcycsICdiYXInXSwgJzIuMC4wJywge2JlZm9yZTogJ2Jheid9KVxuICogICAgIC53cml0ZUNoYW5nZXMoJy9mb28vcGFja2FnZS5qc29uJyk7XG4gKiAgICAgLy8gb3JcbiAqICAgICAvLyAud3JpdGVDaGFuZ2VzKCcvZm9vL3BhY2thZ2UuanNvbicsIGluTWVtb3J5UGFyc2VkSnNvbik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlSnNvblVwZGF0ZXIge1xuICAvKipcbiAgICogQ3JlYXRlIGEgYFBhY2thZ2VKc29uVXBkYXRlYCBvYmplY3QsIHdoaWNoIHByb3ZpZGVzIGEgZmx1ZW50IEFQSSBmb3IgYmF0Y2hpbmcgdXBkYXRlcyB0byBhXG4gICAqIGBwYWNrYWdlLmpzb25gIGZpbGUuIChCYXRjaGluZyB0aGUgdXBkYXRlcyBpcyB1c2VmdWwsIGJlY2F1c2UgaXQgYXZvaWRzIHVubmVjZXNzYXJ5IEkvT1xuICAgKiBvcGVyYXRpb25zLilcbiAgICovXG4gIGNyZWF0ZVVwZGF0ZSgpOiBQYWNrYWdlSnNvblVwZGF0ZTtcblxuICAvKipcbiAgICogV3JpdGUgYSBzZXQgb2YgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGBwYWNrYWdlLmpzb25gIGZpbGUgKGFuZCBvcHRpb25hbGx5IGEgcHJlLWV4aXN0aW5nLFxuICAgKiBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgaXQpLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbmdlcyBUaGUgc2V0IG9mIGNoYW5nZXMgdG8gYXBwbHkuXG4gICAqIEBwYXJhbSBwYWNrYWdlSnNvblBhdGggVGhlIHBhdGggdG8gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkLlxuICAgKiBAcGFyYW0gcGFyc2VkSnNvbiBBIHByZS1leGlzdGluZywgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlIHRoYXRcbiAgICogICAgICAgICAgICAgICAgICAgbmVlZHMgdG8gYmUgdXBkYXRlZCBhcyB3ZWxsLlxuICAgKi9cbiAgd3JpdGVDaGFuZ2VzKFxuICAgICAgY2hhbmdlczogUGFja2FnZUpzb25DaGFuZ2VbXSwgcGFja2FnZUpzb25QYXRoOiBBYnNvbHV0ZUZzUGF0aCwgcGFyc2VkSnNvbj86IEpzb25PYmplY3QpOiB2b2lkO1xufVxuXG4vKipcbiAqIEEgdXRpbGl0eSBjbGFzcyBwcm92aWRpbmcgYSBmbHVlbnQgQVBJIGZvciByZWNvcmRpbmcgbXVsdGlwbGUgY2hhbmdlcyB0byBhIGBwYWNrYWdlLmpzb25gIGZpbGVcbiAqIChhbmQgb3B0aW9uYWxseSBpdHMgaW4tbWVtb3J5IHBhcnNlZCByZXByZXNlbnRhdGlvbikuXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBzaG91bGQgZ2VuZXJhbGx5IG5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHk7IGluc3RhbmNlcyBhcmUgaW1wbGljaXRseSBjcmVhdGVkXG4gKiAgICAgICB2aWEgYFBhY2thZ2VKc29uVXBkYXRlciNjcmVhdGVVcGRhdGUoKWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYWNrYWdlSnNvblVwZGF0ZSB7XG4gIHByaXZhdGUgY2hhbmdlczogUGFja2FnZUpzb25DaGFuZ2VbXSA9IFtdO1xuICBwcml2YXRlIGFwcGxpZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdyaXRlQ2hhbmdlc0ltcGw6IFdyaXRlUGFja2FnZUpzb25DaGFuZ2VzRm4pIHt9XG5cbiAgLyoqXG4gICAqIFJlY29yZCBhIGNoYW5nZSB0byBhIGBwYWNrYWdlLmpzb25gIHByb3BlcnR5LlxuICAgKlxuICAgKiBJZiB0aGUgYW5jZXN0b3Igb2JqZWN0cyBkbyBub3QgeWV0IGV4aXN0IGluIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlLCB0aGV5IHdpbGwgYmUgY3JlYXRlZC4gVGhlXG4gICAqIHBvc2l0aW9uaW5nIG9mIHRoZSBwcm9wZXJ0eSBjYW4gYWxzbyBiZSBzcGVjaWZpZWQuIChJZiB0aGUgcHJvcGVydHkgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmVcbiAgICogbW92ZWQgYWNjb3JkaW5nbHkuKVxuICAgKlxuICAgKiBOT1RFOiBQcm9wZXJ0eSBwb3NpdGlvbmluZyBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gYmUgcmVzcGVjdGVkIGluIHRoZSBzZXJpYWxpemVkIGBwYWNrYWdlLmpzb25gXG4gICAqICAgICAgIGZpbGUuIFBvc2l0aW9uaW5nIHdpbGwgbm90IGJlIHRha2VuIGludG8gYWNjb3VudCB3aGVuIHVwZGF0aW5nIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbnMuXG4gICAqXG4gICAqIE5PVEUgMjogUHJvcGVydHkgcG9zaXRpb25pbmcgb25seSBhZmZlY3RzIHRoZSBsYXN0IHByb3BlcnR5IGluIGBwcm9wZXJ0eVBhdGhgLiBBbmNlc3RvclxuICAgKiAgICAgICAgIG9iamVjdHMnIHBvc2l0aW9uaW5nIHdpbGwgbm90IGJlIGFmZmVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcGVydHlQYXRoIFRoZSBwYXRoIG9mIGEgKHBvc3NpYmx5IG5lc3RlZCkgcHJvcGVydHkgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgdmFsdWUgdG8gc2V0IHRoZSBwcm9wZXJ0eSB0by5cbiAgICogQHBhcmFtIHBvc2l0aW9uIFRoZSBkZXNpcmVkIHBvc2l0aW9uIGZvciB0aGUgYWRkZWQvdXBkYXRlZCBwcm9wZXJ0eS5cbiAgICovXG4gIGFkZENoYW5nZShcbiAgICAgIHByb3BlcnR5UGF0aDogc3RyaW5nW10sIHZhbHVlOiBKc29uVmFsdWUsXG4gICAgICBwb3NpdGlvbmluZzogUGFja2FnZUpzb25Qcm9wZXJ0eVBvc2l0aW9uaW5nID0gJ3VuaW1wb3J0YW50Jyk6IHRoaXMge1xuICAgIHRoaXMuZW5zdXJlTm90QXBwbGllZCgpO1xuICAgIHRoaXMuY2hhbmdlcy5wdXNoKFtwcm9wZXJ0eVBhdGgsIHZhbHVlLCBwb3NpdGlvbmluZ10pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSByZWNvcmRlZCBjaGFuZ2VzIHRvIHRoZSBhc3NvY2lhdGVkIGBwYWNrYWdlLmpzb25gIGZpbGUgKGFuZCBvcHRpb25hbGx5IGFcbiAgICogcHJlLWV4aXN0aW5nLCBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgaXQpLlxuICAgKlxuICAgKiBAcGFyYW0gcGFja2FnZUpzb25QYXRoIFRoZSBwYXRoIHRvIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlIHRoYXQgbmVlZHMgdG8gYmUgdXBkYXRlZC5cbiAgICogQHBhcmFtIHBhcnNlZEpzb24gQSBwcmUtZXhpc3RpbmcsIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZSB0aGF0XG4gICAqICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbiAgICovXG4gIHdyaXRlQ2hhbmdlcyhwYWNrYWdlSnNvblBhdGg6IEFic29sdXRlRnNQYXRoLCBwYXJzZWRKc29uPzogSnNvbk9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTm90QXBwbGllZCgpO1xuICAgIHRoaXMud3JpdGVDaGFuZ2VzSW1wbCh0aGlzLmNoYW5nZXMsIHBhY2thZ2VKc29uUGF0aCwgcGFyc2VkSnNvbik7XG4gICAgdGhpcy5hcHBsaWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlTm90QXBwbGllZCgpIHtcbiAgICBpZiAodGhpcy5hcHBsaWVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBhcHBseSBhIGBQYWNrYWdlSnNvblVwZGF0ZWAgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQuJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBBIGBQYWNrYWdlSnNvblVwZGF0ZXJgIHRoYXQgd3JpdGVzIGRpcmVjdGx5IHRvIHRoZSBmaWxlLXN5c3RlbS4gKi9cbmV4cG9ydCBjbGFzcyBEaXJlY3RQYWNrYWdlSnNvblVwZGF0ZXIgaW1wbGVtZW50cyBQYWNrYWdlSnNvblVwZGF0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZzOiBGaWxlU3lzdGVtKSB7fVxuXG4gIGNyZWF0ZVVwZGF0ZSgpOiBQYWNrYWdlSnNvblVwZGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBQYWNrYWdlSnNvblVwZGF0ZSgoLi4uYXJncykgPT4gdGhpcy53cml0ZUNoYW5nZXMoLi4uYXJncykpO1xuICB9XG5cbiAgd3JpdGVDaGFuZ2VzKFxuICAgICAgY2hhbmdlczogUGFja2FnZUpzb25DaGFuZ2VbXSwgcGFja2FnZUpzb25QYXRoOiBBYnNvbHV0ZUZzUGF0aCxcbiAgICAgIHByZUV4aXN0aW5nUGFyc2VkSnNvbj86IEpzb25PYmplY3QpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gY2hhbmdlcyB0byB3cml0ZSB0byAnJHtwYWNrYWdlSnNvblBhdGh9Jy5gKTtcbiAgICB9XG5cbiAgICAvLyBSZWFkIGFuZCBwYXJzZSB0aGUgYHBhY2thZ2UuanNvbmAgY29udGVudC5cbiAgICAvLyBOT1RFOiBXZSBhcmUgbm90IHVzaW5nIGBwcmVFeGlzdGluZ1BhcnNlZEpzb25gIChldmVuIGlmIHNwZWNpZmllZCkgdG8gYXZvaWQgY29ycnVwdGluZyB0aGVcbiAgICAvLyAgICAgICBjb250ZW50IG9uIGRpc2sgaW4gY2FzZSBgcHJlRXhpc3RpbmdQYXJzZWRKc29uYCBpcyBvdXRkYXRlZC5cbiAgICBjb25zdCBwYXJzZWRKc29uID1cbiAgICAgICAgdGhpcy5mcy5leGlzdHMocGFja2FnZUpzb25QYXRoKSA/IEpTT04ucGFyc2UodGhpcy5mcy5yZWFkRmlsZShwYWNrYWdlSnNvblBhdGgpKSA6IHt9O1xuXG4gICAgLy8gQXBwbHkgYWxsIGNoYW5nZXMgdG8gYm90aCB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIChyZWFkIGZyb20gZGlzaykgYW5kIGFueSBwcmUtZXhpc3RpbmcsXG4gICAgLy8gaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uLlxuICAgIGZvciAoY29uc3QgW3Byb3BQYXRoLCB2YWx1ZSwgcG9zaXRpb25pbmddIG9mIGNoYW5nZXMpIHtcbiAgICAgIGlmIChwcm9wUGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHByb3BlcnR5IHBhdGggZm9yIHdyaXRpbmcgdmFsdWUgdG8gJyR7cGFja2FnZUpzb25QYXRofScuYCk7XG4gICAgICB9XG5cbiAgICAgIGFwcGx5Q2hhbmdlKHBhcnNlZEpzb24sIHByb3BQYXRoLCB2YWx1ZSwgcG9zaXRpb25pbmcpO1xuXG4gICAgICBpZiAocHJlRXhpc3RpbmdQYXJzZWRKc29uKSB7XG4gICAgICAgIC8vIE5vIG5lZWQgdG8gdGFrZSBwcm9wZXJ0eSBwb3NpdGlvbmluZyBpbnRvIGFjY291bnQgZm9yIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbnMuXG4gICAgICAgIGFwcGx5Q2hhbmdlKHByZUV4aXN0aW5nUGFyc2VkSnNvbiwgcHJvcFBhdGgsIHZhbHVlLCAndW5pbXBvcnRhbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5IGV4aXN0cyAoaW4gY2FzZSB0aGlzIGlzIGEgc3ludGhlc2l6ZWQgYHBhY2thZ2UuanNvbmAgZHVlIHRvIGFcbiAgICAvLyBjdXN0b20gY29uZmlndXJhdGlvbikgYW5kIHdyaXRlIHRoZSB1cGRhdGVkIGNvbnRlbnQgdG8gZGlzay5cbiAgICB0aGlzLmZzLmVuc3VyZURpcihkaXJuYW1lKHBhY2thZ2VKc29uUGF0aCkpO1xuICAgIHRoaXMuZnMud3JpdGVGaWxlKHBhY2thZ2VKc29uUGF0aCwgYCR7SlNPTi5zdHJpbmdpZnkocGFyc2VkSnNvbiwgbnVsbCwgMil9XFxuYCk7XG4gIH1cbn1cblxuLy8gSGVscGVyc1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q2hhbmdlKFxuICAgIGN0eDogSnNvbk9iamVjdCwgcHJvcFBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogSnNvblZhbHVlLFxuICAgIHBvc2l0aW9uaW5nOiBQYWNrYWdlSnNvblByb3BlcnR5UG9zaXRpb25pbmcpOiB2b2lkIHtcbiAgY29uc3QgbGFzdFByb3BJZHggPSBwcm9wUGF0aC5sZW5ndGggLSAxO1xuICBjb25zdCBsYXN0UHJvcCA9IHByb3BQYXRoW2xhc3RQcm9wSWR4XTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxhc3RQcm9wSWR4OyBpKyspIHtcbiAgICBjb25zdCBrZXkgPSBwcm9wUGF0aFtpXTtcbiAgICBjb25zdCBuZXdDdHggPSBjdHguaGFzT3duUHJvcGVydHkoa2V5KSA/IGN0eFtrZXldIDogKGN0eFtrZXldID0ge30pO1xuXG4gICAgaWYgKCh0eXBlb2YgbmV3Q3R4ICE9PSAnb2JqZWN0JykgfHwgKG5ld0N0eCA9PT0gbnVsbCkgfHwgQXJyYXkuaXNBcnJheShuZXdDdHgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3BlcnR5IHBhdGggJyR7cHJvcFBhdGguam9pbignLicpfScgZG9lcyBub3QgcG9pbnQgdG8gYW4gb2JqZWN0LmApO1xuICAgIH1cblxuICAgIGN0eCA9IG5ld0N0eDtcbiAgfVxuXG4gIGN0eFtsYXN0UHJvcF0gPSB2YWx1ZTtcbiAgcG9zaXRpb25Qcm9wZXJ0eShjdHgsIGxhc3RQcm9wLCBwb3NpdGlvbmluZyk7XG59XG5cbmZ1bmN0aW9uIG1vdmVQcm9wQmVmb3JlKGN0eDogSnNvbk9iamVjdCwgcHJvcDogc3RyaW5nLCBpc05leHRQcm9wOiAocDogc3RyaW5nKSA9PiBib29sZWFuKTogdm9pZCB7XG4gIGNvbnN0IGFsbFByb3BzID0gT2JqZWN0LmtleXMoY3R4KTtcbiAgY29uc3Qgb3RoZXJQcm9wcyA9IGFsbFByb3BzLmZpbHRlcihwID0+IHAgIT09IHByb3ApO1xuICBjb25zdCBuZXh0UHJvcElkeCA9IG90aGVyUHJvcHMuZmluZEluZGV4KGlzTmV4dFByb3ApO1xuICBjb25zdCBwcm9wc1RvU2hpZnQgPSAobmV4dFByb3BJZHggPT09IC0xKSA/IFtdIDogb3RoZXJQcm9wcy5zbGljZShuZXh0UHJvcElkeCk7XG5cbiAgbW92ZVByb3BUb0VuZChjdHgsIHByb3ApO1xuICBwcm9wc1RvU2hpZnQuZm9yRWFjaChwID0+IG1vdmVQcm9wVG9FbmQoY3R4LCBwKSk7XG59XG5cbmZ1bmN0aW9uIG1vdmVQcm9wVG9FbmQoY3R4OiBKc29uT2JqZWN0LCBwcm9wOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgdmFsdWUgPSBjdHhbcHJvcF07XG4gIGRlbGV0ZSBjdHhbcHJvcF07XG4gIGN0eFtwcm9wXSA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvblByb3BlcnR5KFxuICAgIGN0eDogSnNvbk9iamVjdCwgcHJvcDogc3RyaW5nLCBwb3NpdGlvbmluZzogUGFja2FnZUpzb25Qcm9wZXJ0eVBvc2l0aW9uaW5nKTogdm9pZCB7XG4gIHN3aXRjaCAocG9zaXRpb25pbmcpIHtcbiAgICBjYXNlICdhbHBoYWJldGljJzpcbiAgICAgIG1vdmVQcm9wQmVmb3JlKGN0eCwgcHJvcCwgcCA9PiBwID4gcHJvcCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1bmltcG9ydGFudCc6XG4gICAgICAvLyBMZWF2ZSB0aGUgcHJvcGVydHkgb3JkZXIgdW5jaGFuZ2VkOyBpLmUuIG5ld2x5IGFkZGVkIHByb3BlcnRpZXMgd2lsbCBiZSBsYXN0IGFuZCBleGlzdGluZ1xuICAgICAgLy8gb25lcyB3aWxsIHJlbWFpbiBpbiB0aGVpciBvbGQgcG9zaXRpb24uXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgaWYgKCh0eXBlb2YgcG9zaXRpb25pbmcgIT09ICdvYmplY3QnKSB8fCAocG9zaXRpb25pbmcuYmVmb3JlID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBVbmtub3duIHBvc2l0aW9uaW5nICgke0pTT04uc3RyaW5naWZ5KHBvc2l0aW9uaW5nKX0pIGZvciBwcm9wZXJ0eSAnJHtwcm9wfScuYCk7XG4gICAgICB9XG5cbiAgICAgIG1vdmVQcm9wQmVmb3JlKGN0eCwgcHJvcCwgcCA9PiBwID09PSBwb3NpdGlvbmluZy5iZWZvcmUpO1xuICAgICAgYnJlYWs7XG4gIH1cbn1cbiJdfQ==
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZV9qc29uX3VwZGF0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBRUgsMkVBQW1GO0lBK0NuRjs7Ozs7O09BTUc7SUFDSDtRQUlFLDJCQUFvQixnQkFBMkM7WUFBM0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEyQjtZQUh2RCxZQUFPLEdBQXdCLEVBQUUsQ0FBQztZQUNsQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRTBDLENBQUM7UUFFbkU7Ozs7Ozs7Ozs7Ozs7Ozs7V0FnQkc7UUFDSCxxQ0FBUyxHQUFULFVBQ0ksWUFBc0IsRUFBRSxLQUFnQixFQUN4QyxXQUEyRDtZQUEzRCw0QkFBQSxFQUFBLDJCQUEyRDtZQUM3RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRDs7Ozs7OztXQU9HO1FBQ0gsd0NBQVksR0FBWixVQUFhLGVBQStCLEVBQUUsVUFBdUI7WUFDbkUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7UUFFTyw0Q0FBZ0IsR0FBeEI7WUFDRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENB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U0FBUyxhQUFhLENBQUMsR0FBZSxFQUFFLElBQVk7UUFDbEQsSUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVMsZ0JBQWdCLENBQ3JCLEdBQWUsRUFBRSxJQUFZLEVBQUUsV0FBMkM7UUFDNUUsUUFBUSxXQUFXLEVBQUU7WUFDbkIsS0FBSyxZQUFZO2dCQUNmLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxHQUFHLElBQUksRUFBUixDQUFRLENBQUMsQ0FBQztnQkFDekMsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsNEZBQTRGO2dCQUM1RiwwQ0FBMEM7Z0JBQzFDLE1BQU07WUFDUjtnQkFDRSxJQUFJLENBQUMsT0FBTyxXQUFXLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxFQUFFO29CQUMzRSxNQUFNLElBQUksS0FBSyxDQUNYLDBCQUF3QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyx3QkFBbUIsSUFBSSxPQUFJLENBQUMsQ0FBQztpQkFDckY7Z0JBRUQsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLEtBQUssV0FBVyxDQUFDLE1BQU0sRUFBeEIsQ0FBd0IsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNO1NBQ1Q7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIGRpcm5hbWUsIEZpbGVTeXN0ZW19IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0pzb25PYmplY3QsIEpzb25WYWx1ZX0gZnJvbSAnLi4vcGFja2FnZXMvZW50cnlfcG9pbnQnO1xuXG5cbmV4cG9ydCB0eXBlIFBhY2thZ2VKc29uQ2hhbmdlID0gW3N0cmluZ1tdLCBKc29uVmFsdWUsIFBhY2thZ2VKc29uUHJvcGVydHlQb3NpdGlvbmluZ107XG5leHBvcnQgdHlwZSBQYWNrYWdlSnNvblByb3BlcnR5UG9zaXRpb25pbmcgPSAndW5pbXBvcnRhbnQnfCdhbHBoYWJldGljJ3x7YmVmb3JlOiBzdHJpbmd9O1xuZXhwb3J0IHR5cGUgV3JpdGVQYWNrYWdlSnNvbkNoYW5nZXNGbiA9XG4gICAgKGNoYW5nZXM6IFBhY2thZ2VKc29uQ2hhbmdlW10sIHBhY2thZ2VKc29uUGF0aDogQWJzb2x1dGVGc1BhdGgsIHBhcnNlZEpzb24/OiBKc29uT2JqZWN0KSA9PlxuICAgICAgICB2b2lkO1xuXG4vKipcbiAqIEEgdXRpbGl0eSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBzYWZlbHkgdXBkYXRlIHZhbHVlcyBpbiBhIGBwYWNrYWdlLmpzb25gIGZpbGUuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqIGBgYHRzXG4gKiBjb25zdCB1cGRhdGVQYWNrYWdlSnNvbiA9IHBhY2thZ2VKc29uVXBkYXRlclxuICogICAgIC5jcmVhdGVVcGRhdGUoKVxuICogICAgIC5hZGRDaGFuZ2UoWyduYW1lJ10sICdwYWNrYWdlLWZvbycpXG4gKiAgICAgLmFkZENoYW5nZShbJ3NjcmlwdHMnLCAnZm9vJ10sICdlY2hvIEZPT09PLi4uJywgJ3VuaW1wb3J0YW50JylcbiAqICAgICAuYWRkQ2hhbmdlKFsnZGVwZW5kZW5jaWVzJywgJ2JheiddLCAnMS4wLjAnLCAnYWxwaGFiZXRpYycpXG4gKiAgICAgLmFkZENoYW5nZShbJ2RlcGVuZGVuY2llcycsICdiYXInXSwgJzIuMC4wJywge2JlZm9yZTogJ2Jheid9KVxuICogICAgIC53cml0ZUNoYW5nZXMoJy9mb28vcGFja2FnZS5qc29uJyk7XG4gKiAgICAgLy8gb3JcbiAqICAgICAvLyAud3JpdGVDaGFuZ2VzKCcvZm9vL3BhY2thZ2UuanNvbicsIGluTWVtb3J5UGFyc2VkSnNvbik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlSnNvblVwZGF0ZXIge1xuICAvKipcbiAgICogQ3JlYXRlIGEgYFBhY2thZ2VKc29uVXBkYXRlYCBvYmplY3QsIHdoaWNoIHByb3ZpZGVzIGEgZmx1ZW50IEFQSSBmb3IgYmF0Y2hpbmcgdXBkYXRlcyB0byBhXG4gICAqIGBwYWNrYWdlLmpzb25gIGZpbGUuIChCYXRjaGluZyB0aGUgdXBkYXRlcyBpcyB1c2VmdWwsIGJlY2F1c2UgaXQgYXZvaWRzIHVubmVjZXNzYXJ5IEkvT1xuICAgKiBvcGVyYXRpb25zLilcbiAgICovXG4gIGNyZWF0ZVVwZGF0ZSgpOiBQYWNrYWdlSnNvblVwZGF0ZTtcblxuICAvKipcbiAgICogV3JpdGUgYSBzZXQgb2YgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGBwYWNrYWdlLmpzb25gIGZpbGUgKGFuZCBvcHRpb25hbGx5IGEgcHJlLWV4aXN0aW5nLFxuICAgKiBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgaXQpLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbmdlcyBUaGUgc2V0IG9mIGNoYW5nZXMgdG8gYXBwbHkuXG4gICAqIEBwYXJhbSBwYWNrYWdlSnNvblBhdGggVGhlIHBhdGggdG8gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkLlxuICAgKiBAcGFyYW0gcGFyc2VkSnNvbiBBIHByZS1leGlzdGluZywgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlIHRoYXRcbiAgICogICAgICAgICAgICAgICAgICAgbmVlZHMgdG8gYmUgdXBkYXRlZCBhcyB3ZWxsLlxuICAgKi9cbiAgd3JpdGVDaGFuZ2VzKFxuICAgICAgY2hhbmdlczogUGFja2FnZUpzb25DaGFuZ2VbXSwgcGFja2FnZUpzb25QYXRoOiBBYnNvbHV0ZUZzUGF0aCwgcGFyc2VkSnNvbj86IEpzb25PYmplY3QpOiB2b2lkO1xufVxuXG4vKipcbiAqIEEgdXRpbGl0eSBjbGFzcyBwcm92aWRpbmcgYSBmbHVlbnQgQVBJIGZvciByZWNvcmRpbmcgbXVsdGlwbGUgY2hhbmdlcyB0byBhIGBwYWNrYWdlLmpzb25gIGZpbGVcbiAqIChhbmQgb3B0aW9uYWxseSBpdHMgaW4tbWVtb3J5IHBhcnNlZCByZXByZXNlbnRhdGlvbikuXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBzaG91bGQgZ2VuZXJhbGx5IG5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHk7IGluc3RhbmNlcyBhcmUgaW1wbGljaXRseSBjcmVhdGVkXG4gKiAgICAgICB2aWEgYFBhY2thZ2VKc29uVXBkYXRlciNjcmVhdGVVcGRhdGUoKWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYWNrYWdlSnNvblVwZGF0ZSB7XG4gIHByaXZhdGUgY2hhbmdlczogUGFja2FnZUpzb25DaGFuZ2VbXSA9IFtdO1xuICBwcml2YXRlIGFwcGxpZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdyaXRlQ2hhbmdlc0ltcGw6IFdyaXRlUGFja2FnZUpzb25DaGFuZ2VzRm4pIHt9XG5cbiAgLyoqXG4gICAqIFJlY29yZCBhIGNoYW5nZSB0byBhIGBwYWNrYWdlLmpzb25gIHByb3BlcnR5LlxuICAgKlxuICAgKiBJZiB0aGUgYW5jZXN0b3Igb2JqZWN0cyBkbyBub3QgeWV0IGV4aXN0IGluIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlLCB0aGV5IHdpbGwgYmUgY3JlYXRlZC4gVGhlXG4gICAqIHBvc2l0aW9uaW5nIG9mIHRoZSBwcm9wZXJ0eSBjYW4gYWxzbyBiZSBzcGVjaWZpZWQuIChJZiB0aGUgcHJvcGVydHkgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmVcbiAgICogbW92ZWQgYWNjb3JkaW5nbHkuKVxuICAgKlxuICAgKiBOT1RFOiBQcm9wZXJ0eSBwb3NpdGlvbmluZyBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gYmUgcmVzcGVjdGVkIGluIHRoZSBzZXJpYWxpemVkIGBwYWNrYWdlLmpzb25gXG4gICAqICAgICAgIGZpbGUuIFBvc2l0aW9uaW5nIHdpbGwgbm90IGJlIHRha2VuIGludG8gYWNjb3VudCB3aGVuIHVwZGF0aW5nIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbnMuXG4gICAqXG4gICAqIE5PVEUgMjogUHJvcGVydHkgcG9zaXRpb25pbmcgb25seSBhZmZlY3RzIHRoZSBsYXN0IHByb3BlcnR5IGluIGBwcm9wZXJ0eVBhdGhgLiBBbmNlc3RvclxuICAgKiAgICAgICAgIG9iamVjdHMnIHBvc2l0aW9uaW5nIHdpbGwgbm90IGJlIGFmZmVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcGVydHlQYXRoIFRoZSBwYXRoIG9mIGEgKHBvc3NpYmx5IG5lc3RlZCkgcHJvcGVydHkgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgdmFsdWUgdG8gc2V0IHRoZSBwcm9wZXJ0eSB0by5cbiAgICogQHBhcmFtIHBvc2l0aW9uIFRoZSBkZXNpcmVkIHBvc2l0aW9uIGZvciB0aGUgYWRkZWQvdXBkYXRlZCBwcm9wZXJ0eS5cbiAgICovXG4gIGFkZENoYW5nZShcbiAgICAgIHByb3BlcnR5UGF0aDogc3RyaW5nW10sIHZhbHVlOiBKc29uVmFsdWUsXG4gICAgICBwb3NpdGlvbmluZzogUGFja2FnZUpzb25Qcm9wZXJ0eVBvc2l0aW9uaW5nID0gJ3VuaW1wb3J0YW50Jyk6IHRoaXMge1xuICAgIHRoaXMuZW5zdXJlTm90QXBwbGllZCgpO1xuICAgIHRoaXMuY2hhbmdlcy5wdXNoKFtwcm9wZXJ0eVBhdGgsIHZhbHVlLCBwb3NpdGlvbmluZ10pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSByZWNvcmRlZCBjaGFuZ2VzIHRvIHRoZSBhc3NvY2lhdGVkIGBwYWNrYWdlLmpzb25gIGZpbGUgKGFuZCBvcHRpb25hbGx5IGFcbiAgICogcHJlLWV4aXN0aW5nLCBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgaXQpLlxuICAgKlxuICAgKiBAcGFyYW0gcGFja2FnZUpzb25QYXRoIFRoZSBwYXRoIHRvIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlIHRoYXQgbmVlZHMgdG8gYmUgdXBkYXRlZC5cbiAgICogQHBhcmFtIHBhcnNlZEpzb24gQSBwcmUtZXhpc3RpbmcsIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZSB0aGF0XG4gICAqICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC5cbiAgICovXG4gIHdyaXRlQ2hhbmdlcyhwYWNrYWdlSnNvblBhdGg6IEFic29sdXRlRnNQYXRoLCBwYXJzZWRKc29uPzogSnNvbk9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTm90QXBwbGllZCgpO1xuICAgIHRoaXMud3JpdGVDaGFuZ2VzSW1wbCh0aGlzLmNoYW5nZXMsIHBhY2thZ2VKc29uUGF0aCwgcGFyc2VkSnNvbik7XG4gICAgdGhpcy5hcHBsaWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlTm90QXBwbGllZCgpIHtcbiAgICBpZiAodGhpcy5hcHBsaWVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBhcHBseSBhIGBQYWNrYWdlSnNvblVwZGF0ZWAgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQuJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBBIGBQYWNrYWdlSnNvblVwZGF0ZXJgIHRoYXQgd3JpdGVzIGRpcmVjdGx5IHRvIHRoZSBmaWxlLXN5c3RlbS4gKi9cbmV4cG9ydCBjbGFzcyBEaXJlY3RQYWNrYWdlSnNvblVwZGF0ZXIgaW1wbGVtZW50cyBQYWNrYWdlSnNvblVwZGF0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZzOiBGaWxlU3lzdGVtKSB7fVxuXG4gIGNyZWF0ZVVwZGF0ZSgpOiBQYWNrYWdlSnNvblVwZGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBQYWNrYWdlSnNvblVwZGF0ZSgoLi4uYXJncykgPT4gdGhpcy53cml0ZUNoYW5nZXMoLi4uYXJncykpO1xuICB9XG5cbiAgd3JpdGVDaGFuZ2VzKFxuICAgICAgY2hhbmdlczogUGFja2FnZUpzb25DaGFuZ2VbXSwgcGFja2FnZUpzb25QYXRoOiBBYnNvbHV0ZUZzUGF0aCxcbiAgICAgIHByZUV4aXN0aW5nUGFyc2VkSnNvbj86IEpzb25PYmplY3QpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gY2hhbmdlcyB0byB3cml0ZSB0byAnJHtwYWNrYWdlSnNvblBhdGh9Jy5gKTtcbiAgICB9XG5cbiAgICAvLyBSZWFkIGFuZCBwYXJzZSB0aGUgYHBhY2thZ2UuanNvbmAgY29udGVudC5cbiAgICAvLyBOT1RFOiBXZSBhcmUgbm90IHVzaW5nIGBwcmVFeGlzdGluZ1BhcnNlZEpzb25gIChldmVuIGlmIHNwZWNpZmllZCkgdG8gYXZvaWQgY29ycnVwdGluZyB0aGVcbiAgICAvLyAgICAgICBjb250ZW50IG9uIGRpc2sgaW4gY2FzZSBgcHJlRXhpc3RpbmdQYXJzZWRKc29uYCBpcyBvdXRkYXRlZC5cbiAgICBjb25zdCBwYXJzZWRKc29uID0gdGhpcy5mcy5leGlzdHMocGFja2FnZUpzb25QYXRoKSA/XG4gICAgICAgIEpTT04ucGFyc2UodGhpcy5mcy5yZWFkRmlsZShwYWNrYWdlSnNvblBhdGgpKSBhcyBKc29uT2JqZWN0IDpcbiAgICAgICAge307XG5cbiAgICAvLyBBcHBseSBhbGwgY2hhbmdlcyB0byBib3RoIHRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gKHJlYWQgZnJvbSBkaXNrKSBhbmQgYW55IHByZS1leGlzdGluZyxcbiAgICAvLyBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24uXG4gICAgZm9yIChjb25zdCBbcHJvcFBhdGgsIHZhbHVlLCBwb3NpdGlvbmluZ10gb2YgY2hhbmdlcykge1xuICAgICAgaWYgKHByb3BQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgcHJvcGVydHkgcGF0aCBmb3Igd3JpdGluZyB2YWx1ZSB0byAnJHtwYWNrYWdlSnNvblBhdGh9Jy5gKTtcbiAgICAgIH1cblxuICAgICAgYXBwbHlDaGFuZ2UocGFyc2VkSnNvbiwgcHJvcFBhdGgsIHZhbHVlLCBwb3NpdGlvbmluZyk7XG5cbiAgICAgIGlmIChwcmVFeGlzdGluZ1BhcnNlZEpzb24pIHtcbiAgICAgICAgLy8gTm8gbmVlZCB0byB0YWtlIHByb3BlcnR5IHBvc2l0aW9uaW5nIGludG8gYWNjb3VudCBmb3IgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9ucy5cbiAgICAgICAgYXBwbHlDaGFuZ2UocHJlRXhpc3RpbmdQYXJzZWRKc29uLCBwcm9wUGF0aCwgdmFsdWUsICd1bmltcG9ydGFudCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGUgY29udGFpbmluZyBkaXJlY3RvcnkgZXhpc3RzIChpbiBjYXNlIHRoaXMgaXMgYSBzeW50aGVzaXplZCBgcGFja2FnZS5qc29uYCBkdWUgdG8gYVxuICAgIC8vIGN1c3RvbSBjb25maWd1cmF0aW9uKSBhbmQgd3JpdGUgdGhlIHVwZGF0ZWQgY29udGVudCB0byBkaXNrLlxuICAgIHRoaXMuZnMuZW5zdXJlRGlyKGRpcm5hbWUocGFja2FnZUpzb25QYXRoKSk7XG4gICAgdGhpcy5mcy53cml0ZUZpbGUocGFja2FnZUpzb25QYXRoLCBgJHtKU09OLnN0cmluZ2lmeShwYXJzZWRKc29uLCBudWxsLCAyKX1cXG5gKTtcbiAgfVxufVxuXG4vLyBIZWxwZXJzXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlDaGFuZ2UoXG4gICAgY3R4OiBKc29uT2JqZWN0LCBwcm9wUGF0aDogc3RyaW5nW10sIHZhbHVlOiBKc29uVmFsdWUsXG4gICAgcG9zaXRpb25pbmc6IFBhY2thZ2VKc29uUHJvcGVydHlQb3NpdGlvbmluZyk6IHZvaWQge1xuICBjb25zdCBsYXN0UHJvcElkeCA9IHByb3BQYXRoLmxlbmd0aCAtIDE7XG4gIGNvbnN0IGxhc3RQcm9wID0gcHJvcFBhdGhbbGFzdFByb3BJZHhdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGFzdFByb3BJZHg7IGkrKykge1xuICAgIGNvbnN0IGtleSA9IHByb3BQYXRoW2ldO1xuICAgIGNvbnN0IG5ld0N0eCA9IGN0eC5oYXNPd25Qcm9wZXJ0eShrZXkpID8gY3R4W2tleV0gOiAoY3R4W2tleV0gPSB7fSk7XG5cbiAgICBpZiAoKHR5cGVvZiBuZXdDdHggIT09ICdvYmplY3QnKSB8fCAobmV3Q3R4ID09PSBudWxsKSB8fCBBcnJheS5pc0FycmF5KG5ld0N0eCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgcGF0aCAnJHtwcm9wUGF0aC5qb2luKCcuJyl9JyBkb2VzIG5vdCBwb2ludCB0byBhbiBvYmplY3QuYCk7XG4gICAgfVxuXG4gICAgY3R4ID0gbmV3Q3R4O1xuICB9XG5cbiAgY3R4W2xhc3RQcm9wXSA9IHZhbHVlO1xuICBwb3NpdGlvblByb3BlcnR5KGN0eCwgbGFzdFByb3AsIHBvc2l0aW9uaW5nKTtcbn1cblxuZnVuY3Rpb24gbW92ZVByb3BCZWZvcmUoY3R4OiBKc29uT2JqZWN0LCBwcm9wOiBzdHJpbmcsIGlzTmV4dFByb3A6IChwOiBzdHJpbmcpID0+IGJvb2xlYW4pOiB2b2lkIHtcbiAgY29uc3QgYWxsUHJvcHMgPSBPYmplY3Qua2V5cyhjdHgpO1xuICBjb25zdCBvdGhlclByb3BzID0gYWxsUHJvcHMuZmlsdGVyKHAgPT4gcCAhPT0gcHJvcCk7XG4gIGNvbnN0IG5leHRQcm9wSWR4ID0gb3RoZXJQcm9wcy5maW5kSW5kZXgoaXNOZXh0UHJvcCk7XG4gIGNvbnN0IHByb3BzVG9TaGlmdCA9IChuZXh0UHJvcElkeCA9PT0gLTEpID8gW10gOiBvdGhlclByb3BzLnNsaWNlKG5leHRQcm9wSWR4KTtcblxuICBtb3ZlUHJvcFRvRW5kKGN0eCwgcHJvcCk7XG4gIHByb3BzVG9TaGlmdC5mb3JFYWNoKHAgPT4gbW92ZVByb3BUb0VuZChjdHgsIHApKTtcbn1cblxuZnVuY3Rpb24gbW92ZVByb3BUb0VuZChjdHg6IEpzb25PYmplY3QsIHByb3A6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCB2YWx1ZSA9IGN0eFtwcm9wXTtcbiAgZGVsZXRlIGN0eFtwcm9wXTtcbiAgY3R4W3Byb3BdID0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uUHJvcGVydHkoXG4gICAgY3R4OiBKc29uT2JqZWN0LCBwcm9wOiBzdHJpbmcsIHBvc2l0aW9uaW5nOiBQYWNrYWdlSnNvblByb3BlcnR5UG9zaXRpb25pbmcpOiB2b2lkIHtcbiAgc3dpdGNoIChwb3NpdGlvbmluZykge1xuICAgIGNhc2UgJ2FscGhhYmV0aWMnOlxuICAgICAgbW92ZVByb3BCZWZvcmUoY3R4LCBwcm9wLCBwID0+IHAgPiBwcm9wKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3VuaW1wb3J0YW50JzpcbiAgICAgIC8vIExlYXZlIHRoZSBwcm9wZXJ0eSBvcmRlciB1bmNoYW5nZWQ7IGkuZS4gbmV3bHkgYWRkZWQgcHJvcGVydGllcyB3aWxsIGJlIGxhc3QgYW5kIGV4aXN0aW5nXG4gICAgICAvLyBvbmVzIHdpbGwgcmVtYWluIGluIHRoZWlyIG9sZCBwb3NpdGlvbi5cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAoKHR5cGVvZiBwb3NpdGlvbmluZyAhPT0gJ29iamVjdCcpIHx8IChwb3NpdGlvbmluZy5iZWZvcmUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFVua25vd24gcG9zaXRpb25pbmcgKCR7SlNPTi5zdHJpbmdpZnkocG9zaXRpb25pbmcpfSkgZm9yIHByb3BlcnR5ICcke3Byb3B9Jy5gKTtcbiAgICAgIH1cblxuICAgICAgbW92ZVByb3BCZWZvcmUoY3R4LCBwcm9wLCBwID0+IHAgPT09IHBvc2l0aW9uaW5nLmJlZm9yZSk7XG4gICAgICBicmVhaztcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/compiler-cli",
3
- "version": "11.2.0-rc.0",
3
+ "version": "11.2.0",
4
4
  "description": "Angular - the compiler CLI for Node.js",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -28,7 +28,7 @@
28
28
  "yargs": "^16.1.1"
29
29
  },
30
30
  "peerDependencies": {
31
- "@angular/compiler": "11.2.0-rc.0",
31
+ "@angular/compiler": "11.2.0",
32
32
  "typescript": ">=4.0 <4.2"
33
33
  },
34
34
  "engines": {
@@ -51,9 +51,9 @@ export interface ComponentAnalysisData {
51
51
  viewProvidersRequiringFactory: Set<Reference<ClassDeclaration>> | null;
52
52
  resources: ComponentResources;
53
53
  /**
54
- * The literal `styleUrls` extracted from the decorator, if present.
54
+ * `styleUrls` extracted from the decorator, if present.
55
55
  */
56
- styleUrls: string[] | null;
56
+ styleUrls: StyleUrlMeta[] | null;
57
57
  /**
58
58
  * Inline stylesheets extracted from the decorator, if present.
59
59
  */
@@ -61,6 +61,28 @@ export interface ComponentAnalysisData {
61
61
  isPoisoned: boolean;
62
62
  }
63
63
  export declare type ComponentResolutionData = Pick<R3ComponentMetadata, ComponentMetadataResolvedFields>;
64
+ /**
65
+ * The literal style url extracted from the decorator, along with metadata for diagnostics.
66
+ */
67
+ export interface StyleUrlMeta {
68
+ url: string;
69
+ nodeForError: ts.Node;
70
+ source: ResourceTypeForDiagnostics.StylesheetFromTemplate | ResourceTypeForDiagnostics.StylesheetFromDecorator;
71
+ }
72
+ /**
73
+ * Information about the origin of a resource in the application code. This is used for creating
74
+ * diagnostics, so we can point to the root cause of an error in the application code.
75
+ *
76
+ * A template resource comes from the `templateUrl` property on the component decorator.
77
+ *
78
+ * Stylesheets resources can come from either the `styleUrls` property on the component decorator,
79
+ * or from inline `style` tags and style links on the external template.
80
+ */
81
+ export declare const enum ResourceTypeForDiagnostics {
82
+ Template = 0,
83
+ StylesheetFromTemplate = 1,
84
+ StylesheetFromDecorator = 2
85
+ }
64
86
  /**
65
87
  * `DecoratorHandler` which handles the `@Component` annotation.
66
88
  */
@@ -112,7 +134,8 @@ export declare class ComponentDecoratorHandler implements DecoratorHandler<Decor
112
134
  private compileComponent;
113
135
  private _resolveLiteral;
114
136
  private _resolveEnumValue;
115
- private _extractStyleUrls;
137
+ private _extractComponentStyleUrls;
138
+ private _extractStyleUrlsFromExpression;
116
139
  private _extractStyleResources;
117
140
  private _preloadAndParseTemplate;
118
141
  private extractTemplate;
@@ -121,6 +144,13 @@ export declare class ComponentDecoratorHandler implements DecoratorHandler<Decor
121
144
  private _expressionToImportedFile;
122
145
  private _isCyclicImport;
123
146
  private _recordSyntheticImport;
147
+ /**
148
+ * Resolve the url of a resource relative to the file that contains the reference to it.
149
+ *
150
+ * Throws a FatalDiagnosticError when unable to resolve the file.
151
+ */
152
+ private _resolveResourceOrThrow;
153
+ private _extractTemplateStyleUrls;
124
154
  }
125
155
  /**
126
156
  * Information about the template which was extracted during parsing.