@appium/support 2.55.4 → 2.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/env.js +102 -0
- package/build/lib/fs.js +74 -56
- package/build/lib/image-util.js +2 -4
- package/build/lib/index.js +18 -6
- package/build/lib/log-internal.js +2 -4
- package/build/lib/logger.js +2 -4
- package/build/lib/logging.js +2 -4
- package/build/lib/mjpeg.js +2 -4
- package/build/lib/mkdirp.js +7 -11
- package/build/lib/net.js +2 -4
- package/build/lib/node.js +99 -2
- package/build/lib/npm.js +240 -0
- package/build/lib/plist.js +2 -4
- package/build/lib/process.js +2 -4
- package/build/lib/system.js +2 -4
- package/build/lib/tempdir.js +2 -4
- package/build/lib/timing.js +2 -4
- package/build/lib/util.js +6 -8
- package/build/lib/zip.js +4 -8
- package/lib/env.js +162 -0
- package/lib/fs.js +193 -69
- package/lib/index.js +8 -2
- package/lib/log-internal.js +2 -2
- package/lib/logging.js +1 -1
- package/lib/mkdirp.js +3 -6
- package/lib/net.js +4 -4
- package/lib/node.js +104 -1
- package/lib/npm.js +335 -0
- package/lib/tempdir.js +6 -6
- package/lib/util.js +28 -24
- package/lib/zip.js +7 -8
- package/package.json +20 -10
- package/build/test/assets/sample_binary.plist +0 -0
- package/build/test/assets/sample_text.plist +0 -28
- package/build/test/fs-specs.js +0 -264
- package/build/test/helpers.js +0 -35
- package/build/test/image-util-e2e-specs.js +0 -78
- package/build/test/index-specs.js +0 -49
- package/build/test/log-internals-specs.js +0 -97
- package/build/test/logger/helpers.js +0 -71
- package/build/test/logger/logger-force-specs.js +0 -41
- package/build/test/logger/logger-normal-specs.js +0 -113
- package/build/test/logger/logger-test-specs.js +0 -40
- package/build/test/mjpeg-e2e-specs.js +0 -96
- package/build/test/net-e2e-specs.js +0 -32
- package/build/test/node-e2e-specs.js +0 -22
- package/build/test/plist-specs.js +0 -54
- package/build/test/process-specs.js +0 -104
- package/build/test/system-specs.js +0 -136
- package/build/test/tempdir-specs.js +0 -86
- package/build/test/timing-specs.js +0 -125
- package/build/test/util-e2e-specs.js +0 -136
- package/build/test/util-specs.js +0 -537
- package/build/test/zip-e2e-specs.js +0 -233
package/build/lib/env.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.MANIFEST_RELATIVE_PATH = exports.MANIFEST_BASENAME = exports.DEFAULT_APPIUM_HOME = void 0;
|
|
9
|
+
exports.hasAppiumDependency = hasAppiumDependency;
|
|
10
|
+
exports.resolveManifestPath = exports.resolveAppiumHome = exports.readPackageInDir = void 0;
|
|
11
|
+
|
|
12
|
+
require("source-map-support/register");
|
|
13
|
+
|
|
14
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
15
|
+
|
|
16
|
+
var _os = require("os");
|
|
17
|
+
|
|
18
|
+
var _path = _interopRequireDefault(require("path"));
|
|
19
|
+
|
|
20
|
+
var _pkgDir = _interopRequireDefault(require("pkg-dir"));
|
|
21
|
+
|
|
22
|
+
var _readPkg = _interopRequireDefault(require("read-pkg"));
|
|
23
|
+
|
|
24
|
+
var _npm = require("./npm");
|
|
25
|
+
|
|
26
|
+
const DEFAULT_APPIUM_HOME = _path.default.resolve((0, _os.homedir)(), '.appium');
|
|
27
|
+
|
|
28
|
+
exports.DEFAULT_APPIUM_HOME = DEFAULT_APPIUM_HOME;
|
|
29
|
+
const MANIFEST_BASENAME = 'extensions.yaml';
|
|
30
|
+
exports.MANIFEST_BASENAME = MANIFEST_BASENAME;
|
|
31
|
+
|
|
32
|
+
const MANIFEST_RELATIVE_PATH = _path.default.join('node_modules', '.cache', 'appium', MANIFEST_BASENAME);
|
|
33
|
+
|
|
34
|
+
exports.MANIFEST_RELATIVE_PATH = MANIFEST_RELATIVE_PATH;
|
|
35
|
+
|
|
36
|
+
async function hasAppiumDependency(cwd) {
|
|
37
|
+
let listResult;
|
|
38
|
+
let resolved;
|
|
39
|
+
let version;
|
|
40
|
+
|
|
41
|
+
try {
|
|
42
|
+
var _listResult$dependenc, _listResult, _listResult$dependenc2, _listResult$dependenc3, _listResult$dependenc4, _listResult2, _listResult2$dependen, _listResult2$dependen2;
|
|
43
|
+
|
|
44
|
+
listResult = await _npm.npm.list(cwd, 'appium');
|
|
45
|
+
resolved = (_listResult$dependenc = (_listResult = listResult) === null || _listResult === void 0 ? void 0 : (_listResult$dependenc2 = _listResult.dependencies) === null || _listResult$dependenc2 === void 0 ? void 0 : (_listResult$dependenc3 = _listResult$dependenc2.appium) === null || _listResult$dependenc3 === void 0 ? void 0 : _listResult$dependenc3.resolved) !== null && _listResult$dependenc !== void 0 ? _listResult$dependenc : '';
|
|
46
|
+
version = (_listResult$dependenc4 = (_listResult2 = listResult) === null || _listResult2 === void 0 ? void 0 : (_listResult2$dependen = _listResult2.dependencies) === null || _listResult2$dependen === void 0 ? void 0 : (_listResult2$dependen2 = _listResult2$dependen.appium) === null || _listResult2$dependen2 === void 0 ? void 0 : _listResult2$dependen2.version) !== null && _listResult$dependenc4 !== void 0 ? _listResult$dependenc4 : '';
|
|
47
|
+
} catch {
|
|
48
|
+
try {
|
|
49
|
+
var _ref, _pkg$dependencies$app, _pkg$dependencies, _pkg$devDependencies, _pkg$optionalDependen;
|
|
50
|
+
|
|
51
|
+
const pkg = await readPackageInDir(cwd);
|
|
52
|
+
version = resolved = (_ref = (_pkg$dependencies$app = pkg === null || pkg === void 0 ? void 0 : (_pkg$dependencies = pkg.dependencies) === null || _pkg$dependencies === void 0 ? void 0 : _pkg$dependencies.appium) !== null && _pkg$dependencies$app !== void 0 ? _pkg$dependencies$app : pkg === null || pkg === void 0 ? void 0 : (_pkg$devDependencies = pkg.devDependencies) === null || _pkg$devDependencies === void 0 ? void 0 : _pkg$devDependencies.appium) !== null && _ref !== void 0 ? _ref : pkg === null || pkg === void 0 ? void 0 : (_pkg$optionalDependen = pkg.optionalDependencies) === null || _pkg$optionalDependen === void 0 ? void 0 : _pkg$optionalDependen.appium;
|
|
53
|
+
} catch {}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return Boolean(version && (!resolved || resolved && !resolved.startsWith('file:')) && !version.startsWith('1') && !version.startsWith('0'));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const readPackageInDir = _lodash.default.memoize(async function _readPackageInDir(cwd) {
|
|
60
|
+
return await (0, _readPkg.default)({
|
|
61
|
+
cwd,
|
|
62
|
+
normalize: true
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
exports.readPackageInDir = readPackageInDir;
|
|
67
|
+
|
|
68
|
+
const resolveAppiumHome = _lodash.default.memoize(async function _resolveAppiumHome(cwd = process.cwd()) {
|
|
69
|
+
if (process.env.APPIUM_HOME) {
|
|
70
|
+
return process.env.APPIUM_HOME;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (!_path.default.isAbsolute(cwd)) {
|
|
74
|
+
throw new TypeError('`cwd` parameter must be an absolute path');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let currentPkgDir;
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
currentPkgDir = await (0, _pkgDir.default)(cwd);
|
|
81
|
+
|
|
82
|
+
if (!currentPkgDir) {
|
|
83
|
+
return DEFAULT_APPIUM_HOME;
|
|
84
|
+
}
|
|
85
|
+
} catch {
|
|
86
|
+
return DEFAULT_APPIUM_HOME;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return (await hasAppiumDependency(currentPkgDir)) ? currentPkgDir : DEFAULT_APPIUM_HOME;
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
exports.resolveAppiumHome = resolveAppiumHome;
|
|
93
|
+
|
|
94
|
+
const resolveManifestPath = _lodash.default.memoize(async function _resolveManifestPath(appiumHome) {
|
|
95
|
+
var _appiumHome;
|
|
96
|
+
|
|
97
|
+
appiumHome = (_appiumHome = appiumHome) !== null && _appiumHome !== void 0 ? _appiumHome : await resolveAppiumHome();
|
|
98
|
+
return _path.default.join(appiumHome, MANIFEST_RELATIVE_PATH);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
exports.resolveManifestPath = resolveManifestPath;
|
|
102
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9lbnYuanMiXSwibmFtZXMiOlsiREVGQVVMVF9BUFBJVU1fSE9NRSIsInBhdGgiLCJyZXNvbHZlIiwiTUFOSUZFU1RfQkFTRU5BTUUiLCJNQU5JRkVTVF9SRUxBVElWRV9QQVRIIiwiam9pbiIsImhhc0FwcGl1bURlcGVuZGVuY3kiLCJjd2QiLCJsaXN0UmVzdWx0IiwicmVzb2x2ZWQiLCJ2ZXJzaW9uIiwibnBtIiwibGlzdCIsImRlcGVuZGVuY2llcyIsImFwcGl1bSIsInBrZyIsInJlYWRQYWNrYWdlSW5EaXIiLCJkZXZEZXBlbmRlbmNpZXMiLCJvcHRpb25hbERlcGVuZGVuY2llcyIsIkJvb2xlYW4iLCJzdGFydHNXaXRoIiwiXyIsIm1lbW9pemUiLCJfcmVhZFBhY2thZ2VJbkRpciIsIm5vcm1hbGl6ZSIsInJlc29sdmVBcHBpdW1Ib21lIiwiX3Jlc29sdmVBcHBpdW1Ib21lIiwicHJvY2VzcyIsImVudiIsIkFQUElVTV9IT01FIiwiaXNBYnNvbHV0ZSIsIlR5cGVFcnJvciIsImN1cnJlbnRQa2dEaXIiLCJyZXNvbHZlTWFuaWZlc3RQYXRoIiwiX3Jlc29sdmVNYW5pZmVzdFBhdGgiLCJhcHBpdW1Ib21lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBTU8sTUFBTUEsbUJBQW1CLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYSxrQkFBYixFQUF3QixTQUF4QixDQUE1Qjs7O0FBTUEsTUFBTUMsaUJBQWlCLEdBQUcsaUJBQTFCOzs7QUFNQSxNQUFNQyxzQkFBc0IsR0FBR0gsY0FBS0ksSUFBTCxDQUNwQyxjQURvQyxFQUVwQyxRQUZvQyxFQUdwQyxRQUhvQyxFQUlwQ0YsaUJBSm9DLENBQS9COzs7O0FBdUJBLGVBQWVHLG1CQUFmLENBQW9DQyxHQUFwQyxFQUF5QztBQUs5QyxNQUFJQyxVQUFKO0FBRUEsTUFBSUMsUUFBSjtBQUVBLE1BQUlDLE9BQUo7O0FBQ0EsTUFBSTtB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Y2tcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgcGtnRGlyIGZyb20gJ3BrZy1kaXInO1xuaW1wb3J0IHJlYWRQa2cgZnJvbSAncmVhZC1wa2cnO1xuaW1wb3J0IHsgbnBtIH0gZnJvbSAnLi9ucG0nO1xuXG4vKipcbiAqIFBhdGggdG8gdGhlIGRlZmF1bHQgYEFQUElVTV9IT01FYCBkaXIgKGB+Ly5hcHBpdW1gKS5cbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FQUElVTV9IT01FID0gcGF0aC5yZXNvbHZlKGhvbWVkaXIoKSwgJy5hcHBpdW0nKTtcblxuLyoqXG4gKiBCYXNlbmFtZSBvZiBleHRlbnNpb24gbWFuaWZlc3QgZmlsZS5cbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBNQU5JRkVTVF9CQVNFTkFNRSA9ICdleHRlbnNpb25zLnlhbWwnO1xuXG4vKipcbiAqIFJlbGF0aXZlIHBhdGggdG8gZXh0ZW5zaW9uIG1hbmlmZXN0IGZpbGUgZnJvbSBgQVBQSVVNX0hPTUVgLlxuICogQHR5cGUge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IE1BTklGRVNUX1JFTEFUSVZFX1BBVEggPSBwYXRoLmpvaW4oXG4gICdub2RlX21vZHVsZXMnLFxuICAnLmNhY2hlJyxcbiAgJ2FwcGl1bScsXG4gIE1BTklGRVNUX0JBU0VOQU1FLFxuKTtcblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiBhcHBpdW0gaXMgaW5zdGFsbGVkIGFzIGEgZGVwZW5kZW5jeSBvZiBhIGxvY2FsIHBhY2thZ2UgYXQgYGN3ZGAuXG4gKlxuICogVGhlIGZvbGxvd2luZyBzcGVjaWFsIGNhc2VzIGFyZSBjb25zaWRlcmVkOlxuICpcbiAqIC0gSWYgYHJlc29sdmVkYCBzdGFydHMgd2l0aCBgZmlsZTpgLCB0aGVuIGBjd2RgIGxpa2VseSBwb2ludHMgdG8gYGFwcGl1bS1tb25vcmVwb2AsIGFuZCAoZm9yIG5vdykgd2UgZXhwZWN0IGBBUFBJVU1fSE9NRWAgdG8gYmUgdGhlIGRlZmF1bHQuXG4gKiAtIElmIHRoZSBgdmVyc2lvbmAgYmVnaW5zIHdpdGggYDBgIG9yIGAxYCwgd2UncmUgbG9va2luZyBhdCBhbiBvbGQgdmVyc2lvbiBvZiBgYXBwaXVtYCAobm90IHRoaXMgb25lISlcbiAqXG4gKiBOb3RlIHRoYXQgd2UgYXJlIF9ub3RfIHBlcmZvcm1pbmcgdGhlIGNoZWNrIFwiaXMgdGhlIGN1cnJlbnRseSBydW5uaW5nIEFwcGl1bSB0aGUgc2FtZSBvbmUgYXMgZm91bmQgaW4gdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzXCIsIGJlY2F1c2UgSSdtIG5vdCBzdXJlIGl0IGFjdHVhbGx5IG1hdHRlcnMgKGFzc3VtaW5nIHRoZSB2ZXJzaW9ucyBhcmUgY29tcGF0aWJsZSkuXG4gKiBSZWdhcmRsZXNzIHdlIG1heSB3YW50IHRvIG1ha2UgdGhpcyBtb3JlIHJvYnVzdCBpbiB0aGUgZnV0dXJlLCBhcyB3ZSBoaXQgZWRnZSBjYXNlcy5cbiAqXG4gKiBfQWxzb18gbm90ZSB0aGF0IGlmIGBhcHBpdW1gIGFwcGVhcnMgYXMgYSBkZXBlbmRlbmN5IGluIGBwYWNrYWdlLmpzb25gIF9idXQgaXQgaXMgbm90IHlldCBpbnN0YWxsZWRfIHRoaXMgZnVuY3Rpb24gd2lsbCByZXNvbHZlIGBmYWxzZWAuICBUaGlzIG1heSBub3QgYmUgZXhhY3RseSB3aGF0IHdlIHdhbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGN3ZFxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYXNBcHBpdW1EZXBlbmRlbmN5IChjd2QpIHtcbiAgLyoqXG4gICAqIEB0b2RvIHR5cGUgdGhpc1xuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKi9cbiAgbGV0IGxpc3RSZXN1bHQ7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0gKi9cbiAgbGV0IHJlc29sdmVkO1xuICAvKiogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9ICovXG4gIGxldCB2ZXJzaW9uO1xuICB0cnkge1xuICAgIGxpc3RSZXN1bHQgPSBhd2FpdCBucG0ubGlzdChjd2QsICdhcHBpdW0nKTtcbiAgICAvLyBpZiBcInJlc29sdmVkXCIgaXMgZW1wdHksIHRoZW4gYGFwcGl1bWAgaXMgaW4gZGVwZW5kZW5jaWVzLCBidXQgYG5wbSBpbnN0YWxsYCBoYXMgbm90IGJlZW4gcnVuLlxuICAgIC8vIGluIG90aGVyIHdvcmRzLCB0aGlzIGZ1bmN0aW9uIGNhbiByZXNvbHZlIGB0cnVlYCBldmVuIGlmIGByZXNvbHZlZGAgaXMgZW1wdHkuLi5cbiAgICByZXNvbHZlZCA9IGxpc3RSZXN1bHQ/LmRlcGVuZGVuY2llcz8uYXBwaXVtPy5yZXNvbHZlZCA/PyAnJztcbiAgICAvLyAuLi5ob3dldmVyLCBpdCBjYW5ub3QgZG8gc28gdW5sZXNzIGB2ZXJzaW9uYCBpcyBub25lbXB0eS5cbiAgICB2ZXJzaW9uID0gbGlzdFJlc3VsdD8uZGVwZW5kZW5jaWVzPy5hcHBpdW0/LnZlcnNpb24gPz8gJyc7XG4gIH0gY2F0Y2gge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwa2cgPSBhd2FpdCByZWFkUGFja2FnZUluRGlyKGN3ZCk7XG4gICAgICAvLyB3ZSdyZSBvbmx5IGdvaW5nIHRvIGxvb2sgYXQgdGhlc2UgdGhyZWUgZmllbGRzIGZvciBub3csIGJ1dCB3ZSBjYW4gY2hhbmdlIGl0IGxhdGVyIGlmIG5lZWQgYmUuXG4gICAgICB2ZXJzaW9uID0gcmVzb2x2ZWQgPVxuICAgICAgICBwa2c/LmRlcGVuZGVuY2llcz8uYXBwaXVtID8/XG4gICAgICAgIHBrZz8uZGV2RGVwZW5kZW5jaWVzPy5hcHBpdW0gPz9cbiAgICAgICAgcGtnPy5vcHRpb25hbERlcGVuZGVuY2llcz8uYXBwaXVtO1xuICAgIH0gY2F0Y2gge31cbiAgfVxuICByZXR1cm4gQm9vbGVhbihcbiAgICB2ZXJzaW9uICYmXG4gICAgICAoIXJlc29sdmVkIHx8IChyZXNvbHZlZCAmJiAhcmVzb2x2ZWQuc3RhcnRzV2l0aCgnZmlsZTonKSkpICYmXG4gICAgICAvLyBkb2luZyBhbnkgZnVydGhlciBjaGVja2luZyBoZXJlIG1heSBiZSBhIGZvb2wncyBlcnJhbmQsIGJlY2F1c2UgeW91IGNhbiBwaW4gdGhlIHZlcnNpb25cbiAgICAgIC8vIHRvIGEgX2xvdF8gb2YgZGlmZmVyZW50IHRoaW5ncyAodGFncywgVVJMcywgZXRjKS5cbiAgICAgICF2ZXJzaW9uLnN0YXJ0c1dpdGgoJzEnKSAmJlxuICAgICAgIXZlcnNpb24uc3RhcnRzV2l0aCgnMCcpLFxuICApO1xufVxuXG4vKipcbiAqIFJlYWQgYSBgcGFja2FnZS5qc29uYCBpbiBkaXIgYGN3ZGAuICBJZiBub25lIGZvdW5kLCByZXR1cm4gYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBjb25zdCByZWFkUGFja2FnZUluRGlyID0gXy5tZW1vaXplKFxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN3ZCAtIERpcmVjdG9yeSBvc3RlbnNpYmx5IGhhdmluZyBhIGBwYWNrYWdlLmpzb25gXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgncmVhZC1wa2cnKS5Ob3JtYWxpemVkUGFja2FnZUpzb258dW5kZWZpbmVkPn1cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIF9yZWFkUGFja2FnZUluRGlyIChjd2QpIHtcbiAgICByZXR1cm4gYXdhaXQgcmVhZFBrZyh7Y3dkLCBub3JtYWxpemU6IHRydWV9KTtcbiAgfSxcbik7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBsb2NhdGlvbiBvZiBBcHBpdW0ncyBcImhvbWVcIiBkaXJcbiAqXG4gKiAtIElmIGBBUFBJVU1fSE9NRWAgaXMgc2V0IGluIHRoZSBlbnZpcm9ubWVudCwgdXNlIHRoYXRcbiAqIC0gSWYgd2UgaGF2ZSBhbiBgZXh0ZW5zaW9ucy55YW1sYCBpbiB7QGxpbmtjb2RlIERFRkFVTFRfQVBQSVVNX0hPTUV9LCB0aGVuIHVzZSB0aGF0LlxuICogLSBJZiB3ZSBmaW5kIGEgYHBhY2thZ2UuanNvbmAgaW4gb3IgYWJvdmUgYGN3ZGAgYW5kIHtAbGlua2NvZGUgc2hvdWxkVXNlQ3dkRm9yQXBwaXVtSG9tZX0gcmV0dXJucyBgdHJ1ZWAsIHRoZW4gdXNlIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgYHBhY2thZ2UuanNvbmAuXG4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlQXBwaXVtSG9tZSA9IF8ubWVtb2l6ZShcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbY3dkXSAtIEN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuICBfTXVzdF8gYmUgYWJzb2x1dGUsIGlmIHNwZWNpZmllZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIF9yZXNvbHZlQXBwaXVtSG9tZSAoY3dkID0gcHJvY2Vzcy5jd2QoKSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5BUFBJVU1fSE9NRSkge1xuICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LkFQUElVTV9IT01FO1xuICAgIH1cblxuICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGN3ZCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Bjd2RgIHBhcmFtZXRlciBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgnKTtcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9ICovXG4gICAgbGV0IGN1cnJlbnRQa2dEaXI7XG5cbiAgICB0cnkge1xuICAgICAgY3VycmVudFBrZ0RpciA9IGF3YWl0IHBrZ0Rpcihjd2QpO1xuXG4gICAgICAvLyBpZiB3ZSBjYW4ndCBmaW5kIGEgYHBhY2thZ2UuanNvbmAsIHVzZSB0aGUgZGVmYXVsdFxuICAgICAgaWYgKCFjdXJyZW50UGtnRGlyKSB7XG4gICAgICAgIHJldHVybiBERUZBVUxUX0FQUElVTV9IT01FO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gdW5jbGVhciBpZiB0aGlzIGNhbiBhY3R1YWxseSBoYXBwZW5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXR1cm4gREVGQVVMVF9BUFBJVU1fSE9NRTtcbiAgICB9XG5cbiAgICByZXR1cm4gKGF3YWl0IGhhc0FwcGl1bURlcGVuZGVuY3koY3VycmVudFBrZ0RpcikpXG4gICAgICA/IGN1cnJlbnRQa2dEaXJcbiAgICAgIDogREVGQVVMVF9BUFBJVU1fSE9NRTtcbiAgfSxcbik7XG5cbi8qKlxuICogRmlndXJlIG91dCBtYW5pZmVzdCBwYXRoIGJhc2VkIG9uIGBhcHBpdW1Ib21lYC5cbiAqXG4gKiBUaGUgYXNzdW1wdGlvbiBpcyB0aGF0LCBpZiBgYXBwaXVtSG9tZWAgaGFzIGJlZW4gcHJvdmlkZWQsIGl0IHdhcyByZXNvbHZlZCB2aWEge0BsaW5rIHJlc29sdmVBcHBpdW1Ib21lIGByZXNvbHZlQXBwaXVtSG9tZSgpYH0hICBJZiB1bnN1cmUsXG4gKiBkb24ndCBwYXNzIGEgcGFyYW1ldGVyIGFuZCBsZXQgYHJlc29sdmVBcHBpdW1Ib21lKClgIGhhbmRsZSBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVNYW5pZmVzdFBhdGggPSBfLm1lbW9pemUoXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FwcGl1bUhvbWVdIC0gQXBwaXVtIGhvbWUgZGlyZWN0b3J5XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBfcmVzb2x2ZU1hbmlmZXN0UGF0aCAoYXBwaXVtSG9tZSkge1xuICAgIC8vIGNhbiB5b3UgXCJhd2FpdFwiIGluIGEgZGVmYXVsdCBwYXJhbWV0ZXI/IGlzIHRoYXQgYSBnb29kIGlkZWE/XG4gICAgYXBwaXVtSG9tZSA9IGFwcGl1bUhvbWUgPz8gKGF3YWl0IHJlc29sdmVBcHBpdW1Ib21lKCkpO1xuICAgIHJldHVybiBwYXRoLmpvaW4oYXBwaXVtSG9tZSwgTUFOSUZFU1RfUkVMQVRJVkVfUEFUSCk7XG4gIH0sXG4pO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3JlYWQtcGtnJykuTm9ybWFsaXplZFBhY2thZ2VKc29ufSBOb3JtYWxpemVkUGFja2FnZUpzb25cbiAqL1xuIl19
|
package/build/lib/fs.js
CHANGED
|
@@ -9,48 +9,48 @@ exports.fs = exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _crypto = _interopRequireDefault(require("crypto"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _fs = require("fs");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _glob = _interopRequireDefault(require("glob"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _klaw = _interopRequireDefault(require("klaw"));
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
23
23
|
|
|
24
24
|
var _mv = _interopRequireDefault(require("mv"));
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var _ncp = _interopRequireDefault(require("ncp"));
|
|
27
27
|
|
|
28
|
-
var
|
|
28
|
+
var _path = _interopRequireDefault(require("path"));
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _pkgDir = _interopRequireDefault(require("pkg-dir"));
|
|
31
31
|
|
|
32
|
-
var
|
|
32
|
+
var _readPkg = _interopRequireDefault(require("read-pkg"));
|
|
33
33
|
|
|
34
|
-
var
|
|
34
|
+
var _rimraf = _interopRequireDefault(require("rimraf"));
|
|
35
35
|
|
|
36
|
-
var
|
|
36
|
+
var _sanitizeFilename = _interopRequireDefault(require("sanitize-filename"));
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _which = _interopRequireDefault(require("which"));
|
|
39
39
|
|
|
40
40
|
var _logger = _interopRequireDefault(require("./logger"));
|
|
41
41
|
|
|
42
42
|
var _timing = _interopRequireDefault(require("./timing"));
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
var _util = require("./util");
|
|
45
45
|
|
|
46
46
|
const ncpAsync = _bluebird.default.promisify(_ncp.default);
|
|
47
47
|
|
|
48
|
-
const findRootCached = _lodash.default.memoize(
|
|
48
|
+
const findRootCached = _lodash.default.memoize(_pkgDir.default.sync);
|
|
49
49
|
|
|
50
50
|
const fs = {
|
|
51
51
|
async hasAccess(path) {
|
|
52
52
|
try {
|
|
53
|
-
await
|
|
53
|
+
await _fs.promises.access(path, _fs.constants.R_OK);
|
|
54
54
|
} catch (err) {
|
|
55
55
|
return false;
|
|
56
56
|
}
|
|
@@ -58,37 +58,37 @@ const fs = {
|
|
|
58
58
|
return true;
|
|
59
59
|
},
|
|
60
60
|
|
|
61
|
-
exists(path) {
|
|
62
|
-
return
|
|
61
|
+
async exists(path) {
|
|
62
|
+
return await fs.hasAccess(path);
|
|
63
63
|
},
|
|
64
64
|
|
|
65
65
|
rimraf: _bluebird.default.promisify(_rimraf.default),
|
|
66
|
-
rimrafSync: _rimraf.default.sync
|
|
66
|
+
rimrafSync: _rimraf.default.sync,
|
|
67
67
|
|
|
68
|
-
async mkdir(
|
|
68
|
+
async mkdir(filepath, opts = {}) {
|
|
69
69
|
try {
|
|
70
|
-
return await
|
|
70
|
+
return await _fs.promises.mkdir(filepath, opts);
|
|
71
71
|
} catch (err) {
|
|
72
|
-
if (err
|
|
72
|
+
if ((err === null || err === void 0 ? void 0 : err.code) !== 'EEXIST') {
|
|
73
73
|
throw err;
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
77
|
|
|
78
|
-
async copyFile(source, destination,
|
|
79
|
-
if (!(await
|
|
78
|
+
async copyFile(source, destination, opts = {}) {
|
|
79
|
+
if (!(await fs.hasAccess(source))) {
|
|
80
80
|
throw new Error(`The file at '${source}' does not exist or is not accessible`);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
return await ncpAsync(source, destination,
|
|
83
|
+
return await ncpAsync(source, destination, opts);
|
|
84
84
|
},
|
|
85
85
|
|
|
86
86
|
async md5(filePath) {
|
|
87
|
-
return await
|
|
87
|
+
return await fs.hash(filePath, 'md5');
|
|
88
88
|
},
|
|
89
89
|
|
|
90
90
|
mv: _bluebird.default.promisify(_mv.default),
|
|
91
|
-
which:
|
|
91
|
+
which: _which.default,
|
|
92
92
|
glob: _bluebird.default.promisify(_glob.default),
|
|
93
93
|
sanitizeName: _sanitizeFilename.default,
|
|
94
94
|
|
|
@@ -96,14 +96,23 @@ const fs = {
|
|
|
96
96
|
return await new _bluebird.default((resolve, reject) => {
|
|
97
97
|
const fileHash = _crypto.default.createHash(algorithm);
|
|
98
98
|
|
|
99
|
-
const readStream =
|
|
100
|
-
|
|
99
|
+
const readStream = (0, _fs.createReadStream)(filePath);
|
|
101
100
|
readStream.on('error', e => reject(new Error(`Cannot calculate ${algorithm} hash for '${filePath}'. Original error: ${e.message}`)));
|
|
102
101
|
readStream.on('data', chunk => fileHash.update(chunk));
|
|
103
102
|
readStream.on('end', () => resolve(fileHash.digest('hex')));
|
|
104
103
|
});
|
|
105
104
|
},
|
|
106
105
|
|
|
106
|
+
walk(dir, opts) {
|
|
107
|
+
return (0, _klaw.default)(dir, opts);
|
|
108
|
+
},
|
|
109
|
+
|
|
110
|
+
async mkdirp(dir) {
|
|
111
|
+
return await fs.mkdir(dir, {
|
|
112
|
+
recursive: true
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
|
|
107
116
|
async walkDir(dir, recursive, callback) {
|
|
108
117
|
let isValidRoot = false;
|
|
109
118
|
let errMsg = null;
|
|
@@ -153,7 +162,9 @@ const fs = {
|
|
|
153
162
|
reject(err);
|
|
154
163
|
}
|
|
155
164
|
}).on('end', function () {
|
|
156
|
-
lastFileProcessed.then(
|
|
165
|
+
lastFileProcessed.then(file => {
|
|
166
|
+
resolve(file !== null && file !== void 0 ? file : null);
|
|
167
|
+
}).catch(function (err) {
|
|
157
168
|
_logger.default.warn(`Unexpected error: ${err.message}`);
|
|
158
169
|
|
|
159
170
|
reject(err);
|
|
@@ -168,11 +179,13 @@ const fs = {
|
|
|
168
179
|
});
|
|
169
180
|
},
|
|
170
181
|
|
|
171
|
-
readPackageJsonFrom(dir) {
|
|
172
|
-
const
|
|
182
|
+
readPackageJsonFrom(dir, opts = {}) {
|
|
183
|
+
const cwd = fs.findRoot(dir);
|
|
173
184
|
|
|
174
185
|
try {
|
|
175
|
-
return
|
|
186
|
+
return _readPkg.default.sync({ ...opts,
|
|
187
|
+
cwd
|
|
188
|
+
});
|
|
176
189
|
} catch (err) {
|
|
177
190
|
err.message = `Failed to read a \`package.json\` from dir \`${dir}\`:\n\n${err.message}`;
|
|
178
191
|
throw err;
|
|
@@ -191,30 +204,35 @@ const fs = {
|
|
|
191
204
|
}
|
|
192
205
|
|
|
193
206
|
return result;
|
|
194
|
-
}
|
|
207
|
+
},
|
|
195
208
|
|
|
209
|
+
access: _fs.promises.access,
|
|
210
|
+
appendFile: _fs.promises.appendFile,
|
|
211
|
+
chmod: _fs.promises.chmod,
|
|
212
|
+
close: _bluebird.default.promisify(_fs.close),
|
|
213
|
+
constants: _fs.constants,
|
|
214
|
+
createWriteStream: _fs.createWriteStream,
|
|
215
|
+
createReadStream: _fs.createReadStream,
|
|
216
|
+
lstat: _fs.promises.lstat,
|
|
217
|
+
open: _bluebird.default.promisify(_fs.open),
|
|
218
|
+
openFile: _fs.promises.open,
|
|
219
|
+
readdir: _fs.promises.readdir,
|
|
220
|
+
read: _bluebird.default.promisify(_fs.read),
|
|
221
|
+
readFile: _fs.promises.readFile,
|
|
222
|
+
readlink: _fs.promises.readlink,
|
|
223
|
+
realpath: _fs.promises.realpath,
|
|
224
|
+
rename: _fs.promises.rename,
|
|
225
|
+
stat: _fs.promises.stat,
|
|
226
|
+
symlink: _fs.promises.symlink,
|
|
227
|
+
unlink: _fs.promises.unlink,
|
|
228
|
+
write: _bluebird.default.promisify(_fs.write),
|
|
229
|
+
writeFile: _fs.promises.writeFile,
|
|
230
|
+
F_OK: _fs.constants.F_OK,
|
|
231
|
+
R_OK: _fs.constants.R_OK,
|
|
232
|
+
W_OK: _fs.constants.W_OK,
|
|
233
|
+
X_OK: _fs.constants.X_OK
|
|
196
234
|
};
|
|
197
235
|
exports.fs = fs;
|
|
198
|
-
const simples = ['open', 'close', 'access', 'readFile', 'writeFile', 'write', 'read', 'readlink', 'chmod', 'unlink', 'readdir', 'stat', 'rename', 'lstat', 'appendFile', 'realpath', 'symlink'];
|
|
199
|
-
|
|
200
|
-
for (const s of simples) {
|
|
201
|
-
fs[s] = _bluebird.default.promisify(_fs2.default[s]);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
const syncFunctions = ['createReadStream', 'createWriteStream'];
|
|
205
|
-
|
|
206
|
-
for (const s of syncFunctions) {
|
|
207
|
-
fs[s] = _fs2.default[s];
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
const constants = ['F_OK', 'R_OK', 'W_OK', 'X_OK', 'constants'];
|
|
211
|
-
|
|
212
|
-
for (const c of constants) {
|
|
213
|
-
fs[c] = _fs2.default[c];
|
|
214
|
-
}
|
|
215
|
-
|
|
216
236
|
var _default = fs;
|
|
217
|
-
exports.default = _default;
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9mcy5qcyJdLCJuYW1lcyI6WyJta2RpckFzeW5jIiwiQiIsInByb21pc2lmeSIsIl9mcyIsIm1rZGlyIiwibmNwQXN5bmMiLCJuY3AiLCJmaW5kUm9vdENhY2hlZCIsIl8iLCJtZW1vaXplIiwiZmluZFJvb3QiLCJmcyIsImhhc0FjY2VzcyIsInBhdGgiLCJhY2Nlc3MiLCJSX09LIiwiZXJyIiwiZXhpc3RzIiwicmltcmFmIiwicmltcmFmU3luYyIsInN5bmMiLCJiaW5kIiwiYXJncyIsImNvZGUiLCJjb3B5RmlsZSIsInNvdXJjZSIsImRlc3RpbmF0aW9uIiwib3RoZXJBcmdzIiwiRXJyb3IiLCJtZDUiLCJmaWxlUGF0aCIsImhhc2giLCJtdiIsIndoaWNoIiwiZ2xvYiIsInNhbml0aXplTmFtZSIsInNhbml0aXplIiwiYWxnb3JpdGhtIiwicmVzb2x2ZSIsInJlamVjdCIsImZpbGVIYXNoIiwiY3J5cHRvIiwiY3JlYXRlSGFzaCIsInJlYWRTdHJlYW0iLCJjcmVhdGVSZWFkU3RyZWFtIiwib24iLCJlIiwibWVzc2FnZSIsImNodW5rIiwidXBkYXRlIiwiZGlnZXN0Iiwid2Fsa0RpciIsImRpciIsInJlY3Vyc2l2ZSIsImNhbGxiYWNrIiwiaXNWYWxpZFJvb3QiLCJlcnJNc2ciLCJzdGF0IiwiaXNEaXJlY3RvcnkiLCJ3YWxrZXIiLCJmaWxlQ291bnQiLCJkaXJlY3RvcnlDb3VudCIsInRpbWVyIiwiVGltZXIiLCJzdGFydCIsImxhc3RGaWxlUHJvY2Vzc2VkIiwiZGVwdGhMaW1pdCIsIml0ZW0iLCJwYXVzZSIsInN0YXRzIiwidHJ5IiwidGhlbiIsImRvbmUiLCJyZXN1bWUiLCJjYXRjaCIsImxvZyIsIndhcm4iLCJmaW5hbGx5IiwiZGVidWciLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImRlc3Ryb3kiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwicm9vdCIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsImpvaW4iLCJpc0Fic29sdXRlIiwiVHlwZUVycm9yIiwicmVzdWx0Iiwic2ltcGxlcyIsInMiLCJzeW5jRnVuY3Rpb25zIiwiY29uc3RhbnRzIiwiYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLGtCQUFFQyxTQUFGLENBQVlDLGFBQUlDLEtBQWhCLENBQW5COztBQUNBLE1BQU1DLFFBQVEsR0FBR0osa0JBQUVDLFNBQUYsQ0FBWUksWUFBWixDQUFqQjs7QUFDQSxNQUFNQyxjQUFjLEdBQUdDLGdCQUFFQyxPQUFGLENBQVVDLGlCQUFWLENBQXZCOztBQUVBLE1BQU1DLEVBQUUsR0FBRztBQUNULFFBQU1DLFNBQU4sQ0FBaUJDLElBQWpCLEVBQXVCO0FBQ3JCLFFBQUk7QUFDRixZQUFNLEtBQUtDLE1BQUwsQ0FBWUQsSUFBWixFQUFrQlYsYUFBSVksSUFBdEIsQ0FBTjtBQUNELEtBRkQsQ0FFRSxPQUFPQyxHQUFQLEVBQVk7QUFDWixhQUFPLEtBQVA7QUFDRDs7QUFDRCxXQUFPLElBQVA7QUFDRCxHQVJROztBQVNUQyxFQUFBQSxNQUFNLENBQUVKLElBQUYsRUFBUTtBQUFFLFdBQU8sS0FBS0QsU0FBTCxDQUFlQyxJQUFmLENBQVA7QUFBOEIsR0FUckM7O0FBVVRLLEVBQUFBLE1BQU0sRUFBRWpCLGtCQUFFQyxTQUFGLENBQVlnQixlQUFaLENBVkM7QUFXVEMsRUFBQUEsVUFBVSxFQUFFRCxnQkFBT0UsSUFBUCxDQUFZQyxJQUFaLENBQWlCSCxlQUFqQixDQVhIOztBQVlULFFBQU1kLEtBQU4sQ0FBYSxHQUFHa0IsSUFBaEIsRUFBc0I7QUFDcEIsUUFBSTtBQUNGLGFBQU8sTUFBTXRCLFVBQVUsQ0FBQyxHQUFHc0IsSUFBSixDQUF2QjtBQUNELEtBRkQsQ0FFRSxPQUFPTixHQUFQLEVBQVk7QUFD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QStCO0FBQzdCbkYsRUFBQUEsRUFBRSxDQUFDa0YsQ0FBRCxDQUFGLEdBQVExRixhQUFJMEYsQ0FBSixDQUFSO0FBQ0Q7O0FBR0QsTUFBTUUsU0FBUyxHQUFHLENBQ2hCLE1BRGdCLEVBQ1IsTUFEUSxFQUNBLE1BREEsRUFDUSxNQURSLEVBQ2dCLFdBRGhCLENBQWxCOztBQUdBLEtBQUssTUFBTUMsQ0FBWCxJQUFnQkQsU0FBaEIsRUFBMkI7QUFDekJwRixFQUFBQSxFQUFFLENBQUNxRixDQUFELENBQUYsR0FBUTdGLGFBQUk2RixDQUFKLENBQVI7QUFDRDs7ZUFHY3JGLEUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBqc2hpbnQgaWdub3JlOiBzdGFydFxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF9mcyBmcm9tICdmcyc7XG5pbXBvcnQgcmltcmFmIGZyb20gJ3JpbXJhZic7XG5pbXBvcnQgbmNwIGZyb20gJ25jcCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgbXYgZnJvbSAnbXYnO1xuaW1wb3J0IHdoaWNoIGZyb20gJ3doaWNoJztcbmltcG9ydCBnbG9iIGZyb20gJ2dsb2InO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IGtsYXcgZnJvbSAna2xhdyc7XG5pbXBvcnQgc2FuaXRpemUgZnJvbSAnc2FuaXRpemUtZmlsZW5hbWUnO1xuaW1wb3J0IGZpbmRSb290IGZyb20gJ2ZpbmQtcm9vdCc7XG5pbXBvcnQgeyBwbHVyYWxpemUgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgVGltZXIgZnJvbSAnLi90aW1pbmcnO1xuXG5jb25zdCBta2RpckFzeW5jID0gQi5wcm9taXNpZnkoX2ZzLm1rZGlyKTtcbmNvbnN0IG5jcEFzeW5jID0gQi5wcm9taXNpZnkobmNwKTtcbmNvbnN0IGZpbmRSb290Q2FjaGVkID0gXy5tZW1vaXplKGZpbmRSb290KTtcblxuY29uc3QgZnMgPSB7XG4gIGFzeW5jIGhhc0FjY2VzcyAocGF0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmFjY2VzcyhwYXRoLCBfZnMuUl9PSyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBleGlzdHMgKHBhdGgpIHsgcmV0dXJuIHRoaXMuaGFzQWNjZXNzKHBhdGgpOyB9LFxuICByaW1yYWY6IEIucHJvbWlzaWZ5KHJpbXJhZiksXG4gIHJpbXJhZlN5bmM6IHJpbXJhZi5zeW5jLmJpbmQocmltcmFmKSxcbiAgYXN5bmMgbWtkaXIgKC4uLmFyZ3MpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IG1rZGlyQXN5bmMoLi4uYXJncyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyICYmIGVyci5jb2RlICE9PSAnRUVYSVNUJykge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBhc3luYyBjb3B5RmlsZSAoc291cmNlLCBkZXN0aW5hdGlvbiwgLi4ub3RoZXJBcmdzKSB7XG4gICAgaWYgKCFhd2FpdCB0aGlzLmhhc0FjY2Vzcyhzb3VyY2UpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmaWxlIGF0ICcke3NvdXJjZX0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBuY3BBc3luYyhzb3VyY2UsIGRlc3RpbmF0aW9uLCAuLi5vdGhlckFyZ3MpO1xuICB9LFxuICBhc3luYyBtZDUgKGZpbGVQYXRoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFzaChmaWxlUGF0aCwgJ21kNScpO1xuICB9LFxuICBtdjogQi5wcm9taXNpZnkobXYpLFxuICB3aGljaDogQi5wcm9taXNpZnkod2hpY2gpLFxuICBnbG9iOiBCLnByb21pc2lmeShnbG9iKSxcbiAgc2FuaXRpemVOYW1lOiBzYW5pdGl6ZSxcbiAgYXN5bmMgaGFzaCAoZmlsZVBhdGgsIGFsZ29yaXRobSA9ICdzaGExJykge1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBmaWxlSGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKGFsZ29yaXRobSk7XG4gICAgICBjb25zdCByZWFkU3RyZWFtID0gX2ZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZVBhdGgpO1xuICAgICAgcmVhZFN0cmVhbS5vbignZXJyb3InLCAoZSkgPT4gcmVqZWN0KFxuICAgICAgICBuZXcgRXJyb3IoYENhbm5vdCBjYWxjdWxhdGUgJHthbGdvcml0aG19IGhhc2ggZm9yICcke2ZpbGVQYXRofScuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKSkpO1xuICAgICAgcmVhZFN0cmVhbS5vbignZGF0YScsIChjaHVuaykgPT4gZmlsZUhhc2gudXBkYXRlKGNodW5rKSk7XG4gICAgICByZWFkU3RyZWFtLm9uKCdlbmQnLCAoKSA9PiByZXNvbHZlKGZpbGVIYXNoLmRpZ2VzdCgnaGV4JykpKTtcbiAgICB9KTtcbiAgfSxcbiAgLyoqIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCBkdXJpbmcgdGhlIGRpcmVjdG9yeSB3YWxraW5nXG4gICAqIEBuYW1lIFdhbGtEaXJDYWxsYmFja1xuICAgKiBAZnVuY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IGl0ZW1QYXRoIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRGlyZWN0b3J5IFNob3dzIGlmIGl0IGlzIGEgZGlyZWN0b3J5IG9yIGEgZmlsZVxuICAgKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm4gdHJ1ZSBpZiB5b3Ugd2FudCB0byBzdG9wIHdhbGtpbmdcbiAgKi9cblxuICAvKipcbiAgICogV2Fsa3MgYSBkaXJlY3RvcnkgZ2l2ZW4gYWNjb3JkaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIGdpdmVuLiBUaGUgY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBwYXRoIGpvaW5lZCB3aXRoIHRoZSBkaXIgcGFyYW1ldGVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgRGlyZWN0b3J5IHBhdGggd2hlcmUgd2Ugd2lsbCBzdGFydCB3YWxraW5nXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVjdXJzaXZlIFNldCBpdCB0byB0cnVlIGlmIHlvdSB3YW50IHRvIGNvbnRpbnVlIHdhbGtpbmcgc3ViIGRpcmVjdG9yaWVzXG4gICAqIEBwYXJhbSB7V2Fsa0RpckNhbGxiYWNrfSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gYSBuZXcgcGF0aCBpcyBmb3VuZFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGBkaXJgIHBhcmFtZXRlciBjb250YWlucyBhIHBhdGggdG8gYW4gaW52YWxpZCBmb2xkZXJcbiAgICogQHJldHVybiB7P3N0cmluZ30gcmV0dXJucyB0aGUgZm91bmQgcGF0aCBvciBudWxsIGlmIHRoZSBpdGVtIHdhcyBub3QgZm91bmRcbiAgICovXG4gIGFzeW5jIHdhbGtEaXIgKGRpciwgcmVjdXJzaXZlLCBjYWxsYmFjaykgeyAvL2VzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgbGV0IGlzVmFsaWRSb290ID0gZmFsc2U7XG4gICAgbGV0IGVyck1zZyA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGlzVmFsaWRSb290ID0gKGF3YWl0IGZzLnN0YXQoZGlyKSkuaXNEaXJlY3RvcnkoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJNc2cgPSBlLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICghaXNWYWxpZFJvb3QpIHtcbiAgICAgIHRocm93IEVycm9yKGAnJHtkaXJ9JyBpcyBub3QgYSB2YWxpZCByb290IGRpcmVjdG9yeWAgKyAoZXJyTXNnID8gYC4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyTXNnfWAgOiAnJykpO1xuICAgIH1cblxuICAgIGxldCB3YWxrZXI7XG4gICAgbGV0IGZpbGVDb3VudCA9IDA7XG4gICAgbGV0IGRpcmVjdG9yeUNvdW50ID0gMDtcbiAgICBjb25zdCB0aW1lciA9IG5ldyBUaW1lcigpLnN0YXJ0KCk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxldCBsYXN0RmlsZVByb2Nlc3NlZCA9IEIucmVzb2x2ZSgpO1xuICAgICAgd2Fsa2VyID0ga2xhdyhkaXIsIHtcbiAgICAgICAgZGVwdGhMaW1pdDogcmVjdXJzaXZlID8gLTEgOiAwLFxuICAgICAgfSk7XG4gICAgICB3YWxrZXIub24oJ2RhdGEnLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICB3YWxrZXIucGF1c2UoKTtcblxuICAgICAgICBpZiAoIWl0ZW0uc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIGZpbGVDb3VudCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpcmVjdG9yeUNvdW50Kys7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgICAgIGxhc3RGaWxlUHJvY2Vzc2VkID0gQi50cnkoYXN5bmMgKCkgPT4gYXdhaXQgY2FsbGJhY2soaXRlbS5wYXRoLCBpdGVtLnN0YXRzLmlzRGlyZWN0b3J5KCkpKVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChkb25lID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoaXRlbS5wYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHdhbGtlci5yZXN1bWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgICAgfSlcbiAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyLCBpdGVtKSB7XG4gICAgICAgIGxvZy53YXJuKGBHb3QgYW4gZXJyb3Igd2hpbGUgd2Fsa2luZyAnJHtpdGVtLnBhdGh9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgLy8ga2xhdyBjYW5ub3QgZ2V0IGJhY2sgZnJvbSBhbiBFTk9FTlQgZXJyb3JcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICAgIGxvZy53YXJuKCdBbGwgZmlsZXMgbWF5IG5vdCBoYXZlIGJlZW4gYWNjZXNzZWQnKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBsYXN0RmlsZVByb2Nlc3NlZFxuICAgICAgICAgIC50aGVuKHJlc29sdmUpXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgIGxvZy53YXJuKGBVbmV4cGVjdGVkIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KS5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgVHJhdmVyc2VkICR7cGx1cmFsaXplKCdkaXJlY3RvcnknLCBkaXJlY3RvcnlDb3VudCwgdHJ1ZSl9IGAgK1xuICAgICAgICBgYW5kICR7cGx1cmFsaXplKCdmaWxlJywgZmlsZUNvdW50LCB0cnVlKX0gYCArXG4gICAgICAgIGBpbiAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgICAgaWYgKHdhbGtlcikge1xuICAgICAgICB3YWxrZXIuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICAvKipcbiAgICogUmVhZHMgdGhlIGNsb3Nlc3QgYHBhY2thZ2UuanNvbmAgZmlsZSBmcm9tIGFic29sdXRlIHBhdGggYGRpcmAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgLSBEaXJlY3RvcnkgdG8gc2VhcmNoIGZyb21cbiAgICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgZGlyYCBpcyBub3QgYSBub25lbXB0eSBzdHJpbmcgb3IgcmVsYXRpdmUgcGF0aFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2VyZSBwcm9ibGVtcyBmaW5kaW5nIG9yIHJlYWRpbmcgYSBgcGFja2FnZS5qc29uYCBmaWxlXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IEEgcGFyc2VkIGBwYWNrYWdlLmpzb25gXG4gICAqL1xuICByZWFkUGFja2FnZUpzb25Gcm9tIChkaXIpIHtcbiAgICBjb25zdCByb290ID0gZnMuZmluZFJvb3QoZGlyKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoX2ZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocm9vdCwgJ3BhY2thZ2UuanNvbicpLCAndXRmOCcpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVyci5tZXNzYWdlID0gYEZhaWxlZCB0byByZWFkIGEgXFxgcGFja2FnZS5qc29uXFxgIGZyb20gZGlyIFxcYCR7ZGlyfVxcYDpcXG5cXG4ke2Vyci5tZXNzYWdlfWA7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9LFxuICAvKipcbiAgICogRmluZHMgdGhlIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgZnJvbSBgZGlyYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciAtIERpcmVjdG9yeSB0byBzZWFyY2ggZnJvbVxuICAgKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBkaXJgIGlzIG5vdCBhIG5vbmVtcHR5IHN0cmluZyBvciByZWxhdGl2ZSBwYXRoXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zIGZpbmRpbmcgdGhlIHByb2plY3Qgcm9vdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2xvc2VzZXQgcGFyZW50IGRpciBjb250YWluaW5nIGBwYWNrYWdlLmpzb25gXG4gICAqL1xuICBmaW5kUm9vdCAoZGlyKSB7XG4gICAgaWYgKCFkaXIgfHwgIXBhdGguaXNBYnNvbHV0ZShkaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgZmluZFJvb3QoKWAgbXVzdCBiZSBwcm92aWRlZCBhIG5vbi1lbXB0eSwgYWJzb2x1dGUgcGF0aCcpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBmaW5kUm9vdENhY2hlZChkaXIpO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxcYGZpbmRSb290KClcXGAgY291bGQgbm90IGZpbmQgXFxgcGFja2FnZS5qc29uXFxgIGZyb20gJHtkaXJ9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5cbi8vIGFkZCB0aGUgc3VwcG9ydGVkIGBmc2AgZnVuY3Rpb25zXG5jb25zdCBzaW1wbGVzID0gW1xuICAnb3BlbicsICdjbG9zZScsICdhY2Nlc3MnLCAncmVhZEZpbGUnLCAnd3JpdGVGaWxlJywgJ3dyaXRlJywgJ3JlYWQnLFxuICAncmVhZGxpbmsnLCAnY2htb2QnLCAndW5saW5rJywgJ3JlYWRkaXInLCAnc3RhdCcsICdyZW5hbWUnLCAnbHN0YXQnLFxuICAnYXBwZW5kRmlsZScsICdyZWFscGF0aCcsICdzeW1saW5rJyxcbl07XG5mb3IgKGNvbnN0IHMgb2Ygc2ltcGxlcykge1xuICBmc1tzXSA9IEIucHJvbWlzaWZ5KF9mc1tzXSk7XG59XG5cbmNvbnN0IHN5bmNGdW5jdGlvbnMgPSBbXG4gICdjcmVhdGVSZWFkU3RyZWFtJyxcbiAgJ2NyZWF0ZVdyaXRlU3RyZWFtJyxcbl07XG5mb3IgKGNvbnN0IHMgb2Ygc3luY0Z1bmN0aW9ucykge1xuICBmc1tzXSA9IF9mc1tzXTtcbn1cblxuLy8gYWRkIHRoZSBjb25zdGFudHMgZnJvbSBgZnNgXG5jb25zdCBjb25zdGFudHMgPSBbXG4gICdGX09LJywgJ1JfT0snLCAnV19PSycsICdYX09LJywgJ2NvbnN0YW50cycsXG5dO1xuZm9yIChjb25zdCBjIG9mIGNvbnN0YW50cykge1xuICBmc1tjXSA9IF9mc1tjXTtcbn1cblxuZXhwb3J0IHsgZnMgfTtcbmV4cG9ydCBkZWZhdWx0IGZzO1xuIl0sImZpbGUiOiJsaWIvZnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
|
237
|
+
exports.default = _default;
|
|
238
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9mcy5qcyJdLCJuYW1lcyI6WyJuY3BBc3luYyIsIkIiLCJwcm9taXNpZnkiLCJuY3AiLCJmaW5kUm9vdENhY2hlZCIsIl8iLCJtZW1vaXplIiwicGtnRGlyIiwic3luYyIsImZzIiwiaGFzQWNjZXNzIiwicGF0aCIsImZzUHJvbWlzZXMiLCJhY2Nlc3MiLCJjb25zdGFudHMiLCJSX09LIiwiZXJyIiwiZXhpc3RzIiwicmltcmFmIiwicmltcmFmU3luYyIsIm1rZGlyIiwiZmlsZXBhdGgiLCJvcHRzIiwiY29kZSIsImNvcHlGaWxlIiwic291cmNlIiwiZGVzdGluYXRpb24iLCJFcnJvciIsIm1kNSIsImZpbGVQYXRoIiwiaGFzaCIsIm12Iiwid2hpY2giLCJnbG9iIiwic2FuaXRpemVOYW1lIiwic2FuaXRpemUiLCJhbGdvcml0aG0iLCJyZXNvbHZlIiwicmVqZWN0IiwiZmlsZUhhc2giLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwicmVhZFN0cmVhbSIsIm9uIiwiZSIsIm1lc3NhZ2UiLCJjaHVuayIsInVwZGF0ZSIsImRpZ2VzdCIsIndhbGsiLCJkaXIiLCJta2RpcnAiLCJyZWN1cnNpdmUiLCJ3YWxrRGlyIiwiY2FsbGJhY2siLCJpc1ZhbGlkUm9vdCIsImVyck1zZyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsIndhbGtlciIsImZpbGVDb3VudCIsImRpcmVjdG9yeUNvdW50IiwidGltZXIiLCJUaW1lciIsInN0YXJ0IiwibGFzdEZpbGVQcm9jZXNzZWQiLCJkZXB0aExpbWl0IiwiaXRlbSIsInBhdXNlIiwic3RhdHMiLCJ0cnkiLCJ0aGVuIiwiZG9uZSIsInJlc3VtZSIsImNhdGNoIiwibG9nIiwid2FybiIsImZpbGUiLCJmaW5hbGx5IiwiZGVidWciLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImRlc3Ryb3kiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiY3dkIiwiZmluZFJvb3QiLCJyZWFkUGtnIiwiaXNBYnNvbHV0ZSIsIlR5cGVFcnJvciIsInJlc3VsdCIsImFwcGVuZEZpbGUiLCJjaG1vZCIsImNsb3NlIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJjcmVhdGVSZWFkU3RyZWFtIiwibHN0YXQiLCJvcGVuIiwib3BlbkZpbGUiLCJyZWFkZGlyIiwicmVhZCIsInJlYWRGaWxlIiwicmVhZGxpbmsiLCJyZWFscGF0aCIsInJlbmFtZSIsInN5bWxpbmsiLCJ1bmxpbmsiLCJ3cml0ZSIsIndyaXRlRmlsZSIsIkZfT0siLCJXX09LIiwiWF9PSyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQXlGQyxrQkFBRUMsU0FBRixDQUFZQyxZQUFaLENBQXZHOztBQUNBLE1BQU1DLGNBQWMsR0FBR0MsZ0JBQUVDLE9BQUYsQ0FBVUMsZ0JBQU9DLElBQWpCLENBQXZCOztBQUVBLE1BQU1DLEVBQUUsR0FBRztBQU1ULFFBQU1DLFNBQU4sQ0FBaUJDLElBQWpCLEVBQXVCO0FBQ3JCLFFBQUk7QUFDRixZQUFNQyxhQUFXQyxNQUFYLENBQWtCRixJQUFsQixFQUF3QkcsY0FBVUMsSUFBbEMsQ0FBTjtBQUNELEtBRkQsQ0FFRSxPQUFPQyxHQUFQLEVBQVk7QUFDWixhQUFPLEtBQVA7QUFDRDs7QUFDRCxXQUFPLElBQVA7QUFDRCxHQWJROztBQW1CVCxRQUFNQyxNQUFOLENBQWNOLElBQWQsRUFBb0I7QUFDbEIsV0FBTyxNQUFNRixFQUFFLENBQUNDLFNBQUgsQ0FBYUMsSUFBYixDQUFiO0FBQ0QsR0FyQlE7O0FBMkJUTyxFQUFBQSxNQUFNLEVBQTJFakIsa0JBQUVDLFNBQUYsQ0FBWWdCLGVBQVosQ0EzQnhFO0FBaUNUQyxFQUFBQSxVQUFVLEVBQUVELGdCQUFPVixJQWpDVjs7QUEyQ1QsUUFBTVksS0FBTixDQUFhQyxRQUFiLEVBQXVCQyxJQUFJLEdBQUcsRUFBOUIsRUFBa0M7QUFDaEMsUUFBSTtBQUNGLGFBQU8sTUFBTVYsYUFBV1EsS0FBWCxDQUFpQkMsUUFBakIsRUFBMkJDLElBQTNCLENBQWI7QUFDRCxLQUZELENBRUUsT0FBT04sR0FBUCxFQUFZO0FBQ1osVUFBSSxDQUFBQSxHQUFHLFNBQUgsSUFBQUEsR0FBRyxXQUFILFlBQUFBLEdBQUcsQ0FBRU8sSUFBTCxNQUFjLFFBQWxCLEVBQTRCO0FBQzFCLGNBQU1QLEdBQU47QUFDRDtBQUNGO0FBQ0YsR0FuRFE7O0FBNERULFFBQU1RLFFBQU4sQ0FBZ0JDLE1BQWhCLEVBQXdCQyxXQUF4QixFQUFxQ0osSUFBSSxHQUFHLEVBQTVDLEVBQWdEO0FBQzlDLFFBQUksRUFBQyxNQUFNYixFQUFFLENBQUNDLFNBQUgsQ0FBYWUsTUFBYixDQUFQLENBQUosRUFBaUM7QUFDL0IsWUFBTSxJQUFJRSxLQUFKLENBQVcsZ0JBQWVGLE1BQU8sdUNBQWpDLENBQU47QUFDRDs7QUFDRCxXQUFPLE1BQU16QixRQUFRLENBQUN5QixNQUFELEVBQVNDLFdBQVQsRUFBc0JKLElBQXRCLENBQXJCO0FBQ0QsR0FqRVE7O0FBd0VULFFBQU1NLEdBQU4sQ0FBV0MsUUFBWCxFQUFxQjtBQUNuQixXQUFPLE1BQU1wQixFQUFFLENBQUNxQixJQUFILENBQVFELFFBQVIsRUFBa0IsS0FBbEIsQ0FBYjtBQUNELEdBMUVROztBQStFVEUsRUFBQUEsRUFBRSxFQUEwRTlCLGtCQUFFQyxTQUFGLENBQVk2QixXQUFaLENBL0VuRTtBQXFGVEMsRUFBQUEsS0FBSyxFQUFMQSxjQXJGUztBQTJGVEMsRUFBQUEsSUFBSSxFQUF3RWhDLGtCQUFFQyxTQUFGLENBQVkrQixhQUFaLENBM0ZuRTtBQWlHVEMsRUFBQUEsWUFBWSxFQUFFQyx5QkFqR0w7O0FBeUdULFFBQU1MLElBQU4sQ0FBWUQsUUFBWixFQUFzQk8sU0FBUyxHQUFHLE1BQWxDLEVBQTBDO0FBQ3hDLFdBQU8sTUFBTSxJQUFJbkMsaUJBQUosQ0FBTSxDQUFDb0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDLFlBQU1DLFFBQVEsR0FBR0MsZ0JBQU9DLFVBQVAsQ0FBa0JMLFNBQWxCLENBQWpCOztBQUNBLFlBQU1NLFVBQVUsR0FBRywwQkFBaUJiLFFBQWpCLENBQW5CO0FBQ0FhLE1BQUFBLFVBQVUsQ0FBQ0MsRUFBWCxDQUFjLE9BQWQsRUFBd0JDLENBQUQsSUFBT04sTUFBTSxDQUNsQyxJQUFJWCxLQUFKLENBQVcsb0JBQW1CUyxTQUFVLGNBQWFQLFFBQVMsc0JBQXFCZSxDQUFDLENBQUNDLE9BQVEsRUFBN0YsQ0FEa0MsQ0FBcEM7QUFFQUgsTUFBQUEsVUFBVSxDQUFDQyxFQUFYLENBQWMsTUFBZCxFQUF1QkcsS0FBRCxJQUFXUCxRQUFRLENBQUNRLE1BQVQsQ0FBZ0JELEtBQWhCLENBQWpDO0FBQ0FKLE1BQUFBLFVBQVUsQ0FBQ0MsRUFBWCxDQUFjLEtBQWQsRUFBcUIsTUFBTU4sT0FBTyxDQUFDRSxRQUFRLENBQUNTLE1BQVQsQ0FBZ0IsS0FBaEIsQ0FBRCxDQUFsQztBQUNELEtBUFksQ0FBYjtBQVFELEdBbEhROztBQTRIVEMsRUFBQUEsSUFBSSxDQUFFQyxHQUFGLEVBQU81QixJQUFQLEVBQWE7QUFDZixXQUFPLG1CQUFLNEIsR0FBTCxFQUFVNUIsSUFBVixDQUFQO0FBQ0QsR0E5SFE7O0FBcUlULFFBQU02QixNQUFOLENBQWNELEdBQWQsRUFBbUI7QUFDakIsV0FBTyxNQUFNekMsRUFBRSxDQUFDVyxLQUFILENBQVM4QixHQUFULEVBQWM7QUFBQ0UsTUFBQUEsU0FBUyxFQUFFO0FBQVosS0FBZCxDQUFiO0FBQ0QsR0F2SVE7O0FBaUpULFFBQU1DLE9BQU4sQ0FBZUgsR0FBZixFQUFvQkUsU0FBcEIsRUFBK0JFLFFBQS9CLEVBQXlDO0FBQ3ZDLFFBQUlDLFdBQVcsR0FBRyxLQUFsQjtBQUNBLFFBQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFFBQUk7QUFDRkQsTUFBQUEsV0FBVyxHQUFHLENBQUMsTUFBTTlDLEVBQUUsQ0FBQ2dELElBQUgsQ0FBUVAsR0FBUixDQUFQLEVBQXFCUSxXQUFyQixFQUFkO0FBQ0QsS0FGRCxDQUVFLE9BQU9kLENBQVAsRUFBVTtBQUNWWSxNQUFBQSxNQUFNLEdBQUdaLENBQUMsQ0FBQ0MsT0FBWDtBQUNEOztBQUNELFFBQUksQ0FBQ1UsV0FBTCxFQUFrQjtBQUNoQixZQUFNNUIsS0FBSyxDQUFFLElBQUd1QixHQUFJLGlDQUFSLElBQTRDTSxNQUFNLEdBQUkscUJBQW9CQSxNQUFPLEVBQS9CLEdBQW1DLEVBQXJGLENBQUQsQ0FBWDtBQUNEOztBQUVELFFBQUlHLE1BQUo7QUFDQSxRQUFJQyxTQUFTLEdBQUcsQ0FBaEI7QUFDQSxRQUFJQyxjQUFjLEdBQUcsQ0FBckI7QUFDQSxVQUFNQyxLQUFLLEdBQUcsSUFBSUMsZUFBSixHQUFZQyxLQUFaLEVBQWQ7QUFDQSxXQUFPLE1BQU0sSUFBSS9ELGlCQUFKLENBQU0sVUFBVW9DLE9BQVYsRUFBbUJDLE1BQW5CLEVBQTJCO0FBQzVDLFVBQUkyQixpQkFBaUIsR0FBR2hFLGtCQUFFb0MsT0FBRixFQUF4Qjs7QUFDQXNCLE1BQUFBLE1BQU0sR0FBRyxtQkFBS1QsR0FBTCxFQUFVO0FBQ2pCZ0IsUUFBQUEsVUFBVSxFQUFFZCxTQUFTLEdBQUcsQ0FBQyxDQUFKLEdBQVE7QUFEWixPQUFWLENBQVQ7QUFHQU8sTUFBQUEsTUFBTSxDQUFDaEIsRUFBUCxDQUFVLE1BQVYsRUFBa0IsVUFBVXdCLElBQVYsRUFBZ0I7QUFDaENSLFFBQUFBLE1BQU0sQ0FBQ1MsS0FBUDs7QUFFQSxZQUFJLENBQUNELElBQUksQ0FBQ0UsS0FBTCxDQUFXWCxXQUFYLEVBQUwsRUFBK0I7QUFDN0JFLFVBQUFBLFNBQVM7QUFDVixTQUZELE1BRU87QUFDTEMsVUFBQUEsY0FBYztBQUNmOztBQUdESSxRQUFBQSxpQkFBaUIsR0FBR2hFLGtCQUFFcUUsR0FBRixDQUFNLFlBQVksTUFBTWhCLFFBQVEsQ0FBQ2EsSUFBSSxDQUFDeEQsSUFBTixFQUFZd0QsSUFBSSxDQUFDRSxLQUFMLENBQVdYLFdBQVgsRUFBWixDQUFoQyxFQUNqQmEsSUFEaUIsQ0FDWixVQUFVQyxJQUFJLEdBQUcsS0FBakIsRUFBd0I7QUFDNUIsY0FBSUEsSUFBSixFQUFVO0FBQ1JuQyxZQUFBQSxPQUFPLENBQUM4QixJQUFJLENBQUN4RCxJQUFOLENBQVA7QUFDRCxXQUZELE1BRU87QUFDTGdELFlBQUFBLE1BQU0sQ0FBQ2MsTUFBUDtBQUNEO0FBQ0YsU0FQaUIsRUFRakJDLEtBUmlCLENBUVhwQyxNQVJXLENBQXBCO0FBU0QsT0FuQkQsRUFvQkNLLEVBcEJELENBb0JJLE9BcEJKLEVBb0JhLFVBQVUzQixHQUFWLEVBQWVtRCxJQUFmLEVBQXFCO0FBQ2hDUSx3QkFBSUMsSUFBSixDQUFVLCtCQUE4QlQsSUFBSSxDQUFDeEQsSUFBSyxNQUFLSyxHQUFHLENBQUM2QixPQUFRLEVBQW5FOztBQUVBLFlBQUk3QixHQUFHLENBQUNPLElBQUosS0FBYSxRQUFqQixFQUEyQjtBQUN6Qm9ELDBCQUFJQyxJQUFKLENBQVMsc0NBQVQ7O0FBQ0F0QyxVQUFBQSxNQUFNLENBQUN0QixHQUFELENBQU47QUFDRDtBQUNGLE9BM0JELEVBNEJDMkIsRUE1QkQsQ0E0QkksS0E1QkosRUE0QlcsWUFBWTtBQUNyQnNCLFFBQUFBLGlCQUFpQixDQUNkTSxJQURILENBQ1NNLElBQUQsSUFBVTtBQUNkeEMsVUFBQUEsT0FBTyxDQUFpQ3dDLElBQWpDLGFBQWlDQSxJQUFqQyxjQUFpQ0EsSUFBakMsR0FBMEMsSUFBMUMsQ0FBUDtBQUNELFNBSEgsRUFJR0gsS0FKSCxDQUlTLFVBQVUxRCxHQUFWLEVBQWU7QUFDcEIyRCwwQkFBSUMsSUFBSixDQUFVLHFCQUFvQjVELEdBQUcsQ0FBQzZCLE9BQVEsRUFBMUM7O0FBQ0FQLFVBQUFBLE1BQU0sQ0FBQ3RCLEdBQUQsQ0FBTjtBQUNELFNBUEg7QUFRRCxPQXJDRDtBQXNDRCxLQTNDWSxFQTJDVjhELE9BM0NVLENBMkNGLFlBQVk7QUFDckJILHNCQUFJSSxLQUFKLENBQVcsYUFBWSxxQkFBVSxXQUFWLEVBQXVCbEIsY0FBdkIsRUFBdUMsSUFBdkMsQ0FBNkMsR0FBMUQsR0FDUCxPQUFNLHFCQUFVLE1BQVYsRUFBa0JELFNBQWxCLEVBQTZCLElBQTdCLENBQW1DLEdBRGxDLEdBRVAsTUFBS0UsS0FBSyxDQUFDa0IsV0FBTixHQUFvQkMsY0FBcEIsQ0FBbUNDLE9BQW5DLENBQTJDLENBQTNDLENBQThDLElBRnREOztBQUdBLFVBQUl2QixNQUFKLEVBQVk7QUFDVkEsUUFBQUEsTUFBTSxDQUFDd0IsT0FBUDtBQUNEO0FBQ0YsS0FsRFksQ0FBYjtBQW1ERCxHQXBOUTs7QUE0TlRDLEVBQUFBLG1CQUFtQixDQUFFbEMsR0FBRixFQUFPNUIsSUFBSSxHQUFHLEVBQWQsRUFBa0I7QUFDbkMsVUFBTStELEdBQUcsR0FBRzVFLEVBQUUsQ0FBQzZFLFFBQUgsQ0FBWXBDLEdBQVosQ0FBWjs7QUFDQSxRQUFJO0FBQ0YsYUFBT3FDLGlCQUFRL0UsSUFBUixDQUFhLEVBQUMsR0FBR2MsSUFBSjtBQUFVK0QsUUFBQUE7QUFBVixPQUFiLENBQVA7QUFDRCxLQUZELENBRUUsT0FBT3JFLEdBQVAsRUFBWTtBQUNaQSxNQUFBQSxHQUFHLENBQUM2QixPQUFKLEdBQWUsZ0RBQStDSyxHQUFJLFVBQVNsQyxHQUFHLENBQUM2QixPQUFRLEVBQXZGO0FBQ0EsWUFBTTdCLEdBQU47QUFDRDtBQUNGLEdBcE9ROztBQTRPVHNFLEVBQUFBLFFBQVEsQ0FBRXBDLEdBQUYsRUFBTztBQUNiLFFBQUksQ0FBQ0EsR0FBRCxJQUFRLENBQUN2QyxjQUFLNkUsVUFBTCxDQUFnQnRDLEdBQWhCLENBQWIsRUFBbUM7QUFDakMsWUFBTSxJQUFJdUMsU0FBSixDQUFjLDBEQUFkLENBQU47QUFDRDs7QUFDRCxVQUFNQyxNQUFNLEdBQUd0RixjQUFjLENBQUM4QyxHQUFELENBQTdCOztBQUNBLFFBQUksQ0FBQ3dDLE1BQUwsRUFBYTtBQUNYLFlBQU0sSUFBSS9ELEtBQUosQ0FBVyx1REFBc0R1QixHQUFJLEVBQXJFLENBQU47QUFDRDs7QUFDRCxXQUFPd0MsTUFBUDtBQUNELEdBclBROztBQXdQVDdFLEVBQUFBLE1BQU0sRUFBRUQsYUFBV0MsTUF4UFY7QUF5UFQ4RSxFQUFBQSxVQUFVLEVBQUUvRSxhQUFXK0UsVUF6UGQ7QUEwUFRDLEVBQUFBLEtBQUssRUFBRWhGLGFBQVdnRixLQTFQVDtBQTJQVEMsRUFBQUEsS0FBSyxFQUFFNUYsa0JBQUVDLFNBQUYsQ0FBWTJGLFNBQVosQ0EzUEU7QUE0UFQvRSxFQUFBQSxTQUFTLEVBQVRBLGFBNVBTO0FBNlBUZ0YsRUFBQUEsaUJBQWlCLEVBQWpCQSxxQkE3UFM7QUE4UFRDLEVBQUFBLGdCQUFnQixFQUFoQkEsb0JBOVBTO0FBK1BUQyxFQUFBQSxLQUFLLEVBQUVwRixhQUFXb0YsS0EvUFQ7QUFvUVRDLEVBQUFBLElBQUksRUFBRWhHLGtCQUFFQyxTQUFGLENBQVkrRixRQUFaLENBcFFHO0FBcVFUQyxFQUFBQSxRQUFRLEVBQUV0RixhQUFXcUYsSUFyUVo7QUFzUVRFLEVBQUFBLE9BQU8sRUFBRXZGLGFBQVd1RixPQXRRWDtBQXVRVEMsRUFBQUEsSUFBSSxFQUFFbkcsa0JBQUVDLFNBQUYsQ0FBWWtHLFFBQVosQ0F2UUc7QUF3UVRDLEVBQUFBLFFBQVEsRUFBRXpGLGFBQVd5RixRQXhRWjtBQXlRVEMsRUFBQUEsUUFBUSxFQUFFMUYsYUFBVzBGLFFBelFaO0FBMFFUQyxFQUFBQSxRQUFRLEVBQUUzRixhQUFXMkYsUUExUVo7QUEyUVRDLEVBQUFBLE1BQU0sRUFBRTVGLGFBQVc0RixNQTNRVjtBQTRRVC9DLEVBQUFBLElBQUksRUFBRTdDLGFBQVc2QyxJQTVRUjtBQTZRVGdELEVBQUFBLE9BQU8sRUFBRTdGLGFBQVc2RixPQTdRWDtBQThRVEMsRUFBQUEsTUFBTSxFQUFFOUYsYUFBVzhGLE1BOVFWO0FBK1FUQyxFQUFBQSxLQUFLLEVBQUUxRyxrQkFBRUMsU0FBRixDQUFZeUcsU0FBWixDQS9RRTtBQWdSVEMsRUFBQUEsU0FBUyxFQUFFaEcsYUFBV2dHLFNBaFJiO0FBd1JUQyxFQUFBQSxJQUFJLEVBQUUvRixjQUFVK0YsSUF4UlA7QUE4UlQ5RixFQUFBQSxJQUFJLEVBQUVELGNBQVVDLElBOVJQO0FBb1NUK0YsRUFBQUEsSUFBSSxFQUFFaEcsY0FBVWdHLElBcFNQO0FBMFNUQyxFQUFBQSxJQUFJLEVBQUVqRyxjQUFVaUc7QUExU1AsQ0FBWDs7ZUE4U2V0RyxFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGNsb3NlLCBjb25zdGFudHMsIGNyZWF0ZVJlYWRTdHJlYW0sIGNyZWF0ZVdyaXRlU3RyZWFtLCBwcm9taXNlcyBhcyBmc1Byb21pc2VzLCByZWFkLCB3cml0ZSwgb3BlbiB9IGZyb20gJ2ZzJztcbmltcG9ydCBnbG9iIGZyb20gJ2dsb2InO1xuaW1wb3J0IGtsYXcgZnJvbSAna2xhdyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG12IGZyb20gJ212JztcbmltcG9ydCBuY3AgZnJvbSAnbmNwJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHBrZ0RpciBmcm9tICdwa2ctZGlyJztcbmltcG9ydCByZWFkUGtnIGZyb20gJ3JlYWQtcGtnJztcbmltcG9ydCByaW1yYWYgZnJvbSAncmltcmFmJztcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSc7XG5pbXBvcnQgd2hpY2ggZnJvbSAnd2hpY2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgVGltZXIgZnJvbSAnLi90aW1pbmcnO1xuaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgbmNwQXN5bmMgPSAvKiogQHR5cGUgeyhzb3VyY2U6IHN0cmluZywgZGVzdDogc3RyaW5nLCBvcHRzOiBuY3AuT3B0aW9uc3x1bmRlZmluZWQpID0+IEI8dm9pZD59ICovKEIucHJvbWlzaWZ5KG5jcCkpO1xuY29uc3QgZmluZFJvb3RDYWNoZWQgPSBfLm1lbW9pemUocGtnRGlyLnN5bmMpO1xuXG5jb25zdCBmcyA9IHtcbiAgLyoqXG4gICAqIFJlc29sdmVzIGB0cnVlYCBpZiBgcGF0aGAgaXMgX3JlYWRhYmxlXywgd2hpY2ggZGlmZmVycyBmcm9tIE5vZGUuanMnIGRlZmF1bHQgYmVoYXZpb3Igb2YgXCJjYW4gd2Ugc2VlIGl0P1wiXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdmcycpLlBhdGhMaWtlfSBwYXRoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgaGFzQWNjZXNzIChwYXRoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzUHJvbWlzZXMuYWNjZXNzKHBhdGgsIGNvbnN0YW50cy5SX09LKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciB7QGxpbmtjb2RlIGZzLmhhc0FjY2Vzc31cbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuUGF0aExpa2V9IHBhdGhcbiAgICovXG4gIGFzeW5jIGV4aXN0cyAocGF0aCkge1xuICAgIHJldHVybiBhd2FpdCBmcy5oYXNBY2Nlc3MocGF0aCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGRpcmVjdG9yeSBhbmQgYWxsIGl0cyBjb250ZW50cywgcmVjdXJzaXZlbHlcbiAgICogQHRvZG8gUmVwbGFjZSB3aXRoIGBybSgpYCBmcm9tIGBmcy5wcm9taXNlc2Agd2hlbiBOb2RlLmpzIHYxMiBzdXBwb3J0IGlzIGRyb3BwZWQuXG4gICAqL1xuICByaW1yYWY6IC8qKiBAdHlwZSB7KGRpcnBhdGg6IHN0cmluZywgb3B0cz86IHJpbXJhZi5PcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+fSAqLyhCLnByb21pc2lmeShyaW1yYWYpKSxcblxuICAvKipcbiAgICogQWxpYXMgb2Yge0BsaW5rY29kZSByaW1yYWYuc3luY31cbiAgICogQHRvZG8gUmVwbGFjZSB3aXRoIGBybVN5bmMoKWAgZnJvbSBgZnNgIHdoZW4gTm9kZS5qcyB2MTIgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgKi9cbiAgcmltcmFmU3luYzogcmltcmFmLnN5bmMsXG5cbiAgLyoqXG4gICAqIExpa2UgTm9kZS5qcycgYGZzUHJvbWlzZXMubWtkaXIoKWAsIGJ1dCB3aWxsIF9ub3RfIHJlamVjdCBpZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xCdWZmZXJ8VVJMfSBmaWxlcGF0aFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnZnMnKS5NYWtlRGlyZWN0b3J5T3B0aW9uc30gW29wdHNdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ3x1bmRlZmluZWQ+fVxuICAgKiBAc2VlIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvZnMuaHRtbCNmc3Byb21pc2VzbWtkaXJwYXRoLW9wdGlvbnNcbiAgICovXG4gIGFzeW5jIG1rZGlyIChmaWxlcGF0aCwgb3B0cyA9IHt9KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmc1Byb21pc2VzLm1rZGlyKGZpbGVwYXRoLCBvcHRzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnI/LmNvZGUgIT09ICdFRVhJU1QnKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIC8qKlxuICAgKiBDb3BpZXMgZmlsZXMgX2FuZCBlbnRpcmUgZGlyZWN0b3JpZXNfXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgLSBTb3VyY2UgdG8gY29weVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb24gLSBEZXN0aW5hdGlvbiB0byBjb3B5IHRvXG4gICAqIEBwYXJhbSB7bmNwLk9wdGlvbnN9IFtvcHRzXSAtIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gYG5jcGBcbiAgICogQHNlZSBodHRwczovL25wbS5pbS9uY3BcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBjb3B5RmlsZSAoc291cmNlLCBkZXN0aW5hdGlvbiwgb3B0cyA9IHt9KSB7XG4gICAgaWYgKCFhd2FpdCBmcy5oYXNBY2Nlc3Moc291cmNlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHtzb3VyY2V9JyBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYWNjZXNzaWJsZWApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgbmNwQXN5bmMoc291cmNlLCBkZXN0aW5hdGlvbiwgb3B0cyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBNRDUgaGFzaCBvZiBhIGZpbGUuXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdmcycpLlBhdGhMaWtlfSBmaWxlUGF0aFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgbWQ1IChmaWxlUGF0aCkge1xuICAgIHJldHVybiBhd2FpdCBmcy5oYXNoKGZpbGVQYXRoLCAnbWQ1Jyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vdmUgYSBmaWxlXG4gICAqL1xuICBtdjogLyoqIEB0eXBlIHsoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcHRzPzogbXYuT3B0aW9ucykgPT4gQjx2b2lkPn0gKi8oQi5wcm9taXNpZnkobXYpKSxcblxuICAvKipcbiAgICogRmluZCBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgaW4gc3lzdGVtIGBQQVRIYFxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS13aGljaFxuICAgKi9cbiAgd2hpY2gsXG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgZ2xvYiBwYXR0ZXJuLCByZXNvbHZlIHdpdGggbGlzdCBvZiBmaWxlcyBtYXRjaGluZyB0aGF0IHBhdHRlcm5cbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25vZGUtZ2xvYlxuICAgKi9cbiAgZ2xvYjogLyoqIEB0eXBlIHsocGF0dGVybjogc3RyaW5nLCBvcHRzPzogZ2xvYi5JT3B0aW9ucykgPT4gQjxzdHJpbmdbXT59ICovKEIucHJvbWlzaWZ5KGdsb2IpKSxcblxuICAvKipcbiAgICogU2FuaXRpemUgYSBmaWxlbmFtZVxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJzaGFwL25vZGUtc2FuaXRpemUtZmlsZW5hbWVcbiAgICovXG4gIHNhbml0aXplTmFtZTogc2FuaXRpemUsXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGhleCBkaWdlc3Qgb2Ygc29tZSBmaWxlIGF0IGBmaWxlUGF0aGBcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuUGF0aExpa2V9IGZpbGVQYXRoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYWxnb3JpdGhtXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgaGFzaCAoZmlsZVBhdGgsIGFsZ29yaXRobSA9ICdzaGExJykge1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBmaWxlSGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKGFsZ29yaXRobSk7XG4gICAgICBjb25zdCByZWFkU3RyZWFtID0gY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCk7XG4gICAgICByZWFkU3RyZWFtLm9uKCdlcnJvcicsIChlKSA9PiByZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihgQ2Fubm90IGNhbGN1bGF0ZSAke2FsZ29yaXRobX0gaGFzaCBmb3IgJyR7ZmlsZVBhdGh9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApKSk7XG4gICAgICByZWFkU3RyZWFtLm9uKCdkYXRhJywgKGNodW5rKSA9PiBmaWxlSGFzaC51cGRhdGUoY2h1bmspKTtcbiAgICAgIHJlYWRTdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoZmlsZUhhc2guZGlnZXN0KCdoZXgnKSkpO1xuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGBXYWxrZXJgIGluc3RhbmNlLCB3aGljaCBpcyBhIHJlYWRhYmxlIHN0cmVhbSAoYW5kIHRodXNseSBhbiBhc3luYyBpdGVyYXRvcikuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgLSBEaXIgdG8gc3RhcnQgd2Fsa2luZyBhdFxuICAgKiBAcGFyYW0ge2ltcG9ydCgna2xhdycpLk9wdGlvbnN9IFtvcHRzXVxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCdrbGF3JykuV2Fsa2VyfVxuICAgKiBAc2VlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2tsYXdcbiAgICovXG4gIHdhbGsgKGRpciwgb3B0cykge1xuICAgIHJldHVybiBrbGF3KGRpciwgb3B0cyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IGNyZWF0ZSBhIGRpcmVjdG9yeS5cbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuUGF0aExpa2V9IGRpclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmd8dW5kZWZpbmVkPn1cbiAgICovXG4gIGFzeW5jIG1rZGlycCAoZGlyKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLm1rZGlyKGRpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBXYWxrcyBhIGRpcmVjdG9yeSBnaXZlbiBhY2NvcmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMgZ2l2ZW4uIFRoZSBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCBhIHBhdGggam9pbmVkIHdpdGggdGhlIGRpciBwYXJhbWV0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciBEaXJlY3RvcnkgcGF0aCB3aGVyZSB3ZSB3aWxsIHN0YXJ0IHdhbGtpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSByZWN1cnNpdmUgU2V0IGl0IHRvIHRydWUgaWYgeW91IHdhbnQgdG8gY29udGludWUgd2Fsa2luZyBzdWIgZGlyZWN0b3JpZXNcbiAgICogQHBhcmFtIHtXYWxrRGlyQ2FsbGJhY2t9IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhIG5ldyBwYXRoIGlzIGZvdW5kXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYGRpcmAgcGFyYW1ldGVyIGNvbnRhaW5zIGEgcGF0aCB0byBhbiBpbnZhbGlkIGZvbGRlclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn0gcmV0dXJucyB0aGUgZm91bmQgcGF0aCBvciBudWxsIGlmIHRoZSBpdGVtIHdhcyBub3QgZm91bmRcbiAgICovXG4gIGFzeW5jIHdhbGtEaXIgKGRpciwgcmVjdXJzaXZlLCBjYWxsYmFjaykgeyAvL2VzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgbGV0IGlzVmFsaWRSb290ID0gZmFsc2U7XG4gICAgbGV0IGVyck1zZyA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGlzVmFsaWRSb290ID0gKGF3YWl0IGZzLnN0YXQoZGlyKSkuaXNEaXJlY3RvcnkoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJNc2cgPSBlLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICghaXNWYWxpZFJvb3QpIHtcbiAgICAgIHRocm93IEVycm9yKGAnJHtkaXJ9JyBpcyBub3QgYSB2YWxpZCByb290IGRpcmVjdG9yeWAgKyAoZXJyTXNnID8gYC4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyTXNnfWAgOiAnJykpO1xuICAgIH1cblxuICAgIGxldCB3YWxrZXI7XG4gICAgbGV0IGZpbGVDb3VudCA9IDA7XG4gICAgbGV0IGRpcmVjdG9yeUNvdW50ID0gMDtcbiAgICBjb25zdCB0aW1lciA9IG5ldyBUaW1lcigpLnN0YXJ0KCk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxldCBsYXN0RmlsZVByb2Nlc3NlZCA9IEIucmVzb2x2ZSgpO1xuICAgICAgd2Fsa2VyID0ga2xhdyhkaXIsIHtcbiAgICAgICAgZGVwdGhMaW1pdDogcmVjdXJzaXZlID8gLTEgOiAwLFxuICAgICAgfSk7XG4gICAgICB3YWxrZXIub24oJ2RhdGEnLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICB3YWxrZXIucGF1c2UoKTtcblxuICAgICAgICBpZiAoIWl0ZW0uc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIGZpbGVDb3VudCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpcmVjdG9yeUNvdW50Kys7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgICAgIGxhc3RGaWxlUHJvY2Vzc2VkID0gQi50cnkoYXN5bmMgKCkgPT4gYXdhaXQgY2FsbGJhY2soaXRlbS5wYXRoLCBpdGVtLnN0YXRzLmlzRGlyZWN0b3J5KCkpKVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChkb25lID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoaXRlbS5wYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHdhbGtlci5yZXN1bWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgICAgfSlcbiAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyLCBpdGVtKSB7XG4gICAgICAgIGxvZy53YXJuKGBHb3QgYW4gZXJyb3Igd2hpbGUgd2Fsa2luZyAnJHtpdGVtLnBhdGh9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgLy8ga2xhdyBjYW5ub3QgZ2V0IGJhY2sgZnJvbSBhbiBFTk9FTlQgZXJyb3JcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICAgIGxvZy53YXJuKCdBbGwgZmlsZXMgbWF5IG5vdCBoYXZlIGJlZW4gYWNjZXNzZWQnKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBsYXN0RmlsZVByb2Nlc3NlZFxuICAgICAgICAgIC50aGVuKChmaWxlKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0gKi8oZmlsZSkgPz8gbnVsbCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgbG9nLndhcm4oYFVuZXhwZWN0ZWQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgbG9nLmRlYnVnKGBUcmF2ZXJzZWQgJHtwbHVyYWxpemUoJ2RpcmVjdG9yeScsIGRpcmVjdG9yeUNvdW50LCB0cnVlKX0gYCArXG4gICAgICAgIGBhbmQgJHtwbHVyYWxpemUoJ2ZpbGUnLCBmaWxlQ291bnQsIHRydWUpfSBgICtcbiAgICAgICAgYGluICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYCk7XG4gICAgICBpZiAod2Fsa2VyKSB7XG4gICAgICAgIHdhbGtlci5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgY2xvc2VzdCBgcGFja2FnZS5qc29uYCBmaWxlIGZyb20gYWJzb2x1dGUgcGF0aCBgZGlyYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciAtIERpcmVjdG9yeSB0byBzZWFyY2ggZnJvbVxuICAgKiBAcGFyYW0ge2ltcG9ydCgncmVhZC1wa2cnKS5PcHRpb25zfSBbb3B0c10gLSBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGByZWFkLXBrZ2BcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdlcmUgcHJvYmxlbXMgZmluZGluZyBvciByZWFkaW5nIGEgYHBhY2thZ2UuanNvbmAgZmlsZVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBBIHBhcnNlZCBgcGFja2FnZS5qc29uYFxuICAgKi9cbiAgcmVhZFBhY2thZ2VKc29uRnJvbSAoZGlyLCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBjd2QgPSBmcy5maW5kUm9vdChkaXIpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmVhZFBrZy5zeW5jKHsuLi5vcHRzLCBjd2R9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVyci5tZXNzYWdlID0gYEZhaWxlZCB0byByZWFkIGEgXFxgcGFja2FnZS5qc29uXFxgIGZyb20gZGlyIFxcYCR7ZGlyfVxcYDpcXG5cXG4ke2Vyci5tZXNzYWdlfWA7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9LFxuICAvKipcbiAgICogRmluZHMgdGhlIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgZnJvbSBgZGlyYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciAtIERpcmVjdG9yeSB0byBzZWFyY2ggZnJvbVxuICAgKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBkaXJgIGlzIG5vdCBhIG5vbmVtcHR5IHN0cmluZyBvciByZWxhdGl2ZSBwYXRoXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zIGZpbmRpbmcgdGhlIHByb2plY3Qgcm9vdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2xvc2VzZXQgcGFyZW50IGRpciBjb250YWluaW5nIGBwYWNrYWdlLmpzb25gXG4gICAqL1xuICBmaW5kUm9vdCAoZGlyKSB7XG4gICAgaWYgKCFkaXIgfHwgIXBhdGguaXNBYnNvbHV0ZShkaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgZmluZFJvb3QoKWAgbXVzdCBiZSBwcm92aWRlZCBhIG5vbi1lbXB0eSwgYWJzb2x1dGUgcGF0aCcpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBmaW5kUm9vdENhY2hlZChkaXIpO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxcYGZpbmRSb290KClcXGAgY291bGQgbm90IGZpbmQgXFxgcGFja2FnZS5qc29uXFxgIGZyb20gJHtkaXJ9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG5cbiAgLy8gYWRkIHRoZSBzdXBwb3J0ZWQgYGZzYCBmdW5jdGlvbnNcbiAgYWNjZXNzOiBmc1Byb21pc2VzLmFjY2VzcyxcbiAgYXBwZW5kRmlsZTogZnNQcm9taXNlcy5hcHBlbmRGaWxlLFxuICBjaG1vZDogZnNQcm9taXNlcy5jaG1vZCxcbiAgY2xvc2U6IEIucHJvbWlzaWZ5KGNsb3NlKSxcbiAgY29uc3RhbnRzLFxuICBjcmVhdGVXcml0ZVN0cmVhbSxcbiAgY3JlYXRlUmVhZFN0cmVhbSxcbiAgbHN0YXQ6IGZzUHJvbWlzZXMubHN0YXQsXG4gIC8qKlxuICAgKiBXYXJuaW5nOiB0aGlzIGlzIGEgcHJvbWlzaWZpZWQge0BsaW5rY29kZSBvcGVuIGZzLm9wZW59LlxuICAgKiBJdCByZXNvbHZlcyB3L2EgZmlsZSBkZXNjcmlwdG9yIGluc3RlYWQgb2YgYSB7QGxpbmtjb2RlIGZzUHJvbWlzZXMuRmlsZUhhbmRsZSBGaWxlSGFuZGxlfSBvYmplY3QsIGFzIHtAbGlua2NvZGUgZnNQcm9taXNlcy5vcGVufSBkb2VzLiBVc2Uge0BsaW5rY29kZSBmcy5vcGVuRmlsZX0gaWYgeW91IHdhbnQgYSBgRmlsZUhhbmRsZWAuXG4gICAqL1xuICBvcGVuOiBCLnByb21pc2lmeShvcGVuKSxcbiAgb3BlbkZpbGU6IGZzUHJvbWlzZXMub3BlbixcbiAgcmVhZGRpcjogZnNQcm9taXNlcy5yZWFkZGlyLFxuICByZWFkOiBCLnByb21pc2lmeShyZWFkKSxcbiAgcmVhZEZpbGU6IGZzUHJvbWlzZXMucmVhZEZpbGUsXG4gIHJlYWRsaW5rOiBmc1Byb21pc2VzLnJlYWRsaW5rLFxuICByZWFscGF0aDogZnNQcm9taXNlcy5yZWFscGF0aCxcbiAgcmVuYW1lOiBmc1Byb21pc2VzLnJlbmFtZSxcbiAgc3RhdDogZnNQcm9taXNlcy5zdGF0LFxuICBzeW1saW5rOiBmc1Byb21pc2VzLnN5bWxpbmssXG4gIHVubGluazogZnNQcm9taXNlcy51bmxpbmssXG4gIHdyaXRlOiBCLnByb21pc2lmeSh3cml0ZSksXG4gIHdyaXRlRmlsZTogZnNQcm9taXNlcy53cml0ZUZpbGUsXG5cbiAgLy8gZGVwcmVjYXRlZCBwcm9wc1xuXG4gIC8qKlxuICAgKiBVc2UgYGNvbnN0YW50cy5GX09LYCBpbnN0ZWFkLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgRl9PSzogY29uc3RhbnRzLkZfT0ssXG5cbiAgLyoqXG4gICAqIFVzZSBgY29uc3RhbnRzLlJfT0tgIGluc3RlYWQuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBSX09LOiBjb25zdGFudHMuUl9PSyxcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuV19PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIFdfT0s6IGNvbnN0YW50cy5XX09LLFxuXG4gIC8qKlxuICAgKiBVc2UgYGNvbnN0YW50cy5YX09LYCBpbnN0ZWFkLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgWF9PSzogY29uc3RhbnRzLlhfT0tcbn07XG5cbmV4cG9ydCB7IGZzIH07XG5leHBvcnQgZGVmYXVsdCBmcztcblxuLyoqXG4gKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBkaXJlY3Rvcnkgd2Fsa2luZ1xuICogQGNhbGxiYWNrIFdhbGtEaXJDYWxsYmFja1xuICogQHBhcmFtIHtzdHJpbmd9IGl0ZW1QYXRoIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlclxuICogQHBhcmFtIHtib29sZWFufSBpc0RpcmVjdG9yeSBTaG93cyBpZiBpdCBpcyBhIGRpcmVjdG9yeSBvciBhIGZpbGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybiB0cnVlIGlmIHlvdSB3YW50IHRvIHN0b3Agd2Fsa2luZ1xuKi9cblxuIl19
|
package/build/lib/image-util.js
CHANGED
|
@@ -141,7 +141,5 @@ function getRectIntersection(rect, imageSize) {
|
|
|
141
141
|
width,
|
|
142
142
|
height
|
|
143
143
|
};
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbWFnZS11dGlsLmpzIl0sIm5hbWVzIjpbIkJZVEVTX0lOX1BJWEVMX0JMT0NLIiwiU0NBTkxJTkVfRklMVEVSX01FVEhPRCIsIk1JTUVfSlBFRyIsIk1JTUVfUE5HIiwiTUlNRV9CTVAiLCJKaW1wIiwiZ2V0SmltcEltYWdlIiwiZGF0YSIsIkIiLCJyZXNvbHZlIiwicmVqZWN0IiwiXyIsImlzU3RyaW5nIiwiaXNCdWZmZXIiLCJFcnJvciIsIkJ1ZmZlciIsImZyb20iLCJlcnIiLCJpbWdPYmoiLCJfZ2V0QnVmZmVyIiwiZ2V0QnVmZmVyIiwiYmluZCIsInByb21pc2lmeSIsImNvbnRleHQiLCJjcm9wQmFzZTY0SW1hZ2UiLCJiYXNlNjRJbWFnZSIsInJlY3QiLCJpbWFnZSIsImJhc2U2NFRvSW1hZ2UiLCJjcm9wSW1hZ2UiLCJpbWFnZVRvQmFzZTY0IiwiaW1hZ2VCdWZmZXIiLCJQTkciLCJmaWx0ZXJUeXBlIiwicGFyc2UiLCJjaHVua3MiLCJwYWNrIiwib24iLCJjaHVuayIsInB1c2giLCJjb25jYXQiLCJ0b1N0cmluZyIsImltYWdlUmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwiaW50ZXJSZWN0IiwiZ2V0UmVjdEludGVyc2VjdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaXJzdFZlcnRpY2FsUGl4ZWwiLCJ0b3AiLCJsYXN0VmVydGljYWxQaXhlbCIsImZpcnN0SG9yaXpvbnRhbFBpeGVsIiwibGVmdCIsImxhc3RIb3Jpem9udGFsUGl4ZWwiLCJjcm9wcGVkQXJyYXkiLCJ5IiwieCIsImZpcnN0Qnl0ZUlkeEluUGl4ZWxCbG9jayIsImJ5dGVJZHgiLCJpbWFnZVNpemUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUE3QjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLENBQS9CO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxTQUFGO0FBQWFDLEVB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SUFBb0JVLElBQUksR0FBRzNCLElBQUksQ0FBQ2lCLEtBQWhDLEdBQXlDakIsSUFBSSxDQUFDaUIsS0FBOUMsR0FBdURpQixTQUFTLENBQUNqQixLQUFWLEdBQWtCVSxJQUF2RjtBQUNBLFFBQU1ULE1BQU0sR0FBR2dCLFNBQVMsQ0FBQ2hCLE1BQVYsSUFBcUJNLEdBQUcsR0FBR3hCLElBQUksQ0FBQ2tCLE1BQWhDLEdBQTBDbEIsSUFBSSxDQUFDa0IsTUFBL0MsR0FBeURnQixTQUFTLENBQUNoQixNQUFWLEdBQW1CTSxHQUEzRjtBQUNBLFNBQU87QUFBQ0csSUFBQUEsSUFBRDtBQUFPSCxJQUFBQSxHQUFQO0FBQVlQLElBQUFBLEtBQVo7QUFBbUJDLElBQUFBO0FBQW5CLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgSmltcCBmcm9tICdqaW1wJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBQTkcgfSBmcm9tICdwbmdqcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IEJZVEVTX0lOX1BJWEVMX0JMT0NLID0gNDtcbmNvbnN0IFNDQU5MSU5FX0ZJTFRFUl9NRVRIT0QgPSA0O1xuY29uc3QgeyBNSU1FX0pQRUcsIE1JTUVfUE5HLCBNSU1FX0JNUCB9ID0gSmltcDtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGdldCBhIEppbXAgaW1hZ2Ugb2JqZWN0IGZyb20gYnVmZmVyIG9yIGJhc2U2NCBkYXRhLiBKaW1wXG4gKiBpcyBhIGdyZWF0IGxpYnJhcnkgaG93ZXZlciBpdCBkb2VzIElPIGluIHRoZSBjb25zdHJ1Y3RvciBzbyBpdCdzIG5vdFxuICogY29udmVuaWVudCBmb3Igb3VyIGFzeW5jL2F3YWl0IG1vZGVsLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfHN0cmluZ30gZGF0YSAtIGJpbmFyeSBpbWFnZSBidWZmZXIgb3IgYmFzZTY0LWVuY29kZWQgaW1hZ2VcbiAqIHN0cmluZ1xuICogQHJldHVybnMge0ppbXB9IC0gdGhlIGppbXAgaW1hZ2Ugb2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEppbXBJbWFnZSAoZGF0YSkge1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmICghXy5pc1N0cmluZyhkYXRhKSAmJiAhXy5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ011c3QgaW5pdGlhbGl6ZSBqaW1wIG9iamVjdCB3aXRoIHN0cmluZyBvciBidWZmZXInKSk7XG4gICAgfVxuICAgIC8vIGlmIGRhdGEgaXMgYSBzdHJpbmcsIGFzc3VtZSBpdCBpcyBhIGJhc2U2NC1lbmNvZGVkIGltYWdlXG4gICAgaWYgKF8uaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCAnYmFzZTY0Jyk7XG4gICAgfVxuICAgIG5ldyBKaW1wKGRhdGEsIChlcnIsIGltZ09iaikgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICBpZiAoIWltZ09iaikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ291bGQgbm90IGNyZWF0ZSBqaW1wIGltYWdlIGZyb20gdGhhdCBkYXRhJykpO1xuICAgICAgfVxuICAgICAgaW1nT2JqLl9nZXRCdWZmZXIgPSBpbWdPYmouZ2V0QnVmZmVyLmJpbmQoaW1nT2JqKTtcbiAgICAgIGltZ09iai5nZXRCdWZmZXIgPSBCLnByb21pc2lmeShpbWdPYmouX2dldEJ1ZmZlciwge2NvbnRleHQ6IGltZ09ian0pO1xuICAgICAgcmVzb2x2ZShpbWdPYmopO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcm9wIHRoZSBpbWFnZSBieSBnaXZlbiByZWN0YW5nbGUgKHVzZSBiYXNlNjQgc3RyaW5nIGFzIGlucHV0IGFuZCBvdXRwdXQpXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NEltYWdlIFRoZSBzdHJpbmcgd2l0aCBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICogQHBhcmFtIHtSZWdpb259IHJlY3QgVGhlIHNlbGVjdGVkIHJlZ2lvbiBvZiBpbWFnZVxuICogQHJldHVybiB7c3RyaW5nfSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgb2YgY3JvcHBlZCBpbWFnZVxuICovXG5hc3luYyBmdW5jdGlvbiBjcm9wQmFzZTY0SW1hZ2UgKGJhc2U2NEltYWdlLCByZWN0KSB7XG4gIGNvbnN0IGltYWdlID0gYXdhaXQgYmFzZTY0VG9JbWFnZShiYXNlNjRJbWFnZSk7XG4gIGNyb3BJbWFnZShpbWFnZSwgcmVjdCk7XG4gIHJldHVybiBhd2FpdCBpbWFnZVRvQmFzZTY0KGltYWdlKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwbmdqcyBpbWFnZSBmcm9tIGdpdmVuIGJhc2U2NCBpbWFnZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjRJbWFnZSBUaGUgc3RyaW5nIHdpdGggYmFzZTY0IGVuY29kZWQgaW1hZ2VcbiAqIEByZXR1cm4ge1BOR30gVGhlIGltYWdlIG9iamVjdFxuICovXG5hc3luYyBmdW5jdGlvbiBiYXNlNjRUb0ltYWdlIChiYXNlNjRJbWFnZSkge1xuICBjb25zdCBpbWFnZUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NEltYWdlLCAnYmFzZTY0Jyk7XG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgUE5HKHtmaWx0ZXJUeXBlOiBTQ0FOTElORV9GSUxURVJfTUVUSE9EfSk7XG4gICAgaW1hZ2UucGFyc2UoaW1hZ2VCdWZmZXIsIChlcnIsIGltYWdlKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoaW1hZ2UpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBiYXNlNjQgc3RyaW5nIGZvciBnaXZlbiBpbWFnZSBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge1BOR30gaW1hZ2UgVGhlIGltYWdlIG9iamVjdFxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RyaW5nIHdpdGggYmFzZTY0IGVuY29kZWQgaW1hZ2VcbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW1hZ2VUb0Jhc2U2NCAoaW1hZ2UpIHtcbiAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICBpbWFnZS5wYWNrKClcbiAgICAub24oJ2RhdGEnLCAoY2h1bmspID0+IGNodW5rcy5wdXNoKGNodW5rKSkub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHJlc29sdmUoQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgfSlcbiAgICAub24oJ2Vycm9yJywgKGVycikgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIENyb3AgdGhlIGltYWdlIGJ5IGdpdmVuIHJlY3RhbmdsZVxuICpcbiAqIEBwYXJhbSB7UE5HfSBpbWFnZSBUaGUgaW1hZ2UgdG8gbXV0YXRlIGJ5IGNyb3BwaW5nXG4gKiBAcGFyYW0ge1JlZ2lvbn0gcmVjdCBUaGUgc2VsZWN0ZWQgcmVnaW9uIG9mIGltYWdlXG4gKi9cbmZ1bmN0aW9uIGNyb3BJbWFnZSAoaW1hZ2UsIHJlY3QpIHtcbiAgY29uc3QgaW1hZ2VSZWN0ID0ge3dpZHRoOiBpbWFnZS53aWR0aCwgaGVpZ2h0OiBpbWFnZS5oZWlnaHR9O1xuICBjb25zdCBpbnRlclJlY3QgPSBnZXRSZWN0SW50ZXJzZWN0aW9uKHJlY3QsIGltYWdlUmVjdCk7XG4gIGlmIChpbnRlclJlY3Qud2lkdGggPCByZWN0LndpZHRoIHx8IGludGVyUmVjdC5oZWlnaHQgPCByZWN0LmhlaWdodCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyb3AgJHtKU09OLnN0cmluZ2lmeShyZWN0KX0gZnJvbSAke0pTT04uc3RyaW5naWZ5KGltYWdlUmVjdCl9IGJlY2F1c2UgdGhlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHRoZW0gd2FzIG5vdCB0aGUgc2l6ZSBvZiB0aGUgcmVjdGApO1xuICB9XG5cbiAgY29uc3QgZmlyc3RWZXJ0aWNhbFBpeGVsID0gaW50ZXJSZWN0LnRvcDtcbiAgY29uc3QgbGFzdFZlcnRpY2FsUGl4ZWwgPSBpbnRlclJlY3QudG9wICsgaW50ZXJSZWN0LmhlaWdodDtcblxuICBjb25zdCBmaXJzdEhvcml6b250YWxQaXhlbCA9IGludGVyUmVjdC5sZWZ0O1xuICBjb25zdCBsYXN0SG9yaXpvbnRhbFBpeGVsID0gaW50ZXJSZWN0LmxlZnQgKyBpbnRlclJlY3Qud2lkdGg7XG5cbiAgY29uc3QgY3JvcHBlZEFycmF5ID0gW107XG4gIGZvciAobGV0IHkgPSBmaXJzdFZlcnRpY2FsUGl4ZWw7IHkgPCBsYXN0VmVydGljYWxQaXhlbDsgeSsrKSB7XG4gICAgZm9yIChsZXQgeCA9IGZpcnN0SG9yaXpvbnRhbFBpeGVsOyB4IDwgbGFzdEhvcml6b250YWxQaXhlbDsgeCsrKSB7XG4gICAgICBjb25zdCBmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgPSAoaW1hZ2VSZWN0LndpZHRoICogeSArIHgpIDw8IDI7XG4gICAgICBmb3IgKGxldCBieXRlSWR4ID0gMDsgYnl0ZUlkeCA8IEJZVEVTX0lOX1BJWEVMX0JMT0NLOyBieXRlSWR4KyspIHtcbiAgICAgICAgY3JvcHBlZEFycmF5LnB1c2goaW1hZ2UuZGF0YVtmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgKyBieXRlSWR4XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW1hZ2UuZGF0YSA9IEJ1ZmZlci5mcm9tKGNyb3BwZWRBcnJheSk7XG4gIGltYWdlLndpZHRoID0gaW50ZXJSZWN0LndpZHRoO1xuICBpbWFnZS5oZWlnaHQgPSBpbnRlclJlY3QuaGVpZ2h0O1xuICByZXR1cm4gaW1hZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RJbnRlcnNlY3Rpb24gKHJlY3QsIGltYWdlU2l6ZSkge1xuICBjb25zdCBsZWZ0ID0gcmVjdC5sZWZ0ID49IGltYWdlU2l6ZS53aWR0aCA/IGltYWdlU2l6ZS53aWR0aCA6IHJlY3QubGVmdDtcbiAgY29uc3QgdG9wID0gcmVjdC50b3AgPj0gaW1hZ2VTaXplLmhlaWdodCA/IGltYWdlU2l6ZS5oZWlnaHQgOiByZWN0LnRvcDtcbiAgY29uc3Qgd2lkdGggPSBpbWFnZVNpemUud2lkdGggPj0gKGxlZnQgKyByZWN0LndpZHRoKSA/IHJlY3Qud2lkdGggOiAoaW1hZ2VTaXplLndpZHRoIC0gbGVmdCk7XG4gIGNvbnN0IGhlaWdodCA9IGltYWdlU2l6ZS5oZWlnaHQgPj0gKHRvcCArIHJlY3QuaGVpZ2h0KSA/IHJlY3QuaGVpZ2h0IDogKGltYWdlU2l6ZS5oZWlnaHQgLSB0b3ApO1xuICByZXR1cm4ge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH07XG59XG5cbmV4cG9ydCB7XG4gIGNyb3BCYXNlNjRJbWFnZSwgYmFzZTY0VG9JbWFnZSwgaW1hZ2VUb0Jhc2U2NCwgY3JvcEltYWdlLFxuICBnZXRKaW1wSW1hZ2UsIE1JTUVfSlBFRywgTUlNRV9QTkcsIE1JTUVfQk1QXG59O1xuIl0sImZpbGUiOiJsaWIvaW1hZ2UtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9pbWFnZS11dGlsLmpzIl0sIm5hbWVzIjpbIkJZVEVTX0lOX1BJWEVMX0JMT0NLIiwiU0NBTkxJTkVfRklMVEVSX01FVEhPRCIsIk1JTUVfSlBFRyIsIk1JTUVfUE5HIiwiTUlNRV9CTVAiLCJKaW1wIiwiZ2V0SmltcEltYWdlIiwiZGF0YSIsIkIiLCJyZXNvbHZlIiwicmVqZWN0IiwiXyIsImlzU3RyaW5nIiwiaXNCdWZmZXIiLCJFcnJvciIsIkJ1ZmZlciIsImZyb20iLCJlcnIiLCJpbWdPYmoiLCJfZ2V0QnVmZmVyIiwiZ2V0QnVmZmVyIiwiYmluZCIsInByb21pc2lmeSIsImNvbnRleHQiLCJjcm9wQmFzZTY0SW1hZ2UiLCJiYXNlNjRJbWFnZSIsInJlY3QiLCJpbWFnZSIsImJhc2U2NFRvSW1hZ2UiLCJjcm9wSW1hZ2UiLCJpbWFnZVRvQmFzZTY0IiwiaW1hZ2VCdWZmZXIiLCJQTkciLCJmaWx0ZXJUeXBlIiwicGFyc2UiLCJjaHVua3MiLCJwYWNrIiwib24iLCJjaHVuayIsInB1c2giLCJjb25jYXQiLCJ0b1N0cmluZyIsImltYWdlUmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwiaW50ZXJSZWN0IiwiZ2V0UmVjdEludGVyc2VjdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaXJzdFZlcnRpY2FsUGl4ZWwiLCJ0b3AiLCJsYXN0VmVydGljYWxQaXhlbCIsImZpcnN0SG9yaXpvbnRhbFBpeGVsIiwibGVmdCIsImxhc3RIb3Jpem9udGFsUGl4ZWwiLCJjcm9wcGVkQXJyYXkiLCJ5IiwieCIsImZpcnN0Qnl0ZUlkeEluUGl4ZWxCbG9jayIsImJ5dGVJZHgiLCJpbWFnZVNpemUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUE3QjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLENBQS9CO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxTQUFGO0FB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LEtBQVYsSUFBb0JVLElBQUksR0FBRzNCLElBQUksQ0FBQ2lCLEtBQWhDLEdBQXlDakIsSUFBSSxDQUFDaUIsS0FBOUMsR0FBdURpQixTQUFTLENBQUNqQixLQUFWLEdBQWtCVSxJQUF2RjtBQUNBLFFBQU1ULE1BQU0sR0FBR2dCLFNBQVMsQ0FBQ2hCLE1BQVYsSUFBcUJNLEdBQUcsR0FBR3hCLElBQUksQ0FBQ2tCLE1BQWhDLEdBQTBDbEIsSUFBSSxDQUFDa0IsTUFBL0MsR0FBeURnQixTQUFTLENBQUNoQixNQUFWLEdBQW1CTSxHQUEzRjtBQUNBLFNBQU87QUFBQ0csSUFBQUEsSUFBRDtBQUFPSCxJQUFBQSxHQUFQO0FBQVlQLElBQUFBLEtBQVo7QUFBbUJDLElBQUFBO0FBQW5CLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgSmltcCBmcm9tICdqaW1wJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBQTkcgfSBmcm9tICdwbmdqcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IEJZVEVTX0lOX1BJWEVMX0JMT0NLID0gNDtcbmNvbnN0IFNDQU5MSU5FX0ZJTFRFUl9NRVRIT0QgPSA0O1xuY29uc3QgeyBNSU1FX0pQRUcsIE1JTUVfUE5HLCBNSU1FX0JNUCB9ID0gSmltcDtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGdldCBhIEppbXAgaW1hZ2Ugb2JqZWN0IGZyb20gYnVmZmVyIG9yIGJhc2U2NCBkYXRhLiBKaW1wXG4gKiBpcyBhIGdyZWF0IGxpYnJhcnkgaG93ZXZlciBpdCBkb2VzIElPIGluIHRoZSBjb25zdHJ1Y3RvciBzbyBpdCdzIG5vdFxuICogY29udmVuaWVudCBmb3Igb3VyIGFzeW5jL2F3YWl0IG1vZGVsLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfHN0cmluZ30gZGF0YSAtIGJpbmFyeSBpbWFnZSBidWZmZXIgb3IgYmFzZTY0LWVuY29kZWQgaW1hZ2VcbiAqIHN0cmluZ1xuICogQHJldHVybnMge0ppbXB9IC0gdGhlIGppbXAgaW1hZ2Ugb2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEppbXBJbWFnZSAoZGF0YSkge1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmICghXy5pc1N0cmluZyhkYXRhKSAmJiAhXy5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ011c3QgaW5pdGlhbGl6ZSBqaW1wIG9iamVjdCB3aXRoIHN0cmluZyBvciBidWZmZXInKSk7XG4gICAgfVxuICAgIC8vIGlmIGRhdGEgaXMgYSBzdHJpbmcsIGFzc3VtZSBpdCBpcyBhIGJhc2U2NC1lbmNvZGVkIGltYWdlXG4gICAgaWYgKF8uaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCAnYmFzZTY0Jyk7XG4gICAgfVxuICAgIG5ldyBKaW1wKGRhdGEsIChlcnIsIGltZ09iaikgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICBpZiAoIWltZ09iaikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ291bGQgbm90IGNyZWF0ZSBqaW1wIGltYWdlIGZyb20gdGhhdCBkYXRhJykpO1xuICAgICAgfVxuICAgICAgaW1nT2JqLl9nZXRCdWZmZXIgPSBpbWdPYmouZ2V0QnVmZmVyLmJpbmQoaW1nT2JqKTtcbiAgICAgIGltZ09iai5nZXRCdWZmZXIgPSBCLnByb21pc2lmeShpbWdPYmouX2dldEJ1ZmZlciwge2NvbnRleHQ6IGltZ09ian0pO1xuICAgICAgcmVzb2x2ZShpbWdPYmopO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcm9wIHRoZSBpbWFnZSBieSBnaXZlbiByZWN0YW5nbGUgKHVzZSBiYXNlNjQgc3RyaW5nIGFzIGlucHV0IGFuZCBvdXRwdXQpXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NEltYWdlIFRoZSBzdHJpbmcgd2l0aCBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICogQHBhcmFtIHtSZWdpb259IHJlY3QgVGhlIHNlbGVjdGVkIHJlZ2lvbiBvZiBpbWFnZVxuICogQHJldHVybiB7c3RyaW5nfSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgb2YgY3JvcHBlZCBpbWFnZVxuICovXG5hc3luYyBmdW5jdGlvbiBjcm9wQmFzZTY0SW1hZ2UgKGJhc2U2NEltYWdlLCByZWN0KSB7XG4gIGNvbnN0IGltYWdlID0gYXdhaXQgYmFzZTY0VG9JbWFnZShiYXNlNjRJbWFnZSk7XG4gIGNyb3BJbWFnZShpbWFnZSwgcmVjdCk7XG4gIHJldHVybiBhd2FpdCBpbWFnZVRvQmFzZTY0KGltYWdlKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwbmdqcyBpbWFnZSBmcm9tIGdpdmVuIGJhc2U2NCBpbWFnZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjRJbWFnZSBUaGUgc3RyaW5nIHdpdGggYmFzZTY0IGVuY29kZWQgaW1hZ2VcbiAqIEByZXR1cm4ge1BOR30gVGhlIGltYWdlIG9iamVjdFxuICovXG5hc3luYyBmdW5jdGlvbiBiYXNlNjRUb0ltYWdlIChiYXNlNjRJbWFnZSkge1xuICBjb25zdCBpbWFnZUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NEltYWdlLCAnYmFzZTY0Jyk7XG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgUE5HKHtmaWx0ZXJUeXBlOiBTQ0FOTElORV9GSUxURVJfTUVUSE9EfSk7XG4gICAgaW1hZ2UucGFyc2UoaW1hZ2VCdWZmZXIsIChlcnIsIGltYWdlKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoaW1hZ2UpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBiYXNlNjQgc3RyaW5nIGZvciBnaXZlbiBpbWFnZSBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge1BOR30gaW1hZ2UgVGhlIGltYWdlIG9iamVjdFxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RyaW5nIHdpdGggYmFzZTY0IGVuY29kZWQgaW1hZ2VcbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW1hZ2VUb0Jhc2U2NCAoaW1hZ2UpIHtcbiAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICBpbWFnZS5wYWNrKClcbiAgICAub24oJ2RhdGEnLCAoY2h1bmspID0+IGNodW5rcy5wdXNoKGNodW5rKSkub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHJlc29sdmUoQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgfSlcbiAgICAub24oJ2Vycm9yJywgKGVycikgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIENyb3AgdGhlIGltYWdlIGJ5IGdpdmVuIHJlY3RhbmdsZVxuICpcbiAqIEBwYXJhbSB7UE5HfSBpbWFnZSBUaGUgaW1hZ2UgdG8gbXV0YXRlIGJ5IGNyb3BwaW5nXG4gKiBAcGFyYW0ge1JlZ2lvbn0gcmVjdCBUaGUgc2VsZWN0ZWQgcmVnaW9uIG9mIGltYWdlXG4gKi9cbmZ1bmN0aW9uIGNyb3BJbWFnZSAoaW1hZ2UsIHJlY3QpIHtcbiAgY29uc3QgaW1hZ2VSZWN0ID0ge3dpZHRoOiBpbWFnZS53aWR0aCwgaGVpZ2h0OiBpbWFnZS5oZWlnaHR9O1xuICBjb25zdCBpbnRlclJlY3QgPSBnZXRSZWN0SW50ZXJzZWN0aW9uKHJlY3QsIGltYWdlUmVjdCk7XG4gIGlmIChpbnRlclJlY3Qud2lkdGggPCByZWN0LndpZHRoIHx8IGludGVyUmVjdC5oZWlnaHQgPCByZWN0LmhlaWdodCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyb3AgJHtKU09OLnN0cmluZ2lmeShyZWN0KX0gZnJvbSAke0pTT04uc3RyaW5naWZ5KGltYWdlUmVjdCl9IGJlY2F1c2UgdGhlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHRoZW0gd2FzIG5vdCB0aGUgc2l6ZSBvZiB0aGUgcmVjdGApO1xuICB9XG5cbiAgY29uc3QgZmlyc3RWZXJ0aWNhbFBpeGVsID0gaW50ZXJSZWN0LnRvcDtcbiAgY29uc3QgbGFzdFZlcnRpY2FsUGl4ZWwgPSBpbnRlclJlY3QudG9wICsgaW50ZXJSZWN0LmhlaWdodDtcblxuICBjb25zdCBmaXJzdEhvcml6b250YWxQaXhlbCA9IGludGVyUmVjdC5sZWZ0O1xuICBjb25zdCBsYXN0SG9yaXpvbnRhbFBpeGVsID0gaW50ZXJSZWN0LmxlZnQgKyBpbnRlclJlY3Qud2lkdGg7XG5cbiAgY29uc3QgY3JvcHBlZEFycmF5ID0gW107XG4gIGZvciAobGV0IHkgPSBmaXJzdFZlcnRpY2FsUGl4ZWw7IHkgPCBsYXN0VmVydGljYWxQaXhlbDsgeSsrKSB7XG4gICAgZm9yIChsZXQgeCA9IGZpcnN0SG9yaXpvbnRhbFBpeGVsOyB4IDwgbGFzdEhvcml6b250YWxQaXhlbDsgeCsrKSB7XG4gICAgICBjb25zdCBmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgPSAoaW1hZ2VSZWN0LndpZHRoICogeSArIHgpIDw8IDI7XG4gICAgICBmb3IgKGxldCBieXRlSWR4ID0gMDsgYnl0ZUlkeCA8IEJZVEVTX0lOX1BJWEVMX0JMT0NLOyBieXRlSWR4KyspIHtcbiAgICAgICAgY3JvcHBlZEFycmF5LnB1c2goaW1hZ2UuZGF0YVtmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgKyBieXRlSWR4XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW1hZ2UuZGF0YSA9IEJ1ZmZlci5mcm9tKGNyb3BwZWRBcnJheSk7XG4gIGltYWdlLndpZHRoID0gaW50ZXJSZWN0LndpZHRoO1xuICBpbWFnZS5oZWlnaHQgPSBpbnRlclJlY3QuaGVpZ2h0O1xuICByZXR1cm4gaW1hZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RJbnRlcnNlY3Rpb24gKHJlY3QsIGltYWdlU2l6ZSkge1xuICBjb25zdCBsZWZ0ID0gcmVjdC5sZWZ0ID49IGltYWdlU2l6ZS53aWR0aCA/IGltYWdlU2l6ZS53aWR0aCA6IHJlY3QubGVmdDtcbiAgY29uc3QgdG9wID0gcmVjdC50b3AgPj0gaW1hZ2VTaXplLmhlaWdodCA/IGltYWdlU2l6ZS5oZWlnaHQgOiByZWN0LnRvcDtcbiAgY29uc3Qgd2lkdGggPSBpbWFnZVNpemUud2lkdGggPj0gKGxlZnQgKyByZWN0LndpZHRoKSA/IHJlY3Qud2lkdGggOiAoaW1hZ2VTaXplLndpZHRoIC0gbGVmdCk7XG4gIGNvbnN0IGhlaWdodCA9IGltYWdlU2l6ZS5oZWlnaHQgPj0gKHRvcCArIHJlY3QuaGVpZ2h0KSA/IHJlY3QuaGVpZ2h0IDogKGltYWdlU2l6ZS5oZWlnaHQgLSB0b3ApO1xuICByZXR1cm4ge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH07XG59XG5cbmV4cG9ydCB7XG4gIGNyb3BCYXNlNjRJbWFnZSwgYmFzZTY0VG9JbWFnZSwgaW1hZ2VUb0Jhc2U2NCwgY3JvcEltYWdlLFxuICBnZXRKaW1wSW1hZ2UsIE1JTUVfSlBFRywgTUlNRV9QTkcsIE1JTUVfQk1QXG59O1xuIl19
|
package/build/lib/index.js
CHANGED
|
@@ -3,7 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.node = exports.net = exports.mkdirp = exports.mjpeg = exports.logger = exports.imageUtil = exports.fs = exports.env = exports.default = exports.cancellableDelay = void 0;
|
|
7
|
+
Object.defineProperty(exports, "npm", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _npm.npm;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.zip = exports.util = exports.timing = exports.tempDir = exports.system = exports.process = exports.plist = void 0;
|
|
7
14
|
|
|
8
15
|
require("source-map-support/register");
|
|
9
16
|
|
|
@@ -59,6 +66,12 @@ var timing = _interopRequireWildcard(require("./timing"));
|
|
|
59
66
|
|
|
60
67
|
exports.timing = timing;
|
|
61
68
|
|
|
69
|
+
var env = _interopRequireWildcard(require("./env"));
|
|
70
|
+
|
|
71
|
+
exports.env = env;
|
|
72
|
+
|
|
73
|
+
var _npm = require("./npm");
|
|
74
|
+
|
|
62
75
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
63
76
|
|
|
64
77
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -90,9 +103,8 @@ var _default = {
|
|
|
90
103
|
net,
|
|
91
104
|
mjpeg,
|
|
92
105
|
node,
|
|
93
|
-
timing
|
|
106
|
+
timing,
|
|
107
|
+
env
|
|
94
108
|
};
|
|
95
|
-
exports.default = _default;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbmRleC5qcyJdLCJuYW1lcyI6WyJmcyIsImZzSW5kZXgiLCJjYW5jZWxsYWJsZURlbGF5IiwidXRpbCIsIm1rZGlycCIsIm1rZGlycEluZGV4IiwidGVtcERpciIsInN5c3RlbSIsInBsaXN0IiwibG9nZ2VyIiwicHJvY2VzcyIsInppcCIsImltYWdlVXRpbCIsIm5ldCIsIm1qcGVnIiwibm9kZSIsInRpbWluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztBQUdBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFTQyxPQUFmOztBQUNBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUF1QkMsSUFBN0I7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWFDLFdBQW5COztlQU1lO0FBQ2JDLEVBQUFBLE9BRGE7QUFDSkMsRUFBQUEsTUFESTtBQUNJSixFQUFBQSxJQURKO0FBQ1VILEVBQUFBLEVBRFY7QUFDY0UsRUFBQUEsZ0JBRGQ7QUFDZ0NNLEVBQUFBLEtBRGhDO0FBQ3VDSixFQUFBQSxNQUR2QztBQUMrQ0ssRUFBQUEsTUFEL0M7QUFDdURDLEVBQUFBLE9BRHZEO0FBRWJDLEVBQUFBLEdBRmE7QUFFUkMsRUFBQUEsU0FGUTtBQUVHQyxFQUFBQSxHQUZIO0FBRVFDLEVBQUFBLEtBRlI7QUFFZUMsRUFBQUEsSUFGZjtBQUVxQkMsRUFBQUE7QUFGckIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHRlbXBEaXIgZnJvbSAnLi90ZW1wZGlyJztcbmltcG9ydCAqIGFzIHN5c3RlbSBmcm9tICcuL3N5c3RlbSc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgKiBhcyBmc0luZGV4IGZyb20gJy4vZnMnO1xuaW1wb3J0ICogYXMgbmV0IGZyb20gJy4vbmV0JztcbmltcG9ydCAqIGFzIHBsaXN0IGZyb20gJy4vcGxpc3QnO1xuaW1wb3J0ICogYXMgbWtkaXJwSW5kZXggZnJvbSAnLi9ta2RpcnAnO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4vbG9nZ2luZyc7XG5pbXBvcnQgKiBhcyBwcm9jZXNzIGZyb20gJy4vcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyB6aXAgZnJvbSAnLi96aXAnO1xuaW1wb3J0ICogYXMgaW1hZ2VVdGlsIGZyb20gJy4vaW1hZ2UtdXRpbCc7XG5pbXBvcnQgKiBhcyBtanBlZyBmcm9tICcuL21qcGVnJztcbmltcG9ydCAqIGFzIG5vZGUgZnJvbSAnLi9ub2RlJztcbmltcG9ydCAqIGFzIHRpbWluZyBmcm9tICcuL3RpbWluZyc7XG5cblxuY29uc3QgeyBmcyB9ID0gZnNJbmRleDtcbmNvbnN0IHsgY2FuY2VsbGFibGVEZWxheSB9ID0gdXRpbDtcbmNvbnN0IHsgbWtkaXJwIH0gPSBta2RpcnBJbmRleDtcblxuZXhwb3J0IHtcbiAgdGVtcERpciwgc3lzdGVtLCB1dGlsLCBmcywgY2FuY2VsbGFibGVEZWxheSwgcGxpc3QsIG1rZGlycCwgbG9nZ2VyLCBwcm9jZXNzLFxuICB6aXAsIGltYWdlVXRpbCwgbmV0LCBtanBlZywgbm9kZSwgdGltaW5nLFxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGVtcERpciwgc3lzdGVtLCB1dGlsLCBmcywgY2FuY2VsbGFibGVEZWxheSwgcGxpc3QsIG1rZGlycCwgbG9nZ2VyLCBwcm9jZXNzLFxuICB6aXAsIGltYWdlVXRpbCwgbmV0LCBtanBlZywgbm9kZSwgdGltaW5nLFxufTtcbiJdLCJmaWxlIjoibGliL2luZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
109
|
+
exports.default = _default;
|
|
110
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9pbmRleC5qcyJdLCJuYW1lcyI6WyJmcyIsImZzSW5kZXgiLCJjYW5jZWxsYWJsZURlbGF5IiwidXRpbCIsIm1rZGlycCIsIm1rZGlycEluZGV4IiwidGVtcERpciIsInN5c3RlbSIsInBsaXN0IiwibG9nZ2VyIiwicHJvY2VzcyIsInppcCIsImltYWdlVXRpbCIsIm5ldCIsIm1qcGVnIiwibm9kZSIsInRpbWluZyIsImVudiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUE7Ozs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFTQyxPQUFmOztBQUNBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUF1QkMsSUFBN0I7O0FBS0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWFDLFdBQW5COztlQU1lO0FBQ2JDLEVBQUFBLE9BRGE7QUFDSkMsRUFBQUEsTUFESTtBQUNJSixFQUFBQSxJQURKO0FBQ1VILEVBQUFBLEVBRFY7QUFDY0UsRUFBQUEsZ0JBRGQ7QUFDZ0NNLEVBQUFBLEtBRGhDO0FBQ3VDSixFQUFBQSxNQUR2QztBQUMrQ0ssRUFBQUEsTUFEL0M7QUFDdURDLEVBQUFBLE9BRHZEO0FBRWJDLEVBQUFBLEdBRmE7QUFFUkMsRUFBQUEsU0FGUTtBQUVHQyxFQUFBQSxHQUZIO0FBRVFDLEVBQUFBLEtBRlI7QUFFZUMsRUFBQUEsSUFGZjtBQUVxQkMsRUFBQUEsTUFGckI7QUFFNkJDLEVBQUFBO0FBRjdCLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0ZW1wRGlyIGZyb20gJy4vdGVtcGRpcic7XG5pbXBvcnQgKiBhcyBzeXN0ZW0gZnJvbSAnLi9zeXN0ZW0nO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwnO1xuaW1wb3J0ICogYXMgZnNJbmRleCBmcm9tICcuL2ZzJztcbmltcG9ydCAqIGFzIG5ldCBmcm9tICcuL25ldCc7XG5pbXBvcnQgKiBhcyBwbGlzdCBmcm9tICcuL3BsaXN0JztcbmltcG9ydCAqIGFzIG1rZGlycEluZGV4IGZyb20gJy4vbWtkaXJwJztcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICcuL2xvZ2dpbmcnO1xuaW1wb3J0ICogYXMgcHJvY2VzcyBmcm9tICcuL3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgemlwIGZyb20gJy4vemlwJztcbmltcG9ydCAqIGFzIGltYWdlVXRpbCBmcm9tICcuL2ltYWdlLXV0aWwnO1xuaW1wb3J0ICogYXMgbWpwZWcgZnJvbSAnLi9tanBlZyc7XG5pbXBvcnQgKiBhcyBub2RlIGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgKiBhcyB0aW1pbmcgZnJvbSAnLi90aW1pbmcnO1xuaW1wb3J0ICogYXMgZW52IGZyb20gJy4vZW52JztcblxuZXhwb3J0IHsgbnBtIH0gZnJvbSAnLi9ucG0nO1xuXG5jb25zdCB7IGZzIH0gPSBmc0luZGV4O1xuY29uc3QgeyBjYW5jZWxsYWJsZURlbGF5IH0gPSB1dGlsO1xuLyoqXG4gKiBBbGlhcyBmb3IgYGZzLm1rZGlyKGRpciwge3JlY3Vyc2l2ZTogdHJ1ZX1gKS4gVXNlIGBmcy5ta2RpcnBgIGluc3RlYWQuXG4gKiBAZGVwcmVjYXRlZFxuICovXG5jb25zdCB7IG1rZGlycCB9ID0gbWtkaXJwSW5kZXg7XG5cbmV4cG9ydCB7XG4gIHRlbXBEaXIsIHN5c3RlbSwgdXRpbCwgZnMsIGNhbmNlbGxhYmxlRGVsYXksIHBsaXN0LCBta2RpcnAsIGxvZ2dlciwgcHJvY2VzcyxcbiAgemlwLCBpbWFnZVV0aWwsIG5ldCwgbWpwZWcsIG5vZGUsIHRpbWluZywgZW52XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICB0ZW1wRGlyLCBzeXN0ZW0sIHV0aWwsIGZzLCBjYW5jZWxsYWJsZURlbGF5LCBwbGlzdCwgbWtkaXJwLCBsb2dnZXIsIHByb2Nlc3MsXG4gIHppcCwgaW1hZ2VVdGlsLCBuZXQsIG1qcGVnLCBub2RlLCB0aW1pbmcsIGVudlxufTtcbiJdfQ==
|
|
@@ -140,7 +140,5 @@ exports.SecureValuesPreprocessor = SecureValuesPreprocessor;
|
|
|
140
140
|
const SECURE_VALUES_PREPROCESSOR = new SecureValuesPreprocessor();
|
|
141
141
|
exports.SECURE_VALUES_PREPROCESSOR = SECURE_VALUES_PREPROCESSOR;
|
|
142
142
|
var _default = SECURE_VALUES_PREPROCESSOR;
|
|
143
|
-
exports.default = _default;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2ctaW50ZXJuYWwuanMiXSwibmFtZXMiOlsiREVGQVVMVF9SRVBMQUNFUiIsIlNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciIsImNvbnN0cnVjdG9yIiwiX3J1bGVzIiwicnVsZXMiLCJwYXJzZVJ1bGUiLCJydWxlIiwicmFpc2VFcnJvciIsIm1zZyIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdHRlcm4iLCJyZXBsYWNlciIsImZsYWdzIiwiXyIsImlzU3RyaW5nIiwibGVuZ3RoIiwiZXNjYXBlUmVnRXhwIiwiaXNQbGFpbk9iamVjdCIsImhhcyIsInRleHQiLCJmbGFnIiwiaW5jbHVkZXMiLCJwdXNoIiwidW5pcSIsIlJlZ0V4cCIsImpvaW4iLCJlIiwibWVzc2FnZSIsImxvYWRSdWxlcyIsInNvdXJjZSIsImlzQXJyYXkiLCJmcyIsImV4aXN0cyIsInBhcnNlIiwicmVhZEZpbGUiLCJpc3N1ZXMiLCJwcmVwcm9jZXNzIiwic3RyIiwicmVzdWx0IiwicmVwbGFjZSIsIlNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGdCQUFnQixHQUFHLFlBQXpCOztBQVNBLE1BQU1DLHdCQUFOLENBQStCO0FBQzdCQyxFQUFBQSxXQUFXLEdBQUk7QUFDYixTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNEOztBQU1RLE1BQUxDLEtBQUssR0FBSTtBQUNYLFdBQU8sS0FBS0QsTUFBWjtBQUNEOztBQXVCREUsRUFBQUEsU0FBUyxDQUFFQyxJQUFGLEVBQVE7QUFDZixVQUFNQyxVQUFVLEdBQUlDLEdBQUQsSUFBUztBQUMxQixZQUFNLElBQUlDLEtBQUosQ0FBVyxHQUFFQyxJQUFJLENBQUNDLFNBQUwsQ0FBZUwsSUFBZixDQUFxQixPQUFNRSxHQUFJLEVBQTVDLENBQU47QUFDRCxLQUZEOztBQUlBLFFBQUlJLE9BQUo7QUFDQSxRQUFJQyxRQUFRLEdBQUdiLGdCQUFmO0FB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LEVBQWdDO0FBQzlCcUMsTUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNDLE9BQVAsQ0FBZW5DLElBQUksQ0FBQ00sT0FBcEIsRUFBNkJOLElBQUksQ0FBQ08sUUFBbEMsQ0FBVDtBQUNEOztBQUNELFdBQU8yQixNQUFQO0FBQ0Q7O0FBcEo0Qjs7O0FBdUovQixNQUFNRSwwQkFBMEIsR0FBRyxJQUFJekMsd0JBQUosRUFBbkM7O2VBR2V5QywwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICcuL2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IERFRkFVTFRfUkVQTEFDRVIgPSAnKipTRUNVUkUqKic7XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZVxuICogQHByb3BlcnR5IHtSZWdFeHB9IHBhdHRlcm4gVGhlIHBhcnNlZCBwYXR0ZXJuIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHJlcGxhY2VtZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVwbGFjZXIgW0RFRkFVTFRfU0VDVVJFX1JFUExBQ0VSXSBUaGUgcmVwbGFjZXIgdmFsdWUgdG8gdXNlLiBCeSBkZWZhdWx0XG4gKiBlcXVhbHMgdG8gYERFRkFVTFRfU0VDVVJFX1JFUExBQ0VSYFxuICovXG5cbmNsYXNzIFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciB7XG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICB0aGlzLl9ydWxlcyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtBcnJheTxTZWN1cmVWYWx1ZVByZXByb2Nlc3NpbmdSdWxlPn0gVGhlIGxpc3Qgb2Ygc3VjY2Vzc2Z1bGx5XG4gICAqIHBhcnNlZCBwcmVwcm9jZXNzaW5nIHJ1bGVzXG4gICAqL1xuICBnZXQgcnVsZXMgKCkge1xuICAgIHJldHVybiB0aGlzLl9ydWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBSdWxlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXR0ZXJuIEEgdmFsaWQgUmVnRXhwIHBhdHRlcm4gdG8gYmUgcmVwbGFjZWRcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHRleHQgQSB0ZXh0IG1hdGNoIHRvIHJlcGxhY2UuIEVpdGhlciB0aGlzIHByb3BlcnR5IG9yIHRoZVxuICAgKiBhYm92ZSBvbmUgbXVzdCBiZSBwcm92aWRlZC4gYHBhdHRlcm5gIGhhcyBwcmlvcml0eSBvdmVyIGB0ZXh0YCBpZiBib3RoIGFyZSBwcm92aWRlZC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGZsYWdzIFsnZyddIFJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncyBmb3IgdGhlIGdpdmVuIHBhdHRlcm4uXG4gICAqIFN1cHBvcnRlZCBmbGFnIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIHN0YW5kYXJkIEphdmFTY3JpcHQgUmVnRXhwIGNvbnN0cnVjdG9yOlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMjQWR2YW5jZWRfc2VhcmNoaW5nX3dpdGhfZmxhZ3NfMlxuICAgKiBUaGUgJ2cnIChnbG9iYWwgbWF0Y2hpbmcpIGlzIGFsd2F5cyBlbmFibGVkIHRob3VnaC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHJlcGxhY2VyIFtERUZBVUxUX1NFQ1VSRV9SRVBMQUNFUl0gVGhlIHJlcGxhY2VyIHZhbHVlIHRvIHVzZS4gQnkgZGVmYXVsdFxuICAgKiBlcXVhbHMgdG8gYERFRkFVTFRfU0VDVVJFX1JFUExBQ0VSYFxuICAgKi9cblxuICAvKipcbiAgICogUGFyc2VzIHNpbmdsZSBydWxlIGZyb20gdGhlIGdpdmVuIEpTT04gZmlsZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSdWxlfSBydWxlIFRoZSBydWxlIG1pZ2h0IGVpdGhlciBiZSByZXByZXNlbnRlZCBhcyBhIHNpbmdsZSBzdHJpbmdcbiAgICogb3IgYSBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHBhcnNpbmcgdGhlIHJ1bGVcbiAgICogQHJldHVybnMge1NlY3VyZVZhbHVlUHJlcHJvY2Vzc2luZ1J1bGV9IFRoZSBwYXJzZWQgcnVsZVxuICAgKi9cbiAgcGFyc2VSdWxlIChydWxlKSB7XG4gICAgY29uc3QgcmFpc2VFcnJvciA9IChtc2cpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtKU09OLnN0cmluZ2lmeShydWxlKX0gLT4gJHttc2d9YCk7XG4gICAgfTtcblxuICAgIGxldCBwYXR0ZXJuO1xuICAgIGxldCByZXBsYWNlciA9IERFRkFVTFRfUkVQTEFDRVI7XG4gICAgbGV0IGZsYWdzID0gWydnJ107XG4gICAgaWYgKF8uaXNTdHJpbmcocnVsZSkpIHtcbiAgICAgIGlmIChydWxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByYWlzZUVycm9yKCdUaGUgdmFsdWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgICAgIH1cbiAgICAgIHBhdHRlcm4gPSBgXFxcXGIke18uZXNjYXBlUmVnRXhwKHJ1bGUpfVxcXFxiYDtcbiAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChydWxlKSkge1xuICAgICAgaWYgKF8uaGFzKHJ1bGUsICdwYXR0ZXJuJykpIHtcbiAgICAgICAgaWYgKCFfLmlzU3RyaW5nKHJ1bGUucGF0dGVybikgfHwgcnVsZS5wYXR0ZXJuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJhaXNlRXJyb3IoYFRoZSB2YWx1ZSBvZiAncGF0dGVybicgbXVzdCBiZSBhIHZhbGlkIG5vbi1lbXB0eSBzdHJpbmdgKTtcbiAgICAgICAgfVxuICAgICAgICBwYXR0ZXJuID0gcnVsZS5wYXR0ZXJuO1xuICAgICAgfSBlbHNlIGlmIChfLmhhcyhydWxlLCAndGV4dCcpKSB7XG4gICAgICAgIGlmICghXy5pc1N0cmluZyhydWxlLnRleHQpIHx8IHJ1bGUudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByYWlzZUVycm9yKGBUaGUgdmFsdWUgb2YgJ3RleHQnIG11c3QgYmUgYSB2YWxpZCBub24tZW1wdHkgc3RyaW5nYCk7XG4gICAgICAgIH1cbiAgICAgICAgcGF0dGVybiA9IGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAocnVsZS50ZXh0KX1cXFxcYmA7XG4gICAgICB9XG4gICAgICBpZiAoIXBhdHRlcm4pIHtcbiAgICAgICAgcmFpc2VFcnJvcihgTXVzdCBlaXRoZXIgaGF2ZSBhIGZpZWxkIG5hbWVkICdwYXR0ZXJuJyBvciAndGV4dCdgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaGFzKHJ1bGUsICdmbGFncycpKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvR3VpZGUvUmVndWxhcl9FeHByZXNzaW9ucyNBZHZhbmNlZF9zZWFyY2hpbmdfd2l0aF9mbGFnc18yXG4gICAgICAgIGZvciAoY29uc3QgZmxhZyBvZiBbJ2knLCAnZycsICdtJywgJ3MnLCAndScsICd5J10pIHtcbiAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhydWxlLmZsYWdzLCBmbGFnKSkge1xuICAgICAgICAgICAgZmxhZ3MucHVzaChmbGFnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmxhZ3MgPSBfLnVuaXEoZmxhZ3MpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc1N0cmluZyhydWxlLnJlcGxhY2VyKSkge1xuICAgICAgICByZXBsYWNlciA9IHJ1bGUucmVwbGFjZXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhaXNlRXJyb3IoJ011c3QgZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGFuIG9iamVjdCcpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXR0ZXJuOiBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzLmpvaW4oJycpKSxcbiAgICAgICAgcmVwbGFjZXIsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJhaXNlRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgcnVsZXMgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfFJ1bGVbXT59IHNvdXJjZSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBKU09OIGZpbGUgY29udGFpbmluZyBzZWN1cmVcbiAgICogdmFsdWVzIHJlcGxhY2VtZW50IHJ1bGVzIG9yIHRoZSBydWxlcyB0aGVtc2VsdmVzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZm9ybWF0IG9mIHRoZSBzb3VyY2UgZmlsZSBpcyBpbnZhbGlkIG9yXG4gICAqIGl0IGRvZXMgbm90IGV4aXN0XG4gICAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiBpc3N1ZXMgZm91bmQgd2hpbGUgcGFyc2luZyBlYWNoIHJ1bGUuXG4gICAqIEFuIGVtcHR5IGxpc3QgaXMgcmV0dXJuZWQgaWYgbm8gcnVsZSBwYXJzaW5nIGlzc3VlcyB3ZXJlIGZvdW5kXG4gICAqL1xuICBhc3luYyBsb2FkUnVsZXMgKHNvdXJjZSkge1xuICAgIGxldCBydWxlcztcbiAgICBpZiAoXy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJ1bGVzID0gc291cmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhzb3VyY2UpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7c291cmNlfScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHJ1bGVzID0gSlNPTi5wYXJzZShhd2FpdCBmcy5yZWFkRmlsZShzb3VyY2UsICd1dGY4JykpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3NvdXJjZX0nIG11c3QgYmUgYSB2YWxpZCBKU09OIGZpbGUuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc0FycmF5KHJ1bGVzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3NvdXJjZX0nIG11c3QgY29udGFpbiBhIHZhbGlkIEpTT04gYXJyYXlgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpc3N1ZXMgPSBbXTtcbiAgICB0aGlzLl9ydWxlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fcnVsZXMucHVzaCh0aGlzLnBhcnNlUnVsZShydWxlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlzc3Vlcy5wdXNoKGUubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc3N1ZXM7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgc2VjdXJlIHZhbHVlcyByZXBsYWNlbWVudCBpbnNpZGUgdGhlIGdpdmVuIHN0cmluZ1xuICAgKiBhY2NvcmRpbmcgdG8gdGhlIHByZXZpb3VzbHkgbG9hZGVkIHJ1bGVzLiBObyByZXBsYWNlbWVudCBpcyBtYWRlXG4gICAqIGlmIHRoZXJlIGFyZSBubyBydWxlcyBvciB0aGUgZ2l2ZW4gdmFsdWUgaXMgbm90IGEgc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgVGhlIHN0cmluZyB0byBtYWtlIHJlcGxhY2VtZW50cyBpblxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgc3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIG1hZGVcbiAgICovXG4gIHByZXByb2Nlc3MgKHN0cikge1xuICAgIGlmICh0aGlzLl9ydWxlcy5sZW5ndGggPT09IDAgfHwgIV8uaXNTdHJpbmcoc3RyKSkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gc3RyO1xuICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocnVsZS5wYXR0ZXJuLCBydWxlLnJlcGxhY2VyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5jb25zdCBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiA9IG5ldyBTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzb3IoKTtcblxuZXhwb3J0IHsgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IsIFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciB9O1xuZXhwb3J0IGRlZmF1bHQgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1I7XG4iXSwiZmlsZSI6ImxpYi9sb2ctaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
|
143
|
+
exports.default = _default;
|
|
144
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9sb2ctaW50ZXJuYWwuanMiXSwibmFtZXMiOlsiREVGQVVMVF9SRVBMQUNFUiIsIlNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciIsImNvbnN0cnVjdG9yIiwiX3J1bGVzIiwicnVsZXMiLCJwYXJzZVJ1bGUiLCJydWxlIiwicmFpc2VFcnJvciIsIm1zZyIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdHRlcm4iLCJyZXBsYWNlciIsImZsYWdzIiwiXyIsImlzU3RyaW5nIiwibGVuZ3RoIiwiZXNjYXBlUmVnRXhwIiwiaXNQbGFpbk9iamVjdCIsImhhcyIsInRleHQiLCJmbGFnIiwiaW5jbHVkZXMiLCJwdXNoIiwidW5pcSIsIlJlZ0V4cCIsImpvaW4iLCJlIiwibWVzc2FnZSIsImxvYWRSdWxlcyIsInNvdXJjZSIsImlzQXJyYXkiLCJmcyIsImV4aXN0cyIsInBhcnNlIiwicmVhZEZpbGUiLCJpc3N1ZXMiLCJwcmVwcm9jZXNzIiwic3RyIiwicmVzdWx0IiwicmVwbGFjZSIsIlNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGdCQUFnQixHQUFHLFlBQXpCOztBQVNBLE1BQU1DLHdCQUFOLENBQStCO0FBQzdCQyxFQUFBQSxXQUFXLEdBQUk7QUFDYixTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNEOztBQU1RLE1BQUxDLEtBQUssR0FBSTtBQUNYLFdBQU8sS0FBS0QsTUFBWjtBQUNEOztBQXVCREUsRUFBQUEsU0FBUyxDQUFFQyxJQUFGLEVBQVE7QUFDZixVQUFNQyxVQUFVLEdBQUlDLEdBQUQsSUFBUztBQUMxQixZQUFNLElBQUlDLEtBQUosQ0FBVyxHQUFFQyxJQUFJLENBQUNDLFNBQUwsQ0FBZUwsSUFBZixDQUFxQixPQUFNRSxHQUFJLEVBQTVDLENBQU47QUFDRCxLQUZEOztBQUlBLFFBQUlJLE9BQUo7QUFDQSxRQUFJQyxRQUFRLEdBQUdiLGdCQUFmO0FBQ0EsUUFBSWMsS0FBSyxHQUFHLENBQUMsR0FBRCxDQUFaOztBQUNBLFFBQUlDLGdCQUFFQyxRQUFGLENBQVdWLElBQVgsQ0FBSixFQUFzQjtBQUNwQixVQUFJQSxJQUFJLENBQUNXLE1BQUwsS0FBZ0IsQ0FBcEIsRUFBdUI7QUFDckJWLFFBQUFBLFVBQVUsQ0FBQyw2QkFBRCxDQUFWO0FBQ0Q7O0FBQ0RLLE1BQUFBLE9BQU8sR0FBSSxNQUFLRyxnQkFBRUcsWUFBRixDQUFlWixJQUFmLENBQXFCLEtBQXJDO0FBQ0QsS0FMRCxNQUtPLElBQUlTLGdCQUFFSSxhQUFGLENBQWdCYixJQUFoQixDQUFKLEVBQTJCO0FBQ2hDLFVBQUlTLGdCQUFFSyxHQUFGLENBQU1kLElBQU4sRUFBWSxTQUFaLENBQUosRUFBNEI7QUFDMUIsWUFBSSxDQUFDUyxnQkFBRUMsUUFBRixDQUFXVixJQUFJLENBQUNNLE9BQWhCLENBQUQsSUFBNkJOLElBQUksQ0FBQ00sT0FBTCxDQUFhSyxNQUFiLEtBQXdCLENBQXpELEVBQTREO0FBQzFEVixVQUFBQSxVQUFVLENBQUUseURBQUYsQ0FBVjtBQUNEOztBQUNESyxRQUFBQSxPQUFPLEdBQUdOLElBQUksQ0FBQ00sT0FBZjtBQUNELE9BTEQsTUFLTyxJQUFJRyxnQkFBRUssR0FBRixDQUFNZCxJQUFOLEVBQVksTUFBWixDQUFKLEVBQXlCO0FBQzlCLFlBQUksQ0FBQ1MsZ0JBQUVDLFFBQUYsQ0FBV1YsSUFBSSxDQUFDZSxJQUFoQixDQUFELElBQTBCZixJQUFJLENBQUNlLElBQUwsQ0FBVUosTUFBVixLQUFxQixDQUFuRCxFQUFzRDtBQUNwRFYsVUFBQUEsVUFBVSxDQUFFLHNEQUFGLENBQVY7QUFDRDs7QUFDREssUUFBQUEsT0FBTyxHQUFJLE1BQUtHLGdCQUFFRyxZQUFGLENBQWVaLElBQUksQ0FBQ2UsSUFBcEIsQ0FBMEIsS0FBMUM7QUFDRDs7QUFDRCxVQUFJLENBQUNULE9BQUwsRUFBYztBQUNaTCxRQUFBQSxVQUFVLENBQUUsb0RBQUYsQ0FBVjtBQUNEOztBQUVELFVBQUlRLGdCQUFFSyxHQUFGLENBQU1kLElBQU4sRUFBWSxPQUFaLENBQUosRUFBMEI7QUFFeEIsYUFBSyxNQUFNZ0IsSUFBWCxJQUFtQixDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixHQUFoQixFQUFxQixHQUFyQixFQUEwQixHQUExQixDQUFuQixFQUFtRDtBQUNqRCxjQUFJUCxnQkFBRVEsUUFBRixDQUFXakIsSUFBSSxDQUFDUSxLQUFoQixFQUF1QlEsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ1IsWUFBQUEsS0FBSyxDQUFDVSxJQUFOLENBQVdGLElBQVg7QUFDRDtBQUNGOztBQUNEUixRQUFBQSxLQUFLLEdBQUdDLGdCQUFFVSxJQUFGLENBQU9YLEtBQVAsQ0FBUjtBQUNEOztBQUVELFVBQUlDLGdCQUFFQyxRQUFGLENBQVdWLElBQUksQ0FBQ08sUUFBaEIsQ0FBSixFQUErQjtBQUM3QkEsUUFBQUEsUUFBUSxHQUFHUCxJQUFJLENBQUNPLFFBQWhCO0FBQ0Q7QUFDRixLQTdCTSxNQTZCQTtBQUNMTixNQUFBQSxVQUFVLENBQUMsc0NBQUQsQ0FBVjtBQUNEOztBQUVELFFBQUk7QUFDRixhQUFPO0FBQ0xLLFFBQUFBLE9BQU8sRUFBRSxJQUFJYyxNQUFKLENBQVdkLE9BQVgsRUFBb0JFLEtBQUssQ0FBQ2EsSUFBTixDQUFXLEVBQVgsQ0FBcEIsQ0FESjtBQUVMZCxRQUFBQTtBQUZLLE9BQVA7QUFJRCxLQUxELENBS0UsT0FBT2UsQ0FBUCxFQUFVO0FBQ1ZyQixNQUFBQSxVQUFVLENBQUNxQixDQUFDLENBQUNDLE9BQUgsQ0FBVjtBQUNEO0FBQ0Y7O0FBWWMsUUFBVEMsU0FBUyxDQUFFQyxNQUFGLEVBQVU7QUFDdkIsUUFBSTNCLEtBQUo7O0FBQ0EsUUFBSVcsZ0JBQUVpQixPQUFGLENBQVVELE1BQVYsQ0FBSixFQUF1QjtBQUNyQjNCLE1BQUFBLEtBQUssR0FBRzJCLE1BQVI7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJLEVBQUMsTUFBTUUsWUFBR0MsTUFBSCxDQUFVSCxNQUFWLENBQVAsQ0FBSixFQUE4QjtBQUM1QixjQUFNLElBQUl0QixLQUFKLENBQVcsSUFBR3NCLE1BQU8sdUNBQXJCLENBQU47QUFDRDs7QUFDRCxVQUFJO0FBQ0YzQixRQUFBQSxLQUFLLEdBQUdNLElBQUksQ0FBQ3lCLEtBQUwsQ0FBVyxNQUFNRixZQUFHRyxRQUFILENBQVlMLE1BQVosRUFBb0IsTUFBcEIsQ0FBakIsQ0FBUjtBQUNELE9BRkQsQ0FFRSxPQUFPSCxDQUFQLEVBQVU7QUFDVixjQUFNLElBQUluQixLQUFKLENBQVcsSUFBR3NCLE1BQU8sZ0RBQStDSCxDQUFDLENBQUNDLE9BQVEsRUFBOUUsQ0FBTjtBQUNEOztBQUNELFVBQUksQ0FBQ2QsZ0JBQUVpQixPQUFGLENBQVU1QixLQUFWLENBQUwsRUFBdUI7QUFDckIsY0FBTSxJQUFJSyxLQUFKLENBQVcsSUFBR3NCLE1BQU8sbUNBQXJCLENBQU47QUFDRDtBQUNGOztBQUVELFVBQU1NLE1BQU0sR0FBRyxFQUFmO0FBQ0EsU0FBS2xDLE1BQUwsR0FBYyxFQUFkOztBQUNBLFNBQUssTUFBTUcsSUFBWCxJQUFtQkYsS0FBbkIsRUFBMEI7QUFDeEIsVUFBSTtBQUNGLGFBQUtELE1BQUwsQ0FBWXFCLElBQVosQ0FBaUIsS0FBS25CLFNBQUwsQ0FBZUMsSUFBZixDQUFqQjtBQUNELE9BRkQsQ0FFRSxPQUFPc0IsQ0FBUCxFQUFVO0FBQ1ZTLFFBQUFBLE1BQU0sQ0FBQ2IsSUFBUCxDQUFZSSxDQUFDLENBQUNDLE9BQWQ7QUFDRDtBQUNGOztBQUNELFdBQU9RLE1BQVA7QUFDRDs7QUFVREMsRUFBQUEsVUFBVSxDQUFFQyxHQUFGLEVBQU87QUFDZixRQUFJLEtBQUtwQyxNQUFMLENBQVljLE1BQVosS0FBdUIsQ0FBdkIsSUFBNEIsQ0FBQ0YsZ0JBQUVDLFFBQUYsQ0FBV3VCLEdBQVgsQ0FBakMsRUFBa0Q7QUFDaEQsYUFBT0EsR0FBUDtBQUNEOztBQUVELFFBQUlDLE1BQU0sR0FBR0QsR0FBYjs7QUFDQSxTQUFLLE1BQU1qQyxJQUFYLElBQW1CLEtBQUtILE1BQXhCLEVBQWdDO0FBQzlCcUMsTUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNDLE9BQVAsQ0FBZW5DLElBQUksQ0FBQ00sT0FBcEIsRUFBNkJOLElBQUksQ0FBQ08sUUFBbEMsQ0FBVDtBQUNEOztBQUNELFdBQU8yQixNQUFQO0FBQ0Q7O0FBcEo0Qjs7O0FBdUovQixNQUFNRSwwQkFBMEIsR0FBRyxJQUFJekMsd0JBQUosRUFBbkM7O2VBR2V5QywwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICcuL2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IERFRkFVTFRfUkVQTEFDRVIgPSAnKipTRUNVUkUqKic7XG5cbi8qKlxuICogQHR5cGVkZWYgU2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZVxuICogQHByb3BlcnR5IHtSZWdFeHB9IHBhdHRlcm4gVGhlIHBhcnNlZCBwYXR0ZXJuIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHJlcGxhY2VtZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVwbGFjZXIgW0RFRkFVTFRfU0VDVVJFX1JFUExBQ0VSXSBUaGUgcmVwbGFjZXIgdmFsdWUgdG8gdXNlLiBCeSBkZWZhdWx0XG4gKiBlcXVhbHMgdG8gYERFRkFVTFRfU0VDVVJFX1JFUExBQ0VSYFxuICovXG5cbmNsYXNzIFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciB7XG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICB0aGlzLl9ydWxlcyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtBcnJheTxTZWN1cmVWYWx1ZVByZXByb2Nlc3NpbmdSdWxlPn0gVGhlIGxpc3Qgb2Ygc3VjY2Vzc2Z1bGx5XG4gICAqIHBhcnNlZCBwcmVwcm9jZXNzaW5nIHJ1bGVzXG4gICAqL1xuICBnZXQgcnVsZXMgKCkge1xuICAgIHJldHVybiB0aGlzLl9ydWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiBSdWxlXG4gICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXR0ZXJuIEEgdmFsaWQgUmVnRXhwIHBhdHRlcm4gdG8gYmUgcmVwbGFjZWRcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHRleHQgQSB0ZXh0IG1hdGNoIHRvIHJlcGxhY2UuIEVpdGhlciB0aGlzIHByb3BlcnR5IG9yIHRoZVxuICAgKiBhYm92ZSBvbmUgbXVzdCBiZSBwcm92aWRlZC4gYHBhdHRlcm5gIGhhcyBwcmlvcml0eSBvdmVyIGB0ZXh0YCBpZiBib3RoIGFyZSBwcm92aWRlZC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGZsYWdzIFsnZyddIFJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncyBmb3IgdGhlIGdpdmVuIHBhdHRlcm4uXG4gICAqIFN1cHBvcnRlZCBmbGFnIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIHN0YW5kYXJkIEphdmFTY3JpcHQgUmVnRXhwIGNvbnN0cnVjdG9yOlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMjQWR2YW5jZWRfc2VhcmNoaW5nX3dpdGhfZmxhZ3NfMlxuICAgKiBUaGUgJ2cnIChnbG9iYWwgbWF0Y2hpbmcpIGlzIGFsd2F5cyBlbmFibGVkIHRob3VnaC5cbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHJlcGxhY2VyIFtERUZBVUxUX1NFQ1VSRV9SRVBMQUNFUl0gVGhlIHJlcGxhY2VyIHZhbHVlIHRvIHVzZS4gQnkgZGVmYXVsdFxuICAgKiBlcXVhbHMgdG8gYERFRkFVTFRfU0VDVVJFX1JFUExBQ0VSYFxuICAgKi9cblxuICAvKipcbiAgICogUGFyc2VzIHNpbmdsZSBydWxlIGZyb20gdGhlIGdpdmVuIEpTT04gZmlsZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSdWxlfSBydWxlIFRoZSBydWxlIG1pZ2h0IGVpdGhlciBiZSByZXByZXNlbnRlZCBhcyBhIHNpbmdsZSBzdHJpbmdcbiAgICogb3IgYSBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHBhcnNpbmcgdGhlIHJ1bGVcbiAgICogQHJldHVybnMge1NlY3VyZVZhbHVlUHJlcHJvY2Vzc2luZ1J1bGV9IFRoZSBwYXJzZWQgcnVsZVxuICAgKi9cbiAgcGFyc2VSdWxlIChydWxlKSB7XG4gICAgY29uc3QgcmFpc2VFcnJvciA9IChtc2cpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtKU09OLnN0cmluZ2lmeShydWxlKX0gLT4gJHttc2d9YCk7XG4gICAgfTtcblxuICAgIGxldCBwYXR0ZXJuO1xuICAgIGxldCByZXBsYWNlciA9IERFRkFVTFRfUkVQTEFDRVI7XG4gICAgbGV0IGZsYWdzID0gWydnJ107XG4gICAgaWYgKF8uaXNTdHJpbmcocnVsZSkpIHtcbiAgICAgIGlmIChydWxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByYWlzZUVycm9yKCdUaGUgdmFsdWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgICAgIH1cbiAgICAgIHBhdHRlcm4gPSBgXFxcXGIke18uZXNjYXBlUmVnRXhwKHJ1bGUpfVxcXFxiYDtcbiAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChydWxlKSkge1xuICAgICAgaWYgKF8uaGFzKHJ1bGUsICdwYXR0ZXJuJykpIHtcbiAgICAgICAgaWYgKCFfLmlzU3RyaW5nKHJ1bGUucGF0dGVybikgfHwgcnVsZS5wYXR0ZXJuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJhaXNlRXJyb3IoYFRoZSB2YWx1ZSBvZiAncGF0dGVybicgbXVzdCBiZSBhIHZhbGlkIG5vbi1lbXB0eSBzdHJpbmdgKTtcbiAgICAgICAgfVxuICAgICAgICBwYXR0ZXJuID0gcnVsZS5wYXR0ZXJuO1xuICAgICAgfSBlbHNlIGlmIChfLmhhcyhydWxlLCAndGV4dCcpKSB7XG4gICAgICAgIGlmICghXy5pc1N0cmluZyhydWxlLnRleHQpIHx8IHJ1bGUudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByYWlzZUVycm9yKGBUaGUgdmFsdWUgb2YgJ3RleHQnIG11c3QgYmUgYSB2YWxpZCBub24tZW1wdHkgc3RyaW5nYCk7XG4gICAgICAgIH1cbiAgICAgICAgcGF0dGVybiA9IGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAocnVsZS50ZXh0KX1cXFxcYmA7XG4gICAgICB9XG4gICAgICBpZiAoIXBhdHRlcm4pIHtcbiAgICAgICAgcmFpc2VFcnJvcihgTXVzdCBlaXRoZXIgaGF2ZSBhIGZpZWxkIG5hbWVkICdwYXR0ZXJuJyBvciAndGV4dCdgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaGFzKHJ1bGUsICdmbGFncycpKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvR3VpZGUvUmVndWxhcl9FeHByZXNzaW9ucyNBZHZhbmNlZF9zZWFyY2hpbmdfd2l0aF9mbGFnc18yXG4gICAgICAgIGZvciAoY29uc3QgZmxhZyBvZiBbJ2knLCAnZycsICdtJywgJ3MnLCAndScsICd5J10pIHtcbiAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhydWxlLmZsYWdzLCBmbGFnKSkge1xuICAgICAgICAgICAgZmxhZ3MucHVzaChmbGFnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmxhZ3MgPSBfLnVuaXEoZmxhZ3MpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc1N0cmluZyhydWxlLnJlcGxhY2VyKSkge1xuICAgICAgICByZXBsYWNlciA9IHJ1bGUucmVwbGFjZXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhaXNlRXJyb3IoJ011c3QgZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGFuIG9iamVjdCcpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXR0ZXJuOiBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzLmpvaW4oJycpKSxcbiAgICAgICAgcmVwbGFjZXIsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJhaXNlRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgcnVsZXMgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfFJ1bGVbXT59IHNvdXJjZSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBKU09OIGZpbGUgY29udGFpbmluZyBzZWN1cmVcbiAgICogdmFsdWVzIHJlcGxhY2VtZW50IHJ1bGVzIG9yIHRoZSBydWxlcyB0aGVtc2VsdmVzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZm9ybWF0IG9mIHRoZSBzb3VyY2UgZmlsZSBpcyBpbnZhbGlkIG9yXG4gICAqIGl0IGRvZXMgbm90IGV4aXN0XG4gICAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiBpc3N1ZXMgZm91bmQgd2hpbGUgcGFyc2luZyBlYWNoIHJ1bGUuXG4gICAqIEFuIGVtcHR5IGxpc3QgaXMgcmV0dXJuZWQgaWYgbm8gcnVsZSBwYXJzaW5nIGlzc3VlcyB3ZXJlIGZvdW5kXG4gICAqL1xuICBhc3luYyBsb2FkUnVsZXMgKHNvdXJjZSkge1xuICAgIGxldCBydWxlcztcbiAgICBpZiAoXy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJ1bGVzID0gc291cmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhzb3VyY2UpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7c291cmNlfScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHJ1bGVzID0gSlNPTi5wYXJzZShhd2FpdCBmcy5yZWFkRmlsZShzb3VyY2UsICd1dGY4JykpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3NvdXJjZX0nIG11c3QgYmUgYSB2YWxpZCBKU09OIGZpbGUuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc0FycmF5KHJ1bGVzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3NvdXJjZX0nIG11c3QgY29udGFpbiBhIHZhbGlkIEpTT04gYXJyYXlgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpc3N1ZXMgPSBbXTtcbiAgICB0aGlzLl9ydWxlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fcnVsZXMucHVzaCh0aGlzLnBhcnNlUnVsZShydWxlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlzc3Vlcy5wdXNoKGUubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc3N1ZXM7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgc2VjdXJlIHZhbHVlcyByZXBsYWNlbWVudCBpbnNpZGUgdGhlIGdpdmVuIHN0cmluZ1xuICAgKiBhY2NvcmRpbmcgdG8gdGhlIHByZXZpb3VzbHkgbG9hZGVkIHJ1bGVzLiBObyByZXBsYWNlbWVudCBpcyBtYWRlXG4gICAqIGlmIHRoZXJlIGFyZSBubyBydWxlcyBvciB0aGUgZ2l2ZW4gdmFsdWUgaXMgbm90IGEgc3RyaW5nXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgVGhlIHN0cmluZyB0byBtYWtlIHJlcGxhY2VtZW50cyBpblxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgc3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIG1hZGVcbiAgICovXG4gIHByZXByb2Nlc3MgKHN0cikge1xuICAgIGlmICh0aGlzLl9ydWxlcy5sZW5ndGggPT09IDAgfHwgIV8uaXNTdHJpbmcoc3RyKSkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gc3RyO1xuICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocnVsZS5wYXR0ZXJuLCBydWxlLnJlcGxhY2VyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5jb25zdCBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiA9IG5ldyBTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzb3IoKTtcblxuZXhwb3J0IHsgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IsIFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NvciB9O1xuZXhwb3J0IGRlZmF1bHQgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1I7XG4iXX0=
|