verdaccio 5.23.1 → 5.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -12,7 +12,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
12
12
|
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; }
|
|
13
13
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
14
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
15
|
-
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); }
|
|
15
|
+
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); } // @flow
|
|
16
16
|
const debug = (0, _debug.default)('verdaccio:star');
|
|
17
17
|
function _default(storage) {
|
|
18
18
|
const validateInputs = (newUsers, localUsers, username, isStar) => {
|
|
@@ -70,4 +70,4 @@ function _default(storage) {
|
|
|
70
70
|
});
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfY29uc3RhbnRzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsImRlYnVnIiwiYnVpbGREZWJ1ZyIsIl9kZWZhdWx0Iiwic3RvcmFnZSIsInZhbGlkYXRlSW5wdXRzIiwibmV3VXNlcnMiLCJsb2NhbFVzZXJzIiwidXNlcm5hbWUiLCJpc1N0YXIiLCJpc0V4aXN0bG9jYWxVc2VycyIsIl8iLCJpc05pbCIsInJlcSIsIm5leHQiLCJuYW1lIiwicGFyYW1zIiwicGFja2FnZSIsImFmdGVyQ2hhbmdlUGFja2FnZSIsImVyciIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJzdWNjZXNzIiwiZ2V0UGFja2FnZSIsImNhbGxiYWNrIiwiaW5mbyIsIm5ld1N0YXJVc2VyIiwiYm9keSIsIlVTRVJTIiwicmVtb3RlVXNlcm5hbWUiLCJyZW1vdGVfdXNlciIsImxvY2FsU3RhclVzZXJzIiwiaW5jbHVkZXMiLCJ1c2VycyIsInJlZHVjZSIsImNoYW5nZVBhY2thZ2UiLCJfcmV2Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvc3Rhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEhUVFBfU1RBVFVTLCBVU0VSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86c3RhcicpO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKFxuICBzdG9yYWdlOiBTdG9yYWdlXG4pOiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcikgPT4gdm9pZCB7XG4gIGNvbnN0IHZhbGlkYXRlSW5wdXRzID0gKG5ld1VzZXJzLCBsb2NhbFVzZXJzLCB1c2VybmFtZSwgaXNTdGFyKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFeGlzdGxvY2FsVXNlcnMgPSBfLmlzTmlsKGxvY2FsVXNlcnNbdXNlcm5hbWVdKSA9PT0gZmFsc2U7XG4gICAgaWYgKGlzU3RhciAmJiBpc0V4aXN0bG9jYWxVc2VycyAmJiBsb2NhbFVzZXJzW3VzZXJuYW1lXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmIGlzRXhpc3Rsb2NhbFVzZXJzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmICFpc0V4aXN0bG9jYWxVc2Vycykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkID0+
|
|
73
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfY29uc3RhbnRzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsImRlYnVnIiwiYnVpbGREZWJ1ZyIsIl9kZWZhdWx0Iiwic3RvcmFnZSIsInZhbGlkYXRlSW5wdXRzIiwibmV3VXNlcnMiLCJsb2NhbFVzZXJzIiwidXNlcm5hbWUiLCJpc1N0YXIiLCJpc0V4aXN0bG9jYWxVc2VycyIsIl8iLCJpc05pbCIsInJlcSIsIm5leHQiLCJuYW1lIiwicGFyYW1zIiwicGFja2FnZSIsImFmdGVyQ2hhbmdlUGFja2FnZSIsImVyciIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJzdWNjZXNzIiwiZ2V0UGFja2FnZSIsImNhbGxiYWNrIiwiaW5mbyIsIm5ld1N0YXJVc2VyIiwiYm9keSIsIlVTRVJTIiwicmVtb3RlVXNlcm5hbWUiLCJyZW1vdGVfdXNlciIsImxvY2FsU3RhclVzZXJzIiwiaW5jbHVkZXMiLCJ1c2VycyIsInJlZHVjZSIsImNoYW5nZVBhY2thZ2UiLCJfcmV2Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvc3Rhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEhUVFBfU1RBVFVTLCBVU0VSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86c3RhcicpO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKFxuICBzdG9yYWdlOiBTdG9yYWdlXG4pOiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcikgPT4gdm9pZCB7XG4gIGNvbnN0IHZhbGlkYXRlSW5wdXRzID0gKG5ld1VzZXJzLCBsb2NhbFVzZXJzLCB1c2VybmFtZSwgaXNTdGFyKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFeGlzdGxvY2FsVXNlcnMgPSBfLmlzTmlsKGxvY2FsVXNlcnNbdXNlcm5hbWVdKSA9PT0gZmFsc2U7XG4gICAgaWYgKGlzU3RhciAmJiBpc0V4aXN0bG9jYWxVc2VycyAmJiBsb2NhbFVzZXJzW3VzZXJuYW1lXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmIGlzRXhpc3Rsb2NhbFVzZXJzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmICFpc0V4aXN0bG9jYWxVc2Vycykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkID0+IHtcbiAgICBjb25zdCBuYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdzdGFycmluZyBhIHBhY2thZ2UgZm9yICVvJywgbmFtZSk7XG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2VQYWNrYWdlID0gZnVuY3Rpb24gKGVycj86IEVycm9yKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lLFxuICAgICAgcmVxLFxuICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlcnIsIGluZm8pIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3U3RhclVzZXIgPSByZXEuYm9keVtVU0VSU107XG4gICAgICAgIGNvbnN0IHJlbW90ZVVzZXJuYW1lID0gcmVxLnJlbW90ZV91c2VyLm5hbWU7XG4gICAgICAgIGNvbnN0IGxvY2FsU3RhclVzZXJzID0gaW5mb1tVU0VSU107XG4gICAgICAgIC8vIENoZWNrIGlzIHN0YXIgb3IgdW5zdGFyXG4gICAgICAgIGNvbnN0IGlzU3RhciA9IE9iamVjdC5rZXlzKG5ld1N0YXJVc2VyKS5pbmNsdWRlcyhyZW1vdGVVc2VybmFtZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBfLmlzTmlsKGxvY2FsU3RhclVzZXJzKSA9PT0gZmFsc2UgJiZcbiAgICAgICAgICB2YWxpZGF0ZUlucHV0cyhuZXdTdGFyVXNlciwgbG9jYWxTdGFyVXNlcnMsIHJlbW90ZVVzZXJuYW1lLCBpc1N0YXIpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBhZnRlckNoYW5nZVBhY2thZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VycyA9IGlzU3RhclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5sb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgW3JlbW90ZVVzZXJuYW1lXTogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IF8ucmVkdWNlKFxuICAgICAgICAgICAgICBsb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgKHVzZXJzLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gcmVtb3RlVXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIHVzZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJzO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKG5hbWUsIHsgLi4uaW5mbywgdXNlcnMgfSwgcmVxLmJvZHkuX3JldiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlUGFja2FnZShlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FB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
|
package/build/lib/auth.js
CHANGED
|
@@ -15,6 +15,8 @@ var _constants = require("./constants");
|
|
|
15
15
|
var _logger = require("./logger");
|
|
16
16
|
var _utils2 = require("./utils");
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
+
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; }
|
|
19
|
+
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; }
|
|
18
20
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
19
21
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
20
22
|
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); }
|
|
@@ -36,7 +38,19 @@ class Auth {
|
|
|
36
38
|
config,
|
|
37
39
|
logger: this.logger
|
|
38
40
|
};
|
|
39
|
-
|
|
41
|
+
let authConf = _objectSpread({}, config.auth);
|
|
42
|
+
if (authConf !== null && authConf !== void 0 && authConf.htpasswd) {
|
|
43
|
+
// special case for htpasswd plugin, the v6 version uses bcrypt by default
|
|
44
|
+
// 5.x enforces crypt to avoid breaking changes, but is highly recommended using
|
|
45
|
+
// bcrypt instead.
|
|
46
|
+
if (!authConf.htpasswd.algorithm) {
|
|
47
|
+
authConf.htpasswd.algorithm = 'crypt';
|
|
48
|
+
this.logger.info(
|
|
49
|
+
// eslint-disable-next-line max-len
|
|
50
|
+
'the "crypt" algorithm is deprecated consider switch to "bcrypt" in the configuration file. Read the documentation for additional details');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return (0, _pluginLoader.default)(config, authConf, pluginOptions, plugin => {
|
|
40
54
|
const {
|
|
41
55
|
authenticate,
|
|
42
56
|
allow_access,
|
|
@@ -471,4 +485,4 @@ class Auth {
|
|
|
471
485
|
}
|
|
472
486
|
var _default = Auth;
|
|
473
487
|
exports.default = _default;
|
|
474
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfY29uZmlnIiwiX3NpZ25hdHVyZSIsIl91dGlscyIsIl9wbHVnaW5Mb2FkZXIiLCJfYXV0aFV0aWxzIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhcmciLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiZGVidWciLCJidWlsZERlYnVnIiwiQXV0aCIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwibG9nZ2VyIiwic2VjcmV0IiwicGx1Z2lucyIsIl9sb2FkUGx1Z2luIiwiX2FwcGx5RGVmYXVsdFBsdWdpbnMiLCJwbHVnaW5PcHRpb25zIiwibG9hZFBsdWdpbiIsImF1dGgiLCJwbHVnaW4iLCJhdXRoZW50aWNhdGUiLCJhbGxvd19hY2Nlc3MiLCJhbGxvd19wdWJsaXNoIiwicHVzaCIsImdldERlZmF1bHRQbHVnaW5zIiwiY2hhbmdlUGFzc3dvcmQiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwibmV3UGFzc3dvcmQiLCJjYiIsInZhbGlkUGx1Z2lucyIsIl8iLCJmaWx0ZXIiLCJpc0Z1bmN0aW9uIiwiaXNFbXB0eSIsIkVycm9yQ29kZSIsImdldEludGVybmFsRXJyb3IiLCJTVVBQT1JUX0VSUk9SUyIsIlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSIsImlzTmlsIiwiZXJyIiwicHJvZmlsZSIsImVycm9yIiwiaW5mbyIsInNsaWNlIiwic2VsZiIsIm5leHQiLCJzaGlmdCIsImdyb3VwcyIsImxlbmd0aCIsImlzU3RyaW5nIiwiaXNHcm91cFZhbGlkIiwiaXNBcnJheSIsIkFQSV9FUlJPUiIsIkJBRF9GT1JNQVRfVVNFUl9HUk9VUCIsImNyZWF0ZVJlbW90ZVVzZXIiLCJhZGRfdXNlciIsInVzZXIiLCJtZXRob2QiLCJ3YXJuIiwib2siLCJtZXNzYWdlIiwicGFja2FnZU5hbWUiLCJwYWNrYWdlVmVyc2lvbiIsImNhbGxiYWNrIiwicGtnQWxsb3dBY2NlcyIsIm5hbWUiLCJ2ZXJzaW9uIiwicGtnIiwiYXNzaWduIiwiZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyIsInBhY2thZ2VzIiwiYWxsb3dfdW5wdWJsaXNoIiwiYXJndW1lbnRzIiwiaXNFcnJvciIsImFwaUpXVG1pZGRsZXdhcmUiLCJoZWxwZXJzIiwiY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlciIsInJlcSIsIl9uZXh0IiwicGF1c2UiLCJyZXN1bWUiLCJyZW1vdGVfdXNlciIsIl9pc1JlbW90ZVVzZXJWYWxpZCIsImF1dGhvcml6YXRpb24iLCJoZWFkZXJzIiwiaXNBdXRoSGVhZGVyVmFsaWQiLCJnZXRCYWRSZXF1ZXN0IiwiQkFEX0FVVEhfSEVBREVSIiwic2VjdXJpdHkiLCJnZXRTZWN1cml0eSIsImlzQUVTTGVnYWN5IiwiX2hhbmRsZUFFU01pZGRsZXdhcmUiLCJfaGFuZGxlSldUQVBJTWlkZGxld2FyZSIsInNjaGVtZSIsInRva2VuIiwicGFyc2VBdXRoVG9rZW5IZWFkZXIiLCJ0b1VwcGVyQ2FzZSIsIlRPS0VOX0JBU0lDIiwiY3JlZGVudGlhbHMiLCJjb252ZXJ0UGF5bG9hZFRvQmFzZTY0IiwidG9TdHJpbmciLCJwYXJzZUJhc2ljUGF5bG9hZCIsImdldE1pZGRsZXdhcmVDcmVkZW50aWFscyIsImdldEZvcmJpZGRlbiIsIkJBRF9VU0VSTkFNRV9QQVNTV09SRCIsImlzVW5kZWZpbmVkIiwid2ViVUlKV1RtaWRkbGV3YXJlIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsInNlbmQiLCJyZXBsYWNlIiwiVE9LRU5fQkVBUkVSIiwidmVyaWZ5SldUUGF5bG9hZCIsImp3dEVuY3J5cHQiLCJzaWduT3B0aW9ucyIsInJlYWxfZ3JvdXBzIiwicmVhbEdyb3Vwc1ZhbGlkYXRlZCIsImdyb3VwZWRHcm91cHMiLCJBcnJheSIsImZyb20iLCJTZXQiLCJjb25jYXQiLCJwYXlsb2FkIiwic2lnblBheWxvYWQiLCJhZXNFbmNyeXB0IiwiYnVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9hdXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlciwgY3JlYXRlUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vY29uZmlnJztcbmltcG9ydCB7IFZlcmRhY2Npb0Vycm9yLCBwbHVnaW5VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBhZXNFbmNyeXB0RGVwcmVjYXRlZCBhcyBhZXNFbmNyeXB0LCBzaWduUGF5bG9hZCB9IGZyb20gJ0B2ZXJkYWNjaW8vc2lnbmF0dXJlJztcbmltcG9ydCB7XG4gIEFsbG93QWNjZXNzLFxuICBDYWxsYmFjayxcbiAgQ29uZmlnLFxuICBKV1RTaWduT3B0aW9ucyxcbiAgTG9nZ2VyLFxuICBQYWNrYWdlQWNjZXNzLFxuICBSZW1vdGVVc2VyLFxuICBTZWN1cml0eSxcbn0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBnZXRNYXRjaGVkUGFja2FnZXNTcGVjIH0gZnJvbSAnQHZlcmRhY2Npby91dGlscyc7XG5cbmltcG9ydCBsb2FkUGx1Z2luIGZyb20gJy4uL2xpYi9wbHVnaW4tbG9hZGVyJztcbmltcG9ydCB7ICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQsIEFFU1BheWxvYWQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZXREZWZhdWx0UGx1Z2lucyxcbiAgZ2V0TWlkZGxld2FyZUNyZWRlbnRpYWxzLFxuICBnZXRTZWN1cml0eSxcbiAgaXNBRVNMZWdhY3ksXG4gIGlzQXV0aEhlYWRlclZhbGlkLFxuICBwYXJzZUF1dGhUb2tlbkhlYWRlcixcbiAgcGFyc2VCYXNpY1BheWxvYWQsXG4gIHZlcmlmeUpXVFBheWxvYWQsXG59IGZyb20gJy4vYXV0aC11dGlscyc7XG5pbXBvcnQgeyBBUElfRVJST1IsIFNVUFBPUlRfRVJST1JTLCBUT0tFTl9CQVNJQywgVE9LRU5fQkVBUkVSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBjb252ZXJ0UGF5bG9hZFRvQmFzZTY0IH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOmF1dGgnKTtcblxuY2xhc3MgQXV0aCB7XG4gIHB1YmxpYyBjb25maWc6IENvbmZpZztcbiAgcHVibGljIGxvZ2dlcjogTG9nZ2VyO1xuICBwdWJsaWMgc2VjcmV0OiBzdHJpbmc7XG4gIHB1YmxpYyBwbHVnaW5zOiBwbHVnaW5VdGlscy5BdXRoPENvbmZpZz5bXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29uZmlnOiBDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLnNlY3JldCA9IGNvbmZpZy5zZWNyZXQ7XG4gICAgdGhpcy5wbHVnaW5zID0gdGhpcy5fbG9hZFBsdWdpbihjb25maWcpO1xuICAgIHRoaXMuX2FwcGx5RGVmYXVsdFBsdWdpbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRQbHVnaW4oY29uZmlnOiBDb25maWcpOiBwbHVnaW5VdGlscy5BdXRoPENvbmZpZz5bXSB7XG4gICAgY29uc3QgcGx1Z2luT3B0aW9ucyA9IHtcbiAgICAgIGNvbmZpZyxcbiAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgfTtcblxuICAgIHJldHVybiBsb2FkUGx1Z2luPHBsdWdpblV0aWxzLkF1dGg8Q29uZmlnPj4oXG4gICAgICBjb25maWcsXG4gICAgICBjb25maWcuYXV0aCxcbiAgICAgIHBsdWdpbk9wdGlvbnMsXG4gICAgICAocGx1Z2luOiBwbHVnaW5VdGlscy5BdXRoPENvbmZpZz4pOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3QgeyBhdXRoZW50aWNhdGUsIGFsbG93X2FjY2VzcywgYWxsb3dfcHVibGlzaCB9ID0gcGx1Z2luO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBhdXRoZW50aWNhdGUgfHwgYWxsb3dfYWNjZXNzIHx8IGFsbG93X3B1Ymxpc2g7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5RGVmYXVsdFBsdWdpbnMoKTogdm9pZCB7XG4gICAgdGhpcy5wbHVnaW5zLnB1c2goZ2V0RGVmYXVsdFBsdWdpbnModGhpcy5sb2dnZXIpKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VQYXNzd29yZChcbiAgICB1c2VybmFtZTogc3RyaW5nLFxuICAgIHBhc3N3b3JkOiBzdHJpbmcsIC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICAgIG5ld1Bhc3N3b3JkOiBzdHJpbmcsIC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICAgIGNiOiBDYWxsYmFja1xuICApOiB2b2lkIHtcbiAgICBjb25zdCB2YWxpZFBsdWdpbnMgPSBfLmZpbHRlcih0aGlzLnBsdWdpbnMsIChwbHVnaW4pID0+IF8uaXNGdW5jdGlvbihwbHVnaW4uY2hhbmdlUGFzc3dvcmQpKTtcblxuICAgIGlmIChfLmlzRW1wdHkodmFsaWRQbHVnaW5zKSkge1xuICAgICAgcmV0dXJuIGNiKEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKFNVUFBPUlRfRVJST1JTLlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSkpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHZhbGlkUGx1Z2lucykge1xuICAgICAgaWYgKF8uaXNOaWwocGx1Z2luKSB8fCBfLmlzRnVuY3Rpb24ocGx1Z2luLmNoYW5nZVBhc3N3b3JkKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZGVidWcoJ2F1dGggcGx1Z2luIGRvZXMgbm90IGltcGxlbWVudCBjaGFuZ2VQYXNzd29yZCwgdHJ5aW5nIG5leHQgb25lJyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ3VwZGF0aW5nIHBhc3N3b3JkIGZvciAlbycsIHVzZXJuYW1lKTtcbiAgICAgICAgcGx1Z2luLmNoYW5nZVBhc3N3b3JkISh1c2VybmFtZSwgcGFzc3dvcmQsIG5ld1Bhc3N3b3JkLCAoZXJyLCBwcm9maWxlKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgIHsgdXNlcm5hbWUsIGVyciB9LFxuICAgICAgICAgICAgICBgQW4gZXJyb3IgaGFzIGJlZW4gcHJvZHVjZWRcbiAgICAgICAgICAgIHVwZGF0aW5nIHRoZSBwYXNzd29yZCBmb3IgQHt1c2VybmFtZX0uIEVycm9yOiBAe2Vyci5tZXNzYWdlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyh7IHVzZXJuYW1lIH0sICd1cGRhdGVkIHBhc3N3b3JkIGZvciBAe3VzZXJuYW1lfSB3YXMgc3VjY2Vzc2Z1bCcpO1xuICAgICAgICAgIHJldHVybiBjYihudWxsLCBwcm9maWxlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGF1dGhlbnRpY2F0ZSh1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5wbHVnaW5zLnNsaWNlKDApO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIChmdW5jdGlvbiBuZXh0KCk6IHZvaWQge1xuICAgICAgY29uc3QgcGx1Z2luID0gcGx1Z2lucy5zaGlmdCgpIGFzIHBsdWdpblV0aWxzLkF1dGg8Q29uZmlnPjtcbiAgICAgIGlmIChfLmlzRnVuY3Rpb24ocGx1Z2luLmF1dGhlbnRpY2F0ZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG4gICAgICBkZWJ1ZygnYXV0aGVudGljYXRpbmcgJW8nLCB1c2VybmFtZSk7XG4gICAgICBwbHVnaW4uYXV0aGVudGljYXRlKHVzZXJuYW1lLCBwYXNzd29yZCwgZnVuY3Rpb24gKGVyciwgZ3JvdXBzKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgIHsgdXNlcm5hbWUsIGVyciB9LFxuICAgICAgICAgICAgJ2F1dGhlbnRpY2F0aW5nIGZvciB1c2VyIEB7dXNlcm5hbWV9IGZhaWxlZC4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9J1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHBlY3Q6IFNLSVAgaWYgZ3JvdXBzIGlzIGZhbHNleSBhbmQgbm90IGFuIGFycmF5XG4gICAgICAgIC8vICAgICAgICAgd2l0aCBhdCBsZWFzdCBvbmUgaXRlbSAodHJ1dGh5IGxlbmd0aClcbiAgICAgICAgLy8gRXhwZWN0OiBDT05USU5VRSBvdGhlcndpc2UgKHdpbGwgZXJyb3IgaWYgZ3JvdXBzIGlzIG5vdFxuICAgICAgICAvLyAgICAgICAgIGFuIGFycmF5LCBidXQgdGhpcyBpcyBjdXJyZW50IGJlaGF2aW9yKVxuICAgICAgICAvLyBDYXZlYXQ6IFNUUklORyAoaWYgdmFsaWQpIHdpbGwgcGFzcyBzdWNjZXNzZnVsbHlcbiAgICAgICAgLy8gICAgICAgICBidWcgZ2l2ZSB1bmV4cGVjdGVkIHJlc3VsdHNcbiAgICAgICAgLy8gSW5mbzogQ2Fubm90IHVzZSBgPT0gZmFsc2UgdG8gY2hlY2sgZmFsc2V5IHZhbHVlc2BcbiAgICAgICAgaWYgKCEhZ3JvdXBzICYmIGdyb3Vwcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAvLyBUT0RPOiBjcmVhdGUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBleHBlY3RhdGlvbnNcbiAgICAgICAgICBpZiAoXy5pc1N0cmluZyhncm91cHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwbHVnaW4gZ3JvdXAgZXJyb3I6IGludmFsaWQgdHlwZSBmb3IgZnVuY3Rpb24nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNHcm91cFZhbGlkOiBib29sZWFuID0gXy5pc0FycmF5KGdyb3Vwcyk7XG4gICAgICAgICAgaWYgKCFpc0dyb3VwVmFsaWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoQVBJX0VSUk9SLkJBRF9GT1JNQVRfVVNFUl9HUk9VUCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlYnVnKCdhdXRoZW50aWNhdGlvbiBmb3IgdXNlciAlbyB3YXMgc3VjY2Vzc2Z1bGx5LiBHcm91cHM6ICVvJywgdXNlcm5hbWUsIGdyb3Vwcyk7XG4gICAgICAgICAgcmV0dXJuIGNiKGVyciwgY3JlYXRlUmVtb3RlVXNlcih1c2VybmFtZSwgZ3JvdXBzKSk7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRfdXNlcih1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgZGVidWcoJ2FkZCB1c2VyICVvJywgdXNlcik7XG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+O1xuICAgICAgbGV0IG1ldGhvZCA9ICdhZGR1c2VyJztcbiAgICAgIGlmIChfLmlzRnVuY3Rpb24ocGx1Z2luW21ldGhvZF0pID09PSBmYWxzZSkge1xuICAgICAgICBtZXRob2QgPSAnYWRkX3VzZXInO1xuICAgICAgICBzZWxmLmxvZ2dlci53YXJuKFxuICAgICAgICAgICd0aGUgcGx1Z2luIG1ldGhvZCBhZGRfdXNlciBpbiB0aGUgYXV0aCBwbHVnaW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgcmVsZWFzZSwgbm90aWZ5IHRvIHRoZSBwbHVnaW4gYXV0aG9yJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKHBsdWdpblttZXRob2RdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcC5hZGRfdXNlcigpIGV4ZWN1dGlvblxuICAgICAgICBwbHVnaW5bbWV0aG9kXSh1c2VyLCBwYXNzd29yZCwgZnVuY3Rpb24gKGVyciwgb2spOiB2b2lkIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgeyB1c2VyLCBlcnI6IGVyci5tZXNzYWdlIH0sXG4gICAgICAgICAgICAgICd0aGUgdXNlciBAe3VzZXJ9IGNvdWxkIG5vdCBiZWluZyBhZGRlZC4gRXJyb3I6IEB7ZXJyfSdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKHsgdXNlciB9LCAndGhlIHVzZXIgQHt1c2VyfSBoYXMgYmVlbiBhZGRlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbGYuYXV0aGVudGljYXRlKHVzZXIsIHBhc3N3b3JkLCBjYik7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyB1c2VyIHRvIGFjY2VzcyBhIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgYWxsb3dfYWNjZXNzKFxuICAgIHsgcGFja2FnZU5hbWUsIHBhY2thZ2VWZXJzaW9uIH06IHBsdWdpblV0aWxzLkF1dGhQbHVnaW5QYWNrYWdlLFxuICAgIHVzZXI6IFJlbW90ZVVzZXIsXG4gICAgY2FsbGJhY2s6IENhbGxiYWNrXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgcGtnQWxsb3dBY2NlczogQWxsb3dBY2Nlc3MgPSB7IG5hbWU6IHBhY2thZ2VOYW1lLCB2ZXJzaW9uOiBwYWNrYWdlVmVyc2lvbiB9O1xuICAgIGNvbnN0IHBrZyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHBrZ0FsbG93QWNjZXMsXG4gICAgICBnZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lLCB0aGlzLmNvbmZpZy5wYWNrYWdlcylcbiAgICApIGFzIEFsbG93QWNjZXNzICYgUGFja2FnZUFjY2VzcztcbiAgICBkZWJ1ZygnYWxsb3cgYWNjZXNzIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcblxuICAgIChmdW5jdGlvbiBuZXh0KCk6IHZvaWQge1xuICAgICAgY29uc3QgcGx1Z2luOiBwbHVnaW5VdGlscy5BdXRoPHVua25vd24+ID0gcGx1Z2lucy5zaGlmdCgpIGFzIHBsdWdpblV0aWxzLkF1dGg8Q29uZmlnPjtcblxuICAgICAgaWYgKF8uaXNOaWwocGx1Z2luKSB8fCBfLmlzRnVuY3Rpb24ocGx1Z2luLmFsbG93X2FjY2VzcykgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIHBsdWdpbi5hbGxvd19hY2Nlc3MhKHVzZXIsIHBrZywgZnVuY3Rpb24gKGVycjogVmVyZGFjY2lvRXJyb3IgfCBudWxsLCBvaz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgeyBwYWNrYWdlTmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAnZm9yYmlkZGVuIGFjY2VzcyBmb3IgQHtwYWNrYWdlTmFtZX0uIEVycm9yOiBAe2Vyci5tZXNzYWdlfSdcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lIH0sICdhbGxvd2VkIGFjY2VzcyBmb3IgQHtwYWNrYWdlTmFtZX0nKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgb2spO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV4dCgpOyAvLyBjYihudWxsLCBmYWxzZSkgY2F1c2VzIG5leHQgcGx1Z2luIHRvIHJvbGxcbiAgICAgIH0pO1xuICAgIH0pKCk7XG4gIH1cblxuICBwdWJsaWMgYWxsb3dfdW5wdWJsaXNoKFxuICAgIHsgcGFja2FnZU5hbWUsIHBhY2thZ2VWZXJzaW9uIH06IHBsdWdpblV0aWxzLkF1dGhQbHVnaW5QYWNrYWdlLFxuICAgIHVzZXI6IFJlbW90ZVVzZXIsXG4gICAgY2FsbGJhY2s6IENhbGxiYWNrXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHBrZyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7IG5hbWU6IHBhY2thZ2VOYW1lLCB2ZXJzaW9uOiBwYWNrYWdlVmVyc2lvbiB9LFxuICAgICAgZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyhwYWNrYWdlTmFtZSwgdGhpcy5jb25maWcucGFja2FnZXMpXG4gICAgKTtcbiAgICBkZWJ1ZygnYWxsb3cgdW5wdWJsaXNoIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLnBsdWdpbnMpIHtcbiAgICAgIGlmIChfLmlzTmlsKHBsdWdpbikgfHwgXy5pc0Z1bmN0aW9uKHBsdWdpbi5hbGxvd191bnB1Ymxpc2gpID09PSBmYWxzZSkge1xuICAgICAgICBkZWJ1ZygnYWxsb3cgdW5wdWJsaXNoIGZvciAlbyBwbHVnaW4gZG9lcyBub3QgaW1wbGVtZW50IGFsbG93X3VucHVibGlzaCcsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHBsdWdpbi5hbGxvd191bnB1Ymxpc2ghKHVzZXIsIHBrZywgKGVyciwgb2s6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgeyBwYWNrYWdlTmFtZSwgdXNlcjogdXNlcj8ubmFtZSB9LFxuICAgICAgICAgICAgICAnQHt1c2VyfSBmb3JiaWRkZW4gcHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0sIGl0IHdpbGwgZmFsbGJhY2sgb24gdW5wdWJsaXNoIHBlcm1pc3Npb25zJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChfLmlzTmlsKG9rKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgZGVidWcoJ3dlIGJ5cGFzcyB1bnB1Ymxpc2ggZm9yICVvLCBwdWJsaXNoIHdpbGwgaGFuZGxlIHRoZSBhY2Nlc3MnLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFsbG93X3B1Ymxpc2goLi4uYXJndW1lbnRzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgIHsgcGFja2FnZU5hbWUsIHVzZXI6IHVzZXI/Lm5hbWUgfSxcbiAgICAgICAgICAgICAgJ0B7dXNlcn0gYWxsb3dlZCB1bnB1Ymxpc2ggZm9yIEB7cGFja2FnZU5hbWV9J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBvayk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgdXNlciB0byBwdWJsaXNoIGEgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhbGxvd19wdWJsaXNoKFxuICAgIHsgcGFja2FnZU5hbWUsIHBhY2thZ2VWZXJzaW9uIH06IHBsdWdpblV0aWxzLkF1dGhQbHVnaW5QYWNrYWdlLFxuICAgIHVzZXI6IFJlbW90ZVVzZXIsXG4gICAgY2FsbGJhY2s6IENhbGxiYWNrXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgcGtnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHsgbmFtZTogcGFja2FnZU5hbWUsIHZlcnNpb246IHBhY2thZ2VWZXJzaW9uIH0sXG4gICAgICBnZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lLCB0aGlzLmNvbmZpZy5wYWNrYWdlcylcbiAgICApO1xuICAgIGRlYnVnKCdhbGxvdyBwdWJsaXNoIGZvciAlbyBpbml0IHwgcGx1Z2luczogJW8nLCBwYWNrYWdlTmFtZSwgcGx1Z2lucyk7XG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLnNoaWZ0KCk7XG5cbiAgICAgIGlmIChfLmlzTmlsKHBsdWdpbikgfHwgXy5pc0Z1bmN0aW9uKHBsdWdpbi5hbGxvd19wdWJsaXNoKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZGVidWcoJ2FsbG93IHB1Ymxpc2ggZm9yICVvIHBsdWdpbiBkb2VzIG5vdCBpbXBsZW1lbnQgYWxsb3dfcHVibGlzaCcsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcGx1Z2luLmFsbG93X3B1Ymxpc2godXNlciwgcGtnLCAoZXJyOiBhbnksIG9rOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChfLmlzTmlsKGVycikgPT09IGZhbHNlICYmIF8uaXNFcnJvcihlcnIpKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICB7IHBhY2thZ2VOYW1lLCB1c2VyOiB1c2VyPy5uYW1lIH0sXG4gICAgICAgICAgICAnQHt1c2VyfSBpcyBmb3JiaWRkZW4gcHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0nXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvaykge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICB7IHBhY2thZ2VOYW1lLCB1c2VyOiB1c2VyPy5uYW1lIH0sXG4gICAgICAgICAgICAnQHt1c2VyfSBpcyBhbGxvd2VkIHB1Ymxpc2ggZm9yIEB7cGFja2FnZU5hbWV9J1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG9rKTtcbiAgICAgICAgfVxuICAgICAgICBkZWJ1ZygnYWxsb3cgcHVibGlzaCBza2lwIHZhbGlkYXRpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBuZXh0KCk7IC8vIGNiKG51bGwsIGZhbHNlKSBjYXVzZXMgbmV4dCBwbHVnaW4gdG8gcm9sbFxuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcGlKV1RtaWRkbGV3YXJlKCkge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3QgaGVscGVycyA9IHsgY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlciwgY3JlYXRlUmVtb3RlVXNlciB9O1xuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHBsdWdpbnMpIHtcbiAgICAgIGlmIChwbHVnaW4uYXBpSldUbWlkZGxld2FyZSkge1xuICAgICAgICByZXR1cm4gcGx1Z2luLmFwaUpXVG1pZGRsZXdhcmUoaGVscGVycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgX25leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgICAgcmVxLnBhdXNlKCk7XG5cbiAgICAgIGNvbnN0IG5leHQgPSBmdW5jdGlvbiAoZXJyOiBhbnkgfCB2b2lkKTogdm9pZCB7XG4gICAgICAgIHJlcS5yZXN1bWUoKTtcbiAgICAgICAgLy8gdW5jb21tZW50IHRoaXMgdG8gcmVqZWN0IHVzZXJzIHdpdGggYmFkIGF1dGggaGVhZGVyc1xuICAgICAgICAvLyByZXR1cm4gX25leHQuYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuICAgICAgICAvLyBzd2FsbG93IGVycm9yLCB1c2VyIHJlbWFpbnMgdW5hdXRob3JpemVkXG4gICAgICAgIC8vIHNldCByZW1vdGVVc2VyRXJyb3IgdG8gaW5kaWNhdGUgdGhhdCB1c2VyIHdhcyBhdHRlbXB0aW5nIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIuZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX25leHQoKTtcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLl9pc1JlbW90ZVVzZXJWYWxpZChyZXEucmVtb3RlX3VzZXIpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gaW4gY2FzZSBhdXRoIGhlYWRlciBkb2VzIG5vdCBleGlzdCB3ZSByZXR1cm4gYW5vbnltb3VzIGZ1bmN0aW9uXG4gICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk7XG5cbiAgICAgIGNvbnN0IHsgYXV0aG9yaXphdGlvbiB9ID0gcmVxLmhlYWRlcnM7XG4gICAgICBpZiAoXy5pc05pbChhdXRob3JpemF0aW9uKSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNBdXRoSGVhZGVyVmFsaWQoYXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgZGVidWcoJ2FwaSBtaWRkbGV3YXJlIGF1dGggaGVhdGhlciBpcyBub3QgdmFsaWQnKTtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLkJBRF9BVVRIX0hFQURFUikpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzZWN1cml0eTogU2VjdXJpdHkgPSBnZXRTZWN1cml0eSh0aGlzLmNvbmZpZyk7XG4gICAgICBjb25zdCB7IHNlY3JldCB9ID0gdGhpcy5jb25maWc7XG5cbiAgICAgIGlmIChpc0FFU0xlZ2FjeShzZWN1cml0eSkpIHtcbiAgICAgICAgZGVidWcoJ2FwaSBtaWRkbGV3YXJlIHVzaW5nIGxlZ2FjeSBhdXRoIHRva2VuJyk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUFFU01pZGRsZXdhcmUocmVxLCBzZWN1cml0eSwgc2VjcmV0LCBhdXRob3JpemF0aW9uLCBuZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhcGkgbWlkZGxld2FyZSB1c2luZyBKV1QgYXV0aCB0b2tlbicpO1xuICAgICAgICB0aGlzLl9oYW5kbGVKV1RBUElNaWRkbGV3YXJlKHJlcSwgc2VjdXJpdHksIHNlY3JldCwgYXV0aG9yaXphdGlvbiwgbmV4dCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUpXVEFQSU1pZGRsZXdhcmUoXG4gICAgcmVxOiAkUmVxdWVzdEV4dGVuZCxcbiAgICBzZWN1cml0eTogU2VjdXJpdHksXG4gICAgc2VjcmV0OiBzdHJpbmcsXG4gICAgYXV0aG9yaXphdGlvbjogc3RyaW5nLFxuICAgIG5leHQ6IEZ1bmN0aW9uXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgc2NoZW1lLCB0b2tlbiB9ID0gcGFyc2VBdXRoVG9rZW5IZWFkZXIoYXV0aG9yaXphdGlvbik7XG4gICAgaWYgKHNjaGVtZS50b1VwcGVyQ2FzZSgpID09PSBUT0tFTl9CQVNJQy50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICAvLyB0aGlzIHNob3VsZCBoYXBwZW4gd2hlbiBjbGllbnQgdHJpZXMgdG8gbG9naW4gd2l0aCBhbiBleGlzdGluZyB1c2VyXG4gICAgICBjb25zdCBjcmVkZW50aWFscyA9IGNvbnZlcnRQYXlsb2FkVG9CYXNlNjQodG9rZW4pLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCB7IHVzZXIsIHBhc3N3b3JkIH0gPSBwYXJzZUJhc2ljUGF5bG9hZChjcmVkZW50aWFscykgYXMgQUVTUGF5bG9hZDtcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlKHVzZXIsIHBhc3N3b3JkLCAoZXJyLCB1c2VyKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gdXNlcjtcbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcigpO1xuICAgICAgICAgIG5leHQoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGp3dCBoYW5kbGVyXG4gICAgICBjb25zdCBjcmVkZW50aWFsczogYW55ID0gZ2V0TWlkZGxld2FyZUNyZWRlbnRpYWxzKHNlY3VyaXR5LCBzZWNyZXQsIGF1dGhvcml6YXRpb24pO1xuICAgICAgaWYgKGNyZWRlbnRpYWxzKSB7XG4gICAgICAgIC8vIGlmIHRoZSBzaWduYXR1cmUgaXMgdmFsaWQgd2UgcmVseSBvbiBpdFxuICAgICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVkZW50aWFscztcbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gd2l0aCBKV1QgdGhyb3cgNDAxXG4gICAgICAgIG5leHQoRXJyb3JDb2RlLmdldEZvcmJpZGRlbihBUElfRVJST1IuQkFEX1VTRVJOQU1FX1BBU1NXT1JEKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQUVTTWlkZGxld2FyZShcbiAgICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICAgIHNlY3VyaXR5OiBTZWN1cml0eSxcbiAgICBzZWNyZXQ6IHN0cmluZyxcbiAgICBhdXRob3JpemF0aW9uOiBzdHJpbmcsXG4gICAgbmV4dDogRnVuY3Rpb25cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IGFueSA9IGdldE1pZGRsZXdhcmVDcmVkZW50aWFscyhzZWN1cml0eSwgc2VjcmV0LCBhdXRob3JpemF0aW9uKTtcbiAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IHsgdXNlciwgcGFzc3dvcmQgfSA9IGNyZWRlbnRpYWxzO1xuICAgICAgdGhpcy5hdXRoZW50aWNhdGUodXNlciwgcGFzc3dvcmQsIChlcnIsIHVzZXIpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk7XG4gICAgICAgICAgbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2UgZm9yY2UgbnBtIGNsaWVudCB0byBhc2sgYWdhaW4gd2l0aCBiYXNpYyBhdXRoZW50aWNhdGlvblxuICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLkJBRF9BVVRIX0hFQURFUikpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzUmVtb3RlVXNlclZhbGlkKHJlbW90ZV91c2VyOiBSZW1vdGVVc2VyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIF8uaXNVbmRlZmluZWQocmVtb3RlX3VzZXIpID09PSBmYWxzZSAmJiBfLmlzVW5kZWZpbmVkKHJlbW90ZV91c2VyLm5hbWUpID09PSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBKV1QgbWlkZGxld2FyZSBmb3IgV2ViVUlcbiAgICovXG4gIHB1YmxpYyB3ZWJVSUpXVG1pZGRsZXdhcmUoKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIF9uZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc1JlbW90ZVVzZXJWYWxpZChyZXEucmVtb3RlX3VzZXIpKSB7XG4gICAgICAgIHJldHVybiBfbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICByZXEucGF1c2UoKTtcbiAgICAgIGNvbnN0IG5leHQgPSAoZXJyOiBhbnkgfCB2b2lkKTogdm9pZCA9PiB7XG4gICAgICAgIHJlcS5yZXN1bWUoKTtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIC8vIHJlcS5yZW1vdGVfdXNlci5lcnJvciA9IGVyci5tZXNzYWdlO1xuICAgICAgICAgIHJlcy5zdGF0dXMoZXJyLnN0YXR1c0NvZGUpLnNlbmQoZXJyLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF9uZXh0KCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7IGF1dGhvcml6YXRpb24gfSA9IHJlcS5oZWFkZXJzO1xuICAgICAgaWYgKF8uaXNOaWwoYXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQXV0aEhlYWRlclZhbGlkKGF1dGhvcml6YXRpb24pKSB7XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWRSZXF1ZXN0KEFQSV9FUlJPUi5CQURfQVVUSF9IRUFERVIpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9rZW4gPSAoYXV0aG9yaXphdGlvbiB8fCAnJykucmVwbGFjZShgJHtUT0tFTl9CRUFSRVJ9IGAsICcnKTtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3JlZGVudGlhbHM7XG4gICAgICB0cnkge1xuICAgICAgICBjcmVkZW50aWFscyA9IHZlcmlmeUpXVFBheWxvYWQodG9rZW4sIHRoaXMuY29uZmlnLnNlY3JldCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gRklYTUU6IGludGVuZGVkIGJlaGF2aW91ciwgZG8gd2Ugd2FudCBpdD9cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2lzUmVtb3RlVXNlclZhbGlkKGNyZWRlbnRpYWxzKSkge1xuICAgICAgICBjb25zdCB7IG5hbWUsIGdyb3VwcyB9ID0gY3JlZGVudGlhbHM7XG4gICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWF0ZVJlbW90ZVVzZXIobmFtZSwgZ3JvdXBzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIoKTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5leHQoKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGp3dEVuY3J5cHQodXNlcjogUmVtb3RlVXNlciwgc2lnbk9wdGlvbnM6IEpXVFNpZ25PcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB7IHJlYWxfZ3JvdXBzLCBuYW1lLCBncm91cHMgfSA9IHVzZXI7XG4gICAgY29uc3QgcmVhbEdyb3Vwc1ZhbGlkYXRlZCA9IF8uaXNOaWwocmVhbF9ncm91cHMpID8gW10gOiByZWFsX2dyb3VwcztcbiAgICBjb25zdCBncm91cGVkR3JvdXBzID0gXy5pc05pbChncm91cHMpXG4gICAgICA/IHJlYWxfZ3JvdXBzXG4gICAgICA6IEFycmF5LmZyb20obmV3IFNldChbLi4uZ3JvdXBzLmNvbmNhdChyZWFsR3JvdXBzVmFsaWRhdGVkKV0pKTtcbiAgICBjb25zdCBwYXlsb2FkOiBSZW1vdGVVc2VyID0ge1xuICAgICAgcmVhbF9ncm91cHM6IHJlYWxHcm91cHNWYWxpZGF0ZWQsXG4gICAgICBuYW1lLFxuICAgICAgZ3JvdXBzOiBncm91cGVkR3JvdXBzLFxuICAgIH07XG5cbiAgICBjb25zdCB0b2tlbjogc3RyaW5nID0gYXdhaXQgc2lnblBheWxvYWQocGF5bG9hZCwgdGhpcy5zZWNyZXQsIHNpZ25PcHRpb25zKTtcblxuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNyeXB0IGEgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIGFlc0VuY3J5cHQoYnVmOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIHJldHVybiBhZXNFbmNyeXB0KGJ1ZiwgdGhp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
|
|
488
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfY29uZmlnIiwiX3NpZ25hdHVyZSIsIl91dGlscyIsIl9wbHVnaW5Mb2FkZXIiLCJfYXV0aFV0aWxzIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsImRlYnVnIiwiYnVpbGREZWJ1ZyIsIkF1dGgiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsImxvZ2dlciIsInNlY3JldCIsInBsdWdpbnMiLCJfbG9hZFBsdWdpbiIsIl9hcHBseURlZmF1bHRQbHVnaW5zIiwicGx1Z2luT3B0aW9ucyIsImF1dGhDb25mIiwiYXV0aCIsImh0cGFzc3dkIiwiYWxnb3JpdGhtIiwiaW5mbyIsImxvYWRQbHVnaW4iLCJwbHVnaW4iLCJhdXRoZW50aWNhdGUiLCJhbGxvd19hY2Nlc3MiLCJhbGxvd19wdWJsaXNoIiwiZ2V0RGVmYXVsdFBsdWdpbnMiLCJjaGFuZ2VQYXNzd29yZCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJuZXdQYXNzd29yZCIsImNiIiwidmFsaWRQbHVnaW5zIiwiXyIsImlzRnVuY3Rpb24iLCJpc0VtcHR5IiwiRXJyb3JDb2RlIiwiZ2V0SW50ZXJuYWxFcnJvciIsIlNVUFBPUlRfRVJST1JTIiwiUExVR0lOX01JU1NJTkdfSU5URVJGQUNFIiwiaXNOaWwiLCJlcnIiLCJwcm9maWxlIiwiZXJyb3IiLCJzbGljZSIsInNlbGYiLCJuZXh0Iiwic2hpZnQiLCJncm91cHMiLCJpc1N0cmluZyIsImlzR3JvdXBWYWxpZCIsImlzQXJyYXkiLCJBUElfRVJST1IiLCJCQURfRk9STUFUX1VTRVJfR1JPVVAiLCJjcmVhdGVSZW1vdGVVc2VyIiwiYWRkX3VzZXIiLCJ1c2VyIiwibWV0aG9kIiwid2FybiIsIm9rIiwibWVzc2FnZSIsInBhY2thZ2VOYW1lIiwicGFja2FnZVZlcnNpb24iLCJjYWxsYmFjayIsInBrZ0FsbG93QWNjZXMiLCJuYW1lIiwidmVyc2lvbiIsInBrZyIsImFzc2lnbiIsImdldE1hdGNoZWRQYWNrYWdlc1NwZWMiLCJwYWNrYWdlcyIsImFsbG93X3VucHVibGlzaCIsImlzRXJyb3IiLCJhcGlKV1RtaWRkbGV3YXJlIiwiaGVscGVycyIsImNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIiLCJyZXEiLCJfbmV4dCIsInBhdXNlIiwicmVzdW1lIiwicmVtb3RlX3VzZXIiLCJfaXNSZW1vdGVVc2VyVmFsaWQiLCJhdXRob3JpemF0aW9uIiwiaGVhZGVycyIsImlzQXV0aEhlYWRlclZhbGlkIiwiZ2V0QmFkUmVxdWVzdCIsIkJBRF9BVVRIX0hFQURFUiIsInNlY3VyaXR5IiwiZ2V0U2VjdXJpdHkiLCJpc0FFU0xlZ2FjeSIsIl9oYW5kbGVBRVNNaWRkbGV3YXJlIiwiX2hhbmRsZUpXVEFQSU1pZGRsZXdhcmUiLCJzY2hlbWUiLCJ0b2tlbiIsInBhcnNlQXV0aFRva2VuSGVhZGVyIiwidG9VcHBlckNhc2UiLCJUT0tFTl9CQVNJQyIsImNyZWRlbnRpYWxzIiwiY29udmVydFBheWxvYWRUb0Jhc2U2NCIsInRvU3RyaW5nIiwicGFyc2VCYXNpY1BheWxvYWQiLCJnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMiLCJnZXRGb3JiaWRkZW4iLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJpc1VuZGVmaW5lZCIsIndlYlVJSldUbWlkZGxld2FyZSIsInN0YXR1cyIsInN0YXR1c0NvZGUiLCJzZW5kIiwicmVwbGFjZSIsIlRPS0VOX0JFQVJFUiIsInZlcmlmeUpXVFBheWxvYWQiLCJqd3RFbmNyeXB0Iiwic2lnbk9wdGlvbnMiLCJyZWFsX2dyb3VwcyIsInJlYWxHcm91cHNWYWxpZGF0ZWQiLCJncm91cGVkR3JvdXBzIiwiQXJyYXkiLCJmcm9tIiwiU2V0IiwiY29uY2F0IiwicGF5bG9hZCIsInNpZ25QYXlsb2FkIiwiYWVzRW5jcnlwdCIsImJ1ZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXV0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIsIGNyZWF0ZVJlbW90ZVVzZXIgfSBmcm9tICdAdmVyZGFjY2lvL2NvbmZpZyc7XG5pbXBvcnQgeyBWZXJkYWNjaW9FcnJvciwgcGx1Z2luVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgYWVzRW5jcnlwdERlcHJlY2F0ZWQgYXMgYWVzRW5jcnlwdCwgc2lnblBheWxvYWQgfSBmcm9tICdAdmVyZGFjY2lvL3NpZ25hdHVyZSc7XG5pbXBvcnQge1xuICBBbGxvd0FjY2VzcyxcbiAgQ2FsbGJhY2ssXG4gIENvbmZpZyxcbiAgSldUU2lnbk9wdGlvbnMsXG4gIExvZ2dlcixcbiAgUGFja2FnZUFjY2VzcyxcbiAgUmVtb3RlVXNlcixcbiAgU2VjdXJpdHksXG59IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyB9IGZyb20gJ0B2ZXJkYWNjaW8vdXRpbHMnO1xuXG5pbXBvcnQgbG9hZFBsdWdpbiBmcm9tICcuLi9saWIvcGx1Z2luLWxvYWRlcic7XG5pbXBvcnQgeyAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBBRVNQYXlsb2FkIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0RGVmYXVsdFBsdWdpbnMsXG4gIGdldE1pZGRsZXdhcmVDcmVkZW50aWFscyxcbiAgZ2V0U2VjdXJpdHksXG4gIGlzQUVTTGVnYWN5LFxuICBpc0F1dGhIZWFkZXJWYWxpZCxcbiAgcGFyc2VBdXRoVG9rZW5IZWFkZXIsXG4gIHBhcnNlQmFzaWNQYXlsb2FkLFxuICB2ZXJpZnlKV1RQYXlsb2FkLFxufSBmcm9tICcuL2F1dGgtdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBTVVBQT1JUX0VSUk9SUywgVE9LRU5fQkFTSUMsIFRPS0VOX0JFQVJFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSwgY29udmVydFBheWxvYWRUb0Jhc2U2NCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzphdXRoJyk7XG5cbmNsYXNzIEF1dGgge1xuICBwdWJsaWMgY29uZmlnOiBDb25maWc7XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcbiAgcHVibGljIHNlY3JldDogc3RyaW5nO1xuICBwdWJsaWMgcGx1Z2luczogcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+W107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5zZWNyZXQgPSBjb25maWcuc2VjcmV0O1xuICAgIHRoaXMucGx1Z2lucyA9IHRoaXMuX2xvYWRQbHVnaW4oY29uZmlnKTtcbiAgICB0aGlzLl9hcHBseURlZmF1bHRQbHVnaW5zKCk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkUGx1Z2luKGNvbmZpZzogQ29uZmlnKTogcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+W10ge1xuICAgIGNvbnN0IHBsdWdpbk9wdGlvbnMgPSB7XG4gICAgICBjb25maWcsXG4gICAgICBsb2dnZXI6IHRoaXMubG9nZ2VyLFxuICAgIH07XG5cbiAgICBsZXQgYXV0aENvbmYgPSB7IC4uLmNvbmZpZy5hdXRoIH07XG4gICAgaWYgKGF1dGhDb25mPy5odHBhc3N3ZCkge1xuICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciBodHBhc3N3ZCBwbHVnaW4sIHRoZSB2NiB2ZXJzaW9uIHVzZXMgYmNyeXB0IGJ5IGRlZmF1bHRcbiAgICAgIC8vIDUueCBlbmZvcmNlcyBjcnlwdCB0byBhdm9pZCBicmVha2luZyBjaGFuZ2VzLCBidXQgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHVzaW5nXG4gICAgICAvLyBiY3J5cHQgaW5zdGVhZC5cbiAgICAgIGlmICghYXV0aENvbmYuaHRwYXNzd2QuYWxnb3JpdGhtKSB7XG4gICAgICAgIGF1dGhDb25mLmh0cGFzc3dkLmFsZ29yaXRobSA9ICdjcnlwdCc7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAndGhlIFwiY3J5cHRcIiBhbGdvcml0aG0gaXMgZGVwcmVjYXRlZCBjb25zaWRlciBzd2l0Y2ggdG8gXCJiY3J5cHRcIiBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBSZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhZGRpdGlvbmFsIGRldGFpbHMnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvYWRQbHVnaW48cGx1Z2luVXRpbHMuQXV0aDxDb25maWc+PihcbiAgICAgIGNvbmZpZyxcbiAgICAgIGF1dGhDb25mLFxuICAgICAgcGx1Z2luT3B0aW9ucyxcbiAgICAgIChwbHVnaW46IHBsdWdpblV0aWxzLkF1dGg8Q29uZmlnPik6IGJvb2xlYW4gPT4ge1xuICAgICAgICBjb25zdCB7IGF1dGhlbnRpY2F0ZSwgYWxsb3dfYWNjZXNzLCBhbGxvd19wdWJsaXNoIH0gPSBwbHVnaW47XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0ZSB8fCBhbGxvd19hY2Nlc3MgfHwgYWxsb3dfcHVibGlzaDtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlEZWZhdWx0UGx1Z2lucygpOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbnMucHVzaChnZXREZWZhdWx0UGx1Z2lucyh0aGlzLmxvZ2dlcikpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVBhc3N3b3JkKFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZywgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gICAgbmV3UGFzc3dvcmQ6IHN0cmluZywgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gICAgY2I6IENhbGxiYWNrXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkUGx1Z2lucyA9IF8uZmlsdGVyKHRoaXMucGx1Z2lucywgKHBsdWdpbikgPT4gXy5pc0Z1bmN0aW9uKHBsdWdpbi5jaGFuZ2VQYXNzd29yZCkpO1xuXG4gICAgaWYgKF8uaXNFbXB0eSh2YWxpZFBsdWdpbnMpKSB7XG4gICAgICByZXR1cm4gY2IoRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgdmFsaWRQbHVnaW5zKSB7XG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uY2hhbmdlUGFzc3dvcmQpID09PSBmYWxzZSkge1xuICAgICAgICBkZWJ1ZygnYXV0aCBwbHVnaW4gZG9lcyBub3QgaW1wbGVtZW50IGNoYW5nZVBhc3N3b3JkLCB0cnlpbmcgbmV4dCBvbmUnKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgcGFzc3dvcmQgZm9yICVvJywgdXNlcm5hbWUpO1xuICAgICAgICBwbHVnaW4uY2hhbmdlUGFzc3dvcmQhKHVzZXJuYW1lLCBwYXNzd29yZCwgbmV3UGFzc3dvcmQsIChlcnIsIHByb2ZpbGUpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgeyB1c2VybmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAgIGBBbiBlcnJvciBoYXMgYmVlbiBwcm9kdWNlZFxuICAgICAgICAgICAgdXBkYXRpbmcgdGhlIHBhc3N3b3JkIGZvciBAe3VzZXJuYW1lfS4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKHsgdXNlcm5hbWUgfSwgJ3VwZGF0ZWQgcGFzc3dvcmQgZm9yIEB7dXNlcm5hbWV9IHdhcyBzdWNjZXNzZnVsJyk7XG4gICAgICAgICAgcmV0dXJuIGNiKG51bGwsIHByb2ZpbGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXV0aGVudGljYXRlKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+O1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihwbHVnaW4uYXV0aGVudGljYXRlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cbiAgICAgIGRlYnVnKCdhdXRoZW50aWNhdGluZyAlbycsIHVzZXJuYW1lKTtcbiAgICAgIHBsdWdpbi5hdXRoZW50aWNhdGUodXNlcm5hbWUsIHBhc3N3b3JkLCBmdW5jdGlvbiAoZXJyLCBncm91cHMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgeyB1c2VybmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAnYXV0aGVudGljYXRpbmcgZm9yIHVzZXIgQHt1c2VybmFtZX0gZmFpbGVkLiBFcnJvcjogQHtlcnIubWVzc2FnZX0nXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4cGVjdDogU0tJUCBpZiBncm91cHMgaXMgZmFsc2V5IGFuZCBub3QgYW4gYXJyYXlcbiAgICAgICAgLy8gICAgICAgICB3aXRoIGF0IGxlYXN0IG9uZSBpdGVtICh0cnV0aHkgbGVuZ3RoKVxuICAgICAgICAvLyBFeHBlY3Q6IENPTlRJTlVFIG90aGVyd2lzZSAod2lsbCBlcnJvciBpZiBncm91cHMgaXMgbm90XG4gICAgICAgIC8vICAgICAgICAgYW4gYXJyYXksIGJ1dCB0aGlzIGlzIGN1cnJlbnQgYmVoYXZpb3IpXG4gICAgICAgIC8vIENhdmVhdDogU1RSSU5HIChpZiB2YWxpZCkgd2lsbCBwYXNzIHN1Y2Nlc3NmdWxseVxuICAgICAgICAvLyAgICAgICAgIGJ1ZyBnaXZlIHVuZXhwZWN0ZWQgcmVzdWx0c1xuICAgICAgICAvLyBJbmZvOiBDYW5ub3QgdXNlIGA9PSBmYWxzZSB0byBjaGVjayBmYWxzZXkgdmFsdWVzYFxuICAgICAgICBpZiAoISFncm91cHMgJiYgZ3JvdXBzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIC8vIFRPRE86IGNyZWF0ZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGV4cGVjdGF0aW9uc1xuICAgICAgICAgIGlmIChfLmlzU3RyaW5nKGdyb3VwcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BsdWdpbiBncm91cCBlcnJvcjogaW52YWxpZCB0eXBlIGZvciBmdW5jdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0dyb3VwVmFsaWQ6IGJvb2xlYW4gPSBfLmlzQXJyYXkoZ3JvdXBzKTtcbiAgICAgICAgICBpZiAoIWlzR3JvdXBWYWxpZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihBUElfRVJST1IuQkFEX0ZPUk1BVF9VU0VSX0dST1VQKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVidWcoJ2F1dGhlbnRpY2F0aW9uIGZvciB1c2VyICVvIHdhcyBzdWNjZXNzZnVsbHkuIEdyb3VwczogJW8nLCB1c2VybmFtZSwgZ3JvdXBzKTtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyLCBjcmVhdGVSZW1vdGVVc2VyKHVzZXJuYW1lLCBncm91cHMpKTtcbiAgICAgICAgfVxuICAgICAgICBuZXh0KCk7XG4gICAgICB9KTtcbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIGFkZF91c2VyKHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBkZWJ1ZygnYWRkIHVzZXIgJW8nLCB1c2VyKTtcbiAgICAoZnVuY3Rpb24gbmV4dCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBsdWdpbnMuc2hpZnQoKSBhcyBwbHVnaW5VdGlscy5BdXRoPENvbmZpZz47XG4gICAgICBsZXQgbWV0aG9kID0gJ2FkZHVzZXInO1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihwbHVnaW5bbWV0aG9kXSkgPT09IGZhbHNlKSB7XG4gICAgICAgIG1ldGhvZCA9ICdhZGRfdXNlcic7XG4gICAgICAgIHNlbGYubG9nZ2VyLndhcm4oXG4gICAgICAgICAgJ3RoZSBwbHVnaW4gbWV0aG9kIGFkZF91c2VyIGluIHRoZSBhdXRoIHBsdWdpbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciByZWxlYXNlLCBub3RpZnkgdG8gdGhlIHBsdWdpbiBhdXRob3InXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzRnVuY3Rpb24ocGx1Z2luW21ldGhvZF0pID09PSBmYWxzZSkge1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwLmFkZF91c2VyKCkgZXhlY3V0aW9uXG4gICAgICAgIHBsdWdpblttZXRob2RdKHVzZXIsIHBhc3N3b3JkLCBmdW5jdGlvbiAoZXJyLCBvayk6IHZvaWQge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICB7IHVzZXIsIGVycjogZXJyLm1lc3NhZ2UgfSxcbiAgICAgICAgICAgICAgJ3RoZSB1c2VyIEB7dXNlcn0gY291bGQgbm90IGJlaW5nIGFkZGVkLiBFcnJvcjogQHtlcnJ9J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oeyB1c2VyIH0sICd0aGUgdXNlciBAe3VzZXJ9IGhhcyBiZWVuIGFkZGVkJyk7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRoZW50aWNhdGUodXNlciwgcGFzc3dvcmQsIGNiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IHVzZXIgdG8gYWNjZXNzIGEgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhbGxvd19hY2Nlc3MoXG4gICAgeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogcGx1Z2luVXRpbHMuQXV0aFBsdWdpblBhY2thZ2UsXG4gICAgdXNlcjogUmVtb3RlVXNlcixcbiAgICBjYWxsYmFjazogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBwa2dBbGxvd0FjY2VzOiBBbGxvd0FjY2VzcyA9IHsgbmFtZTogcGFja2FnZU5hbWUsIHZlcnNpb246IHBhY2thZ2VWZXJzaW9uIH07XG4gICAgY29uc3QgcGtnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAgcGtnQWxsb3dBY2NlcyxcbiAgICAgIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGFja2FnZU5hbWUsIHRoaXMuY29uZmlnLnBhY2thZ2VzKVxuICAgICkgYXMgQWxsb3dBY2Nlc3MgJiBQYWNrYWdlQWNjZXNzO1xuICAgIGRlYnVnKCdhbGxvdyBhY2Nlc3MgZm9yICVvJywgcGFja2FnZU5hbWUpO1xuXG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW46IHBsdWdpblV0aWxzLkF1dGg8dW5rbm93bj4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgcGx1Z2luVXRpbHMuQXV0aDxDb25maWc+O1xuXG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uYWxsb3dfYWNjZXNzKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgcGx1Z2luLmFsbG93X2FjY2VzcyEodXNlciwgcGtnLCBmdW5jdGlvbiAoZXJyOiBWZXJkYWNjaW9FcnJvciB8IG51bGwsIG9rPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICB7IHBhY2thZ2VOYW1lLCBlcnIgfSxcbiAgICAgICAgICAgICdmb3JiaWRkZW4gYWNjZXNzIGZvciBAe3BhY2thZ2VOYW1lfS4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9J1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKHsgcGFja2FnZU5hbWUgfSwgJ2FsbG93ZWQgYWNjZXNzIGZvciBAe3BhY2thZ2VOYW1lfScpO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBvayk7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0KCk7IC8vIGNiKG51bGwsIGZhbHNlKSBjYXVzZXMgbmV4dCBwbHVnaW4gdG8gcm9sbFxuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhbGxvd191bnB1Ymxpc2goXG4gICAgeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogcGx1Z2luVXRpbHMuQXV0aFBsdWdpblBhY2thZ2UsXG4gICAgdXNlcjogUmVtb3RlVXNlcixcbiAgICBjYWxsYmFjazogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGtnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHsgbmFtZTogcGFja2FnZU5hbWUsIHZlcnNpb246IHBhY2thZ2VWZXJzaW9uIH0sXG4gICAgICBnZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lLCB0aGlzLmNvbmZpZy5wYWNrYWdlcylcbiAgICApO1xuICAgIGRlYnVnKCdhbGxvdyB1bnB1Ymxpc2ggZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykge1xuICAgICAgaWYgKF8uaXNOaWwocGx1Z2luKSB8fCBfLmlzRnVuY3Rpb24ocGx1Z2luLmFsbG93X3VucHVibGlzaCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlYnVnKCdhbGxvdyB1bnB1Ymxpc2ggZm9yICVvIHBsdWdpbiBkb2VzIG5vdCBpbXBsZW1lbnQgYWxsb3dfdW5wdWJsaXNoJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcGx1Z2luLmFsbG93X3VucHVibGlzaCEodXNlciwgcGtnLCAoZXJyLCBvazogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICB7IHBhY2thZ2VOYW1lLCB1c2VyOiB1c2VyPy5uYW1lIH0sXG4gICAgICAgICAgICAgICdAe3VzZXJ9IGZvcmJpZGRlbiBwdWJsaXNoIGZvciBAe3BhY2thZ2VOYW1lfSwgaXQgd2lsbCBmYWxsYmFjayBvbiB1bnB1Ymxpc2ggcGVybWlzc2lvbnMnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF8uaXNOaWwob2spID09PSB0cnVlKSB7XG4gICAgICAgICAgICBkZWJ1Zygnd2UgYnlwYXNzIHVucHVibGlzaCBmb3IgJW8sIHB1Ymxpc2ggd2lsbCBoYW5kbGUgdGhlIGFjY2VzcycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxsb3dfcHVibGlzaCguLi5hcmd1bWVudHMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvaykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgeyBwYWNrYWdlTmFtZSwgdXNlcjogdXNlcj8ubmFtZSB9LFxuICAgICAgICAgICAgICAnQHt1c2VyfSBhbGxvd2VkIHVucHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG9rKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyB1c2VyIHRvIHB1Ymxpc2ggYSBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGFsbG93X3B1Ymxpc2goXG4gICAgeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogcGx1Z2luVXRpbHMuQXV0aFBsdWdpblBhY2thZ2UsXG4gICAgdXNlcjogUmVtb3RlVXNlcixcbiAgICBjYWxsYmFjazogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBwa2cgPSBPYmplY3QuYXNzaWduKFxuICAgICAgeyBuYW1lOiBwYWNrYWdlTmFtZSwgdmVyc2lvbjogcGFja2FnZVZlcnNpb24gfSxcbiAgICAgIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGFja2FnZU5hbWUsIHRoaXMuY29uZmlnLnBhY2thZ2VzKVxuICAgICk7XG4gICAgZGVidWcoJ2FsbG93IHB1Ymxpc2ggZm9yICVvIGluaXQgfCBwbHVnaW5zOiAlbycsIHBhY2thZ2VOYW1lLCBwbHVnaW5zKTtcbiAgICAoZnVuY3Rpb24gbmV4dCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBsdWdpbnMuc2hpZnQoKTtcblxuICAgICAgaWYgKF8uaXNOaWwocGx1Z2luKSB8fCBfLmlzRnVuY3Rpb24ocGx1Z2luLmFsbG93X3B1Ymxpc2gpID09PSBmYWxzZSkge1xuICAgICAgICBkZWJ1ZygnYWxsb3cgcHVibGlzaCBmb3IgJW8gcGx1Z2luIGRvZXMgbm90IGltcGxlbWVudCBhbGxvd19wdWJsaXNoJywgcGFja2FnZU5hbWUpO1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBwbHVnaW4uYWxsb3dfcHVibGlzaCh1c2VyLCBwa2csIChlcnI6IGFueSwgb2s6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UgJiYgXy5pc0Vycm9yKGVycikpIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgIHsgcGFja2FnZU5hbWUsIHVzZXI6IHVzZXI/Lm5hbWUgfSxcbiAgICAgICAgICAgICdAe3VzZXJ9IGlzIGZvcmJpZGRlbiBwdWJsaXNoIGZvciBAe3BhY2thZ2VOYW1lfSdcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIHsgcGFja2FnZU5hbWUsIHVzZXI6IHVzZXI/Lm5hbWUgfSxcbiAgICAgICAgICAgICdAe3VzZXJ9IGlzIGFsbG93ZWQgcHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0nXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgb2spO1xuICAgICAgICB9XG4gICAgICAgIGRlYnVnKCdhbGxvdyBwdWJsaXNoIHNraXAgdmFsaWRhdGlvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIG5leHQoKTsgLy8gY2IobnVsbCwgZmFsc2UpIGNhdXNlcyBuZXh0IHBsdWdpbiB0byByb2xsXG4gICAgICB9KTtcbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIGFwaUpXVG1pZGRsZXdhcmUoKSB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBjb25zdCBoZWxwZXJzID0geyBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyLCBjcmVhdGVSZW1vdGVVc2VyIH07XG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgcGx1Z2lucykge1xuICAgICAgaWYgKHBsdWdpbi5hcGlKV1RtaWRkbGV3YXJlKSB7XG4gICAgICAgIHJldHVybiBwbHVnaW4uYXBpSldUbWlkZGxld2FyZShoZWxwZXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBfbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgICByZXEucGF1c2UoKTtcblxuICAgICAgY29uc3QgbmV4dCA9IGZ1bmN0aW9uIChlcnI6IGFueSB8IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgcmVxLnJlc3VtZSgpO1xuICAgICAgICAvLyB1bmNvbW1lbnQgdGhpcyB0byByZWplY3QgdXNlcnMgd2l0aCBiYWQgYXV0aCBoZWFkZXJzXG4gICAgICAgIC8vIHJldHVybiBfbmV4dC5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gICAgICAgIC8vIHN3YWxsb3cgZXJyb3IsIHVzZXIgcmVtYWlucyB1bmF1dGhvcml6ZWRcbiAgICAgICAgLy8gc2V0IHJlbW90ZVVzZXJFcnJvciB0byBpbmRpY2F0ZSB0aGF0IHVzZXIgd2FzIGF0dGVtcHRpbmcgYXV0aGVudGljYXRpb25cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlci5lcnJvciA9IGVyci5tZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfbmV4dCgpO1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuX2lzUmVtb3RlVXNlclZhbGlkKHJlcS5yZW1vdGVfdXNlcikpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBpbiBjYXNlIGF1dGggaGVhZGVyIGRvZXMgbm90IGV4aXN0IHdlIHJldHVybiBhbm9ueW1vdXMgZnVuY3Rpb25cbiAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIoKTtcblxuICAgICAgY29uc3QgeyBhdXRob3JpemF0aW9uIH0gPSByZXEuaGVhZGVycztcbiAgICAgIGlmIChfLmlzTmlsKGF1dGhvcml6YXRpb24pKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0F1dGhIZWFkZXJWYWxpZChhdXRob3JpemF0aW9uKSkge1xuICAgICAgICBkZWJ1ZygnYXBpIG1pZGRsZXdhcmUgYXV0aCBoZWF0aGVyIGlzIG5vdCB2YWxpZCcpO1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuQkFEX0FVVEhfSEVBREVSKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlY3VyaXR5OiBTZWN1cml0eSA9IGdldFNlY3VyaXR5KHRoaXMuY29uZmlnKTtcbiAgICAgIGNvbnN0IHsgc2VjcmV0IH0gPSB0aGlzLmNvbmZpZztcblxuICAgICAgaWYgKGlzQUVTTGVnYWN5KHNlY3VyaXR5KSkge1xuICAgICAgICBkZWJ1ZygnYXBpIG1pZGRsZXdhcmUgdXNpbmcgbGVnYWN5IGF1dGggdG9rZW4nKTtcbiAgICAgICAgdGhpcy5faGFuZGxlQUVTTWlkZGxld2FyZShyZXEsIHNlY3VyaXR5LCBzZWNyZXQsIGF1dGhvcml6YXRpb24sIG5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ2FwaSBtaWRkbGV3YXJlIHVzaW5nIEpXVCBhdXRoIHRva2VuJyk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUpXVEFQSU1pZGRsZXdhcmUocmVxLCBzZWN1cml0eSwgc2VjcmV0LCBhdXRob3JpemF0aW9uLCBuZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSldUQVBJTWlkZGxld2FyZShcbiAgICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICAgIHNlY3VyaXR5OiBTZWN1cml0eSxcbiAgICBzZWNyZXQ6IHN0cmluZyxcbiAgICBhdXRob3JpemF0aW9uOiBzdHJpbmcsXG4gICAgbmV4dDogRnVuY3Rpb25cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgeyBzY2hlbWUsIHRva2VuIH0gPSBwYXJzZUF1dGhUb2tlbkhlYWRlcihhdXRob3JpemF0aW9uKTtcbiAgICBpZiAoc2NoZW1lLnRvVXBwZXJDYXNlKCkgPT09IFRPS0VOX0JBU0lDLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIC8vIHRoaXMgc2hvdWxkIGhhcHBlbiB3aGVuIGNsaWVudCB0cmllcyB0byBsb2dpbiB3aXRoIGFuIGV4aXN0aW5nIHVzZXJcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gY29udmVydFBheWxvYWRUb0Jhc2U2NCh0b2tlbikudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHsgdXNlciwgcGFzc3dvcmQgfSA9IHBhcnNlQmFzaWNQYXlsb2FkKGNyZWRlbnRpYWxzKSBhcyBBRVNQYXlsb2FkO1xuICAgICAgdGhpcy5hdXRoZW50aWNhdGUodXNlciwgcGFzc3dvcmQsIChlcnIsIHVzZXIpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk7XG4gICAgICAgICAgbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gand0IGhhbmRsZXJcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBhbnkgPSBnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMoc2VjdXJpdHksIHNlY3JldCwgYXV0aG9yaXphdGlvbik7XG4gICAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgICAgLy8gaWYgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCB3ZSByZWx5IG9uIGl0XG4gICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWRlbnRpYWxzO1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB3aXRoIEpXVCB0aHJvdyA0MDFcbiAgICAgICAgbmV4dChFcnJvckNvZGUuZ2V0Rm9yYmlkZGVuKEFQSV9FUlJPUi5CQURfVVNFUk5BTUVfUEFTU1dPUkQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVBRVNNaWRkbGV3YXJlKFxuICAgIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gICAgc2VjdXJpdHk6IFNlY3VyaXR5LFxuICAgIHNlY3JldDogc3RyaW5nLFxuICAgIGF1dGhvcml6YXRpb246IHN0cmluZyxcbiAgICBuZXh0OiBGdW5jdGlvblxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogYW55ID0gZ2V0TWlkZGxld2FyZUNyZWRlbnRpYWxzKHNlY3VyaXR5LCBzZWNyZXQsIGF1dGhvcml6YXRpb24pO1xuICAgIGlmIChjcmVkZW50aWFscykge1xuICAgICAgY29uc3QgeyB1c2VyLCBwYXNzd29yZCB9ID0gY3JlZGVudGlhbHM7XG4gICAgICB0aGlzLmF1dGhlbnRpY2F0ZSh1c2VyLCBwYXNzd29yZCwgKGVyciwgdXNlcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIoKTtcbiAgICAgICAgICBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3ZSBmb3JjZSBucG0gY2xpZW50IHRvIGFzayBhZ2FpbiB3aXRoIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuQkFEX0FVVEhfSEVBREVSKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNSZW1vdGVVc2VyVmFsaWQocmVtb3RlX3VzZXI6IFJlbW90ZVVzZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gXy5pc1VuZGVmaW5lZChyZW1vdGVfdXNlcikgPT09IGZhbHNlICYmIF8uaXNVbmRlZmluZWQocmVtb3RlX3VzZXIubmFtZSkgPT09IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEpXVCBtaWRkbGV3YXJlIGZvciBXZWJVSVxuICAgKi9cbiAgcHVibGljIHdlYlVJSldUbWlkZGxld2FyZSgpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgX25leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzUmVtb3RlVXNlclZhbGlkKHJlcS5yZW1vdGVfdXNlcikpIHtcbiAgICAgICAgcmV0dXJuIF9uZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIHJlcS5wYXVzZSgpO1xuICAgICAgY29uc3QgbmV4dCA9IChlcnI6IGFueSB8IHZvaWQpOiB2b2lkID0+IHtcbiAgICAgICAgcmVxLnJlc3VtZSgpO1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgLy8gcmVxLnJlbW90ZV91c2VyLmVycm9yID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgcmVzLnN0YXR1cyhlcnIuc3RhdHVzQ29kZSkuc2VuZChlcnIubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX25leHQoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHsgYXV0aG9yaXphdGlvbiB9ID0gcmVxLmhlYWRlcnM7XG4gICAgICBpZiAoXy5pc05pbChhdXRob3JpemF0aW9uKSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNBdXRoSGVhZGVyVmFsaWQoYXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLkJBRF9BVVRIX0hFQURFUikpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b2tlbiA9IChhdXRob3JpemF0aW9uIHx8ICcnKS5yZXBsYWNlKGAke1RPS0VOX0JFQVJFUn0gYCwgJycpO1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBjcmVkZW50aWFscztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNyZWRlbnRpYWxzID0gdmVyaWZ5SldUUGF5bG9hZCh0b2tlbiwgdGhpcy5jb25maWcuc2VjcmV0KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBGSVhNRTogaW50ZW5kZWQgYmVoYXZpb3VyLCBkbyB3ZSB3YW50IGl0P1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5faXNSZW1vdGVVc2VyVmFsaWQoY3JlZGVudGlhbHMpKSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgZ3JvdXBzIH0gPSBjcmVkZW50aWFscztcbiAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlUmVtb3RlVXNlcihuYW1lLCBncm91cHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcigpO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV4dCgpO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgand0RW5jcnlwdCh1c2VyOiBSZW1vdGVVc2VyLCBzaWduT3B0aW9uczogSldUU2lnbk9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHsgcmVhbF9ncm91cHMsIG5hbWUsIGdyb3VwcyB9ID0gdXNlcjtcbiAgICBjb25zdCByZWFsR3JvdXBzVmFsaWRhdGVkID0gXy5pc05pbChyZWFsX2dyb3VwcykgPyBbXSA6IHJlYWxfZ3JvdXBzO1xuICAgIGNvbnN0IGdyb3VwZWRHcm91cHMgPSBfLmlzTmlsKGdyb3VwcylcbiAgICAgID8gcmVhbF9ncm91cHNcbiAgICAgIDogQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5ncm91cHMuY29uY2F0KHJlYWxHcm91cHNWYWxpZGF0ZWQpXSkpO1xuICAgIGNvbnN0IHBheWxvYWQ6IFJlbW90ZVVzZXIgPSB7XG4gICAgICByZWFsX2dyb3VwczogcmVhbEdyb3Vwc1ZhbGlkYXRlZCxcbiAgICAgIG5hbWUsXG4gICAgICBncm91cHM6IGdyb3VwZWRHcm91cHMsXG4gICAgfTtcblxuICAgIGNvbnN0IHRva2VuOiBzdHJpbmcgPSBhd2FpdCBzaWduUGF5bG9hZChwYXlsb2FkLCB0aGlzLnNlY3JldCwgc2lnbk9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY3J5cHQgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWVzRW5jcnlwdChidWY6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIGFlc0VuY3J5cHQoYnVmLCB0aGlzLnNlY3JldCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXV0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
|
|
@@ -11,6 +11,8 @@ var _bootstrap = require("../../bootstrap");
|
|
|
11
11
|
var _configPath = _interopRequireDefault(require("../../config-path"));
|
|
12
12
|
var _utils = require("../../utils");
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
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; }
|
|
15
|
+
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; }
|
|
14
16
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
17
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
16
18
|
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); }
|
|
@@ -29,7 +31,7 @@ class InitCommand extends _clipanion.Command {
|
|
|
29
31
|
_defineProperty(this, "config", _clipanion.Option.String('-c,--config', {
|
|
30
32
|
description: 'use this configuration file (default: ./config.yaml)'
|
|
31
33
|
}));
|
|
32
|
-
}
|
|
34
|
+
} // eslint-disable-next-line
|
|
33
35
|
initLogger(logConfig) {
|
|
34
36
|
if (logConfig.logs) {
|
|
35
37
|
logConfig.log = logConfig.logs;
|
|
@@ -53,6 +55,10 @@ class InitCommand extends _clipanion.Command {
|
|
|
53
55
|
enable: false
|
|
54
56
|
};
|
|
55
57
|
}
|
|
58
|
+
configParsed.flags = _objectSpread(_objectSpread({}, configParsed.flags), {}, {
|
|
59
|
+
// on this version there is no remote search
|
|
60
|
+
searchRemote: false
|
|
61
|
+
});
|
|
56
62
|
process.title = configParsed.web && configParsed.web.title || 'verdaccio';
|
|
57
63
|
(0, _bootstrap.startVerdaccio)(configParsed, this.listen, configPathLocation, pkgVersion, pkgName, _bootstrap.listenDefaultCallback);
|
|
58
64
|
logger.logger.info({
|
|
@@ -92,4 +98,4 @@ _defineProperty(InitCommand, "usage", _clipanion.Command.Usage({
|
|
|
92
98
|
`,
|
|
93
99
|
examples: [[`Runs the server with the default configuration`, `verdaccio`], [`Runs the server in the port 5000`, `verdaccio --listen 5000`], [`Runs the server by using a different absolute location of the configuration file`, `verdaccio --config /home/user/verdaccio/config.yaml`]]
|
|
94
100
|
}));
|
|
95
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xpcGFuaW9uIiwicmVxdWlyZSIsIl9wYXRoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb3JlIiwiX2Jvb3RzdHJhcCIsIl9jb25maWdQYXRoIiwiX3V0aWxzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhcmciLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwibW9kdWxlIiwicGtnVmVyc2lvbiIsImV4cG9ydHMiLCJ2ZXJzaW9uIiwicGtnTmFtZSIsIm5hbWUiLCJERUZBVUxUX1BST0NFU1NfTkFNRSIsImxvZ2dlciIsIkluaXRDb21tYW5kIiwiQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwiYXJncyIsIk9wdGlvbiIsImRlc2NyaXB0aW9uIiwiaW5pdExvZ2dlciIsImxvZ0NvbmZpZyIsImxvZ3MiLCJsb2ciLCJ3YXJuaW5nVXRpbHMiLCJlbWl0IiwiQ29kZXMiLCJWRVJXQVIwMDIiLCJzZXR1cCIsImV4ZWN1dGUiLCJjb25maWdQYXRoTG9jYXRpb24iLCJmaW5kQ29uZmlnRmlsZSIsImNvbmZpZyIsImNvbmZpZ1BhcnNlZCIsInBhcnNlQ29uZmlnRmlsZSIsInNlbGZfcGF0aCIsInBhdGgiLCJyZXNvbHZlIiwiY29uZmlnUGF0aCIsImh0dHBzIiwiZW5hYmxlIiwicHJvY2VzcyIsInRpdGxlIiwid2ViIiwic3RhcnRWZXJkYWNjaW8iLCJsaXN0ZW4iLCJsaXN0ZW5EZWZhdWx0Q2FsbGJhY2siLCJpbmZvIiwiZmlsZSIsImVyciIsIl9sb2dnZXIkbG9nZ2VyIiwiZmF0YWwiLCJjb25zb2xlIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXhpdCIsIkRlZmF1bHQiLCJVc2FnZSIsImRldGFpbHMiLCJleGFtcGxlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY2xpL2NvbW1hbmRzL2luaXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyB3YXJuaW5nVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlnWWFtbCB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBsaXN0ZW5EZWZhdWx0Q2FsbGJhY2ssIHN0YXJ0VmVyZGFjY2lvIH0gZnJvbSAnLi4vLi4vYm9vdHN0cmFwJztcbmltcG9ydCBmaW5kQ29uZmlnRmlsZSBmcm9tICcuLi8uLi9jb25maWctcGF0aCc7XG5pbXBvcnQgeyBwYXJzZUNvbmZpZ0ZpbGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbnJlcXVpcmUoJ3BrZ2luZm8nKShtb2R1bGUpO1xuY29uc3QgcGtnVmVyc2lvbiA9IG1vZHVsZS5leHBvcnRzLnZlcnNpb247XG5jb25zdCBwa2dOYW1lID0gbW9kdWxlLmV4cG9ydHMubmFtZTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUFJPQ0VTU19OQU1FOiBzdHJpbmcgPSAndmVyZGFjY2lvJztcbmNvbnN0IGxvZ2dlciA9IHJlcXVpcmUoJy4uLy4uL2xvZ2dlcicpO1xuXG5leHBvcnQgY2xhc3MgSW5pdENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW0NvbW1hbmQuRGVmYXVsdF07XG5cbiAgbGlzdGVuID0gT3B0aW9uLlN0cmluZygnLWwsLS1saXN0ZW4nLCB7XG4gICAgZGVzY3JpcHRpb246ICdob3N0OnBvcnQgbnVtYmVyIHRvIGxpc3RlbiBvbiAoZGVmYXVsdDogbG9jYWxob3N0OjQ4NzMpJyxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOiBgbGF1bmNoIHRoZSBzZXJ2ZXJgLFxuICAgIGRldGFpbHM6IGBcbiAgICAgIFRoaXMgc3RhcnQgdGhlIHJlZ2lzdHJ5IGluIHRoZSBkZWZhdWx0IHBvcnQuXG5cbiAgICAgIFdoZW4gdXNlZCB3aXRob3V0IGFyZ3VtZW50cywgaXQ6XG5cbiAgICAgIC0gYm9vdHN0cmFwIHRoZSBzZXJ2ZXIgYXQgdGhlIHBvcnQgIFxcYDQ4NzNcXGBcblxuICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50cyBhcmU6XG5cbiAgICAgIC0gXFxgLS1saXN0ZW5cXGAgdG8gc3dpdGNoIHRoZSBkZWZhdWx0IHNlcnZlciBwb3J0LFxuICAgICAgLSBcXGAtLWNvbmZpZ1xcYCB0byBkZWZpbmUgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBwYXRoIGxvY2F0aW9uLFxuXG4gICAgYCxcbiAgICBleGFtcGxlczogW1xuICAgICAgW2BSdW5zIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uYCwgYHZlcmRhY2Npb2BdLFxuICAgICAgW2BSdW5zIHRoZSBzZXJ2ZXIgaW4gdGhlIHBvcnQgNTAwMGAsIGB2ZXJkYWNjaW8gLS1saXN0ZW4gNTAwMGBdLFxuICAgICAgW1xuICAgICAgICBgUnVucyB0aGUgc2VydmVyIGJ5IHVzaW5nIGEgZGlmZmVyZW50IGFic29sdXRlIGxvY2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVgLFxuICAgICAgICBgdmVyZGFjY2lvIC0tY29uZmlnIC9ob21lL3VzZXIvdmVyZGFjY2lvL2NvbmZpZy55YW1sYCxcbiAgICAgIF0sXG4gICAgXSxcbiAgfSk7XG5cbiAgY29uZmlnID0gT3B0aW9uLlN0cmluZygnLWMsLS1jb25maWcnLCB7XG4gICAgZGVzY3JpcHRpb246ICd1c2UgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgKGRlZmF1bHQ6IC4vY29uZmlnLnlhbWwpJyxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBpbml0TG9nZ2VyKGxvZ0NvbmZpZzogQ29uZmlnWWFtbCkge1xuICAgIGlmIChsb2dDb25maWcubG9ncykge1xuICAgICAgbG9nQ29uZmlnLmxvZyA9IGxvZ0NvbmZpZy5sb2dzO1xuICAgICAgd2FybmluZ1V0aWxzLmVtaXQod2FybmluZ1V0aWxzLkNvZGVzLlZFUldBUjAwMik7XG4gICAgfVxuICAgIGxvZ2dlci5zZXR1cChsb2dDb25maWcubG9nKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgbGV0IGNvbmZpZ1BhdGhMb2NhdGlvbjtcbiAgICB0cnkge1xuICAgICAgY29uZmlnUGF0aExvY2F0aW9uID0gZmluZENvbmZpZ0ZpbGUodGhpcy5jb25maWcgYXMgc3RyaW5nKTtcbiAgICAgIGNvbnN0IGNvbmZpZ1BhcnNlZDogUmV0dXJuVHlwZTxhbnk+ID0gcGFyc2VDb25maWdGaWxlKGNvbmZpZ1BhdGhMb2NhdGlvbik7XG4gICAgICBpZiAoIWNvbmZpZ1BhcnNlZC5zZWxmX3BhdGgpIHtcbiAgICAgICAgY29uZmlnUGFyc2VkLnNlbGZfcGF0aCA9IHBhdGgucmVzb2x2ZShjb25maWdQYXRoTG9jYXRpb24pO1xuICAgICAgICB0aGlzLmluaXRMb2dnZXIoY29uZmlnUGFyc2VkKTtcbiAgICAgICAgLy8gY29tcGF0aWJpbGl0eSB3aXRoIDYueCBwbHVnaW5zXG4gICAgICAgIGNvbmZpZ1BhcnNlZC5jb25maWdQYXRoID0gY29uZmlnUGFyc2VkLnNlbGZfcGF0aDtcbiAgICAgIH1cbiAgICAgIGlmICghY29uZmlnUGFyc2VkLmh0dHBzKSB7XG4gICAgICAgIGNvbmZpZ1BhcnNlZC5odHRwcyA9IHsgZW5hYmxlOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBwcm9jZXNzLnRpdGxlID0gKGNvbmZpZ1BhcnNlZC53ZWIgJiYgY29uZmlnUGFyc2VkLndlYi50aXRsZSkgfHwgJ3ZlcmRhY2Npbyc7XG5cbiAgICAgIHN0YXJ0VmVyZGFjY2lvKFxuICAgICAgICBjb25maWdQYXJzZWQsXG4gICAgICAgIHRoaXMubGlzdGVuIGFzIHN0cmluZyxcbiAgICAgICAgY29uZmlnUGF0aExvY2F0aW9uLFxuICAgICAgICBwa2dWZXJzaW9uLFxuICAgICAgICBwa2dOYW1lLFxuICAgICAgICBsaXN0ZW5EZWZhdWx0Q2FsbGJhY2tcbiAgICAgICk7XG4gICAgICBsb2dnZXIubG9nZ2VyLmluZm8oeyBmaWxlOiBjb25maWdQYXRoTG9jYXRpb24gfSwgJ2NvbmZpZyBmaWxlICAtIEB7ZmlsZX0nKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKHR5cGVvZiBsb2dnZXI/LmxvZ2dlcj8uZmF0YWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ2dlci5mYXRhbChcbiAgICAgICAgICB7IGZpbGU6IGNvbmZpZ1BhdGhMb2NhdGlvbiwgZXJyOiBlcnIgfSxcbiAgICAgICAgICAnY2Fubm90IG9wZW4gY29uZmlnIGZpbGUgQHtmaWxlfTogQHshZXJyLm1lc3NhZ2V9J1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcihgY2Fubm90IG9wZW4gY29uZmlnIGZpbGUgJHtjb25maWdQYXRoTG9jYXRpb259OiAkeyFlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBR0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCxzQkFBQSxD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
|
|
101
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xpcGFuaW9uIiwicmVxdWlyZSIsIl9wYXRoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb3JlIiwiX2Jvb3RzdHJhcCIsIl9jb25maWdQYXRoIiwiX3V0aWxzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsIm1vZHVsZSIsInBrZ1ZlcnNpb24iLCJleHBvcnRzIiwidmVyc2lvbiIsInBrZ05hbWUiLCJuYW1lIiwiREVGQVVMVF9QUk9DRVNTX05BTUUiLCJsb2dnZXIiLCJJbml0Q29tbWFuZCIsIkNvbW1hbmQiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJPcHRpb24iLCJkZXNjcmlwdGlvbiIsImluaXRMb2dnZXIiLCJsb2dDb25maWciLCJsb2dzIiwibG9nIiwid2FybmluZ1V0aWxzIiwiZW1pdCIsIkNvZGVzIiwiVkVSV0FSMDAyIiwic2V0dXAiLCJleGVjdXRlIiwiY29uZmlnUGF0aExvY2F0aW9uIiwiZmluZENvbmZpZ0ZpbGUiLCJjb25maWciLCJjb25maWdQYXJzZWQiLCJwYXJzZUNvbmZpZ0ZpbGUiLCJzZWxmX3BhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImNvbmZpZ1BhdGgiLCJodHRwcyIsImVuYWJsZSIsImZsYWdzIiwic2VhcmNoUmVtb3RlIiwicHJvY2VzcyIsInRpdGxlIiwid2ViIiwic3RhcnRWZXJkYWNjaW8iLCJsaXN0ZW4iLCJsaXN0ZW5EZWZhdWx0Q2FsbGJhY2siLCJpbmZvIiwiZmlsZSIsImVyciIsIl9sb2dnZXIkbG9nZ2VyIiwiZmF0YWwiLCJjb25zb2xlIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXhpdCIsIkRlZmF1bHQiLCJVc2FnZSIsImRldGFpbHMiLCJleGFtcGxlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY2xpL2NvbW1hbmRzL2luaXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyB3YXJuaW5nVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlnWWFtbCB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBsaXN0ZW5EZWZhdWx0Q2FsbGJhY2ssIHN0YXJ0VmVyZGFjY2lvIH0gZnJvbSAnLi4vLi4vYm9vdHN0cmFwJztcbmltcG9ydCBmaW5kQ29uZmlnRmlsZSBmcm9tICcuLi8uLi9jb25maWctcGF0aCc7XG5pbXBvcnQgeyBwYXJzZUNvbmZpZ0ZpbGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbnJlcXVpcmUoJ3BrZ2luZm8nKShtb2R1bGUpO1xuY29uc3QgcGtnVmVyc2lvbiA9IG1vZHVsZS5leHBvcnRzLnZlcnNpb247XG5jb25zdCBwa2dOYW1lID0gbW9kdWxlLmV4cG9ydHMubmFtZTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUFJPQ0VTU19OQU1FOiBzdHJpbmcgPSAndmVyZGFjY2lvJztcbmNvbnN0IGxvZ2dlciA9IHJlcXVpcmUoJy4uLy4uL2xvZ2dlcicpO1xuXG5leHBvcnQgY2xhc3MgSW5pdENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW0NvbW1hbmQuRGVmYXVsdF07XG5cbiAgbGlzdGVuID0gT3B0aW9uLlN0cmluZygnLWwsLS1saXN0ZW4nLCB7XG4gICAgZGVzY3JpcHRpb246ICdob3N0OnBvcnQgbnVtYmVyIHRvIGxpc3RlbiBvbiAoZGVmYXVsdDogbG9jYWxob3N0OjQ4NzMpJyxcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHN0YXRpYyB1c2FnZSA9IENvbW1hbmQuVXNhZ2Uoe1xuICAgIGRlc2NyaXB0aW9uOiBgbGF1bmNoIHRoZSBzZXJ2ZXJgLFxuICAgIGRldGFpbHM6IGBcbiAgICAgIFRoaXMgc3RhcnQgdGhlIHJlZ2lzdHJ5IGluIHRoZSBkZWZhdWx0IHBvcnQuXG5cbiAgICAgIFdoZW4gdXNlZCB3aXRob3V0IGFyZ3VtZW50cywgaXQ6XG5cbiAgICAgIC0gYm9vdHN0cmFwIHRoZSBzZXJ2ZXIgYXQgdGhlIHBvcnQgIFxcYDQ4NzNcXGBcblxuICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50cyBhcmU6XG5cbiAgICAgIC0gXFxgLS1saXN0ZW5cXGAgdG8gc3dpdGNoIHRoZSBkZWZhdWx0IHNlcnZlciBwb3J0LFxuICAgICAgLSBcXGAtLWNvbmZpZ1xcYCB0byBkZWZpbmUgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBwYXRoIGxvY2F0aW9uLFxuXG4gICAgYCxcbiAgICBleGFtcGxlczogW1xuICAgICAgW2BSdW5zIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uYCwgYHZlcmRhY2Npb2BdLFxuICAgICAgW2BSdW5zIHRoZSBzZXJ2ZXIgaW4gdGhlIHBvcnQgNTAwMGAsIGB2ZXJkYWNjaW8gLS1saXN0ZW4gNTAwMGBdLFxuICAgICAgW1xuICAgICAgICBgUnVucyB0aGUgc2VydmVyIGJ5IHVzaW5nIGEgZGlmZmVyZW50IGFic29sdXRlIGxvY2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVgLFxuICAgICAgICBgdmVyZGFjY2lvIC0tY29uZmlnIC9ob21lL3VzZXIvdmVyZGFjY2lvL2NvbmZpZy55YW1sYCxcbiAgICAgIF0sXG4gICAgXSxcbiAgfSk7XG5cbiAgY29uZmlnID0gT3B0aW9uLlN0cmluZygnLWMsLS1jb25maWcnLCB7XG4gICAgZGVzY3JpcHRpb246ICd1c2UgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgKGRlZmF1bHQ6IC4vY29uZmlnLnlhbWwpJyxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBpbml0TG9nZ2VyKGxvZ0NvbmZpZzogQ29uZmlnWWFtbCkge1xuICAgIGlmIChsb2dDb25maWcubG9ncykge1xuICAgICAgbG9nQ29uZmlnLmxvZyA9IGxvZ0NvbmZpZy5sb2dzO1xuICAgICAgd2FybmluZ1V0aWxzLmVtaXQod2FybmluZ1V0aWxzLkNvZGVzLlZFUldBUjAwMik7XG4gICAgfVxuICAgIGxvZ2dlci5zZXR1cChsb2dDb25maWcubG9nKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgbGV0IGNvbmZpZ1BhdGhMb2NhdGlvbjtcbiAgICB0cnkge1xuICAgICAgY29uZmlnUGF0aExvY2F0aW9uID0gZmluZENvbmZpZ0ZpbGUodGhpcy5jb25maWcgYXMgc3RyaW5nKTtcbiAgICAgIGNvbnN0IGNvbmZpZ1BhcnNlZDogUmV0dXJuVHlwZTxhbnk+ID0gcGFyc2VDb25maWdGaWxlKGNvbmZpZ1BhdGhMb2NhdGlvbik7XG4gICAgICBpZiAoIWNvbmZpZ1BhcnNlZC5zZWxmX3BhdGgpIHtcbiAgICAgICAgY29uZmlnUGFyc2VkLnNlbGZfcGF0aCA9IHBhdGgucmVzb2x2ZShjb25maWdQYXRoTG9jYXRpb24pO1xuICAgICAgICB0aGlzLmluaXRMb2dnZXIoY29uZmlnUGFyc2VkKTtcbiAgICAgICAgLy8gY29tcGF0aWJpbGl0eSB3aXRoIDYueCBwbHVnaW5zXG4gICAgICAgIGNvbmZpZ1BhcnNlZC5jb25maWdQYXRoID0gY29uZmlnUGFyc2VkLnNlbGZfcGF0aDtcbiAgICAgIH1cbiAgICAgIGlmICghY29uZmlnUGFyc2VkLmh0dHBzKSB7XG4gICAgICAgIGNvbmZpZ1BhcnNlZC5odHRwcyA9IHsgZW5hYmxlOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBjb25maWdQYXJzZWQuZmxhZ3MgPSB7XG4gICAgICAgIC4uLmNvbmZpZ1BhcnNlZC5mbGFncyxcbiAgICAgICAgLy8gb24gdGhpcyB2ZXJzaW9uIHRoZXJlIGlzIG5vIHJlbW90ZSBzZWFyY2hcbiAgICAgICAgc2VhcmNoUmVtb3RlOiBmYWxzZSxcbiAgICAgIH07XG5cbiAgICAgIHByb2Nlc3MudGl0bGUgPSAoY29uZmlnUGFyc2VkLndlYiAmJiBjb25maWdQYXJzZWQud2ViLnRpdGxlKSB8fCAndmVyZGFjY2lvJztcblxuICAgICAgc3RhcnRWZXJkYWNjaW8oXG4gICAgICAgIGNvbmZpZ1BhcnNlZCxcbiAgICAgICAgdGhpcy5saXN0ZW4gYXMgc3RyaW5nLFxuICAgICAgICBjb25maWdQYXRoTG9jYXRpb24sXG4gICAgICAgIHBrZ1ZlcnNpb24sXG4gICAgICAgIHBrZ05hbWUsXG4gICAgICAgIGxpc3RlbkRlZmF1bHRDYWxsYmFja1xuICAgICAgKTtcbiAgICAgIGxvZ2dlci5sb2dnZXIuaW5mbyh7IGZpbGU6IGNvbmZpZ1BhdGhMb2NhdGlvbiB9LCAnY29uZmlnIGZpbGUgIC0gQHtmaWxlfScpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAodHlwZW9mIGxvZ2dlcj8ubG9nZ2VyPy5mYXRhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsb2dnZXIubG9nZ2VyLmZhdGFsKFxuICAgICAgICAgIHsgZmlsZTogY29uZmlnUGF0aExvY2F0aW9uLCBlcnI6IGVyciB9LFxuICAgICAgICAgICdjYW5ub3Qgb3BlbiBjb25maWcgZmlsZSBAe2ZpbGV9OiBAeyFlcnIubWVzc2FnZX0nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKGBjYW5ub3Qgb3BlbiBjb25maWcgZmlsZSAke2NvbmZpZ1BhdGhMb2NhdGlvbn06ICR7IWVyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxLQUFBLEdBQUFILE9BQUE7QUFHQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFBOEMsU0FBQUUsdUJBQUFLLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyxRQUFBQyxNQUFBLEVBQUFDLGNBQUEsUUFBQUMsSUFBQSxHQUFBQyxNQUFBLENBQUFELElBQUEsQ0FBQUYsTUFBQSxPQUFBRyxNQUFBLENBQUFDLHFCQUFBLFFBQUFDLE9BQUEsR0FBQUYsTUFBQSxDQUFBQyxxQkFBQSxDQUFBSixNQUFBLEdBQUFDLGNBQUEsS0FBQUksT0FBQSxHQUFBQSxPQUFBLENBQUFDLE1BQUEsV0FBQUMsR0FBQSxXQUFBSixNQUFBLENBQUFLLHdCQUFBLENBQUFSLE1BQUEsRUFBQU8sR0FBQSxFQUFBRSxVQUFBLE9BQUFQLElBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULElBQUEsRUFBQUcsT0FBQSxZQUFBSCxJQUFBO0FBQUEsU0FBQVUsY0FBQUMsTUFB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
|
package/build/lib/search.js
CHANGED
|
@@ -8,7 +8,7 @@ var _lunrMutableIndexes = _interopRequireDefault(require("lunr-mutable-indexes")
|
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
9
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
10
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
11
|
-
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); }
|
|
11
|
+
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); } // eslint-disable no-invalid-this
|
|
12
12
|
/**
|
|
13
13
|
* Handle the search Indexer.
|
|
14
14
|
*/
|
|
@@ -126,4 +126,4 @@ class Search {
|
|
|
126
126
|
}
|
|
127
127
|
var _default = new Search();
|
|
128
128
|
exports.default = _default;
|
|
129
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbHVuck11dGFibGVJbmRleGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZpbmVQcm9wZXJ0eSIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJTZWFyY2giLCJjb25zdHJ1Y3RvciIsImluZGV4IiwibHVuck11dGFibGUiLCJmaWVsZCIsImJvb3N0IiwicXVlcnkiLCJsb2NhbFN0b3JhZ2UiLCJzdG9yYWdlIiwiaGFzU2NvcGUiLCJzdGFydHNXaXRoIiwicmVwbGFjZSIsInJlc3VsdHMiLCJzdG9yYWdlUGx1Z2luIiwiZ2V0IiwiaXRlbXMiLCJtYXAiLCJwa2ciLCJyZWYiLCJzY29yZSIsInNlYXJjaCIsImZpbHRlciIsImFkZCIsImlkIiwibmFtZSIsImRlc2NyaXB0aW9uIiwidmVyc2lvbiIsImtleXdvcmRzIiwiYXV0aG9yIiwiX25wbVVzZXIiLCJyZW1vdmUiLCJyZWluZGV4IiwiZ2V0TG9jYWxEYXRhYmFzZSIsImVycm9yIiwicGFja2FnZXMiLCJpIiwibGVuZ3RoIiwiY29uZmlndXJlU3RvcmFnZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc2VhcmNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlIG5vLWludmFsaWQtdGhpc1xuaW1wb3J0IGx1bnJNdXRhYmxlIGZyb20gJ2x1bnItbXV0YWJsZS1pbmRleGVzJztcblxuaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBJV2ViU2VhcmNoIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IExvY2FsU3RvcmFnZSBmcm9tICcuL2xvY2FsLXN0b3JhZ2UnO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi9zdG9yYWdlJztcblxuLyoqXG4gKiBIYW5kbGUgdGhlIHNlYXJjaCBJbmRleGVyLlxuICovXG5jbGFzcyBTZWFyY2ggaW1wbGVtZW50cyBJV2ViU2VhcmNoIHtcbiAgcHVibGljIGluZGV4OiBsdW5yTXV0YWJsZS5pbmRleDtcbiAgLy8gQHRzLWlnbm9yZVxuICBwdWJsaWMgc3RvcmFnZTogU3RvcmFnZTtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbmRleCA9IGx1bnJNdXRhYmxlKGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIC8vIEZJWE1FOiB0aGVyZSBpcyBubyB0eXBlcyBmb3IgdGhpcyBsaWJyYXJ5XG4gICAgICAvKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOm9mZiAqL1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5maWVsZCgnbmFtZScsIHsgYm9vc3Q6IDEwIH0pO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5maWVsZCgnZGVzY3JpcHRpb24nLCB7IGJvb3N0OiA0IH0pO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5maWVsZCgnYXV0aG9yJywgeyBib29zdDogNiB9KTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZmllbGQoJ2tleXdvcmRzJywgeyBib29zdDogNyB9KTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZmllbGQoJ3ZlcnNpb24nKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZmllbGQoJ3JlYWRtZScpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgcXVlcnkgdG8gdGhlIGluZGV4ZXIuXG4gICAqIElmIHRoZSBrZXl3b3JkIGlzIGEgKiBpdCByZXR1cm5zIGFsbCBsb2NhbCBlbGVtZW50c1xuICAgKiBvdGhlcndpc2UgcGVyZm9ybXMgYSBzZWFyY2hcbiAgICogQHBhcmFtIHsqfSBxIHRoZSBrZXl3b3JkXG4gICAqIEByZXR1cm4ge0FycmF5fSBsaXN0IG9mIHJlc3VsdHMuXG4gICAqL1xuICBwdWJsaWMgcXVlcnkocXVlcnk6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2UubG9jYWxTdG9yYWdlIGFzIExvY2FsU3RvcmFnZTtcblxuICAgIGNvbnN0IGhhc1Njb3BlID0gcXVlcnkuc3RhcnRzV2l0aCgnQCcpO1xuICAgIC8vIEZJWE1FOiBsdW5yLW11dGFibGUtaW5kZXhlcyBpZ25vcmVkICdAJyBkdXJpbmcgaW5kZXhpbmdcbiAgICBpZiAoaGFzU2NvcGUpIHtcbiAgICAgIHF1ZXJ5ID0gcXVlcnkucmVwbGFjZSgnQCcsICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHRzID1cbiAgICAgIHF1ZXJ5ID09PSAnKidcbiAgICAgICAgPyBsb2NhbFN0b3JhZ2Uuc3RvcmFnZVBsdWdpbi5nZXQoKGl0ZW1zKTogYW55ID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLm1hcChmdW5jdGlvbiAocGtnKTogYW55IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgcmVmOiBwa2csIHNjb3JlOiAxIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KVxuICAgICAgICA6IHRoaXMuaW5kZXguc2VhcmNoKGAqJHtxdWVyeX0qYCk7XG5cbiAgICByZXR1cm4gaGFzU2NvcGUgPyByZXN1bHRzLmZpbHRlcigoeyByZWYgfSkgPT4gcmVmLnN0YXJ0c1dpdGgoJ0AnKSkgOiByZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBlbGVtZW50IHRvIGluZGV4XG4gICAqIEBwYXJhbSB7Kn0gcGtnIHRoZSBwYWNrYWdlXG4gICAqL1xuICBwdWJsaWMgYWRkKHBrZzogVmVyc2lvbik6IHZvaWQge1xuICAgIHRoaXMuaW5kZXguYWRkKHtcbiAgICAgIGlkOiBwa2cubmFtZSxcbiAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbixcbiAgICAgIHZlcnNpb246IGB2JHtwa2cudmVyc2lvbn1gLFxuICAgICAga2V5d29yZHM6IHBrZy5rZXl3b3JkcyxcbiAgICAgIGF1dGhvcjogcGtnLl9ucG1Vc2VyID8gcGtnLl9ucG1Vc2VyLm5hbWUgOiAnPz8/JyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZWxlbWVudCBmcm9tIHRoZSBpbmRleC5cbiAgICogQHBhcmFtIHsqfSBuYW1lIHRoZSBpZCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXgucmVtb3ZlKHsgaWQ6IG5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2UgYSByZS1pbmRleC5cbiAgICovXG4gIHB1YmxpYyByZWluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5nZXRMb2NhbERhdGFiYXNlKChlcnJvciwgcGFja2FnZXMpOiB2b2lkID0+
|
|
129
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbHVuck11dGFibGVJbmRleGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZpbmVQcm9wZXJ0eSIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJTZWFyY2giLCJjb25zdHJ1Y3RvciIsImluZGV4IiwibHVuck11dGFibGUiLCJmaWVsZCIsImJvb3N0IiwicXVlcnkiLCJsb2NhbFN0b3JhZ2UiLCJzdG9yYWdlIiwiaGFzU2NvcGUiLCJzdGFydHNXaXRoIiwicmVwbGFjZSIsInJlc3VsdHMiLCJzdG9yYWdlUGx1Z2luIiwiZ2V0IiwiaXRlbXMiLCJtYXAiLCJwa2ciLCJyZWYiLCJzY29yZSIsInNlYXJjaCIsImZpbHRlciIsImFkZCIsImlkIiwibmFtZSIsImRlc2NyaXB0aW9uIiwidmVyc2lvbiIsImtleXdvcmRzIiwiYXV0aG9yIiwiX25wbVVzZXIiLCJyZW1vdmUiLCJyZWluZGV4IiwiZ2V0TG9jYWxEYXRhYmFzZSIsImVycm9yIiwicGFja2FnZXMiLCJpIiwibGVuZ3RoIiwiY29uZmlndXJlU3RvcmFnZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc2VhcmNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlIG5vLWludmFsaWQtdGhpc1xuaW1wb3J0IGx1bnJNdXRhYmxlIGZyb20gJ2x1bnItbXV0YWJsZS1pbmRleGVzJztcblxuaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBJV2ViU2VhcmNoIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IExvY2FsU3RvcmFnZSBmcm9tICcuL2xvY2FsLXN0b3JhZ2UnO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi9zdG9yYWdlJztcblxuLyoqXG4gKiBIYW5kbGUgdGhlIHNlYXJjaCBJbmRleGVyLlxuICovXG5jbGFzcyBTZWFyY2ggaW1wbGVtZW50cyBJV2ViU2VhcmNoIHtcbiAgcHVibGljIGluZGV4OiBsdW5yTXV0YWJsZS5pbmRleDtcbiAgLy8gQHRzLWlnbm9yZVxuICBwdWJsaWMgc3RvcmFnZTogU3RvcmFnZTtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbmRleCA9IGx1bnJNdXRhYmxlKGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIC8vIEZJWE1FOiB0aGVyZSBpcyBubyB0eXBlcyBmb3IgdGhpcyBsaWJyYXJ5XG4gICAgICAvKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOm9mZiAqL1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5maWVsZCgnbmFtZScsIHsgYm9vc3Q6IDEwIH0pO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5maWVsZCgnZGVzY3JpcHRpb24nLCB7IGJvb3N0OiA0IH0pO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5maWVsZCgnYXV0aG9yJywgeyBib29zdDogNiB9KTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZmllbGQoJ2tleXdvcmRzJywgeyBib29zdDogNyB9KTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZmllbGQoJ3ZlcnNpb24nKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZmllbGQoJ3JlYWRtZScpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgcXVlcnkgdG8gdGhlIGluZGV4ZXIuXG4gICAqIElmIHRoZSBrZXl3b3JkIGlzIGEgKiBpdCByZXR1cm5zIGFsbCBsb2NhbCBlbGVtZW50c1xuICAgKiBvdGhlcndpc2UgcGVyZm9ybXMgYSBzZWFyY2hcbiAgICogQHBhcmFtIHsqfSBxIHRoZSBrZXl3b3JkXG4gICAqIEByZXR1cm4ge0FycmF5fSBsaXN0IG9mIHJlc3VsdHMuXG4gICAqL1xuICBwdWJsaWMgcXVlcnkocXVlcnk6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2UgPSB0aGlzLnN0b3JhZ2UubG9jYWxTdG9yYWdlIGFzIExvY2FsU3RvcmFnZTtcblxuICAgIGNvbnN0IGhhc1Njb3BlID0gcXVlcnkuc3RhcnRzV2l0aCgnQCcpO1xuICAgIC8vIEZJWE1FOiBsdW5yLW11dGFibGUtaW5kZXhlcyBpZ25vcmVkICdAJyBkdXJpbmcgaW5kZXhpbmdcbiAgICBpZiAoaGFzU2NvcGUpIHtcbiAgICAgIHF1ZXJ5ID0gcXVlcnkucmVwbGFjZSgnQCcsICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHRzID1cbiAgICAgIHF1ZXJ5ID09PSAnKidcbiAgICAgICAgPyBsb2NhbFN0b3JhZ2Uuc3RvcmFnZVBsdWdpbi5nZXQoKGl0ZW1zKTogYW55ID0+IHtcbiAgICAgICAgICAgIGl0ZW1zLm1hcChmdW5jdGlvbiAocGtnKTogYW55IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgcmVmOiBwa2csIHNjb3JlOiAxIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KVxuICAgICAgICA6IHRoaXMuaW5kZXguc2VhcmNoKGAqJHtxdWVyeX0qYCk7XG5cbiAgICByZXR1cm4gaGFzU2NvcGUgPyByZXN1bHRzLmZpbHRlcigoeyByZWYgfSkgPT4gcmVmLnN0YXJ0c1dpdGgoJ0AnKSkgOiByZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBlbGVtZW50IHRvIGluZGV4XG4gICAqIEBwYXJhbSB7Kn0gcGtnIHRoZSBwYWNrYWdlXG4gICAqL1xuICBwdWJsaWMgYWRkKHBrZzogVmVyc2lvbik6IHZvaWQge1xuICAgIHRoaXMuaW5kZXguYWRkKHtcbiAgICAgIGlkOiBwa2cubmFtZSxcbiAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbixcbiAgICAgIHZlcnNpb246IGB2JHtwa2cudmVyc2lvbn1gLFxuICAgICAga2V5d29yZHM6IHBrZy5rZXl3b3JkcyxcbiAgICAgIGF1dGhvcjogcGtnLl9ucG1Vc2VyID8gcGtnLl9ucG1Vc2VyLm5hbWUgOiAnPz8/JyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZWxlbWVudCBmcm9tIHRoZSBpbmRleC5cbiAgICogQHBhcmFtIHsqfSBuYW1lIHRoZSBpZCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXgucmVtb3ZlKHsgaWQ6IG5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2UgYSByZS1pbmRleC5cbiAgICovXG4gIHB1YmxpYyByZWluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5nZXRMb2NhbERhdGFiYXNlKChlcnJvciwgcGFja2FnZXMpOiB2b2lkID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAvLyB0aGF0IGZ1bmN0aW9uIHNob3VsZG4ndCBwcm9kdWNlIGFueVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIGxldCBpID0gcGFja2FnZXMubGVuZ3RoO1xuICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICB0aGlzLmFkZChwYWNrYWdlc1tpXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVwIHRoZSB7U3RvcmFnZX1cbiAgICogQHBhcmFtIHsqfSBzdG9yYWdlIEFuIHN0b3JhZ2UgcmVmZXJlbmNlLlxuICAgKi9cbiAgcHVibGljIGNvbmZpZ3VyZVN0b3JhZ2Uoc3RvcmFnZTogU3RvcmFnZSk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZSA9IHN0b3JhZ2U7XG4gICAgdGhpcy5yZWluZGV4KCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFNlYXJjaCgpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxtQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQStDLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBQUEsU0FBQUcsZ0JBQUFILEdBQUEsRUFBQUksR0FBQSxFQUFBQyxLQUFBLElBQUFELEdBQUEsR0FBQUUsY0FBQSxDQUFBRixHQUFBLE9BQUFBLEdBQUEsSUFBQUosR0FBQSxJQUFBTyxNQUFBLENBQUFDLGNBQUEsQ0FBQVIsR0FBQSxFQUFBSSxHQUFBLElBQUFDLEtBQUEsRUFBQUEsS0FBQSxFQUFBSSxVQUFBLFFBQUFDLFlBQUEsUUFBQUMsUUFBQSxvQkFBQVgsR0FBQSxDQUFBSSxHQUFBLElBQUFDLEtBQUEsV0FBQUwsR0FBQTtBQUFBLFNBQUFNLGVBQUFNLEdBQUEsUUFBQVIsR0FBQSxHQUFBUyxZQUFBLENBQUFELEdBQUEsMkJBQUFSLEdBQUEsZ0JBQUFBLEdBQUEsR0FBQVUsTUFBQSxDQUFBVixHQUFBO0FBQUEsU0FBQVMsYUFBQUUsS0FBQSxFQUFBQyxJQUFBLGVBQUFELEtBQUEsaUJBQUFBLEtBQUEsa0JBQUFBLEtBQUEsTUFBQUUsSUFBQSxHQUFBRixLQUFBLENBQUFHLE1BQUEsQ0FBQUMsV0FBQSxPQUFBRixJQUFBLEtBQUFHLFNBQUEsUUFBQUMsR0FBQSxHQUFBSixJQUFBLENBQUFLLElBQUEsQ0FBQVAsS0FBQSxFQUFBQyxJQUFBLDJCQUFBSyxHQUFBLHNCQUFBQSxHQUFBLFlBQUFFLFNBQUEsNERBQUFQLElBQUEsZ0JBQUFGLE1B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
|
package/build/lib/up-storage.js
CHANGED
|
@@ -41,12 +41,9 @@ const setConfig = (config, key, def) => {
|
|
|
41
41
|
class ProxyStorage {
|
|
42
42
|
// FIXME: upname is assigned to each instance
|
|
43
43
|
// @ts-ignore
|
|
44
|
-
|
|
45
44
|
// FIXME: proxy can be boolean or object, something smells here
|
|
46
45
|
// @ts-ignore
|
|
47
|
-
|
|
48
46
|
// @ts-ignore
|
|
49
|
-
|
|
50
47
|
/**
|
|
51
48
|
* Constructor
|
|
52
49
|
* @param {*} config
|
|
@@ -319,7 +316,7 @@ class ProxyStorage {
|
|
|
319
316
|
*/
|
|
320
317
|
_setHeaderAuthorization(headers, type, token) {
|
|
321
318
|
const _type = type.toLowerCase();
|
|
322
|
-
if (
|
|
319
|
+
if ([_constants.TOKEN_BEARER.toLowerCase(), _constants.TOKEN_BASIC.toLowerCase()].includes(_type) === false) {
|
|
323
320
|
this._throwErrorAuth(`Auth type '${_type}' not allowed`);
|
|
324
321
|
}
|
|
325
322
|
type = _lodash.default.upperFirst(type);
|
|
@@ -625,4 +622,4 @@ class ProxyStorage {
|
|
|
625
622
|
}
|
|
626
623
|
var _default = ProxyStorage;
|
|
627
624
|
exports.default = _default;
|
|
628
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfSlNPTlN0cmVhbSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2RlYnVnIiwiX2xvZGFzaCIsIl9yZXF1ZXN0IiwiX3N0cmVhbSIsIl91cmwiLCJfemxpYiIsIl9zdHJlYW1zIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhcmciLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiZGVidWciLCJidWlsZERlYnVnIiwiZW5jb2RlIiwidGhpbmciLCJlbmNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlIiwianNvbkNvbnRlbnRUeXBlIiwiSEVBREVSUyIsIkpTT04iLCJjb250ZW50VHlwZUFjY2VwdCIsInNldENvbmZpZyIsImNvbmZpZyIsImRlZiIsIl8iLCJpc05pbCIsIlByb3h5U3RvcmFnZSIsImNvbnN0cnVjdG9yIiwibWFpbkNvbmZpZyIsIl9tYWluQ29uZmlnJHVzZXJfYWdlbiIsImZhaWxlZF9yZXF1ZXN0cyIsInVzZXJBZ2VudCIsInVzZXJfYWdlbnQiLCJjYSIsImxvZ2dlciIsInNlcnZlcl9pZCIsInVybCIsIlVSTCIsInBhcnNlIiwiX3NldHVwUHJveHkiLCJob3N0bmFtZSIsInByb3RvY29sIiwidGltZW91dCIsIndhcm4iLCJqb2luIiwibWF4YWdlIiwicGFyc2VJbnRlcnZhbCIsIm1heF9mYWlscyIsImZhaWxfdGltZW91dCIsInN0cmljdF9zc2wiLCJCb29sZWFuIiwiYWdlbnRfb3B0aW9ucyIsImtlZXBBbGl2ZSIsIm1heFNvY2tldHMiLCJtYXhGcmVlU29ja2V0cyIsInJlcXVlc3QiLCJvcHRpb25zIiwiY2IiLCJqc29uIiwiX3N0YXR1c0NoZWNrIiwic3RyZWFtUmVhZCIsIlN0cmVhbSIsIlJlYWRhYmxlIiwicHJvY2VzcyIsIm5leHRUaWNrIiwiRXJyb3JDb2RlIiwiZ2V0SW50ZXJuYWxFcnJvciIsIkFQSV9FUlJPUiIsIlVQTElOS19PRkZMSU5FIiwiZW1pdCIsIl9yZWFkIiwib24iLCJzZWxmIiwiaGVhZGVycyIsIl9zZXRIZWFkZXJzIiwiX2FkZFByb3h5SGVhZGVycyIsInJlcSIsIl9vdmVycmlkZVdpdGhVcExpbmtDb25maWdIZWFkZXJzIiwibWV0aG9kIiwidXJpIiwidXJpX2Z1bGwiLCJpbmZvIiwiaXNPYmplY3QiLCJzdHJpbmdpZnkiLCJyZXF1ZXN0Q2FsbGJhY2siLCJlcnIiLCJib2R5IiwiZXJyb3IiLCJyZXNwb25zZUxlbmd0aCIsImxlbmd0aCIsInByb2Nlc3NCb2R5IiwibG9nQWN0aXZpdHkiLCJtZXNzYWdlIiwic3RhdHVzQ29kZSIsInRvU3RyaW5nIiwiQ0hBUkFDVEVSX0VOQ09ESU5HIiwiVVRGOCIsIl9lcnIiLCJpc1N0cmluZyIsImh0dHAiLCJzdGF0dXMiLCJieXRlcyIsImluIiwib3V0IiwicmVxdWVzdE9wdGlvbnMiLCJwcm94eSIsImVuY29kaW5nIiwiZ3ppcCIsInN0cmljdFNTTCIsImFnZW50T3B0aW9ucyIsImFzc2lnbiIsInN0YXR1c0NhbGxlZCIsIl92ZXJkYWNjaW9fYWJvcnRlZCIsImRvX2xvZyIsImlzTnVsbCIsIl9vcHRpb25zJHJlcSIsImFjY2VwdCIsIkFDQ0VQVCIsImFjY2VwdEVuY29kaW5nIiwiQUNDRVBUX0VOQ09ESU5HIiwiVVNFUl9BR0VOVCIsImdldCIsIl9zZXRBdXRoIiwiYXV0aCIsIkFVVEhPUklaQVRJT04iLCJ0b2tlbiIsIl90aHJvd0Vycm9yQXV0aCIsInRva2VuQ29uZiIsInRva2VuX2VudiIsImVudiIsImlzQm9vbGVhbiIsIk5QTV9UT0tFTiIsIkVSUk9SX0NPREUiLCJ0b2tlbl9yZXF1aXJlZCIsInR5cGUiLCJUT0tFTl9CQVNJQyIsIl9zZXRIZWFkZXJBdXRob3JpemF0aW9uIiwiRXJyb3IiLCJfdHlwZSIsInRvTG93ZXJDYXNlIiwiVE9LRU5fQkVBUkVSIiwidXBwZXJGaXJzdCIsImJ1aWxkVG9rZW4iLCJpc1VwbGlua1ZhbGlkIiwidXJsUGFyc2VkIiwiaXNIVFRQUyIsInVybERvbWFpblBhcnNlZCIsInBvcnQiLCJnZXRIb3N0IiwiaG9zdCIsImlzTWF0Y2hQcm90b2NvbCIsImlzTWF0Y2hIb3N0IiwiaXNNYXRjaFBhdGgiLCJwYXRoIiwiaW5kZXhPZiIsImdldFJlbW90ZU1ldGFkYXRhIiwibmFtZSIsImNhbGxiYWNrIiwiZXRhZyIsIkhUVFBfU1RBVFVTIiwiTk9UX0ZPVU5EIiwiZ2V0Tm90Rm91bmQiLCJOT1RfUEFDS0FHRV9VUExJTksiLCJPSyIsIk1VTFRJUExFX0NIT0lDRVMiLCJCQURfU1RBVFVTX0NPREUiLCJyZW1vdGVTdGF0dXMiLCJmZXRjaFRhcmJhbGwiLCJzdHJlYW0iLCJSZWFkVGFyYmFsbCIsImN1cnJlbnRfbGVuZ3RoIiwiZXhwZWN0ZWRfbGVuZ3RoIiwiYWJvcnQiLCJyZWFkU3RyZWFtIiwiQWNjZXB0IiwiTk9UX0ZJTEVfVVBMSU5LIiwiSEVBREVSX1RZUEUiLCJDT05URU5UX0xFTkdUSCIsInBpcGUiLCJkYXRhIiwiQ09OVEVOVF9NSVNNQVRDSCIsInNlYXJjaCIsInRyYW5zZm9ybVN0cmVhbSIsIlBhc3NUaHJvdWdoIiwib2JqZWN0TW9kZSIsInJlcXVlc3RTdHJlYW0iLCJyZWZlcmVyIiwicGFyc2VQYWNrYWdlIiwicGtnIiwiaXNPYmplY3RPckFycmF5IiwibWF0Y2giLCJqc29uU3RyZWFtIiwiQ09OVEVOVF9FTkNPRElORyIsIkdaSVAiLCJ6bGliIiwiY3JlYXRlVW56aXAiLCJKU09OU3RyZWFtIiwiY29ubmVjdGlvbiIsInJlbW90ZUFkZHJlc3MiLCJhbGl2ZSIsImFyZ3VtZW50cyIsIl9pZlJlcXVlc3RGYWlsdXJlIiwibGFzdF9yZXF1ZXN0X3RpbWUiLCJEYXRlIiwibm93IiwiTWF0aCIsImFicyIsIm1haW5jb25maWciLCJub1Byb3h5TGlzdCIsInByb3h5X2tleSIsIm5vX3Byb3h5Iiwic3BsaXQiLCJpc0FycmF5IiwiaSIsIm5vUHJveHlJdGVtIiwibGFzdEluZGV4T2YiLCJocmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi91cC1zdG9yYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBKU09OU3RyZWFtIGZyb20gJ0pTT05TdHJlYW0nO1xuaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCByZXF1ZXN0IGZyb20gJ3JlcXVlc3QnO1xuaW1wb3J0IFN0cmVhbSBmcm9tICdzdHJlYW0nO1xuaW1wb3J0IFVSTCwgeyBVcmxXaXRoU3RyaW5nUXVlcnkgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHpsaWIgZnJvbSAnemxpYic7XG5cbmltcG9ydCB7IFJlYWRUYXJiYWxsIH0gZnJvbSAnQHZlcmRhY2Npby9zdHJlYW1zJztcbmltcG9ydCB7IENhbGxiYWNrLCBDb25maWcsIEhlYWRlcnMsIExvZ2dlciwgUGFja2FnZSwgVXBMaW5rQ29uZiB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRUb2tlbiB9IGZyb20gJ0B2ZXJkYWNjaW8vdXRpbHMnO1xuXG5pbXBvcnQge1xuICBBUElfRVJST1IsXG4gIENIQVJBQ1RFUl9FTkNPRElORyxcbiAgRVJST1JfQ09ERSxcbiAgSEVBREVSUyxcbiAgSEVBREVSX1RZUEUsXG4gIEhUVFBfU1RBVFVTLFxuICBUT0tFTl9CQVNJQyxcbiAgVE9LRU5fQkVBUkVSLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGlzT2JqZWN0LCBpc09iamVjdE9yQXJyYXksIHBhcnNlSW50ZXJ2YWwgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86cHJveHknKTtcblxuY29uc3QgZW5jb2RlID0gZnVuY3Rpb24gKHRoaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0aGluZykucmVwbGFjZSgvXiU0MC8sICdAJyk7XG59O1xuXG5jb25zdCBqc29uQ29udGVudFR5cGUgPSBIRUFERVJTLkpTT047XG5jb25zdCBjb250ZW50VHlwZUFjY2VwdCA9IGAke2pzb25Db250ZW50VHlwZX07YDtcblxuLyoqXG4gKiBKdXN0IGEgaGVscGVyIChgY29uZmlnW2tleV0gfHwgZGVmYXVsdGAgZG9lc24ndCB3b3JrIGJlY2F1c2Ugb2YgemVyb2VzKVxuICovXG5jb25zdCBzZXRDb25maWcgPSAoY29uZmlnLCBrZXksIGRlZik6IHN0cmluZyA9PiB7XG4gIHJldHVybiBfLmlzTmlsKGNvbmZpZ1trZXldKSA9PT0gZmFsc2UgPyBjb25maWdba2V5XSA6IGRlZjtcbn07XG5cbi8qKlxuICogSW1wbGVtZW50cyBTdG9yYWdlIGludGVyZmFjZVxuICogKHNhbWUgZm9yIHN0b3JhZ2UuanMsIGxvY2FsLXN0b3JhZ2UuanMsIHVwLXN0b3JhZ2UuanMpXG4gKi9cbmNsYXNzIFByb3h5U3RvcmFnZSB7XG4gIHB1YmxpYyBjb25maWc6IFVwTGlua0NvbmY7XG4gIHB1YmxpYyBmYWlsZWRfcmVxdWVzdHM6IG51bWJlcjtcbiAgcHVibGljIHVzZXJBZ2VudDogc3RyaW5nO1xuICBwdWJsaWMgY2E6IHN0cmluZyB8IHZvaWQ7XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcbiAgcHVibGljIHNlcnZlcl9pZDogc3RyaW5nO1xuICBwdWJsaWMgdXJsOiBhbnk7XG4gIHB1YmxpYyBtYXhhZ2U6IG51bWJlcjtcbiAgcHVibGljIHRpbWVvdXQ6IG51bWJlcjtcbiAgcHVibGljIG1heF9mYWlsczogbnVtYmVyO1xuICBwdWJsaWMgZmFpbF90aW1lb3V0OiBudW1iZXI7XG4gIHB1YmxpYyBhZ2VudF9vcHRpb25zOiBhbnk7XG4gIC8vIEZJWE1FOiB1cG5hbWUgaXMgYXNzaWduZWQgdG8gZWFjaCBpbnN0YW5jZVxuICAvLyBAdHMtaWdub3JlXG4gIHB1YmxpYyB1cG5hbWU6IHN0cmluZztcbiAgLy8gRklYTUU6IHByb3h5IGNhbiBiZSBib29sZWFuIG9yIG9iamVjdCwgc29tZXRoaW5nIHNtZWxscyBoZXJlXG4gIC8vIEB0cy1pZ25vcmVcbiAgcHVibGljIHByb3h5OiBzdHJpbmcgfCB2b2lkO1xuICAvLyBAdHMtaWdub3JlXG4gIHB1YmxpYyBsYXN0X3JlcXVlc3RfdGltZTogbnVtYmVyIHwgbnVsbDtcbiAgcHVibGljIHN0cmljdF9zc2w6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7Kn0gY29uZmlnXG4gICAqIEBwYXJhbSB7Kn0gbWFpbkNvbmZpZ1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogVXBMaW5rQ29uZiwgbWFpbkNvbmZpZzogQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5mYWlsZWRfcmVxdWVzdHMgPSAwO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLnVzZXJBZ2VudCA9IG1haW5Db25maWcudXNlcl9hZ2VudCA/PyAnaGlkZGVuJztcbiAgICB0aGlzLmNhID0gY29uZmlnLmNhO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIHRoaXMuc2VydmVyX2lkID0gbWFpbkNvbmZpZy5zZXJ2ZXJfaWQ7XG5cbiAgICB0aGlzLnVybCA9IFVSTC5wYXJzZSh0aGlzLmNvbmZpZy51cmwpO1xuXG4gICAgdGhpcy5fc2V0dXBQcm94eSh0aGlzLnVybC5ob3N0bmFtZSwgY29uZmlnLCBtYWluQ29uZmlnLCB0aGlzLnVybC5wcm90b2NvbCA9PT0gJ2h0dHBzOicpO1xuXG4gICAgdGhpcy5jb25maWcudXJsID0gdGhpcy5jb25maWcudXJsLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG5cbiAgICBpZiAodGhpcy5jb25maWcudGltZW91dCAmJiBOdW1iZXIodGhpcy5jb25maWcudGltZW91dCkgPj0gMTAwMCkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgW1xuICAgICAgICAgICdUb28gYmlnIHRpbWVvdXQgdmFsdWU6ICcgKyB0aGlzLmNvbmZpZy50aW1lb3V0LFxuICAgICAgICAgICdXZSBjaGFuZ2VkIHRpbWUgZm9ybWF0IHRvIG5naW54LWxpa2Ugb25lJyxcbiAgICAgICAgICAnKHNlZSBodHRwOi8vbmdpbngub3JnL2VuL2RvY3Mvc3ludGF4Lmh0bWwpJyxcbiAgICAgICAgICAnc28gcGxlYXNlIHVwZGF0ZSB5b3VyIGNvbmZpZyBhY2NvcmRpbmdseScsXG4gICAgICAgIF0uam9pbignXFxuJylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gYSBidW5jaCBvZiBkaWZmZXJlbnQgY29uZmlndXJhYmxlIHRpbWVyc1xuICAgIHRoaXMubWF4YWdlID0gcGFyc2VJbnRlcnZhbChzZXRDb25maWcodGhpcy5jb25maWcsICdtYXhhZ2UnLCAnMm0nKSk7XG4gICAgdGhpcy50aW1lb3V0ID0gcGFyc2VJbnRlcnZhbChzZXRDb25maWcodGhpcy5jb25maWcsICd0aW1lb3V0JywgJzMwcycpKTtcbiAgICB0aGlzLm1heF9mYWlscyA9IE51bWJlcihzZXRDb25maWcodGhpcy5jb25maWcsICdtYXhfZmFpbHMnLCAyKSk7XG4gICAgdGhpcy5mYWlsX3RpbWVvdXQgPSBwYXJzZUludGVydmFsKHNldENvbmZpZyh0aGlzLmNvbmZpZywgJ2ZhaWxfdGltZW91dCcsICc1bScpKTtcbiAgICB0aGlzLnN0cmljdF9zc2wgPSBCb29sZWFuKHNldENvbmZpZyh0aGlzLmNvbmZpZywgJ3N0cmljdF9zc2wnLCB0cnVlKSk7XG4gICAgdGhpcy5hZ2VudF9vcHRpb25zID0gc2V0Q29uZmlnKHRoaXMuY29uZmlnLCAnYWdlbnRfb3B0aW9ucycsIHtcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICAgIG1heFNvY2tldHM6IDQwLFxuICAgICAgbWF4RnJlZVNvY2tldHM6IDEwLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuIGFzc2V0LlxuICAgKiBAcGFyYW0geyp9IG9wdGlvbnNcbiAgICogQHBhcmFtIHsqfSBjYlxuICAgKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICAgKi9cbiAgcHJpdmF0ZSByZXF1ZXN0KG9wdGlvbnM6IGFueSwgY2I/OiBDYWxsYmFjayk6IFN0cmVhbS5SZWFkYWJsZSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBpZiAodGhpcy5fc3RhdHVzQ2hlY2soKSA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHN0cmVhbVJlYWQgPSBuZXcgU3RyZWFtLlJlYWRhYmxlKCk7XG5cbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgICBpZiAoY2IpIHtcbiAgICAgICAgICBjYihFcnJvckNvZGUuZ2V0SW50ZXJuYWxFcnJvcihBUElfRVJST1IuVVBMSU5LX09GRkxJTkUpKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJlYW1SZWFkLmVtaXQoJ2Vycm9yJywgRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoQVBJX0VSUk9SLlVQTElOS19PRkZMSU5FKSk7XG4gICAgICB9KTtcblxuICAgICAgc3RyZWFtUmVhZC5fcmVhZCA9IGZ1bmN0aW9uICgpOiB2b2lkIHt9O1xuICAgICAgLy8gcHJldmVudGluZyAnVW5jYXVnaHQsIHVuc3BlY2lmaWVkIFwiZXJyb3JcIiBldmVudCdcbiAgICAgIHN0cmVhbVJlYWQub24oJ2Vycm9yJywgZnVuY3Rpb24gKCk6IHZvaWQge30pO1xuICAgICAgcmV0dXJuIHN0cmVhbVJlYWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgaGVhZGVyczogSGVhZGVycyA9IHRoaXMuX3NldEhlYWRlcnMob3B0aW9ucyk7XG5cbiAgICB0aGlzLl9hZGRQcm94eUhlYWRlcnMob3B0aW9ucy5yZXEsIGhlYWRlcnMpO1xuICAgIHRoaXMuX292ZXJyaWRlV2l0aFVwTGlua0NvbmZpZ0hlYWRlcnMoaGVhZGVycyk7XG5cbiAgICBjb25zdCBtZXRob2QgPSBvcHRpb25zLm1ldGhvZCB8fCAnR0VUJztcbiAgICBjb25zdCB1cmkgPSBvcHRpb25zLnVyaV9mdWxsIHx8IHRoaXMuY29uZmlnLnVybCArIG9wdGlvbnMudXJpO1xuXG4gICAgc2VsZi5sb2dnZXIuaW5mbyhcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgIHVyaTogdXJpLFxuICAgICAgfSxcbiAgICAgIFwibWFraW5nIHJlcXVlc3Q6ICdAe21ldGhvZH0gQHt1cml9J1wiXG4gICAgKTtcblxuICAgIGlmIChpc09iamVjdChvcHRpb25zLmpzb24pKSB7XG4gICAgICBqc29uID0gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5qc29uKTtcbiAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gaGVhZGVyc1snQ29udGVudC1UeXBlJ10gfHwgSEVBREVSUy5KU09OO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3RDYWxsYmFjayA9IGNiXG4gICAgICA/IGZ1bmN0aW9uIChlcnIsIHJlcywgYm9keSk6IHZvaWQge1xuICAgICAgICAgIGxldCBlcnJvcjtcbiAgICAgICAgICBjb25zdCByZXNwb25zZUxlbmd0aCA9IGVyciA/IDAgOiBib2R5Lmxlbmd0aDtcblxuICAgICAgICAgIHByb2Nlc3NCb2R5KCk7XG4gICAgICAgICAgbG9nQWN0aXZpdHkoKTtcblxuICAgICAgICAgIGNiKGVyciwgcmVzLCBib2R5KTtcblxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIFBlcmZvcm0gYSBkZWNvZGUuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc0JvZHkoKTogdm9pZCB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIGVycm9yID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuanNvbiAmJiByZXMuc3RhdHVzQ29kZSA8IDMwMCkge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKGJvZHkudG9TdHJpbmcoQ0hBUkFDVEVSX0VOQ09ESU5HLlVURjgpKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoX2Vycikge1xuICAgICAgICAgICAgICAgIGJvZHkgPSB7fTtcbiAgICAgICAgICAgICAgICBlcnIgPSBfZXJyO1xuICAgICAgICAgICAgICAgIGVycm9yID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFlcnIgJiYgaXNPYmplY3QoYm9keSkpIHtcbiAgICAgICAgICAgICAgaWYgKF8uaXNTdHJpbmcoYm9keS5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICBlcnJvciA9IGJvZHkuZXJyb3I7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogUGVyZm9ybSBhIGxvZy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBmdW5jdGlvbiBsb2dBY3Rpdml0eSgpOiB2b2lkIHtcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gXCJAeyFzdGF0dXN9LCByZXE6ICdAe3JlcXVlc3QubWV0aG9kfSBAe3JlcXVlc3QudXJsfSdcIjtcbiAgICAgICAgICAgIG1lc3NhZ2UgKz0gZXJyb3IgPyAnLCBlcnJvcjogQHshZXJyb3J9JyA6ICcsIGJ5dGVzOiBAe2J5dGVzLmlufS9Ae2J5dGVzLm91dH0nO1xuICAgICAgICAgICAgc2VsZi5sb2dnZXIuaHR0cChcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVycjogZXJyIHx8IHVuZGVmaW5lZCwgLy8gaWYgZXJyb3IgaXMgbnVsbC9mYWxzZSBjaGFuZ2UgdGhpcyB0byB1bmRlZmluZWQgc28gaXQgd29udCBsb2dcbiAgICAgICAgICAgICAgICByZXF1ZXN0OiB7IG1ldGhvZDogbWV0aG9kLCB1cmw6IHVyaSB9LFxuICAgICAgICAgICAgICAgIHN0YXR1czogcmVzICE9IG51bGwgPyByZXMuc3RhdHVzQ29kZSA6ICdFUlInLFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgICAgICAgICAgICBieXRlczoge1xuICAgICAgICAgICAgICAgICAgaW46IGpzb24gPyBqc29uLmxlbmd0aCA6IDAsXG4gICAgICAgICAgICAgICAgICBvdXQ6IHJlc3BvbnNlTGVuZ3RoIHx8IDAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGxldCByZXF1ZXN0T3B0aW9uczogcmVxdWVzdC5PcHRpb25zV2l0aFVybCA9IHtcbiAgICAgIHVybDogdXJpLFxuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgYm9keToganNvbixcbiAgICAgIHByb3h5OiB0aGlzLnByb3h5LFxuICAgICAgZW5jb2Rpbmc6IG51bGwsXG4gICAgICBnemlwOiB0cnVlLFxuICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgc3RyaWN0U1NMOiB0aGlzLnN0cmljdF9zc2wsXG4gICAgICBhZ2VudE9wdGlvbnM6IHRoaXMuYWdlbnRfb3B0aW9ucyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY2EpIHtcbiAgICAgIHJlcXVlc3RPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgcmVxdWVzdE9wdGlvbnMsIHtcbiAgICAgICAgY2E6IHRoaXMuY2EsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXEgPSByZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCByZXF1ZXN0Q2FsbGJhY2spO1xuXG4gICAgbGV0IHN0YXR1c0NhbGxlZCA9IGZhbHNlO1xuICAgIHJlcS5vbigncmVzcG9uc2UnLCBmdW5jdGlvbiAocmVzKTogdm9pZCB7XG4gICAgICAvLyBGSVhNRTogX3ZlcmRhY2Npb19hYm9ydGVkIHNlZW1zIG5vdCB1c2VkXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoIXJlcS5fdmVyZGFjY2lvX2Fib3J0ZWQgJiYgIXN0YXR1c0NhbGxlZCkge1xuICAgICAgICBzdGF0dXNDYWxsZWQgPSB0cnVlO1xuICAgICAgICBzZWxmLl9zdGF0dXNDaGVjayh0cnVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNOaWwocmVxdWVzdENhbGxiYWNrKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgKGZ1bmN0aW9uIGRvX2xvZygpOiB2b2lkIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gXCJAeyFzdGF0dXN9LCByZXE6ICdAe3JlcXVlc3QubWV0aG9kfSBAe3JlcXVlc3QudXJsfScgKHN0cmVhbWluZylcIjtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5odHRwKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByZXF1ZXN0OiB7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgICAgICAgICAgdXJsOiB1cmksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHN0YXR1czogXy5pc051bGwocmVzKSA9PT0gZmFsc2UgPyByZXMuc3RhdHVzQ29kZSA6ICdFUlInLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICApO1xuICAgICAgICB9KSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJlcS5vbignZXJyb3InLCBmdW5jdGlvbiAoX2Vycik6IHZvaWQge1xuICAgICAgLy8gRklYTUU6IF92ZXJkYWNjaW9fYWJvcnRlZCBzZWVtcyBub3QgdXNlZFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKCFyZXEuX3ZlcmRhY2Npb19hYm9ydGVkICYmICFzdGF0dXNDYWxsZWQpIHtcbiAgICAgICAgc3RhdHVzQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgc2VsZi5fc3RhdHVzQ2hlY2soZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVxO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkZWZhdWx0IGhlYWRlcnMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3NldEhlYWRlcnMob3B0aW9uczogYW55KTogSGVhZGVycyB7XG4gICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyB8fCB7fTtcbiAgICBjb25zdCBhY2NlcHQgPSBIRUFERVJTLkFDQ0VQVDtcbiAgICBjb25zdCBhY2NlcHRFbmNvZGluZyA9IEhFQURFUlMuQUNDRVBUX0VOQ09ESU5HO1xuICAgIGNvbnN0IHVzZXJBZ2VudCA9IEhFQURFUlMuVVNFUl9BR0VOVDtcblxuICAgIGhlYWRlcnNbYWNjZXB0XSA9IGhlYWRlcnNbYWNjZXB0XSB8fCBjb250ZW50VHlwZUFjY2VwdDtcbiAgICBoZWFkZXJzW2FjY2VwdEVuY29kaW5nXSA9IGhlYWRlcnNbYWNjZXB0RW5jb2RpbmddIHx8ICdnemlwJztcbiAgICAvLyByZWdpc3RyeS5ucG1qcy5vcmcgd2lsbCBvbmx5IHJldHVybiBzZWFyY2ggcmVzdWx0IGlmIHVzZXItYWdlbnQgaW5jbHVkZSBzdHJpbmcgJ25wbSdcbiAgICBoZWFkZXJzW3VzZXJBZ2VudF0gPSB0aGlzLnVzZXJBZ2VudFxuICAgICAgPyBgbnBtICgke3RoaXMudXNlckFnZW50fSlgXG4gICAgICA6IG9wdGlvbnMucmVxPy5nZXQoJ3VzZXItYWdlbnQnKTtcblxuICAgIHJldHVybiB0aGlzLl9zZXRBdXRoKGhlYWRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGNvbmZpZ3VyYXRpb24gYXV0aCBhbmQgYXNzaWduIEhlYWRlciBhdXRob3JpemF0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkZXJzXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3NldEF1dGgoaGVhZGVyczogYW55KTogSGVhZGVycyB7XG4gICAgY29uc3QgeyBhdXRoIH0gPSB0aGlzLmNvbmZpZztcblxuICAgIGlmIChfLmlzTmlsKGF1dGgpIHx8IGhlYWRlcnNbSEVBREVSUy5BVVRIT1JJWkFUSU9OXSkge1xuICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNPYmplY3QoYXV0aCkgPT09IGZhbHNlICYmIF8uaXNPYmplY3QoYXV0aC50b2tlbikgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl90aHJvd0Vycm9yQXV0aCgnQXV0aCBpbnZhbGlkJyk7XG4gICAgfVxuXG4gICAgLy8gZ2V0IE5QTV9UT0tFTiBodHRwOi8vYmxvZy5ucG1qcy5vcmcvcG9zdC8xMTgzOTMzNjg1NTUvZGVwbG95aW5nLXdpdGgtbnBtLXByaXZhdGUtbW9kdWxlc1xuICAgIC8vIG9yIGdldCBvdGhlciB2YXJpYWJsZSBleHBvcnQgaW4gZW52XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3ZlcmRhY2Npby92ZXJkYWNjaW8vcmVsZWFzZXMvdGFnL3YyLjUuMFxuICAgIGxldCB0b2tlbjogYW55O1xuICAgIGNvbnN0IHRva2VuQ29uZjogYW55ID0gYXV0aDtcblxuICAgIGlmIChfLmlzTmlsKHRva2VuQ29uZi50b2tlbikgPT09IGZhbHNlICYmIF8uaXNTdHJpbmcodG9rZW5Db25mLnRva2VuKSkge1xuICAgICAgdG9rZW4gPSB0b2tlbkNvbmYudG9rZW47XG4gICAgfSBlbHNlIGlmIChfLmlzTmlsKHRva2VuQ29uZi50b2tlbl9lbnYpID09PSBmYWxzZSkge1xuICAgICAgaWYgKF8uaXNTdHJpbmcodG9rZW5Db25mLnRva2VuX2VudikpIHtcbiAgICAgICAgdG9rZW4gPSBwcm9jZXNzLmVudlt0b2tlbkNvbmYudG9rZW5fZW52XTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc0Jvb2xlYW4odG9rZW5Db25mLnRva2VuX2VudikgJiYgdG9rZW5Db25mLnRva2VuX2Vudikge1xuICAgICAgICB0b2tlbiA9IHByb2Nlc3MuZW52Lk5QTV9UT0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKEVSUk9SX0NPREUudG9rZW5fcmVxdWlyZWQpO1xuICAgICAgICB0aGlzLl90aHJvd0Vycm9yQXV0aChFUlJPUl9DT0RFLnRva2VuX3JlcXVpcmVkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSBwcm9jZXNzLmVudi5OUE1fVE9LRU47XG4gICAgfVxuXG4gICAgaWYgKF8uaXNOaWwodG9rZW4pKSB7XG4gICAgICB0aGlzLl90aHJvd0Vycm9yQXV0aChFUlJPUl9DT0RFLnRva2VuX3JlcXVpcmVkKTtcbiAgICB9XG5cbiAgICAvLyBkZWZpbmUgdHlwZSBBdXRoIGFsbG93IGJhc2ljIGFuZCBiZWFyZXJcbiAgICBjb25zdCB0eXBlID0gdG9rZW5Db25mLnR5cGUgfHwgVE9LRU5fQkFTSUM7XG4gICAgdGhpcy5fc2V0SGVhZGVyQXV0aG9yaXphdGlvbihoZWFkZXJzLCB0eXBlLCB0b2tlbik7XG5cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3Rocm93RXJyb3JBdXRoKG1lc3NhZ2U6IHN0cmluZyk6IEVycm9yIHtcbiAgICB0aGlzLmxvZ2dlci5lcnJvcihtZXNzYWdlKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogQXNzaWduIEhlYWRlciBhdXRob3JpemF0aW9uIHdpdGggdHlwZSBhdXRoZW50aWNhdGlvblxuICAgKiBAcGFyYW0ge09iamVjdH0gaGVhZGVyc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3NldEhlYWRlckF1dGhvcml6YXRpb24oaGVhZGVyczogYW55LCB0eXBlOiBzdHJpbmcsIHRva2VuOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBfdHlwZTogc3RyaW5nID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKF90eXBlICE9PSBUT0tFTl9CRUFSRVIudG9Mb3dlckNhc2UoKSAmJiBfdHlwZSAhPT0gVE9LRU5fQkFTSUMudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhpcy5fdGhyb3dFcnJvckF1dGgoYEF1dGggdHlwZSAnJHtfdHlwZX0nIG5vdCBhbGxvd2VkYCk7XG4gICAgfVxuXG4gICAgdHlwZSA9IF8udXBwZXJGaXJzdCh0eXBlKTtcbiAgICBoZWFkZXJzW0hFQURFUlMuQVVUSE9SSVpBVElPTl0gPSBidWlsZFRva2VuKHR5cGUsIHRva2VuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGFkZCBvciBvdmVycmlkZSBzcGVjaWZpZWQgaGVhZGVycyBmcm9tIGNvbmZpZyBmaWxlLlxuICAgKlxuICAgKiBFZzpcbiAgICpcbiAgICogdXBsaW5rczpcbiAgIG5wbWpzOlxuICAgdXJsOiBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9cbiAgIGhlYWRlcnM6XG4gICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYyK2pzb247IHE9MS4wXCJcbiAgIHZlcmRhY2Npby1zdGFnaW5nOlxuICAgdXJsOiBodHRwczovL215Y29tcGFueS5jb20vbnBtXG4gICBoZWFkZXJzOlxuICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgYXV0aG9yaXphdGlvbjogXCJCYXNpYyBZb3VyQmFzZTY0RW5jb2RlZENyZWRlbnRpYWxzPT1cIlxuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkZXJzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9vdmVycmlkZVdpdGhVcExpbmtDb25maWdIZWFkZXJzKGhlYWRlcnM6IEhlYWRlcnMpOiBhbnkge1xuICAgIGlmICghdGhpcy5jb25maWcuaGVhZGVycykge1xuICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgfVxuXG4gICAgLy8gYWRkL292ZXJyaWRlIGhlYWRlcnMgc3BlY2lmaWVkIGluIHRoZSBjb25maWdcbiAgICAvKiBlc2xpbnQgZ3VhcmQtZm9yLWluOiAwICovXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jb25maWcuaGVhZGVycykge1xuICAgICAgaGVhZGVyc1trZXldID0gdGhpcy5jb25maWcuaGVhZGVyc1trZXldO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBjYW4gZmV0Y2ggZnJvbSB0aGUgcHJvdmlkZWQgVVJMXG4gICAqIEBwYXJhbSB7Kn0gdXJsXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAqL1xuICBwdWJsaWMgaXNVcGxpbmtWYWxpZCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHVybFBhcnNlZDogVXJsV2l0aFN0cmluZ1F1ZXJ5ID0gVVJMLnBhcnNlKHVybCk7XG4gICAgY29uc3QgaXNIVFRQUyA9ICh1cmxEb21haW5QYXJzZWQ6IFVSTCk6IGJvb2xlYW4gPT5cbiAgICAgIHVybERvbWFpblBhcnNlZC5wcm90b2NvbCA9PT0gJ2h0dHBzOicgJiZcbiAgICAgICh1cmxQYXJzZWQucG9ydCA9PT0gbnVsbCB8fCB1cmxQYXJzZWQucG9ydCA9PT0gJzQ0MycpO1xuICAgIGNvbnN0IGdldEhvc3QgPSAodXJsRG9tYWluUGFyc2VkKTogYm9vbGVhbiA9PlxuICAgICAgaXNIVFRQUyh1cmxEb21haW5QYXJzZWQpID8gdXJsRG9tYWluUGFyc2VkLmhvc3RuYW1lIDogdXJsRG9tYWluUGFyc2VkLmhvc3Q7XG4gICAgY29uc3QgaXNNYXRjaFByb3RvY29sOiBib29sZWFuID0gdXJsUGFyc2VkLnByb3RvY29sID09PSB0aGlzLnVybC5wcm90b2NvbDtcbiAgICBjb25zdCBpc01hdGNoSG9zdDogYm9vbGVhbiA9IGdldEhvc3QodXJsUGFyc2VkKSA9PT0gZ2V0SG9zdCh0aGlzLnVybCk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGlzTWF0Y2hQYXRoOiBib29sZWFuID0gdXJsUGFyc2VkLnBhdGguaW5kZXhPZih0aGlzLnVybC5wYXRoKSA9PT0gMDtcblxuICAgIHJldHVybiBpc01hdGNoUHJvdG9jb2wgJiYgaXNNYXRjaEhvc3QgJiYgaXNNYXRjaFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcmVtb3RlIHBhY2thZ2UgbWV0YWRhdGFcbiAgICogQHBhcmFtIHsqfSBuYW1lIHBhY2thZ2UgbmFtZVxuICAgKiBAcGFyYW0geyp9IG9wdGlvbnMgcmVxdWVzdCBvcHRpb25zLCBlZzogZVRhZy5cbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIGdldFJlbW90ZU1ldGFkYXRhKG5hbWU6IHN0cmluZywgb3B0aW9uczogYW55LCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBoZWFkZXJzID0ge307XG4gICAgaWYgKF8uaXNOaWwob3B0aW9ucy5ldGFnKSA9PT0gZmFsc2UpIHtcbiAgICAgIGhlYWRlcnNbJ0lmLU5vbmUtTWF0Y2gnXSA9IG9wdGlvbnMuZXRhZztcbiAgICAgIGhlYWRlcnNbSEVBREVSUy5BQ0NFUFRdID0gY29udGVudFR5cGVBY2NlcHQ7XG4gICAgfVxuXG4gICAgdGhpcy5yZXF1ZXN0KFxuICAgICAge1xuICAgICAgICB1cmk6IGAvJHtlbmNvZGUobmFtZSl9YCxcbiAgICAgICAganNvbjogdHJ1ZSxcbiAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgcmVxOiBvcHRpb25zLnJlcSxcbiAgICAgIH0sXG4gICAgICAoZXJyLCByZXMsIGJvZHkpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXROb3RGb3VuZChBUElfRVJST1IuTk9UX1BBQ0tBR0VfVVBMSU5LKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEocmVzLnN0YXR1c0NvZGUgPj0gSFRUUF9TVEFUVVMuT0sgJiYgcmVzLnN0YXR1c0NvZGUgPCBIVFRQX1NUQVRVUy5NVUxUSVBMRV9DSE9JQ0VTKSkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBgJHtBUElfRVJST1IuQkFEX1NUQVRVU19DT0RFfTogJHtyZXMuc3RhdHVzQ29kZX1gXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGVycm9yLnJlbW90ZVN0YXR1cyA9IHJlcy5zdGF0dXNDb2RlO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2sobnVsbCwgYm9keSwgcmVzLmhlYWRlcnMuZXRhZyk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhIHRhcmJhbGwgZnJvbSB0aGUgdXBsaW5rLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIHB1YmxpYyBmZXRjaFRhcmJhbGwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZFRhcmJhbGwoe30pO1xuICAgIGxldCBjdXJyZW50X2xlbmd0aCA9IDA7XG4gICAgbGV0IGV4cGVjdGVkX2xlbmd0aDtcblxuICAgIHN0cmVhbS5hYm9ydCA9ICgpID0+IHt9O1xuICAgIGNvbnN0IHJlYWRTdHJlYW0gPSB0aGlzLnJlcXVlc3Qoe1xuICAgICAgdXJpX2Z1bGw6IHVybCxcbiAgICAgIGVuY29kaW5nOiBudWxsLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBBY2NlcHQ6IGNvbnRlbnRUeXBlQWNjZXB0LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJlYWRTdHJlYW0ub24oJ3Jlc3BvbnNlJywgZnVuY3Rpb24gKHJlczogYW55KSB7XG4gICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IEhUVFBfU1RBVFVTLk5PVF9GT1VORCkge1xuICAgICAgICByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgRXJyb3JDb2RlLmdldE5vdEZvdW5kKEFQSV9FUlJPUi5OT1RfRklMRV9VUExJTkspKTtcbiAgICAgIH1cbiAgICAgIGlmICghKHJlcy5zdGF0dXNDb2RlID49IEhUVFBfU1RBVFVTLk9LICYmIHJlcy5zdGF0dXNDb2RlIDwgSFRUUF9TVEFUVVMuTVVMVElQTEVfQ0hPSUNFUykpIHtcbiAgICAgICAgcmV0dXJuIHN0cmVhbS5lbWl0KFxuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoYGJhZCB1cGxpbmsgc3RhdHVzIGNvZGU6ICR7cmVzLnN0YXR1c0NvZGV9YClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXMuaGVhZGVyc1tIRUFERVJfVFlQRS5DT05URU5UX0xFTkdUSF0pIHtcbiAgICAgICAgZXhwZWN0ZWRfbGVuZ3RoID0gcmVzLmhlYWRlcnNbSEVBREVSX1RZUEUuQ09OVEVOVF9MRU5HVEhdO1xuICAgICAgICBzdHJlYW0uZW1pdChIRUFERVJfVFlQRS5DT05URU5UX0xFTkdUSCwgcmVzLmhlYWRlcnNbSEVBREVSX1RZUEUuQ09OVEVOVF9MRU5HVEhdKTtcbiAgICAgIH1cblxuICAgICAgcmVhZFN0cmVhbS5waXBlKHN0cmVhbSk7XG4gICAgfSk7XG5cbiAgICByZWFkU3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgfSk7XG4gICAgcmVhZFN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBjdXJyZW50X2xlbmd0aCArPSBkYXRhLmxlbmd0aDtcbiAgICB9KTtcbiAgICByZWFkU3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgY3VycmVudF9sZW5ndGggKz0gZGF0YS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBpZiAoZXhwZWN0ZWRfbGVuZ3RoICYmIGN1cnJlbnRfbGVuZ3RoICE9IGV4cGVjdGVkX2xlbmd0aCkge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBFcnJvckNvZGUuZ2V0SW50ZXJuYWxFcnJvcihBUElfRVJST1IuQ09OVEVOVF9NSVNNQVRDSCkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzdHJlYW07XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBhIHN0cmVhbSBzZWFyY2guXG4gICAqIEBwYXJhbSB7Kn0gb3B0aW9ucyByZXF1ZXN0IG9wdGlvbnNcbiAgICogQHJldHVybiB7U3RyZWFtfVxuICAgKi9cbiAgcHVibGljIHNlYXJjaChvcHRpb25zOiBhbnkpIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1TdHJlYW06IGFueSA9IG5ldyBTdHJlYW0uUGFzc1Rocm91Z2goeyBvYmplY3RNb2RlOiB0cnVlIH0pO1xuICAgIGNvbnN0IHJlcXVlc3RTdHJlYW06IFN0cmVhbS5SZWFkYWJsZSA9IHRoaXMucmVxdWVzdCh7XG4gICAgICB1cmk6IG9wdGlvbnMucmVxLnVybCxcbiAgICAgIHJlcTogb3B0aW9ucy5yZXEsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIC8vIHF1ZXJ5IGZvciBzZWFyY2hcbiAgICAgICAgcmVmZXJlcjogb3B0aW9ucy5yZXEuZ2V0KCdyZWZlcmVyJyksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGFyc2VQYWNrYWdlID0gKHBrZzogUGFja2FnZSk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGlzT2JqZWN0T3JBcnJheShwa2cpKSB7XG4gICAgICAgIHRyYW5zZm9ybVN0cmVhbS5lbWl0KCdkYXRhJywgcGtnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVxdWVzdFN0cmVhbS5vbigncmVzcG9uc2UnLCAocmVzKTogdm9pZCA9PiB7XG4gICAgICBpZiAoIVN0cmluZyhyZXMuc3RhdHVzQ29kZSkubWF0Y2goL14yXFxkXFxkJC8pKSB7XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1TdHJlYW0uZW1pdChcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKGBiYWQgc3RhdHVzIGNvZGUgJHtyZXMuc3RhdHVzQ29kZX0gZnJvbSB1cGxpbmtgKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlcXVlc3QvcmVxdWVzdCNyZXF1ZXN0b3B0aW9ucy1jYWxsYmFja1xuICAgICAgLy8gUmVxdWVzdCBsaWJyYXJ5IHdpbGwgbm90IGRlY29kZSBnemlwIHN0cmVhbS5cbiAgICAgIGxldCBqc29uU3RyZWFtO1xuICAgICAgaWYgKHJlcy5oZWFkZXJzW0hFQURFUl9UWVBFLkNPTlRFTlRfRU5DT0RJTkddID09PSBIRUFERVJTLkdaSVApIHtcbiAgICAgICAganNvblN0cmVhbSA9IHJlcy5waXBlKHpsaWIuY3JlYXRlVW56aXAoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqc29uU3RyZWFtID0gcmVzO1xuICAgICAgfVxuICAgICAganNvblN0cmVhbS5waXBlKEpTT05TdHJlYW0ucGFyc2UoJyonKSkub24oJ2RhdGEnLCBwYXJzZVBhY2thZ2UpO1xuICAgICAganNvblN0cmVhbS5vbignZW5kJywgKCk6IHZvaWQgPT4ge1xuICAgICAgICB0cmFuc2Zvcm1TdHJlYW0uZW1pdCgnZW5kJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJlcXVlc3RTdHJlYW0ub24oJ2Vycm9yJywgKGVycjogRXJyb3IpOiB2b2lkID0+IHtcbiAgICAgIHRyYW5zZm9ybVN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgfSk7XG5cbiAgICB0cmFuc2Zvcm1TdHJlYW0uYWJvcnQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAvLyBGSVhNRTogdGhpcyBpcyBjbGVhcmx5IGEgcG90ZW50aWFsIGlzc3VlXG4gICAgICAvLyB0aGVyZSBpcyBubyBhYm9ydCBtZXRob2Qgb24gU3RyZWFtLlJlYWRhYmxlXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXF1ZXN0U3RyZWFtLmFib3J0KCk7XG4gICAgICB0cmFuc2Zvcm1TdHJlYW0uZW1pdCgnZW5kJyk7XG4gICAgfTtcblxuICAgIHJldHVybiB0cmFuc2Zvcm1TdHJlYW07XG4gIH1cblxuICAvKipcbiAgICogQWRkIHByb3h5IGhlYWRlcnMuXG4gICAqIEZJWE1FOiBvYmplY3QgbXV0YXRpb25zLCBpdCBzaG91bGQgcmV0dXJuIGFuIG5ldyBvYmplY3RcbiAgICogQHBhcmFtIHsqfSByZXEgdGhlIGh0dHAgcmVxdWVzdFxuICAgKiBAcGFyYW0geyp9IGhlYWRlcnMgdGhlIHJlcXVlc3QgaGVhZGVyc1xuICAgKi9cbiAgcHJpdmF0ZSBfYWRkUHJveHlIZWFkZXJzKHJlcTogYW55LCBoZWFkZXJzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAocmVxKSB7XG4gICAgICAvLyBPbmx5IHN1Ym1pdCBYLUZvcndhcmRlZC1Gb3IgZmllbGQgaWYgd2UgZG9uJ3QgaGF2ZSBhIHByb3h5IHNlbGVjdGVkXG4gICAgICAvLyBpbiB0aGUgY29uZmlnIGZpbGUuXG4gICAgICAvL1xuICAgICAgLy8gT3RoZXJ3aXNlIG1pc2NvbmZpZ3VyZWQgcHJveHkgY291bGQgcmV0dXJuIDQwNzpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ybGlkd2thL3Npbm9waWEvaXNzdWVzLzI1NFxuICAgICAgLy9cbiAgICAgIC8vIEZJWE1FOiBwcm94eSBsb2dpYyBpcyBvZGQsIHNvbWV0aGluZyBpcyB3cm9uZyBoZXJlLlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKCF0aGlzLnByb3h5KSB7XG4gICAgICAgIGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddID1cbiAgICAgICAgICAocmVxLmdldCgneC1mb3J3YXJkZWQtZm9yJykgPyByZXEuZ2V0KCd4LWZvcndhcmRlZC1mb3InKSArICcsICcgOiAnJykgK1xuICAgICAgICAgIHJlcS5jb25uZWN0aW9uLnJlbW90ZUFkZHJlc3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWx3YXlzIGF0dGFjaCBWaWEgaGVhZGVyIHRvIGF2b2lkIGxvb3BzLCBldmVuIGlmIHdlJ3JlIG5vdCBwcm94eWluZ1xuICAgIGhlYWRlcnNbJ3ZpYSddID0gcmVxICYmIHJlcS5nZXQoJ3ZpYScpID8gcmVxLmdldCgndmlhJykgKyAnLCAnIDogJyc7XG5cbiAgICBoZWFkZXJzWyd2aWEnXSArPSAnMS4xICcgKyB0aGlzLnNlcnZlcl9pZCArICcgKFZlcmRhY2NpbyknO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIHJlbW90ZSBob3N0IGlzIGF2YWlsYWJsZS5cbiAgICogQHBhcmFtIHsqfSBhbGl2ZVxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgcHJpdmF0ZSBfc3RhdHVzQ2hlY2soYWxpdmU/OiBib29sZWFuKTogYm9vbGVhbiB8IHZvaWQge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5faWZSZXF1ZXN0RmFpbHVyZSgpID09PSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGFsaXZlKSB7XG4gICAgICBpZiAodGhpcy5mYWlsZWRfcmVxdWVzdHMgPj0gdGhpcy5tYXhfZmFpbHMpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBob3N0OiB0aGlzLnVybC5ob3N0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2hvc3QgQHtob3N0fSBpcyBiYWNrIG9ubGluZSdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmFpbGVkX3JlcXVlc3RzID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mYWlsZWRfcmVxdWVzdHMrKztcbiAgICAgIGlmICh0aGlzLmZhaWxlZF9yZXF1ZXN0cyA9PT0gdGhpcy5tYXhfZmFpbHMpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBob3N0OiB0aGlzLnVybC5ob3N0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2hvc3QgQHtob3N0fSBpcyBub3cgb2ZmbGluZSdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxhc3RfcmVxdWVzdF90aW1lID0gRGF0ZS5ub3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgcmVxdWVzdCBmYWlsdXJlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfaWZSZXF1ZXN0RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5mYWlsZWRfcmVxdWVzdHMgPj0gdGhpcy5tYXhfZmFpbHMgJiZcbiAgICAgIE1hdGguYWJzKERhdGUubm93KCkgLSAodGhpcy5sYXN0X3JlcXVlc3RfdGltZSBhcyBudW1iZXIpKSA8IHRoaXMuZmFpbF90aW1lb3V0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgYSBwcm94eS5cbiAgICogQHBhcmFtIHsqfSBob3N0bmFtZVxuICAgKiBAcGFyYW0geyp9IGNvbmZpZ1xuICAgKiBAcGFyYW0geyp9IG1haW5jb25maWdcbiAgICogQHBhcmFtIHsqfSBpc0hUVFBTXG4gICAqL1xuICBwcml2YXRlIF9zZXR1cFByb3h5KFxuICAgIGhvc3RuYW1lOiBzdHJpbmcsXG4gICAgY29uZmlnOiBVcExpbmtDb25mLFxuICAgIG1haW5jb25maWc6IENvbmZpZyxcbiAgICBpc0hUVFBTOiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGxldCBub1Byb3h5TGlzdDtcbiAgICBjb25zdCBwcm94eV9rZXk6IHN0cmluZyA9IGlzSFRUUFMgPyAnaHR0cHNfcHJveHknIDogJ2h0dHBfcHJveHknO1xuXG4gICAgLy8gZ2V0IGh0dHBfcHJveHkgYW5kIG5vX3Byb3h5IGNvbmZpZ3NcbiAgICBpZiAocHJveHlfa2V5IGluIGNvbmZpZykge1xuICAgICAgdGhpcy5wcm94eSA9IGNvbmZpZ1twcm94eV9rZXldO1xuICAgIH0gZWxzZSBpZiAocHJveHlfa2V5IGluIG1haW5jb25maWcpIHtcbiAgICAgIHRoaXMucHJveHkgPSBtYWluY29uZmlnW3Byb3h5X2tleV07XG4gICAgfVxuICAgIGlmICgnbm9fcHJveHknIGluIGNvbmZpZykge1xuICAgICAgbm9Qcm94eUxpc3QgPSBjb25maWcubm9fcHJveHk7XG4gICAgfSBlbHNlIGlmICgnbm9fcHJveHknIGluIG1haW5jb25maWcpIHtcbiAgICAgIG5vUHJveHlMaXN0ID0gbWFpbmNvbmZpZy5ub19wcm94eTtcbiAgICB9XG5cbiAgICAvLyB1c2Ugd2dldC1saWtlIGFsZ29yaXRobSB0byBkZXRlcm1pbmUgaWYgcHJveHkgc2hvdWxkbid0IGJlIHVzZWRcbiAgICBpZiAoaG9zdG5hbWVbMF0gIT09ICcuJykge1xuICAgICAgaG9zdG5hbWUgPSAnLicgKyBob3N0bmFtZTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1N0cmluZyhub1Byb3h5TGlzdCkgJiYgbm9Qcm94eUxpc3QubGVuZ3RoKSB7XG4gICAgICBub1Byb3h5TGlzdCA9IG5vUHJveHlMaXN0LnNwbGl0KCcsJyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNBcnJheShub1Byb3h5TGlzdCkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9Qcm94eUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG5vUHJveHlJdGVtID0gbm9Qcm94eUxpc3RbaV07XG4gICAgICAgIGlmIChub1Byb3h5SXRlbVswXSAhPT0gJy4nKSB7XG4gICAgICAgICAgbm9Qcm94eUl0ZW0gPSAnLicgKyBub1Byb3h5SXRlbTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaG9zdG5hbWUubGFzdEluZGV4T2Yobm9Qcm94eUl0ZW0pID09PSBob3N0bmFtZS5sZW5ndGggLSBub1Byb3h5SXRlbS5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAodGhpcy5wcm94eSkge1xuICAgICAgICAgICAgZGVidWcoJ25vdCB1c2luZyBwcm94eSBmb3IgJW8sIGV4Y2x1ZGVkIGJ5ICVvIHJ1bGUnLCB0aGlzLnVybC5ocmVmLCBub1Byb3h5SXRlbSk7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLnByb3h5ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgaXQncyBub24tc3RyaW5nIChpLmUuIFwiZmFsc2VcIiksIGRvbid0IHVzZSBpdFxuICAgIGlmIChfLmlzU3RyaW5nKHRoaXMucHJveHkpID09PSBmYWxzZSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZGVsZXRlIHRoaXMucHJveHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCd1c2luZyBwcm94eSAlbyBmb3IgJW8nLCB0aGlzLnVybC5ocmVmLCB0aGlzLnByb3h5KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJveHlTdG9yYWdlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxJQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFFQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxVQUFBLEdBQUFULE9BQUE7QUFVQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxPQUFBLEdBQUFYLE9BQUE7QUFBOEUsU0FBQUQsdUJBQUFhLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyxnQkFBQUgsR0FBQSxFQUFBSSxHQUFBLEVBQUFDLEtBQUEsSUFBQUQsR0FBQSxHQUFBRSxjQUFBLENBQUFGLEdBQUEsT0FBQUEsR0FBQSxJQUFBSixHQUFBLElBQUFPLE1BQUEsQ0FBQUMsY0FBQSxDQUFBUixHQUFBLEVBQUFJLEdBQUEsSUFBQUMsS0FBQSxFQUFBQSxLQUFBLEVBQUFJLFVBQUEsUUFBQUMsWUFBQSxRQUFBQyxRQUFBLG9CQUFBWCxHQUFBLENBQUFJLEdBQUEsSUFBQUMsS0FBQSxXQUFBTCxHQUFBO0FBQUEsU0FBQU0sZUFBQU0sR0FBQSxRQUFBUixHQUFBLEdBQUFTLFlBQUEsQ0FBQUQsR0FBQSwyQkFBQVIsR0FB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
|
|
625
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfSlNPTlN0cmVhbSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2RlYnVnIiwiX2xvZGFzaCIsIl9yZXF1ZXN0IiwiX3N0cmVhbSIsIl91cmwiLCJfemxpYiIsIl9zdHJlYW1zIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhcmciLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiZGVidWciLCJidWlsZERlYnVnIiwiZW5jb2RlIiwidGhpbmciLCJlbmNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlIiwianNvbkNvbnRlbnRUeXBlIiwiSEVBREVSUyIsIkpTT04iLCJjb250ZW50VHlwZUFjY2VwdCIsInNldENvbmZpZyIsImNvbmZpZyIsImRlZiIsIl8iLCJpc05pbCIsIlByb3h5U3RvcmFnZSIsImNvbnN0cnVjdG9yIiwibWFpbkNvbmZpZyIsIl9tYWluQ29uZmlnJHVzZXJfYWdlbiIsImZhaWxlZF9yZXF1ZXN0cyIsInVzZXJBZ2VudCIsInVzZXJfYWdlbnQiLCJjYSIsImxvZ2dlciIsInNlcnZlcl9pZCIsInVybCIsIlVSTCIsInBhcnNlIiwiX3NldHVwUHJveHkiLCJob3N0bmFtZSIsInByb3RvY29sIiwidGltZW91dCIsIndhcm4iLCJqb2luIiwibWF4YWdlIiwicGFyc2VJbnRlcnZhbCIsIm1heF9mYWlscyIsImZhaWxfdGltZW91dCIsInN0cmljdF9zc2wiLCJCb29sZWFuIiwiYWdlbnRfb3B0aW9ucyIsImtlZXBBbGl2ZSIsIm1heFNvY2tldHMiLCJtYXhGcmVlU29ja2V0cyIsInJlcXVlc3QiLCJvcHRpb25zIiwiY2IiLCJqc29uIiwiX3N0YXR1c0NoZWNrIiwic3RyZWFtUmVhZCIsIlN0cmVhbSIsIlJlYWRhYmxlIiwicHJvY2VzcyIsIm5leHRUaWNrIiwiRXJyb3JDb2RlIiwiZ2V0SW50ZXJuYWxFcnJvciIsIkFQSV9FUlJPUiIsIlVQTElOS19PRkZMSU5FIiwiZW1pdCIsIl9yZWFkIiwib24iLCJzZWxmIiwiaGVhZGVycyIsIl9zZXRIZWFkZXJzIiwiX2FkZFByb3h5SGVhZGVycyIsInJlcSIsIl9vdmVycmlkZVdpdGhVcExpbmtDb25maWdIZWFkZXJzIiwibWV0aG9kIiwidXJpIiwidXJpX2Z1bGwiLCJpbmZvIiwiaXNPYmplY3QiLCJzdHJpbmdpZnkiLCJyZXF1ZXN0Q2FsbGJhY2siLCJlcnIiLCJib2R5IiwiZXJyb3IiLCJyZXNwb25zZUxlbmd0aCIsImxlbmd0aCIsInByb2Nlc3NCb2R5IiwibG9nQWN0aXZpdHkiLCJtZXNzYWdlIiwic3RhdHVzQ29kZSIsInRvU3RyaW5nIiwiQ0hBUkFDVEVSX0VOQ09ESU5HIiwiVVRGOCIsIl9lcnIiLCJpc1N0cmluZyIsImh0dHAiLCJzdGF0dXMiLCJieXRlcyIsImluIiwib3V0IiwicmVxdWVzdE9wdGlvbnMiLCJwcm94eSIsImVuY29kaW5nIiwiZ3ppcCIsInN0cmljdFNTTCIsImFnZW50T3B0aW9ucyIsImFzc2lnbiIsInN0YXR1c0NhbGxlZCIsIl92ZXJkYWNjaW9fYWJvcnRlZCIsImRvX2xvZyIsImlzTnVsbCIsIl9vcHRpb25zJHJlcSIsImFjY2VwdCIsIkFDQ0VQVCIsImFjY2VwdEVuY29kaW5nIiwiQUNDRVBUX0VOQ09ESU5HIiwiVVNFUl9BR0VOVCIsImdldCIsIl9zZXRBdXRoIiwiYXV0aCIsIkFVVEhPUklaQVRJT04iLCJ0b2tlbiIsIl90aHJvd0Vycm9yQXV0aCIsInRva2VuQ29uZiIsInRva2VuX2VudiIsImVudiIsImlzQm9vbGVhbiIsIk5QTV9UT0tFTiIsIkVSUk9SX0NPREUiLCJ0b2tlbl9yZXF1aXJlZCIsInR5cGUiLCJUT0tFTl9CQVNJQyIsIl9zZXRIZWFkZXJBdXRob3JpemF0aW9uIiwiRXJyb3IiLCJfdHlwZSIsInRvTG93ZXJDYXNlIiwiVE9LRU5fQkVBUkVSIiwiaW5jbHVkZXMiLCJ1cHBlckZpcnN0IiwiYnVpbGRUb2tlbiIsImlzVXBsaW5rVmFsaWQiLCJ1cmxQYXJzZWQiLCJpc0hUVFBTIiwidXJsRG9tYWluUGFyc2VkIiwicG9ydCIsImdldEhvc3QiLCJob3N0IiwiaXNNYXRjaFByb3RvY29sIiwiaXNNYXRjaEhvc3QiLCJpc01hdGNoUGF0aCIsInBhdGgiLCJpbmRleE9mIiwiZ2V0UmVtb3RlTWV0YWRhdGEiLCJuYW1lIiwiY2FsbGJhY2siLCJldGFnIiwiSFRUUF9TVEFUVVMiLCJOT1RfRk9VTkQiLCJnZXROb3RGb3VuZCIsIk5PVF9QQUNLQUdFX1VQTElOSyIsIk9LIiwiTVVMVElQTEVfQ0hPSUNFUyIsIkJBRF9TVEFUVVNfQ09ERSIsInJlbW90ZVN0YXR1cyIsImZldGNoVGFyYmFsbCIsInN0cmVhbSIsIlJlYWRUYXJiYWxsIiwiY3VycmVudF9sZW5ndGgiLCJleHBlY3RlZF9sZW5ndGgiLCJhYm9ydCIsInJlYWRTdHJlYW0iLCJBY2NlcHQiLCJOT1RfRklMRV9VUExJTksiLCJIRUFERVJfVFlQRSIsIkNPTlRFTlRfTEVOR1RIIiwicGlwZSIsImRhdGEiLCJDT05URU5UX01JU01BVENIIiwic2VhcmNoIiwidHJhbnNmb3JtU3RyZWFtIiwiUGFzc1Rocm91Z2giLCJvYmplY3RNb2RlIiwicmVxdWVzdFN0cmVhbSIsInJlZmVyZXIiLCJwYXJzZVBhY2thZ2UiLCJwa2ciLCJpc09iamVjdE9yQXJyYXkiLCJtYXRjaCIsImpzb25TdHJlYW0iLCJDT05URU5UX0VOQ09ESU5HIiwiR1pJUCIsInpsaWIiLCJjcmVhdGVVbnppcCIsIkpTT05TdHJlYW0iLCJjb25uZWN0aW9uIiwicmVtb3RlQWRkcmVzcyIsImFsaXZlIiwiYXJndW1lbnRzIiwiX2lmUmVxdWVzdEZhaWx1cmUiLCJsYXN0X3JlcXVlc3RfdGltZSIsIkRhdGUiLCJub3ciLCJNYXRoIiwiYWJzIiwibWFpbmNvbmZpZyIsIm5vUHJveHlMaXN0IiwicHJveHlfa2V5Iiwibm9fcHJveHkiLCJzcGxpdCIsImlzQXJyYXkiLCJpIiwibm9Qcm94eUl0ZW0iLCJsYXN0SW5kZXhPZiIsImhyZWYiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3VwLXN0b3JhZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEpTT05TdHJlYW0gZnJvbSAnSlNPTlN0cmVhbSc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHJlcXVlc3QgZnJvbSAncmVxdWVzdCc7XG5pbXBvcnQgU3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgVVJMLCB7IFVybFdpdGhTdHJpbmdRdWVyeSB9IGZyb20gJ3VybCc7XG5pbXBvcnQgemxpYiBmcm9tICd6bGliJztcblxuaW1wb3J0IHsgUmVhZFRhcmJhbGwgfSBmcm9tICdAdmVyZGFjY2lvL3N0cmVhbXMnO1xuaW1wb3J0IHsgQ2FsbGJhY2ssIENvbmZpZywgSGVhZGVycywgTG9nZ2VyLCBQYWNrYWdlLCBVcExpbmtDb25mIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBidWlsZFRva2VuIH0gZnJvbSAnQHZlcmRhY2Npby91dGlscyc7XG5cbmltcG9ydCB7XG4gIEFQSV9FUlJPUixcbiAgQ0hBUkFDVEVSX0VOQ09ESU5HLFxuICBFUlJPUl9DT0RFLFxuICBIRUFERVJTLFxuICBIRUFERVJfVFlQRSxcbiAgSFRUUF9TVEFUVVMsXG4gIFRPS0VOX0JBU0lDLFxuICBUT0tFTl9CRUFSRVIsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSwgaXNPYmplY3QsIGlzT2JqZWN0T3JBcnJheSwgcGFyc2VJbnRlcnZhbCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2Npbzpwcm94eScpO1xuXG5jb25zdCBlbmNvZGUgPSBmdW5jdGlvbiAodGhpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHRoaW5nKS5yZXBsYWNlKC9eJTQwLywgJ0AnKTtcbn07XG5cbmNvbnN0IGpzb25Db250ZW50VHlwZSA9IEhFQURFUlMuSlNPTjtcbmNvbnN0IGNvbnRlbnRUeXBlQWNjZXB0ID0gYCR7anNvbkNvbnRlbnRUeXBlfTtgO1xuXG4vKipcbiAqIEp1c3QgYSBoZWxwZXIgKGBjb25maWdba2V5XSB8fCBkZWZhdWx0YCBkb2Vzbid0IHdvcmsgYmVjYXVzZSBvZiB6ZXJvZXMpXG4gKi9cbmNvbnN0IHNldENvbmZpZyA9IChjb25maWcsIGtleSwgZGVmKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIF8uaXNOaWwoY29uZmlnW2tleV0pID09PSBmYWxzZSA/IGNvbmZpZ1trZXldIDogZGVmO1xufTtcblxuLyoqXG4gKiBJbXBsZW1lbnRzIFN0b3JhZ2UgaW50ZXJmYWNlXG4gKiAoc2FtZSBmb3Igc3RvcmFnZS5qcywgbG9jYWwtc3RvcmFnZS5qcywgdXAtc3RvcmFnZS5qcylcbiAqL1xuY2xhc3MgUHJveHlTdG9yYWdlIHtcbiAgcHVibGljIGNvbmZpZzogVXBMaW5rQ29uZjtcbiAgcHVibGljIGZhaWxlZF9yZXF1ZXN0czogbnVtYmVyO1xuICBwdWJsaWMgdXNlckFnZW50OiBzdHJpbmc7XG4gIHB1YmxpYyBjYTogc3RyaW5nIHwgdm9pZDtcbiAgcHVibGljIGxvZ2dlcjogTG9nZ2VyO1xuICBwdWJsaWMgc2VydmVyX2lkOiBzdHJpbmc7XG4gIHB1YmxpYyB1cmw6IGFueTtcbiAgcHVibGljIG1heGFnZTogbnVtYmVyO1xuICBwdWJsaWMgdGltZW91dDogbnVtYmVyO1xuICBwdWJsaWMgbWF4X2ZhaWxzOiBudW1iZXI7XG4gIHB1YmxpYyBmYWlsX3RpbWVvdXQ6IG51bWJlcjtcbiAgcHVibGljIGFnZW50X29wdGlvbnM6IGFueTtcbiAgLy8gRklYTUU6IHVwbmFtZSBpcyBhc3NpZ25lZCB0byBlYWNoIGluc3RhbmNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgcHVibGljIHVwbmFtZTogc3RyaW5nO1xuICAvLyBGSVhNRTogcHJveHkgY2FuIGJlIGJvb2xlYW4gb3Igb2JqZWN0LCBzb21ldGhpbmcgc21lbGxzIGhlcmVcbiAgLy8gQHRzLWlnbm9yZVxuICBwdWJsaWMgcHJveHk6IHN0cmluZyB8IHZvaWQ7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcHVibGljIGxhc3RfcmVxdWVzdF90aW1lOiBudW1iZXIgfCBudWxsO1xuICBwdWJsaWMgc3RyaWN0X3NzbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3JcbiAgICogQHBhcmFtIHsqfSBjb25maWdcbiAgICogQHBhcmFtIHsqfSBtYWluQ29uZmlnXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29uZmlnOiBVcExpbmtDb25mLCBtYWluQ29uZmlnOiBDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmZhaWxlZF9yZXF1ZXN0cyA9IDA7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMudXNlckFnZW50ID0gbWFpbkNvbmZpZy51c2VyX2FnZW50ID8/ICdoaWRkZW4nO1xuICAgIHRoaXMuY2EgPSBjb25maWcuY2E7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5zZXJ2ZXJfaWQgPSBtYWluQ29uZmlnLnNlcnZlcl9pZDtcblxuICAgIHRoaXMudXJsID0gVVJMLnBhcnNlKHRoaXMuY29uZmlnLnVybCk7XG5cbiAgICB0aGlzLl9zZXR1cFByb3h5KHRoaXMudXJsLmhvc3RuYW1lLCBjb25maWcsIG1haW5Db25maWcsIHRoaXMudXJsLnByb3RvY29sID09PSAnaHR0cHM6Jyk7XG5cbiAgICB0aGlzLmNvbmZpZy51cmwgPSB0aGlzLmNvbmZpZy51cmwucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy50aW1lb3V0ICYmIE51bWJlcih0aGlzLmNvbmZpZy50aW1lb3V0KSA+PSAxMDAwKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICBbXG4gICAgICAgICAgJ1RvbyBiaWcgdGltZW91dCB2YWx1ZTogJyArIHRoaXMuY29uZmlnLnRpbWVvdXQsXG4gICAgICAgICAgJ1dlIGNoYW5nZWQgdGltZSBmb3JtYXQgdG8gbmdpbngtbGlrZSBvbmUnLFxuICAgICAgICAgICcoc2VlIGh0dHA6Ly9uZ2lueC5vcmcvZW4vZG9jcy9zeW50YXguaHRtbCknLFxuICAgICAgICAgICdzbyBwbGVhc2UgdXBkYXRlIHlvdXIgY29uZmlnIGFjY29yZGluZ2x5JyxcbiAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBhIGJ1bmNoIG9mIGRpZmZlcmVudCBjb25maWd1cmFibGUgdGltZXJzXG4gICAgdGhpcy5tYXhhZ2UgPSBwYXJzZUludGVydmFsKHNldENvbmZpZyh0aGlzLmNvbmZpZywgJ21heGFnZScsICcybScpKTtcbiAgICB0aGlzLnRpbWVvdXQgPSBwYXJzZUludGVydmFsKHNldENvbmZpZyh0aGlzLmNvbmZpZywgJ3RpbWVvdXQnLCAnMzBzJykpO1xuICAgIHRoaXMubWF4X2ZhaWxzID0gTnVtYmVyKHNldENvbmZpZyh0aGlzLmNvbmZpZywgJ21heF9mYWlscycsIDIpKTtcbiAgICB0aGlzLmZhaWxfdGltZW91dCA9IHBhcnNlSW50ZXJ2YWwoc2V0Q29uZmlnKHRoaXMuY29uZmlnLCAnZmFpbF90aW1lb3V0JywgJzVtJykpO1xuICAgIHRoaXMuc3RyaWN0X3NzbCA9IEJvb2xlYW4oc2V0Q29uZmlnKHRoaXMuY29uZmlnLCAnc3RyaWN0X3NzbCcsIHRydWUpKTtcbiAgICB0aGlzLmFnZW50X29wdGlvbnMgPSBzZXRDb25maWcodGhpcy5jb25maWcsICdhZ2VudF9vcHRpb25zJywge1xuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgICAgbWF4U29ja2V0czogNDAsXG4gICAgICBtYXhGcmVlU29ja2V0czogMTAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYW4gYXNzZXQuXG4gICAqIEBwYXJhbSB7Kn0gb3B0aW9uc1xuICAgKiBAcGFyYW0geyp9IGNiXG4gICAqIEByZXR1cm4ge1JlcXVlc3R9XG4gICAqL1xuICBwcml2YXRlIHJlcXVlc3Qob3B0aW9uczogYW55LCBjYj86IENhbGxiYWNrKTogU3RyZWFtLlJlYWRhYmxlIHtcbiAgICBsZXQganNvbjtcblxuICAgIGlmICh0aGlzLl9zdGF0dXNDaGVjaygpID09PSBmYWxzZSkge1xuICAgICAgY29uc3Qgc3RyZWFtUmVhZCA9IG5ldyBTdHJlYW0uUmVhZGFibGUoKTtcblxuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAgIGlmIChjYikge1xuICAgICAgICAgIGNiKEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5VUExJTktfT0ZGTElORSkpO1xuICAgICAgICB9XG4gICAgICAgIHN0cmVhbVJlYWQuZW1pdCgnZXJyb3InLCBFcnJvckNvZGUuZ2V0SW50ZXJuYWxFcnJvcihBUElfRVJST1IuVVBMSU5LX09GRkxJTkUpKTtcbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW1SZWFkLl9yZWFkID0gZnVuY3Rpb24gKCk6IHZvaWQge307XG4gICAgICAvLyBwcmV2ZW50aW5nICdVbmNhdWdodCwgdW5zcGVjaWZpZWQgXCJlcnJvclwiIGV2ZW50J1xuICAgICAgc3RyZWFtUmVhZC5vbignZXJyb3InLCBmdW5jdGlvbiAoKTogdm9pZCB7fSk7XG4gICAgICByZXR1cm4gc3RyZWFtUmVhZDtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBoZWFkZXJzOiBIZWFkZXJzID0gdGhpcy5fc2V0SGVhZGVycyhvcHRpb25zKTtcblxuICAgIHRoaXMuX2FkZFByb3h5SGVhZGVycyhvcHRpb25zLnJlcSwgaGVhZGVycyk7XG4gICAgdGhpcy5fb3ZlcnJpZGVXaXRoVXBMaW5rQ29uZmlnSGVhZGVycyhoZWFkZXJzKTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IG9wdGlvbnMubWV0aG9kIHx8ICdHRVQnO1xuICAgIGNvbnN0IHVyaSA9IG9wdGlvbnMudXJpX2Z1bGwgfHwgdGhpcy5jb25maWcudXJsICsgb3B0aW9ucy51cmk7XG5cbiAgICBzZWxmLmxvZ2dlci5pbmZvKFxuICAgICAge1xuICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgdXJpOiB1cmksXG4gICAgICB9LFxuICAgICAgXCJtYWtpbmcgcmVxdWVzdDogJ0B7bWV0aG9kfSBAe3VyaX0nXCJcbiAgICApO1xuXG4gICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMuanNvbikpIHtcbiAgICAgIGpzb24gPSBKU09OLnN0cmluZ2lmeShvcHRpb25zLmpzb24pO1xuICAgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSBoZWFkZXJzWydDb250ZW50LVR5cGUnXSB8fCBIRUFERVJTLkpTT047XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdENhbGxiYWNrID0gY2JcbiAgICAgID8gZnVuY3Rpb24gKGVyciwgcmVzLCBib2R5KTogdm9pZCB7XG4gICAgICAgICAgbGV0IGVycm9yO1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlTGVuZ3RoID0gZXJyID8gMCA6IGJvZHkubGVuZ3RoO1xuXG4gICAgICAgICAgcHJvY2Vzc0JvZHkoKTtcbiAgICAgICAgICBsb2dBY3Rpdml0eSgpO1xuXG4gICAgICAgICAgY2IoZXJyLCByZXMsIGJvZHkpO1xuXG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogUGVyZm9ybSBhIGRlY29kZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQm9keSgpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5qc29uICYmIHJlcy5zdGF0dXNDb2RlIDwgMzAwKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYm9keSA9IEpTT04ucGFyc2UoYm9keS50b1N0cmluZyhDSEFSQUNURVJfRU5DT0RJTkcuVVRGOCkpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChfZXJyKSB7XG4gICAgICAgICAgICAgICAgYm9keSA9IHt9O1xuICAgICAgICAgICAgICAgIGVyciA9IF9lcnI7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWVyciAmJiBpc09iamVjdChib2R5KSkge1xuICAgICAgICAgICAgICBpZiAoXy5pc1N0cmluZyhib2R5LmVycm9yKSkge1xuICAgICAgICAgICAgICAgIGVycm9yID0gYm9keS5lcnJvcjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBQZXJmb3JtIGEgbG9nLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGZ1bmN0aW9uIGxvZ0FjdGl2aXR5KCk6IHZvaWQge1xuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBcIkB7IXN0YXR1c30sIHJlcTogJ0B7cmVxdWVzdC5tZXRob2R9IEB7cmVxdWVzdC51cmx9J1wiO1xuICAgICAgICAgICAgbWVzc2FnZSArPSBlcnJvciA/ICcsIGVycm9yOiBAeyFlcnJvcn0nIDogJywgYnl0ZXM6IEB7Ynl0ZXMuaW59L0B7Ynl0ZXMub3V0fSc7XG4gICAgICAgICAgICBzZWxmLmxvZ2dlci5odHRwKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXJyOiBlcnIgfHwgdW5kZWZpbmVkLCAvLyBpZiBlcnJvciBpcyBudWxsL2ZhbHNlIGNoYW5nZSB0aGlzIHRvIHVuZGVmaW5lZCBzbyBpdCB3b250IGxvZ1xuICAgICAgICAgICAgICAgIHJlcXVlc3Q6IHsgbWV0aG9kOiBtZXRob2QsIHVybDogdXJpIH0sXG4gICAgICAgICAgICAgICAgc3RhdHVzOiByZXMgIT0gbnVsbCA/IHJlcy5zdGF0dXNDb2RlIDogJ0VSUicsXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgIGJ5dGVzOiB7XG4gICAgICAgICAgICAgICAgICBpbjoganNvbiA/IGpzb24ubGVuZ3RoIDogMCxcbiAgICAgICAgICAgICAgICAgIG91dDogcmVzcG9uc2VMZW5ndGggfHwgMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgbGV0IHJlcXVlc3RPcHRpb25zOiByZXF1ZXN0Lk9wdGlvbnNXaXRoVXJsID0ge1xuICAgICAgdXJsOiB1cmksXG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICBib2R5OiBqc29uLFxuICAgICAgcHJveHk6IHRoaXMucHJveHksXG4gICAgICBlbmNvZGluZzogbnVsbCxcbiAgICAgIGd6aXA6IHRydWUsXG4gICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICBzdHJpY3RTU0w6IHRoaXMuc3RyaWN0X3NzbCxcbiAgICAgIGFnZW50T3B0aW9uczogdGhpcy5hZ2VudF9vcHRpb25zLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jYSkge1xuICAgICAgcmVxdWVzdE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCByZXF1ZXN0T3B0aW9ucywge1xuICAgICAgICBjYTogdGhpcy5jYSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcSA9IHJlcXVlc3QocmVxdWVzdE9wdGlvbnMsIHJlcXVlc3RDYWxsYmFjayk7XG5cbiAgICBsZXQgc3RhdHVzQ2FsbGVkID0gZmFsc2U7XG4gICAgcmVxLm9uKCdyZXNwb25zZScsIGZ1bmN0aW9uIChyZXMpOiB2b2lkIHtcbiAgICAgIC8vIEZJWE1FOiBfdmVyZGFjY2lvX2Fib3J0ZWQgc2VlbXMgbm90IHVzZWRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmICghcmVxLl92ZXJkYWNjaW9fYWJvcnRlZCAmJiAhc3RhdHVzQ2FsbGVkKSB7XG4gICAgICAgIHN0YXR1c0NhbGxlZCA9IHRydWU7XG4gICAgICAgIHNlbGYuX3N0YXR1c0NoZWNrKHRydWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc05pbChyZXF1ZXN0Q2FsbGJhY2spID09PSBmYWxzZSkge1xuICAgICAgICAoZnVuY3Rpb24gZG9fbG9nKCk6IHZvaWQge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBcIkB7IXN0YXR1c30sIHJlcTogJ0B7cmVxdWVzdC5tZXRob2R9IEB7cmVxdWVzdC51cmx9JyAoc3RyZWFtaW5nKVwiO1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmh0dHAoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICB1cmw6IHVyaSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc3RhdHVzOiBfLmlzTnVsbChyZXMpID09PSBmYWxzZSA/IHJlcy5zdGF0dXNDb2RlIDogJ0VSUicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVxLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChfZXJyKTogdm9pZCB7XG4gICAgICAvLyBGSVhNRTogX3ZlcmRhY2Npb19hYm9ydGVkIHNlZW1zIG5vdCB1c2VkXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoIXJlcS5fdmVyZGFjY2lvX2Fib3J0ZWQgJiYgIXN0YXR1c0NhbGxlZCkge1xuICAgICAgICBzdGF0dXNDYWxsZWQgPSB0cnVlO1xuICAgICAgICBzZWxmLl9zdGF0dXNDaGVjayhmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiByZXE7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRlZmF1bHQgaGVhZGVycy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0SGVhZGVycyhvcHRpb25zOiBhbnkpOiBIZWFkZXJzIHtcbiAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzIHx8IHt9O1xuICAgIGNvbnN0IGFjY2VwdCA9IEhFQURFUlMuQUNDRVBUO1xuICAgIGNvbnN0IGFjY2VwdEVuY29kaW5nID0gSEVBREVSUy5BQ0NFUFRfRU5DT0RJTkc7XG4gICAgY29uc3QgdXNlckFnZW50ID0gSEVBREVSUy5VU0VSX0FHRU5UO1xuXG4gICAgaGVhZGVyc1thY2NlcHRdID0gaGVhZGVyc1thY2NlcHRdIHx8IGNvbnRlbnRUeXBlQWNjZXB0O1xuICAgIGhlYWRlcnNbYWNjZXB0RW5jb2RpbmddID0gaGVhZGVyc1thY2NlcHRFbmNvZGluZ10gfHwgJ2d6aXAnO1xuICAgIC8vIHJlZ2lzdHJ5Lm5wbWpzLm9yZyB3aWxsIG9ubHkgcmV0dXJuIHNlYXJjaCByZXN1bHQgaWYgdXNlci1hZ2VudCBpbmNsdWRlIHN0cmluZyAnbnBtJ1xuICAgIGhlYWRlcnNbdXNlckFnZW50XSA9IHRoaXMudXNlckFnZW50XG4gICAgICA/IGBucG0gKCR7dGhpcy51c2VyQWdlbnR9KWBcbiAgICAgIDogb3B0aW9ucy5yZXE/LmdldCgndXNlci1hZ2VudCcpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3NldEF1dGgoaGVhZGVycyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgY29uZmlndXJhdGlvbiBhdXRoIGFuZCBhc3NpZ24gSGVhZGVyIGF1dGhvcml6YXRpb25cbiAgICogQHBhcmFtIHtPYmplY3R9IGhlYWRlcnNcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0QXV0aChoZWFkZXJzOiBhbnkpOiBIZWFkZXJzIHtcbiAgICBjb25zdCB7IGF1dGggfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKF8uaXNOaWwoYXV0aCkgfHwgaGVhZGVyc1tIRUFERVJTLkFVVEhPUklaQVRJT05dKSB7XG4gICAgICByZXR1cm4gaGVhZGVycztcbiAgICB9XG5cbiAgICBpZiAoXy5pc09iamVjdChhdXRoKSA9PT0gZmFsc2UgJiYgXy5pc09iamVjdChhdXRoLnRva2VuKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuX3Rocm93RXJyb3JBdXRoKCdBdXRoIGludmFsaWQnKTtcbiAgICB9XG5cbiAgICAvLyBnZXQgTlBNX1RPS0VOIGh0dHA6Ly9ibG9nLm5wbWpzLm9yZy9wb3N0LzExODM5MzM2ODU1NS9kZXBsb3lpbmctd2l0aC1ucG0tcHJpdmF0ZS1tb2R1bGVzXG4gICAgLy8gb3IgZ2V0IG90aGVyIHZhcmlhYmxlIGV4cG9ydCBpbiBlbnZcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdmVyZGFjY2lvL3ZlcmRhY2Npby9yZWxlYXNlcy90YWcvdjIuNS4wXG4gICAgbGV0IHRva2VuOiBhbnk7XG4gICAgY29uc3QgdG9rZW5Db25mOiBhbnkgPSBhdXRoO1xuXG4gICAgaWYgKF8uaXNOaWwodG9rZW5Db25mLnRva2VuKSA9PT0gZmFsc2UgJiYgXy5pc1N0cmluZyh0b2tlbkNvbmYudG9rZW4pKSB7XG4gICAgICB0b2tlbiA9IHRva2VuQ29uZi50b2tlbjtcbiAgICB9IGVsc2UgaWYgKF8uaXNOaWwodG9rZW5Db25mLnRva2VuX2VudikgPT09IGZhbHNlKSB7XG4gICAgICBpZiAoXy5pc1N0cmluZyh0b2tlbkNvbmYudG9rZW5fZW52KSkge1xuICAgICAgICB0b2tlbiA9IHByb2Nlc3MuZW52W3Rva2VuQ29uZi50b2tlbl9lbnZdO1xuICAgICAgfSBlbHNlIGlmIChfLmlzQm9vbGVhbih0b2tlbkNvbmYudG9rZW5fZW52KSAmJiB0b2tlbkNvbmYudG9rZW5fZW52KSB7XG4gICAgICAgIHRva2VuID0gcHJvY2Vzcy5lbnYuTlBNX1RPS0VOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoRVJST1JfQ09ERS50b2tlbl9yZXF1aXJlZCk7XG4gICAgICAgIHRoaXMuX3Rocm93RXJyb3JBdXRoKEVSUk9SX0NPREUudG9rZW5fcmVxdWlyZWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHByb2Nlc3MuZW52Lk5QTV9UT0tFTjtcbiAgICB9XG5cbiAgICBpZiAoXy5pc05pbCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX3Rocm93RXJyb3JBdXRoKEVSUk9SX0NPREUudG9rZW5fcmVxdWlyZWQpO1xuICAgIH1cblxuICAgIC8vIGRlZmluZSB0eXBlIEF1dGggYWxsb3cgYmFzaWMgYW5kIGJlYXJlclxuICAgIGNvbnN0IHR5cGUgPSB0b2tlbkNvbmYudHlwZSB8fCBUT0tFTl9CQVNJQztcbiAgICB0aGlzLl9zZXRIZWFkZXJBdXRob3JpemF0aW9uKGhlYWRlcnMsIHR5cGUsIHRva2VuKTtcblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gICAqIEB0aHJvd3Mge0Vycm9yfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfdGhyb3dFcnJvckF1dGgobWVzc2FnZTogc3RyaW5nKTogRXJyb3Ige1xuICAgIHRoaXMubG9nZ2VyLmVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NpZ24gSGVhZGVyIGF1dGhvcml6YXRpb24gd2l0aCB0eXBlIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkZXJzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0SGVhZGVyQXV0aG9yaXphdGlvbihoZWFkZXJzOiBhbnksIHR5cGU6IHN0cmluZywgdG9rZW46IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IF90eXBlOiBzdHJpbmcgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoW1RPS0VOX0JFQVJFUi50b0xvd2VyQ2FzZSgpLCBUT0tFTl9CQVNJQy50b0xvd2VyQ2FzZSgpXS5pbmNsdWRlcyhfdHlwZSkgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl90aHJvd0Vycm9yQXV0aChgQXV0aCB0eXBlICcke190eXBlfScgbm90IGFsbG93ZWRgKTtcbiAgICB9XG5cbiAgICB0eXBlID0gXy51cHBlckZpcnN0KHR5cGUpO1xuICAgIGhlYWRlcnNbSEVBREVSUy5BVVRIT1JJWkFUSU9OXSA9IGJ1aWxkVG9rZW4odHlwZSwgdG9rZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHdpbGwgYWRkIG9yIG92ZXJyaWRlIHNwZWNpZmllZCBoZWFkZXJzIGZyb20gY29uZmlnIGZpbGUuXG4gICAqXG4gICAqIEVnOlxuICAgKlxuICAgKiB1cGxpbmtzOlxuICAgbnBtanM6XG4gICB1cmw6IGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL1xuICAgaGVhZGVyczpcbiAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi92bmQubnBtLmluc3RhbGwtdjIranNvbjsgcT0xLjBcIlxuICAgdmVyZGFjY2lvLXN0YWdpbmc6XG4gICB1cmw6IGh0dHBzOi8vbXljb21wYW55LmNvbS9ucG1cbiAgIGhlYWRlcnM6XG4gICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICBhdXRob3JpemF0aW9uOiBcIkJhc2ljIFlvdXJCYXNlNjRFbmNvZGVkQ3JlZGVudGlhbHM9PVwiXG5cbiAgICogQHBhcmFtIHtPYmplY3R9IGhlYWRlcnNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX292ZXJyaWRlV2l0aFVwTGlua0NvbmZpZ0hlYWRlcnMoaGVhZGVyczogSGVhZGVycyk6IGFueSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5oZWFkZXJzKSB7XG4gICAgICByZXR1cm4gaGVhZGVycztcbiAgICB9XG5cbiAgICAvLyBhZGQvb3ZlcnJpZGUgaGVhZGVycyBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZ1xuICAgIC8qIGVzbGludCBndWFyZC1mb3ItaW46IDAgKi9cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbmZpZy5oZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzW2tleV0gPSB0aGlzLmNvbmZpZy5oZWFkZXJzW2tleV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGNhbiBmZXRjaCBmcm9tIHRoZSBwcm92aWRlZCBVUkxcbiAgICogQHBhcmFtIHsqfSB1cmxcbiAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBpc1VwbGlua1ZhbGlkKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdXJsUGFyc2VkOiBVcmxXaXRoU3RyaW5nUXVlcnkgPSBVUkwucGFyc2UodXJsKTtcbiAgICBjb25zdCBpc0hUVFBTID0gKHVybERvbWFpblBhcnNlZDogVVJMKTogYm9vbGVhbiA9PlxuICAgICAgdXJsRG9tYWluUGFyc2VkLnByb3RvY29sID09PSAnaHR0cHM6JyAmJlxuICAgICAgKHVybFBhcnNlZC5wb3J0ID09PSBudWxsIHx8IHVybFBhcnNlZC5wb3J0ID09PSAnNDQzJyk7XG4gICAgY29uc3QgZ2V0SG9zdCA9ICh1cmxEb21haW5QYXJzZWQpOiBib29sZWFuID0+XG4gICAgICBpc0hUVFBTKHVybERvbWFpblBhcnNlZCkgPyB1cmxEb21haW5QYXJzZWQuaG9zdG5hbWUgOiB1cmxEb21haW5QYXJzZWQuaG9zdDtcbiAgICBjb25zdCBpc01hdGNoUHJvdG9jb2w6IGJvb2xlYW4gPSB1cmxQYXJzZWQucHJvdG9jb2wgPT09IHRoaXMudXJsLnByb3RvY29sO1xuICAgIGNvbnN0IGlzTWF0Y2hIb3N0OiBib29sZWFuID0gZ2V0SG9zdCh1cmxQYXJzZWQpID09PSBnZXRIb3N0KHRoaXMudXJsKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgaXNNYXRjaFBhdGg6IGJvb2xlYW4gPSB1cmxQYXJzZWQucGF0aC5pbmRleE9mKHRoaXMudXJsLnBhdGgpID09PSAwO1xuXG4gICAgcmV0dXJuIGlzTWF0Y2hQcm90b2NvbCAmJiBpc01hdGNoSG9zdCAmJiBpc01hdGNoUGF0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZW1vdGUgcGFja2FnZSBtZXRhZGF0YVxuICAgKiBAcGFyYW0geyp9IG5hbWUgcGFja2FnZSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gb3B0aW9ucyByZXF1ZXN0IG9wdGlvbnMsIGVnOiBlVGFnLlxuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVtb3RlTWV0YWRhdGEobmFtZTogc3RyaW5nLCBvcHRpb25zOiBhbnksIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7fTtcbiAgICBpZiAoXy5pc05pbChvcHRpb25zLmV0YWcpID09PSBmYWxzZSkge1xuICAgICAgaGVhZGVyc1snSWYtTm9uZS1NYXRjaCddID0gb3B0aW9ucy5ldGFnO1xuICAgICAgaGVhZGVyc1tIRUFERVJTLkFDQ0VQVF0gPSBjb250ZW50VHlwZUFjY2VwdDtcbiAgICB9XG5cbiAgICB0aGlzLnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIHVyaTogYC8ke2VuY29kZShuYW1lKX1gLFxuICAgICAgICBqc29uOiB0cnVlLFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICByZXE6IG9wdGlvbnMucmVxLFxuICAgICAgfSxcbiAgICAgIChlcnIsIHJlcywgYm9keSk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSBIVFRQX1NUQVRVUy5OT1RfRk9VTkQpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKEFQSV9FUlJPUi5OT1RfUEFDS0FHRV9VUExJTkspKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShyZXMuc3RhdHVzQ29kZSA+PSBIVFRQX1NUQVRVUy5PSyAmJiByZXMuc3RhdHVzQ29kZSA8IEhUVFBfU1RBVFVTLk1VTFRJUExFX0NIT0lDRVMpKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBFcnJvckNvZGUuZ2V0SW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgIGAke0FQSV9FUlJPUi5CQURfU1RBVFVTX0NPREV9OiAke3Jlcy5zdGF0dXNDb2RlfWBcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZXJyb3IucmVtb3RlU3RhdHVzID0gcmVzLnN0YXR1c0NvZGU7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCBib2R5LCByZXMuaGVhZGVycy5ldGFnKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGEgdGFyYmFsbCBmcm9tIHRoZSB1cGxpbmsuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAgICogQHJldHVybiB7U3RyZWFtfVxuICAgKi9cbiAgcHVibGljIGZldGNoVGFyYmFsbCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkVGFyYmFsbCh7fSk7XG4gICAgbGV0IGN1cnJlbnRfbGVuZ3RoID0gMDtcbiAgICBsZXQgZXhwZWN0ZWRfbGVuZ3RoO1xuXG4gICAgc3RyZWFtLmFib3J0ID0gKCkgPT4ge307XG4gICAgY29uc3QgcmVhZFN0cmVhbSA9IHRoaXMucmVxdWVzdCh7XG4gICAgICB1cmlfZnVsbDogdXJsLFxuICAgICAgZW5jb2Rpbmc6IG51bGwsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEFjY2VwdDogY29udGVudFR5cGVBY2NlcHQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmVhZFN0cmVhbS5vbigncmVzcG9uc2UnLCBmdW5jdGlvbiAocmVzOiBhbnkpIHtcbiAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgIHJldHVybiBzdHJlYW0uZW1pdCgnZXJyb3InLCBFcnJvckNvZGUuZ2V0Tm90Rm91bmQoQVBJX0VSUk9SLk5PVF9GSUxFX1VQTElOSykpO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzLnN0YXR1c0NvZGUgPj0gSFRUUF9TVEFUVVMuT0sgJiYgcmVzLnN0YXR1c0NvZGUgPCBIVFRQX1NUQVRVUy5NVUxUSVBMRV9DSE9JQ0VTKSkge1xuICAgICAgICByZXR1cm4gc3RyZWFtLmVtaXQoXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICBFcnJvckNvZGUuZ2V0SW50ZXJuYWxFcnJvcihgYmFkIHVwbGluayBzdGF0dXMgY29kZTogJHtyZXMuc3RhdHVzQ29kZX1gKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHJlcy5oZWFkZXJzW0hFQURFUl9UWVBFLkNPTlRFTlRfTEVOR1RIXSkge1xuICAgICAgICBleHBlY3RlZF9sZW5ndGggPSByZXMuaGVhZGVyc1tIRUFERVJfVFlQRS5DT05URU5UX0xFTkdUSF07XG4gICAgICAgIHN0cmVhbS5lbWl0KEhFQURFUl9UWVBFLkNPTlRFTlRfTEVOR1RILCByZXMuaGVhZGVyc1tIRUFERVJfVFlQRS5DT05URU5UX0xFTkdUSF0pO1xuICAgICAgfVxuXG4gICAgICByZWFkU3RyZWFtLnBpcGUoc3RyZWFtKTtcbiAgICB9KTtcblxuICAgIHJlYWRTdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICB9KTtcbiAgICByZWFkU3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIGN1cnJlbnRfbGVuZ3RoICs9IGRhdGEubGVuZ3RoO1xuICAgIH0pO1xuICAgIHJlYWRTdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBjdXJyZW50X2xlbmd0aCArPSBkYXRhLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGlmIChleHBlY3RlZF9sZW5ndGggJiYgY3VycmVudF9sZW5ndGggIT0gZXhwZWN0ZWRfbGVuZ3RoKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5DT05URU5UX01JU01BVENIKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGEgc3RyZWFtIHNlYXJjaC5cbiAgICogQHBhcmFtIHsqfSBvcHRpb25zIHJlcXVlc3Qgb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuICBwdWJsaWMgc2VhcmNoKG9wdGlvbnM6IGFueSkge1xuICAgIGNvbnN0IHRyYW5zZm9ybVN0cmVhbTogYW55ID0gbmV3IFN0cmVhbS5QYXNzVGhyb3VnaCh7IG9iamVjdE1vZGU6IHRydWUgfSk7XG4gICAgY29uc3QgcmVxdWVzdFN0cmVhbTogU3RyZWFtLlJlYWRhYmxlID0gdGhpcy5yZXF1ZXN0KHtcbiAgICAgIHVyaTogb3B0aW9ucy5yZXEudXJsLFxuICAgICAgcmVxOiBvcHRpb25zLnJlcSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgLy8gcXVlcnkgZm9yIHNlYXJjaFxuICAgICAgICByZWZlcmVyOiBvcHRpb25zLnJlcS5nZXQoJ3JlZmVyZXInKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBwYXJzZVBhY2thZ2UgPSAocGtnOiBQYWNrYWdlKTogdm9pZCA9PiB7XG4gICAgICBpZiAoaXNPYmplY3RPckFycmF5KHBrZykpIHtcbiAgICAgICAgdHJhbnNmb3JtU3RyZWFtLmVtaXQoJ2RhdGEnLCBwa2cpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXF1ZXN0U3RyZWFtLm9uKCdyZXNwb25zZScsIChyZXMpOiB2b2lkID0+IHtcbiAgICAgIGlmICghU3RyaW5nKHJlcy5zdGF0dXNDb2RlKS5tYXRjaCgvXjJcXGRcXGQkLykpIHtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVN0cmVhbS5lbWl0KFxuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoYGJhZCBzdGF0dXMgY29kZSAke3Jlcy5zdGF0dXNDb2RlfSBmcm9tIHVwbGlua2ApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVxdWVzdC9yZXF1ZXN0I3JlcXVlc3RvcHRpb25zLWNhbGxiYWNrXG4gICAgICAvLyBSZXF1ZXN0IGxpYnJhcnkgd2lsbCBub3QgZGVjb2RlIGd6aXAgc3RyZWFtLlxuICAgICAgbGV0IGpzb25TdHJlYW07XG4gICAgICBpZiAocmVzLmhlYWRlcnNbSEVBREVSX1RZUEUuQ09OVEVOVF9FTkNPRElOR10gPT09IEhFQURFUlMuR1pJUCkge1xuICAgICAgICBqc29uU3RyZWFtID0gcmVzLnBpcGUoemxpYi5jcmVhdGVVbnppcCgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGpzb25TdHJlYW0gPSByZXM7XG4gICAgICB9XG4gICAgICBqc29uU3RyZWFtLnBpcGUoSlNPTlN0cmVhbS5wYXJzZSgnKicpKS5vbignZGF0YScsIHBhcnNlUGFja2FnZSk7XG4gICAgICBqc29uU3RyZWFtLm9uKCdlbmQnLCAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRyYW5zZm9ybVN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmVxdWVzdFN0cmVhbS5vbignZXJyb3InLCAoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgdHJhbnNmb3JtU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICB9KTtcblxuICAgIHRyYW5zZm9ybVN0cmVhbS5hYm9ydCA9ICgpOiB2b2lkID0+IHtcbiAgICAgIC8vIEZJWE1FOiB0aGlzIGlzIGNsZWFybHkgYSBwb3RlbnRpYWwgaXNzdWVcbiAgICAgIC8vIHRoZXJlIGlzIG5vIGFib3J0IG1ldGhvZCBvbiBTdHJlYW0uUmVhZGFibGVcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJlcXVlc3RTdHJlYW0uYWJvcnQoKTtcbiAgICAgIHRyYW5zZm9ybVN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRyYW5zZm9ybVN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgcHJveHkgaGVhZGVycy5cbiAgICogRklYTUU6IG9iamVjdCBtdXRhdGlvbnMsIGl0IHNob3VsZCByZXR1cm4gYW4gbmV3IG9iamVjdFxuICAgKiBAcGFyYW0geyp9IHJlcSB0aGUgaHR0cCByZXF1ZXN0XG4gICAqIEBwYXJhbSB7Kn0gaGVhZGVycyB0aGUgcmVxdWVzdCBoZWFkZXJzXG4gICAqL1xuICBwcml2YXRlIF9hZGRQcm94eUhlYWRlcnMocmVxOiBhbnksIGhlYWRlcnM6IGFueSk6IHZvaWQge1xuICAgIGlmIChyZXEpIHtcbiAgICAgIC8vIE9ubHkgc3VibWl0IFgtRm9yd2FyZGVkLUZvciBmaWVsZCBpZiB3ZSBkb24ndCBoYXZlIGEgcHJveHkgc2VsZWN0ZWRcbiAgICAgIC8vIGluIHRoZSBjb25maWcgZmlsZS5cbiAgICAgIC8vXG4gICAgICAvLyBPdGhlcndpc2UgbWlzY29uZmlndXJlZCBwcm94eSBjb3VsZCByZXR1cm4gNDA3OlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JsaWR3a2Evc2lub3BpYS9pc3N1ZXMvMjU0XG4gICAgICAvL1xuICAgICAgLy8gRklYTUU6IHByb3h5IGxvZ2ljIGlzIG9kZCwgc29tZXRoaW5nIGlzIHdyb25nIGhlcmUuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoIXRoaXMucHJveHkpIHtcbiAgICAgICAgaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ10gPVxuICAgICAgICAgIChyZXEuZ2V0KCd4LWZvcndhcmRlZC1mb3InKSA/IHJlcS5nZXQoJ3gtZm9yd2FyZGVkLWZvcicpICsgJywgJyA6ICcnKSArXG4gICAgICAgICAgcmVxLmNvbm5lY3Rpb24ucmVtb3RlQWRkcmVzcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbHdheXMgYXR0YWNoIFZpYSBoZWFkZXIgdG8gYXZvaWQgbG9vcHMsIGV2ZW4gaWYgd2UncmUgbm90IHByb3h5aW5nXG4gICAgaGVhZGVyc1sndmlhJ10gPSByZXEgJiYgcmVxLmdldCgndmlhJykgPyByZXEuZ2V0KCd2aWEnKSArICcsICcgOiAnJztcblxuICAgIGhlYWRlcnNbJ3ZpYSddICs9ICcxLjEgJyArIHRoaXMuc2VydmVyX2lkICsgJyAoVmVyZGFjY2lvKSc7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgcmVtb3RlIGhvc3QgaXMgYXZhaWxhYmxlLlxuICAgKiBAcGFyYW0geyp9IGFsaXZlXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAqL1xuICBwcml2YXRlIF9zdGF0dXNDaGVjayhhbGl2ZT86IGJvb2xlYW4pOiBib29sZWFuIHwgdm9pZCB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLl9pZlJlcXVlc3RGYWlsdXJlKCkgPT09IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYWxpdmUpIHtcbiAgICAgIGlmICh0aGlzLmZhaWxlZF9yZXF1ZXN0cyA+PSB0aGlzLm1heF9mYWlscykge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhvc3Q6IHRoaXMudXJsLmhvc3QsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnaG9zdCBAe2hvc3R9IGlzIGJhY2sgb25saW5lJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5mYWlsZWRfcmVxdWVzdHMgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZhaWxlZF9yZXF1ZXN0cysrO1xuICAgICAgaWYgKHRoaXMuZmFpbGVkX3JlcXVlc3RzID09PSB0aGlzLm1heF9mYWlscykge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhvc3Q6IHRoaXMudXJsLmhvc3QsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnaG9zdCBAe2hvc3R9IGlzIG5vdyBvZmZsaW5lJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGFzdF9yZXF1ZXN0X3RpbWUgPSBEYXRlLm5vdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSByZXF1ZXN0IGZhaWx1cmUuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9pZlJlcXVlc3RGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZhaWxlZF9yZXF1ZXN0cyA+PSB0aGlzLm1heF9mYWlscyAmJlxuICAgICAgTWF0aC5hYnMoRGF0ZS5ub3coKSAtICh0aGlzLmxhc3RfcmVxdWVzdF90aW1lIGFzIG51bWJlcikpIDwgdGhpcy5mYWlsX3RpbWVvdXRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBhIHByb3h5LlxuICAgKiBAcGFyYW0geyp9IGhvc3RuYW1lXG4gICAqIEBwYXJhbSB7Kn0gY29uZmlnXG4gICAqIEBwYXJhbSB7Kn0gbWFpbmNvbmZpZ1xuICAgKiBAcGFyYW0geyp9IGlzSFRUUFNcbiAgICovXG4gIHByaXZhdGUgX3NldHVwUHJveHkoXG4gICAgaG9zdG5hbWU6IHN0cmluZyxcbiAgICBjb25maWc6IFVwTGlua0NvbmYsXG4gICAgbWFpbmNvbmZpZzogQ29uZmlnLFxuICAgIGlzSFRUUFM6IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgbGV0IG5vUHJveHlMaXN0O1xuICAgIGNvbnN0IHByb3h5X2tleTogc3RyaW5nID0gaXNIVFRQUyA/ICdodHRwc19wcm94eScgOiAnaHR0cF9wcm94eSc7XG5cbiAgICAvLyBnZXQgaHR0cF9wcm94eSBhbmQgbm9fcHJveHkgY29uZmlnc1xuICAgIGlmIChwcm94eV9rZXkgaW4gY29uZmlnKSB7XG4gICAgICB0aGlzLnByb3h5ID0gY29uZmlnW3Byb3h5X2tleV07XG4gICAgfSBlbHNlIGlmIChwcm94eV9rZXkgaW4gbWFpbmNvbmZpZykge1xuICAgICAgdGhpcy5wcm94eSA9IG1haW5jb25maWdbcHJveHlfa2V5XTtcbiAgICB9XG4gICAgaWYgKCdub19wcm94eScgaW4gY29uZmlnKSB7XG4gICAgICBub1Byb3h5TGlzdCA9IGNvbmZpZy5ub19wcm94eTtcbiAgICB9IGVsc2UgaWYgKCdub19wcm94eScgaW4gbWFpbmNvbmZpZykge1xuICAgICAgbm9Qcm94eUxpc3QgPSBtYWluY29uZmlnLm5vX3Byb3h5O1xuICAgIH1cblxuICAgIC8vIHVzZSB3Z2V0LWxpa2UgYWxnb3JpdGhtIHRvIGRldGVybWluZSBpZiBwcm94eSBzaG91bGRuJ3QgYmUgdXNlZFxuICAgIGlmIChob3N0bmFtZVswXSAhPT0gJy4nKSB7XG4gICAgICBob3N0bmFtZSA9ICcuJyArIGhvc3RuYW1lO1xuICAgIH1cblxuICAgIGlmIChfLmlzU3RyaW5nKG5vUHJveHlMaXN0KSAmJiBub1Byb3h5TGlzdC5sZW5ndGgpIHtcbiAgICAgIG5vUHJveHlMaXN0ID0gbm9Qcm94eUxpc3Quc3BsaXQoJywnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc0FycmF5KG5vUHJveHlMaXN0KSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub1Byb3h5TGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbm9Qcm94eUl0ZW0gPSBub1Byb3h5TGlzdFtpXTtcbiAgICAgICAgaWYgKG5vUHJveHlJdGVtWzBdICE9PSAnLicpIHtcbiAgICAgICAgICBub1Byb3h5SXRlbSA9ICcuJyArIG5vUHJveHlJdGVtO1xuICAgICAgICB9XG4gICAgICAgIGlmIChob3N0bmFtZS5sYXN0SW5kZXhPZihub1Byb3h5SXRlbSkgPT09IGhvc3RuYW1lLmxlbmd0aCAtIG5vUHJveHlJdGVtLmxlbmd0aCkge1xuICAgICAgICAgIGlmICh0aGlzLnByb3h5KSB7XG4gICAgICAgICAgICBkZWJ1Zygnbm90IHVzaW5nIHByb3h5IGZvciAlbywgZXhjbHVkZWQgYnkgJW8gcnVsZScsIHRoaXMudXJsLmhyZWYsIG5vUHJveHlJdGVtKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRoaXMucHJveHkgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiBpdCdzIG5vbi1zdHJpbmcgKGkuZS4gXCJmYWxzZVwiKSwgZG9uJ3QgdXNlIGl0XG4gICAgaWYgKF8uaXNTdHJpbmcodGhpcy5wcm94eSkgPT09IGZhbHNlKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBkZWxldGUgdGhpcy5wcm94eTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWcoJ3VzaW5nIHByb3h5ICVvIGZvciAlbycsIHRoaXMudXJsLmhyZWYsIHRoaXMucHJveHkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm94eVN0b3JhZ2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLElBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFPLFFBQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQUVBLElBQUFTLFVBQUEsR0FBQVQsT0FBQTtBQVVBLElBQUFVLE9BQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLE9BQUEsR0FBQVgsT0FBQTtBQUE4RSxTQUFBRCx1QkFBQWEsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUFBLFNBQUFHLGdCQUFBSCxHQUFBLEVBQUFJLEdBQUEsRUFBQUMsS0FBQSxJQUFBRCxHQUFBLEdBQUFFLGNBQUEsQ0FBQUYsR0FBQSxPQUFBQSxHQUFBLElBQUFKLEdBQUEsSUFBQU8sTUFBQSxDQUFBQyxjQUFBLENBQUFSLEdBQUEsRUFBQUksR0FBQSxJQUFBQyxLQUFBLEVBQUFBLEtBQUEsRUFBQUksVUFBQSxRQUFBQyxZQUFBLFFBQUFDLFFBQUEsb0JBQUFYLEdBQUEsQ0FBQUksR0FBQSxJQUFBQyxLQUFBLFdBQUFMLEdBQUE7QUFBQSxTQUFBTSxlQUFBTSxHQUFBLFFBQUFSLEdBQUEsR0FBQVMsWUFBQSxDQUFBRCxHQUFBLDJCQUFBUixHQUFBLGdCQUFBQSxHQUFBLEdBQUFVLE1BQUEsQ0FBQVYsR0FBQTtBQUFBLFNBQUFTLGFBQUFFLEtBQUEsRUFBQUMsSUFBQSxlQUFBRCxLQUFBLGlCQUFBQSxLQUFBLGtCQUFBQSxLQUFBLE1BQUFFLElBQUEsR0FBQUYsS0FBQSxDQUFBRyxNQUFBLENBQUFDLFdBQUEsT0FBQUYsSUFBQSxLQUFBRyxTQUFBLFFBQUFDLEdBQUEsR0FBQUosSUFBQSxDQUFBSyxJQUFBLENBQUFQLEtBQUEsRUFBQUMsSUFBQSwyQkFBQUssR0FBQSxzQkFBQUEsR0FBQSxZQUFBRSxTQUFBLDREQUFBUCxJQUFBLGdCQUFBRixNQUFBLEdBQUFVLE1BQUEsRUFBQVQsS0FBQTtBQUU5RSxNQUFNVSxLQUFLLEdBQUcsSUFBQUMsY0FBVSxFQUFDLGlCQUFpQixDQUFDO0FBRTNDLE1BQU1DLE1BQU0sR0FBRyxTQUFBQSxDQUFVQyxLQUFLLEVBQVU7RUFDdEMsT0FBT0Msa0JBQWtCLENBQUNELEtBQUssQ0FBQyxDQUFDRSxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUN2RCxDQUFDO0FBRUQsTUFBTUMsZUFBZSxHQUFHQyxrQkFBTyxDQUFDQyxJQUFJO0FBQ3BDLE1BQU1DLGlCQUFpQixHQUFJLEdBQUVILGVBQWdCLEdBQUU7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBLE1BQU1JLFNBQVMsR0FBR0EsQ0FBQ0MsTUFBTSxFQUFFaEMsR0FBRyxFQUFFaUMsR0FBRyxLQUFhO0VBQzlDLE9BQU9DLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDSCxNQUFNLENBQUNoQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBR2dDLE1BQU0sQ0FBQ2hDLEdBQUcsQ0FBQyxHQUFHaUMsR0FBRztBQUMzRCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUcsWUFBWSxDQUFDO0VBYWpCO0VBQ0E7RUFFQTtFQUNBO0VBRUE7RUFJQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ1NDLFdBQVdBLENBQUNMLE1BQWtCLEVBQUVNLFVBQWtCLEVBQUU7SUFBQSxJQUFBQyxxQkFBQTtJQUFBeEMsZUFBQTtJQUFBQSxlQUFBO0lBQUFBLGVBQUE7SUFBQUEsZUFBQTtJQUFBQSxlQUFBO0lBQUFBLGVBQUE7SUFBQUEsZUFBQTtJQUFBQSxlQUFBO0lBQUFBLGVBQUE7SUFBQUEsZUFBQTtJQUFBQSxlQUFBO0lBQUFBLGVBQUE7SUFBQUEsZUFBQTtJQUFBQSxlQUFBO0lBQUFBLGVBQUE7SUFBQUEsZUFBQTtJQUN6RCxJQUFJLENBQUNpQyxNQUFNLEdBQUdBLE1BQU07SUFDcEIsSUFBSSxDQUFDUSxlQUFlLEdBQUcsQ0FBQztJQUN4QjtJQUNBLElBQUksQ0FBQ0MsU0FBUyxJQUFBRixxQkFBQSxHQUFHRCxVQUFVLENBQUNJLFVBQVUsY0FBQUgscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxRQUFRO0lBQ2xELElBQUksQ0FBQ0ksRUFBRSxHQUFHWCxNQUFNLENBQUNXLEVBQUU7SUFDbkIsSUFBSSxDQUFDQyxNQUFNLEdBQUdBLGNBQU07SUFDcEIsSUFBSSxDQUFDQyxTQUFTLEdBQUdQLFVBQVUsQ0FBQ08sU0FBUztJQUVyQyxJQUFJLENBQUNDLEdBQUcsR0FBR0MsWUFBRyxDQUFDQyxLQUFLLENBQUMsSUFBSSxDQUFDaEIsTUFBTSxDQUFDYyxHQUFHLENBQUM7SUFFckMsSUFBSSxDQUFDRyxXQUFXLENBQUMsSUFBSSxDQUFDSCxHQUFHLENBQUNJLFFBQVEsRUFBRWxCLE1BQU0sRUFBRU0sVUFBVSxFQUFFLElBQUksQ0FBQ1EsR0FBRyxDQUFDSyxRQUFRLEtBQUssUUFBUSxDQUFDO0lBRXZGLElBQUksQ0FBQ25CLE1BQU0sQ0FBQ2MsR0FBRyxHQUFHLElBQUksQ0FBQ2QsTUFBTSxDQUFDYyxHQUFHLENBQUNwQixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUVwRCxJQUFJLElBQUksQ0FBQ00sTUFBTSxDQUFDb0IsT0FBTyxJQUFJaEMsTUFBTSxDQUFDLElBQUksQ0FBQ1ksTUFBTSxDQUFDb0IsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFO01BQzlELElBQUksQ0FBQ1IsTUFBTSxDQUFDUyxJQUFJLENBQ2QsQ0FDRSx5QkFBeUIsR0FBRyxJQUFJLENBQUNyQixNQUFNLENBQUNvQixPQUFPLEVBQy9DLDBDQUEwQyxFQUMxQyw0Q0FBNEMsRUFDNUMsMENBQTBDLENBQzNDLENBQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDYjtJQUNIOztJQUVBO0lBQ0EsSUFBSSxDQUFDQyxNQUFNLEdBQUcsSUFBQUMscUJBQWEsRUFBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUNDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkUsSUFBSSxDQUFDb0IsT0FBTyxHQUFHLElBQUFJLHFCQUFhLEVBQUN6QixTQUFTLENBQUMsSUFBSSxDQUFDQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLElBQUksQ0FBQ3lCLFNBQVMsR0FBR3JDLE1BQU0sQ0FBQ1csU0FBUyxDQUFDLElBQUksQ0FBQ0MsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMwQixZQUFZLEdBQUcsSUFBQUYscUJBQWEsRUFBQ3pCLFNBQVMsQ0FBQyxJQUFJLENBQUNDLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0UsSUFBSSxDQUFDMkIsVUFBVSxHQUFHQyxPQUFPLENBQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDQyxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JFLElBQUksQ0FBQzZCLGFBQWEsR0FBRzlCLFNBQVMsQ0FBQyxJQUFJLENBQUNDLE1BQU0sRUFBRSxlQUFlLEVBQUU7TUFDM0Q4QixTQUFTLEVBQUUsSUFBSTtNQUNmQyxVQUFVLEVBQUUsRUFBRTtNQUNkQyxjQUFjLEVBQUU7SUFDbEIsQ0FBQyxDQUFDO0VBQ0o7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ1VDLE9BQU9BLENBQUNDLE9BQVksRUFBRUMsRUFBYSxFQUFtQjtJQUM1RCxJQUFJQyxJQUFJO0lBRVIsSUFBSSxJQUFJLENBQUNDLFlBQVksRUFBRSxLQUFLLEtBQUssRUFBRTtNQUNqQyxNQUFNQyxVQUFVLEdBQUcsSUFBSUMsZUFBTSxDQUFDQyxRQUFRLEVBQUU7TUFFeENDLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDLFlBQWtCO1FBQ2pDLElBQUlQLEVBQUUsRUFBRTtVQUNOQSxFQUFFLENBQUNRLGlCQUFTLENBQUNDLGdCQUFnQixDQUFDQyxvQkFBUyxDQUFDQyxjQUFjLENBQUMsQ0FBQztRQUMxRDtRQUNBUixVQUFVLENBQUNTLElBQUksQ0FBQyxPQUFPLEVBQUVKLGlCQUFTLENBQUNDLGdCQUFnQixDQUFDQyxvQkFBUyxDQUFDQyxjQUFjLENBQUMsQ0FBQztNQUNoRixDQUFDLENBQUM7TUFFRlIsVUFBVSxDQUFDVSxLQUFLLEdBQUcsWUFBa0IsQ0FBQyxDQUFDO01BQ3ZDO01BQ0FWLFVBQVUsQ0FBQ1csRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFrQixDQUFDLENBQUMsQ0FBQztNQUM1QyxPQUFPWCxVQUFVO0lBQ25CO0lBRUEsTUFBTVksSUFBSSxHQUFHLElBQUk7SUFDakIsTUFBTUMsT0FBZ0IsR0FBRyxJQUFJLENBQUNDLFdBQVcsQ0FBQ2xCLE9BQU8sQ0FBQztJQUVsRCxJQUFJLENBQUNtQixnQkFBZ0IsQ0FBQ25CLE9BQU8sQ0FBQ29CLEdBQUcsRUFBRUgsT0FBTyxDQUFDO0lBQzNDLElBQUksQ0FBQ0ksZ0NBQWdDLENBQUNKLE9BQU8sQ0FBQztJQUU5QyxNQUFNSyxNQUFNLEdBQUd0QixPQUFPLENBQUNzQixNQUFNLElBQUksS0FBSztJQUN0QyxNQUFNQyxHQUFHLEdBQUd2QixPQUFPLENBQUN3QixRQUFRLElBQUksSUFBSSxDQUFDMUQsTUFBTSxDQUFDYyxHQUFHLEdBQUdvQixPQUFPLENBQUN1QixHQUFHO0lBRTdEUCxJQUFJLENBQUN0QyxNQUFNLENBQUMrQyxJQUFJLENBQ2Q7TUFDRUgsTUFBTSxFQUFFQSxNQUFNO01BQ2RDLEdBQUcsRUFBRUE7SUFDUCxDQUFDLEVBQ0Qsb0NBQW9DLENBQ3JDO0lBRUQsSUFBSSxJQUFBRyxnQkFBUSxFQUFDMUIsT0FBTyxDQUFDRSxJQUFJLENBQUMsRUFBRTtNQUMxQkEsSUFBSSxHQUFHdkMsSUFBSSxDQUFDZ0UsU0FBUyxDQUFDM0IsT0FBTyxDQUFDRSxJQUFJLENBQUM7TUFDbkNlLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBR0EsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJdkQsa0JBQU8sQ0FBQ0MsSUFBSTtJQUNuRTtJQUVBLE1BQU1pRSxlQUFlLEdBQUczQixFQUFFLEdBQ3RCLFVBQVU0QixHQUFHLEVBQUU5RSxHQUFHLEVBQUUrRSxJQUFJLEVBQVE7TUFDOUIsSUFBSUMsS0FBSztNQUNULE1BQU1DLGNBQWMsR0FBR0gsR0FBRyxHQUFHLENBQUMsR0FBR0MsSUFBSSxDQUFDRyxNQUFNO01BRTVDQyxXQUFXLEVBQUU7TUFDYkMsV0FBVyxFQUFFO01BRWJsQyxFQUFFLENBQUM0QixHQUFHLEVBQUU5RSxHQUFHLEVBQUUrRSxJQUFJLENBQUM7O01BRWxCO0FBQ1Y7QUFDQTtNQUNVLFNBQVNJLFdBQVdBLENBQUEsRUFBUztRQUMzQixJQUFJTCxHQUFHLEVBQUU7VUFDUEUsS0FBSyxHQUFHRixHQUFHLENBQUNPLE9BQU87VUFDbkI7UUFDRjtRQUVBLElBQUlwQyxPQUFPLENBQUNFLElBQUksSUFBSW5ELEdBQUcsQ0FBQ3NGLFVBQVUsR0FBRyxHQUFHLEVBQUU7VUFDeEMsSUFBSTtZQUNGUCxJQUFJLEdBQUduRSxJQUFJLENBQUNtQixLQUFLLENBQUNnRCxJQUFJLENBQUNRLFFBQVEsQ0FBQ0MsNkJBQWtCLENBQUNDLElBQUksQ0FBQyxDQUFDO1VBQzNELENBQUMsQ0FBQyxPQUFPQyxJQUFJLEVBQUU7WUFDYlgsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNURCxHQUFHLEdBQUdZLElBQUk7WUFDVlYsS0FBSyxHQUFHRixHQUFHLENBQUNPLE9BQU87VUFDckI7UUFDRjtRQUVBLElBQUksQ0FBQ1AsR0FBRyxJQUFJLElBQUFILGdCQUFRLEVBQUNJLElBQUksQ0FBQyxFQUFFO1VBQzFCLElBQUk5RCxlQUFDLENBQUMwRSxRQUFRLENBQUNaLElBQUksQ0FBQ0MsS0FBSyxDQUFDLEVBQUU7WUFDMUJBLEtBQUssR0FBR0QsSUFBSSxDQUFDQyxLQUFLO1VBQ3BCO1FBQ0Y7TUFDRjtNQUNBO0FBQ1Y7QUFDQTtNQUNVLFNBQVNJLFdBQVdBLENBQUEsRUFBUztRQUMzQixJQUFJQyxPQUFPLEdBQUcscURBQXFEO1FBQ25FQSxPQUFPLElBQUlMLEtBQUssR0FBRyxvQkFBb0IsR0FBRyxtQ0FBbUM7UUFDN0VmLElBQUksQ0FBQ3RDLE1BQU0sQ0FBQ2lFLElBQUksQ0FDZDtVQUNFZCxHQUFHLEVBQUVBLEdBQUcsSUFBSS9FLFNBQVM7VUFBRTtVQUN2QmlELE9BQU8sRUFBRTtZQUFFdUIsTUFBTSxFQUFFQSxNQUFNO1lBQUUxQyxHQUFHLEVBQUUyQztVQUFJLENBQUM7VUFDckNxQixNQUFNLEVBQUU3RixHQUFHLElBQUksSUFBSSxHQUFHQSxHQUFHLENBQUNzRixVQUFVLEdBQUcsS0FBSztVQUM1Q04sS0FBSyxFQUFFQSxLQUFLO1VBQ1pjLEtBQUssRUFBRTtZQUNMQyxFQUFFLEVBQUU1QyxJQUFJLEdBQUdBLElBQUksQ0FBQytCLE1BQU0sR0FBRyxDQUFDO1lBQzFCYyxHQUFHLEVBQUVmLGNBQWMsSUFBSTtVQUN6QjtRQUNGLENBQUMsRUFDREksT0FBTyxDQUNSO01BQ0g7SUFDRixDQUFDLEdBQ0R0RixTQUFTO0lBQ2IsSUFBSWtHLGNBQXNDLEdBQUc7TUFDM0NwRSxHQUFHLEVBQUUyQyxHQUFHO01BQ1JELE1BQU0sRUFBRUEsTUFBTTtNQUNkTCxPQUFPLEVBQUVBLE9BQU87TUFDaEJhLElBQUksRUFBRTVCLElBQUk7TUFDVitDLEtBQUssRUFBRSxJQUFJLENBQUNBLEtBQUs7TUFDakJDLFFBQVEsRUFBRSxJQUFJO01BQ2RDLElBQUksRUFBRSxJQUFJO01BQ1ZqRSxPQUFPLEVBQUUsSUFBSSxDQUFDQSxPQUFPO01BQ3JCa0UsU0FBUyxFQUFFLElBQUksQ0FBQzNELFVBQVU7TUFDMUI0RCxZQUFZLEVBQUUsSUFBSSxDQUFDMUQ7SUFDckIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDbEIsRUFBRSxFQUFFO01BQ1h1RSxjQUFjLEdBQUcvRyxNQUFNLENBQUNxSCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUVOLGNBQWMsRUFBRTtRQUNqRHZFLEVBQUUsRUFBRSxJQUFJLENBQUNBO01BQ1gsQ0FBQyxDQUFDO0lBQ0o7SUFFQSxNQUFNMkMsR0FBRyxHQUFHLElBQUFyQixnQkFBTyxFQUFDaUQsY0FBYyxFQUFFcEIsZUFBZSxDQUFDO0lBRXBELElBQUkyQixZQUFZLEdBQUcsS0FBSztJQUN4Qm5DLEdBQUcsQ0FBQ0wsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVaEUsR0FBRyxFQUFRO01BQ3RDO01BQ0E7TUFDQSxJQUFJLENBQUNxRSxHQUFHLENBQUNvQyxrQkFBa0IsSUFBSSxDQUFDRCxZQUFZLEVBQUU7UUFDNUNBLFlBQVksR0FBRyxJQUFJO1FBQ25CdkMsSUFBSSxDQUFDYixZQUFZLENBQUMsSUFBSSxDQUFDO01BQ3pCO01BRUEsSUFBSW5DLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDMkQsZUFBZSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQ3RDLENBQUMsU0FBUzZCLE1BQU1BLENBQUEsRUFBUztVQUN2QixNQUFNckIsT0FBTyxHQUFHLGlFQUFpRTtVQUNqRnBCLElBQUksQ0FBQ3RDLE1BQU0sQ0FBQ2lFLElBQUksQ0FDZDtZQUNFNUMsT0FBTyxFQUFFO2NBQ1B1QixNQUFNLEVBQUVBLE1BQU07Y0FDZDFDLEdBQUcsRUFBRTJDO1lBQ1AsQ0FBQztZQUNEcUIsTUFBTSxFQUFFNUUsZUFBQyxDQUFDMEYsTUFBTSxDQUFDM0csR0FBRyxDQUFDLEtBQUssS0FBSyxHQUFHQSxHQUFHLENBQUNzRixVQUFVLEdBQUc7VUFDckQsQ0FBQyxFQUNERCxPQUFPLENBQ1I7UUFDSCxDQUFDLEdBQUc7TUFDTjtJQUNGLENBQUMsQ0FBQztJQUNGaEIsR0FBRyxDQUFDTCxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUwQixJQUFJLEVBQVE7TUFDcEM7TUFDQTtNQUNBLElBQUksQ0FBQ3JCLEdBQUcsQ0FBQ29DLGtCQUFrQixJQUFJLENBQUNELFlBQVksRUFBRTtRQUM1Q0EsWUFBWSxHQUFHLElBQUk7UUFDbkJ2QyxJQUFJLENBQUNiLFlBQVksQ0FBQyxLQUFLLENBQUM7TUFDMUI7SUFDRixDQUFDLENBQUM7SUFDRjtJQUNBLE9BQU9pQixHQUFHO0VBQ1o7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ1VGLFdBQVdBLENBQUNsQixPQUFZLEVBQVc7SUFBQSxJQUFBMkQsWUFBQTtJQUN6QyxNQUFNMUMsT0FBTyxHQUFHakIsT0FBTyxDQUFDaUIsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNyQyxNQUFNMkMsTUFBTSxHQUFHbEcsa0JBQU8sQ0FBQ21HLE1BQU07SUFDN0IsTUFBTUMsY0FBYyxHQUFHcEcsa0JBQU8sQ0FBQ3FHLGVBQWU7SUFDOUMsTUFBTXhGLFNBQVMsR0FBR2Isa0JBQU8sQ0FBQ3NHLFVBQVU7SUFFcEMvQyxPQUFPLENBQUMyQyxNQUFNLENBQUMsR0FBRzNDLE9BQU8sQ0FBQzJDLE1BQU0sQ0FBQyxJQUFJaEcsaUJBQWlCO0lBQ3REcUQsT0FBTyxDQUFDNkMsY0FBYyxDQUFDLEdBQUc3QyxPQUFPLENBQUM2QyxjQUFjLENBQUMsSUFBSSxNQUFNO0lBQzNEO0lBQ0E3QyxPQUFPLENBQUMxQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUNBLFNBQVMsR0FDOUIsUUFBTyxJQUFJLENBQUNBLFNBQVUsR0FBRSxJQUFBb0YsWUFBQSxHQUN6QjNELE9BQU8sQ0FBQ29CLEdBQUcsY0FBQXVDLFlBQUEsdUJBQVhBLFlBQUEsQ0FBYU0sR0FBRyxDQUFDLFlBQVksQ0FBQztJQUVsQyxPQUFPLElBQUksQ0FBQ0MsUUFBUSxDQUFDakQsT0FBTyxDQUFDO0VBQy9COztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNVaUQsUUFBUUEsQ0FBQ2pELE9BQVksRUFBVztJQUN0QyxNQUFNO01BQUVrRDtJQUFLLENBQUMsR0FBRyxJQUFJLENBQUNyRyxNQUFNO0lBRTVCLElBQUlFLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDa0csSUFBSSxDQUFDLElBQUlsRCxPQUFPLENBQUN2RCxrQkFBTyxDQUFDMEcsYUFBYSxDQUFDLEVBQUU7TUFDbkQsT0FBT25ELE9BQU87SUFDaEI7SUFFQSxJQUFJakQsZUFBQyxDQUFDMEQsUUFBUSxDQUFDeUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJbkcsZUFBQyxDQUFDMEQsUUFBUSxDQUFDeUMsSUFBSSxDQUFDRSxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7TUFDbEUsSUFBSSxDQUFDQyxlQUFlLENBQUMsY0FBYyxDQUFDO0lBQ3RDOztJQUVBO0lBQ0E7SUFDQTtJQUNBLElBQUlELEtBQVU7SUFDZCxNQUFNRSxTQUFjLEdBQUdKLElBQUk7SUFFM0IsSUFBSW5HLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDc0csU0FBUyxDQUFDRixLQUFLLENBQUMsS0FBSyxLQUFLLElBQUlyRyxlQUFDLENBQUMwRSxRQUFRLENBQUM2QixTQUFTLENBQUNGLEtBQUssQ0FBQyxFQUFFO01BQ3JFQSxLQUFLLEdBQUdFLFNBQVMsQ0FBQ0YsS0FBSztJQUN6QixDQUFDLE1BQU0sSUFBSXJHLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDc0csU0FBUyxDQUFDQyxTQUFTLENBQUMsS0FBSyxLQUFLLEVBQUU7TUFDakQsSUFBSXhHLGVBQUMsQ0FBQzBFLFFBQVEsQ0FBQzZCLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDLEVBQUU7UUFDbkNILEtBQUssR0FBRzlELE9BQU8sQ0FBQ2tFLEdBQUcsQ0FBQ0YsU0FBUyxDQUFDQyxTQUFTLENBQUM7TUFDMUMsQ0FBQyxNQUFNLElBQUl4RyxlQUFDLENBQUMwRyxTQUFTLENBQUNILFNBQVMsQ0FBQ0MsU0FBUyxDQUFDLElBQUlELFNBQVMsQ0FBQ0MsU0FBUyxFQUFFO1FBQ2xFSCxLQUFLLEdBQUc5RCxPQUFPLENBQUNrRSxHQUFHLENBQUNFLFNBQVM7TUFDL0IsQ0FBQyxNQUFNO1FBQ0wsSUFBSSxDQUFDakcsTUFBTSxDQUFDcUQsS0FBSyxDQUFDNkMscUJBQVUsQ0FBQ0MsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQ1AsZUFBZSxDQUFDTSxxQkFBVSxDQUFDQyxjQUFjLENBQUM7TUFDakQ7SUFDRixDQUFDLE1BQU07TUFDTFIsS0FBSyxHQUFHOUQsT0FBTyxDQUFDa0UsR0FBRyxDQUFDRSxTQUFTO0lBQy9CO0lBRUEsSUFBSTNHLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDb0csS0FBSyxDQUFDLEVBQUU7TUFDbEIsSUFBSSxDQUFDQyxlQUFlLENBQUNNLHFCQUFVLENBQUNDLGNBQWMsQ0FBQztJQUNqRDs7SUFFQTtJQUNBLE1BQU1DLElBQUksR0FBR1AsU0FBUyxDQUFDTyxJQUFJLElBQUlDLHNCQUFXO0lBQzFDLElBQUksQ0FBQ0MsdUJBQXVCLENBQUMvRCxPQUFPLEVBQUU2RCxJQUFJLEVBQUVULEtBQUssQ0FBQztJQUVsRCxPQUFPcEQsT0FBTztFQUNoQjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ1VxRCxlQUFlQSxDQUFDbEMsT0FBZSxFQUFTO0lBQzlDLElBQUksQ0FBQzFELE1BQU0sQ0FBQ3FELEtBQUssQ0FBQ0ssT0FBTyxDQUFDO0lBQzFCLE1BQU0sSUFBSTZDLEtBQUssQ0FBQzdDLE9BQU8sQ0FBQztFQUMxQjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNVNEMsdUJBQXVCQSxDQUFDL0QsT0FBWSxFQUFFNkQsSUFBWSxFQUFFVCxLQUFVLEVBQVE7SUFDNUUsTUFBTWEsS0FBYSxHQUFHSixJQUFJLENBQUNLLFdBQVcsRUFBRTtJQUV4QyxJQUFJLENBQUNDLHVCQUFZLENBQUNELFdBQVcsRUFBRSxFQUFFSixzQkFBVyxDQUFDSSxXQUFXLEVBQUUsQ0FBQyxDQUFDRSxRQUFRLENBQUNILEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRTtNQUNyRixJQUFJLENBQUNaLGVBQWUsQ0FBRSxjQUFhWSxLQUFNLGVBQWMsQ0FBQztJQUMxRDtJQUVBSixJQUFJLEdBQUc5RyxlQUFDLENBQUNzSCxVQUFVLENBQUNSLElBQUksQ0FBQztJQUN6QjdELE9BQU8sQ0FBQ3ZELGtCQUFPLENBQUMwRyxhQUFhLENBQUMsR0FBRyxJQUFBbUIsaUJBQVUsRUFBQ1QsSUFBSSxFQUFFVCxLQUFLLENBQUM7RUFDMUQ7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBRVVoRCxnQ0FBZ0NBLENBQUNKLE9BQWdCLEVBQU87SUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQ25ELE1BQU0sQ0FBQ21ELE9BQU8sRUFBRTtNQUN4QixPQUFPQSxPQUFPO0lBQ2hCOztJQUVBO0lBQ0E7SUFDQSxLQUFLLE1BQU1uRixHQUFHLElBQUksSUFBSSxDQUFDZ0MsTUFBTSxDQUFDbUQsT0FBTyxFQUFFO01BQ3JDQSxPQUFPLENBQUNuRixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUNnQyxNQUFNLENBQUNtRCxPQUFPLENBQUNuRixHQUFHLENBQUM7SUFDekM7RUFDRjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ1MwSixhQUFhQSxDQUFDNUcsR0FBVyxFQUFXO0lBQ3pDLE1BQU02RyxTQUE2QixHQUFHNUcsWUFBRyxDQUFDQyxLQUFLLENBQUNGLEdBQUcsQ0FBQztJQUNwRCxNQUFNOEcsT0FBTyxHQUFJQyxlQUFvQixJQUNuQ0EsZUFBZSxDQUFDMUcsUUFBUSxLQUFLLFFBQVEsS0FDcEN3RyxTQUFTLENBQUNHLElBQUksS0FBSyxJQUFJLElBQUlILFNBQVMsQ0FBQ0csSUFBSSxLQUFLLEtBQUssQ0FBQztJQUN2RCxNQUFNQyxPQUFPLEdBQUlGLGVBQWUsSUFDOUJELE9BQU8sQ0FBQ0MsZUFBZSxDQUFDLEdBQUdBLGVBQWUsQ0FBQzNHLFFBQVEsR0FBRzJHLGVBQWUsQ0FBQ0csSUFBSTtJQUM1RSxNQUFNQyxlQUF3QixHQUFHTixTQUFTLENBQUN4RyxRQUFRLEtBQUssSUFBSSxDQUFDTCxHQUFHLENBQUNLLFFBQVE7SUFDekUsTUFBTStHLFdBQW9CLEdBQUdILE9BQU8sQ0FBQ0osU0FBUyxDQUFDLEtBQUtJLE9BQU8sQ0FBQyxJQUFJLENBQUNqSCxHQUFHLENBQUM7SUFDckU7SUFDQSxNQUFNcUgsV0FBb0IsR0FBR1IsU0FBUyxDQUFDUyxJQUFJLENBQUNDLE9BQU8sQ0FBQyxJQUFJLENBQUN2SCxHQUFHLENBQUNzSCxJQUFJLENBQUMsS0FBSyxDQUFDO0lBRXhFLE9BQU9ILGVBQWUsSUFBSUMsV0FBVyxJQUFJQyxXQUFXO0VBQ3REOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNTRyxpQkFBaUJBLENBQUNDLElBQVksRUFBRXJHLE9BQVksRUFBRXNHLFFBQWtCLEVBQVE7SUFDN0UsTUFBTXJGLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDbEIsSUFBSWpELGVBQUMsQ0FBQ0MsS0FBSyxDQUFDK0IsT0FBTyxDQUFDdUcsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFO01BQ25DdEYsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHakIsT0FBTyxDQUFDdUcsSUFBSTtNQUN2Q3RGLE9BQU8sQ0FBQ3ZELGtCQUFPLENBQUNtRyxNQUFNLENBQUMsR0FBR2pHLGlCQUFpQjtJQUM3QztJQUVBLElBQUksQ0FBQ21DLE9BQU8sQ0FDVjtNQUNFd0IsR0FBRyxFQUFHLElBQUdsRSxNQUFNLENBQUNnSixJQUFJLENBQUUsRUFBQztNQUN2Qm5HLElBQUksRUFBRSxJQUFJO01BQ1ZlLE9BQU8sRUFBRUEsT0FBTztNQUNoQkcsR0FBRyxFQUFFcEIsT0FBTyxDQUFDb0I7SUFDZixDQUFDLEVBQ0QsQ0FBQ1MsR0FBRyxFQUFFOUUsR0FBRyxFQUFFK0UsSUFBSSxLQUFXO01BQ3hCLElBQUlELEdBQUcsRUFBRTtRQUNQLE9BQU95RSxRQUFRLENBQUN6RSxHQUFHLENBQUM7TUFDdEI7TUFDQSxJQUFJOUUsR0FBRyxDQUFDc0YsVUFBVSxLQUFLbUUsc0JBQVcsQ0FBQ0MsU0FBUyxFQUFFO1FBQzVDLE9BQU9ILFFBQVEsQ0FBQzdGLGlCQUFTLENBQUNpRyxXQUFXLENBQUMvRixvQkFBUyxDQUFDZ0csa0JBQWtCLENBQUMsQ0FBQztNQUN0RTtNQUNBLElBQUksRUFBRTVKLEdBQUcsQ0FBQ3NGLFVBQVUsSUFBSW1FLHNCQUFXLENBQUNJLEVBQUUsSUFBSTdKLEdBQUcsQ0FBQ3NGLFVBQVUsR0FBR21FLHNCQUFXLENBQUNLLGdCQUFnQixDQUFDLEVBQUU7UUFDeEYsTUFBTTlFLEtBQUssR0FBR3RCLGlCQUFTLENBQUNDLGdCQUFnQixDQUNyQyxHQUFFQyxvQkFBUyxDQUFDbUcsZUFBZ0IsS0FBSS9KLEdBQUcsQ0FBQ3NGLFVBQVcsRUFBQyxDQUNsRDtRQUVETixLQUFLLENBQUNnRixZQUFZLEdBQUdoSyxHQUFHLENBQUNzRixVQUFVO1FBQ25DLE9BQU9pRSxRQUFRLENBQUN2RSxLQUFLLENBQUM7TUFDeEI7TUFDQXVFLFFBQVEsQ0FBQyxJQUFJLEVBQUV4RSxJQUFJLEVBQUUvRSxHQUFHLENBQUNrRSxPQUFPLENBQUNzRixJQUFJLENBQUM7SUFDeEMsQ0FBQyxDQUNGO0VBQ0g7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUNTUyxZQUFZQSxDQUFDcEksR0FBVyxFQUFFO0lBQy9CLE1BQU1xSSxNQUFNLEdBQUcsSUFBSUMsb0JBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJQyxjQUFjLEdBQUcsQ0FBQztJQUN0QixJQUFJQyxlQUFlO0lBRW5CSCxNQUFNLENBQUNJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQztJQUN2QixNQUFNQyxVQUFVLEdBQUcsSUFBSSxDQUFDdkgsT0FBTyxDQUFDO01BQzlCeUIsUUFBUSxFQUFFNUMsR0FBRztNQUNic0UsUUFBUSxFQUFFLElBQUk7TUFDZGpDLE9BQU8sRUFBRTtRQUNQc0csTUFBTSxFQUFFM0o7TUFDVjtJQUNGLENBQUMsQ0FBQztJQUVGMEosVUFBVSxDQUFDdkcsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVaEUsR0FBUSxFQUFFO01BQzVDLElBQUlBLEdBQUcsQ0FBQ3NGLFVBQVUsS0FBS21FLHNCQUFXLENBQUNDLFNBQVMsRUFBRTtRQUM1QyxPQUFPUSxNQUFNLENBQUNwRyxJQUFJLENBQUMsT0FBTyxFQUFFSixpQkFBUyxDQUFDaUcsV0FBVyxDQUFDL0Ysb0JBQVMsQ0FBQzZHLGVBQWUsQ0FBQyxDQUFDO01BQy9FO01BQ0EsSUFBSSxFQUFFekssR0FBRyxDQUFDc0YsVUFBVSxJQUFJbUUsc0JBQVcsQ0FBQ0ksRUFBRSxJQUFJN0osR0FBRyxDQUFDc0YsVUFBVSxHQUFHbUUsc0JBQVcsQ0FBQ0ssZ0JBQWdCLENBQUMsRUFBRTtRQUN4RixPQUFPSSxNQUFNLENBQUNwRyxJQUFJLENBQ2hCLE9BQU8sRUFDUEosaUJBQVMsQ0FBQ0MsZ0JBQWdCLENBQUUsMkJBQTBCM0QsR0FBRyxDQUFDc0YsVUFBVyxFQUFDLENBQUMsQ0FDeEU7TUFDSDtNQUNBLElBQUl0RixHQUFHLENBQUNrRSxPQUFPLENBQUN3RyxzQkFBVyxDQUFDQyxjQUFjLENBQUMsRUFBRTtRQUMzQ04sZUFBZSxHQUFHckssR0FBRyxDQUFDa0UsT0FBTyxDQUFDd0csc0JBQVcsQ0FBQ0MsY0FBYyxDQUFDO1FBQ3pEVCxNQUFNLENBQUNwRyxJQUFJLENBQUM0RyxzQkFBVyxDQUFDQyxjQUFjLEVBQUUzSyxHQUFHLENBQUNrRSxPQUFPLENBQUN3RyxzQkFBVyxDQUFDQyxjQUFjLENBQUMsQ0FBQztNQUNsRjtNQUVBSixVQUFVLENBQUNLLElBQUksQ0FBQ1YsTUFBTSxDQUFDO0lBQ3pCLENBQUMsQ0FBQztJQUVGSyxVQUFVLENBQUN2RyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVVjLEdBQUcsRUFBRTtNQUNwQ29GLE1BQU0sQ0FBQ3BHLElBQUksQ0FBQyxPQUFPLEVBQUVnQixHQUFHLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBQ0Z5RixVQUFVLENBQUN2RyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVU2RyxJQUFJLEVBQUU7TUFDcENULGNBQWMsSUFBSVMsSUFBSSxDQUFDM0YsTUFBTTtJQUMvQixDQUFDLENBQUM7SUFDRnFGLFVBQVUsQ0FBQ3ZHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsVUFBVTZHLElBQUksRUFBRTtNQUNuQyxJQUFJQSxJQUFJLEVBQUU7UUFDUlQsY0FBYyxJQUFJUyxJQUFJLENBQUMzRixNQUFNO01BQy9CO01BQ0EsSUFBSW1GLGVBQWUsSUFBSUQsY0FBYyxJQUFJQyxlQUFlLEVBQUU7UUFDeERILE1BQU0sQ0FBQ3BHLElBQUksQ0FBQyxPQUFPLEVBQUVKLGlCQUFTLENBQUNDLGdCQUFnQixDQUFDQyxvQkFBUyxDQUFDa0gsZ0JBQWdCLENBQUMsQ0FBQztNQUM5RTtJQUNGLENBQUMsQ0FBQztJQUNGLE9BQU9aLE1BQU07RUFDZjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ1NhLE1BQU1BLENBQUM5SCxPQUFZLEVBQUU7SUFDMUIsTUFBTStILGVBQW9CLEdBQUcsSUFBSTFILGVBQU0sQ0FBQzJILFdBQVcsQ0FBQztNQUFFQyxVQUFVLEVBQUU7SUFBSyxDQUFDLENBQUM7SUFDekUsTUFBTUMsYUFBOEIsR0FBRyxJQUFJLENBQUNuSSxPQUFPLENBQUM7TUFDbER3QixHQUFHLEVBQUV2QixPQUFPLENBQUNvQixHQUFHLENBQUN4QyxHQUFHO01BQ3BCd0MsR0FBRyxFQUFFcEIsT0FBTyxDQUFDb0IsR0FBRztNQUNoQkgsT0FBTyxFQUFFO1FBQ1A7UUFDQWtILE9BQU8sRUFBRW5JLE9BQU8sQ0FBQ29CLEdBQUcsQ0FBQzZDLEdBQUcsQ0FBQyxTQUFTO01BQ3BDO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsTUFBTW1FLFlBQVksR0FBSUMsR0FBWSxJQUFXO01BQzNDLElBQUksSUFBQUMsdUJBQWUsRUFBQ0QsR0FBRyxDQUFDLEVBQUU7UUFDeEJOLGVBQWUsQ0FBQ2xILElBQUksQ0FBQyxNQUFNLEVBQUV3SCxHQUFHLENBQUM7TUFDbkM7SUFDRixDQUFDO0lBRURILGFBQWEsQ0FBQ25ILEVBQUUsQ0FBQyxVQUFVLEVBQUdoRSxHQUFHLElBQVc7TUFDMUMsSUFBSSxDQUFDUCxNQUFNLENBQUNPLEdBQUcsQ0FBQ3NGLFVBQVUsQ0FBQyxDQUFDa0csS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQzVDLE9BQU9SLGVBQWUsQ0FBQ2xILElBQUksQ0FDekIsT0FBTyxFQUNQSixpQkFBUyxDQUFDQyxnQkFBZ0IsQ0FBRSxtQkFBa0IzRCxHQUFHLENBQUNzRixVQUFXLGNBQWEsQ0FBQyxDQUM1RTtNQUNIOztNQUVBO01BQ0E7TUFDQSxJQUFJbUcsVUFBVTtNQUNkLElBQUl6TCxHQUFHLENBQUNrRSxPQUFPLENBQUN3RyxzQkFBVyxDQUFDZ0IsZ0JBQWdCLENBQUMsS0FBSy9LLGtCQUFPLENBQUNnTCxJQUFJLEVBQUU7UUFDOURGLFVBQVUsR0FBR3pMLEdBQUcsQ0FBQzRLLElBQUksQ0FBQ2dCLGFBQUksQ0FBQ0MsV0FBVyxFQUFFLENBQUM7TUFDM0MsQ0FBQyxNQUFNO1FBQ0xKLFVBQVUsR0FBR3pMLEdBQUc7TUFDbEI7TUFDQXlMLFVBQVUsQ0FBQ2IsSUFBSSxDQUFDa0IsbUJBQVUsQ0FBQy9KLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDaUMsRUFBRSxDQUFDLE1BQU0sRUFBRXFILFlBQVksQ0FBQztNQUMvREksVUFBVSxDQUFDekgsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFZO1FBQy9CZ0gsZUFBZSxDQUFDbEgsSUFBSSxDQUFDLEtBQUssQ0FBQztNQUM3QixDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRnFILGFBQWEsQ0FBQ25ILEVBQUUsQ0FBQyxPQUFPLEVBQUdjLEdBQVUsSUFBVztNQUM5Q2tHLGVBQWUsQ0FBQ2xILElBQUksQ0FBQyxPQUFPLEVBQUVnQixHQUFHLENBQUM7SUFDcEMsQ0FBQyxDQUFDO0lBRUZrRyxlQUFlLENBQUNWLEtBQUssR0FBRyxNQUFZO01BQ2xDO01BQ0E7TUFDQTtNQUNBYSxhQUFhLENBQUNiLEtBQUssRUFBRTtNQUNyQlUsZUFBZSxDQUFDbEgsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBT2tILGVBQWU7RUFDeEI7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ1U1RyxnQkFBZ0JBLENBQUNDLEdBQVEsRUFBRUgsT0FBWSxFQUFRO0lBQ3JELElBQUlHLEdBQUcsRUFBRTtNQUNQO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDNkIsS0FBSyxFQUFFO1FBQ2ZoQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FDeEIsQ0FBQ0csR0FBRyxDQUFDNkMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUc3QyxHQUFHLENBQUM2QyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxJQUNwRTdDLEdBQUcsQ0FBQzBILFVBQVUsQ0FBQ0MsYUFBYTtNQUNoQztJQUNGOztJQUVBO0lBQ0E5SCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUdHLEdBQUcsSUFBSUEsR0FBRyxDQUFDNkMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHN0MsR0FBRyxDQUFDNkMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFO0lBRW5FaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUN0QyxTQUFTLEdBQUcsY0FBYztFQUM1RDs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ1V3QixZQUFZQSxDQUFDNkksS0FBZSxFQUFrQjtJQUNwRCxJQUFJQyxTQUFTLENBQUNoSCxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQzFCLE9BQU8sSUFBSSxDQUFDaUgsaUJBQWlCLEVBQUUsS0FBSyxLQUFLO0lBQzNDO0lBQ0EsSUFBSUYsS0FBSyxFQUFFO01BQ1QsSUFBSSxJQUFJLENBQUMxSyxlQUFlLElBQUksSUFBSSxDQUFDaUIsU0FBUyxFQUFFO1FBQzFDLElBQUksQ0FBQ2IsTUFBTSxDQUFDUyxJQUFJLENBQ2Q7VUFDRTJHLElBQUksRUFBRSxJQUFJLENBQUNsSCxHQUFHLENBQUNrSDtRQUNqQixDQUFDLEVBQ0QsNkJBQTZCLENBQzlCO01BQ0g7TUFDQSxJQUFJLENBQUN4SCxlQUFlLEdBQUcsQ0FBQztJQUMxQixDQUFDLE1BQU07TUFDTCxJQUFJLENBQUNBLGVBQWUsRUFBRTtNQUN0QixJQUFJLElBQUksQ0FBQ0EsZUFBZSxLQUFLLElBQUksQ0FBQ2lCLFNBQVMsRUFBRTtRQUMzQyxJQUFJLENBQUNiLE1BQU0sQ0FBQ1MsSUFBSSxDQUNkO1VBQ0UyRyxJQUFJLEVBQUUsSUFBSSxDQUFDbEgsR0FBRyxDQUFDa0g7UUFDakIsQ0FBQyxFQUNELDZCQUE2QixDQUM5QjtNQUNIO0lBQ0Y7SUFFQSxJQUFJLENBQUNxRCxpQkFBaUIsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLEVBQUU7RUFDckM7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUNVSCxpQkFBaUJBLENBQUEsRUFBWTtJQUNuQyxPQUNFLElBQUksQ0FBQzVLLGVBQWUsSUFBSSxJQUFJLENBQUNpQixTQUFTLElBQ3RDK0osSUFBSSxDQUFDQyxHQUFHLENBQUNILElBQUksQ0FBQ0MsR0FBRyxFQUFFLEdBQUksSUFBSSxDQUFDRixpQkFBNEIsQ0FBQyxHQUFHLElBQUksQ0FBQzNKLFlBQVk7RUFFakY7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDVVQsV0FBV0EsQ0FDakJDLFFBQWdCLEVBQ2hCbEIsTUFBa0IsRUFDbEIwTCxVQUFrQixFQUNsQjlELE9BQWdCLEVBQ1Y7SUFDTixJQUFJK0QsV0FBVztJQUNmLE1BQU1DLFNBQWlCLEdBQUdoRSxPQUFPLEdBQUcsYUFBYSxHQUFHLFlBQVk7O0lBRWhFO0lBQ0EsSUFBSWdFLFNBQVMsSUFBSTVMLE1BQU0sRUFBRTtNQUN2QixJQUFJLENBQUNtRixLQUFLLEdBQUduRixNQUFNLENBQUM0TCxTQUFTLENBQUM7SUFDaEMsQ0FBQyxNQUFNLElBQUlBLFNBQVMsSUFBSUYsVUFBVSxFQUFFO01BQ2xDLElBQUksQ0FBQ3ZHLEtBQUssR0FBR3VHLFVBQVUsQ0FBQ0UsU0FBUyxDQUFDO0lBQ3BDO0lBQ0EsSUFBSSxVQUFVLElBQUk1TCxNQUFNLEVBQUU7TUFDeEIyTCxXQUFXLEdBQUczTCxNQUFNLENBQUM2TCxRQUFRO0lBQy9CLENBQUMsTUFBTSxJQUFJLFVBQVUsSUFBSUgsVUFBVSxFQUFFO01BQ25DQyxXQUFXLEdBQUdELFVBQVUsQ0FBQ0csUUFBUTtJQUNuQzs7SUFFQTtJQUNBLElBQUkzSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO01BQ3ZCQSxRQUFRLEdBQUcsR0FBRyxHQUFHQSxRQUFRO0lBQzNCO0lBRUEsSUFBSWhCLGVBQUMsQ0FBQzBFLFFBQVEsQ0FBQytHLFdBQVcsQ0FBQyxJQUFJQSxXQUFXLENBQUN4SCxNQUFNLEVBQUU7TUFDakR3SCxXQUFXLEdBQUdBLFdBQVcsQ0FBQ0csS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUN0QztJQUVBLElBQUk1TCxlQUFDLENBQUM2TCxPQUFPLENBQUNKLFdBQVcsQ0FBQyxFQUFFO01BQzFCLEtBQUssSUFBSUssQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHTCxXQUFXLENBQUN4SCxNQUFNLEVBQUU2SCxDQUFDLEVBQUUsRUFBRTtRQUMzQyxJQUFJQyxXQUFXLEdBQUdOLFdBQVcsQ0FBQ0ssQ0FBQyxDQUFDO1FBQ2hDLElBQUlDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7VUFDMUJBLFdBQVcsR0FBRyxHQUFHLEdBQUdBLFdBQVc7UUFDakM7UUFDQSxJQUFJL0ssUUFBUSxDQUFDZ0wsV0FBVyxDQUFDRCxXQUFXLENBQUMsS0FBSy9LLFFBQVEsQ0FBQ2lELE1BQU0sR0FBRzhILFdBQVcsQ0FBQzlILE1BQU0sRUFBRTtVQUM5RSxJQUFJLElBQUksQ0FBQ2dCLEtBQUssRUFBRTtZQUNkOUYsS0FBSyxDQUFDLDZDQUE2QyxFQUFFLElBQUksQ0FBQ3lCLEdBQUcsQ0FBQ3FMLElBQUksRUFBRUYsV0FBVyxDQUFDO1lBQ2hGO1lBQ0EsSUFBSSxDQUFDOUcsS0FBSyxHQUFHLEtBQUs7VUFDcEI7VUFDQTtRQUNGO01BQ0Y7SUFDRjs7SUFFQTtJQUNBLElBQUlqRixlQUFDLENBQUMwRSxRQUFRLENBQUMsSUFBSSxDQUFDTyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7TUFDcEM7TUFDQSxPQUFPLElBQUksQ0FBQ0EsS0FBSztJQUNuQixDQUFDLE1BQU07TUFDTDlGLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUN5QixHQUFHLENBQUNxTCxJQUFJLEVBQUUsSUFBSSxDQUFDaEgsS0FBSyxDQUFDO0lBQzNEO0VBQ0Y7QUFDRjtBQUFDLElBQUFpSCxRQUFBLEdBRWNoTSxZQUFZO0FBQUFpTSxPQUFBLENBQUF2TyxPQUFBLEdBQUFzTyxRQUFBIn0=
|
package/build/lib/utils.js
CHANGED
|
@@ -57,7 +57,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
57
57
|
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; }
|
|
58
58
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
59
59
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
60
|
-
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); }
|
|
60
|
+
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); } // eslint-disable-next-line max-len
|
|
61
61
|
const {
|
|
62
62
|
getBadData,
|
|
63
63
|
getBadRequest,
|
|
@@ -465,4 +465,4 @@ function hasLogin(config) {
|
|
|
465
465
|
// @ts-ignore
|
|
466
466
|
return _lodash.default.isNil(config === null || config === void 0 ? void 0 : (_config$web = config.web) === null || _config$web === void 0 ? void 0 : _config$web.login) || (config === null || config === void 0 ? void 0 : (_config$web2 = config.web) === null || _config$web2 === void 0 ? void 0 : _config$web2.login) === true;
|
|
467
467
|
}
|
|
468
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfc2VtdmVyIiwiX3VybCIsIl92YWxpZGF0b3IiLCJfY29uZmlnIiwiX2NvcmUiLCJfdXRpbHMiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJnZXRCYWREYXRhIiwiZ2V0QmFkUmVxdWVzdCIsImdldENvZGUiLCJnZXRDb25mbGljdCIsImdldEZvcmJpZGRlbiIsImdldEludGVybmFsRXJyb3IiLCJnZXROb3RGb3VuZCIsImdldFNlcnZpY2VVbmF2YWlsYWJsZSIsImdldFVuYXV0aG9yaXplZCIsImVycm9yVXRpbHMiLCJ2YWxpZFByb3RvY29scyIsImNvbnZlcnRQYXlsb2FkVG9CYXNlNjQiLCJwYXlsb2FkIiwiQnVmZmVyIiwiZnJvbSIsImlzT2JqZWN0IiwidmFsaWRhdGlvVXRpbHMiLCJleHBvcnRzIiwiaXNPYmplY3RPckFycmF5IiwiXyIsImlzTnVsbCIsInRhZ1ZlcnNpb24iLCJkYXRhIiwidmVyc2lvbiIsInRhZyIsIkRJU1RfVEFHUyIsInNlbXZlciIsInBhcnNlIiwiZ2V0VmVyc2lvbiIsInBrZyIsImlzTmlsIiwidmVyc2lvbnMiLCJ2ZXJzaW9uSXRlbSIsImNvbXBhcmUiLCJlcnIiLCJwYXJzZUFkZHJlc3MiLCJ1cmxBZGRyZXNzIiwidXJsUGF0dGVybiIsImV4ZWMiLCJwcm90byIsIkRFRkFVTFRfUFJPVE9DT0wiLCJob3N0IiwiREVGQVVMVF9ET01BSU4iLCJwb3J0IiwiREVGQVVMVF9QT1JUIiwicGF0aCIsInNlbXZlclNvcnQiLCJsaXN0VmVyc2lvbnMiLCJ4IiwibG9nZ2VyIiwid2FybiIsInZlciIsInNvcnQiLCJjb21wYXJlTG9vc2UiLCJtYXAiLCJub3JtYWxpemVEaXN0VGFncyIsInNvcnRlZCIsImxhdGVzdCIsInBvcCIsImlzQXJyYXkiLCJpc1N0cmluZyIsInBhcnNlSW50ZXJ2YWxUYWJsZSIsIm1zIiwicyIsIm0iLCJoIiwiZCIsInciLCJNIiwieSIsInBhcnNlSW50ZXJ2YWwiLCJpbnRlcnZhbCIsInJlc3VsdCIsImxhc3Rfc3VmZml4IiwiSW5maW5pdHkiLCJzcGxpdCIsIm1hdGNoIiwiRXJyb3IiLCJFcnJvckNvZGUiLCJmb2xkZXJFeGlzdHMiLCJzdGF0IiwiZnMiLCJzdGF0U3luYyIsImlzRGlyZWN0b3J5IiwiZmlsZUV4aXN0cyIsImlzRmlsZSIsInNvcnRCeU5hbWUiLCJwYWNrYWdlcyIsIm9yZGVyQXNjZW5kaW5nIiwic2xpY2UiLCJhIiwiYiIsImNvbXBhcmF0b3JOYW1lcyIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsImFkZFNjb3BlIiwic2NvcGUiLCJwYWNrYWdlTmFtZSIsImRlbGV0ZVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzVG9EZWxldGUiLCJvYmplY3RJdGVtIiwicHJvcGVydHkiLCJhZGRHcmF2YXRhclN1cHBvcnQiLCJwa2dJbmZvIiwib25saW5lIiwicGtnSW5mb0NvcHkiLCJhdXRob3IiLCJnZXQiLCJjb250cmlidXRvcnMiLCJub3JtYWxpemVDb250cmlidXRvcnMiLCJtYWludGFpbmVycyIsImVtYWlsIiwiYXZhdGFyIiwiZ2VuZXJhdGVHcmF2YXRhclVybCIsIkdFTkVSSUNfQVZBVEFSIiwiaXNFbXB0eSIsImNvbnRyaWJ1dG9yIiwibWFpbnRhaW5lciIsInBhcnNlUmVhZG1lIiwicmVhZG1lIiwiaW5mbyIsImZvcm1hdEF1dGhvciIsImF1dGhvckRldGFpbHMiLCJERUZBVUxUX1VTRVIiLCJ1cmwiLCJwYWQiLCJzdHIiLCJtYXgiLCJyZXBlYXQiLCJtYXNrIiwiY2hhck51bSIsInN1YnN0ciIsImVuY29kZVNjb3BlZFVyaSIsInJlcGxhY2UiLCJoYXNEaWZmT25lS2V5IiwiaXNWZXJzaW9uVmFsaWQiLCJwYWNrYWdlTWV0YSIsInBhY2thZ2VWZXJzaW9uIiwiaGFzVmVyc2lvbiIsImhhc01hdGNoVmVyc2lvbiIsImluY2x1ZGVzIiwiaXNSZWxhdGVkVG9EZXByZWNhdGlvbiIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwidmFsaWRhdGVVUkwiLCJwdWJsaWNVcmwiLCJwYXJzZWQiLCJVUkwiLCJwcm90b2NvbCIsImlzSG9zdCIsIm9wdGlvbnMiLCJ2YWxpZGF0b3IiLCJpc1VSTCIsInJlcXVpcmVfaG9zdCIsImFsbG93X3RyYWlsaW5nX2RvdCIsInJlcXVpcmVfdmFsaWRfcHJvdG9jb2wiLCJyZXF1aXJlX3BvcnQiLCJyZXF1aXJlX3RsZCIsImhhc0xvZ2luIiwiY29uZmlnIiwiX2NvbmZpZyR3ZWIiLCJfY29uZmlnJHdlYjIiLCJ3ZWIiLCJsb2dpbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHZhbGlkYXRvciBmcm9tICd2YWxpZGF0b3InO1xuXG5pbXBvcnQgeyBwYXJzZUNvbmZpZ0ZpbGUgfSBmcm9tICdAdmVyZGFjY2lvL2NvbmZpZyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuaW1wb3J0IHsgZXJyb3JVdGlscywgdmFsaWRhdGlvVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgU3RyaW5nVmFsdWUgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IEF1dGhvciwgQ29uZmlnLCBQYWNrYWdlLCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQge1xuICBHRU5FUklDX0FWQVRBUixcbiAgYnVpbGRUb2tlbiBhcyBidWlsZFRva2VuVXRpbCxcbiAgZ2VuZXJhdGVHcmF2YXRhclVybCxcbiAgbm9ybWFsaXplQ29udHJpYnV0b3JzLFxufSBmcm9tICdAdmVyZGFjY2lvL3V0aWxzJztcblxuaW1wb3J0IHsgQXV0aG9yQXZhdGFyIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9ET01BSU4sXG4gIERFRkFVTFRfUE9SVCxcbiAgREVGQVVMVF9QUk9UT0NPTCxcbiAgREVGQVVMVF9VU0VSLFxuICBESVNUX1RBR1MsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcblxuY29uc3Qge1xuICBnZXRCYWREYXRhLFxuICBnZXRCYWRSZXF1ZXN0LFxuICBnZXRDb2RlLFxuICBnZXRDb25mbGljdCxcbiAgZ2V0Rm9yYmlkZGVuLFxuICBnZXRJbnRlcm5hbEVycm9yLFxuICBnZXROb3RGb3VuZCxcbiAgZ2V0U2VydmljZVVuYXZhaWxhYmxlLFxuICBnZXRVbmF1dGhvcml6ZWQsXG59ID0gZXJyb3JVdGlscztcbmNvbnN0IHZhbGlkUHJvdG9jb2xzID0gWydodHRwcycsICdodHRwJ107XG5leHBvcnQgZnVuY3Rpb24gY29udmVydFBheWxvYWRUb0Jhc2U2NChwYXlsb2FkOiBzdHJpbmcpOiBCdWZmZXIge1xuICByZXR1cm4gQnVmZmVyLmZyb20ocGF5bG9hZCwgJ2Jhc2U2NCcpO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBhbiBPYmplY3RcbiAqIEBwYXJhbSB7Kn0gb2JqIHRoZSBlbGVtZW50XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSB2YWxpZGF0aW9VdGlscy5pc09iamVjdDtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBub3QgdXNlZCB1biB2NlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3RPckFycmF5KG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBfLmlzT2JqZWN0KG9iaikgJiYgXy5pc051bGwob2JqKSA9PT0gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWdWZXJzaW9uKGRhdGE6IFBhY2thZ2UsIHZlcnNpb246IHN0cmluZywgdGFnOiBTdHJpbmdWYWx1ZSk6IGJvb2xlYW4ge1xuICBpZiAodGFnICYmIGRhdGFbRElTVF9UQUdTXVt0YWddICE9PSB2ZXJzaW9uICYmIHNlbXZlci5wYXJzZSh2ZXJzaW9uLCB0cnVlKSkge1xuICAgIC8vIHZhbGlkIHZlcnNpb24gLSBzdG9yZVxuICAgIGRhdGFbRElTVF9UQUdTXVt0YWddID0gdmVyc2lvbjtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogR2V0cyB2ZXJzaW9uIGZyb20gYSBwYWNrYWdlIG9iamVjdCB0YWtpbmcgaW50byBhY2NvdW50IHNlbXZlciB3ZWlyZG5lc3MuXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJldHVybiB0aGUgc2VtYW50aWMgdmVyc2lvbiBvZiBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNpb24ocGtnOiBQYWNrYWdlLCB2ZXJzaW9uOiBhbnkpOiBWZXJzaW9uIHwgdm9pZCB7XG4gIC8vIHRoaXMgY29uZGl0aW9uIG11c3QgYWxsb3cgY2FzdFxuICBpZiAoXy5pc05pbChwa2cudmVyc2lvbnNbdmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgIHJldHVybiBwa2cudmVyc2lvbnNbdmVyc2lvbl07XG4gIH1cblxuICB0cnkge1xuICAgIHZlcnNpb24gPSBzZW12ZXIucGFyc2UodmVyc2lvbiwgdHJ1ZSk7XG4gICAgZm9yIChjb25zdCB2ZXJzaW9uSXRlbSBpbiBwa2cudmVyc2lvbnMpIHtcbiAgICAgIGlmICh2ZXJzaW9uLmNvbXBhcmUoc2VtdmVyLnBhcnNlKHZlcnNpb25JdGVtLCB0cnVlKSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBrZy52ZXJzaW9uc1t2ZXJzaW9uSXRlbV07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBhbiBpbnRlcm5ldCBhZGRyZXNzXG4gKiBBbGxvdzpcbiAtIGh0dHBzOmxvY2FsaG9zdDoxMjM0ICAgICAgICAtIHByb3RvY29sICsgaG9zdCArIHBvcnRcbiAtIGxvY2FsaG9zdDoxMjM0ICAgICAgICAgICAgICAtIGhvc3QgKyBwb3J0XG4gLSAxMjM0ICAgICAgICAgICAgICAgICAgICAgICAgLSBwb3J0XG4gLSBodHRwOjoxMjM0ICAgICAgICAgICAgICAgICAgLSBwcm90b2NvbCArIHBvcnRcbiAtIGh0dHBzOi8vbG9jYWxob3N0OjQ0My8gICAgICAtIGZ1bGwgdXJsICsgaHR0cHNcbiAtIGh0dHA6Ly9bOjoxXTo0NDMvICAgICAgICAgICAtIGlwdjZcbiAtIHVuaXg6L3RtcC9odHRwLnNvY2sgICAgICAgICAtIHVuaXggc29ja2V0c1xuIC0gaHR0cHM6Ly91bml4Oi90bXAvaHR0cC5zb2NrIC0gdW5peCBzb2NrZXRzIChodHRwcylcbiAqIEBwYXJhbSB7Kn0gdXJsQWRkcmVzcyB0aGUgaW50ZXJuZXQgYWRkcmVzcyBkZWZpbml0aW9uXG4gKiBAcmV0dXJuIHtPYmplY3R8TnVsbH0gbGl0ZXJhbCBvYmplY3QgdGhhdCByZXByZXNlbnQgdGhlIGFkZHJlc3MgcGFyc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFkZHJlc3ModXJsQWRkcmVzczogYW55KTogYW55IHtcbiAgLy9cbiAgLy8gVE9ETzogcmVmYWN0b3IgaXQgdG8gc29tZXRoaW5nIG1vcmUgcmVhc29uYWJsZT9cbiAgLy9cbiAgLy8gICAgICAgIHByb3RvY29sIDogIC8vICAgICAgKCAgaG9zdCAgKXwoICAgIGlwdjYgICAgICk6ICBwb3J0ICAvXG4gIGxldCB1cmxQYXR0ZXJuID0gL14oKGh0dHBzPyk6KFxcL1xcLyk/KT8oKChbXlxcLzpdKil8XFxbKFteXFxbXFxdXSspXFxdKTopPyhcXGQrKVxcLz8kLy5leGVjKHVybEFkZHJlc3MpO1xuXG4gIGlmICh1cmxQYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3RvOiB1cmxQYXR0ZXJuWzJdIHx8IERFRkFVTFRfUFJPVE9DT0wsXG4gICAgICBob3N0OiB1cmxQYXR0ZXJuWzZdIHx8IHVybFBhdHRlcm5bN10gfHwgREVGQVVMVF9ET01BSU4sXG4gICAgICBwb3J0OiB1cmxQYXR0ZXJuWzhdIHx8IERFRkFVTFRfUE9SVCxcbiAgICB9O1xuICB9XG5cbiAgdXJsUGF0dGVybiA9IC9eKChodHRwcz8pOihcXC9cXC8pPyk/dW5peDooLiopJC8uZXhlYyh1cmxBZGRyZXNzKTtcblxuICBpZiAodXJsUGF0dGVybikge1xuICAgIHJldHVybiB7XG4gICAgICBwcm90bzogdXJsUGF0dGVyblsyXSB8fCBERUZBVUxUX1BST1RPQ09MLFxuICAgICAgcGF0aDogdXJsUGF0dGVybls0XSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gZmlsdGVycyBvdXQgYmFkIHNlbXZlciB2ZXJzaW9ucyBhbmQgc29ydHMgdGhlIGFycmF5LlxuICogQHJldHVybiB7QXJyYXl9IHNvcnRlZCBBcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VtdmVyU29ydChsaXN0VmVyc2lvbnM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gKFxuICAgIGxpc3RWZXJzaW9uc1xuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoeCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXNlbXZlci5wYXJzZSh4LCB0cnVlKSkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKHsgdmVyOiB4IH0sICdpZ25vcmluZyBiYWQgdmVyc2lvbiBAe3Zlcn0nKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICAgLy8gRklYTUU6IGl0IHNlZW1zIHRoZSBAdHlwZXMvc2VtdmVyIGRvIG5vdCBoYW5kbGUgYSBsZWdpdGltYXRlIG1ldGhvZCBuYW1lZCAnY29tcGFyZUxvb3NlJ1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgLnNvcnQoc2VtdmVyLmNvbXBhcmVMb29zZSlcbiAgICAgIC5tYXAoU3RyaW5nKVxuICApO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gYXJyYXlzIG9mIHRhZ3MuXG4gKiBAcGFyYW0geyp9IGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZURpc3RUYWdzKHBrZzogUGFja2FnZSk6IHZvaWQge1xuICBsZXQgc29ydGVkO1xuICBpZiAoIXBrZ1tESVNUX1RBR1NdLmxhdGVzdCkge1xuICAgIC8vIG92ZXJ3cml0ZSBsYXRlc3Qgd2l0aCBoaWdoZXN0IGtub3duIHZlcnNpb24gYmFzZWQgb24gc2VtdmVyIHNvcnRcbiAgICBzb3J0ZWQgPSBzZW12ZXJTb3J0KE9iamVjdC5rZXlzKHBrZy52ZXJzaW9ucykpO1xuICAgIGlmIChzb3J0ZWQgJiYgc29ydGVkLmxlbmd0aCkge1xuICAgICAgcGtnW0RJU1RfVEFHU10ubGF0ZXN0ID0gc29ydGVkLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgdGFnIGluIHBrZ1tESVNUX1RBR1NdKSB7XG4gICAgaWYgKF8uaXNBcnJheShwa2dbRElTVF9UQUdTXVt0YWddKSkge1xuICAgICAgaWYgKHBrZ1tESVNUX1RBR1NdW3RhZ10ubGVuZ3RoKSB7XG4gICAgICAgIC8vIHNvcnQgYXJyYXlcbiAgICAgICAgLy8gRklYTUU6IHRoaXMgaXMgY2xlYXJseSB3cm9uZywgd2UgbmVlZCB0byByZXNlYXJjaCB3aHkgdGhpcyBpcyBsaWtlIHRoaXMuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc29ydGVkID0gc2VtdmVyU29ydChwa2dbRElTVF9UQUdTXVt0YWddKTtcbiAgICAgICAgaWYgKHNvcnRlZC5sZW5ndGgpIHtcbiAgICAgICAgICAvLyB1c2UgaGlnaGVzdCB2ZXJzaW9uIGJhc2VkIG9uIHNlbXZlciBzb3J0XG4gICAgICAgICAgcGtnW0RJU1RfVEFHU11bdGFnXSA9IHNvcnRlZC5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIHBrZ1tESVNUX1RBR1NdW3RhZ107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChfLmlzU3RyaW5nKHBrZ1tESVNUX1RBR1NdW3RhZ10pKSB7XG4gICAgICBpZiAoIXNlbXZlci5wYXJzZShwa2dbRElTVF9UQUdTXVt0YWddLCB0cnVlKSkge1xuICAgICAgICAvLyBpZiB0aGUgdmVyc2lvbiBpcyBpbnZhbGlkLCBkZWxldGUgdGhlIGRpc3QtdGFnIGVudHJ5XG4gICAgICAgIGRlbGV0ZSBwa2dbRElTVF9UQUdTXVt0YWddO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwYXJzZUludGVydmFsVGFibGUgPSB7XG4gICcnOiAxMDAwLFxuICBtczogMSxcbiAgczogMTAwMCxcbiAgbTogNjAgKiAxMDAwLFxuICBoOiA2MCAqIDYwICogMTAwMCxcbiAgZDogODY0MDAwMDAsXG4gIHc6IDcgKiA4NjQwMDAwMCxcbiAgTTogMzAgKiA4NjQwMDAwMCxcbiAgeTogMzY1ICogODY0MDAwMDAsXG59O1xuXG4vKipcbiAqIFBhcnNlIGFuIGludGVybmFsIHN0cmluZyB0byBudW1iZXJcbiAqIEBwYXJhbSB7Kn0gaW50ZXJ2YWxcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW50ZXJ2YWwoaW50ZXJ2YWw6IGFueSk6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgaW50ZXJ2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGludGVydmFsICogMTAwMDtcbiAgfVxuICBsZXQgcmVzdWx0ID0gMDtcbiAgbGV0IGxhc3Rfc3VmZml4ID0gSW5maW5pdHk7XG4gIGludGVydmFsLnNwbGl0KC9cXHMrLykuZm9yRWFjaChmdW5jdGlvbiAoeCk6IHZvaWQge1xuICAgIGlmICgheCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtID0geC5tYXRjaCgvXigoMHxbMS05XVswLTldKikoXFwuWzAtOV0rKT8pKG1zfHN8bXxofGR8d3xNfHl8KSQvKTtcbiAgICBpZiAoXG4gICAgICAhbSB8fFxuICAgICAgcGFyc2VJbnRlcnZhbFRhYmxlW21bNF1dID49IGxhc3Rfc3VmZml4IHx8XG4gICAgICAobVs0XSA9PT0gJycgJiYgbGFzdF9zdWZmaXggIT09IEluZmluaXR5KVxuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2ludmFsaWQgaW50ZXJ2YWw6ICcgKyBpbnRlcnZhbCk7XG4gICAgfVxuICAgIGxhc3Rfc3VmZml4ID0gcGFyc2VJbnRlcnZhbFRhYmxlW21bNF1dO1xuICAgIHJlc3VsdCArPSBOdW1iZXIobVsxXSkgKiBwYXJzZUludGVydmFsVGFibGVbbVs0XV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgY29uc3QgRXJyb3JDb2RlID0ge1xuICBnZXRDb25mbGljdCxcbiAgZ2V0QmFkRGF0YSxcbiAgZ2V0QmFkUmVxdWVzdCxcbiAgZ2V0SW50ZXJuYWxFcnJvcixcbiAgZ2V0VW5hdXRob3JpemVkLFxuICBnZXRGb3JiaWRkZW4sXG4gIGdldFNlcnZpY2VVbmF2YWlsYWJsZSxcbiAgZ2V0Tm90Rm91bmQsXG4gIGdldENvZGUsXG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHBhdGggYWxyZWFkeSBleGlzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9sZGVyRXhpc3RzKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhwYXRoKTtcbiAgICByZXR1cm4gc3RhdC5pc0RpcmVjdG9yeSgpO1xuICB9IGNhdGNoIChfOiBhbnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBmaWxlIGFscmVhZHkgZXhpc3QuXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGVFeGlzdHMocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKHBhdGgpO1xuICAgIHJldHVybiBzdGF0LmlzRmlsZSgpO1xuICB9IGNhdGNoIChfOiBhbnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRCeU5hbWUocGFja2FnZXM6IGFueVtdLCBvcmRlckFzY2VuZGluZzogYm9vbGVhbiB8IHZvaWQgPSB0cnVlKTogc3RyaW5nW10ge1xuICByZXR1cm4gcGFja2FnZXMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uIChhLCBiKTogbnVtYmVyIHtcbiAgICBjb25zdCBjb21wYXJhdG9yTmFtZXMgPSBhLm5hbWUudG9Mb3dlckNhc2UoKSA8IGIubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIG9yZGVyQXNjZW5kaW5nID8gKGNvbXBhcmF0b3JOYW1lcyA/IC0xIDogMSkgOiBjb21wYXJhdG9yTmFtZXMgPyAxIDogLTE7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkU2NvcGUoc2NvcGU6IHN0cmluZywgcGFja2FnZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgQCR7c2NvcGV9LyR7cGFja2FnZU5hbWV9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnRpZXMocHJvcGVydGllc1RvRGVsZXRlOiBzdHJpbmdbXSwgb2JqZWN0SXRlbTogYW55KTogYW55IHtcbiAgXy5mb3JFYWNoKHByb3BlcnRpZXNUb0RlbGV0ZSwgKHByb3BlcnR5KTogYW55ID0+IHtcbiAgICBkZWxldGUgb2JqZWN0SXRlbVtwcm9wZXJ0eV07XG4gIH0pO1xuXG4gIHJldHVybiBvYmplY3RJdGVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkR3JhdmF0YXJTdXBwb3J0KHBrZ0luZm86IFBhY2thZ2UsIG9ubGluZSA9IHRydWUpOiBBdXRob3JBdmF0YXIge1xuICBjb25zdCBwa2dJbmZvQ29weSA9IHsgLi4ucGtnSW5mbyB9IGFzIGFueTtcbiAgY29uc3QgYXV0aG9yOiBhbnkgPSBfLmdldChwa2dJbmZvLCAnbGF0ZXN0LmF1dGhvcicsIG51bGwpIGFzIGFueTtcbiAgY29uc3QgY29udHJpYnV0b3JzOiBBdXRob3JBdmF0YXJbXSA9IG5vcm1hbGl6ZUNvbnRyaWJ1dG9ycyhcbiAgICBfLmdldChwa2dJbmZvLCAnbGF0ZXN0LmNvbnRyaWJ1dG9ycycsIFtdKVxuICApO1xuICBjb25zdCBtYWludGFpbmVycyA9IF8uZ2V0KHBrZ0luZm8sICdsYXRlc3QubWFpbnRhaW5lcnMnLCBbXSk7XG5cbiAgLy8gZm9yIGF1dGhvci5cbiAgaWYgKGF1dGhvciAmJiBfLmlzT2JqZWN0KGF1dGhvcikpIHtcbiAgICBjb25zdCB7IGVtYWlsIH0gPSBhdXRob3IgYXMgQXV0aG9yO1xuICAgIHBrZ0luZm9Db3B5LmxhdGVzdC5hdXRob3IuYXZhdGFyID0gZ2VuZXJhdGVHcmF2YXRhclVybChlbWFpbCwgb25saW5lKTtcbiAgfVxuXG4gIGlmIChhdXRob3IgJiYgXy5pc1N0cmluZyhhdXRob3IpKSB7XG4gICAgcGtnSW5mb0NvcHkubGF0ZXN0LmF1dGhvciA9IHtcbiAgICAgIGF2YXRhcjogR0VORVJJQ19BVkFUQVIsXG4gICAgICBlbWFpbDogJycsXG4gICAgICBhdXRob3IsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGZvciBjb250cmlidXRvcnNcbiAgaWYgKF8uaXNFbXB0eShjb250cmlidXRvcnMpID09PSBmYWxzZSkge1xuICAgIHBrZ0luZm9Db3B5LmxhdGVzdC5jb250cmlidXRvcnMgPSBjb250cmlidXRvcnMubWFwKChjb250cmlidXRvcik6IEF1dGhvckF2YXRhciA9PiB7XG4gICAgICBpZiAoaXNPYmplY3QoY29udHJpYnV0b3IpKSB7XG4gICAgICAgIGNvbnRyaWJ1dG9yLmF2YXRhciA9IGdlbmVyYXRlR3JhdmF0YXJVcmwoY29udHJpYnV0b3IuZW1haWwsIG9ubGluZSk7XG4gICAgICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcoY29udHJpYnV0b3IpKSB7XG4gICAgICAgIGNvbnRyaWJ1dG9yID0ge1xuICAgICAgICAgIGF2YXRhcjogR0VORVJJQ19BVkFUQVIsXG4gICAgICAgICAgZW1haWw6IGNvbnRyaWJ1dG9yLFxuICAgICAgICAgIG5hbWU6IGNvbnRyaWJ1dG9yLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udHJpYnV0b3I7XG4gICAgfSk7XG4gIH1cblxuICAvLyBmb3IgbWFpbnRhaW5lcnNcbiAgaWYgKF8uaXNFbXB0eShtYWludGFpbmVycykgPT09IGZhbHNlKSB7XG4gICAgcGtnSW5mb0NvcHkubGF0ZXN0Lm1haW50YWluZXJzID0gbWFpbnRhaW5lcnMubWFwKChtYWludGFpbmVyOiBhbnkpOiB2b2lkID0+IHtcbiAgICAgIG1haW50YWluZXIuYXZhdGFyID0gZ2VuZXJhdGVHcmF2YXRhclVybChtYWludGFpbmVyLmVtYWlsLCBvbmxpbmUpO1xuICAgICAgcmV0dXJuIG1haW50YWluZXI7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcGtnSW5mb0NvcHk7XG59XG5cbi8qKlxuICogcGFyc2UgcGFja2FnZSByZWFkbWUgLSBtYXJrZG93bi9hc2NpaVxuICogQHBhcmFtIHtTdHJpbmd9IHBhY2thZ2VOYW1lIG5hbWUgb2YgcGFja2FnZVxuICogQHBhcmFtIHtTdHJpbmd9IHJlYWRtZSBwYWNrYWdlIHJlYWRtZVxuXG4gKiBAcmV0dXJuIHtTdHJpbmd9IGNvbnZlcnRlZCBodG1sIHRlbXBsYXRlXG4gKi9cbi8vIFRPRE86IHJlbmFtZSwgZG9lcyBub3QgcGFyc2UgYW55bW9yZVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVhZG1lKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHJlYWRtZTogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XG4gIGlmIChfLmlzRW1wdHkocmVhZG1lKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gcmVhZG1lO1xuICB9XG5cbiAgLy8gbG9ncyByZWFkbWUgbm90IGZvdW5kIGVycm9yXG4gIGxvZ2dlci5pbmZvKHsgcGFja2FnZU5hbWUgfSwgJ0B7cGFja2FnZU5hbWV9OiBObyByZWFkbWUgZm91bmQnKTtcblxuICByZXR1cm4gJ0VSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCEnO1xufVxuXG5leHBvcnQgdHlwZSBBdXRob3JGb3JtYXQgPSBBdXRob3IgfCBzdHJpbmcgfCBudWxsIHwgb2JqZWN0IHwgdm9pZDtcblxuLyoqXG4gKiBGb3JtYXRzIGF1dGhvciBmaWVsZCBmb3Igd2VidWkuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vZmlsZXMvcGFja2FnZS5qc29uI2F1dGhvclxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fHVuZGVmaW5lZH0gYXV0aG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBdXRob3IoYXV0aG9yOiBBdXRob3JGb3JtYXQpOiBhbnkge1xuICBsZXQgYXV0aG9yRGV0YWlscyA9IHtcbiAgICBuYW1lOiBERUZBVUxUX1VTRVIsXG4gICAgZW1haWw6ICcnLFxuICAgIHVybDogJycsXG4gIH07XG5cbiAgaWYgKF8uaXNOaWwoYXV0aG9yKSkge1xuICAgIHJldHVybiBhdXRob3JEZXRhaWxzO1xuICB9XG5cbiAgaWYgKF8uaXNTdHJpbmcoYXV0aG9yKSkge1xuICAgIGF1dGhvckRldGFpbHMgPSB7XG4gICAgICAuLi5hdXRob3JEZXRhaWxzLFxuICAgICAgbmFtZTogYXV0aG9yIGFzIHN0cmluZyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKF8uaXNPYmplY3QoYXV0aG9yKSkge1xuICAgIGF1dGhvckRldGFpbHMgPSB7XG4gICAgICAuLi5hdXRob3JEZXRhaWxzLFxuICAgICAgLi4uKGF1dGhvciBhcyBBdXRob3IpLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gYXV0aG9yRGV0YWlscztcbn1cblxuLyoqXG4gKiBBcHBseSB3aGl0ZXNwYWNlcyBiYXNlZCBvbiB0aGUgbGVuZ3RoXG4gKiBAcGFyYW0geyp9IHN0ciB0aGUgbG9nIG1lc3NhZ2VcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhZChzdHIsIG1heCk6IHN0cmluZyB7XG4gIGlmIChzdHIubGVuZ3RoIDwgbWF4KSB7XG4gICAgcmV0dXJuIHN0ciArICcgJy5yZXBlYXQobWF4IC0gc3RyLmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn1cblxuLyoqXG4gKiByZXR1cm4gYSBtYXNxdWVyYWRlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBhbmQgbGFzdCB7Y2hhck51bX0gYW5kIHRocmVlIGRvdHMgaW4gYmV0d2Vlbi5cbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7TnVtYmVyfSBjaGFyTnVtXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFzayhzdHI6IHN0cmluZywgY2hhck51bSA9IDMpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c3RyLnN1YnN0cigwLCBjaGFyTnVtKX0uLi4ke3N0ci5zdWJzdHIoLWNoYXJOdW0pfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVTY29wZWRVcmkocGFja2FnZU5hbWUpOiBzdHJpbmcge1xuICByZXR1cm4gcGFja2FnZU5hbWUucmVwbGFjZSgvXFwvL2csICclMmYnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpOiBib29sZWFuIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHZlcnNpb25zKS5sZW5ndGggIT09IDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlcnNpb25WYWxpZChwYWNrYWdlTWV0YSwgcGFja2FnZVZlcnNpb24pOiBib29sZWFuIHtcbiAgY29uc3QgaGFzVmVyc2lvbiA9IHR5cGVvZiBwYWNrYWdlVmVyc2lvbiAhPT0gJ3VuZGVmaW5lZCc7XG4gIGlmICghaGFzVmVyc2lvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGhhc01hdGNoVmVyc2lvbiA9IE9iamVjdC5rZXlzKHBhY2thZ2VNZXRhLnZlcnNpb25zKS5pbmNsdWRlcyhwYWNrYWdlVmVyc2lvbik7XG4gIHJldHVybiBoYXNNYXRjaFZlcnNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uKHBrZ0luZm86IFBhY2thZ2UpOiBib29sZWFuIHtcbiAgY29uc3QgeyB2ZXJzaW9ucyB9ID0gcGtnSW5mbztcbiAgZm9yIChjb25zdCB2ZXJzaW9uIGluIHZlcnNpb25zKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2ZXJzaW9uc1t2ZXJzaW9uXSwgJ2RlcHJlY2F0ZWQnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVVJMKHB1YmxpY1VybDogc3RyaW5nIHwgdm9pZCkge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBVUkwocHVibGljVXJsIGFzIHN0cmluZyk7XG4gICAgaWYgKCF2YWxpZFByb3RvY29scy5pbmNsdWRlcyhwYXJzZWQucHJvdG9jb2wucmVwbGFjZSgnOicsICcnKSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdpbnZhbGlkIHByb3RvY29sJyk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIC8vIFRPRE86IGFkZCBlcnJvciBsb2dnZXIgaGVyZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIb3N0KHVybDogc3RyaW5nID0gJycsIG9wdGlvbnMgPSB7fSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsaWRhdG9yLmlzVVJMKHVybCwge1xuICAgIHJlcXVpcmVfaG9zdDogdHJ1ZSxcbiAgICBhbGxvd190cmFpbGluZ19kb3Q6IGZhbHNlLFxuICAgIHJlcXVpcmVfdmFsaWRfcHJvdG9jb2w6IGZhbHNlLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXF1aXJlX3BvcnQ6IGZhbHNlLFxuICAgIHJlcXVpcmVfdGxkOiBmYWxzZSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0xvZ2luKGNvbmZpZzogQ29uZmlnKSB7XG4gIC8vIEZJWE1FOiB0eXBlcyBhcmUgbm90IHlldCBvbiB0aGUgbGlicmFyeSB2ZXJkYWNjaW8vbW9ub3JlcG9cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gXy5pc05pbChjb25maWc/LndlYj8ubG9naW4pIHx8IGNvbmZpZz8ud2ViPy5sb2dpbiA9PT0gdHJ1ZTtcbn1cblxuZXhwb3J0IHsgYnVpbGRUb2tlblV0aWwgYXMgYnVpbGRUb2tlbiwgcGFyc2VDb25maWdGaWxlIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsSUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sS0FBQSxHQUFBTixPQUFBO0FBR0EsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBUUEsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBT0EsSUFBQVMsT0FBQSxHQUFBVCxPQUFBO0FBQWtDLFNBQUFELHVCQUFBVyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBQUEsU0FBQUcsUUFBQUMsTUFBQSxFQUFBQyxjQUFBLFFBQUFDLElBQUEsR0FBQUMsTUFBQSxDQUFBRCxJQUFBLENBQUFGLE1BQUEsT0FBQUcsTUFBQSxDQUFBQyxxQkFBQSxRQUFBQyxPQUFBLEdBQUFGLE1BQUEsQ0FBQUMscUJBQUEsQ0FBQUosTUFBQSxHQUFBQyxjQUFBLEtBQUFJLE9BQUEsR0FBQUEsT0FBQSxDQUFBQyxNQUFBLFdBQUFDLEdBQUEsV0FBQUosTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixNQUFBLEVBQUFPLEdBQUEsRUFBQUUsVUFBQSxPQUFBUCxJQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxJQUFBLEVBQUFHLE9BQUEsWUFBQUgsSUFBQTtBQUFBLFNBQUFVLGNBQUFDLE1BQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFBRixDQUFBLFVBQUFHLE1BQUEsV0FBQUYsU0FBQSxDQUFBRCxDQUFBLElBQUFDLFNBQUEsQ0FBQUQsQ0FBQSxRQUFBQSxDQUFBLE9BQUFmLE9BQUEsQ0FBQUksTUFBQSxDQUFBYyxNQUFBLE9BQUFDLE9BQUEsV0FBQUMsR0FBQSxJQUFBQyxlQUFBLENBQUFQLE1BQUEsRUFBQU0sR0FBQSxFQUFBRixNQUFBLENBQUFFLEdBQUEsU0FBQWhCLE1BQUEsQ0FBQWtCLHlCQUFBLEdBQUFsQixNQUFBLENBQUFtQixnQkFBQSxDQUFBVCxNQUFBLEVBQUFWLE1BQUEsQ0FBQWtCLHlCQUFBLENBQUFKLE1BQUEsS0FBQWxCLE9BQUEsQ0FBQUksTUFBQSxDQUFBYyxNQUFBLEdBQUFDLE9BQUEsV0FBQUMsR0FBQSxJQUFBaEIsTUFBQSxDQUFBb0IsY0FBQSxDQUFBVixNQUFBLEVBQUFNLEdBQUEsRUFBQWhCLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVMsTUFBQSxFQUFBRSxHQUFBLGlCQUFBTixNQUFBO0FBQUEsU0FBQU8sZ0JBQUF4QixHQUFBLEVBQUF1QixHQUFBLEVBQUFLLEtBQUEsSUFBQUwsR0FBQSxHQUFBTSxjQUFBLENBQUFOLEdBQUEsT0FBQUEsR0FBQSxJQUFBdkIsR0FBQSxJQUFBTyxNQUFBLENBQUFvQixjQUFBLENBQUEzQixHQUFBLEVBQUF1QixHQUFBLElBQUFLLEtBQUEsRUFBQUEsS0FBQSxFQUFBZixVQUFBLFFBQUFpQixZQUFBLFFBQUFDLFFBQUEsb0JBQUEvQixHQUFBLENBQUF1QixHQUFBLElBQUFLLEtBQUEsV0FBQTVCLEdBQUE7QUFBQSxTQUFBNkIsZUFBQUcsR0FBQSxRQUFBVCxHQUFBLEdBQUFVLFlBQUEsQ0FBQUQsR0FBQSwyQkFBQVQsR0FBQSxnQkFBQUEsR0FBQSxHQUFBVyxNQUFBLENBQUFYLEdBQUE7QUFBQSxTQUFBVSxhQUFBRSxLQUFBLEVBQUFDLElBQUEsZUFBQUQsS0FBQSxpQkFBQUEsS0FBQSxrQkFBQUEsS0FBQSxNQUFBRSxJQUFBLEdBQUFGLEtBQUEsQ0FBQUcsTUFBQSxDQUFBQyxXQUFBLE9BQUFGLElBQUEsS0FBQUcsU0FBQSxRQUFBQyxHQUFBLEdBQUFKLElBQUEsQ0FBQUssSUFBQSxDQUFBUCxLQUFBLEVBQUFDLElBQUEsMkJBQUFLLEdBQUEsc0JBQUFBLEdBQUEsWUFBQUUsU0FBQSw0REFBQVAsSUFBQSxnQkFBQUYsTUFBQSxHQUFBVSxNQUFBLEVBQUFULEtBQUE7QUFFbEMsTUFBTTtFQUNKVSxVQUFVO0VBQ1ZDLGFBQWE7RUFDYkMsT0FBTztFQUNQQyxXQUFXO0VBQ1hDLFlBQVk7RUFDWkMsZ0JBQWdCO0VBQ2hCQyxXQUFXO0VBQ1hDLHFCQUFxQjtFQUNyQkM7QUFDRixDQUFDLEdBQUdDLGdCQUFVO0FBQ2QsTUFBTUMsY0FBYyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztBQUNqQyxTQUFTQyxzQkFBc0JBLENBQUNDLE9BQWUsRUFBVTtFQUM5RCxPQUFPQyxNQUFNLENBQUNDLElBQUksQ0FBQ0YsT0FBTyxFQUFFLFFBQVEsQ0FBQztBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUcsUUFBUSxHQUFHQyxvQkFBYyxDQUFDRCxRQUFROztBQUUvQztBQUNBO0FBQ0E7QUFGQUUsT0FBQSxDQUFBRixRQUFBLEdBQUFBLFFBQUE7QUFHTyxTQUFTRyxlQUFlQSxDQUFDL0QsR0FBUSxFQUFXO0VBQ2pELE9BQU9nRSxlQUFDLENBQUNKLFFBQVEsQ0FBQzVELEdBQUcsQ0FBQyxJQUFJZ0UsZUFBQyxDQUFDQyxNQUFNLENBQUNqRSxHQUFHLENBQUMsS0FBSyxLQUFLO0FBQ25EO0FBRU8sU0FBU2tFLFVBQVVBLENBQUNDLElBQWEsRUFBRUMsT0FBZSxFQUFFQyxHQUFnQixFQUFXO0VBQ3BGLElBQUlBLEdBQUcsSUFBSUYsSUFBSSxDQUFDRyxvQkFBUyxDQUFDLENBQUNELEdBQUcsQ0FBQyxLQUFLRCxPQUFPLElBQUlHLGVBQU0sQ0FBQ0MsS0FBSyxDQUFDSixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7SUFDMUU7SUFDQUQsSUFBSSxDQUFDRyxvQkFBUyxDQUFDLENBQUNELEdBQUcsQ0FBQyxHQUFHRCxPQUFPO0lBQzlCLE9BQU8sSUFBSTtFQUNiO0VBQ0EsT0FBTyxLQUFLO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSyxVQUFVQSxDQUFDQyxHQUFZLEVBQUVOLE9BQVksRUFBa0I7RUFDckU7RUFDQSxJQUFJSixlQUFDLENBQUNXLEtBQUssQ0FBQ0QsR0FBRyxDQUFDRSxRQUFRLENBQUNSLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO0lBQzVDLE9BQU9NLEdBQUcsQ0FBQ0UsUUFBUSxDQUFDUixPQUFPLENBQUM7RUFDOUI7RUFFQSxJQUFJO0lBQ0ZBLE9BQU8sR0FBR0csZUFBTSxDQUFDQyxLQUFLLENBQUNKLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDckMsS0FBSyxNQUFNUyxXQUFXLElBQUlILEdBQUcsQ0FBQ0UsUUFBUSxFQUFFO01BQ3RDLElBQUlSLE9BQU8sQ0FBQ1UsT0FBTyxDQUFDUCxlQUFNLENBQUNDLEtBQUssQ0FBQ0ssV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQzFELE9BQU9ILEdBQUcsQ0FBQ0UsUUFBUSxDQUFDQyxXQUFXLENBQUM7TUFDbEM7SUFDRjtFQUNGLENBQUMsQ0FBQyxPQUFPRSxHQUFRLEVBQUU7SUFDakIsT0FBT3ZDLFNBQVM7RUFDbEI7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU3dDLFlBQVlBLENBQUNDLFVBQWUsRUFBTztFQUNqRDtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQUlDLFVBQVUsR0FBRyw2REFBNkQsQ0FBQ0MsSUFBSSxDQUFDRixVQUFVLENBQUM7RUFFL0YsSUFBSUMsVUFBVSxFQUFFO0lBQ2QsT0FBTztNQUNMRSxLQUFLLEVBQUVGLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSUcsMkJBQWdCO01BQ3hDQyxJQUFJLEVBQUVKLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSUEsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJSyx5QkFBYztNQUN0REMsSUFBSSxFQUFFTixVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUlPO0lBQ3pCLENBQUM7RUFDSDtFQUVBUCxVQUFVLEdBQUcsZ0NBQWdDLENBQUNDLElBQUksQ0FBQ0YsVUFBVSxDQUFDO0VBRTlELElBQUlDLFVBQVUsRUFBRTtJQUNkLE9BQU87TUFDTEUsS0FBSyxFQUFFRixVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUlHLDJCQUFnQjtNQUN4Q0ssSUFBSSxFQUFFUixVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0VBQ0g7RUFFQSxPQUFPLElBQUk7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNTLFVBQVVBLENBQUNDLFlBQXNCLEVBQVk7RUFDM0QsT0FDRUEsWUFBWSxDQUNUbEYsTUFBTSxDQUFDLFVBQVVtRixDQUFDLEVBQVc7SUFDNUIsSUFBSSxDQUFDdEIsZUFBTSxDQUFDQyxLQUFLLENBQUNxQixDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUU7TUFDMUJDLGNBQU0sQ0FBQ0MsSUFBSSxDQUFDO1FBQUVDLEdBQUcsRUFBRUg7TUFBRSxDQUFDLEVBQUUsNkJBQTZCLENBQUM7TUFDdEQsT0FBTyxLQUFLO0lBQ2Q7SUFDQSxPQUFPLElBQUk7RUFDYixDQUFDO0VBQ0Q7RUFDQTtFQUFBLENBQ0NJLElBQUksQ0FBQzFCLGVBQU0sQ0FBQzJCLFlBQVksQ0FBQyxDQUN6QkMsR0FBRyxDQUFDakUsTUFBTSxDQUFDO0FBRWxCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2tFLGlCQUFpQkEsQ0FBQzFCLEdBQVksRUFBUTtFQUNwRCxJQUFJMkIsTUFBTTtFQUNWLElBQUksQ0FBQzNCLEdBQUcsQ0FBQ0osb0JBQVMsQ0FBQyxDQUFDZ0MsTUFBTSxFQUFFO0lBQzFCO0lBQ0FELE1BQU0sR0FBR1YsVUFBVSxDQUFDcEYsTUFBTSxDQUFDRCxJQUFJLENBQUNvRSxHQUFHLENBQUNFLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLElBQUl5QixNQUFNLElBQUlBLE1BQU0sQ0FBQ2pGLE1BQU0sRUFBRTtNQUMzQnNELEdBQUcsQ0FBQ0osb0JBQVMsQ0FBQyxDQUFDZ0MsTUFBTSxHQUFHRCxNQUFNLENBQUNFLEdBQUcsRUFBRTtJQUN0QztFQUNGO0VBRUEsS0FBSyxNQUFNbEMsR0FBRyxJQUFJSyxHQUFHLENBQUNKLG9CQUFTLENBQUMsRUFBRTtJQUNoQyxJQUFJTixlQUFDLENBQUN3QyxPQUFPLENBQUM5QixHQUFHLENBQUNKLG9CQUFTLENBQUMsQ0FBQ0QsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUNsQyxJQUFJSyxHQUFHLENBQUNKLG9CQUFTLENBQUMsQ0FBQ0QsR0FBRyxDQUFDLENBQUNqRCxNQUFNLEVBQUU7UUFDOUI7UUFDQTtRQUNBO1FBQ0FpRixNQUFNLEdBQUdWLFVBQVUsQ0FBQ2pCLEdBQUcsQ0FBQ0osb0JBQVMsQ0FBQyxDQUFDRCxHQUFHLENBQUMsQ0FBQztRQUN4QyxJQUFJZ0MsTUFBTSxDQUFDakYsTUFBTSxFQUFFO1VBQ2pCO1VBQ0FzRCxHQUFHLENBQUNKLG9CQUFTLENBQUMsQ0FBQ0QsR0FBRyxDQUFDLEdBQUdnQyxNQUFNLENBQUNFLEdBQUcsRUFBRTtRQUNwQztNQUNGLENBQUMsTUFBTTtRQUNMLE9BQU83QixHQUFHLENBQUNKLG9CQUFTLENBQUMsQ0FBQ0QsR0FBRyxDQUFDO01BQzVCO0lBQ0YsQ0FBQyxNQUFNLElBQUlMLGVBQUMsQ0FBQ3lDLFFBQVEsQ0FBQy9CLEdBQUcsQ0FBQ0osb0JBQVMsQ0FBQyxDQUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFO01BQzFDLElBQUksQ0FBQ0UsZUFBTSxDQUFDQyxLQUFLLENBQUNFLEdBQUcsQ0FBQ0osb0JBQVMsQ0FBQyxDQUFDRCxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUM1QztRQUNBLE9BQU9LLEdBQUcsQ0FBQ0osb0JBQVMsQ0FBQyxDQUFDRCxHQUFHLENBQUM7TUFDNUI7SUFDRjtFQUNGO0FBQ0Y7QUFFQSxNQUFNcUMsa0JBQWtCLEdBQUc7RUFDekIsRUFBRSxFQUFFLElBQUk7RUFDUkMsRUFBRSxFQUFFLENBQUM7RUFDTEMsQ0FBQyxFQUFFLElBQUk7RUFDUEMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJO0VBQ1pDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUk7RUFDakJDLENBQUMsRUFBRSxRQUFRO0VBQ1hDLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUTtFQUNmQyxDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVE7RUFDaEJDLENBQUMsRUFBRSxHQUFHLEdBQUc7QUFDWCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxhQUFhQSxDQUFDQyxRQUFhLEVBQVU7RUFDbkQsSUFBSSxPQUFPQSxRQUFRLEtBQUssUUFBUSxFQUFFO0lBQ2hDLE9BQU9BLFFBQVEsR0FBRyxJQUFJO0VBQ3hCO0VBQ0EsSUFBSUMsTUFBTSxHQUFHLENBQUM7RUFDZCxJQUFJQyxXQUFXLEdBQUdDLFFBQVE7RUFDMUJILFFBQVEsQ0FBQ0ksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDbEcsT0FBTyxDQUFDLFVBQVV1RSxDQUFDLEVBQVE7SUFDL0MsSUFBSSxDQUFDQSxDQUFDLEVBQUU7TUFDTjtJQUNGO0lBQ0EsTUFBTWdCLENBQUMsR0FBR2hCLENBQUMsQ0FBQzRCLEtBQUssQ0FBQyxtREFBbUQsQ0FBQztJQUN0RSxJQUNFLENBQUNaLENBQUMsSUFDRkgsa0JBQWtCLENBQUNHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJUyxXQUFXLElBQ3RDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJUyxXQUFXLEtBQUtDLFFBQVMsRUFDekM7TUFDQSxNQUFNRyxLQUFLLENBQUMsb0JBQW9CLEdBQUdOLFFBQVEsQ0FBQztJQUM5QztJQUNBRSxXQUFXLEdBQUdaLGtCQUFrQixDQUFDRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdENRLE1BQU0sSUFBSXpFLE1BQU0sQ0FBQ2lFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHSCxrQkFBa0IsQ0FBQ0csQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ25ELENBQUMsQ0FBQztFQUNGLE9BQU9RLE1BQU07QUFDZjtBQUVPLE1BQU1NLFNBQVMsR0FBRztFQUN2QjNFLFdBQVc7RUFDWEgsVUFBVTtFQUNWQyxhQUFhO0VBQ2JJLGdCQUFnQjtFQUNoQkcsZUFBZTtFQUNmSixZQUFZO0VBQ1pHLHFCQUFxQjtFQUNyQkQsV0FBVztFQUNYSjtBQUNGLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBZSxPQUFBLENBQUE2RCxTQUFBLEdBQUFBLFNBQUE7QUFLTyxTQUFTQyxZQUFZQSxDQUFDbEMsSUFBWSxFQUFXO0VBQ2xELElBQUk7SUFDRixNQUFNbUMsSUFBSSxHQUFHQyxXQUFFLENBQUNDLFFBQVEsQ0FBQ3JDLElBQUksQ0FBQztJQUM5QixPQUFPbUMsSUFBSSxDQUFDRyxXQUFXLEVBQUU7RUFDM0IsQ0FBQyxDQUFDLE9BQU9oRSxDQUFNLEVBQUU7SUFDZixPQUFPLEtBQUs7RUFDZDtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTaUUsVUFBVUEsQ0FBQ3ZDLElBQVksRUFBVztFQUNoRCxJQUFJO0lBQ0YsTUFBTW1DLElBQUksR0FBR0MsV0FBRSxDQUFDQyxRQUFRLENBQUNyQyxJQUFJLENBQUM7SUFDOUIsT0FBT21DLElBQUksQ0FBQ0ssTUFBTSxFQUFFO0VBQ3RCLENBQUMsQ0FBQyxPQUFPbEUsQ0FBTSxFQUFFO0lBQ2YsT0FBTyxLQUFLO0VBQ2Q7QUFDRjtBQUVPLFNBQVNtRSxVQUFVQSxDQUFDQyxRQUFlLEVBQUVDLGNBQThCLEdBQUcsSUFBSSxFQUFZO0VBQzNGLE9BQU9ELFFBQVEsQ0FBQ0UsS0FBSyxFQUFFLENBQUNyQyxJQUFJLENBQUMsVUFBVXNDLENBQUMsRUFBRUMsQ0FBQyxFQUFVO0lBQ25ELE1BQU1DLGVBQWUsR0FBR0YsQ0FBQyxDQUFDRyxJQUFJLENBQUNDLFdBQVcsRUFBRSxHQUFHSCxDQUFDLENBQUNFLElBQUksQ0FBQ0MsV0FBVyxFQUFFO0lBRW5FLE9BQU9OLGNBQWMsR0FBSUksZUFBZSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBSUEsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDL0UsQ0FBQyxDQUFDO0FBQ0o7QUFFTyxTQUFTRyxRQUFRQSxDQUFDQyxLQUFhLEVBQUVDLFdBQW1CLEVBQVU7RUFDbkUsT0FBUSxJQUFHRCxLQUFNLElBQUdDLFdBQVksRUFBQztBQUNuQztBQUVPLFNBQVNDLGdCQUFnQkEsQ0FBQ0Msa0JBQTRCLEVBQUVDLFVBQWUsRUFBTztFQUNuRmpGLGVBQUMsQ0FBQzFDLE9BQU8sQ0FBQzBILGtCQUFrQixFQUFHRSxRQUFRLElBQVU7SUFDL0MsT0FBT0QsVUFBVSxDQUFDQyxRQUFRLENBQUM7RUFDN0IsQ0FBQyxDQUFDO0VBRUYsT0FBT0QsVUFBVTtBQUNuQjtBQUVPLFNBQVNFLGtCQUFrQkEsQ0FBQ0MsT0FBZ0IsRUFBRUMsTUFBTSxHQUFHLElBQUksRUFBZ0I7RUFDaEYsTUFBTUMsV0FBVyxHQUFBdEksYUFBQSxLQUFRb0ksT0FBTyxDQUFTO0VBQ3pDLE1BQU1HLE1BQVcsR0FBR3ZGLGVBQUMsQ0FBQ3dGLEdBQUcsQ0FBQ0osT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQVE7RUFDaEUsTUFBTUssWUFBNEIsR0FBRyxJQUFBQyw0QkFBcUIsRUFDeEQxRixlQUFDLENBQUN3RixHQUFHLENBQUNKLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FDMUM7RUFDRCxNQUFNTyxXQUFXLEdBQUczRixlQUFDLENBQUN3RixHQUFHLENBQUNKLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxFQUFFLENBQUM7O0VBRTVEO0VBQ0EsSUFBSUcsTUFBTSxJQUFJdkYsZUFBQyxDQUFDSixRQUFRLENBQUMyRixNQUFNLENBQUMsRUFBRTtJQUNoQyxNQUFNO01BQUVLO0lBQU0sQ0FBQyxHQUFHTCxNQUFnQjtJQUNsQ0QsV0FBVyxDQUFDaEQsTUFBTSxDQUFDaUQsTUFBTSxDQUFDTSxNQUFNLEdBQUcsSUFBQUMsMEJBQW1CLEVBQUNGLEtBQUssRUFBRVAsTUFBTSxDQUFDO0VBQ3ZFO0VBRUEsSUFBSUUsTUFBTSxJQUFJdkYsZUFBQyxDQUFDeUMsUUFBUSxDQUFDOEMsTUFBTSxDQUFDLEVBQUU7SUFDaENELFdBQVcsQ0FBQ2hELE1BQU0sQ0FBQ2lELE1BQU0sR0FBRztNQUMxQk0sTUFBTSxFQUFFRSxxQkFBYztNQUN0QkgsS0FBSyxFQUFFLEVBQUU7TUFDVEw7SUFDRixDQUFDO0VBQ0g7O0VBRUE7RUFDQSxJQUFJdkYsZUFBQyxDQUFDZ0csT0FBTyxDQUFDUCxZQUFZLENBQUMsS0FBSyxLQUFLLEVBQUU7SUFDckNILFdBQVcsQ0FBQ2hELE1BQU0sQ0FBQ21ELFlBQVksR0FBR0EsWUFBWSxDQUFDdEQsR0FBRyxDQUFFOEQsV0FBVyxJQUFtQjtNQUNoRixJQUFJckcsUUFBUSxDQUFDcUcsV0FBVyxDQUFDLEVBQUU7UUFDekJBLFdBQVcsQ0FBQ0osTUFBTSxHQUFHLElBQUFDLDBCQUFtQixFQUFDRyxXQUFXLENBQUNMLEtBQUssRUFBRVAsTUFBTSxDQUFDO01BQ3JFLENBQUMsTUFBTSxJQUFJckYsZUFBQyxDQUFDeUMsUUFBUSxDQUFDd0QsV0FBVyxDQUFDLEVBQUU7UUFDbENBLFdBQVcsR0FBRztVQUNaSixNQUFNLEVBQUVFLHFCQUFjO1VBQ3RCSCxLQUFLLEVBQUVLLFdBQVc7VUFDbEJ2QixJQUFJLEVBQUV1QjtRQUNSLENBQUM7TUFDSDtNQUVBLE9BQU9BLFdBQVc7SUFDcEIsQ0FBQyxDQUFDO0VBQ0o7O0VBRUE7RUFDQSxJQUFJakcsZUFBQyxDQUFDZ0csT0FBTyxDQUFDTCxXQUFXLENBQUMsS0FBSyxLQUFLLEVBQUU7SUFDcENMLFdBQVcsQ0FBQ2hELE1BQU0sQ0FBQ3FELFdBQVcsR0FBR0EsV0FBVyxDQUFDeEQsR0FBRyxDQUFFK0QsVUFBZSxJQUFXO01BQzFFQSxVQUFVLENBQUNMLE1BQU0sR0FBRyxJQUFBQywwQkFBbUIsRUFBQ0ksVUFBVSxDQUFDTixLQUFLLEVBQUVQLE1BQU0sQ0FBQztNQUNqRSxPQUFPYSxVQUFVO0lBQ25CLENBQUMsQ0FBQztFQUNKO0VBRUEsT0FBT1osV0FBVztBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2EsV0FBV0EsQ0FBQ3JCLFdBQW1CLEVBQUVzQixNQUFjLEVBQWlCO0VBQzlFLElBQUlwRyxlQUFDLENBQUNnRyxPQUFPLENBQUNJLE1BQU0sQ0FBQyxLQUFLLEtBQUssRUFBRTtJQUMvQixPQUFPQSxNQUFNO0VBQ2Y7O0VBRUE7RUFDQXRFLGNBQU0sQ0FBQ3VFLElBQUksQ0FBQztJQUFFdkI7RUFBWSxDQUFDLEVBQUUsaUNBQWlDLENBQUM7RUFFL0QsT0FBTyw4QkFBOEI7QUFDdkM7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU3dCLFlBQVlBLENBQUNmLE1BQW9CLEVBQU87RUFDdEQsSUFBSWdCLGFBQWEsR0FBRztJQUNsQjdCLElBQUksRUFBRThCLHVCQUFZO0lBQ2xCWixLQUFLLEVBQUUsRUFBRTtJQUNUYSxHQUFHLEVBQUU7RUFDUCxDQUFDO0VBRUQsSUFBSXpHLGVBQUMsQ0FBQ1csS0FBSyxDQUFDNEUsTUFBTSxDQUFDLEVBQUU7SUFDbkIsT0FBT2dCLGFBQWE7RUFDdEI7RUFFQSxJQUFJdkcsZUFBQyxDQUFDeUMsUUFBUSxDQUFDOEMsTUFBTSxDQUFDLEVBQUU7SUFDdEJnQixhQUFhLEdBQUF2SixhQUFBLENBQUFBLGFBQUEsS0FDUnVKLGFBQWE7TUFDaEI3QixJQUFJLEVBQUVhO0lBQWdCLEVBQ3ZCO0VBQ0g7RUFFQSxJQUFJdkYsZUFBQyxDQUFDSixRQUFRLENBQUMyRixNQUFNLENBQUMsRUFBRTtJQUN0QmdCLGFBQWEsR0FBQXZKLGFBQUEsQ0FBQUEsYUFBQSxLQUNSdUosYUFBYSxHQUNaaEIsTUFBTSxDQUNYO0VBQ0g7RUFFQSxPQUFPZ0IsYUFBYTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0csR0FBR0EsQ0FBQ0MsR0FBRyxFQUFFQyxHQUFHLEVBQVU7RUFDcEMsSUFBSUQsR0FBRyxDQUFDdkosTUFBTSxHQUFHd0osR0FBRyxFQUFFO0lBQ3BCLE9BQU9ELEdBQUcsR0FBRyxHQUFHLENBQUNFLE1BQU0sQ0FBQ0QsR0FBRyxHQUFHRCxHQUFHLENBQUN2SixNQUFNLENBQUM7RUFDM0M7RUFDQSxPQUFPdUosR0FBRztBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLElBQUlBLENBQUNILEdBQVcsRUFBRUksT0FBTyxHQUFHLENBQUMsRUFBVTtFQUNyRCxPQUFRLEdBQUVKLEdBQUcsQ0FBQ0ssTUFBTSxDQUFDLENBQUMsRUFBRUQsT0FBTyxDQUFFLE1BQUtKLEdBQUcsQ0FBQ0ssTUFBTSxDQUFDLENBQUNELE9BQU8sQ0FBRSxFQUFDO0FBQzlEO0FBRU8sU0FBU0UsZUFBZUEsQ0FBQ25DLFdBQVcsRUFBVTtFQUNuRCxPQUFPQSxXQUFXLENBQUNvQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUMxQztBQUVPLFNBQVNDLGFBQWFBLENBQUN2RyxRQUFRLEVBQVc7RUFDL0MsT0FBT3JFLE1BQU0sQ0FBQ0QsSUFBSSxDQUFDc0UsUUFBUSxDQUFDLENBQUN4RCxNQUFNLEtBQUssQ0FBQztBQUMzQztBQUVPLFNBQVNnSyxjQUFjQSxDQUFDQyxXQUFXLEVBQUVDLGNBQWMsRUFBVztFQUNuRSxNQUFNQyxVQUFVLEdBQUcsT0FBT0QsY0FBYyxLQUFLLFdBQVc7RUFDeEQsSUFBSSxDQUFDQyxVQUFVLEVBQUU7SUFDZixPQUFPLEtBQUs7RUFDZDtFQUVBLE1BQU1DLGVBQWUsR0FBR2pMLE1BQU0sQ0FBQ0QsSUFBSSxDQUFDK0ssV0FBVyxDQUFDekcsUUFBUSxDQUFDLENBQUM2RyxRQUFRLENBQUNILGNBQWMsQ0FBQztFQUNsRixPQUFPRSxlQUFlO0FBQ3hCO0FBRU8sU0FBU0Usc0JBQXNCQSxDQUFDdEMsT0FBZ0IsRUFBVztFQUNoRSxNQUFNO0lBQUV4RTtFQUFTLENBQUMsR0FBR3dFLE9BQU87RUFDNUIsS0FBSyxNQUFNaEYsT0FBTyxJQUFJUSxRQUFRLEVBQUU7SUFDOUIsSUFBSXJFLE1BQU0sQ0FBQ29MLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDbEosSUFBSSxDQUFDa0MsUUFBUSxDQUFDUixPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRTtNQUN6RSxPQUFPLElBQUk7SUFDYjtFQUNGO0VBQ0EsT0FBTyxLQUFLO0FBQ2Q7QUFFTyxTQUFTeUgsV0FBV0EsQ0FBQ0MsU0FBd0IsRUFBRTtFQUNwRCxJQUFJO0lBQ0YsTUFBTUMsTUFBTSxHQUFHLElBQUlDLFFBQUcsQ0FBQ0YsU0FBUyxDQUFXO0lBQzNDLElBQUksQ0FBQ3ZJLGNBQWMsQ0FBQ2tJLFFBQVEsQ0FBQ00sTUFBTSxDQUFDRSxRQUFRLENBQUNmLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtNQUM5RCxNQUFNeEQsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDO0lBQ0EsT0FBTyxJQUFJO0VBQ2IsQ0FBQyxDQUFDLE9BQU8zQyxHQUFRLEVBQUU7SUFDakI7SUFDQSxPQUFPLEtBQUs7RUFDZDtBQUNGO0FBRU8sU0FBU21ILE1BQU1BLENBQUN6QixHQUFXLEdBQUcsRUFBRSxFQUFFMEIsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFXO0VBQzlELE9BQU9DLGtCQUFTLENBQUNDLEtBQUssQ0FBQzVCLEdBQUcsRUFBQXpKLGFBQUE7SUFDeEJzTCxZQUFZLEVBQUUsSUFBSTtJQUNsQkMsa0JBQWtCLEVBQUUsS0FBSztJQUN6QkMsc0JBQXNCLEVBQUUsS0FBSztJQUM3QjtJQUNBQyxZQUFZLEVBQUUsS0FBSztJQUNuQkMsV0FBVyxFQUFFO0VBQUssR0FDZlAsT0FBTyxFQUNWO0FBQ0o7QUFFTyxTQUFTUSxRQUFRQSxDQUFDQyxNQUFjLEVBQUU7RUFBQSxJQUFBQyxXQUFBLEVBQUFDLFlBQUE7RUFDdkM7RUFDQTtFQUNBLE9BQU85SSxlQUFDLENBQUNXLEtBQUssQ0FBQ2lJLE1BQU0sYUFBTkEsTUFBTSx3QkFBQUMsV0FBQSxHQUFORCxNQUFNLENBQUVHLEdBQUcsY0FBQUYsV0FBQSx1QkFBWEEsV0FBQSxDQUFhRyxLQUFLLENBQUMsSUFBSSxDQUFBSixNQUFNLGFBQU5BLE1BQU0sd0JBQUFFLFlBQUEsR0FBTkYsTUFBTSxDQUFFRyxHQUFHLGNBQUFELFlBQUEsdUJBQVhBLFlBQUEsQ0FBYUUsS0FBSyxNQUFLLElBQUk7QUFDbkUifQ==
|
|
468
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfc2VtdmVyIiwiX3VybCIsIl92YWxpZGF0b3IiLCJfY29uZmlnIiwiX2NvcmUiLCJfdXRpbHMiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJnZXRCYWREYXRhIiwiZ2V0QmFkUmVxdWVzdCIsImdldENvZGUiLCJnZXRDb25mbGljdCIsImdldEZvcmJpZGRlbiIsImdldEludGVybmFsRXJyb3IiLCJnZXROb3RGb3VuZCIsImdldFNlcnZpY2VVbmF2YWlsYWJsZSIsImdldFVuYXV0aG9yaXplZCIsImVycm9yVXRpbHMiLCJ2YWxpZFByb3RvY29scyIsImNvbnZlcnRQYXlsb2FkVG9CYXNlNjQiLCJwYXlsb2FkIiwiQnVmZmVyIiwiZnJvbSIsImlzT2JqZWN0IiwidmFsaWRhdGlvVXRpbHMiLCJleHBvcnRzIiwiaXNPYmplY3RPckFycmF5IiwiXyIsImlzTnVsbCIsInRhZ1ZlcnNpb24iLCJkYXRhIiwidmVyc2lvbiIsInRhZyIsIkRJU1RfVEFHUyIsInNlbXZlciIsInBhcnNlIiwiZ2V0VmVyc2lvbiIsInBrZyIsImlzTmlsIiwidmVyc2lvbnMiLCJ2ZXJzaW9uSXRlbSIsImNvbXBhcmUiLCJlcnIiLCJwYXJzZUFkZHJlc3MiLCJ1cmxBZGRyZXNzIiwidXJsUGF0dGVybiIsImV4ZWMiLCJwcm90byIsIkRFRkFVTFRfUFJPVE9DT0wiLCJob3N0IiwiREVGQVVMVF9ET01BSU4iLCJwb3J0IiwiREVGQVVMVF9QT1JUIiwicGF0aCIsInNlbXZlclNvcnQiLCJsaXN0VmVyc2lvbnMiLCJ4IiwibG9nZ2VyIiwid2FybiIsInZlciIsInNvcnQiLCJjb21wYXJlTG9vc2UiLCJtYXAiLCJub3JtYWxpemVEaXN0VGFncyIsInNvcnRlZCIsImxhdGVzdCIsInBvcCIsImlzQXJyYXkiLCJpc1N0cmluZyIsInBhcnNlSW50ZXJ2YWxUYWJsZSIsIm1zIiwicyIsIm0iLCJoIiwiZCIsInciLCJNIiwieSIsInBhcnNlSW50ZXJ2YWwiLCJpbnRlcnZhbCIsInJlc3VsdCIsImxhc3Rfc3VmZml4IiwiSW5maW5pdHkiLCJzcGxpdCIsIm1hdGNoIiwiRXJyb3IiLCJFcnJvckNvZGUiLCJmb2xkZXJFeGlzdHMiLCJzdGF0IiwiZnMiLCJzdGF0U3luYyIsImlzRGlyZWN0b3J5IiwiZmlsZUV4aXN0cyIsImlzRmlsZSIsInNvcnRCeU5hbWUiLCJwYWNrYWdlcyIsIm9yZGVyQXNjZW5kaW5nIiwic2xpY2UiLCJhIiwiYiIsImNvbXBhcmF0b3JOYW1lcyIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsImFkZFNjb3BlIiwic2NvcGUiLCJwYWNrYWdlTmFtZSIsImRlbGV0ZVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzVG9EZWxldGUiLCJvYmplY3RJdGVtIiwicHJvcGVydHkiLCJhZGRHcmF2YXRhclN1cHBvcnQiLCJwa2dJbmZvIiwib25saW5lIiwicGtnSW5mb0NvcHkiLCJhdXRob3IiLCJnZXQiLCJjb250cmlidXRvcnMiLCJub3JtYWxpemVDb250cmlidXRvcnMiLCJtYWludGFpbmVycyIsImVtYWlsIiwiYXZhdGFyIiwiZ2VuZXJhdGVHcmF2YXRhclVybCIsIkdFTkVSSUNfQVZBVEFSIiwiaXNFbXB0eSIsImNvbnRyaWJ1dG9yIiwibWFpbnRhaW5lciIsInBhcnNlUmVhZG1lIiwicmVhZG1lIiwiaW5mbyIsImZvcm1hdEF1dGhvciIsImF1dGhvckRldGFpbHMiLCJERUZBVUxUX1VTRVIiLCJ1cmwiLCJwYWQiLCJzdHIiLCJtYXgiLCJyZXBlYXQiLCJtYXNrIiwiY2hhck51bSIsInN1YnN0ciIsImVuY29kZVNjb3BlZFVyaSIsInJlcGxhY2UiLCJoYXNEaWZmT25lS2V5IiwiaXNWZXJzaW9uVmFsaWQiLCJwYWNrYWdlTWV0YSIsInBhY2thZ2VWZXJzaW9uIiwiaGFzVmVyc2lvbiIsImhhc01hdGNoVmVyc2lvbiIsImluY2x1ZGVzIiwiaXNSZWxhdGVkVG9EZXByZWNhdGlvbiIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwidmFsaWRhdGVVUkwiLCJwdWJsaWNVcmwiLCJwYXJzZWQiLCJVUkwiLCJwcm90b2NvbCIsImlzSG9zdCIsIm9wdGlvbnMiLCJ2YWxpZGF0b3IiLCJpc1VSTCIsInJlcXVpcmVfaG9zdCIsImFsbG93X3RyYWlsaW5nX2RvdCIsInJlcXVpcmVfdmFsaWRfcHJvdG9jb2wiLCJyZXF1aXJlX3BvcnQiLCJyZXF1aXJlX3RsZCIsImhhc0xvZ2luIiwiY29uZmlnIiwiX2NvbmZpZyR3ZWIiLCJfY29uZmlnJHdlYjIiLCJ3ZWIiLCJsb2dpbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHZhbGlkYXRvciBmcm9tICd2YWxpZGF0b3InO1xuXG5pbXBvcnQgeyBwYXJzZUNvbmZpZ0ZpbGUgfSBmcm9tICdAdmVyZGFjY2lvL2NvbmZpZyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuaW1wb3J0IHsgZXJyb3JVdGlscywgdmFsaWRhdGlvVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgU3RyaW5nVmFsdWUgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IEF1dGhvciwgQ29uZmlnLCBQYWNrYWdlLCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQge1xuICBHRU5FUklDX0FWQVRBUixcbiAgYnVpbGRUb2tlbiBhcyBidWlsZFRva2VuVXRpbCxcbiAgZ2VuZXJhdGVHcmF2YXRhclVybCxcbiAgbm9ybWFsaXplQ29udHJpYnV0b3JzLFxufSBmcm9tICdAdmVyZGFjY2lvL3V0aWxzJztcblxuaW1wb3J0IHsgQXV0aG9yQXZhdGFyIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9ET01BSU4sXG4gIERFRkFVTFRfUE9SVCxcbiAgREVGQVVMVF9QUk9UT0NPTCxcbiAgREVGQVVMVF9VU0VSLFxuICBESVNUX1RBR1MsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcblxuY29uc3Qge1xuICBnZXRCYWREYXRhLFxuICBnZXRCYWRSZXF1ZXN0LFxuICBnZXRDb2RlLFxuICBnZXRDb25mbGljdCxcbiAgZ2V0Rm9yYmlkZGVuLFxuICBnZXRJbnRlcm5hbEVycm9yLFxuICBnZXROb3RGb3VuZCxcbiAgZ2V0U2VydmljZVVuYXZhaWxhYmxlLFxuICBnZXRVbmF1dGhvcml6ZWQsXG59ID0gZXJyb3JVdGlscztcbmNvbnN0IHZhbGlkUHJvdG9jb2xzID0gWydodHRwcycsICdodHRwJ107XG5leHBvcnQgZnVuY3Rpb24gY29udmVydFBheWxvYWRUb0Jhc2U2NChwYXlsb2FkOiBzdHJpbmcpOiBCdWZmZXIge1xuICByZXR1cm4gQnVmZmVyLmZyb20ocGF5bG9hZCwgJ2Jhc2U2NCcpO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBhbiBPYmplY3RcbiAqIEBwYXJhbSB7Kn0gb2JqIHRoZSBlbGVtZW50XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSB2YWxpZGF0aW9VdGlscy5pc09iamVjdDtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBub3QgdXNlZCB1biB2NlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3RPckFycmF5KG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBfLmlzT2JqZWN0KG9iaikgJiYgXy5pc051bGwob2JqKSA9PT0gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWdWZXJzaW9uKGRhdGE6IFBhY2thZ2UsIHZlcnNpb246IHN0cmluZywgdGFnOiBTdHJpbmdWYWx1ZSk6IGJvb2xlYW4ge1xuICBpZiAodGFnICYmIGRhdGFbRElTVF9UQUdTXVt0YWddICE9PSB2ZXJzaW9uICYmIHNlbXZlci5wYXJzZSh2ZXJzaW9uLCB0cnVlKSkge1xuICAgIC8vIHZhbGlkIHZlcnNpb24gLSBzdG9yZVxuICAgIGRhdGFbRElTVF9UQUdTXVt0YWddID0gdmVyc2lvbjtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogR2V0cyB2ZXJzaW9uIGZyb20gYSBwYWNrYWdlIG9iamVjdCB0YWtpbmcgaW50byBhY2NvdW50IHNlbXZlciB3ZWlyZG5lc3MuXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJldHVybiB0aGUgc2VtYW50aWMgdmVyc2lvbiBvZiBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNpb24ocGtnOiBQYWNrYWdlLCB2ZXJzaW9uOiBhbnkpOiBWZXJzaW9uIHwgdm9pZCB7XG4gIC8vIHRoaXMgY29uZGl0aW9uIG11c3QgYWxsb3cgY2FzdFxuICBpZiAoXy5pc05pbChwa2cudmVyc2lvbnNbdmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgIHJldHVybiBwa2cudmVyc2lvbnNbdmVyc2lvbl07XG4gIH1cblxuICB0cnkge1xuICAgIHZlcnNpb24gPSBzZW12ZXIucGFyc2UodmVyc2lvbiwgdHJ1ZSk7XG4gICAgZm9yIChjb25zdCB2ZXJzaW9uSXRlbSBpbiBwa2cudmVyc2lvbnMpIHtcbiAgICAgIGlmICh2ZXJzaW9uLmNvbXBhcmUoc2VtdmVyLnBhcnNlKHZlcnNpb25JdGVtLCB0cnVlKSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBrZy52ZXJzaW9uc1t2ZXJzaW9uSXRlbV07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBhbiBpbnRlcm5ldCBhZGRyZXNzXG4gKiBBbGxvdzpcbiAtIGh0dHBzOmxvY2FsaG9zdDoxMjM0ICAgICAgICAtIHByb3RvY29sICsgaG9zdCArIHBvcnRcbiAtIGxvY2FsaG9zdDoxMjM0ICAgICAgICAgICAgICAtIGhvc3QgKyBwb3J0XG4gLSAxMjM0ICAgICAgICAgICAgICAgICAgICAgICAgLSBwb3J0XG4gLSBodHRwOjoxMjM0ICAgICAgICAgICAgICAgICAgLSBwcm90b2NvbCArIHBvcnRcbiAtIGh0dHBzOi8vbG9jYWxob3N0OjQ0My8gICAgICAtIGZ1bGwgdXJsICsgaHR0cHNcbiAtIGh0dHA6Ly9bOjoxXTo0NDMvICAgICAgICAgICAtIGlwdjZcbiAtIHVuaXg6L3RtcC9odHRwLnNvY2sgICAgICAgICAtIHVuaXggc29ja2V0c1xuIC0gaHR0cHM6Ly91bml4Oi90bXAvaHR0cC5zb2NrIC0gdW5peCBzb2NrZXRzIChodHRwcylcbiAqIEBwYXJhbSB7Kn0gdXJsQWRkcmVzcyB0aGUgaW50ZXJuZXQgYWRkcmVzcyBkZWZpbml0aW9uXG4gKiBAcmV0dXJuIHtPYmplY3R8TnVsbH0gbGl0ZXJhbCBvYmplY3QgdGhhdCByZXByZXNlbnQgdGhlIGFkZHJlc3MgcGFyc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFkZHJlc3ModXJsQWRkcmVzczogYW55KTogYW55IHtcbiAgLy9cbiAgLy8gVE9ETzogcmVmYWN0b3IgaXQgdG8gc29tZXRoaW5nIG1vcmUgcmVhc29uYWJsZT9cbiAgLy9cbiAgLy8gICAgICAgIHByb3RvY29sIDogIC8vICAgICAgKCAgaG9zdCAgKXwoICAgIGlwdjYgICAgICk6ICBwb3J0ICAvXG4gIGxldCB1cmxQYXR0ZXJuID0gL14oKGh0dHBzPyk6KFxcL1xcLyk/KT8oKChbXlxcLzpdKil8XFxbKFteXFxbXFxdXSspXFxdKTopPyhcXGQrKVxcLz8kLy5leGVjKHVybEFkZHJlc3MpO1xuXG4gIGlmICh1cmxQYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3RvOiB1cmxQYXR0ZXJuWzJdIHx8IERFRkFVTFRfUFJPVE9DT0wsXG4gICAgICBob3N0OiB1cmxQYXR0ZXJuWzZdIHx8IHVybFBhdHRlcm5bN10gfHwgREVGQVVMVF9ET01BSU4sXG4gICAgICBwb3J0OiB1cmxQYXR0ZXJuWzhdIHx8IERFRkFVTFRfUE9SVCxcbiAgICB9O1xuICB9XG5cbiAgdXJsUGF0dGVybiA9IC9eKChodHRwcz8pOihcXC9cXC8pPyk/dW5peDooLiopJC8uZXhlYyh1cmxBZGRyZXNzKTtcblxuICBpZiAodXJsUGF0dGVybikge1xuICAgIHJldHVybiB7XG4gICAgICBwcm90bzogdXJsUGF0dGVyblsyXSB8fCBERUZBVUxUX1BST1RPQ09MLFxuICAgICAgcGF0aDogdXJsUGF0dGVybls0XSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gZmlsdGVycyBvdXQgYmFkIHNlbXZlciB2ZXJzaW9ucyBhbmQgc29ydHMgdGhlIGFycmF5LlxuICogQHJldHVybiB7QXJyYXl9IHNvcnRlZCBBcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VtdmVyU29ydChsaXN0VmVyc2lvbnM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gKFxuICAgIGxpc3RWZXJzaW9uc1xuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoeCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXNlbXZlci5wYXJzZSh4LCB0cnVlKSkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKHsgdmVyOiB4IH0sICdpZ25vcmluZyBiYWQgdmVyc2lvbiBAe3Zlcn0nKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICAgLy8gRklYTUU6IGl0IHNlZW1zIHRoZSBAdHlwZXMvc2VtdmVyIGRvIG5vdCBoYW5kbGUgYSBsZWdpdGltYXRlIG1ldGhvZCBuYW1lZCAnY29tcGFyZUxvb3NlJ1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgLnNvcnQoc2VtdmVyLmNvbXBhcmVMb29zZSlcbiAgICAgIC5tYXAoU3RyaW5nKVxuICApO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gYXJyYXlzIG9mIHRhZ3MuXG4gKiBAcGFyYW0geyp9IGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZURpc3RUYWdzKHBrZzogUGFja2FnZSk6IHZvaWQge1xuICBsZXQgc29ydGVkO1xuICBpZiAoIXBrZ1tESVNUX1RBR1NdLmxhdGVzdCkge1xuICAgIC8vIG92ZXJ3cml0ZSBsYXRlc3Qgd2l0aCBoaWdoZXN0IGtub3duIHZlcnNpb24gYmFzZWQgb24gc2VtdmVyIHNvcnRcbiAgICBzb3J0ZWQgPSBzZW12ZXJTb3J0KE9iamVjdC5rZXlzKHBrZy52ZXJzaW9ucykpO1xuICAgIGlmIChzb3J0ZWQgJiYgc29ydGVkLmxlbmd0aCkge1xuICAgICAgcGtnW0RJU1RfVEFHU10ubGF0ZXN0ID0gc29ydGVkLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgdGFnIGluIHBrZ1tESVNUX1RBR1NdKSB7XG4gICAgaWYgKF8uaXNBcnJheShwa2dbRElTVF9UQUdTXVt0YWddKSkge1xuICAgICAgaWYgKHBrZ1tESVNUX1RBR1NdW3RhZ10ubGVuZ3RoKSB7XG4gICAgICAgIC8vIHNvcnQgYXJyYXlcbiAgICAgICAgLy8gRklYTUU6IHRoaXMgaXMgY2xlYXJseSB3cm9uZywgd2UgbmVlZCB0byByZXNlYXJjaCB3aHkgdGhpcyBpcyBsaWtlIHRoaXMuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc29ydGVkID0gc2VtdmVyU29ydChwa2dbRElTVF9UQUdTXVt0YWddKTtcbiAgICAgICAgaWYgKHNvcnRlZC5sZW5ndGgpIHtcbiAgICAgICAgICAvLyB1c2UgaGlnaGVzdCB2ZXJzaW9uIGJhc2VkIG9uIHNlbXZlciBzb3J0XG4gICAgICAgICAgcGtnW0RJU1RfVEFHU11bdGFnXSA9IHNvcnRlZC5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIHBrZ1tESVNUX1RBR1NdW3RhZ107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChfLmlzU3RyaW5nKHBrZ1tESVNUX1RBR1NdW3RhZ10pKSB7XG4gICAgICBpZiAoIXNlbXZlci5wYXJzZShwa2dbRElTVF9UQUdTXVt0YWddLCB0cnVlKSkge1xuICAgICAgICAvLyBpZiB0aGUgdmVyc2lvbiBpcyBpbnZhbGlkLCBkZWxldGUgdGhlIGRpc3QtdGFnIGVudHJ5XG4gICAgICAgIGRlbGV0ZSBwa2dbRElTVF9UQUdTXVt0YWddO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwYXJzZUludGVydmFsVGFibGUgPSB7XG4gICcnOiAxMDAwLFxuICBtczogMSxcbiAgczogMTAwMCxcbiAgbTogNjAgKiAxMDAwLFxuICBoOiA2MCAqIDYwICogMTAwMCxcbiAgZDogODY0MDAwMDAsXG4gIHc6IDcgKiA4NjQwMDAwMCxcbiAgTTogMzAgKiA4NjQwMDAwMCxcbiAgeTogMzY1ICogODY0MDAwMDAsXG59O1xuXG4vKipcbiAqIFBhcnNlIGFuIGludGVybmFsIHN0cmluZyB0byBudW1iZXJcbiAqIEBwYXJhbSB7Kn0gaW50ZXJ2YWxcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW50ZXJ2YWwoaW50ZXJ2YWw6IGFueSk6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgaW50ZXJ2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGludGVydmFsICogMTAwMDtcbiAgfVxuICBsZXQgcmVzdWx0ID0gMDtcbiAgbGV0IGxhc3Rfc3VmZml4ID0gSW5maW5pdHk7XG4gIGludGVydmFsLnNwbGl0KC9cXHMrLykuZm9yRWFjaChmdW5jdGlvbiAoeCk6IHZvaWQge1xuICAgIGlmICgheCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtID0geC5tYXRjaCgvXigoMHxbMS05XVswLTldKikoXFwuWzAtOV0rKT8pKG1zfHN8bXxofGR8d3xNfHl8KSQvKTtcbiAgICBpZiAoXG4gICAgICAhbSB8fFxuICAgICAgcGFyc2VJbnRlcnZhbFRhYmxlW21bNF1dID49IGxhc3Rfc3VmZml4IHx8XG4gICAgICAobVs0XSA9PT0gJycgJiYgbGFzdF9zdWZmaXggIT09IEluZmluaXR5KVxuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2ludmFsaWQgaW50ZXJ2YWw6ICcgKyBpbnRlcnZhbCk7XG4gICAgfVxuICAgIGxhc3Rfc3VmZml4ID0gcGFyc2VJbnRlcnZhbFRhYmxlW21bNF1dO1xuICAgIHJlc3VsdCArPSBOdW1iZXIobVsxXSkgKiBwYXJzZUludGVydmFsVGFibGVbbVs0XV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgY29uc3QgRXJyb3JDb2RlID0ge1xuICBnZXRDb25mbGljdCxcbiAgZ2V0QmFkRGF0YSxcbiAgZ2V0QmFkUmVxdWVzdCxcbiAgZ2V0SW50ZXJuYWxFcnJvcixcbiAgZ2V0VW5hdXRob3JpemVkLFxuICBnZXRGb3JiaWRkZW4sXG4gIGdldFNlcnZpY2VVbmF2YWlsYWJsZSxcbiAgZ2V0Tm90Rm91bmQsXG4gIGdldENvZGUsXG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHBhdGggYWxyZWFkeSBleGlzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9sZGVyRXhpc3RzKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhwYXRoKTtcbiAgICByZXR1cm4gc3RhdC5pc0RpcmVjdG9yeSgpO1xuICB9IGNhdGNoIChfOiBhbnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBmaWxlIGFscmVhZHkgZXhpc3QuXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGVFeGlzdHMocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKHBhdGgpO1xuICAgIHJldHVybiBzdGF0LmlzRmlsZSgpO1xuICB9IGNhdGNoIChfOiBhbnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRCeU5hbWUocGFja2FnZXM6IGFueVtdLCBvcmRlckFzY2VuZGluZzogYm9vbGVhbiB8IHZvaWQgPSB0cnVlKTogc3RyaW5nW10ge1xuICByZXR1cm4gcGFja2FnZXMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uIChhLCBiKTogbnVtYmVyIHtcbiAgICBjb25zdCBjb21wYXJhdG9yTmFtZXMgPSBhLm5hbWUudG9Mb3dlckNhc2UoKSA8IGIubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIG9yZGVyQXNjZW5kaW5nID8gKGNvbXBhcmF0b3JOYW1lcyA/IC0xIDogMSkgOiBjb21wYXJhdG9yTmFtZXMgPyAxIDogLTE7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkU2NvcGUoc2NvcGU6IHN0cmluZywgcGFja2FnZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgQCR7c2NvcGV9LyR7cGFja2FnZU5hbWV9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnRpZXMocHJvcGVydGllc1RvRGVsZXRlOiBzdHJpbmdbXSwgb2JqZWN0SXRlbTogYW55KTogYW55IHtcbiAgXy5mb3JFYWNoKHByb3BlcnRpZXNUb0RlbGV0ZSwgKHByb3BlcnR5KTogYW55ID0+IHtcbiAgICBkZWxldGUgb2JqZWN0SXRlbVtwcm9wZXJ0eV07XG4gIH0pO1xuXG4gIHJldHVybiBvYmplY3RJdGVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkR3JhdmF0YXJTdXBwb3J0KHBrZ0luZm86IFBhY2thZ2UsIG9ubGluZSA9IHRydWUpOiBBdXRob3JBdmF0YXIge1xuICBjb25zdCBwa2dJbmZvQ29weSA9IHsgLi4ucGtnSW5mbyB9IGFzIGFueTtcbiAgY29uc3QgYXV0aG9yOiBhbnkgPSBfLmdldChwa2dJbmZvLCAnbGF0ZXN0LmF1dGhvcicsIG51bGwpIGFzIGFueTtcbiAgY29uc3QgY29udHJpYnV0b3JzOiBBdXRob3JBdmF0YXJbXSA9IG5vcm1hbGl6ZUNvbnRyaWJ1dG9ycyhcbiAgICBfLmdldChwa2dJbmZvLCAnbGF0ZXN0LmNvbnRyaWJ1dG9ycycsIFtdKVxuICApO1xuICBjb25zdCBtYWludGFpbmVycyA9IF8uZ2V0KHBrZ0luZm8sICdsYXRlc3QubWFpbnRhaW5lcnMnLCBbXSk7XG5cbiAgLy8gZm9yIGF1dGhvci5cbiAgaWYgKGF1dGhvciAmJiBfLmlzT2JqZWN0KGF1dGhvcikpIHtcbiAgICBjb25zdCB7IGVtYWlsIH0gPSBhdXRob3IgYXMgQXV0aG9yO1xuICAgIHBrZ0luZm9Db3B5LmxhdGVzdC5hdXRob3IuYXZhdGFyID0gZ2VuZXJhdGVHcmF2YXRhclVybChlbWFpbCwgb25saW5lKTtcbiAgfVxuXG4gIGlmIChhdXRob3IgJiYgXy5pc1N0cmluZyhhdXRob3IpKSB7XG4gICAgcGtnSW5mb0NvcHkubGF0ZXN0LmF1dGhvciA9IHtcbiAgICAgIGF2YXRhcjogR0VORVJJQ19BVkFUQVIsXG4gICAgICBlbWFpbDogJycsXG4gICAgICBhdXRob3IsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGZvciBjb250cmlidXRvcnNcbiAgaWYgKF8uaXNFbXB0eShjb250cmlidXRvcnMpID09PSBmYWxzZSkge1xuICAgIHBrZ0luZm9Db3B5LmxhdGVzdC5jb250cmlidXRvcnMgPSBjb250cmlidXRvcnMubWFwKChjb250cmlidXRvcik6IEF1dGhvckF2YXRhciA9PiB7XG4gICAgICBpZiAoaXNPYmplY3QoY29udHJpYnV0b3IpKSB7XG4gICAgICAgIGNvbnRyaWJ1dG9yLmF2YXRhciA9IGdlbmVyYXRlR3JhdmF0YXJVcmwoY29udHJpYnV0b3IuZW1haWwsIG9ubGluZSk7XG4gICAgICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcoY29udHJpYnV0b3IpKSB7XG4gICAgICAgIGNvbnRyaWJ1dG9yID0ge1xuICAgICAgICAgIGF2YXRhcjogR0VORVJJQ19BVkFUQVIsXG4gICAgICAgICAgZW1haWw6IGNvbnRyaWJ1dG9yLFxuICAgICAgICAgIG5hbWU6IGNvbnRyaWJ1dG9yLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udHJpYnV0b3I7XG4gICAgfSk7XG4gIH1cblxuICAvLyBmb3IgbWFpbnRhaW5lcnNcbiAgaWYgKF8uaXNFbXB0eShtYWludGFpbmVycykgPT09IGZhbHNlKSB7XG4gICAgcGtnSW5mb0NvcHkubGF0ZXN0Lm1haW50YWluZXJzID0gbWFpbnRhaW5lcnMubWFwKChtYWludGFpbmVyOiBhbnkpOiB2b2lkID0+IHtcbiAgICAgIG1haW50YWluZXIuYXZhdGFyID0gZ2VuZXJhdGVHcmF2YXRhclVybChtYWludGFpbmVyLmVtYWlsLCBvbmxpbmUpO1xuICAgICAgcmV0dXJuIG1haW50YWluZXI7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcGtnSW5mb0NvcHk7XG59XG5cbi8qKlxuICogcGFyc2UgcGFja2FnZSByZWFkbWUgLSBtYXJrZG93bi9hc2NpaVxuICogQHBhcmFtIHtTdHJpbmd9IHBhY2thZ2VOYW1lIG5hbWUgb2YgcGFja2FnZVxuICogQHBhcmFtIHtTdHJpbmd9IHJlYWRtZSBwYWNrYWdlIHJlYWRtZVxuXG4gKiBAcmV0dXJuIHtTdHJpbmd9IGNvbnZlcnRlZCBodG1sIHRlbXBsYXRlXG4gKi9cbi8vIFRPRE86IHJlbmFtZSwgZG9lcyBub3QgcGFyc2UgYW55bW9yZVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVhZG1lKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHJlYWRtZTogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XG4gIGlmIChfLmlzRW1wdHkocmVhZG1lKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gcmVhZG1lO1xuICB9XG5cbiAgLy8gbG9ncyByZWFkbWUgbm90IGZvdW5kIGVycm9yXG4gIGxvZ2dlci5pbmZvKHsgcGFja2FnZU5hbWUgfSwgJ0B7cGFja2FnZU5hbWV9OiBObyByZWFkbWUgZm91bmQnKTtcblxuICByZXR1cm4gJ0VSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCEnO1xufVxuXG5leHBvcnQgdHlwZSBBdXRob3JGb3JtYXQgPSBBdXRob3IgfCBzdHJpbmcgfCBudWxsIHwgb2JqZWN0IHwgdm9pZDtcblxuLyoqXG4gKiBGb3JtYXRzIGF1dGhvciBmaWVsZCBmb3Igd2VidWkuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vZmlsZXMvcGFja2FnZS5qc29uI2F1dGhvclxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fHVuZGVmaW5lZH0gYXV0aG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBdXRob3IoYXV0aG9yOiBBdXRob3JGb3JtYXQpOiBhbnkge1xuICBsZXQgYXV0aG9yRGV0YWlscyA9IHtcbiAgICBuYW1lOiBERUZBVUxUX1VTRVIsXG4gICAgZW1haWw6ICcnLFxuICAgIHVybDogJycsXG4gIH07XG5cbiAgaWYgKF8uaXNOaWwoYXV0aG9yKSkge1xuICAgIHJldHVybiBhdXRob3JEZXRhaWxzO1xuICB9XG5cbiAgaWYgKF8uaXNTdHJpbmcoYXV0aG9yKSkge1xuICAgIGF1dGhvckRldGFpbHMgPSB7XG4gICAgICAuLi5hdXRob3JEZXRhaWxzLFxuICAgICAgbmFtZTogYXV0aG9yIGFzIHN0cmluZyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKF8uaXNPYmplY3QoYXV0aG9yKSkge1xuICAgIGF1dGhvckRldGFpbHMgPSB7XG4gICAgICAuLi5hdXRob3JEZXRhaWxzLFxuICAgICAgLi4uKGF1dGhvciBhcyBBdXRob3IpLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gYXV0aG9yRGV0YWlscztcbn1cblxuLyoqXG4gKiBBcHBseSB3aGl0ZXNwYWNlcyBiYXNlZCBvbiB0aGUgbGVuZ3RoXG4gKiBAcGFyYW0geyp9IHN0ciB0aGUgbG9nIG1lc3NhZ2VcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhZChzdHIsIG1heCk6IHN0cmluZyB7XG4gIGlmIChzdHIubGVuZ3RoIDwgbWF4KSB7XG4gICAgcmV0dXJuIHN0ciArICcgJy5yZXBlYXQobWF4IC0gc3RyLmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn1cblxuLyoqXG4gKiByZXR1cm4gYSBtYXNxdWVyYWRlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBhbmQgbGFzdCB7Y2hhck51bX0gYW5kIHRocmVlIGRvdHMgaW4gYmV0d2Vlbi5cbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7TnVtYmVyfSBjaGFyTnVtXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFzayhzdHI6IHN0cmluZywgY2hhck51bSA9IDMpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c3RyLnN1YnN0cigwLCBjaGFyTnVtKX0uLi4ke3N0ci5zdWJzdHIoLWNoYXJOdW0pfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVTY29wZWRVcmkocGFja2FnZU5hbWUpOiBzdHJpbmcge1xuICByZXR1cm4gcGFja2FnZU5hbWUucmVwbGFjZSgvXFwvL2csICclMmYnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpOiBib29sZWFuIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHZlcnNpb25zKS5sZW5ndGggIT09IDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlcnNpb25WYWxpZChwYWNrYWdlTWV0YSwgcGFja2FnZVZlcnNpb24pOiBib29sZWFuIHtcbiAgY29uc3QgaGFzVmVyc2lvbiA9IHR5cGVvZiBwYWNrYWdlVmVyc2lvbiAhPT0gJ3VuZGVmaW5lZCc7XG4gIGlmICghaGFzVmVyc2lvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGhhc01hdGNoVmVyc2lvbiA9IE9iamVjdC5rZXlzKHBhY2thZ2VNZXRhLnZlcnNpb25zKS5pbmNsdWRlcyhwYWNrYWdlVmVyc2lvbik7XG4gIHJldHVybiBoYXNNYXRjaFZlcnNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uKHBrZ0luZm86IFBhY2thZ2UpOiBib29sZWFuIHtcbiAgY29uc3QgeyB2ZXJzaW9ucyB9ID0gcGtnSW5mbztcbiAgZm9yIChjb25zdCB2ZXJzaW9uIGluIHZlcnNpb25zKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2ZXJzaW9uc1t2ZXJzaW9uXSwgJ2RlcHJlY2F0ZWQnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVVJMKHB1YmxpY1VybDogc3RyaW5nIHwgdm9pZCkge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBVUkwocHVibGljVXJsIGFzIHN0cmluZyk7XG4gICAgaWYgKCF2YWxpZFByb3RvY29scy5pbmNsdWRlcyhwYXJzZWQucHJvdG9jb2wucmVwbGFjZSgnOicsICcnKSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdpbnZhbGlkIHByb3RvY29sJyk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIC8vIFRPRE86IGFkZCBlcnJvciBsb2dnZXIgaGVyZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIb3N0KHVybDogc3RyaW5nID0gJycsIG9wdGlvbnMgPSB7fSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsaWRhdG9yLmlzVVJMKHVybCwge1xuICAgIHJlcXVpcmVfaG9zdDogdHJ1ZSxcbiAgICBhbGxvd190cmFpbGluZ19kb3Q6IGZhbHNlLFxuICAgIHJlcXVpcmVfdmFsaWRfcHJvdG9jb2w6IGZhbHNlLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXF1aXJlX3BvcnQ6IGZhbHNlLFxuICAgIHJlcXVpcmVfdGxkOiBmYWxzZSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0xvZ2luKGNvbmZpZzogQ29uZmlnKSB7XG4gIC8vIEZJWE1FOiB0eXBlcyBhcmUgbm90IHlldCBvbiB0aGUgbGlicmFyeSB2ZXJkYWNjaW8vbW9ub3JlcG9cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gXy5pc05pbChjb25maWc/LndlYj8ubG9naW4pIHx8IGNvbmZpZz8ud2ViPy5sb2dpbiA9PT0gdHJ1ZTtcbn1cblxuZXhwb3J0IHsgYnVpbGRUb2tlblV0aWwgYXMgYnVpbGRUb2tlbiwgcGFyc2VD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "verdaccio",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.24.0",
|
|
4
4
|
"description": "A lightweight private npm proxy registry",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Verdaccio Maintainers",
|
|
@@ -19,17 +19,17 @@
|
|
|
19
19
|
"url": "https://opencollective.com/verdaccio"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@verdaccio/config": "6.0.0-6-next.
|
|
23
|
-
"@verdaccio/core": "6.0.0-6-next.
|
|
24
|
-
"@verdaccio/local-storage": "10.3.
|
|
25
|
-
"@verdaccio/logger-7": "6.0.0-6-next.
|
|
26
|
-
"@verdaccio/middleware": "6.0.0-6-next.
|
|
22
|
+
"@verdaccio/config": "6.0.0-6-next.68",
|
|
23
|
+
"@verdaccio/core": "6.0.0-6-next.68",
|
|
24
|
+
"@verdaccio/local-storage": "10.3.3",
|
|
25
|
+
"@verdaccio/logger-7": "6.0.0-6-next.13",
|
|
26
|
+
"@verdaccio/middleware": "6.0.0-6-next.47",
|
|
27
27
|
"@verdaccio/signature": "6.0.0-6-next.2",
|
|
28
|
-
"@verdaccio/streams": "10.2.
|
|
29
|
-
"@verdaccio/tarball": "11.0.0-6-next.
|
|
30
|
-
"@verdaccio/ui-theme": "6.0.0-6-next.
|
|
31
|
-
"@verdaccio/url": "11.0.0-6-next.
|
|
32
|
-
"@verdaccio/utils": "6.0.0-6-next.
|
|
28
|
+
"@verdaccio/streams": "10.2.1",
|
|
29
|
+
"@verdaccio/tarball": "11.0.0-6-next.37",
|
|
30
|
+
"@verdaccio/ui-theme": "6.0.0-6-next.68",
|
|
31
|
+
"@verdaccio/url": "11.0.0-6-next.34",
|
|
32
|
+
"@verdaccio/utils": "6.0.0-6-next.36",
|
|
33
33
|
"JSONStream": "1.3.5",
|
|
34
34
|
"async": "3.2.4",
|
|
35
35
|
"body-parser": "1.20.2",
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
"mv": "2.1.1",
|
|
55
55
|
"pkginfo": "0.4.1",
|
|
56
56
|
"request": "2.88.2",
|
|
57
|
-
"semver": "7.
|
|
57
|
+
"semver": "7.5.0",
|
|
58
58
|
"validator": "13.9.0",
|
|
59
|
-
"verdaccio-audit": "11.0.0-6-next.
|
|
60
|
-
"verdaccio-htpasswd": "
|
|
59
|
+
"verdaccio-audit": "11.0.0-6-next.31",
|
|
60
|
+
"verdaccio-htpasswd": "11.0.0-6-next.38"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@babel/cli": "7.21.0",
|
|
64
|
-
"@babel/core": "7.21.
|
|
64
|
+
"@babel/core": "7.21.4",
|
|
65
65
|
"@babel/node": "7.20.7",
|
|
66
66
|
"@babel/plugin-proposal-class-properties": "7.18.6",
|
|
67
67
|
"@babel/plugin-proposal-decorators": "7.21.0",
|
|
@@ -77,10 +77,10 @@
|
|
|
77
77
|
"@babel/plugin-syntax-import-meta": "7.10.4",
|
|
78
78
|
"@babel/plugin-transform-async-to-generator": "7.20.7",
|
|
79
79
|
"@babel/plugin-transform-classes": "7.21.0",
|
|
80
|
-
"@babel/plugin-transform-runtime": "7.21.
|
|
80
|
+
"@babel/plugin-transform-runtime": "7.21.4",
|
|
81
81
|
"@babel/polyfill": "^7.12.1",
|
|
82
|
-
"@babel/preset-env": "7.
|
|
83
|
-
"@babel/preset-typescript": "7.21.
|
|
82
|
+
"@babel/preset-env": "7.21.4",
|
|
83
|
+
"@babel/preset-typescript": "7.21.4",
|
|
84
84
|
"@babel/register": "7.21.0",
|
|
85
85
|
"@babel/runtime": "7.21.0",
|
|
86
86
|
"@octokit/rest": "19.0.7",
|
|
@@ -97,16 +97,16 @@
|
|
|
97
97
|
"@types/pino": "7.0.5",
|
|
98
98
|
"@types/request": "2.48.8",
|
|
99
99
|
"@types/semver": "7.3.13",
|
|
100
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
101
|
-
"@typescript-eslint/parser": "5.
|
|
100
|
+
"@typescript-eslint/eslint-plugin": "5.59.0",
|
|
101
|
+
"@typescript-eslint/parser": "5.59.0",
|
|
102
102
|
"@verdaccio-scope/verdaccio-auth-foo": "0.0.2",
|
|
103
103
|
"@verdaccio/types": "11.0.0-6-next.25",
|
|
104
104
|
"babel-eslint": "10.1.0",
|
|
105
|
-
"babel-jest": "29.
|
|
105
|
+
"babel-jest": "29.5.0",
|
|
106
106
|
"babel-plugin-dynamic-import-node": "2.3.3",
|
|
107
107
|
"cross-env": "7.0.3",
|
|
108
108
|
"detect-secrets": "1.0.6",
|
|
109
|
-
"eslint": "8.
|
|
109
|
+
"eslint": "8.39.0",
|
|
110
110
|
"eslint-config-google": "0.14.0",
|
|
111
111
|
"eslint-config-prettier": "8.6.0",
|
|
112
112
|
"eslint-plugin-babel": "5.3.1",
|
|
@@ -117,23 +117,23 @@
|
|
|
117
117
|
"eslint-plugin-verdaccio": "10.0.0",
|
|
118
118
|
"fs-extra": "10.1.0",
|
|
119
119
|
"get-port": "5.1.1",
|
|
120
|
-
"jest": "29.
|
|
121
|
-
"jest-config": "29.
|
|
122
|
-
"jest-environment-node": "29.
|
|
120
|
+
"jest": "29.5.0",
|
|
121
|
+
"jest-config": "29.5.0",
|
|
122
|
+
"jest-environment-node": "29.5.0",
|
|
123
123
|
"jest-junit": "15.0.0",
|
|
124
|
-
"lockfile-lint": "4.
|
|
124
|
+
"lockfile-lint": "4.10.1",
|
|
125
125
|
"nock": "12.0.3",
|
|
126
|
-
"node-mocks-http": "^1.12.
|
|
126
|
+
"node-mocks-http": "^1.12.2",
|
|
127
127
|
"pinst": "2.1.6",
|
|
128
|
-
"prettier": "2.8.
|
|
128
|
+
"prettier": "2.8.7",
|
|
129
129
|
"rimraf": "3.0.2",
|
|
130
130
|
"selfsigned": "2.1.1",
|
|
131
131
|
"standard-version": "9.5.0",
|
|
132
132
|
"supertest": "6.3.3",
|
|
133
133
|
"ts-node": "10.9.1",
|
|
134
134
|
"typescript": "4.9.5",
|
|
135
|
-
"verdaccio-auth-memory": "10.2.
|
|
136
|
-
"verdaccio-memory": "10.3.
|
|
135
|
+
"verdaccio-auth-memory": "10.2.2",
|
|
136
|
+
"verdaccio-memory": "10.3.2"
|
|
137
137
|
},
|
|
138
138
|
"keywords": [
|
|
139
139
|
"private",
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
"url": "https://opencollective.com/verdaccio",
|
|
187
187
|
"logo": "https://opencollective.com/verdaccio/logo.txt"
|
|
188
188
|
},
|
|
189
|
-
"packageManager": "yarn@3.
|
|
189
|
+
"packageManager": "yarn@3.5.0",
|
|
190
190
|
"dependenciesMeta": {
|
|
191
191
|
"@verdaccio/types@11.0.0-6-next.24": {
|
|
192
192
|
"unplugged": true
|