verdaccio 5.26.0 → 5.26.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -20
- package/build/api/index.js +2 -2
- package/build/api/web/api/package.js +3 -2
- package/build/api/web/index.js +2 -1
- package/build/lib/auth.js +2 -2
- package/package.json +21 -21
package/README.md
CHANGED
|
@@ -71,26 +71,6 @@ Verdaccio can be used as a module for launch a server programmatically, [you can
|
|
|
71
71
|
});
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
## Verdaccio 6 next
|
|
75
|
-
|
|
76
|
-
[Verdaccio 6 is on the way](https://github.com/verdaccio/verdaccio/discussions/2970), meanwhile is ready you can start testing (not for production) the new release with:
|
|
77
|
-
|
|
78
|
-
> Latest Node.js v16 required
|
|
79
|
-
|
|
80
|
-
Install with npm:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
npm install --location=global verdaccio@6-next
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
or
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
docker pull verdaccio/verdaccio:nightly-master
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
The migration notes can be find [here](https://github.com/verdaccio/verdaccio/blob/master/docs/migration-v5-to-v6.md).
|
|
93
|
-
|
|
94
74
|
## Plugins
|
|
95
75
|
|
|
96
76
|
You can develop your own [plugins](https://verdaccio.org/docs/plugins) with the [verdaccio generator](https://github.com/verdaccio/generator-verdaccio-plugin). Installing [Yeoman](https://yeoman.io/) is required.
|
package/build/api/index.js
CHANGED
|
@@ -39,7 +39,7 @@ const defineAPI = async function (config, storage) {
|
|
|
39
39
|
const auth = new _auth.default(config);
|
|
40
40
|
const app = (0, _express.default)();
|
|
41
41
|
_search.SearchMemoryIndexer.configureStorage(storage);
|
|
42
|
-
await _search.SearchMemoryIndexer.init();
|
|
42
|
+
await _search.SearchMemoryIndexer.init(_logger.logger);
|
|
43
43
|
// run in production mode by default, just in case
|
|
44
44
|
// it shouldn't make any difference anyway
|
|
45
45
|
app.set('env', process.env.NODE_ENV || 'production');
|
|
@@ -122,4 +122,4 @@ var _default = async function _default(configHash) {
|
|
|
122
122
|
return await defineAPI(config, storage);
|
|
123
123
|
};
|
|
124
124
|
exports.default = _default;
|
|
125
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tcHJlc3Npb24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jb3JzIiwiX2V4cHJlc3MiLCJfbG9kYXNoIiwiX2NvbmZpZyIsIl9taWRkbGV3YXJlIiwiX3NlYXJjaCIsIl9hdXRoIiwiX2NvbmZpZzIiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl9wbHVnaW5Mb2FkZXIiLCJfc3RvcmFnZSIsIl91dGlscyIsIl9kZWJ1ZyIsIl9lbmRwb2ludCIsIl9taWRkbGV3YXJlMiIsIl93ZWIiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInZlcnNpb24iLCJsb2FkVGhlbWUiLCJjb25maWciLCJfIiwiaXNOaWwiLCJ0aGVtZSIsImhlYWQiLCJsb2FkUGx1Z2luIiwicGx1Z2luIiwic3RhdGljUGF0aCIsIm1hbmlmZXN0IiwibWFuaWZlc3RGaWxlcyIsImRlZmluZUFQSSIsInN0b3JhZ2UiLCJfY29uZmlnJHNlcnZlciIsImF1dGgiLCJBdXRoIiwiYXBwIiwiZXhwcmVzcyIsIlNlYXJjaE1lbW9yeUluZGV4ZXIiLCJjb25maWd1cmVTdG9yYWdlIiwiaW5pdCIsInNldCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInNlcnZlciIsInRydXN0UHJveHkiLCJ1c2UiLCJjb3JzIiwibG9nIiwibG9nZ2VyIiwiZXJyb3JSZXBvcnRpbmdNaWRkbGV3YXJlIiwidXNlcl9hZ2VudCIsIl9yZXEiLCJyZXMiLCJuZXh0Iiwic2V0SGVhZGVyIiwiZ2V0VXNlckFnZW50IiwiZGlzYWJsZSIsImNvbXByZXNzaW9uIiwiZ2V0Iiwic2VydmVGYXZpY29uIiwiaG9va0RlYnVnIiwiY29uZmlnUGF0aCIsInBsdWdpbl9wYXJhbXMiLCJwbHVnaW5zIiwibWlkZGxld2FyZXMiLCJyZWdpc3Rlcl9taWRkbGV3YXJlcyIsImZvckVhY2giLCJhcGlFbmRwb2ludCIsImxvY2FscyIsImFwcF92ZXJzaW9uIiwid2ViTWlkZGxld2FyZSIsIl9fIiwiRXJyb3JDb2RlIiwiZ2V0Tm90Rm91bmQiLCJBUElfRVJST1IiLCJXRUJfRElTQUJMRUQiLCJGSUxFX05PVF9GT1VORCIsImhhbmRsZUVycm9yIiwiZmluYWwiLCJfZGVmYXVsdCIsImNvbmZpZ0hhc2giLCJzZXR1cCIsImxvZ3MiLCJBcHBDb25maWciLCJjbG9uZURlZXAiLCJmaWx0ZXJzIiwiZmlsdGVyX21ldGFkYXRhIiwiU3RvcmFnZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21wcmVzc2lvbiBmcm9tICdjb21wcmVzc2lvbic7XG5pbXBvcnQgY29ycyBmcm9tICdjb3JzJztcbmltcG9ydCBleHByZXNzLCB7IEFwcGxpY2F0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBnZXRVc2VyQWdlbnQgfSBmcm9tICdAdmVyZGFjY2lvL2NvbmZpZyc7XG5pbXBvcnQgeyBwbHVnaW5VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBmaW5hbCB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgU2VhcmNoTWVtb3J5SW5kZXhlciB9IGZyb20gJ0B2ZXJkYWNjaW8vc2VhcmNoJztcbmltcG9ydCB7IENvbmZpZyBhcyBJQ29uZmlnIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCBBdXRoIGZyb20gJy4uL2xpYi9hdXRoJztcbmltcG9ydCBBcHBDb25maWcgZnJvbSAnLi4vbGliL2NvbmZpZyc7XG5pbXBvcnQgeyBBUElfRVJST1IgfSBmcm9tICcuLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciwgc2V0dXAgfSBmcm9tICcuLi9saWIvbG9nZ2VyJztcbmltcG9ydCBsb2FkUGx1Z2luIGZyb20gJy4uL2xpYi9wbHVnaW4tbG9hZGVyJztcbmltcG9ydCBTdG9yYWdlIGZyb20gJy4uL2xpYi9zdG9yYWdlJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IGhvb2tEZWJ1ZyBmcm9tICcuL2RlYnVnJztcbmltcG9ydCBhcGlFbmRwb2ludCBmcm9tICcuL2VuZHBvaW50JztcbmltcG9ydCB7IGVycm9yUmVwb3J0aW5nTWlkZGxld2FyZSwgaGFuZGxlRXJyb3IsIHNlcnZlRmF2aWNvbiB9IGZyb20gJy4vbWlkZGxld2FyZSc7XG5pbXBvcnQgd2ViTWlkZGxld2FyZSBmcm9tICcuL3dlYic7XG5cbmNvbnN0IHsgdmVyc2lvbiB9ID0gcmVxdWlyZSgnLi4vLi4vcGFja2FnZS5qc29uJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkVGhlbWUoY29uZmlnKSB7XG4gIGlmIChfLmlzTmlsKGNvbmZpZy50aGVtZSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIF8uaGVhZChcbiAgICAgIGxvYWRQbHVnaW4oXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgY29uZmlnLnRoZW1lLFxuICAgICAgICB7fSxcbiAgICAgICAgZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgICAgIHJldHVybiBwbHVnaW4uc3RhdGljUGF0aCAmJiBwbHVnaW4ubWFuaWZlc3QgJiYgcGx1Z2luLm1hbmlmZXN0RmlsZXM7XG4gICAgICAgIH0sXG4gICAgICAgICd2ZXJkYWNjaW8tdGhlbWUnXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBkZWZpbmVBUEkgPSBhc3luYyBmdW5jdGlvbiAoY29uZmlnOiBJQ29uZmlnLCBzdG9yYWdlOiBTdG9yYWdlKTogUHJvbWlzZTxleHByZXNzLkFwcGxpY2F0aW9uPiB7XG4gIGNvbnN0IGF1dGggPSBuZXcgQXV0aChjb25maWcpO1xuICBjb25zdCBhcHA6IEFwcGxpY2F0aW9uID0gZXhwcmVzcygpO1xuICBTZWFyY2hNZW1vcnlJbmRleGVyLmNvbmZpZ3VyZVN0b3JhZ2Uoc3RvcmFnZSk7XG4gIGF3YWl0IFNlYXJjaE1lbW9yeUluZGV4ZXIuaW5pdCgpO1xuICAvLyBydW4gaW4gcHJvZHVjdGlvbiBtb2RlIGJ5IGRlZmF1bHQsIGp1c3QgaW4gY2FzZVxuICAvLyBpdCBzaG91bGRuJ3QgbWFrZSBhbnkgZGlmZmVyZW5jZSBhbnl3YXlcbiAgYXBwLnNldCgnZW52JywgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ3Byb2R1Y3Rpb24nKTtcblxuICAvLyBBbGxvdyBgcmVxLmlwYCB0byByZXNvbHZlIHByb3Blcmx5IHdoZW4gVmVyZGFjY2lvIGlzIGJlaGluZCBhIHByb3h5IG9yIGxvYWQtYmFsYW5jZXJcbiAgLy8gU2VlOiBodHRwczovL2V4cHJlc3Nqcy5jb20vZW4vZ3VpZGUvYmVoaW5kLXByb3hpZXMuaHRtbFxuICBpZiAoY29uZmlnLnNlcnZlcj8udHJ1c3RQcm94eSkge1xuICAgIGFwcC5zZXQoJ3RydXN0IHByb3h5JywgY29uZmlnLnNlcnZlci50cnVzdFByb3h5KTtcbiAgfVxuXG4gIGFwcC51c2UoY29ycygpKTtcblxuICAvLyAvLyBSb3V0ZXIgc2V0dXBcbiAgYXBwLnVzZShsb2cobG9nZ2VyKSk7XG4gIGFwcC51c2UoZXJyb3JSZXBvcnRpbmdNaWRkbGV3YXJlKTtcbiAgaWYgKGNvbmZpZy51c2VyX2FnZW50KSB7XG4gICAgYXBwLnVzZShmdW5jdGlvbiAoX3JlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICByZXMuc2V0SGVhZGVyKCdYLVBvd2VyZWQtQnknLCBnZXRVc2VyQWdlbnQoY29uZmlnLnVzZXJfYWdlbnQpKTtcbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBhcHAuZGlzYWJsZSgneC1wb3dlcmVkLWJ5Jyk7XG4gIH1cblxuICBhcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuXG4gIGFwcC5nZXQoJy8tL3N0YXRpYy9mYXZpY29uLmljbycsIHNlcnZlRmF2aWNvbihjb25maWcpKTtcblxuICAvLyBIb29rIGZvciB0ZXN0cyBvbmx5XG4gIGlmIChjb25maWcuX2RlYnVnKSB7XG4gICAgaG9va0RlYnVnKGFwcCwgY29uZmlnLmNvbmZpZ1BhdGgpO1xuICB9XG5cbiAgLy8gcmVnaXN0ZXIgbWlkZGxld2FyZSBwbHVnaW5zXG4gIGNvbnN0IHBsdWdpbl9wYXJhbXMgPSB7XG4gICAgY29uZmlnOiBjb25maWcsXG4gICAgbG9nZ2VyOiBsb2dnZXIsXG4gIH07XG5cbiAgY29uc3QgcGx1Z2luczogcGx1Z2luVXRpbHMuQXV0aDxJQ29uZmlnPltdID0gbG9hZFBsdWdpbihcbiAgICBjb25maWcsXG4gICAgY29uZmlnLm1pZGRsZXdhcmVzLFxuICAgIHBsdWdpbl9wYXJhbXMsXG4gICAgZnVuY3Rpb24gKHBsdWdpbjogcGx1Z2luVXRpbHMuTWFuaWZlc3RGaWx0ZXI8SUNvbmZpZz4pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBwbHVnaW4ucmVnaXN0ZXJfbWlkZGxld2FyZXM7XG4gICAgfVxuICApO1xuXG4gIHBsdWdpbnMuZm9yRWFjaCgocGx1Z2luOiBhbnkpID0+IHtcbiAgICBwbHVnaW4ucmVnaXN0ZXJfbWlkZGxld2FyZXMoYXBwLCBhdXRoLCBzdG9yYWdlKTtcbiAgfSk7XG5cbiAgLy8gLy8gRm9yICBucG0gcmVxdWVzdFxuICBhcHAudXNlKGFwaUVuZHBvaW50KGNvbmZpZywgYXV0aCwgc3RvcmFnZSkpO1xuXG4gIC8vIEZvciBXZWJVSSAmIFdlYlVJIEFQSVxuICBpZiAoXy5nZXQoY29uZmlnLCAnd2ViLmVuYWJsZScsIHRydWUpKSB7XG4gICAgYXBwLnVzZSgoX3JlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgICByZXMubG9jYWxzLmFwcF92ZXJzaW9uID0gdmVyc2lvbiA/PyAnJztcbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgICBhcHAudXNlKHdlYk1pZGRsZXdhcmUoY29uZmlnLCBhdXRoLCBzdG9yYWdlKSk7XG4gIH0gZWxzZSB7XG4gICAgYXBwLmdldCgnLycsIGZ1bmN0aW9uIChfLCBfXywgbmV4dDogJE5leHRGdW5jdGlvblZlcikge1xuICAgICAgbmV4dChFcnJvckNvZGUuZ2V0Tm90Rm91bmQoQVBJX0VSUk9SLldFQl9ESVNBQkxFRCkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXBwLmdldCgnLyonLCBmdW5jdGlvbiAoXywgX18sIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpIHtcbiAgICBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChBUElfRVJST1IuRklMRV9OT1RfRk9VTkQpKTtcbiAgfSk7XG4gIGFwcC51c2UoaGFuZGxlRXJyb3IpO1xuICBhcHAudXNlKGZpbmFsKTtcblxuICByZXR1cm4gYXBwO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgKGFzeW5jIGZ1bmN0aW9uIChjb25maWdIYXNoOiBhbnkpIHtcbiAgc2V0dXAoY29uZmlnSGFzaC5sb2dzKTtcbiAgY29uc3QgY29uZmlnOiBJQ29uZmlnID0gbmV3IEFwcENvbmZpZyhfLmNsb25lRGVlcChjb25maWdIYXNoKSk7XG4gIC8vIHJlZ2lzdGVyIG1pZGRsZXdhcmUgcGx1Z2luc1xuICBjb25zdCBwbHVnaW5fcGFyYW1zID0ge1xuICAgIGNvbmZpZzogY29uZmlnLFxuICAgIGxvZ2dlcjogbG9nZ2VyLFxuICB9O1xuICBjb25zdCBmaWx0ZXJzID0gbG9hZFBsdWdpbihcbiAgICBjb25maWcsXG4gICAgY29uZmlnLmZpbHRlcnMgfHwge30sXG4gICAgcGx1Z2luX3BhcmFtcyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgKHBsdWdpbjogcGx1Z2luVXRpbHMuTWFuaWZlc3RGaWx0ZXI8SUNvbmZpZz4pID0+IHBsdWdpbi5maWx0ZXJfbWV0YWRhdGFcbiAgKTtcbiAgY29uc3Qgc3RvcmFnZSA9IG5ldyBTdG9yYWdlKGNvbmZpZyk7XG4gIC8vIHdhaXRzIHVudGlsIGluaXQgY2FsbHMgaGF2ZSBiZWVuIGluaXRpYWxpemVkXG4gIGF3YWl0IHN0b3JhZ2UuaW5pdChjb25maWcsIGZpbHRlcnMpO1xuICByZXR1cm4gYXdhaXQgZGVmaW5lQVBJKGNvbmZpZywgc3RvcmFnZSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFdBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLE9BQUEsR0FBQU4sT0FBQTtBQUdBLElBQUFPLEtBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLE9BQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLGFBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLFFBQUEsR0FBQWIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFhLE1BQUEsR0FBQWIsT0FBQTtBQUVBLElBQUFjLE1BQUEsR0FBQWYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFlLFNBQUEsR0FBQWhCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBZ0IsWUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQixJQUFBLEdBQUFsQixzQkFBQSxDQUFBQyxPQUFBO0FBQWtDLFNBQUFELHVCQUFBbUIsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FB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
|
|
125
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tcHJlc3Npb24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jb3JzIiwiX2V4cHJlc3MiLCJfbG9kYXNoIiwiX2NvbmZpZyIsIl9taWRkbGV3YXJlIiwiX3NlYXJjaCIsIl9hdXRoIiwiX2NvbmZpZzIiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl9wbHVnaW5Mb2FkZXIiLCJfc3RvcmFnZSIsIl91dGlscyIsIl9kZWJ1ZyIsIl9lbmRwb2ludCIsIl9taWRkbGV3YXJlMiIsIl93ZWIiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInZlcnNpb24iLCJsb2FkVGhlbWUiLCJjb25maWciLCJfIiwiaXNOaWwiLCJ0aGVtZSIsImhlYWQiLCJsb2FkUGx1Z2luIiwicGx1Z2luIiwic3RhdGljUGF0aCIsIm1hbmlmZXN0IiwibWFuaWZlc3RGaWxlcyIsImRlZmluZUFQSSIsInN0b3JhZ2UiLCJfY29uZmlnJHNlcnZlciIsImF1dGgiLCJBdXRoIiwiYXBwIiwiZXhwcmVzcyIsIlNlYXJjaE1lbW9yeUluZGV4ZXIiLCJjb25maWd1cmVTdG9yYWdlIiwiaW5pdCIsImxvZ2dlciIsInNldCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInNlcnZlciIsInRydXN0UHJveHkiLCJ1c2UiLCJjb3JzIiwibG9nIiwiZXJyb3JSZXBvcnRpbmdNaWRkbGV3YXJlIiwidXNlcl9hZ2VudCIsIl9yZXEiLCJyZXMiLCJuZXh0Iiwic2V0SGVhZGVyIiwiZ2V0VXNlckFnZW50IiwiZGlzYWJsZSIsImNvbXByZXNzaW9uIiwiZ2V0Iiwic2VydmVGYXZpY29uIiwiaG9va0RlYnVnIiwiY29uZmlnUGF0aCIsInBsdWdpbl9wYXJhbXMiLCJwbHVnaW5zIiwibWlkZGxld2FyZXMiLCJyZWdpc3Rlcl9taWRkbGV3YXJlcyIsImZvckVhY2giLCJhcGlFbmRwb2ludCIsImxvY2FscyIsImFwcF92ZXJzaW9uIiwid2ViTWlkZGxld2FyZSIsIl9fIiwiRXJyb3JDb2RlIiwiZ2V0Tm90Rm91bmQiLCJBUElfRVJST1IiLCJXRUJfRElTQUJMRUQiLCJGSUxFX05PVF9GT1VORCIsImhhbmRsZUVycm9yIiwiZmluYWwiLCJfZGVmYXVsdCIsImNvbmZpZ0hhc2giLCJzZXR1cCIsImxvZ3MiLCJBcHBDb25maWciLCJjbG9uZURlZXAiLCJmaWx0ZXJzIiwiZmlsdGVyX21ldGFkYXRhIiwiU3RvcmFnZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21wcmVzc2lvbiBmcm9tICdjb21wcmVzc2lvbic7XG5pbXBvcnQgY29ycyBmcm9tICdjb3JzJztcbmltcG9ydCBleHByZXNzLCB7IEFwcGxpY2F0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBnZXRVc2VyQWdlbnQgfSBmcm9tICdAdmVyZGFjY2lvL2NvbmZpZyc7XG5pbXBvcnQgeyBwbHVnaW5VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBmaW5hbCB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgU2VhcmNoTWVtb3J5SW5kZXhlciB9IGZyb20gJ0B2ZXJkYWNjaW8vc2VhcmNoJztcbmltcG9ydCB7IENvbmZpZyBhcyBJQ29uZmlnIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCBBdXRoIGZyb20gJy4uL2xpYi9hdXRoJztcbmltcG9ydCBBcHBDb25maWcgZnJvbSAnLi4vbGliL2NvbmZpZyc7XG5pbXBvcnQgeyBBUElfRVJST1IgfSBmcm9tICcuLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciwgc2V0dXAgfSBmcm9tICcuLi9saWIvbG9nZ2VyJztcbmltcG9ydCBsb2FkUGx1Z2luIGZyb20gJy4uL2xpYi9wbHVnaW4tbG9hZGVyJztcbmltcG9ydCBTdG9yYWdlIGZyb20gJy4uL2xpYi9zdG9yYWdlJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IGhvb2tEZWJ1ZyBmcm9tICcuL2RlYnVnJztcbmltcG9ydCBhcGlFbmRwb2ludCBmcm9tICcuL2VuZHBvaW50JztcbmltcG9ydCB7IGVycm9yUmVwb3J0aW5nTWlkZGxld2FyZSwgaGFuZGxlRXJyb3IsIHNlcnZlRmF2aWNvbiB9IGZyb20gJy4vbWlkZGxld2FyZSc7XG5pbXBvcnQgd2ViTWlkZGxld2FyZSBmcm9tICcuL3dlYic7XG5cbmNvbnN0IHsgdmVyc2lvbiB9ID0gcmVxdWlyZSgnLi4vLi4vcGFja2FnZS5qc29uJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkVGhlbWUoY29uZmlnKSB7XG4gIGlmIChfLmlzTmlsKGNvbmZpZy50aGVtZSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIF8uaGVhZChcbiAgICAgIGxvYWRQbHVnaW4oXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgY29uZmlnLnRoZW1lLFxuICAgICAgICB7fSxcbiAgICAgICAgZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgICAgIHJldHVybiBwbHVnaW4uc3RhdGljUGF0aCAmJiBwbHVnaW4ubWFuaWZlc3QgJiYgcGx1Z2luLm1hbmlmZXN0RmlsZXM7XG4gICAgICAgIH0sXG4gICAgICAgICd2ZXJkYWNjaW8tdGhlbWUnXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBkZWZpbmVBUEkgPSBhc3luYyBmdW5jdGlvbiAoY29uZmlnOiBJQ29uZmlnLCBzdG9yYWdlOiBTdG9yYWdlKTogUHJvbWlzZTxleHByZXNzLkFwcGxpY2F0aW9uPiB7XG4gIGNvbnN0IGF1dGggPSBuZXcgQXV0aChjb25maWcpO1xuICBjb25zdCBhcHA6IEFwcGxpY2F0aW9uID0gZXhwcmVzcygpO1xuICBTZWFyY2hNZW1vcnlJbmRleGVyLmNvbmZpZ3VyZVN0b3JhZ2Uoc3RvcmFnZSk7XG4gIGF3YWl0IFNlYXJjaE1lbW9yeUluZGV4ZXIuaW5pdChsb2dnZXIpO1xuICAvLyBydW4gaW4gcHJvZHVjdGlvbiBtb2RlIGJ5IGRlZmF1bHQsIGp1c3QgaW4gY2FzZVxuICAvLyBpdCBzaG91bGRuJ3QgbWFrZSBhbnkgZGlmZmVyZW5jZSBhbnl3YXlcbiAgYXBwLnNldCgnZW52JywgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ3Byb2R1Y3Rpb24nKTtcblxuICAvLyBBbGxvdyBgcmVxLmlwYCB0byByZXNvbHZlIHByb3Blcmx5IHdoZW4gVmVyZGFjY2lvIGlzIGJlaGluZCBhIHByb3h5IG9yIGxvYWQtYmFsYW5jZXJcbiAgLy8gU2VlOiBodHRwczovL2V4cHJlc3Nqcy5jb20vZW4vZ3VpZGUvYmVoaW5kLXByb3hpZXMuaHRtbFxuICBpZiAoY29uZmlnLnNlcnZlcj8udHJ1c3RQcm94eSkge1xuICAgIGFwcC5zZXQoJ3RydXN0IHByb3h5JywgY29uZmlnLnNlcnZlci50cnVzdFByb3h5KTtcbiAgfVxuXG4gIGFwcC51c2UoY29ycygpKTtcblxuICAvLyAvLyBSb3V0ZXIgc2V0dXBcbiAgYXBwLnVzZShsb2cobG9nZ2VyKSk7XG4gIGFwcC51c2UoZXJyb3JSZXBvcnRpbmdNaWRkbGV3YXJlKTtcbiAgaWYgKGNvbmZpZy51c2VyX2FnZW50KSB7XG4gICAgYXBwLnVzZShmdW5jdGlvbiAoX3JlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICByZXMuc2V0SGVhZGVyKCdYLVBvd2VyZWQtQnknLCBnZXRVc2VyQWdlbnQoY29uZmlnLnVzZXJfYWdlbnQpKTtcbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBhcHAuZGlzYWJsZSgneC1wb3dlcmVkLWJ5Jyk7XG4gIH1cblxuICBhcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuXG4gIGFwcC5nZXQoJy8tL3N0YXRpYy9mYXZpY29uLmljbycsIHNlcnZlRmF2aWNvbihjb25maWcpKTtcblxuICAvLyBIb29rIGZvciB0ZXN0cyBvbmx5XG4gIGlmIChjb25maWcuX2RlYnVnKSB7XG4gICAgaG9va0RlYnVnKGFwcCwgY29uZmlnLmNvbmZpZ1BhdGgpO1xuICB9XG5cbiAgLy8gcmVnaXN0ZXIgbWlkZGxld2FyZSBwbHVnaW5zXG4gIGNvbnN0IHBsdWdpbl9wYXJhbXMgPSB7XG4gICAgY29uZmlnOiBjb25maWcsXG4gICAgbG9nZ2VyOiBsb2dnZXIsXG4gIH07XG5cbiAgY29uc3QgcGx1Z2luczogcGx1Z2luVXRpbHMuQXV0aDxJQ29uZmlnPltdID0gbG9hZFBsdWdpbihcbiAgICBjb25maWcsXG4gICAgY29uZmlnLm1pZGRsZXdhcmVzLFxuICAgIHBsdWdpbl9wYXJhbXMsXG4gICAgZnVuY3Rpb24gKHBsdWdpbjogcGx1Z2luVXRpbHMuTWFuaWZlc3RGaWx0ZXI8SUNvbmZpZz4pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBwbHVnaW4ucmVnaXN0ZXJfbWlkZGxld2FyZXM7XG4gICAgfVxuICApO1xuXG4gIHBsdWdpbnMuZm9yRWFjaCgocGx1Z2luOiBhbnkpID0+IHtcbiAgICBwbHVnaW4ucmVnaXN0ZXJfbWlkZGxld2FyZXMoYXBwLCBhdXRoLCBzdG9yYWdlKTtcbiAgfSk7XG5cbiAgLy8gLy8gRm9yICBucG0gcmVxdWVzdFxuICBhcHAudXNlKGFwaUVuZHBvaW50KGNvbmZpZywgYXV0aCwgc3RvcmFnZSkpO1xuXG4gIC8vIEZvciBXZWJVSSAmIFdlYlVJIEFQSVxuICBpZiAoXy5nZXQoY29uZmlnLCAnd2ViLmVuYWJsZScsIHRydWUpKSB7XG4gICAgYXBwLnVzZSgoX3JlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgICByZXMubG9jYWxzLmFwcF92ZXJzaW9uID0gdmVyc2lvbiA/PyAnJztcbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgICBhcHAudXNlKHdlYk1pZGRsZXdhcmUoY29uZmlnLCBhdXRoLCBzdG9yYWdlKSk7XG4gIH0gZWxzZSB7XG4gICAgYXBwLmdldCgnLycsIGZ1bmN0aW9uIChfLCBfXywgbmV4dDogJE5leHRGdW5jdGlvblZlcikge1xuICAgICAgbmV4dChFcnJvckNvZGUuZ2V0Tm90Rm91bmQoQVBJX0VSUk9SLldFQl9ESVNBQkxFRCkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXBwLmdldCgnLyonLCBmdW5jdGlvbiAoXywgX18sIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpIHtcbiAgICBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChBUElfRVJST1IuRklMRV9OT1RfRk9VTkQpKTtcbiAgfSk7XG4gIGFwcC51c2UoaGFuZGxlRXJyb3IpO1xuICBhcHAudXNlKGZpbmFsKTtcblxuICByZXR1cm4gYXBwO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgKGFzeW5jIGZ1bmN0aW9uIChjb25maWdIYXNoOiBhbnkpIHtcbiAgc2V0dXAoY29uZmlnSGFzaC5sb2dzKTtcbiAgY29uc3QgY29uZmlnOiBJQ29uZmlnID0gbmV3IEFwcENvbmZpZyhfLmNsb25lRGVlcChjb25maWdIYXNoKSk7XG4gIC8vIHJlZ2lzdGVyIG1pZGRsZXdhcmUgcGx1Z2luc1xuICBjb25zdCBwbHVnaW5fcGFyYW1zID0ge1xuICAgIGNvbmZpZzogY29uZmlnLFxuICAgIGxvZ2dlcjogbG9nZ2VyLFxuICB9O1xuICBjb25zdCBmaWx0ZXJzID0gbG9hZFBsdWdpbihcbiAgICBjb25maWcsXG4gICAgY29uZmlnLmZpbHRlcnMgfHwge30sXG4gICAgcGx1Z2luX3BhcmFtcyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgKHBsdWdpbjogcGx1Z2luVXRpbHMuTWFuaWZlc3RGaWx0ZXI8SUNvbmZpZz4pID0+IHBsdWdpbi5maWx0ZXJfbWV0YWRhdGFcbiAgKTtcbiAgY29uc3Qgc3RvcmFnZSA9IG5ldyBTdG9yYWdlKGNvbmZpZyk7XG4gIC8vIHdhaXRzIHVudGlsIGluaXQgY2FsbHMgaGF2ZSBiZWVuIGluaXRpYWxpemVkXG4gIGF3YWl0IHN0b3JhZ2UuaW5pdChjb25maWcsIGZpbHRlcnMpO1xuICByZXR1cm4gYXdhaXQgZGVmaW5lQVBJKGNvbmZpZywgc3RvcmFnZSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFdBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLE9BQUEsR0FBQU4sT0FBQTtBQUdBLElBQUFPLEtBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLE9BQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLGFBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFZLFFBQUEsR0FBQWIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFhLE1BQUEsR0FBQWIsT0FBQTtBQUVBLElBQUFjLE1BQUEsR0FBQWYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFlLFNBQUEsR0FBQWhCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBZ0IsWUFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQixJQUFBLEdBQUFsQixzQkFBQSxDQUFBQyxPQUFBO0FBQWtDLFNBQUFELHVCQUFBbUIsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFB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
|
|
@@ -55,7 +55,8 @@ function addPackageWebApi(pkgRouter, storage, auth, config) {
|
|
|
55
55
|
const pkgCopy = _objectSpread({}, pkg);
|
|
56
56
|
pkgCopy.author = (0, _utils2.formatAuthor)(pkg.author);
|
|
57
57
|
try {
|
|
58
|
-
|
|
58
|
+
const isAllowed = await checkAllow(pkg.name, req.remote_user);
|
|
59
|
+
if (isAllowed) {
|
|
59
60
|
if (config.web) {
|
|
60
61
|
pkgCopy.author.avatar = (0, _utils.generateGravatarUrl)(pkgCopy.author.email, config.web.gravatar);
|
|
61
62
|
}
|
|
@@ -158,4 +159,4 @@ function addPackageWebApi(pkgRouter, storage, auth, config) {
|
|
|
158
159
|
}
|
|
159
160
|
var _default = addPackageWebApi;
|
|
160
161
|
exports.default = _default;
|
|
161
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWlkZGxld2FyZSIsIl90YXJiYWxsIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsImdldE9yZGVyIiwib3JkZXIiLCJhZGRQYWNrYWdlV2ViQXBpIiwicGtnUm91dGVyIiwic3RvcmFnZSIsImF1dGgiLCJjb25maWciLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJkZWJ1ZyIsImFmdGVyQWxsIiwiY2hlY2tBbGxvdyIsIm5hbWUiLCJyZW1vdGVVc2VyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGxvd19hY2Nlc3MiLCJwYWNrYWdlTmFtZSIsImVyciIsImFsbG93ZWQiLCJnZXQiLCJyZXEiLCJuZXh0IiwiZ2V0TG9jYWxEYXRhYmFzZSIsInBhY2thZ2VzIiwicHJvY2Vzc1BhY2thZ2VzIiwicGVybWlzc2lvbnMiLCJwYWNrZ2VzQ29weSIsInNsaWNlIiwicGtnIiwicGtnQ29weSIsImF1dGhvciIsImZvcm1hdEF1dGhvciIsInJlbW90ZV91c2VyIiwid2ViIiwiYXZhdGFyIiwiZ2VuZXJhdGVHcmF2YXRhclVybCIsImVtYWlsIiwiZ3JhdmF0YXIiLCJfIiwiaXNOaWwiLCJkaXN0IiwiaXNOdWxsIiwidGFyYmFsbCIsImdldExvY2FsUmVnaXN0cnlUYXJiYWxsVXJpIiwicHJvdG9jb2wiLCJoZWFkZXJzIiwiaG9zdCIsImhvc3RuYW1lIiwidXJsX3ByZWZpeCIsImVycm9yIiwic29ydF9wYWNrYWdlcyIsInNvcnRCeU5hbWUiLCJFcnJvckNvZGUiLCJnZXRJbnRlcm5hbEVycm9yIiwic2NvcGUiLCJhZGRTY29wZSIsInBhY2thZ2UiLCJnZXRQYWNrYWdlIiwidXBsaW5rc0xvb2siLCJjYWxsYmFjayIsImluZm8iLCJzZXQiLCJIRUFERVJfVFlQRSIsIkNPTlRFTlRfVFlQRSIsIkhFQURFUlMiLCJURVhUX1BMQUlOIiwicGFyc2VSZWFkbWUiLCJyZWFkbWUiLCJrZWVwVXBMaW5rRGF0YSIsInYiLCJxdWVyeSIsInNpZGVCYXJJbmZvIiwiY2xvbmUiLCJ2ZXJzaW9ucyIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwiaXNWZXJzaW9uVmFsaWQiLCJsYXRlc3QiLCJfc2lkZUJhckluZm8iLCJESVNUX1RBR1MiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIk5PVF9GT1VORCIsImVuZCIsImRlbGV0ZVByb3BlcnRpZXMiLCJhZGRHcmF2YXRhclN1cHBvcnQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3dlYi9hcGkvcGFja2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGFsbG93IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7XG4gIGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzLFxuICBnZXRMb2NhbFJlZ2lzdHJ5VGFyYmFsbFVyaSxcbn0gZnJvbSAnQHZlcmRhY2Npby90YXJiYWxsJztcbmltcG9ydCB7IENvbmZpZywgTWFuaWZlc3QgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IGdlbmVyYXRlR3JhdmF0YXJVcmwgfSBmcm9tICdAdmVyZGFjY2lvL3V0aWxzJztcblxuaW1wb3J0IEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgRElTVF9UQUdTLCBIRUFERVJTLCBIRUFERVJfVFlQRSwgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHtcbiAgRXJyb3JDb2RlLFxuICBhZGRHcmF2YXRhclN1cHBvcnQsXG4gIGFkZFNjb3BlLFxuICBkZWxldGVQcm9wZXJ0aWVzLFxuICBmb3JtYXRBdXRob3IsXG4gIGlzVmVyc2lvblZhbGlkLFxuICBwYXJzZVJlYWRtZSxcbiAgc29ydEJ5TmFtZSxcbn0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQsICRTaWRlYmFyUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZ2V0T3JkZXIgPSAob3JkZXIgPSAnYXNjJykgPT4ge1xuICByZXR1cm4gb3JkZXIgPT09ICdhc2MnO1xufTtcblxuZXhwb3J0IHR5cGUgUGFja2NhZ2VFeHQgPSBNYW5pZmVzdCAmIHsgYXV0aG9yOiBhbnk7IGRpc3Q/OiB7IHRhcmJhbGw6IHN0cmluZyB9IH07XG5cbmZ1bmN0aW9uIGFkZFBhY2thZ2VXZWJBcGkocGtnUm91dGVyOiBSb3V0ZXIsIHN0b3JhZ2U6IFN0b3JhZ2UsIGF1dGg6IEF1dGgsIGNvbmZpZzogQ29uZmlnKTogUm91dGVyIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4ge1xuICAgICAgbG9nZ2VyLmRlYnVnKHBhcmFtcywgbWVzc2FnZSk7XG4gICAgfSxcbiAgICBhZnRlckFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLmRlYnVnKHBhcmFtcywgbWVzc2FnZSksXG4gIH0pO1xuXG4gIGNvbnN0IGNoZWNrQWxsb3cgPSAobmFtZSwgcmVtb3RlVXNlcik6IFByb21pc2U8Ym9vbGVhbj4gPT5cbiAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhdXRoLmFsbG93X2FjY2Vzcyh7IHBhY2thZ2VOYW1lOiBuYW1lIH0sIHJlbW90ZVVzZXIsIChlcnIsIGFsbG93ZWQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZShhbGxvd2VkKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgLy8gR2V0IGxpc3Qgb2YgYWxsIHZpc2libGUgcGFja2FnZVxuICBwa2dSb3V0ZXIuZ2V0KFxuICAgICcvLS92ZXJkYWNjaW8vZGF0YS9wYWNrYWdlcycsXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmdldExvY2FsRGF0YWJhc2UoYXN5bmMgZnVuY3Rpb24gKGVyciwgcGFja2FnZXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NQYWNrYWdlcyhwYWNrYWdlczogUGFja2NhZ2VFeHRbXSA9IFtdKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uczogUGFja2NhZ2VFeHRbXSA9IFtdO1xuICAgICAgICAgIGNvbnN0IHBhY2tnZXNDb3B5ID0gcGFja2FnZXMuc2xpY2UoKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBrZyBvZiBwYWNrZ2VzQ29weSkge1xuICAgICAgICAgICAgY29uc3QgcGtnQ29weSA9IHsgLi4ucGtnIH07XG4gICAgICAgICAgICBwa2dDb3B5LmF1dGhvciA9IGZvcm1hdEF1dGhvcihwa2cuYXV0aG9yKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmIChhd2FpdCBjaGVja0FsbG93KHBrZy5uYW1lLCByZXEucmVtb3RlX3VzZXIpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy53ZWIpIHtcbiAgICAgICAgICAgICAgICAgIHBrZ0NvcHkuYXV0aG9yLmF2YXRhciA9IGdlbmVyYXRlR3JhdmF0YXJVcmwoXG4gICAgICAgICAgICAgICAgICAgIHBrZ0NvcHkuYXV0aG9yLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBjb25maWcud2ViLmdyYXZhdGFyXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIV8uaXNOaWwocGtnQ29weS5kaXN0KSAmJiAhXy5pc051bGwocGtnQ29weS5kaXN0LnRhcmJhbGwpKSB7XG4gICAgICAgICAgICAgICAgICBwa2dDb3B5LmRpc3QudGFyYmFsbCA9IGdldExvY2FsUmVnaXN0cnlUYXJiYWxsVXJpKFxuICAgICAgICAgICAgICAgICAgICBwa2dDb3B5LmRpc3QudGFyYmFsbCxcbiAgICAgICAgICAgICAgICAgICAgcGtnLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHsgcHJvdG9jb2w6IHJlcS5wcm90b2NvbCwgaGVhZGVyczogcmVxLmhlYWRlcnMgYXMgYW55LCBob3N0OiByZXEuaG9zdG5hbWUgfSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLnVybF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zLnB1c2gocGtnQ29weSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgeyBuYW1lOiBwa2cubmFtZSwgZXJyb3I6IGVyciB9LFxuICAgICAgICAgICAgICAgICdwZXJtaXNzaW9uIHByb2Nlc3MgZm9yIEB7bmFtZX0gaGFzIGZhaWxlZDogQHtlcnJvcn0nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcGVybWlzc2lvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHdlYiB9ID0gY29uZmlnO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IG9yZGVyOiBib29sZWFuID0gY29uZmlnLndlYiA/IGdldE9yZGVyKHdlYi5zb3J0X3BhY2thZ2VzKSA6IHRydWU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBuZXh0KHNvcnRCeU5hbWUoYXdhaXQgcHJvY2Vzc1BhY2thZ2VzKHBhY2thZ2VzKSwgb3JkZXIpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBuZXh0KEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgLy8gR2V0IHBhY2thZ2UgcmVhZG1lXG4gIHBrZ1JvdXRlci5nZXQoXG4gICAgJy8tL3ZlcmRhY2Npby9kYXRhL3BhY2thZ2UvcmVhZG1lLyhAOnNjb3BlLyk/OnBhY2thZ2UvOnZlcnNpb24/JyxcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnNjb3BlXG4gICAgICAgID8gYWRkU2NvcGUocmVxLnBhcmFtcy5zY29wZSwgcmVxLnBhcmFtcy5wYWNrYWdlKVxuICAgICAgICA6IHJlcS5wYXJhbXMucGFja2FnZTtcblxuICAgICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgICAgbmFtZTogcGFja2FnZU5hbWUsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoZXJyLCBpbmZvKTogdm9pZCB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXMuc2V0KEhFQURFUl9UWVBFLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5URVhUX1BMQUlOKTtcbiAgICAgICAgICBuZXh0KHBhcnNlUmVhZG1lKGluZm8ubmFtZSwgaW5mby5yZWFkbWUpKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICBwa2dSb3V0ZXIuZ2V0KFxuICAgICcvLS92ZXJkYWNjaW8vZGF0YS9zaWRlYmFyLyhAOnNjb3BlLyk/OnBhY2thZ2UnLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBwYWNrYWdlTmFtZTogc3RyaW5nID0gcmVxLnBhcmFtcy5zY29wZVxuICAgICAgICA/IGFkZFNjb3BlKHJlcS5wYXJhbXMuc2NvcGUsIHJlcS5wYXJhbXMucGFja2FnZSlcbiAgICAgICAgOiByZXEucGFyYW1zLnBhY2thZ2U7XG5cbiAgICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICAgIG5hbWU6IHBhY2thZ2VOYW1lLFxuICAgICAgICB1cGxpbmtzTG9vazogdHJ1ZSxcbiAgICAgICAga2VlcFVwTGlua0RhdGE6IHRydWUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlcnI6IEVycm9yLCBpbmZvOiAkU2lkZWJhclBhY2thZ2UpOiB2b2lkIHtcbiAgICAgICAgICBpZiAoXy5pc05pbChlcnIpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHYgfSA9IHJlcS5xdWVyeTtcbiAgICAgICAgICAgIGxldCBzaWRlQmFySW5mbzogYW55ID0gXy5jbG9uZShpbmZvKTtcbiAgICAgICAgICAgIHNpZGVCYXJJbmZvLnZlcnNpb25zID0gY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMoXG4gICAgICAgICAgICAgIGluZm8sXG4gICAgICAgICAgICAgIHsgcHJvdG9jb2w6IHJlcS5wcm90b2NvbCwgaGVhZGVyczogcmVxLmhlYWRlcnMgYXMgYW55LCBob3N0OiByZXEuaG9zdG5hbWUgfSxcbiAgICAgICAgICAgICAgY29uZmlnLnVybF9wcmVmaXhcbiAgICAgICAgICAgICkudmVyc2lvbnM7XG4gICAgICAgICAgICBpZiAoaXNWZXJzaW9uVmFsaWQoaW5mbywgdikpIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBzaWRlQmFySW5mby5sYXRlc3QgPSBzaWRlQmFySW5mby52ZXJzaW9uc1t2XTtcbiAgICAgICAgICAgICAgc2lkZUJhckluZm8ubGF0ZXN0LmF1dGhvciA9IGZvcm1hdEF1dGhvcihzaWRlQmFySW5mby5sYXRlc3QuYXV0aG9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNpZGVCYXJJbmZvLmxhdGVzdCA9IHNpZGVCYXJJbmZvLnZlcnNpb25zW2luZm9bRElTVF9UQUdTXS5sYXRlc3RdO1xuICAgICAgICAgICAgICBpZiAoc2lkZUJhckluZm8/LmxhdGVzdCkge1xuICAgICAgICAgICAgICAgIHNpZGVCYXJJbmZvLmxhdGVzdC5hdXRob3IgPSBmb3JtYXRBdXRob3Ioc2lkZUJhckluZm8ubGF0ZXN0LmF1dGhvcik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpO1xuICAgICAgICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNpZGVCYXJJbmZvID0gZGVsZXRlUHJvcGVydGllcyhbJ3JlYWRtZScsICdfYXR0YWNobWVudHMnLCAnX3JldicsICduYW1lJ10sIHNpZGVCYXJJbmZvKTtcbiAgICAgICAgICAgIGlmIChjb25maWcud2ViKSB7XG4gICAgICAgICAgICAgIHNpZGVCYXJJbmZvID0gYWRkR3JhdmF0YXJTdXBwb3J0KHNpZGVCYXJJbmZvLCBjb25maWcud2ViLmdyYXZhdGFyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNpZGVCYXJJbmZvID0gYWRkR3JhdmF0YXJTdXBwb3J0KHNpZGVCYXJJbmZvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoc2lkZUJhckluZm8pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk5PVF9GT1VORCk7XG4gICAgICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHJldHVybiBwa2dSb3V0ZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFkZFBhY2thZ2VXZWJBcGk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUtBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUdBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLE9BQUEsR0FBQU4sT0FBQTtBQVM0QixTQUFBRCx1QkFBQVEsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUFBLFNBQUFHLFFBQUFDLE1BQUEsRUFBQUMsY0FBQSxRQUFBQyxJQUFBLEdBQUFDLE1BQUEsQ0FBQUQsSUFBQSxDQUFBRixNQUFBLE9BQUFHLE1BQUEsQ0FBQUMscUJBQUEsUUFBQUMsT0FBQSxHQUFBRixNQUFBLENBQUFDLHFCQUFBLENBQUFKLE1BQUEsR0FBQUMsY0FBQSxLQUFBSSxPQUFBLEdBQUFBLE9BQUEsQ0FBQUMsTUFBQSxXQUFBQyxHQUFBLFdBQUFKLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsTUFBQSxFQUFBTyxHQUFBLEVBQUFFLFVBQUEsT0FBQVAsSUFBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsSUFBQSxFQUFBRyxPQUFBLFlBQUFILElBQUE7QUFBQSxTQUFBVSxjQUFBQyxNQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBQUYsQ0FBQSxVQUFBRyxNQUFB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
|
|
162
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWlkZGxld2FyZSIsIl90YXJiYWxsIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsImdldE9yZGVyIiwib3JkZXIiLCJhZGRQYWNrYWdlV2ViQXBpIiwicGtnUm91dGVyIiwic3RvcmFnZSIsImF1dGgiLCJjb25maWciLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJkZWJ1ZyIsImFmdGVyQWxsIiwiY2hlY2tBbGxvdyIsIm5hbWUiLCJyZW1vdGVVc2VyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGxvd19hY2Nlc3MiLCJwYWNrYWdlTmFtZSIsImVyciIsImFsbG93ZWQiLCJnZXQiLCJyZXEiLCJuZXh0IiwiZ2V0TG9jYWxEYXRhYmFzZSIsInBhY2thZ2VzIiwicHJvY2Vzc1BhY2thZ2VzIiwicGVybWlzc2lvbnMiLCJwYWNrZ2VzQ29weSIsInNsaWNlIiwicGtnIiwicGtnQ29weSIsImF1dGhvciIsImZvcm1hdEF1dGhvciIsImlzQWxsb3dlZCIsInJlbW90ZV91c2VyIiwid2ViIiwiYXZhdGFyIiwiZ2VuZXJhdGVHcmF2YXRhclVybCIsImVtYWlsIiwiZ3JhdmF0YXIiLCJfIiwiaXNOaWwiLCJkaXN0IiwiaXNOdWxsIiwidGFyYmFsbCIsImdldExvY2FsUmVnaXN0cnlUYXJiYWxsVXJpIiwicHJvdG9jb2wiLCJoZWFkZXJzIiwiaG9zdCIsImhvc3RuYW1lIiwidXJsX3ByZWZpeCIsImVycm9yIiwic29ydF9wYWNrYWdlcyIsInNvcnRCeU5hbWUiLCJFcnJvckNvZGUiLCJnZXRJbnRlcm5hbEVycm9yIiwic2NvcGUiLCJhZGRTY29wZSIsInBhY2thZ2UiLCJnZXRQYWNrYWdlIiwidXBsaW5rc0xvb2siLCJjYWxsYmFjayIsImluZm8iLCJzZXQiLCJIRUFERVJfVFlQRSIsIkNPTlRFTlRfVFlQRSIsIkhFQURFUlMiLCJURVhUX1BMQUlOIiwicGFyc2VSZWFkbWUiLCJyZWFkbWUiLCJrZWVwVXBMaW5rRGF0YSIsInYiLCJxdWVyeSIsInNpZGVCYXJJbmZvIiwiY2xvbmUiLCJ2ZXJzaW9ucyIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwiaXNWZXJzaW9uVmFsaWQiLCJsYXRlc3QiLCJfc2lkZUJhckluZm8iLCJESVNUX1RBR1MiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIk5PVF9GT1VORCIsImVuZCIsImRlbGV0ZVByb3BlcnRpZXMiLCJhZGRHcmF2YXRhclN1cHBvcnQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3dlYi9hcGkvcGFja2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGFsbG93IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7XG4gIGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzLFxuICBnZXRMb2NhbFJlZ2lzdHJ5VGFyYmFsbFVyaSxcbn0gZnJvbSAnQHZlcmRhY2Npby90YXJiYWxsJztcbmltcG9ydCB7IENvbmZpZywgTWFuaWZlc3QgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IGdlbmVyYXRlR3JhdmF0YXJVcmwgfSBmcm9tICdAdmVyZGFjY2lvL3V0aWxzJztcblxuaW1wb3J0IEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgRElTVF9UQUdTLCBIRUFERVJTLCBIRUFERVJfVFlQRSwgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHtcbiAgRXJyb3JDb2RlLFxuICBhZGRHcmF2YXRhclN1cHBvcnQsXG4gIGFkZFNjb3BlLFxuICBkZWxldGVQcm9wZXJ0aWVzLFxuICBmb3JtYXRBdXRob3IsXG4gIGlzVmVyc2lvblZhbGlkLFxuICBwYXJzZVJlYWRtZSxcbiAgc29ydEJ5TmFtZSxcbn0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQsICRTaWRlYmFyUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZ2V0T3JkZXIgPSAob3JkZXIgPSAnYXNjJykgPT4ge1xuICByZXR1cm4gb3JkZXIgPT09ICdhc2MnO1xufTtcblxuZXhwb3J0IHR5cGUgUGFja2NhZ2VFeHQgPSBNYW5pZmVzdCAmIHsgYXV0aG9yOiBhbnk7IGRpc3Q/OiB7IHRhcmJhbGw6IHN0cmluZyB9IH07XG5cbmZ1bmN0aW9uIGFkZFBhY2thZ2VXZWJBcGkocGtnUm91dGVyOiBSb3V0ZXIsIHN0b3JhZ2U6IFN0b3JhZ2UsIGF1dGg6IEF1dGgsIGNvbmZpZzogQ29uZmlnKTogUm91dGVyIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4ge1xuICAgICAgbG9nZ2VyLmRlYnVnKHBhcmFtcywgbWVzc2FnZSk7XG4gICAgfSxcbiAgICBhZnRlckFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLmRlYnVnKHBhcmFtcywgbWVzc2FnZSksXG4gIH0pO1xuXG4gIGNvbnN0IGNoZWNrQWxsb3cgPSAobmFtZSwgcmVtb3RlVXNlcik6IFByb21pc2U8Ym9vbGVhbj4gPT5cbiAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhdXRoLmFsbG93X2FjY2Vzcyh7IHBhY2thZ2VOYW1lOiBuYW1lIH0sIHJlbW90ZVVzZXIsIChlcnIsIGFsbG93ZWQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZShhbGxvd2VkKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgLy8gR2V0IGxpc3Qgb2YgYWxsIHZpc2libGUgcGFja2FnZVxuICBwa2dSb3V0ZXIuZ2V0KFxuICAgICcvLS92ZXJkYWNjaW8vZGF0YS9wYWNrYWdlcycsXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmdldExvY2FsRGF0YWJhc2UoYXN5bmMgZnVuY3Rpb24gKGVyciwgcGFja2FnZXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NQYWNrYWdlcyhwYWNrYWdlczogUGFja2NhZ2VFeHRbXSA9IFtdKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uczogUGFja2NhZ2VFeHRbXSA9IFtdO1xuICAgICAgICAgIGNvbnN0IHBhY2tnZXNDb3B5ID0gcGFja2FnZXMuc2xpY2UoKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBrZyBvZiBwYWNrZ2VzQ29weSkge1xuICAgICAgICAgICAgY29uc3QgcGtnQ29weSA9IHsgLi4ucGtnIH07XG4gICAgICAgICAgICBwa2dDb3B5LmF1dGhvciA9IGZvcm1hdEF1dGhvcihwa2cuYXV0aG9yKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzQWxsb3dlZCA9IGF3YWl0IGNoZWNrQWxsb3cocGtnLm5hbWUsIHJlcS5yZW1vdGVfdXNlcik7XG4gICAgICAgICAgICAgIGlmIChpc0FsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLndlYikge1xuICAgICAgICAgICAgICAgICAgcGtnQ29weS5hdXRob3IuYXZhdGFyID0gZ2VuZXJhdGVHcmF2YXRhclVybChcbiAgICAgICAgICAgICAgICAgICAgcGtnQ29weS5hdXRob3IuZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy53ZWIuZ3JhdmF0YXJcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghXy5pc05pbChwa2dDb3B5LmRpc3QpICYmICFfLmlzTnVsbChwa2dDb3B5LmRpc3QudGFyYmFsbCkpIHtcbiAgICAgICAgICAgICAgICAgIHBrZ0NvcHkuZGlzdC50YXJiYWxsID0gZ2V0TG9jYWxSZWdpc3RyeVRhcmJhbGxVcmkoXG4gICAgICAgICAgICAgICAgICAgIHBrZ0NvcHkuZGlzdC50YXJiYWxsLFxuICAgICAgICAgICAgICAgICAgICBwa2cubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgeyBwcm90b2NvbDogcmVxLnByb3RvY29sLCBoZWFkZXJzOiByZXEuaGVhZGVycyBhcyBhbnksIGhvc3Q6IHJlcS5ob3N0bmFtZSB9LFxuICAgICAgICAgICAgICAgICAgICBjb25maWcudXJsX3ByZWZpeFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbnMucHVzaChwa2dDb3B5KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICB7IG5hbWU6IHBrZy5uYW1lLCBlcnJvcjogZXJyIH0sXG4gICAgICAgICAgICAgICAgJ3Blcm1pc3Npb24gcHJvY2VzcyBmb3IgQHtuYW1lfSBoYXMgZmFpbGVkOiBAe2Vycm9yfSdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBwZXJtaXNzaW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgd2ViIH0gPSBjb25maWc7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3Qgb3JkZXI6IGJvb2xlYW4gPSBjb25maWcud2ViID8gZ2V0T3JkZXIod2ViLnNvcnRfcGFja2FnZXMpIDogdHJ1ZTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIG5leHQoc29ydEJ5TmFtZShhd2FpdCBwcm9jZXNzUGFja2FnZXMocGFja2FnZXMpLCBvcmRlcikpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIG5leHQoRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICAvLyBHZXQgcGFja2FnZSByZWFkbWVcbiAgcGtnUm91dGVyLmdldChcbiAgICAnLy0vdmVyZGFjY2lvL2RhdGEvcGFja2FnZS9yZWFkbWUvKEA6c2NvcGUvKT86cGFja2FnZS86dmVyc2lvbj8nLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMuc2NvcGVcbiAgICAgICAgPyBhZGRTY29wZShyZXEucGFyYW1zLnNjb3BlLCByZXEucGFyYW1zLnBhY2thZ2UpXG4gICAgICAgIDogcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiBwYWNrYWdlTmFtZSxcbiAgICAgICAgdXBsaW5rc0xvb2s6IHRydWUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlcnIsIGluZm8pOiB2b2lkIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlcy5zZXQoSEVBREVSX1RZUEUuQ09OVEVOVF9UWVBFLCBIRUFERVJTLlRFWFRfUExBSU4pO1xuICAgICAgICAgIG5leHQocGFyc2VSZWFkbWUoaW5mby5uYW1lLCBpbmZvLnJlYWRtZSkpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHBrZ1JvdXRlci5nZXQoXG4gICAgJy8tL3ZlcmRhY2Npby9kYXRhL3NpZGViYXIvKEA6c2NvcGUvKT86cGFja2FnZScsXG4gICAgY2FuKCdhY2Nlc3MnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHBhY2thZ2VOYW1lOiBzdHJpbmcgPSByZXEucGFyYW1zLnNjb3BlXG4gICAgICAgID8gYWRkU2NvcGUocmVxLnBhcmFtcy5zY29wZSwgcmVxLnBhcmFtcy5wYWNrYWdlKVxuICAgICAgICA6IHJlcS5wYXJhbXMucGFja2FnZTtcblxuICAgICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgICAgbmFtZTogcGFja2FnZU5hbWUsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICBrZWVwVXBMaW5rRGF0YTogdHJ1ZSxcbiAgICAgICAgcmVxLFxuICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKGVycjogRXJyb3IsIGluZm86ICRTaWRlYmFyUGFja2FnZSk6IHZvaWQge1xuICAgICAgICAgIGlmIChfLmlzTmlsKGVycikpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdiB9ID0gcmVxLnF1ZXJ5O1xuICAgICAgICAgICAgbGV0IHNpZGVCYXJJbmZvOiBhbnkgPSBfLmNsb25lKGluZm8pO1xuICAgICAgICAgICAgc2lkZUJhckluZm8udmVyc2lvbnMgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhcbiAgICAgICAgICAgICAgaW5mbyxcbiAgICAgICAgICAgICAgeyBwcm90b2NvbDogcmVxLnByb3RvY29sLCBoZWFkZXJzOiByZXEuaGVhZGVycyBhcyBhbnksIGhvc3Q6IHJlcS5ob3N0bmFtZSB9LFxuICAgICAgICAgICAgICBjb25maWcudXJsX3ByZWZpeFxuICAgICAgICAgICAgKS52ZXJzaW9ucztcbiAgICAgICAgICAgIGlmIChpc1ZlcnNpb25WYWxpZChpbmZvLCB2KSkge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHNpZGVCYXJJbmZvLmxhdGVzdCA9IHNpZGVCYXJJbmZvLnZlcnNpb25zW3ZdO1xuICAgICAgICAgICAgICBzaWRlQmFySW5mby5sYXRlc3QuYXV0aG9yID0gZm9ybWF0QXV0aG9yKHNpZGVCYXJJbmZvLmxhdGVzdC5hdXRob3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2lkZUJhckluZm8ubGF0ZXN0ID0gc2lkZUJhckluZm8udmVyc2lvbnNbaW5mb1tESVNUX1RBR1NdLmxhdGVzdF07XG4gICAgICAgICAgICAgIGlmIChzaWRlQmFySW5mbz8ubGF0ZXN0KSB7XG4gICAgICAgICAgICAgICAgc2lkZUJhckluZm8ubGF0ZXN0LmF1dGhvciA9IGZvcm1hdEF1dGhvcihzaWRlQmFySW5mby5sYXRlc3QuYXV0aG9yKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk5PVF9GT1VORCk7XG4gICAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2lkZUJhckluZm8gPSBkZWxldGVQcm9wZXJ0aWVzKFsncmVhZG1lJywgJ19hdHRhY2htZW50cycsICdfcmV2JywgJ25hbWUnXSwgc2lkZUJhckluZm8pO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy53ZWIpIHtcbiAgICAgICAgICAgICAgc2lkZUJhckluZm8gPSBhZGRHcmF2YXRhclN1cHBvcnQoc2lkZUJhckluZm8sIGNvbmZpZy53ZWIuZ3JhdmF0YXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2lkZUJhckluZm8gPSBhZGRHcmF2YXRhclN1cHBvcnQoc2lkZUJhckluZm8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dChzaWRlQmFySW5mbyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKTtcbiAgICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHBrZ1JvdXRlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWRkUGFja2FnZVdlYkFwaTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBS0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBR0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBUzRCLFNBQUFELHVCQUFBUSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBQUEsU0FBQUcsUUFBQUMsTUFBQSxFQUFBQyxjQUFBLFFBQUFDLElBQUEsR0FBQUMsTUFBQSxDQUFBRCxJQUFBLENBQUFGLE1BQUEsT0FBQUcsTUFBQSxDQUFBQyxxQkFBQSxRQUFBQyxPQUFBLEdBQUFGLE1BQUEsQ0FBQUMscUJBQUEsQ0FBQUosTUFBQSxHQUFBQyxjQUFBLEtBQUFJLE9BQUEsR0FBQUEsT0FBQSxDQUFBQyxNQUFBLFdBQUFDLEdBQUEsV0FBQUosTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixNQUFBLEVBQUFPLEdBQUEsRUFBQUUsVUFBQSxPQUFBUCxJQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxJQUFBLEVBQUFHLE9BQUEsWUFBQUgsSUFBQTtBQUFBLFNBQUFVLGNBQUFDLE1BQUEsYUFBQUMsQ0FB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
|
package/build/api/web/index.js
CHANGED
|
@@ -25,6 +25,7 @@ var _default = (config, auth, storage) => {
|
|
|
25
25
|
const pluginOptions = loadTheme(config) || require('@verdaccio/ui-theme')();
|
|
26
26
|
// eslint-disable-next-line new-cap
|
|
27
27
|
const router = (0, _express.Router)();
|
|
28
|
+
router.use(auth.webUIJWTmiddleware());
|
|
28
29
|
router.use(_middleware.setSecurityWebHeaders);
|
|
29
30
|
// render web
|
|
30
31
|
// @ts-ignore
|
|
@@ -34,4 +35,4 @@ var _default = (config, auth, storage) => {
|
|
|
34
35
|
return router;
|
|
35
36
|
};
|
|
36
37
|
exports.default = _default;
|
|
37
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9leHByZXNzIiwiX2xvZGFzaCIsIl9taWRkbGV3YXJlIiwiX3BsdWdpbkxvYWRlciIsIl9hcGkiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiYnVpbGREZWJ1ZyIsImxvYWRUaGVtZSIsImNvbmZpZyIsIl8iLCJpc05pbCIsInRoZW1lIiwiaGVhZCIsImxvYWRQbHVnaW4iLCJwbHVnaW4iLCJzdGF0aWNQYXRoIiwibWFuaWZlc3QiLCJtYW5pZmVzdEZpbGVzIiwiX2RlZmF1bHQiLCJhdXRoIiwic3RvcmFnZSIsInBsdWdpbk9wdGlvbnMiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJ3ZWJVSUpXVG1pZGRsZXdhcmUiLCJzZXRTZWN1cml0eVdlYkhlYWRlcnMiLCJyZW5kZXJXZWJNaWRkbGV3YXJlIiwid2ViRW5kcG9pbnRzQXBpIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvd2ViL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgcmVuZGVyV2ViTWlkZGxld2FyZSwgc2V0U2VjdXJpdHlXZWJIZWFkZXJzIH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcblxuaW1wb3J0IGxvYWRQbHVnaW4gZnJvbSAnLi4vLi4vbGliL3BsdWdpbi1sb2FkZXInO1xuaW1wb3J0IHdlYkVuZHBvaW50c0FwaSBmcm9tICcuL2FwaSc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOndlYicpO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFRoZW1lKGNvbmZpZykge1xuICBpZiAoXy5pc05pbChjb25maWcudGhlbWUpID09PSBmYWxzZSkge1xuICAgIGRlYnVnKCdsb2FkaW5nIGN1c3RvbSB1aSB0aGVtZScpO1xuICAgIHJldHVybiBfLmhlYWQoXG4gICAgICBsb2FkUGx1Z2luKFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGNvbmZpZy50aGVtZSxcbiAgICAgICAge30sXG4gICAgICAgIGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgICAgICByZXR1cm4gcGx1Z2luLnN0YXRpY1BhdGggJiYgcGx1Z2luLm1hbmlmZXN0ICYmIHBsdWdpbi5tYW5pZmVzdEZpbGVzO1xuICAgICAgICB9LFxuICAgICAgICAndmVyZGFjY2lvLXRoZW1lJ1xuICAgICAgKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgKGNvbmZpZywgYXV0aCwgc3RvcmFnZSkgPT4ge1xuICBjb25zdCBwbHVnaW5PcHRpb25zID0gbG9hZFRoZW1lKGNvbmZpZykgfHwgcmVxdWlyZSgnQHZlcmRhY2Npby91aS10aGVtZScpKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gIGNvbnN0IHJvdXRlciA9IFJvdXRlcigpO1xuICByb3V0ZXIudXNlKGF1dGgud2ViVUlKV1RtaWRkbGV3YXJlKCkpO1xuICByb3V0ZXIudXNlKHNldFNlY3VyaXR5V2ViSGVhZGVycyk7XG4gIC8vIHJlbmRlciB3ZWJcbiAgLy8gQHRzLWlnbm9yZVxuICByb3V0ZXIudXNlKCcvJywgcmVuZGVyV2ViTWlkZGxld2FyZShjb25maWcsIG51bGwsIHBsdWdpbk9wdGlvbnMpKTtcbiAgLy8gd2ViIGVuZHBvaW50cywgc2VhcmNoLCBwYWNrYWdlcywgZXRjXG4gIHJvdXRlci51c2Uod2ViRW5kcG9pbnRzQXBpKGF1dGgsIHN0b3JhZ2UsIGNvbmZpZykpO1xuICByZXR1cm4gcm91dGVyO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLGFBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLElBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUFvQyxTQUFBRCx1QkFBQU8sR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVwQyxNQUFNRyxLQUFLLEdBQUcsSUFBQUMsY0FBVSxFQUFDLGVBQWUsQ0FBQztBQUVsQyxTQUFTQyxTQUFTQSxDQUFDQyxNQUFNLEVBQUU7RUFDaEMsSUFBSUMsZUFBQyxDQUFDQyxLQUFLLENBQUNGLE1BQU0sQ0FBQ0csS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFO0lBQ25DTixLQUFLLENBQUMseUJBQXlCLENBQUM7SUFDaEMsT0FBT0ksZUFBQyxDQUFDRyxJQUFJLENBQ1gsSUFBQUMscUJBQVUsRUFDUkwsTUFBTSxFQUNOQSxNQUFNLENBQUNHLEtBQUssRUFDWixDQUFDLENBQUMsRUFDRixVQUFVRyxNQUFNLEVBQUU7TUFDaEIsT0FBT0EsTUFBTSxDQUFDQyxVQUFVLElBQUlELE1BQU0sQ0FBQ0UsUUFBUSxJQUFJRixNQUFNLENBQUNHLGFBQWE7SUFDckUsQ0FBQyxFQUNELGlCQUNGLENBQ0YsQ0FBQztFQUNIO0FBQ0Y7QUFBQyxJQUFBQyxRQUFBLEdBRWNBLENBQUNWLE1BQU0sRUFBRVcsSUFBSSxFQUFFQyxPQUFPLEtBQUs7RUFDeEMsTUFBTUMsYUFBYSxHQUFHZCxTQUFTLENBQUNDLE1BQU0sQ0FBQyxJQUFJWixPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0VBQzNFO0VBQ0EsTUFBTTBCLE1BQU0sR0FBRyxJQUFBQyxlQUFNLEVBQUMsQ0FBQztFQUN2QkQsTUFBTSxDQUFDRSxHQUFHLENBQUNMLElBQUksQ0FBQ00sa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0VBQ3JDSCxNQUFNLENBQUNFLEdBQUcsQ0FBQ0UsaUNBQXFCLENBQUM7RUFDakM7RUFDQTtFQUNBSixNQUFNLENBQUNFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBQUcsK0JBQW1CLEVBQUNuQixNQUFNLEVBQUUsSUFBSSxFQUFFYSxhQUFhLENBQUMsQ0FBQztFQUNqRTtFQUNBQyxNQUFNLENBQUNFLEdBQUcsQ0FBQyxJQUFBSSxZQUFlLEVBQUNULElBQUksRUFBRUMsT0FBTyxFQUFFWixNQUFNLENBQUMsQ0FBQztFQUNsRCxPQUFPYyxNQUFNO0FBQ2YsQ0FBQztBQUFBTyxPQUFBLENBQUF6QixPQUFBLEdBQUFjLFFBQUEifQ==
|
package/build/lib/auth.js
CHANGED
|
@@ -260,7 +260,7 @@ class Auth {
|
|
|
260
260
|
name: packageName,
|
|
261
261
|
version: packageVersion
|
|
262
262
|
}, (0, _utils.getMatchedPackagesSpec)(packageName, this.config.packages));
|
|
263
|
-
debug('allow publish for %o init | plugins: %o', packageName, plugins);
|
|
263
|
+
debug('allow publish for %o init | plugins: %o', packageName, plugins === null || plugins === void 0 ? void 0 : plugins.length);
|
|
264
264
|
(function next() {
|
|
265
265
|
const plugin = plugins.shift();
|
|
266
266
|
if (_lodash.default.isNil(plugin) || _lodash.default.isFunction(plugin.allow_publish) === false) {
|
|
@@ -481,4 +481,4 @@ class Auth {
|
|
|
481
481
|
}
|
|
482
482
|
var _default = Auth;
|
|
483
483
|
exports.default = _default;
|
|
484
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfY29uZmlnIiwiX3NpZ25hdHVyZSIsIl91dGlscyIsIl9wbHVnaW5Mb2FkZXIiLCJfYXV0aFV0aWxzIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsImRlYnVnIiwiYnVpbGREZWJ1ZyIsIkF1dGgiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsImxvZ2dlciIsInNlY3JldCIsInBsdWdpbnMiLCJfbG9hZFBsdWdpbiIsIl9hcHBseURlZmF1bHRQbHVnaW5zIiwicGx1Z2luT3B0aW9ucyIsImF1dGhDb25mIiwiYXV0aCIsImh0cGFzc3dkIiwiYWxnb3JpdGhtIiwiaW5mbyIsImxvYWRQbHVnaW4iLCJwbHVnaW4iLCJhdXRoZW50aWNhdGUiLCJhbGxvd19hY2Nlc3MiLCJhbGxvd19wdWJsaXNoIiwiZ2V0RGVmYXVsdFBsdWdpbnMiLCJjaGFuZ2VQYXNzd29yZCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJuZXdQYXNzd29yZCIsImNiIiwidmFsaWRQbHVnaW5zIiwiXyIsImlzRnVuY3Rpb24iLCJpc0VtcHR5IiwiRXJyb3JDb2RlIiwiZ2V0SW50ZXJuYWxFcnJvciIsIlNVUFBPUlRfRVJST1JTIiwiUExVR0lOX01JU1NJTkdfSU5URVJGQUNFIiwiaXNOaWwiLCJlcnIiLCJwcm9maWxlIiwiZXJyb3IiLCJzbGljZSIsInNlbGYiLCJuZXh0Iiwic2hpZnQiLCJncm91cHMiLCJpc1N0cmluZyIsImlzR3JvdXBWYWxpZCIsImlzQXJyYXkiLCJBUElfRVJST1IiLCJCQURfRk9STUFUX1VTRVJfR1JPVVAiLCJjcmVhdGVSZW1vdGVVc2VyIiwiYWRkX3VzZXIiLCJ1c2VyIiwibWV0aG9kIiwid2FybiIsIm9rIiwibWVzc2FnZSIsInBhY2thZ2VOYW1lIiwicGFja2FnZVZlcnNpb24iLCJjYWxsYmFjayIsInBrZ0FsbG93QWNjZXMiLCJuYW1lIiwidmVyc2lvbiIsInBrZyIsImFzc2lnbiIsImdldE1hdGNoZWRQYWNrYWdlc1NwZWMiLCJwYWNrYWdlcyIsImFsbG93X3VucHVibGlzaCIsImlzRXJyb3IiLCJhcGlKV1RtaWRkbGV3YXJlIiwiaGVscGVycyIsImNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIiLCJyZXEiLCJfbmV4dCIsInBhdXNlIiwicmVzdW1lIiwicmVtb3RlX3VzZXIiLCJfaXNSZW1vdGVVc2VyVmFsaWQiLCJhdXRob3JpemF0aW9uIiwiaGVhZGVycyIsImlzQXV0aEhlYWRlclZhbGlkIiwiZ2V0QmFkUmVxdWVzdCIsIkJBRF9BVVRIX0hFQURFUiIsInNlY3VyaXR5IiwiZ2V0U2VjdXJpdHkiLCJpc0FFU0xlZ2FjeSIsIl9oYW5kbGVBRVNNaWRkbGV3YXJlIiwiX2hhbmRsZUpXVEFQSU1pZGRsZXdhcmUiLCJzY2hlbWUiLCJ0b2tlbiIsInBhcnNlQXV0aFRva2VuSGVhZGVyIiwidG9VcHBlckNhc2UiLCJUT0tFTl9CQVNJQyIsImNyZWRlbnRpYWxzIiwiY29udmVydFBheWxvYWRUb0Jhc2U2NCIsInRvU3RyaW5nIiwicGFyc2VCYXNpY1BheWxvYWQiLCJnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMiLCJnZXRGb3JiaWRkZW4iLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJpc1VuZGVmaW5lZCIsIndlYlVJSldUbWlkZGxld2FyZSIsInN0YXR1cyIsInN0YXR1c0NvZGUiLCJzZW5kIiwicmVwbGFjZSIsIlRPS0VOX0JFQVJFUiIsInZlcmlmeUpXVFBheWxvYWQiLCJqd3RFbmNyeXB0Iiwic2lnbk9wdGlvbnMiLCJyZWFsX2dyb3VwcyIsInJlYWxHcm91cHNWYWxpZGF0ZWQiLCJncm91cGVkR3JvdXBzIiwiQXJyYXkiLCJmcm9tIiwiU2V0IiwiY29uY2F0IiwicGF5bG9hZCIsInNpZ25QYXlsb2FkIiwiYWVzRW5jcnlwdCIsImJ1ZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXV0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIsIGNyZWF0ZVJlbW90ZVVzZXIgfSBmcm9tICdAdmVyZGFjY2lvL2NvbmZpZyc7XG5pbXBvcnQgeyBWZXJkYWNjaW9FcnJvciwgcGx1Z2luVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgYWVzRW5jcnlwdERlcHJlY2F0ZWQgYXMgYWVzRW5jcnlwdCwgc2lnblBheWxvYWQgfSBmcm9tICdAdmVyZGFjY2lvL3NpZ25hdHVyZSc7XG5pbXBvcnQge1xuICBBbGxvd0FjY2VzcyxcbiAgQ2FsbGJhY2ssXG4gIENvbmZpZyxcbiAgSldUU2lnbk9wdGlvbnMsXG4gIExvZ2dlcixcbiAgUGFja2FnZUFjY2VzcyxcbiAgUmVtb3RlVXNlcixcbiAgU2VjdXJpdHksXG59IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyB9IGZyb20gJ0B2ZXJkYWNjaW8vdXRpbHMnO1xuXG5pbXBvcnQgbG9hZFBsdWdpbiBmcm9tICcuLi9saWIvcGx1Z2luLWxvYWRlcic7XG5pbXBvcnQgeyAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBBRVNQYXlsb2FkIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0RGVmYXVsdFBsdWdpbnMsXG4gIGdldE1pZGRsZXdhcmVDcmVkZW50aWFscyxcbiAgZ2V0U2VjdXJpdHksXG4gIGlzQUVTTGVnYWN5LFxuICBpc0F1dGhIZWFkZXJWYWxpZCxcbiAgcGFyc2VBdXRoVG9rZW5IZWFkZXIsXG4gIHBhcnNlQmFzaWNQYXlsb2FkLFxuICB2ZXJpZnlKV1RQYXlsb2FkLFxufSBmcm9tICcuL2F1dGgtdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBTVVBQT1JUX0VSUk9SUywgVE9LRU5fQkFTSUMsIFRPS0VOX0JFQVJFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSwgY29udmVydFBheWxvYWRUb0Jhc2U2NCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzphdXRoJyk7XG5cbmNsYXNzIEF1dGgge1xuICBwdWJsaWMgY29uZmlnOiBDb25maWc7XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcbiAgcHVibGljIHNlY3JldDogc3RyaW5nO1xuICBwdWJsaWMgcGx1Z2luczogcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+W107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5zZWNyZXQgPSBjb25maWcuc2VjcmV0O1xuICAgIHRoaXMucGx1Z2lucyA9IHRoaXMuX2xvYWRQbHVnaW4oY29uZmlnKTtcbiAgICB0aGlzLl9hcHBseURlZmF1bHRQbHVnaW5zKCk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkUGx1Z2luKGNvbmZpZzogQ29uZmlnKTogcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+W10ge1xuICAgIGNvbnN0IHBsdWdpbk9wdGlvbnMgPSB7XG4gICAgICBjb25maWcsXG4gICAgICBsb2dnZXI6IHRoaXMubG9nZ2VyLFxuICAgIH07XG5cbiAgICBsZXQgYXV0aENvbmYgPSB7IC4uLmNvbmZpZy5hdXRoIH07XG4gICAgaWYgKGF1dGhDb25mPy5odHBhc3N3ZCkge1xuICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciBodHBhc3N3ZCBwbHVnaW4sIHRoZSB2NiB2ZXJzaW9uIHVzZXMgYmNyeXB0IGJ5IGRlZmF1bHRcbiAgICAgIC8vIDUueCBlbmZvcmNlcyBjcnlwdCB0byBhdm9pZCBicmVha2luZyBjaGFuZ2VzLCBidXQgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHVzaW5nXG4gICAgICAvLyBiY3J5cHQgaW5zdGVhZC5cbiAgICAgIGlmICghYXV0aENvbmYuaHRwYXNzd2QuYWxnb3JpdGhtKSB7XG4gICAgICAgIGF1dGhDb25mLmh0cGFzc3dkLmFsZ29yaXRobSA9ICdjcnlwdCc7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAndGhlIFwiY3J5cHRcIiBhbGdvcml0aG0gaXMgZGVwcmVjYXRlZCBjb25zaWRlciBzd2l0Y2ggdG8gXCJiY3J5cHRcIiBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBSZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhZGRpdGlvbmFsIGRldGFpbHMnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvYWRQbHVnaW48cGx1Z2luVXRpbHMuQXV0aDxDb25maWc+PihcbiAgICAgIGNvbmZpZyxcbiAgICAgIGF1dGhDb25mLFxuICAgICAgcGx1Z2luT3B0aW9ucyxcbiAgICAgIChwbHVnaW46IHBsdWdpblV0aWxzLkF1dGg8Q29uZmlnPik6IGJvb2xlYW4gPT4ge1xuICAgICAgICBjb25zdCB7IGF1dGhlbnRpY2F0ZSwgYWxsb3dfYWNjZXNzLCBhbGxvd19wdWJsaXNoIH0gPSBwbHVnaW47XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0ZSB8fCBhbGxvd19hY2Nlc3MgfHwgYWxsb3dfcHVibGlzaDtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlEZWZhdWx0UGx1Z2lucygpOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbnMucHVzaChnZXREZWZhdWx0UGx1Z2lucyh0aGlzLmxvZ2dlcikpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVBhc3N3b3JkKFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZywgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gICAgbmV3UGFzc3dvcmQ6IHN0cmluZywgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gICAgY2I6IENhbGxiYWNrXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkUGx1Z2lucyA9IF8uZmlsdGVyKHRoaXMucGx1Z2lucywgKHBsdWdpbikgPT4gXy5pc0Z1bmN0aW9uKHBsdWdpbi5jaGFuZ2VQYXNzd29yZCkpO1xuXG4gICAgaWYgKF8uaXNFbXB0eSh2YWxpZFBsdWdpbnMpKSB7XG4gICAgICByZXR1cm4gY2IoRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgdmFsaWRQbHVnaW5zKSB7XG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uY2hhbmdlUGFzc3dvcmQpID09PSBmYWxzZSkge1xuICAgICAgICBkZWJ1ZygnYXV0aCBwbHVnaW4gZG9lcyBub3QgaW1wbGVtZW50IGNoYW5nZVBhc3N3b3JkLCB0cnlpbmcgbmV4dCBvbmUnKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgcGFzc3dvcmQgZm9yICVvJywgdXNlcm5hbWUpO1xuICAgICAgICBwbHVnaW4uY2hhbmdlUGFzc3dvcmQhKHVzZXJuYW1lLCBwYXNzd29yZCwgbmV3UGFzc3dvcmQsIChlcnIsIHByb2ZpbGUpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgeyB1c2VybmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAgIGBBbiBlcnJvciBoYXMgYmVlbiBwcm9kdWNlZFxuICAgICAgICAgICAgdXBkYXRpbmcgdGhlIHBhc3N3b3JkIGZvciBAe3VzZXJuYW1lfS4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKHsgdXNlcm5hbWUgfSwgJ3VwZGF0ZWQgcGFzc3dvcmQgZm9yIEB7dXNlcm5hbWV9IHdhcyBzdWNjZXNzZnVsJyk7XG4gICAgICAgICAgcmV0dXJuIGNiKG51bGwsIHByb2ZpbGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXV0aGVudGljYXRlKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+O1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihwbHVnaW4uYXV0aGVudGljYXRlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cbiAgICAgIGRlYnVnKCdhdXRoZW50aWNhdGluZyAlbycsIHVzZXJuYW1lKTtcbiAgICAgIHBsdWdpbi5hdXRoZW50aWNhdGUodXNlcm5hbWUsIHBhc3N3b3JkLCBmdW5jdGlvbiAoZXJyLCBncm91cHMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgeyB1c2VybmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAnYXV0aGVudGljYXRpbmcgZm9yIHVzZXIgQHt1c2VybmFtZX0gZmFpbGVkLiBFcnJvcjogQHtlcnIubWVzc2FnZX0nXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4cGVjdDogU0tJUCBpZiBncm91cHMgaXMgZmFsc2V5IGFuZCBub3QgYW4gYXJyYXlcbiAgICAgICAgLy8gICAgICAgICB3aXRoIGF0IGxlYXN0IG9uZSBpdGVtICh0cnV0aHkgbGVuZ3RoKVxuICAgICAgICAvLyBFeHBlY3Q6IENPTlRJTlVFIG90aGVyd2lzZSAod2lsbCBlcnJvciBpZiBncm91cHMgaXMgbm90XG4gICAgICAgIC8vICAgICAgICAgYW4gYXJyYXksIGJ1dCB0aGlzIGlzIGN1cnJlbnQgYmVoYXZpb3IpXG4gICAgICAgIC8vIENhdmVhdDogU1RSSU5HIChpZiB2YWxpZCkgd2lsbCBwYXNzIHN1Y2Nlc3NmdWxseVxuICAgICAgICAvLyAgICAgICAgIGJ1ZyBnaXZlIHVuZXhwZWN0ZWQgcmVzdWx0c1xuICAgICAgICAvLyBJbmZvOiBDYW5ub3QgdXNlIGA9PSBmYWxzZSB0byBjaGVjayBmYWxzZXkgdmFsdWVzYFxuICAgICAgICBpZiAoISFncm91cHMgJiYgZ3JvdXBzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIC8vIFRPRE86IGNyZWF0ZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGV4cGVjdGF0aW9uc1xuICAgICAgICAgIGlmIChfLmlzU3RyaW5nKGdyb3VwcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BsdWdpbiBncm91cCBlcnJvcjogaW52YWxpZCB0eXBlIGZvciBmdW5jdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0dyb3VwVmFsaWQ6IGJvb2xlYW4gPSBfLmlzQXJyYXkoZ3JvdXBzKTtcbiAgICAgICAgICBpZiAoIWlzR3JvdXBWYWxpZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihBUElfRVJST1IuQkFEX0ZPUk1BVF9VU0VSX0dST1VQKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVidWcoJ2F1dGhlbnRpY2F0aW9uIGZvciB1c2VyICVvIHdhcyBzdWNjZXNzZnVsbHkuIEdyb3VwczogJW8nLCB1c2VybmFtZSwgZ3JvdXBzKTtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyLCBjcmVhdGVSZW1vdGVVc2VyKHVzZXJuYW1lLCBncm91cHMpKTtcbiAgICAgICAgfVxuICAgICAgICBuZXh0KCk7XG4gICAgICB9KTtcbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIGFkZF91c2VyKHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBkZWJ1ZygnYWRkIHVzZXIgJW8nLCB1c2VyKTtcbiAgICAoZnVuY3Rpb24gbmV4dCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBsdWdpbnMuc2hpZnQoKSBhcyBwbHVnaW5VdGlscy5BdXRoPENvbmZpZz47XG4gICAgICBsZXQgbWV0aG9kID0gJ2FkZHVzZXInO1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihwbHVnaW5bbWV0aG9kXSkgPT09IGZhbHNlKSB7XG4gICAgICAgIG1ldGhvZCA9ICdhZGRfdXNlcic7XG4gICAgICAgIHNlbGYubG9nZ2VyLndhcm4oXG4gICAgICAgICAgJ3RoZSBwbHVnaW4gbWV0aG9kIGFkZF91c2VyIGluIHRoZSBhdXRoIHBsdWdpbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciByZWxlYXNlLCBub3RpZnkgdG8gdGhlIHBsdWdpbiBhdXRob3InXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzRnVuY3Rpb24ocGx1Z2luW21ldGhvZF0pID09PSBmYWxzZSkge1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwLmFkZF91c2VyKCkgZXhlY3V0aW9uXG4gICAgICAgIHBsdWdpblttZXRob2RdKHVzZXIsIHBhc3N3b3JkLCBmdW5jdGlvbiAoZXJyLCBvayk6IHZvaWQge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICB7IHVzZXIsIGVycjogZXJyLm1lc3NhZ2UgfSxcbiAgICAgICAgICAgICAgJ3RoZSB1c2VyIEB7dXNlcn0gY291bGQgbm90IGJlaW5nIGFkZGVkLiBFcnJvcjogQHtlcnJ9J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oeyB1c2VyIH0sICd0aGUgdXNlciBAe3VzZXJ9IGhhcyBiZWVuIGFkZGVkJyk7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRoZW50aWNhdGUodXNlciwgcGFzc3dvcmQsIGNiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IHVzZXIgdG8gYWNjZXNzIGEgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhbGxvd19hY2Nlc3MoXG4gICAgeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogcGx1Z2luVXRpbHMuQXV0aFBsdWdpblBhY2thZ2UsXG4gICAgdXNlcjogUmVtb3RlVXNlcixcbiAgICBjYWxsYmFjazogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBwa2dBbGxvd0FjY2VzOiBBbGxvd0FjY2VzcyA9IHsgbmFtZTogcGFja2FnZU5hbWUsIHZlcnNpb246IHBhY2thZ2VWZXJzaW9uIH07XG4gICAgY29uc3QgcGtnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAgcGtnQWxsb3dBY2NlcyxcbiAgICAgIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGFja2FnZU5hbWUsIHRoaXMuY29uZmlnLnBhY2thZ2VzKVxuICAgICkgYXMgQWxsb3dBY2Nlc3MgJiBQYWNrYWdlQWNjZXNzO1xuICAgIGRlYnVnKCdhbGxvdyBhY2Nlc3MgZm9yICVvJywgcGFja2FnZU5hbWUpO1xuXG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW46IHBsdWdpblV0aWxzLkF1dGg8dW5rbm93bj4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+O1xuXG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uYWxsb3dfYWNjZXNzKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgcGx1Z2luLmFsbG93X2FjY2VzcyEodXNlciwgcGtnLCBmdW5jdGlvbiAoZXJyOiBWZXJkYWNjaW9FcnJvciB8IG51bGwsIG9rPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICB7IHBhY2thZ2VOYW1lLCBlcnIgfSxcbiAgICAgICAgICAgICdmb3JiaWRkZW4gYWNjZXNzIGZvciBAe3BhY2thZ2VOYW1lfS4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9J1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKHsgcGFja2FnZU5hbWUgfSwgJ2FsbG93ZWQgYWNjZXNzIGZvciBAe3BhY2thZ2VOYW1lfScpO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBvayk7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0KCk7IC8vIGNiKG51bGwsIGZhbHNlKSBjYXVzZXMgbmV4dCBwbHVnaW4gdG8gcm9sbFxuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhbGxvd191bnB1Ymxpc2goXG4gICAgeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogcGx1Z2luVXRpbHMuQXV0aFBsdWdpblBhY2thZ2UsXG4gICAgdXNlcjogUmVtb3RlVXNlcixcbiAgICBjYWxsYmFjazogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGtnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHsgbmFtZTogcGFja2FnZU5hbWUsIHZlcnNpb246IHBhY2thZ2VWZXJzaW9uIH0sXG4gICAgICBnZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lLCB0aGlzLmNvbmZpZy5wYWNrYWdlcylcbiAgICApO1xuICAgIGRlYnVnKCdhbGxvdyB1bnB1Ymxpc2ggZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykge1xuICAgICAgaWYgKF8uaXNOaWwocGx1Z2luKSB8fCBfLmlzRnVuY3Rpb24ocGx1Z2luLmFsbG93X3VucHVibGlzaCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlYnVnKCdhbGxvdyB1bnB1Ymxpc2ggZm9yICVvIHBsdWdpbiBkb2VzIG5vdCBpbXBsZW1lbnQgYWxsb3dfdW5wdWJsaXNoJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcGx1Z2luLmFsbG93X3VucHVibGlzaCEodXNlciwgcGtnLCAoZXJyLCBvazogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICB7IHBhY2thZ2VOYW1lLCB1c2VyOiB1c2VyPy5uYW1lIH0sXG4gICAgICAgICAgICAgICdAe3VzZXJ9IGZvcmJpZGRlbiBwdWJsaXNoIGZvciBAe3BhY2thZ2VOYW1lfSwgaXQgd2lsbCBmYWxsYmFjayBvbiB1bnB1Ymxpc2ggcGVybWlzc2lvbnMnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF8uaXNOaWwob2spID09PSB0cnVlKSB7XG4gICAgICAgICAgICBkZWJ1Zygnd2UgYnlwYXNzIHVucHVibGlzaCBmb3IgJW8sIHB1Ymxpc2ggd2lsbCBoYW5kbGUgdGhlIGFjY2VzcycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxsb3dfcHVibGlzaCguLi5hcmd1bWVudHMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvaykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgeyBwYWNrYWdlTmFtZSwgdXNlcjogdXNlcj8ubmFtZSB9LFxuICAgICAgICAgICAgICAnQHt1c2VyfSBhbGxvd2VkIHVucHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG9rKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyB1c2VyIHRvIHB1Ymxpc2ggYSBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGFsbG93X3B1Ymxpc2goXG4gICAgeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogcGx1Z2luVXRpbHMuQXV0aFBsdWdpblBhY2thZ2UsXG4gICAgdXNlcjogUmVtb3RlVXNlcixcbiAgICBjYWxsYmFjazogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBwa2cgPSBPYmplY3QuYXNzaWduKFxuICAgICAgeyBuYW1lOiBwYWNrYWdlTmFtZSwgdmVyc2lvbjogcGFja2FnZVZlcnNpb24gfSxcbiAgICAgIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGFja2FnZU5hbWUsIHRoaXMuY29uZmlnLnBhY2thZ2VzKVxuICAgICk7XG4gICAgZGVidWcoJ2FsbG93IHB1Ymxpc2ggZm9yICVvIGluaXQgfCBwbHVnaW5zOiAlbycsIHBhY2thZ2VOYW1lLCBwbHVnaW5zKTtcbiAgICAoZnVuY3Rpb24gbmV4dCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBsdWdpbnMuc2hpZnQoKTtcblxuICAgICAgaWYgKF8uaXNOaWwocGx1Z2luKSB8fCBfLmlzRnVuY3Rpb24ocGx1Z2luLmFsbG93X3B1Ymxpc2gpID09PSBmYWxzZSkge1xuICAgICAgICBkZWJ1ZygnYWxsb3cgcHVibGlzaCBmb3IgJW8gcGx1Z2luIGRvZXMgbm90IGltcGxlbWVudCBhbGxvd19wdWJsaXNoJywgcGFja2FnZU5hbWUpO1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBwbHVnaW4uYWxsb3dfcHVibGlzaCh1c2VyLCBwa2csIChlcnI6IGFueSwgb2s6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UgJiYgXy5pc0Vycm9yKGVycikpIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgIHsgcGFja2FnZU5hbWUsIHVzZXI6IHVzZXI/Lm5hbWUgfSxcbiAgICAgICAgICAgICdAe3VzZXJ9IGlzIGZvcmJpZGRlbiBwdWJsaXNoIGZvciBAe3BhY2thZ2VOYW1lfSdcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIHsgcGFja2FnZU5hbWUsIHVzZXI6IHVzZXI/Lm5hbWUgfSxcbiAgICAgICAgICAgICdAe3VzZXJ9IGlzIGFsbG93ZWQgcHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0nXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgb2spO1xuICAgICAgICB9XG4gICAgICAgIGRlYnVnKCdhbGxvdyBwdWJsaXNoIHNraXAgdmFsaWRhdGlvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIG5leHQoKTsgLy8gY2IobnVsbCwgZmFsc2UpIGNhdXNlcyBuZXh0IHBsdWdpbiB0byByb2xsXG4gICAgICB9KTtcbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIGFwaUpXVG1pZGRsZXdhcmUoKSB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBjb25zdCBoZWxwZXJzID0geyBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyLCBjcmVhdGVSZW1vdGVVc2VyIH07XG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgcGx1Z2lucykge1xuICAgICAgaWYgKHBsdWdpbi5hcGlKV1RtaWRkbGV3YXJlKSB7XG4gICAgICAgIHJldHVybiBwbHVnaW4uYXBpSldUbWlkZGxld2FyZShoZWxwZXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBfbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgICByZXEucGF1c2UoKTtcblxuICAgICAgY29uc3QgbmV4dCA9IGZ1bmN0aW9uIChlcnI6IGFueSB8IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgcmVxLnJlc3VtZSgpO1xuICAgICAgICAvLyB1bmNvbW1lbnQgdGhpcyB0byByZWplY3QgdXNlcnMgd2l0aCBiYWQgYXV0aCBoZWFkZXJzXG4gICAgICAgIC8vIHJldHVybiBfbmV4dC5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gICAgICAgIC8vIHN3YWxsb3cgZXJyb3IsIHVzZXIgcmVtYWlucyB1bmF1dGhvcml6ZWRcbiAgICAgICAgLy8gc2V0IHJlbW90ZVVzZXJFcnJvciB0byBpbmRpY2F0ZSB0aGF0IHVzZXIgd2FzIGF0dGVtcHRpbmcgYXV0aGVudGljYXRpb25cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlci5lcnJvciA9IGVyci5tZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfbmV4dCgpO1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuX2lzUmVtb3RlVXNlclZhbGlkKHJlcS5yZW1vdGVfdXNlcikpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBpbiBjYXNlIGF1dGggaGVhZGVyIGRvZXMgbm90IGV4aXN0IHdlIHJldHVybiBhbm9ueW1vdXMgZnVuY3Rpb25cbiAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIoKTtcblxuICAgICAgY29uc3QgeyBhdXRob3JpemF0aW9uIH0gPSByZXEuaGVhZGVycztcbiAgICAgIGlmIChfLmlzTmlsKGF1dGhvcml6YXRpb24pKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0F1dGhIZWFkZXJWYWxpZChhdXRob3JpemF0aW9uKSkge1xuICAgICAgICBkZWJ1ZygnYXBpIG1pZGRsZXdhcmUgYXV0aCBoZWF0aGVyIGlzIG5vdCB2YWxpZCcpO1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuQkFEX0FVVEhfSEVBREVSKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlY3VyaXR5OiBTZWN1cml0eSA9IGdldFNlY3VyaXR5KHRoaXMuY29uZmlnKTtcbiAgICAgIGNvbnN0IHsgc2VjcmV0IH0gPSB0aGlzLmNvbmZpZztcblxuICAgICAgaWYgKGlzQUVTTGVnYWN5KHNlY3VyaXR5KSkge1xuICAgICAgICBkZWJ1ZygnYXBpIG1pZGRsZXdhcmUgdXNpbmcgbGVnYWN5IGF1dGggdG9rZW4nKTtcbiAgICAgICAgdGhpcy5faGFuZGxlQUVTTWlkZGxld2FyZShyZXEsIHNlY3VyaXR5LCBzZWNyZXQsIGF1dGhvcml6YXRpb24sIG5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ2FwaSBtaWRkbGV3YXJlIHVzaW5nIEpXVCBhdXRoIHRva2VuJyk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUpXVEFQSU1pZGRsZXdhcmUocmVxLCBzZWN1cml0eSwgc2VjcmV0LCBhdXRob3JpemF0aW9uLCBuZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSldUQVBJTWlkZGxld2FyZShcbiAgICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICAgIHNlY3VyaXR5OiBTZWN1cml0eSxcbiAgICBzZWNyZXQ6IHN0cmluZyxcbiAgICBhdXRob3JpemF0aW9uOiBzdHJpbmcsXG4gICAgbmV4dDogRnVuY3Rpb25cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgeyBzY2hlbWUsIHRva2VuIH0gPSBwYXJzZUF1dGhUb2tlbkhlYWRlcihhdXRob3JpemF0aW9uKTtcbiAgICBpZiAoc2NoZW1lLnRvVXBwZXJDYXNlKCkgPT09IFRPS0VOX0JBU0lDLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIC8vIHRoaXMgc2hvdWxkIGhhcHBlbiB3aGVuIGNsaWVudCB0cmllcyB0byBsb2dpbiB3aXRoIGFuIGV4aXN0aW5nIHVzZXJcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gY29udmVydFBheWxvYWRUb0Jhc2U2NCh0b2tlbikudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHsgdXNlciwgcGFzc3dvcmQgfSA9IHBhcnNlQmFzaWNQYXlsb2FkKGNyZWRlbnRpYWxzKSBhcyBBRVNQYXlsb2FkO1xuICAgICAgdGhpcy5hdXRoZW50aWNhdGUodXNlciwgcGFzc3dvcmQsIChlcnIsIHVzZXIpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk7XG4gICAgICAgICAgbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gand0IGhhbmRsZXJcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBhbnkgPSBnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMoc2VjdXJpdHksIHNlY3JldCwgYXV0aG9yaXphdGlvbik7XG4gICAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgICAgLy8gaWYgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCB3ZSByZWx5IG9uIGl0XG4gICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWRlbnRpYWxzO1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB3aXRoIEpXVCB0aHJvdyA0MDFcbiAgICAgICAgbmV4dChFcnJvckNvZGUuZ2V0Rm9yYmlkZGVuKEFQSV9FUlJPUi5CQURfVVNFUk5BTUVfUEFTU1dPUkQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVBRVNNaWRkbGV3YXJlKFxuICAgIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gICAgc2VjdXJpdHk6IFNlY3VyaXR5LFxuICAgIHNlY3JldDogc3RyaW5nLFxuICAgIGF1dGhvcml6YXRpb246IHN0cmluZyxcbiAgICBuZXh0OiBGdW5jdGlvblxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogYW55ID0gZ2V0TWlkZGxld2FyZUNyZWRlbnRpYWxzKHNlY3VyaXR5LCBzZWNyZXQsIGF1dGhvcml6YXRpb24pO1xuICAgIGlmIChjcmVkZW50aWFscykge1xuICAgICAgY29uc3QgeyB1c2VyLCBwYXNzd29yZCB9ID0gY3JlZGVudGlhbHM7XG4gICAgICB0aGlzLmF1dGhlbnRpY2F0ZSh1c2VyLCBwYXNzd29yZCwgKGVyciwgdXNlcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIoKTtcbiAgICAgICAgICBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3ZSBmb3JjZSBucG0gY2xpZW50IHRvIGFzayBhZ2FpbiB3aXRoIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuQkFEX0FVVEhfSEVBREVSKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNSZW1vdGVVc2VyVmFsaWQocmVtb3RlX3VzZXI6IFJlbW90ZVVzZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gXy5pc1VuZGVmaW5lZChyZW1vdGVfdXNlcikgPT09IGZhbHNlICYmIF8uaXNVbmRlZmluZWQocmVtb3RlX3VzZXIubmFtZSkgPT09IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEpXVCBtaWRkbGV3YXJlIGZvciBXZWJVSVxuICAgKi9cbiAgcHVibGljIHdlYlVJSldUbWlkZGxld2FyZSgpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgX25leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzUmVtb3RlVXNlclZhbGlkKHJlcS5yZW1vdGVfdXNlcikpIHtcbiAgICAgICAgcmV0dXJuIF9uZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIHJlcS5wYXVzZSgpO1xuICAgICAgY29uc3QgbmV4dCA9IChlcnI6IGFueSB8IHZvaWQpOiB2b2lkID0+IHtcbiAgICAgICAgcmVxLnJlc3VtZSgpO1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgLy8gcmVxLnJlbW90ZV91c2VyLmVycm9yID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgcmVzLnN0YXR1cyhlcnIuc3RhdHVzQ29kZSkuc2VuZChlcnIubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX25leHQoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHsgYXV0aG9yaXphdGlvbiB9ID0gcmVxLmhlYWRlcnM7XG4gICAgICBpZiAoXy5pc05pbChhdXRob3JpemF0aW9uKSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNBdXRoSGVhZGVyVmFsaWQoYXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLkJBRF9BVVRIX0hFQURFUikpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b2tlbiA9IChhdXRob3JpemF0aW9uIHx8ICcnKS5yZXBsYWNlKGAke1RPS0VOX0JFQVJFUn0gYCwgJycpO1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBjcmVkZW50aWFscztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNyZWRlbnRpYWxzID0gdmVyaWZ5SldUUGF5bG9hZCh0b2tlbiwgdGhpcy5jb25maWcuc2VjcmV0KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBGSVhNRTogaW50ZW5kZWQgYmVoYXZpb3VyLCBkbyB3ZSB3YW50IGl0P1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5faXNSZW1vdGVVc2VyVmFsaWQoY3JlZGVudGlhbHMpKSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgZ3JvdXBzIH0gPSBjcmVkZW50aWFscztcbiAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlUmVtb3RlVXNlcihuYW1lLCBncm91cHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcigpO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV4dCgpO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgand0RW5jcnlwdCh1c2VyOiBSZW1vdGVVc2VyLCBzaWduT3B0aW9uczogSldUU2lnbk9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHsgcmVhbF9ncm91cHMsIG5hbWUsIGdyb3VwcyB9ID0gdXNlcjtcbiAgICBjb25zdCByZWFsR3JvdXBzVmFsaWRhdGVkID0gXy5pc05pbChyZWFsX2dyb3VwcykgPyBbXSA6IHJlYWxfZ3JvdXBzO1xuICAgIGNvbnN0IGdyb3VwZWRHcm91cHMgPSBfLmlzTmlsKGdyb3VwcylcbiAgICAgID8gcmVhbF9ncm91cHNcbiAgICAgIDogQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5ncm91cHMuY29uY2F0KHJlYWxHcm91cHNWYWxpZGF0ZWQpXSkpO1xuICAgIGNvbnN0IHBheWxvYWQ6IFJlbW90ZVVzZXIgPSB7XG4gICAgICByZWFsX2dyb3VwczogcmVhbEdyb3Vwc1ZhbGlkYXRlZCxcbiAgICAgIG5hbWUsXG4gICAgICBncm91cHM6IGdyb3VwZWRHcm91cHMsXG4gICAgfTtcblxuICAgIGNvbnN0IHRva2VuOiBzdHJpbmcgPSBhd2FpdCBzaWduUGF5bG9hZChwYXlsb2FkLCB0aGlzLnNlY3JldCwgc2lnbk9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY3J5cHQgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWVzRW5jcnlwdChidWY6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIGFlc0VuY3J5cHQoYnVmLCB0aGlzLnNlY3JldCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXV0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
|
|
484
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfY29uZmlnIiwiX3NpZ25hdHVyZSIsIl91dGlscyIsIl9wbHVnaW5Mb2FkZXIiLCJfYXV0aFV0aWxzIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsImRlYnVnIiwiYnVpbGREZWJ1ZyIsIkF1dGgiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsImxvZ2dlciIsInNlY3JldCIsInBsdWdpbnMiLCJfbG9hZFBsdWdpbiIsIl9hcHBseURlZmF1bHRQbHVnaW5zIiwicGx1Z2luT3B0aW9ucyIsImF1dGhDb25mIiwiYXV0aCIsImh0cGFzc3dkIiwiYWxnb3JpdGhtIiwiaW5mbyIsImxvYWRQbHVnaW4iLCJwbHVnaW4iLCJhdXRoZW50aWNhdGUiLCJhbGxvd19hY2Nlc3MiLCJhbGxvd19wdWJsaXNoIiwiZ2V0RGVmYXVsdFBsdWdpbnMiLCJjaGFuZ2VQYXNzd29yZCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJuZXdQYXNzd29yZCIsImNiIiwidmFsaWRQbHVnaW5zIiwiXyIsImlzRnVuY3Rpb24iLCJpc0VtcHR5IiwiRXJyb3JDb2RlIiwiZ2V0SW50ZXJuYWxFcnJvciIsIlNVUFBPUlRfRVJST1JTIiwiUExVR0lOX01JU1NJTkdfSU5URVJGQUNFIiwiaXNOaWwiLCJlcnIiLCJwcm9maWxlIiwiZXJyb3IiLCJzbGljZSIsInNlbGYiLCJuZXh0Iiwic2hpZnQiLCJncm91cHMiLCJpc1N0cmluZyIsImlzR3JvdXBWYWxpZCIsImlzQXJyYXkiLCJBUElfRVJST1IiLCJCQURfRk9STUFUX1VTRVJfR1JPVVAiLCJjcmVhdGVSZW1vdGVVc2VyIiwiYWRkX3VzZXIiLCJ1c2VyIiwibWV0aG9kIiwid2FybiIsIm9rIiwibWVzc2FnZSIsInBhY2thZ2VOYW1lIiwicGFja2FnZVZlcnNpb24iLCJjYWxsYmFjayIsInBrZ0FsbG93QWNjZXMiLCJuYW1lIiwidmVyc2lvbiIsInBrZyIsImFzc2lnbiIsImdldE1hdGNoZWRQYWNrYWdlc1NwZWMiLCJwYWNrYWdlcyIsImFsbG93X3VucHVibGlzaCIsImlzRXJyb3IiLCJhcGlKV1RtaWRkbGV3YXJlIiwiaGVscGVycyIsImNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIiLCJyZXEiLCJfbmV4dCIsInBhdXNlIiwicmVzdW1lIiwicmVtb3RlX3VzZXIiLCJfaXNSZW1vdGVVc2VyVmFsaWQiLCJhdXRob3JpemF0aW9uIiwiaGVhZGVycyIsImlzQXV0aEhlYWRlclZhbGlkIiwiZ2V0QmFkUmVxdWVzdCIsIkJBRF9BVVRIX0hFQURFUiIsInNlY3VyaXR5IiwiZ2V0U2VjdXJpdHkiLCJpc0FFU0xlZ2FjeSIsIl9oYW5kbGVBRVNNaWRkbGV3YXJlIiwiX2hhbmRsZUpXVEFQSU1pZGRsZXdhcmUiLCJzY2hlbWUiLCJ0b2tlbiIsInBhcnNlQXV0aFRva2VuSGVhZGVyIiwidG9VcHBlckNhc2UiLCJUT0tFTl9CQVNJQyIsImNyZWRlbnRpYWxzIiwiY29udmVydFBheWxvYWRUb0Jhc2U2NCIsInRvU3RyaW5nIiwicGFyc2VCYXNpY1BheWxvYWQiLCJnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMiLCJnZXRGb3JiaWRkZW4iLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJpc1VuZGVmaW5lZCIsIndlYlVJSldUbWlkZGxld2FyZSIsInN0YXR1cyIsInN0YXR1c0NvZGUiLCJzZW5kIiwicmVwbGFjZSIsIlRPS0VOX0JFQVJFUiIsInZlcmlmeUpXVFBheWxvYWQiLCJqd3RFbmNyeXB0Iiwic2lnbk9wdGlvbnMiLCJyZWFsX2dyb3VwcyIsInJlYWxHcm91cHNWYWxpZGF0ZWQiLCJncm91cGVkR3JvdXBzIiwiQXJyYXkiLCJmcm9tIiwiU2V0IiwiY29uY2F0IiwicGF5bG9hZCIsInNpZ25QYXlsb2FkIiwiYWVzRW5jcnlwdCIsImJ1ZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXV0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIsIGNyZWF0ZVJlbW90ZVVzZXIgfSBmcm9tICdAdmVyZGFjY2lvL2NvbmZpZyc7XG5pbXBvcnQgeyBWZXJkYWNjaW9FcnJvciwgcGx1Z2luVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgYWVzRW5jcnlwdERlcHJlY2F0ZWQgYXMgYWVzRW5jcnlwdCwgc2lnblBheWxvYWQgfSBmcm9tICdAdmVyZGFjY2lvL3NpZ25hdHVyZSc7XG5pbXBvcnQge1xuICBBbGxvd0FjY2VzcyxcbiAgQ2FsbGJhY2ssXG4gIENvbmZpZyxcbiAgSldUU2lnbk9wdGlvbnMsXG4gIExvZ2dlcixcbiAgUGFja2FnZUFjY2VzcyxcbiAgUmVtb3RlVXNlcixcbiAgU2VjdXJpdHksXG59IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyB9IGZyb20gJ0B2ZXJkYWNjaW8vdXRpbHMnO1xuXG5pbXBvcnQgbG9hZFBsdWdpbiBmcm9tICcuLi9saWIvcGx1Z2luLWxvYWRlcic7XG5pbXBvcnQgeyAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBBRVNQYXlsb2FkIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0RGVmYXVsdFBsdWdpbnMsXG4gIGdldE1pZGRsZXdhcmVDcmVkZW50aWFscyxcbiAgZ2V0U2VjdXJpdHksXG4gIGlzQUVTTGVnYWN5LFxuICBpc0F1dGhIZWFkZXJWYWxpZCxcbiAgcGFyc2VBdXRoVG9rZW5IZWFkZXIsXG4gIHBhcnNlQmFzaWNQYXlsb2FkLFxuICB2ZXJpZnlKV1RQYXlsb2FkLFxufSBmcm9tICcuL2F1dGgtdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBTVVBQT1JUX0VSUk9SUywgVE9LRU5fQkFTSUMsIFRPS0VOX0JFQVJFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSwgY29udmVydFBheWxvYWRUb0Jhc2U2NCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzphdXRoJyk7XG5cbmNsYXNzIEF1dGgge1xuICBwdWJsaWMgY29uZmlnOiBDb25maWc7XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcbiAgcHVibGljIHNlY3JldDogc3RyaW5nO1xuICBwdWJsaWMgcGx1Z2luczogcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+W107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5zZWNyZXQgPSBjb25maWcuc2VjcmV0O1xuICAgIHRoaXMucGx1Z2lucyA9IHRoaXMuX2xvYWRQbHVnaW4oY29uZmlnKTtcbiAgICB0aGlzLl9hcHBseURlZmF1bHRQbHVnaW5zKCk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkUGx1Z2luKGNvbmZpZzogQ29uZmlnKTogcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+W10ge1xuICAgIGNvbnN0IHBsdWdpbk9wdGlvbnMgPSB7XG4gICAgICBjb25maWcsXG4gICAgICBsb2dnZXI6IHRoaXMubG9nZ2VyLFxuICAgIH07XG5cbiAgICBsZXQgYXV0aENvbmYgPSB7IC4uLmNvbmZpZy5hdXRoIH07XG4gICAgaWYgKGF1dGhDb25mPy5odHBhc3N3ZCkge1xuICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciBodHBhc3N3ZCBwbHVnaW4sIHRoZSB2NiB2ZXJzaW9uIHVzZXMgYmNyeXB0IGJ5IGRlZmF1bHRcbiAgICAgIC8vIDUueCBlbmZvcmNlcyBjcnlwdCB0byBhdm9pZCBicmVha2luZyBjaGFuZ2VzLCBidXQgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHVzaW5nXG4gICAgICAvLyBiY3J5cHQgaW5zdGVhZC5cbiAgICAgIGlmICghYXV0aENvbmYuaHRwYXNzd2QuYWxnb3JpdGhtKSB7XG4gICAgICAgIGF1dGhDb25mLmh0cGFzc3dkLmFsZ29yaXRobSA9ICdjcnlwdCc7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAndGhlIFwiY3J5cHRcIiBhbGdvcml0aG0gaXMgZGVwcmVjYXRlZCBjb25zaWRlciBzd2l0Y2ggdG8gXCJiY3J5cHRcIiBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBSZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhZGRpdGlvbmFsIGRldGFpbHMnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvYWRQbHVnaW48cGx1Z2luVXRpbHMuQXV0aDxDb25maWc+PihcbiAgICAgIGNvbmZpZyxcbiAgICAgIGF1dGhDb25mLFxuICAgICAgcGx1Z2luT3B0aW9ucyxcbiAgICAgIChwbHVnaW46IHBsdWdpblV0aWxzLkF1dGg8Q29uZmlnPik6IGJvb2xlYW4gPT4ge1xuICAgICAgICBjb25zdCB7IGF1dGhlbnRpY2F0ZSwgYWxsb3dfYWNjZXNzLCBhbGxvd19wdWJsaXNoIH0gPSBwbHVnaW47XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0ZSB8fCBhbGxvd19hY2Nlc3MgfHwgYWxsb3dfcHVibGlzaDtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlEZWZhdWx0UGx1Z2lucygpOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbnMucHVzaChnZXREZWZhdWx0UGx1Z2lucyh0aGlzLmxvZ2dlcikpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVBhc3N3b3JkKFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZywgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gICAgbmV3UGFzc3dvcmQ6IHN0cmluZywgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gICAgY2I6IENhbGxiYWNrXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkUGx1Z2lucyA9IF8uZmlsdGVyKHRoaXMucGx1Z2lucywgKHBsdWdpbikgPT4gXy5pc0Z1bmN0aW9uKHBsdWdpbi5jaGFuZ2VQYXNzd29yZCkpO1xuXG4gICAgaWYgKF8uaXNFbXB0eSh2YWxpZFBsdWdpbnMpKSB7XG4gICAgICByZXR1cm4gY2IoRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgdmFsaWRQbHVnaW5zKSB7XG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uY2hhbmdlUGFzc3dvcmQpID09PSBmYWxzZSkge1xuICAgICAgICBkZWJ1ZygnYXV0aCBwbHVnaW4gZG9lcyBub3QgaW1wbGVtZW50IGNoYW5nZVBhc3N3b3JkLCB0cnlpbmcgbmV4dCBvbmUnKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgcGFzc3dvcmQgZm9yICVvJywgdXNlcm5hbWUpO1xuICAgICAgICBwbHVnaW4uY2hhbmdlUGFzc3dvcmQhKHVzZXJuYW1lLCBwYXNzd29yZCwgbmV3UGFzc3dvcmQsIChlcnIsIHByb2ZpbGUpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgeyB1c2VybmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAgIGBBbiBlcnJvciBoYXMgYmVlbiBwcm9kdWNlZFxuICAgICAgICAgICAgdXBkYXRpbmcgdGhlIHBhc3N3b3JkIGZvciBAe3VzZXJuYW1lfS4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKHsgdXNlcm5hbWUgfSwgJ3VwZGF0ZWQgcGFzc3dvcmQgZm9yIEB7dXNlcm5hbWV9IHdhcyBzdWNjZXNzZnVsJyk7XG4gICAgICAgICAgcmV0dXJuIGNiKG51bGwsIHByb2ZpbGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXV0aGVudGljYXRlKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+O1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihwbHVnaW4uYXV0aGVudGljYXRlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cbiAgICAgIGRlYnVnKCdhdXRoZW50aWNhdGluZyAlbycsIHVzZXJuYW1lKTtcbiAgICAgIHBsdWdpbi5hdXRoZW50aWNhdGUodXNlcm5hbWUsIHBhc3N3b3JkLCBmdW5jdGlvbiAoZXJyLCBncm91cHMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgeyB1c2VybmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAnYXV0aGVudGljYXRpbmcgZm9yIHVzZXIgQHt1c2VybmFtZX0gZmFpbGVkLiBFcnJvcjogQHtlcnIubWVzc2FnZX0nXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4cGVjdDogU0tJUCBpZiBncm91cHMgaXMgZmFsc2V5IGFuZCBub3QgYW4gYXJyYXlcbiAgICAgICAgLy8gICAgICAgICB3aXRoIGF0IGxlYXN0IG9uZSBpdGVtICh0cnV0aHkgbGVuZ3RoKVxuICAgICAgICAvLyBFeHBlY3Q6IENPTlRJTlVFIG90aGVyd2lzZSAod2lsbCBlcnJvciBpZiBncm91cHMgaXMgbm90XG4gICAgICAgIC8vICAgICAgICAgYW4gYXJyYXksIGJ1dCB0aGlzIGlzIGN1cnJlbnQgYmVoYXZpb3IpXG4gICAgICAgIC8vIENhdmVhdDogU1RSSU5HIChpZiB2YWxpZCkgd2lsbCBwYXNzIHN1Y2Nlc3NmdWxseVxuICAgICAgICAvLyAgICAgICAgIGJ1ZyBnaXZlIHVuZXhwZWN0ZWQgcmVzdWx0c1xuICAgICAgICAvLyBJbmZvOiBDYW5ub3QgdXNlIGA9PSBmYWxzZSB0byBjaGVjayBmYWxzZXkgdmFsdWVzYFxuICAgICAgICBpZiAoISFncm91cHMgJiYgZ3JvdXBzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIC8vIFRPRE86IGNyZWF0ZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGV4cGVjdGF0aW9uc1xuICAgICAgICAgIGlmIChfLmlzU3RyaW5nKGdyb3VwcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BsdWdpbiBncm91cCBlcnJvcjogaW52YWxpZCB0eXBlIGZvciBmdW5jdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0dyb3VwVmFsaWQ6IGJvb2xlYW4gPSBfLmlzQXJyYXkoZ3JvdXBzKTtcbiAgICAgICAgICBpZiAoIWlzR3JvdXBWYWxpZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihBUElfRVJST1IuQkFEX0ZPUk1BVF9VU0VSX0dST1VQKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVidWcoJ2F1dGhlbnRpY2F0aW9uIGZvciB1c2VyICVvIHdhcyBzdWNjZXNzZnVsbHkuIEdyb3VwczogJW8nLCB1c2VybmFtZSwgZ3JvdXBzKTtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyLCBjcmVhdGVSZW1vdGVVc2VyKHVzZXJuYW1lLCBncm91cHMpKTtcbiAgICAgICAgfVxuICAgICAgICBuZXh0KCk7XG4gICAgICB9KTtcbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIGFkZF91c2VyKHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBkZWJ1ZygnYWRkIHVzZXIgJW8nLCB1c2VyKTtcbiAgICAoZnVuY3Rpb24gbmV4dCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBsdWdpbnMuc2hpZnQoKSBhcyBwbHVnaW5VdGlscy5BdXRoPENvbmZpZz47XG4gICAgICBsZXQgbWV0aG9kID0gJ2FkZHVzZXInO1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihwbHVnaW5bbWV0aG9kXSkgPT09IGZhbHNlKSB7XG4gICAgICAgIG1ldGhvZCA9ICdhZGRfdXNlcic7XG4gICAgICAgIHNlbGYubG9nZ2VyLndhcm4oXG4gICAgICAgICAgJ3RoZSBwbHVnaW4gbWV0aG9kIGFkZF91c2VyIGluIHRoZSBhdXRoIHBsdWdpbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciByZWxlYXNlLCBub3RpZnkgdG8gdGhlIHBsdWdpbiBhdXRob3InXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzRnVuY3Rpb24ocGx1Z2luW21ldGhvZF0pID09PSBmYWxzZSkge1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwLmFkZF91c2VyKCkgZXhlY3V0aW9uXG4gICAgICAgIHBsdWdpblttZXRob2RdKHVzZXIsIHBhc3N3b3JkLCBmdW5jdGlvbiAoZXJyLCBvayk6IHZvaWQge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICB7IHVzZXIsIGVycjogZXJyLm1lc3NhZ2UgfSxcbiAgICAgICAgICAgICAgJ3RoZSB1c2VyIEB7dXNlcn0gY291bGQgbm90IGJlaW5nIGFkZGVkLiBFcnJvcjogQHtlcnJ9J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oeyB1c2VyIH0sICd0aGUgdXNlciBAe3VzZXJ9IGhhcyBiZWVuIGFkZGVkJyk7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRoZW50aWNhdGUodXNlciwgcGFzc3dvcmQsIGNiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IHVzZXIgdG8gYWNjZXNzIGEgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhbGxvd19hY2Nlc3MoXG4gICAgeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogcGx1Z2luVXRpbHMuQXV0aFBsdWdpblBhY2thZ2UsXG4gICAgdXNlcjogUmVtb3RlVXNlcixcbiAgICBjYWxsYmFjazogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBwa2dBbGxvd0FjY2VzOiBBbGxvd0FjY2VzcyA9IHsgbmFtZTogcGFja2FnZU5hbWUsIHZlcnNpb246IHBhY2thZ2VWZXJzaW9uIH07XG4gICAgY29uc3QgcGtnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAgcGtnQWxsb3dBY2NlcyxcbiAgICAgIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGFja2FnZU5hbWUsIHRoaXMuY29uZmlnLnBhY2thZ2VzKVxuICAgICkgYXMgQWxsb3dBY2Nlc3MgJiBQYWNrYWdlQWNjZXNzO1xuICAgIGRlYnVnKCdhbGxvdyBhY2Nlc3MgZm9yICVvJywgcGFja2FnZU5hbWUpO1xuXG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW46IHBsdWdpblV0aWxzLkF1dGg8dW5rbm93bj4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+O1xuXG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uYWxsb3dfYWNjZXNzKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgcGx1Z2luLmFsbG93X2FjY2VzcyEodXNlciwgcGtnLCBmdW5jdGlvbiAoZXJyOiBWZXJkYWNjaW9FcnJvciB8IG51bGwsIG9rPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICB7IHBhY2thZ2VOYW1lLCBlcnIgfSxcbiAgICAgICAgICAgICdmb3JiaWRkZW4gYWNjZXNzIGZvciBAe3BhY2thZ2VOYW1lfS4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9J1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKHsgcGFja2FnZU5hbWUgfSwgJ2FsbG93ZWQgYWNjZXNzIGZvciBAe3BhY2thZ2VOYW1lfScpO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBvayk7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0KCk7IC8vIGNiKG51bGwsIGZhbHNlKSBjYXVzZXMgbmV4dCBwbHVnaW4gdG8gcm9sbFxuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhbGxvd191bnB1Ymxpc2goXG4gICAgeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogcGx1Z2luVXRpbHMuQXV0aFBsdWdpblBhY2thZ2UsXG4gICAgdXNlcjogUmVtb3RlVXNlcixcbiAgICBjYWxsYmFjazogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGtnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHsgbmFtZTogcGFja2FnZU5hbWUsIHZlcnNpb246IHBhY2thZ2VWZXJzaW9uIH0sXG4gICAgICBnZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lLCB0aGlzLmNvbmZpZy5wYWNrYWdlcylcbiAgICApO1xuICAgIGRlYnVnKCdhbGxvdyB1bnB1Ymxpc2ggZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykge1xuICAgICAgaWYgKF8uaXNOaWwocGx1Z2luKSB8fCBfLmlzRnVuY3Rpb24ocGx1Z2luLmFsbG93X3VucHVibGlzaCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlYnVnKCdhbGxvdyB1bnB1Ymxpc2ggZm9yICVvIHBsdWdpbiBkb2VzIG5vdCBpbXBsZW1lbnQgYWxsb3dfdW5wdWJsaXNoJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcGx1Z2luLmFsbG93X3VucHVibGlzaCEodXNlciwgcGtnLCAoZXJyLCBvazogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICB7IHBhY2thZ2VOYW1lLCB1c2VyOiB1c2VyPy5uYW1lIH0sXG4gICAgICAgICAgICAgICdAe3VzZXJ9IGZvcmJpZGRlbiBwdWJsaXNoIGZvciBAe3BhY2thZ2VOYW1lfSwgaXQgd2lsbCBmYWxsYmFjayBvbiB1bnB1Ymxpc2ggcGVybWlzc2lvbnMnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF8uaXNOaWwob2spID09PSB0cnVlKSB7XG4gICAgICAgICAgICBkZWJ1Zygnd2UgYnlwYXNzIHVucHVibGlzaCBmb3IgJW8sIHB1Ymxpc2ggd2lsbCBoYW5kbGUgdGhlIGFjY2VzcycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxsb3dfcHVibGlzaCguLi5hcmd1bWVudHMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvaykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgeyBwYWNrYWdlTmFtZSwgdXNlcjogdXNlcj8ubmFtZSB9LFxuICAgICAgICAgICAgICAnQHt1c2VyfSBhbGxvd2VkIHVucHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG9rKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyB1c2VyIHRvIHB1Ymxpc2ggYSBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGFsbG93X3B1Ymxpc2goXG4gICAgeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogcGx1Z2luVXRpbHMuQXV0aFBsdWdpblBhY2thZ2UsXG4gICAgdXNlcjogUmVtb3RlVXNlcixcbiAgICBjYWxsYmFjazogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBwa2cgPSBPYmplY3QuYXNzaWduKFxuICAgICAgeyBuYW1lOiBwYWNrYWdlTmFtZSwgdmVyc2lvbjogcGFja2FnZVZlcnNpb24gfSxcbiAgICAgIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGFja2FnZU5hbWUsIHRoaXMuY29uZmlnLnBhY2thZ2VzKVxuICAgICk7XG4gICAgZGVidWcoJ2FsbG93IHB1Ymxpc2ggZm9yICVvIGluaXQgfCBwbHVnaW5zOiAlbycsIHBhY2thZ2VOYW1lLCBwbHVnaW5zPy5sZW5ndGgpO1xuICAgIChmdW5jdGlvbiBuZXh0KCk6IHZvaWQge1xuICAgICAgY29uc3QgcGx1Z2luID0gcGx1Z2lucy5zaGlmdCgpO1xuXG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uYWxsb3dfcHVibGlzaCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlYnVnKCdhbGxvdyBwdWJsaXNoIGZvciAlbyBwbHVnaW4gZG9lcyBub3QgaW1wbGVtZW50IGFsbG93X3B1Ymxpc2gnLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHBsdWdpbi5hbGxvd19wdWJsaXNoKHVzZXIsIHBrZywgKGVycjogYW55LCBvazogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSAmJiBfLmlzRXJyb3IoZXJyKSkge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgeyBwYWNrYWdlTmFtZSwgdXNlcjogdXNlcj8ubmFtZSB9LFxuICAgICAgICAgICAgJ0B7dXNlcn0gaXMgZm9yYmlkZGVuIHB1Ymxpc2ggZm9yIEB7cGFja2FnZU5hbWV9J1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgeyBwYWNrYWdlTmFtZSwgdXNlcjogdXNlcj8ubmFtZSB9LFxuICAgICAgICAgICAgJ0B7dXNlcn0gaXMgYWxsb3dlZCBwdWJsaXNoIGZvciBAe3BhY2thZ2VOYW1lfSdcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBvayk7XG4gICAgICAgIH1cbiAgICAgICAgZGVidWcoJ2FsbG93IHB1Ymxpc2ggc2tpcCB2YWxpZGF0aW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgbmV4dCgpOyAvLyBjYihudWxsLCBmYWxzZSkgY2F1c2VzIG5leHQgcGx1Z2luIHRvIHJvbGxcbiAgICAgIH0pO1xuICAgIH0pKCk7XG4gIH1cblxuICBwdWJsaWMgYXBpSldUbWlkZGxld2FyZSgpIHtcbiAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5wbHVnaW5zLnNsaWNlKDApO1xuICAgIGNvbnN0IGhlbHBlcnMgPSB7IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIsIGNyZWF0ZVJlbW90ZVVzZXIgfTtcbiAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiBwbHVnaW5zKSB7XG4gICAgICBpZiAocGx1Z2luLmFwaUpXVG1pZGRsZXdhcmUpIHtcbiAgICAgICAgcmV0dXJuIHBsdWdpbi5hcGlKV1RtaWRkbGV3YXJlKGhlbHBlcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIF9uZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICAgIHJlcS5wYXVzZSgpO1xuXG4gICAgICBjb25zdCBuZXh0ID0gZnVuY3Rpb24gKGVycjogYW55IHwgdm9pZCk6IHZvaWQge1xuICAgICAgICByZXEucmVzdW1lKCk7XG4gICAgICAgIC8vIHVuY29tbWVudCB0aGlzIHRvIHJlamVjdCB1c2VycyB3aXRoIGJhZCBhdXRoIGhlYWRlcnNcbiAgICAgICAgLy8gcmV0dXJuIF9uZXh0LmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICAgICAgLy8gc3dhbGxvdyBlcnJvciwgdXNlciByZW1haW5zIHVuYXV0aG9yaXplZFxuICAgICAgICAvLyBzZXQgcmVtb3RlVXNlckVycm9yIHRvIGluZGljYXRlIHRoYXQgdXNlciB3YXMgYXR0ZW1wdGluZyBhdXRoZW50aWNhdGlvblxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVxLnJlbW90ZV91c2VyLmVycm9yID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9uZXh0KCk7XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5faXNSZW1vdGVVc2VyVmFsaWQocmVxLnJlbW90ZV91c2VyKSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGluIGNhc2UgYXV0aCBoZWFkZXIgZG9lcyBub3QgZXhpc3Qgd2UgcmV0dXJuIGFub255bW91cyBmdW5jdGlvblxuICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcigpO1xuXG4gICAgICBjb25zdCB7IGF1dGhvcml6YXRpb24gfSA9IHJlcS5oZWFkZXJzO1xuICAgICAgaWYgKF8uaXNOaWwoYXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQXV0aEhlYWRlclZhbGlkKGF1dGhvcml6YXRpb24pKSB7XG4gICAgICAgIGRlYnVnKCdhcGkgbWlkZGxld2FyZSBhdXRoIGhlYXRoZXIgaXMgbm90IHZhbGlkJyk7XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWRSZXF1ZXN0KEFQSV9FUlJPUi5CQURfQVVUSF9IRUFERVIpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VjdXJpdHk6IFNlY3VyaXR5ID0gZ2V0U2VjdXJpdHkodGhpcy5jb25maWcpO1xuICAgICAgY29uc3QgeyBzZWNyZXQgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgICBpZiAoaXNBRVNMZWdhY3koc2VjdXJpdHkpKSB7XG4gICAgICAgIGRlYnVnKCdhcGkgbWlkZGxld2FyZSB1c2luZyBsZWdhY3kgYXV0aCB0b2tlbicpO1xuICAgICAgICB0aGlzLl9oYW5kbGVBRVNNaWRkbGV3YXJlKHJlcSwgc2VjdXJpdHksIHNlY3JldCwgYXV0aG9yaXphdGlvbiwgbmV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygnYXBpIG1pZGRsZXdhcmUgdXNpbmcgSldUIGF1dGggdG9rZW4nKTtcbiAgICAgICAgdGhpcy5faGFuZGxlSldUQVBJTWlkZGxld2FyZShyZXEsIHNlY3VyaXR5LCBzZWNyZXQsIGF1dGhvcml6YXRpb24sIG5leHQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVKV1RBUElNaWRkbGV3YXJlKFxuICAgIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gICAgc2VjdXJpdHk6IFNlY3VyaXR5LFxuICAgIHNlY3JldDogc3RyaW5nLFxuICAgIGF1dGhvcml6YXRpb246IHN0cmluZyxcbiAgICBuZXh0OiBGdW5jdGlvblxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IHNjaGVtZSwgdG9rZW4gfSA9IHBhcnNlQXV0aFRva2VuSGVhZGVyKGF1dGhvcml6YXRpb24pO1xuICAgIGlmIChzY2hlbWUudG9VcHBlckNhc2UoKSA9PT0gVE9LRU5fQkFTSUMudG9VcHBlckNhc2UoKSkge1xuICAgICAgLy8gdGhpcyBzaG91bGQgaGFwcGVuIHdoZW4gY2xpZW50IHRyaWVzIHRvIGxvZ2luIHdpdGggYW4gZXhpc3RpbmcgdXNlclxuICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSBjb252ZXJ0UGF5bG9hZFRvQmFzZTY0KHRva2VuKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgeyB1c2VyLCBwYXNzd29yZCB9ID0gcGFyc2VCYXNpY1BheWxvYWQoY3JlZGVudGlhbHMpIGFzIEFFU1BheWxvYWQ7XG4gICAgICB0aGlzLmF1dGhlbnRpY2F0ZSh1c2VyLCBwYXNzd29yZCwgKGVyciwgdXNlcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIoKTtcbiAgICAgICAgICBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBqd3QgaGFuZGxlclxuICAgICAgY29uc3QgY3JlZGVudGlhbHM6IGFueSA9IGdldE1pZGRsZXdhcmVDcmVkZW50aWFscyhzZWN1cml0eSwgc2VjcmV0LCBhdXRob3JpemF0aW9uKTtcbiAgICAgIGlmIChjcmVkZW50aWFscykge1xuICAgICAgICAvLyBpZiB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkIHdlIHJlbHkgb24gaXRcbiAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlZGVudGlhbHM7XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHdpdGggSldUIHRocm93IDQwMVxuICAgICAgICBuZXh0KEVycm9yQ29kZS5nZXRGb3JiaWRkZW4oQVBJX0VSUk9SLkJBRF9VU0VSTkFNRV9QQVNTV09SRCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUFFU01pZGRsZXdhcmUoXG4gICAgcmVxOiAkUmVxdWVzdEV4dGVuZCxcbiAgICBzZWN1cml0eTogU2VjdXJpdHksXG4gICAgc2VjcmV0OiBzdHJpbmcsXG4gICAgYXV0aG9yaXphdGlvbjogc3RyaW5nLFxuICAgIG5leHQ6IEZ1bmN0aW9uXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBhbnkgPSBnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMoc2VjdXJpdHksIHNlY3JldCwgYXV0aG9yaXphdGlvbik7XG4gICAgaWYgKGNyZWRlbnRpYWxzKSB7XG4gICAgICBjb25zdCB7IHVzZXIsIHBhc3N3b3JkIH0gPSBjcmVkZW50aWFscztcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlKHVzZXIsIHBhc3N3b3JkLCAoZXJyLCB1c2VyKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gdXNlcjtcbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcigpO1xuICAgICAgICAgIG5leHQoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdlIGZvcmNlIG5wbSBjbGllbnQgdG8gYXNrIGFnYWluIHdpdGggYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWRSZXF1ZXN0KEFQSV9FUlJPUi5CQURfQVVUSF9IRUFERVIpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1JlbW90ZVVzZXJWYWxpZChyZW1vdGVfdXNlcjogUmVtb3RlVXNlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBfLmlzVW5kZWZpbmVkKHJlbW90ZV91c2VyKSA9PT0gZmFsc2UgJiYgXy5pc1VuZGVmaW5lZChyZW1vdGVfdXNlci5uYW1lKSA9PT0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSldUIG1pZGRsZXdhcmUgZm9yIFdlYlVJXG4gICAqL1xuICBwdWJsaWMgd2ViVUlKV1RtaWRkbGV3YXJlKCk6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBfbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgICBpZiAodGhpcy5faXNSZW1vdGVVc2VyVmFsaWQocmVxLnJlbW90ZV91c2VyKSkge1xuICAgICAgICByZXR1cm4gX25leHQoKTtcbiAgICAgIH1cblxuICAgICAgcmVxLnBhdXNlKCk7XG4gICAgICBjb25zdCBuZXh0ID0gKGVycjogYW55IHwgdm9pZCk6IHZvaWQgPT4ge1xuICAgICAgICByZXEucmVzdW1lKCk7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAvLyByZXEucmVtb3RlX3VzZXIuZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICByZXMuc3RhdHVzKGVyci5zdGF0dXNDb2RlKS5zZW5kKGVyci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBfbmV4dCgpO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgeyBhdXRob3JpemF0aW9uIH0gPSByZXEuaGVhZGVycztcbiAgICAgIGlmIChfLmlzTmlsKGF1dGhvcml6YXRpb24pKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0F1dGhIZWFkZXJWYWxpZChhdXRob3JpemF0aW9uKSkge1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuQkFEX0FVVEhfSEVBREVSKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuID0gKGF1dGhvcml6YXRpb24gfHwgJycpLnJlcGxhY2UoYCR7VE9LRU5fQkVBUkVSfSBgLCAnJyk7XG4gICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNyZWRlbnRpYWxzO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY3JlZGVudGlhbHMgPSB2ZXJpZnlKV1RQYXlsb2FkKHRva2VuLCB0aGlzLmNvbmZpZy5zZWNyZXQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIEZJWE1FOiBpbnRlbmRlZCBiZWhhdmlvdXIsIGRvIHdlIHdhbnQgaXQ/XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9pc1JlbW90ZVVzZXJWYWxpZChjcmVkZW50aWFscykpIHtcbiAgICAgICAgY29uc3QgeyBuYW1lLCBncm91cHMgfSA9IGNyZWRlbnRpYWxzO1xuICAgICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVSZW1vdGVVc2VyKG5hbWUsIGdyb3Vwcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXh0KCk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBqd3RFbmNyeXB0KHVzZXI6IFJlbW90ZVVzZXIsIHNpZ25PcHRpb25zOiBKV1RTaWduT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgeyByZWFsX2dyb3VwcywgbmFtZSwgZ3JvdXBzIH0gPSB1c2VyO1xuICAgIGNvbnN0IHJlYWxHcm91cHNWYWxpZGF0ZWQgPSBfLmlzTmlsKHJlYWxfZ3JvdXBzKSA/IFtdIDogcmVhbF9ncm91cHM7XG4gICAgY29uc3QgZ3JvdXBlZEdyb3VwcyA9IF8uaXNOaWwoZ3JvdXBzKVxuICAgICAgPyByZWFsX2dyb3Vwc1xuICAgICAgOiBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLmdyb3Vwcy5jb25jYXQocmVhbEdyb3Vwc1ZhbGlkYXRlZCldKSk7XG4gICAgY29uc3QgcGF5bG9hZDogUmVtb3RlVXNlciA9IHtcbiAgICAgIHJlYWxfZ3JvdXBzOiByZWFsR3JvdXBzVmFsaWRhdGVkLFxuICAgICAgbmFtZSxcbiAgICAgIGdyb3VwczogZ3JvdXBlZEdyb3VwcyxcbiAgICB9O1xuXG4gICAgY29uc3QgdG9rZW46IHN0cmluZyA9IGF3YWl0IHNpZ25QYXlsb2FkKHBheWxvYWQsIHRoaXMuc2VjcmV0LCBzaWduT3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICAvKipcbiAgICogRW5jcnlwdCBhIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBhZXNFbmNyeXB0KGJ1ZjogQnVmZmVyKTogQnVmZmVyIHtcbiAgICByZXR1cm4gYWVzRW5jcnlwdChidWYsIHRoaXMuc2VjcmV0KTtcbiAgfVxufVxuXG5leHBvcnQgZGVm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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "verdaccio",
|
|
3
|
-
"version": "5.26.
|
|
3
|
+
"version": "5.26.2",
|
|
4
4
|
"description": "A lightweight private npm proxy registry",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Verdaccio Maintainers",
|
|
@@ -19,18 +19,18 @@
|
|
|
19
19
|
"url": "https://opencollective.com/verdaccio"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@verdaccio/config": "
|
|
23
|
-
"@verdaccio/core": "
|
|
22
|
+
"@verdaccio/config": "7.0.0-next.1",
|
|
23
|
+
"@verdaccio/core": "7.0.0-next.1",
|
|
24
24
|
"@verdaccio/local-storage": "10.3.3",
|
|
25
|
-
"@verdaccio/logger-7": "
|
|
26
|
-
"@verdaccio/middleware": "
|
|
27
|
-
"@verdaccio/search": "
|
|
28
|
-
"@verdaccio/signature": "
|
|
25
|
+
"@verdaccio/logger-7": "7.0.0-next.1",
|
|
26
|
+
"@verdaccio/middleware": "7.0.0-next.1",
|
|
27
|
+
"@verdaccio/search": "7.0.0-next.1",
|
|
28
|
+
"@verdaccio/signature": "7.0.0-next.0",
|
|
29
29
|
"@verdaccio/streams": "10.2.1",
|
|
30
|
-
"@verdaccio/tarball": "
|
|
31
|
-
"@verdaccio/ui-theme": "
|
|
32
|
-
"@verdaccio/url": "
|
|
33
|
-
"@verdaccio/utils": "
|
|
30
|
+
"@verdaccio/tarball": "12.0.0-next.1",
|
|
31
|
+
"@verdaccio/ui-theme": "7.0.0-next.1",
|
|
32
|
+
"@verdaccio/url": "12.0.0-next.1",
|
|
33
|
+
"@verdaccio/utils": "7.0.0-next.1",
|
|
34
34
|
"JSONStream": "1.3.5",
|
|
35
35
|
"async": "3.2.4",
|
|
36
36
|
"clipanion": "3.2.1",
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
"pkginfo": "0.4.1",
|
|
55
55
|
"request": "2.88.2",
|
|
56
56
|
"semver": "7.5.4",
|
|
57
|
-
"validator": "13.
|
|
58
|
-
"verdaccio-audit": "
|
|
59
|
-
"verdaccio-htpasswd": "
|
|
57
|
+
"validator": "13.11.0",
|
|
58
|
+
"verdaccio-audit": "12.0.0-next.1",
|
|
59
|
+
"verdaccio-htpasswd": "12.0.0-next.1"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@babel/cli": "7.22.
|
|
63
|
-
"@babel/core": "7.22.
|
|
64
|
-
"@babel/eslint-parser": "7.22.
|
|
62
|
+
"@babel/cli": "7.22.9",
|
|
63
|
+
"@babel/core": "7.22.9",
|
|
64
|
+
"@babel/eslint-parser": "7.22.9",
|
|
65
65
|
"@babel/node": "7.22.6",
|
|
66
66
|
"@babel/plugin-proposal-class-properties": "7.18.6",
|
|
67
67
|
"@babel/plugin-proposal-decorators": "7.22.7",
|
|
@@ -77,9 +77,9 @@
|
|
|
77
77
|
"@babel/plugin-syntax-import-meta": "7.10.4",
|
|
78
78
|
"@babel/plugin-transform-async-to-generator": "7.22.5",
|
|
79
79
|
"@babel/plugin-transform-classes": "7.22.6",
|
|
80
|
-
"@babel/plugin-transform-runtime": "7.22.
|
|
80
|
+
"@babel/plugin-transform-runtime": "7.22.9",
|
|
81
81
|
"@babel/polyfill": "^7.12.1",
|
|
82
|
-
"@babel/preset-env": "7.22.
|
|
82
|
+
"@babel/preset-env": "7.22.9",
|
|
83
83
|
"@babel/preset-typescript": "7.22.5",
|
|
84
84
|
"@babel/register": "7.22.5",
|
|
85
85
|
"@babel/runtime": "7.22.6",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"@typescript-eslint/eslint-plugin": "5.59.11",
|
|
101
101
|
"@typescript-eslint/parser": "5.59.11",
|
|
102
102
|
"@verdaccio-scope/verdaccio-auth-foo": "0.0.2",
|
|
103
|
-
"@verdaccio/types": "
|
|
103
|
+
"@verdaccio/types": "12.0.0-next.0",
|
|
104
104
|
"babel-jest": "29.6.1",
|
|
105
105
|
"babel-plugin-dynamic-import-node": "2.3.3",
|
|
106
106
|
"cross-env": "7.0.3",
|
|
@@ -185,5 +185,5 @@
|
|
|
185
185
|
"url": "https://opencollective.com/verdaccio",
|
|
186
186
|
"logo": "https://opencollective.com/verdaccio/logo.txt"
|
|
187
187
|
},
|
|
188
|
-
"packageManager": "yarn@3.6.
|
|
188
|
+
"packageManager": "yarn@3.6.1"
|
|
189
189
|
}
|