@angular-devkit/core 0.0.29 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node/cli-logger.d.ts +1 -8
- package/node/cli-logger.js +8 -8
- package/node/fs.js +1 -1
- package/node/host.d.ts +1 -1
- package/node/host.js +24 -24
- package/node/index.js +1 -1
- package/node/resolve.d.ts +1 -8
- package/node/resolve.js +3 -3
- package/package.json +1 -1
- package/src/exception/exception.js +1 -1
- package/src/index.js +1 -1
- package/src/json/index.js +1 -1
- package/src/json/interface.js +1 -1
- package/src/json/parser.js +1 -1
- package/src/json/parser_benchmark.js +2 -1
- package/src/json/schema/index.js +1 -1
- package/src/json/schema/interface.js +1 -1
- package/src/json/schema/registry.js +1 -1
- package/src/logger/indent.js +1 -1
- package/src/logger/index.js +1 -1
- package/src/logger/logger.js +1 -1
- package/src/logger/null-logger.js +1 -1
- package/src/logger/transform-logger.js +1 -1
- package/src/terminal/caps.js +1 -1
- package/src/terminal/colors.js +1 -1
- package/src/terminal/index.js +1 -1
- package/src/terminal/text.js +1 -1
- package/src/utils/index.d.ts +2 -2
- package/src/utils/index.js +3 -2
- package/src/utils/literals.js +1 -1
- package/src/utils/object.js +1 -1
- package/src/utils/priority-queue.js +1 -1
- package/src/utils/strings.js +1 -1
- package/src/utils/template.js +1 -1
- package/src/virtual-fs/host/buffer.js +1 -1
- package/src/virtual-fs/host/index.js +1 -1
- package/src/virtual-fs/host/interface.js +1 -1
- package/src/virtual-fs/host/memory.js +1 -1
- package/src/virtual-fs/host/scoped.js +1 -1
- package/src/virtual-fs/host/sync.js +1 -1
- package/src/virtual-fs/index.js +1 -1
- package/src/virtual-fs/path.d.ts +1 -1
- package/src/virtual-fs/path.js +5 -5
- package/src/virtual-fs/path_benchmark.js +2 -1
package/node/cli-logger.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { logging } from '@angular-devkit/core';
|
|
1
|
+
import { logging } from '../src';
|
|
9
2
|
/**
|
|
10
3
|
* A Logger that sends information to STDOUT and STDERR.
|
|
11
4
|
*/
|
package/node/cli-logger.js
CHANGED
|
@@ -7,31 +7,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
* Use of this source code is governed by an MIT-style license that can be
|
|
8
8
|
* found in the LICENSE file at https://angular.io/license
|
|
9
9
|
*/
|
|
10
|
-
const core_1 = require("@angular-devkit/core");
|
|
11
10
|
const operators_1 = require("rxjs/operators");
|
|
11
|
+
const src_1 = require("../src");
|
|
12
12
|
/**
|
|
13
13
|
* A Logger that sends information to STDOUT and STDERR.
|
|
14
14
|
*/
|
|
15
15
|
function createConsoleLogger(verbose = false) {
|
|
16
|
-
const logger = new
|
|
16
|
+
const logger = new src_1.logging.IndentLogger('cling');
|
|
17
17
|
logger
|
|
18
18
|
.pipe(operators_1.filter(entry => (entry.level != 'debug' || verbose)))
|
|
19
19
|
.subscribe(entry => {
|
|
20
|
-
let color = x =>
|
|
20
|
+
let color = x => src_1.terminal.dim(src_1.terminal.white(x));
|
|
21
21
|
let output = process.stdout;
|
|
22
22
|
switch (entry.level) {
|
|
23
23
|
case 'info':
|
|
24
|
-
color =
|
|
24
|
+
color = src_1.terminal.white;
|
|
25
25
|
break;
|
|
26
26
|
case 'warn':
|
|
27
|
-
color =
|
|
27
|
+
color = src_1.terminal.yellow;
|
|
28
28
|
break;
|
|
29
29
|
case 'error':
|
|
30
|
-
color =
|
|
30
|
+
color = src_1.terminal.red;
|
|
31
31
|
output = process.stderr;
|
|
32
32
|
break;
|
|
33
33
|
case 'fatal':
|
|
34
|
-
color = (x) =>
|
|
34
|
+
color = (x) => src_1.terminal.bold(src_1.terminal.red(x));
|
|
35
35
|
output = process.stderr;
|
|
36
36
|
break;
|
|
37
37
|
}
|
|
@@ -40,4 +40,4 @@ function createConsoleLogger(verbose = false) {
|
|
|
40
40
|
return logger;
|
|
41
41
|
}
|
|
42
42
|
exports.createConsoleLogger = createConsoleLogger;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9ub2RlL2NsaS1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCw4Q0FBd0M7QUFDeEMsZ0NBQTJDO0FBRzNDOztHQUVHO0FBQ0gsNkJBQW9DLE9BQU8sR0FBRyxLQUFLO0lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksYUFBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVqRCxNQUFNO1NBQ0gsSUFBSSxDQUFDLGtCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDMUQsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2pCLElBQUksS0FBSyxHQUEwQixDQUFDLENBQUMsRUFBRSxDQUFDLGNBQVEsQ0FBQyxHQUFHLENBQUMsY0FBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDNUIsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEIsS0FBSyxNQUFNO2dCQUNULEtBQUssR0FBRyxjQUFRLENBQUMsS0FBSyxDQUFDO2dCQUN2QixLQUFLLENBQUM7WUFDUixLQUFLLE1BQU07Z0JBQ1QsS0FBSyxHQUFHLGNBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQztZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLEdBQUcsY0FBUSxDQUFDLEdBQUcsQ0FBQztnQkFDckIsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQztZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLGNBQVEsQ0FBQyxJQUFJLENBQUMsY0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDeEIsS0FBSyxDQUFDO1FBQ1YsQ0FBQztRQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVMLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQTdCRCxrREE2QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBsb2dnaW5nLCB0ZXJtaW5hbCB9IGZyb20gJy4uL3NyYyc7XG5cblxuLyoqXG4gKiBBIExvZ2dlciB0aGF0IHNlbmRzIGluZm9ybWF0aW9uIHRvIFNURE9VVCBhbmQgU1RERVJSLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uc29sZUxvZ2dlcih2ZXJib3NlID0gZmFsc2UpOiBsb2dnaW5nLkxvZ2dlciB7XG4gIGNvbnN0IGxvZ2dlciA9IG5ldyBsb2dnaW5nLkluZGVudExvZ2dlcignY2xpbmcnKTtcblxuICBsb2dnZXJcbiAgICAucGlwZShmaWx0ZXIoZW50cnkgPT4gKGVudHJ5LmxldmVsICE9ICdkZWJ1ZycgfHwgdmVyYm9zZSkpKVxuICAgIC5zdWJzY3JpYmUoZW50cnkgPT4ge1xuICAgICAgbGV0IGNvbG9yOiAoczogc3RyaW5nKSA9PiBzdHJpbmcgPSB4ID0+IHRlcm1pbmFsLmRpbSh0ZXJtaW5hbC53aGl0ZSh4KSk7XG4gICAgICBsZXQgb3V0cHV0ID0gcHJvY2Vzcy5zdGRvdXQ7XG4gICAgICBzd2l0Y2ggKGVudHJ5LmxldmVsKSB7XG4gICAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICAgIGNvbG9yID0gdGVybWluYWwud2hpdGU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3dhcm4nOlxuICAgICAgICAgIGNvbG9yID0gdGVybWluYWwueWVsbG93O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgY29sb3IgPSB0ZXJtaW5hbC5yZWQ7XG4gICAgICAgICAgb3V0cHV0ID0gcHJvY2Vzcy5zdGRlcnI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ZhdGFsJzpcbiAgICAgICAgICBjb2xvciA9ICh4OiBzdHJpbmcpID0+IHRlcm1pbmFsLmJvbGQodGVybWluYWwucmVkKHgpKTtcbiAgICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLnN0ZGVycjtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgb3V0cHV0LndyaXRlKGNvbG9yKGVudHJ5Lm1lc3NhZ2UpICsgJ1xcbicpO1xuICAgIH0pO1xuXG4gIHJldHVybiBsb2dnZXI7XG59XG4iXX0=
|
package/node/fs.js
CHANGED
|
@@ -36,4 +36,4 @@ function isDirectory(filePath) {
|
|
|
36
36
|
return stat.isDirectory();
|
|
37
37
|
}
|
|
38
38
|
exports.isDirectory = isDirectory;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2NvcmUvbm9kZS9mcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7R0FNRztBQUNILHlCQUF5QjtBQUd6QixnQkFBdUIsUUFBZ0I7SUFDckMsSUFBSSxJQUFJLENBQUM7SUFDVCxJQUFJLENBQUM7UUFDSCxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNYLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEMsQ0FBQztBQVpELHdCQVlDO0FBR0QscUJBQTRCLFFBQWdCO0lBQzFDLElBQUksSUFBSSxDQUFDO0lBQ1QsSUFBSSxDQUFDO1FBQ0gsSUFBSSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RCxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQVpELGtDQVlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGUoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgc3RhdDtcbiAgdHJ5IHtcbiAgICBzdGF0ID0gZnMuc3RhdFN5bmMoZmlsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUgJiYgKGUuY29kZSA9PT0gJ0VOT0VOVCcgfHwgZS5jb2RlID09PSAnRU5PVERJUicpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cblxuICByZXR1cm4gc3RhdC5pc0ZpbGUoKSB8fCBzdGF0LmlzRklGTygpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpcmVjdG9yeShmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGxldCBzdGF0O1xuICB0cnkge1xuICAgIHN0YXQgPSBmcy5zdGF0U3luYyhmaWxlUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSAmJiAoZS5jb2RlID09PSAnRU5PRU5UJyB8fCBlLmNvZGUgPT09ICdFTk9URElSJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIHJldHVybiBzdGF0LmlzRGlyZWN0b3J5KCk7XG59XG4iXX0=
|
package/node/host.d.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* Use of this source code is governed by an MIT-style license that can be
|
|
7
7
|
* found in the LICENSE file at https://angular.io/license
|
|
8
8
|
*/
|
|
9
|
-
import { Path, PathFragment, virtualFs } from '@angular-devkit/core';
|
|
10
9
|
import * as fs from 'fs';
|
|
11
10
|
import { Observable } from 'rxjs/Observable';
|
|
11
|
+
import { Path, PathFragment, virtualFs } from '../src';
|
|
12
12
|
/**
|
|
13
13
|
* An implementation of the Virtual FS using Node as the background. There are two versions; one
|
|
14
14
|
* synchronous and one asynchronous.
|
package/node/host.js
CHANGED
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
* Use of this source code is governed by an MIT-style license that can be
|
|
8
8
|
* found in the LICENSE file at https://angular.io/license
|
|
9
9
|
*/
|
|
10
|
-
const core_1 = require("@angular-devkit/core");
|
|
11
10
|
const fs = require("fs");
|
|
12
11
|
const Observable_1 = require("rxjs/Observable");
|
|
13
12
|
const empty_1 = require("rxjs/observable/empty");
|
|
@@ -20,6 +19,7 @@ const map_1 = require("rxjs/operators/map");
|
|
|
20
19
|
const mergeMap_1 = require("rxjs/operators/mergeMap");
|
|
21
20
|
const publish_1 = require("rxjs/operators/publish");
|
|
22
21
|
const refCount_1 = require("rxjs/operators/refCount");
|
|
22
|
+
const src_1 = require("../src");
|
|
23
23
|
const { FSWatcher } = require('chokidar');
|
|
24
24
|
function _callFs(fn, ...args) {
|
|
25
25
|
return new Observable_1.Observable(obs => {
|
|
@@ -41,10 +41,10 @@ function _callFs(fn, ...args) {
|
|
|
41
41
|
class NodeJsAsyncHost {
|
|
42
42
|
_getSystemPath(path) {
|
|
43
43
|
if (process.platform.startsWith('win32')) {
|
|
44
|
-
return
|
|
44
|
+
return src_1.asWindowsPath(path);
|
|
45
45
|
}
|
|
46
46
|
else {
|
|
47
|
-
return
|
|
47
|
+
return src_1.asPosixPath(path);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
get capabilities() {
|
|
@@ -57,13 +57,13 @@ class NodeJsAsyncHost {
|
|
|
57
57
|
if (fs.existsSync(this._getSystemPath(path))) {
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
|
-
if (
|
|
60
|
+
if (src_1.dirname(path) === path) {
|
|
61
61
|
throw new Error();
|
|
62
62
|
}
|
|
63
|
-
_createDir(
|
|
63
|
+
_createDir(src_1.dirname(path));
|
|
64
64
|
fs.mkdirSync(this._getSystemPath(path));
|
|
65
65
|
};
|
|
66
|
-
_createDir(
|
|
66
|
+
_createDir(src_1.dirname(path));
|
|
67
67
|
_callFs(fs.writeFile, this._getSystemPath(path), new Uint8Array(content)).subscribe(obs);
|
|
68
68
|
});
|
|
69
69
|
}
|
|
@@ -77,12 +77,12 @@ class NodeJsAsyncHost {
|
|
|
77
77
|
const allDirs = [];
|
|
78
78
|
const _recurseList = (path) => {
|
|
79
79
|
for (const fragment of fs.readdirSync(this._getSystemPath(path))) {
|
|
80
|
-
if (fs.statSync(this._getSystemPath(
|
|
81
|
-
_recurseList(
|
|
82
|
-
allDirs.push(
|
|
80
|
+
if (fs.statSync(this._getSystemPath(src_1.join(path, fragment))).isDirectory()) {
|
|
81
|
+
_recurseList(src_1.join(path, fragment));
|
|
82
|
+
allDirs.push(src_1.join(path, fragment));
|
|
83
83
|
}
|
|
84
84
|
else {
|
|
85
|
-
allFiles.push(
|
|
85
|
+
allFiles.push(src_1.join(path, fragment));
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
};
|
|
@@ -99,7 +99,7 @@ class NodeJsAsyncHost {
|
|
|
99
99
|
return _callFs(fs.rename, this._getSystemPath(from), this._getSystemPath(to));
|
|
100
100
|
}
|
|
101
101
|
list(path) {
|
|
102
|
-
return _callFs(fs.readdir, this._getSystemPath(path)).pipe(map_1.map(names => names.map(name =>
|
|
102
|
+
return _callFs(fs.readdir, this._getSystemPath(path)).pipe(map_1.map(names => names.map(name => src_1.fragment(name))));
|
|
103
103
|
}
|
|
104
104
|
exists(path) {
|
|
105
105
|
// Exists is a special case because it cannot error.
|
|
@@ -127,21 +127,21 @@ class NodeJsAsyncHost {
|
|
|
127
127
|
watcher
|
|
128
128
|
.on('change', path => {
|
|
129
129
|
obs.next({
|
|
130
|
-
path:
|
|
130
|
+
path: src_1.normalize(path),
|
|
131
131
|
time: new Date(),
|
|
132
132
|
type: 0 /* Changed */,
|
|
133
133
|
});
|
|
134
134
|
})
|
|
135
135
|
.on('add', path => {
|
|
136
136
|
obs.next({
|
|
137
|
-
path:
|
|
137
|
+
path: src_1.normalize(path),
|
|
138
138
|
time: new Date(),
|
|
139
139
|
type: 1 /* Created */,
|
|
140
140
|
});
|
|
141
141
|
})
|
|
142
142
|
.on('unlink', path => {
|
|
143
143
|
obs.next({
|
|
144
|
-
path:
|
|
144
|
+
path: src_1.normalize(path),
|
|
145
145
|
time: new Date(),
|
|
146
146
|
type: 2 /* Deleted */,
|
|
147
147
|
});
|
|
@@ -157,10 +157,10 @@ exports.NodeJsAsyncHost = NodeJsAsyncHost;
|
|
|
157
157
|
class NodeJsSyncHost {
|
|
158
158
|
_getSystemPath(path) {
|
|
159
159
|
if (process.platform.startsWith('win32')) {
|
|
160
|
-
return
|
|
160
|
+
return src_1.asWindowsPath(path);
|
|
161
161
|
}
|
|
162
162
|
else {
|
|
163
|
-
return
|
|
163
|
+
return src_1.asPosixPath(path);
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
get capabilities() {
|
|
@@ -172,10 +172,10 @@ class NodeJsSyncHost {
|
|
|
172
172
|
if (fs.existsSync(this._getSystemPath(path))) {
|
|
173
173
|
return;
|
|
174
174
|
}
|
|
175
|
-
_createDir(
|
|
175
|
+
_createDir(src_1.dirname(path));
|
|
176
176
|
fs.mkdirSync(path);
|
|
177
177
|
};
|
|
178
|
-
_createDir(
|
|
178
|
+
_createDir(src_1.dirname(path));
|
|
179
179
|
fs.writeFileSync(this._getSystemPath(path), new Uint8Array(content));
|
|
180
180
|
return empty_1.empty();
|
|
181
181
|
}
|
|
@@ -187,7 +187,7 @@ class NodeJsSyncHost {
|
|
|
187
187
|
if (this.isDirectory(path)) {
|
|
188
188
|
// Since this is synchronous, we can recurse and safely ignore the result.
|
|
189
189
|
for (const name of fs.readdirSync(this._getSystemPath(path))) {
|
|
190
|
-
this.delete(
|
|
190
|
+
this.delete(src_1.join(path, name));
|
|
191
191
|
}
|
|
192
192
|
fs.rmdirSync(this._getSystemPath(path));
|
|
193
193
|
}
|
|
@@ -201,7 +201,7 @@ class NodeJsSyncHost {
|
|
|
201
201
|
return empty_1.empty();
|
|
202
202
|
}
|
|
203
203
|
list(path) {
|
|
204
|
-
return of_1.of(fs.readdirSync(this._getSystemPath(path))).pipe(map_1.map(names => names.map(name =>
|
|
204
|
+
return of_1.of(fs.readdirSync(this._getSystemPath(path))).pipe(map_1.map(names => names.map(name => src_1.fragment(name))));
|
|
205
205
|
}
|
|
206
206
|
exists(path) {
|
|
207
207
|
return of_1.of(fs.existsSync(this._getSystemPath(path)));
|
|
@@ -226,21 +226,21 @@ class NodeJsSyncHost {
|
|
|
226
226
|
watcher
|
|
227
227
|
.on('change', path => {
|
|
228
228
|
obs.next({
|
|
229
|
-
path:
|
|
229
|
+
path: src_1.normalize(path),
|
|
230
230
|
time: new Date(),
|
|
231
231
|
type: 0 /* Changed */,
|
|
232
232
|
});
|
|
233
233
|
})
|
|
234
234
|
.on('add', path => {
|
|
235
235
|
obs.next({
|
|
236
|
-
path:
|
|
236
|
+
path: src_1.normalize(path),
|
|
237
237
|
time: new Date(),
|
|
238
238
|
type: 1 /* Created */,
|
|
239
239
|
});
|
|
240
240
|
})
|
|
241
241
|
.on('unlink', path => {
|
|
242
242
|
obs.next({
|
|
243
|
-
path:
|
|
243
|
+
path: src_1.normalize(path),
|
|
244
244
|
time: new Date(),
|
|
245
245
|
type: 2 /* Deleted */,
|
|
246
246
|
});
|
|
@@ -250,4 +250,4 @@ class NodeJsSyncHost {
|
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
252
|
exports.NodeJsSyncHost = NodeJsSyncHost;
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaGFuc2wvU291cmNlcy9oYW5zbC9kZXZraXQvIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9jb3JlL25vZGUvaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7R0FNRztBQUNILCtDQVU4QjtBQUM5Qix5QkFBeUI7QUFDekIsZ0RBQTZDO0FBQzdDLGlEQUE4QztBQUM5QywrQ0FBOEQ7QUFDOUQsMkNBQXdEO0FBQ3hELGtEQUErQztBQUMvQyx3REFBcUQ7QUFDckQsa0VBQStEO0FBQy9ELDRDQUF5QztBQUN6QyxzREFBbUQ7QUFDbkQsb0RBQWlEO0FBQ2pELHNEQUFtRDtBQWNuRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQW1DLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQWExRSxpQkFBMEIsRUFBWSxFQUFFLEdBQUcsSUFBVTtJQUNuRCxNQUFNLENBQUMsSUFBSSx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzFCLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQVcsRUFBRSxNQUFnQixFQUFFLEVBQUU7WUFDNUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDUixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqQixHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBR0Q7OztHQUdHO0FBQ0g7SUFDWSxjQUFjLENBQUMsSUFBVTtRQUNqQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENB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QUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRW5FLE9BQU87aUJBQ0osRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQztvQkFDUCxJQUFJLEVBQUUsZ0JBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtvQkFDaEIsSUFBSSxpQkFBc0M7aUJBQzNDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQztpQkFDRCxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNQLElBQUksRUFBRSxnQkFBUyxDQUFDLElBQUksQ0FBQztvQkFDckIsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO29CQUNoQixJQUFJLGlCQUFzQztpQkFDM0MsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO2lCQUNELEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUM7b0JBQ1AsSUFBSSxFQUFFLGdCQUFTLENBQUMsSUFBSSxDQUFDO29CQUNyQixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7b0JBQ2hCLElBQUksaUJBQXNDO2lCQUMzQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVMLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNMLGlCQUFPLEVBQUUsRUFDVCxtQkFBUSxFQUFFLENBQ1gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXBIRCx3Q0FvSEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1xuICBQYXRoLFxuICBQYXRoRnJhZ21lbnQsXG4gIGFzUG9zaXhQYXRoLFxuICBhc1dpbmRvd3NQYXRoLFxuICBkaXJuYW1lLFxuICBmcmFnbWVudCxcbiAgam9pbixcbiAgbm9ybWFsaXplLFxuICB2aXJ0dWFsRnMsXG59IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgZW1wdHkgfSBmcm9tICdyeGpzL29ic2VydmFibGUvZW1wdHknO1xuaW1wb3J0IHsgZnJvbSBhcyBvYnNlcnZhYmxlRnJvbSB9IGZyb20gJ3J4anMvb2JzZXJ2YWJsZS9mcm9tJztcbmltcG9ydCB7IG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMvb2JzZXJ2YWJsZS9vZic7XG5pbXBvcnQgeyBjb25jYXQgfSBmcm9tICdyeGpzL29wZXJhdG9ycy9jb25jYXQnO1xuaW1wb3J0IHsgY29uY2F0TWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMvY29uY2F0TWFwJztcbmltcG9ydCB7IGlnbm9yZUVsZW1lbnRzIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMvaWdub3JlRWxlbWVudHMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMvbWFwJztcbmltcG9ydCB7IG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMvbWVyZ2VNYXAnO1xuaW1wb3J0IHsgcHVibGlzaCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzL3B1Ymxpc2gnO1xuaW1wb3J0IHsgcmVmQ291bnQgfSBmcm9tICdyeGpzL29wZXJhdG9ycy9yZWZDb3VudCc7XG5cblxuaW50ZXJmYWNlIENob2tpZGFyV2F0Y2hlciB7XG4gIG5ldyAob3B0aW9uczoge30pOiBDaG9raWRhcldhdGNoZXI7XG5cbiAgYWRkKHBhdGg6IHN0cmluZyk6IENob2tpZGFyV2F0Y2hlcjtcbiAgb24odHlwZTogJ2NoYW5nZScsIGNiOiAocGF0aDogc3RyaW5nKSA9PiB2b2lkKTogQ2hva2lkYXJXYXRjaGVyO1xuICBvbih0eXBlOiAnYWRkJywgY2I6IChwYXRoOiBzdHJpbmcpID0+IHZvaWQpOiBDaG9raWRhcldhdGNoZXI7XG4gIG9uKHR5cGU6ICd1bmxpbmsnLCBjYjogKHBhdGg6IHN0cmluZykgPT4gdm9pZCk6IENob2tpZGFyV2F0Y2hlcjtcblxuICBjbG9zZSgpOiB2b2lkO1xufVxuXG5jb25zdCB7IEZTV2F0Y2hlciB9OiB7IEZTV2F0Y2hlcjogQ2hva2lkYXJXYXRjaGVyIH0gPSByZXF1aXJlKCdjaG9raWRhcicpO1xuXG5cbnR5cGUgRnNGdW5jdGlvbjA8Uj4gPSAoY2I6IChlcnI/OiBFcnJvciwgcmVzdWx0PzogUikgPT4gdm9pZCkgPT4gdm9pZDtcbnR5cGUgRnNGdW5jdGlvbjE8UiwgVDE+ID0gKHAxOiBUMSwgY2I6IChlcnI/OiBFcnJvciwgcmVzdWx0PzogUikgPT4gdm9pZCkgPT4gdm9pZDtcbnR5cGUgRnNGdW5jdGlvbjI8UiwgVDEsIFQyPlxuICA9IChwMTogVDEsIHAyOiBUMiwgY2I6IChlcnI/OiBFcnJvciwgcmVzdWx0PzogUikgPT4gdm9pZCkgPT4gdm9pZDtcblxuXG5mdW5jdGlvbiBfY2FsbEZzPFI+KGZuOiBGc0Z1bmN0aW9uMDxSPik6IE9ic2VydmFibGU8Uj47XG5mdW5jdGlvbiBfY2FsbEZzPFIsIFQxPihmbjogRnNGdW5jdGlvbjE8UiwgVDE+LCBwMTogVDEpOiBPYnNlcnZhYmxlPFI+O1xuZnVuY3Rpb24gX2NhbGxGczxSLCBUMSwgVDI+KGZuOiBGc0Z1bmN0aW9uMjxSLCBUMSwgVDI+LCBwMTogVDEsIHAyOiBUMik6IE9ic2VydmFibGU8Uj47XG5cbmZ1bmN0aW9uIF9jYWxsRnM8UmVzdWx0VD4oZm46IEZ1bmN0aW9uLCAuLi5hcmdzOiB7fVtdKTogT2JzZXJ2YWJsZTxSZXN1bHRUPiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnMgPT4ge1xuICAgIGZuKC4uLmFyZ3MsIChlcnI/OiBFcnJvciwgcmVzdWx0PzogUmVzdWx0VCkgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBvYnMuZXJyb3IoZXJyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9icy5uZXh0KHJlc3VsdCk7XG4gICAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuXG4vKipcbiAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBWaXJ0dWFsIEZTIHVzaW5nIE5vZGUgYXMgdGhlIGJhY2tncm91bmQuIFRoZXJlIGFyZSB0d28gdmVyc2lvbnM7IG9uZVxuICogc3luY2hyb25vdXMgYW5kIG9uZSBhc3luY2hyb25vdXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBOb2RlSnNBc3luY0hvc3QgaW1wbGVtZW50cyB2aXJ0dWFsRnMuSG9zdDxmcy5TdGF0cz4ge1xuICBwcm90ZWN0ZWQgX2dldFN5c3RlbVBhdGgocGF0aDogUGF0aCk6IHN0cmluZyB7XG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0uc3RhcnRzV2l0aCgnd2luMzInKSkge1xuICAgICAgcmV0dXJuIGFzV2luZG93c1BhdGgocGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhc1Bvc2l4UGF0aChwYXRoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY2FwYWJpbGl0aWVzKCk6IHZpcnR1YWxGcy5Ib3N0Q2FwYWJpbGl0aWVzIHtcbiAgICByZXR1cm4geyBzeW5jaHJvbm91czogZmFsc2UgfTtcbiAgfVxuXG4gIHdyaXRlKHBhdGg6IFBhdGgsIGNvbnRlbnQ6IHZpcnR1YWxGcy5GaWxlQnVmZmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHZvaWQ+KG9icyA9PiB7XG4gICAgICAvLyBDcmVhdGUgZm9sZGVycyBpZiBuZWNlc3NhcnkuXG4gICAgICBjb25zdCBfY3JlYXRlRGlyID0gKHBhdGg6IFBhdGgpID0+IHtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpcm5hbWUocGF0aCkgPT09IHBhdGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBfY3JlYXRlRGlyKGRpcm5hbWUocGF0aCkpO1xuICAgICAgICBmcy5ta2RpclN5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSk7XG4gICAgICB9O1xuICAgICAgX2NyZWF0ZURpcihkaXJuYW1lKHBhdGgpKTtcblxuICAgICAgX2NhbGxGczx2b2lkLCBzdHJpbmcsIFVpbnQ4QXJyYXk+KFxuICAgICAgICBmcy53cml0ZUZpbGUsXG4gICAgICAgIHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCksXG4gICAgICAgIG5ldyBVaW50OEFycmF5KGNvbnRlbnQpLFxuICAgICAgKS5zdWJzY3JpYmUob2JzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWQocGF0aDogUGF0aCk6IE9ic2VydmFibGU8dmlydHVhbEZzLkZpbGVCdWZmZXI+IHtcbiAgICByZXR1cm4gX2NhbGxGcyhmcy5yZWFkRmlsZSwgdGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSkucGlwZShcbiAgICAgIG1hcChidWZmZXIgPT4gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKS5idWZmZXIgYXMgdmlydHVhbEZzLkZpbGVCdWZmZXIpLFxuICAgICk7XG4gIH1cblxuICBkZWxldGUocGF0aDogUGF0aCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmlzRGlyZWN0b3J5KHBhdGgpLnBpcGUoXG4gICAgICBtZXJnZU1hcChpc0RpcmVjdG9yeSA9PiB7XG4gICAgICAgIGlmIChpc0RpcmVjdG9yeSkge1xuICAgICAgICAgIGNvbnN0IGFsbEZpbGVzOiBQYXRoW10gPSBbXTtcbiAgICAgICAgICBjb25zdCBhbGxEaXJzOiBQYXRoW10gPSBbXTtcbiAgICAgICAgICBjb25zdCBfcmVjdXJzZUxpc3QgPSAocGF0aDogUGF0aCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmcmFnbWVudCBvZiBmcy5yZWFkZGlyU3luYyh0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKSkge1xuICAgICAgICAgICAgICBpZiAoZnMuc3RhdFN5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChqb2luKHBhdGgsIGZyYWdtZW50KSkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICBfcmVjdXJzZUxpc3Qoam9pbihwYXRoLCBmcmFnbWVudCkpO1xuICAgICAgICAgICAgICAgIGFsbERpcnMucHVzaChqb2luKHBhdGgsIGZyYWdtZW50KSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWxsRmlsZXMucHVzaChqb2luKHBhdGgsIGZyYWdtZW50KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIF9yZWN1cnNlTGlzdChwYXRoKTtcblxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlRnJvbShhbGxGaWxlcylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBtZXJnZU1hcChwID0+IF9jYWxsRnMoZnMudW5saW5rLCB0aGlzLl9nZXRTeXN0ZW1QYXRoKHApKSksXG4gICAgICAgICAgICAgIGlnbm9yZUVsZW1lbnRzKCksXG4gICAgICAgICAgICAgIGNvbmNhdChvYnNlcnZhYmxlRnJvbShhbGxEaXJzKS5waXBlKFxuICAgICAgICAgICAgICAgIGNvbmNhdE1hcChwID0+IF9jYWxsRnMoZnMucm1kaXIsIHRoaXMuX2dldFN5c3RlbVBhdGgocCkpKSxcbiAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAgIG1hcCgoKSA9PiB7fSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBfY2FsbEZzKGZzLnVubGluaywgdGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICByZW5hbWUoZnJvbTogUGF0aCwgdG86IFBhdGgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gX2NhbGxGcyhmcy5yZW5hbWUsIHRoaXMuX2dldFN5c3RlbVBhdGgoZnJvbSksIHRoaXMuX2dldFN5c3RlbVBhdGgodG8pKTtcbiAgfVxuXG4gIGxpc3QocGF0aDogUGF0aCk6IE9ic2VydmFibGU8UGF0aEZyYWdtZW50W10+IHtcbiAgICByZXR1cm4gX2NhbGxGcyhmcy5yZWFkZGlyLCB0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKS5waXBlKFxuICAgICAgbWFwKG5hbWVzID0+IG5hbWVzLm1hcChuYW1lID0+IGZyYWdtZW50KG5hbWUpKSksXG4gICAgKTtcbiAgfVxuXG4gIGV4aXN0cyhwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgLy8gRXhpc3RzIGlzIGEgc3BlY2lhbCBjYXNlIGJlY2F1c2UgaXQgY2Fubm90IGVycm9yLlxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnMgPT4ge1xuICAgICAgZnMuZXhpc3RzKHBhdGgsIGV4aXN0cyA9PiB7XG4gICAgICAgIG9icy5uZXh0KGV4aXN0cyk7XG4gICAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBpc0RpcmVjdG9yeShwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIF9jYWxsRnMoZnMuc3RhdCwgdGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSkucGlwZShcbiAgICAgIG1hcChzdGF0ID0+IHN0YXQuaXNEaXJlY3RvcnkoKSksXG4gICAgKTtcbiAgfVxuICBpc0ZpbGUocGF0aDogUGF0aCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBfY2FsbEZzKGZzLnN0YXQsIHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpLnBpcGUoXG4gICAgICBtYXAoc3RhdCA9PiBzdGF0LmlzRGlyZWN0b3J5KCkpLFxuICAgICk7XG4gIH1cblxuICAvLyBTb21lIGhvc3RzIG1heSBub3Qgc3VwcG9ydCBzdGF0cy5cbiAgc3RhdHMocGF0aDogUGF0aCk6IE9ic2VydmFibGU8dmlydHVhbEZzLlN0YXRzPGZzLlN0YXRzPj4gfCBudWxsIHtcbiAgICByZXR1cm4gX2NhbGxGcyhmcy5zdGF0LCB0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKTtcbiAgfVxuXG4gIC8vIFNvbWUgaG9zdHMgbWF5IG5vdCBzdXBwb3J0IHdhdGNoaW5nLlxuICB3YXRjaChcbiAgICBwYXRoOiBQYXRoLFxuICAgIF9vcHRpb25zPzogdmlydHVhbEZzLkhvc3RXYXRjaE9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8dmlydHVhbEZzLkhvc3RXYXRjaEV2ZW50PiB8IG51bGwge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2aXJ0dWFsRnMuSG9zdFdhdGNoRXZlbnQ+KG9icyA9PiB7XG4gICAgICBjb25zdCB3YXRjaGVyID0gbmV3IEZTV2F0Y2hlcih7IHBlcnNpc3RlbnQ6IHRydWUgfSkuYWRkKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpO1xuXG4gICAgICB3YXRjaGVyXG4gICAgICAgIC5vbignY2hhbmdlJywgcGF0aCA9PiB7XG4gICAgICAgICAgb2JzLm5leHQoe1xuICAgICAgICAgICAgcGF0aDogbm9ybWFsaXplKHBhdGgpLFxuICAgICAgICAgICAgdGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHR5cGU6IHZpcnR1YWxGcy5Ib3N0V2F0Y2hFdmVudFR5cGUuQ2hhbmdlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdhZGQnLCBwYXRoID0+IHtcbiAgICAgICAgICBvYnMubmV4dCh7XG4gICAgICAgICAgICBwYXRoOiBub3JtYWxpemUocGF0aCksXG4gICAgICAgICAgICB0aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgdHlwZTogdmlydHVhbEZzLkhvc3RXYXRjaEV2ZW50VHlwZS5DcmVhdGVkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAub24oJ3VubGluaycsIHBhdGggPT4ge1xuICAgICAgICAgIG9icy5uZXh0KHtcbiAgICAgICAgICAgIHBhdGg6IG5vcm1hbGl6ZShwYXRoKSxcbiAgICAgICAgICAgIHRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB0eXBlOiB2aXJ0dWFsRnMuSG9zdFdhdGNoRXZlbnRUeXBlLkRlbGV0ZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gKCkgPT4gd2F0Y2hlci5jbG9zZSgpO1xuICAgIH0pLnBpcGUoXG4gICAgICBwdWJsaXNoKCksXG4gICAgICByZWZDb3VudCgpLFxuICAgICk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBWaXJ0dWFsIEZTIHVzaW5nIE5vZGUgYXMgdGhlIGJhY2tlbmQsIHN5bmNocm9ub3VzbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBOb2RlSnNTeW5jSG9zdCBpbXBsZW1lbnRzIHZpcnR1YWxGcy5Ib3N0PGZzLlN0YXRzPiB7XG4gIHByb3RlY3RlZCBfZ2V0U3lzdGVtUGF0aChwYXRoOiBQYXRoKTogc3RyaW5nIHtcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybS5zdGFydHNXaXRoKCd3aW4zMicpKSB7XG4gICAgICByZXR1cm4gYXNXaW5kb3dzUGF0aChwYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFzUG9zaXhQYXRoKHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogdmlydHVhbEZzLkhvc3RDYXBhYmlsaXRpZXMge1xuICAgIHJldHVybiB7IHN5bmNocm9ub3VzOiB0cnVlIH07XG4gIH1cblxuICB3cml0ZShwYXRoOiBQYXRoLCBjb250ZW50OiB2aXJ0dWFsRnMuRmlsZUJ1ZmZlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIC8vIENyZWF0ZSBmb2xkZXJzIGlmIG5lY2Vzc2FyeS5cbiAgICBjb25zdCBfY3JlYXRlRGlyID0gKHBhdGg6IFBhdGgpID0+IHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIF9jcmVhdGVEaXIoZGlybmFtZShwYXRoKSk7XG4gICAgICBmcy5ta2RpclN5bmMocGF0aCk7XG4gICAgfTtcbiAgICBfY3JlYXRlRGlyKGRpcm5hbWUocGF0aCkpO1xuICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSwgbmV3IFVpbnQ4QXJyYXkoY29udGVudCkpO1xuXG4gICAgcmV0dXJuIGVtcHR5PHZvaWQ+KCk7XG4gIH1cblxuICByZWFkKHBhdGg6IFBhdGgpOiBPYnNlcnZhYmxlPHZpcnR1YWxGcy5GaWxlQnVmZmVyPiB7XG4gICAgY29uc3QgYnVmZmVyID0gZnMucmVhZEZpbGVTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpO1xuXG4gICAgcmV0dXJuIG9ic2VydmFibGVPZihuZXcgVWludDhBcnJheShidWZmZXIpLmJ1ZmZlciBhcyB2aXJ0dWFsRnMuRmlsZUJ1ZmZlcik7XG4gIH1cblxuICBkZWxldGUocGF0aDogUGF0aCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzRGlyZWN0b3J5KHBhdGgpKSB7XG4gICAgICAvLyBTaW5jZSB0aGlzIGlzIHN5bmNocm9ub3VzLCB3ZSBjYW4gcmVjdXJzZSBhbmQgc2FmZWx5IGlnbm9yZSB0aGUgcmVzdWx0LlxuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlKGpvaW4ocGF0aCwgbmFtZSkpO1xuICAgICAgfVxuICAgICAgZnMucm1kaXJTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmcy51bmxpbmtTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpO1xuICAgIH1cblxuICAgIHJldHVybiBlbXB0eSgpO1xuICB9XG5cbiAgcmVuYW1lKGZyb206IFBhdGgsIHRvOiBQYXRoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgZnMucmVuYW1lU3luYyh0aGlzLl9nZXRTeXN0ZW1QYXRoKGZyb20pLCB0aGlzLl9nZXRTeXN0ZW1QYXRoKHRvKSk7XG5cbiAgICByZXR1cm4gZW1wdHkoKTtcbiAgfVxuXG4gIGxpc3QocGF0aDogUGF0aCk6IE9ic2VydmFibGU8UGF0aEZyYWdtZW50W10+IHtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKGZzLnJlYWRkaXJTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpKS5waXBlKFxuICAgICAgbWFwKG5hbWVzID0+IG5hbWVzLm1hcChuYW1lID0+IGZyYWdtZW50KG5hbWUpKSksXG4gICAgKTtcbiAgfVxuXG4gIGV4aXN0cyhwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG9ic2VydmFibGVPZihmcy5leGlzdHNTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpKTtcbiAgfVxuXG4gIGlzRGlyZWN0b3J5KHBhdGg6IFBhdGgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm9uLW51bGwtb3BlcmF0b3JcbiAgICByZXR1cm4gdGhpcy5zdGF0cyhwYXRoKSAhLnBpcGUobWFwKHN0YXQgPT4gc3RhdC5pc0RpcmVjdG9yeSgpKSk7XG4gIH1cbiAgaXNGaWxlKHBhdGg6IFBhdGgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm9uLW51bGwtb3BlcmF0b3JcbiAgICByZXR1cm4gdGhpcy5zdGF0cyhwYXRoKSAhLnBpcGUobWFwKHN0YXQgPT4gc3RhdC5pc0ZpbGUoKSkpO1xuICB9XG5cbiAgLy8gU29tZSBob3N0cyBtYXkgbm90IHN1cHBvcnQgc3RhdHMuXG4gIHN0YXRzKHBhdGg6IFBhdGgpOiBPYnNlcnZhYmxlPHZpcnR1YWxGcy5TdGF0czxmcy5TdGF0cz4+IHwgbnVsbCB7XG4gICAgcmV0dXJuIG9ic2VydmFibGVPZihmcy5zdGF0U3luYyh0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKSk7XG4gIH1cblxuICAvLyBTb21lIGhvc3RzIG1heSBub3Qgc3VwcG9ydCB3YXRjaGluZy5cbiAgd2F0Y2goXG4gICAgcGF0aDogUGF0aCxcbiAgICBfb3B0aW9ucz86IHZpcnR1YWxGcy5Ib3N0V2F0Y2hPcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPHZpcnR1YWxGcy5Ib3N0V2F0Y2hFdmVudD4gfCBudWxsIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dmlydHVhbEZzLkhvc3RXYXRjaEV2ZW50PihvYnMgPT4ge1xuICAgICAgY29uc3Qgb3B0cyA9IHsgcGVyc2lzdGVudDogZmFsc2UgfTtcbiAgICAgIGNvbnN0IHdhdGNoZXIgPSBuZXcgRlNXYXRjaGVyKG9wdHMpLmFkZCh0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKTtcblxuICAgICAgd2F0Y2hlclxuICAgICAgICAub24oJ2NoYW5nZScsIHBhdGggPT4ge1xuICAgICAgICAgIG9icy5uZXh0KHtcbiAgICAgICAgICAgIHBhdGg6IG5vcm1hbGl6ZShwYXRoKSxcbiAgICAgICAgICAgIHRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB0eXBlOiB2aXJ0dWFsRnMuSG9zdFdhdGNoRXZlbnRUeXBlLkNoYW5nZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbignYWRkJywgcGF0aCA9PiB7XG4gICAgICAgICAgb2JzLm5leHQoe1xuICAgICAgICAgICAgcGF0aDogbm9ybWFsaXplKHBhdGgpLFxuICAgICAgICAgICAgdGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHR5cGU6IHZpcnR1YWxGcy5Ib3N0V2F0Y2hFdmVudFR5cGUuQ3JlYXRlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCd1bmxpbmsnLCBwYXRoID0+IHtcbiAgICAgICAgICBvYnMubmV4dCh7XG4gICAgICAgICAgICBwYXRoOiBub3JtYWxpemUocGF0aCksXG4gICAgICAgICAgICB0aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgdHlwZTogdmlydHVhbEZzLkhvc3RXYXRjaEV2ZW50VHlwZS5EZWxldGVkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuICgpID0+IHdhdGNoZXIuY2xvc2UoKTtcbiAgICB9KS5waXBlKFxuICAgICAgcHVibGlzaCgpLFxuICAgICAgcmVmQ291bnQoKSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9ub2RlL2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCx5QkFBeUI7QUFDekIsZ0RBQTZDO0FBQzdDLGlEQUE4QztBQUM5QywrQ0FBOEQ7QUFDOUQsMkNBQXdEO0FBQ3hELGtEQUErQztBQUMvQyx3REFBcUQ7QUFDckQsa0VBQStEO0FBQy9ELDRDQUF5QztBQUN6QyxzREFBbUQ7QUFDbkQsb0RBQWlEO0FBQ2pELHNEQUFtRDtBQUNuRCxnQ0FVZ0I7QUFjaEIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFtQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFhMUUsaUJBQTBCLEVBQVksRUFBRSxHQUFHLElBQVU7SUFDbkQsTUFBTSxDQUFDLElBQUksdUJBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxQixFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFXLEVBQUUsTUFBZ0IsRUFBRSxFQUFFO1lBQzVDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDakIsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUdEOzs7R0FHRztBQUNIO0lBQ1ksY0FBYyxDQUFDLElBQVU7UUFDakMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxtQkFBYSxDQUFDLElB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SUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVuRSxPQUFPO2lCQUNKLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUM7b0JBQ1AsSUFBSSxFQUFFLGVBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtvQkFDaEIsSUFBSSxpQkFBc0M7aUJBQzNDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQztpQkFDRCxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNQLElBQUksRUFBRSxlQUFTLENBQUMsSUFBSSxDQUFDO29CQUNyQixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7b0JBQ2hCLElBQUksaUJBQXNDO2lCQUMzQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUM7aUJBQ0QsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQztvQkFDUCxJQUFJLEVBQUUsZUFBUyxDQUFDLElBQUksQ0FBQztvQkFDckIsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO29CQUNoQixJQUFJLGlCQUFzQztpQkFDM0MsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFTCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDTCxpQkFBTyxFQUFFLEVBQ1QsbUJBQVEsRUFBRSxDQUNYLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFwSEQsd0NBb0hDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBlbXB0eSB9IGZyb20gJ3J4anMvb2JzZXJ2YWJsZS9lbXB0eSc7XG5pbXBvcnQgeyBmcm9tIGFzIG9ic2VydmFibGVGcm9tIH0gZnJvbSAncnhqcy9vYnNlcnZhYmxlL2Zyb20nO1xuaW1wb3J0IHsgb2YgYXMgb2JzZXJ2YWJsZU9mIH0gZnJvbSAncnhqcy9vYnNlcnZhYmxlL29mJztcbmltcG9ydCB7IGNvbmNhdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzL2NvbmNhdCc7XG5pbXBvcnQgeyBjb25jYXRNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycy9jb25jYXRNYXAnO1xuaW1wb3J0IHsgaWdub3JlRWxlbWVudHMgfSBmcm9tICdyeGpzL29wZXJhdG9ycy9pZ25vcmVFbGVtZW50cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycy9tYXAnO1xuaW1wb3J0IHsgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycy9tZXJnZU1hcCc7XG5pbXBvcnQgeyBwdWJsaXNoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMvcHVibGlzaCc7XG5pbXBvcnQgeyByZWZDb3VudCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzL3JlZkNvdW50JztcbmltcG9ydCB7XG4gIFBhdGgsXG4gIFBhdGhGcmFnbWVudCxcbiAgYXNQb3NpeFBhdGgsXG4gIGFzV2luZG93c1BhdGgsXG4gIGRpcm5hbWUsXG4gIGZyYWdtZW50LFxuICBqb2luLFxuICBub3JtYWxpemUsXG4gIHZpcnR1YWxGcyxcbn0gZnJvbSAnLi4vc3JjJztcblxuXG5pbnRlcmZhY2UgQ2hva2lkYXJXYXRjaGVyIHtcbiAgbmV3IChvcHRpb25zOiB7fSk6IENob2tpZGFyV2F0Y2hlcjtcblxuICBhZGQocGF0aDogc3RyaW5nKTogQ2hva2lkYXJXYXRjaGVyO1xuICBvbih0eXBlOiAnY2hhbmdlJywgY2I6IChwYXRoOiBzdHJpbmcpID0+IHZvaWQpOiBDaG9raWRhcldhdGNoZXI7XG4gIG9uKHR5cGU6ICdhZGQnLCBjYjogKHBhdGg6IHN0cmluZykgPT4gdm9pZCk6IENob2tpZGFyV2F0Y2hlcjtcbiAgb24odHlwZTogJ3VubGluaycsIGNiOiAocGF0aDogc3RyaW5nKSA9PiB2b2lkKTogQ2hva2lkYXJXYXRjaGVyO1xuXG4gIGNsb3NlKCk6IHZvaWQ7XG59XG5cbmNvbnN0IHsgRlNXYXRjaGVyIH06IHsgRlNXYXRjaGVyOiBDaG9raWRhcldhdGNoZXIgfSA9IHJlcXVpcmUoJ2Nob2tpZGFyJyk7XG5cblxudHlwZSBGc0Z1bmN0aW9uMDxSPiA9IChjYjogKGVycj86IEVycm9yLCByZXN1bHQ/OiBSKSA9PiB2b2lkKSA9PiB2b2lkO1xudHlwZSBGc0Z1bmN0aW9uMTxSLCBUMT4gPSAocDE6IFQxLCBjYjogKGVycj86IEVycm9yLCByZXN1bHQ/OiBSKSA9PiB2b2lkKSA9PiB2b2lkO1xudHlwZSBGc0Z1bmN0aW9uMjxSLCBUMSwgVDI+XG4gID0gKHAxOiBUMSwgcDI6IFQyLCBjYjogKGVycj86IEVycm9yLCByZXN1bHQ/OiBSKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG5cbmZ1bmN0aW9uIF9jYWxsRnM8Uj4oZm46IEZzRnVuY3Rpb24wPFI+KTogT2JzZXJ2YWJsZTxSPjtcbmZ1bmN0aW9uIF9jYWxsRnM8UiwgVDE+KGZuOiBGc0Z1bmN0aW9uMTxSLCBUMT4sIHAxOiBUMSk6IE9ic2VydmFibGU8Uj47XG5mdW5jdGlvbiBfY2FsbEZzPFIsIFQxLCBUMj4oZm46IEZzRnVuY3Rpb24yPFIsIFQxLCBUMj4sIHAxOiBUMSwgcDI6IFQyKTogT2JzZXJ2YWJsZTxSPjtcblxuZnVuY3Rpb24gX2NhbGxGczxSZXN1bHRUPihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IHt9W10pOiBPYnNlcnZhYmxlPFJlc3VsdFQ+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9icyA9PiB7XG4gICAgZm4oLi4uYXJncywgKGVycj86IEVycm9yLCByZXN1bHQ/OiBSZXN1bHRUKSA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIG9icy5lcnJvcihlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JzLm5leHQocmVzdWx0KTtcbiAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5cbi8qKlxuICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFZpcnR1YWwgRlMgdXNpbmcgTm9kZSBhcyB0aGUgYmFja2dyb3VuZC4gVGhlcmUgYXJlIHR3byB2ZXJzaW9uczsgb25lXG4gKiBzeW5jaHJvbm91cyBhbmQgb25lIGFzeW5jaHJvbm91cy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5vZGVKc0FzeW5jSG9zdCBpbXBsZW1lbnRzIHZpcnR1YWxGcy5Ib3N0PGZzLlN0YXRzPiB7XG4gIHByb3RlY3RlZCBfZ2V0U3lzdGVtUGF0aChwYXRoOiBQYXRoKTogc3RyaW5nIHtcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybS5zdGFydHNXaXRoKCd3aW4zMicpKSB7XG4gICAgICByZXR1cm4gYXNXaW5kb3dzUGF0aChwYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFzUG9zaXhQYXRoKHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogdmlydHVhbEZzLkhvc3RDYXBhYmlsaXRpZXMge1xuICAgIHJldHVybiB7IHN5bmNocm9ub3VzOiBmYWxzZSB9O1xuICB9XG5cbiAgd3JpdGUocGF0aDogUGF0aCwgY29udGVudDogdmlydHVhbEZzLkZpbGVCdWZmZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dm9pZD4ob2JzID0+IHtcbiAgICAgIC8vIENyZWF0ZSBmb2xkZXJzIGlmIG5lY2Vzc2FyeS5cbiAgICAgIGNvbnN0IF9jcmVhdGVEaXIgPSAocGF0aDogUGF0aCkgPT4ge1xuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlybmFtZShwYXRoKSA9PT0gcGF0aCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIF9jcmVhdGVEaXIoZGlybmFtZShwYXRoKSk7XG4gICAgICAgIGZzLm1rZGlyU3luYyh0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKTtcbiAgICAgIH07XG4gICAgICBfY3JlYXRlRGlyKGRpcm5hbWUocGF0aCkpO1xuXG4gICAgICBfY2FsbEZzPHZvaWQsIHN0cmluZywgVWludDhBcnJheT4oXG4gICAgICAgIGZzLndyaXRlRmlsZSxcbiAgICAgICAgdGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSxcbiAgICAgICAgbmV3IFVpbnQ4QXJyYXkoY29udGVudCksXG4gICAgICApLnN1YnNjcmliZShvYnMpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZChwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTx2aXJ0dWFsRnMuRmlsZUJ1ZmZlcj4ge1xuICAgIHJldHVybiBfY2FsbEZzKGZzLnJlYWRGaWxlLCB0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKS5waXBlKFxuICAgICAgbWFwKGJ1ZmZlciA9PiBuZXcgVWludDhBcnJheShidWZmZXIpLmJ1ZmZlciBhcyB2aXJ0dWFsRnMuRmlsZUJ1ZmZlciksXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZShwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEaXJlY3RvcnkocGF0aCkucGlwZShcbiAgICAgIG1lcmdlTWFwKGlzRGlyZWN0b3J5ID0+IHtcbiAgICAgICAgaWYgKGlzRGlyZWN0b3J5KSB7XG4gICAgICAgICAgY29uc3QgYWxsRmlsZXM6IFBhdGhbXSA9IFtdO1xuICAgICAgICAgIGNvbnN0IGFsbERpcnM6IFBhdGhbXSA9IFtdO1xuICAgICAgICAgIGNvbnN0IF9yZWN1cnNlTGlzdCA9IChwYXRoOiBQYXRoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZyYWdtZW50IG9mIGZzLnJlYWRkaXJTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpKSB7XG4gICAgICAgICAgICAgIGlmIChmcy5zdGF0U3luYyh0aGlzLl9nZXRTeXN0ZW1QYXRoKGpvaW4ocGF0aCwgZnJhZ21lbnQpKSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgIF9yZWN1cnNlTGlzdChqb2luKHBhdGgsIGZyYWdtZW50KSk7XG4gICAgICAgICAgICAgICAgYWxsRGlycy5wdXNoKGpvaW4ocGF0aCwgZnJhZ21lbnQpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhbGxGaWxlcy5wdXNoKGpvaW4ocGF0aCwgZnJhZ21lbnQpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgX3JlY3Vyc2VMaXN0KHBhdGgpO1xuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVGcm9tKGFsbEZpbGVzKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIG1lcmdlTWFwKHAgPT4gX2NhbGxGcyhmcy51bmxpbmssIHRoaXMuX2dldFN5c3RlbVBhdGgocCkpKSxcbiAgICAgICAgICAgICAgaWdub3JlRWxlbWVudHMoKSxcbiAgICAgICAgICAgICAgY29uY2F0KG9ic2VydmFibGVGcm9tKGFsbERpcnMpLnBpcGUoXG4gICAgICAgICAgICAgICAgY29uY2F0TWFwKHAgPT4gX2NhbGxGcyhmcy5ybWRpciwgdGhpcy5fZ2V0U3lzdGVtUGF0aChwKSkpLFxuICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgbWFwKCgpID0+IHt9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIF9jYWxsRnMoZnMudW5saW5rLCB0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHJlbmFtZShmcm9tOiBQYXRoLCB0bzogUGF0aCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBfY2FsbEZzKGZzLnJlbmFtZSwgdGhpcy5fZ2V0U3lzdGVtUGF0aChmcm9tKSwgdGhpcy5fZ2V0U3lzdGVtUGF0aCh0bykpO1xuICB9XG5cbiAgbGlzdChwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxQYXRoRnJhZ21lbnRbXT4ge1xuICAgIHJldHVybiBfY2FsbEZzKGZzLnJlYWRkaXIsIHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpLnBpcGUoXG4gICAgICBtYXAobmFtZXMgPT4gbmFtZXMubWFwKG5hbWUgPT4gZnJhZ21lbnQobmFtZSkpKSxcbiAgICApO1xuICB9XG5cbiAgZXhpc3RzKHBhdGg6IFBhdGgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAvLyBFeGlzdHMgaXMgYSBzcGVjaWFsIGNhc2UgYmVjYXVzZSBpdCBjYW5ub3QgZXJyb3IuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9icyA9PiB7XG4gICAgICBmcy5leGlzdHMocGF0aCwgZXhpc3RzID0+IHtcbiAgICAgICAgb2JzLm5leHQoZXhpc3RzKTtcbiAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzRGlyZWN0b3J5KHBhdGg6IFBhdGgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gX2NhbGxGcyhmcy5zdGF0LCB0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpKS5waXBlKFxuICAgICAgbWFwKHN0YXQgPT4gc3RhdC5pc0RpcmVjdG9yeSgpKSxcbiAgICApO1xuICB9XG4gIGlzRmlsZShwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIF9jYWxsRnMoZnMuc3RhdCwgdGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSkucGlwZShcbiAgICAgIG1hcChzdGF0ID0+IHN0YXQuaXNEaXJlY3RvcnkoKSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNvbWUgaG9zdHMgbWF5IG5vdCBzdXBwb3J0IHN0YXRzLlxuICBzdGF0cyhwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTx2aXJ0dWFsRnMuU3RhdHM8ZnMuU3RhdHM+PiB8IG51bGwge1xuICAgIHJldHVybiBfY2FsbEZzKGZzLnN0YXQsIHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpO1xuICB9XG5cbiAgLy8gU29tZSBob3N0cyBtYXkgbm90IHN1cHBvcnQgd2F0Y2hpbmcuXG4gIHdhdGNoKFxuICAgIHBhdGg6IFBhdGgsXG4gICAgX29wdGlvbnM/OiB2aXJ0dWFsRnMuSG9zdFdhdGNoT3B0aW9ucyxcbiAgKTogT2JzZXJ2YWJsZTx2aXJ0dWFsRnMuSG9zdFdhdGNoRXZlbnQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHZpcnR1YWxGcy5Ib3N0V2F0Y2hFdmVudD4ob2JzID0+IHtcbiAgICAgIGNvbnN0IHdhdGNoZXIgPSBuZXcgRlNXYXRjaGVyKHsgcGVyc2lzdGVudDogdHJ1ZSB9KS5hZGQodGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSk7XG5cbiAgICAgIHdhdGNoZXJcbiAgICAgICAgLm9uKCdjaGFuZ2UnLCBwYXRoID0+IHtcbiAgICAgICAgICBvYnMubmV4dCh7XG4gICAgICAgICAgICBwYXRoOiBub3JtYWxpemUocGF0aCksXG4gICAgICAgICAgICB0aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgdHlwZTogdmlydHVhbEZzLkhvc3RXYXRjaEV2ZW50VHlwZS5DaGFuZ2VkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAub24oJ2FkZCcsIHBhdGggPT4ge1xuICAgICAgICAgIG9icy5uZXh0KHtcbiAgICAgICAgICAgIHBhdGg6IG5vcm1hbGl6ZShwYXRoKSxcbiAgICAgICAgICAgIHRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB0eXBlOiB2aXJ0dWFsRnMuSG9zdFdhdGNoRXZlbnRUeXBlLkNyZWF0ZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbigndW5saW5rJywgcGF0aCA9PiB7XG4gICAgICAgICAgb2JzLm5leHQoe1xuICAgICAgICAgICAgcGF0aDogbm9ybWFsaXplKHBhdGgpLFxuICAgICAgICAgICAgdGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHR5cGU6IHZpcnR1YWxGcy5Ib3N0V2F0Y2hFdmVudFR5cGUuRGVsZXRlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB3YXRjaGVyLmNsb3NlKCk7XG4gICAgfSkucGlwZShcbiAgICAgIHB1Ymxpc2goKSxcbiAgICAgIHJlZkNvdW50KCksXG4gICAgKTtcbiAgfVxufVxuXG5cbi8qKlxuICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFZpcnR1YWwgRlMgdXNpbmcgTm9kZSBhcyB0aGUgYmFja2VuZCwgc3luY2hyb25vdXNseS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5vZGVKc1N5bmNIb3N0IGltcGxlbWVudHMgdmlydHVhbEZzLkhvc3Q8ZnMuU3RhdHM+IHtcbiAgcHJvdGVjdGVkIF9nZXRTeXN0ZW1QYXRoKHBhdGg6IFBhdGgpOiBzdHJpbmcge1xuICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtLnN0YXJ0c1dpdGgoJ3dpbjMyJykpIHtcbiAgICAgIHJldHVybiBhc1dpbmRvd3NQYXRoKHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXNQb3NpeFBhdGgocGF0aCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNhcGFiaWxpdGllcygpOiB2aXJ0dWFsRnMuSG9zdENhcGFiaWxpdGllcyB7XG4gICAgcmV0dXJuIHsgc3luY2hyb25vdXM6IHRydWUgfTtcbiAgfVxuXG4gIHdyaXRlKHBhdGg6IFBhdGgsIGNvbnRlbnQ6IHZpcnR1YWxGcy5GaWxlQnVmZmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgLy8gQ3JlYXRlIGZvbGRlcnMgaWYgbmVjZXNzYXJ5LlxuICAgIGNvbnN0IF9jcmVhdGVEaXIgPSAocGF0aDogUGF0aCkgPT4ge1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX2NyZWF0ZURpcihkaXJuYW1lKHBhdGgpKTtcbiAgICAgIGZzLm1rZGlyU3luYyhwYXRoKTtcbiAgICB9O1xuICAgIF9jcmVhdGVEaXIoZGlybmFtZShwYXRoKSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyh0aGlzLl9nZXRTeXN0ZW1QYXRoKHBhdGgpLCBuZXcgVWludDhBcnJheShjb250ZW50KSk7XG5cbiAgICByZXR1cm4gZW1wdHk8dm9pZD4oKTtcbiAgfVxuXG4gIHJlYWQocGF0aDogUGF0aCk6IE9ic2VydmFibGU8dmlydHVhbEZzLkZpbGVCdWZmZXI+IHtcbiAgICBjb25zdCBidWZmZXIgPSBmcy5yZWFkRmlsZVN5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSk7XG5cbiAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKG5ldyBVaW50OEFycmF5KGJ1ZmZlcikuYnVmZmVyIGFzIHZpcnR1YWxGcy5GaWxlQnVmZmVyKTtcbiAgfVxuXG4gIGRlbGV0ZShwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNEaXJlY3RvcnkocGF0aCkpIHtcbiAgICAgIC8vIFNpbmNlIHRoaXMgaXMgc3luY2hyb25vdXMsIHdlIGNhbiByZWN1cnNlIGFuZCBzYWZlbHkgaWdub3JlIHRoZSByZXN1bHQuXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgZnMucmVhZGRpclN5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSkpIHtcbiAgICAgICAgdGhpcy5kZWxldGUoam9pbihwYXRoLCBuYW1lKSk7XG4gICAgICB9XG4gICAgICBmcy5ybWRpclN5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZzLnVubGlua1N5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVtcHR5KCk7XG4gIH1cblxuICByZW5hbWUoZnJvbTogUGF0aCwgdG86IFBhdGgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBmcy5yZW5hbWVTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgoZnJvbSksIHRoaXMuX2dldFN5c3RlbVBhdGgodG8pKTtcblxuICAgIHJldHVybiBlbXB0eSgpO1xuICB9XG5cbiAgbGlzdChwYXRoOiBQYXRoKTogT2JzZXJ2YWJsZTxQYXRoRnJhZ21lbnRbXT4ge1xuICAgIHJldHVybiBvYnNlcnZhYmxlT2YoZnMucmVhZGRpclN5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSkpLnBpcGUoXG4gICAgICBtYXAobmFtZXMgPT4gbmFtZXMubWFwKG5hbWUgPT4gZnJhZ21lbnQobmFtZSkpKSxcbiAgICApO1xuICB9XG5cbiAgZXhpc3RzKHBhdGg6IFBhdGgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKGZzLmV4aXN0c1N5bmModGhpcy5fZ2V0U3lzdGVtUGF0aChwYXRoKSkpO1xuICB9XG5cbiAgaXNEaXJlY3RvcnkocGF0aDogUGF0aCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpub24tbnVsbC1vcGVyYXRvclxuICAgIHJldHVybiB0aGlzLnN0YXRzKHBhdGgpICEucGlwZShtYXAoc3RhdCA9PiBzdGF0LmlzRGlyZWN0b3J5KCkpKTtcbiAgfVxuICBpc0ZpbGUocGF0aDogUGF0aCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpub24tbnVsbC1vcGVyYXRvclxuICAgIHJldHVybiB0aGlzLnN0YXRzKHBhdGgpICEucGlwZShtYXAoc3RhdCA9PiBzdGF0LmlzRmlsZSgpKSk7XG4gIH1cblxuICAvLyBTb21lIGhvc3RzIG1heSBub3Qgc3VwcG9ydCBzdGF0cy5cbiAgc3RhdHMocGF0aDogUGF0aCk6IE9ic2VydmFibGU8dmlydHVhbEZzLlN0YXRzPGZzLlN0YXRzPj4gfCBudWxsIHtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKGZzLnN0YXRTeW5jKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpKTtcbiAgfVxuXG4gIC8vIFNvbWUgaG9zdHMgbWF5IG5vdCBzdXBwb3J0IHdhdGNoaW5nLlxuICB3YXRjaChcbiAgICBwYXRoOiBQYXRoLFxuICAgIF9vcHRpb25zPzogdmlydHVhbEZzLkhvc3RXYXRjaE9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8dmlydHVhbEZzLkhvc3RXYXRjaEV2ZW50PiB8IG51bGwge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2aXJ0dWFsRnMuSG9zdFdhdGNoRXZlbnQ+KG9icyA9PiB7XG4gICAgICBjb25zdCBvcHRzID0geyBwZXJzaXN0ZW50OiBmYWxzZSB9O1xuICAgICAgY29uc3Qgd2F0Y2hlciA9IG5ldyBGU1dhdGNoZXIob3B0cykuYWRkKHRoaXMuX2dldFN5c3RlbVBhdGgocGF0aCkpO1xuXG4gICAgICB3YXRjaGVyXG4gICAgICAgIC5vbignY2hhbmdlJywgcGF0aCA9PiB7XG4gICAgICAgICAgb2JzLm5leHQoe1xuICAgICAgICAgICAgcGF0aDogbm9ybWFsaXplKHBhdGgpLFxuICAgICAgICAgICAgdGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHR5cGU6IHZpcnR1YWxGcy5Ib3N0V2F0Y2hFdmVudFR5cGUuQ2hhbmdlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdhZGQnLCBwYXRoID0+IHtcbiAgICAgICAgICBvYnMubmV4dCh7XG4gICAgICAgICAgICBwYXRoOiBub3JtYWxpemUocGF0aCksXG4gICAgICAgICAgICB0aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgdHlwZTogdmlydHVhbEZzLkhvc3RXYXRjaEV2ZW50VHlwZS5DcmVhdGVkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAub24oJ3VubGluaycsIHBhdGggPT4ge1xuICAgICAgICAgIG9icy5uZXh0KHtcbiAgICAgICAgICAgIHBhdGg6IG5vcm1hbGl6ZShwYXRoKSxcbiAgICAgICAgICAgIHRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB0eXBlOiB2aXJ0dWFsRnMuSG9zdFdhdGNoRXZlbnRUeXBlLkRlbGV0ZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gKCkgPT4gd2F0Y2hlci5jbG9zZSgpO1xuICAgIH0pLnBpcGUoXG4gICAgICBwdWJsaXNoKCksXG4gICAgICByZWZDb3VudCgpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
package/node/index.js
CHANGED
|
@@ -17,4 +17,4 @@ __export(require("./host"));
|
|
|
17
17
|
var resolve_1 = require("./resolve");
|
|
18
18
|
exports.ModuleNotFoundException = resolve_1.ModuleNotFoundException;
|
|
19
19
|
exports.resolve = resolve_1.resolve;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2NvcmUvbm9kZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7R0FNRztBQUNILDJCQUEyQjtBQU1sQixnQkFBRTtBQUpYLGtDQUE2QjtBQUM3Qiw0QkFBdUI7QUFDdkIscUNBQTZFO0FBQXBFLDRDQUFBLHVCQUF1QixDQUFBO0FBQWtCLDRCQUFBLE9BQU8sQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIGZzIGZyb20gJy4vZnMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NsaS1sb2dnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9ob3N0JztcbmV4cG9ydCB7IE1vZHVsZU5vdEZvdW5kRXhjZXB0aW9uLCBSZXNvbHZlT3B0aW9ucywgcmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZSc7XG5cbmV4cG9ydCB7IGZzIH07XG4iXX0=
|
package/node/resolve.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { BaseException } from '@angular-devkit/core';
|
|
1
|
+
import { BaseException } from '../src';
|
|
9
2
|
/**
|
|
10
3
|
* Exception thrown when a module could not be resolved.
|
|
11
4
|
*/
|
package/node/resolve.js
CHANGED
|
@@ -7,14 +7,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
* Use of this source code is governed by an MIT-style license that can be
|
|
8
8
|
* found in the LICENSE file at https://angular.io/license
|
|
9
9
|
*/
|
|
10
|
-
const core_1 = require("@angular-devkit/core");
|
|
11
10
|
const fs = require("fs");
|
|
12
11
|
const path = require("path");
|
|
12
|
+
const src_1 = require("../src");
|
|
13
13
|
const fs_1 = require("./fs");
|
|
14
14
|
/**
|
|
15
15
|
* Exception thrown when a module could not be resolved.
|
|
16
16
|
*/
|
|
17
|
-
class ModuleNotFoundException extends
|
|
17
|
+
class ModuleNotFoundException extends src_1.BaseException {
|
|
18
18
|
constructor(moduleName, basePath) {
|
|
19
19
|
super(`Could not find module ${JSON.stringify(moduleName)} from ${JSON.stringify(basePath)}.`);
|
|
20
20
|
this.moduleName = moduleName;
|
|
@@ -222,4 +222,4 @@ function resolve(x, options) {
|
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
exports.resolve = resolve;
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaGFuc2wvU291cmNlcy9oYW5zbC9kZXZraXQvIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9jb3JlL25vZGUvcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7R0FNRztBQUNILCtDQUFxRDtBQUNyRCx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE4QjtBQUU5Qjs7R0FFRztBQUNILDZCQUFxQyxTQUFRLG9CQUFhO0lBR3hELFlBQTRCLFVBQWtCLEVBQWtCLFFBQWdCO1FBQzlFLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURyRSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQWtCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFFOUUsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFQRCwwREFPQztBQUVEOzs7O0dBSUc7QUFDSDtJQUNFLGdFQUFnRTtJQUNoRSxNQUFNLEtBQUssR0FBRyxLQUE4RCxDQUFDO0lBQzdFLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0lBQ3RELEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUM5QyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFvRSxDQUFDO0lBQ2pHLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztJQUVoRCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFD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LE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RCxDQUFDO0FBQ0gsQ0FBQztBQTNLRCwwQkEyS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgeyBCYXNlRXhjZXB0aW9uIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGlzRmlsZSB9IGZyb20gJy4vZnMnO1xuXG4vKipcbiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhIG1vZHVsZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2R1bGVOb3RGb3VuZEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgY29kZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBtb2R1bGVOYW1lOiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSBiYXNlUGF0aDogc3RyaW5nKSB7XG4gICAgc3VwZXIoYENvdWxkIG5vdCBmaW5kIG1vZHVsZSAke0pTT04uc3RyaW5naWZ5KG1vZHVsZU5hbWUpfSBmcm9tICR7SlNPTi5zdHJpbmdpZnkoYmFzZVBhdGgpfS5gKTtcbiAgICB0aGlzLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGNhbGxlcnMgZnJvbSB0aGUgcmVzb2x2ZSgpIGNhbGwuXG4gKiBAcmV0dXJucyB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBfY2FsbGVyKCk6IHN0cmluZ1tdIHtcbiAgLy8gc2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avdjgvd2lraS9KYXZhU2NyaXB0U3RhY2tUcmFjZUFwaVxuICBjb25zdCBlcnJvciA9IEVycm9yIGFzIHt9IGFzIHsgcHJlcGFyZVN0YWNrVHJhY2U6ICh4OiB7fSwgc3RhY2s6IHt9KSA9PiB7fSB9O1xuICBjb25zdCBvcmlnUHJlcGFyZVN0YWNrVHJhY2UgPSBlcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtcbiAgZXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSAoXywgc3RhY2spID0+IHN0YWNrO1xuICBjb25zdCBzdGFjayA9IChuZXcgRXJyb3IoKSkuc3RhY2sgYXMge31bXSB8IHVuZGVmaW5lZCBhcyB7IGdldEZpbGVOYW1lKCk6IHN0cmluZyB9W10gfCB1bmRlZmluZWQ7XG4gIGVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gb3JpZ1ByZXBhcmVTdGFja1RyYWNlO1xuXG4gIHJldHVybiBzdGFjayA/IHN0YWNrLm1hcCh4ID0+IHguZ2V0RmlsZU5hbWUoKSkgOiBbXTtcbn1cblxuXG4vKipcbiAqIEdldCB0aGUgZ2xvYmFsIGRpcmVjdG9yeSBmb3Igbm9kZV9tb2R1bGVzLiBUaGlzIGlzIGJhc2VkIG9uIE5QTSBjb2RlIGl0c2VsZiwgYW5kIG1heSBiZSBzdWJqZWN0XG4gKiB0byBjaGFuZ2UsIGJ1dCBpcyByZWxhdGl2ZWx5IHN0YWJsZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBwYXRoIHRvIG5vZGVfbW9kdWxlcyBpdHNlbGYuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBfZ2V0R2xvYmFsTm9kZU1vZHVsZXMoKSB7XG4gIGxldCBnbG9iYWxQcmVmaXg7XG5cbiAgaWYgKHByb2Nlc3MuZW52LlBSRUZJWCkge1xuICAgIGdsb2JhbFByZWZpeCA9IHByb2Nlc3MuZW52LlBSRUZJWDtcbiAgfSBlbHNlIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgLy8gYzpcXG5vZGVcXG5vZGUuZXhlIC0tPiBwcmVmaXg9YzpcXG5vZGVcXFxuICAgIGdsb2JhbFByZWZpeCA9IHBhdGguZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyAvdXNyL2xvY2FsL2Jpbi9ub2RlIC0tPiBwcmVmaXg9L3Vzci9sb2NhbFxuICAgIGdsb2JhbFByZWZpeCA9IHBhdGguZGlybmFtZShwYXRoLmRpcm5hbWUocHJvY2Vzcy5leGVjUGF0aCkpO1xuXG4gICAgLy8gZGVzdGRpciBvbmx5IGlzIHJlc3BlY3RlZCBvbiBVbml4XG4gICAgaWYgKHByb2Nlc3MuZW52LkRFU1RESVIpIHtcbiAgICAgIGdsb2JhbFByZWZpeCA9IHBhdGguam9pbihwcm9jZXNzLmVudi5ERVNURElSLCBnbG9iYWxQcmVmaXgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAocHJvY2Vzcy5wbGF0Zm9ybSAhPT0gJ3dpbjMyJylcbiAgICA/IHBhdGgucmVzb2x2ZShnbG9iYWxQcmVmaXgsICdsaWInLCAnbm9kZV9tb2R1bGVzJylcbiAgICA6IHBhdGgucmVzb2x2ZShnbG9iYWxQcmVmaXgsICdub2RlX21vZHVsZXMnKTtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBiYXNlZGlyIHRvIHVzZSBmcm9tIHdoaWNoIHRvIHJlc29sdmUuXG4gICAqL1xuICBiYXNlZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGV4dGVuc2lvbnMgdG8gcmVzb2x2ZS4gQnkgZGVmYXVsdCB1c2VzIE9iamVjdC5rZXlzKHJlcXVpcmUuZXh0ZW5zaW9ucykuXG4gICAqL1xuICBleHRlbnNpb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFkZGl0aW9uYWwgbGlzdCBvZiBwYXRocyB0byBsb29rIGludG8uXG4gICAqL1xuICBwYXRocz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBwcmVzZXJ2ZSBzeW1ib2xpYyBsaW5rcy4gSWYgZmFsc2UsIHRoZSBhY3R1YWwgcGF0aHMgcG9pbnRlZCBieVxuICAgKiB0aGUgc3ltYm9saWMgbGlua3Mgd2lsbCBiZSB1c2VkLiBUaGlzIGRlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICBwcmVzZXJ2ZVN5bWxpbmtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmYWxsYmFjayB0byBhIGdsb2JhbCBsb29rdXAgaWYgdGhlIGJhc2VkaXIgb25lIGZhaWxlZC5cbiAgICovXG4gIGNoZWNrR2xvYmFsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmYWxsYmFjayB0byB1c2luZyB0aGUgbG9jYWwgY2FsbGVyJ3MgZGlyZWN0b3J5IGlmIHRoZSBiYXNlZGlyIGZhaWxlZC5cbiAgICovXG4gIGNoZWNrTG9jYWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG9ubHkgcmVzb2x2ZSBhbmQgcmV0dXJuIHRoZSBmaXJzdCBwYWNrYWdlLmpzb24gZmlsZSBmb3VuZC4gQnkgZGVmYXVsdCxcbiAgICogcmVzb2x2ZXMgdGhlIG1haW4gZmllbGQgb3IgdGhlIGluZGV4IG9mIHRoZSBwYWNrYWdlLlxuICAgKi9cbiAgcmVzb2x2ZVBhY2thZ2VKc29uPzogYm9vbGVhbjtcbn1cblxuXG5sZXQgX3Jlc29sdmVIb29rOiAoKHg6IHN0cmluZywgb3B0aW9uczogUmVzb2x2ZU9wdGlvbnMpID0+IHN0cmluZyB8IG51bGwpIHwgbnVsbCA9IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gc2V0UmVzb2x2ZUhvb2soXG4gIGhvb2s6ICgoeDogc3RyaW5nLCBvcHRpb25zOiBSZXNvbHZlT3B0aW9ucykgPT4gc3RyaW5nIHwgbnVsbCkgfCBudWxsLFxuKSB7XG4gIF9yZXNvbHZlSG9vayA9IGhvb2s7XG59XG5cblxuLyoqXG4gKiBSZXNvbHZlIGEgcGFja2FnZSB1c2luZyBhIGxvZ2ljIHNpbWlsYXIgdG8gbnBtIHJlcXVpcmUucmVzb2x2ZSwgYnV0IHdpdGggbW9yZSBvcHRpb25zLlxuICogQHBhcmFtIHggVGhlIHBhY2thZ2UgbmFtZSB0byByZXNvbHZlLlxuICogQHBhcmFtIG9wdGlvbnMgQSBsaXN0IG9mIG9wdGlvbnMuIFNlZSBkb2N1bWVudGF0aW9uIG9mIHRob3NlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBQYXRoIHRvIHRoZSBpbmRleCB0byBpbmNsdWRlLCBvciBpZiBgcmVzb2x2ZVBhY2thZ2VKc29uYCBvcHRpb24gd2FzXG4gKiAgICAgICAgICAgICAgICAgICBwYXNzZWQsIGEgcGF0aCB0byB0aGF0IGZpbGUuXG4gKiBAdGhyb3dzIHtNb2R1bGVOb3RGb3VuZEV4Y2VwdGlvbn0gSWYgbm8gbW9kdWxlIHdpdGggdGhhdCBuYW1lIHdhcyBmb3VuZCBhbnl3aGVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoeDogc3RyaW5nLCBvcHRpb25zOiBSZXNvbHZlT3B0aW9ucyk6IHN0cmluZyB7XG4gIGlmIChfcmVzb2x2ZUhvb2spIHtcbiAgICBjb25zdCBtYXliZSA9IF9yZXNvbHZlSG9vayh4LCBvcHRpb25zKTtcbiAgICBpZiAobWF5YmUpIHtcbiAgICAgIHJldHVybiBtYXliZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZWFkRmlsZVN5bmMgPSBmcy5yZWFkRmlsZVN5bmM7XG5cbiAgY29uc3QgZXh0ZW5zaW9uczogc3RyaW5nW10gPSBvcHRpb25zLmV4dGVuc2lvbnMgfHwgT2JqZWN0LmtleXMocmVxdWlyZS5leHRlbnNpb25zKTtcbiAgY29uc3QgYmFzZVBhdGggPSBvcHRpb25zLmJhc2VkaXI7XG5cbiAgb3B0aW9ucy5wYXRocyA9IG9wdGlvbnMucGF0aHMgfHwgW107XG5cbiAgaWYgKC9eKD86XFwuXFwuPyg/OlxcL3wkKXxcXC98KFtBLVphLXpdOik/Wy9cXFxcXSkvLnRlc3QoeCkpIHtcbiAgICBsZXQgcmVzID0gcGF0aC5yZXNvbHZlKGJhc2VQYXRoLCB4KTtcbiAgICBpZiAoeCA9PT0gJy4uJyB8fCB4LnNsaWNlKC0xKSA9PT0gJy8nKSB7XG4gICAgICByZXMgKz0gJy8nO1xuICAgIH1cblxuICAgIGNvbnN0IG0gPSBsb2FkQXNGaWxlU3luYyhyZXMpIHx8IGxvYWRBc0RpcmVjdG9yeVN5bmMocmVzKTtcbiAgICBpZiAobSkge1xuICAgICAgcmV0dXJuIG07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IG4gPSBsb2FkTm9kZU1vZHVsZXNTeW5jKHgsIGJhc2VQYXRoKTtcbiAgICBpZiAobikge1xuICAgICAgcmV0dXJuIG47XG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gY2hlY2tpbmcgdGhlIGxvY2FsIChjYWxsZWUpIG5vZGUgbW9kdWxlcy5cbiAgaWYgKG9wdGlvbnMuY2hlY2tMb2NhbCkge1xuICAgIGNvbnN0IGNhbGxlcnMgPSBfY2FsbGVyKCk7XG4gICAgZm9yIChjb25zdCBjYWxsZXIgb2YgY2FsbGVycykge1xuICAgICAgY29uc3QgbG9jYWxEaXIgPSBwYXRoLmRpcm5hbWUoY2FsbGVyKTtcbiAgICAgIGlmIChsb2NhbERpciAhPT0gb3B0aW9ucy5iYXNlZGlyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoeCwge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIGNoZWNrTG9jYWw6IGZhbHNlLFxuICAgICAgICAgICAgY2hlY2tHbG9iYWw6IGZhbHNlLFxuICAgICAgICAgICAgYmFzZWRpcjogbG9jYWxEaXIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBKdXN0IHN3YXAgdGhlIGJhc2VQYXRoIHdpdGggdGhlIG9yaWdpbmFsIGNhbGwgb25lLlxuICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBNb2R1bGVOb3RGb3VuZEV4Y2VwdGlvbikpIHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gY2hlY2tpbmcgdGhlIGdsb2JhbCBub2RlIG1vZHVsZXMuXG4gIGlmIChvcHRpb25zLmNoZWNrR2xvYmFsKSB7XG4gICAgY29uc3QgZ2xvYmFsRGlyID0gcGF0aC5kaXJuYW1lKF9nZXRHbG9iYWxOb2RlTW9kdWxlcygpKTtcbiAgICBpZiAoZ2xvYmFsRGlyICE9PSBvcHRpb25zLmJhc2VkaXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHgsIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIGNoZWNrTG9jYWw6IGZhbHNlLFxuICAgICAgICAgIGNoZWNrR2xvYmFsOiBmYWxzZSxcbiAgICAgICAgICBiYXNlZGlyOiBnbG9iYWxEaXIsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBKdXN0IHN3YXAgdGhlIGJhc2VQYXRoIHdpdGggdGhlIG9yaWdpbmFsIGNhbGwgb25lLlxuICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgTW9kdWxlTm90Rm91bmRFeGNlcHRpb24pKSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBNb2R1bGVOb3RGb3VuZEV4Y2VwdGlvbih4LCBiYXNlUGF0aCk7XG5cbiAgZnVuY3Rpb24gbG9hZEFzRmlsZVN5bmMoeDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKGlzRmlsZSh4KSkge1xuICAgICAgcmV0dXJuIHg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dGVuc2lvbnMubWFwKGV4ID0+IHggKyBleCkuZmluZChmID0+IGlzRmlsZShmKSkgfHwgbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvYWRBc0RpcmVjdG9yeVN5bmMoeDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgcGtnZmlsZSA9IHBhdGguam9pbih4LCAncGFja2FnZS5qc29uJyk7XG4gICAgaWYgKGlzRmlsZShwa2dmaWxlKSkge1xuICAgICAgaWYgKG9wdGlvbnMucmVzb2x2ZVBhY2thZ2VKc29uKSB7XG4gICAgICAgIHJldHVybiBwa2dmaWxlO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBib2R5ID0gcmVhZEZpbGVTeW5jKHBrZ2ZpbGUsICdVVEY4Jyk7XG4gICAgICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoYm9keSk7XG5cbiAgICAgICAgaWYgKHBrZ1snbWFpbiddKSB7XG4gICAgICAgICAgaWYgKHBrZ1snbWFpbiddID09PSAnLicgfHwgcGtnWydtYWluJ10gPT09ICcuLycpIHtcbiAgICAgICAgICAgIHBrZ1snbWFpbiddID0gJ2luZGV4JztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtID0gbG9hZEFzRmlsZVN5bmMocGF0aC5yZXNvbHZlKHgsIHBrZ1snbWFpbiddKSk7XG4gICAgICAgICAgaWYgKG0pIHtcbiAgICAgICAgICAgIHJldHVybiBtO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuID0gbG9hZEFzRGlyZWN0b3J5U3luYyhwYXRoLnJlc29sdmUoeCwgcGtnWydtYWluJ10pKTtcbiAgICAgICAgICBpZiAobikge1xuICAgICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cblxuICAgIHJldHVybiBsb2FkQXNGaWxlU3luYyhwYXRoLmpvaW4oeCwgJy9pbmRleCcpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvYWROb2RlTW9kdWxlc1N5bmMoeDogc3RyaW5nLCBzdGFydDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZGlycyA9IG5vZGVNb2R1bGVzUGF0aHMoc3RhcnQsIG9wdGlvbnMpO1xuICAgIGZvciAoY29uc3QgZGlyIG9mIGRpcnMpIHtcbiAgICAgIGNvbnN0IG0gPSBsb2FkQXNGaWxlU3luYyhwYXRoLmpvaW4oZGlyLCAnLycsIHgpKTtcbiAgICAgIGlmIChtKSB7XG4gICAgICAgIHJldHVybiBtO1xuICAgICAgfVxuICAgICAgY29uc3QgbiA9IGxvYWRBc0RpcmVjdG9yeVN5bmMocGF0aC5qb2luKGRpciwgJy8nLCB4KSk7XG4gICAgICBpZiAobikge1xuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5vZGVNb2R1bGVzUGF0aHMoc3RhcnQ6IHN0cmluZywgb3B0czogUmVzb2x2ZU9wdGlvbnMpIHtcbiAgICBjb25zdCBtb2R1bGVzID0gWydub2RlX21vZHVsZXMnXTtcblxuICAgIC8vIGVuc3VyZSB0aGF0IGBzdGFydGAgaXMgYW4gYWJzb2x1dGUgcGF0aCBhdCB0aGlzIHBvaW50LFxuICAgIC8vIHJlc29sdmluZyBhZ2FpbnN0IHRoZSBwcm9jZXNzJyBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XG4gICAgbGV0IGFic29sdXRlU3RhcnQgPSBwYXRoLnJlc29sdmUoc3RhcnQpO1xuXG4gICAgaWYgKG9wdHMgJiYgb3B0cy5wcmVzZXJ2ZVN5bWxpbmtzID09PSBmYWxzZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWJzb2x1dGVTdGFydCA9IGZzLnJlYWxwYXRoU3luYyhhYnNvbHV0ZVN0YXJ0KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyLmNvZGUgIT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHByZWZpeCA9ICcvJztcbiAgICBpZiAoL14oW0EtWmEtel06KS8udGVzdChhYnNvbHV0ZVN0YXJ0KSkge1xuICAgICAgcHJlZml4ID0gJyc7XG4gICAgfSBlbHNlIGlmICgvXlxcXFxcXFxcLy50ZXN0KGFic29sdXRlU3RhcnQpKSB7XG4gICAgICBwcmVmaXggPSAnXFxcXFxcXFwnO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGhzID0gW2Fic29sdXRlU3RhcnRdO1xuICAgIGxldCBwYXJzZWQgPSBwYXRoLnBhcnNlKGFic29sdXRlU3RhcnQpO1xuICAgIHdoaWxlIChwYXJzZWQuZGlyICE9PSBwYXRoc1twYXRocy5sZW5ndGggLSAxXSkge1xuICAgICAgcGF0aHMucHVzaChwYXJzZWQuZGlyKTtcbiAgICAgIHBhcnNlZCA9IHBhdGgucGFyc2UocGFyc2VkLmRpcik7XG4gICAgfVxuXG4gICAgY29uc3QgZGlycyA9IHBhdGhzLnJlZHVjZSgoZGlyczogc3RyaW5nW10sIGFQYXRoOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBkaXJzLmNvbmNhdChtb2R1bGVzLm1hcChmdW5jdGlvbiAobW9kdWxlRGlyKSB7XG4gICAgICAgIHJldHVybiBwYXRoLmpvaW4ocHJlZml4LCBhUGF0aCwgbW9kdWxlRGlyKTtcbiAgICAgIH0pKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gb3B0cyAmJiBvcHRzLnBhdGhzID8gZGlycy5jb25jYXQob3B0cy5wYXRocykgOiBkaXJzO1xuICB9XG59XG4iXX0=
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIuLyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9ub2RlL3Jlc29sdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLGdDQUF1QztBQUN2Qyw2QkFBOEI7QUFFOUI7O0dBRUc7QUFDSCw2QkFBcUMsU0FBUSxtQkFBYTtJQUd4RCxZQUE0QixVQUFrQixFQUFrQixRQUFnQjtRQUM5RSxLQUFLLENBQUMseUJBQXlCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFEckUsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUFrQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBRTlFLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBUEQsMERBT0M7QUFFRDs7OztHQUlHO0FBQ0g7SUFDRSxnRUFBZ0U7SUFDaEUsTUFBTSxLQUFLLEdBQUcsS0FBOEQsQ0FBQztJQUM3RSxNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztJQUN0RCxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBb0UsQ0FBQztJQUNqRyxLQUFLLENBQUMsaUJBQWlCLEdBQUcscUJBQXFCLENBQUM7SUFFaEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEQsQ0FBQztBQUdEOzs7OztHQUtHO0FBQ0g7SUFDRSxJQUFJLFlBQVksQ0FBQztJQUVqQixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkIsWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3BDLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLHVDQUF1QztRQUN2QyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ04sNENBQTRDO1FBQzVDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFNUQsb0NBQW9DO1FBQ3BDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4QixZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBMkNELElBQUksWUFBWSxHQUFtRSxJQUFJLENBQUM7QUFDeEYsd0JBQ0UsSUFBb0U7SUFFcEUsWUFBWSxHQUFHLElBQUksQ0FBQztBQUN0QixDQUFDO0FBSkQsd0NBSUM7QUFHRDs7Ozs7OztHQU9HO0FBQ0gsaUJBQXdCLENBQVMsRUFBRSxPQUF1QjtJQUN4RCxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNWLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFFckMsTUFBTSxVQUFVLEdBQWEsT0FBTyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBRWpDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFFcEMsRUFBRSxDQUFDLENBQUMseUNBQXlDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDYixDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDTixNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLE1BQU0sQ0FBQyxHQUFHLG1CQUFtQixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQztvQkFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsb0JBQ1gsT0FBTyxJQUNWLFVBQVUsRUFBRSxLQUFLLEVBQ2pCLFdBQVcsRUFBRSxLQUFLLEVBQ2xCLE9BQU8sRUFBRSxRQUFRLElBQ2pCLENBQUM7Z0JBQ0wsQ0FBQztnQkFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNYLHFEQUFxRDtvQkFDckQsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDNUMsTUFBTSxDQUFDLENBQUM7b0JBQ1YsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUNYLE9BQU8sSUFDVixVQUFVLEVBQUUsS0FBSyxFQUNqQixXQUFXLEVBQUUsS0FBSyxFQUNsQixPQUFPLEVBQUUsU0FBUyxJQUNsQixDQUFDO1lBQ0wsQ0FBQztZQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1gscURBQXFEO2dCQUNyRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1QyxNQUFNLENBQUMsQ0FBQztnQkFDVixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFJLHVCQUF1QixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUUvQyx3QkFBd0IsQ0FBUztRQUMvQixFQUFFLENBQUMsQ0FBQyxXQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDbkUsQ0FBQztJQUVELDZCQUE2QixDQUFTO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzdDLEVBQUUsQ0FBQyxDQUFDLFdBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztnQkFDL0IsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUNqQixDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ2hELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ3hCLENBQUM7b0JBRUQsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDWCxDQUFDO29CQUNELE1BQU0sQ0FBQyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDWCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsNkJBQTZCLENBQVMsRUFBRSxLQUFhO1FBQ25ELE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDTixNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBCQUEwQixLQUFhLEVBQUUsSUFBb0I7UUFDM0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVqQyx5REFBeUQ7UUFDekQsMkRBQTJEO1FBQzNELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQztnQkFDSCxhQUFhLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDYixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQzFCLE1BQU0sR0FBRyxDQUFDO2dCQUNaLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNqQixFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkMsT0FBTyxNQUFNLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxTQUFTO2dCQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0QsQ0FBQztBQUNILENBQUM7QUEzS0QsMEJBMktDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEJhc2VFeGNlcHRpb24gfSBmcm9tICcuLi9zcmMnO1xuaW1wb3J0IHsgaXNGaWxlIH0gZnJvbSAnLi9mcyc7XG5cbi8qKlxuICogRXhjZXB0aW9uIHRocm93biB3aGVuIGEgbW9kdWxlIGNvdWxkIG5vdCBiZSByZXNvbHZlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vZHVsZU5vdEZvdW5kRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIHB1YmxpYyByZWFkb25seSBjb2RlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IG1vZHVsZU5hbWU6IHN0cmluZywgcHVibGljIHJlYWRvbmx5IGJhc2VQYXRoOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQ291bGQgbm90IGZpbmQgbW9kdWxlICR7SlNPTi5zdHJpbmdpZnkobW9kdWxlTmFtZSl9IGZyb20gJHtKU09OLnN0cmluZ2lmeShiYXNlUGF0aCl9LmApO1xuICAgIHRoaXMuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUgY2FsbGVycyBmcm9tIHRoZSByZXNvbHZlKCkgY2FsbC5cbiAqIEByZXR1cm5zIHtzdHJpbmdbXX1cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIF9jYWxsZXIoKTogc3RyaW5nW10ge1xuICAvLyBzZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC93aWtpL0phdmFTY3JpcHRTdGFja1RyYWNlQXBpXG4gIGNvbnN0IGVycm9yID0gRXJyb3IgYXMge30gYXMgeyBwcmVwYXJlU3RhY2tUcmFjZTogKHg6IHt9LCBzdGFjazoge30pID0+IHt9IH07XG4gIGNvbnN0IG9yaWdQcmVwYXJlU3RhY2tUcmFjZSA9IGVycm9yLnByZXBhcmVTdGFja1RyYWNlO1xuICBlcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IChfLCBzdGFjaykgPT4gc3RhY2s7XG4gIGNvbnN0IHN0YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjayBhcyB7fVtdIHwgdW5kZWZpbmVkIGFzIHsgZ2V0RmlsZU5hbWUoKTogc3RyaW5nIH1bXSB8IHVuZGVmaW5lZDtcbiAgZXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBvcmlnUHJlcGFyZVN0YWNrVHJhY2U7XG5cbiAgcmV0dXJuIHN0YWNrID8gc3RhY2subWFwKHggPT4geC5nZXRGaWxlTmFtZSgpKSA6IFtdO1xufVxuXG5cbi8qKlxuICogR2V0IHRoZSBnbG9iYWwgZGlyZWN0b3J5IGZvciBub2RlX21vZHVsZXMuIFRoaXMgaXMgYmFzZWQgb24gTlBNIGNvZGUgaXRzZWxmLCBhbmQgbWF5IGJlIHN1YmplY3RcbiAqIHRvIGNoYW5nZSwgYnV0IGlzIHJlbGF0aXZlbHkgc3RhYmxlLlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHBhdGggdG8gbm9kZV9tb2R1bGVzIGl0c2VsZi5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIF9nZXRHbG9iYWxOb2RlTW9kdWxlcygpIHtcbiAgbGV0IGdsb2JhbFByZWZpeDtcblxuICBpZiAocHJvY2Vzcy5lbnYuUFJFRklYKSB7XG4gICAgZ2xvYmFsUHJlZml4ID0gcHJvY2Vzcy5lbnYuUFJFRklYO1xuICB9IGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICAvLyBjOlxcbm9kZVxcbm9kZS5leGUgLS0+IHByZWZpeD1jOlxcbm9kZVxcXG4gICAgZ2xvYmFsUHJlZml4ID0gcGF0aC5kaXJuYW1lKHByb2Nlc3MuZXhlY1BhdGgpO1xuICB9IGVsc2Uge1xuICAgIC8vIC91c3IvbG9jYWwvYmluL25vZGUgLS0+IHByZWZpeD0vdXNyL2xvY2FsXG4gICAgZ2xvYmFsUHJlZml4ID0gcGF0aC5kaXJuYW1lKHBhdGguZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKSk7XG5cbiAgICAvLyBkZXN0ZGlyIG9ubHkgaXMgcmVzcGVjdGVkIG9uIFVuaXhcbiAgICBpZiAocHJvY2Vzcy5lbnYuREVTVERJUikge1xuICAgICAgZ2xvYmFsUHJlZml4ID0gcGF0aC5qb2luKHByb2Nlc3MuZW52LkRFU1RESVIsIGdsb2JhbFByZWZpeCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChwcm9jZXNzLnBsYXRmb3JtICE9PSAnd2luMzInKVxuICAgID8gcGF0aC5yZXNvbHZlKGdsb2JhbFByZWZpeCwgJ2xpYicsICdub2RlX21vZHVsZXMnKVxuICAgIDogcGF0aC5yZXNvbHZlKGdsb2JhbFByZWZpeCwgJ25vZGVfbW9kdWxlcycpO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGJhc2VkaXIgdG8gdXNlIGZyb20gd2hpY2ggdG8gcmVzb2x2ZS5cbiAgICovXG4gIGJhc2VkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgZXh0ZW5zaW9ucyB0byByZXNvbHZlLiBCeSBkZWZhdWx0IHVzZXMgT2JqZWN0LmtleXMocmVxdWlyZS5leHRlbnNpb25zKS5cbiAgICovXG4gIGV4dGVuc2lvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gYWRkaXRpb25hbCBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgaW50by5cbiAgICovXG4gIHBhdGhzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHByZXNlcnZlIHN5bWJvbGljIGxpbmtzLiBJZiBmYWxzZSwgdGhlIGFjdHVhbCBwYXRocyBwb2ludGVkIGJ5XG4gICAqIHRoZSBzeW1ib2xpYyBsaW5rcyB3aWxsIGJlIHVzZWQuIFRoaXMgZGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHByZXNlcnZlU3ltbGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZhbGxiYWNrIHRvIGEgZ2xvYmFsIGxvb2t1cCBpZiB0aGUgYmFzZWRpciBvbmUgZmFpbGVkLlxuICAgKi9cbiAgY2hlY2tHbG9iYWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZhbGxiYWNrIHRvIHVzaW5nIHRoZSBsb2NhbCBjYWxsZXIncyBkaXJlY3RvcnkgaWYgdGhlIGJhc2VkaXIgZmFpbGVkLlxuICAgKi9cbiAgY2hlY2tMb2NhbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gb25seSByZXNvbHZlIGFuZCByZXR1cm4gdGhlIGZpcnN0IHBhY2thZ2UuanNvbiBmaWxlIGZvdW5kLiBCeSBkZWZhdWx0LFxuICAgKiByZXNvbHZlcyB0aGUgbWFpbiBmaWVsZCBvciB0aGUgaW5kZXggb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICByZXNvbHZlUGFja2FnZUpzb24/OiBib29sZWFuO1xufVxuXG5cbmxldCBfcmVzb2x2ZUhvb2s6ICgoeDogc3RyaW5nLCBvcHRpb25zOiBSZXNvbHZlT3B0aW9ucykgPT4gc3RyaW5nIHwgbnVsbCkgfCBudWxsID0gbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXNvbHZlSG9vayhcbiAgaG9vazogKCh4OiBzdHJpbmcsIG9wdGlvbnM6IFJlc29sdmVPcHRpb25zKSA9PiBzdHJpbmcgfCBudWxsKSB8IG51bGwsXG4pIHtcbiAgX3Jlc29sdmVIb29rID0gaG9vaztcbn1cblxuXG4vKipcbiAqIFJlc29sdmUgYSBwYWNrYWdlIHVzaW5nIGEgbG9naWMgc2ltaWxhciB0byBucG0gcmVxdWlyZS5yZXNvbHZlLCBidXQgd2l0aCBtb3JlIG9wdGlvbnMuXG4gKiBAcGFyYW0geCBUaGUgcGFja2FnZSBuYW1lIHRvIHJlc29sdmUuXG4gKiBAcGFyYW0gb3B0aW9ucyBBIGxpc3Qgb2Ygb3B0aW9ucy4gU2VlIGRvY3VtZW50YXRpb24gb2YgdGhvc2Ugb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFBhdGggdG8gdGhlIGluZGV4IHRvIGluY2x1ZGUsIG9yIGlmIGByZXNvbHZlUGFja2FnZUpzb25gIG9wdGlvbiB3YXNcbiAqICAgICAgICAgICAgICAgICAgIHBhc3NlZCwgYSBwYXRoIHRvIHRoYXQgZmlsZS5cbiAqIEB0aHJvd3Mge01vZHVsZU5vdEZvdW5kRXhjZXB0aW9ufSBJZiBubyBtb2R1bGUgd2l0aCB0aGF0IG5hbWUgd2FzIGZvdW5kIGFueXdoZXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZSh4OiBzdHJpbmcsIG9wdGlvbnM6IFJlc29sdmVPcHRpb25zKTogc3RyaW5nIHtcbiAgaWYgKF9yZXNvbHZlSG9vaykge1xuICAgIGNvbnN0IG1heWJlID0gX3Jlc29sdmVIb29rKHgsIG9wdGlvbnMpO1xuICAgIGlmIChtYXliZSkge1xuICAgICAgcmV0dXJuIG1heWJlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlYWRGaWxlU3luYyA9IGZzLnJlYWRGaWxlU3luYztcblxuICBjb25zdCBleHRlbnNpb25zOiBzdHJpbmdbXSA9IG9wdGlvbnMuZXh0ZW5zaW9ucyB8fCBPYmplY3Qua2V5cyhyZXF1aXJlLmV4dGVuc2lvbnMpO1xuICBjb25zdCBiYXNlUGF0aCA9IG9wdGlvbnMuYmFzZWRpcjtcblxuICBvcHRpb25zLnBhdGhzID0gb3B0aW9ucy5wYXRocyB8fCBbXTtcblxuICBpZiAoL14oPzpcXC5cXC4/KD86XFwvfCQpfFxcL3woW0EtWmEtel06KT9bL1xcXFxdKS8udGVzdCh4KSkge1xuICAgIGxldCByZXMgPSBwYXRoLnJlc29sdmUoYmFzZVBhdGgsIHgpO1xuICAgIGlmICh4ID09PSAnLi4nIHx8IHguc2xpY2UoLTEpID09PSAnLycpIHtcbiAgICAgIHJlcyArPSAnLyc7XG4gICAgfVxuXG4gICAgY29uc3QgbSA9IGxvYWRBc0ZpbGVTeW5jKHJlcykgfHwgbG9hZEFzRGlyZWN0b3J5U3luYyhyZXMpO1xuICAgIGlmIChtKSB7XG4gICAgICByZXR1cm4gbTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbiA9IGxvYWROb2RlTW9kdWxlc1N5bmMoeCwgYmFzZVBhdGgpO1xuICAgIGlmIChuKSB7XG4gICAgICByZXR1cm4gbjtcbiAgICB9XG4gIH1cblxuICAvLyBGYWxsYmFjayB0byBjaGVja2luZyB0aGUgbG9jYWwgKGNhbGxlZSkgbm9kZSBtb2R1bGVzLlxuICBpZiAob3B0aW9ucy5jaGVja0xvY2FsKSB7XG4gICAgY29uc3QgY2FsbGVycyA9IF9jYWxsZXIoKTtcbiAgICBmb3IgKGNvbnN0IGNhbGxlciBvZiBjYWxsZXJzKSB7XG4gICAgICBjb25zdCBsb2NhbERpciA9IHBhdGguZGlybmFtZShjYWxsZXIpO1xuICAgICAgaWYgKGxvY2FsRGlyICE9PSBvcHRpb25zLmJhc2VkaXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh4LCB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgY2hlY2tMb2NhbDogZmFsc2UsXG4gICAgICAgICAgICBjaGVja0dsb2JhbDogZmFsc2UsXG4gICAgICAgICAgICBiYXNlZGlyOiBsb2NhbERpcixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIEp1c3Qgc3dhcCB0aGUgYmFzZVBhdGggd2l0aCB0aGUgb3JpZ2luYWwgY2FsbCBvbmUuXG4gICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIE1vZHVsZU5vdEZvdW5kRXhjZXB0aW9uKSkge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGYWxsYmFjayB0byBjaGVja2luZyB0aGUgZ2xvYmFsIG5vZGUgbW9kdWxlcy5cbiAgaWYgKG9wdGlvbnMuY2hlY2tHbG9iYWwpIHtcbiAgICBjb25zdCBnbG9iYWxEaXIgPSBwYXRoLmRpcm5hbWUoX2dldEdsb2JhbE5vZGVNb2R1bGVzKCkpO1xuICAgIGlmIChnbG9iYWxEaXIgIT09IG9wdGlvbnMuYmFzZWRpcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoeCwge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgY2hlY2tMb2NhbDogZmFsc2UsXG4gICAgICAgICAgY2hlY2tHbG9iYWw6IGZhbHNlLFxuICAgICAgICAgIGJhc2VkaXI6IGdsb2JhbERpcixcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIEp1c3Qgc3dhcCB0aGUgYmFzZVBhdGggd2l0aCB0aGUgb3JpZ2luYWwgY2FsbCBvbmUuXG4gICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBNb2R1bGVOb3RGb3VuZEV4Y2VwdGlvbikpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IE1vZHVsZU5vdEZvdW5kRXhjZXB0aW9uKHgsIGJhc2VQYXRoKTtcblxuICBmdW5jdGlvbiBsb2FkQXNGaWxlU3luYyh4OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoaXNGaWxlKHgpKSB7XG4gICAgICByZXR1cm4geDtcbiAgICB9XG5cbiAgICByZXR1cm4gZXh0ZW5zaW9ucy5tYXAoZXggPT4geCArIGV4KS5maW5kKGYgPT4gaXNGaWxlKGYpKSB8fCBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gbG9hZEFzRGlyZWN0b3J5U3luYyh4OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBwa2dmaWxlID0gcGF0aC5qb2luKHgsICdwYWNrYWdlLmpzb24nKTtcbiAgICBpZiAoaXNGaWxlKHBrZ2ZpbGUpKSB7XG4gICAgICBpZiAob3B0aW9ucy5yZXNvbHZlUGFja2FnZUpzb24pIHtcbiAgICAgICAgcmV0dXJuIHBrZ2ZpbGU7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSByZWFkRmlsZVN5bmMocGtnZmlsZSwgJ1VURjgnKTtcbiAgICAgICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShib2R5KTtcblxuICAgICAgICBpZiAocGtnWydtYWluJ10pIHtcbiAgICAgICAgICBpZiAocGtnWydtYWluJ10gPT09ICcuJyB8fCBwa2dbJ21haW4nXSA9PT0gJy4vJykge1xuICAgICAgICAgICAgcGtnWydtYWluJ10gPSAnaW5kZXgnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG0gPSBsb2FkQXNGaWxlU3luYyhwYXRoLnJlc29sdmUoeCwgcGtnWydtYWluJ10pKTtcbiAgICAgICAgICBpZiAobSkge1xuICAgICAgICAgICAgcmV0dXJuIG07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG4gPSBsb2FkQXNEaXJlY3RvcnlTeW5jKHBhdGgucmVzb2x2ZSh4LCBwa2dbJ21haW4nXSkpO1xuICAgICAgICAgIGlmIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvYWRBc0ZpbGVTeW5jKHBhdGguam9pbih4LCAnL2luZGV4JykpO1xuICB9XG5cbiAgZnVuY3Rpb24gbG9hZE5vZGVNb2R1bGVzU3luYyh4OiBzdHJpbmcsIHN0YXJ0OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBkaXJzID0gbm9kZU1vZHVsZXNQYXRocyhzdGFydCwgb3B0aW9ucyk7XG4gICAgZm9yIChjb25zdCBkaXIgb2YgZGlycykge1xuICAgICAgY29uc3QgbSA9IGxvYWRBc0ZpbGVTeW5jKHBhdGguam9pbihkaXIsICcvJywgeCkpO1xuICAgICAgaWYgKG0pIHtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgICB9XG4gICAgICBjb25zdCBuID0gbG9hZEFzRGlyZWN0b3J5U3luYyhwYXRoLmpvaW4oZGlyLCAnLycsIHgpKTtcbiAgICAgIGlmIChuKSB7XG4gICAgICAgIHJldHVybiBuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gbm9kZU1vZHVsZXNQYXRocyhzdGFydDogc3RyaW5nLCBvcHRzOiBSZXNvbHZlT3B0aW9ucykge1xuICAgIGNvbnN0IG1vZHVsZXMgPSBbJ25vZGVfbW9kdWxlcyddO1xuXG4gICAgLy8gZW5zdXJlIHRoYXQgYHN0YXJ0YCBpcyBhbiBhYnNvbHV0ZSBwYXRoIGF0IHRoaXMgcG9pbnQsXG4gICAgLy8gcmVzb2x2aW5nIGFnYWluc3QgdGhlIHByb2Nlc3MnIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAgICBsZXQgYWJzb2x1dGVTdGFydCA9IHBhdGgucmVzb2x2ZShzdGFydCk7XG5cbiAgICBpZiAob3B0cyAmJiBvcHRzLnByZXNlcnZlU3ltbGlua3MgPT09IGZhbHNlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhYnNvbHV0ZVN0YXJ0ID0gZnMucmVhbHBhdGhTeW5jKGFic29sdXRlU3RhcnQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIuY29kZSAhPT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcHJlZml4ID0gJy8nO1xuICAgIGlmICgvXihbQS1aYS16XTopLy50ZXN0KGFic29sdXRlU3RhcnQpKSB7XG4gICAgICBwcmVmaXggPSAnJztcbiAgICB9IGVsc2UgaWYgKC9eXFxcXFxcXFwvLnRlc3QoYWJzb2x1dGVTdGFydCkpIHtcbiAgICAgIHByZWZpeCA9ICdcXFxcXFxcXCc7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aHMgPSBbYWJzb2x1dGVTdGFydF07XG4gICAgbGV0IHBhcnNlZCA9IHBhdGgucGFyc2UoYWJzb2x1dGVTdGFydCk7XG4gICAgd2hpbGUgKHBhcnNlZC5kaXIgIT09IHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBwYXRocy5wdXNoKHBhcnNlZC5kaXIpO1xuICAgICAgcGFyc2VkID0gcGF0aC5wYXJzZShwYXJzZWQuZGlyKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXJzID0gcGF0aHMucmVkdWNlKChkaXJzOiBzdHJpbmdbXSwgYVBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGRpcnMuY29uY2F0KG1vZHVsZXMubWFwKGZ1bmN0aW9uIChtb2R1bGVEaXIpIHtcbiAgICAgICAgcmV0dXJuIHBhdGguam9pbihwcmVmaXgsIGFQYXRoLCBtb2R1bGVEaXIpO1xuICAgICAgfSkpO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBvcHRzICYmIG9wdHMucGF0aHMgPyBkaXJzLmNvbmNhdChvcHRzLnBhdGhzKSA6IGRpcnM7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -54,4 +54,4 @@ class UnsupportedPlatformException extends BaseException {
|
|
|
54
54
|
constructor() { super('This platform is not supported by this code path.'); }
|
|
55
55
|
}
|
|
56
56
|
exports.UnsupportedPlatformException = UnsupportedPlatformException;
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9jb3JlL3NyYy9leGNlcHRpb24vZXhjZXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsbUJBQTJCLFNBQVEsS0FBSztJQUN0QyxZQUFZLE9BQU8sR0FBRyxFQUFFO1FBQ3RCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCxzQ0FJQztBQUdELGFBQWE7QUFDYiwrQkFBdUMsU0FBUSxhQUFhO0lBQzFELFlBQVksSUFBWSxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDdkU7QUFGRCw4REFFQztBQUNELCtCQUF1QyxTQUFRLGFBQWE7SUFDMUQsWUFBWSxJQUFZLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN0RTtBQUZELDhEQUVDO0FBQ0QsOEJBQXNDLFNBQVEsYUFBYTtJQUN6RCxZQUFZLElBQVksSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3ZFO0FBRkQsNERBRUM7QUFDRCx5QkFBaUMsU0FBUSxhQUFhO0lBQ3BELFlBQVksSUFBWSxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xFO0FBRkQsa0RBRUM7QUFDRCxnQ0FBd0MsU0FBUSxhQUFhO0lBQzNELFlBQVksSUFBWTtRQUN0QixLQUFLLENBQUMsb0JBQW9CLElBQUksMkRBQTJELENBQUMsQ0FBQztJQUM3RixDQUFDO0NBQ0Y7QUFKRCxnRUFJQztBQUNELGtDQUEwQyxTQUFRLGFBQWE7SUFDN0QsZ0JBQWdCLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNyRDtBQUZELG9FQUVDO0FBQ0QsNEJBQW9DLFNBQVEsYUFBYTtJQUN2RCxZQUFZLElBQVk7UUFDdEIsS0FBSyxDQUFDLCtCQUErQixJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRjtBQUpELHdEQUlDO0FBRUQsNEJBQW9DLFNBQVEsYUFBYTtJQUN2RCxnQkFBZ0IsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVEO0FBRkQsd0RBRUM7QUFFRCxrQ0FBMEMsU0FBUSxhQUFhO0lBQzdELGdCQUFnQixLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDOUU7QUFGRCxvRUFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IGNsYXNzIEJhc2VFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UgPSAnJykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cblxuLy8gRXhjZXB0aW9uc1xuZXhwb3J0IGNsYXNzIEZpbGVEb2VzTm90RXhpc3RFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IocGF0aDogc3RyaW5nKSB7IHN1cGVyKGBQYXRoIFwiJHtwYXRofVwiIGRvZXMgbm90IGV4aXN0LmApOyB9XG59XG5leHBvcnQgY2xhc3MgRmlsZUFscmVhZHlFeGlzdEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihwYXRoOiBzdHJpbmcpIHsgc3VwZXIoYFBhdGggXCIke3BhdGh9XCIgYWxyZWFkeSBleGlzdC5gKTsgfVxufVxuZXhwb3J0IGNsYXNzIFBhdGhJc0RpcmVjdG9yeUV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihwYXRoOiBzdHJpbmcpIHsgc3VwZXIoYFBhdGggXCIke3BhdGh9XCIgaXMgYSBkaXJlY3RvcnkuYCk7IH1cbn1cbmV4cG9ydCBjbGFzcyBQYXRoSXNGaWxlRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHBhdGg6IHN0cmluZykgeyBzdXBlcihgUGF0aCBcIiR7cGF0aH1cIiBpcyBhIGZpbGUuYCk7IH1cbn1cbmV4cG9ydCBjbGFzcyBDb250ZW50SGFzTXV0YXRlZEV4Y2VwdGlvbiBleHRlbmRzIEJhc2VFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihwYXRoOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQ29udGVudCBhdCBwYXRoIFwiJHtwYXRofVwiIGhhcyBjaGFuZ2VkIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIGFuIHVwZGF0ZS5gKTtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIEludmFsaWRVcGRhdGVSZWNvcmRFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IoKSB7IHN1cGVyKGBJbnZhbGlkIHJlY29yZCBpbnN0YW5jZS5gKTsgfVxufVxuZXhwb3J0IGNsYXNzIE1lcmdlQ29uZmxpY3RFeGNlcHRpb24gZXh0ZW5kcyBCYXNlRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IocGF0aDogc3RyaW5nKSB7XG4gICAgc3VwZXIoYEEgbWVyZ2UgY29uZmxpY3RlZCBvbiBwYXRoIFwiJHtwYXRofVwiLmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmltcGxlbWVudGVkRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKCkgeyBzdXBlcignVGhpcyBmdW5jdGlvbiBpcyB1bmltcGxlbWVudGVkLicpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZFBsYXRmb3JtRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKCkgeyBzdXBlcignVGhpcyBwbGF0Zm9ybSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29kZSBwYXRoLicpOyB9XG59XG4iXX0=
|
package/src/index.js
CHANGED
|
@@ -18,4 +18,4 @@ __export(require("./exception/exception"));
|
|
|
18
18
|
__export(require("./json"));
|
|
19
19
|
__export(require("./utils"));
|
|
20
20
|
__export(require("./virtual-fs"));
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2NvcmUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztHQU1HO0FBQ0gsb0NBQW9DO0FBU2xDLDBCQUFPO0FBUlQsdUNBQXVDO0FBU3JDLDRCQUFRO0FBUFYsMkNBQXNDO0FBQ3RDLDRCQUF1QjtBQUN2Qiw2QkFBd0I7QUFDeEIsa0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgKiBhcyB0ZXJtaW5hbCBmcm9tICcuL3Rlcm1pbmFsJztcblxuZXhwb3J0ICogZnJvbSAnLi9leGNlcHRpb24vZXhjZXB0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vanNvbic7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlydHVhbC1mcyc7XG5cbmV4cG9ydCB7XG4gIGxvZ2dpbmcsXG4gIHRlcm1pbmFsLFxufTtcbiJdfQ==
|
package/src/json/index.js
CHANGED
|
@@ -6,4 +6,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
__export(require("./parser"));
|
|
7
7
|
const schema = require("./schema");
|
|
8
8
|
exports.schema = schema;
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2NvcmUvc3JjL2pzb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFRQSw4QkFBeUI7QUFFekIsbUNBQW1DO0FBQzFCLHdCQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJzZXInO1xuXG5pbXBvcnQgKiBhcyBzY2hlbWEgZnJvbSAnLi9zY2hlbWEnO1xuZXhwb3J0IHsgc2NoZW1hIH07XG4iXX0=
|
package/src/json/interface.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9jb3JlL3NyYy9qc29uL2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIHJlYWRvbmx5IG9mZnNldDogbnVtYmVyO1xuXG4gIHJlYWRvbmx5IGxpbmU6IG51bWJlcjtcbiAgcmVhZG9ubHkgY2hhcmFjdGVyOiBudW1iZXI7XG59XG5cblxuZXhwb3J0IHR5cGUgSnNvbkFzdE5vZGUgPSBKc29uQXN0TnVtYmVyXG4gICAgfCBKc29uQXN0U3RyaW5nXG4gICAgfCBKc29uQXN0SWRlbnRpZmllclxuICAgIHwgSnNvbkFzdEFycmF5XG4gICAgfCBKc29uQXN0T2JqZWN0XG4gICAgfCBKc29uQXN0Q29uc3RhbnRGYWxzZVxuICAgIHwgSnNvbkFzdENvbnN0YW50TnVsbFxuICAgIHwgSnNvbkFzdENvbnN0YW50VHJ1ZTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Bc3ROb2RlQmFzZSB7XG4gIHJlYWRvbmx5IHN0YXJ0OiBQb3NpdGlvbjtcbiAgcmVhZG9ubHkgZW5kOiBQb3NpdGlvbjtcbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IGNvbW1lbnRzPzogKEpzb25Bc3RDb21tZW50IHwgSnNvbkFzdE11bHRpbGluZUNvbW1lbnQpW107XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBKc29uQXN0TnVtYmVyIGV4dGVuZHMgSnNvbkFzdE5vZGVCYXNlIHtcbiAgcmVhZG9ubHkga2luZDogJ251bWJlcic7XG4gIHJlYWRvbmx5IHZhbHVlOiBudW1iZXI7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBKc29uQXN0U3RyaW5nIGV4dGVuZHMgSnNvbkFzdE5vZGVCYXNlIHtcbiAgcmVhZG9ubHkga2luZDogJ3N0cmluZyc7XG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBKc29uQXN0SWRlbnRpZmllciBleHRlbmRzIEpzb25Bc3ROb2RlQmFzZSB7XG4gIHJlYWRvbmx5IGtpbmQ6ICdpZGVudGlmaWVyJztcbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25BcnJheSBleHRlbmRzIEFycmF5PEpzb25WYWx1ZT4ge31cblxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Bc3RBcnJheSBleHRlbmRzIEpzb25Bc3ROb2RlQmFzZSB7XG4gIHJlYWRvbmx5IGtpbmQ6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnRzOiBKc29uQXN0Tm9kZVtdO1xuICByZWFkb25seSB2YWx1ZTogSnNvbkFycmF5O1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbk9iamVjdCB7XG4gIFtwcm9wOiBzdHJpbmddOiBKc29uVmFsdWU7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBKc29uQXN0S2V5VmFsdWUgZXh0ZW5kcyBKc29uQXN0Tm9kZUJhc2Uge1xuICByZWFkb25seSBraW5kOiAna2V5dmFsdWUnO1xuICByZWFkb25seSBrZXk6IEpzb25Bc3RTdHJpbmcgfCBKc29uQXN0SWRlbnRpZmllcjtcbiAgcmVhZG9ubHkgdmFsdWU6IEpzb25Bc3ROb2RlO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkFzdE9iamVjdCBleHRlbmRzIEpzb25Bc3ROb2RlQmFzZSB7XG4gIHJlYWRvbmx5IGtpbmQ6ICdvYmplY3QnO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBKc29uQXN0S2V5VmFsdWVbXTtcbiAgcmVhZG9ubHkgdmFsdWU6IEpzb25PYmplY3Q7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBKc29uQXN0Q29uc3RhbnRGYWxzZSBleHRlbmRzIEpzb25Bc3ROb2RlQmFzZSB7XG4gIHJlYWRvbmx5IGtpbmQ6ICdmYWxzZSc7XG4gIHJlYWRvbmx5IHZhbHVlOiBmYWxzZTtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Bc3RDb25zdGFudE51bGwgZXh0ZW5kcyBKc29uQXN0Tm9kZUJhc2Uge1xuICByZWFkb25seSBraW5kOiAnbnVsbCc7XG4gIHJlYWRvbmx5IHZhbHVlOiBudWxsO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkFzdENvbnN0YW50VHJ1ZSBleHRlbmRzIEpzb25Bc3ROb2RlQmFzZSB7XG4gIHJlYWRvbmx5IGtpbmQ6ICd0cnVlJztcbiAgcmVhZG9ubHkgdmFsdWU6IHRydWU7XG59XG5cblxuLy8gTG9vc2UgbW9kZSBBU1QuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Bc3RNdWx0aWxpbmVDb21tZW50IGV4dGVuZHMgSnNvbkFzdE5vZGVCYXNlIHtcbiAgcmVhZG9ubHkga2luZDogJ211bHRpY29tbWVudCc7XG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkFzdENvbW1lbnQgZXh0ZW5kcyBKc29uQXN0Tm9kZUJhc2Uge1xuICByZWFkb25seSBraW5kOiAnY29tbWVudCc7XG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcbn1cblxuXG5leHBvcnQgdHlwZSBKc29uVmFsdWUgPSBKc29uQXN0Tm9kZVsndmFsdWUnXTtcbiJdfQ==
|