@angular/compiler-cli 10.1.0-rc.0 → 10.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ngcc/src/execution/create_compile_function.js +6 -3
- package/ngcc/src/host/esm2015_host.d.ts +18 -0
- package/ngcc/src/host/esm2015_host.js +53 -31
- package/ngcc/src/main.js +9 -12
- package/ngcc/src/ngcc_options.d.ts +8 -7
- package/ngcc/src/ngcc_options.js +27 -3
- package/ngcc/src/packages/build_marker.d.ts +1 -1
- package/ngcc/src/packages/build_marker.js +1 -1
- package/ngcc/src/packages/entry_point_bundle.d.ts +12 -1
- package/ngcc/src/packages/entry_point_bundle.js +9 -6
- package/ngcc/src/packages/ngcc_compiler_host.d.ts +16 -1
- package/ngcc/src/packages/ngcc_compiler_host.js +35 -5
- package/ngcc/src/packages/source_file_cache.d.ts +97 -0
- package/ngcc/src/packages/source_file_cache.js +207 -0
- package/ngcc/src/rendering/renderer.js +9 -10
- package/package.json +2 -2
- package/src/ngtsc/annotations/src/component.d.ts +4 -1
- package/src/ngtsc/annotations/src/component.js +94 -122
- package/src/ngtsc/annotations/src/directive.d.ts +5 -1
- package/src/ngtsc/annotations/src/directive.js +21 -11
- package/src/ngtsc/annotations/src/typecheck_scopes.d.ts +56 -0
- package/src/ngtsc/annotations/src/typecheck_scopes.js +109 -0
- package/src/ngtsc/annotations/src/util.js +4 -2
- package/src/ngtsc/core/src/compiler.js +4 -3
- package/src/ngtsc/diagnostics/src/error_code.d.ts +4 -0
- package/src/ngtsc/diagnostics/src/error_code.js +5 -1
- package/src/ngtsc/file_system/src/invalid_file_system.d.ts +2 -2
- package/src/ngtsc/file_system/src/invalid_file_system.js +1 -1
- package/src/ngtsc/file_system/src/node_js_file_system.d.ts +2 -2
- package/src/ngtsc/file_system/src/node_js_file_system.js +1 -1
- package/src/ngtsc/file_system/src/types.d.ts +2 -2
- package/src/ngtsc/file_system/src/types.js +1 -1
- package/src/ngtsc/file_system/testing/src/mock_file_system.d.ts +3 -3
- package/src/ngtsc/file_system/testing/src/mock_file_system.js +2 -2
- package/src/ngtsc/indexer/src/template.js +10 -24
- package/src/ngtsc/metadata/index.d.ts +2 -0
- package/src/ngtsc/metadata/index.js +7 -3
- package/src/ngtsc/metadata/src/api.d.ts +13 -4
- package/src/ngtsc/metadata/src/api.js +1 -1
- package/src/ngtsc/metadata/src/dts.js +7 -4
- package/src/ngtsc/metadata/src/inheritance.d.ts +1 -1
- package/src/ngtsc/metadata/src/inheritance.js +10 -6
- package/src/ngtsc/metadata/src/property_mapping.d.ts +117 -0
- package/src/ngtsc/metadata/src/property_mapping.js +244 -0
- package/src/ngtsc/metadata/src/util.d.ts +2 -3
- package/src/ngtsc/metadata/src/util.js +9 -9
- package/src/ngtsc/modulewithproviders/src/scanner.js +2 -2
- package/src/ngtsc/reflection/src/host.d.ts +1 -1
- package/src/ngtsc/reflection/src/host.js +1 -1
- package/src/ngtsc/reflection/src/type_to_value.js +6 -2
- package/src/ngtsc/scope/src/local.d.ts +1 -0
- package/src/ngtsc/scope/src/local.js +2 -1
- package/src/ngtsc/translator/index.d.ts +1 -1
- package/src/ngtsc/translator/index.js +3 -2
- package/src/ngtsc/translator/src/translator.d.ts +8 -1
- package/src/ngtsc/translator/src/translator.js +185 -111
- package/src/ngtsc/typecheck/api/api.d.ts +3 -1
- package/src/ngtsc/typecheck/api/api.js +1 -1
- package/src/ngtsc/typecheck/diagnostics/index.d.ts +10 -0
- package/src/ngtsc/typecheck/diagnostics/index.js +23 -0
- package/src/ngtsc/typecheck/diagnostics/src/diagnostic.d.ts +33 -0
- package/src/ngtsc/typecheck/diagnostics/src/diagnostic.js +114 -0
- package/src/ngtsc/typecheck/diagnostics/src/id.d.ts +11 -0
- package/src/ngtsc/typecheck/diagnostics/src/id.js +37 -0
- package/src/ngtsc/typecheck/index.d.ts +0 -1
- package/src/ngtsc/typecheck/index.js +3 -5
- package/src/ngtsc/typecheck/src/checker.js +1 -1
- package/src/ngtsc/typecheck/src/context.d.ts +1 -1
- package/src/ngtsc/typecheck/src/context.js +3 -3
- package/src/ngtsc/typecheck/src/diagnostics.d.ts +1 -22
- package/src/ngtsc/typecheck/src/diagnostics.js +5 -96
- package/src/ngtsc/typecheck/src/dom.d.ts +2 -1
- package/src/ngtsc/typecheck/src/dom.js +3 -3
- package/src/ngtsc/typecheck/src/environment.js +4 -4
- package/src/ngtsc/typecheck/src/oob.d.ts +2 -1
- package/src/ngtsc/typecheck/src/oob.js +3 -3
- package/src/ngtsc/typecheck/src/source.js +5 -18
- package/src/ngtsc/typecheck/src/type_check_block.js +49 -95
- package/src/transformers/node_emitter.d.ts +2 -8
- package/src/transformers/node_emitter.js +54 -68
- package/src/transformers/node_emitter_transform.js +8 -8
- package/src/transformers/util.d.ts +6 -0
- package/src/transformers/util.js +11 -2
- package/src/version.js +1 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/// <amd-module name="@angular/compiler-cli/ngcc/src/packages/source_file_cache" />
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
import * as ts from 'typescript';
|
|
10
|
+
import { AbsoluteFsPath, FileSystem } from '../../../src/ngtsc/file_system';
|
|
11
|
+
/**
|
|
12
|
+
* A cache that holds on to source files that can be shared for processing all entry-points in a
|
|
13
|
+
* single invocation of ngcc. In particular, the following files are shared across all entry-points
|
|
14
|
+
* through this cache:
|
|
15
|
+
*
|
|
16
|
+
* 1. Default library files such as `lib.dom.d.ts` and `lib.es5.d.ts`. These files don't change
|
|
17
|
+
* and some are very large, so parsing is expensive. Therefore, the parsed `ts.SourceFile`s for
|
|
18
|
+
* the default library files are cached.
|
|
19
|
+
* 2. The typings of @angular scoped packages. The typing files for @angular packages are typically
|
|
20
|
+
* used in the entry-points that ngcc processes, so benefit from a single source file cache.
|
|
21
|
+
* Especially `@angular/core/core.d.ts` is large and expensive to parse repeatedly. In contrast
|
|
22
|
+
* to default library files, we have to account for these files to be invalidated during a single
|
|
23
|
+
* invocation of ngcc, as ngcc will overwrite the .d.ts files during its processing.
|
|
24
|
+
*
|
|
25
|
+
* The lifecycle of this cache corresponds with a single invocation of ngcc. Separate invocations,
|
|
26
|
+
* e.g. the CLI's synchronous module resolution fallback will therefore all have their own cache.
|
|
27
|
+
* This allows for the source file cache to be garbage collected once ngcc processing has completed.
|
|
28
|
+
*/
|
|
29
|
+
export declare class SharedFileCache {
|
|
30
|
+
private fs;
|
|
31
|
+
private sfCache;
|
|
32
|
+
constructor(fs: FileSystem);
|
|
33
|
+
/**
|
|
34
|
+
* Loads a `ts.SourceFile` if the provided `fileName` is deemed appropriate to be cached. To
|
|
35
|
+
* optimize for memory usage, only files that are generally used in all entry-points are cached.
|
|
36
|
+
* If `fileName` is not considered to benefit from caching or the requested file does not exist,
|
|
37
|
+
* then `undefined` is returned.
|
|
38
|
+
*/
|
|
39
|
+
getCachedSourceFile(fileName: string): ts.SourceFile | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Attempts to load the source file from the cache, or parses the file into a `ts.SourceFile` if
|
|
42
|
+
* it's not yet cached. This method assumes that the file will not be modified for the duration
|
|
43
|
+
* that this cache is valid for. If that assumption does not hold, the `getVolatileCachedFile`
|
|
44
|
+
* method is to be used instead.
|
|
45
|
+
*/
|
|
46
|
+
private getStableCachedFile;
|
|
47
|
+
/**
|
|
48
|
+
* In contrast to `getStableCachedFile`, this method always verifies that the cached source file
|
|
49
|
+
* is the same as what's stored on disk. This is done for files that are expected to change during
|
|
50
|
+
* ngcc's processing, such as @angular scoped packages for which the .d.ts files are overwritten
|
|
51
|
+
* by ngcc. If the contents on disk have changed compared to a previously cached source file, the
|
|
52
|
+
* content from disk is re-parsed and the cache entry is replaced.
|
|
53
|
+
*/
|
|
54
|
+
private getVolatileCachedFile;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Determines whether the provided path corresponds with a default library file inside of the
|
|
58
|
+
* typescript package.
|
|
59
|
+
*
|
|
60
|
+
* @param absPath The path for which to determine if it corresponds with a default library file.
|
|
61
|
+
* @param fs The filesystem to use for inspecting the path.
|
|
62
|
+
*/
|
|
63
|
+
export declare function isDefaultLibrary(absPath: AbsoluteFsPath, fs: FileSystem): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Determines whether the provided path corresponds with a .d.ts file inside of an @angular
|
|
66
|
+
* scoped package. This logic only accounts for the .d.ts files in the root, which is sufficient
|
|
67
|
+
* to find the large, flattened entry-point files that benefit from caching.
|
|
68
|
+
*
|
|
69
|
+
* @param absPath The path for which to determine if it corresponds with an @angular .d.ts file.
|
|
70
|
+
* @param fs The filesystem to use for inspecting the path.
|
|
71
|
+
*/
|
|
72
|
+
export declare function isAngularDts(absPath: AbsoluteFsPath, fs: FileSystem): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* A cache for processing a single entry-point. This exists to share `ts.SourceFile`s between the
|
|
75
|
+
* source and typing programs that are created for a single program.
|
|
76
|
+
*/
|
|
77
|
+
export declare class EntryPointFileCache {
|
|
78
|
+
private fs;
|
|
79
|
+
private sharedFileCache;
|
|
80
|
+
private readonly sfCache;
|
|
81
|
+
constructor(fs: FileSystem, sharedFileCache: SharedFileCache);
|
|
82
|
+
/**
|
|
83
|
+
* Returns and caches a parsed `ts.SourceFile` for the provided `fileName`. If the `fileName` is
|
|
84
|
+
* cached in the shared file cache, that result is used. Otherwise, the source file is cached
|
|
85
|
+
* internally. This method returns `undefined` if the requested file does not exist.
|
|
86
|
+
*
|
|
87
|
+
* @param fileName The path of the file to retrieve a source file for.
|
|
88
|
+
* @param languageVersion The language version to use for parsing the file.
|
|
89
|
+
*/
|
|
90
|
+
getCachedSourceFile(fileName: string, languageVersion: ts.ScriptTarget): ts.SourceFile | undefined;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Creates a `ts.ModuleResolutionCache` that uses the provided filesystem for path operations.
|
|
94
|
+
*
|
|
95
|
+
* @param fs The filesystem to use for path operations.
|
|
96
|
+
*/
|
|
97
|
+
export declare function createModuleResolutionCache(fs: FileSystem): ts.ModuleResolutionCache;
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define("@angular/compiler-cli/ngcc/src/packages/source_file_cache", ["require", "exports", "typescript"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createModuleResolutionCache = exports.EntryPointFileCache = exports.isAngularDts = exports.isDefaultLibrary = exports.SharedFileCache = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* @license
|
|
15
|
+
* Copyright Google LLC All Rights Reserved.
|
|
16
|
+
*
|
|
17
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
18
|
+
* found in the LICENSE file at https://angular.io/license
|
|
19
|
+
*/
|
|
20
|
+
var ts = require("typescript");
|
|
21
|
+
/**
|
|
22
|
+
* A cache that holds on to source files that can be shared for processing all entry-points in a
|
|
23
|
+
* single invocation of ngcc. In particular, the following files are shared across all entry-points
|
|
24
|
+
* through this cache:
|
|
25
|
+
*
|
|
26
|
+
* 1. Default library files such as `lib.dom.d.ts` and `lib.es5.d.ts`. These files don't change
|
|
27
|
+
* and some are very large, so parsing is expensive. Therefore, the parsed `ts.SourceFile`s for
|
|
28
|
+
* the default library files are cached.
|
|
29
|
+
* 2. The typings of @angular scoped packages. The typing files for @angular packages are typically
|
|
30
|
+
* used in the entry-points that ngcc processes, so benefit from a single source file cache.
|
|
31
|
+
* Especially `@angular/core/core.d.ts` is large and expensive to parse repeatedly. In contrast
|
|
32
|
+
* to default library files, we have to account for these files to be invalidated during a single
|
|
33
|
+
* invocation of ngcc, as ngcc will overwrite the .d.ts files during its processing.
|
|
34
|
+
*
|
|
35
|
+
* The lifecycle of this cache corresponds with a single invocation of ngcc. Separate invocations,
|
|
36
|
+
* e.g. the CLI's synchronous module resolution fallback will therefore all have their own cache.
|
|
37
|
+
* This allows for the source file cache to be garbage collected once ngcc processing has completed.
|
|
38
|
+
*/
|
|
39
|
+
var SharedFileCache = /** @class */ (function () {
|
|
40
|
+
function SharedFileCache(fs) {
|
|
41
|
+
this.fs = fs;
|
|
42
|
+
this.sfCache = new Map();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Loads a `ts.SourceFile` if the provided `fileName` is deemed appropriate to be cached. To
|
|
46
|
+
* optimize for memory usage, only files that are generally used in all entry-points are cached.
|
|
47
|
+
* If `fileName` is not considered to benefit from caching or the requested file does not exist,
|
|
48
|
+
* then `undefined` is returned.
|
|
49
|
+
*/
|
|
50
|
+
SharedFileCache.prototype.getCachedSourceFile = function (fileName) {
|
|
51
|
+
var absPath = this.fs.resolve(fileName);
|
|
52
|
+
if (isDefaultLibrary(absPath, this.fs)) {
|
|
53
|
+
return this.getStableCachedFile(absPath);
|
|
54
|
+
}
|
|
55
|
+
else if (isAngularDts(absPath, this.fs)) {
|
|
56
|
+
return this.getVolatileCachedFile(absPath);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Attempts to load the source file from the cache, or parses the file into a `ts.SourceFile` if
|
|
64
|
+
* it's not yet cached. This method assumes that the file will not be modified for the duration
|
|
65
|
+
* that this cache is valid for. If that assumption does not hold, the `getVolatileCachedFile`
|
|
66
|
+
* method is to be used instead.
|
|
67
|
+
*/
|
|
68
|
+
SharedFileCache.prototype.getStableCachedFile = function (absPath) {
|
|
69
|
+
if (!this.sfCache.has(absPath)) {
|
|
70
|
+
var content = readFile(absPath, this.fs);
|
|
71
|
+
if (content === undefined) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
var sf = ts.createSourceFile(absPath, content, ts.ScriptTarget.ES2015);
|
|
75
|
+
this.sfCache.set(absPath, sf);
|
|
76
|
+
}
|
|
77
|
+
return this.sfCache.get(absPath);
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* In contrast to `getStableCachedFile`, this method always verifies that the cached source file
|
|
81
|
+
* is the same as what's stored on disk. This is done for files that are expected to change during
|
|
82
|
+
* ngcc's processing, such as @angular scoped packages for which the .d.ts files are overwritten
|
|
83
|
+
* by ngcc. If the contents on disk have changed compared to a previously cached source file, the
|
|
84
|
+
* content from disk is re-parsed and the cache entry is replaced.
|
|
85
|
+
*/
|
|
86
|
+
SharedFileCache.prototype.getVolatileCachedFile = function (absPath) {
|
|
87
|
+
var content = readFile(absPath, this.fs);
|
|
88
|
+
if (content === undefined) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
if (!this.sfCache.has(absPath) || this.sfCache.get(absPath).text !== content) {
|
|
92
|
+
var sf = ts.createSourceFile(absPath, content, ts.ScriptTarget.ES2015);
|
|
93
|
+
this.sfCache.set(absPath, sf);
|
|
94
|
+
}
|
|
95
|
+
return this.sfCache.get(absPath);
|
|
96
|
+
};
|
|
97
|
+
return SharedFileCache;
|
|
98
|
+
}());
|
|
99
|
+
exports.SharedFileCache = SharedFileCache;
|
|
100
|
+
var DEFAULT_LIB_PATTERN = ['node_modules', 'typescript', 'lib', /^lib\..+\.d\.ts$/];
|
|
101
|
+
/**
|
|
102
|
+
* Determines whether the provided path corresponds with a default library file inside of the
|
|
103
|
+
* typescript package.
|
|
104
|
+
*
|
|
105
|
+
* @param absPath The path for which to determine if it corresponds with a default library file.
|
|
106
|
+
* @param fs The filesystem to use for inspecting the path.
|
|
107
|
+
*/
|
|
108
|
+
function isDefaultLibrary(absPath, fs) {
|
|
109
|
+
return isFile(absPath, DEFAULT_LIB_PATTERN, fs);
|
|
110
|
+
}
|
|
111
|
+
exports.isDefaultLibrary = isDefaultLibrary;
|
|
112
|
+
var ANGULAR_DTS_PATTERN = ['node_modules', '@angular', /./, /\.d\.ts$/];
|
|
113
|
+
/**
|
|
114
|
+
* Determines whether the provided path corresponds with a .d.ts file inside of an @angular
|
|
115
|
+
* scoped package. This logic only accounts for the .d.ts files in the root, which is sufficient
|
|
116
|
+
* to find the large, flattened entry-point files that benefit from caching.
|
|
117
|
+
*
|
|
118
|
+
* @param absPath The path for which to determine if it corresponds with an @angular .d.ts file.
|
|
119
|
+
* @param fs The filesystem to use for inspecting the path.
|
|
120
|
+
*/
|
|
121
|
+
function isAngularDts(absPath, fs) {
|
|
122
|
+
return isFile(absPath, ANGULAR_DTS_PATTERN, fs);
|
|
123
|
+
}
|
|
124
|
+
exports.isAngularDts = isAngularDts;
|
|
125
|
+
/**
|
|
126
|
+
* Helper function to determine whether a file corresponds with a given pattern of segments.
|
|
127
|
+
*
|
|
128
|
+
* @param path The path for which to determine if it corresponds with the provided segments.
|
|
129
|
+
* @param segments Array of segments; the `path` must have ending segments that match the
|
|
130
|
+
* patterns in this array.
|
|
131
|
+
* @param fs The filesystem to use for inspecting the path.
|
|
132
|
+
*/
|
|
133
|
+
function isFile(path, segments, fs) {
|
|
134
|
+
for (var i = segments.length - 1; i >= 0; i--) {
|
|
135
|
+
var pattern = segments[i];
|
|
136
|
+
var segment = fs.basename(path);
|
|
137
|
+
if (typeof pattern === 'string') {
|
|
138
|
+
if (pattern !== segment) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
if (!pattern.test(segment)) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
path = fs.dirname(path);
|
|
148
|
+
}
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* A cache for processing a single entry-point. This exists to share `ts.SourceFile`s between the
|
|
153
|
+
* source and typing programs that are created for a single program.
|
|
154
|
+
*/
|
|
155
|
+
var EntryPointFileCache = /** @class */ (function () {
|
|
156
|
+
function EntryPointFileCache(fs, sharedFileCache) {
|
|
157
|
+
this.fs = fs;
|
|
158
|
+
this.sharedFileCache = sharedFileCache;
|
|
159
|
+
this.sfCache = new Map();
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Returns and caches a parsed `ts.SourceFile` for the provided `fileName`. If the `fileName` is
|
|
163
|
+
* cached in the shared file cache, that result is used. Otherwise, the source file is cached
|
|
164
|
+
* internally. This method returns `undefined` if the requested file does not exist.
|
|
165
|
+
*
|
|
166
|
+
* @param fileName The path of the file to retrieve a source file for.
|
|
167
|
+
* @param languageVersion The language version to use for parsing the file.
|
|
168
|
+
*/
|
|
169
|
+
EntryPointFileCache.prototype.getCachedSourceFile = function (fileName, languageVersion) {
|
|
170
|
+
var staticSf = this.sharedFileCache.getCachedSourceFile(fileName);
|
|
171
|
+
if (staticSf !== undefined) {
|
|
172
|
+
return staticSf;
|
|
173
|
+
}
|
|
174
|
+
var absPath = this.fs.resolve(fileName);
|
|
175
|
+
if (this.sfCache.has(absPath)) {
|
|
176
|
+
return this.sfCache.get(absPath);
|
|
177
|
+
}
|
|
178
|
+
var content = readFile(absPath, this.fs);
|
|
179
|
+
if (content === undefined) {
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
182
|
+
var sf = ts.createSourceFile(fileName, content, languageVersion);
|
|
183
|
+
this.sfCache.set(absPath, sf);
|
|
184
|
+
return sf;
|
|
185
|
+
};
|
|
186
|
+
return EntryPointFileCache;
|
|
187
|
+
}());
|
|
188
|
+
exports.EntryPointFileCache = EntryPointFileCache;
|
|
189
|
+
function readFile(absPath, fs) {
|
|
190
|
+
if (!fs.exists(absPath) || !fs.stat(absPath).isFile()) {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
return fs.readFile(absPath);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Creates a `ts.ModuleResolutionCache` that uses the provided filesystem for path operations.
|
|
197
|
+
*
|
|
198
|
+
* @param fs The filesystem to use for path operations.
|
|
199
|
+
*/
|
|
200
|
+
function createModuleResolutionCache(fs) {
|
|
201
|
+
return ts.createModuleResolutionCache(fs.pwd(), function (fileName) {
|
|
202
|
+
return fs.isCaseSensitive() ? fileName : fileName.toLowerCase();
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
exports.createModuleResolutionCache = createModuleResolutionCache;
|
|
206
|
+
});
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlX2ZpbGVfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcGFja2FnZXMvc291cmNlX2ZpbGVfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsK0JBQWlDO0lBR2pDOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNIO1FBR0UseUJBQW9CLEVBQWM7WUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1lBRjFCLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUV0QixDQUFDO1FBRXRDOzs7OztXQUtHO1FBQ0gsNkNBQW1CLEdBQW5CLFVBQW9CLFFBQWdCO1lBQ2xDLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDMUM7aUJBQU0sSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDekMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDNUM7aUJBQU07Z0JBQ0wsT0FBTyxTQUFTLENBQUM7YUFDbEI7UUFDSCxDQUFDO1FBRUQ7Ozs7O1dBS0c7UUFDSyw2Q0FBbUIsR0FBM0IsVUFBNEIsT0FBdUI7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM5QixJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO29CQUN6QixPQUFPLFNBQVMsQ0FBQztpQkFDbEI7Z0JBQ0QsSUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQztRQUNwQyxDQUFDO1FBRUQ7Ozs7OztXQU1HO1FBQ0ssK0NBQXFCLEdBQTdCLFVBQThCLE9BQXVCO1lBQ25ELElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtnQkFDekIsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDN0UsSUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQztRQUNwQyxDQUFDO1FBQ0gsc0JBQUM7SUFBRCxDQUFDLEFBMURELElBMERDO0lBMURZLDBDQUFlO0lBNEQ1QixJQUFNLG1CQUFtQixHQUFHLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUV0Rjs7Ozs7O09BTUc7SUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUF1QixFQUFFLEVBQWM7UUFDdEUsT0FBTyxNQUFNLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFGRCw0Q0FFQztJQUVELElBQU0sbUJBQW1CLEdBQUcsQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUUxRTs7Ozs7OztPQU9HO0lBQ0gsU0FBZ0IsWUFBWSxDQUFDLE9BQXVCLEVBQUUsRUFBYztRQUNsRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUZELG9DQUVDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFNBQVMsTUFBTSxDQUNYLElBQW9CLEVBQUUsUUFBc0MsRUFBRSxFQUFjO1FBQzlFLEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3QyxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtnQkFDL0IsSUFBSSxPQUFPLEtBQUssT0FBTyxFQUFFO29CQUN2QixPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUMxQixPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO1lBQ0QsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSDtRQUdFLDZCQUFvQixFQUFjLEVBQVUsZUFBZ0M7WUFBeEQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtZQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtZQUYzRCxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFFVyxDQUFDO1FBRWhGOzs7Ozs7O1dBT0c7UUFDSCxpREFBbUIsR0FBbkIsVUFBb0IsUUFBZ0IsRUFBRSxlQUFnQztZQUNwRSxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BFLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtnQkFDMUIsT0FBTyxRQUFRLENBQUM7YUFDakI7WUFFRCxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM3QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2xDO1lBRUQsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO2dCQUN6QixPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELElBQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDSCwwQkFBQztJQUFELENBQUMsQUFoQ0QsSUFnQ0M7SUFoQ1ksa0RBQW1CO0lBa0NoQyxTQUFTLFFBQVEsQ0FBQyxPQUF1QixFQUFFLEVBQWM7UUFDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3JELE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsRUFBYztRQUN4RCxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBQSxRQUFRO1lBQ3RELE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFKRCxrRUFJQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge0Fic29sdXRlRnNQYXRoLCBGaWxlU3lzdGVtfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuXG4vKipcbiAqIEEgY2FjaGUgdGhhdCBob2xkcyBvbiB0byBzb3VyY2UgZmlsZXMgdGhhdCBjYW4gYmUgc2hhcmVkIGZvciBwcm9jZXNzaW5nIGFsbCBlbnRyeS1wb2ludHMgaW4gYVxuICogc2luZ2xlIGludm9jYXRpb24gb2YgbmdjYy4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgc2hhcmVkIGFjcm9zcyBhbGwgZW50cnktcG9pbnRzXG4gKiB0aHJvdWdoIHRoaXMgY2FjaGU6XG4gKlxuICogMS4gRGVmYXVsdCBsaWJyYXJ5IGZpbGVzIHN1Y2ggYXMgYGxpYi5kb20uZC50c2AgYW5kIGBsaWIuZXM1LmQudHNgLiBUaGVzZSBmaWxlcyBkb24ndCBjaGFuZ2VcbiAqICAgIGFuZCBzb21lIGFyZSB2ZXJ5IGxhcmdlLCBzbyBwYXJzaW5nIGlzIGV4cGVuc2l2ZS4gVGhlcmVmb3JlLCB0aGUgcGFyc2VkIGB0cy5Tb3VyY2VGaWxlYHMgZm9yXG4gKiAgICB0aGUgZGVmYXVsdCBsaWJyYXJ5IGZpbGVzIGFyZSBjYWNoZWQuXG4gKiAyLiBUaGUgdHlwaW5ncyBvZiBAYW5ndWxhciBzY29wZWQgcGFja2FnZXMuIFRoZSB0eXBpbmcgZmlsZXMgZm9yIEBhbmd1bGFyIHBhY2thZ2VzIGFyZSB0eXBpY2FsbHlcbiAqICAgIHVzZWQgaW4gdGhlIGVudHJ5LXBvaW50cyB0aGF0IG5nY2MgcHJvY2Vzc2VzLCBzbyBiZW5lZml0IGZyb20gYSBzaW5nbGUgc291cmNlIGZpbGUgY2FjaGUuXG4gKiAgICBFc3BlY2lhbGx5IGBAYW5ndWxhci9jb3JlL2NvcmUuZC50c2AgaXMgbGFyZ2UgYW5kIGV4cGVuc2l2ZSB0byBwYXJzZSByZXBlYXRlZGx5LiBJbiBjb250cmFzdFxuICogICAgdG8gZGVmYXVsdCBsaWJyYXJ5IGZpbGVzLCB3ZSBoYXZlIHRvIGFjY291bnQgZm9yIHRoZXNlIGZpbGVzIHRvIGJlIGludmFsaWRhdGVkIGR1cmluZyBhIHNpbmdsZVxuICogICAgaW52b2NhdGlvbiBvZiBuZ2NjLCBhcyBuZ2NjIHdpbGwgb3ZlcndyaXRlIHRoZSAuZC50cyBmaWxlcyBkdXJpbmcgaXRzIHByb2Nlc3NpbmcuXG4gKlxuICogVGhlIGxpZmVjeWNsZSBvZiB0aGlzIGNhY2hlIGNvcnJlc3BvbmRzIHdpdGggYSBzaW5nbGUgaW52b2NhdGlvbiBvZiBuZ2NjLiBTZXBhcmF0ZSBpbnZvY2F0aW9ucyxcbiAqIGUuZy4gdGhlIENMSSdzIHN5bmNocm9ub3VzIG1vZHVsZSByZXNvbHV0aW9uIGZhbGxiYWNrIHdpbGwgdGhlcmVmb3JlIGFsbCBoYXZlIHRoZWlyIG93biBjYWNoZS5cbiAqIFRoaXMgYWxsb3dzIGZvciB0aGUgc291cmNlIGZpbGUgY2FjaGUgdG8gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQgb25jZSBuZ2NjIHByb2Nlc3NpbmcgaGFzIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNoYXJlZEZpbGVDYWNoZSB7XG4gIHByaXZhdGUgc2ZDYWNoZSA9IG5ldyBNYXA8QWJzb2x1dGVGc1BhdGgsIHRzLlNvdXJjZUZpbGU+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmczogRmlsZVN5c3RlbSkge31cblxuICAvKipcbiAgICogTG9hZHMgYSBgdHMuU291cmNlRmlsZWAgaWYgdGhlIHByb3ZpZGVkIGBmaWxlTmFtZWAgaXMgZGVlbWVkIGFwcHJvcHJpYXRlIHRvIGJlIGNhY2hlZC4gVG9cbiAgICogb3B0aW1pemUgZm9yIG1lbW9yeSB1c2FnZSwgb25seSBmaWxlcyB0aGF0IGFyZSBnZW5lcmFsbHkgdXNlZCBpbiBhbGwgZW50cnktcG9pbnRzIGFyZSBjYWNoZWQuXG4gICAqIElmIGBmaWxlTmFtZWAgaXMgbm90IGNvbnNpZGVyZWQgdG8gYmVuZWZpdCBmcm9tIGNhY2hpbmcgb3IgdGhlIHJlcXVlc3RlZCBmaWxlIGRvZXMgbm90IGV4aXN0LFxuICAgKiB0aGVuIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgKi9cbiAgZ2V0Q2FjaGVkU291cmNlRmlsZShmaWxlTmFtZTogc3RyaW5nKTogdHMuU291cmNlRmlsZXx1bmRlZmluZWQge1xuICAgIGNvbnN0IGFic1BhdGggPSB0aGlzLmZzLnJlc29sdmUoZmlsZU5hbWUpO1xuICAgIGlmIChpc0RlZmF1bHRMaWJyYXJ5KGFic1BhdGgsIHRoaXMuZnMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTdGFibGVDYWNoZWRGaWxlKGFic1BhdGgpO1xuICAgIH0gZWxzZSBpZiAoaXNBbmd1bGFyRHRzKGFic1BhdGgsIHRoaXMuZnMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWb2xhdGlsZUNhY2hlZEZpbGUoYWJzUGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHRzIHRvIGxvYWQgdGhlIHNvdXJjZSBmaWxlIGZyb20gdGhlIGNhY2hlLCBvciBwYXJzZXMgdGhlIGZpbGUgaW50byBhIGB0cy5Tb3VyY2VGaWxlYCBpZlxuICAgKiBpdCdzIG5vdCB5ZXQgY2FjaGVkLiBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlIGZpbGUgd2lsbCBub3QgYmUgbW9kaWZpZWQgZm9yIHRoZSBkdXJhdGlvblxuICAgKiB0aGF0IHRoaXMgY2FjaGUgaXMgdmFsaWQgZm9yLiBJZiB0aGF0IGFzc3VtcHRpb24gZG9lcyBub3QgaG9sZCwgdGhlIGBnZXRWb2xhdGlsZUNhY2hlZEZpbGVgXG4gICAqIG1ldGhvZCBpcyB0byBiZSB1c2VkIGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIGdldFN0YWJsZUNhY2hlZEZpbGUoYWJzUGF0aDogQWJzb2x1dGVGc1BhdGgpOiB0cy5Tb3VyY2VGaWxlfHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnNmQ2FjaGUuaGFzKGFic1BhdGgpKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGUoYWJzUGF0aCwgdGhpcy5mcyk7XG4gICAgICBpZiAoY29udGVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBjb25zdCBzZiA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoYWJzUGF0aCwgY29udGVudCwgdHMuU2NyaXB0VGFyZ2V0LkVTMjAxNSk7XG4gICAgICB0aGlzLnNmQ2FjaGUuc2V0KGFic1BhdGgsIHNmKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2ZDYWNoZS5nZXQoYWJzUGF0aCkhO1xuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbnRyYXN0IHRvIGBnZXRTdGFibGVDYWNoZWRGaWxlYCwgdGhpcyBtZXRob2QgYWx3YXlzIHZlcmlmaWVzIHRoYXQgdGhlIGNhY2hlZCBzb3VyY2UgZmlsZVxuICAgKiBpcyB0aGUgc2FtZSBhcyB3aGF0J3Mgc3RvcmVkIG9uIGRpc2suIFRoaXMgaXMgZG9uZSBmb3IgZmlsZXMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gY2hhbmdlIGR1cmluZ1xuICAgKiBuZ2NjJ3MgcHJvY2Vzc2luZywgc3VjaCBhcyBAYW5ndWxhciBzY29wZWQgcGFja2FnZXMgZm9yIHdoaWNoIHRoZSAuZC50cyBmaWxlcyBhcmUgb3ZlcndyaXR0ZW5cbiAgICogYnkgbmdjYy4gSWYgdGhlIGNvbnRlbnRzIG9uIGRpc2sgaGF2ZSBjaGFuZ2VkIGNvbXBhcmVkIHRvIGEgcHJldmlvdXNseSBjYWNoZWQgc291cmNlIGZpbGUsIHRoZVxuICAgKiBjb250ZW50IGZyb20gZGlzayBpcyByZS1wYXJzZWQgYW5kIHRoZSBjYWNoZSBlbnRyeSBpcyByZXBsYWNlZC5cbiAgICovXG4gIHByaXZhdGUgZ2V0Vm9sYXRpbGVDYWNoZWRGaWxlKGFic1BhdGg6IEFic29sdXRlRnNQYXRoKTogdHMuU291cmNlRmlsZXx1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZShhYnNQYXRoLCB0aGlzLmZzKTtcbiAgICBpZiAoY29udGVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2ZDYWNoZS5oYXMoYWJzUGF0aCkgfHwgdGhpcy5zZkNhY2hlLmdldChhYnNQYXRoKSEudGV4dCAhPT0gY29udGVudCkge1xuICAgICAgY29uc3Qgc2YgPSB0cy5jcmVhdGVTb3VyY2VGaWxlKGFic1BhdGgsIGNvbnRlbnQsIHRzLlNjcmlwdFRhcmdldC5FUzIwMTUpO1xuICAgICAgdGhpcy5zZkNhY2hlLnNldChhYnNQYXRoLCBzZik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNmQ2FjaGUuZ2V0KGFic1BhdGgpITtcbiAgfVxufVxuXG5jb25zdCBERUZBVUxUX0xJQl9QQVRURVJOID0gWydub2RlX21vZHVsZXMnLCAndHlwZXNjcmlwdCcsICdsaWInLCAvXmxpYlxcLi4rXFwuZFxcLnRzJC9dO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcHJvdmlkZWQgcGF0aCBjb3JyZXNwb25kcyB3aXRoIGEgZGVmYXVsdCBsaWJyYXJ5IGZpbGUgaW5zaWRlIG9mIHRoZVxuICogdHlwZXNjcmlwdCBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSBhYnNQYXRoIFRoZSBwYXRoIGZvciB3aGljaCB0byBkZXRlcm1pbmUgaWYgaXQgY29ycmVzcG9uZHMgd2l0aCBhIGRlZmF1bHQgbGlicmFyeSBmaWxlLlxuICogQHBhcmFtIGZzIFRoZSBmaWxlc3lzdGVtIHRvIHVzZSBmb3IgaW5zcGVjdGluZyB0aGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVmYXVsdExpYnJhcnkoYWJzUGF0aDogQWJzb2x1dGVGc1BhdGgsIGZzOiBGaWxlU3lzdGVtKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0ZpbGUoYWJzUGF0aCwgREVGQVVMVF9MSUJfUEFUVEVSTiwgZnMpO1xufVxuXG5jb25zdCBBTkdVTEFSX0RUU19QQVRURVJOID0gWydub2RlX21vZHVsZXMnLCAnQGFuZ3VsYXInLCAvLi8sIC9cXC5kXFwudHMkL107XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBwYXRoIGNvcnJlc3BvbmRzIHdpdGggYSAuZC50cyBmaWxlIGluc2lkZSBvZiBhbiBAYW5ndWxhclxuICogc2NvcGVkIHBhY2thZ2UuIFRoaXMgbG9naWMgb25seSBhY2NvdW50cyBmb3IgdGhlIC5kLnRzIGZpbGVzIGluIHRoZSByb290LCB3aGljaCBpcyBzdWZmaWNpZW50XG4gKiB0byBmaW5kIHRoZSBsYXJnZSwgZmxhdHRlbmVkIGVudHJ5LXBvaW50IGZpbGVzIHRoYXQgYmVuZWZpdCBmcm9tIGNhY2hpbmcuXG4gKlxuICogQHBhcmFtIGFic1BhdGggVGhlIHBhdGggZm9yIHdoaWNoIHRvIGRldGVybWluZSBpZiBpdCBjb3JyZXNwb25kcyB3aXRoIGFuIEBhbmd1bGFyIC5kLnRzIGZpbGUuXG4gKiBAcGFyYW0gZnMgVGhlIGZpbGVzeXN0ZW0gdG8gdXNlIGZvciBpbnNwZWN0aW5nIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbmd1bGFyRHRzKGFic1BhdGg6IEFic29sdXRlRnNQYXRoLCBmczogRmlsZVN5c3RlbSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNGaWxlKGFic1BhdGgsIEFOR1VMQVJfRFRTX1BBVFRFUk4sIGZzKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBmaWxlIGNvcnJlc3BvbmRzIHdpdGggYSBnaXZlbiBwYXR0ZXJuIG9mIHNlZ21lbnRzLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGZvciB3aGljaCB0byBkZXRlcm1pbmUgaWYgaXQgY29ycmVzcG9uZHMgd2l0aCB0aGUgcHJvdmlkZWQgc2VnbWVudHMuXG4gKiBAcGFyYW0gc2VnbWVudHMgQXJyYXkgb2Ygc2VnbWVudHM7IHRoZSBgcGF0aGAgbXVzdCBoYXZlIGVuZGluZyBzZWdtZW50cyB0aGF0IG1hdGNoIHRoZVxuICogcGF0dGVybnMgaW4gdGhpcyBhcnJheS5cbiAqIEBwYXJhbSBmcyBUaGUgZmlsZXN5c3RlbSB0byB1c2UgZm9yIGluc3BlY3RpbmcgdGhlIHBhdGguXG4gKi9cbmZ1bmN0aW9uIGlzRmlsZShcbiAgICBwYXRoOiBBYnNvbHV0ZUZzUGF0aCwgc2VnbWVudHM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nfFJlZ0V4cD4sIGZzOiBGaWxlU3lzdGVtKTogYm9vbGVhbiB7XG4gIGZvciAobGV0IGkgPSBzZWdtZW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGNvbnN0IHBhdHRlcm4gPSBzZWdtZW50c1tpXTtcbiAgICBjb25zdCBzZWdtZW50ID0gZnMuYmFzZW5hbWUocGF0aCk7XG4gICAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHBhdHRlcm4gIT09IHNlZ21lbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXBhdHRlcm4udGVzdChzZWdtZW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHBhdGggPSBmcy5kaXJuYW1lKHBhdGgpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEEgY2FjaGUgZm9yIHByb2Nlc3NpbmcgYSBzaW5nbGUgZW50cnktcG9pbnQuIFRoaXMgZXhpc3RzIHRvIHNoYXJlIGB0cy5Tb3VyY2VGaWxlYHMgYmV0d2VlbiB0aGVcbiAqIHNvdXJjZSBhbmQgdHlwaW5nIHByb2dyYW1zIHRoYXQgYXJlIGNyZWF0ZWQgZm9yIGEgc2luZ2xlIHByb2dyYW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnRyeVBvaW50RmlsZUNhY2hlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzZkNhY2hlID0gbmV3IE1hcDxBYnNvbHV0ZUZzUGF0aCwgdHMuU291cmNlRmlsZT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZzOiBGaWxlU3lzdGVtLCBwcml2YXRlIHNoYXJlZEZpbGVDYWNoZTogU2hhcmVkRmlsZUNhY2hlKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuZCBjYWNoZXMgYSBwYXJzZWQgYHRzLlNvdXJjZUZpbGVgIGZvciB0aGUgcHJvdmlkZWQgYGZpbGVOYW1lYC4gSWYgdGhlIGBmaWxlTmFtZWAgaXNcbiAgICogY2FjaGVkIGluIHRoZSBzaGFyZWQgZmlsZSBjYWNoZSwgdGhhdCByZXN1bHQgaXMgdXNlZC4gT3RoZXJ3aXNlLCB0aGUgc291cmNlIGZpbGUgaXMgY2FjaGVkXG4gICAqIGludGVybmFsbHkuIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIHJlcXVlc3RlZCBmaWxlIGRvZXMgbm90IGV4aXN0LlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZU5hbWUgVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gcmV0cmlldmUgYSBzb3VyY2UgZmlsZSBmb3IuXG4gICAqIEBwYXJhbSBsYW5ndWFnZVZlcnNpb24gVGhlIGxhbmd1YWdlIHZlcnNpb24gdG8gdXNlIGZvciBwYXJzaW5nIHRoZSBmaWxlLlxuICAgKi9cbiAgZ2V0Q2FjaGVkU291cmNlRmlsZShmaWxlTmFtZTogc3RyaW5nLCBsYW5ndWFnZVZlcnNpb246IHRzLlNjcmlwdFRhcmdldCk6IHRzLlNvdXJjZUZpbGV8dW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdGF0aWNTZiA9IHRoaXMuc2hhcmVkRmlsZUNhY2hlLmdldENhY2hlZFNvdXJjZUZpbGUoZmlsZU5hbWUpO1xuICAgIGlmIChzdGF0aWNTZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gc3RhdGljU2Y7XG4gICAgfVxuXG4gICAgY29uc3QgYWJzUGF0aCA9IHRoaXMuZnMucmVzb2x2ZShmaWxlTmFtZSk7XG4gICAgaWYgKHRoaXMuc2ZDYWNoZS5oYXMoYWJzUGF0aCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNmQ2FjaGUuZ2V0KGFic1BhdGgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZShhYnNQYXRoLCB0aGlzLmZzKTtcbiAgICBpZiAoY29udGVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBzZiA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoZmlsZU5hbWUsIGNvbnRlbnQsIGxhbmd1YWdlVmVyc2lvbik7XG4gICAgdGhpcy5zZkNhY2hlLnNldChhYnNQYXRoLCBzZik7XG4gICAgcmV0dXJuIHNmO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRGaWxlKGFic1BhdGg6IEFic29sdXRlRnNQYXRoLCBmczogRmlsZVN5c3RlbSk6IHN0cmluZ3x1bmRlZmluZWQge1xuICBpZiAoIWZzLmV4aXN0cyhhYnNQYXRoKSB8fCAhZnMuc3RhdChhYnNQYXRoKS5pc0ZpbGUoKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIGZzLnJlYWRGaWxlKGFic1BhdGgpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBgdHMuTW9kdWxlUmVzb2x1dGlvbkNhY2hlYCB0aGF0IHVzZXMgdGhlIHByb3ZpZGVkIGZpbGVzeXN0ZW0gZm9yIHBhdGggb3BlcmF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gZnMgVGhlIGZpbGVzeXN0ZW0gdG8gdXNlIGZvciBwYXRoIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2R1bGVSZXNvbHV0aW9uQ2FjaGUoZnM6IEZpbGVTeXN0ZW0pOiB0cy5Nb2R1bGVSZXNvbHV0aW9uQ2FjaGUge1xuICByZXR1cm4gdHMuY3JlYXRlTW9kdWxlUmVzb2x1dGlvbkNhY2hlKGZzLnB3ZCgpLCBmaWxlTmFtZSA9PiB7XG4gICAgcmV0dXJuIGZzLmlzQ2FzZVNlbnNpdGl2ZSgpID8gZmlsZU5hbWUgOiBmaWxlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -138,10 +138,9 @@
|
|
|
138
138
|
*/
|
|
139
139
|
Renderer.prototype.renderDefinitions = function (sourceFile, compiledClass, imports, annotateForClosureCompiler) {
|
|
140
140
|
var name = this.host.getInternalNameOfClass(compiledClass.declaration);
|
|
141
|
-
var
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
return this.renderStatements(sourceFile, Array.prototype.concat.apply([], statements), imports);
|
|
141
|
+
var leadingComment = annotateForClosureCompiler ? compiler_1.jsDocComment([{ tagName: 'nocollapse' }]) : undefined;
|
|
142
|
+
var statements = compiledClass.compilation.map(function (c) { return createAssignmentStatement(name, c.name, c.initializer, leadingComment); });
|
|
143
|
+
return this.renderStatements(sourceFile, statements, imports);
|
|
145
144
|
};
|
|
146
145
|
/**
|
|
147
146
|
* Render the adjacent statements as source code for the given class.
|
|
@@ -192,14 +191,14 @@
|
|
|
192
191
|
* compiled decorator to be applied to the class.
|
|
193
192
|
* @param analyzedClass The info about the class whose statement we want to create.
|
|
194
193
|
*/
|
|
195
|
-
function
|
|
194
|
+
function createAssignmentStatement(receiverName, propName, initializer, leadingComment) {
|
|
196
195
|
var receiver = new compiler_1.WrappedNodeExpr(receiverName);
|
|
197
|
-
var
|
|
198
|
-
|
|
196
|
+
var statement = new compiler_1.WritePropExpr(receiver, propName, initializer, /* type */ undefined, /* sourceSpan */ undefined)
|
|
197
|
+
.toStmt();
|
|
199
198
|
if (leadingComment !== undefined) {
|
|
200
|
-
|
|
199
|
+
statement.addLeadingComment(leadingComment);
|
|
201
200
|
}
|
|
202
|
-
return
|
|
201
|
+
return statement;
|
|
203
202
|
}
|
|
204
203
|
});
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcmVuZGVyaW5nL3JlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBbUg7SUFDbkgsNkNBQXVDO0lBS3ZDLHlFQUE0RDtJQUs1RCxzRUFBMkM7SUFJM0Msb0dBQWdGO0lBQ2hGLG9GQUFpRDtJQUNqRCx3RUFBdUU7SUFFdkU7Ozs7O09BS0c7SUFDSDtRQUNFLGtCQUNZLElBQXdCLEVBQVUsWUFBZ0MsRUFDbEUsRUFBYyxFQUFVLE1BQWMsRUFBVSxNQUF3QixFQUN4RSxRQUF5QztZQUF6Qyx5QkFBQSxFQUFBLGVBQXlDO1lBRnpDLFNBQUksR0FBSixJQUFJLENBQW9CO1lBQVUsaUJBQVksR0FBWixZQUFZLENBQW9CO1lBQ2xFLE9BQUUsR0FBRixFQUFFLENBQVk7WUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7WUFDeEUsYUFBUSxHQUFSLFFBQVEsQ0FBaUM7UUFBRyxDQUFDO1FBRXpELGdDQUFhLEdBQWIsVUFDSSxrQkFBc0MsRUFBRSxvQkFBMEMsRUFDbEYsMkJBQXdEO1lBRjVELGlCQWlCQztZQWRDLElBQU0sYUFBYSxHQUFrQixFQUFFLENBQUM7WUFFeEMsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBQSxVQUFVO2dCQUN6RCxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO29CQUMxRSxVQUFVLEtBQUssS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO29CQUN2QyxJQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3hELElBQU0sb0JBQW9CLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNsRSxhQUFhLENBQUMsSUFBSSxPQUFsQixhQUFhLG1CQUFTLEtBQUksQ0FBQyxVQUFVLENBQ2pDLFVBQVUsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsMkJBQTJCLENBQUMsR0FBRTtpQkFDbkY7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFFRDs7OztXQUlHO1FBQ0gsNkJBQVUsR0FBVixVQUNJLFVBQXlCLEVBQUUsWUFBb0MsRUFDL0Qsb0JBQW9ELEVBQ3BELDJCQUF3RDtZQUg1RCxpQkErREM7WUEzREMsSUFBTSxZQUFZLEdBQUcsVUFBVSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN6RCxJQUFNLFVBQVUsR0FBRyxJQUFJLHNCQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXBELElBQUksb0JBQW9CLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQzNDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDckY7WUFFRCxJQUFNLGFBQWEsR0FBRyxJQUFJLDBCQUFhLENBQ25DLHlCQUFpQixDQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUM5RSx5QkFBYSxDQUFDLENBQUM7WUFFbkIsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLHlGQUF5RjtnQkFDekYsdUJBQXVCO2dCQUN2QixJQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0JBRW5FLFlBQVksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFVBQUEsS0FBSzs7b0JBQ3hDLElBQU0sa0JBQWtCLEdBQUcsS0FBSSxDQUFDLGlCQUFpQixDQUM3QyxZQUFZLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQzdDLENBQUMsUUFBQyxLQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLENBQUMsMEJBQTBCLENBQUEsQ0FBQyxDQUFDO29CQUN6RCxLQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUM7b0JBRXhFLElBQU0sa0JBQWtCLEdBQ3BCLEtBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztvQkFDakYsS0FBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0JBQ2pGLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUN0RCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUM5QixVQUFVLEVBQUUsWUFBWSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNqRjtnQkFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDMUIsVUFBVSxFQUNWLGtCQUFrQixDQUNkLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxFQUN6RixZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDOUI7WUFFRCxzQ0FBc0M7WUFDdEMsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLElBQU0sa0JBQWtCLEdBQUcsc0JBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQ3hCLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDN0Y7WUFFRCxJQUFJLFlBQVksSUFBSSxZQUFZLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUN4QixVQUFVLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDL0U7WUFFRCxJQUFJLFlBQVksSUFBSSxvQkFBb0IsSUFBSSxZQUFZLEVBQUU7Z0JBQ3hELE9BQU8sZ0NBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUN6RTtpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBQzthQUNYO1FBQ0gsQ0FBQztRQUVEOzs7Ozs7V0FNRztRQUNLLDRDQUF5QixHQUFqQyxVQUFrQyxPQUF3QjtZQUN4RCxJQUFNLGtCQUFrQixHQUFHLElBQUksMkNBQXFCLEVBQUUsQ0FBQztZQUN2RCxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQUEsS0FBSztnQkFDbkIsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRTtvQkFDN0IsT0FBTztpQkFDUjtnQkFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUc7b0JBQzFCLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7d0JBQ3JCLE9BQU87cUJBQ1I7b0JBQ0QsSUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFPLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUU7d0JBQzNDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztxQkFDcEQ7eUJBQU07d0JBQ0wsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3hEO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLGtCQUFrQixDQUFDO1FBQzVCLENBQUM7UUFFRDs7Ozs7OztXQU9HO1FBQ0ssb0NBQWlCLEdBQXpCLFVBQ0ksVUFBeUIsRUFBRSxhQUE0QixFQUFFLE9BQXNCLEVBQy9FLDBCQUFtQztZQUNyQyxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6RSxJQUFNLFVBQVUsR0FBa0IsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDO2dCQUMvRCxPQUFPLDBCQUEwQixDQUM3QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUYsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRyxDQUFDO1FBRUQ7Ozs7Ozs7V0FPRztRQUNLLDJDQUF3QixHQUFoQyxVQUNJLFVBQXlCLEVBQUUsYUFBNEIsRUFBRSxPQUFzQjs7WUFDakYsSUFBTSxVQUFVLEdBQWdCLEVBQUUsQ0FBQzs7Z0JBQ25DLEtBQWdCLElBQUEsS0FBQSxpQkFBQSxhQUFhLENBQUMsV0FBVyxDQUFBLGdCQUFBLDRCQUFFO29CQUF0QyxJQUFNLENBQUMsV0FBQTtvQkFDVixVQUFVLENBQUMsSUFBSSxPQUFmLFVBQVUsbUJBQVMsQ0FBQyxDQUFDLFVBQVUsR0FBRTtpQkFDbEM7Ozs7Ozs7OztZQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVPLG1DQUFnQixHQUF4QixVQUNJLFVBQXlCLEVBQUUsVUFBdUIsRUFBRSxPQUFzQjtZQUQ5RSxpQkFLQztZQUhDLElBQU0sY0FBYyxHQUFHLFVBQUMsSUFBZTtnQkFDbkMsT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQztZQUEzRCxDQUEyRCxDQUFDO1lBQ2hFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNILGVBQUM7SUFBRCxDQUFDLEFBdEtELElBc0tDO0lBdEtZLDRCQUFRO0lBd0tyQjs7T0FFRztJQUNILFNBQWdCLGtCQUFrQixDQUM5QixTQUE2QixFQUFFLFVBQXlCLEVBQUUsWUFBMEIsRUFDcEYsT0FBc0I7UUFDeEIsSUFBTSxjQUFjLEdBQUcsVUFBQyxJQUFlLElBQUssT0FBQSxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQW5ELENBQW1ELENBQUM7UUFDaEcsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUxELGdEQUtDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsMEJBQTBCLENBQy9CLFlBQWdDLEVBQUUsUUFBZ0IsRUFBRSxXQUF1QixFQUMzRSxjQUF1QjtRQUN6QixJQUFNLFFBQVEsR0FBRyxJQUFJLDBCQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBTSxVQUFVLEdBQ1osQ0FBQyxJQUFJLHdCQUFhLENBQ2IsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7aUJBQ2pGLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEIsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ2hDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxzQkFBVyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtDb21tZW50U3RtdCwgQ29uc3RhbnRQb29sLCBFeHByZXNzaW9uLCBTdGF0ZW1lbnQsIFdyYXBwZWROb2RlRXhwciwgV3JpdGVQcm9wRXhwcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IE1hZ2ljU3RyaW5nIGZyb20gJ21hZ2ljLXN0cmluZyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtGaWxlU3lzdGVtfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7SW1wb3J0TWFuYWdlcn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL3RyYW5zbGF0b3InO1xuaW1wb3J0IHtQYXJzZWRDb25maWd1cmF0aW9ufSBmcm9tICcuLi8uLi8uLi9zcmMvcGVyZm9ybV9jb21waWxlJztcbmltcG9ydCB7UHJpdmF0ZURlY2xhcmF0aW9uc0FuYWx5c2VzfSBmcm9tICcuLi9hbmFseXNpcy9wcml2YXRlX2RlY2xhcmF0aW9uc19hbmFseXplcic7XG5pbXBvcnQge1N3aXRjaE1hcmtlckFuYWx5c2VzLCBTd2l0Y2hNYXJrZXJBbmFseXNpc30gZnJvbSAnLi4vYW5hbHlzaXMvc3dpdGNoX21hcmtlcl9hbmFseXplcic7XG5pbXBvcnQge0NvbXBpbGVkQ2xhc3MsIENvbXBpbGVkRmlsZSwgRGVjb3JhdGlvbkFuYWx5c2VzfSBmcm9tICcuLi9hbmFseXNpcy90eXBlcyc7XG5pbXBvcnQge0lNUE9SVF9QUkVGSVh9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge05nY2NSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vaG9zdC9uZ2NjX2hvc3QnO1xuaW1wb3J0IHtFbnRyeVBvaW50QnVuZGxlfSBmcm9tICcuLi9wYWNrYWdlcy9lbnRyeV9wb2ludF9idW5kbGUnO1xuXG5pbXBvcnQge1JlZHVuZGFudERlY29yYXRvck1hcCwgUmVuZGVyaW5nRm9ybWF0dGVyfSBmcm9tICcuL3JlbmRlcmluZ19mb3JtYXR0ZXInO1xuaW1wb3J0IHtyZW5kZXJTb3VyY2VBbmRNYXB9IGZyb20gJy4vc291cmNlX21hcHMnO1xuaW1wb3J0IHtGaWxlVG9Xcml0ZSwgZ2V0SW1wb3J0UmV3cml0ZXIsIHN0cmlwRXh0ZW5zaW9ufSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBBIGJhc2UtY2xhc3MgZm9yIHJlbmRlcmluZyBhbiBgQW5hbHl6ZWRGaWxlYC5cbiAqXG4gKiBQYWNrYWdlIGZvcm1hdHMgaGF2ZSBvdXRwdXQgZmlsZXMgdGhhdCBtdXN0IGJlIHJlbmRlcmVkIGRpZmZlcmVudGx5LiBDb25jcmV0ZSBzdWItY2xhc3NlcyBtdXN0XG4gKiBpbXBsZW1lbnQgdGhlIGBhZGRJbXBvcnRzYCwgYGFkZERlZmluaXRpb25zYCBhbmQgYHJlbW92ZURlY29yYXRvcnNgIGFic3RyYWN0IG1ldGhvZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBob3N0OiBOZ2NjUmVmbGVjdGlvbkhvc3QsIHByaXZhdGUgc3JjRm9ybWF0dGVyOiBSZW5kZXJpbmdGb3JtYXR0ZXIsXG4gICAgICBwcml2YXRlIGZzOiBGaWxlU3lzdGVtLCBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLCBwcml2YXRlIGJ1bmRsZTogRW50cnlQb2ludEJ1bmRsZSxcbiAgICAgIHByaXZhdGUgdHNDb25maWc6IFBhcnNlZENvbmZpZ3VyYXRpb258bnVsbCA9IG51bGwpIHt9XG5cbiAgcmVuZGVyUHJvZ3JhbShcbiAgICAgIGRlY29yYXRpb25BbmFseXNlczogRGVjb3JhdGlvbkFuYWx5c2VzLCBzd2l0Y2hNYXJrZXJBbmFseXNlczogU3dpdGNoTWFya2VyQW5hbHlzZXMsXG4gICAgICBwcml2YXRlRGVjbGFyYXRpb25zQW5hbHlzZXM6IFByaXZhdGVEZWNsYXJhdGlvbnNBbmFseXNlcyk6IEZpbGVUb1dyaXRlW10ge1xuICAgIGNvbnN0IHJlbmRlcmVkRmlsZXM6IEZpbGVUb1dyaXRlW10gPSBbXTtcblxuICAgIC8vIFRyYW5zZm9ybSB0aGUgc291cmNlIGZpbGVzLlxuICAgIHRoaXMuYnVuZGxlLnNyYy5wcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZm9yRWFjaChzb3VyY2VGaWxlID0+IHtcbiAgICAgIGlmIChkZWNvcmF0aW9uQW5hbHlzZXMuaGFzKHNvdXJjZUZpbGUpIHx8IHN3aXRjaE1hcmtlckFuYWx5c2VzLmhhcyhzb3VyY2VGaWxlKSB8fFxuICAgICAgICAgIHNvdXJjZUZpbGUgPT09IHRoaXMuYnVuZGxlLnNyYy5maWxlKSB7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVkRmlsZSA9IGRlY29yYXRpb25BbmFseXNlcy5nZXQoc291cmNlRmlsZSk7XG4gICAgICAgIGNvbnN0IHN3aXRjaE1hcmtlckFuYWx5c2lzID0gc3dpdGNoTWFya2VyQW5hbHlzZXMuZ2V0KHNvdXJjZUZpbGUpO1xuICAgICAgICByZW5kZXJlZEZpbGVzLnB1c2goLi4udGhpcy5yZW5kZXJGaWxlKFxuICAgICAgICAgICAgc291cmNlRmlsZSwgY29tcGlsZWRGaWxlLCBzd2l0Y2hNYXJrZXJBbmFseXNpcywgcHJpdmF0ZURlY2xhcmF0aW9uc0FuYWx5c2VzKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVuZGVyZWRGaWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHNvdXJjZSBjb2RlIGFuZCBzb3VyY2UtbWFwIGZvciBhbiBBbmFseXplZCBmaWxlLlxuICAgKiBAcGFyYW0gY29tcGlsZWRGaWxlIFRoZSBhbmFseXplZCBmaWxlIHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHRhcmdldFBhdGggVGhlIGFic29sdXRlIHBhdGggd2hlcmUgdGhlIHJlbmRlcmVkIGZpbGUgd2lsbCBiZSB3cml0dGVuLlxuICAgKi9cbiAgcmVuZGVyRmlsZShcbiAgICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIGNvbXBpbGVkRmlsZTogQ29tcGlsZWRGaWxlfHVuZGVmaW5lZCxcbiAgICAgIHN3aXRjaE1hcmtlckFuYWx5c2lzOiBTd2l0Y2hNYXJrZXJBbmFseXNpc3x1bmRlZmluZWQsXG4gICAgICBwcml2YXRlRGVjbGFyYXRpb25zQW5hbHlzZXM6IFByaXZhdGVEZWNsYXJhdGlvbnNBbmFseXNlcyk6IEZpbGVUb1dyaXRlW10ge1xuICAgIGNvbnN0IGlzRW50cnlQb2ludCA9IHNvdXJjZUZpbGUgPT09IHRoaXMuYnVuZGxlLnNyYy5maWxlO1xuICAgIGNvbnN0IG91dHB1dFRleHQgPSBuZXcgTWFnaWNTdHJpbmcoc291cmNlRmlsZS50ZXh0KTtcblxuICAgIGlmIChzd2l0Y2hNYXJrZXJBbmFseXNpcykge1xuICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIucmV3cml0ZVN3aXRjaGFibGVEZWNsYXJhdGlvbnMoXG4gICAgICAgICAgb3V0cHV0VGV4dCwgc3dpdGNoTWFya2VyQW5hbHlzaXMuc291cmNlRmlsZSwgc3dpdGNoTWFya2VyQW5hbHlzaXMuZGVjbGFyYXRpb25zKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRNYW5hZ2VyID0gbmV3IEltcG9ydE1hbmFnZXIoXG4gICAgICAgIGdldEltcG9ydFJld3JpdGVyKFxuICAgICAgICAgICAgdGhpcy5idW5kbGUuc3JjLnIzU3ltYm9sc0ZpbGUsIHRoaXMuYnVuZGxlLmlzQ29yZSwgdGhpcy5idW5kbGUuaXNGbGF0Q29yZSksXG4gICAgICAgIElNUE9SVF9QUkVGSVgpO1xuXG4gICAgaWYgKGNvbXBpbGVkRmlsZSkge1xuICAgICAgLy8gVE9ETzogcmVtb3ZlIGNvbnN0cnVjdG9yIHBhcmFtIG1ldGFkYXRhIGFuZCBwcm9wZXJ0eSBkZWNvcmF0b3JzICh3ZSBuZWVkIGluZm8gZnJvbSB0aGVcbiAgICAgIC8vIGhhbmRsZXJzIHRvIGRvIHRoaXMpXG4gICAgICBjb25zdCBkZWNvcmF0b3JzVG9SZW1vdmUgPSB0aGlzLmNvbXB1dGVEZWNvcmF0b3JzVG9SZW1vdmUoY29tcGlsZWRGaWxlLmNvbXBpbGVkQ2xhc3Nlcyk7XG4gICAgICB0aGlzLnNyY0Zvcm1hdHRlci5yZW1vdmVEZWNvcmF0b3JzKG91dHB1dFRleHQsIGRlY29yYXRvcnNUb1JlbW92ZSk7XG5cbiAgICAgIGNvbXBpbGVkRmlsZS5jb21waWxlZENsYXNzZXMuZm9yRWFjaChjbGF6eiA9PiB7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkRGVmaW5pdGlvbiA9IHRoaXMucmVuZGVyRGVmaW5pdGlvbnMoXG4gICAgICAgICAgICBjb21waWxlZEZpbGUuc291cmNlRmlsZSwgY2xhenosIGltcG9ydE1hbmFnZXIsXG4gICAgICAgICAgICAhIXRoaXMudHNDb25maWc/Lm9wdGlvbnMuYW5ub3RhdGVGb3JDbG9zdXJlQ29tcGlsZXIpO1xuICAgICAgICB0aGlzLnNyY0Zvcm1hdHRlci5hZGREZWZpbml0aW9ucyhvdXRwdXRUZXh0LCBjbGF6eiwgcmVuZGVyZWREZWZpbml0aW9uKTtcblxuICAgICAgICBjb25zdCByZW5kZXJlZFN0YXRlbWVudHMgPVxuICAgICAgICAgICAgdGhpcy5yZW5kZXJBZGphY2VudFN0YXRlbWVudHMoY29tcGlsZWRGaWxlLnNvdXJjZUZpbGUsIGNsYXp6LCBpbXBvcnRNYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIuYWRkQWRqYWNlbnRTdGF0ZW1lbnRzKG91dHB1dFRleHQsIGNsYXp6LCByZW5kZXJlZFN0YXRlbWVudHMpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghaXNFbnRyeVBvaW50ICYmIGNvbXBpbGVkRmlsZS5yZWV4cG9ydHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNyY0Zvcm1hdHRlci5hZGREaXJlY3RFeHBvcnRzKFxuICAgICAgICAgICAgb3V0cHV0VGV4dCwgY29tcGlsZWRGaWxlLnJlZXhwb3J0cywgaW1wb3J0TWFuYWdlciwgY29tcGlsZWRGaWxlLnNvdXJjZUZpbGUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNyY0Zvcm1hdHRlci5hZGRDb25zdGFudHMoXG4gICAgICAgICAgb3V0cHV0VGV4dCxcbiAgICAgICAgICByZW5kZXJDb25zdGFudFBvb2woXG4gICAgICAgICAgICAgIHRoaXMuc3JjRm9ybWF0dGVyLCBjb21waWxlZEZpbGUuc291cmNlRmlsZSwgY29tcGlsZWRGaWxlLmNvbnN0YW50UG9vbCwgaW1wb3J0TWFuYWdlciksXG4gICAgICAgICAgY29tcGlsZWRGaWxlLnNvdXJjZUZpbGUpO1xuICAgIH1cblxuICAgIC8vIEFkZCBleHBvcnRzIHRvIHRoZSBlbnRyeS1wb2ludCBmaWxlXG4gICAgaWYgKGlzRW50cnlQb2ludCkge1xuICAgICAgY29uc3QgZW50cnlQb2ludEJhc2VQYXRoID0gc3RyaXBFeHRlbnNpb24odGhpcy5idW5kbGUuc3JjLnBhdGgpO1xuICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIuYWRkRXhwb3J0cyhcbiAgICAgICAgICBvdXRwdXRUZXh0LCBlbnRyeVBvaW50QmFzZVBhdGgsIHByaXZhdGVEZWNsYXJhdGlvbnNBbmFseXNlcywgaW1wb3J0TWFuYWdlciwgc291cmNlRmlsZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW50cnlQb2ludCB8fCBjb21waWxlZEZpbGUpIHtcbiAgICAgIHRoaXMuc3JjRm9ybWF0dGVyLmFkZEltcG9ydHMoXG4gICAgICAgICAgb3V0cHV0VGV4dCwgaW1wb3J0TWFuYWdlci5nZXRBbGxJbXBvcnRzKHNvdXJjZUZpbGUuZmlsZU5hbWUpLCBzb3VyY2VGaWxlKTtcbiAgICB9XG5cbiAgICBpZiAoY29tcGlsZWRGaWxlIHx8IHN3aXRjaE1hcmtlckFuYWx5c2lzIHx8IGlzRW50cnlQb2ludCkge1xuICAgICAgcmV0dXJuIHJlbmRlclNvdXJjZUFuZE1hcCh0aGlzLmxvZ2dlciwgdGhpcy5mcywgc291cmNlRmlsZSwgb3V0cHV0VGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRnJvbSB0aGUgZ2l2ZW4gbGlzdCBvZiBjbGFzc2VzLCBjb21wdXRlcyBhIG1hcCBvZiBkZWNvcmF0b3JzIHRoYXQgc2hvdWxkIGJlIHJlbW92ZWQuXG4gICAqIFRoZSBkZWNvcmF0b3JzIHRvIHJlbW92ZSBhcmUga2V5ZWQgYnkgdGhlaXIgY29udGFpbmVyIG5vZGUsIHN1Y2ggdGhhdCB3ZSBjYW4gdGVsbCBpZlxuICAgKiB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBlbnRpcmUgZGVjb3JhdG9yIHByb3BlcnR5LlxuICAgKiBAcGFyYW0gY2xhc3NlcyBUaGUgbGlzdCBvZiBjbGFzc2VzIHRoYXQgbWF5IGhhdmUgZGVjb3JhdG9ycyB0byByZW1vdmUuXG4gICAqIEByZXR1cm5zIEEgbWFwIG9mIGRlY29yYXRvcnMgdG8gcmVtb3ZlLCBrZXllZCBieSB0aGVpciBjb250YWluZXIgbm9kZS5cbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZURlY29yYXRvcnNUb1JlbW92ZShjbGFzc2VzOiBDb21waWxlZENsYXNzW10pOiBSZWR1bmRhbnREZWNvcmF0b3JNYXAge1xuICAgIGNvbnN0IGRlY29yYXRvcnNUb1JlbW92ZSA9IG5ldyBSZWR1bmRhbnREZWNvcmF0b3JNYXAoKTtcbiAgICBjbGFzc2VzLmZvckVhY2goY2xhenogPT4ge1xuICAgICAgaWYgKGNsYXp6LmRlY29yYXRvcnMgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjbGF6ei5kZWNvcmF0b3JzLmZvckVhY2goZGVjID0+IHtcbiAgICAgICAgaWYgKGRlYy5ub2RlID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlY29yYXRvckFycmF5ID0gZGVjLm5vZGUucGFyZW50ITtcbiAgICAgICAgaWYgKCFkZWNvcmF0b3JzVG9SZW1vdmUuaGFzKGRlY29yYXRvckFycmF5KSkge1xuICAgICAgICAgIGRlY29yYXRvcnNUb1JlbW92ZS5zZXQoZGVjb3JhdG9yQXJyYXksIFtkZWMubm9kZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlY29yYXRvcnNUb1JlbW92ZS5nZXQoZGVjb3JhdG9yQXJyYXkpIS5wdXNoKGRlYy5ub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRlY29yYXRvcnNUb1JlbW92ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIGRlZmluaXRpb25zIGFzIHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gY2xhc3MuXG4gICAqIEBwYXJhbSBzb3VyY2VGaWxlIFRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIHByb2Nlc3MuXG4gICAqIEBwYXJhbSBjbGF6eiBUaGUgY2xhc3Mgd2hvc2UgZGVmaW5pdGlvbnMgYXJlIHRvIGJlIHJlbmRlcmVkLlxuICAgKiBAcGFyYW0gY29tcGlsYXRpb24gVGhlIHJlc3VsdHMgb2YgYW5hbHl6aW5nIHRoZSBjbGFzcyAtIHRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgcmVuZGVyZWRcbiAgICogZGVmaW5pdGlvbnMuXG4gICAqIEBwYXJhbSBpbXBvcnRzIEFuIG9iamVjdCB0aGF0IHRyYWNrcyB0aGUgaW1wb3J0cyB0aGF0IGFyZSBuZWVkZWQgYnkgdGhlIHJlbmRlcmVkIGRlZmluaXRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJEZWZpbml0aW9ucyhcbiAgICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIGNvbXBpbGVkQ2xhc3M6IENvbXBpbGVkQ2xhc3MsIGltcG9ydHM6IEltcG9ydE1hbmFnZXIsXG4gICAgICBhbm5vdGF0ZUZvckNsb3N1cmVDb21waWxlcjogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuaG9zdC5nZXRJbnRlcm5hbE5hbWVPZkNsYXNzKGNvbXBpbGVkQ2xhc3MuZGVjbGFyYXRpb24pO1xuICAgIGNvbnN0IHN0YXRlbWVudHM6IFN0YXRlbWVudFtdW10gPSBjb21waWxlZENsYXNzLmNvbXBpbGF0aW9uLm1hcChjID0+IHtcbiAgICAgIHJldHVybiBjcmVhdGVBc3NpZ25tZW50U3RhdGVtZW50cyhcbiAgICAgICAgICBuYW1lLCBjLm5hbWUsIGMuaW5pdGlhbGl6ZXIsIGFubm90YXRlRm9yQ2xvc3VyZUNvbXBpbGVyID8gJyogQG5vY29sbGFwc2UgJyA6IHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyU3RhdGVtZW50cyhzb3VyY2VGaWxlLCBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBzdGF0ZW1lbnRzKSwgaW1wb3J0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBhZGphY2VudCBzdGF0ZW1lbnRzIGFzIHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gY2xhc3MuXG4gICAqIEBwYXJhbSBzb3VyY2VGaWxlIFRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIHByb2Nlc3MuXG4gICAqIEBwYXJhbSBjbGF6eiBUaGUgY2xhc3Mgd2hvc2Ugc3RhdGVtZW50cyBhcmUgdG8gYmUgcmVuZGVyZWQuXG4gICAqIEBwYXJhbSBjb21waWxhdGlvbiBUaGUgcmVzdWx0cyBvZiBhbmFseXppbmcgdGhlIGNsYXNzIC0gdGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSByZW5kZXJlZFxuICAgKiBkZWZpbml0aW9ucy5cbiAgICogQHBhcmFtIGltcG9ydHMgQW4gb2JqZWN0IHRoYXQgdHJhY2tzIHRoZSBpbXBvcnRzIHRoYXQgYXJlIG5lZWRlZCBieSB0aGUgcmVuZGVyZWQgZGVmaW5pdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckFkamFjZW50U3RhdGVtZW50cyhcbiAgICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIGNvbXBpbGVkQ2xhc3M6IENvbXBpbGVkQ2xhc3MsIGltcG9ydHM6IEltcG9ydE1hbmFnZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRlbWVudHM6IFN0YXRlbWVudFtdID0gW107XG4gICAgZm9yIChjb25zdCBjIG9mIGNvbXBpbGVkQ2xhc3MuY29tcGlsYXRpb24pIHtcbiAgICAgIHN0YXRlbWVudHMucHVzaCguLi5jLnN0YXRlbWVudHMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZW5kZXJTdGF0ZW1lbnRzKHNvdXJjZUZpbGUsIHN0YXRlbWVudHMsIGltcG9ydHMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTdGF0ZW1lbnRzKFxuICAgICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgc3RhdGVtZW50czogU3RhdGVtZW50W10sIGltcG9ydHM6IEltcG9ydE1hbmFnZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByaW50U3RhdGVtZW50ID0gKHN0bXQ6IFN0YXRlbWVudCkgPT5cbiAgICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIucHJpbnRTdGF0ZW1lbnQoc3RtdCwgc291cmNlRmlsZSwgaW1wb3J0cyk7XG4gICAgcmV0dXJuIHN0YXRlbWVudHMubWFwKHByaW50U3RhdGVtZW50KS5qb2luKCdcXG4nKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgY29uc3RhbnQgcG9vbCBhcyBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQ29uc3RhbnRQb29sKFxuICAgIGZvcm1hdHRlcjogUmVuZGVyaW5nRm9ybWF0dGVyLCBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBjb25zdGFudFBvb2w6IENvbnN0YW50UG9vbCxcbiAgICBpbXBvcnRzOiBJbXBvcnRNYW5hZ2VyKTogc3RyaW5nIHtcbiAgY29uc3QgcHJpbnRTdGF0ZW1lbnQgPSAoc3RtdDogU3RhdGVtZW50KSA9PiBmb3JtYXR0ZXIucHJpbnRTdGF0ZW1lbnQoc3RtdCwgc291cmNlRmlsZSwgaW1wb3J0cyk7XG4gIHJldHVybiBjb25zdGFudFBvb2wuc3RhdGVtZW50cy5tYXAocHJpbnRTdGF0ZW1lbnQpLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBBbmd1bGFyIEFTVCBzdGF0ZW1lbnQgbm9kZSB0aGF0IGNvbnRhaW5zIHRoZSBhc3NpZ25tZW50IG9mIHRoZVxuICogY29tcGlsZWQgZGVjb3JhdG9yIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGNsYXNzLlxuICogQHBhcmFtIGFuYWx5emVkQ2xhc3MgVGhlIGluZm8gYWJvdXQgdGhlIGNsYXNzIHdob3NlIHN0YXRlbWVudCB3ZSB3YW50IHRvIGNyZWF0ZS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWdubWVudFN0YXRlbWVudHMoXG4gICAgcmVjZWl2ZXJOYW1lOiB0cy5EZWNsYXJhdGlvbk5hbWUsIHByb3BOYW1lOiBzdHJpbmcsIGluaXRpYWxpemVyOiBFeHByZXNzaW9uLFxuICAgIGxlYWRpbmdDb21tZW50Pzogc3RyaW5nKTogU3RhdGVtZW50W10ge1xuICBjb25zdCByZWNlaXZlciA9IG5ldyBXcmFwcGVkTm9kZUV4cHIocmVjZWl2ZXJOYW1lKTtcbiAgY29uc3Qgc3RhdGVtZW50cyA9XG4gICAgICBbbmV3IFdyaXRlUHJvcEV4cHIoXG4gICAgICAgICAgIHJlY2VpdmVyLCBwcm9wTmFtZSwgaW5pdGlhbGl6ZXIsIC8qIHR5cGUgKi8gdW5kZWZpbmVkLCAvKiBzb3VyY2VTcGFuICovIHVuZGVmaW5lZClcbiAgICAgICAgICAgLnRvU3RtdCgpXTtcbiAgaWYgKGxlYWRpbmdDb21tZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICBzdGF0ZW1lbnRzLnVuc2hpZnQobmV3IENvbW1lbnRTdG10KGxlYWRpbmdDb21tZW50LCB0cnVlKSk7XG4gIH1cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG4iXX0=
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcmVuZGVyaW5nL3JlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCw4Q0FBb0k7SUFDcEksNkNBQXVDO0lBS3ZDLHlFQUE0RDtJQUs1RCxzRUFBMkM7SUFJM0Msb0dBQWdGO0lBQ2hGLG9GQUFpRDtJQUNqRCx3RUFBdUU7SUFFdkU7Ozs7O09BS0c7SUFDSDtRQUNFLGtCQUNZLElBQXdCLEVBQVUsWUFBZ0MsRUFDbEUsRUFBYyxFQUFVLE1BQWMsRUFBVSxNQUF3QixFQUN4RSxRQUF5QztZQUF6Qyx5QkFBQSxFQUFBLGVBQXlDO1lBRnpDLFNBQUksR0FBSixJQUFJLENBQW9CO1lBQVUsaUJBQVksR0FBWixZQUFZLENBQW9CO1lBQ2xFLE9BQUUsR0FBRixFQUFFLENBQVk7WUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7WUFDeEUsYUFBUSxHQUFSLFFBQVEsQ0FBaUM7UUFBRyxDQUFDO1FBRXpELGdDQUFhLEdBQWIsVUFDSSxrQkFBc0MsRUFBRSxvQkFBMEMsRUFDbEYsMkJBQXdEO1lBRjVELGlCQWlCQztZQWRDLElBQU0sYUFBYSxHQUFrQixFQUFFLENBQUM7WUFFeEMsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBQSxVQUFVO2dCQUN6RCxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO29CQUMxRSxVQUFVLEtBQUssS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO29CQUN2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M0UsY0FBK0I7UUFDakMsSUFBTSxRQUFRLEdBQUcsSUFBSSwwQkFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25ELElBQU0sU0FBUyxHQUNYLElBQUksd0JBQWEsQ0FDYixRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQzthQUNqRixNQUFNLEVBQUUsQ0FBQztRQUNsQixJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDaEMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtDb25zdGFudFBvb2wsIEV4cHJlc3Npb24sIGpzRG9jQ29tbWVudCwgTGVhZGluZ0NvbW1lbnQsIFN0YXRlbWVudCwgV3JhcHBlZE5vZGVFeHByLCBXcml0ZVByb3BFeHByfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQgTWFnaWNTdHJpbmcgZnJvbSAnbWFnaWMtc3RyaW5nJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ZpbGVTeXN0ZW19IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2xvZ2dpbmcnO1xuaW1wb3J0IHtJbXBvcnRNYW5hZ2VyfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdHJhbnNsYXRvcic7XG5pbXBvcnQge1BhcnNlZENvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uLy4uL3NyYy9wZXJmb3JtX2NvbXBpbGUnO1xuaW1wb3J0IHtQcml2YXRlRGVjbGFyYXRpb25zQW5hbHlzZXN9IGZyb20gJy4uL2FuYWx5c2lzL3ByaXZhdGVfZGVjbGFyYXRpb25zX2FuYWx5emVyJztcbmltcG9ydCB7U3dpdGNoTWFya2VyQW5hbHlzZXMsIFN3aXRjaE1hcmtlckFuYWx5c2lzfSBmcm9tICcuLi9hbmFseXNpcy9zd2l0Y2hfbWFya2VyX2FuYWx5emVyJztcbmltcG9ydCB7Q29tcGlsZWRDbGFzcywgQ29tcGlsZWRGaWxlLCBEZWNvcmF0aW9uQW5hbHlzZXN9IGZyb20gJy4uL2FuYWx5c2lzL3R5cGVzJztcbmltcG9ydCB7SU1QT1JUX1BSRUZJWH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7TmdjY1JlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi9ob3N0L25nY2NfaG9zdCc7XG5pbXBvcnQge0VudHJ5UG9pbnRCdW5kbGV9IGZyb20gJy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50X2J1bmRsZSc7XG5cbmltcG9ydCB7UmVkdW5kYW50RGVjb3JhdG9yTWFwLCBSZW5kZXJpbmdGb3JtYXR0ZXJ9IGZyb20gJy4vcmVuZGVyaW5nX2Zvcm1hdHRlcic7XG5pbXBvcnQge3JlbmRlclNvdXJjZUFuZE1hcH0gZnJvbSAnLi9zb3VyY2VfbWFwcyc7XG5pbXBvcnQge0ZpbGVUb1dyaXRlLCBnZXRJbXBvcnRSZXdyaXRlciwgc3RyaXBFeHRlbnNpb259IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEEgYmFzZS1jbGFzcyBmb3IgcmVuZGVyaW5nIGFuIGBBbmFseXplZEZpbGVgLlxuICpcbiAqIFBhY2thZ2UgZm9ybWF0cyBoYXZlIG91dHB1dCBmaWxlcyB0aGF0IG11c3QgYmUgcmVuZGVyZWQgZGlmZmVyZW50bHkuIENvbmNyZXRlIHN1Yi1jbGFzc2VzIG11c3RcbiAqIGltcGxlbWVudCB0aGUgYGFkZEltcG9ydHNgLCBgYWRkRGVmaW5pdGlvbnNgIGFuZCBgcmVtb3ZlRGVjb3JhdG9yc2AgYWJzdHJhY3QgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGhvc3Q6IE5nY2NSZWZsZWN0aW9uSG9zdCwgcHJpdmF0ZSBzcmNGb3JtYXR0ZXI6IFJlbmRlcmluZ0Zvcm1hdHRlcixcbiAgICAgIHByaXZhdGUgZnM6IEZpbGVTeXN0ZW0sIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsIHByaXZhdGUgYnVuZGxlOiBFbnRyeVBvaW50QnVuZGxlLFxuICAgICAgcHJpdmF0ZSB0c0NvbmZpZzogUGFyc2VkQ29uZmlndXJhdGlvbnxudWxsID0gbnVsbCkge31cblxuICByZW5kZXJQcm9ncmFtKFxuICAgICAgZGVjb3JhdGlvbkFuYWx5c2VzOiBEZWNvcmF0aW9uQW5hbHlzZXMsIHN3aXRjaE1hcmtlckFuYWx5c2VzOiBTd2l0Y2hNYXJrZXJBbmFseXNlcyxcbiAgICAgIHByaXZhdGVEZWNsYXJhdGlvbnNBbmFseXNlczogUHJpdmF0ZURlY2xhcmF0aW9uc0FuYWx5c2VzKTogRmlsZVRvV3JpdGVbXSB7XG4gICAgY29uc3QgcmVuZGVyZWRGaWxlczogRmlsZVRvV3JpdGVbXSA9IFtdO1xuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBzb3VyY2UgZmlsZXMuXG4gICAgdGhpcy5idW5kbGUuc3JjLnByb2dyYW0uZ2V0U291cmNlRmlsZXMoKS5mb3JFYWNoKHNvdXJjZUZpbGUgPT4ge1xuICAgICAgaWYgKGRlY29yYXRpb25BbmFseXNlcy5oYXMoc291cmNlRmlsZSkgfHwgc3dpdGNoTWFya2VyQW5hbHlzZXMuaGFzKHNvdXJjZUZpbGUpIHx8XG4gICAgICAgICAgc291cmNlRmlsZSA9PT0gdGhpcy5idW5kbGUuc3JjLmZpbGUpIHtcbiAgICAgICAgY29uc3QgY29tcGlsZWRGaWxlID0gZGVjb3JhdGlvbkFuYWx5c2VzLmdldChzb3VyY2VGaWxlKTtcbiAgICAgICAgY29uc3Qgc3dpdGNoTWFya2VyQW5hbHlzaXMgPSBzd2l0Y2hNYXJrZXJBbmFseXNlcy5nZXQoc291cmNlRmlsZSk7XG4gICAgICAgIHJlbmRlcmVkRmlsZXMucHVzaCguLi50aGlzLnJlbmRlckZpbGUoXG4gICAgICAgICAgICBzb3VyY2VGaWxlLCBjb21waWxlZEZpbGUsIHN3aXRjaE1hcmtlckFuYWx5c2lzLCBwcml2YXRlRGVjbGFyYXRpb25zQW5hbHlzZXMpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZW5kZXJlZEZpbGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgc291cmNlIGNvZGUgYW5kIHNvdXJjZS1tYXAgZm9yIGFuIEFuYWx5emVkIGZpbGUuXG4gICAqIEBwYXJhbSBjb21waWxlZEZpbGUgVGhlIGFuYWx5emVkIGZpbGUgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0gdGFyZ2V0UGF0aCBUaGUgYWJzb2x1dGUgcGF0aCB3aGVyZSB0aGUgcmVuZGVyZWQgZmlsZSB3aWxsIGJlIHdyaXR0ZW4uXG4gICAqL1xuICByZW5kZXJGaWxlKFxuICAgICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgY29tcGlsZWRGaWxlOiBDb21waWxlZEZpbGV8dW5kZWZpbmVkLFxuICAgICAgc3dpdGNoTWFya2VyQW5hbHlzaXM6IFN3aXRjaE1hcmtlckFuYWx5c2lzfHVuZGVmaW5lZCxcbiAgICAgIHByaXZhdGVEZWNsYXJhdGlvbnNBbmFseXNlczogUHJpdmF0ZURlY2xhcmF0aW9uc0FuYWx5c2VzKTogRmlsZVRvV3JpdGVbXSB7XG4gICAgY29uc3QgaXNFbnRyeVBvaW50ID0gc291cmNlRmlsZSA9PT0gdGhpcy5idW5kbGUuc3JjLmZpbGU7XG4gICAgY29uc3Qgb3V0cHV0VGV4dCA9IG5ldyBNYWdpY1N0cmluZyhzb3VyY2VGaWxlLnRleHQpO1xuXG4gICAgaWYgKHN3aXRjaE1hcmtlckFuYWx5c2lzKSB7XG4gICAgICB0aGlzLnNyY0Zvcm1hdHRlci5yZXdyaXRlU3dpdGNoYWJsZURlY2xhcmF0aW9ucyhcbiAgICAgICAgICBvdXRwdXRUZXh0LCBzd2l0Y2hNYXJrZXJBbmFseXNpcy5zb3VyY2VGaWxlLCBzd2l0Y2hNYXJrZXJBbmFseXNpcy5kZWNsYXJhdGlvbnMpO1xuICAgIH1cblxuICAgIGNvbnN0IGltcG9ydE1hbmFnZXIgPSBuZXcgSW1wb3J0TWFuYWdlcihcbiAgICAgICAgZ2V0SW1wb3J0UmV3cml0ZXIoXG4gICAgICAgICAgICB0aGlzLmJ1bmRsZS5zcmMucjNTeW1ib2xzRmlsZSwgdGhpcy5idW5kbGUuaXNDb3JlLCB0aGlzLmJ1bmRsZS5pc0ZsYXRDb3JlKSxcbiAgICAgICAgSU1QT1JUX1BSRUZJWCk7XG5cbiAgICBpZiAoY29tcGlsZWRGaWxlKSB7XG4gICAgICAvLyBUT0RPOiByZW1vdmUgY29uc3RydWN0b3IgcGFyYW0gbWV0YWRhdGEgYW5kIHByb3BlcnR5IGRlY29yYXRvcnMgKHdlIG5lZWQgaW5mbyBmcm9tIHRoZVxuICAgICAgLy8gaGFuZGxlcnMgdG8gZG8gdGhpcylcbiAgICAgIGNvbnN0IGRlY29yYXRvcnNUb1JlbW92ZSA9IHRoaXMuY29tcHV0ZURlY29yYXRvcnNUb1JlbW92ZShjb21waWxlZEZpbGUuY29tcGlsZWRDbGFzc2VzKTtcbiAgICAgIHRoaXMuc3JjRm9ybWF0dGVyLnJlbW92ZURlY29yYXRvcnMob3V0cHV0VGV4dCwgZGVjb3JhdG9yc1RvUmVtb3ZlKTtcblxuICAgICAgY29tcGlsZWRGaWxlLmNvbXBpbGVkQ2xhc3Nlcy5mb3JFYWNoKGNsYXp6ID0+IHtcbiAgICAgICAgY29uc3QgcmVuZGVyZWREZWZpbml0aW9uID0gdGhpcy5yZW5kZXJEZWZpbml0aW9ucyhcbiAgICAgICAgICAgIGNvbXBpbGVkRmlsZS5zb3VyY2VGaWxlLCBjbGF6eiwgaW1wb3J0TWFuYWdlcixcbiAgICAgICAgICAgICEhdGhpcy50c0NvbmZpZz8ub3B0aW9ucy5hbm5vdGF0ZUZvckNsb3N1cmVDb21waWxlcik7XG4gICAgICAgIHRoaXMuc3JjRm9ybWF0dGVyLmFkZERlZmluaXRpb25zKG91dHB1dFRleHQsIGNsYXp6LCByZW5kZXJlZERlZmluaXRpb24pO1xuXG4gICAgICAgIGNvbnN0IHJlbmRlcmVkU3RhdGVtZW50cyA9XG4gICAgICAgICAgICB0aGlzLnJlbmRlckFkamFjZW50U3RhdGVtZW50cyhjb21waWxlZEZpbGUuc291cmNlRmlsZSwgY2xhenosIGltcG9ydE1hbmFnZXIpO1xuICAgICAgICB0aGlzLnNyY0Zvcm1hdHRlci5hZGRBZGphY2VudFN0YXRlbWVudHMob3V0cHV0VGV4dCwgY2xhenosIHJlbmRlcmVkU3RhdGVtZW50cyk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFpc0VudHJ5UG9pbnQgJiYgY29tcGlsZWRGaWxlLnJlZXhwb3J0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc3JjRm9ybWF0dGVyLmFkZERpcmVjdEV4cG9ydHMoXG4gICAgICAgICAgICBvdXRwdXRUZXh0LCBjb21waWxlZEZpbGUucmVleHBvcnRzLCBpbXBvcnRNYW5hZ2VyLCBjb21waWxlZEZpbGUuc291cmNlRmlsZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3JjRm9ybWF0dGVyLmFkZENvbnN0YW50cyhcbiAgICAgICAgICBvdXRwdXRUZXh0LFxuICAgICAgICAgIHJlbmRlckNvbnN0YW50UG9vbChcbiAgICAgICAgICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIsIGNvbXBpbGVkRmlsZS5zb3VyY2VGaWxlLCBjb21waWxlZEZpbGUuY29uc3RhbnRQb29sLCBpbXBvcnRNYW5hZ2VyKSxcbiAgICAgICAgICBjb21waWxlZEZpbGUuc291cmNlRmlsZSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGV4cG9ydHMgdG8gdGhlIGVudHJ5LXBvaW50IGZpbGVcbiAgICBpZiAoaXNFbnRyeVBvaW50KSB7XG4gICAgICBjb25zdCBlbnRyeVBvaW50QmFzZVBhdGggPSBzdHJpcEV4dGVuc2lvbih0aGlzLmJ1bmRsZS5zcmMucGF0aCk7XG4gICAgICB0aGlzLnNyY0Zvcm1hdHRlci5hZGRFeHBvcnRzKFxuICAgICAgICAgIG91dHB1dFRleHQsIGVudHJ5UG9pbnRCYXNlUGF0aCwgcHJpdmF0ZURlY2xhcmF0aW9uc0FuYWx5c2VzLCBpbXBvcnRNYW5hZ2VyLCBzb3VyY2VGaWxlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbnRyeVBvaW50IHx8IGNvbXBpbGVkRmlsZSkge1xuICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIuYWRkSW1wb3J0cyhcbiAgICAgICAgICBvdXRwdXRUZXh0LCBpbXBvcnRNYW5hZ2VyLmdldEFsbEltcG9ydHMoc291cmNlRmlsZS5maWxlTmFtZSksIHNvdXJjZUZpbGUpO1xuICAgIH1cblxuICAgIGlmIChjb21waWxlZEZpbGUgfHwgc3dpdGNoTWFya2VyQW5hbHlzaXMgfHwgaXNFbnRyeVBvaW50KSB7XG4gICAgICByZXR1cm4gcmVuZGVyU291cmNlQW5kTWFwKHRoaXMubG9nZ2VyLCB0aGlzLmZzLCBzb3VyY2VGaWxlLCBvdXRwdXRUZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGcm9tIHRoZSBnaXZlbiBsaXN0IG9mIGNsYXNzZXMsIGNvbXB1dGVzIGEgbWFwIG9mIGRlY29yYXRvcnMgdGhhdCBzaG91bGQgYmUgcmVtb3ZlZC5cbiAgICogVGhlIGRlY29yYXRvcnMgdG8gcmVtb3ZlIGFyZSBrZXllZCBieSB0aGVpciBjb250YWluZXIgbm9kZSwgc3VjaCB0aGF0IHdlIGNhbiB0ZWxsIGlmXG4gICAqIHdlIHNob3VsZCByZW1vdmUgdGhlIGVudGlyZSBkZWNvcmF0b3IgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBjbGFzc2VzIFRoZSBsaXN0IG9mIGNsYXNzZXMgdGhhdCBtYXkgaGF2ZSBkZWNvcmF0b3JzIHRvIHJlbW92ZS5cbiAgICogQHJldHVybnMgQSBtYXAgb2YgZGVjb3JhdG9ycyB0byByZW1vdmUsIGtleWVkIGJ5IHRoZWlyIGNvbnRhaW5lciBub2RlLlxuICAgKi9cbiAgcHJpdmF0ZSBjb21wdXRlRGVjb3JhdG9yc1RvUmVtb3ZlKGNsYXNzZXM6IENvbXBpbGVkQ2xhc3NbXSk6IFJlZHVuZGFudERlY29yYXRvck1hcCB7XG4gICAgY29uc3QgZGVjb3JhdG9yc1RvUmVtb3ZlID0gbmV3IFJlZHVuZGFudERlY29yYXRvck1hcCgpO1xuICAgIGNsYXNzZXMuZm9yRWFjaChjbGF6eiA9PiB7XG4gICAgICBpZiAoY2xhenouZGVjb3JhdG9ycyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNsYXp6LmRlY29yYXRvcnMuZm9yRWFjaChkZWMgPT4ge1xuICAgICAgICBpZiAoZGVjLm5vZGUgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVjb3JhdG9yQXJyYXkgPSBkZWMubm9kZS5wYXJlbnQhO1xuICAgICAgICBpZiAoIWRlY29yYXRvcnNUb1JlbW92ZS5oYXMoZGVjb3JhdG9yQXJyYXkpKSB7XG4gICAgICAgICAgZGVjb3JhdG9yc1RvUmVtb3ZlLnNldChkZWNvcmF0b3JBcnJheSwgW2RlYy5ub2RlXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVjb3JhdG9yc1RvUmVtb3ZlLmdldChkZWNvcmF0b3JBcnJheSkhLnB1c2goZGVjLm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGVjb3JhdG9yc1RvUmVtb3ZlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgZGVmaW5pdGlvbnMgYXMgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBjbGFzcy5cbiAgICogQHBhcmFtIHNvdXJjZUZpbGUgVGhlIGZpbGUgY29udGFpbmluZyB0aGUgY2xhc3MgdG8gcHJvY2Vzcy5cbiAgICogQHBhcmFtIGNsYXp6IFRoZSBjbGFzcyB3aG9zZSBkZWZpbml0aW9ucyBhcmUgdG8gYmUgcmVuZGVyZWQuXG4gICAqIEBwYXJhbSBjb21waWxhdGlvbiBUaGUgcmVzdWx0cyBvZiBhbmFseXppbmcgdGhlIGNsYXNzIC0gdGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSByZW5kZXJlZFxuICAgKiBkZWZpbml0aW9ucy5cbiAgICogQHBhcmFtIGltcG9ydHMgQW4gb2JqZWN0IHRoYXQgdHJhY2tzIHRoZSBpbXBvcnRzIHRoYXQgYXJlIG5lZWRlZCBieSB0aGUgcmVuZGVyZWQgZGVmaW5pdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckRlZmluaXRpb25zKFxuICAgICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgY29tcGlsZWRDbGFzczogQ29tcGlsZWRDbGFzcywgaW1wb3J0czogSW1wb3J0TWFuYWdlcixcbiAgICAgIGFubm90YXRlRm9yQ2xvc3VyZUNvbXBpbGVyOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5ob3N0LmdldEludGVybmFsTmFtZU9mQ2xhc3MoY29tcGlsZWRDbGFzcy5kZWNsYXJhdGlvbik7XG4gICAgY29uc3QgbGVhZGluZ0NvbW1lbnQgPVxuICAgICAgICBhbm5vdGF0ZUZvckNsb3N1cmVDb21waWxlciA/IGpzRG9jQ29tbWVudChbe3RhZ05hbWU6ICdub2NvbGxhcHNlJ31dKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSA9IGNvbXBpbGVkQ2xhc3MuY29tcGlsYXRpb24ubWFwKFxuICAgICAgICBjID0+IGNyZWF0ZUFzc2lnbm1lbnRTdGF0ZW1lbnQobmFtZSwgYy5uYW1lLCBjLmluaXRpYWxpemVyLCBsZWFkaW5nQ29tbWVudCkpO1xuICAgIHJldHVybiB0aGlzLnJlbmRlclN0YXRlbWVudHMoc291cmNlRmlsZSwgc3RhdGVtZW50cywgaW1wb3J0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBhZGphY2VudCBzdGF0ZW1lbnRzIGFzIHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gY2xhc3MuXG4gICAqIEBwYXJhbSBzb3VyY2VGaWxlIFRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIHByb2Nlc3MuXG4gICAqIEBwYXJhbSBjbGF6eiBUaGUgY2xhc3Mgd2hvc2Ugc3RhdGVtZW50cyBhcmUgdG8gYmUgcmVuZGVyZWQuXG4gICAqIEBwYXJhbSBjb21waWxhdGlvbiBUaGUgcmVzdWx0cyBvZiBhbmFseXppbmcgdGhlIGNsYXNzIC0gdGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSByZW5kZXJlZFxuICAgKiBkZWZpbml0aW9ucy5cbiAgICogQHBhcmFtIGltcG9ydHMgQW4gb2JqZWN0IHRoYXQgdHJhY2tzIHRoZSBpbXBvcnRzIHRoYXQgYXJlIG5lZWRlZCBieSB0aGUgcmVuZGVyZWQgZGVmaW5pdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckFkamFjZW50U3RhdGVtZW50cyhcbiAgICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIGNvbXBpbGVkQ2xhc3M6IENvbXBpbGVkQ2xhc3MsIGltcG9ydHM6IEltcG9ydE1hbmFnZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRlbWVudHM6IFN0YXRlbWVudFtdID0gW107XG4gICAgZm9yIChjb25zdCBjIG9mIGNvbXBpbGVkQ2xhc3MuY29tcGlsYXRpb24pIHtcbiAgICAgIHN0YXRlbWVudHMucHVzaCguLi5jLnN0YXRlbWVudHMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZW5kZXJTdGF0ZW1lbnRzKHNvdXJjZUZpbGUsIHN0YXRlbWVudHMsIGltcG9ydHMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTdGF0ZW1lbnRzKFxuICAgICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgc3RhdGVtZW50czogU3RhdGVtZW50W10sIGltcG9ydHM6IEltcG9ydE1hbmFnZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByaW50U3RhdGVtZW50ID0gKHN0bXQ6IFN0YXRlbWVudCkgPT5cbiAgICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIucHJpbnRTdGF0ZW1lbnQoc3RtdCwgc291cmNlRmlsZSwgaW1wb3J0cyk7XG4gICAgcmV0dXJuIHN0YXRlbWVudHMubWFwKHByaW50U3RhdGVtZW50KS5qb2luKCdcXG4nKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgY29uc3RhbnQgcG9vbCBhcyBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQ29uc3RhbnRQb29sKFxuICAgIGZvcm1hdHRlcjogUmVuZGVyaW5nRm9ybWF0dGVyLCBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBjb25zdGFudFBvb2w6IENvbnN0YW50UG9vbCxcbiAgICBpbXBvcnRzOiBJbXBvcnRNYW5hZ2VyKTogc3RyaW5nIHtcbiAgY29uc3QgcHJpbnRTdGF0ZW1lbnQgPSAoc3RtdDogU3RhdGVtZW50KSA9PiBmb3JtYXR0ZXIucHJpbnRTdGF0ZW1lbnQoc3RtdCwgc291cmNlRmlsZSwgaW1wb3J0cyk7XG4gIHJldHVybiBjb25zdGFudFBvb2wuc3RhdGVtZW50cy5tYXAocHJpbnRTdGF0ZW1lbnQpLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBBbmd1bGFyIEFTVCBzdGF0ZW1lbnQgbm9kZSB0aGF0IGNvbnRhaW5zIHRoZSBhc3NpZ25tZW50IG9mIHRoZVxuICogY29tcGlsZWQgZGVjb3JhdG9yIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGNsYXNzLlxuICogQHBhcmFtIGFuYWx5emVkQ2xhc3MgVGhlIGluZm8gYWJvdXQgdGhlIGNsYXNzIHdob3NlIHN0YXRlbWVudCB3ZSB3YW50IHRvIGNyZWF0ZS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWdubWVudFN0YXRlbWVudChcbiAgICByZWNlaXZlck5hbWU6IHRzLkRlY2xhcmF0aW9uTmFtZSwgcHJvcE5hbWU6IHN0cmluZywgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24sXG4gICAgbGVhZGluZ0NvbW1lbnQ/OiBMZWFkaW5nQ29tbWVudCk6IFN0YXRlbWVudCB7XG4gIGNvbnN0IHJlY2VpdmVyID0gbmV3IFdyYXBwZWROb2RlRXhwcihyZWNlaXZlck5hbWUpO1xuICBjb25zdCBzdGF0ZW1lbnQgPVxuICAgICAgbmV3IFdyaXRlUHJvcEV4cHIoXG4gICAgICAgICAgcmVjZWl2ZXIsIHByb3BOYW1lLCBpbml0aWFsaXplciwgLyogdHlwZSAqLyB1bmRlZmluZWQsIC8qIHNvdXJjZVNwYW4gKi8gdW5kZWZpbmVkKVxuICAgICAgICAgIC50b1N0bXQoKTtcbiAgaWYgKGxlYWRpbmdDb21tZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICBzdGF0ZW1lbnQuYWRkTGVhZGluZ0NvbW1lbnQobGVhZGluZ0NvbW1lbnQpO1xuICB9XG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/compiler-cli",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.3",
|
|
4
4
|
"description": "Angular - the compiler CLI for Node.js",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"typings": "index.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"yargs": "15.3.0"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
|
-
"@angular/compiler": "10.1.
|
|
29
|
+
"@angular/compiler": "10.1.3",
|
|
30
30
|
"typescript": ">=3.9 <4.1"
|
|
31
31
|
},
|
|
32
32
|
"engines": {
|
|
@@ -11,7 +11,7 @@ import { CycleAnalyzer } from '../../cycles';
|
|
|
11
11
|
import { DefaultImportRecorder, ModuleResolver, Reference, ReferenceEmitter } from '../../imports';
|
|
12
12
|
import { DependencyTracker } from '../../incremental/api';
|
|
13
13
|
import { IndexingContext } from '../../indexer';
|
|
14
|
-
import { DirectiveTypeCheckMeta, InjectableClassRegistry, MetadataReader, MetadataRegistry } from '../../metadata';
|
|
14
|
+
import { ClassPropertyMapping, DirectiveTypeCheckMeta, InjectableClassRegistry, MetadataReader, MetadataRegistry } from '../../metadata';
|
|
15
15
|
import { PartialEvaluator } from '../../partial_evaluator';
|
|
16
16
|
import { ClassDeclaration, Decorator, ReflectionHost } from '../../reflection';
|
|
17
17
|
import { ComponentScopeReader, LocalModuleScopeRegistry } from '../../scope';
|
|
@@ -36,6 +36,8 @@ export interface ComponentAnalysisData {
|
|
|
36
36
|
typeCheckMeta: DirectiveTypeCheckMeta;
|
|
37
37
|
template: ParsedTemplateWithSource;
|
|
38
38
|
metadataStmt: Statement | null;
|
|
39
|
+
inputs: ClassPropertyMapping;
|
|
40
|
+
outputs: ClassPropertyMapping;
|
|
39
41
|
/**
|
|
40
42
|
* Providers extracted from the `providers` field of the component annotation which will require
|
|
41
43
|
* an Angular factory definition at runtime.
|
|
@@ -75,6 +77,7 @@ export declare class ComponentDecoratorHandler implements DecoratorHandler<Decor
|
|
|
75
77
|
constructor(reflector: ReflectionHost, evaluator: PartialEvaluator, metaRegistry: MetadataRegistry, metaReader: MetadataReader, scopeReader: ComponentScopeReader, scopeRegistry: LocalModuleScopeRegistry, isCore: boolean, resourceLoader: ResourceLoader, rootDirs: ReadonlyArray<string>, defaultPreserveWhitespaces: boolean, i18nUseExternalIds: boolean, enableI18nLegacyMessageIdFormat: boolean, i18nNormalizeLineEndingsInICUs: boolean | undefined, moduleResolver: ModuleResolver, cycleAnalyzer: CycleAnalyzer, refEmitter: ReferenceEmitter, defaultImportRecorder: DefaultImportRecorder, depTracker: DependencyTracker | null, injectableRegistry: InjectableClassRegistry, annotateForClosureCompiler: boolean);
|
|
76
78
|
private literalCache;
|
|
77
79
|
private elementSchemaRegistry;
|
|
80
|
+
private typeCheckScopes;
|
|
78
81
|
/**
|
|
79
82
|
* During the asynchronous preanalyze phase, it's necessary to parse the template to extract
|
|
80
83
|
* any potential <link> tags which might need to be loaded. This cache ensures that work is not
|