appium 2.0.0-beta.35 → 2.0.0-beta.37
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/appium.d.ts +41 -52
- package/build/lib/appium.d.ts.map +1 -1
- package/build/lib/appium.js +32 -15
- package/build/lib/cli/args.d.ts +1 -1
- package/build/lib/cli/args.d.ts.map +1 -1
- package/build/lib/cli/args.js +1 -1
- package/build/lib/cli/driver-command.d.ts +3 -3
- package/build/lib/cli/driver-command.d.ts.map +1 -1
- package/build/lib/cli/driver-command.js +1 -1
- package/build/lib/cli/extension-command.d.ts +60 -38
- package/build/lib/cli/extension-command.d.ts.map +1 -1
- package/build/lib/cli/extension-command.js +115 -59
- package/build/lib/cli/extension.d.ts +9 -5
- package/build/lib/cli/extension.d.ts.map +1 -1
- package/build/lib/cli/extension.js +5 -7
- package/build/lib/cli/parser.d.ts +3 -3
- package/build/lib/cli/parser.d.ts.map +1 -1
- package/build/lib/cli/parser.js +1 -1
- package/build/lib/cli/plugin-command.d.ts +1 -1
- package/build/lib/cli/plugin-command.d.ts.map +1 -1
- package/build/lib/cli/plugin-command.js +1 -1
- package/build/lib/cli/utils.js +1 -1
- package/build/lib/config-file.d.ts.map +1 -1
- package/build/lib/config-file.js +1 -1
- package/build/lib/config.d.ts +4 -4
- package/build/lib/config.d.ts.map +1 -1
- package/build/lib/config.js +1 -1
- package/build/lib/constants.d.ts.map +1 -1
- package/build/lib/constants.js +1 -1
- package/build/lib/extension/driver-config.d.ts +29 -32
- package/build/lib/extension/driver-config.d.ts.map +1 -1
- package/build/lib/extension/driver-config.js +7 -20
- package/build/lib/extension/extension-config.d.ts +108 -36
- package/build/lib/extension/extension-config.d.ts.map +1 -1
- package/build/lib/extension/extension-config.js +199 -60
- package/build/lib/extension/index.d.ts +16 -7
- package/build/lib/extension/index.d.ts.map +1 -1
- package/build/lib/extension/index.js +15 -18
- package/build/lib/extension/manifest.d.ts +12 -12
- package/build/lib/extension/manifest.d.ts.map +1 -1
- package/build/lib/extension/manifest.js +13 -3
- package/build/lib/extension/package-changed.d.ts.map +1 -1
- package/build/lib/extension/package-changed.js +1 -1
- package/build/lib/extension/plugin-config.d.ts +19 -24
- package/build/lib/extension/plugin-config.d.ts.map +1 -1
- package/build/lib/extension/plugin-config.js +9 -18
- package/build/lib/grid-register.d.ts.map +1 -1
- package/build/lib/grid-register.js +1 -1
- package/build/lib/logger.d.ts +1 -1
- package/build/lib/logger.d.ts.map +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/logsink.d.ts.map +1 -1
- package/build/lib/logsink.js +3 -2
- package/build/lib/main.d.ts +13 -12
- package/build/lib/main.d.ts.map +1 -1
- package/build/lib/main.js +4 -4
- package/build/lib/schema/arg-spec.d.ts +4 -4
- package/build/lib/schema/arg-spec.d.ts.map +1 -1
- package/build/lib/schema/arg-spec.js +1 -1
- package/build/lib/schema/cli-args.d.ts.map +1 -1
- package/build/lib/schema/cli-args.js +1 -1
- package/build/lib/schema/cli-transformers.d.ts.map +1 -1
- package/build/lib/schema/cli-transformers.js +1 -1
- package/build/lib/schema/keywords.d.ts.map +1 -1
- package/build/lib/schema/keywords.js +1 -1
- package/build/lib/schema/schema.d.ts +2 -2
- package/build/lib/schema/schema.d.ts.map +1 -1
- package/build/lib/schema/schema.js +1 -1
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/appium-manifest.d.ts +23 -4
- package/build/types/appium-manifest.d.ts.map +1 -1
- package/build/types/cli.d.ts.map +1 -1
- package/build/types/{external-manifest.d.ts → extension-manifest.d.ts} +15 -7
- package/build/types/extension-manifest.d.ts.map +1 -0
- package/build/types/index.d.ts +6 -5
- package/build/types/index.d.ts.map +1 -1
- package/driver.d.ts +1 -0
- package/driver.js +14 -0
- package/lib/appium.js +208 -124
- package/lib/cli/args.js +143 -93
- package/lib/cli/driver-command.js +10 -15
- package/lib/cli/extension-command.js +226 -175
- package/lib/cli/extension.js +15 -19
- package/lib/cli/parser.js +19 -31
- package/lib/cli/plugin-command.js +8 -8
- package/lib/cli/utils.js +8 -14
- package/lib/config-file.js +21 -25
- package/lib/config.js +82 -64
- package/lib/constants.js +4 -13
- package/lib/extension/driver-config.js +171 -171
- package/lib/extension/extension-config.js +347 -126
- package/lib/extension/index.js +72 -58
- package/lib/extension/manifest.js +48 -57
- package/lib/extension/package-changed.js +9 -8
- package/lib/extension/plugin-config.js +62 -62
- package/lib/grid-register.js +29 -18
- package/lib/logger.js +1 -2
- package/lib/logsink.js +29 -31
- package/lib/main.js +111 -73
- package/lib/schema/arg-spec.js +10 -13
- package/lib/schema/cli-args.js +14 -37
- package/lib/schema/cli-transformers.js +7 -14
- package/lib/schema/keywords.js +15 -13
- package/lib/schema/schema.js +58 -75
- package/lib/utils.js +50 -25
- package/package.json +25 -18
- package/plugin.d.ts +1 -0
- package/plugin.js +13 -0
- package/scripts/autoinstall-extensions.js +177 -0
- package/support.d.ts +1 -0
- package/support.js +13 -0
- package/types/appium-manifest.ts +27 -15
- package/types/cli.ts +2 -9
- package/types/{external-manifest.ts → extension-manifest.ts} +21 -15
- package/types/index.ts +12 -5
- package/build/types/extension.d.ts +0 -43
- package/build/types/extension.d.ts.map +0 -1
- package/build/types/external-manifest.d.ts.map +0 -1
- package/scripts/postinstall.js +0 -71
- package/types/extension.ts +0 -56
|
@@ -23,21 +23,17 @@ var _manifest = require("./manifest");
|
|
|
23
23
|
|
|
24
24
|
var _pluginConfig = require("./plugin-config");
|
|
25
25
|
|
|
26
|
+
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
27
|
+
|
|
26
28
|
async function loadExtensions(appiumHome) {
|
|
27
29
|
var _DriverConfig$getInst, _PluginConfig$getInst;
|
|
28
30
|
|
|
29
31
|
const manifest = _manifest.Manifest.getInstance(appiumHome);
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const driverConfig = (_DriverConfig$getInst = _driverConfig.DriverConfig.getInstance(manifest)) !== null && _DriverConfig$getInst !== void 0 ? _DriverConfig$getInst : _driverConfig.DriverConfig.create(manifest, {
|
|
36
|
-
extData: drivers
|
|
37
|
-
});
|
|
38
|
-
const pluginConfig = (_PluginConfig$getInst = _pluginConfig.PluginConfig.getInstance(manifest)) !== null && _PluginConfig$getInst !== void 0 ? _PluginConfig$getInst : _pluginConfig.PluginConfig.create(manifest, {
|
|
39
|
-
extData: plugins
|
|
40
|
-
});
|
|
33
|
+
await manifest.read();
|
|
34
|
+
const driverConfig = (_DriverConfig$getInst = _driverConfig.DriverConfig.getInstance(manifest)) !== null && _DriverConfig$getInst !== void 0 ? _DriverConfig$getInst : _driverConfig.DriverConfig.create(manifest);
|
|
35
|
+
const pluginConfig = (_PluginConfig$getInst = _pluginConfig.PluginConfig.getInstance(manifest)) !== null && _PluginConfig$getInst !== void 0 ? _PluginConfig$getInst : _pluginConfig.PluginConfig.create(manifest);
|
|
36
|
+
await _bluebird.default.all([driverConfig.validate(), pluginConfig.validate()]);
|
|
41
37
|
return {
|
|
42
38
|
driverConfig,
|
|
43
39
|
pluginConfig
|
|
@@ -45,33 +41,34 @@ async function loadExtensions(appiumHome) {
|
|
|
45
41
|
}
|
|
46
42
|
|
|
47
43
|
function getActivePlugins(pluginConfig, usePlugins = []) {
|
|
48
|
-
return _lodash.default.compact(Object.keys(pluginConfig.installedExtensions).filter(pluginName => _lodash.default.includes(usePlugins, pluginName) || usePlugins.length === 1 && usePlugins[0] === _constants.USE_ALL_PLUGINS).map(pluginName => {
|
|
44
|
+
return new Map(_lodash.default.compact(Object.keys(pluginConfig.installedExtensions).filter(pluginName => _lodash.default.includes(usePlugins, pluginName) || usePlugins.length === 1 && usePlugins[0] === _constants.USE_ALL_PLUGINS).map(pluginName => {
|
|
49
45
|
try {
|
|
50
46
|
_logger.default.info(`Attempting to load plugin ${pluginName}...`);
|
|
51
47
|
|
|
52
48
|
const PluginClass = pluginConfig.require(pluginName);
|
|
53
49
|
|
|
54
|
-
PluginClass
|
|
55
|
-
return PluginClass;
|
|
50
|
+
return [PluginClass, pluginName];
|
|
56
51
|
} catch (err) {
|
|
57
52
|
_logger.default.error(`Could not load plugin '${pluginName}', so it will not be available. Error ` + `in loading the plugin was: ${err.message}`);
|
|
58
53
|
|
|
59
54
|
_logger.default.debug(err.stack);
|
|
60
55
|
}
|
|
61
|
-
}));
|
|
56
|
+
})));
|
|
62
57
|
}
|
|
63
58
|
|
|
64
59
|
function getActiveDrivers(driverConfig, useDrivers = []) {
|
|
65
|
-
return _lodash.default.compact(Object.keys(driverConfig.installedExtensions).filter(driverName => _lodash.default.includes(useDrivers, driverName) || useDrivers.length === 0).map(driverName => {
|
|
60
|
+
return new Map(_lodash.default.compact(Object.keys(driverConfig.installedExtensions).filter(driverName => _lodash.default.includes(useDrivers, driverName) || useDrivers.length === 0).map(driverName => {
|
|
66
61
|
try {
|
|
67
62
|
_logger.default.info(`Attempting to load driver ${driverName}...`);
|
|
68
63
|
|
|
69
|
-
|
|
64
|
+
const DriverClass = driverConfig.require(driverName);
|
|
65
|
+
|
|
66
|
+
return [DriverClass, driverName];
|
|
70
67
|
} catch (err) {
|
|
71
68
|
_logger.default.error(`Could not load driver '${driverName}', so it will not be available. Error ` + `in loading the driver was: ${err.message}`);
|
|
72
69
|
|
|
73
70
|
_logger.default.debug(err.stack);
|
|
74
71
|
}
|
|
75
|
-
}));
|
|
72
|
+
})));
|
|
76
73
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2FkRXh0ZW5zaW9ucyIsImFwcGl1bUhvbWUiLCJtYW5pZmVzdCIsIk1hbmlmZXN0IiwiZ2V0SW5zdGFuY2UiLCJyZWFkIiwiZHJpdmVyQ29uZmlnIiwiRHJpdmVyQ29uZmlnIiwiY3JlYXRlIiwicGx1Z2luQ29uZmlnIiwiUGx1Z2luQ29uZmlnIiwiQiIsImFsbCIsInZhbGlkYXRlIiwiZ2V0QWN0aXZlUGx1Z2lucyIsInVzZVBsdWdpbnMiLCJNYXAiLCJfIiwiY29tcGFjdCIsIk9iamVjdCIsImtleXMiLCJpbnN0YWxsZWRFeHRlbnNpb25zIiwiZmlsdGVyIiwicGx1Z2luTmFtZSIsImluY2x1ZGVzIiwibGVuZ3RoIiwiVVNFX0FMTF9QTFVHSU5TIiwibWFwIiwibG9nIiwiaW5mbyIsIlBsdWdpbkNsYXNzIiwicmVxdWlyZSIsImVyciIsImVycm9yIiwibWVzc2FnZSIsImRlYnVnIiwic3RhY2siLCJnZXRBY3RpdmVEcml2ZXJzIiwidXNlRHJpdmVycyIsImRyaXZlck5hbWUiLCJEcml2ZXJDbGFzcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7VVNFX0FMTF9QTFVHSU5TfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHtEcml2ZXJDb25maWd9IGZyb20gJy4vZHJpdmVyLWNvbmZpZyc7XG5pbXBvcnQge01hbmlmZXN0fSBmcm9tICcuL21hbmlmZXN0JztcbmltcG9ydCB7UGx1Z2luQ29uZmlnfSBmcm9tICcuL3BsdWdpbi1jb25maWcnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG4vKipcbiAqIExvYWRzIGV4dGVuc2lvbnMgYW5kIGNyZWF0ZXMgYEV4dGVuc2lvbkNvbmZpZ2AgaW5zdGFuY2VzLlxuICpcbiAqIC0gUmVhZHMgdGhlIG1hbmlmZXN0IGZpbGUsIGNyZWF0aW5nIGlmIG5lY2Vzc2FyeVxuICogLSBVc2luZyB0aGUgcGFyc2VkIGV4dGVuc2lvbiBkYXRhLCBjcmVhdGVzL2dldHMgdGhlIGBFeHRlbnNpb25Db25maWdgIHN1YmNsYXNzIGluc3RhbmNlc1xuICogLSBSZXR1cm5zIHRoZXNlIGluc3RhbmNlc1xuICpcbiAqIElmIGBhcHBpdW1Ib21lYCBpcyBuZWVkZWQsIHVzZSBgcmVzb2x2ZUFwcGl1bUhvbWVgIGZyb20gdGhlIGBlbnZgIG1vZHVsZSBpbiBgQGFwcGl1bS9zdXBwb3J0YC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxFeHRlbnNpb25Db25maWdzPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRFeHRlbnNpb25zKGFwcGl1bUhvbWUpIHtcbiAgY29uc3QgbWFuaWZlc3QgPSBNYW5pZmVzdC5nZXRJbnN0YW5jZShhcHBpdW1Ib21lKTtcbiAgYXdhaXQgbWFuaWZlc3QucmVhZCgpO1xuICBjb25zdCBkcml2ZXJDb25maWcgPSBEcml2ZXJDb25maWcuZ2V0SW5zdGFuY2UobWFuaWZlc3QpID8/IERyaXZlckNvbmZpZy5jcmVhdGUobWFuaWZlc3QpO1xuICBjb25zdCBwbHVnaW5Db25maWcgPSBQbHVnaW5Db25maWcuZ2V0SW5zdGFuY2UobWFuaWZlc3QpID8/IFBsdWdpbkNvbmZpZy5jcmVhdGUobWFuaWZlc3QpO1xuXG4gIGF3YWl0IEIuYWxsKFtkcml2ZXJDb25maWcudmFsaWRhdGUoKSwgcGx1Z2luQ29uZmlnLnZhbGlkYXRlKCldKTtcbiAgcmV0dXJuIHtkcml2ZXJDb25maWcsIHBsdWdpbkNvbmZpZ307XG59XG5cbi8qKlxuICogRmluZCBhbnkgcGx1Z2luIG5hbWUgd2hpY2ggaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgd2hpY2ggaGFzIGJlZW4gcmVxdWVzdGVkIGZvciBhY3RpdmF0aW9uIGJ5XG4gKiB1c2luZyB0aGUgLS11c2UtcGx1Z2lucyBmbGFnLCBhbmQgdHVybiBlYWNoIG9uZSBpbnRvIGl0cyBjbGFzcywgc28gd2UgY2FuIHNlbmQgdGhlbSBhcyBvYmplY3RzXG4gKiB0byB0aGUgc2VydmVyIGluaXQuIFdlIGFsc28gd2FudCB0byBzZW5kL2Fzc2lnbiB0aGVtIHRvIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIHVzZSB0aGVtXG4gKiB0byB3cmFwIGNvbW1hbmQgZXhlY3V0aW9uXG4gKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vcGx1Z2luLWNvbmZpZycpLlBsdWdpbkNvbmZpZ30gcGx1Z2luQ29uZmlnIC0gYSBwbHVnaW4gZXh0ZW5zaW9uIGNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmdbXX0gdXNlUGx1Z2luc1xuICogQHJldHVybnMge1BsdWdpbk5hbWVNYXB9IE1hcHBpbmcgb2YgUGx1Z2luQ2xhc3MgdG8gbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZlUGx1Z2lucyhwbHVnaW5Db25maWcsIHVzZVBsdWdpbnMgPSBbXSkge1xuICByZXR1cm4gbmV3IE1hcChcbiAgICBfLmNvbXBhY3QoXG4gICAgICBPYmplY3Qua2V5cyhwbHVnaW5Db25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucylcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAocGx1Z2luTmFtZSkgPT5cbiAgICAgICAgICAgIF8uaW5jbHVkZXModXNlUGx1Z2lucywgcGx1Z2luTmFtZSkgfHxcbiAgICAgICAgICAgICh1c2VQbHVnaW5zLmxlbmd0aCA9PT0gMSAmJiB1c2VQbHVnaW5zWzBdID09PSBVU0VfQUxMX1BMVUdJTlMpXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgocGx1Z2luTmFtZSkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsb2cuaW5mbyhgQXR0ZW1wdGluZyB0byBsb2FkIHBsdWdpbiAke3BsdWdpbk5hbWV9Li4uYCk7XG4gICAgICAgICAgICBjb25zdCBQbHVnaW5DbGFzcyA9IHBsdWdpbkNvbmZpZy5yZXF1aXJlKHBsdWdpbk5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIFtQbHVnaW5DbGFzcywgcGx1Z2luTmFtZV07XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgICAgIGBDb3VsZCBub3QgbG9hZCBwbHVnaW4gJyR7cGx1Z2luTmFtZX0nLCBzbyBpdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEVycm9yIGAgK1xuICAgICAgICAgICAgICAgIGBpbiBsb2FkaW5nIHRoZSBwbHVnaW4gd2FzOiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsb2cuZGVidWcoZXJyLnN0YWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKVxuICApO1xufVxuXG4vKipcbiAqIEZpbmQgYW55IGRyaXZlciBuYW1lIHdoaWNoIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHR1cm4gZWFjaCBvbmUgaW50byBpdHMgY2xhc3MsIHNvIHdlIGNhbiBzZW5kXG4gKiB0aGVtIGFzIG9iamVjdHMgdG8gdGhlIHNlcnZlciBpbml0IGluIGNhc2UgdGhleSBuZWVkIHRvIGFkZCBtZXRob2RzL3JvdXRlcyBvciB1cGRhdGUgdGhlIHNlcnZlci5cbiAqIElmIHRoZSAtLWRyaXZlcnMgZmxhZyB3YXMgZ2l2ZW4sIHRoaXMgbWV0aG9kIG9ubHkgbG9hZHMgdGhlIGdpdmVuIGRyaXZlcnMuXG4gKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vZHJpdmVyLWNvbmZpZycpLkRyaXZlckNvbmZpZ30gZHJpdmVyQ29uZmlnIC0gYSBkcml2ZXIgZXh0ZW5zaW9uIGNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmdbXX0gW3VzZURyaXZlcnNdIC0gb3B0aW9uYWwgbGlzdCBvZiBkcml2ZXJzIHRvIGxvYWRcbiAqIEByZXR1cm5zIHtEcml2ZXJOYW1lTWFwfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZlRHJpdmVycyhkcml2ZXJDb25maWcsIHVzZURyaXZlcnMgPSBbXSkge1xuICByZXR1cm4gbmV3IE1hcChcbiAgICBfLmNvbXBhY3QoXG4gICAgICBPYmplY3Qua2V5cyhkcml2ZXJDb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucylcbiAgICAgICAgLmZpbHRlcigoZHJpdmVyTmFtZSkgPT4gXy5pbmNsdWRlcyh1c2VEcml2ZXJzLCBkcml2ZXJOYW1lKSB8fCB1c2VEcml2ZXJzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgLm1hcCgoZHJpdmVyTmFtZSkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsb2cuaW5mbyhgQXR0ZW1wdGluZyB0byBsb2FkIGRyaXZlciAke2RyaXZlck5hbWV9Li4uYCk7XG4gICAgICAgICAgICBjb25zdCBEcml2ZXJDbGFzcyA9IGRyaXZlckNvbmZpZy5yZXF1aXJlKGRyaXZlck5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIFtEcml2ZXJDbGFzcywgZHJpdmVyTmFtZV07XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgICAgIGBDb3VsZCBub3QgbG9hZCBkcml2ZXIgJyR7ZHJpdmVyTmFtZX0nLCBzbyBpdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEVycm9yIGAgK1xuICAgICAgICAgICAgICAgIGBpbiBsb2FkaW5nIHRoZSBkcml2ZXIgd2FzOiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsb2cuZGVidWcoZXJyLnN0YWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKVxuICApO1xufVxuXG4vKipcbiAqIEEgbWFwcGluZyBvZiB7QGxpbmtjb2RlIFBsdWdpbkNsYXNzfSBjbGFzc2VzIHRvIHRoZWlyIG5hbWVzLlxuICogQHR5cGVkZWYge01hcDxQbHVnaW5DbGFzcyxzdHJpbmc+fSBQbHVnaW5OYW1lTWFwXG4gKi9cblxuLyoqXG4gKiBBIG1hcHBpbmcgb2Yge0BsaW5rY29kZSBEcml2ZXJDbGFzc30gY2xhc3NlcyB0byB0aGVpciBuYW1lcy5cbiAqIEB0eXBlZGVmIHtNYXA8RHJpdmVyQ2xhc3Msc3RyaW5nPn0gRHJpdmVyTmFtZU1hcFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlBsdWdpbkNsYXNzfSBQbHVnaW5DbGFzc1xuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkRyaXZlckNsYXNzfSBEcml2ZXJDbGFzc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYgRXh0ZW5zaW9uQ29uZmlnc1xuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vZHJpdmVyLWNvbmZpZycpLkRyaXZlckNvbmZpZ30gZHJpdmVyQ29uZmlnXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi9wbHVnaW4tY29uZmlnJykuUGx1Z2luQ29uZmlnfSBwbHVnaW5Db25maWdcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBYU8sZUFBZUEsY0FBZixDQUE4QkMsVUFBOUIsRUFBMEM7RUFBQTs7RUFDL0MsTUFBTUMsUUFBUSxHQUFHQyxrQkFBQSxDQUFTQyxXQUFULENBQXFCSCxVQUFyQixDQUFqQjs7RUFDQSxNQUFNQyxRQUFRLENBQUNHLElBQVQsRUFBTjtFQUNBLE1BQU1DLFlBQVksNEJBQUdDLDBCQUFBLENBQWFILFdBQWIsQ0FBeUJGLFFBQXpCLENBQUgseUVBQXlDSywwQkFBQSxDQUFhQyxNQUFiLENBQW9CTixRQUFwQixDQUEzRDtFQUNBLE1BQU1PLFlBQVksNEJBQUdDLDBCQUFBLENBQWFOLFdBQWIsQ0FBeUJGLFFBQXpCLENBQUgseUVBQXlDUSwwQkFBQSxDQUFhRixNQUFiLENBQW9CTixRQUFwQixDQUEzRDtFQUVBLE1BQU1TLGlCQUFBLENBQUVDLEdBQUYsQ0FBTSxDQUFDTixZQUFZLENBQUNPLFFBQWIsRUFBRCxFQUEwQkosWUFBWSxDQUFDSSxRQUFiLEVBQTFCLENBQU4sQ0FBTjtFQUNBLE9BQU87SUFBQ1AsWUFBRDtJQUFlRztFQUFmLENBQVA7QUFDRDs7QUFZTSxTQUFTSyxnQkFBVCxDQUEwQkwsWUFBMUIsRUFBd0NNLFVBQVUsR0FBRyxFQUFyRCxFQUF5RDtFQUM5RCxPQUFPLElBQUlDLEdBQUosQ0FDTEMsZUFBQSxDQUFFQyxPQUFGLENBQ0VDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZWCxZQUFZLENBQUNZLG1CQUF6QixFQUNHQyxNQURILENBRUtDLFVBQUQsSUFDRU4sZUFBQSxDQUFFTyxRQUFGLENBQVdULFVBQVgsRUFBdUJRLFVBQXZCLEtBQ0NSLFVBQVUsQ0FBQ1UsTUFBWCxLQUFzQixDQUF0QixJQUEyQlYsVUFBVSxDQUFDLENBQUQsQ0FBVixLQUFrQlcsMEJBSnBELEVBTUdDLEdBTkgsQ0FNUUosVUFBRCxJQUFnQjtJQUNuQixJQUFJO01BQ0ZLLGVBQUEsQ0FBSUMsSUFBSixDQUFVLDZCQUE0Qk4sVUFBVyxLQUFqRDs7TUFDQSxNQUFNTyxXQUFXLEdBQUdyQixZQUFZLENBQUNzQixPQUFiLENBQXFCUixVQUFyQixDQUFwQjs7TUFDQSxPQUFPLENBQUNPLFdBQUQsRUFBY1AsVUFBZCxDQUFQO0lBQ0QsQ0FKRCxDQUlFLE9BQU9TLEdBQVAsRUFBWTtNQUNaSixlQUFBLENBQUlLLEtBQUosQ0FDRywwQkFBeUJWLFVBQVcsd0NBQXJDLEdBQ0csOEJBQTZCUyxHQUFHLENBQUNFLE9BQVEsRUFGOUM7O01BSUFOLGVBQUEsQ0FBSU8sS0FBSixDQUFVSCxHQUFHLENBQUNJLEtBQWQ7SUFDRDtFQUNGLENBbEJILENBREYsQ0FESyxDQUFQO0FBdUJEOztBQVdNLFNBQVNDLGdCQUFULENBQTBCL0IsWUFBMUIsRUFBd0NnQyxVQUFVLEdBQUcsRUFBckQsRUFBeUQ7RUFDOUQsT0FBTyxJQUFJdEIsR0FBSixDQUNMQyxlQUFBLENBQUVDLE9BQUYsQ0FDRUMsTUFBTSxDQUFDQyxJQUFQLENBQVlkLFlBQVksQ0FBQ2UsbUJBQXpCLEVBQ0dDLE1BREgsQ0FDV2lCLFVBQUQsSUFBZ0J0QixlQUFBLENBQUVPLFFBQUYsQ0FBV2MsVUFBWCxFQUF1QkMsVUFBdkIsS0FBc0NELFVBQVUsQ0FBQ2IsTUFBWCxLQUFzQixDQUR0RixFQUVHRSxHQUZILENBRVFZLFVBQUQsSUFBZ0I7SUFDbkIsSUFBSTtNQUNGWCxlQUFBLENBQUlDLElBQUosQ0FBVSw2QkFBNEJVLFVBQVcsS0FBakQ7O01BQ0EsTUFBTUMsV0FBVyxHQUFHbEMsWUFBWSxDQUFDeUIsT0FBYixDQUFxQlEsVUFBckIsQ0FBcEI7O01BQ0EsT0FBTyxDQUFDQyxXQUFELEVBQWNELFVBQWQsQ0FBUDtJQUNELENBSkQsQ0FJRSxPQUFPUCxHQUFQLEVBQVk7TUFDWkosZUFBQSxDQUFJSyxLQUFKLENBQ0csMEJBQXlCTSxVQUFXLHdDQUFyQyxHQUNHLDhCQUE2QlAsR0FBRyxDQUFDRSxPQUFRLEVBRjlDOztNQUlBTixlQUFBLENBQUlPLEtBQUosQ0FBVUgsR0FBRyxDQUFDSSxLQUFkO0lBQ0Q7RUFDRixDQWRILENBREYsQ0FESyxDQUFQO0FBbUJEIn0=
|
|
@@ -89,7 +89,7 @@ export class Manifest {
|
|
|
89
89
|
* @param {string} pkgPath
|
|
90
90
|
* @returns {boolean} - `true` upon success, `false` if the extension is already registered.
|
|
91
91
|
*/
|
|
92
|
-
addExtensionFromPackage<ExtType extends import("
|
|
92
|
+
addExtensionFromPackage<ExtType extends import("@appium/types").ExtensionType>(pkgJson: ExtPackageJson<ExtType>, pkgPath: string): boolean;
|
|
93
93
|
/**
|
|
94
94
|
* Adds an extension to the manifest as was installed by the `appium` CLI. The
|
|
95
95
|
* `extData`, `extType`, and `extName` have already been determined.
|
|
@@ -99,9 +99,9 @@ export class Manifest {
|
|
|
99
99
|
* @param {ExtType} extType - `driver` or `plugin`
|
|
100
100
|
* @param {string} extName - Name of extension
|
|
101
101
|
* @param {ExtManifest<ExtType>} extData - Extension metadata
|
|
102
|
-
* @returns {
|
|
102
|
+
* @returns {ExtManifest<ExtType>} A clone of `extData`, potentially with a mutated `appiumVersion` field
|
|
103
103
|
*/
|
|
104
|
-
addExtension<ExtType_1 extends import("
|
|
104
|
+
addExtension<ExtType_1 extends import("@appium/types").ExtensionType>(extType: ExtType_1, extName: string, extData: ExtManifest<ExtType_1>): ExtManifest<ExtType_1>;
|
|
105
105
|
/**
|
|
106
106
|
* Returns the APPIUM_HOME path
|
|
107
107
|
*/
|
|
@@ -117,7 +117,7 @@ export class Manifest {
|
|
|
117
117
|
* @param {ExtType} extType
|
|
118
118
|
* @returns {ExtRecord<ExtType>}
|
|
119
119
|
*/
|
|
120
|
-
getExtensionData<ExtType_2 extends import("
|
|
120
|
+
getExtensionData<ExtType_2 extends import("@appium/types").ExtensionType>(extType: ExtType_2): ExtRecord<ExtType_2>;
|
|
121
121
|
/**
|
|
122
122
|
* Reads manifest from disk and _overwrites_ the internal data.
|
|
123
123
|
*
|
|
@@ -150,25 +150,25 @@ export class Manifest {
|
|
|
150
150
|
/**
|
|
151
151
|
* Type of the string referring to a driver (typically as a key or type string)
|
|
152
152
|
*/
|
|
153
|
-
export type DriverType = import('
|
|
153
|
+
export type DriverType = import('@appium/types').DriverType;
|
|
154
154
|
/**
|
|
155
155
|
* Type of the string referring to a plugin (typically as a key or type string)
|
|
156
156
|
*/
|
|
157
|
-
export type PluginType = import('
|
|
157
|
+
export type PluginType = import('@appium/types').PluginType;
|
|
158
158
|
export type SyncWithInstalledExtensionsOpts = {
|
|
159
159
|
/**
|
|
160
160
|
* - Maximum depth to recurse into subdirectories
|
|
161
161
|
*/
|
|
162
162
|
depthLimit?: number | undefined;
|
|
163
163
|
};
|
|
164
|
-
export type ManifestData = import('
|
|
165
|
-
export type InternalMetadata = import('
|
|
166
|
-
export type ExtPackageJson<T> = import('
|
|
167
|
-
export type ExtManifest<T> = import('
|
|
168
|
-
export type ExtRecord<T> = import('
|
|
164
|
+
export type ManifestData = import('appium/types').ManifestData;
|
|
165
|
+
export type InternalMetadata = import('appium/types').InternalMetadata;
|
|
166
|
+
export type ExtPackageJson<T> = import('appium/types').ExtPackageJson<T>;
|
|
167
|
+
export type ExtManifest<T> = import('appium/types').ExtManifest<T>;
|
|
168
|
+
export type ExtRecord<T> = import('appium/types').ExtRecord<T>;
|
|
169
169
|
/**
|
|
170
170
|
* Either `driver` or `plugin` rn
|
|
171
171
|
*/
|
|
172
|
-
export type ExtensionType = import('
|
|
172
|
+
export type ExtensionType = import('@appium/types').ExtensionType;
|
|
173
173
|
import _ from "lodash";
|
|
174
174
|
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../lib/extension/manifest.js"],"names":[],"mappings":"AAmGA;;;;GAIG;AACH;IA4DE;;;;;;OAMG;IACH,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../lib/extension/manifest.js"],"names":[],"mappings":"AAmGA;;;;GAIG;AACH;IA4DE;;;;;;OAMG;IACH,yEAEG;IArBH;;;;;;OAMG;IACH,sBAGC;IAzDD;;;;;;OAMG;IACH,cAAM;IAEN;;;;OAIG;IACH,oBAAY;IAEZ;;;;OAIG;IACH,eAHU,MAAM,CAGF;IAEd;;;;;;;;;OASG;IACH,iBAAS;IAET;;;;;;;;;OASG;IACH,iBAAS;IAyBT;;;;OAIG;IACH,6CAHW,+BAA+B,GAC7B,QAAQ,OAAO,CAAC,CAoB5B;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;;;OAQG;IACH,0HAHW,MAAM,GACJ,OAAO,CAuCnB;IAED;;;;;;;;;;OAUG;IACH,mGAJW,MAAM,2DAQhB;IAED;;OAEG;IACH,yBAEC;IAED;;OAEG;IACH,2BAEC;IAED;;;;;;OAMG;IACH,oHAEC;IAED;;;;;;;;;OASG;IACH,QAFa,QAAQ,YAAY,CAAC,CAuDjC;IAED;;;;;;OAMG;IACH,yBAaC;IAED;;;;;;;OAOG;IACH,SAFa,QAAQ,OAAO,CAAC,CAgC5B;CACF;;;;yBAIY,OAAO,eAAe,EAAE,UAAU;;;;yBAKlC,OAAO,eAAe,EAAE,UAAU;;;;;;;2BASlC,OAAO,cAAc,EAAE,YAAY;+BACnC,OAAO,cAAc,EAAE,gBAAgB;gCAKvC,OAAO,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;6BAKxC,OAAO,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;2BAKrC,OAAO,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;;;;4BAKnC,OAAO,eAAe,EAAE,aAAa"}
|
|
@@ -104,9 +104,14 @@ class Manifest {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
addExtensionFromPackage(pkgJson, pkgPath) {
|
|
107
|
+
var _pkgJson$peerDependen;
|
|
108
|
+
|
|
109
|
+
const extensionPath = _path.default.dirname(pkgPath);
|
|
110
|
+
|
|
107
111
|
const internal = {
|
|
108
112
|
pkgName: pkgJson.name,
|
|
109
113
|
version: pkgJson.version,
|
|
114
|
+
appiumVersion: (_pkgJson$peerDependen = pkgJson.peerDependencies) === null || _pkgJson$peerDependen === void 0 ? void 0 : _pkgJson$peerDependen.appium,
|
|
110
115
|
installType: _extensionConfig.INSTALL_TYPE_NPM,
|
|
111
116
|
installSpec: `${pkgJson.name}@${pkgJson.version}`
|
|
112
117
|
};
|
|
@@ -130,12 +135,15 @@ class Manifest {
|
|
|
130
135
|
|
|
131
136
|
return false;
|
|
132
137
|
} else {
|
|
133
|
-
throw new TypeError(`The extension in ${
|
|
138
|
+
throw new TypeError(`The extension in ${extensionPath} is neither a valid driver nor a valid plugin.`);
|
|
134
139
|
}
|
|
135
140
|
}
|
|
136
141
|
|
|
137
142
|
addExtension(extType, extName, extData) {
|
|
138
|
-
|
|
143
|
+
const data = _lodash.default.clone(extData);
|
|
144
|
+
|
|
145
|
+
this._data[`${extType}s`][extName] = data;
|
|
146
|
+
return data;
|
|
139
147
|
}
|
|
140
148
|
|
|
141
149
|
get appiumHome() {
|
|
@@ -166,6 +174,8 @@ class Manifest {
|
|
|
166
174
|
|
|
167
175
|
const yaml = await _support.fs.readFile(this._manifestPath, 'utf8');
|
|
168
176
|
data = _yaml.default.parse(yaml);
|
|
177
|
+
|
|
178
|
+
_logger.default.debug(`Parsed manifest file: ${JSON.stringify(data, null, 2)}`);
|
|
169
179
|
} catch (err) {
|
|
170
180
|
if (err.code === 'ENOENT') {
|
|
171
181
|
data = _lodash.default.cloneDeep(INITIAL_MANIFEST_DATA);
|
|
@@ -243,4 +253,4 @@ class Manifest {
|
|
|
243
253
|
}
|
|
244
254
|
|
|
245
255
|
exports.Manifest = Manifest;
|
|
246
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1NFQVJDSF9ERVBUSCIsIkRFRkFVTFRfRklORF9FWFRFTlNJT05TX09QVFMiLCJPYmplY3QiLCJmcmVlemUiLCJkZXB0aExpbWl0IiwiZmlsdGVyIiwiZmlsZXBhdGgiLCJwYXRoIiwiYmFzZW5hbWUiLCJzdGFydHNXaXRoIiwiQ09ORklHX1NDSEVNQV9SRVYiLCJDT05GSUdfREFUQV9EUklWRVJfS0VZIiwiRFJJVkVSX1RZUEUiLCJDT05GSUdfREFUQV9QTFVHSU5fS0VZIiwiUExVR0lOX1RZUEUiLCJJTklUSUFMX01BTklGRVNUX0RBVEEiLCJzY2hlbWFSZXYiLCJpc0V4dGVuc2lvbiIsInZhbHVlIiwiXyIsImlzUGxhaW5PYmplY3QiLCJhcHBpdW0iLCJpc1N0cmluZyIsIm5hbWUiLCJ2ZXJzaW9uIiwiaXNEcml2ZXIiLCJnZXQiLCJpc0FycmF5IiwiaXNQbHVnaW4iLCJNYW5pZmVzdCIsIl9kYXRhIiwiX2FwcGl1bUhvbWUiLCJfbWFuaWZlc3RQYXRoIiwiX3dyaXRpbmciLCJfcmVhZGluZyIsImNvbnN0cnVjdG9yIiwiYXBwaXVtSG9tZSIsImNsb25lRGVlcCIsImdldEluc3RhbmNlIiwibWVtb2l6ZSIsIl9nZXRJbnN0YW5jZSIsInN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9ucyIsIndhbGtPcHRzIiwiZGVmYXVsdHMiLCJkaWRDaGFuZ2UiLCJzdGF0cyIsImZzIiwid2FsayIsImlzRGlyZWN0b3J5IiwicGtnIiwiZW52IiwicmVhZFBhY2thZ2VJbkRpciIsImFkZGVkIiwiYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2UiLCJqb2luIiwiaGFzRHJpdmVyIiwiQm9vbGVhbiIsImRyaXZlcnMiLCJoYXNQbHVnaW4iLCJwbHVnaW5zIiwicGtnSnNvbiIsInBrZ1BhdGgiLCJpbnRlcm5hbCIsInBrZ05hbWUiLCJpbnN0YWxsVHlwZSIsIklOU1RBTExfVFlQRV9OUE0iLCJpbnN0YWxsU3BlYyIsImRyaXZlck5hbWUiLCJhZGRFeHRlbnNpb24iLCJvbWl0IiwicGx1Z2luTmFtZSIsIlR5cGVFcnJvciIsImRpcm5hbWUiLCJleHRUeXBlIiwiZXh0TmFtZSIsImV4dERhdGEiLCJtYW5pZmVzdFBhdGgiLCJnZXRFeHRlbnNpb25EYXRhIiwicmVhZCIsImRhdGEiLCJpc05ld0ZpbGUiLCJfc2V0TWFuaWZlc3RQYXRoIiwibG9nIiwiZGVidWciLCJ5YW1sIiwicmVhZEZpbGUiLCJZQU1MIiwicGFyc2UiLCJlcnIiLCJjb2RlIiwiRXJyb3IiLCJtZXNzYWdlIiwiaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQiLCJoYXNBcHBpdW1EZXBlbmRlbmN5Iiwid3JpdGUiLCJ1bmRlZmluZWQiLCJyZXNvbHZlTWFuaWZlc3RQYXRoIiwicmVsYXRpdmUiLCJta2RpcnAiLCJ3cml0ZUZpbGUiLCJzdHJpbmdpZnkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXh0ZW5zaW9uL21hbmlmZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kdWxlIGNvbnRhaW5pbmcge0BsaW5rIE1hbmlmZXN0fSB3aGljaCBoYW5kbGVzIHJlYWRpbmcgJiB3cml0aW5nIG9mIGV4dGVuc2lvbiBjb25maWcgZmlsZXMuXG4gKi9cblxuaW1wb3J0IHsgZW52LCBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgWUFNTCBmcm9tICd5YW1sJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBJTlNUQUxMX1RZUEVfTlBNIH0gZnJvbSAnLi9leHRlbnNpb24tY29uZmlnJztcbmltcG9ydCB7IHBhY2thZ2VEaWRDaGFuZ2UgfSBmcm9tICcuL3BhY2thZ2UtY2hhbmdlZCc7XG5cbi8qKlxuICogRGVmYXVsdCBkZXB0aCB0byBzZWFyY2ggaW4gZGlyZWN0b3J5IHRyZWUgZm9yIHdoYXRldmVyIGl0IGlzIHdlJ3JlIGxvb2tpbmcgZm9yLlxuICpcbiAqIEl0J3MgNCBiZWNhdXNlIHNtYWxsZXIgbnVtYmVycyBkaWRuJ3Qgd29yay5cbiAqL1xuY29uc3QgREVGQVVMVF9TRUFSQ0hfREVQVEggPSA0O1xuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyBmb3Ige0BsaW5rIGZpbmRFeHRlbnNpb25zfS5cbiAqIEB0eXBlIHtSZWFkb25seTxpbXBvcnQoJ2tsYXcnKS5PcHRpb25zPn1cbiAqL1xuY29uc3QgREVGQVVMVF9GSU5EX0VYVEVOU0lPTlNfT1BUUyA9IE9iamVjdC5mcmVlemUoe1xuICBkZXB0aExpbWl0OiBERUZBVUxUX1NFQVJDSF9ERVBUSCxcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgZmlsdGVyOiAoZmlsZXBhdGgpID0+ICFwYXRoLmJhc2VuYW1lKGZpbGVwYXRoKS5zdGFydHNXaXRoKCcuJyksXG59KTtcblxuLyoqXG4gKiBDdXJyZW50IGNvbmZpZ3VyYXRpb24gc2NoZW1hIHJldmlzaW9uIVxuICovXG5jb25zdCBDT05GSUdfU0NIRU1BX1JFViA9IDI7XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHByb3AgKGBkcml2ZXJzYCkgdXNlZCBpbiBgZXh0ZW5zaW9ucy55YW1sYCBmb3IgZHJpdmVycy5cbiAqIEB0eXBlIHtgJHt0eXBlb2YgRFJJVkVSX1RZUEV9c2B9XG4gKi9cbmNvbnN0IENPTkZJR19EQVRBX0RSSVZFUl9LRVkgPSBgJHtEUklWRVJfVFlQRX1zYDtcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcHJvcCAoYHBsdWdpbnNgKSB1c2VkIGluIGBleHRlbnNpb25zLnlhbWxgIGZvciBwbHVnaW5zLlxuICogQHR5cGUge2Ake3R5cGVvZiBQTFVHSU5fVFlQRX1zYH1cbiAqL1xuY29uc3QgQ09ORklHX0RBVEFfUExVR0lOX0tFWSA9IGAke1BMVUdJTl9UWVBFfXNgO1xuXG4vKipcbiAqIEB0eXBlIHtSZWFkb25seTxNYW5pZmVzdERhdGE+fVxuICovXG5jb25zdCBJTklUSUFMX01BTklGRVNUX0RBVEEgPSBPYmplY3QuZnJlZXplKHtcbiAgW0NPTkZJR19EQVRBX0RSSVZFUl9LRVldOiBPYmplY3QuZnJlZXplKHt9KSxcbiAgW0NPTkZJR19EQVRBX1BMVUdJTl9LRVldOiBPYmplY3QuZnJlZXplKHt9KSxcbiAgc2NoZW1hUmV2OiBDT05GSUdfU0NIRU1BX1JFVixcbn0pO1xuXG4vKipcbiAqIEdpdmVuIGEgYHBhY2thZ2UuanNvbmAgcmV0dXJuIGB0cnVlYCBpZiBpdCByZXByZXNlbnRzIGFuIEFwcGl1bSBFeHRlbnNpb24gKGVpdGhlciBhIGRyaXZlciBvciBwbHVnaW4pLlxuICpcbiAqIFRoZSBgcGFja2FnZS5qc29uYCBtdXN0IGhhdmUgYW4gYGFwcGl1bWAgcHJvcGVydHkgd2hpY2ggaXMgYW4gb2JqZWN0LlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgRXh0UGFja2FnZUpzb248RXh0ZW5zaW9uVHlwZT59XG4gKi9cbmZ1bmN0aW9uIGlzRXh0ZW5zaW9uICh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIF8uaXNQbGFpbk9iamVjdCh2YWx1ZSkgJiZcbiAgICBfLmlzUGxhaW5PYmplY3QodmFsdWUuYXBwaXVtKSAmJlxuICAgIF8uaXNTdHJpbmcodmFsdWUubmFtZSkgJiZcbiAgICBfLmlzU3RyaW5nKHZhbHVlLnZlcnNpb24pXG4gICk7XG59XG4vKipcbiAqIEdpdmVuIGEgYHBhY2thZ2UuanNvbmAsIHJldHVybiBgdHJ1ZWAgaWYgaXQgcmVwcmVzZW50cyBhbiBBcHBpdW0gRHJpdmVyLlxuICpcbiAqIFRvIGJlIGNvbnNpZGVyZWQgYSBkcml2ZXIsIGEgYHBhY2thZ2UuanNvbmAgbXVzdCBoYXZlIGEgZmllbGRzXG4gKiBgYXBwaXVtLmRyaXZlck5hbWVgLCBgYXBwaXVtLmF1dG9tYXRpb25OYW1lYCBhbmQgYGFwcGl1bS5wbGF0Zm9ybU5hbWVzYC5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRQYWNrYWdlSnNvbjxEcml2ZXJUeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNEcml2ZXIgKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgaXNFeHRlbnNpb24odmFsdWUpICYmXG4gICAgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5kcml2ZXJOYW1lJykpICYmXG4gICAgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5hdXRvbWF0aW9uTmFtZScpKSAmJlxuICAgIF8uaXNBcnJheShfLmdldCh2YWx1ZSwgJ2FwcGl1bS5wbGF0Zm9ybU5hbWVzJykpXG4gICk7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBgcGFja2FnZS5qc29uYCwgcmV0dXJuIGB0cnVlYCBpZiBpdCByZXByZXNlbnRzIGFuIEFwcGl1bSBQbHVnaW4uXG4gKlxuICogVG8gYmUgY29uc2lkZXJlZCBhIHBsdWdpbiwgYSBgcGFja2FnZS5qc29uYCBtdXN0IGhhdmUgYW4gYGFwcGl1bS5wbHVnaW5OYW1lYCBmaWVsZC5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRQYWNrYWdlSnNvbjxQbHVnaW5UeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNQbHVnaW4gKHZhbHVlKSB7XG4gIHJldHVybiBpc0V4dGVuc2lvbih2YWx1ZSkgJiYgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5wbHVnaW5OYW1lJykpO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgcmVhZGluZyAmIHdyaXRpbmcgb2YgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlcy5cbiAqXG4gKiBPbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGV4aXN0cyBwZXIgdmFsdWUgb2YgYEFQUElVTV9IT01FYC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBlbnRpcmUgY29udGVudHMgb2YgYSBwYXJzZWQgWUFNTCBleHRlbnNpb24gY29uZmlnIGZpbGUuXG4gICAqXG4gICAqIENvbnRhaW5zIHByb3hpZXMgZm9yIGF1dG9tYXRpYyBwZXJzaXN0ZW5jZSBvbiBkaXNrXG4gICAqIEB0eXBlIHtNYW5pZmVzdERhdGF9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZGF0YTtcblxuICAvKipcbiAgICogUGF0aCB0byBgQVBQSVVNX0hPTUVgLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7UmVhZG9ubHk8c3RyaW5nPn1cbiAgICovXG4gIF9hcHBpdW1Ib21lO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBleHRlbnNpb25zLnlhbWxgXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIE5vdCBzZXQgdW50aWwge0BsaW5rIE1hbmlmZXN0LnJlYWR9IGlzIGNhbGxlZC5cbiAgICovXG4gIF9tYW5pZmVzdFBhdGg7XG5cbiAgLyoqXG4gICAqIEhlbHBzIGF2b2lkIHdyaXRpbmcgbXVsdGlwbGUgdGltZXMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHVuZGVmaW5lZGAsIGNhbGxpbmcge0BsaW5rIE1hbmlmZXN0LndyaXRlfSB3aWxsIGNhdXNlIGl0IHRvIGJlXG4gICAqIHNldCB0byBhIGBQcm9taXNlYC4gV2hlbiB0aGUgY2FsbCB0byBgd3JpdGUoKWAgaXMgY29tcGxldGUsIHRoZSBgUHJvbWlzZWBcbiAgICogd2lsbCByZXNvbHZlIGFuZCB0aGVuIHRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgdG8gYHVuZGVmaW5lZGAuICBDb25jdXJyZW50IGNhbGxzXG4gICAqIG1hZGUgd2hpbGUgdGhpcyB2YWx1ZSBpcyBhIGBQcm9taXNlYCB3aWxsIHJldHVybiB0aGUgYFByb21pc2VgIGl0c2VsZi5cbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge1Byb21pc2U8Ym9vbGVhbj58dW5kZWZpbmVkfVxuICAgKi9cbiAgX3dyaXRpbmc7XG5cbiAgLyoqXG4gICAqIEhlbHBzIGF2b2lkIHJlYWRpbmcgbXVsdGlwbGUgdGltZXMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHVuZGVmaW5lZGAsIGNhbGxpbmcge0BsaW5rIE1hbmlmZXN0LnJlYWR9IHdpbGwgY2F1c2UgaXQgdG8gYmVcbiAgICogc2V0IHRvIGEgYFByb21pc2VgLiBXaGVuIHRoZSBjYWxsIHRvIGByZWFkKClgIGlzIGNvbXBsZXRlLCB0aGUgYFByb21pc2VgXG4gICAqIHdpbGwgcmVzb2x2ZSBhbmQgdGhlbiB0aGlzIHZhbHVlIHdpbGwgYmUgc2V0IHRvIGB1bmRlZmluZWRgLiAgQ29uY3VycmVudCBjYWxsc1xuICAgKiBtYWRlIHdoaWxlIHRoaXMgdmFsdWUgaXMgYSBgUHJvbWlzZWAgd2lsbCByZXR1cm4gdGhlIGBQcm9taXNlYCBpdHNlbGYuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0eXBlIHtQcm9taXNlPHZvaWQ+fHVuZGVmaW5lZH1cbiAgICovXG4gIF9yZWFkaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIGludGVybmFsIGRhdGEgdG8gYSBmcmVzaCBjbG9uZSBvZiB7QGxpbmsgSU5JVElBTF9NQU5JRkVTVF9EQVRBfVxuICAgKlxuICAgKiBVc2Uge0BsaW5rIE1hbmlmZXN0LmdldEluc3RhbmNlfSBpbnN0ZWFkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IgKGFwcGl1bUhvbWUpIHtcbiAgICB0aGlzLl9hcHBpdW1Ib21lID0gYXBwaXVtSG9tZTtcbiAgICB0aGlzLl9kYXRhID0gXy5jbG9uZURlZXAoSU5JVElBTF9NQU5JRkVTVF9EQVRBKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IG9yIGV4aXN0aW5nIHtAbGluayBNYW5pZmVzdH0gaW5zdGFuY2UsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBgYXBwaXVtSG9tZWAuXG4gICAqXG4gICAqIE1haW50YWlucyBvbmUgaW5zdGFuY2UgcGVyIHZhbHVlIG9mIGBhcHBpdW1Ib21lYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwcGl1bUhvbWUgLSBQYXRoIHRvIGBBUFBJVU1fSE9NRWBcbiAgICogQHJldHVybnMge01hbmlmZXN0fVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlID0gXy5tZW1vaXplKGZ1bmN0aW9uIF9nZXRJbnN0YW5jZSAoXG4gICAgYXBwaXVtSG9tZSxcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBNYW5pZmVzdChhcHBpdW1Ib21lKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGBBUFBJVU1fSE9NRWAgZm9yIGluc3RhbGxlZCBleHRlbnNpb25zIGFuZCBhZGRzIHRoZW0gdG8gdGhlIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0ge1N5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9uc09wdHN9IG9wdHNcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IGB0cnVlYCBpZiBhbnkgZXh0ZW5zaW9ucyB3ZXJlIGFkZGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIHN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9ucyAoe2RlcHRoTGltaXQgPSBERUZBVUxUX1NFQVJDSF9ERVBUSH0gPSB7fSkge1xuICAgIGNvbnN0IHdhbGtPcHRzID0gXy5kZWZhdWx0cyh7ZGVwdGhMaW1pdH0sIERFRkFVTFRfRklORF9FWFRFTlNJT05TX09QVFMpO1xuICAgIC8vIHRoaXMgY291bGQgYmUgcGFyYWxsZWxpemVkLCBidXQgd2UgY2FuJ3QgdXNlIGZzLndhbGsgYXMgYW4gYXN5bmMgaXRlcmF0b3JcbiAgICBsZXQgZGlkQ2hhbmdlID0gZmFsc2U7XG4gICAgZm9yIGF3YWl0IChjb25zdCB7c3RhdHMsIHBhdGg6IGZpbGVwYXRofSBvZiBmcy53YWxrKFxuICAgICAgdGhpcy5fYXBwaXVtSG9tZSxcbiAgICAgIHdhbGtPcHRzLFxuICAgICkpIHtcbiAgICAgIGlmIChmaWxlcGF0aCAhPT0gdGhpcy5fYXBwaXVtSG9tZSAmJiBzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGtnID0gYXdhaXQgZW52LnJlYWRQYWNrYWdlSW5EaXIoZmlsZXBhdGgpO1xuICAgICAgICAgIGlmIChwa2cgJiYgaXNFeHRlbnNpb24ocGtnKSkge1xuICAgICAgICAgICAgLy8gaXQncyBwb3NzaWJsZSB0aGF0IHRoaXMgZXh0ZW5zaW9uIGFscmVhZHkgZXhpc3RzIGluIHRoZSBtYW5pZmVzdCxcbiAgICAgICAgICAgIC8vIHNvIG9ubHkgdXBkYXRlIGBkaWRDaGFuZ2VgIGlmIGl0J3MgbmV3LlxuICAgICAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLmFkZEV4dGVuc2lvbkZyb21QYWNrYWdlKFxuICAgICAgICAgICAgICBwa2csXG4gICAgICAgICAgICAgIHBhdGguam9pbihmaWxlcGF0aCwgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRpZENoYW5nZSA9IGRpZENoYW5nZSB8fCBhZGRlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpZENoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBkcml2ZXIgd2l0aCBuYW1lIGBuYW1lYCBpcyByZWdpc3RlcmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIERyaXZlciBuYW1lXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaGFzRHJpdmVyIChuYW1lKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5fZGF0YS5kcml2ZXJzW25hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBwbHVnaW4gd2l0aCBuYW1lIGBuYW1lYCBpcyByZWdpc3RlcmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFBsdWdpbiBuYW1lXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaGFzUGx1Z2luIChuYW1lKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5fZGF0YS5wbHVnaW5zW25hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIHBhdGggdG8gYSBgcGFja2FnZS5qc29uYCwgYWRkIGl0IGFzIGVpdGhlciBhIGRyaXZlciBvciBwbHVnaW4gdG8gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBXaWxsIF9ub3RfIG92ZXJ3cml0ZSBleGlzdGluZyBlbnRyaWVzLlxuICAgKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAgICogQHBhcmFtIHtFeHRQYWNrYWdlSnNvbjxFeHRUeXBlPn0gcGtnSnNvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGtnUGF0aFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBgdHJ1ZWAgdXBvbiBzdWNjZXNzLCBgZmFsc2VgIGlmIHRoZSBleHRlbnNpb24gaXMgYWxyZWFkeSByZWdpc3RlcmVkLlxuICAgKi9cbiAgYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2UgKHBrZ0pzb24sIHBrZ1BhdGgpIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7SW50ZXJuYWxNZXRhZGF0YX1cbiAgICAgKi9cbiAgICBjb25zdCBpbnRlcm5hbCA9IHtcbiAgICAgIHBrZ05hbWU6IHBrZ0pzb24ubmFtZSxcbiAgICAgIHZlcnNpb246IHBrZ0pzb24udmVyc2lvbixcbiAgICAgIGluc3RhbGxUeXBlOiBJTlNUQUxMX1RZUEVfTlBNLFxuICAgICAgaW5zdGFsbFNwZWM6IGAke3BrZ0pzb24ubmFtZX1AJHtwa2dKc29uLnZlcnNpb259YCxcbiAgICB9O1xuXG4gICAgaWYgKGlzRHJpdmVyKHBrZ0pzb24pKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzRHJpdmVyKHBrZ0pzb24uYXBwaXVtLmRyaXZlck5hbWUpKSB7XG4gICAgICAgIHRoaXMuYWRkRXh0ZW5zaW9uKERSSVZFUl9UWVBFLCBwa2dKc29uLmFwcGl1bS5kcml2ZXJOYW1lLCB7XG4gICAgICAgICAgLi4uXy5vbWl0KHBrZ0pzb24uYXBwaXVtLCAnZHJpdmVyTmFtZScpLFxuICAgICAgICAgIC4uLmludGVybmFsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGlzUGx1Z2luKHBrZ0pzb24pKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzUGx1Z2luKHBrZ0pzb24uYXBwaXVtLnBsdWdpbk5hbWUpKSB7XG4gICAgICAgIHRoaXMuYWRkRXh0ZW5zaW9uKFBMVUdJTl9UWVBFLCBwa2dKc29uLmFwcGl1bS5wbHVnaW5OYW1lLCB7XG4gICAgICAgICAgLi4uXy5vbWl0KHBrZ0pzb24uYXBwaXVtLCAncGx1Z2luTmFtZScpLFxuICAgICAgICAgIC4uLmludGVybmFsLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGBUaGUgZXh0ZW5zaW9uIGluICR7cGF0aC5kaXJuYW1lKFxuICAgICAgICAgIHBrZ1BhdGgsXG4gICAgICAgICl9IGlzIG5laXRoZXIgYSB2YWxpZCBkcml2ZXIgbm9yIGEgdmFsaWQgcGx1Z2luLmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGV4dGVuc2lvbiB0byB0aGUgbWFuaWZlc3QgYXMgd2FzIGluc3RhbGxlZCBieSB0aGUgYGFwcGl1bWAgQ0xJLiAgVGhlXG4gICAqIGBleHREYXRhYCwgYGV4dFR5cGVgLCBhbmQgYGV4dE5hbWVgIGhhdmUgYWxyZWFkeSBiZWVuIGRldGVybWluZWQuXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgTWFuaWZlc3QuYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2V9IGZvciBhZGRpbmcgYW4gZXh0ZW5zaW9uIGZyb20gYW4gb24tZGlzayBwYWNrYWdlLlxuICAgKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAgICogQHBhcmFtIHtFeHRUeXBlfSBleHRUeXBlIC0gYGRyaXZlcmAgb3IgYHBsdWdpbmBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWUgLSBOYW1lIG9mIGV4dGVuc2lvblxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PEV4dFR5cGU+fSBleHREYXRhIC0gRXh0ZW5zaW9uIG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgYWRkRXh0ZW5zaW9uIChleHRUeXBlLCBleHROYW1lLCBleHREYXRhKSB7XG4gICAgdGhpcy5fZGF0YVtgJHtleHRUeXBlfXNgXVtleHROYW1lXSA9IGV4dERhdGE7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgQVBQSVVNX0hPTUUgcGF0aFxuICAgKi9cbiAgZ2V0IGFwcGl1bUhvbWUgKCkge1xuICAgIHJldHVybiB0aGlzLl9hcHBpdW1Ib21lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGVcbiAgICovXG4gIGdldCBtYW5pZmVzdFBhdGggKCkge1xuICAgIHJldHVybiB0aGlzLl9tYW5pZmVzdFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBleHRlbnNpb24gZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHR5cGUuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dFR5cGVcbiAgICogQHJldHVybnMge0V4dFJlY29yZDxFeHRUeXBlPn1cbiAgICovXG4gIGdldEV4dGVuc2lvbkRhdGEgKGV4dFR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8gKGAke2V4dFR5cGV9c2ApXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBtYW5pZmVzdCBmcm9tIGRpc2sgYW5kIF9vdmVyd3JpdGVzXyB0aGUgaW50ZXJuYWwgZGF0YS5cbiAgICpcbiAgICogSWYgdGhlIG1hbmlmZXN0IGRvZXMgbm90IGV4aXN0IG9uIGRpc2ssIGFuIHtAbGluayBJTklUSUFMX01BTklGRVNUX0RBVEEgXCJlbXB0eVwifSBtYW5pZmVzdCBmaWxlIHdpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogSWYgYEFQUElVTV9IT01FYCBjb250YWlucyBhIGBwYWNrYWdlLmpzb25gIHdpdGggYW4gYGFwcGl1bWAgZGVwZW5kZW5jeSwgdGhlbiBhIGhhc2ggb2YgdGhlIGBwYWNrYWdlLmpzb25gIHdpbGwgYmUgdGFrZW4uIElmIHRoaXMgaGFzaCBkaWZmZXJzIGZyb20gdGhlIGxhc3QgaGFzaCwgdGhlIGNvbnRlbnRzIG9mIGBBUFBJVU1fSE9NRS9ub2RlX21vZHVsZXNgIHdpbGwgYmUgc2Nhbm5lZCBmb3IgZXh0ZW5zaW9ucyB0aGF0IG1heSBoYXZlIGJlZW4gaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIGBhcHBpdW1gIENMSS4gIEFueSBmb3VuZCBleHRlbnNpb25zIHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1hbmlmZXN0IGZpbGUsIGFuZCBpZiBzbywgdGhlIG1hbmlmZXN0IGZpbGUgd2lsbCBiZSB3cml0dGVuIHRvIGRpc2suXG4gICAqXG4gICAqIE9ubHkgb25lIHJlYWQgb3BlcmF0aW9uIHNob3VsZCBoYXBwZW4gYXQgYSB0aW1lLiAgVGhpcyBpcyBjb250cm9sbGVkIHZpYSB0aGUge0BsaW5rIE1hbmlmZXN0Ll9yZWFkaW5nfSBwcm9wZXJ0eS5cbiAgICogQHJldHVybnMge1Byb21pc2U8TWFuaWZlc3REYXRhPn0gVGhlIGRhdGFcbiAgICovXG4gIGFzeW5jIHJlYWQgKCkge1xuICAgIGlmICh0aGlzLl9yZWFkaW5nKSB7XG4gICAgICBhd2FpdCB0aGlzLl9yZWFkaW5nO1xuICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVhZGluZyA9IChhc3luYyAoKSA9PiB7XG4gICAgICAvKiogQHR5cGUge01hbmlmZXN0RGF0YX0gKi9cbiAgICAgIGxldCBkYXRhO1xuICAgICAgbGV0IGlzTmV3RmlsZSA9IGZhbHNlO1xuICAgICAgYXdhaXQgdGhpcy5fc2V0TWFuaWZlc3RQYXRoKCk7XG4gICAgICB0cnkge1xuICAgICAgICBsb2cuZGVidWcoYFJlYWRpbmcgJHt0aGlzLl9tYW5pZmVzdFBhdGh9Li4uYCk7XG4gICAgICAgIGNvbnN0IHlhbWwgPSBhd2FpdCBmcy5yZWFkRmlsZSh0aGlzLl9tYW5pZmVzdFBhdGgsICd1dGY4Jyk7XG4gICAgICAgIGRhdGEgPSBZQU1MLnBhcnNlKHlhbWwpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICBkYXRhID0gXy5jbG9uZURlZXAoSU5JVElBTF9NQU5JRkVTVF9EQVRBKTtcbiAgICAgICAgICBpc05ld0ZpbGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLl9tYW5pZmVzdFBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYEFwcGl1bSBoYWQgdHJvdWJsZSBsb2FkaW5nIHRoZSBleHRlbnNpb24gaW5zdGFsbGF0aW9uIGAgK1xuICAgICAgICAgICAgICAgIGBjYWNoZSBmaWxlICgke3RoaXMuX21hbmlmZXN0UGF0aH0pLiBJdCBtYXkgYmUgaW52YWxpZCBZQU1MLiBTcGVjaWZpYyBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgQXBwaXVtIGVuY291bnRlcmVkIGFuIHVua25vd24gcHJvYmxlbS4gU3BlY2lmaWMgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgICAgbGV0IGluc3RhbGxlZEV4dGVuc2lvbnNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICBpZiAoXG4gICAgICAgIGF3YWl0IGVudi5oYXNBcHBpdW1EZXBlbmRlbmN5KHRoaXMuYXBwaXVtSG9tZSkgJiZcbiAgICAgICAgKGF3YWl0IHBhY2thZ2VEaWRDaGFuZ2UodGhpcy5hcHBpdW1Ib21lKSlcbiAgICAgICkge1xuICAgICAgICBpbnN0YWxsZWRFeHRlbnNpb25zQ2hhbmdlZCA9IGF3YWl0IHRoaXMuc3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc05ld0ZpbGUgfHwgaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZSgpO1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX3JlYWRpbmc7XG4gICAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fcmVhZGluZyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlcyB7QGxpbmsgTWFuaWZlc3QuX21hbmlmZXN0UGF0aH0gaXMgc2V0LlxuICAgKlxuICAgKiBDcmVhdGVzIHRoZSBkaXJlY3RvcnkgaWYgbmVjZXNzYXJ5LlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgX3NldE1hbmlmZXN0UGF0aCAoKSB7XG4gICAgaWYgKCF0aGlzLl9tYW5pZmVzdFBhdGgpIHtcbiAgICAgIHRoaXMuX21hbmlmZXN0UGF0aCA9IGF3YWl0IGVudi5yZXNvbHZlTWFuaWZlc3RQYXRoKHRoaXMuX2FwcGl1bUhvbWUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChwYXRoLnJlbGF0aXZlKHRoaXMuX2FwcGl1bUhvbWUsIHRoaXMuX21hbmlmZXN0UGF0aCkuc3RhcnRzV2l0aCgnLicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTWlzbWF0Y2ggYmV0d2VlbiBsb2NhdGlvbiBvZiBBUFBJVU1fSE9NRSBhbmQgbWFuaWZlc3QgZmlsZS4gQVBQSVVNX0hPTUU6ICR7dGhpcy5hcHBpdW1Ib21lfSwgbWFuaWZlc3QgZmlsZTogJHt0aGlzLl9tYW5pZmVzdFBhdGh9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWFuaWZlc3RQYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyB0aGUgZGF0YSBpZiBpdCBuZWVkIHMgd3JpdGluZy5cbiAgICpcbiAgICogSWYgdGhlIGBzY2hlbWFSZXZgIHByb3AgbmVlZHMgdXBkYXRpbmcsIHRoZSBmaWxlIHdpbGwgYmUgd3JpdHRlbi5cbiAgICpcbiAgICogQHRvZG8gSWYgdGhpcyBiZWNvbWVzIHRvbyBtdWNoIG9mIGEgYm90dGxlbmVjaywgdGhyb3R0bGUgaXQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIHRoZSBkYXRhIHdhcyB3cml0dGVuXG4gICAqL1xuICBhc3luYyB3cml0ZSAoKSB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0aW5nO1xuICAgIH1cbiAgICB0aGlzLl93cml0aW5nID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuX3NldE1hbmlmZXN0UGF0aCgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZnMubWtkaXJwKHBhdGguZGlybmFtZSh0aGlzLl9tYW5pZmVzdFBhdGgpKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcGl1bSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIHRoZSBtYW5pZmVzdCBmaWxlOiAke3BhdGguZGlybmFtZShcbiAgICAgICAgICAgIHRoaXMuX21hbmlmZXN0UGF0aCxcbiAgICAgICAgICApfS4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShcbiAgICAgICAgICB0aGlzLl9tYW5pZmVzdFBhdGgsXG4gICAgICAgICAgWUFNTC5zdHJpbmdpZnkodGhpcy5fZGF0YSksXG4gICAgICAgICAgJ3V0ZjgnLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcGl1bSBjb3VsZCBub3Qgd3JpdGUgdG8gbWFuaWZlc3QgYXQgJHt0aGlzLl9tYW5pZmVzdFBhdGh9IHVzaW5nIEFQUElVTV9IT01FICR7dGhpcy5fYXBwaXVtSG9tZX0uIGAgK1xuICAgICAgICAgICAgYFBsZWFzZSBlbnN1cmUgaXQgaXMgd3JpdGFibGUuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dyaXRpbmc7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3dyaXRpbmcgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVHlwZSBvZiB0aGUgc3RyaW5nIHJlZmVycmluZyB0byBhIGRyaXZlciAodHlwaWNhbGx5IGFzIGEga2V5IG9yIHR5cGUgc3RyaW5nKVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKi9cblxuLyoqXG4gKiBUeXBlIG9mIHRoZSBzdHJpbmcgcmVmZXJyaW5nIHRvIGEgcGx1Z2luICh0eXBpY2FsbHkgYXMgYSBrZXkgb3IgdHlwZSBzdHJpbmcpXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIFN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9uc09wdHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbZGVwdGhMaW1pdF0gLSBNYXhpbXVtIGRlcHRoIHRvIHJlY3Vyc2UgaW50byBzdWJkaXJlY3Rvcmllc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuTWFuaWZlc3REYXRhfSBNYW5pZmVzdERhdGFcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkludGVybmFsTWV0YWRhdGF9IEludGVybmFsTWV0YWRhdGFcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9leHRlcm5hbC1tYW5pZmVzdCcpLkV4dFBhY2thZ2VKc29uPFQ+fSBFeHRQYWNrYWdlSnNvblxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkV4dE1hbmlmZXN0PFQ+fSBFeHRNYW5pZmVzdFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkV4dFJlY29yZDxUPn0gRXh0UmVjb3JkXG4gKi9cblxuLyoqXG4gKiBFaXRoZXIgYGRyaXZlcmAgb3IgYHBsdWdpbmAgcm5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuRXh0ZW5zaW9uVHlwZX0gRXh0ZW5zaW9uVHlwZVxuICovXG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFJQTs7QUFDQTs7QUFDQTs7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
|
|
256
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1NFQVJDSF9ERVBUSCIsIkRFRkFVTFRfRklORF9FWFRFTlNJT05TX09QVFMiLCJPYmplY3QiLCJmcmVlemUiLCJkZXB0aExpbWl0IiwiZmlsdGVyIiwiZmlsZXBhdGgiLCJwYXRoIiwiYmFzZW5hbWUiLCJzdGFydHNXaXRoIiwiQ09ORklHX1NDSEVNQV9SRVYiLCJDT05GSUdfREFUQV9EUklWRVJfS0VZIiwiRFJJVkVSX1RZUEUiLCJDT05GSUdfREFUQV9QTFVHSU5fS0VZIiwiUExVR0lOX1RZUEUiLCJJTklUSUFMX01BTklGRVNUX0RBVEEiLCJzY2hlbWFSZXYiLCJpc0V4dGVuc2lvbiIsInZhbHVlIiwiXyIsImlzUGxhaW5PYmplY3QiLCJhcHBpdW0iLCJpc1N0cmluZyIsIm5hbWUiLCJ2ZXJzaW9uIiwiaXNEcml2ZXIiLCJnZXQiLCJpc0FycmF5IiwiaXNQbHVnaW4iLCJNYW5pZmVzdCIsIl9kYXRhIiwiX2FwcGl1bUhvbWUiLCJfbWFuaWZlc3RQYXRoIiwiX3dyaXRpbmciLCJfcmVhZGluZyIsImNvbnN0cnVjdG9yIiwiYXBwaXVtSG9tZSIsImNsb25lRGVlcCIsImdldEluc3RhbmNlIiwibWVtb2l6ZSIsIl9nZXRJbnN0YW5jZSIsInN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9ucyIsIndhbGtPcHRzIiwiZGVmYXVsdHMiLCJkaWRDaGFuZ2UiLCJzdGF0cyIsImZzIiwid2FsayIsImlzRGlyZWN0b3J5IiwicGtnIiwiZW52IiwicmVhZFBhY2thZ2VJbkRpciIsImFkZGVkIiwiYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2UiLCJqb2luIiwiaGFzRHJpdmVyIiwiQm9vbGVhbiIsImRyaXZlcnMiLCJoYXNQbHVnaW4iLCJwbHVnaW5zIiwicGtnSnNvbiIsInBrZ1BhdGgiLCJleHRlbnNpb25QYXRoIiwiZGlybmFtZSIsImludGVybmFsIiwicGtnTmFtZSIsImFwcGl1bVZlcnNpb24iLCJwZWVyRGVwZW5kZW5jaWVzIiwiaW5zdGFsbFR5cGUiLCJJTlNUQUxMX1RZUEVfTlBNIiwiaW5zdGFsbFNwZWMiLCJkcml2ZXJOYW1lIiwiYWRkRXh0ZW5zaW9uIiwib21pdCIsInBsdWdpbk5hbWUiLCJUeXBlRXJyb3IiLCJleHRUeXBlIiwiZXh0TmFtZSIsImV4dERhdGEiLCJkYXRhIiwiY2xvbmUiLCJtYW5pZmVzdFBhdGgiLCJnZXRFeHRlbnNpb25EYXRhIiwicmVhZCIsImlzTmV3RmlsZSIsIl9zZXRNYW5pZmVzdFBhdGgiLCJsb2ciLCJkZWJ1ZyIsInlhbWwiLCJyZWFkRmlsZSIsIllBTUwiLCJwYXJzZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcnIiLCJjb2RlIiwiRXJyb3IiLCJtZXNzYWdlIiwiaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQiLCJoYXNBcHBpdW1EZXBlbmRlbmN5IiwicGFja2FnZURpZENoYW5nZSIsIndyaXRlIiwidW5kZWZpbmVkIiwicmVzb2x2ZU1hbmlmZXN0UGF0aCIsInJlbGF0aXZlIiwibWtkaXJwIiwid3JpdGVGaWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2V4dGVuc2lvbi9tYW5pZmVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1vZHVsZSBjb250YWluaW5nIHtAbGluayBNYW5pZmVzdH0gd2hpY2ggaGFuZGxlcyByZWFkaW5nICYgd3JpdGluZyBvZiBleHRlbnNpb24gY29uZmlnIGZpbGVzLlxuICovXG5cbmltcG9ydCB7ZW52LCBmc30gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBZQU1MIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEV9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQge0lOU1RBTExfVFlQRV9OUE19IGZyb20gJy4vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQge3BhY2thZ2VEaWRDaGFuZ2V9IGZyb20gJy4vcGFja2FnZS1jaGFuZ2VkJztcblxuLyoqXG4gKiBEZWZhdWx0IGRlcHRoIHRvIHNlYXJjaCBpbiBkaXJlY3RvcnkgdHJlZSBmb3Igd2hhdGV2ZXIgaXQgaXMgd2UncmUgbG9va2luZyBmb3IuXG4gKlxuICogSXQncyA0IGJlY2F1c2Ugc21hbGxlciBudW1iZXJzIGRpZG4ndCB3b3JrLlxuICovXG5jb25zdCBERUZBVUxUX1NFQVJDSF9ERVBUSCA9IDQ7XG5cbi8qKlxuICogRGVmYXVsdCBvcHRpb25zIGZvciB7QGxpbmsgZmluZEV4dGVuc2lvbnN9LlxuICogQHR5cGUge1JlYWRvbmx5PGltcG9ydCgna2xhdycpLk9wdGlvbnM+fVxuICovXG5jb25zdCBERUZBVUxUX0ZJTkRfRVhURU5TSU9OU19PUFRTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGRlcHRoTGltaXQ6IERFRkFVTFRfU0VBUkNIX0RFUFRILFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBmaWx0ZXI6IChmaWxlcGF0aCkgPT4gIXBhdGguYmFzZW5hbWUoZmlsZXBhdGgpLnN0YXJ0c1dpdGgoJy4nKSxcbn0pO1xuXG4vKipcbiAqIEN1cnJlbnQgY29uZmlndXJhdGlvbiBzY2hlbWEgcmV2aXNpb24hXG4gKi9cbmNvbnN0IENPTkZJR19TQ0hFTUFfUkVWID0gMjtcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcHJvcCAoYGRyaXZlcnNgKSB1c2VkIGluIGBleHRlbnNpb25zLnlhbWxgIGZvciBkcml2ZXJzLlxuICogQHR5cGUge2Ake3R5cGVvZiBEUklWRVJfVFlQRX1zYH1cbiAqL1xuY29uc3QgQ09ORklHX0RBVEFfRFJJVkVSX0tFWSA9IGAke0RSSVZFUl9UWVBFfXNgO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwcm9wIChgcGx1Z2luc2ApIHVzZWQgaW4gYGV4dGVuc2lvbnMueWFtbGAgZm9yIHBsdWdpbnMuXG4gKiBAdHlwZSB7YCR7dHlwZW9mIFBMVUdJTl9UWVBFfXNgfVxuICovXG5jb25zdCBDT05GSUdfREFUQV9QTFVHSU5fS0VZID0gYCR7UExVR0lOX1RZUEV9c2A7XG5cbi8qKlxuICogQHR5cGUge1JlYWRvbmx5PE1hbmlmZXN0RGF0YT59XG4gKi9cbmNvbnN0IElOSVRJQUxfTUFOSUZFU1RfREFUQSA9IE9iamVjdC5mcmVlemUoe1xuICBbQ09ORklHX0RBVEFfRFJJVkVSX0tFWV06IE9iamVjdC5mcmVlemUoe30pLFxuICBbQ09ORklHX0RBVEFfUExVR0lOX0tFWV06IE9iamVjdC5mcmVlemUoe30pLFxuICBzY2hlbWFSZXY6IENPTkZJR19TQ0hFTUFfUkVWLFxufSk7XG5cbi8qKlxuICogR2l2ZW4gYSBgcGFja2FnZS5qc29uYCByZXR1cm4gYHRydWVgIGlmIGl0IHJlcHJlc2VudHMgYW4gQXBwaXVtIEV4dGVuc2lvbiAoZWl0aGVyIGEgZHJpdmVyIG9yIHBsdWdpbikuXG4gKlxuICogVGhlIGBwYWNrYWdlLmpzb25gIG11c3QgaGF2ZSBhbiBgYXBwaXVtYCBwcm9wZXJ0eSB3aGljaCBpcyBhbiBvYmplY3QuXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRQYWNrYWdlSnNvbjxFeHRlbnNpb25UeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNFeHRlbnNpb24odmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICBfLmlzUGxhaW5PYmplY3QodmFsdWUpICYmXG4gICAgXy5pc1BsYWluT2JqZWN0KHZhbHVlLmFwcGl1bSkgJiZcbiAgICBfLmlzU3RyaW5nKHZhbHVlLm5hbWUpICYmXG4gICAgXy5pc1N0cmluZyh2YWx1ZS52ZXJzaW9uKVxuICApO1xufVxuLyoqXG4gKiBHaXZlbiBhIGBwYWNrYWdlLmpzb25gLCByZXR1cm4gYHRydWVgIGlmIGl0IHJlcHJlc2VudHMgYW4gQXBwaXVtIERyaXZlci5cbiAqXG4gKiBUbyBiZSBjb25zaWRlcmVkIGEgZHJpdmVyLCBhIGBwYWNrYWdlLmpzb25gIG11c3QgaGF2ZSBhIGZpZWxkc1xuICogYGFwcGl1bS5kcml2ZXJOYW1lYCwgYGFwcGl1bS5hdXRvbWF0aW9uTmFtZWAgYW5kIGBhcHBpdW0ucGxhdGZvcm1OYW1lc2AuXG4gKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBWYWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgRXh0UGFja2FnZUpzb248RHJpdmVyVHlwZT59XG4gKi9cbmZ1bmN0aW9uIGlzRHJpdmVyKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgaXNFeHRlbnNpb24odmFsdWUpICYmXG4gICAgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5kcml2ZXJOYW1lJykpICYmXG4gICAgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5hdXRvbWF0aW9uTmFtZScpKSAmJlxuICAgIF8uaXNBcnJheShfLmdldCh2YWx1ZSwgJ2FwcGl1bS5wbGF0Zm9ybU5hbWVzJykpXG4gICk7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBgcGFja2FnZS5qc29uYCwgcmV0dXJuIGB0cnVlYCBpZiBpdCByZXByZXNlbnRzIGFuIEFwcGl1bSBQbHVnaW4uXG4gKlxuICogVG8gYmUgY29uc2lkZXJlZCBhIHBsdWdpbiwgYSBgcGFja2FnZS5qc29uYCBtdXN0IGhhdmUgYW4gYGFwcGl1bS5wbHVnaW5OYW1lYCBmaWVsZC5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRQYWNrYWdlSnNvbjxQbHVnaW5UeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNQbHVnaW4odmFsdWUpIHtcbiAgcmV0dXJuIGlzRXh0ZW5zaW9uKHZhbHVlKSAmJiBfLmlzU3RyaW5nKF8uZ2V0KHZhbHVlLCAnYXBwaXVtLnBsdWdpbk5hbWUnKSk7XG59XG5cbi8qKlxuICogSGFuZGxlcyByZWFkaW5nICYgd3JpdGluZyBvZiBleHRlbnNpb24gY29uZmlnIGZpbGVzLlxuICpcbiAqIE9ubHkgb25lIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgZXhpc3RzIHBlciB2YWx1ZSBvZiBgQVBQSVVNX0hPTUVgLlxuICovXG5leHBvcnQgY2xhc3MgTWFuaWZlc3Qge1xuICAvKipcbiAgICogVGhlIGVudGlyZSBjb250ZW50cyBvZiBhIHBhcnNlZCBZQU1MIGV4dGVuc2lvbiBjb25maWcgZmlsZS5cbiAgICpcbiAgICogQ29udGFpbnMgcHJveGllcyBmb3IgYXV0b21hdGljIHBlcnNpc3RlbmNlIG9uIGRpc2tcbiAgICogQHR5cGUge01hbmlmZXN0RGF0YX1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9kYXRhO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBBUFBJVU1fSE9NRWAuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0eXBlIHtSZWFkb25seTxzdHJpbmc+fVxuICAgKi9cbiAgX2FwcGl1bUhvbWU7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gYGV4dGVuc2lvbnMueWFtbGBcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogTm90IHNldCB1bnRpbCB7QGxpbmsgTWFuaWZlc3QucmVhZH0gaXMgY2FsbGVkLlxuICAgKi9cbiAgX21hbmlmZXN0UGF0aDtcblxuICAvKipcbiAgICogSGVscHMgYXZvaWQgd3JpdGluZyBtdWx0aXBsZSB0aW1lcy5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBgdW5kZWZpbmVkYCwgY2FsbGluZyB7QGxpbmsgTWFuaWZlc3Qud3JpdGV9IHdpbGwgY2F1c2UgaXQgdG8gYmVcbiAgICogc2V0IHRvIGEgYFByb21pc2VgLiBXaGVuIHRoZSBjYWxsIHRvIGB3cml0ZSgpYCBpcyBjb21wbGV0ZSwgdGhlIGBQcm9taXNlYFxuICAgKiB3aWxsIHJlc29sdmUgYW5kIHRoZW4gdGhpcyB2YWx1ZSB3aWxsIGJlIHNldCB0byBgdW5kZWZpbmVkYC4gIENvbmN1cnJlbnQgY2FsbHNcbiAgICogbWFkZSB3aGlsZSB0aGlzIHZhbHVlIGlzIGEgYFByb21pc2VgIHdpbGwgcmV0dXJuIHRoZSBgUHJvbWlzZWAgaXRzZWxmLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7UHJvbWlzZTxib29sZWFuPnx1bmRlZmluZWR9XG4gICAqL1xuICBfd3JpdGluZztcblxuICAvKipcbiAgICogSGVscHMgYXZvaWQgcmVhZGluZyBtdWx0aXBsZSB0aW1lcy5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBgdW5kZWZpbmVkYCwgY2FsbGluZyB7QGxpbmsgTWFuaWZlc3QucmVhZH0gd2lsbCBjYXVzZSBpdCB0byBiZVxuICAgKiBzZXQgdG8gYSBgUHJvbWlzZWAuIFdoZW4gdGhlIGNhbGwgdG8gYHJlYWQoKWAgaXMgY29tcGxldGUsIHRoZSBgUHJvbWlzZWBcbiAgICogd2lsbCByZXNvbHZlIGFuZCB0aGVuIHRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgdG8gYHVuZGVmaW5lZGAuICBDb25jdXJyZW50IGNhbGxzXG4gICAqIG1hZGUgd2hpbGUgdGhpcyB2YWx1ZSBpcyBhIGBQcm9taXNlYCB3aWxsIHJldHVybiB0aGUgYFByb21pc2VgIGl0c2VsZi5cbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge1Byb21pc2U8dm9pZD58dW5kZWZpbmVkfVxuICAgKi9cbiAgX3JlYWRpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgaW50ZXJuYWwgZGF0YSB0byBhIGZyZXNoIGNsb25lIG9mIHtAbGluayBJTklUSUFMX01BTklGRVNUX0RBVEF9XG4gICAqXG4gICAqIFVzZSB7QGxpbmsgTWFuaWZlc3QuZ2V0SW5zdGFuY2V9IGluc3RlYWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcHBpdW1Ib21lKSB7XG4gICAgdGhpcy5fYXBwaXVtSG9tZSA9IGFwcGl1bUhvbWU7XG4gICAgdGhpcy5fZGF0YSA9IF8uY2xvbmVEZWVwKElOSVRJQUxfTUFOSUZFU1RfREFUQSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBvciBleGlzdGluZyB7QGxpbmsgTWFuaWZlc3R9IGluc3RhbmNlLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgYGFwcGl1bUhvbWVgLlxuICAgKlxuICAgKiBNYWludGFpbnMgb25lIGluc3RhbmNlIHBlciB2YWx1ZSBvZiBgYXBwaXVtSG9tZWAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lIC0gUGF0aCB0byBgQVBQSVVNX0hPTUVgXG4gICAqIEByZXR1cm5zIHtNYW5pZmVzdH1cbiAgICovXG4gIHN0YXRpYyBnZXRJbnN0YW5jZSA9IF8ubWVtb2l6ZShmdW5jdGlvbiBfZ2V0SW5zdGFuY2UoYXBwaXVtSG9tZSkge1xuICAgIHJldHVybiBuZXcgTWFuaWZlc3QoYXBwaXVtSG9tZSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBTZWFyY2hlcyBgQVBQSVVNX0hPTUVgIGZvciBpbnN0YWxsZWQgZXh0ZW5zaW9ucyBhbmQgYWRkcyB0aGVtIHRvIHRoZSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIHtTeW5jV2l0aEluc3RhbGxlZEV4dGVuc2lvbnNPcHRzfSBvcHRzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBgdHJ1ZWAgaWYgYW55IGV4dGVuc2lvbnMgd2VyZSBhZGRlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBhc3luYyBzeW5jV2l0aEluc3RhbGxlZEV4dGVuc2lvbnMoe2RlcHRoTGltaXQgPSBERUZBVUxUX1NFQVJDSF9ERVBUSH0gPSB7fSkge1xuICAgIGNvbnN0IHdhbGtPcHRzID0gXy5kZWZhdWx0cyh7ZGVwdGhMaW1pdH0sIERFRkFVTFRfRklORF9FWFRFTlNJT05TX09QVFMpO1xuICAgIC8vIHRoaXMgY291bGQgYmUgcGFyYWxsZWxpemVkLCBidXQgd2UgY2FuJ3QgdXNlIGZzLndhbGsgYXMgYW4gYXN5bmMgaXRlcmF0b3JcbiAgICBsZXQgZGlkQ2hhbmdlID0gZmFsc2U7XG4gICAgZm9yIGF3YWl0IChjb25zdCB7c3RhdHMsIHBhdGg6IGZpbGVwYXRofSBvZiBmcy53YWxrKHRoaXMuX2FwcGl1bUhvbWUsIHdhbGtPcHRzKSkge1xuICAgICAgaWYgKGZpbGVwYXRoICE9PSB0aGlzLl9hcHBpdW1Ib21lICYmIHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwa2cgPSBhd2FpdCBlbnYucmVhZFBhY2thZ2VJbkRpcihmaWxlcGF0aCk7XG4gICAgICAgICAgaWYgKHBrZyAmJiBpc0V4dGVuc2lvbihwa2cpKSB7XG4gICAgICAgICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBleHRlbnNpb24gYWxyZWFkeSBleGlzdHMgaW4gdGhlIG1hbmlmZXN0LFxuICAgICAgICAgICAgLy8gc28gb25seSB1cGRhdGUgYGRpZENoYW5nZWAgaWYgaXQncyBuZXcuXG4gICAgICAgICAgICBjb25zdCBhZGRlZCA9IHRoaXMuYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2UocGtnLCBwYXRoLmpvaW4oZmlsZXBhdGgsICdwYWNrYWdlLmpzb24nKSk7XG4gICAgICAgICAgICBkaWRDaGFuZ2UgPSBkaWRDaGFuZ2UgfHwgYWRkZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHt9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkaWRDaGFuZ2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgZHJpdmVyIHdpdGggbmFtZSBgbmFtZWAgaXMgcmVnaXN0ZXJlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBEcml2ZXIgbmFtZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGhhc0RyaXZlcihuYW1lKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5fZGF0YS5kcml2ZXJzW25hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBwbHVnaW4gd2l0aCBuYW1lIGBuYW1lYCBpcyByZWdpc3RlcmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFBsdWdpbiBuYW1lXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaGFzUGx1Z2luKG5hbWUpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLl9kYXRhLnBsdWdpbnNbbmFtZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgcGF0aCB0byBhIGBwYWNrYWdlLmpzb25gLCBhZGQgaXQgYXMgZWl0aGVyIGEgZHJpdmVyIG9yIHBsdWdpbiB0byB0aGUgbWFuaWZlc3QuXG4gICAqXG4gICAqIFdpbGwgX25vdF8gb3ZlcndyaXRlIGV4aXN0aW5nIGVudHJpZXMuXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge0V4dFBhY2thZ2VKc29uPEV4dFR5cGU+fSBwa2dKc29uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwa2dQYXRoXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIGB0cnVlYCB1cG9uIHN1Y2Nlc3MsIGBmYWxzZWAgaWYgdGhlIGV4dGVuc2lvbiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXG4gICAqL1xuICBhZGRFeHRlbnNpb25Gcm9tUGFja2FnZShwa2dKc29uLCBwa2dQYXRoKSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uUGF0aCA9IHBhdGguZGlybmFtZShwa2dQYXRoKTtcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtJbnRlcm5hbE1ldGFkYXRhfVxuICAgICAqL1xuICAgIGNvbnN0IGludGVybmFsID0ge1xuICAgICAgcGtnTmFtZTogcGtnSnNvbi5uYW1lLFxuICAgICAgdmVyc2lvbjogcGtnSnNvbi52ZXJzaW9uLFxuICAgICAgYXBwaXVtVmVyc2lvbjogcGtnSnNvbi5wZWVyRGVwZW5kZW5jaWVzPy5hcHBpdW0sXG4gICAgICBpbnN0YWxsVHlwZTogSU5TVEFMTF9UWVBFX05QTSxcbiAgICAgIGluc3RhbGxTcGVjOiBgJHtwa2dKc29uLm5hbWV9QCR7cGtnSnNvbi52ZXJzaW9ufWAsXG4gICAgfTtcblxuICAgIGlmIChpc0RyaXZlcihwa2dKc29uKSkge1xuICAgICAgaWYgKCF0aGlzLmhhc0RyaXZlcihwa2dKc29uLmFwcGl1bS5kcml2ZXJOYW1lKSkge1xuICAgICAgICB0aGlzLmFkZEV4dGVuc2lvbihEUklWRVJfVFlQRSwgcGtnSnNvbi5hcHBpdW0uZHJpdmVyTmFtZSwge1xuICAgICAgICAgIC4uLl8ub21pdChwa2dKc29uLmFwcGl1bSwgJ2RyaXZlck5hbWUnKSxcbiAgICAgICAgICAuLi5pbnRlcm5hbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoaXNQbHVnaW4ocGtnSnNvbikpIHtcbiAgICAgIGlmICghdGhpcy5oYXNQbHVnaW4ocGtnSnNvbi5hcHBpdW0ucGx1Z2luTmFtZSkpIHtcbiAgICAgICAgdGhpcy5hZGRFeHRlbnNpb24oUExVR0lOX1RZUEUsIHBrZ0pzb24uYXBwaXVtLnBsdWdpbk5hbWUsIHtcbiAgICAgICAgICAuLi5fLm9taXQocGtnSnNvbi5hcHBpdW0sICdwbHVnaW5OYW1lJyksXG4gICAgICAgICAgLi4uaW50ZXJuYWwsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFRoZSBleHRlbnNpb24gaW4gJHtleHRlbnNpb25QYXRofSBpcyBuZWl0aGVyIGEgdmFsaWQgZHJpdmVyIG5vciBhIHZhbGlkIHBsdWdpbi5gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGV4dGVuc2lvbiB0byB0aGUgbWFuaWZlc3QgYXMgd2FzIGluc3RhbGxlZCBieSB0aGUgYGFwcGl1bWAgQ0xJLiAgVGhlXG4gICAqIGBleHREYXRhYCwgYGV4dFR5cGVgLCBhbmQgYGV4dE5hbWVgIGhhdmUgYWxyZWFkeSBiZWVuIGRldGVybWluZWQuXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgTWFuaWZlc3QuYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2V9IGZvciBhZGRpbmcgYW4gZXh0ZW5zaW9uIGZyb20gYW4gb24tZGlzayBwYWNrYWdlLlxuICAgKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAgICogQHBhcmFtIHtFeHRUeXBlfSBleHRUeXBlIC0gYGRyaXZlcmAgb3IgYHBsdWdpbmBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWUgLSBOYW1lIG9mIGV4dGVuc2lvblxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PEV4dFR5cGU+fSBleHREYXRhIC0gRXh0ZW5zaW9uIG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIHtFeHRNYW5pZmVzdDxFeHRUeXBlPn0gQSBjbG9uZSBvZiBgZXh0RGF0YWAsIHBvdGVudGlhbGx5IHdpdGggYSBtdXRhdGVkIGBhcHBpdW1WZXJzaW9uYCBmaWVsZFxuICAgKi9cbiAgYWRkRXh0ZW5zaW9uKGV4dFR5cGUsIGV4dE5hbWUsIGV4dERhdGEpIHtcbiAgICBjb25zdCBkYXRhID0gXy5jbG9uZShleHREYXRhKTtcbiAgICB0aGlzLl9kYXRhW2Ake2V4dFR5cGV9c2BdW2V4dE5hbWVdID0gZGF0YTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBBUFBJVU1fSE9NRSBwYXRoXG4gICAqL1xuICBnZXQgYXBwaXVtSG9tZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwaXVtSG9tZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlXG4gICAqL1xuICBnZXQgbWFuaWZlc3RQYXRoKCkge1xuICAgIHJldHVybiB0aGlzLl9tYW5pZmVzdFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBleHRlbnNpb24gZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHR5cGUuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dFR5cGVcbiAgICogQHJldHVybnMge0V4dFJlY29yZDxFeHRUeXBlPn1cbiAgICovXG4gIGdldEV4dGVuc2lvbkRhdGEoZXh0VHlwZSkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhWy8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoYCR7ZXh0VHlwZX1zYCldO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIG1hbmlmZXN0IGZyb20gZGlzayBhbmQgX292ZXJ3cml0ZXNfIHRoZSBpbnRlcm5hbCBkYXRhLlxuICAgKlxuICAgKiBJZiB0aGUgbWFuaWZlc3QgZG9lcyBub3QgZXhpc3Qgb24gZGlzaywgYW4ge0BsaW5rIElOSVRJQUxfTUFOSUZFU1RfREFUQSBcImVtcHR5XCJ9IG1hbmlmZXN0IGZpbGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKlxuICAgKiBJZiBgQVBQSVVNX0hPTUVgIGNvbnRhaW5zIGEgYHBhY2thZ2UuanNvbmAgd2l0aCBhbiBgYXBwaXVtYCBkZXBlbmRlbmN5LCB0aGVuIGEgaGFzaCBvZiB0aGUgYHBhY2thZ2UuanNvbmAgd2lsbCBiZSB0YWtlbi4gSWYgdGhpcyBoYXNoIGRpZmZlcnMgZnJvbSB0aGUgbGFzdCBoYXNoLCB0aGUgY29udGVudHMgb2YgYEFQUElVTV9IT01FL25vZGVfbW9kdWxlc2Agd2lsbCBiZSBzY2FubmVkIGZvciBleHRlbnNpb25zIHRoYXQgbWF5IGhhdmUgYmVlbiBpbnN0YWxsZWQgb3V0c2lkZSBvZiB0aGUgYGFwcGl1bWAgQ0xJLiAgQW55IGZvdW5kIGV4dGVuc2lvbnMgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWFuaWZlc3QgZmlsZSwgYW5kIGlmIHNvLCB0aGUgbWFuaWZlc3QgZmlsZSB3aWxsIGJlIHdyaXR0ZW4gdG8gZGlzay5cbiAgICpcbiAgICogT25seSBvbmUgcmVhZCBvcGVyYXRpb24gc2hvdWxkIGhhcHBlbiBhdCBhIHRpbWUuICBUaGlzIGlzIGNvbnRyb2xsZWQgdmlhIHRoZSB7QGxpbmsgTWFuaWZlc3QuX3JlYWRpbmd9IHByb3BlcnR5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNYW5pZmVzdERhdGE+fSBUaGUgZGF0YVxuICAgKi9cbiAgYXN5bmMgcmVhZCgpIHtcbiAgICBpZiAodGhpcy5fcmVhZGluZykge1xuICAgICAgYXdhaXQgdGhpcy5fcmVhZGluZztcbiAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgIH1cblxuICAgIHRoaXMuX3JlYWRpbmcgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgLyoqIEB0eXBlIHtNYW5pZmVzdERhdGF9ICovXG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGxldCBpc05ld0ZpbGUgPSBmYWxzZTtcbiAgICAgIGF3YWl0IHRoaXMuX3NldE1hbmlmZXN0UGF0aCgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbG9nLmRlYnVnKGBSZWFkaW5nICR7dGhpcy5fbWFuaWZlc3RQYXRofS4uLmApO1xuICAgICAgICBjb25zdCB5YW1sID0gYXdhaXQgZnMucmVhZEZpbGUodGhpcy5fbWFuaWZlc3RQYXRoLCAndXRmOCcpO1xuICAgICAgICBkYXRhID0gWUFNTC5wYXJzZSh5YW1sKTtcbiAgICAgICAgbG9nLmRlYnVnKGBQYXJzZWQgbWFuaWZlc3QgZmlsZTogJHtKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKX1gKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgZGF0YSA9IF8uY2xvbmVEZWVwKElOSVRJQUxfTUFOSUZFU1RfREFUQSk7XG4gICAgICAgICAgaXNOZXdGaWxlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5fbWFuaWZlc3RQYXRoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBBcHBpdW0gaGFkIHRyb3VibGUgbG9hZGluZyB0aGUgZXh0ZW5zaW9uIGluc3RhbGxhdGlvbiBgICtcbiAgICAgICAgICAgICAgICBgY2FjaGUgZmlsZSAoJHt0aGlzLl9tYW5pZmVzdFBhdGh9KS4gSXQgbWF5IGJlIGludmFsaWQgWUFNTC4gU3BlY2lmaWMgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgQXBwaXVtIGVuY291bnRlcmVkIGFuIHVua25vd24gcHJvYmxlbS4gU3BlY2lmaWMgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgICBsZXQgaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgIGlmIChcbiAgICAgICAgKGF3YWl0IGVudi5oYXNBcHBpdW1EZXBlbmRlbmN5KHRoaXMuYXBwaXVtSG9tZSkpICYmXG4gICAgICAgIChhd2FpdCBwYWNrYWdlRGlkQ2hhbmdlKHRoaXMuYXBwaXVtSG9tZSkpXG4gICAgICApIHtcbiAgICAgICAgaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQgPSBhd2FpdCB0aGlzLnN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9ucygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNOZXdGaWxlIHx8IGluc3RhbGxlZEV4dGVuc2lvbnNDaGFuZ2VkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMud3JpdGUoKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9yZWFkaW5nO1xuICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3JlYWRpbmcgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMge0BsaW5rIE1hbmlmZXN0Ll9tYW5pZmVzdFBhdGh9IGlzIHNldC5cbiAgICpcbiAgICogQ3JlYXRlcyB0aGUgZGlyZWN0b3J5IGlmIG5lY2Vzc2FyeS5cbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAgICovXG4gIGFzeW5jIF9zZXRNYW5pZmVzdFBhdGgoKSB7XG4gICAgaWYgKCF0aGlzLl9tYW5pZmVzdFBhdGgpIHtcbiAgICAgIHRoaXMuX21hbmlmZXN0UGF0aCA9IGF3YWl0IGVudi5yZXNvbHZlTWFuaWZlc3RQYXRoKHRoaXMuX2FwcGl1bUhvbWUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChwYXRoLnJlbGF0aXZlKHRoaXMuX2FwcGl1bUhvbWUsIHRoaXMuX21hbmlmZXN0UGF0aCkuc3RhcnRzV2l0aCgnLicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTWlzbWF0Y2ggYmV0d2VlbiBsb2NhdGlvbiBvZiBBUFBJVU1fSE9NRSBhbmQgbWFuaWZlc3QgZmlsZS4gQVBQSVVNX0hPTUU6ICR7dGhpcy5hcHBpdW1Ib21lfSwgbWFuaWZlc3QgZmlsZTogJHt0aGlzLl9tYW5pZmVzdFBhdGh9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9tYW5pZmVzdFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBkYXRhIGlmIGl0IG5lZWQgcyB3cml0aW5nLlxuICAgKlxuICAgKiBJZiB0aGUgYHNjaGVtYVJldmAgcHJvcCBuZWVkcyB1cGRhdGluZywgdGhlIGZpbGUgd2lsbCBiZSB3cml0dGVuLlxuICAgKlxuICAgKiBAdG9kbyBJZiB0aGlzIGJlY29tZXMgdG9vIG11Y2ggb2YgYSBib3R0bGVuZWNrLCB0aHJvdHRsZSBpdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IFdoZXRoZXIgdGhlIGRhdGEgd2FzIHdyaXR0ZW5cbiAgICovXG4gIGFzeW5jIHdyaXRlKCkge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5fd3JpdGluZztcbiAgICB9XG4gICAgdGhpcy5fd3JpdGluZyA9IChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLl9zZXRNYW5pZmVzdFBhdGgoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZzLm1rZGlycChwYXRoLmRpcm5hbWUodGhpcy5fbWFuaWZlc3RQYXRoKSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBcHBpdW0gY291bGQgbm90IGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGZvciB0aGUgbWFuaWZlc3QgZmlsZTogJHtwYXRoLmRpcm5hbWUoXG4gICAgICAgICAgICB0aGlzLl9tYW5pZmVzdFBhdGhcbiAgICAgICAgICApfS4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHRoaXMuX21hbmlmZXN0UGF0aCwgWUFNTC5zdHJpbmdpZnkodGhpcy5fZGF0YSksICd1dGY4Jyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwaXVtIGNvdWxkIG5vdCB3cml0ZSB0byBtYW5pZmVzdCBhdCAke3RoaXMuX21hbmlmZXN0UGF0aH0gdXNpbmcgQVBQSVVNX0hPTUUgJHt0aGlzLl9hcHBpdW1Ib21lfS4gYCArXG4gICAgICAgICAgICBgUGxlYXNlIGVuc3VyZSBpdCBpcyB3cml0YWJsZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl93cml0aW5nO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl93cml0aW5nID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFR5cGUgb2YgdGhlIHN0cmluZyByZWZlcnJpbmcgdG8gYSBkcml2ZXIgKHR5cGljYWxseSBhcyBhIGtleSBvciB0eXBlIHN0cmluZylcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKi9cblxuLyoqXG4gKiBUeXBlIG9mIHRoZSBzdHJpbmcgcmVmZXJyaW5nIHRvIGEgcGx1Z2luICh0eXBpY2FsbHkgYXMgYSBrZXkgb3IgdHlwZSBzdHJpbmcpXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgU3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zT3B0c1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtkZXB0aExpbWl0XSAtIE1heGltdW0gZGVwdGggdG8gcmVjdXJzZSBpbnRvIHN1YmRpcmVjdG9yaWVzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5NYW5pZmVzdERhdGF9IE1hbmlmZXN0RGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuSW50ZXJuYWxNZXRhZGF0YX0gSW50ZXJuYWxNZXRhZGF0YVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dFBhY2thZ2VKc29uPFQ+fSBFeHRQYWNrYWdlSnNvblxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dE1hbmlmZXN0PFQ+fSBFeHRNYW5pZmVzdFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dFJlY29yZDxUPn0gRXh0UmVjb3JkXG4gKi9cblxuLyoqXG4gKiBFaXRoZXIgYGRyaXZlcmAgb3IgYHBsdWdpbmAgcm5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFPQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUE3QjtBQU1BLE1BQU1DLDRCQUE0QixHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztFQUNqREMsVUFBVSxFQUFFSixvQkFEcUM7RUFHakRLLE1BQU0sRUFBR0MsUUFBRCxJQUFjLENBQUNDLGFBQUEsQ0FBS0MsUUFBTCxDQUFjRixRQUFkLEVBQXdCRyxVQUF4QixDQUFtQyxHQUFuQztBQUgwQixDQUFkLENBQXJDO0FBU0EsTUFBTUMsaUJBQWlCLEdBQUcsQ0FBMUI7QUFNQSxNQUFNQyxzQkFBc0IsR0FBSSxHQUFFQyxzQkFBWSxHQUE5QztBQU1BLE1BQU1DLHNCQUFzQixHQUFJLEdBQUVDLHNCQUFZLEdBQTlDO0FBS0EsTUFBTUMscUJBQXFCLEdBQUdiLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0VBQzFDLENBQUNRLHNCQUFELEdBQTBCVCxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLENBRGdCO0VBRTFDLENBQUNVLHNCQUFELEdBQTBCWCxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLENBRmdCO0VBRzFDYSxTQUFTLEVBQUVOO0FBSCtCLENBQWQsQ0FBOUI7O0FBYUEsU0FBU08sV0FBVCxDQUFxQkMsS0FBckIsRUFBNEI7RUFDMUIsT0FDRUMsZUFBQSxDQUFFQyxhQUFGLENBQWdCRixLQUFoQixLQUNBQyxlQUFBLENBQUVDLGFBQUYsQ0FBZ0JGLEtBQUssQ0FBQ0csTUFBdEIsQ0FEQSxJQUVBRixlQUFBLENBQUVHLFFBQUYsQ0FBV0osS0FBSyxDQUFDSyxJQUFqQixDQUZBLElBR0FKLGVBQUEsQ0FBRUcsUUFBRixDQUFXSixLQUFLLENBQUNNLE9BQWpCLENBSkY7QUFNRDs7QUFTRCxTQUFTQyxRQUFULENBQWtCUCxLQUFsQixFQUF5QjtFQUN2QixPQUNFRCxXQUFXLENBQUNDLEtBQUQsQ0FBWCxJQUNBQyxlQUFBLENBQUVHLFFBQUYsQ0FBV0gsZUFBQSxDQUFFTyxHQUFGLENBQU1SLEtBQU4sRUFBYSxtQkFBYixDQUFYLENBREEsSUFFQUMsZUFBQSxDQUFFRyxRQUFGLENBQVdILGVBQUEsQ0FBRU8sR0FBRixDQUFNUixLQUFOLEVBQWEsdUJBQWIsQ0FBWCxDQUZBLElBR0FDLGVBQUEsQ0FBRVEsT0FBRixDQUFVUixlQUFBLENBQUVPLEdBQUYsQ0FBTVIsS0FBTixFQUFhLHNCQUFiLENBQVYsQ0FKRjtBQU1EOztBQVNELFNBQVNVLFFBQVQsQ0FBa0JWLEtBQWxCLEVBQXlCO0VBQ3ZCLE9BQU9ELFdBQVcsQ0FBQ0MsS0FBRCxDQUFYLElBQXNCQyxlQUFBLENBQUVHLFFBQUYsQ0FBV0gsZUFBQSxDQUFFTyxHQUFGLENBQU1SLEtBQU4sRUFBYSxtQkFBYixDQUFYLENBQTdCO0FBQ0Q7O0FBT00sTUFBTVcsUUFBTixDQUFlO0VBUXBCQyxLQUFLO0VBT0xDLFdBQVc7RUFPWEMsYUFBYTtFQVliQyxRQUFRO0VBWVJDLFFBQVE7O0VBU1JDLFdBQVcsQ0FBQ0MsVUFBRCxFQUFhO0lBQ3RCLEtBQUtMLFdBQUwsR0FBbUJLLFVBQW5CO0lBQ0EsS0FBS04sS0FBTCxHQUFhWCxlQUFBLENBQUVrQixTQUFGLENBQVl0QixxQkFBWixDQUFiO0VBQ0Q7O0VBU2lCLE9BQVh1QixXQUFXLEdBQUduQixlQUFBLENBQUVvQixPQUFGLENBQVUsU0FBU0MsWUFBVCxDQUFzQkosVUFBdEIsRUFBa0M7SUFDL0QsT0FBTyxJQUFJUCxRQUFKLENBQWFPLFVBQWIsQ0FBUDtFQUNELENBRm9CLENBQUg7O0VBU2UsTUFBM0JLLDJCQUEyQixDQUFDO0lBQUNyQyxVQUFVLEdBQUdKO0VBQWQsSUFBc0MsRUFBdkMsRUFBMkM7SUFDMUUsTUFBTTBDLFFBQVEsR0FBR3ZCLGVBQUEsQ0FBRXdCLFFBQUYsQ0FBVztNQUFDdkM7SUFBRCxDQUFYLEVBQXlCSCw0QkFBekIsQ0FBakI7O0lBRUEsSUFBSTJDLFNBQVMsR0FBRyxLQUFoQjs7SUFDQSxXQUFXLE1BQU07TUFBQ0MsS0FBRDtNQUFRdEMsSUFBSSxFQUFFRDtJQUFkLENBQWpCLElBQTRDd0MsV0FBQSxDQUFHQyxJQUFILENBQVEsS0FBS2hCLFdBQWIsRUFBMEJXLFFBQTFCLENBQTVDLEVBQWlGO01BQy9FLElBQUlwQyxRQUFRLEtBQUssS0FBS3lCLFdBQWxCLElBQWlDYyxLQUFLLENBQUNHLFdBQU4sRUFBckMsRUFBMEQ7UUFDeEQsSUFBSTtVQUNGLE1BQU1DLEdBQUcsR0FBRyxNQUFNQyxZQUFBLENBQUlDLGdCQUFKLENBQXFCN0MsUUFBckIsQ0FBbEI7O1VBQ0EsSUFBSTJDLEdBQUcsSUFBSWhDLFdBQVcsQ0FBQ2dDLEdBQUQsQ0FBdEIsRUFBNkI7WUFHM0IsTUFBTUcsS0FBSyxHQUFHLEtBQUtDLHVCQUFMLENBQTZCSixHQUE3QixFQUFrQzFDLGFBQUEsQ0FBSytDLElBQUwsQ0FBVWhELFFBQVYsRUFBb0IsY0FBcEIsQ0FBbEMsQ0FBZDtZQUNBc0MsU0FBUyxHQUFHQSxTQUFTLElBQUlRLEtBQXpCO1VBQ0Q7UUFDRixDQVJELENBUUUsTUFBTSxDQUFFO01BQ1g7SUFDRjs7SUFDRCxPQUFPUixTQUFQO0VBQ0Q7O0VBT0RXLFNBQVMsQ0FBQ2hDLElBQUQsRUFBTztJQUNkLE9BQU9pQyxPQUFPLENBQUMsS0FBSzFCLEtBQUwsQ0FBVzJCLE9BQVgsQ0FBbUJsQyxJQUFuQixDQUFELENBQWQ7RUFDRDs7RUFPRG1DLFNBQVMsQ0FBQ25DLElBQUQsRUFBTztJQUNkLE9BQU9pQyxPQUFPLENBQUMsS0FBSzFCLEtBQUwsQ0FBVzZCLE9BQVgsQ0FBbUJwQyxJQUFuQixDQUFELENBQWQ7RUFDRDs7RUFXRDhCLHVCQUF1QixDQUFDTyxPQUFELEVBQVVDLE9BQVYsRUFBbUI7SUFBQTs7SUFDeEMsTUFBTUMsYUFBYSxHQUFHdkQsYUFBQSxDQUFLd0QsT0FBTCxDQUFhRixPQUFiLENBQXRCOztJQUtBLE1BQU1HLFFBQVEsR0FBRztNQUNmQyxPQUFPLEVBQUVMLE9BQU8sQ0FBQ3JDLElBREY7TUFFZkMsT0FBTyxFQUFFb0MsT0FBTyxDQUFDcEMsT0FGRjtNQUdmMEMsYUFBYSwyQkFBRU4sT0FBTyxDQUFDTyxnQkFBViwwREFBRSxzQkFBMEI5QyxNQUgxQjtNQUlmK0MsV0FBVyxFQUFFQyxpQ0FKRTtNQUtmQyxXQUFXLEVBQUcsR0FBRVYsT0FBTyxDQUFDckMsSUFBSyxJQUFHcUMsT0FBTyxDQUFDcEMsT0FBUTtJQUxqQyxDQUFqQjs7SUFRQSxJQUFJQyxRQUFRLENBQUNtQyxPQUFELENBQVosRUFBdUI7TUFDckIsSUFBSSxDQUFDLEtBQUtMLFNBQUwsQ0FBZUssT0FBTyxDQUFDdkMsTUFBUixDQUFla0QsVUFBOUIsQ0FBTCxFQUFnRDtRQUM5QyxLQUFLQyxZQUFMLENBQWtCNUQsc0JBQWxCLEVBQStCZ0QsT0FBTyxDQUFDdkMsTUFBUixDQUFla0QsVUFBOUMsRUFBMEQsRUFDeEQsR0FBR3BELGVBQUEsQ0FBRXNELElBQUYsQ0FBT2IsT0FBTyxDQUFDdkMsTUFBZixFQUF1QixZQUF2QixDQURxRDtVQUV4RCxHQUFHMkM7UUFGcUQsQ0FBMUQ7UUFJQSxPQUFPLElBQVA7TUFDRDs7TUFDRCxPQUFPLEtBQVA7SUFDRCxDQVRELE1BU08sSUFBSXBDLFFBQVEsQ0FBQ2dDLE9BQUQsQ0FBWixFQUF1QjtNQUM1QixJQUFJLENBQUMsS0FBS0YsU0FBTCxDQUFlRSxPQUFPLENBQUN2QyxNQUFSLENBQWVxRCxVQUE5QixDQUFMLEVBQWdEO1FBQzlDLEtBQUtGLFlBQUwsQ0FBa0IxRCxzQkFBbEIsRUFBK0I4QyxPQUFPLENBQUN2QyxNQUFSLENBQWVxRCxVQUE5QyxFQUEwRCxFQUN4RCxHQUFHdkQsZUFBQSxDQUFFc0QsSUFBRixDQUFPYixPQUFPLENBQUN2QyxNQUFmLEVBQXVCLFlBQXZCLENBRHFEO1VBRXhELEdBQUcyQztRQUZxRCxDQUExRDtRQUlBLE9BQU8sSUFBUDtNQUNEOztNQUNELE9BQU8sS0FBUDtJQUNELENBVE0sTUFTQTtNQUNMLE1BQU0sSUFBSVcsU0FBSixDQUNILG9CQUFtQmIsYUFBYyxnREFEOUIsQ0FBTjtJQUdEO0VBQ0Y7O0VBYURVLFlBQVksQ0FBQ0ksT0FBRCxFQUFVQyxPQUFWLEVBQW1CQyxPQUFuQixFQUE0QjtJQUN0QyxNQUFNQyxJQUFJLEdBQUc1RCxlQUFBLENBQUU2RCxLQUFGLENBQVFGLE9BQVIsQ0FBYjs7SUFDQSxLQUFLaEQsS0FBTCxDQUFZLEdBQUU4QyxPQUFRLEdBQXRCLEVBQTBCQyxPQUExQixJQUFxQ0UsSUFBckM7SUFDQSxPQUFPQSxJQUFQO0VBQ0Q7O0VBS2EsSUFBVjNDLFVBQVUsR0FBRztJQUNmLE9BQU8sS0FBS0wsV0FBWjtFQUNEOztFQUtlLElBQVprRCxZQUFZLEdBQUc7SUFDakIsT0FBTyxLQUFLakQsYUFBWjtFQUNEOztFQVNEa0QsZ0JBQWdCLENBQUNOLE9BQUQsRUFBVTtJQUN4QixPQUFPLEtBQUs5QyxLQUFMLENBQW1DLEdBQUU4QyxPQUFRLEdBQTdDLENBQVA7RUFDRDs7RUFZUyxNQUFKTyxJQUFJLEdBQUc7SUFDWCxJQUFJLEtBQUtqRCxRQUFULEVBQW1CO01BQ2pCLE1BQU0sS0FBS0EsUUFBWDtNQUNBLE9BQU8sS0FBS0osS0FBWjtJQUNEOztJQUVELEtBQUtJLFFBQUwsR0FBZ0IsQ0FBQyxZQUFZO01BRTNCLElBQUk2QyxJQUFKO01BQ0EsSUFBSUssU0FBUyxHQUFHLEtBQWhCO01BQ0EsTUFBTSxLQUFLQyxnQkFBTCxFQUFOOztNQUNBLElBQUk7UUFDRkMsZUFBQSxDQUFJQyxLQUFKLENBQVcsV0FBVSxLQUFLdkQsYUFBYyxLQUF4Qzs7UUFDQSxNQUFNd0QsSUFBSSxHQUFHLE1BQU0xQyxXQUFBLENBQUcyQyxRQUFILENBQVksS0FBS3pELGFBQWpCLEVBQWdDLE1BQWhDLENBQW5CO1FBQ0ErQyxJQUFJLEdBQUdXLGFBQUEsQ0FBS0MsS0FBTCxDQUFXSCxJQUFYLENBQVA7O1FBQ0FGLGVBQUEsQ0FBSUMsS0FBSixDQUFXLHlCQUF3QkssSUFBSSxDQUFDQyxTQUFMLENBQWVkLElBQWYsRUFBcUIsSUFBckIsRUFBMkIsQ0FBM0IsQ0FBOEIsRUFBakU7TUFDRCxDQUxELENBS0UsT0FBT2UsR0FBUCxFQUFZO1FBQ1osSUFBSUEsR0FBRyxDQUFDQyxJQUFKLEtBQWEsUUFBakIsRUFBMkI7VUFDekJoQixJQUFJLEdBQUc1RCxlQUFBLENBQUVrQixTQUFGLENBQVl0QixxQkFBWixDQUFQO1VBQ0FxRSxTQUFTLEdBQUcsSUFBWjtRQUNELENBSEQsTUFHTztVQUNMLElBQUksS0FBS3BELGFBQVQsRUFBd0I7WUFDdEIsTUFBTSxJQUFJZ0UsS0FBSixDQUNILHdEQUFELEdBQ0csZUFBYyxLQUFLaEUsYUFBYyw4Q0FBNkM4RCxHQUFHLENBQUNHLE9BQVEsRUFGekYsQ0FBTjtVQUlELENBTEQsTUFLTztZQUNMLE1BQU0sSUFBSUQsS0FBSixDQUNILDBEQUF5REYsR0FBRyxDQUFDRyxPQUFRLEVBRGxFLENBQU47VUFHRDtRQUNGO01BQ0Y7O01BRUQsS0FBS25FLEtBQUwsR0FBYWlELElBQWI7TUFDQSxJQUFJbUIsMEJBQTBCLEdBQUcsS0FBakM7O01BQ0EsSUFDRSxDQUFDLE1BQU1oRCxZQUFBLENBQUlpRCxtQkFBSixDQUF3QixLQUFLL0QsVUFBN0IsQ0FBUCxNQUNDLE1BQU0sSUFBQWdFLGdDQUFBLEVBQWlCLEtBQUtoRSxVQUF0QixDQURQLENBREYsRUFHRTtRQUNBOEQsMEJBQTBCLEdBQUcsTUFBTSxLQUFLekQsMkJBQUwsRUFBbkM7TUFDRDs7TUFFRCxJQUFJMkMsU0FBUyxJQUFJYywwQkFBakIsRUFBNkM7UUFDM0MsTUFBTSxLQUFLRyxLQUFMLEVBQU47TUFDRDtJQUNGLENBeENlLEdBQWhCOztJQXlDQSxJQUFJO01BQ0YsTUFBTSxLQUFLbkUsUUFBWDtNQUNBLE9BQU8sS0FBS0osS0FBWjtJQUNELENBSEQsU0FHVTtNQUNSLEtBQUtJLFFBQUwsR0FBZ0JvRSxTQUFoQjtJQUNEO0VBQ0Y7O0VBU3FCLE1BQWhCakIsZ0JBQWdCLEdBQUc7SUFDdkIsSUFBSSxDQUFDLEtBQUtyRCxhQUFWLEVBQXlCO01BQ3ZCLEtBQUtBLGFBQUwsR0FBcUIsTUFBTWtCLFlBQUEsQ0FBSXFELG1CQUFKLENBQXdCLEtBQUt4RSxXQUE3QixDQUEzQjs7TUFHQSxJQUFJeEIsYUFBQSxDQUFLaUcsUUFBTCxDQUFjLEtBQUt6RSxXQUFuQixFQUFnQyxLQUFLQyxhQUFyQyxFQUFvRHZCLFVBQXBELENBQStELEdBQS9ELENBQUosRUFBeUU7UUFDdkUsTUFBTSxJQUFJdUYsS0FBSixDQUNILDRFQUEyRSxLQUFLNUQsVUFBVyxvQkFBbUIsS0FBS0osYUFBYyxFQUQ5SCxDQUFOO01BR0Q7SUFDRjs7SUFFRCxPQUFPLEtBQUtBLGFBQVo7RUFDRDs7RUFVVSxNQUFMcUUsS0FBSyxHQUFHO0lBQ1osSUFBSSxLQUFLcEUsUUFBVCxFQUFtQjtNQUNqQixPQUFPLEtBQUtBLFFBQVo7SUFDRDs7SUFDRCxLQUFLQSxRQUFMLEdBQWdCLENBQUMsWUFBWTtNQUMzQixNQUFNLEtBQUtvRCxnQkFBTCxFQUFOOztNQUNBLElBQUk7UUFDRixNQUFNdkMsV0FBQSxDQUFHMkQsTUFBSCxDQUFVbEcsYUFBQSxDQUFLd0QsT0FBTCxDQUFhLEtBQUsvQixhQUFsQixDQUFWLENBQU47TUFDRCxDQUZELENBRUUsT0FBTzhELEdBQVAsRUFBWTtRQUNaLE1BQU0sSUFBSUUsS0FBSixDQUNILGdFQUErRHpGLGFBQUEsQ0FBS3dELE9BQUwsQ0FDOUQsS0FBSy9CLGFBRHlELENBRTlELHFCQUFvQjhELEdBQUcsQ0FBQ0csT0FBUSxFQUg5QixDQUFOO01BS0Q7O01BQ0QsSUFBSTtRQUNGLE1BQU1uRCxXQUFBLENBQUc0RCxTQUFILENBQWEsS0FBSzFFLGFBQWxCLEVBQWlDMEQsYUFBQSxDQUFLRyxTQUFMLENBQWUsS0FBSy9ELEtBQXBCLENBQWpDLEVBQTZELE1BQTdELENBQU47UUFDQSxPQUFPLElBQVA7TUFDRCxDQUhELENBR0UsT0FBT2dFLEdBQVAsRUFBWTtRQUNaLE1BQU0sSUFBSUUsS0FBSixDQUNILHlDQUF3QyxLQUFLaEUsYUFBYyxzQkFBcUIsS0FBS0QsV0FBWSxJQUFsRyxHQUNHLGlEQUFnRCtELEdBQUcsQ0FBQ0csT0FBUSxFQUYzRCxDQUFOO01BSUQ7SUFDRixDQXBCZSxHQUFoQjs7SUFxQkEsSUFBSTtNQUNGLE9BQU8sTUFBTSxLQUFLaEUsUUFBbEI7SUFDRCxDQUZELFNBRVU7TUFDUixLQUFLQSxRQUFMLEdBQWdCcUUsU0FBaEI7SUFDRDtFQUNGOztBQXpVbUIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-changed.d.ts","sourceRoot":"","sources":["../../../lib/extension/package-changed.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-changed.d.ts","sourceRoot":"","sources":["../../../lib/extension/package-changed.js"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,6CAHW,MAAM,GACJ,QAAQ,OAAO,CAAC,CAkD5B"}
|
|
@@ -65,4 +65,4 @@ async function packageDidChange(appiumHome) {
|
|
|
65
65
|
|
|
66
66
|
return isChanged;
|
|
67
67
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYWNrYWdlRGlkQ2hhbmdlIiwiYXBwaXVtSG9tZSIsImhhc2hGaWxlbmFtZSIsInBhdGgiLCJqb2luIiwiUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgiLCJpc0NoYW5nZWQiLCJ3cml0ZUhhc2giLCJoYXNoIiwib2xkSGFzaCIsImhhc2hGaWxlbmFtZURpciIsImRpcm5hbWUiLCJsb2ciLCJkZWJ1ZyIsImZzIiwibWtkaXJwIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwiaXNQYWNrYWdlQ2hhbmdlZCIsImN3ZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vcGFja2FnZS1jaGFuZ2VkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZnN9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge2lzUGFja2FnZUNoYW5nZWR9IGZyb20gJ3BhY2thZ2UtY2hhbmdlZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7UEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEh9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBleHRlbnNpb25zIGhhdmUgY2hhbmdlZCwgYW5kIHVwZGF0ZXMgYSBoYXNoIHRoZSBgcGFja2FnZS5qc29uYCBpbiBgYXBwaXVtSG9tZWAgaWYgc28uXG4gKlxuICogSWYgdGhleSBoYXZlLCB3ZSBuZWVkIHRvIHN5bmMgdGhlbSB3aXRoIHRoZSBgZXh0ZW5zaW9ucy55YW1sYCBtYW5pZmVzdC5cbiAqXG4gKiBfV2FybmluZzogdGhpcyBtYWtlcyBhIGJsb2NraW5nIGNhbGwgdG8gYHdyaXRlRmlsZVN5bmNgLl9cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gYHRydWVgIGlmIGBwYWNrYWdlLmpzb25gIGBhcHBpdW1Ib21lYCBjaGFuZ2VkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYWNrYWdlRGlkQ2hhbmdlKGFwcGl1bUhvbWUpIHtcbiAgY29uc3QgaGFzaEZpbGVuYW1lID0gcGF0aC5qb2luKGFwcGl1bUhvbWUsIFBLR19IQVNIRklMRV9SRUxBVElWRV9QQVRIKTtcblxuICAvLyBYWFg6IHRoZSB0eXBlcyBpbiBgcGFja2FnZS1jaGFuZ2VkYCBzZWVtIHRvIGJlIHdyb25nLlxuXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IGlzQ2hhbmdlZDtcbiAgLyoqIEB0eXBlIHsoKSA9PiB2b2lkfSAqL1xuICBsZXQgd3JpdGVIYXNoO1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgbGV0IGhhc2g7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0gKi9cbiAgbGV0IG9sZEhhc2g7XG5cbiAgLy8gZmlyc3QgbWtkaXJwIHRoZSB0YXJnZXQgZGlyLlxuICBjb25zdCBoYXNoRmlsZW5hbWVEaXIgPSBwYXRoLmRpcm5hbWUoaGFzaEZpbGVuYW1lKTtcbiAgbG9nLmRlYnVnKGBDcmVhdGluZyBoYXNoIGZpbGUgZGlyZWN0b3J5OiAke2hhc2hGaWxlbmFtZURpcn1gKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5ta2RpcnAoaGFzaEZpbGVuYW1lRGlyKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEFwcGl1bSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIGhhc2ggZmlsZTogJHtoYXNoRmlsZW5hbWVEaXJ9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgKHtpc0NoYW5nZWQsIHdyaXRlSGFzaCwgb2xkSGFzaCwgaGFzaH0gPSBhd2FpdCBpc1BhY2thZ2VDaGFuZ2VkKHtcbiAgICAgIGN3ZDogYXBwaXVtSG9tZSxcbiAgICAgIGhhc2hGaWxlbmFtZTogUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgsXG4gICAgfSkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0NoYW5nZWQpIHtcbiAgICB0cnkge1xuICAgICAgd3JpdGVIYXNoKCk7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBVcGRhdGVkIGhhc2ggb2YgJHthcHBpdW1Ib21lfS9wYWNrYWdlLmpzb24gZnJvbTogJHtvbGRIYXNoID8/ICcobm9uZSknfSB0bzogJHtoYXNofWBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBcHBpdW0gY291bGQgbm90IHdyaXRlIGhhc2ggZmlsZTogJHtoYXNoRmlsZW5hbWVEaXJ9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpc0NoYW5nZWQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBV08sZUFBZUEsZ0JBQWYsQ0FBZ0NDLFVBQWhDLEVBQTRDO0VBQ2pELE1BQU1DLFlBQVksR0FBR0MsYUFBQSxDQUFLQyxJQUFMLENBQVVILFVBQVYsRUFBc0JJLHFDQUF0QixDQUFyQjs7RUFLQSxJQUFJQyxTQUFKO0VBRUEsSUFBSUMsU0FBSjtFQUVBLElBQUlDLElBQUo7RUFFQSxJQUFJQyxPQUFKOztFQUdBLE1BQU1DLGVBQWUsR0FBR1AsYUFBQSxDQUFLUSxPQUFMLENBQWFULFlBQWIsQ0FBeEI7O0VBQ0FVLGVBQUEsQ0FBSUMsS0FBSixDQUFXLGlDQUFnQ0gsZUFBZ0IsRUFBM0Q7O0VBQ0EsSUFBSTtJQUNGLE1BQU1JLFdBQUEsQ0FBR0MsTUFBSCxDQUFVTCxlQUFWLENBQU47RUFDRCxDQUZELENBRUUsT0FBT00sR0FBUCxFQUFZO0lBQ1osTUFBTSxJQUFJQyxLQUFKLENBQ0gsd0RBQXVEUCxlQUFnQixxQkFBb0JNLEdBQUcsQ0FBQ0UsT0FBUSxFQURwRyxDQUFOO0VBR0Q7O0VBRUQsSUFBSTtJQUNGLENBQUM7TUFBQ1osU0FBRDtNQUFZQyxTQUFaO01BQXVCRSxPQUF2QjtNQUFnQ0Q7SUFBaEMsSUFBd0MsTUFBTSxJQUFBVyxnQ0FBQSxFQUFpQjtNQUM5REMsR0FBRyxFQUFFbkIsVUFEeUQ7TUFFOURDLFlBQVksRUFBRUc7SUFGZ0QsQ0FBakIsQ0FBL0M7RUFJRCxDQUxELENBS0UsTUFBTTtJQUNOLE9BQU8sSUFBUDtFQUNEOztFQUVELElBQUlDLFNBQUosRUFBZTtJQUNiLElBQUk7TUFBQTs7TUFDRkMsU0FBUzs7TUFDVEssZUFBQSxDQUFJQyxLQUFKLENBQ0csbUJBQWtCWixVQUFXLHVCQUE5QixZQUFvRFEsT0FBcEQsK0NBQStELFFBQVMsUUFBT0QsSUFBSyxFQUR0RjtJQUdELENBTEQsQ0FLRSxPQUFPUSxHQUFQLEVBQVk7TUFDWixNQUFNLElBQUlDLEtBQUosQ0FDSCxxQ0FBb0NQLGVBQWdCLHFCQUFvQk0sR0FBRyxDQUFDRSxPQUFRLEVBRGpGLENBQU47SUFHRDtFQUNGOztFQUVELE9BQU9aLFNBQVA7QUFDRCJ9
|
|
@@ -17,31 +17,30 @@ export class PluginConfig extends ExtensionConfig<"plugin"> {
|
|
|
17
17
|
* Creates a new {@link PluginConfig} instance for a {@link Manifest} instance.
|
|
18
18
|
*
|
|
19
19
|
* @param {Manifest} manifest
|
|
20
|
-
* @param {PluginConfigOptions} [opts]
|
|
21
20
|
* @throws If `manifest` already associated with a `PluginConfig`
|
|
22
21
|
* @returns {PluginConfig}
|
|
23
22
|
*/
|
|
24
|
-
static create(manifest: Manifest
|
|
23
|
+
static create(manifest: Manifest): PluginConfig;
|
|
25
24
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
* Returns a PluginConfig associated with a Manifest
|
|
26
|
+
* @param {Manifest} manifest
|
|
27
|
+
* @returns {PluginConfig|undefined}
|
|
28
|
+
*/
|
|
30
29
|
static getInstance(manifest: Manifest): PluginConfig | undefined;
|
|
31
30
|
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
*/
|
|
31
|
+
* Call {@link PluginConfig.create} instead.
|
|
32
|
+
*
|
|
33
|
+
* Just calls the superclass' constructor with the correct extension type
|
|
34
|
+
* @private
|
|
35
|
+
* @param {Manifest} manifest - IO object
|
|
36
|
+
*/
|
|
39
37
|
private constructor();
|
|
38
|
+
validate(): Promise<import("./extension-config").ExtRecord<"plugin">>;
|
|
40
39
|
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
*
|
|
41
|
+
* @param {(keyof PluginRecord)[]} activeNames
|
|
42
|
+
* @returns {void}
|
|
43
|
+
*/
|
|
45
44
|
print(activeNames: (keyof PluginRecord)[]): void;
|
|
46
45
|
}
|
|
47
46
|
export type PluginConfigOptions = {
|
|
@@ -49,14 +48,10 @@ export type PluginConfigOptions = {
|
|
|
49
48
|
* - Optional logging function
|
|
50
49
|
*/
|
|
51
50
|
logFn?: import("./extension-config").ExtensionLogFn | undefined;
|
|
52
|
-
/**
|
|
53
|
-
* - Extension data
|
|
54
|
-
*/
|
|
55
|
-
extData?: import("../../types").PluginRecord | undefined;
|
|
56
51
|
};
|
|
57
|
-
export type PluginRecord = import('
|
|
58
|
-
export type PluginType = import('
|
|
59
|
-
export type PluginMetadata = import('
|
|
52
|
+
export type PluginRecord = import('appium/types').PluginRecord;
|
|
53
|
+
export type PluginType = import('@appium/types').PluginType;
|
|
54
|
+
export type PluginMetadata = import('appium/types').ExtMetadata<PluginType>;
|
|
60
55
|
export type Manifest = import('./manifest').Manifest;
|
|
61
56
|
import { ExtensionConfig } from "./extension-config";
|
|
62
57
|
//# sourceMappingURL=plugin-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/plugin-config.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/plugin-config.js"],"names":[],"mappings":"AAKA;;GAEG;AACH;IACE;;;;;;;;;OASG;IACH,0BAAkC;IAiBlC;;;;;;OAMG;IACH,wBAJW,QAAQ,GAEN,YAAY,CAWxB;IAED;;;;OAIG;IACH,6BAHW,QAAQ,GACN,YAAY,GAAC,SAAS,CAIlC;IAxCD;;;;;;OAMG;IACH,sBAEC;IAED,sEAEC;IAsCD;;;;OAIG;IACH,mBAHW,CAAC,MAAM,YAAY,CAAC,EAAE,GACpB,IAAI,CAwBhB;CACF;;;;;;;2BAQY,OAAO,cAAc,EAAE,YAAY;yBACnC,OAAO,eAAe,EAAE,UAAU;6BAClC,OAAO,cAAc,EAAE,WAAW,CAAC,UAAU,CAAC;uBAC9C,OAAO,YAAY,EAAE,QAAQ"}
|
|
@@ -20,25 +20,16 @@ var _constants = require("../constants");
|
|
|
20
20
|
class PluginConfig extends _extensionConfig.ExtensionConfig {
|
|
21
21
|
static _instances = new WeakMap();
|
|
22
22
|
|
|
23
|
-
constructor(manifest
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (extData) {
|
|
30
|
-
this.validate(extData);
|
|
31
|
-
}
|
|
23
|
+
constructor(manifest) {
|
|
24
|
+
super(_constants.PLUGIN_TYPE, manifest);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async validate() {
|
|
28
|
+
return await super._validate(this.manifest.getExtensionData(_constants.PLUGIN_TYPE));
|
|
32
29
|
}
|
|
33
30
|
|
|
34
|
-
static create(manifest
|
|
35
|
-
|
|
36
|
-
logFn
|
|
37
|
-
} = {}) {
|
|
38
|
-
const instance = new PluginConfig(manifest, {
|
|
39
|
-
logFn,
|
|
40
|
-
extData
|
|
41
|
-
});
|
|
31
|
+
static create(manifest) {
|
|
32
|
+
const instance = new PluginConfig(manifest);
|
|
42
33
|
|
|
43
34
|
if (PluginConfig.getInstance(manifest)) {
|
|
44
35
|
throw new Error(`Manifest with APPIUM_HOME ${manifest.appiumHome} already has a PluginConfig; use PluginConfig.getInstance() to retrieve it.`);
|
|
@@ -84,4 +75,4 @@ class PluginConfig extends _extensionConfig.ExtensionConfig {
|
|
|
84
75
|
}
|
|
85
76
|
|
|
86
77
|
exports.PluginConfig = PluginConfig;
|
|
87
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQbHVnaW5Db25maWciLCJFeHRlbnNpb25Db25maWciLCJfaW5zdGFuY2VzIiwiV2Vha01hcCIsImNvbnN0cnVjdG9yIiwibWFuaWZlc3QiLCJQTFVHSU5fVFlQRSIsInZhbGlkYXRlIiwiX3ZhbGlkYXRlIiwiZ2V0RXh0ZW5zaW9uRGF0YSIsImNyZWF0ZSIsImluc3RhbmNlIiwiZ2V0SW5zdGFuY2UiLCJFcnJvciIsImFwcGl1bUhvbWUiLCJzZXQiLCJnZXQiLCJleHRlbnNpb25EZXNjIiwicGx1Z2luTmFtZSIsInZlcnNpb24iLCJwcmludCIsImFjdGl2ZU5hbWVzIiwicGx1Z2luTmFtZXMiLCJPYmplY3QiLCJrZXlzIiwiaW5zdGFsbGVkRXh0ZW5zaW9ucyIsIl8iLCJpc0VtcHR5IiwibG9nIiwiaW5mbyIsInBsdWdpbkRhdGEiLCJ0b1BhaXJzIiwiYWN0aXZlVHh0IiwiaW5jbHVkZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXh0ZW5zaW9uL3BsdWdpbi1jb25maWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7RXh0ZW5zaW9uQ29uZmlnfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHtQTFVHSU5fVFlQRX0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29uZmlnPFBsdWdpblR5cGU+fVxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luQ29uZmlnIGV4dGVuZHMgRXh0ZW5zaW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiB7QGxpbmsgTWFuaWZlc3R9IGluc3RhbmNlcyB0byB7QGxpbmsgUGx1Z2luQ29uZmlnfSBpbnN0YW5jZXMuXG4gICAqXG4gICAqIGBNYW5pZmVzdGAgYW5kIHtAbGluayBFeHRlbnNpb25Db25maWd9IGhhdmUgYSBvbmUtdG8tbWFueSByZWxhdGlvbnNoaXA7IGVhY2ggYE1hbmlmZXN0YCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoIGEgYERyaXZlckNvbmZpZ2AgYW5kIGEgYFBsdWdpbkNvbmZpZ2A7IG5vIG1vcmUsIG5vIGxlc3MuXG4gICAqXG4gICAqIFRoaXMgdmFyaWFibGUgdHJhY2tzIHRoZSBgTWFuaWZlc3RgLXRvLWBQbHVnaW5Db25maWdgIHBvcnRpb24uXG4gICAqXG4gICAqIEB0eXBlIHtXZWFrTWFwPE1hbmlmZXN0LFBsdWdpbkNvbmZpZz59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdGF0aWMgX2luc3RhbmNlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgLyoqXG4gICAqIENhbGwge0BsaW5rIFBsdWdpbkNvbmZpZy5jcmVhdGV9IGluc3RlYWQuXG4gICAqXG4gICAqIEp1c3QgY2FsbHMgdGhlIHN1cGVyY2xhc3MnIGNvbnN0cnVjdG9yIHdpdGggdGhlIGNvcnJlY3QgZXh0ZW5zaW9uIHR5cGVcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtNYW5pZmVzdH0gbWFuaWZlc3QgLSBJTyBvYmplY3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1hbmlmZXN0KSB7XG4gICAgc3VwZXIoUExVR0lOX1RZUEUsIG1hbmlmZXN0KTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKCkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fdmFsaWRhdGUodGhpcy5tYW5pZmVzdC5nZXRFeHRlbnNpb25EYXRhKFBMVUdJTl9UWVBFKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUGx1Z2luQ29uZmlnfSBpbnN0YW5jZSBmb3IgYSB7QGxpbmsgTWFuaWZlc3R9IGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdFxuICAgKiBAdGhyb3dzIElmIGBtYW5pZmVzdGAgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggYSBgUGx1Z2luQ29uZmlnYFxuICAgKiBAcmV0dXJucyB7UGx1Z2luQ29uZmlnfVxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZShtYW5pZmVzdCkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFBsdWdpbkNvbmZpZyhtYW5pZmVzdCk7XG4gICAgaWYgKFBsdWdpbkNvbmZpZy5nZXRJbnN0YW5jZShtYW5pZmVzdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1hbmlmZXN0IHdpdGggQVBQSVVNX0hPTUUgJHttYW5pZmVzdC5hcHBpdW1Ib21lfSBhbHJlYWR5IGhhcyBhIFBsdWdpbkNvbmZpZzsgdXNlIFBsdWdpbkNvbmZpZy5nZXRJbnN0YW5jZSgpIHRvIHJldHJpZXZlIGl0LmBcbiAgICAgICk7XG4gICAgfVxuICAgIFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzLnNldChtYW5pZmVzdCwgaW5zdGFuY2UpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgUGx1Z2luQ29uZmlnIGFzc29jaWF0ZWQgd2l0aCBhIE1hbmlmZXN0XG4gICAqIEBwYXJhbSB7TWFuaWZlc3R9IG1hbmlmZXN0XG4gICAqIEByZXR1cm5zIHtQbHVnaW5Db25maWd8dW5kZWZpbmVkfVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlKG1hbmlmZXN0KSB7XG4gICAgcmV0dXJuIFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzLmdldChtYW5pZmVzdCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBsdWdpbk5hbWVcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dE1hbmlmZXN0PFBsdWdpblR5cGU+fSBwbHVnaW5EYXRhXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBleHRlbnNpb25EZXNjKHBsdWdpbk5hbWUsIHt2ZXJzaW9ufSkge1xuICAgIHJldHVybiBgJHtwbHVnaW5OYW1lfUAke3ZlcnNpb259YDtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0geyhrZXlvZiBQbHVnaW5SZWNvcmQpW119IGFjdGl2ZU5hbWVzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgcHJpbnQoYWN0aXZlTmFtZXMpIHtcbiAgICBjb25zdCBwbHVnaW5OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyk7XG5cbiAgICBpZiAoXy5pc0VtcHR5KHBsdWdpbk5hbWVzKSkge1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBObyBwbHVnaW5zIGhhdmUgYmVlbiBpbnN0YWxsZWQuIFVzZSB0aGUgXCJhcHBpdW0gcGx1Z2luXCIgYCArXG4gICAgICAgICAgJ2NvbW1hbmQgdG8gaW5zdGFsbCB0aGUgb25lKHMpIHlvdSB3YW50IHRvIHVzZS4nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKGBBdmFpbGFibGUgcGx1Z2luczpgKTtcbiAgICBmb3IgKGNvbnN0IFtwbHVnaW5OYW1lLCBwbHVnaW5EYXRhXSBvZiBfLnRvUGFpcnModGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zKSkge1xuICAgICAgY29uc3QgYWN0aXZlVHh0ID0gXy5pbmNsdWRlcyhhY3RpdmVOYW1lcywgcGx1Z2luTmFtZSkgPyAnIChBQ1RJVkUpJyA6ICcnO1xuICAgICAgbG9nLmluZm8oYCAgLSAke3RoaXMuZXh0ZW5zaW9uRGVzYyhwbHVnaW5OYW1lLCBwbHVnaW5EYXRhKX0ke2FjdGl2ZVR4dH1gKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc0VtcHR5KGFjdGl2ZU5hbWVzKSkge1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgICdObyBwbHVnaW5zIGFjdGl2YXRlZC4gVXNlIHRoZSAtLXVzZS1wbHVnaW5zIGZsYWcgd2l0aCBuYW1lcyBvZiBwbHVnaW5zIHRvIGFjdGl2YXRlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBQbHVnaW5Db25maWdPcHRpb25zXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi9leHRlbnNpb24tY29uZmlnJykuRXh0ZW5zaW9uTG9nRm59IFtsb2dGbl0gLSBPcHRpb25hbCBsb2dnaW5nIGZ1bmN0aW9uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5QbHVnaW5SZWNvcmR9IFBsdWdpblJlY29yZFxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dE1ldGFkYXRhPFBsdWdpblR5cGU+fSBQbHVnaW5NZXRhZGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9tYW5pZmVzdCcpLk1hbmlmZXN0fSBNYW5pZmVzdFxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS08sTUFBTUEsWUFBTixTQUEyQkMsZ0NBQTNCLENBQTJDO0VBVy9CLE9BQVZDLFVBQVUsR0FBRyxJQUFJQyxPQUFKLEVBQUg7O0VBU2pCQyxXQUFXLENBQUNDLFFBQUQsRUFBVztJQUNwQixNQUFNQyxzQkFBTixFQUFtQkQsUUFBbkI7RUFDRDs7RUFFYSxNQUFSRSxRQUFRLEdBQUc7SUFDZixPQUFPLE1BQU0sTUFBTUMsU0FBTixDQUFnQixLQUFLSCxRQUFMLENBQWNJLGdCQUFkLENBQStCSCxzQkFBL0IsQ0FBaEIsQ0FBYjtFQUNEOztFQVNZLE9BQU5JLE1BQU0sQ0FBQ0wsUUFBRCxFQUFXO0lBQ3RCLE1BQU1NLFFBQVEsR0FBRyxJQUFJWCxZQUFKLENBQWlCSyxRQUFqQixDQUFqQjs7SUFDQSxJQUFJTCxZQUFZLENBQUNZLFdBQWIsQ0FBeUJQLFFBQXpCLENBQUosRUFBd0M7TUFDdEMsTUFBTSxJQUFJUSxLQUFKLENBQ0gsNkJBQTRCUixRQUFRLENBQUNTLFVBQVcsNkVBRDdDLENBQU47SUFHRDs7SUFDRGQsWUFBWSxDQUFDRSxVQUFiLENBQXdCYSxHQUF4QixDQUE0QlYsUUFBNUIsRUFBc0NNLFFBQXRDOztJQUNBLE9BQU9BLFFBQVA7RUFDRDs7RUFPaUIsT0FBWEMsV0FBVyxDQUFDUCxRQUFELEVBQVc7SUFDM0IsT0FBT0wsWUFBWSxDQUFDRSxVQUFiLENBQXdCYyxHQUF4QixDQUE0QlgsUUFBNUIsQ0FBUDtFQUNEOztFQU9EWSxhQUFhLENBQUNDLFVBQUQsRUFBYTtJQUFDQztFQUFELENBQWIsRUFBd0I7SUFDbkMsT0FBUSxHQUFFRCxVQUFXLElBQUdDLE9BQVEsRUFBaEM7RUFDRDs7RUFPREMsS0FBSyxDQUFDQyxXQUFELEVBQWM7SUFDakIsTUFBTUMsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWSxLQUFLQyxtQkFBakIsQ0FBcEI7O0lBRUEsSUFBSUMsZUFBQSxDQUFFQyxPQUFGLENBQVVMLFdBQVYsQ0FBSixFQUE0QjtNQUMxQk0sZUFBQSxDQUFJQyxJQUFKLENBQ0csMERBQUQsR0FDRSxnREFGSjs7TUFJQTtJQUNEOztJQUVERCxlQUFBLENBQUlDLElBQUosQ0FBVSxvQkFBVjs7SUFDQSxLQUFLLE1BQU0sQ0FBQ1gsVUFBRCxFQUFhWSxVQUFiLENBQVgsSUFBdUNKLGVBQUEsQ0FBRUssT0FBRixDQUFVLEtBQUtOLG1CQUFmLENBQXZDLEVBQTRFO01BQzFFLE1BQU1PLFNBQVMsR0FBR04sZUFBQSxDQUFFTyxRQUFGLENBQVdaLFdBQVgsRUFBd0JILFVBQXhCLElBQXNDLFdBQXRDLEdBQW9ELEVBQXRFOztNQUNBVSxlQUFBLENBQUlDLElBQUosQ0FBVSxPQUFNLEtBQUtaLGFBQUwsQ0FBbUJDLFVBQW5CLEVBQStCWSxVQUEvQixDQUEyQyxHQUFFRSxTQUFVLEVBQXZFO0lBQ0Q7O0lBRUQsSUFBSU4sZUFBQSxDQUFFQyxPQUFGLENBQVVOLFdBQVYsQ0FBSixFQUE0QjtNQUMxQk8sZUFBQSxDQUFJQyxJQUFKLENBQ0Usb0ZBREY7SUFHRDtFQUNGOztBQTNGK0MifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-register.d.ts","sourceRoot":"","sources":["../../lib/grid-register.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"grid-register.d.ts","sourceRoot":"","sources":["../../lib/grid-register.js"],"names":[],"mappings":";AAUA;;;;;;GAMG;AACH,oCALW,MAAM,GAAC,MAAM,sGA4BvB"}
|
|
@@ -150,4 +150,4 @@ async function isAlreadyRegistered(configHolder) {
|
|
|
150
150
|
|
|
151
151
|
var _default = registerNode;
|
|
152
152
|
exports.default = _default;
|
|
153
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodWJVcmkiLCJjb25maWciLCJwcm90b2NvbCIsImh1YlByb3RvY29sIiwiaHViSG9zdCIsImh1YlBvcnQiLCJyZWdpc3Rlck5vZGUiLCJkYXRhIiwiYWRkciIsInBvcnQiLCJiYXNlUGF0aCIsImNvbmZpZ0ZpbGVQYXRoIiwiXyIsImlzU3RyaW5nIiwiZnMiLCJyZWFkRmlsZSIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsImVycm9yQW5kVGhyb3ciLCJwb3N0UmVxdWVzdCIsInJlZ2lzdGVyVG9HcmlkIiwicG9zdE9wdGlvbnMiLCJjb25maWdIb2xkZXIiLCJzdGF0dXMiLCJFcnJvciIsImRlYnVnIiwiY29uZmlndXJhdGlvbiIsImhhcyIsInByb3BlcnR5IiwidXJsIiwiaG9zdCIsImlkIiwicmVnUmVxdWVzdCIsIm1ldGhvZCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJDeWNsZUludGVydmFsIiwicmVnaXN0ZXJDeWNsZSIsImlzTmFOIiwid2FybiIsImZpcnN0Iiwic2V0SW50ZXJ2YWwiLCJyZWdpc3RlclJldHJ5IiwiaXNBbHJlYWR5UmVnaXN0ZXJlZCIsInRpbWVvdXQiLCJzdWNjZXNzIiwibXNnIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2dyaWQtcmVnaXN0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBodWJVcmkgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHByb3RvY29sID0gY29uZmlnLmh1YlByb3RvY29sIHx8ICdodHRwJztcbiAgcmV0dXJuIGAke3Byb3RvY29sfTovLyR7Y29uZmlnLmh1Ykhvc3R9OiR7Y29uZmlnLmh1YlBvcnR9YDtcbn07XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgbmV3IG5vZGUgd2l0aCBhIHNlbGVuaXVtIGdyaWRcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gZGF0YSAtIFBhdGggb3Igb2JqZWN0IHJlcHJlc2VudGluZyBzZWxlbml1bSBncmlkIG5vZGUgY29uZmlnIGZpbGUuIElmIGEgYHN0cmluZ2AsIGFsbCBzdWJzZXF1ZW50IGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQhXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FkZHJdIC0gQmluZCB0byB0aGlzIGFkZHJlc3NcbiAqIEBwYXJhbSB7bnVtYmVyfSBbcG9ydF0gLSBCaW5kIHRvIHRoaXMgcG9ydFxuICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlUGF0aF0gLSBCYXNlIHBhdGggZm9yIHRoZSBncmlkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyTm9kZSAoZGF0YSwgYWRkciwgcG9ydCwgYmFzZVBhdGgpIHtcbiAgbGV0IGNvbmZpZ0ZpbGVQYXRoO1xuICBpZiAoXy5pc1N0cmluZyhkYXRhKSkge1xuICAgIGNvbmZpZ0ZpbGVQYXRoID0gZGF0YTtcbiAgICB0cnkge1xuICAgICAgZGF0YSA9IGF3YWl0IGZzLnJlYWRGaWxlKGRhdGEsICd1dGYtOCcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmVycm9yKGBVbmFibGUgdG8gbG9hZCBub2RlIGNvbmZpZ3VyYXRpb24gZmlsZSAke2NvbmZpZ0ZpbGVQYXRofSB0byByZWdpc3RlciB3aXRoIGdyaWQ6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvckFuZFRocm93KGBTeW50YXggZXJyb3IgaW4gbm9kZSBjb25maWd1cmF0aW9uIGZpbGUgJHtjb25maWdGaWxlUGF0aH06ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcG9zdFJlcXVlc3QoZGF0YSwgYWRkciwgcG9ydCwgYmFzZVBhdGgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWdpc3RlclRvR3JpZCAocG9zdE9wdGlvbnMsIGNvbmZpZ0hvbGRlcikge1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGF0dXN9ID0gYXdhaXQgYXhpb3MocG9zdE9wdGlvbnMpO1xuICAgIGlmIChzdGF0dXMgIT09IDIwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXF1ZXN0IGZhaWxlZCB3aXRoIGNvZGUgJHtzdGF0dXN9YCk7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgQXBwaXVtIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIHdpdGggdGhlIHRoZSBncmlkIG9uIGAgK1xuICAgICAgaHViVXJpKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgQW4gYXR0ZW1wdCB0byByZWdpc3RlciB3aXRoIHRoZSBncmlkIHdhcyB1bnN1Y2Nlc3NmdWw6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9zdFJlcXVlc3QgKGNvbmZpZ0hvbGRlciwgYWRkciwgcG9ydCwgYmFzZVBhdGgpIHtcbiAgLy8gTW92ZSBTZWxlbml1bSAzIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0byBjb25maWd1cmF0aW9uIG9iamVjdFxuICBpZiAoIV8uaGFzKGNvbmZpZ0hvbGRlciwgJ2NvbmZpZ3VyYXRpb24nKSkge1xuICAgIGxldCBjb25maWd1cmF0aW9uID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBjb25maWdIb2xkZXIpIHtcbiAgICAgIGlmIChfLmhhcyhjb25maWdIb2xkZXIsIHByb3BlcnR5KSAmJiBwcm9wZXJ0eSAhPT0gJ2NhcGFiaWxpdGllcycpIHtcbiAgICAgICAgY29uZmlndXJhdGlvbltwcm9wZXJ0eV0gPSBjb25maWdIb2xkZXJbcHJvcGVydHldO1xuICAgICAgICBkZWxldGUgY29uZmlnSG9sZGVyW3Byb3BlcnR5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgLy8gaWYgdGhlIG5vZGUgY29uZmlnIGRvZXMgbm90IGhhdmUgdGhlIGFwcGl1bS93ZWJkcml2ZXIgdXJsLCBob3N0LCBhbmQgcG9ydCxcbiAgLy8gYXV0b21hdGljYWxseSBhZGQgaXQgYmFzZWQgb24gaG93IGFwcGl1bSB3YXMgaW5pdGlhbGl6ZWRcbiAgLy8gb3RoZXJ3aXNlLCB3ZSB3aWxsIHRha2Ugd2hhdGV2ZXIgdGhlIHVzZXIgc2V0dXBcbiAgLy8gYmVjYXVzZSB3ZSB3aWxsIGFsd2F5cyBzZXQgbG9jYWxob3N0LzEyNy4wLjAuMS4gdGhpcyB3b24ndCB3b3JrIGlmIHlvdXJcbiAgLy8gbm9kZSBhbmQgZ3JpZCBhcmVuJ3QgaW4gdGhlIHNhbWUgcGxhY2VcbiAgaWYgKCFjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi51cmwgfHwgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmhvc3QgfHwgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnBvcnQpIHtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi51cmwgPSBgaHR0cDovLyR7YWRkcn06JHtwb3J0fSR7YmFzZVBhdGh9YDtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5ob3N0ID0gYWRkcjtcbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5wb3J0ID0gcG9ydDtcbiAgfVxuICAvLyBpZiB0aGUgbm9kZSBjb25maWcgZG9lcyBub3QgaGF2ZSBpZCBhdXRvbWF0aWNhbGx5IGFkZCBpdFxuICBpZiAoIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmlkKSB7XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaWQgPSBgaHR0cDovLyR7Y29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaG9zdH06JHtjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5wb3J0fWA7XG4gIH1cblxuICAvLyB0aGUgcG9zdCBvcHRpb25zXG4gIGNvbnN0IHJlZ1JlcXVlc3QgPSB7XG4gICAgdXJsOiBgJHtodWJVcmkoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24pfS9ncmlkL3JlZ2lzdGVyYCxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBkYXRhOiBjb25maWdIb2xkZXIsXG4gIH07XG5cbiAgaWYgKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnJlZ2lzdGVyICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBObyByZWdpc3RyYXRpb24gc2VudCAoJHtjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5yZWdpc3Rlcn0gPSBmYWxzZSlgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZWdpc3RlckN5Y2xlSW50ZXJ2YWwgPSBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5yZWdpc3RlckN5Y2xlO1xuICBpZiAoaXNOYU4ocmVnaXN0ZXJDeWNsZUludGVydmFsKSB8fCByZWdpc3RlckN5Y2xlSW50ZXJ2YWwgPD0gMCkge1xuICAgIGxvZ2dlci53YXJuKGAncmVnaXN0ZXJDeWNsZScgaXMgbm90IGEgdmFsaWQgcG9zaXRpdmUgbnVtYmVyLiBgICtcbiAgICAgIGBObyByZWdpc3RyYXRpb24gcmVxdWVzdCB3aWxsIGJlIHNlbnQgdG8gdGhlIGdyaWQuYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIGluaXRpYXRlIGEgbmV3IFRocmVhZFxuICBsZXQgZmlyc3QgPSB0cnVlO1xuICBsb2dnZXIuZGVidWcoYFN0YXJ0aW5nIGF1dG8gcmVnaXN0ZXIgdGhyZWFkIGZvciB0aGUgZ3JpZC4gYCArXG4gICAgYFdpbGwgdHJ5IHRvIHJlZ2lzdGVyIGV2ZXJ5ICR7cmVnaXN0ZXJDeWNsZUludGVydmFsfSBtcy5gKTtcbiAgc2V0SW50ZXJ2YWwoYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJSZXRyeSAoKSB7XG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgYXdhaXQgcmVnaXN0ZXJUb0dyaWQocmVnUmVxdWVzdCwgY29uZmlnSG9sZGVyKTtcbiAgICB9IGVsc2UgaWYgKCFhd2FpdCBpc0FscmVhZHlSZWdpc3RlcmVkKGNvbmZpZ0hvbGRlcikpIHtcbiAgICAgIC8vIG1ha2UgdGhlIGh0dHAgUE9TVCB0byB0aGUgZ3JpZCBmb3IgcmVnaXN0cmF0aW9uXG4gICAgICBhd2FpdCByZWdpc3RlclRvR3JpZChyZWdSZXF1ZXN0LCBjb25maWdIb2xkZXIpO1xuICAgIH1cbiAgfSwgcmVnaXN0ZXJDeWNsZUludGVydmFsKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNBbHJlYWR5UmVnaXN0ZXJlZCAoY29uZmlnSG9sZGVyKSB7XG4gIC8vY2hlY2sgaWYgbm9kZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgY29uc3QgaWQgPSBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5pZDtcbiAgdHJ5IHtcbiAgICBjb25zdCB7ZGF0YSwgc3RhdHVzfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgIHVybDogYCR7aHViVXJpKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uKX0vZ3JpZC9hcGkvcHJveHk/aWQ9JHtpZH1gLFxuICAgICAgdGltZW91dDogMTAwMDAsXG4gICAgfSk7XG4gICAgaWYgKHN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggY29kZSAke3N0YXR1c31gKTtcbiAgICB9XG4gICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgIC8vIGlmIHJlZ2lzdGVyIGZhaWwsIHByaW50IHRoZSBkZWJ1ZyBtc2dcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgR3JpZCByZWdpc3RyYXRpb24gZXJyb3I6ICR7ZGF0YS5tc2d9YCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhLnN1Y2Nlc3M7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5kZWJ1ZyhgSHViIGRvd24gb3Igbm90IHJlc3BvbmRpbmc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCByZWdpc3Rlck5vZGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsTUFBTSxHQUFJQyxNQUFELElBQVk7RUFDekIsTUFBTUMsUUFBUSxHQUFHRCxNQUFNLENBQUNFLFdBQVAsSUFBc0IsTUFBdkM7RUFDQSxPQUFRLEdBQUVELFFBQVMsTUFBS0QsTUFBTSxDQUFDRyxPQUFRLElBQUdILE1BQU0sQ0FBQ0ksT0FBUSxFQUF6RDtBQUNELENBSEQ7O0FBWUEsZUFBZUMsWUFBZixDQUE2QkMsSUFBN0IsRUFBbUNDLElBQW5DLEVBQXlDQyxJQUF6QyxFQUErQ0MsUUFBL0MsRUFBeUQ7RUFDdkQsSUFBSUMsY0FBSjs7RUFDQSxJQUFJQyxnQkFBRUMsUUFBRixDQUFXTixJQUFYLENBQUosRUFBc0I7SUFDcEJJLGNBQWMsR0FBR0osSUFBakI7O0lBQ0EsSUFBSTtNQUNGQSxJQUFJLEdBQUcsTUFBTU8sWUFBR0MsUUFBSCxDQUFZUixJQUFaLEVBQWtCLE9BQWxCLENBQWI7SUFDRCxDQUZELENBRUUsT0FBT1MsR0FBUCxFQUFZO01BQ1pDLGdCQUFPQyxLQUFQLENBQWMsMENBQXlDUCxjQUFlLDJCQUEwQkssR0FBRyxDQUFDRyxPQUFRLEVBQTVHOztNQUNBO0lBQ0Q7O0lBQ0QsSUFBSTtNQUNGWixJQUFJLEdBQUdhLElBQUksQ0FBQ0MsS0FBTCxDQUFXZCxJQUFYLENBQVA7SUFDRCxDQUZELENBRUUsT0FBT1MsR0FBUCxFQUFZO01BQ1pDLGdCQUFPSyxhQUFQLENBQXNCLDJDQUEwQ1gsY0FBZSxLQUFJSyxHQUFHLENBQUNHLE9BQVEsRUFBL0Y7O01BQ0E7SUFDRDtFQUNGOztFQUVESSxXQUFXLENBQUNoQixJQUFELEVBQU9DLElBQVAsRUFBYUMsSUFBYixFQUFtQkMsUUFBbkIsQ0FBWDtBQUNEOztBQUVELGVB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
|
|
153
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodWJVcmkiLCJjb25maWciLCJwcm90b2NvbCIsImh1YlByb3RvY29sIiwiaHViSG9zdCIsImh1YlBvcnQiLCJyZWdpc3Rlck5vZGUiLCJkYXRhIiwiYWRkciIsInBvcnQiLCJiYXNlUGF0aCIsImNvbmZpZ0ZpbGVQYXRoIiwiXyIsImlzU3RyaW5nIiwiZnMiLCJyZWFkRmlsZSIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsImVycm9yQW5kVGhyb3ciLCJwb3N0UmVxdWVzdCIsInJlZ2lzdGVyVG9HcmlkIiwicG9zdE9wdGlvbnMiLCJjb25maWdIb2xkZXIiLCJzdGF0dXMiLCJheGlvcyIsIkVycm9yIiwiZGVidWciLCJjb25maWd1cmF0aW9uIiwiaGFzIiwicHJvcGVydHkiLCJ1cmwiLCJob3N0IiwiaWQiLCJyZWdSZXF1ZXN0IiwibWV0aG9kIiwicmVnaXN0ZXIiLCJyZWdpc3RlckN5Y2xlSW50ZXJ2YWwiLCJyZWdpc3RlckN5Y2xlIiwiaXNOYU4iLCJ3YXJuIiwiZmlyc3QiLCJzZXRJbnRlcnZhbCIsInJlZ2lzdGVyUmV0cnkiLCJpc0FscmVhZHlSZWdpc3RlcmVkIiwidGltZW91dCIsInN1Y2Nlc3MiLCJtc2ciXSwic291cmNlcyI6WyIuLi8uLi9saWIvZ3JpZC1yZWdpc3Rlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtmc30gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgaHViVXJpID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBwcm90b2NvbCA9IGNvbmZpZy5odWJQcm90b2NvbCB8fCAnaHR0cCc7XG4gIHJldHVybiBgJHtwcm90b2NvbH06Ly8ke2NvbmZpZy5odWJIb3N0fToke2NvbmZpZy5odWJQb3J0fWA7XG59O1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhIG5ldyBub2RlIHdpdGggYSBzZWxlbml1bSBncmlkXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IGRhdGEgLSBQYXRoIG9yIG9iamVjdCByZXByZXNlbnRpbmcgc2VsZW5pdW0gZ3JpZCBub2RlIGNvbmZpZyBmaWxlLiBJZiBhIGBzdHJpbmdgLCBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIVxuICogQHBhcmFtIHtzdHJpbmd9IFthZGRyXSAtIEJpbmQgdG8gdGhpcyBhZGRyZXNzXG4gKiBAcGFyYW0ge251bWJlcn0gW3BvcnRdIC0gQmluZCB0byB0aGlzIHBvcnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYmFzZVBhdGhdIC0gQmFzZSBwYXRoIGZvciB0aGUgZ3JpZFxuICovXG5hc3luYyBmdW5jdGlvbiByZWdpc3Rlck5vZGUoZGF0YSwgYWRkciwgcG9ydCwgYmFzZVBhdGgpIHtcbiAgbGV0IGNvbmZpZ0ZpbGVQYXRoO1xuICBpZiAoXy5pc1N0cmluZyhkYXRhKSkge1xuICAgIGNvbmZpZ0ZpbGVQYXRoID0gZGF0YTtcbiAgICB0cnkge1xuICAgICAgZGF0YSA9IGF3YWl0IGZzLnJlYWRGaWxlKGRhdGEsICd1dGYtOCcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICBgVW5hYmxlIHRvIGxvYWQgbm9kZSBjb25maWd1cmF0aW9uIGZpbGUgJHtjb25maWdGaWxlUGF0aH0gdG8gcmVnaXN0ZXIgd2l0aCBncmlkOiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvckFuZFRocm93KFxuICAgICAgICBgU3ludGF4IGVycm9yIGluIG5vZGUgY29uZmlndXJhdGlvbiBmaWxlICR7Y29uZmlnRmlsZVBhdGh9OiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcG9zdFJlcXVlc3QoZGF0YSwgYWRkciwgcG9ydCwgYmFzZVBhdGgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWdpc3RlclRvR3JpZChwb3N0T3B0aW9ucywgY29uZmlnSG9sZGVyKSB7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0YXR1c30gPSBhd2FpdCBheGlvcyhwb3N0T3B0aW9ucyk7XG4gICAgaWYgKHN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggY29kZSAke3N0YXR1c31gKTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYEFwcGl1bSBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCB3aXRoIHRoZSB0aGUgZ3JpZCBvbiBgICsgaHViVXJpKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uKVxuICAgICk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgQW4gYXR0ZW1wdCB0byByZWdpc3RlciB3aXRoIHRoZSBncmlkIHdhcyB1bnN1Y2Nlc3NmdWw6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9zdFJlcXVlc3QoY29uZmlnSG9sZGVyLCBhZGRyLCBwb3J0LCBiYXNlUGF0aCkge1xuICAvLyBNb3ZlIFNlbGVuaXVtIDMgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHRvIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gIGlmICghXy5oYXMoY29uZmlnSG9sZGVyLCAnY29uZmlndXJhdGlvbicpKSB7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGNvbmZpZ0hvbGRlcikge1xuICAgICAgaWYgKF8uaGFzKGNvbmZpZ0hvbGRlciwgcHJvcGVydHkpICYmIHByb3BlcnR5ICE9PSAnY2FwYWJpbGl0aWVzJykge1xuICAgICAgICBjb25maWd1cmF0aW9uW3Byb3BlcnR5XSA9IGNvbmZpZ0hvbGRlcltwcm9wZXJ0eV07XG4gICAgICAgIGRlbGV0ZSBjb25maWdIb2xkZXJbcHJvcGVydHldO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICAvLyBpZiB0aGUgbm9kZSBjb25maWcgZG9lcyBub3QgaGF2ZSB0aGUgYXBwaXVtL3dlYmRyaXZlciB1cmwsIGhvc3QsIGFuZCBwb3J0LFxuICAvLyBhdXRvbWF0aWNhbGx5IGFkZCBpdCBiYXNlZCBvbiBob3cgYXBwaXVtIHdhcyBpbml0aWFsaXplZFxuICAvLyBvdGhlcndpc2UsIHdlIHdpbGwgdGFrZSB3aGF0ZXZlciB0aGUgdXNlciBzZXR1cFxuICAvLyBiZWNhdXNlIHdlIHdpbGwgYWx3YXlzIHNldCBsb2NhbGhvc3QvMTI3LjAuMC4xLiB0aGlzIHdvbid0IHdvcmsgaWYgeW91clxuICAvLyBub2RlIGFuZCBncmlkIGFyZW4ndCBpbiB0aGUgc2FtZSBwbGFjZVxuICBpZiAoXG4gICAgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnVybCB8fFxuICAgICFjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5ob3N0IHx8XG4gICAgIWNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLnBvcnRcbiAgKSB7XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24udXJsID0gYGh0dHA6Ly8ke2FkZHJ9OiR7cG9ydH0ke2Jhc2VQYXRofWA7XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24uaG9zdCA9IGFkZHI7XG4gICAgY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucG9ydCA9IHBvcnQ7XG4gIH1cbiAgLy8gaWYgdGhlIG5vZGUgY29uZmlnIGRvZXMgbm90IGhhdmUgaWQgYXV0b21hdGljYWxseSBhZGQgaXRcbiAgaWYgKCFjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5pZCkge1xuICAgIGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmlkID0gYGh0dHA6Ly8ke2NvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmhvc3R9OiR7Y29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucG9ydH1gO1xuICB9XG5cbiAgLy8gdGhlIHBvc3Qgb3B0aW9uc1xuICBjb25zdCByZWdSZXF1ZXN0ID0ge1xuICAgIHVybDogYCR7aHViVXJpKGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uKX0vZ3JpZC9yZWdpc3RlcmAsXG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgZGF0YTogY29uZmlnSG9sZGVyLFxuICB9O1xuXG4gIGlmIChjb25maWdIb2xkZXIuY29uZmlndXJhdGlvbi5yZWdpc3RlciAhPT0gdHJ1ZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgTm8gcmVnaXN0cmF0aW9uIHNlbnQgKCR7Y29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucmVnaXN0ZXJ9ID0gZmFsc2UpYCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVnaXN0ZXJDeWNsZUludGVydmFsID0gY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24ucmVnaXN0ZXJDeWNsZTtcbiAgaWYgKGlzTmFOKHJlZ2lzdGVyQ3ljbGVJbnRlcnZhbCkgfHwgcmVnaXN0ZXJDeWNsZUludGVydmFsIDw9IDApIHtcbiAgICBsb2dnZXIud2FybihcbiAgICAgIGAncmVnaXN0ZXJDeWNsZScgaXMgbm90IGEgdmFsaWQgcG9zaXRpdmUgbnVtYmVyLiBgICtcbiAgICAgICAgYE5vIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IHdpbGwgYmUgc2VudCB0byB0aGUgZ3JpZC5gXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gaW5pdGlhdGUgYSBuZXcgVGhyZWFkXG4gIGxldCBmaXJzdCA9IHRydWU7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgU3RhcnRpbmcgYXV0byByZWdpc3RlciB0aHJlYWQgZm9yIHRoZSBncmlkLiBgICtcbiAgICAgIGBXaWxsIHRyeSB0byByZWdpc3RlciBldmVyeSAke3JlZ2lzdGVyQ3ljbGVJbnRlcnZhbH0gbXMuYFxuICApO1xuICBzZXRJbnRlcnZhbChhc3luYyBmdW5jdGlvbiByZWdpc3RlclJldHJ5KCkge1xuICAgIGlmIChmaXJzdCkge1xuICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICAgIGF3YWl0IHJlZ2lzdGVyVG9HcmlkKHJlZ1JlcXVlc3QsIGNvbmZpZ0hvbGRlcik7XG4gICAgfSBlbHNlIGlmICghKGF3YWl0IGlzQWxyZWFkeVJlZ2lzdGVyZWQoY29uZmlnSG9sZGVyKSkpIHtcbiAgICAgIC8vIG1ha2UgdGhlIGh0dHAgUE9TVCB0byB0aGUgZ3JpZCBmb3IgcmVnaXN0cmF0aW9uXG4gICAgICBhd2FpdCByZWdpc3RlclRvR3JpZChyZWdSZXF1ZXN0LCBjb25maWdIb2xkZXIpO1xuICAgIH1cbiAgfSwgcmVnaXN0ZXJDeWNsZUludGVydmFsKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNBbHJlYWR5UmVnaXN0ZXJlZChjb25maWdIb2xkZXIpIHtcbiAgLy9jaGVjayBpZiBub2RlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZFxuICBjb25zdCBpZCA9IGNvbmZpZ0hvbGRlci5jb25maWd1cmF0aW9uLmlkO1xuICB0cnkge1xuICAgIGNvbnN0IHtkYXRhLCBzdGF0dXN9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgdXJsOiBgJHtodWJVcmkoY29uZmlnSG9sZGVyLmNvbmZpZ3VyYXRpb24pfS9ncmlkL2FwaS9wcm94eT9pZD0ke2lkfWAsXG4gICAgICB0aW1lb3V0OiAxMDAwMCxcbiAgICB9KTtcbiAgICBpZiAoc3RhdHVzICE9PSAyMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVxdWVzdCBmYWlsZWQgd2l0aCBjb2RlICR7c3RhdHVzfWApO1xuICAgIH1cbiAgICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgICAgLy8gaWYgcmVnaXN0ZXIgZmFpbCwgcHJpbnQgdGhlIGRlYnVnIG1zZ1xuICAgICAgbG9nZ2VyLmRlYnVnKGBHcmlkIHJlZ2lzdHJhdGlvbiBlcnJvcjogJHtkYXRhLm1zZ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEuc3VjY2VzcztcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBIdWIgZG93biBvciBub3QgcmVzcG9uZGluZzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCByZWdpc3Rlck5vZGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsTUFBTSxHQUFJQyxNQUFELElBQVk7RUFDekIsTUFBTUMsUUFBUSxHQUFHRCxNQUFNLENBQUNFLFdBQVAsSUFBc0IsTUFBdkM7RUFDQSxPQUFRLEdBQUVELFFBQVMsTUFBS0QsTUFBTSxDQUFDRyxPQUFRLElBQUdILE1BQU0sQ0FBQ0ksT0FBUSxFQUF6RDtBQUNELENBSEQ7O0FBWUEsZUFBZUMsWUFBZixDQUE0QkMsSUFBNUIsRUFBa0NDLElBQWxDLEVBQXdDQyxJQUF4QyxFQUE4Q0MsUUFBOUMsRUFBd0Q7RUFDdEQsSUFBSUMsY0FBSjs7RUFDQSxJQUFJQyxlQUFBLENBQUVDLFFBQUYsQ0FBV04sSUFBWCxDQUFKLEVBQXNCO0lBQ3BCSSxjQUFjLEdBQUdKLElBQWpCOztJQUNBLElBQUk7TUFDRkEsSUFBSSxHQUFHLE1BQU1PLFdBQUEsQ0FBR0MsUUFBSCxDQUFZUixJQUFaLEVBQWtCLE9BQWxCLENBQWI7SUFDRCxDQUZELENBRUUsT0FBT1MsR0FBUCxFQUFZO01BQ1pDLGVBQUEsQ0FBT0MsS0FBUCxDQUNHLDBDQUF5Q1AsY0FBZSwyQkFBMEJLLEdBQUcsQ0FBQ0csT0FBUSxFQURqRzs7TUFHQTtJQUNEOztJQUNELElBQUk7TUFDRlosSUFBSSxHQUFHYSxJQUFJLENBQUNDLEtBQUwsQ0FBV2QsSUFBWCxDQUFQO0lBQ0QsQ0FGRCxDQUVFLE9BQU9TLEdBQVAsRUFBWTtNQUNaQyxlQUFBLENBQU9LLGFBQVAsQ0FDRywyQ0FBMENYLGNBQWUsS0FBSUssR0FBRyxDQUFD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
|