parse-server 8.0.0-alpha.8 → 8.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Adapters/AdapterLoader.js +2 -2
- package/lib/Adapters/Auth/index.js +2 -2
- package/lib/Adapters/Auth/mfa.js +4 -6
- package/lib/Adapters/PubSub/RedisPubSub.js +9 -12
- package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +15 -18
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +19 -21
- package/lib/Adapters/Storage/Mongo/MongoTransform.js +8 -8
- package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +20 -15
- package/lib/Auth.js +8 -12
- package/lib/Config.js +2 -3
- package/lib/Controllers/DatabaseController.js +35 -31
- package/lib/Controllers/ParseGraphQLController.js +44 -57
- package/lib/Controllers/SchemaController.js +12 -12
- package/lib/Controllers/UserController.js +7 -13
- package/lib/Controllers/index.js +8 -9
- package/lib/GraphQL/loaders/defaultGraphQLTypes.js +8 -9
- package/lib/GraphQL/loaders/defaultRelaySchema.js +5 -9
- package/lib/GraphQL/loaders/filesMutations.js +4 -7
- package/lib/GraphQL/loaders/functionsMutations.js +3 -7
- package/lib/GraphQL/loaders/parseClassMutations.js +18 -17
- package/lib/GraphQL/loaders/parseClassTypes.js +62 -52
- package/lib/GraphQL/loaders/schemaDirectives.js +3 -5
- package/lib/GraphQL/loaders/usersMutations.js +4 -8
- package/lib/GraphQL/transformers/mutation.js +6 -9
- package/lib/GraphQL/transformers/query.js +18 -18
- package/lib/GraphQL/transformers/schemaFields.js +10 -12
- package/lib/LiveQuery/ParseLiveQueryServer.js +7 -9
- package/lib/LiveQuery/QueryTools.js +2 -3
- package/lib/ParseServer.js +14 -17
- package/lib/ParseServerRESTController.js +4 -8
- package/lib/RestWrite.js +5 -9
- package/lib/Routers/ClassesRouter.js +2 -3
- package/lib/Routers/FeaturesRouter.js +2 -3
- package/lib/Routers/FilesRouter.js +3 -5
- package/lib/Routers/SchemasRouter.js +2 -3
- package/lib/Routers/UsersRouter.js +15 -16
- package/lib/SchemaMigrations/DefinedSchemas.js +4 -7
- package/lib/StatusHandler.js +10 -9
- package/lib/Utils.js +5 -8
- package/lib/cloud-code/Parse.Cloud.js +22 -22
- package/lib/logger.js +1 -1
- package/lib/middlewares.js +7 -12
- package/lib/triggers.js +12 -12
- package/package.json +11 -4
- package/types/index.d.ts +0 -0
- package/types/logger.d.ts +2 -0
- package/types/tsconfig.json +18 -0
|
@@ -55,7 +55,7 @@ function loadAdapter(adapter, defaultAdapter, options) {
|
|
|
55
55
|
}
|
|
56
56
|
async function loadModule(modulePath) {
|
|
57
57
|
const module = await import(modulePath);
|
|
58
|
-
return
|
|
58
|
+
return module?.default || module;
|
|
59
59
|
}
|
|
60
60
|
var _default = exports.default = loadAdapter;
|
|
61
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2FkQWRhcHRlciIsImFkYXB0ZXIiLCJkZWZhdWx0QWRhcHRlciIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJlIiwibmFtZSIsIkFkYXB0ZXIiLCJyZXF1aXJlIiwiZGVmYXVsdCIsIm1vZHVsZSIsImNsYXNzIiwibG9hZE1vZHVsZSIsIm1vZHVsZVBhdGgiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvQWRhcHRlcnMvQWRhcHRlckxvYWRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgQWRhcHRlckxvYWRlclxuICovXG4vKipcbiAqIEBzdGF0aWNcbiAqIEF0dGVtcHQgdG8gbG9hZCBhbiBhZGFwdGVyIG9yIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0LlxuICogQHBhcmFtIHtBZGFwdGVyfSBhZGFwdGVyIGFuIGFkYXB0ZXJcbiAqIEBwYXJhbSB7QWRhcHRlcn0gZGVmYXVsdEFkYXB0ZXIgdGhlIGRlZmF1bHQgYWRhcHRlciB0byBsb2FkXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9ucyBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnRzdHJ1Y3RvclxuICogQHJldHVybnMge09iamVjdH0gdGhlIGxvYWRlZCBhZGFwdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQWRhcHRlcjxUPihhZGFwdGVyLCBkZWZhdWx0QWRhcHRlciwgb3B0aW9ucyk6IFQge1xuICBpZiAoIWFkYXB0ZXIpIHtcbiAgICBpZiAoIWRlZmF1bHRBZGFwdGVyKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gTG9hZCBmcm9tIHRoZSBkZWZhdWx0IGFkYXB0ZXIgd2hlbiBubyBhZGFwdGVyIGlzIHNldFxuICAgIHJldHVybiBsb2FkQWRhcHRlcihkZWZhdWx0QWRhcHRlciwgdW5kZWZpbmVkLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgYWRhcHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYWRhcHRlcihvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5uYW1lID09PSAnVHlwZUVycm9yJykge1xuICAgICAgICB2YXIgQWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgICAgIHJldHVybiBuZXcgQWRhcHRlcihvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBhZGFwdGVyID09PSAnc3RyaW5nJykge1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoYWRhcHRlcik7XG4gICAgLy8gSWYgaXQncyBkZWZpbmUgYXMgYSBtb2R1bGUsIGdldCB0aGUgZGVmYXVsdFxuICAgIGlmIChhZGFwdGVyLmRlZmF1bHQpIHtcbiAgICAgIGFkYXB0ZXIgPSBhZGFwdGVyLmRlZmF1bHQ7XG4gICAgfVxuICAgIHJldHVybiBsb2FkQWRhcHRlcihhZGFwdGVyLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGFkYXB0ZXIubW9kdWxlKSB7XG4gICAgcmV0dXJuIGxvYWRBZGFwdGVyKGFkYXB0ZXIubW9kdWxlLCB1bmRlZmluZWQsIGFkYXB0ZXIub3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoYWRhcHRlci5jbGFzcykge1xuICAgIHJldHVybiBsb2FkQWRhcHRlcihhZGFwdGVyLmNsYXNzLCB1bmRlZmluZWQsIGFkYXB0ZXIub3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoYWRhcHRlci5hZGFwdGVyKSB7XG4gICAgcmV0dXJuIGxvYWRBZGFwdGVyKGFkYXB0ZXIuYWRhcHRlciwgdW5kZWZpbmVkLCBhZGFwdGVyLm9wdGlvbnMpO1xuICB9XG4gIC8vIHJldHVybiB0aGUgYWRhcHRlciBhcyBwcm92aWRlZFxuICByZXR1cm4gYWRhcHRlcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGUobW9kdWxlUGF0aCkge1xuICBjb25zdCBtb2R1bGUgPSBhd2FpdCBpbXBvcnQobW9kdWxlUGF0aCk7XG4gIHJldHVybiBtb2R1bGU/
|
|
61
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2FkQWRhcHRlciIsImFkYXB0ZXIiLCJkZWZhdWx0QWRhcHRlciIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJlIiwibmFtZSIsIkFkYXB0ZXIiLCJyZXF1aXJlIiwiZGVmYXVsdCIsIm1vZHVsZSIsImNsYXNzIiwibG9hZE1vZHVsZSIsIm1vZHVsZVBhdGgiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvQWRhcHRlcnMvQWRhcHRlckxvYWRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgQWRhcHRlckxvYWRlclxuICovXG4vKipcbiAqIEBzdGF0aWNcbiAqIEF0dGVtcHQgdG8gbG9hZCBhbiBhZGFwdGVyIG9yIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0LlxuICogQHBhcmFtIHtBZGFwdGVyfSBhZGFwdGVyIGFuIGFkYXB0ZXJcbiAqIEBwYXJhbSB7QWRhcHRlcn0gZGVmYXVsdEFkYXB0ZXIgdGhlIGRlZmF1bHQgYWRhcHRlciB0byBsb2FkXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9ucyBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnRzdHJ1Y3RvclxuICogQHJldHVybnMge09iamVjdH0gdGhlIGxvYWRlZCBhZGFwdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQWRhcHRlcjxUPihhZGFwdGVyLCBkZWZhdWx0QWRhcHRlciwgb3B0aW9ucyk6IFQge1xuICBpZiAoIWFkYXB0ZXIpIHtcbiAgICBpZiAoIWRlZmF1bHRBZGFwdGVyKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gTG9hZCBmcm9tIHRoZSBkZWZhdWx0IGFkYXB0ZXIgd2hlbiBubyBhZGFwdGVyIGlzIHNldFxuICAgIHJldHVybiBsb2FkQWRhcHRlcihkZWZhdWx0QWRhcHRlciwgdW5kZWZpbmVkLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgYWRhcHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYWRhcHRlcihvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5uYW1lID09PSAnVHlwZUVycm9yJykge1xuICAgICAgICB2YXIgQWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgICAgIHJldHVybiBuZXcgQWRhcHRlcihvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBhZGFwdGVyID09PSAnc3RyaW5nJykge1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoYWRhcHRlcik7XG4gICAgLy8gSWYgaXQncyBkZWZpbmUgYXMgYSBtb2R1bGUsIGdldCB0aGUgZGVmYXVsdFxuICAgIGlmIChhZGFwdGVyLmRlZmF1bHQpIHtcbiAgICAgIGFkYXB0ZXIgPSBhZGFwdGVyLmRlZmF1bHQ7XG4gICAgfVxuICAgIHJldHVybiBsb2FkQWRhcHRlcihhZGFwdGVyLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGFkYXB0ZXIubW9kdWxlKSB7XG4gICAgcmV0dXJuIGxvYWRBZGFwdGVyKGFkYXB0ZXIubW9kdWxlLCB1bmRlZmluZWQsIGFkYXB0ZXIub3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoYWRhcHRlci5jbGFzcykge1xuICAgIHJldHVybiBsb2FkQWRhcHRlcihhZGFwdGVyLmNsYXNzLCB1bmRlZmluZWQsIGFkYXB0ZXIub3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoYWRhcHRlci5hZGFwdGVyKSB7XG4gICAgcmV0dXJuIGxvYWRBZGFwdGVyKGFkYXB0ZXIuYWRhcHRlciwgdW5kZWZpbmVkLCBhZGFwdGVyLm9wdGlvbnMpO1xuICB9XG4gIC8vIHJldHVybiB0aGUgYWRhcHRlciBhcyBwcm92aWRlZFxuICByZXR1cm4gYWRhcHRlcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGUobW9kdWxlUGF0aCkge1xuICBjb25zdCBtb2R1bGUgPSBhd2FpdCBpbXBvcnQobW9kdWxlUGF0aCk7XG4gIHJldHVybiBtb2R1bGU/LmRlZmF1bHQgfHwgbW9kdWxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBsb2FkQWRhcHRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0EsV0FBV0EsQ0FBSUMsT0FBTyxFQUFFQyxjQUFjLEVBQUVDLE9BQU8sRUFBSztFQUNsRSxJQUFJLENBQUNGLE9BQU8sRUFBRTtJQUNaLElBQUksQ0FBQ0MsY0FBYyxFQUFFO01BQ25CLE9BQU9DLE9BQU87SUFDaEI7SUFDQTtJQUNBLE9BQU9ILFdBQVcsQ0FBQ0UsY0FBYyxFQUFFRSxTQUFTLEVBQUVELE9BQU8sQ0FBQztFQUN4RCxDQUFDLE1BQU0sSUFBSSxPQUFPRixPQUFPLEtBQUssVUFBVSxFQUFFO0lBQ3hDLElBQUk7TUFDRixPQUFPQSxPQUFPLENBQUNFLE9BQU8sQ0FBQztJQUN6QixDQUFDLENBQUMsT0FBT0UsQ0FBQyxFQUFFO01BQ1YsSUFBSUEsQ0FBQyxDQUFDQyxJQUFJLEtBQUssV0FBVyxFQUFFO1FBQzFCLElBQUlDLE9BQU8sR0FBR04sT0FBTztRQUNyQixPQUFPLElBQUlNLE9BQU8sQ0FBQ0osT0FBTyxDQUFDO01BQzdCLENBQUMsTUFBTTtRQUNMLE1BQU1FLENBQUM7TUFDVDtJQUNGO0VBQ0YsQ0FBQyxNQUFNLElBQUksT0FBT0osT0FBTyxLQUFLLFFBQVEsRUFBRTtJQUN0QztJQUNBQSxPQUFPLEdBQUdPLE9BQU8sQ0FBQ1AsT0FBTyxDQUFDO0lBQzFCO0lBQ0EsSUFBSUEsT0FBTyxDQUFDUSxPQUFPLEVBQUU7TUFDbkJSLE9BQU8sR0FBR0EsT0FBTyxDQUFDUSxPQUFPO0lBQzNCO0lBQ0EsT0FBT1QsV0FBVyxDQUFDQyxPQUFPLEVBQUVHLFNBQVMsRUFBRUQsT0FBTyxDQUFDO0VBQ2pELENBQUMsTUFBTSxJQUFJRixPQUFPLENBQUNTLE1BQU0sRUFBRTtJQUN6QixPQUFPVixXQUFXLENBQUNDLE9BQU8sQ0FBQ1MsTUFBTSxFQUFFTixTQUFTLEVBQUVILE9BQU8sQ0FBQ0UsT0FBTyxDQUFDO0VBQ2hFLENBQUMsTUFBTSxJQUFJRixPQUFPLENBQUNVLEtBQUssRUFBRTtJQUN4QixPQUFPWCxXQUFXLENBQUNDLE9BQU8sQ0FBQ1UsS0FBSyxFQUFFUCxTQUFTLEVBQUVILE9BQU8sQ0FBQ0UsT0FBTyxDQUFDO0VBQy9ELENBQUMsTUFBTSxJQUFJRixPQUFPLENBQUNBLE9BQU8sRUFBRTtJQUMxQixPQUFPRCxXQUFXLENBQUNDLE9BQU8sQ0FBQ0EsT0FBTyxFQUFFRyxTQUFTLEVBQUVILE9BQU8sQ0FBQ0UsT0FBTyxDQUFDO0VBQ2pFO0VBQ0E7RUFDQSxPQUFPRixPQUFPO0FBQ2hCO0FBRU8sZUFBZVcsVUFBVUEsQ0FBQ0MsVUFBVSxFQUFFO0VBQzNDLE1BQU1ILE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQ0csVUFBVSxDQUFDO0VBQ3ZDLE9BQU9ILE1BQU0sRUFBRUQsT0FBTyxJQUFJQyxNQUFNO0FBQ2xDO0FBQUMsSUFBQUksUUFBQSxHQUFBQyxPQUFBLENBQUFOLE9BQUEsR0FFY1QsV0FBVyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -140,7 +140,7 @@ function loadAuthAdapter(provider, authOptions) {
|
|
|
140
140
|
const keys = ['validateAuthData', 'validateAppId', 'validateSetUp', 'validateLogin', 'validateUpdate', 'challenge', 'validateOptions', 'policy', 'afterFind'];
|
|
141
141
|
const defaultAuthAdapter = new _AuthAdapter.default();
|
|
142
142
|
keys.forEach(key => {
|
|
143
|
-
const existing = adapter
|
|
143
|
+
const existing = adapter?.[key];
|
|
144
144
|
if (existing && typeof existing === 'function' && existing.toString() === defaultAuthAdapter[key].toString()) {
|
|
145
145
|
adapter[key] = null;
|
|
146
146
|
}
|
|
@@ -228,4 +228,4 @@ module.exports = function (authOptions = {}, enableAnonymousUsers = true) {
|
|
|
228
228
|
});
|
|
229
229
|
};
|
|
230
230
|
module.exports.loadAuthAdapter = loadAuthAdapter;
|
|
231
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQWRhcHRlckxvYWRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGUiLCJfQXV0aEFkYXB0ZXIiLCJfbWZhIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiYXBwbGUiLCJnY2VudGVyIiwiZ3BnYW1lcyIsImZhY2Vib29rIiwiaW5zdGFncmFtIiwibGlua2VkaW4iLCJtZWV0dXAiLCJnb29nbGUiLCJnaXRodWIiLCJ0d2l0dGVyIiwic3BvdGlmeSIsImRpZ2l0cyIsImphbnJhaW5lbmdhZ2UiLCJqYW5yYWluY2FwdHVyZSIsImxpbmUiLCJ2a29udGFrdGUiLCJxcSIsIndlY2hhdCIsIndlaWJvIiwib2F1dGgyIiwicGhhbnRhdXRoIiwibWljcm9zb2Z0Iiwia2V5Y2xvYWsiLCJsZGFwIiwiYW5vbnltb3VzIiwidmFsaWRhdGVBdXRoRGF0YSIsIlByb21pc2UiLCJyZXNvbHZlIiwidmFsaWRhdGVBcHBJZCIsInByb3ZpZGVycyIsIm1mYSIsImF1dGhBZGFwdGVyUG9saWNpZXMiLCJzb2xvIiwiYWRkaXRpb25hbCIsImF1dGhEYXRhVmFsaWRhdG9yIiwicHJvdmlkZXIiLCJhZGFwdGVyIiwiYXBwSWRzIiwib3B0aW9ucyIsImF1dGhEYXRhIiwicmVxIiwidXNlciIsInJlcXVlc3RPYmplY3QiLCJwb2xpY3kiLCJQYXJzZSIsIkVycm9yIiwiT1RIRVJfQ0FVU0UiLCJ2YWxpZGF0ZVNldFVwIiwidmFsaWRhdGVMb2dpbiIsInZhbGlkYXRlVXBkYXRlIiwiaXNMb2dnZWRJbiIsImF1dGgiLCJpZCIsImlzTWFzdGVyIiwiaGFzQXV0aERhdGFDb25maWd1cmVkIiwiZ2V0IiwibWV0aG9kIiwidmFsaWRhdG9yIiwibG9hZEF1dGhBZGFwdGVyIiwiYXV0aE9wdGlvbnMiLCJkZWZhdWx0QWRhcHRlciIsInByb3ZpZGVyT3B0aW9ucyIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIkF1dGhBZGFwdGVyIiwiYXNzaWduIiwia2V5cyIsImRlZmF1bHRBdXRoQWRhcHRlciIsImZvckVhY2giLCJrZXkiLCJleGlzdGluZyIsInRvU3RyaW5nIiwidW5kZWZpbmVkIiwib3B0aW9uYWxBZGFwdGVyIiwibG9hZEFkYXB0ZXIiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJtb2R1bGUiLCJleHBvcnRzIiwiZW5hYmxlQW5vbnltb3VzVXNlcnMiLCJfZW5hYmxlQW5vbnltb3VzVXNlcnMiLCJzZXRFbmFibGVBbm9ueW1vdXNVc2VycyIsImVuYWJsZSIsImdldFZhbGlkYXRvckZvclByb3ZpZGVyIiwiYXV0aEFkYXB0ZXIiLCJydW5BZnRlckZpbmQiLCJhZGFwdGVycyIsImFsbCIsIm1hcCIsImFmdGVyRmluZCIsImlwIiwiY29uZmlnIiwibWFzdGVyIiwicmVzdWx0IiwiZnJlZXplIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvYWRBZGFwdGVyIGZyb20gJy4uL0FkYXB0ZXJMb2FkZXInO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IEF1dGhBZGFwdGVyIGZyb20gJy4vQXV0aEFkYXB0ZXInO1xuXG5jb25zdCBhcHBsZSA9IHJlcXVpcmUoJy4vYXBwbGUnKTtcbmNvbnN0IGdjZW50ZXIgPSByZXF1aXJlKCcuL2djZW50ZXInKTtcbmNvbnN0IGdwZ2FtZXMgPSByZXF1aXJlKCcuL2dwZ2FtZXMnKTtcbmNvbnN0IGZhY2Vib29rID0gcmVxdWlyZSgnLi9mYWNlYm9vaycpO1xuY29uc3QgaW5zdGFncmFtID0gcmVxdWlyZSgnLi9pbnN0YWdyYW0nKTtcbmNvbnN0IGxpbmtlZGluID0gcmVxdWlyZSgnLi9saW5rZWRpbicpO1xuY29uc3QgbWVldHVwID0gcmVxdWlyZSgnLi9tZWV0dXAnKTtcbmltcG9ydCBtZmEgZnJvbSAnLi9tZmEnO1xuY29uc3QgZ29vZ2xlID0gcmVxdWlyZSgnLi9nb29nbGUnKTtcbmNvbnN0IGdpdGh1YiA9IHJlcXVpcmUoJy4vZ2l0aHViJyk7XG5jb25zdCB0d2l0dGVyID0gcmVxdWlyZSgnLi90d2l0dGVyJyk7XG5jb25zdCBzcG90aWZ5ID0gcmVxdWlyZSgnLi9zcG90aWZ5Jyk7XG5jb25zdCBkaWdpdHMgPSByZXF1aXJlKCcuL3R3aXR0ZXInKTsgLy8gZGlnaXRzIHRva2VucyBhcmUgdmFsaWRhdGVkIGJ5IHR3aXR0ZXJcbmNvbnN0IGphbnJhaW5lbmdhZ2UgPSByZXF1aXJlKCcuL2phbnJhaW5lbmdhZ2UnKTtcbmNvbnN0IGphbnJhaW5jYXB0dXJlID0gcmVxdWlyZSgnLi9qYW5yYWluY2FwdHVyZScpO1xuY29uc3QgbGluZSA9IHJlcXVpcmUoJy4vbGluZScpO1xuY29uc3QgdmtvbnRha3RlID0gcmVxdWlyZSgnLi92a29udGFrdGUnKTtcbmNvbnN0IHFxID0gcmVxdWlyZSgnLi9xcScpO1xuY29uc3Qgd2VjaGF0ID0gcmVxdWlyZSgnLi93ZWNoYXQnKTtcbmNvbnN0IHdlaWJvID0gcmVxdWlyZSgnLi93ZWlibycpO1xuY29uc3Qgb2F1dGgyID0gcmVxdWlyZSgnLi9vYXV0aDInKTtcbmNvbnN0IHBoYW50YXV0aCA9IHJlcXVpcmUoJy4vcGhhbnRhdXRoJyk7XG5jb25zdCBtaWNyb3NvZnQgPSByZXF1aXJlKCcuL21pY3Jvc29mdCcpO1xuY29uc3Qga2V5Y2xvYWsgPSByZXF1aXJlKCcuL2tleWNsb2FrJyk7XG5jb25zdCBsZGFwID0gcmVxdWlyZSgnLi9sZGFwJyk7XG5cbmNvbnN0IGFub255bW91cyA9IHtcbiAgdmFsaWRhdGVBdXRoRGF0YTogKCkgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbiAgdmFsaWRhdGVBcHBJZDogKCkgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbn07XG5cbmNvbnN0IHByb3ZpZGVycyA9IHtcbiAgYXBwbGUsXG4gIGdjZW50ZXIsXG4gIGdwZ2FtZXMsXG4gIGZhY2Vib29rLFxuICBpbnN0YWdyYW0sXG4gIGxpbmtlZGluLFxuICBtZWV0dXAsXG4gIG1mYSxcbiAgZ29vZ2xlLFxuICBnaXRodWIsXG4gIHR3aXR0ZXIsXG4gIHNwb3RpZnksXG4gIGFub255bW91cyxcbiAgZGlnaXRzLFxuICBqYW5yYWluZW5nYWdlLFxuICBqYW5yYWluY2FwdHVyZSxcbiAgbGluZSxcbiAgdmtvbnRha3RlLFxuICBxcSxcbiAgd2VjaGF0LFxuICB3ZWlibyxcbiAgcGhhbnRhdXRoLFxuICBtaWNyb3NvZnQsXG4gIGtleWNsb2FrLFxuICBsZGFwLFxufTtcblxuLy8gSW5kZXhlZCBhdXRoIHBvbGljaWVzXG5jb25zdCBhdXRoQWRhcHRlclBvbGljaWVzID0ge1xuICBkZWZhdWx0OiB0cnVlLFxuICBzb2xvOiB0cnVlLFxuICBhZGRpdGlvbmFsOiB0cnVlLFxufTtcblxuZnVuY3Rpb24gYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgb3B0aW9ucykge1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKGF1dGhEYXRhLCByZXEsIHVzZXIsIHJlcXVlc3RPYmplY3QpIHtcbiAgICBpZiAoYXBwSWRzICYmIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlQXBwSWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShhZGFwdGVyLnZhbGlkYXRlQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCkpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBhZGFwdGVyLnBvbGljeSAmJlxuICAgICAgIWF1dGhBZGFwdGVyUG9saWNpZXNbYWRhcHRlci5wb2xpY3ldICYmXG4gICAgICB0eXBlb2YgYWRhcHRlci5wb2xpY3kgIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuT1RIRVJfQ0FVU0UsXG4gICAgICAgICdBdXRoQWRhcHRlciBwb2xpY3kgaXMgbm90IGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBUaGUgdmFsdWUgbXVzdCBiZSBlaXRoZXIgXCJzb2xvXCIsIFwiYWRkaXRpb25hbFwiLCBcImRlZmF1bHRcIiBvciB1bmRlZmluZWQgKHdpbGwgYmUgaGFuZGxlZCBhcyBcImRlZmF1bHRcIiknXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGFkYXB0ZXIudmFsaWRhdGVBdXRoRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGFkYXB0ZXIudmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAgIT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlTG9naW4gIT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlVXBkYXRlICE9PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgICAgICAnQWRhcHRlciBpcyBub3QgY29uZmlndXJlZC4gSW1wbGVtZW50IGVpdGhlciB2YWxpZGF0ZUF1dGhEYXRhIG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nOiB2YWxpZGF0ZVNldFVwLCB2YWxpZGF0ZUxvZ2luIGFuZCB2YWxpZGF0ZVVwZGF0ZSdcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIFdoZW4gbWFzdGVyS2V5IGlzIGRldGVjdGVkLCB3ZSBzaG91bGQgdHJpZ2dlciBhIGxvZ2dlZCBpbiB1c2VyXG4gICAgY29uc3QgaXNMb2dnZWRJbiA9XG4gICAgICAocmVxLmF1dGgudXNlciAmJiB1c2VyICYmIHJlcS5hdXRoLnVzZXIuaWQgPT09IHVzZXIuaWQpIHx8ICh1c2VyICYmIHJlcS5hdXRoLmlzTWFzdGVyKTtcbiAgICBsZXQgaGFzQXV0aERhdGFDb25maWd1cmVkID0gZmFsc2U7XG5cbiAgICBpZiAodXNlciAmJiB1c2VyLmdldCgnYXV0aERhdGEnKSAmJiB1c2VyLmdldCgnYXV0aERhdGEnKVtwcm92aWRlcl0pIHtcbiAgICAgIGhhc0F1dGhEYXRhQ29uZmlndXJlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGlzTG9nZ2VkSW4pIHtcbiAgICAgIC8vIFVzZXIgaXMgdXBkYXRpbmcgdGhlaXIgYXV0aERhdGFcbiAgICAgIGlmIChoYXNBdXRoRGF0YUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXRob2Q6ICd2YWxpZGF0ZVVwZGF0ZScsXG4gICAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlVXBkYXRlKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIFNldCB1cCBpZiB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHRoZSBwcm92aWRlciBjb25maWd1cmVkXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRob2Q6ICd2YWxpZGF0ZVNldFVwJyxcbiAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAoYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3RPYmplY3QpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBOb3QgbG9nZ2VkIGluIGFuZCBhdXRoRGF0YSBpcyBjb25maWd1cmVkIG9uIHRoZSB1c2VyXG4gICAgaWYgKGhhc0F1dGhEYXRhQ29uZmlndXJlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0aG9kOiAndmFsaWRhdGVMb2dpbicsXG4gICAgICAgIHZhbGlkYXRvcjogKCkgPT4gYWRhcHRlci52YWxpZGF0ZUxvZ2luKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVXNlciBub3QgbG9nZ2VkIGluIGFuZCB0aGUgcHJvdmlkZXIgaXMgbm90IHNldCB1cCwgZm9yIGV4YW1wbGUgd2hlbiBhIG5ldyB1c2VyXG4gICAgLy8gc2lnbnMgdXAgb3IgYW4gZXhpc3RpbmcgdXNlciB1c2VzIGEgbmV3IGF1dGggcHJvdmlkZXJcbiAgICByZXR1cm4ge1xuICAgICAgbWV0aG9kOiAndmFsaWRhdGVTZXRVcCcsXG4gICAgICB2YWxpZGF0b3I6ICgpID0+IGFkYXB0ZXIudmFsaWRhdGVTZXRVcChhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCksXG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbG9hZEF1dGhBZGFwdGVyKHByb3ZpZGVyLCBhdXRoT3B0aW9ucykge1xuICAvLyBwcm92aWRlcnMgYXJlIGF1dGggcHJvdmlkZXJzIGltcGxlbWVudGVkIGJ5IGRlZmF1bHRcbiAgbGV0IGRlZmF1bHRBZGFwdGVyID0gcHJvdmlkZXJzW3Byb3ZpZGVyXTtcbiAgLy8gYXV0aE9wdGlvbnMgY2FuIGNvbnRhaW4gY29tcGxldGUgY3VzdG9tIGF1dGggYWRhcHRlcnMgb3JcbiAgLy8gYSBkZWZhdWx0IGF1dGggYWRhcHRlciBsaWtlIEZhY2Vib29rXG4gIGNvbnN0IHByb3ZpZGVyT3B0aW9ucyA9IGF1dGhPcHRpb25zW3Byb3ZpZGVyXTtcbiAgaWYgKFxuICAgIHByb3ZpZGVyT3B0aW9ucyAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm92aWRlck9wdGlvbnMsICdvYXV0aDInKSAmJlxuICAgIHByb3ZpZGVyT3B0aW9uc1snb2F1dGgyJ10gPT09IHRydWVcbiAgKSB7XG4gICAgZGVmYXVsdEFkYXB0ZXIgPSBvYXV0aDI7XG4gIH1cblxuICAvLyBEZWZhdWx0IHByb3ZpZGVyIG5vdCBmb3VuZCBhbmQgYSBjdXN0b20gYXV0aCBwcm92aWRlciB3YXMgbm90IHByb3ZpZGVkXG4gIGlmICghZGVmYXVsdEFkYXB0ZXIgJiYgIXByb3ZpZGVyT3B0aW9ucykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkYXB0ZXIgPVxuICAgIGRlZmF1bHRBZGFwdGVyIGluc3RhbmNlb2YgQXV0aEFkYXB0ZXIgPyBkZWZhdWx0QWRhcHRlciA6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRBZGFwdGVyKTtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICAndmFsaWRhdGVBdXRoRGF0YScsXG4gICAgJ3ZhbGlkYXRlQXBwSWQnLFxuICAgICd2YWxpZGF0ZVNldFVwJyxcbiAgICAndmFsaWRhdGVMb2dpbicsXG4gICAgJ3ZhbGlkYXRlVXBkYXRlJyxcbiAgICAnY2hhbGxlbmdlJyxcbiAgICAndmFsaWRhdGVPcHRpb25zJyxcbiAgICAncG9saWN5JyxcbiAgICAnYWZ0ZXJGaW5kJyxcbiAgXTtcbiAgY29uc3QgZGVmYXVsdEF1dGhBZGFwdGVyID0gbmV3IEF1dGhBZGFwdGVyKCk7XG4gIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYWRhcHRlcj8uW2tleV07XG4gICAgaWYgKFxuICAgICAgZXhpc3RpbmcgJiZcbiAgICAgIHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgZXhpc3RpbmcudG9TdHJpbmcoKSA9PT0gZGVmYXVsdEF1dGhBZGFwdGVyW2tleV0udG9TdHJpbmcoKVxuICAgICkge1xuICAgICAgYWRhcHRlcltrZXldID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBhcHBJZHMgPSBwcm92aWRlck9wdGlvbnMgPyBwcm92aWRlck9wdGlvbnMuYXBwSWRzIDogdW5kZWZpbmVkO1xuXG4gIC8vIFRyeSB0aGUgY29uZmlndXJhdGlvbiBtZXRob2RzXG4gIGlmIChwcm92aWRlck9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRpb25hbEFkYXB0ZXIgPSBsb2FkQWRhcHRlcihwcm92aWRlck9wdGlvbnMsIHVuZGVmaW5lZCwgcHJvdmlkZXJPcHRpb25zKTtcbiAgICBpZiAob3B0aW9uYWxBZGFwdGVyKSB7XG4gICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbmFsQWRhcHRlcltrZXldKSB7XG4gICAgICAgICAgYWRhcHRlcltrZXldID0gb3B0aW9uYWxBZGFwdGVyW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBpZiAoYWRhcHRlci52YWxpZGF0ZU9wdGlvbnMpIHtcbiAgICBhZGFwdGVyLnZhbGlkYXRlT3B0aW9ucyhwcm92aWRlck9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHsgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXV0aE9wdGlvbnMgPSB7fSwgZW5hYmxlQW5vbnltb3VzVXNlcnMgPSB0cnVlKSB7XG4gIGxldCBfZW5hYmxlQW5vbnltb3VzVXNlcnMgPSBlbmFibGVBbm9ueW1vdXNVc2VycztcbiAgY29uc3Qgc2V0RW5hYmxlQW5vbnltb3VzVXNlcnMgPSBmdW5jdGlvbiAoZW5hYmxlKSB7XG4gICAgX2VuYWJsZUFub255bW91c1VzZXJzID0gZW5hYmxlO1xuICB9O1xuICAvLyBUbyBoYW5kbGUgdGhlIHRlc3QgY2FzZXMgb24gY29uZmlndXJhdGlvblxuICBjb25zdCBnZXRWYWxpZGF0b3JGb3JQcm92aWRlciA9IGZ1bmN0aW9uIChwcm92aWRlcikge1xuICAgIGlmIChwcm92aWRlciA9PT0gJ2Fub255bW91cycgJiYgIV9lbmFibGVBbm9ueW1vdXNVc2Vycykge1xuICAgICAgcmV0dXJuIHsgdmFsaWRhdG9yOiB1bmRlZmluZWQgfTtcbiAgICB9XG4gICAgY29uc3QgYXV0aEFkYXB0ZXIgPSBsb2FkQXV0aEFkYXB0ZXIocHJvdmlkZXIsIGF1dGhPcHRpb25zKTtcbiAgICBpZiAoIWF1dGhBZGFwdGVyKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHsgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMgfSA9IGF1dGhBZGFwdGVyO1xuICAgIHJldHVybiB7IHZhbGlkYXRvcjogYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgcHJvdmlkZXJPcHRpb25zKSwgYWRhcHRlciB9O1xuICB9O1xuXG4gIGNvbnN0IHJ1bkFmdGVyRmluZCA9IGFzeW5jIChyZXEsIGF1dGhEYXRhKSA9PiB7XG4gICAgaWYgKCFhdXRoRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhZGFwdGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGFkYXB0ZXJzLm1hcChhc3luYyBwcm92aWRlciA9PiB7XG4gICAgICAgIGNvbnN0IGF1dGhBZGFwdGVyID0gZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgICBpZiAoIWF1dGhBZGFwdGVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgYWRhcHRlciwgcHJvdmlkZXJPcHRpb25zIH0gPSBhdXRoQWRhcHRlcjtcbiAgICAgICAgY29uc3QgYWZ0ZXJGaW5kID0gYWRhcHRlci5hZnRlckZpbmQ7XG4gICAgICAgIGlmIChhZnRlckZpbmQgJiYgdHlwZW9mIGFmdGVyRmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RPYmplY3QgPSB7XG4gICAgICAgICAgICBpcDogcmVxLmNvbmZpZy5pcCxcbiAgICAgICAgICAgIHVzZXI6IHJlcS5hdXRoLnVzZXIsXG4gICAgICAgICAgICBtYXN0ZXI6IHJlcS5hdXRoLmlzTWFzdGVyLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYWZ0ZXJGaW5kLmNhbGwoXG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgcmVxdWVzdE9iamVjdCxcbiAgICAgICAgICAgIGF1dGhEYXRhW3Byb3ZpZGVyXSxcbiAgICAgICAgICAgIHByb3ZpZGVyT3B0aW9uc1xuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgYXV0aERhdGFbcHJvdmlkZXJdID0gcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKHtcbiAgICBnZXRWYWxpZGF0b3JGb3JQcm92aWRlcixcbiAgICBzZXRFbmFibGVBbm9ueW1vdXNVc2VycyxcbiAgICBydW5BZnRlckZpbmQsXG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMubG9hZEF1dGhBZGFwdGVyID0gbG9hZEF1dGhBZGFwdGVyO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQVNBLElBQUFHLElBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUF3QixTQUFBRCx1QkFBQUssQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVB4QixNQUFNRyxLQUFLLEdBQUdQLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDaEMsTUFBTVEsT0FBTyxHQUFHUixPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ3BDLE1BQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNwQyxNQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDdEMsTUFBTVcsU0FBUyxHQUFHWCxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3hDLE1BQU1ZLFFBQVEsR0FBR1osT0FBTyxDQUFDLFlBQVksQ0FBQztBQUN0QyxNQUFNYSxNQUFNLEdBQUdiLE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFFbEMsTUFBTWMsTUFBTSxHQUFHZCxPQUFPLENB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
|
|
231
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQWRhcHRlckxvYWRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGUiLCJfQXV0aEFkYXB0ZXIiLCJfbWZhIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiYXBwbGUiLCJnY2VudGVyIiwiZ3BnYW1lcyIsImZhY2Vib29rIiwiaW5zdGFncmFtIiwibGlua2VkaW4iLCJtZWV0dXAiLCJnb29nbGUiLCJnaXRodWIiLCJ0d2l0dGVyIiwic3BvdGlmeSIsImRpZ2l0cyIsImphbnJhaW5lbmdhZ2UiLCJqYW5yYWluY2FwdHVyZSIsImxpbmUiLCJ2a29udGFrdGUiLCJxcSIsIndlY2hhdCIsIndlaWJvIiwib2F1dGgyIiwicGhhbnRhdXRoIiwibWljcm9zb2Z0Iiwia2V5Y2xvYWsiLCJsZGFwIiwiYW5vbnltb3VzIiwidmFsaWRhdGVBdXRoRGF0YSIsIlByb21pc2UiLCJyZXNvbHZlIiwidmFsaWRhdGVBcHBJZCIsInByb3ZpZGVycyIsIm1mYSIsImF1dGhBZGFwdGVyUG9saWNpZXMiLCJzb2xvIiwiYWRkaXRpb25hbCIsImF1dGhEYXRhVmFsaWRhdG9yIiwicHJvdmlkZXIiLCJhZGFwdGVyIiwiYXBwSWRzIiwib3B0aW9ucyIsImF1dGhEYXRhIiwicmVxIiwidXNlciIsInJlcXVlc3RPYmplY3QiLCJwb2xpY3kiLCJQYXJzZSIsIkVycm9yIiwiT1RIRVJfQ0FVU0UiLCJ2YWxpZGF0ZVNldFVwIiwidmFsaWRhdGVMb2dpbiIsInZhbGlkYXRlVXBkYXRlIiwiaXNMb2dnZWRJbiIsImF1dGgiLCJpZCIsImlzTWFzdGVyIiwiaGFzQXV0aERhdGFDb25maWd1cmVkIiwiZ2V0IiwibWV0aG9kIiwidmFsaWRhdG9yIiwibG9hZEF1dGhBZGFwdGVyIiwiYXV0aE9wdGlvbnMiLCJkZWZhdWx0QWRhcHRlciIsInByb3ZpZGVyT3B0aW9ucyIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIkF1dGhBZGFwdGVyIiwiYXNzaWduIiwia2V5cyIsImRlZmF1bHRBdXRoQWRhcHRlciIsImZvckVhY2giLCJrZXkiLCJleGlzdGluZyIsInRvU3RyaW5nIiwidW5kZWZpbmVkIiwib3B0aW9uYWxBZGFwdGVyIiwibG9hZEFkYXB0ZXIiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJtb2R1bGUiLCJleHBvcnRzIiwiZW5hYmxlQW5vbnltb3VzVXNlcnMiLCJfZW5hYmxlQW5vbnltb3VzVXNlcnMiLCJzZXRFbmFibGVBbm9ueW1vdXNVc2VycyIsImVuYWJsZSIsImdldFZhbGlkYXRvckZvclByb3ZpZGVyIiwiYXV0aEFkYXB0ZXIiLCJydW5BZnRlckZpbmQiLCJhZGFwdGVycyIsImFsbCIsIm1hcCIsImFmdGVyRmluZCIsImlwIiwiY29uZmlnIiwibWFzdGVyIiwicmVzdWx0IiwiZnJlZXplIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvYWRBZGFwdGVyIGZyb20gJy4uL0FkYXB0ZXJMb2FkZXInO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IEF1dGhBZGFwdGVyIGZyb20gJy4vQXV0aEFkYXB0ZXInO1xuXG5jb25zdCBhcHBsZSA9IHJlcXVpcmUoJy4vYXBwbGUnKTtcbmNvbnN0IGdjZW50ZXIgPSByZXF1aXJlKCcuL2djZW50ZXInKTtcbmNvbnN0IGdwZ2FtZXMgPSByZXF1aXJlKCcuL2dwZ2FtZXMnKTtcbmNvbnN0IGZhY2Vib29rID0gcmVxdWlyZSgnLi9mYWNlYm9vaycpO1xuY29uc3QgaW5zdGFncmFtID0gcmVxdWlyZSgnLi9pbnN0YWdyYW0nKTtcbmNvbnN0IGxpbmtlZGluID0gcmVxdWlyZSgnLi9saW5rZWRpbicpO1xuY29uc3QgbWVldHVwID0gcmVxdWlyZSgnLi9tZWV0dXAnKTtcbmltcG9ydCBtZmEgZnJvbSAnLi9tZmEnO1xuY29uc3QgZ29vZ2xlID0gcmVxdWlyZSgnLi9nb29nbGUnKTtcbmNvbnN0IGdpdGh1YiA9IHJlcXVpcmUoJy4vZ2l0aHViJyk7XG5jb25zdCB0d2l0dGVyID0gcmVxdWlyZSgnLi90d2l0dGVyJyk7XG5jb25zdCBzcG90aWZ5ID0gcmVxdWlyZSgnLi9zcG90aWZ5Jyk7XG5jb25zdCBkaWdpdHMgPSByZXF1aXJlKCcuL3R3aXR0ZXInKTsgLy8gZGlnaXRzIHRva2VucyBhcmUgdmFsaWRhdGVkIGJ5IHR3aXR0ZXJcbmNvbnN0IGphbnJhaW5lbmdhZ2UgPSByZXF1aXJlKCcuL2phbnJhaW5lbmdhZ2UnKTtcbmNvbnN0IGphbnJhaW5jYXB0dXJlID0gcmVxdWlyZSgnLi9qYW5yYWluY2FwdHVyZScpO1xuY29uc3QgbGluZSA9IHJlcXVpcmUoJy4vbGluZScpO1xuY29uc3QgdmtvbnRha3RlID0gcmVxdWlyZSgnLi92a29udGFrdGUnKTtcbmNvbnN0IHFxID0gcmVxdWlyZSgnLi9xcScpO1xuY29uc3Qgd2VjaGF0ID0gcmVxdWlyZSgnLi93ZWNoYXQnKTtcbmNvbnN0IHdlaWJvID0gcmVxdWlyZSgnLi93ZWlibycpO1xuY29uc3Qgb2F1dGgyID0gcmVxdWlyZSgnLi9vYXV0aDInKTtcbmNvbnN0IHBoYW50YXV0aCA9IHJlcXVpcmUoJy4vcGhhbnRhdXRoJyk7XG5jb25zdCBtaWNyb3NvZnQgPSByZXF1aXJlKCcuL21pY3Jvc29mdCcpO1xuY29uc3Qga2V5Y2xvYWsgPSByZXF1aXJlKCcuL2tleWNsb2FrJyk7XG5jb25zdCBsZGFwID0gcmVxdWlyZSgnLi9sZGFwJyk7XG5cbmNvbnN0IGFub255bW91cyA9IHtcbiAgdmFsaWRhdGVBdXRoRGF0YTogKCkgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbiAgdmFsaWRhdGVBcHBJZDogKCkgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbn07XG5cbmNvbnN0IHByb3ZpZGVycyA9IHtcbiAgYXBwbGUsXG4gIGdjZW50ZXIsXG4gIGdwZ2FtZXMsXG4gIGZhY2Vib29rLFxuICBpbnN0YWdyYW0sXG4gIGxpbmtlZGluLFxuICBtZWV0dXAsXG4gIG1mYSxcbiAgZ29vZ2xlLFxuICBnaXRodWIsXG4gIHR3aXR0ZXIsXG4gIHNwb3RpZnksXG4gIGFub255bW91cyxcbiAgZGlnaXRzLFxuICBqYW5yYWluZW5nYWdlLFxuICBqYW5yYWluY2FwdHVyZSxcbiAgbGluZSxcbiAgdmtvbnRha3RlLFxuICBxcSxcbiAgd2VjaGF0LFxuICB3ZWlibyxcbiAgcGhhbnRhdXRoLFxuICBtaWNyb3NvZnQsXG4gIGtleWNsb2FrLFxuICBsZGFwLFxufTtcblxuLy8gSW5kZXhlZCBhdXRoIHBvbGljaWVzXG5jb25zdCBhdXRoQWRhcHRlclBvbGljaWVzID0ge1xuICBkZWZhdWx0OiB0cnVlLFxuICBzb2xvOiB0cnVlLFxuICBhZGRpdGlvbmFsOiB0cnVlLFxufTtcblxuZnVuY3Rpb24gYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgb3B0aW9ucykge1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKGF1dGhEYXRhLCByZXEsIHVzZXIsIHJlcXVlc3RPYmplY3QpIHtcbiAgICBpZiAoYXBwSWRzICYmIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlQXBwSWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShhZGFwdGVyLnZhbGlkYXRlQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCkpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBhZGFwdGVyLnBvbGljeSAmJlxuICAgICAgIWF1dGhBZGFwdGVyUG9saWNpZXNbYWRhcHRlci5wb2xpY3ldICYmXG4gICAgICB0eXBlb2YgYWRhcHRlci5wb2xpY3kgIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuT1RIRVJfQ0FVU0UsXG4gICAgICAgICdBdXRoQWRhcHRlciBwb2xpY3kgaXMgbm90IGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBUaGUgdmFsdWUgbXVzdCBiZSBlaXRoZXIgXCJzb2xvXCIsIFwiYWRkaXRpb25hbFwiLCBcImRlZmF1bHRcIiBvciB1bmRlZmluZWQgKHdpbGwgYmUgaGFuZGxlZCBhcyBcImRlZmF1bHRcIiknXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGFkYXB0ZXIudmFsaWRhdGVBdXRoRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGFkYXB0ZXIudmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAgIT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlTG9naW4gIT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlVXBkYXRlICE9PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgICAgICAnQWRhcHRlciBpcyBub3QgY29uZmlndXJlZC4gSW1wbGVtZW50IGVpdGhlciB2YWxpZGF0ZUF1dGhEYXRhIG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nOiB2YWxpZGF0ZVNldFVwLCB2YWxpZGF0ZUxvZ2luIGFuZCB2YWxpZGF0ZVVwZGF0ZSdcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIFdoZW4gbWFzdGVyS2V5IGlzIGRldGVjdGVkLCB3ZSBzaG91bGQgdHJpZ2dlciBhIGxvZ2dlZCBpbiB1c2VyXG4gICAgY29uc3QgaXNMb2dnZWRJbiA9XG4gICAgICAocmVxLmF1dGgudXNlciAmJiB1c2VyICYmIHJlcS5hdXRoLnVzZXIuaWQgPT09IHVzZXIuaWQpIHx8ICh1c2VyICYmIHJlcS5hdXRoLmlzTWFzdGVyKTtcbiAgICBsZXQgaGFzQXV0aERhdGFDb25maWd1cmVkID0gZmFsc2U7XG5cbiAgICBpZiAodXNlciAmJiB1c2VyLmdldCgnYXV0aERhdGEnKSAmJiB1c2VyLmdldCgnYXV0aERhdGEnKVtwcm92aWRlcl0pIHtcbiAgICAgIGhhc0F1dGhEYXRhQ29uZmlndXJlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGlzTG9nZ2VkSW4pIHtcbiAgICAgIC8vIFVzZXIgaXMgdXBkYXRpbmcgdGhlaXIgYXV0aERhdGFcbiAgICAgIGlmIChoYXNBdXRoRGF0YUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXRob2Q6ICd2YWxpZGF0ZVVwZGF0ZScsXG4gICAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlVXBkYXRlKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIFNldCB1cCBpZiB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHRoZSBwcm92aWRlciBjb25maWd1cmVkXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRob2Q6ICd2YWxpZGF0ZVNldFVwJyxcbiAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAoYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3RPYmplY3QpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBOb3QgbG9nZ2VkIGluIGFuZCBhdXRoRGF0YSBpcyBjb25maWd1cmVkIG9uIHRoZSB1c2VyXG4gICAgaWYgKGhhc0F1dGhEYXRhQ29uZmlndXJlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0aG9kOiAndmFsaWRhdGVMb2dpbicsXG4gICAgICAgIHZhbGlkYXRvcjogKCkgPT4gYWRhcHRlci52YWxpZGF0ZUxvZ2luKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVXNlciBub3QgbG9nZ2VkIGluIGFuZCB0aGUgcHJvdmlkZXIgaXMgbm90IHNldCB1cCwgZm9yIGV4YW1wbGUgd2hlbiBhIG5ldyB1c2VyXG4gICAgLy8gc2lnbnMgdXAgb3IgYW4gZXhpc3RpbmcgdXNlciB1c2VzIGEgbmV3IGF1dGggcHJvdmlkZXJcbiAgICByZXR1cm4ge1xuICAgICAgbWV0aG9kOiAndmFsaWRhdGVTZXRVcCcsXG4gICAgICB2YWxpZGF0b3I6ICgpID0+IGFkYXB0ZXIudmFsaWRhdGVTZXRVcChhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCksXG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbG9hZEF1dGhBZGFwdGVyKHByb3ZpZGVyLCBhdXRoT3B0aW9ucykge1xuICAvLyBwcm92aWRlcnMgYXJlIGF1dGggcHJvdmlkZXJzIGltcGxlbWVudGVkIGJ5IGRlZmF1bHRcbiAgbGV0IGRlZmF1bHRBZGFwdGVyID0gcHJvdmlkZXJzW3Byb3ZpZGVyXTtcbiAgLy8gYXV0aE9wdGlvbnMgY2FuIGNvbnRhaW4gY29tcGxldGUgY3VzdG9tIGF1dGggYWRhcHRlcnMgb3JcbiAgLy8gYSBkZWZhdWx0IGF1dGggYWRhcHRlciBsaWtlIEZhY2Vib29rXG4gIGNvbnN0IHByb3ZpZGVyT3B0aW9ucyA9IGF1dGhPcHRpb25zW3Byb3ZpZGVyXTtcbiAgaWYgKFxuICAgIHByb3ZpZGVyT3B0aW9ucyAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm92aWRlck9wdGlvbnMsICdvYXV0aDInKSAmJlxuICAgIHByb3ZpZGVyT3B0aW9uc1snb2F1dGgyJ10gPT09IHRydWVcbiAgKSB7XG4gICAgZGVmYXVsdEFkYXB0ZXIgPSBvYXV0aDI7XG4gIH1cblxuICAvLyBEZWZhdWx0IHByb3ZpZGVyIG5vdCBmb3VuZCBhbmQgYSBjdXN0b20gYXV0aCBwcm92aWRlciB3YXMgbm90IHByb3ZpZGVkXG4gIGlmICghZGVmYXVsdEFkYXB0ZXIgJiYgIXByb3ZpZGVyT3B0aW9ucykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkYXB0ZXIgPVxuICAgIGRlZmF1bHRBZGFwdGVyIGluc3RhbmNlb2YgQXV0aEFkYXB0ZXIgPyBkZWZhdWx0QWRhcHRlciA6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRBZGFwdGVyKTtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICAndmFsaWRhdGVBdXRoRGF0YScsXG4gICAgJ3ZhbGlkYXRlQXBwSWQnLFxuICAgICd2YWxpZGF0ZVNldFVwJyxcbiAgICAndmFsaWRhdGVMb2dpbicsXG4gICAgJ3ZhbGlkYXRlVXBkYXRlJyxcbiAgICAnY2hhbGxlbmdlJyxcbiAgICAndmFsaWRhdGVPcHRpb25zJyxcbiAgICAncG9saWN5JyxcbiAgICAnYWZ0ZXJGaW5kJyxcbiAgXTtcbiAgY29uc3QgZGVmYXVsdEF1dGhBZGFwdGVyID0gbmV3IEF1dGhBZGFwdGVyKCk7XG4gIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYWRhcHRlcj8uW2tleV07XG4gICAgaWYgKFxuICAgICAgZXhpc3RpbmcgJiZcbiAgICAgIHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgZXhpc3RpbmcudG9TdHJpbmcoKSA9PT0gZGVmYXVsdEF1dGhBZGFwdGVyW2tleV0udG9TdHJpbmcoKVxuICAgICkge1xuICAgICAgYWRhcHRlcltrZXldID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBhcHBJZHMgPSBwcm92aWRlck9wdGlvbnMgPyBwcm92aWRlck9wdGlvbnMuYXBwSWRzIDogdW5kZWZpbmVkO1xuXG4gIC8vIFRyeSB0aGUgY29uZmlndXJhdGlvbiBtZXRob2RzXG4gIGlmIChwcm92aWRlck9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRpb25hbEFkYXB0ZXIgPSBsb2FkQWRhcHRlcihwcm92aWRlck9wdGlvbnMsIHVuZGVmaW5lZCwgcHJvdmlkZXJPcHRpb25zKTtcbiAgICBpZiAob3B0aW9uYWxBZGFwdGVyKSB7XG4gICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbmFsQWRhcHRlcltrZXldKSB7XG4gICAgICAgICAgYWRhcHRlcltrZXldID0gb3B0aW9uYWxBZGFwdGVyW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBpZiAoYWRhcHRlci52YWxpZGF0ZU9wdGlvbnMpIHtcbiAgICBhZGFwdGVyLnZhbGlkYXRlT3B0aW9ucyhwcm92aWRlck9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHsgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXV0aE9wdGlvbnMgPSB7fSwgZW5hYmxlQW5vbnltb3VzVXNlcnMgPSB0cnVlKSB7XG4gIGxldCBfZW5hYmxlQW5vbnltb3VzVXNlcnMgPSBlbmFibGVBbm9ueW1vdXNVc2VycztcbiAgY29uc3Qgc2V0RW5hYmxlQW5vbnltb3VzVXNlcnMgPSBmdW5jdGlvbiAoZW5hYmxlKSB7XG4gICAgX2VuYWJsZUFub255bW91c1VzZXJzID0gZW5hYmxlO1xuICB9O1xuICAvLyBUbyBoYW5kbGUgdGhlIHRlc3QgY2FzZXMgb24gY29uZmlndXJhdGlvblxuICBjb25zdCBnZXRWYWxpZGF0b3JGb3JQcm92aWRlciA9IGZ1bmN0aW9uIChwcm92aWRlcikge1xuICAgIGlmIChwcm92aWRlciA9PT0gJ2Fub255bW91cycgJiYgIV9lbmFibGVBbm9ueW1vdXNVc2Vycykge1xuICAgICAgcmV0dXJuIHsgdmFsaWRhdG9yOiB1bmRlZmluZWQgfTtcbiAgICB9XG4gICAgY29uc3QgYXV0aEFkYXB0ZXIgPSBsb2FkQXV0aEFkYXB0ZXIocHJvdmlkZXIsIGF1dGhPcHRpb25zKTtcbiAgICBpZiAoIWF1dGhBZGFwdGVyKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHsgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMgfSA9IGF1dGhBZGFwdGVyO1xuICAgIHJldHVybiB7IHZhbGlkYXRvcjogYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgcHJvdmlkZXJPcHRpb25zKSwgYWRhcHRlciB9O1xuICB9O1xuXG4gIGNvbnN0IHJ1bkFmdGVyRmluZCA9IGFzeW5jIChyZXEsIGF1dGhEYXRhKSA9PiB7XG4gICAgaWYgKCFhdXRoRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhZGFwdGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGFkYXB0ZXJzLm1hcChhc3luYyBwcm92aWRlciA9PiB7XG4gICAgICAgIGNvbnN0IGF1dGhBZGFwdGVyID0gZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgICBpZiAoIWF1dGhBZGFwdGVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgYWRhcHRlciwgcHJvdmlkZXJPcHRpb25zIH0gPSBhdXRoQWRhcHRlcjtcbiAgICAgICAgY29uc3QgYWZ0ZXJGaW5kID0gYWRhcHRlci5hZnRlckZpbmQ7XG4gICAgICAgIGlmIChhZnRlckZpbmQgJiYgdHlwZW9mIGFmdGVyRmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RPYmplY3QgPSB7XG4gICAgICAgICAgICBpcDogcmVxLmNvbmZpZy5pcCxcbiAgICAgICAgICAgIHVzZXI6IHJlcS5hdXRoLnVzZXIsXG4gICAgICAgICAgICBtYXN0ZXI6IHJlcS5hdXRoLmlzTWFzdGVyLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYWZ0ZXJGaW5kLmNhbGwoXG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgcmVxdWVzdE9iamVjdCxcbiAgICAgICAgICAgIGF1dGhEYXRhW3Byb3ZpZGVyXSxcbiAgICAgICAgICAgIHByb3ZpZGVyT3B0aW9uc1xuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgYXV0aERhdGFbcHJvdmlkZXJdID0gcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKHtcbiAgICBnZXRWYWxpZGF0b3JGb3JQcm92aWRlcixcbiAgICBzZXRFbmFibGVBbm9ueW1vdXNVc2VycyxcbiAgICBydW5BZnRlckZpbmQsXG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMubG9hZEF1dGhBZGFwdGVyID0gbG9hZEF1dGhBZGFwdGVyO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQVNBLElBQUFHLElBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUF3QixTQUFBRCx1QkFBQUssQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVB4QixNQUFNRyxLQUFLLEdBQUdQLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDaEMsTUFBTVEsT0FBTyxHQUFHUixPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ3BDLE1BQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNwQyxNQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDdEMsTUFBTVcsU0FBUyxHQUFHWCxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3hDLE1BQU1ZLFFBQVEsR0FBR1osT0FBTyxDQUFDLFlBQVksQ0FBQztBQUN0QyxNQUFNYSxNQUFNLEdBQUdiLE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFFbEMsTUFBTWMsTUFBTSxHQUFHZCxPQUFPLENB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
|
package/lib/Adapters/Auth/mfa.js
CHANGED
|
@@ -120,11 +120,10 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
120
120
|
return;
|
|
121
121
|
}
|
|
122
122
|
if (authData.mobile && this.sms) {
|
|
123
|
-
var _req$original$get;
|
|
124
123
|
if (!authData.token) {
|
|
125
124
|
throw 'MFA is already set up on this account';
|
|
126
125
|
}
|
|
127
|
-
return this.confirmSMSOTP(authData,
|
|
126
|
+
return this.confirmSMSOTP(authData, req.original.get('authData')?.mfa || {});
|
|
128
127
|
}
|
|
129
128
|
if (this.totp) {
|
|
130
129
|
await this.validateLogin({
|
|
@@ -153,7 +152,7 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
153
152
|
};
|
|
154
153
|
}
|
|
155
154
|
policy(req, auth) {
|
|
156
|
-
if (this.sms && auth
|
|
155
|
+
if (this.sms && auth?.pending && Object.keys(auth).length === 1) {
|
|
157
156
|
return 'default';
|
|
158
157
|
}
|
|
159
158
|
return 'additional';
|
|
@@ -191,12 +190,11 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
191
190
|
};
|
|
192
191
|
}
|
|
193
192
|
async confirmSMSOTP(inputData, authData) {
|
|
194
|
-
var _authData$pending;
|
|
195
193
|
const {
|
|
196
194
|
mobile,
|
|
197
195
|
token
|
|
198
196
|
} = inputData;
|
|
199
|
-
if (!
|
|
197
|
+
if (!authData.pending?.[mobile]) {
|
|
200
198
|
throw 'This number is not pending';
|
|
201
199
|
}
|
|
202
200
|
const pendingData = authData.pending[mobile];
|
|
@@ -245,4 +243,4 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
245
243
|
}
|
|
246
244
|
}
|
|
247
245
|
var _default = exports.default = new MFAAdapter();
|
|
248
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfb3RwYXV0aCIsInJlcXVpcmUiLCJfY3J5cHRvVXRpbHMiLCJfQXV0aEFkYXB0ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiTUZBQWRhcHRlciIsIkF1dGhBZGFwdGVyIiwidmFsaWRhdGVPcHRpb25zIiwib3B0cyIsInZhbGlkT3B0aW9ucyIsIm9wdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJzbXMiLCJpbmNsdWRlcyIsInRvdHAiLCJkaWdpdHMiLCJwZXJpb2QiLCJzZW5kU01TIiwic21zQ2FsbGJhY2siLCJhbGdvcml0aG0iLCJ2YWxpZGF0ZVNldFVwIiwibWZhRGF0YSIsIm1vYmlsZSIsInNldHVwTW9iaWxlT1RQIiwic2V0dXBUT1RQIiwidmFsaWRhdGVMb2dpbiIsImxvZ2luRGF0YSIsIl8iLCJyZXEiLCJzYXZlUmVzcG9uc2UiLCJkb05vdFNhdmUiLCJ0b2tlbiIsImF1dGgiLCJvcmlnaW5hbCIsImdldCIsInNlY3JldCIsInJlY292ZXJ5Iiwic2F2ZWQiLCJleHBpcnkiLCJtZmEiLCJzZW5kVG9rZW4iLCJvYmplY3QiLCJzZXQiLCJzYXZlIiwidXNlTWFzdGVyS2V5IiwiRGF0ZSIsIlRPVFAiLCJTZWNyZXQiLCJmcm9tQmFzZTMyIiwidmFsaWQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlVXBkYXRlIiwiYXV0aERhdGEiLCJtYXN0ZXIiLCJfcmVxJG9yaWdpbmFsJGdldCIsImNvbmZpcm1TTVNPVFAiLCJvbGQiLCJhZnRlckZpbmQiLCJzdGF0dXMiLCJwb2xpY3kiLCJwZW5kaW5nIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsInRlc3QiLCJyYW5kb21TdHJpbmciLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRUaW1lIiwiaW5wdXREYXRhIiwiX2F1dGhEYXRhJHBlbmRpbmciLCJwZW5kaW5nRGF0YSIsInJlc3BvbnNlIiwiam9pbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL21mYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUT1RQLCBTZWNyZXQgfSBmcm9tICdvdHBhdXRoJztcbmltcG9ydCB7IHJhbmRvbVN0cmluZyB9IGZyb20gJy4uLy4uL2NyeXB0b1V0aWxzJztcbmltcG9ydCBBdXRoQWRhcHRlciBmcm9tICcuL0F1dGhBZGFwdGVyJztcbmNsYXNzIE1GQUFkYXB0ZXIgZXh0ZW5kcyBBdXRoQWRhcHRlciB7XG4gIHZhbGlkYXRlT3B0aW9ucyhvcHRzKSB7XG4gICAgY29uc3QgdmFsaWRPcHRpb25zID0gb3B0cy5vcHRpb25zO1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWxpZE9wdGlvbnMpKSB7XG4gICAgICB0aHJvdyAnbWZhLm9wdGlvbnMgbXVzdCBiZSBhbiBhcnJheSc7XG4gICAgfVxuICAgIHRoaXMuc21zID0gdmFsaWRPcHRpb25zLmluY2x1ZGVzKCdTTVMnKTtcbiAgICB0aGlzLnRvdHAgPSB2YWxpZE9wdGlvbnMuaW5jbHVkZXMoJ1RPVFAnKTtcbiAgICBpZiAoIXRoaXMuc21zICYmICF0aGlzLnRvdHApIHtcbiAgICAgIHRocm93ICdtZmEub3B0aW9ucyBtdXN0IGluY2x1ZGUgU01TIG9yIFRPVFAnO1xuICAgIH1cbiAgICBjb25zdCBkaWdpdHMgPSBvcHRzLmRpZ2l0cyB8fCA2O1xuICAgIGNvbnN0IHBlcmlvZCA9IG9wdHMucGVyaW9kIHx8IDMwO1xuICAgIGlmICh0eXBlb2YgZGlnaXRzICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgJ21mYS5kaWdpdHMgbXVzdCBiZSBhIG51bWJlcic7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcGVyaW9kICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgJ21mYS5wZXJpb2QgbXVzdCBiZSBhIG51bWJlcic7XG4gICAgfVxuICAgIGlmIChkaWdpdHMgPCA0IHx8IGRpZ2l0cyA+IDEwKSB7XG4gICAgICB0aHJvdyAnbWZhLmRpZ2l0cyBtdXN0IGJlIGJldHdlZW4gNCBhbmQgMTAnO1xuICAgIH1cbiAgICBpZiAocGVyaW9kIDwgMTApIHtcbiAgICAgIHRocm93ICdtZmEucGVyaW9kIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEwJztcbiAgICB9XG4gICAgY29uc3Qgc2VuZFNNUyA9IG9wdHMuc2VuZFNNUztcbiAgICBpZiAodGhpcy5zbXMgJiYgdHlwZW9mIHNlbmRTTVMgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93ICdtZmEuc2VuZFNNUyBjYWxsYmFjayBtdXN0IGJlIGRlZmluZWQgd2hlbiB1c2luZyBTTVMgT1RQcyc7XG4gICAgfVxuICAgIHRoaXMuc21zQ2FsbGJhY2sgPSBzZW5kU01TO1xuICAgIHRoaXMuZGlnaXRzID0gZGlnaXRzO1xuICAgIHRoaXMucGVyaW9kID0gcGVyaW9kO1xuICAgIHRoaXMuYWxnb3JpdGhtID0gb3B0cy5hbGdvcml0aG0gfHwgJ1NIQTEnO1xuICB9XG4gIHZhbGlkYXRlU2V0VXAobWZhRGF0YSkge1xuICAgIGlmIChtZmFEYXRhLm1vYmlsZSAmJiB0aGlzLnNtcykge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0dXBNb2JpbGVPVFAobWZhRGF0YS5tb2JpbGUpO1xuICAgIH1cbiAgICBpZiAodGhpcy50b3RwKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXR1cFRPVFAobWZhRGF0YSk7XG4gICAgfVxuICAgIHRocm93ICdJbnZhbGlkIE1GQSBkYXRhJztcbiAgfVxuICBhc3luYyB2YWxpZGF0ZUxvZ2luKGxvZ2luRGF0YSwgXywgcmVxKSB7XG4gICAgY29uc3Qgc2F2ZVJlc3BvbnNlID0ge1xuICAgICAgZG9Ob3RTYXZlOiB0cnVlLFxuICAgIH07XG4gICAgY29uc3QgdG9rZW4gPSBsb2dpbkRhdGEudG9rZW47XG4gICAgY29uc3QgYXV0aCA9IHJlcS5vcmlnaW5hbC5nZXQoJ2F1dGhEYXRhJykgfHwge307XG4gICAgY29uc3QgeyBzZWNyZXQsIHJlY292ZXJ5LCBtb2JpbGUsIHRva2VuOiBzYXZlZCwgZXhwaXJ5IH0gPSBhdXRoLm1mYSB8fCB7fTtcbiAgICBpZiAodGhpcy5zbXMgJiYgbW9iaWxlKSB7XG4gICAgICBpZiAodG9rZW4gPT09ICdyZXF1ZXN0Jykge1xuICAgICAgICBjb25zdCB7IHRva2VuOiBzZW5kVG9rZW4sIGV4cGlyeSB9ID0gYXdhaXQgdGhpcy5zZW5kU01TKG1vYmlsZSk7XG4gICAgICAgIGF1dGgubWZhLnRva2VuID0gc2VuZFRva2VuO1xuICAgICAgICBhdXRoLm1mYS5leHBpcnkgPSBleHBpcnk7XG4gICAgICAgIHJlcS5vYmplY3Quc2V0KCdhdXRoRGF0YScsIGF1dGgpO1xuICAgICAgICBhd2FpdCByZXEub2JqZWN0LnNhdmUobnVsbCwgeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gICAgICAgIHRocm93ICdQbGVhc2UgZW50ZXIgdGhlIHRva2VuJztcbiAgICAgIH1cbiAgICAgIGlmICghc2F2ZWQgfHwgdG9rZW4gIT09IHNhdmVkKSB7XG4gICAgICAgIHRocm93ICdJbnZhbGlkIE1GQSB0b2tlbiAxJztcbiAgICAgIH1cbiAgICAgIGlmIChuZXcgRGF0ZSgpID4gZXhwaXJ5KSB7XG4gICAgICAgIHRocm93ICdJbnZhbGlkIE1GQSB0b2tlbiAyJztcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBhdXRoLm1mYS50b2tlbjtcbiAgICAgIGRlbGV0ZSBhdXRoLm1mYS5leHBpcnk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzYXZlOiBhdXRoLm1mYSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnRvdHApIHtcbiAgICAgIGlmICh0eXBlb2YgdG9rZW4gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93ICdJbnZhbGlkIE1GQSB0b2tlbic7XG4gICAgICB9XG4gICAgICBpZiAoIXNlY3JldCkge1xuICAgICAgICByZXR1cm4gc2F2ZVJlc3BvbnNlO1xuICAgICAgfVxuICAgICAgaWYgKHJlY292ZXJ5WzBdID09PSB0b2tlbiB8fCByZWNvdmVyeVsxXSA9PT0gdG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHNhdmVSZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvdHAgPSBuZXcgVE9UUCh7XG4gICAgICAgIGFsZ29yaXRobTogdGhpcy5hbGdvcml0aG0sXG4gICAgICAgIGRpZ2l0czogdGhpcy5kaWdpdHMsXG4gICAgICAgIHBlcmlvZDogdGhpcy5wZXJpb2QsXG4gICAgICAgIHNlY3JldDogU2VjcmV0LmZyb21CYXNlMzIoc2VjcmV0KSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdmFsaWQgPSB0b3RwLnZhbGlkYXRlKHtcbiAgICAgICAgdG9rZW4sXG4gICAgICB9KTtcbiAgICAgIGlmICh2YWxpZCA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2F2ZVJlc3BvbnNlO1xuICB9XG4gIGFzeW5jIHZhbGlkYXRlVXBkYXRlKGF1dGhEYXRhLCBfLCByZXEpIHtcbiAgICBpZiAocmVxLm1hc3Rlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYXV0aERhdGEubW9iaWxlICYmIHRoaXMuc21zKSB7XG4gICAgICBpZiAoIWF1dGhEYXRhLnRva2VuKSB7XG4gICAgICAgIHRocm93ICdNRkEgaXMgYWxyZWFkeSBzZXQgdXAgb24gdGhpcyBhY2NvdW50JztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmNvbmZpcm1TTVNPVFAoYXV0aERhdGEsIHJlcS5vcmlnaW5hbC5nZXQoJ2F1dGhEYXRhJyk/Lm1mYSB8fCB7fSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRvdHApIHtcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVMb2dpbih7IHRva2VuOiBhdXRoRGF0YS5vbGQgfSwgbnVsbCwgcmVxKTtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU2V0VXAoYXV0aERhdGEpO1xuICAgIH1cbiAgICB0aHJvdyAnSW52YWxpZCBNRkEgZGF0YSc7XG4gIH1cbiAgYWZ0ZXJGaW5kKHJlcSwgYXV0aERhdGEpIHtcbiAgICBpZiAocmVxLm1hc3Rlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy50b3RwICYmIGF1dGhEYXRhLnNlY3JldCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnZW5hYmxlZCcsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy5zbXMgJiYgYXV0aERhdGEubW9iaWxlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6ICdlbmFibGVkJyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6ICdkaXNhYmxlZCcsXG4gICAgfTtcbiAgfVxuXG4gIHBvbGljeShyZXEsIGF1dGgpIHtcbiAgICBpZiAodGhpcy5zbXMgJiYgYXV0aD8ucGVuZGluZyAmJiBPYmplY3Qua2V5cyhhdXRoKS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiAnZGVmYXVsdCc7XG4gICAgfVxuICAgIHJldHVybiAnYWRkaXRpb25hbCc7XG4gIH1cblxuICBhc3luYyBzZXR1cE1vYmlsZU9UUChtb2JpbGUpIHtcbiAgICBjb25zdCB7IHRva2VuLCBleHBpcnkgfSA9IGF3YWl0IHRoaXMuc2VuZFNNUyhtb2JpbGUpO1xuICAgIHJldHVybiB7XG4gICAgICBzYXZlOiB7XG4gICAgICAgIHBlbmRpbmc6IHtcbiAgICAgICAgICBbbW9iaWxlXToge1xuICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICBleHBpcnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRTTVMobW9iaWxlKSB7XG4gICAgaWYgKCEvXlsrXSpbKF17MCwxfVswLTldezEsM31bKV17MCwxfVstXFxzXFwuLzAtOV0qJC9nLnRlc3QobW9iaWxlKSkge1xuICAgICAgdGhyb3cgJ0ludmFsaWQgbW9iaWxlIG51bWJlci4nO1xuICAgIH1cbiAgICBsZXQgdG9rZW4gPSAnJztcbiAgICB3aGlsZSAodG9rZW4ubGVuZ3RoIDwgdGhpcy5kaWdpdHMpIHtcbiAgICAgIHRva2VuICs9IHJhbmRvbVN0cmluZygxMCkucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICB9XG4gICAgdG9rZW4gPSB0b2tlbi5zdWJzdHJpbmcoMCwgdGhpcy5kaWdpdHMpO1xuICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSh0aGlzLnNtc0NhbGxiYWNrKHRva2VuLCBtb2JpbGUpKTtcbiAgICBjb25zdCBleHBpcnkgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHRoaXMucGVyaW9kICogMTAwMCk7XG4gICAgcmV0dXJuIHsgdG9rZW4sIGV4cGlyeSB9O1xuICB9XG5cbiAgYXN5bmMgY29uZmlybVNNU09UUChpbnB1dERhdGEsIGF1dGhEYXRhKSB7XG4gICAgY29uc3QgeyBtb2JpbGUsIHRva2VuIH0gPSBpbnB1dERhdGE7XG4gICAgaWYgKCFhdXRoRGF0YS5wZW5kaW5nPy5bbW9iaWxlXSkge1xuICAgICAgdGhyb3cgJ1RoaXMgbnVtYmVyIGlzIG5vdCBwZW5kaW5nJztcbiAgICB9XG4gICAgY29uc3QgcGVuZGluZ0RhdGEgPSBhdXRoRGF0YS5wZW5kaW5nW21vYmlsZV07XG4gICAgaWYgKHRva2VuICE9PSBwZW5kaW5nRGF0YS50b2tlbikge1xuICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuJztcbiAgICB9XG4gICAgaWYgKG5ldyBEYXRlKCkgPiBwZW5kaW5nRGF0YS5leHBpcnkpIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIE1GQSB0b2tlbic7XG4gICAgfVxuICAgIGRlbGV0ZSBhdXRoRGF0YS5wZW5kaW5nW21vYmlsZV07XG4gICAgYXV0aERhdGEubW9iaWxlID0gbW9iaWxlO1xuICAgIHJldHVybiB7XG4gICAgICBzYXZlOiBhdXRoRGF0YSxcbiAgICB9O1xuICB9XG5cbiAgc2V0dXBUT1RQKG1mYURhdGEpIHtcbiAgICBjb25zdCB7IHNlY3JldCwgdG9rZW4gfSA9IG1mYURhdGE7XG4gICAgaWYgKCFzZWNyZXQgfHwgIXRva2VuIHx8IHNlY3JldC5sZW5ndGggPCAyMCkge1xuICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIGRhdGEnO1xuICAgIH1cbiAgICBjb25zdCB0b3RwID0gbmV3IFRPVFAoe1xuICAgICAgYWxnb3JpdGhtOiB0aGlzLmFsZ29yaXRobSxcbiAgICAgIGRpZ2l0czogdGhpcy5kaWdpdHMsXG4gICAgICBwZXJpb2Q6IHRoaXMucGVyaW9kLFxuICAgICAgc2VjcmV0OiBTZWNyZXQuZnJvbUJhc2UzMihzZWNyZXQpLFxuICAgIH0pO1xuICAgIGNvbnN0IHZhbGlkID0gdG90cC52YWxpZGF0ZSh7XG4gICAgICB0b2tlbixcbiAgICB9KTtcbiAgICBpZiAodmFsaWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIE1GQSB0b2tlbic7XG4gICAgfVxuICAgIGNvbnN0IHJlY292ZXJ5ID0gW3JhbmRvbVN0cmluZygzMCksIHJhbmRvbVN0cmluZygzMCldO1xuICAgIHJldHVybiB7XG4gICAgICByZXNwb25zZTogeyByZWNvdmVyeTogcmVjb3Zlcnkuam9pbignLCAnKSB9LFxuICAgICAgc2F2ZTogeyBzZWNyZXQsIHJlY292ZXJ5IH0sXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgbmV3IE1GQUFkYXB0ZXIoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQXdDLFNBQUFHLHVCQUFBQyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQ3hDLE1BQU1HLFVBQVUsU0FBU0Msb0JBQVcsQ0FBQztFQUNuQ0MsZUFBZUEsQ0FBQ0Ms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
|
|
246
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfb3RwYXV0aCIsInJlcXVpcmUiLCJfY3J5cHRvVXRpbHMiLCJfQXV0aEFkYXB0ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiTUZBQWRhcHRlciIsIkF1dGhBZGFwdGVyIiwidmFsaWRhdGVPcHRpb25zIiwib3B0cyIsInZhbGlkT3B0aW9ucyIsIm9wdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJzbXMiLCJpbmNsdWRlcyIsInRvdHAiLCJkaWdpdHMiLCJwZXJpb2QiLCJzZW5kU01TIiwic21zQ2FsbGJhY2siLCJhbGdvcml0aG0iLCJ2YWxpZGF0ZVNldFVwIiwibWZhRGF0YSIsIm1vYmlsZSIsInNldHVwTW9iaWxlT1RQIiwic2V0dXBUT1RQIiwidmFsaWRhdGVMb2dpbiIsImxvZ2luRGF0YSIsIl8iLCJyZXEiLCJzYXZlUmVzcG9uc2UiLCJkb05vdFNhdmUiLCJ0b2tlbiIsImF1dGgiLCJvcmlnaW5hbCIsImdldCIsInNlY3JldCIsInJlY292ZXJ5Iiwic2F2ZWQiLCJleHBpcnkiLCJtZmEiLCJzZW5kVG9rZW4iLCJvYmplY3QiLCJzZXQiLCJzYXZlIiwidXNlTWFzdGVyS2V5IiwiRGF0ZSIsIlRPVFAiLCJTZWNyZXQiLCJmcm9tQmFzZTMyIiwidmFsaWQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlVXBkYXRlIiwiYXV0aERhdGEiLCJtYXN0ZXIiLCJjb25maXJtU01TT1RQIiwib2xkIiwiYWZ0ZXJGaW5kIiwic3RhdHVzIiwicG9saWN5IiwicGVuZGluZyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJ0ZXN0IiwicmFuZG9tU3RyaW5nIiwicmVwbGFjZSIsInN1YnN0cmluZyIsIlByb21pc2UiLCJyZXNvbHZlIiwiZ2V0VGltZSIsImlucHV0RGF0YSIsInBlbmRpbmdEYXRhIiwicmVzcG9uc2UiLCJqb2luIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvbWZhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRPVFAsIFNlY3JldCB9IGZyb20gJ290cGF1dGgnO1xuaW1wb3J0IHsgcmFuZG9tU3RyaW5nIH0gZnJvbSAnLi4vLi4vY3J5cHRvVXRpbHMnO1xuaW1wb3J0IEF1dGhBZGFwdGVyIGZyb20gJy4vQXV0aEFkYXB0ZXInO1xuY2xhc3MgTUZBQWRhcHRlciBleHRlbmRzIEF1dGhBZGFwdGVyIHtcbiAgdmFsaWRhdGVPcHRpb25zKG9wdHMpIHtcbiAgICBjb25zdCB2YWxpZE9wdGlvbnMgPSBvcHRzLm9wdGlvbnM7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbGlkT3B0aW9ucykpIHtcbiAgICAgIHRocm93ICdtZmEub3B0aW9ucyBtdXN0IGJlIGFuIGFycmF5JztcbiAgICB9XG4gICAgdGhpcy5zbXMgPSB2YWxpZE9wdGlvbnMuaW5jbHVkZXMoJ1NNUycpO1xuICAgIHRoaXMudG90cCA9IHZhbGlkT3B0aW9ucy5pbmNsdWRlcygnVE9UUCcpO1xuICAgIGlmICghdGhpcy5zbXMgJiYgIXRoaXMudG90cCkge1xuICAgICAgdGhyb3cgJ21mYS5vcHRpb25zIG11c3QgaW5jbHVkZSBTTVMgb3IgVE9UUCc7XG4gICAgfVxuICAgIGNvbnN0IGRpZ2l0cyA9IG9wdHMuZGlnaXRzIHx8IDY7XG4gICAgY29uc3QgcGVyaW9kID0gb3B0cy5wZXJpb2QgfHwgMzA7XG4gICAgaWYgKHR5cGVvZiBkaWdpdHMgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyAnbWZhLmRpZ2l0cyBtdXN0IGJlIGEgbnVtYmVyJztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwZXJpb2QgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyAnbWZhLnBlcmlvZCBtdXN0IGJlIGEgbnVtYmVyJztcbiAgICB9XG4gICAgaWYgKGRpZ2l0cyA8IDQgfHwgZGlnaXRzID4gMTApIHtcbiAgICAgIHRocm93ICdtZmEuZGlnaXRzIG11c3QgYmUgYmV0d2VlbiA0IGFuZCAxMCc7XG4gICAgfVxuICAgIGlmIChwZXJpb2QgPCAxMCkge1xuICAgICAgdGhyb3cgJ21mYS5wZXJpb2QgbXVzdCBiZSBncmVhdGVyIHRoYW4gMTAnO1xuICAgIH1cbiAgICBjb25zdCBzZW5kU01TID0gb3B0cy5zZW5kU01TO1xuICAgIGlmICh0aGlzLnNtcyAmJiB0eXBlb2Ygc2VuZFNNUyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgJ21mYS5zZW5kU01TIGNhbGxiYWNrIG11c3QgYmUgZGVmaW5lZCB3aGVuIHVzaW5nIFNNUyBPVFBzJztcbiAgICB9XG4gICAgdGhpcy5zbXNDYWxsYmFjayA9IHNlbmRTTVM7XG4gICAgdGhpcy5kaWdpdHMgPSBkaWdpdHM7XG4gICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XG4gICAgdGhpcy5hbGdvcml0aG0gPSBvcHRzLmFsZ29yaXRobSB8fCAnU0hBMSc7XG4gIH1cbiAgdmFsaWRhdGVTZXRVcChtZmFEYXRhKSB7XG4gICAgaWYgKG1mYURhdGEubW9iaWxlICYmIHRoaXMuc21zKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXR1cE1vYmlsZU9UUChtZmFEYXRhLm1vYmlsZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRvdHApIHtcbiAgICAgIHJldHVybiB0aGlzLnNldHVwVE9UUChtZmFEYXRhKTtcbiAgICB9XG4gICAgdGhyb3cgJ0ludmFsaWQgTUZBIGRhdGEnO1xuICB9XG4gIGFzeW5jIHZhbGlkYXRlTG9naW4obG9naW5EYXRhLCBfLCByZXEpIHtcbiAgICBjb25zdCBzYXZlUmVzcG9uc2UgPSB7XG4gICAgICBkb05vdFNhdmU6IHRydWUsXG4gICAgfTtcbiAgICBjb25zdCB0b2tlbiA9IGxvZ2luRGF0YS50b2tlbjtcbiAgICBjb25zdCBhdXRoID0gcmVxLm9yaWdpbmFsLmdldCgnYXV0aERhdGEnKSB8fCB7fTtcbiAgICBjb25zdCB7IHNlY3JldCwgcmVjb3ZlcnksIG1vYmlsZSwgdG9rZW46IHNhdmVkLCBleHBpcnkgfSA9IGF1dGgubWZhIHx8IHt9O1xuICAgIGlmICh0aGlzLnNtcyAmJiBtb2JpbGUpIHtcbiAgICAgIGlmICh0b2tlbiA9PT0gJ3JlcXVlc3QnKSB7XG4gICAgICAgIGNvbnN0IHsgdG9rZW46IHNlbmRUb2tlbiwgZXhwaXJ5IH0gPSBhd2FpdCB0aGlzLnNlbmRTTVMobW9iaWxlKTtcbiAgICAgICAgYXV0aC5tZmEudG9rZW4gPSBzZW5kVG9rZW47XG4gICAgICAgIGF1dGgubWZhLmV4cGlyeSA9IGV4cGlyeTtcbiAgICAgICAgcmVxLm9iamVjdC5zZXQoJ2F1dGhEYXRhJywgYXV0aCk7XG4gICAgICAgIGF3YWl0IHJlcS5vYmplY3Quc2F2ZShudWxsLCB7IHVzZU1hc3RlcktleTogdHJ1ZSB9KTtcbiAgICAgICAgdGhyb3cgJ1BsZWFzZSBlbnRlciB0aGUgdG9rZW4nO1xuICAgICAgfVxuICAgICAgaWYgKCFzYXZlZCB8fCB0b2tlbiAhPT0gc2F2ZWQpIHtcbiAgICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuIDEnO1xuICAgICAgfVxuICAgICAgaWYgKG5ldyBEYXRlKCkgPiBleHBpcnkpIHtcbiAgICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuIDInO1xuICAgICAgfVxuICAgICAgZGVsZXRlIGF1dGgubWZhLnRva2VuO1xuICAgICAgZGVsZXRlIGF1dGgubWZhLmV4cGlyeTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNhdmU6IGF1dGgubWZhLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG90cCkge1xuICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuJztcbiAgICAgIH1cbiAgICAgIGlmICghc2VjcmV0KSB7XG4gICAgICAgIHJldHVybiBzYXZlUmVzcG9uc2U7XG4gICAgICB9XG4gICAgICBpZiAocmVjb3ZlcnlbMF0gPT09IHRva2VuIHx8IHJlY292ZXJ5WzFdID09PSB0b2tlbikge1xuICAgICAgICByZXR1cm4gc2F2ZVJlc3BvbnNlO1xuICAgICAgfVxuICAgICAgY29uc3QgdG90cCA9IG5ldyBUT1RQKHtcbiAgICAgICAgYWxnb3JpdGhtOiB0aGlzLmFsZ29yaXRobSxcbiAgICAgICAgZGlnaXRzOiB0aGlzLmRpZ2l0cyxcbiAgICAgICAgcGVyaW9kOiB0aGlzLnBlcmlvZCxcbiAgICAgICAgc2VjcmV0OiBTZWNyZXQuZnJvbUJhc2UzMihzZWNyZXQpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB2YWxpZCA9IHRvdHAudmFsaWRhdGUoe1xuICAgICAgICB0b2tlbixcbiAgICAgIH0pO1xuICAgICAgaWYgKHZhbGlkID09PSBudWxsKSB7XG4gICAgICAgIHRocm93ICdJbnZhbGlkIE1GQSB0b2tlbic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzYXZlUmVzcG9uc2U7XG4gIH1cbiAgYXN5bmMgdmFsaWRhdGVVcGRhdGUoYXV0aERhdGEsIF8sIHJlcSkge1xuICAgIGlmIChyZXEubWFzdGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhdXRoRGF0YS5tb2JpbGUgJiYgdGhpcy5zbXMpIHtcbiAgICAgIGlmICghYXV0aERhdGEudG9rZW4pIHtcbiAgICAgICAgdGhyb3cgJ01GQSBpcyBhbHJlYWR5IHNldCB1cCBvbiB0aGlzIGFjY291bnQnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY29uZmlybVNNU09UUChhdXRoRGF0YSwgcmVxLm9yaWdpbmFsLmdldCgnYXV0aERhdGEnKT8ubWZhIHx8IHt9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG90cCkge1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZUxvZ2luKHsgdG9rZW46IGF1dGhEYXRhLm9sZCB9LCBudWxsLCByZXEpO1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVTZXRVcChhdXRoRGF0YSk7XG4gICAgfVxuICAgIHRocm93ICdJbnZhbGlkIE1GQSBkYXRhJztcbiAgfVxuICBhZnRlckZpbmQocmVxLCBhdXRoRGF0YSkge1xuICAgIGlmIChyZXEubWFzdGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnRvdHAgJiYgYXV0aERhdGEuc2VjcmV0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6ICdlbmFibGVkJyxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnNtcyAmJiBhdXRoRGF0YS5tb2JpbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ2VuYWJsZWQnLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogJ2Rpc2FibGVkJyxcbiAgICB9O1xuICB9XG5cbiAgcG9saWN5KHJlcSwgYXV0aCkge1xuICAgIGlmICh0aGlzLnNtcyAmJiBhdXRoPy5wZW5kaW5nICYmIE9iamVjdC5rZXlzKGF1dGgpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuICdkZWZhdWx0JztcbiAgICB9XG4gICAgcmV0dXJuICdhZGRpdGlvbmFsJztcbiAgfVxuXG4gIGFzeW5jIHNldHVwTW9iaWxlT1RQKG1vYmlsZSkge1xuICAgIGNvbnN0IHsgdG9rZW4sIGV4cGlyeSB9ID0gYXdhaXQgdGhpcy5zZW5kU01TKG1vYmlsZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNhdmU6IHtcbiAgICAgICAgcGVuZGluZzoge1xuICAgICAgICAgIFttb2JpbGVdOiB7XG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIGV4cGlyeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc2VuZFNNUyhtb2JpbGUpIHtcbiAgICBpZiAoIS9eWytdKlsoXXswLDF9WzAtOV17MSwzfVspXXswLDF9Wy1cXHNcXC4vMC05XSokL2cudGVzdChtb2JpbGUpKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBtb2JpbGUgbnVtYmVyLic7XG4gICAgfVxuICAgIGxldCB0b2tlbiA9ICcnO1xuICAgIHdoaWxlICh0b2tlbi5sZW5ndGggPCB0aGlzLmRpZ2l0cykge1xuICAgICAgdG9rZW4gKz0gcmFuZG9tU3RyaW5nKDEwKS5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIH1cbiAgICB0b2tlbiA9IHRva2VuLnN1YnN0cmluZygwLCB0aGlzLmRpZ2l0cyk7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuc21zQ2FsbGJhY2sodG9rZW4sIG1vYmlsZSkpO1xuICAgIGNvbnN0IGV4cGlyeSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgdGhpcy5wZXJpb2QgKiAxMDAwKTtcbiAgICByZXR1cm4geyB0b2tlbiwgZXhwaXJ5IH07XG4gIH1cblxuICBhc3luYyBjb25maXJtU01TT1RQKGlucHV0RGF0YSwgYXV0aERhdGEpIHtcbiAgICBjb25zdCB7IG1vYmlsZSwgdG9rZW4gfSA9IGlucHV0RGF0YTtcbiAgICBpZiAoIWF1dGhEYXRhLnBlbmRpbmc/Llttb2JpbGVdKSB7XG4gICAgICB0aHJvdyAnVGhpcyBudW1iZXIgaXMgbm90IHBlbmRpbmcnO1xuICAgIH1cbiAgICBjb25zdCBwZW5kaW5nRGF0YSA9IGF1dGhEYXRhLnBlbmRpbmdbbW9iaWxlXTtcbiAgICBpZiAodG9rZW4gIT09IHBlbmRpbmdEYXRhLnRva2VuKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgIH1cbiAgICBpZiAobmV3IERhdGUoKSA+IHBlbmRpbmdEYXRhLmV4cGlyeSkge1xuICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuJztcbiAgICB9XG4gICAgZGVsZXRlIGF1dGhEYXRhLnBlbmRpbmdbbW9iaWxlXTtcbiAgICBhdXRoRGF0YS5tb2JpbGUgPSBtb2JpbGU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNhdmU6IGF1dGhEYXRhLFxuICAgIH07XG4gIH1cblxuICBzZXR1cFRPVFAobWZhRGF0YSkge1xuICAgIGNvbnN0IHsgc2VjcmV0LCB0b2tlbiB9ID0gbWZhRGF0YTtcbiAgICBpZiAoIXNlY3JldCB8fCAhdG9rZW4gfHwgc2VjcmV0Lmxlbmd0aCA8IDIwKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBNRkEgZGF0YSc7XG4gICAgfVxuICAgIGNvbnN0IHRvdHAgPSBuZXcgVE9UUCh7XG4gICAgICBhbGdvcml0aG06IHRoaXMuYWxnb3JpdGhtLFxuICAgICAgZGlnaXRzOiB0aGlzLmRpZ2l0cyxcbiAgICAgIHBlcmlvZDogdGhpcy5wZXJpb2QsXG4gICAgICBzZWNyZXQ6IFNlY3JldC5mcm9tQmFzZTMyKHNlY3JldCksXG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWQgPSB0b3RwLnZhbGlkYXRlKHtcbiAgICAgIHRva2VuLFxuICAgIH0pO1xuICAgIGlmICh2YWxpZCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuJztcbiAgICB9XG4gICAgY29uc3QgcmVjb3ZlcnkgPSBbcmFuZG9tU3RyaW5nKDMwKSwgcmFuZG9tU3RyaW5nKDMwKV07XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3BvbnNlOiB7IHJlY292ZXJ5OiByZWNvdmVyeS5qb2luKCcsICcpIH0sXG4gICAgICBzYXZlOiB7IHNlY3JldCwgcmVjb3ZlcnkgfSxcbiAgICB9O1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBuZXcgTUZBQWRhcHRlcigpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFBd0MsU0FBQUcsdUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFDeEMsTUFBTUcsVUFBVSxTQUFTQyxvQkFBVyxDQUFDO0VBQ25DQyxlQUFlQSxDQUFDQyxJQUFJLEVBQUU7SUFDcEIsTUFBTUMsWUFBWSxHQUFHRCxJQUFJLENB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
|
|
@@ -5,31 +5,28 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.RedisPubSub = void 0;
|
|
7
7
|
var _redis = require("redis");
|
|
8
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
11
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
12
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
13
8
|
function createPublisher({
|
|
14
9
|
redisURL,
|
|
15
10
|
redisOptions = {}
|
|
16
11
|
}) {
|
|
17
12
|
redisOptions.no_ready_check = true;
|
|
18
|
-
return (0, _redis.createClient)(
|
|
19
|
-
url: redisURL
|
|
20
|
-
|
|
13
|
+
return (0, _redis.createClient)({
|
|
14
|
+
url: redisURL,
|
|
15
|
+
...redisOptions
|
|
16
|
+
});
|
|
21
17
|
}
|
|
22
18
|
function createSubscriber({
|
|
23
19
|
redisURL,
|
|
24
20
|
redisOptions = {}
|
|
25
21
|
}) {
|
|
26
22
|
redisOptions.no_ready_check = true;
|
|
27
|
-
return (0, _redis.createClient)(
|
|
28
|
-
url: redisURL
|
|
29
|
-
|
|
23
|
+
return (0, _redis.createClient)({
|
|
24
|
+
url: redisURL,
|
|
25
|
+
...redisOptions
|
|
26
|
+
});
|
|
30
27
|
}
|
|
31
28
|
const RedisPubSub = exports.RedisPubSub = {
|
|
32
29
|
createPublisher,
|
|
33
30
|
createSubscriber
|
|
34
31
|
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVkaXMiLCJyZXF1aXJlIiwiY3JlYXRlUHVibGlzaGVyIiwicmVkaXNVUkwiLCJyZWRpc09wdGlvbnMiLCJub19yZWFkeV9jaGVjayIsImNyZWF0ZUNsaWVudCIsInVybCIsImNyZWF0ZVN1YnNjcmliZXIiLCJSZWRpc1B1YlN1YiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvUHViU3ViL1JlZGlzUHViU3ViLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUNsaWVudCB9IGZyb20gJ3JlZGlzJztcblxuZnVuY3Rpb24gY3JlYXRlUHVibGlzaGVyKHsgcmVkaXNVUkwsIHJlZGlzT3B0aW9ucyA9IHt9IH0pOiBhbnkge1xuICByZWRpc09wdGlvbnMubm9fcmVhZHlfY2hlY2sgPSB0cnVlO1xuICByZXR1cm4gY3JlYXRlQ2xpZW50KHsgdXJsOiByZWRpc1VSTCwgLi4ucmVkaXNPcHRpb25zIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdWJzY3JpYmVyKHsgcmVkaXNVUkwsIHJlZGlzT3B0aW9ucyA9IHt9IH0pOiBhbnkge1xuICByZWRpc09wdGlvbnMubm9fcmVhZHlfY2hlY2sgPSB0cnVlO1xuICByZXR1cm4gY3JlYXRlQ2xpZW50KHsgdXJsOiByZWRpc1VSTCwgLi4ucmVkaXNPcHRpb25zIH0pO1xufVxuXG5jb25zdCBSZWRpc1B1YlN1YiA9IHtcbiAgY3JlYXRlUHVibGlzaGVyLFxuICBjcmVhdGVTdWJzY3JpYmVyLFxufTtcblxuZXhwb3J0IHsgUmVkaXNQdWJTdWIgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsU0FBU0MsZUFBZUEsQ0FBQztFQUFFQyxRQUFRO0VBQUVDLFlBQVksR0FBRyxDQUFDO0FBQUUsQ0FBQyxFQUFPO0VBQzdEQSxZQUFZLENBQUNDLGNBQWMsR0FBRyxJQUFJO0VBQ2xDLE9BQU8sSUFBQUMsbUJBQVksRUFBQztJQUFFQyxHQUFHLEVBQUVKLFFBQVE7SUFBRSxHQUFHQztFQUFhLENBQUMsQ0FBQztBQUN6RDtBQUVBLFNBQVNJLGdCQUFnQkEsQ0FBQztFQUFFTCxRQUFRO0VBQUVDLFlBQVksR0FBRyxDQUFDO0FBQUUsQ0FBQyxFQUFPO0VBQzlEQSxZQUFZLENBQUNDLGNBQWMsR0FBRyxJQUFJO0VBQ2xDLE9BQU8sSUFBQUMsbUJBQVksRUFBQztJQUFFQyxHQUFHLEVBQUVKLFFBQVE7SUFBRSxHQUFHQztFQUFhLENBQUMsQ0FBQztBQUN6RDtBQUVBLE1BQU1LLFdBQVcsR0FBQUMsT0FBQSxDQUFBRCxXQUFBLEdBQUc7RUFDbEJQLGVBQWU7RUFDZk07QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -6,17 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _MongoCollection = _interopRequireDefault(require("./MongoCollection"));
|
|
8
8
|
var _node = _interopRequireDefault(require("parse/node"));
|
|
9
|
-
const _excluded = ["type", "targetClass"];
|
|
10
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
-
function _objectDestructuringEmpty(t) { if (null == t) throw new TypeError("Cannot destructure " + t); }
|
|
12
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
13
|
-
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
14
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
15
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
18
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
19
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
20
10
|
function mongoFieldToParseSchemaField(type) {
|
|
21
11
|
if (type[0] === '*') {
|
|
22
12
|
return {
|
|
@@ -139,10 +129,15 @@ function mongoSchemaToParseSchema(mongoSchema) {
|
|
|
139
129
|
let indexes = {};
|
|
140
130
|
if (mongoSchema._metadata) {
|
|
141
131
|
if (mongoSchema._metadata.class_permissions) {
|
|
142
|
-
clps =
|
|
132
|
+
clps = {
|
|
133
|
+
...emptyCLPS,
|
|
134
|
+
...mongoSchema._metadata.class_permissions
|
|
135
|
+
};
|
|
143
136
|
}
|
|
144
137
|
if (mongoSchema._metadata.indexes) {
|
|
145
|
-
indexes =
|
|
138
|
+
indexes = {
|
|
139
|
+
...mongoSchema._metadata.indexes
|
|
140
|
+
};
|
|
146
141
|
}
|
|
147
142
|
}
|
|
148
143
|
return {
|
|
@@ -271,10 +266,10 @@ class MongoSchemaCollection {
|
|
|
271
266
|
throw error;
|
|
272
267
|
}).then(() => {
|
|
273
268
|
const {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
269
|
+
type,
|
|
270
|
+
targetClass,
|
|
271
|
+
...fieldOptions
|
|
272
|
+
} = fieldType;
|
|
278
273
|
// We use $exists and $set to avoid overwriting the field type if it
|
|
279
274
|
// already exists. (it could have added inbetween the last query and the update)
|
|
280
275
|
if (fieldOptions && Object.keys(fieldOptions).length > 0) {
|
|
@@ -308,7 +303,9 @@ class MongoSchemaCollection {
|
|
|
308
303
|
});
|
|
309
304
|
}
|
|
310
305
|
async updateFieldOptions(className, fieldName, fieldType) {
|
|
311
|
-
const
|
|
306
|
+
const {
|
|
307
|
+
...fieldOptions
|
|
308
|
+
} = fieldType;
|
|
312
309
|
delete fieldOptions.type;
|
|
313
310
|
delete fieldOptions.targetClass;
|
|
314
311
|
await this.upsertSchema(className, {
|
|
@@ -328,4 +325,4 @@ class MongoSchemaCollection {
|
|
|
328
325
|
MongoSchemaCollection._TESTmongoSchemaToParseSchema = mongoSchemaToParseSchema;
|
|
329
326
|
MongoSchemaCollection.parseFieldTypeToMongoFieldType = parseFieldTypeToMongoFieldType;
|
|
330
327
|
var _default = exports.default = MongoSchemaCollection;
|
|
331
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTW9uZ29Db2xsZWN0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbm9kZSIsIl9leGNsdWRlZCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9vYmplY3REZXN0cnVjdHVyaW5nRW1wdHkiLCJ0IiwiVHlwZUVycm9yIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInIiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIm8iLCJpIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJvd25LZXlzIiwia2V5cyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJtb25nb0ZpZWxkVG9QYXJzZVNjaGVtYUZpZWxkIiwidHlwZSIsInRhcmdldENsYXNzIiwic2xpY2UiLCJzdGFydHNXaXRoIiwibm9uRmllbGRTY2hlbWFLZXlzIiwibW9uZ29TY2hlbWFGaWVsZHNUb1BhcnNlU2NoZW1hRmllbGRzIiwic2NoZW1hIiwiZmllbGROYW1lcyIsImtleSIsInJlc3BvbnNlIiwicmVkdWNlIiwib2JqIiwiZmllbGROYW1lIiwiX21ldGFkYXRhIiwiZmllbGRzX29wdGlvbnMiLCJBQ0wiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJvYmplY3RJZCIsImVtcHR5Q0xQUyIsImZyZWV6ZSIsImZpbmQiLCJjb3VudCIsImdldCIsImNyZWF0ZSIsInVwZGF0ZSIsImRlbGV0ZSIsImFkZEZpZWxkIiwicHJvdGVjdGVkRmllbGRzIiwiZGVmYXVsdENMUFMiLCJtb25nb1NjaGVtYVRvUGFyc2VTY2hlbWEiLCJtb25nb1NjaGVtYSIsImNscHMiLCJpbmRleGVzIiwiY2xhc3NfcGVybWlzc2lvbnMiLCJjbGFzc05hbWUiLCJfaWQiLCJmaWVsZHMiLCJjbGFzc0xldmVsUGVybWlzc2lvbnMiLCJfbW9uZ29TY2hlbWFRdWVyeUZyb21OYW1lUXVlcnkiLCJuYW1lIiwicXVlcnkiLCJvYmplY3QiLCJwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUiLCJNb25nb1NjaGVtYUNvbGxlY3Rpb24iLCJjb25zdHJ1Y3RvciIsImNvbGxlY3Rpb24iLCJfY29sbGVjdGlvbiIsIl9mZXRjaEFsbFNjaGVtYXNGcm9tX1NDSEVNQSIsIl9yYXdGaW5kIiwidGhlbiIsInNjaGVtYXMiLCJtYXAiLCJfZmV0Y2hPbmVTY2hlbWFGcm9tX1NDSEVNQSIsImxpbWl0IiwicmVzdWx0cyIsInVuZGVmaW5lZCIsImZpbmRBbmREZWxldGVTY2hlbWEiLCJfbW9uZ29Db2xsZWN0aW9uIiwiZmluZE9uZUFuZERlbGV0ZSIsImluc2VydFNjaGVtYSIsImluc2VydE9uZSIsImNhdGNoIiwiZXJyb3IiLCJjb2RlIiwiUGFyc2UiLCJFcnJvciIsIkRVUExJQ0FURV9WQUxVRSIsInVwZGF0ZVNjaGVtYSIsInVwZGF0ZU9uZSIsInVwc2VydFNjaGVtYSIsInVwc2VydE9uZSIsImFkZEZpZWxkSWZOb3RFeGlzdHMiLCJmaWVsZFR5cGUiLCJzb21lIiwiZXhpc3RpbmdGaWVsZCIsIklOQ09SUkVDVF9UWVBFIiwiZmllbGRPcHRpb25zIiwiJGV4aXN0cyIsIiRzZXQiLCJ1cGRhdGVGaWVsZE9wdGlvbnMiLCJfVEVTVG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9BZGFwdGVycy9TdG9yYWdlL01vbmdvL01vbmdvU2NoZW1hQ29sbGVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW9uZ29Db2xsZWN0aW9uIGZyb20gJy4vTW9uZ29Db2xsZWN0aW9uJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcblxuZnVuY3Rpb24gbW9uZ29GaWVsZFRvUGFyc2VTY2hlbWFGaWVsZCh0eXBlKSB7XG4gIGlmICh0eXBlWzBdID09PSAnKicpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ1BvaW50ZXInLFxuICAgICAgdGFyZ2V0Q2xhc3M6IHR5cGUuc2xpY2UoMSksXG4gICAgfTtcbiAgfVxuICBpZiAodHlwZS5zdGFydHNXaXRoKCdyZWxhdGlvbjwnKSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnUmVsYXRpb24nLFxuICAgICAgdGFyZ2V0Q2xhc3M6IHR5cGUuc2xpY2UoJ3JlbGF0aW9uPCcubGVuZ3RoLCB0eXBlLmxlbmd0aCAtIDEpLFxuICAgIH07XG4gIH1cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdOdW1iZXInIH07XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdTdHJpbmcnIH07XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4geyB0eXBlOiAnQm9vbGVhbicgfTtcbiAgICBjYXNlICdkYXRlJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdEYXRlJyB9O1xuICAgIGNhc2UgJ21hcCc6XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdPYmplY3QnIH07XG4gICAgY2FzZSAnYXJyYXknOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ0FycmF5JyB9O1xuICAgIGNhc2UgJ2dlb3BvaW50JzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdHZW9Qb2ludCcgfTtcbiAgICBjYXNlICdmaWxlJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdGaWxlJyB9O1xuICAgIGNhc2UgJ2J5dGVzJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdCeXRlcycgfTtcbiAgICBjYXNlICdwb2x5Z29uJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdQb2x5Z29uJyB9O1xuICB9XG59XG5cbmNvbnN0IG5vbkZpZWxkU2NoZW1hS2V5cyA9IFsnX2lkJywgJ19tZXRhZGF0YScsICdfY2xpZW50X3Blcm1pc3Npb25zJ107XG5mdW5jdGlvbiBtb25nb1NjaGVtYUZpZWxkc1RvUGFyc2VTY2hlbWFGaWVsZHMoc2NoZW1hKSB7XG4gIHZhciBmaWVsZE5hbWVzID0gT2JqZWN0LmtleXMoc2NoZW1hKS5maWx0ZXIoa2V5ID0+IG5vbkZpZWxkU2NoZW1hS2V5cy5pbmRleE9mKGtleSkgPT09IC0xKTtcbiAgdmFyIHJlc3BvbnNlID0gZmllbGROYW1lcy5yZWR1Y2UoKG9iaiwgZmllbGROYW1lKSA9PiB7XG4gICAgb2JqW2ZpZWxkTmFtZV0gPSBtb25nb0ZpZWxkVG9QYXJzZVNjaGVtYUZpZWxkKHNjaGVtYVtmaWVsZE5hbWVdKTtcbiAgICBpZiAoXG4gICAgICBzY2hlbWEuX21ldGFkYXRhICYmXG4gICAgICBzY2hlbWEuX21ldGFkYXRhLmZpZWxkc19vcHRpb25zICYmXG4gICAgICBzY2hlbWEuX21ldGFkYXRhLmZpZWxkc19vcHRpb25zW2ZpZWxkTmFtZV1cbiAgICApIHtcbiAgICAgIG9ialtmaWVsZE5hbWVdID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIG9ialtmaWVsZE5hbWVdLFxuICAgICAgICBzY2hlbWEuX21ldGFkYXRhLmZpZWxkc19vcHRpb25zW2ZpZWxkTmFtZV1cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sIHt9KTtcbiAgcmVzcG9uc2UuQUNMID0geyB0eXBlOiAnQUNMJyB9O1xuICByZXNwb25zZS5jcmVhdGVkQXQgPSB7IHR5cGU6ICdEYXRlJyB9O1xuICByZXNwb25zZS51cGRhdGVkQXQgPSB7IHR5cGU6ICdEYXRlJyB9O1xuICByZXNwb25zZS5vYmplY3RJZCA9IHsgdHlwZTogJ1N0cmluZycgfTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG5jb25zdCBlbXB0eUNMUFMgPSBPYmplY3QuZnJlZXplKHtcbiAgZmluZDoge30sXG4gIGNvdW50OiB7fSxcbiAgZ2V0OiB7fSxcbiAgY3JlYXRlOiB7fSxcbiAgdXBkYXRlOiB7fSxcbiAgZGVsZXRlOiB7fSxcbiAgYWRkRmllbGQ6IHt9LFxuICBwcm90ZWN0ZWRGaWVsZHM6IHt9LFxufSk7XG5cbmNvbnN0IGRlZmF1bHRDTFBTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGZpbmQ6IHsgJyonOiB0cnVlIH0sXG4gIGNvdW50OiB7ICcqJzogdHJ1ZSB9LFxuICBnZXQ6IHsgJyonOiB0cnVlIH0sXG4gIGNyZWF0ZTogeyAnKic6IHRydWUgfSxcbiAgdXBkYXRlOiB7ICcqJzogdHJ1ZSB9LFxuICBkZWxldGU6IHsgJyonOiB0cnVlIH0sXG4gIGFkZEZpZWxkOiB7ICcqJzogdHJ1ZSB9LFxuICBwcm90ZWN0ZWRGaWVsZHM6IHsgJyonOiBbXSB9LFxufSk7XG5cbmZ1bmN0aW9uIG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYShtb25nb1NjaGVtYSkge1xuICBsZXQgY2xwcyA9IGRlZmF1bHRDTFBTO1xuICBsZXQgaW5kZXhlcyA9IHt9O1xuICBpZiAobW9uZ29TY2hlbWEuX21ldGFkYXRhKSB7XG4gICAgaWYgKG1vbmdvU2NoZW1hLl9tZXRhZGF0YS5jbGFzc19wZXJtaXNzaW9ucykge1xuICAgICAgY2xwcyA9IHsgLi4uZW1wdHlDTFBTLCAuLi5tb25nb1NjaGVtYS5fbWV0YWRhdGEuY2xhc3NfcGVybWlzc2lvbnMgfTtcbiAgICB9XG4gICAgaWYgKG1vbmdvU2NoZW1hLl9tZXRhZGF0YS5pbmRleGVzKSB7XG4gICAgICBpbmRleGVzID0geyAuLi5tb25nb1NjaGVtYS5fbWV0YWRhdGEuaW5kZXhlcyB9O1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogbW9uZ29TY2hlbWEuX2lkLFxuICAgIGZpZWxkczogbW9uZ29TY2hlbWFGaWVsZHNUb1BhcnNlU2NoZW1hRmllbGRzKG1vbmdvU2NoZW1hKSxcbiAgICBjbGFzc0xldmVsUGVybWlzc2lvbnM6IGNscHMsXG4gICAgaW5kZXhlczogaW5kZXhlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWU6IHN0cmluZywgcXVlcnkpIHtcbiAgY29uc3Qgb2JqZWN0ID0geyBfaWQ6IG5hbWUgfTtcbiAgaWYgKHF1ZXJ5KSB7XG4gICAgT2JqZWN0LmtleXMocXVlcnkpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIG9iamVjdFtrZXldID0gcXVlcnlba2V5XTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG4vLyBSZXR1cm5zIGEgdHlwZSBzdWl0YWJsZSBmb3IgaW5zZXJ0aW5nIGludG8gbW9uZ28gX1NDSEVNQSBjb2xsZWN0aW9uLlxuLy8gRG9lcyBubyB2YWxpZGF0aW9uLiBUaGF0IGlzIGV4cGVjdGVkIHRvIGJlIGRvbmUgaW4gUGFyc2UgU2VydmVyLlxuZnVuY3Rpb24gcGFyc2VGaWVsZFR5cGVUb01vbmdvRmllbGRUeXBlKHsgdHlwZSwgdGFyZ2V0Q2xhc3MgfSkge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdQb2ludGVyJzpcbiAgICAgIHJldHVybiBgKiR7dGFyZ2V0Q2xhc3N9YDtcbiAgICBjYXNlICdSZWxhdGlvbic6XG4gICAgICByZXR1cm4gYHJlbGF0aW9uPCR7dGFyZ2V0Q2xhc3N9PmA7XG4gICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgIGNhc2UgJ0Jvb2xlYW4nOlxuICAgICAgcmV0dXJuICdib29sZWFuJztcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgY2FzZSAnT2JqZWN0JzpcbiAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICBjYXNlICdBcnJheSc6XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICBjYXNlICdHZW9Qb2ludCc6XG4gICAgICByZXR1cm4gJ2dlb3BvaW50JztcbiAgICBjYXNlICdGaWxlJzpcbiAgICAgIHJldHVybiAnZmlsZSc7XG4gICAgY2FzZSAnQnl0ZXMnOlxuICAgICAgcmV0dXJuICdieXRlcyc7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgICByZXR1cm4gJ3BvbHlnb24nO1xuICB9XG59XG5cbmNsYXNzIE1vbmdvU2NoZW1hQ29sbGVjdGlvbiB7XG4gIF9jb2xsZWN0aW9uOiBNb25nb0NvbGxlY3Rpb247XG5cbiAgY29uc3RydWN0b3IoY29sbGVjdGlvbjogTW9uZ29Db2xsZWN0aW9uKSB7XG4gICAgdGhpcy5fY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gIH1cblxuICBfZmV0Y2hBbGxTY2hlbWFzRnJvbV9TQ0hFTUEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb24uX3Jhd0ZpbmQoe30pLnRoZW4oc2NoZW1hcyA9PiBzY2hlbWFzLm1hcChtb25nb1NjaGVtYVRvUGFyc2VTY2hlbWEpKTtcbiAgfVxuXG4gIF9mZXRjaE9uZVNjaGVtYUZyb21fU0NIRU1BKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uXG4gICAgICAuX3Jhd0ZpbmQoX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWUpLCB7IGxpbWl0OiAxIH0pXG4gICAgICAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYShyZXN1bHRzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gQXRvbWljYWxseSBmaW5kIGFuZCBkZWxldGUgYW4gb2JqZWN0IGJhc2VkIG9uIHF1ZXJ5LlxuICBmaW5kQW5kRGVsZXRlU2NoZW1hKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uLl9tb25nb0NvbGxlY3Rpb24uZmluZE9uZUFuZERlbGV0ZShfbW9uZ29TY2hlbWFRdWVyeUZyb21OYW1lUXVlcnkobmFtZSkpO1xuICB9XG5cbiAgaW5zZXJ0U2NoZW1hKHNjaGVtYTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb25cbiAgICAgIC5pbnNlcnRPbmUoc2NoZW1hKVxuICAgICAgLnRoZW4oKCkgPT4gbW9uZ29TY2hlbWFUb1BhcnNlU2NoZW1hKHNjaGVtYSkpXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gMTEwMDApIHtcbiAgICAgICAgICAvL01vbmdvJ3MgZHVwbGljYXRlIGtleSBlcnJvclxuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5EVVBMSUNBVEVfVkFMVUUsICdDbGFzcyBhbHJlYWR5IGV4aXN0cy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVTY2hlbWEobmFtZTogc3RyaW5nLCB1cGRhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbi51cGRhdGVPbmUoX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWUpLCB1cGRhdGUpO1xuICB9XG5cbiAgdXBzZXJ0U2NoZW1hKG5hbWU6IHN0cmluZywgcXVlcnk6IHN0cmluZywgdXBkYXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb24udXBzZXJ0T25lKF9tb25nb1NjaGVtYVF1ZXJ5RnJvbU5hbWVRdWVyeShuYW1lLCBxdWVyeSksIHVwZGF0ZSk7XG4gIH1cblxuICAvLyBBZGQgYSBmaWVsZCB0byB0aGUgc2NoZW1hLiBJZiBkYXRhYmFzZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWVsZFxuICAvLyB0eXBlIChlLmcuIG1vbmdvIGRvZXNuJ3Qgc3VwcG9ydCBtb3JlIHRoYW4gb25lIEdlb1BvaW50IGluIGEgY2xhc3MpIHJlamVjdCB3aXRoIGFuIFwiSW5jb3JyZWN0IFR5cGVcIlxuICAvLyBQYXJzZSBlcnJvciB3aXRoIGEgZGVzY2lwdGl2ZSBtZXNzYWdlLiBJZiB0aGUgZmllbGQgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gbXVzdFxuICAvLyBub3QgbW9kaWZ5IHRoZSBzY2hlbWEsIGFuZCBtdXN0IHJlamVjdCB3aXRoIERVUExJQ0FURV9WQUxVRSBlcnJvci5cbiAgLy8gSWYgdGhpcyBpcyBjYWxsZWQgZm9yIGEgY2xhc3MgdGhhdCBkb2Vzbid0IGV4aXN0LCB0aGlzIGZ1bmN0aW9uIG11c3QgY3JlYXRlIHRoYXQgY2xhc3MuXG5cbiAgLy8gVE9ETzogdGhyb3cgYW4gZXJyb3IgaWYgYW4gdW5zdXBwb3J0ZWQgZmllbGQgdHlwZSBpcyBwYXNzZWQuIERlY2lkaW5nIHdoZXRoZXIgYSB0eXBlIGlzIHN1cHBvcnRlZFxuICAvLyBzaG91bGQgYmUgdGhlIGpvYiBvZiB0aGUgYWRhcHRlci4gU29tZSBhZGFwdGVycyBtYXkgbm90IHN1cHBvcnQgR2VvUG9pbnQgYXQgYWxsLiBPdGhlcnMgbWF5XG4gIC8vIFN1cHBvcnQgYWRkaXRpb25hbCB0eXBlcyB0aGF0IE1vbmdvIGRvZXNuJ3QsIGxpa2UgTW9uZXksIG9yIHNvbWV0aGluZy5cblxuICAvLyBUT0RPOiBkb24ndCBzcGVuZCBhbiBleHRyYSBxdWVyeSBvbiBmaW5kaW5nIHRoZSBzY2hlbWEgaWYgdGhlIHR5cGUgd2UgYXJlIHRyeWluZyB0byBhZGQgaXNuJ3QgYSBHZW9Qb2ludC5cbiAgYWRkRmllbGRJZk5vdEV4aXN0cyhjbGFzc05hbWU6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcsIGZpZWxkVHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZldGNoT25lU2NoZW1hRnJvbV9TQ0hFTUEoY2xhc3NOYW1lKVxuICAgICAgLnRoZW4oXG4gICAgICAgIHNjaGVtYSA9PiB7XG4gICAgICAgICAgLy8gSWYgYSBmaWVsZCB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSBoYW5kbGVkIGVsc2V3aGVyZS5cbiAgICAgICAgICBpZiAoc2NoZW1hLmZpZWxkc1tmaWVsZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVGhlIHNjaGVtYSBleGlzdHMuIENoZWNrIGZvciBleGlzdGluZyBHZW9Qb2ludHMuXG4gICAgICAgICAgaWYgKGZpZWxkVHlwZS50eXBlID09PSAnR2VvUG9pbnQnKSB7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vdCBvdGhlciBnZW9wb2ludCBmaWVsZHNcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc2NoZW1hLmZpZWxkcykuc29tZShcbiAgICAgICAgICAgICAgICBleGlzdGluZ0ZpZWxkID0+IHNjaGVtYS5maWVsZHNbZXhpc3RpbmdGaWVsZF0udHlwZSA9PT0gJ0dlb1BvaW50J1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgICAgIFBhcnNlLkVycm9yLklOQ09SUkVDVF9UWVBFLFxuICAgICAgICAgICAgICAgICdNb25nb0RCIG9ubHkgc3VwcG9ydHMgb25lIEdlb1BvaW50IGZpZWxkIGluIGEgY2xhc3MuJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAvLyBJZiBlcnJvciBpcyB1bmRlZmluZWQsIHRoZSBzY2hlbWEgZG9lc24ndCBleGlzdCwgYW5kIHdlIGNhbiBjcmVhdGUgdGhlIHNjaGVtYSB3aXRoIHRoZSBmaWVsZC5cbiAgICAgICAgICAvLyBJZiBzb21lIG90aGVyIGVycm9yLCByZWplY3Qgd2l0aCBpdC5cbiAgICAgICAgICBpZiAoZXJyb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHR5cGUsIHRhcmdldENsYXNzLCAuLi5maWVsZE9wdGlvbnMgfSA9IGZpZWxkVHlwZTtcbiAgICAgICAgLy8gV2UgdXNlICRleGlzdHMgYW5kICRzZXQgdG8gYXZvaWQgb3ZlcndyaXRpbmcgdGhlIGZpZWxkIHR5cGUgaWYgaXRcbiAgICAgICAgLy8gYWxyZWFkeSBleGlzdHMuIChpdCBjb3VsZCBoYXZlIGFkZGVkIGluYmV0d2VlbiB0aGUgbGFzdCBxdWVyeSBhbmQgdGhlIHVwZGF0ZSlcbiAgICAgICAgaWYgKGZpZWxkT3B0aW9ucyAmJiBPYmplY3Qua2V5cyhmaWVsZE9wdGlvbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy51cHNlcnRTY2hlbWEoXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICB7IFtmaWVsZE5hbWVdOiB7ICRleGlzdHM6IGZhbHNlIH0gfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJHNldDoge1xuICAgICAgICAgICAgICAgIFtmaWVsZE5hbWVdOiBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIFtgX21ldGFkYXRhLmZpZWxkc19vcHRpb25zLiR7ZmllbGROYW1lfWBdOiBmaWVsZE9wdGlvbnMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy51cHNlcnRTY2hlbWEoXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICB7IFtmaWVsZE5hbWVdOiB7ICRleGlzdHM6IGZhbHNlIH0gfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJHNldDoge1xuICAgICAgICAgICAgICAgIFtmaWVsZE5hbWVdOiBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRmllbGRPcHRpb25zKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgZmllbGRUeXBlOiBhbnkpIHtcbiAgICBjb25zdCB7IC4uLmZpZWxkT3B0aW9ucyB9ID0gZmllbGRUeXBlO1xuICAgIGRlbGV0ZSBmaWVsZE9wdGlvbnMudHlwZTtcbiAgICBkZWxldGUgZmllbGRPcHRpb25zLnRhcmdldENsYXNzO1xuXG4gICAgYXdhaXQgdGhpcy51cHNlcnRTY2hlbWEoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICB7IFtmaWVsZE5hbWVdOiB7ICRleGlzdHM6IHRydWUgfSB9LFxuICAgICAge1xuICAgICAgICAkc2V0OiB7XG4gICAgICAgICAgW2BfbWV0YWRhdGEuZmllbGRzX29wdGlvbnMuJHtmaWVsZE5hbWV9YF06IGZpZWxkT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5cbi8vIEV4cG9ydGVkIGZvciB0ZXN0aW5nIHJlYXNvbnMgYW5kIGJlY2F1c2Ugd2UgaGF2ZW4ndCBtb3ZlZCBhbGwgbW9uZ28gc2NoZW1hIGZvcm1hdFxuLy8gcmVsYXRlZCBsb2dpYyBpbnRvIHRoZSBkYXRhYmFzZSBhZGFwdGVyIHlldC5cbk1vbmdvU2NoZW1hQ29sbGVjdGlvbi5fVEVTVG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYSA9IG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYTtcbk1vbmdvU2NoZW1hQ29sbGVjdGlvbi5wYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUgPSBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGU7XG5cbmV4cG9ydCBkZWZhdWx0IE1vbmdvU2NoZW1hQ29sbGVjdGlvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsZ0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUErQixNQUFBRSxTQUFBO0FBQUEsU0FBQUgsdUJBQUFJLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRywwQkFBQUMsQ0FBQSxnQkFBQUEsQ0FBQSxZQUFBQyxTQUFBLHlCQUFBRCxDQUFBO0FBQUEsU0FBQUUsU0FBQSxXQUFBQSxRQUFBLEdBQUFDLE1BQUEsQ0FBQUMsTUFBQSxHQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQUMsSUFBQSxlQUFBQyxDQUFBLGFBQUFWLENBQUEsTUFBQUEsQ0FBQSxHQUFBVyxTQUFBLENBQUFDLE1BQUEsRUFBQVosQ0FBQSxVQUFBSSxDQUFBLEdBQUFPLFNBQUEsQ0FBQVgsQ0FBQSxZQUFB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
|
|
328
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTW9uZ29Db2xsZWN0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbm9kZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm1vbmdvRmllbGRUb1BhcnNlU2NoZW1hRmllbGQiLCJ0eXBlIiwidGFyZ2V0Q2xhc3MiLCJzbGljZSIsInN0YXJ0c1dpdGgiLCJsZW5ndGgiLCJub25GaWVsZFNjaGVtYUtleXMiLCJtb25nb1NjaGVtYUZpZWxkc1RvUGFyc2VTY2hlbWFGaWVsZHMiLCJzY2hlbWEiLCJmaWVsZE5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImtleSIsImluZGV4T2YiLCJyZXNwb25zZSIsInJlZHVjZSIsIm9iaiIsImZpZWxkTmFtZSIsIl9tZXRhZGF0YSIsImZpZWxkc19vcHRpb25zIiwiYXNzaWduIiwiQUNMIiwiY3JlYXRlZEF0IiwidXBkYXRlZEF0Iiwib2JqZWN0SWQiLCJlbXB0eUNMUFMiLCJmcmVlemUiLCJmaW5kIiwiY291bnQiLCJnZXQiLCJjcmVhdGUiLCJ1cGRhdGUiLCJkZWxldGUiLCJhZGRGaWVsZCIsInByb3RlY3RlZEZpZWxkcyIsImRlZmF1bHRDTFBTIiwibW9uZ29TY2hlbWFUb1BhcnNlU2NoZW1hIiwibW9uZ29TY2hlbWEiLCJjbHBzIiwiaW5kZXhlcyIsImNsYXNzX3Blcm1pc3Npb25zIiwiY2xhc3NOYW1lIiwiX2lkIiwiZmllbGRzIiwiY2xhc3NMZXZlbFBlcm1pc3Npb25zIiwiX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5IiwibmFtZSIsInF1ZXJ5Iiwib2JqZWN0IiwiZm9yRWFjaCIsInBhcnNlRmllbGRUeXBlVG9Nb25nb0ZpZWxkVHlwZSIsIk1vbmdvU2NoZW1hQ29sbGVjdGlvbiIsImNvbnN0cnVjdG9yIiwiY29sbGVjdGlvbiIsIl9jb2xsZWN0aW9uIiwiX2ZldGNoQWxsU2NoZW1hc0Zyb21fU0NIRU1BIiwiX3Jhd0ZpbmQiLCJ0aGVuIiwic2NoZW1hcyIsIm1hcCIsIl9mZXRjaE9uZVNjaGVtYUZyb21fU0NIRU1BIiwibGltaXQiLCJyZXN1bHRzIiwidW5kZWZpbmVkIiwiZmluZEFuZERlbGV0ZVNjaGVtYSIsIl9tb25nb0NvbGxlY3Rpb24iLCJmaW5kT25lQW5kRGVsZXRlIiwiaW5zZXJ0U2NoZW1hIiwiaW5zZXJ0T25lIiwiY2F0Y2giLCJlcnJvciIsImNvZGUiLCJQYXJzZSIsIkVycm9yIiwiRFVQTElDQVRFX1ZBTFVFIiwidXBkYXRlU2NoZW1hIiwidXBkYXRlT25lIiwidXBzZXJ0U2NoZW1hIiwidXBzZXJ0T25lIiwiYWRkRmllbGRJZk5vdEV4aXN0cyIsImZpZWxkVHlwZSIsInNvbWUiLCJleGlzdGluZ0ZpZWxkIiwiSU5DT1JSRUNUX1RZUEUiLCJmaWVsZE9wdGlvbnMiLCIkZXhpc3RzIiwiJHNldCIsInVwZGF0ZUZpZWxkT3B0aW9ucyIsIl9URVNUbW9uZ29TY2hlbWFUb1BhcnNlU2NoZW1hIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL1N0b3JhZ2UvTW9uZ28vTW9uZ29TY2hlbWFDb2xsZWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNb25nb0NvbGxlY3Rpb24gZnJvbSAnLi9Nb25nb0NvbGxlY3Rpb24nO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuXG5mdW5jdGlvbiBtb25nb0ZpZWxkVG9QYXJzZVNjaGVtYUZpZWxkKHR5cGUpIHtcbiAgaWYgKHR5cGVbMF0gPT09ICcqJykge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnUG9pbnRlcicsXG4gICAgICB0YXJnZXRDbGFzczogdHlwZS5zbGljZSgxKSxcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlLnN0YXJ0c1dpdGgoJ3JlbGF0aW9uPCcpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdSZWxhdGlvbicsXG4gICAgICB0YXJnZXRDbGFzczogdHlwZS5zbGljZSgncmVsYXRpb248Jy5sZW5ndGgsIHR5cGUubGVuZ3RoIC0gMSksXG4gICAgfTtcbiAgfVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ051bWJlcicgfTtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ1N0cmluZycgfTtcbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdCb29sZWFuJyB9O1xuICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ0RhdGUnIH07XG4gICAgY2FzZSAnbWFwJzpcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ09iamVjdCcgfTtcbiAgICBjYXNlICdhcnJheSc6XG4gICAgICByZXR1cm4geyB0eXBlOiAnQXJyYXknIH07XG4gICAgY2FzZSAnZ2VvcG9pbnQnOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ0dlb1BvaW50JyB9O1xuICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ0ZpbGUnIH07XG4gICAgY2FzZSAnYnl0ZXMnOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ0J5dGVzJyB9O1xuICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ1BvbHlnb24nIH07XG4gIH1cbn1cblxuY29uc3Qgbm9uRmllbGRTY2hlbWFLZXlzID0gWydfaWQnLCAnX21ldGFkYXRhJywgJ19jbGllbnRfcGVybWlzc2lvbnMnXTtcbmZ1bmN0aW9uIG1vbmdvU2NoZW1hRmllbGRzVG9QYXJzZVNjaGVtYUZpZWxkcyhzY2hlbWEpIHtcbiAgdmFyIGZpZWxkTmFtZXMgPSBPYmplY3Qua2V5cyhzY2hlbWEpLmZpbHRlcihrZXkgPT4gbm9uRmllbGRTY2hlbWFLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpO1xuICB2YXIgcmVzcG9uc2UgPSBmaWVsZE5hbWVzLnJlZHVjZSgob2JqLCBmaWVsZE5hbWUpID0+IHtcbiAgICBvYmpbZmllbGROYW1lXSA9IG1vbmdvRmllbGRUb1BhcnNlU2NoZW1hRmllbGQoc2NoZW1hW2ZpZWxkTmFtZV0pO1xuICAgIGlmIChcbiAgICAgIHNjaGVtYS5fbWV0YWRhdGEgJiZcbiAgICAgIHNjaGVtYS5fbWV0YWRhdGEuZmllbGRzX29wdGlvbnMgJiZcbiAgICAgIHNjaGVtYS5fbWV0YWRhdGEuZmllbGRzX29wdGlvbnNbZmllbGROYW1lXVxuICAgICkge1xuICAgICAgb2JqW2ZpZWxkTmFtZV0gPSBPYmplY3QuYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgb2JqW2ZpZWxkTmFtZV0sXG4gICAgICAgIHNjaGVtYS5fbWV0YWRhdGEuZmllbGRzX29wdGlvbnNbZmllbGROYW1lXVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSwge30pO1xuICByZXNwb25zZS5BQ0wgPSB7IHR5cGU6ICdBQ0wnIH07XG4gIHJlc3BvbnNlLmNyZWF0ZWRBdCA9IHsgdHlwZTogJ0RhdGUnIH07XG4gIHJlc3BvbnNlLnVwZGF0ZWRBdCA9IHsgdHlwZTogJ0RhdGUnIH07XG4gIHJlc3BvbnNlLm9iamVjdElkID0geyB0eXBlOiAnU3RyaW5nJyB9O1xuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbmNvbnN0IGVtcHR5Q0xQUyA9IE9iamVjdC5mcmVlemUoe1xuICBmaW5kOiB7fSxcbiAgY291bnQ6IHt9LFxuICBnZXQ6IHt9LFxuICBjcmVhdGU6IHt9LFxuICB1cGRhdGU6IHt9LFxuICBkZWxldGU6IHt9LFxuICBhZGRGaWVsZDoge30sXG4gIHByb3RlY3RlZEZpZWxkczoge30sXG59KTtcblxuY29uc3QgZGVmYXVsdENMUFMgPSBPYmplY3QuZnJlZXplKHtcbiAgZmluZDogeyAnKic6IHRydWUgfSxcbiAgY291bnQ6IHsgJyonOiB0cnVlIH0sXG4gIGdldDogeyAnKic6IHRydWUgfSxcbiAgY3JlYXRlOiB7ICcqJzogdHJ1ZSB9LFxuICB1cGRhdGU6IHsgJyonOiB0cnVlIH0sXG4gIGRlbGV0ZTogeyAnKic6IHRydWUgfSxcbiAgYWRkRmllbGQ6IHsgJyonOiB0cnVlIH0sXG4gIHByb3RlY3RlZEZpZWxkczogeyAnKic6IFtdIH0sXG59KTtcblxuZnVuY3Rpb24gbW9uZ29TY2hlbWFUb1BhcnNlU2NoZW1hKG1vbmdvU2NoZW1hKSB7XG4gIGxldCBjbHBzID0gZGVmYXVsdENMUFM7XG4gIGxldCBpbmRleGVzID0ge307XG4gIGlmIChtb25nb1NjaGVtYS5fbWV0YWRhdGEpIHtcbiAgICBpZiAobW9uZ29TY2hlbWEuX21ldGFkYXRhLmNsYXNzX3Blcm1pc3Npb25zKSB7XG4gICAgICBjbHBzID0geyAuLi5lbXB0eUNMUFMsIC4uLm1vbmdvU2NoZW1hLl9tZXRhZGF0YS5jbGFzc19wZXJtaXNzaW9ucyB9O1xuICAgIH1cbiAgICBpZiAobW9uZ29TY2hlbWEuX21ldGFkYXRhLmluZGV4ZXMpIHtcbiAgICAgIGluZGV4ZXMgPSB7IC4uLm1vbmdvU2NoZW1hLl9tZXRhZGF0YS5pbmRleGVzIH07XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY2xhc3NOYW1lOiBtb25nb1NjaGVtYS5faWQsXG4gICAgZmllbGRzOiBtb25nb1NjaGVtYUZpZWxkc1RvUGFyc2VTY2hlbWFGaWVsZHMobW9uZ29TY2hlbWEpLFxuICAgIGNsYXNzTGV2ZWxQZXJtaXNzaW9uczogY2xwcyxcbiAgICBpbmRleGVzOiBpbmRleGVzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBfbW9uZ29TY2hlbWFRdWVyeUZyb21OYW1lUXVlcnkobmFtZTogc3RyaW5nLCBxdWVyeSkge1xuICBjb25zdCBvYmplY3QgPSB7IF9pZDogbmFtZSB9O1xuICBpZiAocXVlcnkpIHtcbiAgICBPYmplY3Qua2V5cyhxdWVyeSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgb2JqZWN0W2tleV0gPSBxdWVyeVtrZXldO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbi8vIFJldHVybnMgYSB0eXBlIHN1aXRhYmxlIGZvciBpbnNlcnRpbmcgaW50byBtb25nbyBfU0NIRU1BIGNvbGxlY3Rpb24uXG4vLyBEb2VzIG5vIHZhbGlkYXRpb24uIFRoYXQgaXMgZXhwZWN0ZWQgdG8gYmUgZG9uZSBpbiBQYXJzZSBTZXJ2ZXIuXG5mdW5jdGlvbiBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUoeyB0eXBlLCB0YXJnZXRDbGFzcyB9KSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ1BvaW50ZXInOlxuICAgICAgcmV0dXJuIGAqJHt0YXJnZXRDbGFzc31gO1xuICAgIGNhc2UgJ1JlbGF0aW9uJzpcbiAgICAgIHJldHVybiBgcmVsYXRpb248JHt0YXJnZXRDbGFzc30+YDtcbiAgICBjYXNlICdOdW1iZXInOlxuICAgICAgcmV0dXJuICdudW1iZXInO1xuICAgIGNhc2UgJ1N0cmluZyc6XG4gICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgY2FzZSAnQm9vbGVhbic6XG4gICAgICByZXR1cm4gJ2Jvb2xlYW4nO1xuICAgIGNhc2UgJ0RhdGUnOlxuICAgICAgcmV0dXJuICdkYXRlJztcbiAgICBjYXNlICdPYmplY3QnOlxuICAgICAgcmV0dXJuICdvYmplY3QnO1xuICAgIGNhc2UgJ0FycmF5JzpcbiAgICAgIHJldHVybiAnYXJyYXknO1xuICAgIGNhc2UgJ0dlb1BvaW50JzpcbiAgICAgIHJldHVybiAnZ2VvcG9pbnQnO1xuICAgIGNhc2UgJ0ZpbGUnOlxuICAgICAgcmV0dXJuICdmaWxlJztcbiAgICBjYXNlICdCeXRlcyc6XG4gICAgICByZXR1cm4gJ2J5dGVzJztcbiAgICBjYXNlICdQb2x5Z29uJzpcbiAgICAgIHJldHVybiAncG9seWdvbic7XG4gIH1cbn1cblxuY2xhc3MgTW9uZ29TY2hlbWFDb2xsZWN0aW9uIHtcbiAgX2NvbGxlY3Rpb246IE1vbmdvQ29sbGVjdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uOiBNb25nb0NvbGxlY3Rpb24pIHtcbiAgICB0aGlzLl9jb2xsZWN0aW9uID0gY29sbGVjdGlvbjtcbiAgfVxuXG4gIF9mZXRjaEFsbFNjaGVtYXNGcm9tX1NDSEVNQSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbi5fcmF3RmluZCh7fSkudGhlbihzY2hlbWFzID0+IHNjaGVtYXMubWFwKG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYSkpO1xuICB9XG5cbiAgX2ZldGNoT25lU2NoZW1hRnJvbV9TQ0hFTUEobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb25cbiAgICAgIC5fcmF3RmluZChfbW9uZ29TY2hlbWFRdWVyeUZyb21OYW1lUXVlcnkobmFtZSksIHsgbGltaXQ6IDEgfSlcbiAgICAgIC50aGVuKHJlc3VsdHMgPT4ge1xuICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICByZXR1cm4gbW9uZ29TY2hlbWFUb1BhcnNlU2NoZW1hKHJlc3VsdHNbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvLyBBdG9taWNhbGx5IGZpbmQgYW5kIGRlbGV0ZSBhbiBvYmplY3QgYmFzZWQgb24gcXVlcnkuXG4gIGZpbmRBbmREZWxldGVTY2hlbWEobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb24uX21vbmdvQ29sbGVjdGlvbi5maW5kT25lQW5kRGVsZXRlKF9tb25nb1NjaGVtYVF1ZXJ5RnJvbU5hbWVRdWVyeShuYW1lKSk7XG4gIH1cblxuICBpbnNlcnRTY2hlbWEoc2NoZW1hOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvblxuICAgICAgLmluc2VydE9uZShzY2hlbWEpXG4gICAgICAudGhlbigoKSA9PiBtb25nb1NjaGVtYVRvUGFyc2VTY2hlbWEoc2NoZW1hKSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGlmIChlcnJvci5jb2RlID09PSAxMTAwMCkge1xuICAgICAgICAgIC8vTW9uZ28ncyBkdXBsaWNhdGUga2V5IGVycm9yXG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkRVUExJQ0FURV9WQUxVRSwgJ0NsYXNzIGFscmVhZHkgZXhpc3RzLicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVNjaGVtYShuYW1lOiBzdHJpbmcsIHVwZGF0ZSkge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uLnVwZGF0ZU9uZShfbW9uZ29TY2hlbWFRdWVyeUZyb21OYW1lUXVlcnkobmFtZSksIHVwZGF0ZSk7XG4gIH1cblxuICB1cHNlcnRTY2hlbWEobmFtZTogc3RyaW5nLCBxdWVyeTogc3RyaW5nLCB1cGRhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbi51cHNlcnRPbmUoX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWUsIHF1ZXJ5KSwgdXBkYXRlKTtcbiAgfVxuXG4gIC8vIEFkZCBhIGZpZWxkIHRvIHRoZSBzY2hlbWEuIElmIGRhdGFiYXNlIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpZWxkXG4gIC8vIHR5cGUgKGUuZy4gbW9uZ28gZG9lc24ndCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgR2VvUG9pbnQgaW4gYSBjbGFzcykgcmVqZWN0IHdpdGggYW4gXCJJbmNvcnJlY3QgVHlwZVwiXG4gIC8vIFBhcnNlIGVycm9yIHdpdGggYSBkZXNjaXB0aXZlIG1lc3NhZ2UuIElmIHRoZSBmaWVsZCBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBtdXN0XG4gIC8vIG5vdCBtb2RpZnkgdGhlIHNjaGVtYSwgYW5kIG11c3QgcmVqZWN0IHdpdGggRFVQTElDQVRFX1ZBTFVFIGVycm9yLlxuICAvLyBJZiB0aGlzIGlzIGNhbGxlZCBmb3IgYSBjbGFzcyB0aGF0IGRvZXNuJ3QgZXhpc3QsIHRoaXMgZnVuY3Rpb24gbXVzdCBjcmVhdGUgdGhhdCBjbGFzcy5cblxuICAvLyBUT0RPOiB0aHJvdyBhbiBlcnJvciBpZiBhbiB1bnN1cHBvcnRlZCBmaWVsZCB0eXBlIGlzIHBhc3NlZC4gRGVjaWRpbmcgd2hldGhlciBhIHR5cGUgaXMgc3VwcG9ydGVkXG4gIC8vIHNob3VsZCBiZSB0aGUgam9iIG9mIHRoZSBhZGFwdGVyLiBTb21lIGFkYXB0ZXJzIG1heSBub3Qgc3VwcG9ydCBHZW9Qb2ludCBhdCBhbGwuIE90aGVycyBtYXlcbiAgLy8gU3VwcG9ydCBhZGRpdGlvbmFsIHR5cGVzIHRoYXQgTW9uZ28gZG9lc24ndCwgbGlrZSBNb25leSwgb3Igc29tZXRoaW5nLlxuXG4gIC8vIFRPRE86IGRvbid0IHNwZW5kIGFuIGV4dHJhIHF1ZXJ5IG9uIGZpbmRpbmcgdGhlIHNjaGVtYSBpZiB0aGUgdHlwZSB3ZSBhcmUgdHJ5aW5nIHRvIGFkZCBpc24ndCBhIEdlb1BvaW50LlxuICBhZGRGaWVsZElmTm90RXhpc3RzKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgZmllbGRUeXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fZmV0Y2hPbmVTY2hlbWFGcm9tX1NDSEVNQShjbGFzc05hbWUpXG4gICAgICAudGhlbihcbiAgICAgICAgc2NoZW1hID0+IHtcbiAgICAgICAgICAvLyBJZiBhIGZpZWxkIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIGhhbmRsZWQgZWxzZXdoZXJlLlxuICAgICAgICAgIGlmIChzY2hlbWEuZmllbGRzW2ZpZWxkTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBUaGUgc2NoZW1hIGV4aXN0cy4gQ2hlY2sgZm9yIGV4aXN0aW5nIEdlb1BvaW50cy5cbiAgICAgICAgICBpZiAoZmllbGRUeXBlLnR5cGUgPT09ICdHZW9Qb2ludCcpIHtcbiAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm90IG90aGVyIGdlb3BvaW50IGZpZWxkc1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzY2hlbWEuZmllbGRzKS5zb21lKFxuICAgICAgICAgICAgICAgIGV4aXN0aW5nRmllbGQgPT4gc2NoZW1hLmZpZWxkc1tleGlzdGluZ0ZpZWxkXS50eXBlID09PSAnR2VvUG9pbnQnXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgICAgICAgUGFyc2UuRXJyb3IuSU5DT1JSRUNUX1RZUEUsXG4gICAgICAgICAgICAgICAgJ01vbmdvREIgb25seSBzdXBwb3J0cyBvbmUgR2VvUG9pbnQgZmllbGQgaW4gYSBjbGFzcy4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgIC8vIElmIGVycm9yIGlzIHVuZGVmaW5lZCwgdGhlIHNjaGVtYSBkb2Vzbid0IGV4aXN0LCBhbmQgd2UgY2FuIGNyZWF0ZSB0aGUgc2NoZW1hIHdpdGggdGhlIGZpZWxkLlxuICAgICAgICAgIC8vIElmIHNvbWUgb3RoZXIgZXJyb3IsIHJlamVjdCB3aXRoIGl0LlxuICAgICAgICAgIGlmIChlcnJvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICApXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgdGFyZ2V0Q2xhc3MsIC4uLmZpZWxkT3B0aW9ucyB9ID0gZmllbGRUeXBlO1xuICAgICAgICAvLyBXZSB1c2UgJGV4aXN0cyBhbmQgJHNldCB0byBhdm9pZCBvdmVyd3JpdGluZyB0aGUgZmllbGQgdHlwZSBpZiBpdFxuICAgICAgICAvLyBhbHJlYWR5IGV4aXN0cy4gKGl0IGNvdWxkIGhhdmUgYWRkZWQgaW5iZXR3ZWVuIHRoZSBsYXN0IHF1ZXJ5IGFuZCB0aGUgdXBkYXRlKVxuICAgICAgICBpZiAoZmllbGRPcHRpb25zICYmIE9iamVjdC5rZXlzKGZpZWxkT3B0aW9ucykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnVwc2VydFNjaGVtYShcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIHsgW2ZpZWxkTmFtZV06IHsgJGV4aXN0czogZmFsc2UgfSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAkc2V0OiB7XG4gICAgICAgICAgICAgICAgW2ZpZWxkTmFtZV06IHBhcnNlRmllbGRUeXBlVG9Nb25nb0ZpZWxkVHlwZSh7XG4gICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgICAgdGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgW2BfbWV0YWRhdGEuZmllbGRzX29wdGlvbnMuJHtmaWVsZE5hbWV9YF06IGZpZWxkT3B0aW9ucyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnVwc2VydFNjaGVtYShcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIHsgW2ZpZWxkTmFtZV06IHsgJGV4aXN0czogZmFsc2UgfSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAkc2V0OiB7XG4gICAgICAgICAgICAgICAgW2ZpZWxkTmFtZV06IHBhcnNlRmllbGRUeXBlVG9Nb25nb0ZpZWxkVHlwZSh7XG4gICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgICAgdGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVGaWVsZE9wdGlvbnMoY2xhc3NOYW1lOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCBmaWVsZFR5cGU6IGFueSkge1xuICAgIGNvbnN0IHsgLi4uZmllbGRPcHRpb25zIH0gPSBmaWVsZFR5cGU7XG4gICAgZGVsZXRlIGZpZWxkT3B0aW9ucy50eXBlO1xuICAgIGRlbGV0ZSBmaWVsZE9wdGlvbnMudGFyZ2V0Q2xhc3M7XG5cbiAgICBhd2FpdCB0aGlzLnVwc2VydFNjaGVtYShcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIHsgW2ZpZWxkTmFtZV06IHsgJGV4aXN0czogdHJ1ZSB9IH0sXG4gICAgICB7XG4gICAgICAgICRzZXQ6IHtcbiAgICAgICAgICBbYF9tZXRhZGF0YS5maWVsZHNfb3B0aW9ucy4ke2ZpZWxkTmFtZX1gXTogZmllbGRPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cblxuLy8gRXhwb3J0ZWQgZm9yIHRlc3RpbmcgcmVhc29ucyBhbmQgYmVjYXVzZSB3ZSBoYXZlbid0IG1vdmVkIGFsbCBtb25nbyBzY2hlbWEgZm9ybWF0XG4vLyByZWxhdGVkIGxvZ2ljIGludG8gdGhlIGRhdGFiYXNlIGFkYXB0ZXIgeWV0LlxuTW9uZ29TY2hlbWFDb2xsZWN0aW9uLl9URVNUbW9uZ29TY2hlbWFUb1BhcnNlU2NoZW1hID0gbW9uZ29TY2hlbWFUb1BhcnNlU2NoZW1hO1xuTW9uZ29TY2hlbWFDb2xsZWN0aW9uLnBhcnNlRmllbGRUeXBlVG9Nb25nb0ZpZWxkVHlwZSA9IHBhcnNlRmllbGRUeXBlVG9Nb25nb0ZpZWxkVHlwZTtcblxuZXhwb3J0IGRlZmF1bHQgTW9uZ29TY2hlbWFDb2xsZWN0aW9uO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxD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
|