verdaccio 5.20.1 → 5.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api/endpoint/api/dist-tags.js +7 -3
- package/build/api/endpoint/api/package.js +7 -3
- package/build/api/endpoint/api/publish.js +6 -3
- package/build/api/endpoint/api/user.js +5 -5
- package/build/api/endpoint/api/v1/profile.js +4 -4
- package/build/api/endpoint/api/v1/token.js +5 -5
- package/build/api/endpoint/index.js +3 -5
- package/build/api/index.d.ts +1 -0
- package/build/api/index.js +19 -11
- package/build/api/middleware.d.ts +1 -15
- package/build/api/middleware.js +1 -269
- package/build/api/web/{endpoint → api}/index.d.ts +0 -0
- package/build/api/web/{endpoint → api}/index.js +4 -4
- package/build/api/web/{endpoint → api}/package.d.ts +0 -0
- package/build/api/web/api/package.js +166 -0
- package/build/api/web/{endpoint → api}/search.d.ts +0 -0
- package/build/api/web/api/search.js +51 -0
- package/build/api/web/{endpoint → api}/user.d.ts +0 -0
- package/build/api/web/api/user.js +67 -0
- package/build/api/web/index.d.ts +2 -3
- package/build/api/web/index.js +15 -88
- package/build/lib/auth-utils.js +2 -2
- package/build/lib/config.js +3 -2
- package/build/lib/logger/index.d.ts +3 -1
- package/build/lib/logger/index.js +10 -19
- package/build/lib/up-storage.js +4 -4
- package/build/lib/utils.d.ts +0 -16
- package/build/lib/utils.js +1 -61
- package/package.json +12 -34
- package/build/api/rate-limiter.d.ts +0 -3
- package/build/api/rate-limiter.js +0 -19
- package/build/api/web/api.d.ts +0 -4
- package/build/api/web/api.js +0 -34
- package/build/api/web/endpoint/package.js +0 -161
- package/build/api/web/endpoint/search.js +0 -51
- package/build/api/web/endpoint/user.js +0 -67
- package/build/api/web/html/manifest.d.ts +0 -6
- package/build/api/web/html/manifest.js +0 -18
- package/build/api/web/html/renderHTML.d.ts +0 -3
- package/build/api/web/html/renderHTML.js +0 -131
- package/build/api/web/html/template.d.ts +0 -26
- package/build/api/web/html/template.js +0 -38
- package/build/lib/logger/formatter/index.d.ts +0 -1
- package/build/lib/logger/formatter/index.js +0 -16
- package/build/lib/logger/formatter/prettifier.d.ts +0 -18
- package/build/lib/logger/formatter/prettifier.js +0 -89
- package/build/lib/logger/levels.d.ts +0 -33
- package/build/lib/logger/levels.js +0 -61
- package/build/lib/logger/logger.d.ts +0 -22
- package/build/lib/logger/logger.js +0 -141
- package/build/lib/logger/utils.d.ts +0 -5
- package/build/lib/logger/utils.js +0 -25
|
@@ -6,11 +6,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
8
|
var _mime = _interopRequireDefault(require("mime"));
|
|
9
|
+
var _middleware = require("@verdaccio/middleware");
|
|
9
10
|
var _constants = require("../../../lib/constants");
|
|
10
|
-
var
|
|
11
|
+
var _logger = require("../../../lib/logger");
|
|
11
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
13
|
function _default(route, auth, storage) {
|
|
13
|
-
const can = (0, _middleware.allow)(auth
|
|
14
|
+
const can = (0, _middleware.allow)(auth, {
|
|
15
|
+
beforeAll: (params, message) => _logger.logger.trace(params, message),
|
|
16
|
+
afterAll: (params, message) => _logger.logger.trace(params, message)
|
|
17
|
+
});
|
|
14
18
|
const tag_package_version = function (req, res, next) {
|
|
15
19
|
if (_lodash.default.isString(req.body) === false) {
|
|
16
20
|
return next('route');
|
|
@@ -70,4 +74,4 @@ function _default(route, auth, storage) {
|
|
|
70
74
|
});
|
|
71
75
|
});
|
|
72
76
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZSIsImF1dGgiLCJzdG9yYWdlIiwiY2FuIiwiYWxsb3ciLCJiZWZvcmVBbGwiLCJwYXJhbXMiLCJtZXNzYWdlIiwibG9nZ2VyIiwidHJhY2UiLCJhZnRlckFsbCIsInRhZ19wYWNrYWdlX3ZlcnNpb24iLCJyZXEiLCJyZXMiLCJuZXh0IiwiXyIsImlzU3RyaW5nIiwiYm9keSIsInRhZ3MiLCJ0YWciLCJtZXJnZVRhZ3MiLCJwYWNrYWdlIiwiZXJyIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJDUkVBVEVEIiwib2siLCJBUElfTUVTU0FHRSIsIlRBR19BRERFRCIsInB1dCIsIm1lZGlhIiwibWltZSIsImdldFR5cGUiLCJwb3N0IiwiZGVsZXRlIiwiVEFHX1JFTU9WRUQiLCJnZXQiLCJnZXRQYWNrYWdlIiwibmFtZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJpbmZvIiwiRElTVF9UQUdTIiwiVEFHX1VQREFURUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9kaXN0LXRhZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5cbmltcG9ydCB7IGFsbG93LCBtZWRpYSB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBQYWNrYWdlIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEFQSV9NRVNTQUdFLCBESVNUX1RBR1MsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7XG4gICROZXh0RnVuY3Rpb25WZXIsXG4gICRSZXF1ZXN0RXh0ZW5kLFxuICAkUmVzcG9uc2VFeHRlbmQsXG4gIElBdXRoLFxuICBJU3RvcmFnZUhhbmRsZXIsXG59IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IElBdXRoLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gICAgYWZ0ZXJBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICB9KTtcbiAgY29uc3QgdGFnX3BhY2thZ2VfdmVyc2lvbiA9IGZ1bmN0aW9uIChcbiAgICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICAgIHJlczogJFJlc3BvbnNlRXh0ZW5kLFxuICAgIG5leHQ6ICROZXh0RnVuY3Rpb25WZXJcbiAgKTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgaWYgKF8uaXNTdHJpbmcocmVxLmJvZHkpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIG5leHQoJ3JvdXRlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFncyA9IHt9O1xuICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gcmVxLmJvZHk7XG4gICAgc3RvcmFnZS5tZXJnZVRhZ3MocmVxLnBhcmFtcy5wYWNrYWdlLCB0YWdzLCBmdW5jdGlvbiAoZXJyOiBFcnJvcik6ICROZXh0RnVuY3Rpb25WZXIge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlRBR19BRERFRCB9KTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyB0YWdnaW5nIGEgcGFja2FnZVxuICByb3V0ZS5wdXQoJy86cGFja2FnZS86dGFnJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgdGFnX3BhY2thZ2VfdmVyc2lvbik7XG5cbiAgcm91dGUucG9zdChcbiAgICAnLy0vcGFja2FnZS86cGFja2FnZS9kaXN0LXRhZ3MvOnRhZycsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgIHRhZ19wYWNrYWdlX3ZlcnNpb25cbiAgKTtcblxuICByb3V0ZS5wdXQoXG4gICAgJy8tL3BhY2thZ2UvOnBhY2thZ2UvZGlzdC10YWdzLzp0YWcnLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICB0YWdfcGFja2FnZV92ZXJzaW9uXG4gICk7XG5cbiAgcm91dGUuZGVsZXRlKFxuICAgICcvLS9wYWNrYWdlLzpwYWNrYWdlL2Rpc3QtdGFncy86dGFnJyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gbnVsbDtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHJlcS5wYXJhbXMucGFja2FnZSwgdGFncywgZnVuY3Rpb24gKGVycjogYW55KTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogQVBJX01FU1NBR0UuVEFHX1JFTU9WRUQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLmdldChcbiAgICAnLy0vcGFja2FnZS86cGFja2FnZS9kaXN0LXRhZ3MnLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoZXJyOiBhbnksIGluZm86IFBhY2thZ2UpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQoaW5mb1tESVNUX1RBR1NdKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5wb3N0KFxuICAgICcvLS9wYWNrYWdlLzpwYWNrYWdlL2Rpc3QtdGFncycsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLm1lcmdlVGFncyhyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5ib2R5LCBmdW5jdGlvbiAoZXJyOiBhbnkpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQUdfVVBEQVRF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
|
|
@@ -5,11 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
|
+
var _middleware = require("@verdaccio/middleware");
|
|
8
9
|
var _tarball = require("@verdaccio/tarball");
|
|
9
10
|
var _constants = require("../../../lib/constants");
|
|
11
|
+
var _logger = require("../../../lib/logger");
|
|
10
12
|
var _utils = require("../../../lib/utils");
|
|
11
13
|
var _string = require("../../../utils/string");
|
|
12
|
-
var _middleware = require("../../middleware");
|
|
13
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
15
|
const downloadStream = (packageName, filename, storage, req, res) => {
|
|
15
16
|
const stream = storage.getTarball(packageName, filename);
|
|
@@ -40,7 +41,10 @@ const redirectOrDownloadStream = (packageName, filename, storage, req, res, conf
|
|
|
40
41
|
});
|
|
41
42
|
};
|
|
42
43
|
function _default(route, auth, storage, config) {
|
|
43
|
-
const can = (0, _middleware.allow)(auth
|
|
44
|
+
const can = (0, _middleware.allow)(auth, {
|
|
45
|
+
beforeAll: (params, message) => _logger.logger.trace(params, message),
|
|
46
|
+
afterAll: (params, message) => _logger.logger.trace(params, message)
|
|
47
|
+
});
|
|
44
48
|
// TODO: anonymous user?
|
|
45
49
|
route.get('/:package/:version?', can('access'), function (req, res, next) {
|
|
46
50
|
const abbreviated = (0, _string.getByQualityPriorityValue)(req.get('Accept')) === 'application/vnd.npm.install-v1+json';
|
|
@@ -107,4 +111,4 @@ function _default(route, auth, storage, config) {
|
|
|
107
111
|
}
|
|
108
112
|
});
|
|
109
113
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb3dubG9hZFN0cmVhbSIsInBhY2thZ2VOYW1lIiwiZmlsZW5hbWUiLCJzdG9yYWdlIiwicmVxIiwicmVzIiwic3RyZWFtIiwiZ2V0VGFyYmFsbCIsIm9uIiwiY29udGVudCIsImhlYWRlciIsImVyciIsImxvY2FscyIsInJlcG9ydF9lcnJvciIsIkhFQURFUlMiLCJDT05URU5UX1RZUEUiLCJPQ1RFVF9TVFJFQU0iLCJwaXBlIiwicmVkaXJlY3RPckRvd25sb2FkU3RyZWFtIiwiY29uZmlnIiwidGFyYmFsbFVybFJlZGlyZWN0IiwiXyIsImdldCIsImhhc0xvY2FsVGFyYmFsbCIsInRoZW4iLCJjb250ZXh0IiwidGFyYmFsbFVybCIsInRlbXBsYXRlIiwicmVkaXJlY3QiLCJjYXRjaCIsInJvdXRlIiwiYXV0aCIsImNhbiIsImFsbG93IiwibmV4dCIsImFiYnJldmlhdGVkIiwiZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSIsImdldFBhY2thZ2VNZXRhQ2FsbGJhY2siLCJtZXRhZGF0YSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwicHJvdG9jb2wiLCJoZWFkZXJzIiwiaG9zdCIsInJlbW90ZUFkZHJlc3MiLCJzb2NrZXQiLCJ1cmxfcHJlZml4IiwicXVlcnlWZXJzaW9uIiwicGFyYW1zIiwidmVyc2lvbiIsImlzTmlsIiwic2V0SGVhZGVyIiwiSlNPTiIsImdldFZlcnNpb24iLCJESVNUX1RBR1MiLCJFcnJvckNvZGUiLCJnZXROb3RGb3VuZCIsIkFQSV9FUlJPUiIsIlZFUlNJT05fTk9UX0VYSVNUIiwiZ2V0UGFja2FnZSIsIm5hbWUiLCJwYWNrYWdlIiwidXBsaW5rc0xvb2siLCJjYWxsYmFjayIsInNjb3BlZFBhY2thZ2UiLCJ1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMgfSBmcm9tICdAdmVyZGFjY2lvL3RhcmJhbGwnO1xuaW1wb3J0IHsgQ29uZmlnLCBQYWNrYWdlIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEFQSV9FUlJPUiwgRElTVF9UQUdTLCBIRUFERVJTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGdldFZlcnNpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHtcbiAgJE5leHRGdW5jdGlvblZlcixcbiAgJFJlcXVlc3RFeHRlbmQsXG4gICRSZXNwb25zZUV4dGVuZCxcbiAgSUF1dGgsXG4gIElTdG9yYWdlSGFuZGxlcixcbn0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmluZyc7XG5pbXBvcnQgeyBhbGxvdyB9IGZyb20gJy4uLy4uL21pZGRsZXdhcmUnO1xuXG5jb25zdCBkb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuZ2V0VGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuXG4gIHN0cmVhbS5vbignY29udGVudC1sZW5ndGgnLCBmdW5jdGlvbiAoY29udGVudCk6IHZvaWQge1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xuXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuT0NURVRfU1RSRUFNKTtcbiAgc3RyZWFtLnBpcGUocmVzKTtcbn07XG5cbmNvbnN0IHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZCxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQgPT4ge1xuICBjb25zdCB0YXJiYWxsVXJsUmVkaXJlY3QgPSBfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpO1xuICBzdG9yYWdlXG4gICAgLmhhc0xvY2FsVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpXG4gICAgLnRoZW4oKGhhc0xvY2FsVGFyYmFsbCkgPT4ge1xuICAgICAgaWYgKGhhc0xvY2FsVGFyYmFsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0geyBwYWNrYWdlTmFtZSwgZmlsZW5hbWUgfTtcbiAgICAgICAgY29uc3QgdGFyYmFsbFVybCA9XG4gICAgICAgICAgdHlwZW9mIHRhcmJhbGxVcmxSZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dClcbiAgICAgICAgICAgIDogXy50ZW1wbGF0ZSh0YXJiYWxsVXJsUmVkaXJlY3QpKGNvbnRleHQpO1xuICAgICAgICByZXMucmVkaXJlY3QodGFyYmFsbFVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvcihlcnIpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKFxuICByb3V0ZTogUm91dGVyLFxuICBhdXRoOiBJQXV0aCxcbiAgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLFxuICBjb25maWc6IENvbmZpZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgpO1xuICAvLyBUT0RPOiBhbm9ueW1vdXMgdXNlcj9cbiAgcm91dGUuZ2V0KFxuICAgICcvOnBhY2thZ2UvOnZlcnNpb24/JyxcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgY29uc3QgYWJicmV2aWF0ZWQgPVxuICAgICAgICBnZXRCeVF1YWxpdHlQcmlvcml0eVZhbHVlKHJlcS5nZXQoJ0FjY2VwdCcpKSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5ucG0uaW5zdGFsbC12MStqc29uJztcbiAgICAgIGNvbnN0IGdldFBhY2thZ2VNZXRhQ2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyLCBtZXRhZGF0YTogUGFja2FnZSk6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBtZXRhZGF0YSA9IGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzKFxuICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3RvY29sOiByZXEucHJvdG9jb2wsXG4gICAgICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVycyBhcyBhbnksXG4gICAgICAgICAgICBob3N0OiByZXEuaG9zdCxcbiAgICAgICAgICAgIHJlbW90ZUFkZHJlc3M6IHJlcS5zb2NrZXQucmVtb3RlQWRkcmVzcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbmZpZy51cmxfcHJlZml4XG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHF1ZXJ5VmVyc2lvbiA9IHJlcS5wYXJhbXMudmVyc2lvbjtcbiAgICAgICAgaWYgKF8uaXNOaWwocXVlcnlWZXJzaW9uKSkge1xuICAgICAgICAgIGlmIChhYmJyZXZpYXRlZCkge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgJ2FwcGxpY2F0aW9uL3ZuZC5ucG0uaW5zdGFsbC12MStqc29uJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5leHQobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT04pO1xuICAgICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHF1ZXJ5VmVyc2lvbiA9IG1ldGFkYXRhW0RJU1RfVEFHU11bcXVlcnlWZXJzaW9uXTtcbiAgICAgICAgICAgIHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwodmVyc2lvbikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Tm90Rm91bmQoYCR7QVBJX0VSUk9SLlZFUlNJT05fTk9UX0VYSVNUfTogJHtyZXEucGFyYW1zLnZlcnNpb259YCkpO1xuICAgICAgfTtcblxuICAgICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgICAgbmFtZTogcmVxLnBhcmFtcy5wYWNrYWdlLFxuICAgICAgICB1cGxpbmtzTG9vazogdHJ1ZSxcbiAgICAgICAgcmVxLFxuICAgICAgICBhYmJyZXZpYXRlZCxcbiAgICAgICAgY2FsbGJhY2s6IGdldFBhY2thZ2VNZXRhQ2FsbGJhY2ssXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUuZ2V0KFxuICAgICcvOnNjb3BlZFBhY2thZ2UvLS86c2NvcGUvOmZpbGVuYW1lJyxcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCk6IHZvaWQge1xuICAgICAgY29uc3QgeyBzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIGlmIChfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG93bmxvYWRTdHJlYW0oc2NvcGVkUGFja2FnZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbShzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMsIGNvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLmdldChcbiAgICAnLzpwYWNrYWdlLy0vOmZpbGVuYW1lJyxcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCk6IHZvaWQge1xuICAgICAgaWYgKF8uZ2V0KGNvbmZpZywgJ2V4cGVyaW1lbnRzLnRhcmJhbGxfdXJsX3JlZGlyZWN0JykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5wYXJhbXMuZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbShcbiAgICAgICAgICByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgICAgcmVxLnBhcmFtcy5maWxlbmFtZSxcbiAgICAgICAgICBzdG9yYWdlLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICByZXMsXG4gICAgICAgICAgY29uZmlnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQVFBO0FBQ0E7QUFBeUM7QUFFekMsTUFBTUEsY0FBYyxHQUFHLENBQ3JCQyxXQUFtQixFQUNuQkMsUUFBZ0IsRUFDaEJDLE9BQVksRUFDWkMsR0FBbUIsRUFDbkJDLEdBQW9CLEtBQ1g7RUFDVCxNQUFNQyxNQUFNLEdBQUdILE9BQU8sQ0FBQ0ksVUFBVSxDQUFDTixXQUFXLEVBQUVDLFFBQVEsQ0FBQztFQUV4REksTUFBTSxDQUFDRSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsVUFBVUMsT0FBTyxFQUFRO0lBQ25ESixHQUFHLENBQUNLLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRUQsT0FBTyxDQUFDO0VBQ3ZDLENBQUMsQ0FBQztF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
|
|
114
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb3dubG9hZFN0cmVhbSIsInBhY2thZ2VOYW1lIiwiZmlsZW5hbWUiLCJzdG9yYWdlIiwicmVxIiwicmVzIiwic3RyZWFtIiwiZ2V0VGFyYmFsbCIsIm9uIiwiY29udGVudCIsImhlYWRlciIsImVyciIsImxvY2FscyIsInJlcG9ydF9lcnJvciIsIkhFQURFUlMiLCJDT05URU5UX1RZUEUiLCJPQ1RFVF9TVFJFQU0iLCJwaXBlIiwicmVkaXJlY3RPckRvd25sb2FkU3RyZWFtIiwiY29uZmlnIiwidGFyYmFsbFVybFJlZGlyZWN0IiwiXyIsImdldCIsImhhc0xvY2FsVGFyYmFsbCIsInRoZW4iLCJjb250ZXh0IiwidGFyYmFsbFVybCIsInRlbXBsYXRlIiwicmVkaXJlY3QiLCJjYXRjaCIsInJvdXRlIiwiYXV0aCIsImNhbiIsImFsbG93IiwiYmVmb3JlQWxsIiwicGFyYW1zIiwibWVzc2FnZSIsImxvZ2dlciIsInRyYWNlIiwiYWZ0ZXJBbGwiLCJuZXh0IiwiYWJicmV2aWF0ZWQiLCJnZXRCeVF1YWxpdHlQcmlvcml0eVZhbHVlIiwiZ2V0UGFja2FnZU1ldGFDYWxsYmFjayIsIm1ldGFkYXRhIiwiY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMiLCJwcm90b2NvbCIsImhlYWRlcnMiLCJob3N0IiwicmVtb3RlQWRkcmVzcyIsInNvY2tldCIsInVybF9wcmVmaXgiLCJxdWVyeVZlcnNpb24iLCJ2ZXJzaW9uIiwiaXNOaWwiLCJzZXRIZWFkZXIiLCJKU09OIiwiZ2V0VmVyc2lvbiIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwic2NvcGVkUGFja2FnZSIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBhbGxvdyB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyB9IGZyb20gJ0B2ZXJkYWNjaW8vdGFyYmFsbCc7XG5pbXBvcnQgeyBDb25maWcsIFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IHsgQVBJX0VSUk9SLCBESVNUX1RBR1MsIEhFQURFUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBnZXRWZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7XG4gICROZXh0RnVuY3Rpb25WZXIsXG4gICRSZXF1ZXN0RXh0ZW5kLFxuICAkUmVzcG9uc2VFeHRlbmQsXG4gIElBdXRoLFxuICBJU3RvcmFnZUhhbmRsZXIsXG59IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGdldEJ5UXVhbGl0eVByaW9yaXR5VmFsdWUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJpbmcnO1xuXG5jb25zdCBkb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuZ2V0VGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuXG4gIHN0cmVhbS5vbignY29udGVudC1sZW5ndGgnLCBmdW5jdGlvbiAoY29udGVudCk6IHZvaWQge1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xuXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuT0NURVRfU1RSRUFNKTtcbiAgc3RyZWFtLnBpcGUocmVzKTtcbn07XG5cbmNvbnN0IHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZCxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQgPT4ge1xuICBjb25zdCB0YXJiYWxsVXJsUmVkaXJlY3QgPSBfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpO1xuICBzdG9yYWdlXG4gICAgLmhhc0xvY2FsVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpXG4gICAgLnRoZW4oKGhhc0xvY2FsVGFyYmFsbCkgPT4ge1xuICAgICAgaWYgKGhhc0xvY2FsVGFyYmFsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0geyBwYWNrYWdlTmFtZSwgZmlsZW5hbWUgfTtcbiAgICAgICAgY29uc3QgdGFyYmFsbFVybCA9XG4gICAgICAgICAgdHlwZW9mIHRhcmJhbGxVcmxSZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dClcbiAgICAgICAgICAgIDogXy50ZW1wbGF0ZSh0YXJiYWxsVXJsUmVkaXJlY3QpKGNvbnRleHQpO1xuICAgICAgICByZXMucmVkaXJlY3QodGFyYmFsbFVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvcihlcnIpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKFxuICByb3V0ZTogUm91dGVyLFxuICBhdXRoOiBJQXV0aCxcbiAgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLFxuICBjb25maWc6IENvbmZpZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgsIHtcbiAgICBiZWZvcmVBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICAgIGFmdGVyQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgfSk7XG4gIC8vIFRPRE86IGFub255bW91cyB1c2VyP1xuICByb3V0ZS5nZXQoXG4gICAgJy86cGFja2FnZS86dmVyc2lvbj8nLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBhYmJyZXZpYXRlZCA9XG4gICAgICAgIGdldEJ5UXVhbGl0eVByaW9yaXR5VmFsdWUocmVxLmdldCgnQWNjZXB0JykpID09PSAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nO1xuICAgICAgY29uc3QgZ2V0UGFja2FnZU1ldGFDYWxsYmFjayA9IGZ1bmN0aW9uIChlcnIsIG1ldGFkYXRhOiBQYWNrYWdlKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFkYXRhID0gY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMoXG4gICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdG9jb2w6IHJlcS5wcm90b2NvbCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzIGFzIGFueSxcbiAgICAgICAgICAgIGhvc3Q6IHJlcS5ob3N0LFxuICAgICAgICAgICAgcmVtb3RlQWRkcmVzczogcmVxLnNvY2tldC5yZW1vdGVBZGRyZXNzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29uZmlnLnVybF9wcmVmaXhcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcXVlcnlWZXJzaW9uID0gcmVxLnBhcmFtcy52ZXJzaW9uO1xuICAgICAgICBpZiAoXy5pc05pbChxdWVyeVZlcnNpb24pKSB7XG4gICAgICAgICAgaWYgKGFiYnJldmlhdGVkKSB7XG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbmV4dChtZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgIGlmIChfLmlzTmlsKHZlcnNpb24pID09PSBmYWxzZSkge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdW3F1ZXJ5VmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcXVlcnlWZXJzaW9uID0gbWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dO1xuICAgICAgICAgICAgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChgJHtBUElfRVJST1IuVkVSU0lPTl9OT1RfRVhJU1R9OiAke3JlcS5wYXJhbXMudmVyc2lvbn1gKSk7XG4gICAgICB9O1xuXG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGFiYnJldmlhdGVkLFxuICAgICAgICBjYWxsYmFjazogZ2V0UGFja2FnZU1ldGFDYWxsYmFjayxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5nZXQoXG4gICAgJy86c2NvcGVkUGFja2FnZS8tLzpzY29wZS86ZmlsZW5hbWUnLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kKTogdm9pZCB7XG4gICAgICBjb25zdCB7IHNjb3BlZFBhY2thZ2UsIGZpbGVuYW1lIH0gPSByZXEucGFyYW1zO1xuICAgICAgaWYgKF8uZ2V0KGNvbmZpZywgJ2V4cGVyaW1lbnRzLnRhcmJhbGxfdXJsX3JlZGlyZWN0JykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtKHNjb3BlZFBhY2thZ2UsIGZpbGVuYW1lLCBzdG9yYWdlLCByZXEsIHJlcywgY29uZmlnKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgcm91dGUuZ2V0KFxuICAgICcvOnBhY2thZ2UvLS86ZmlsZW5hbWUnLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kKTogdm9pZCB7XG4gICAgICBpZiAoXy5nZXQoY29uZmlnLCAnZXhwZXJpbWVudHMudGFyYmFsbF91cmxfcmVkaXJlY3QnKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvd25sb2FkU3RyZWFtKHJlcS5wYXJhbXMucGFja2FnZSwgcmVxLnBhcmFtcy5maWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtKFxuICAgICAgICAgIHJlcS5wYXJhbXMucGFja2FnZSxcbiAgICAgICAgICByZXEucGFyYW1zLmZpbGVuYW1lLFxuICAgICAgICAgIHN0b3JhZ2UsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHJlcyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQVFBO0FBQWtFO0FBRWxFLE1BQU1BLGNBQWMsR0FBRyxDQUNyQkMs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
|
|
@@ -14,12 +14,12 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
14
14
|
var _mime = _interopRequireDefault(require("mime"));
|
|
15
15
|
var _path = _interopRequireDefault(require("path"));
|
|
16
16
|
var _core = require("@verdaccio/core");
|
|
17
|
+
var _middleware = require("@verdaccio/middleware");
|
|
17
18
|
var _constants = require("../../../lib/constants");
|
|
18
19
|
var _logger = require("../../../lib/logger");
|
|
19
20
|
var _notify = require("../../../lib/notify");
|
|
20
21
|
var _storageUtils = require("../../../lib/storage-utils");
|
|
21
22
|
var _utils = require("../../../lib/utils");
|
|
22
|
-
var _middleware = require("../../middleware");
|
|
23
23
|
var _star = _interopRequireDefault(require("./star"));
|
|
24
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
25
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -29,7 +29,10 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
|
|
|
29
29
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
30
30
|
const debug = (0, _debug.default)('verdaccio:publish');
|
|
31
31
|
function publish(router, auth, storage, config) {
|
|
32
|
-
const can = (0, _middleware.allow)(auth
|
|
32
|
+
const can = (0, _middleware.allow)(auth, {
|
|
33
|
+
beforeAll: (params, message) => _logger.logger.trace(params, message),
|
|
34
|
+
afterAll: (params, message) => _logger.logger.trace(params, message)
|
|
35
|
+
});
|
|
33
36
|
|
|
34
37
|
/**
|
|
35
38
|
* Publish a package / update package / un/start a package
|
|
@@ -352,4 +355,4 @@ function uploadPackageTarball(storage) {
|
|
|
352
355
|
});
|
|
353
356
|
};
|
|
354
357
|
}
|
|
355
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJ1ZyIsImJ1aWxkRGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJhbGxvdyIsInB1dCIsIm1lZGlhIiwibWltZSIsImdldFR5cGUiLCJleHBlY3RKc29uIiwicHVibGlzaFBhY2thZ2UiLCJkZWxldGUiLCJ1blB1Ymxpc2hQYWNrYWdlIiwicmVtb3ZlVGFyYmFsbCIsIkhFQURFUlMiLCJPQ1RFVF9TVFJFQU0iLCJ1cGxvYWRQYWNrYWdlVGFyYmFsbCIsImFkZFZlcnNpb24iLCJzdGFyQXBpIiwic3RhciIsInJlcSIsInJlcyIsIm5leHQiLCJwYWNrYWdlTmFtZSIsInBhcmFtcyIsInBhY2thZ2UiLCJjcmVhdGVUYXJiYWxsIiwiZmlsZW5hbWUiLCJkYXRhIiwiY2IiLCJzdHJlYW0iLCJhZGRUYXJiYWxsIiwib24iLCJlcnIiLCJlbmQiLCJCdWZmZXIiLCJmcm9tIiwiZG9uZSIsImNyZWF0ZVZlcnNpb24iLCJ2ZXJzaW9uIiwibWV0YWRhdGEiLCJhZGRUYWdzIiwidGFncyIsIm1lcmdlVGFncyIsImFmdGVyQ2hhbmdlIiwiZXJyb3IiLCJva01lc3NhZ2UiLCJtZXRhZGF0YUNvcHkiLCJfYXR0YWNobWVudHMiLCJ2ZXJzaW9ucyIsIl8iLCJpc05pbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsInN1Y2Nlc3MiLCJpc0ludmFsaWRCb2R5Rm9ybWF0IiwiaXNPYmplY3QiLCJoYXNEaWZmT25lS2V5IiwibG9nZ2VyIiwiaW5mbyIsIkVycm9yQ29kZSIsImdldEJhZFJlcXVlc3QiLCJBUElfRVJST1IiLCJVTlNVUE9SVEVEX1JFR0lTVFJZX0NBTEwiLCJDT05GTElDVCIsImZpcnN0QXR0YWNobWVudEtleSIsIk9iamVjdCIsImtleXMiLCJQYXRoIiwiYmFzZW5hbWUiLCJ2ZXJzaW9uVG9QdWJsaXNoIiwidmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoIiwicmVhZG1lIiwiU3RyaW5nIiwiRElTVF9UQUdTIiwibm90aWZ5IiwicmVtb3RlX3VzZXIiLCJuYW1lIiwiaXNQdWJsaXNoYWJsZVBhY2thZ2UiLCJib2R5IiwidXNlcnMiLCJ2YWxpZGF0aW9VdGlscyIsIm5vcm1hbGl6ZU1ldGFkYXRhIiwiX3JldiIsImlzUmVsYXRlZFRvRGVwcmVjYXRpb24iLCJpc0VtcHR5IiwicmVtb3RlIiwiYWxsb3dfdW5wdWJsaXNoIiwiY2hhbmdlUGFja2FnZSIsInJldmlzaW9uIiwiQVBJX01FU1NBR0UiLCJQS0dfQ0hBTkdFRCIsImFkZFBhY2thZ2UiLCJQS0dfQ1JFQVRFRCIsImdldEJhZERhdGEiLCJCQURfUEFDS0FHRV9EQVRBIiwicmVtb3ZlUGFja2FnZSIsIlBLR19SRU1PVkVEIiwiVEFSQkFMTF9SRU1PVkVEIiwidGFnIiwiUEtHX1BVQkxJU0hFRCIsInBpcGUiLCJjb21wbGV0ZSIsImFib3J0IiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiVEFSQkFMTF9VUExPQURFRCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3B1Ymxpc2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5pbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgdmFsaWRhdGlvVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgQ2FsbGJhY2ssIENvbmZpZywgTWVyZ2VUYWdzLCBQYWNrYWdlLCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIERJU1RfVEFHUywgSEVBREVSUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi4vLi4vLi4vbGliL25vdGlmeSc7XG5pbXBvcnQgeyBpc1B1Ymxpc2hhYmxlUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IEVycm9yQ29kZSwgaGFzRGlmZk9uZUtleSwgaXNPYmplY3QsIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHtcbiAgJE5leHRGdW5jdGlvblZlcixcbiAgJFJlcXVlc3RFeHRlbmQsXG4gICRSZXNwb25zZUV4dGVuZCxcbiAgSUF1dGgsXG4gIElTdG9yYWdlSGFuZGxlcixcbn0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgYWxsb3csIGV4cGVjdEpzb24sIG1lZGlhIH0gZnJvbSAnLi4vLi4vbWlkZGxld2FyZSc7XG5pbXBvcnQgc3RhciBmcm9tICcuL3N0YXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwdWJsaXNoJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHB1Ymxpc2goXG4gIHJvdXRlcjogUm91dGVyLFxuICBhdXRoOiBJQXV0aCxcbiAgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLFxuICBjb25maWc6IENvbmZpZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgpO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KFxuICAgICcvOnBhY2thZ2UvOl9yZXY/LzpyZXZpc2lvbj8nLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICBleHBlY3RKc29uLFxuICAgIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UsIGNvbmZpZywgYXV0aClcbiAgKTtcblxuICAvKipcbiAgICogVW4tcHVibGlzaGluZyBhbiBlbnRpcmUgcGFja2FnZS5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBoYXBwZW5zIHdoZW4gdGhlIGZpcnN0IGNhbGwgZGV0ZWN0IHRoZXJlIGlzIG9ubHkgb25lIHZlcnNpb24gcmVtYWluaW5nXG4gICAqIGluIHRoZSBtZXRhZGF0YSwgdGhlbiB0aGUgY2xpZW50IGRlY2lkZXMgdG8gREVMRVRFIHRoZSByZXNvdXJjZVxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMzA0IGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDEwNzZtcyAoZnJvbSBjYWNoZSlcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xOC1kOGViZTMwMjBiZDRhYzljIDIybXNcbiAgICovXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tcmV2LyonLCBjYW4oJ3VucHVibGlzaCcpLCB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UpKTtcblxuICAvLyByZW1vdmluZyBhIHRhcmJhbGxcbiAgcm91dGVyLmRlbGV0ZShcbiAgICAnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLy1yZXYvOnJldmlzaW9uJyxcbiAgICBjYW4oJ3VucHVibGlzaCcpLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSlcbiAgKTtcblxuICAvLyB1cGxvYWRpbmcgcGFja2FnZSB0YXJiYWxsXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS8tLzpmaWxlbmFtZS8qJyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBtZWRpYShIRUFERVJTLk9DVEVUX1NUUkVBTSksXG4gICAgdXBsb2FkUGFja2FnZVRhcmJhbGwoc3RvcmFnZSlcbiAgKTtcblxuICAvLyBhZGRpbmcgYSB2ZXJzaW9uXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS86dmVyc2lvbi8tdGFnLzp0YWcnLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICBleHBlY3RKc29uLFxuICAgIGFkZFZlcnNpb24oc3RvcmFnZSlcbiAgKTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaFBhY2thZ2Uoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLCBjb25maWc6IENvbmZpZywgYXV0aDogSUF1dGgpOiBhbnkge1xuICBjb25zdCBzdGFyQXBpID0gc3RhcihzdG9yYWdlKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdwdWJsaXNoaW5nIG9yIHVwZGF0aW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIC8qKlxuICAgICAqIFdyaXRlIHRhcmJhbGwgb2Ygc3RyZWFtIGRhdGEgZnJvbSBwYWNrYWdlIGNsaWVudHMuXG4gICAgICovXG4gICAgY29uc3QgY3JlYXRlVGFyYmFsbCA9IGZ1bmN0aW9uIChmaWxlbmFtZTogc3RyaW5nLCBkYXRhLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY2IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdzdWNjZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYigpO1xuICAgICAgfSk7XG4gICAgICAvLyB0aGlzIGlzIGR1bWIgYW5kIG1lbW9yeS1jb25zdW1pbmcsIGJ1dCB3aGF0IGNob2ljZXMgZG8gd2UgaGF2ZT9cbiAgICAgIC8vIGZsb3c6IHdlIG5lZWQgZmlyc3QgcmVmYWN0b3IgdGhpcyBmaWxlIGJlZm9yZSBkZWNpZGVzIHdoaWNoIHR5cGUgdXNlIGhlcmVcbiAgICAgIHN0cmVhbS5lbmQoQnVmZmVyLmZyb20oZGF0YS5kYXRhLCAnYmFzZTY0JykpO1xuICAgICAgc3RyZWFtLmRvbmUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQWRkIG5ldyBwYWNrYWdlIHZlcnNpb24gaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVZlcnNpb24gPSBmdW5jdGlvbiAodmVyc2lvbjogc3RyaW5nLCBtZXRhZGF0YTogVmVyc2lvbiwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmFkZFZlcnNpb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIG1ldGFkYXRhLCBudWxsLCBjYik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgdGFncyBpbiBzdG9yYWdlXG4gICAgICovXG4gICAgY29uc3QgYWRkVGFncyA9IGZ1bmN0aW9uICh0YWdzOiBNZXJnZVRhZ3MsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5tZXJnZVRhZ3MocGFja2FnZU5hbWUsIHRhZ3MsIGNiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2UgPSBmdW5jdGlvbiAoZXJyb3IsIG9rTWVzc2FnZSwgbWV0YWRhdGEpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQ29weTogUGFja2FnZSA9IHsgLi4ubWV0YWRhdGEgfTtcblxuICAgICAgY29uc3QgeyBfYXR0YWNobWVudHMsIHZlcnNpb25zIH0gPSBtZXRhZGF0YUNvcHk7XG5cbiAgICAgIC8vIGBucG0gc3RhcmAgd291bGRuJ3QgaGF2ZSBhdHRhY2htZW50c1xuICAgICAgLy8gYW5kIGBucG0gZGVwcmVjYXRlYCB3b3VsZCBoYXZlIGF0dGFjaG1lbnRzIGFzIGEgZW1wdHkgb2JqZWN0LCBpLmUge31cbiAgICAgIGlmIChfLmlzTmlsKF9hdHRhY2htZW50cykgfHwgSlNPTi5zdHJpbmdpZnkoX2F0dGFjaG1lbnRzKSA9PT0gJ3t9Jykge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBva01lc3NhZ2UsXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5wbS1yZWdpc3RyeS1jbGllbnQgMC4zKyBlbWJlZHMgdGFyYmFsbCBpbnRvIHRoZSBqc29uIHVwbG9hZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ucG0tcmVnaXN0cnktY2xpZW50L2NvbW1pdC9lOWZiZWI4YjY3ZjI0OTM5NGY3MzVjNzRlZjExZmU0NzIwZDQ2Y2EwXG4gICAgICAvLyBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vcmxpZHdrYS9zaW5vcGlhL2lzc3Vlcy8zMSwgZGVhbGluZyB3aXRoIGl0IGhlcmU6XG4gICAgICBjb25zdCBpc0ludmFsaWRCb2R5Rm9ybWF0ID1cbiAgICAgICAgaXNPYmplY3QoX2F0dGFjaG1lbnRzKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleShfYXR0YWNobWVudHMpIHx8XG4gICAgICAgIGlzT2JqZWN0KHZlcnNpb25zKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleSh2ZXJzaW9ucyk7XG5cbiAgICAgIGlmIChpc0ludmFsaWRCb2R5Rm9ybWF0KSB7XG4gICAgICAgIC8vIG5wbSBpcyBkb2luZyBzb21ldGhpbmcgc3RyYW5nZSBhZ2FpblxuICAgICAgICAvLyBpZiB0aGlzIGhhcHBlbnMgaW4gbm9ybWFsIGNpcmN1bXN0YW5jZXMsIHJlcG9ydCBpdCBhcyBhIGJ1Z1xuICAgICAgICBsb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lIH0sIGB3cm9uZyBwYWNrYWdlIGZvcm1hdCBvbiBwdWJsaXNoIGEgcGFja2FnZSBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgIT09IEhUVFBfU1RBVFVTLkNPTkZMSUNUKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXQgdGhpcyBwb2ludCBkb2N1bWVudCBpcyBlaXRoZXIgY3JlYXRlZCBvciBleGlzdGVkIGJlZm9yZVxuICAgICAgY29uc3QgW2ZpcnN0QXR0YWNobWVudEtleV0gPSBPYmplY3Qua2V5cyhfYXR0YWNobWVudHMpO1xuXG4gICAgICBjcmVhdGVUYXJiYWxsKFxuICAgICAgICBQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksXG4gICAgICAgIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLFxuICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB2ZXJzaW9uVG9QdWJsaXNoID0gT2JqZWN0LmtleXModmVyc2lvbnMpWzBdO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCA9IHZlcnNpb25zW3ZlcnNpb25Ub1B1Ymxpc2hdO1xuXG4gICAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9XG4gICAgICAgICAgICBfLmlzTmlsKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpID09PSBmYWxzZVxuICAgICAgICAgICAgICA/IFN0cmluZyh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKVxuICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWRkVGFncyhtZXRhZGF0YUNvcHlbRElTVF9UQUdTXSwgYXN5bmMgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KFxuICAgICAgICAgICAgICAgICAgbWV0YWRhdGFDb3B5LFxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgcmVxLnJlbW90ZV91c2VyLFxuICAgICAgICAgICAgICAgICAgYCR7bWV0YWRhdGFDb3B5Lm5hbWV9QCR7dmVyc2lvblRvUHVibGlzaH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH07XG5cbiAgICBpZiAoaXNQdWJsaXNoYWJsZVBhY2thZ2UocmVxLmJvZHkpID09PSBmYWxzZSAmJiBpc09iamVjdChyZXEuYm9keS51c2VycykpIHtcbiAgICAgIHJldHVybiBzdGFyQXBpKHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB2YWxpZGF0aW9VdGlscy5ub3JtYWxpemVNZXRhZGF0YShyZXEuYm9keSwgcGFja2FnZU5hbWUpO1xuICAgICAgLy8gY2hlY2sgX2F0dGFjaG1lbnRzIHRvIGRpc3Rpbmd1aXNoIHB1Ymxpc2ggYW5kIGRlcHJlY2F0ZVxuICAgICAgaWYgKFxuICAgICAgICByZXEucGFyYW1zLl9yZXYgfHxcbiAgICAgICAgKGlzUmVsYXRlZFRvRGVwcmVjYXRpb24ocmVxLmJvZHkpICYmIF8uaXNFbXB0eShyZXEuYm9keS5fYXR0YWNobWVudHMpKVxuICAgICAgKSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgLy8gd2UgY2hlY2sgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCBhbiB1cGRhdGUgaXMgYmFzaWNhbGx5IHJlbW92ZSB2ZXJzaW9uc1xuICAgICAgICBjb25zdCByZW1vdGUgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICAgIGF1dGguYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUgfSwgcmVtb3RlLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sIGBub3QgYWxsb3dlZCB0byB1bnB1Ymxpc2ggYSB2ZXJzaW9uIGZvciBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yYWdlLmNoYW5nZVBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCByZXEucGFyYW1zLnJldmlzaW9uLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ0hBTkdFRCwgbWV0YWRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhZGRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHN0b3JhZ2UuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ1JFQVRFRCwgbWV0YWRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCByZXZpc2lvbiB9ID0gcmVxLnBhcmFtcztcbiAgICBkZWJ1ZygncmVtb3ZpbmcgYSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgIHN0b3JhZ2UucmVtb3ZlVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgZGVidWcoJ3N1Y2Nlc3MgcmVtb3ZlIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG4vKipcbiAqIEFkZHMgYSBuZXcgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVmVyc2lvbihzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQTBCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUUxQixNQUFNQSxLQUFLLEdBQUcsSUFBQUMsY0FBVSxFQUFDLG1CQUFtQixDQUFDO0FBRTlCLFNBQVNDLE9BQU8sQ0FDN0JDLE1BQWMsRUFDZEMsSUFBVyxFQUNYQyxPQUF3QixFQUN4QkMsTUFBYyxFQUNSO0VBQ04sTUFBTUMsR0FBRyxHQUFHLElBQUFDLGlCQUFLLEVBQUNKLElBQUksQ0FBQzs7RUFFdkI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFRCxNQUFNLENBQUNNLEdB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
|
|
358
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJ1ZyIsImJ1aWxkRGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwicHV0IiwibWVkaWEiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJzdGFyIiwicmVxIiwicmVzIiwibmV4dCIsInBhY2thZ2VOYW1lIiwicGFja2FnZSIsImNyZWF0ZVRhcmJhbGwiLCJmaWxlbmFtZSIsImRhdGEiLCJjYiIsInN0cmVhbSIsImFkZFRhcmJhbGwiLCJvbiIsImVyciIsImVuZCIsIkJ1ZmZlciIsImZyb20iLCJkb25lIiwiY3JlYXRlVmVyc2lvbiIsInZlcnNpb24iLCJtZXRhZGF0YSIsImFkZFRhZ3MiLCJ0YWdzIiwibWVyZ2VUYWdzIiwiYWZ0ZXJDaGFuZ2UiLCJlcnJvciIsIm9rTWVzc2FnZSIsIm1ldGFkYXRhQ29weSIsIl9hdHRhY2htZW50cyIsInZlcnNpb25zIiwiXyIsImlzTmlsIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiQ1JFQVRFRCIsIm9rIiwic3VjY2VzcyIsImlzSW52YWxpZEJvZHlGb3JtYXQiLCJpc09iamVjdCIsImhhc0RpZmZPbmVLZXkiLCJpbmZvIiwiRXJyb3JDb2RlIiwiZ2V0QmFkUmVxdWVzdCIsIkFQSV9FUlJPUiIsIlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCIsIkNPTkZMSUNUIiwiZmlyc3RBdHRhY2htZW50S2V5IiwiT2JqZWN0Iiwia2V5cyIsIlBhdGgiLCJiYXNlbmFtZSIsInZlcnNpb25Ub1B1Ymxpc2giLCJ2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2giLCJyZWFkbWUiLCJTdHJpbmciLCJESVNUX1RBR1MiLCJub3RpZnkiLCJyZW1vdGVfdXNlciIsIm5hbWUiLCJpc1B1Ymxpc2hhYmxlUGFja2FnZSIsImJvZHkiLCJ1c2VycyIsInZhbGlkYXRpb1V0aWxzIiwibm9ybWFsaXplTWV0YWRhdGEiLCJfcmV2IiwiaXNSZWxhdGVkVG9EZXByZWNhdGlvbiIsImlzRW1wdHkiLCJyZW1vdGUiLCJhbGxvd191bnB1Ymxpc2giLCJjaGFuZ2VQYWNrYWdlIiwicmV2aXNpb24iLCJBUElfTUVTU0FHRSIsIlBLR19DSEFOR0VEIiwiYWRkUGFja2FnZSIsIlBLR19DUkVBVEVEIiwiZ2V0QmFkRGF0YSIsIkJBRF9QQUNLQUdFX0RBVEEiLCJyZW1vdmVQYWNrYWdlIiwiUEtHX1JFTU9WRUQiLCJUQVJCQUxMX1JFTU9WRUQiLCJ0YWciLCJQS0dfUFVCTElTSEVEIiwicGlwZSIsImNvbXBsZXRlIiwiYWJvcnQiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJUQVJCQUxMX1VQTE9BREVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvcHVibGlzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCBQYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyB2YWxpZGF0aW9VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBhbGxvdywgZXhwZWN0SnNvbiwgbWVkaWEgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgQ2FsbGJhY2ssIENvbmZpZywgTWVyZ2VUYWdzLCBQYWNrYWdlLCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIERJU1RfVEFHUywgSEVBREVSUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi4vLi4vLi4vbGliL25vdGlmeSc7XG5pbXBvcnQgeyBpc1B1Ymxpc2hhYmxlUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IEVycm9yQ29kZSwgaGFzRGlmZk9uZUtleSwgaXNPYmplY3QsIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHtcbiAgJE5leHRGdW5jdGlvblZlcixcbiAgJFJlcXVlc3RFeHRlbmQsXG4gICRSZXNwb25zZUV4dGVuZCxcbiAgSUF1dGgsXG4gIElTdG9yYWdlSGFuZGxlcixcbn0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHN0YXIgZnJvbSAnLi9zdGFyJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86cHVibGlzaCcpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwdWJsaXNoKFxuICByb3V0ZXI6IFJvdXRlcixcbiAgYXV0aDogSUF1dGgsXG4gIHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcixcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoLCB7XG4gICAgYmVmb3JlQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgICBhZnRlckFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KFxuICAgICcvOnBhY2thZ2UvOl9yZXY/LzpyZXZpc2lvbj8nLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICBleHBlY3RKc29uLFxuICAgIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UsIGNvbmZpZywgYXV0aClcbiAgKTtcblxuICAvKipcbiAgICogVW4tcHVibGlzaGluZyBhbiBlbnRpcmUgcGFja2FnZS5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBoYXBwZW5zIHdoZW4gdGhlIGZpcnN0IGNhbGwgZGV0ZWN0IHRoZXJlIGlzIG9ubHkgb25lIHZlcnNpb24gcmVtYWluaW5nXG4gICAqIGluIHRoZSBtZXRhZGF0YSwgdGhlbiB0aGUgY2xpZW50IGRlY2lkZXMgdG8gREVMRVRFIHRoZSByZXNvdXJjZVxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMzA0IGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDEwNzZtcyAoZnJvbSBjYWNoZSlcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xOC1kOGViZTMwMjBiZDRhYzljIDIybXNcbiAgICovXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tcmV2LyonLCBjYW4oJ3VucHVibGlzaCcpLCB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UpKTtcblxuICAvLyByZW1vdmluZyBhIHRhcmJhbGxcbiAgcm91dGVyLmRlbGV0ZShcbiAgICAnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLy1yZXYvOnJldmlzaW9uJyxcbiAgICBjYW4oJ3VucHVibGlzaCcpLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSlcbiAgKTtcblxuICAvLyB1cGxvYWRpbmcgcGFja2FnZSB0YXJiYWxsXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS8tLzpmaWxlbmFtZS8qJyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBtZWRpYShIRUFERVJTLk9DVEVUX1NUUkVBTSksXG4gICAgdXBsb2FkUGFja2FnZVRhcmJhbGwoc3RvcmFnZSlcbiAgKTtcblxuICAvLyBhZGRpbmcgYSB2ZXJzaW9uXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS86dmVyc2lvbi8tdGFnLzp0YWcnLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICBleHBlY3RKc29uLFxuICAgIGFkZFZlcnNpb24oc3RvcmFnZSlcbiAgKTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaFBhY2thZ2Uoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLCBjb25maWc6IENvbmZpZywgYXV0aDogSUF1dGgpOiBhbnkge1xuICBjb25zdCBzdGFyQXBpID0gc3RhcihzdG9yYWdlKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdwdWJsaXNoaW5nIG9yIHVwZGF0aW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIC8qKlxuICAgICAqIFdyaXRlIHRhcmJhbGwgb2Ygc3RyZWFtIGRhdGEgZnJvbSBwYWNrYWdlIGNsaWVudHMuXG4gICAgICovXG4gICAgY29uc3QgY3JlYXRlVGFyYmFsbCA9IGZ1bmN0aW9uIChmaWxlbmFtZTogc3RyaW5nLCBkYXRhLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY2IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdzdWNjZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYigpO1xuICAgICAgfSk7XG4gICAgICAvLyB0aGlzIGlzIGR1bWIgYW5kIG1lbW9yeS1jb25zdW1pbmcsIGJ1dCB3aGF0IGNob2ljZXMgZG8gd2UgaGF2ZT9cbiAgICAgIC8vIGZsb3c6IHdlIG5lZWQgZmlyc3QgcmVmYWN0b3IgdGhpcyBmaWxlIGJlZm9yZSBkZWNpZGVzIHdoaWNoIHR5cGUgdXNlIGhlcmVcbiAgICAgIHN0cmVhbS5lbmQoQnVmZmVyLmZyb20oZGF0YS5kYXRhLCAnYmFzZTY0JykpO1xuICAgICAgc3RyZWFtLmRvbmUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQWRkIG5ldyBwYWNrYWdlIHZlcnNpb24gaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVZlcnNpb24gPSBmdW5jdGlvbiAodmVyc2lvbjogc3RyaW5nLCBtZXRhZGF0YTogVmVyc2lvbiwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmFkZFZlcnNpb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIG1ldGFkYXRhLCBudWxsLCBjYik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgdGFncyBpbiBzdG9yYWdlXG4gICAgICovXG4gICAgY29uc3QgYWRkVGFncyA9IGZ1bmN0aW9uICh0YWdzOiBNZXJnZVRhZ3MsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5tZXJnZVRhZ3MocGFja2FnZU5hbWUsIHRhZ3MsIGNiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2UgPSBmdW5jdGlvbiAoZXJyb3IsIG9rTWVzc2FnZSwgbWV0YWRhdGEpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQ29weTogUGFja2FnZSA9IHsgLi4ubWV0YWRhdGEgfTtcblxuICAgICAgY29uc3QgeyBfYXR0YWNobWVudHMsIHZlcnNpb25zIH0gPSBtZXRhZGF0YUNvcHk7XG5cbiAgICAgIC8vIGBucG0gc3RhcmAgd291bGRuJ3QgaGF2ZSBhdHRhY2htZW50c1xuICAgICAgLy8gYW5kIGBucG0gZGVwcmVjYXRlYCB3b3VsZCBoYXZlIGF0dGFjaG1lbnRzIGFzIGEgZW1wdHkgb2JqZWN0LCBpLmUge31cbiAgICAgIGlmIChfLmlzTmlsKF9hdHRhY2htZW50cykgfHwgSlNPTi5zdHJpbmdpZnkoX2F0dGFjaG1lbnRzKSA9PT0gJ3t9Jykge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBva01lc3NhZ2UsXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5wbS1yZWdpc3RyeS1jbGllbnQgMC4zKyBlbWJlZHMgdGFyYmFsbCBpbnRvIHRoZSBqc29uIHVwbG9hZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ucG0tcmVnaXN0cnktY2xpZW50L2NvbW1pdC9lOWZiZWI4YjY3ZjI0OTM5NGY3MzVjNzRlZjExZmU0NzIwZDQ2Y2EwXG4gICAgICAvLyBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vcmxpZHdrYS9zaW5vcGlhL2lzc3Vlcy8zMSwgZGVhbGluZyB3aXRoIGl0IGhlcmU6XG4gICAgICBjb25zdCBpc0ludmFsaWRCb2R5Rm9ybWF0ID1cbiAgICAgICAgaXNPYmplY3QoX2F0dGFjaG1lbnRzKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleShfYXR0YWNobWVudHMpIHx8XG4gICAgICAgIGlzT2JqZWN0KHZlcnNpb25zKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleSh2ZXJzaW9ucyk7XG5cbiAgICAgIGlmIChpc0ludmFsaWRCb2R5Rm9ybWF0KSB7XG4gICAgICAgIC8vIG5wbSBpcyBkb2luZyBzb21ldGhpbmcgc3RyYW5nZSBhZ2FpblxuICAgICAgICAvLyBpZiB0aGlzIGhhcHBlbnMgaW4gbm9ybWFsIGNpcmN1bXN0YW5jZXMsIHJlcG9ydCBpdCBhcyBhIGJ1Z1xuICAgICAgICBsb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lIH0sIGB3cm9uZyBwYWNrYWdlIGZvcm1hdCBvbiBwdWJsaXNoIGEgcGFja2FnZSBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgIT09IEhUVFBfU1RBVFVTLkNPTkZMSUNUKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXQgdGhpcyBwb2ludCBkb2N1bWVudCBpcyBlaXRoZXIgY3JlYXRlZCBvciBleGlzdGVkIGJlZm9yZVxuICAgICAgY29uc3QgW2ZpcnN0QXR0YWNobWVudEtleV0gPSBPYmplY3Qua2V5cyhfYXR0YWNobWVudHMpO1xuXG4gICAgICBjcmVhdGVUYXJiYWxsKFxuICAgICAgICBQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksXG4gICAgICAgIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLFxuICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB2ZXJzaW9uVG9QdWJsaXNoID0gT2JqZWN0LmtleXModmVyc2lvbnMpWzBdO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCA9IHZlcnNpb25zW3ZlcnNpb25Ub1B1Ymxpc2hdO1xuXG4gICAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9XG4gICAgICAgICAgICBfLmlzTmlsKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpID09PSBmYWxzZVxuICAgICAgICAgICAgICA/IFN0cmluZyh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKVxuICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWRkVGFncyhtZXRhZGF0YUNvcHlbRElTVF9UQUdTXSwgYXN5bmMgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KFxuICAgICAgICAgICAgICAgICAgbWV0YWRhdGFDb3B5LFxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgcmVxLnJlbW90ZV91c2VyLFxuICAgICAgICAgICAgICAgICAgYCR7bWV0YWRhdGFDb3B5Lm5hbWV9QCR7dmVyc2lvblRvUHVibGlzaH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH07XG5cbiAgICBpZiAoaXNQdWJsaXNoYWJsZVBhY2thZ2UocmVxLmJvZHkpID09PSBmYWxzZSAmJiBpc09iamVjdChyZXEuYm9keS51c2VycykpIHtcbiAgICAgIHJldHVybiBzdGFyQXBpKHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB2YWxpZGF0aW9VdGlscy5ub3JtYWxpemVNZXRhZGF0YShyZXEuYm9keSwgcGFja2FnZU5hbWUpO1xuICAgICAgLy8gY2hlY2sgX2F0dGFjaG1lbnRzIHRvIGRpc3Rpbmd1aXNoIHB1Ymxpc2ggYW5kIGRlcHJlY2F0ZVxuICAgICAgaWYgKFxuICAgICAgICByZXEucGFyYW1zLl9yZXYgfHxcbiAgICAgICAgKGlzUmVsYXRlZFRvRGVwcmVjYXRpb24ocmVxLmJvZHkpICYmIF8uaXNFbXB0eShyZXEuYm9keS5fYXR0YWNobWVudHMpKVxuICAgICAgKSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgLy8gd2UgY2hlY2sgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCBhbiB1cGRhdGUgaXMgYmFzaWNhbGx5IHJlbW92ZSB2ZXJzaW9uc1xuICAgICAgICBjb25zdCByZW1vdGUgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICAgIGF1dGguYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUgfSwgcmVtb3RlLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sIGBub3QgYWxsb3dlZCB0byB1bnB1Ymxpc2ggYSB2ZXJzaW9uIGZvciBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yYWdlLmNoYW5nZVBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCByZXEucGFyYW1zLnJldmlzaW9uLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ0hBTkdFRCwgbWV0YWRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhZGRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHN0b3JhZ2UuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ1JFQVRFRCwgbWV0YWRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCByZXZpc2lvbiB9ID0gcmVxLnBhcmFtcztcbiAgICBkZWJ1ZygncmVtb3ZpbmcgYSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgIHN0b3JhZ2UucmVtb3ZlVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgZGVidWcoJ3N1Y2Nlc3MgcmVtb3ZlIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG4vKipcbiAqIEFkZHMgYSBuZXcgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVmVyc2lvbihzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBQTBCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUUxQixNQUFNQSxLQUFLLEdBQUcsSUFBQUMsY0FBVSxFQUFDLG1CQUFtQixDQUFDO0FBRTlCLFNBQVNDLE9BQU8sQ0FDN0JDLE1BQWMsRUFDZEMsSUFBVyxFQUNYQyxPQUF3QixFQUN4QkMsTUFBYyxFQUNSO0VBQ04sTUFBTUMsR0FBRyxHQUFHLElBQUFDLGlCQUFLLEVBQUNKLElBQUksRUFBRTtJQUN0QkssU0FBUyxFQUFFLENBQUNDLE1BQU0sRUFBRUMsT0FBTyxLQUFLQyxjQUFNLENBQUNDLEtBQUssQ0FBQ0gsTUFBTSxFQUFFQyxPQUFPLENBQUM7SUFDN0RHLFFBQVEsRUFBRSxDQUFDSixNQUFNLEVBQUVDLE9BQU8s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
|
|
@@ -7,23 +7,23 @@ exports.default = _default;
|
|
|
7
7
|
var _cookies = _interopRequireDefault(require("cookies"));
|
|
8
8
|
var _express = _interopRequireDefault(require("express"));
|
|
9
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
|
+
var _middleware = require("@verdaccio/middleware");
|
|
10
11
|
var _utils = require("@verdaccio/utils");
|
|
11
12
|
var _authUtils = require("../../../lib/auth-utils");
|
|
12
13
|
var _constants = require("../../../lib/constants");
|
|
13
14
|
var _logger = require("../../../lib/logger");
|
|
14
15
|
var _utils2 = require("../../../lib/utils");
|
|
15
|
-
var _rateLimiter = require("../../rate-limiter");
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
function _default(route, auth, config) {
|
|
18
18
|
/* eslint new-cap:off */
|
|
19
19
|
const userRouter = _express.default.Router();
|
|
20
|
-
userRouter.get('/-/user/:org_couchdb_user', (0,
|
|
20
|
+
userRouter.get('/-/user/:org_couchdb_user', (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
|
|
21
21
|
res.status(_constants.HTTP_STATUS.OK);
|
|
22
22
|
next({
|
|
23
23
|
ok: (0, _utils.getAuthenticatedMessage)(req.remote_user.name)
|
|
24
24
|
});
|
|
25
25
|
});
|
|
26
|
-
userRouter.put('/-/user/:org_couchdb_user/:_rev?/:revision?', (0,
|
|
26
|
+
userRouter.put('/-/user/:org_couchdb_user/:_rev?/:revision?', (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
|
|
27
27
|
const {
|
|
28
28
|
name,
|
|
29
29
|
password
|
|
@@ -73,7 +73,7 @@ function _default(route, auth, config) {
|
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
|
-
userRouter.delete('/-/user/token/*', (0,
|
|
76
|
+
userRouter.delete('/-/user/token/*', (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
|
|
77
77
|
res.status(_constants.HTTP_STATUS.OK);
|
|
78
78
|
next({
|
|
79
79
|
ok: _constants.API_MESSAGE.LOGGED_OUT
|
|
@@ -92,4 +92,4 @@ function _default(route, auth, config) {
|
|
|
92
92
|
});
|
|
93
93
|
route.use(userRouter);
|
|
94
94
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZSIsImF1dGgiLCJjb25maWciLCJ1c2VyUm91dGVyIiwiZXhwcmVzcyIsIlJvdXRlciIsImdldCIsImxpbWl0ZXIiLCJ1c2VyUmF0ZUxpbWl0IiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJvayIsImdldEF1dGhlbnRpY2F0ZWRNZXNzYWdlIiwicmVtb3RlX3VzZXIiLCJuYW1lIiwicHV0IiwicGFzc3dvcmQiLCJib2R5IiwicmVtb3RlTmFtZSIsIl8iLCJpc05pbCIsImF1dGhlbnRpY2F0ZSIsImNhbGxiYWNrQXV0aGVudGljYXRlIiwiZXJyIiwidXNlciIsImxvZ2dlciIsImVycm9yIiwiRXJyb3JDb2RlIiwiZ2V0Q29kZSIsIlVOQVVUSE9SSVpFRCIsIkFQSV9FUlJPUiIsIkJBRF9VU0VSTkFNRV9QQVNTV09SRCIsInJlc3RvcmVkUmVtb3RlVXNlciIsImNyZWF0ZVJlbW90ZVVzZXIiLCJncm91cHMiLCJ0b2tlbiIsImdldEFwaVRva2VuIiwiQ1JFQVRFRCIsInNldCIsIkhFQURFUlMiLCJDQUNIRV9DT05UUk9MIiwidmFsaWRhdGVQYXNzd29yZCIsIkJBRF9SRVFVRVNUIiwiUEFTU1dPUkRfU0hPUlQiLCJhZGRfdXNlciIsIklOVEVSTkFMX0VSUk9SIiwibWVzc2FnZSIsImdldENvbmZsaWN0IiwidW5kZWZpbmVkIiwiZGVsZXRlIiwiQVBJX01FU1NBR0UiLCJMT0dHRURfT1VUIiwicG9zdCIsIkNvb2tpZXMiLCJjb29raWVzIiwiU3RyaW5nIiwiTWF0aCIsInJhbmRvbSIsImNyZWF0ZVNlc3Npb25Ub2tlbiIsInJvbGVzIiwidXNlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvdXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29va2llcyBmcm9tICdjb29raWVzJztcbmltcG9ydCBleHByZXNzLCB7IFJlc3BvbnNlLCBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IENvbmZpZywgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2Vzc2lvblRva2VuLCBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdXRpbHMnO1xuXG5pbXBvcnQgeyBjcmVhdGVSZW1vdGVVc2VyLCBnZXRBcGlUb2tlbiwgdmFsaWRhdGVQYXNzd29yZCB9IGZyb20gJy4uLy4uLy4uL2xpYi9hdXRoLXV0aWxzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBJQXV0aCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGxpbWl0ZXIgfSBmcm9tICcuLi8uLi9yYXRlLWxpbWl0ZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgYXV0aDogSUF1dGgsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIC8qIGVzbGludCBuZXctY2FwOm9mZiAqL1xuICBjb25zdCB1c2VyUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcblxuICB1c2VyUm91dGVyLmdldChcbiAgICAnLy0vdXNlci86b3JnX2NvdWNoZGJfdXNlcicsXG4gICAgbGltaXRlcihjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBvazogZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UocmVxLnJlbW90ZV91c2VyLm5hbWUpLFxuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHVzZXJSb3V0ZXIucHV0KFxuICAgICcvLS91c2VyLzpvcmdfY291Y2hkYl91c2VyLzpfcmV2Py86cmV2aXNpb24/JyxcbiAgICBsaW1pdGVyKGNvbmZpZz8udXNlclJhdGVMaW1pdCksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgICAgY29uc3QgcmVtb3RlTmFtZSA9IHJlcS5yZW1vdGVfdXNlci5uYW1lO1xuXG4gICAgICBpZiAoXy5pc05pbChyZW1vdGVOYW1lKSA9PT0gZmFsc2UgJiYgXy5pc05pbChuYW1lKSA9PT0gZmFsc2UgJiYgcmVtb3RlTmFtZSA9PT0gbmFtZSkge1xuICAgICAgICBhdXRoLmF1dGhlbnRpY2F0ZShcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNhbGxiYWNrQXV0aGVudGljYXRlKGVyciwgdXNlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgeyBuYW1lLCBlcnIgfSxcbiAgICAgICAgICAgICAgICAnYXV0aGVudGljYXRpbmcgZm9yIHVzZXIgQHt1c2VybmFtZX0gZmFpbGVkLiBFcnJvcjogQHtlcnIubWVzc2FnZX0nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgICAgICAgIEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlVOQVVUSE9SSVpFRCwgQVBJX0VSUk9SLkJBRF9VU0VSTkFNRV9QQVNTV09SRClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzdG9yZWRSZW1vdGVVc2VyOiBSZW1vdGVVc2VyID0gY3JlYXRlUmVtb3RlVXNlcihuYW1lLCB1c2VyLmdyb3VwcyB8fCBbXSk7XG4gICAgICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGdldEFwaVRva2VuKGF1dGgsIGNvbmZpZywgcmVzdG9yZWRSZW1vdGVVc2VyLCBwYXNzd29yZCk7XG5cbiAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICByZXMuc2V0KEhFQURFUlMuQ0FDSEVfQ09OVFJPTCwgJ25vLWNhY2hlLCBuby1zdG9yZScpO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgICAgICBvazogZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UocmVxLnJlbW90ZV91c2VyLm5hbWUpLFxuICAgICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWxpZGF0ZVBhc3N3b3JkKHBhc3N3b3JkKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNULCBBUElfRVJST1IuUEFTU1dPUkRfU0hPUlQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGguYWRkX3VzZXIobmFtZSwgcGFzc3dvcmQsIGFzeW5jIGZ1bmN0aW9uIChlcnIsIHVzZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSBIVFRQX1NUQVRVUy5CQURfUkVRVUVTVCAmJiBlcnIuc3RhdHVzIDwgSFRUUF9TVEFUVVMuSU5URVJOQUxfRVJST1IpIHtcbiAgICAgICAgICAgICAgLy8gV2l0aCBucG0gcmVnaXN0ZXJpbmcgaXMgdGhlIHNhbWUgYXMgbG9nZ2luZyBpbixcbiAgICAgICAgICAgICAgLy8gYW5kIG5wbSBhY2NlcHRzIG9ubHkgYW4gNDA5IGVycm9yLlxuICAgICAgICAgICAgICAvLyBTbywgY2hhbmdpbmcgc3RhdHVzIGNvZGUgaGVyZS5cbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoXG4gICAgICAgICAgICAgICAgRXJyb3JDb2RlLmdldENvZGUoZXJyLnN0YXR1cywgZXJyLm1lc3NhZ2UpIHx8IEVycm9yQ29kZS5nZXRDb25mbGljdChlcnIubWVzc2FnZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdG9rZW4gPVxuICAgICAgICAgICAgbmFtZSAmJiBwYXNzd29yZCA/IGF3YWl0IGdldEFwaVRva2VuKGF1dGgsIGNvbmZpZywgdXNlciwgcGFzc3dvcmQpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gdXNlcjtcbiAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgICAgIHJlcy5zZXQoSEVBREVSUy5DQUNIRV9DT05UUk9MLCAnbm8tY2FjaGUsIG5vLXN0b3JlJyk7XG4gICAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgICAgb2s6IGB1c2VyICcke3JlcS5ib2R5Lm5hbWV9JyBjcmVhdGVkYCxcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgdXNlclJvdXRlci5kZWxldGUoXG4gICAgJy8tL3VzZXIvdG9rZW4vKicsXG4gICAgbGltaXRlcihjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuTE9HR0VEX09VVCxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICAvLyBwbGFjZWhvbGRlciAnY2F1c2UgbnBtIHJlcXVpcmUgdG8gYmUgYXV0aGVudGljYXRlZCB0byBwdWJsaXNoXG4gIC8vIHdlIGRvIG5vdCBkbyBhbnkgcmVhbCBhdXRoZW50aWNhdGlvbiB5ZXRcbiAgdXNlclJvdXRlci5wb3N0KFxuICAgICcvX3Nlc3Npb24nLFxuICAgIENvb2tpZXMuZXhwcmVzcygpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgcmVzLmNvb2tpZXMuc2V0KCdBdXRoU2Vzc2lvbicsIFN0cmluZyhNYXRoLnJhbmRvbSgpKSwgY3JlYXRlU2Vzc2lvblRva2VuKCkpO1xuXG4gICAgICBuZXh0KHtcbiAgICAgICAgb2s6IHRydWUsXG4gICAgICAgIG5hbWU6ICdzb21lYm9keScsXG4gICAgICAgIHJvbGVzOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS51c2UodXNlclJvdXRlcik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUE2QztBQUU5QixrQkFBVUEsS0FBYSxFQUFFQyxJQUFXLEVBQUVDLE1BQWMsRUFBUTtFQUN6RTtFQUNBLE1BQU1DLFVBQVUsR0FBR0MsZ0JB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
|
|
95
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZSIsImF1dGgiLCJjb25maWciLCJ1c2VyUm91dGVyIiwiZXhwcmVzcyIsIlJvdXRlciIsImdldCIsInJhdGVMaW1pdCIsInVzZXJSYXRlTGltaXQiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJPSyIsIm9rIiwiZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UiLCJyZW1vdGVfdXNlciIsIm5hbWUiLCJwdXQiLCJwYXNzd29yZCIsImJvZHkiLCJyZW1vdGVOYW1lIiwiXyIsImlzTmlsIiwiYXV0aGVudGljYXRlIiwiY2FsbGJhY2tBdXRoZW50aWNhdGUiLCJlcnIiLCJ1c2VyIiwibG9nZ2VyIiwiZXJyb3IiLCJFcnJvckNvZGUiLCJnZXRDb2RlIiwiVU5BVVRIT1JJWkVEIiwiQVBJX0VSUk9SIiwiQkFEX1VTRVJOQU1FX1BBU1NXT1JEIiwicmVzdG9yZWRSZW1vdGVVc2VyIiwiY3JlYXRlUmVtb3RlVXNlciIsImdyb3VwcyIsInRva2VuIiwiZ2V0QXBpVG9rZW4iLCJDUkVBVEVEIiwic2V0IiwiSEVBREVSUyIsIkNBQ0hFX0NPTlRST0wiLCJ2YWxpZGF0ZVBhc3N3b3JkIiwiQkFEX1JFUVVFU1QiLCJQQVNTV09SRF9TSE9SVCIsImFkZF91c2VyIiwiSU5URVJOQUxfRVJST1IiLCJtZXNzYWdlIiwiZ2V0Q29uZmxpY3QiLCJ1bmRlZmluZWQiLCJkZWxldGUiLCJBUElfTUVTU0FHRSIsIkxPR0dFRF9PVVQiLCJwb3N0IiwiQ29va2llcyIsImNvb2tpZXMiLCJTdHJpbmciLCJNYXRoIiwicmFuZG9tIiwiY3JlYXRlU2Vzc2lvblRva2VuIiwicm9sZXMiLCJ1c2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS91c2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb29raWVzIGZyb20gJ2Nvb2tpZXMnO1xuaW1wb3J0IGV4cHJlc3MsIHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgcmF0ZUxpbWl0IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IENvbmZpZywgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2Vzc2lvblRva2VuLCBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdXRpbHMnO1xuXG5pbXBvcnQgeyBjcmVhdGVSZW1vdGVVc2VyLCBnZXRBcGlUb2tlbiwgdmFsaWRhdGVQYXNzd29yZCB9IGZyb20gJy4uLy4uLy4uL2xpYi9hdXRoLXV0aWxzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBJQXV0aCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IElBdXRoLCBjb25maWc6IENvbmZpZyk6IHZvaWQge1xuICAvKiBlc2xpbnQgbmV3LWNhcDpvZmYgKi9cbiAgY29uc3QgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5cbiAgdXNlclJvdXRlci5nZXQoXG4gICAgJy8tL3VzZXIvOm9yZ19jb3VjaGRiX3VzZXInLFxuICAgIHJhdGVMaW1pdChjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBvazogZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UocmVxLnJlbW90ZV91c2VyLm5hbWUpLFxuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHVzZXJSb3V0ZXIucHV0KFxuICAgICcvLS91c2VyLzpvcmdfY291Y2hkYl91c2VyLzpfcmV2Py86cmV2aXNpb24/JyxcbiAgICByYXRlTGltaXQoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgY29uc3QgeyBuYW1lLCBwYXNzd29yZCB9ID0gcmVxLmJvZHk7XG4gICAgICBjb25zdCByZW1vdGVOYW1lID0gcmVxLnJlbW90ZV91c2VyLm5hbWU7XG5cbiAgICAgIGlmIChfLmlzTmlsKHJlbW90ZU5hbWUpID09PSBmYWxzZSAmJiBfLmlzTmlsKG5hbWUpID09PSBmYWxzZSAmJiByZW1vdGVOYW1lID09PSBuYW1lKSB7XG4gICAgICAgIGF1dGguYXV0aGVudGljYXRlKFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgYXN5bmMgZnVuY3Rpb24gY2FsbGJhY2tBdXRoZW50aWNhdGUoZXJyLCB1c2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICB7IG5hbWUsIGVyciB9LFxuICAgICAgICAgICAgICAgICdhdXRoZW50aWNhdGluZyBmb3IgdXNlciBAe3VzZXJuYW1lfSBmYWlsZWQuIEVycm9yOiBAe2Vyci5tZXNzYWdlfSdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoXG4gICAgICAgICAgICAgICAgRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVELCBBUElfRVJST1IuQkFEX1VTRVJOQU1FX1BBU1NXT1JEKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN0b3JlZFJlbW90ZVVzZXI6IFJlbW90ZVVzZXIgPSBjcmVhdGVSZW1vdGVVc2VyKG5hbWUsIHVzZXIuZ3JvdXBzIHx8IFtdKTtcbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgZ2V0QXBpVG9rZW4oYXV0aCwgY29uZmlnLCByZXN0b3JlZFJlbW90ZVVzZXIsIHBhc3N3b3JkKTtcblxuICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgICAgIHJlcy5zZXQoSEVBREVSUy5DQUNIRV9DT05UUk9MLCAnbm8tY2FjaGUsIG5vLXN0b3JlJyk7XG4gICAgICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgICAgIG9rOiBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZShyZXEucmVtb3RlX3VzZXIubmFtZSksXG4gICAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbGlkYXRlUGFzc3dvcmQocGFzc3dvcmQpID09PSBmYWxzZSkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuQkFEX1JFUVVFU1QsIEFQSV9FUlJPUi5QQVNTV09SRF9TSE9SVCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXV0aC5hZGRfdXNlcihuYW1lLCBwYXNzd29yZCwgYXN5bmMgZnVuY3Rpb24gKGVyciwgdXNlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID49IEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNUICYmIGVyci5zdGF0dXMgPCBIVFRQX1NUQVRVUy5JTlRFUk5BTF9FUlJPUikge1xuICAgICAgICAgICAgICAvLyBXaXRoIG5wbSByZWdpc3RlcmluZyBpcyB0aGUgc2FtZSBhcyBsb2dnaW5nIGluLFxuICAgICAgICAgICAgICAvLyBhbmQgbnBtIGFjY2VwdHMgb25seSBhbiA0MDkgZXJyb3IuXG4gICAgICAgICAgICAgIC8vIFNvLCBjaGFuZ2luZyBzdGF0dXMgY29kZSBoZXJlLlxuICAgICAgICAgICAgICByZXR1cm4gbmV4dChcbiAgICAgICAgICAgICAgICBFcnJvckNvZGUuZ2V0Q29kZShlcnIuc3RhdHVzLCBlcnIubWVzc2FnZSkgfHwgRXJyb3JDb2RlLmdldENvbmZsaWN0KGVyci5tZXNzYWdlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0b2tlbiA9XG4gICAgICAgICAgICBuYW1lICYmIHBhc3N3b3JkID8gYXdhaXQgZ2V0QXBpVG9rZW4oYXV0aCwgY29uZmlnLCB1c2VyLCBwYXNzd29yZCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgcmVzLnNldChIRUFERVJTLkNBQ0hFX0NPTlRST0wsICduby1jYWNoZSwgbm8tc3RvcmUnKTtcbiAgICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgICBvazogYHVzZXIgJyR7cmVxLmJvZHkubmFtZX0nIGNyZWF0ZWRgLFxuICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB1c2VyUm91dGVyLmRlbGV0ZShcbiAgICAnLy0vdXNlci90b2tlbi8qJyxcbiAgICByYXRlTGltaXQoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5PSyk7XG4gICAgICBuZXh0KHtcbiAgICAgICAgb2s6IEFQSV9NRVNTQUdFLkxPR0dFRF9PVVQsXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgLy8gcGxhY2Vob2xkZXIgJ2NhdXNlIG5wbSByZXF1aXJlIHRvIGJlIGF1dGhlbnRpY2F0ZWQgdG8gcHVibGlzaFxuICAvLyB3ZSBkbyBub3QgZG8gYW55IHJlYWwgYXV0aGVudGljYXRpb24geWV0XG4gIHVzZXJSb3V0ZXIucG9zdChcbiAgICAnL19zZXNzaW9uJyxcbiAgICBDb29raWVzLmV4cHJlc3MoKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIHJlcy5jb29raWVzLnNldCgnQXV0aFNlc3Npb24nLCBTdHJpbmcoTWF0aC5yYW5kb20oKSksIGNyZWF0ZVNlc3Npb25Ub2tlbigpKTtcblxuICAgICAgbmV4dCh7XG4gICAgICAgIG9rOiB0cnVlLFxuICAgICAgICBuYW1lOiAnc29tZWJvZHknLFxuICAgICAgICByb2xlczogW10sXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUudXNlKHVzZXJSb3V0ZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBK0M7QUFHaEMsa0JBQVVBLEtBQWEsRUFBRUMsSUFBVyxFQUFFQyxNQUFjLEVBQVE7RUFDekU7RUFDQSxNQUFNQyxV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
|
|
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
var _express = require("express");
|
|
8
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
+
var _middleware = require("@verdaccio/middleware");
|
|
9
10
|
var _authUtils = require("../../../../lib/auth-utils");
|
|
10
11
|
var _constants = require("../../../../lib/constants");
|
|
11
12
|
var _utils = require("../../../../lib/utils");
|
|
12
|
-
var _rateLimiter = require("../../../rate-limiter");
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
14
|
function _default(auth, config) {
|
|
15
15
|
const profileRoute = (0, _express.Router)(); /* eslint new-cap: 0 */
|
|
@@ -25,7 +25,7 @@ function _default(auth, config) {
|
|
|
25
25
|
fullname: ''
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
profileRoute.get('/user', (0,
|
|
28
|
+
profileRoute.get('/user', (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
|
|
29
29
|
if (_lodash.default.isNil(req.remote_user.name) === false) {
|
|
30
30
|
return next(buildProfile(req.remote_user.name));
|
|
31
31
|
}
|
|
@@ -34,7 +34,7 @@ function _default(auth, config) {
|
|
|
34
34
|
message: _constants.API_ERROR.MUST_BE_LOGGED
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
|
-
profileRoute.post('/user', (0,
|
|
37
|
+
profileRoute.post('/user', (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
|
|
38
38
|
if (_lodash.default.isNil(req.remote_user.name)) {
|
|
39
39
|
res.status(_constants.HTTP_STATUS.UNAUTHORIZED);
|
|
40
40
|
return next({
|
|
@@ -72,4 +72,4 @@ function _default(auth, config) {
|
|
|
72
72
|
});
|
|
73
73
|
return profileRoute;
|
|
74
74
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhdXRoIiwiY29uZmlnIiwicHJvZmlsZVJvdXRlIiwiUm91dGVyIiwiYnVpbGRQcm9maWxlIiwibmFtZSIsInRmYSIsImVtYWlsIiwiZW1haWxfdmVyaWZpZWQiLCJjcmVhdGVkIiwidXBkYXRlZCIsImNpZHJfd2hpdGVsaXN0IiwiZnVsbG5hbWUiLCJnZXQiLCJyYXRlTGltaXQiLCJ1c2VyUmF0ZUxpbWl0IiwicmVxIiwicmVzIiwibmV4dCIsIl8iLCJpc05pbCIsInJlbW90ZV91c2VyIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJVTkFVVEhPUklaRUQiLCJtZXNzYWdlIiwiQVBJX0VSUk9SIiwiTVVTVF9CRV9MT0dHRUQiLCJwb3N0IiwicGFzc3dvcmQiLCJib2R5IiwidmFsaWRhdGVQYXNzd29yZCIsIm5ldyIsIkVycm9yQ29kZSIsImdldENvZGUiLCJQQVNTV09SRF9TSE9SVCIsImNoYW5nZVBhc3N3b3JkIiwib2xkIiwiZXJyIiwiaXNVcGRhdGVkIiwiaXNOdWxsIiwiZ2V0Q29uZmxpY3QiLCJnZXRJbnRlcm5hbEVycm9yIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwiU0VSVklDRV9VTkFWQUlMQUJMRSIsIlNVUFBPUlRfRVJST1JTIiwiVEZBX0RJU0FCTEVEIiwiSU5URVJOQUxfRVJST1IiLCJBUFBfRVJST1IiLCJQUk9GSUxFX0VSUk9SIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvdjEvcHJvZmlsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNwb25zZSwgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyByYXRlTGltaXQgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZVBhc3N3b3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL2F1dGgtdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUFBfRVJST1IsIEhUVFBfU1RBVFVTLCBTVVBQT1JUX0VSUk9SUyB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCBJQXV0aCB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9maWxlIHtcbiAgdGZhOiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGVtYWlsX3ZlcmlmaWVkOiBib29sZWFuO1xuICBjcmVhdGVkOiBzdHJpbmc7XG4gIHVwZGF0ZWQ6IHN0cmluZztcbiAgY2lkcl93aGl0ZWxpc3Q6IHN0cmluZ1tdIHwgbnVsbDtcbiAgZnVsbG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGF1dGg6IElBdXRoLCBjb25maWcpOiBSb3V0ZXIge1xuICBjb25zdCBwcm9maWxlUm91dGUgPSBSb3V0ZXIoKTsgLyogZXNsaW50IG5ldy1jYXA6IDAgKi9cbiAgZnVuY3Rpb24gYnVpbGRQcm9maWxlKG5hbWU6IHN0cmluZyk6IFByb2ZpbGUge1xuICAgIHJldHVybiB7XG4gICAgICB0ZmE6IGZhbHNlLFxuICAgICAgbmFtZSxcbiAgICAgIGVtYWlsOiAnJyxcbiAgICAgIGVtYWlsX3ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgIGNyZWF0ZWQ6ICcnLFxuICAgICAgdXBkYXRlZDogJycsXG4gICAgICBjaWRyX3doaXRlbGlzdDogbnVsbCxcbiAgICAgIGZ1bGxuYW1lOiAnJyxcbiAgICB9O1xuICB9XG5cbiAgcHJvZmlsZVJvdXRlLmdldChcbiAgICAnL3VzZXInLFxuICAgIHJhdGVMaW1pdChjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBpZiAoXy5pc05pbChyZXEucmVtb3RlX3VzZXIubmFtZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGJ1aWxkUHJvZmlsZShyZXEucmVtb3RlX3VzZXIubmFtZSkpO1xuICAgICAgfVxuXG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLlVOQVVUSE9SSVpFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG1lc3NhZ2U6IEFQSV9FUlJPUi5NVVNUX0JFX0xPR0dFRCxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICBwcm9maWxlUm91dGUucG9zdChcbiAgICAnL3VzZXInLFxuICAgIHJhdGVMaW1pdChjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBpZiAoXy5pc05pbChyZXEucmVtb3RlX3VzZXIubmFtZSkpIHtcbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQpO1xuICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgbWVzc2FnZTogQVBJX0VSUk9SLk1VU1RfQkVfTE9HR0VELFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBwYXNzd29yZCwgdGZhIH0gPSByZXEuYm9keTtcbiAgICAgIGNvbnN0IHsgbmFtZSB9ID0gcmVxLnJlbW90ZV91c2VyO1xuXG4gICAgICBpZiAoXy5pc05pbChwYXNzd29yZCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh2YWxpZGF0ZVBhc3N3b3JkKHBhc3N3b3JkLm5ldykgPT09IGZhbHNlKSB7XG4gICAgICAgICAgLyogZXNsaW50IG5ldy1jYXA6b2ZmICovXG4gICAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVELCBBUElfRVJST1IuUEFTU1dPUkRfU0hPUlQpKTtcbiAgICAgICAgICAvKiBlc2xpbnQgbmV3LWNhcDpvZmYgKi9cbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGguY2hhbmdlUGFzc3dvcmQoXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBwYXNzd29yZC5vbGQsXG4gICAgICAgICAgcGFzc3dvcmQubmV3LFxuICAgICAgICAgIChlcnIsIGlzVXBkYXRlZCk6ICROZXh0RnVuY3Rpb25WZXIgPT4ge1xuICAgICAgICAgICAgaWYgKF8uaXNOdWxsKGVycikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgICAgICAgIEVycm9yQ29kZS5nZXRDb2RlKGVyci5zdGF0dXMsIGVyci5tZXNzYWdlKSB8fCBFcnJvckNvZGUuZ2V0Q29uZmxpY3QoZXJyLm1lc3NhZ2UpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1VwZGF0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoYnVpbGRQcm9maWxlKHJlcS5yZW1vdGVfdXNlci5uYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0SW50ZXJuYWxFcnJvcihBUElfRVJST1IuSU5URVJOQUxfU0VSVkVSX0VSUk9SKSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChfLmlzTmlsKHRmYSkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgIEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlNFUlZJQ0VfVU5BVkFJTEFCTEUsIFNVUFBPUlRfRVJST1JTLlRGQV9ESVNBQkxFRClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SLCBBUFBfRVJST1IuUFJPRklMRV9FUlJPUikpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICByZXR1cm4gcHJvZmlsZVJvdXRlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBa0Q7QUFjbkMsa0JBQVVBLElBQVcsRUFBRUMsTUFBTSxFQUFVO0VBQ3BELE1BQU1DLFlBQVksR0FBRyxJQUFBQyxlQUFNLEdBQUUsQ0FBQyxDQUFDO0VBQy9CLFNBQVNDLFlBQVksQ0FBQ0MsSUFBWSxFQUFXO0lBQzNDLE9BQU87TUFDTEMsR0FBRyxFQUFFLEtBQUs7TUFDVkQsSUFBSTtNQUNKRSxLQUFLLEVBQUUsRUFBRTtNQUNUQyxjQUFjLEVBQUUsS0FBSztNQUNyQkMsT0FBTyxFQUFFLEVBQUU7TUFDWEMsT0FBTyxFQUFFLEVBQUU7TUFDWEMsY0FBYyxFQUFFLElBQUk7TUFDcEJDLFFBQVEsRUFBRTtJQUNaLENBQUM7RUFDSDtFQUVBVixZQUFZLENBQUNXLEdBQUcsQ0FDZCxPQUFPLEVBQ1AsSUFBQUMscUJBQVMsRUFBQ2IsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVjLGFBQWEsQ0FBQyxFQUNoQyxVQUFVQyxHQUFtQixFQUFFQyxHQUFhLEVBQUVDLElBQXNCLEVBQVE7SUFDMUUsSUFBSUMsZUFBQyxDQUFDQyxLQUFLLENBQUNKLEdBQUcsQ0FBQ0ssV0FBVyxDQUFDaEIsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFO01BQzNDLE9BQU9hLElBQUksQ0FBQ2QsWUFBWSxDQUFDWSxHQUFHLENBQUNLLFdBQVcsQ0FBQ2hCLElBQUksQ0FBQyxDQUFDO0lBQ2pEO0lBRUFZLEdBQUcsQ0FBQ0ssTUFBTSxDQUFDQyxzQkFBVyxDQUFDQyxZQUFZLENBQUM7SUFDcEMsT0FBT04sSUFBSSxDQUFDO01BQ1ZPLE9BQU8sRUFBRUMsb0JBQVMsQ0FBQ0M7SUFDckIsQ0FBQyxDQUFDO0VBQ0osQ0FB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
|
|
@@ -7,12 +7,12 @@ exports.default = _default;
|
|
|
7
7
|
var _debug = _interopRequireDefault(require("debug"));
|
|
8
8
|
var _express = require("express");
|
|
9
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
|
+
var _middleware = require("@verdaccio/middleware");
|
|
10
11
|
var _utils = require("@verdaccio/utils");
|
|
11
12
|
var _authUtils = require("../../../../lib/auth-utils");
|
|
12
13
|
var _constants = require("../../../../lib/constants");
|
|
13
14
|
var _logger = require("../../../../lib/logger");
|
|
14
15
|
var _utils2 = require("../../../../lib/utils");
|
|
15
|
-
var _rateLimiter = require("../../../rate-limiter");
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
18
18
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -29,7 +29,7 @@ function normalizeToken(token) {
|
|
|
29
29
|
// https://github.com/npm/npm-profile/blob/latest/lib/index.js
|
|
30
30
|
function _default(auth, storage, config) {
|
|
31
31
|
const tokenRoute = (0, _express.Router)(); /* eslint new-cap: 0 */
|
|
32
|
-
tokenRoute.get('/tokens', (0,
|
|
32
|
+
tokenRoute.get('/tokens', (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), async function (req, res, next) {
|
|
33
33
|
const {
|
|
34
34
|
name
|
|
35
35
|
} = req.remote_user;
|
|
@@ -56,7 +56,7 @@ function _default(auth, storage, config) {
|
|
|
56
56
|
}
|
|
57
57
|
return next(_utils2.ErrorCode.getUnauthorized());
|
|
58
58
|
});
|
|
59
|
-
tokenRoute.post('/tokens', (0,
|
|
59
|
+
tokenRoute.post('/tokens', (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
|
|
60
60
|
const {
|
|
61
61
|
password,
|
|
62
62
|
readonly,
|
|
@@ -115,7 +115,7 @@ function _default(auth, storage, config) {
|
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
117
|
});
|
|
118
|
-
tokenRoute.delete('/tokens/token/:tokenKey', (0,
|
|
118
|
+
tokenRoute.delete('/tokens/token/:tokenKey', (0, _middleware.rateLimit)(config === null || config === void 0 ? void 0 : config.userRateLimit), async (req, res, next) => {
|
|
119
119
|
const {
|
|
120
120
|
params: {
|
|
121
121
|
tokenKey
|
|
@@ -144,4 +144,4 @@ function _default(auth, storage, config) {
|
|
|
144
144
|
});
|
|
145
145
|
return tokenRoute;
|
|
146
146
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJ1ZyIsImJ1aWxkRGVidWciLCJub3JtYWxpemVUb2tlbiIsInRva2VuIiwiY3JlYXRlZCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImF1dGgiLCJzdG9yYWdlIiwiY29uZmlnIiwidG9rZW5Sb3V0ZSIsIlJvdXRlciIsImdldCIsImxpbWl0ZXIiLCJ1c2VyUmF0ZUxpbWl0IiwicmVxIiwicmVzIiwibmV4dCIsIm5hbWUiLCJyZW1vdGVfdXNlciIsIl8iLCJpc05pbCIsInRva2VucyIsInJlYWRUb2tlbnMiLCJ1c2VyIiwidG90YWxUb2tlbnMiLCJsZW5ndGgiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIk9LIiwib2JqZWN0cyIsIm1hcCIsInVybHMiLCJlcnJvciIsImxvZ2dlciIsIm1zZyIsIkVycm9yQ29kZSIsImdldENvZGUiLCJJTlRFUk5BTF9FUlJPUiIsIm1lc3NhZ2UiLCJnZXRVbmF1dGhvcml6ZWQiLCJwb3N0IiwicGFzc3dvcmQiLCJyZWFkb25seSIsImNpZHJfd2hpdGVsaXN0IiwiYm9keSIsImlzQm9vbGVhbiIsImlzQXJyYXkiLCJCQURfREFUQSIsIlNVUFBPUlRfRVJST1JTIiwiUEFSQU1FVEVSU19OT1RfVkFMSUQiLCJhdXRoZW50aWNhdGUiLCJlcnIiLCJlcnJvckNvZGUiLCJVTkFVVEhPUklaRUQiLCJpc0Z1bmN0aW9uIiwic2F2ZVRva2VuIiwiTk9UX0lNUExFTUVOVEVEIiwiU1RPUkFHRV9OT1RfSU1QTEVNRU5UIiwiZ2V0QXBpVG9rZW4iLCJrZXkiLCJzdHJpbmdUb01ENSIsIm1hc2tlZFRva2VuIiwibWFzayIsImdldFRpbWUiLCJjaWRyIiwic2V0IiwiSEVBREVSUyIsIkNBQ0hFX0NPTlRST0wiLCJkZWxldGUiLCJwYXJhbXMiLCJ0b2tlbktleSIsImRlbGV0ZVRva2VuIiwiaW5mbyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3YxL3Rva2VuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IFJlc3BvbnNlLCBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IENvbmZpZywgUmVtb3RlVXNlciwgVG9rZW4gfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IHN0cmluZ1RvTUQ1IH0gZnJvbSAnQHZlcmRhY2Npby91dGlscyc7XG5cbmltcG9ydCB7IGdldEFwaVRva2VuIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL2F1dGgtdXRpbHMnO1xuaW1wb3J0IHsgSEVBREVSUywgSFRUUF9TVEFUVVMsIFNVUFBPUlRfRVJST1JTIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSwgbWFzayB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgSUF1dGgsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGxpbWl0ZXIgfSBmcm9tICcuLi8uLi8uLi9yYXRlLWxpbWl0ZXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2Npbzp0b2tlbicpO1xuZXhwb3J0IHR5cGUgTm9ybWFsaXplVG9rZW4gPSBUb2tlbiAmIHtcbiAgY3JlYXRlZDogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gbm9ybWFsaXplVG9rZW4odG9rZW46IFRva2VuKTogTm9ybWFsaXplVG9rZW4ge1xuICByZXR1cm4ge1xuICAgIC4uLnRva2VuLFxuICAgIGNyZWF0ZWQ6IG5ldyBEYXRlKHRva2VuLmNyZWF0ZWQpLnRvSVNPU3RyaW5nKCksXG4gIH07XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbnBtLXByb2ZpbGUvYmxvYi9sYXRlc3QvbGliL2luZGV4LmpzXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoYXV0aDogSUF1dGgsIHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlciwgY29uZmlnOiBDb25maWcpOiBSb3V0ZXIge1xuICBjb25zdCB0b2tlblJvdXRlID0gUm91dGVyKCk7IC8qIGVzbGludCBuZXctY2FwOiAwICovXG4gIHRva2VuUm91dGUuZ2V0KFxuICAgICcvdG9rZW5zJyxcbiAgICBsaW1pdGVyKGNvbmZpZz8udXNlclJhdGVMaW1pdCksXG4gICAgYXN5bmMgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpIHtcbiAgICAgIGNvbnN0IHsgbmFtZSB9ID0gcmVxLnJlbW90ZV91c2VyO1xuXG4gICAgICBpZiAoXy5pc05pbChuYW1lKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCBzdG9yYWdlLnJlYWRUb2tlbnMoeyB1c2VyOiBuYW1lIH0pO1xuICAgICAgICAgIGNvbnN0IHRvdGFsVG9rZW5zID0gdG9rZW5zLmxlbmd0aDtcbiAgICAgICAgICBkZWJ1ZygndG9rZW4gbGlzdCByZXRyaWV2ZWQ6ICVvJywgdG90YWxUb2tlbnMpO1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuT0spO1xuICAgICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICAgIG9iamVjdHM6IHRva2Vucy5tYXAobm9ybWFsaXplVG9rZW4pLFxuICAgICAgICAgICAgdXJsczoge1xuICAgICAgICAgICAgICBuZXh0OiAnJywgLy8gVE9ETzogcGFnaW5hdGlvbj9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKHsgZXJyb3I6IGVycm9yLm1zZyB9LCAndG9rZW4gbGlzdCBoYXMgZmFpbGVkOiBAe2Vycm9yfScpO1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SLCBlcnJvci5tZXNzYWdlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRVbmF1dGhvcml6ZWQoKSk7XG4gICAgfVxuICApO1xuXG4gIHRva2VuUm91dGUucG9zdChcbiAgICAnL3Rva2VucycsXG4gICAgbGltaXRlcihjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKSB7XG4gICAgICBjb25zdCB7IHBhc3N3b3JkLCByZWFkb25seSwgY2lkcl93aGl0ZWxpc3QgfSA9IHJlcS5ib2R5O1xuICAgICAgY29uc3QgeyBuYW1lIH0gPSByZXEucmVtb3RlX3VzZXI7XG5cbiAgICAgIGlmICghXy5pc0Jvb2xlYW4ocmVhZG9ubHkpIHx8ICFfLmlzQXJyYXkoY2lkcl93aGl0ZWxpc3QpKSB7XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkJBRF9EQVRBLCBTVVBQT1JUX0VSUk9SUy5QQVJBTUVURVJTX05PVF9WQUxJRCkpO1xuICAgICAgfVxuXG4gICAgICBhdXRoLmF1dGhlbnRpY2F0ZShuYW1lLCBwYXNzd29yZCwgYXN5bmMgKGVyciwgdXNlcjogUmVtb3RlVXNlcikgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZXJyLm1lc3NhZ2UgPyBIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQgOiBIVFRQX1NUQVRVUy5JTlRFUk5BTF9FUlJPUjtcbiAgICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Q29kZShlcnJvckNvZGUsIGVyci5tZXNzYWdlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuXG4gICAgICAgIGlmICghXy5pc0Z1bmN0aW9uKHN0b3JhZ2Uuc2F2ZVRva2VuKSkge1xuICAgICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgICAgRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuTk9UX0lNUExFTUVOVEVELCBTVVBQT1JUX0VSUk9SUy5TVE9SQUdFX05PVF9JTVBMRU1FTlQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRBcGlUb2tlbihhdXRoLCBjb25maWcsIHVzZXIsIHBhc3N3b3JkKTtcbiAgICAgICAgICBjb25zdCBrZXkgPSBzdHJpbmdUb01ENSh0b2tlbik7XG4gICAgICAgICAgLy8gVE9ETzogdXNlIGEgdXRpbGl0eSBoZXJlXG4gICAgICAgICAgY29uc3QgbWFza2VkVG9rZW4gPSBtYXNrKHRva2VuLCA1KTtcbiAgICAgICAgICBjb25zdCBjcmVhdGVkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBjaWRyX3doaXRlbGlzdDogaXMgbm90IGJlaW5nIHVzZWQsIHdlIHBhc3MgaXQgdGhyb3VnaFxuICAgICAgICAgICAqIHRva2VuOiB3ZSBkbyBub3Qgc3RvcmUgdGhlIHJlYWwgdG9rZW4gKGl0IGlzIGdlbmVyYXRlZCBvbmNlIGFuZCByZXRyaWV2ZWQgdG8gdGhlIHVzZXIpLCBqdXN0IGEgbWFzayBvZiBpdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjb25zdCBzYXZlVG9rZW46IFRva2VuID0ge1xuICAgICAgICAgICAgdXNlcjogbmFtZSxcbiAgICAgICAgICAgIHRva2VuOiBtYXNrZWRUb2tlbixcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGNpZHI6IGNpZHJfd2hpdGVsaXN0LFxuICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICBjcmVhdGVkLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBhd2FpdCBzdG9yYWdlLnNhdmVUb2tlbihzYXZlVG9rZW4pO1xuICAgICAgICAgIGRlYnVnKCd0b2tlbiAlbyB3YXMgY3JlYXRlZCBmb3IgdXNlciAlbycsIGtleSwgbmFtZSk7XG4gICAgICAgICAgcmVzLnNldChIRUFERVJTLkNBQ0hFX0NPTlRST0wsICduby1jYWNoZSwgbm8tc3RvcmUnKTtcbiAgICAgICAgICByZXR1cm4gbmV4dChcbiAgICAgICAgICAgIG5vcm1hbGl6ZVRva2VuKHtcbiAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgIHVzZXI6IG5hbWUsXG4gICAgICAgICAgICAgIGtleTogc2F2ZVRva2VuLmtleSxcbiAgICAgICAgICAgICAgY2lkcjogY2lkcl93aGl0ZWxpc3QsXG4gICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgICBjcmVhdGVkOiBzYXZlVG9rZW4uY3JlYXRlZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvcjogZXJyb3IubXNnIH0sICd0b2tlbiBjcmVhdGlvbiBoYXMgZmFpbGVkOiBAe2Vycm9yfScpO1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SLCBlcnJvci5tZXNzYWdlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICB0b2tlblJvdXRlLmRlbGV0ZShcbiAgICAnL3Rva2Vucy90b2tlbi86dG9rZW5LZXknLFxuICAgIGxpbWl0ZXIoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSxcbiAgICBhc3luYyAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcikgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwYXJhbXM6IHsgdG9rZW5LZXkgfSxcbiAgICAgIH0gPSByZXE7XG4gICAgICBjb25zdCB7IG5hbWUgfSA9IHJlcS5yZW1vdGVfdXNlcjtcblxuICAgICAgaWYgKF8uaXNOaWwobmFtZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlYnVnKCclbyBoYXMgcmVxdWVzdGVkIHJlbW92ZSBhIHRva2VuJywgbmFtZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgc3RvcmFnZS5kZWxldGVUb2tlbihuYW1lLCB0b2tlbktleSk7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oeyB0b2tlbktleSwgbmFtZSB9LCAndG9rZW4gaWQgQHt0b2tlbktleX0gd2FzIHJldm9rZWQgZm9yIHVzZXIgQHtuYW1lfScpO1xuICAgICAgICAgIHJldHVybiBuZXh0KHt9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvcjogZXJyb3IubXNnIH0sICd0b2tlbiBjcmVhdGlvbiBoYXMgZmFpbGVkOiBAe2Vycm9yfScpO1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SLCBlcnJvci5tZXNzYWdlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRVbmF1dGhvcml6ZWQoKSk7XG4gICAgfVxuICApO1xuXG4gIHJldHVybiB0b2tlblJvdXRlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBZ0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWhELE1BQU1BLEtBQUssR0FBRyxJQUFBQyxjQUFVLEVBQUMsaUJBQWlCLENBQUM7QUFLM0MsU0FBU0MsY0FBYyxDQUFDQyxLQUFZLEVBQWtCO0VBQ3BELHVDQUNLQSxLQUFLO0lB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
|
|
147
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJ1ZyIsImJ1aWxkRGVidWciLCJub3JtYWxpemVUb2tlbiIsInRva2VuIiwiY3JlYXRlZCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImF1dGgiLCJzdG9yYWdlIiwiY29uZmlnIiwidG9rZW5Sb3V0ZSIsIlJvdXRlciIsImdldCIsInJhdGVMaW1pdCIsInVzZXJSYXRlTGltaXQiLCJyZXEiLCJyZXMiLCJuZXh0IiwibmFtZSIsInJlbW90ZV91c2VyIiwiXyIsImlzTmlsIiwidG9rZW5zIiwicmVhZFRva2VucyIsInVzZXIiLCJ0b3RhbFRva2VucyIsImxlbmd0aCIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJvYmplY3RzIiwibWFwIiwidXJscyIsImVycm9yIiwibG9nZ2VyIiwibXNnIiwiRXJyb3JDb2RlIiwiZ2V0Q29kZSIsIklOVEVSTkFMX0VSUk9SIiwibWVzc2FnZSIsImdldFVuYXV0aG9yaXplZCIsInBvc3QiLCJwYXNzd29yZCIsInJlYWRvbmx5IiwiY2lkcl93aGl0ZWxpc3QiLCJib2R5IiwiaXNCb29sZWFuIiwiaXNBcnJheSIsIkJBRF9EQVRBIiwiU1VQUE9SVF9FUlJPUlMiLCJQQVJBTUVURVJTX05PVF9WQUxJRCIsImF1dGhlbnRpY2F0ZSIsImVyciIsImVycm9yQ29kZSIsIlVOQVVUSE9SSVpFRCIsImlzRnVuY3Rpb24iLCJzYXZlVG9rZW4iLCJOT1RfSU1QTEVNRU5URUQiLCJTVE9SQUdFX05PVF9JTVBMRU1FTlQiLCJnZXRBcGlUb2tlbiIsImtleSIsInN0cmluZ1RvTUQ1IiwibWFza2VkVG9rZW4iLCJtYXNrIiwiZ2V0VGltZSIsImNpZHIiLCJzZXQiLCJIRUFERVJTIiwiQ0FDSEVfQ09OVFJPTCIsImRlbGV0ZSIsInBhcmFtcyIsInRva2VuS2V5IiwiZGVsZXRlVG9rZW4iLCJpbmZvIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvdjEvdG9rZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgcmF0ZUxpbWl0IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IENvbmZpZywgUmVtb3RlVXNlciwgVG9rZW4gfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IHN0cmluZ1RvTUQ1IH0gZnJvbSAnQHZlcmRhY2Npby91dGlscyc7XG5cbmltcG9ydCB7IGdldEFwaVRva2VuIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL2F1dGgtdXRpbHMnO1xuaW1wb3J0IHsgSEVBREVSUywgSFRUUF9TVEFUVVMsIFNVUFBPUlRfRVJST1JTIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSwgbWFzayB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgSUF1dGgsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86dG9rZW4nKTtcbmV4cG9ydCB0eXBlIE5vcm1hbGl6ZVRva2VuID0gVG9rZW4gJiB7XG4gIGNyZWF0ZWQ6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRva2VuKHRva2VuOiBUb2tlbik6IE5vcm1hbGl6ZVRva2VuIHtcbiAgcmV0dXJuIHtcbiAgICAuLi50b2tlbixcbiAgICBjcmVhdGVkOiBuZXcgRGF0ZSh0b2tlbi5jcmVhdGVkKS50b0lTT1N0cmluZygpLFxuICB9O1xufVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbnBtL25wbS1wcm9maWxlL2Jsb2IvbGF0ZXN0L2xpYi9pbmRleC5qc1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGF1dGg6IElBdXRoLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGNvbmZpZzogQ29uZmlnKTogUm91dGVyIHtcbiAgY29uc3QgdG9rZW5Sb3V0ZSA9IFJvdXRlcigpOyAvKiBlc2xpbnQgbmV3LWNhcDogMCAqL1xuICB0b2tlblJvdXRlLmdldChcbiAgICAnL3Rva2VucycsXG4gICAgcmF0ZUxpbWl0KGNvbmZpZz8udXNlclJhdGVMaW1pdCksXG4gICAgYXN5bmMgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpIHtcbiAgICAgIGNvbnN0IHsgbmFtZSB9ID0gcmVxLnJlbW90ZV91c2VyO1xuXG4gICAgICBpZiAoXy5pc05pbChuYW1lKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCBzdG9yYWdlLnJlYWRUb2tlbnMoeyB1c2VyOiBuYW1lIH0pO1xuICAgICAgICAgIGNvbnN0IHRvdGFsVG9rZW5zID0gdG9rZW5zLmxlbmd0aDtcbiAgICAgICAgICBkZWJ1ZygndG9rZW4gbGlzdCByZXRyaWV2ZWQ6ICVvJywgdG90YWxUb2tlbnMpO1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuT0spO1xuICAgICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICAgIG9iamVjdHM6IHRva2Vucy5tYXAobm9ybWFsaXplVG9rZW4pLFxuICAgICAgICAgICAgdXJsczoge1xuICAgICAgICAgICAgICBuZXh0OiAnJywgLy8gVE9ETzogcGFnaW5hdGlvbj9cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKHsgZXJyb3I6IGVycm9yLm1zZyB9LCAndG9rZW4gbGlzdCBoYXMgZmFpbGVkOiBAe2Vycm9yfScpO1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SLCBlcnJvci5tZXNzYWdlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRVbmF1dGhvcml6ZWQoKSk7XG4gICAgfVxuICApO1xuXG4gIHRva2VuUm91dGUucG9zdChcbiAgICAnL3Rva2VucycsXG4gICAgcmF0ZUxpbWl0KGNvbmZpZz8udXNlclJhdGVMaW1pdCksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpIHtcbiAgICAgIGNvbnN0IHsgcGFzc3dvcmQsIHJlYWRvbmx5LCBjaWRyX3doaXRlbGlzdCB9ID0gcmVxLmJvZHk7XG4gICAgICBjb25zdCB7IG5hbWUgfSA9IHJlcS5yZW1vdGVfdXNlcjtcblxuICAgICAgaWYgKCFfLmlzQm9vbGVhbihyZWFkb25seSkgfHwgIV8uaXNBcnJheShjaWRyX3doaXRlbGlzdCkpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuQkFEX0RBVEEsIFNVUFBPUlRfRVJST1JTLlBBUkFNRVRFUlNfTk9UX1ZBTElEKSk7XG4gICAgICB9XG5cbiAgICAgIGF1dGguYXV0aGVudGljYXRlKG5hbWUsIHBhc3N3b3JkLCBhc3luYyAoZXJyLCB1c2VyOiBSZW1vdGVVc2VyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBlcnIubWVzc2FnZSA/IEhUVFBfU1RBVFVTLlVOQVVUSE9SSVpFRCA6IEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SO1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKGVycm9yQ29kZSwgZXJyLm1lc3NhZ2UpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG5cbiAgICAgICAgaWYgKCFfLmlzRnVuY3Rpb24oc3RvcmFnZS5zYXZlVG9rZW4pKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoXG4gICAgICAgICAgICBFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5OT1RfSU1QTEVNRU5URUQsIFNVUFBPUlRfRVJST1JTLlNUT1JBR0VfTk9UX0lNUExFTUVOVClcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGdldEFwaVRva2VuKGF1dGgsIGNvbmZpZywgdXNlciwgcGFzc3dvcmQpO1xuICAgICAgICAgIGNvbnN0IGtleSA9IHN0cmluZ1RvTUQ1KHRva2VuKTtcbiAgICAgICAgICAvLyBUT0RPOiB1c2UgYSB1dGlsaXR5IGhlcmVcbiAgICAgICAgICBjb25zdCBtYXNrZWRUb2tlbiA9IG1hc2sodG9rZW4sIDUpO1xuICAgICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIGNpZHJfd2hpdGVsaXN0OiBpcyBub3QgYmVpbmcgdXNlZCwgd2UgcGFzcyBpdCB0aHJvdWdoXG4gICAgICAgICAgICogdG9rZW46IHdlIGRvIG5vdCBzdG9yZSB0aGUgcmVhbCB0b2tlbiAoaXQgaXMgZ2VuZXJhdGVkIG9uY2UgYW5kIHJldHJpZXZlZCB0byB0aGUgdXNlciksIGp1c3QgYSBtYXNrIG9mIGl0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNvbnN0IHNhdmVUb2tlbjogVG9rZW4gPSB7XG4gICAgICAgICAgICB1c2VyOiBuYW1lLFxuICAgICAgICAgICAgdG9rZW46IG1hc2tlZFRva2VuLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgY2lkcjogY2lkcl93aGl0ZWxpc3QsXG4gICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIGNyZWF0ZWQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGF3YWl0IHN0b3JhZ2Uuc2F2ZVRva2VuKHNhdmVUb2tlbik7XG4gICAgICAgICAgZGVidWcoJ3Rva2VuICVvIHdhcyBjcmVhdGVkIGZvciB1c2VyICVvJywga2V5LCBuYW1lKTtcbiAgICAgICAgICByZXMuc2V0KEhFQURFUlMuQ0FDSEVfQ09OVFJPTCwgJ25vLWNhY2hlLCBuby1zdG9yZScpO1xuICAgICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgICAgbm9ybWFsaXplVG9rZW4oe1xuICAgICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgICAgdXNlcjogbmFtZSxcbiAgICAgICAgICAgICAga2V5OiBzYXZlVG9rZW4ua2V5LFxuICAgICAgICAgICAgICBjaWRyOiBjaWRyX3doaXRlbGlzdCxcbiAgICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICAgIGNyZWF0ZWQ6IHNhdmVUb2tlbi5jcmVhdGVkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcih7IGVycm9yOiBlcnJvci5tc2cgfSwgJ3Rva2VuIGNyZWF0aW9uIGhhcyBmYWlsZWQ6IEB7ZXJyb3J9Jyk7XG4gICAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuSU5URVJOQUxfRVJST1IsIGVycm9yLm1lc3NhZ2UpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHRva2VuUm91dGUuZGVsZXRlKFxuICAgICcvdG9rZW5zL3Rva2VuLzp0b2tlbktleScsXG4gICAgcmF0ZUxpbWl0KGNvbmZpZz8udXNlclJhdGVMaW1pdCksXG4gICAgYXN5bmMgKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFyYW1zOiB7IHRva2VuS2V5IH0sXG4gICAgICB9ID0gcmVxO1xuICAgICAgY29uc3QgeyBuYW1lIH0gPSByZXEucmVtb3RlX3VzZXI7XG5cbiAgICAgIGlmIChfLmlzTmlsKG5hbWUpID09PSBmYWxzZSkge1xuICAgICAgICBkZWJ1ZygnJW8gaGFzIHJlcXVlc3RlZCByZW1vdmUgYSB0b2tlbicsIG5hbWUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHN0b3JhZ2UuZGVsZXRlVG9rZW4obmFtZSwgdG9rZW5LZXkpO1xuICAgICAgICAgIGxvZ2dlci5pbmZvKHsgdG9rZW5LZXksIG5hbWUgfSwgJ3Rva2VuIGlkIEB7dG9rZW5LZXl9IHdhcyByZXZva2VkIGZvciB1c2VyIEB7bmFtZX0nKTtcbiAgICAgICAgICByZXR1cm4gbmV4dCh7fSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKHsgZXJyb3I6IGVycm9yLm1zZyB9LCAndG9rZW4gY3JlYXRpb24gaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5JTlRFUk5BTF9FUlJPUiwgZXJyb3IubWVzc2FnZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0VW5hdXRob3JpemVkKCkpO1xuICAgIH1cbiAgKTtcblxuICByZXR1cm4gdG9rZW5Sb3V0ZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQXdEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUd4RCxNQUFNQSxLQUFLLEdBQUcsSUFBQUMsY0FBVSxFQUFDLGlCQUFpQixDQUFDO0FBSzNDLFNBQVNDLGNBQWMsQ0FBQ0MsS0FBWSxFQUFrQjtFQUNwRCx1Q0FD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
|