parse-server 8.5.0-alpha.9 → 8.6.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Adapters/Analytics/AnalyticsAdapter.js +2 -2
- package/lib/Adapters/Auth/AuthAdapter.js +2 -2
- package/lib/Adapters/Auth/apple.js +2 -2
- package/lib/Adapters/Auth/facebook.js +2 -2
- package/lib/Adapters/Cache/CacheAdapter.js +2 -2
- package/lib/Adapters/Email/MailAdapter.js +2 -2
- package/lib/Adapters/Files/FilesAdapter.js +2 -2
- package/lib/Adapters/Files/GridFSBucketAdapter.js +2 -2
- package/lib/Adapters/Logger/LoggerAdapter.js +2 -2
- package/lib/Adapters/Logger/WinstonLogger.js +3 -3
- package/lib/Adapters/PubSub/PubSubAdapter.js +2 -2
- package/lib/Adapters/Push/PushAdapter.js +2 -3
- package/lib/Adapters/Storage/Mongo/MongoTransform.js +2 -2
- package/lib/Adapters/WebSocketServer/WSAdapter.js +2 -2
- package/lib/Adapters/WebSocketServer/WSSAdapter.js +2 -2
- package/lib/Controllers/HooksController.js +2 -2
- package/lib/Controllers/SchemaController.js +7 -5
- package/lib/Controllers/index.js +2 -2
- package/lib/Deprecator/Deprecator.js +3 -2
- package/lib/Error.js +48 -0
- package/lib/GraphQL/ParseGraphQLSchema.js +4 -3
- package/lib/GraphQL/loaders/configMutations.js +87 -0
- package/lib/GraphQL/loaders/configQueries.js +79 -0
- package/lib/GraphQL/loaders/defaultGraphQLMutations.js +3 -1
- package/lib/GraphQL/loaders/defaultGraphQLQueries.js +3 -1
- package/lib/GraphQL/loaders/filesMutations.js +2 -2
- package/lib/GraphQL/loaders/schemaMutations.js +8 -7
- package/lib/GraphQL/loaders/schemaQueries.js +3 -3
- package/lib/GraphQL/loaders/usersQueries.js +4 -3
- package/lib/GraphQL/parseGraphQLUtils.js +4 -3
- package/lib/Options/Definitions.js +11 -3
- package/lib/Options/docs.js +3 -2
- package/lib/Options/index.js +1 -1
- package/lib/Options/parsers.js +2 -2
- package/lib/RestQuery.js +8 -5
- package/lib/RestWrite.js +6 -6
- package/lib/Routers/ClassesRouter.js +4 -3
- package/lib/Routers/FilesRouter.js +4 -5
- package/lib/Routers/GlobalConfigRouter.js +3 -2
- package/lib/Routers/GraphQLRouter.js +3 -2
- package/lib/Routers/PagesRouter.js +4 -4
- package/lib/Routers/PurgeRouter.js +3 -2
- package/lib/Routers/PushRouter.js +3 -2
- package/lib/Routers/SchemasRouter.js +5 -4
- package/lib/Routers/UsersRouter.js +39 -7
- package/lib/SharedRest.js +9 -8
- package/lib/TestUtils.js +1 -1
- package/lib/Utils.js +27 -2
- package/lib/batch.js +2 -2
- package/lib/cli/utils/runner.js +2 -2
- package/lib/cloud-code/Parse.Cloud.js +43 -1
- package/lib/middlewares.js +9 -10
- package/lib/password.js +2 -2
- package/lib/request.js +2 -2
- package/lib/rest.js +14 -11
- package/lib/triggers.js +5 -4
- package/package.json +5 -8
package/lib/Utils.js
CHANGED
|
@@ -94,7 +94,7 @@ class Utils {
|
|
|
94
94
|
try {
|
|
95
95
|
await fs.access(path);
|
|
96
96
|
return true;
|
|
97
|
-
} catch
|
|
97
|
+
} catch {
|
|
98
98
|
return false;
|
|
99
99
|
}
|
|
100
100
|
}
|
|
@@ -438,6 +438,31 @@ class Utils {
|
|
|
438
438
|
return value;
|
|
439
439
|
};
|
|
440
440
|
}
|
|
441
|
+
|
|
442
|
+
/**
|
|
443
|
+
* Gets a nested property value from an object using dot notation.
|
|
444
|
+
* @param {Object} obj The object to get the property from.
|
|
445
|
+
* @param {String} path The property path in dot notation, e.g. 'databaseOptions.allowPublicExplain'.
|
|
446
|
+
* @returns {any} The property value or undefined if not found.
|
|
447
|
+
* @example
|
|
448
|
+
* const obj = { database: { options: { enabled: true } } };
|
|
449
|
+
* Utils.getNestedProperty(obj, 'database.options.enabled');
|
|
450
|
+
* // Output: true
|
|
451
|
+
*/
|
|
452
|
+
static getNestedProperty(obj, path) {
|
|
453
|
+
if (!obj || !path) {
|
|
454
|
+
return undefined;
|
|
455
|
+
}
|
|
456
|
+
const keys = path.split('.');
|
|
457
|
+
let current = obj;
|
|
458
|
+
for (const key of keys) {
|
|
459
|
+
if (current == null || typeof current !== 'object') {
|
|
460
|
+
return undefined;
|
|
461
|
+
}
|
|
462
|
+
current = current[key];
|
|
463
|
+
}
|
|
464
|
+
return current;
|
|
465
|
+
}
|
|
441
466
|
}
|
|
442
467
|
module.exports = Utils;
|
|
443
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwicmVxdWlyZSIsImZzIiwicHJvbWlzZXMiLCJVdGlscyIsImdldExvY2FsaXplZFBhdGgiLCJkZWZhdWx0UGF0aCIsImxvY2FsZSIsImZpbGUiLCJiYXNlbmFtZSIsImJhc2VQYXRoIiwiZGlybmFtZSIsImxvY2FsZVBhdGgiLCJqb2luIiwibG9jYWxlRmlsZUV4aXN0cyIsImZpbGVFeGlzdHMiLCJzdWJkaXIiLCJsYW5ndWFnZSIsInNwbGl0IiwibGFuZ3VhZ2VQYXRoIiwibGFuZ3VhZ2VGaWxlRXhpc3RzIiwiYWNjZXNzIiwiZSIsImlzUGF0aCIsInMiLCJ0ZXN0IiwiZmxhdHRlbk9iamVjdCIsIm9iaiIsInBhcmVudEtleSIsImRlbGltaXRlciIsInJlc3VsdCIsImtleSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm5ld0tleSIsImlzUHJvbWlzZSIsIm9iamVjdCIsIlByb21pc2UiLCJnZXRPYmplY3RLZXlQZXJtdXRhdGlvbnMiLCJpbmRleCIsImN1cnJlbnQiLCJyZXN1bHRzIiwia2V5cyIsInZhbHVlcyIsInZhbHVlIiwibmV4dEluZGV4IiwibGVuZ3RoIiwiYXNzaWduIiwicHVzaCIsInZhbGlkYXRlUGFyYW1zIiwicGFyYW1zIiwidHlwZXMiLCJ0eXBlIiwiaXNPcHRpb25hbCIsIm8iLCJwYXJhbSIsInYiLCJ0IiwicmVsYXRpdmVUaW1lVG9EYXRlIiwidGV4dCIsIm5vdyIsIkRhdGUiLCJ0b0xvd2VyQ2FzZSIsInBhcnRzIiwiZmlsdGVyIiwicGFydCIsImZ1dHVyZSIsInBhc3QiLCJzdGF0dXMiLCJpbmZvIiwic2xpY2UiLCJwYWlycyIsInNoaWZ0Iiwic2Vjb25kcyIsIm51bSIsImludGVydmFsIiwidmFsIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwibWlsbGlzZWNvbmRzIiwidmFsdWVPZiIsIm9iamVjdENvbnRhaW5zS2V5VmFsdWUiLCJpc01hdGNoIiwiYSIsImIiLCJSZWdFeHAiLCJpc0tleU1hdGNoIiwiayIsImlzVmFsdWVNYXRjaCIsImVudHJpZXMiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsInRvU3RyaW5nIiwiY2hlY2tQcm9oaWJpdGVkS2V5d29yZHMiLCJjb25maWciLCJkYXRhIiwicmVxdWVzdEtleXdvcmREZW55bGlzdCIsImtleXdvcmQiLCJtYXRjaCIsIkpTT04iLCJzdHJpbmdpZnkiLCJhZGROZXN0ZWRLZXlzVG9Sb290IiwiZW5jb2RlRm9yVXJsIiwiaW5wdXQiLCJlbmNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlIiwiY2hhciIsImNoYXJDb2RlQXQiLCJ0b1VwcGVyQ2FzZSIsImdldENpcmN1bGFyUmVwbGFjZXIiLCJzZWVuIiwiV2Vha1NldCIsIk1hcCIsImZyb21FbnRyaWVzIiwiU2V0IiwiQXJyYXkiLCJmcm9tIiwiaGFzIiwiYWRkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9VdGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHV0aWxzLmpzXG4gKiBAZmlsZSBHZW5lcmFsIHB1cnBvc2UgdXRpbGl0aWVzXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJhbCBwdXJwb3NlIHV0aWxpdGllcy5cbiAqL1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpLnByb21pc2VzO1xuXG4vKipcbiAqIFRoZSBnZW5lcmFsIHB1cnBvc2UgdXRpbGl0aWVzLlxuICovXG5jbGFzcyBVdGlscyB7XG4gIC8qKlxuICAgKiBAZnVuY3Rpb24gZ2V0TG9jYWxpemVkUGF0aFxuICAgKiBAZGVzY3JpcHRpb24gUmV0dXJucyBhIGxvY2FsaXplZCBmaWxlIHBhdGggYWNjb3JpbmcgdG8gdGhlIGxvY2FsZS5cbiAgICpcbiAgICogTG9jYWxpemVkIGZpbGVzIGFyZSBzZWFyY2hlZCBpbiBzdWJmb2xkZXJzIG9mIGEgZ2l2ZW4gcGF0aCwgZS5nLlxuICAgKlxuICAgKiByb290L1xuICAgKiDilJzilIDilIAgYmFzZS8gICAgICAgICAgICAgICAgICAgIC8vIGJhc2UgcGF0aCB0byBmaWxlc1xuICAgKiDilIIgICDilJzilIDilIAgZXhhbXBsZS5odG1sICAgICAgICAgLy8gZGVmYXVsdCBmaWxlXG4gICAqIOKUgiAgIOKUlOKUgOKUgCBkZS8gICAgICAgICAgICAgICAgICAvLyBkZSBsYW5ndWFnZSBmb2xkZXJcbiAgICog4pSCICAg4pSCICAg4pSU4pSA4pSAIGV4YW1wbGUuaHRtbCAgICAgLy8gZGUgbG9jYWxpemVkIGZpbGVcbiAgICog4pSCICAg4pSU4pSA4pSAIGRlLUFULyAgICAgICAgICAgICAgIC8vIGRlLUFUIGxvY2FsZSBmb2xkZXJcbiAgICog4pSCICAg4pSCICAg4pSU4pSA4pSAIGV4YW1wbGUuaHRtbCAgICAgLy8gZGUtQVQgbG9jYWxpemVkIGZpbGVcbiAgICpcbiAgICogRmlsZXMgYXJlIG1hdGNoZWQgd2l0aCB0aGUgbG9jYWxlIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6XG4gICAqIDEuIExvY2FsZSBtYXRjaCwgZS5nLiBsb2NhbGUgYGRlLUFUYCBtYXRjaGVzIGZpbGUgaW4gZm9sZGVyIGBkZS1BVGAuXG4gICAqIDIuIExhbmd1YWdlIG1hdGNoLCBlLmcuIGxvY2FsZSBgZGUtQVRgIG1hdGNoZXMgZmlsZSBpbiBmb2xkZXIgYGRlYC5cbiAgICogMy4gRGVmYXVsdDsgZmlsZSBpbiBiYXNlIGZvbGRlciBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGRlZmF1bHRQYXRoIFRoZSBhYnNvbHV0ZSBmaWxlIHBhdGgsIHdoaWNoIGlzIGFsc29cbiAgICogdGhlIGRlZmF1bHQgcGF0aCByZXR1cm5lZCBpZiBsb2NhbGl6YXRpb24gaXMgbm90IGF2YWlsYWJsZS5cbiAgICogQHBhcmFtIHtTdHJpbmd9IGxvY2FsZSBUaGUgbG9jYWxlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q+fSBUaGUgb2JqZWN0IGNvbnRhaW5zOlxuICAgKiAtIGBwYXRoYDogVGhlIHBhdGggdG8gdGhlIGxvY2FsaXplZCBmaWxlLCBvciB0aGUgb3JpZ2luYWwgcGF0aCBpZlxuICAgKiAgIGxvY2FsaXphdGlvbiBpcyBub3QgYXZhaWxhYmxlLlxuICAgKiAtIGBzdWJkaXJgOiBUaGUgc3ViZGlyZWN0b3J5IG9mIHRoZSBsb2NhbGl6ZWQgZmlsZSwgb3IgdW5kZWZpbmVkIGlmXG4gICAqICAgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgbG9jYWxpemVkIGZpbGUuXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgZ2V0TG9jYWxpemVkUGF0aChkZWZhdWx0UGF0aCwgbG9jYWxlKSB7XG4gICAgLy8gR2V0IGZpbGUgbmFtZSBhbmQgcGF0aHNcbiAgICBjb25zdCBmaWxlID0gcGF0aC5iYXNlbmFtZShkZWZhdWx0UGF0aCk7XG4gICAgY29uc3QgYmFzZVBhdGggPSBwYXRoLmRpcm5hbWUoZGVmYXVsdFBhdGgpO1xuXG4gICAgLy8gSWYgbG9jYWxlIGlzIG5vdCBzZXQgcmV0dXJuIGRlZmF1bHQgZmlsZVxuICAgIGlmICghbG9jYWxlKSB7XG4gICAgICByZXR1cm4geyBwYXRoOiBkZWZhdWx0UGF0aCB9O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZpbGUgZm9yIGxvY2FsZSBleGlzdHNcbiAgICBjb25zdCBsb2NhbGVQYXRoID0gcGF0aC5qb2luKGJhc2VQYXRoLCBsb2NhbGUsIGZpbGUpO1xuICAgIGNvbnN0IGxvY2FsZUZpbGVFeGlzdHMgPSBhd2FpdCBVdGlscy5maWxlRXhpc3RzKGxvY2FsZVBhdGgpO1xuXG4gICAgLy8gSWYgZmlsZSBmb3IgbG9jYWxlIGV4aXN0cyByZXR1cm4gZmlsZVxuICAgIGlmIChsb2NhbGVGaWxlRXhpc3RzKSB7XG4gICAgICByZXR1cm4geyBwYXRoOiBsb2NhbGVQYXRoLCBzdWJkaXI6IGxvY2FsZSB9O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZpbGUgZm9yIGxhbmd1YWdlIGV4aXN0c1xuICAgIGNvbnN0IGxhbmd1YWdlID0gbG9jYWxlLnNwbGl0KCctJylbMF07XG4gICAgY29uc3QgbGFuZ3VhZ2VQYXRoID0gcGF0aC5qb2luKGJhc2VQYXRoLCBsYW5ndWFnZSwgZmlsZSk7XG4gICAgY29uc3QgbGFuZ3VhZ2VGaWxlRXhpc3RzID0gYXdhaXQgVXRpbHMuZmlsZUV4aXN0cyhsYW5ndWFnZVBhdGgpO1xuXG4gICAgLy8gSWYgZmlsZSBmb3IgbGFuZ3VhZ2UgZXhpc3RzIHJldHVybiBmaWxlXG4gICAgaWYgKGxhbmd1YWdlRmlsZUV4aXN0cykge1xuICAgICAgcmV0dXJuIHsgcGF0aDogbGFuZ3VhZ2VQYXRoLCBzdWJkaXI6IGxhbmd1YWdlIH07XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGRlZmF1bHQgZmlsZVxuICAgIHJldHVybiB7IHBhdGg6IGRlZmF1bHRQYXRoIH07XG4gIH1cblxuICAvKipcbiAgICogQGZ1bmN0aW9uIGZpbGVFeGlzdHNcbiAgICogQGRlc2NyaXB0aW9uIENoZWNrcyB3aGV0aGVyIGEgZmlsZSBleGlzdHMuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoIFRoZSBmaWxlIHBhdGguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEJvb2xlYW4+fSBJcyB0cnVlIGlmIHRoZSBmaWxlIGNhbiBiZSBhY2Nlc3NlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGZpbGVFeGlzdHMocGF0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5hY2Nlc3MocGF0aCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBmdW5jdGlvbiBpc1BhdGhcbiAgICogQGRlc2NyaXB0aW9uIEV2YWx1YXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgZmlsZSBwYXRoIChhcyBvcHBvc2VkIHRvIGEgVVJMIGZvciBleGFtcGxlKS5cbiAgICogQHBhcmFtIHtTdHJpbmd9IHMgVGhlIHN0cmluZyB0byBldmFsdWF0ZS5cbiAgICogQHJldHVybnMge0Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZhbHVhdGVkIHN0cmluZyBpcyBhIHBhdGguXG4gICAqL1xuICBzdGF0aWMgaXNQYXRoKHMpIHtcbiAgICByZXR1cm4gLyheXFwvKXwoXlxcLlxcLyl8KF5cXC5cXC5cXC8pLy50ZXN0KHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYXR0ZW5zIGFuIG9iamVjdCBhbmQgY3JhdGVzIG5ldyBrZXlzIHdpdGggY3VzdG9tIGRlbGltaXRlcnMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBmbGF0dGVuLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2RlbGltaXRlcj0nLiddIFRoZSBkZWxpbWl0ZXIgb2YgdGhlIG5ld2x5IGdlbmVyYXRlZCBrZXlzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcmVzdWx0XG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBmbGF0dGVuZWQgb2JqZWN0LlxuICAgKiovXG4gIHN0YXRpYyBmbGF0dGVuT2JqZWN0KG9iaiwgcGFyZW50S2V5LCBkZWxpbWl0ZXIgPSAnLicsIHJlc3VsdCA9IHt9KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBjb25zdCBuZXdLZXkgPSBwYXJlbnRLZXkgPyBwYXJlbnRLZXkgKyBkZWxpbWl0ZXIgKyBrZXkgOiBrZXk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcgJiYgb2JqW2tleV0gIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmZsYXR0ZW5PYmplY3Qob2JqW2tleV0sIG5ld0tleSwgZGVsaW1pdGVyLCByZXN1bHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFtuZXdLZXldID0gb2JqW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGEgUHJvbWlzZS5cbiAgICogQHBhcmFtIHthbnl9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBwcm9taXNlLlxuICAgKi9cbiAgc3RhdGljIGlzUHJvbWlzZShvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgUHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIGFsbCBwZXJtdXRhdGlvbnMgb2YgdGhlIG9yaWdpbmFsIGtleXMuXG4gICAqIEZvciBleGFtcGxlLCB0aGlzIGRlZmluaXRpb246XG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgYTogW3RydWUsIGZhbHNlXSxcbiAgICogICBiOiBbMSwgMl0sXG4gICAqICAgYzogWyd4J11cbiAgICogfVxuICAgKiBgYGBcbiAgICogcGVybXV0YXRlcyB0bzpcbiAgICogYGBgXG4gICAqIFtcbiAgICogICB7IGE6IHRydWUsIGI6IDEsIGM6ICd4JyB9LFxuICAgKiAgIHsgYTogdHJ1ZSwgYjogMiwgYzogJ3gnIH0sXG4gICAqICAgeyBhOiBmYWxzZSwgYjogMSwgYzogJ3gnIH0sXG4gICAqICAgeyBhOiBmYWxzZSwgYjogMiwgYzogJ3gnIH1cbiAgICogXVxuICAgKiBgYGBcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHBlcm11dGF0ZS5cbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBbaW5kZXg9MF0gVGhlIGN1cnJlbnQga2V5IGluZGV4LlxuICAgKiBAcGFyYW0ge09iamVjdH0gW2N1cnJlbnQ9e31dIFRoZSBjdXJyZW50IHJlc3VsdCBlbnRyeSBiZWluZyBjb21wb3NlZC5cbiAgICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdHM9W11dIFRoZSByZXN1bHRpbmcgYXJyYXkgb2YgcGVybXV0YXRpb25zLlxuICAgKi9cbiAgc3RhdGljIGdldE9iamVjdEtleVBlcm11dGF0aW9ucyhvYmplY3QsIGluZGV4ID0gMCwgY3VycmVudCA9IHt9LCByZXN1bHRzID0gW10pIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcbiAgICBjb25zdCBrZXkgPSBrZXlzW2luZGV4XTtcbiAgICBjb25zdCB2YWx1ZXMgPSBvYmplY3Rba2V5XTtcblxuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBjdXJyZW50W2tleV0gPSB2YWx1ZTtcbiAgICAgIGNvbnN0IG5leHRJbmRleCA9IGluZGV4ICsgMTtcblxuICAgICAgaWYgKG5leHRJbmRleCA8IGtleXMubGVuZ3RoKSB7XG4gICAgICAgIFV0aWxzLmdldE9iamVjdEtleVBlcm11dGF0aW9ucyhvYmplY3QsIG5leHRJbmRleCwgY3VycmVudCwgcmVzdWx0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50KTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwYXJhbWV0ZXJzIGFuZCB0aHJvd3MgaWYgYSBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cbiAgICogRXhhbXBsZSBwYXJhbWV0ZXIgdHlwZXMgc3ludGF4OlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgIHBhcmFtZXRlck5hbWU6IHtcbiAgICogICAgICB0OiAnYm9vbGVhbicsXG4gICAqICAgICAgdjogaXNCb29sZWFuLFxuICAgKiAgICAgIG86IHRydWVcbiAgICogICB9LFxuICAgKiAgIC4uLlxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIHRvIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IHR5cGVzIFRoZSBwYXJhbWV0ZXIgdHlwZXMgdXNlZCBmb3IgdmFsaWRhdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IHR5cGVzLnQgVGhlIHBhcmFtZXRlciB0eXBlOyB1c2VkIGZvciBlcnJvciBtZXNzYWdlLCBub3QgZm9yIHZhbGlkYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlcy52IFRoZSBmdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVyIHZhbHVlLlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFt0eXBlcy5vPWZhbHNlXSBJcyB0cnVlIGlmIHRoZSBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuXG4gICAqL1xuICBzdGF0aWMgdmFsaWRhdGVQYXJhbXMocGFyYW1zLCB0eXBlcykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlc1trZXldO1xuICAgICAgY29uc3QgaXNPcHRpb25hbCA9ICEhdHlwZS5vO1xuICAgICAgY29uc3QgcGFyYW0gPSBwYXJhbXNba2V5XTtcbiAgICAgIGlmICghKGlzT3B0aW9uYWwgJiYgcGFyYW0gPT0gbnVsbCkgJiYgIXR5cGUudihwYXJhbSkpIHtcbiAgICAgICAgdGhyb3cgYEludmFsaWQgcGFyYW1ldGVyICR7a2V5fSBtdXN0IGJlIG9mIHR5cGUgJHt0eXBlLnR9IGJ1dCBpcyAke3R5cGVvZiBwYXJhbX1gO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgcmVsYXRpdmUgZGF0ZSBiYXNlZCBvbiBhIHN0cmluZy5cbiAgICogQHBhcmFtIHtTdHJpbmd9IHRleHQgVGhlIHN0cmluZyB0byBpbnRlcnByZXQgdGhlIGRhdGUgZnJvbS5cbiAgICogQHBhcmFtIHtEYXRlfSBub3cgVGhlIGRhdGUgdGhlIHN0cmluZyBpcyBjb21wYXJpbmcgYWdhaW5zdC5cbiAgICogQHJldHVybnMge09iamVjdH0gVGhlIHJlbGF0aXZlIGRhdGUgb2JqZWN0LlxuICAgKiovXG4gIHN0YXRpYyByZWxhdGl2ZVRpbWVUb0RhdGUodGV4dCwgbm93ID0gbmV3IERhdGUoKSkge1xuICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgbGV0IHBhcnRzID0gdGV4dC5zcGxpdCgnICcpO1xuXG4gICAgLy8gRmlsdGVyIG91dCB3aGl0ZXNwYWNlXG4gICAgcGFydHMgPSBwYXJ0cy5maWx0ZXIocGFydCA9PiBwYXJ0ICE9PSAnJyk7XG5cbiAgICBjb25zdCBmdXR1cmUgPSBwYXJ0c1swXSA9PT0gJ2luJztcbiAgICBjb25zdCBwYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPT09ICdhZ28nO1xuXG4gICAgaWYgKCFmdXR1cmUgJiYgIXBhc3QgJiYgdGV4dCAhPT0gJ25vdycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgaW5mbzogXCJUaW1lIHNob3VsZCBlaXRoZXIgc3RhcnQgd2l0aCAnaW4nIG9yIGVuZCB3aXRoICdhZ28nXCIsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChmdXR1cmUgJiYgcGFzdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBpbmZvOiBcIlRpbWUgY2Fubm90IGhhdmUgYm90aCAnaW4nIGFuZCAnYWdvJ1wiLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBzdHJpcCB0aGUgJ2Fnbycgb3IgJ2luJ1xuICAgIGlmIChmdXR1cmUpIHtcbiAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHBhc3RcbiAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMCwgcGFydHMubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCAlIDIgIT09IDAgJiYgdGV4dCAhPT0gJ25vdycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgaW5mbzogJ0ludmFsaWQgdGltZSBzdHJpbmcuIERhbmdsaW5nIHVuaXQgb3IgbnVtYmVyLicsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHBhaXJzID0gW107XG4gICAgd2hpbGUgKHBhcnRzLmxlbmd0aCkge1xuICAgICAgcGFpcnMucHVzaChbcGFydHMuc2hpZnQoKSwgcGFydHMuc2hpZnQoKV0pO1xuICAgIH1cblxuICAgIGxldCBzZWNvbmRzID0gMDtcbiAgICBmb3IgKGNvbnN0IFtudW0sIGludGVydmFsXSBvZiBwYWlycykge1xuICAgICAgY29uc3QgdmFsID0gTnVtYmVyKG51bSk7XG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICBpbmZvOiBgJyR7bnVtfScgaXMgbm90IGFuIGludGVnZXIuYCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChpbnRlcnZhbCkge1xuICAgICAgICBjYXNlICd5cic6XG4gICAgICAgIGNhc2UgJ3lycyc6XG4gICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICBjYXNlICd5ZWFycyc6XG4gICAgICAgICAgc2Vjb25kcyArPSB2YWwgKiAzMTUzNjAwMDsgLy8gMzY1ICogMjQgKiA2MCAqIDYwXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnd2snOlxuICAgICAgICBjYXNlICd3a3MnOlxuICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgY2FzZSAnd2Vla3MnOlxuICAgICAgICAgIHNlY29uZHMgKz0gdmFsICogNjA0ODAwOyAvLyA3ICogMjQgKiA2MCAqIDYwXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIGNhc2UgJ2RheXMnOlxuICAgICAgICAgIHNlY29uZHMgKz0gdmFsICogODY0MDA7IC8vIDI0ICogNjAgKiA2MFxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2hyJzpcbiAgICAgICAgY2FzZSAnaHJzJzpcbiAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgICBzZWNvbmRzICs9IHZhbCAqIDM2MDA7IC8vIDYwICogNjBcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtaW4nOlxuICAgICAgICBjYXNlICdtaW5zJzpcbiAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgY2FzZSAnbWludXRlcyc6XG4gICAgICAgICAgc2Vjb25kcyArPSB2YWwgKiA2MDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzZWMnOlxuICAgICAgICBjYXNlICdzZWNzJzpcbiAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgICAgc2Vjb25kcyArPSB2YWw7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAgICAgaW5mbzogYEludmFsaWQgaW50ZXJ2YWw6ICcke2ludGVydmFsfSdgLFxuICAgICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gc2Vjb25kcyAqIDEwMDA7XG4gICAgaWYgKGZ1dHVyZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICAgIGluZm86ICdmdXR1cmUnLFxuICAgICAgICByZXN1bHQ6IG5ldyBEYXRlKG5vdy52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHBhc3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgICBpbmZvOiAncGFzdCcsXG4gICAgICAgIHJlc3VsdDogbmV3IERhdGUobm93LnZhbHVlT2YoKSAtIG1pbGxpc2Vjb25kcyksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcbiAgICAgICAgaW5mbzogJ3ByZXNlbnQnLFxuICAgICAgICByZXN1bHQ6IG5ldyBEYXRlKG5vdy52YWx1ZU9mKCkpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVlcC1zY2FucyBhbiBvYmplY3QgZm9yIGEgbWF0Y2hpbmcga2V5L3ZhbHVlIGRlZmluaXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBzY2FuLlxuICAgKiBAcGFyYW0ge1N0cmluZyB8IHVuZGVmaW5lZH0ga2V5IFRoZSBrZXkgdG8gbWF0Y2gsIG9yIHVuZGVmaW5lZCBpZiBvbmx5IHRoZSB2YWx1ZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAgICogQHBhcmFtIHthbnkgfCB1bmRlZmluZWR9IHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCwgb3IgdW5kZWZpbmVkIGlmIG9ubHkgdGhlIGtleSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAgICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgYSBtYXRjaCB3YXMgZm91bmQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHN0YXRpYyBvYmplY3RDb250YWluc0tleVZhbHVlKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIGNvbnN0IGlzTWF0Y2ggPSAoYSwgYikgPT4gKHR5cGVvZiBhID09PSAnc3RyaW5nJyAmJiBuZXcgUmVnRXhwKGIpLnRlc3QoYSkpIHx8IGEgPT09IGI7XG4gICAgY29uc3QgaXNLZXlNYXRjaCA9IGsgPT4gaXNNYXRjaChrLCBrZXkpO1xuICAgIGNvbnN0IGlzVmFsdWVNYXRjaCA9IHYgPT4gaXNNYXRjaCh2LCB2YWx1ZSk7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlID09PSB1bmRlZmluZWQgJiYgaXNLZXlNYXRjaChrKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpc1ZhbHVlTWF0Y2godikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGtleSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXNLZXlNYXRjaChrKSAmJiBpc1ZhbHVlTWF0Y2godikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoWydbb2JqZWN0IE9iamVjdF0nLCAnW29iamVjdCBBcnJheV0nXS5pbmNsdWRlcyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodikpKSB7XG4gICAgICAgIHJldHVybiBVdGlscy5vYmplY3RDb250YWluc0tleVZhbHVlKHYsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgY2hlY2tQcm9oaWJpdGVkS2V5d29yZHMoY29uZmlnLCBkYXRhKSB7XG4gICAgaWYgKGNvbmZpZz8ucmVxdWVzdEtleXdvcmREZW55bGlzdCkge1xuICAgICAgLy8gU2NhbiByZXF1ZXN0IGRhdGEgZm9yIGRlbmllZCBrZXl3b3Jkc1xuICAgICAgZm9yIChjb25zdCBrZXl3b3JkIG9mIGNvbmZpZy5yZXF1ZXN0S2V5d29yZERlbnlsaXN0KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gVXRpbHMub2JqZWN0Q29udGFpbnNLZXlWYWx1ZShkYXRhLCBrZXl3b3JkLmtleSwga2V5d29yZC52YWx1ZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHRocm93IGBQcm9oaWJpdGVkIGtleXdvcmQgaW4gcmVxdWVzdCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGtleXdvcmQpfS5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBuZXN0ZWQga2V5cyBvZiBhIHNwZWNpZmllZCBrZXkgaW4gYW4gb2JqZWN0IHRvIHRoZSByb290IG9mIHRoZSBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBrZXkgVGhlIGtleSB3aG9zZSBuZXN0ZWQga2V5cyB3aWxsIGJlIG1vdmVkIHRvIHJvb3QuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBtb2RpZmllZCBvYmplY3QsIG9yIHRoZSBvcmlnaW5hbCBvYmplY3QgaWYgbm8gbW9kaWZpY2F0aW9uIGhhcHBlbmVkLlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBvYmogPSB7XG4gICAqICAgYTogMSxcbiAgICogICBiOiB7XG4gICAqICAgICBjOiAyLFxuICAgKiAgICAgZDogM1xuICAgKiAgIH0sXG4gICAqICAgZTogNFxuICAgKiB9O1xuICAgKiBhZGROZXN0ZWRLZXlzVG9Sb290KG9iaiwgJ2InKTtcbiAgICogY29uc29sZS5sb2cob2JqKTtcbiAgICogLy8gT3V0cHV0OiB7IGE6IDEsIGU6IDQsIGM6IDIsIGQ6IDMgfVxuICAqL1xuICBzdGF0aWMgYWRkTmVzdGVkS2V5c1RvUm9vdChvYmosIGtleSkge1xuICAgIGlmIChvYmpba2V5XSAmJiB0eXBlb2Ygb2JqW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBBZGQgbmVzdGVkIGtleXMgdG8gcm9vdFxuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIHsgLi4ub2JqW2tleV0gfSk7XG4gICAgICAvLyBEZWxldGUgb3JpZ2luYWwgbmVzdGVkIGtleVxuICAgICAgZGVsZXRlIG9ialtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZXMgYSBzdHJpbmcgdG8gYmUgdXNlZCBpbiBhIFVSTC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgdG8gZW5jb2RlLlxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgZW5jb2RlZCBzdHJpbmcuXG4gICAqL1xuICBzdGF0aWMgZW5jb2RlRm9yVXJsKGlucHV0KSB7XG4gICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChpbnB1dCkucmVwbGFjZSgvWyEnLigpKl0vZywgY2hhciA9PlxuICAgICAgJyUnICsgY2hhci5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgSlNPTiByZXBsYWNlciBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgTWFwLCBTZXQsIGFuZCBjaXJjdWxhciByZWZlcmVuY2VzLlxuICAgKiBUaGlzIHJlcGxhY2VyIGNhbiBiZSB1c2VkIHdpdGggSlNPTi5zdHJpbmdpZnkgdG8gc2FmZWx5IHNlcmlhbGl6ZSBjb21wbGV4IG9iamVjdHMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSByZXBsYWNlciBmdW5jdGlvbiBmb3IgSlNPTi5zdHJpbmdpZnkgdGhhdDpcbiAgICogLSBDb252ZXJ0cyBNYXAgaW5zdGFuY2VzIHRvIHBsYWluIG9iamVjdHNcbiAgICogLSBDb252ZXJ0cyBTZXQgaW5zdGFuY2VzIHRvIGFycmF5c1xuICAgKiAtIFJlcGxhY2VzIGNpcmN1bGFyIHJlZmVyZW5jZXMgd2l0aCAnW0NpcmN1bGFyXScgbWFya2VyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IG9iaiA9IHsgbmFtZTogJ3Rlc3QnLCBtYXA6IG5ldyBNYXAoW1sna2V5JywgJ3ZhbHVlJ11dKSB9O1xuICAgKiBvYmouc2VsZiA9IG9iajsgLy8gY2lyY3VsYXIgcmVmZXJlbmNlXG4gICAqIEpTT04uc3RyaW5naWZ5KG9iaiwgVXRpbHMuZ2V0Q2lyY3VsYXJSZXBsYWNlcigpKTtcbiAgICogLy8gT3V0cHV0OiB7XCJuYW1lXCI6XCJ0ZXN0XCIsXCJtYXBcIjp7XCJrZXlcIjpcInZhbHVlXCJ9LFwic2VsZlwiOlwiW0NpcmN1bGFyXVwifVxuICAgKi9cbiAgc3RhdGljIGdldENpcmN1bGFyUmVwbGFjZXIoKSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0KCk7XG4gICAgcmV0dXJuIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgIH1cbiAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBVdGlscztcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUM1QixNQUFNQyxFQUFFLEdBQUdELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQ0UsUUFBUTs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTUMsS0FBSyxDQUFDO0VBQ1Y7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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
|
|
468
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwicmVxdWlyZSIsImZzIiwicHJvbWlzZXMiLCJVdGlscyIsImdldExvY2FsaXplZFBhdGgiLCJkZWZhdWx0UGF0aCIsImxvY2FsZSIsImZpbGUiLCJiYXNlbmFtZSIsImJhc2VQYXRoIiwiZGlybmFtZSIsImxvY2FsZVBhdGgiLCJqb2luIiwibG9jYWxlRmlsZUV4aXN0cyIsImZpbGVFeGlzdHMiLCJzdWJkaXIiLCJsYW5ndWFnZSIsInNwbGl0IiwibGFuZ3VhZ2VQYXRoIiwibGFuZ3VhZ2VGaWxlRXhpc3RzIiwiYWNjZXNzIiwiaXNQYXRoIiwicyIsInRlc3QiLCJmbGF0dGVuT2JqZWN0Iiwib2JqIiwicGFyZW50S2V5IiwiZGVsaW1pdGVyIiwicmVzdWx0Iiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwibmV3S2V5IiwiaXNQcm9taXNlIiwib2JqZWN0IiwiUHJvbWlzZSIsImdldE9iamVjdEtleVBlcm11dGF0aW9ucyIsImluZGV4IiwiY3VycmVudCIsInJlc3VsdHMiLCJrZXlzIiwidmFsdWVzIiwidmFsdWUiLCJuZXh0SW5kZXgiLCJsZW5ndGgiLCJhc3NpZ24iLCJwdXNoIiwidmFsaWRhdGVQYXJhbXMiLCJwYXJhbXMiLCJ0eXBlcyIsInR5cGUiLCJpc09wdGlvbmFsIiwibyIsInBhcmFtIiwidiIsInQiLCJyZWxhdGl2ZVRpbWVUb0RhdGUiLCJ0ZXh0Iiwibm93IiwiRGF0ZSIsInRvTG93ZXJDYXNlIiwicGFydHMiLCJmaWx0ZXIiLCJwYXJ0IiwiZnV0dXJlIiwicGFzdCIsInN0YXR1cyIsImluZm8iLCJzbGljZSIsInBhaXJzIiwic2hpZnQiLCJzZWNvbmRzIiwibnVtIiwiaW50ZXJ2YWwiLCJ2YWwiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJtaWxsaXNlY29uZHMiLCJ2YWx1ZU9mIiwib2JqZWN0Q29udGFpbnNLZXlWYWx1ZSIsImlzTWF0Y2giLCJhIiwiYiIsIlJlZ0V4cCIsImlzS2V5TWF0Y2giLCJrIiwiaXNWYWx1ZU1hdGNoIiwiZW50cmllcyIsInVuZGVmaW5lZCIsImluY2x1ZGVzIiwidG9TdHJpbmciLCJjaGVja1Byb2hpYml0ZWRLZXl3b3JkcyIsImNvbmZpZyIsImRhdGEiLCJyZXF1ZXN0S2V5d29yZERlbnlsaXN0Iiwia2V5d29yZCIsIm1hdGNoIiwiSlNPTiIsInN0cmluZ2lmeSIsImFkZE5lc3RlZEtleXNUb1Jvb3QiLCJlbmNvZGVGb3JVcmwiLCJpbnB1dCIsImVuY29kZVVSSUNvbXBvbmVudCIsInJlcGxhY2UiLCJjaGFyIiwiY2hhckNvZGVBdCIsInRvVXBwZXJDYXNlIiwiZ2V0Q2lyY3VsYXJSZXBsYWNlciIsInNlZW4iLCJXZWFrU2V0IiwiTWFwIiwiZnJvbUVudHJpZXMiLCJTZXQiLCJBcnJheSIsImZyb20iLCJoYXMiLCJhZGQiLCJnZXROZXN0ZWRQcm9wZXJ0eSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvVXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB1dGlscy5qc1xuICogQGZpbGUgR2VuZXJhbCBwdXJwb3NlIHV0aWxpdGllc1xuICogQGRlc2NyaXB0aW9uIEdlbmVyYWwgcHVycG9zZSB1dGlsaXRpZXMuXG4gKi9cblxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKS5wcm9taXNlcztcblxuLyoqXG4gKiBUaGUgZ2VuZXJhbCBwdXJwb3NlIHV0aWxpdGllcy5cbiAqL1xuY2xhc3MgVXRpbHMge1xuICAvKipcbiAgICogQGZ1bmN0aW9uIGdldExvY2FsaXplZFBhdGhcbiAgICogQGRlc2NyaXB0aW9uIFJldHVybnMgYSBsb2NhbGl6ZWQgZmlsZSBwYXRoIGFjY29yaW5nIHRvIHRoZSBsb2NhbGUuXG4gICAqXG4gICAqIExvY2FsaXplZCBmaWxlcyBhcmUgc2VhcmNoZWQgaW4gc3ViZm9sZGVycyBvZiBhIGdpdmVuIHBhdGgsIGUuZy5cbiAgICpcbiAgICogcm9vdC9cbiAgICog4pSc4pSA4pSAIGJhc2UvICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIHBhdGggdG8gZmlsZXNcbiAgICog4pSCICAg4pSc4pSA4pSAIGV4YW1wbGUuaHRtbCAgICAgICAgIC8vIGRlZmF1bHQgZmlsZVxuICAgKiDilIIgICDilJTilIDilIAgZGUvICAgICAgICAgICAgICAgICAgLy8gZGUgbGFuZ3VhZ2UgZm9sZGVyXG4gICAqIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBleGFtcGxlLmh0bWwgICAgIC8vIGRlIGxvY2FsaXplZCBmaWxlXG4gICAqIOKUgiAgIOKUlOKUgOKUgCBkZS1BVC8gICAgICAgICAgICAgICAvLyBkZS1BVCBsb2NhbGUgZm9sZGVyXG4gICAqIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBleGFtcGxlLmh0bWwgICAgIC8vIGRlLUFUIGxvY2FsaXplZCBmaWxlXG4gICAqXG4gICAqIEZpbGVzIGFyZSBtYXRjaGVkIHdpdGggdGhlIGxvY2FsZSBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxuICAgKiAxLiBMb2NhbGUgbWF0Y2gsIGUuZy4gbG9jYWxlIGBkZS1BVGAgbWF0Y2hlcyBmaWxlIGluIGZvbGRlciBgZGUtQVRgLlxuICAgKiAyLiBMYW5ndWFnZSBtYXRjaCwgZS5nLiBsb2NhbGUgYGRlLUFUYCBtYXRjaGVzIGZpbGUgaW4gZm9sZGVyIGBkZWAuXG4gICAqIDMuIERlZmF1bHQ7IGZpbGUgaW4gYmFzZSBmb2xkZXIgaXMgcmV0dXJuZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBkZWZhdWx0UGF0aCBUaGUgYWJzb2x1dGUgZmlsZSBwYXRoLCB3aGljaCBpcyBhbHNvXG4gICAqIHRoZSBkZWZhdWx0IHBhdGggcmV0dXJuZWQgaWYgbG9jYWxpemF0aW9uIGlzIG5vdCBhdmFpbGFibGUuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGUgVGhlIGxvY2FsZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gVGhlIG9iamVjdCBjb250YWluczpcbiAgICogLSBgcGF0aGA6IFRoZSBwYXRoIHRvIHRoZSBsb2NhbGl6ZWQgZmlsZSwgb3IgdGhlIG9yaWdpbmFsIHBhdGggaWZcbiAgICogICBsb2NhbGl6YXRpb24gaXMgbm90IGF2YWlsYWJsZS5cbiAgICogLSBgc3ViZGlyYDogVGhlIHN1YmRpcmVjdG9yeSBvZiB0aGUgbG9jYWxpemVkIGZpbGUsIG9yIHVuZGVmaW5lZCBpZlxuICAgKiAgIHRoZXJlIGlzIG5vIG1hdGNoaW5nIGxvY2FsaXplZCBmaWxlLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGdldExvY2FsaXplZFBhdGgoZGVmYXVsdFBhdGgsIGxvY2FsZSkge1xuICAgIC8vIEdldCBmaWxlIG5hbWUgYW5kIHBhdGhzXG4gICAgY29uc3QgZmlsZSA9IHBhdGguYmFzZW5hbWUoZGVmYXVsdFBhdGgpO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gcGF0aC5kaXJuYW1lKGRlZmF1bHRQYXRoKTtcblxuICAgIC8vIElmIGxvY2FsZSBpcyBub3Qgc2V0IHJldHVybiBkZWZhdWx0IGZpbGVcbiAgICBpZiAoIWxvY2FsZSkge1xuICAgICAgcmV0dXJuIHsgcGF0aDogZGVmYXVsdFBhdGggfTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmaWxlIGZvciBsb2NhbGUgZXhpc3RzXG4gICAgY29uc3QgbG9jYWxlUGF0aCA9IHBhdGguam9pbihiYXNlUGF0aCwgbG9jYWxlLCBmaWxlKTtcbiAgICBjb25zdCBsb2NhbGVGaWxlRXhpc3RzID0gYXdhaXQgVXRpbHMuZmlsZUV4aXN0cyhsb2NhbGVQYXRoKTtcblxuICAgIC8vIElmIGZpbGUgZm9yIGxvY2FsZSBleGlzdHMgcmV0dXJuIGZpbGVcbiAgICBpZiAobG9jYWxlRmlsZUV4aXN0cykge1xuICAgICAgcmV0dXJuIHsgcGF0aDogbG9jYWxlUGF0aCwgc3ViZGlyOiBsb2NhbGUgfTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmaWxlIGZvciBsYW5ndWFnZSBleGlzdHNcbiAgICBjb25zdCBsYW5ndWFnZSA9IGxvY2FsZS5zcGxpdCgnLScpWzBdO1xuICAgIGNvbnN0IGxhbmd1YWdlUGF0aCA9IHBhdGguam9pbihiYXNlUGF0aCwgbGFuZ3VhZ2UsIGZpbGUpO1xuICAgIGNvbnN0IGxhbmd1YWdlRmlsZUV4aXN0cyA9IGF3YWl0IFV0aWxzLmZpbGVFeGlzdHMobGFuZ3VhZ2VQYXRoKTtcblxuICAgIC8vIElmIGZpbGUgZm9yIGxhbmd1YWdlIGV4aXN0cyByZXR1cm4gZmlsZVxuICAgIGlmIChsYW5ndWFnZUZpbGVFeGlzdHMpIHtcbiAgICAgIHJldHVybiB7IHBhdGg6IGxhbmd1YWdlUGF0aCwgc3ViZGlyOiBsYW5ndWFnZSB9O1xuICAgIH1cblxuICAgIC8vIFJldHVybiBkZWZhdWx0IGZpbGVcbiAgICByZXR1cm4geyBwYXRoOiBkZWZhdWx0UGF0aCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBmdW5jdGlvbiBmaWxlRXhpc3RzXG4gICAqIEBkZXNjcmlwdGlvbiBDaGVja3Mgd2hldGhlciBhIGZpbGUgZXhpc3RzLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0aCBUaGUgZmlsZSBwYXRoLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxCb29sZWFuPn0gSXMgdHJ1ZSBpZiB0aGUgZmlsZSBjYW4gYmUgYWNjZXNzZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHN0YXRpYyBhc3luYyBmaWxlRXhpc3RzKHBhdGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuYWNjZXNzKHBhdGgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBmdW5jdGlvbiBpc1BhdGhcbiAgICogQGRlc2NyaXB0aW9uIEV2YWx1YXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgZmlsZSBwYXRoIChhcyBvcHBvc2VkIHRvIGEgVVJMIGZvciBleGFtcGxlKS5cbiAgICogQHBhcmFtIHtTdHJpbmd9IHMgVGhlIHN0cmluZyB0byBldmFsdWF0ZS5cbiAgICogQHJldHVybnMge0Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZhbHVhdGVkIHN0cmluZyBpcyBhIHBhdGguXG4gICAqL1xuICBzdGF0aWMgaXNQYXRoKHMpIHtcbiAgICByZXR1cm4gLyheXFwvKXwoXlxcLlxcLyl8KF5cXC5cXC5cXC8pLy50ZXN0KHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYXR0ZW5zIGFuIG9iamVjdCBhbmQgY3JhdGVzIG5ldyBrZXlzIHdpdGggY3VzdG9tIGRlbGltaXRlcnMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBmbGF0dGVuLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2RlbGltaXRlcj0nLiddIFRoZSBkZWxpbWl0ZXIgb2YgdGhlIG5ld2x5IGdlbmVyYXRlZCBrZXlzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcmVzdWx0XG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBmbGF0dGVuZWQgb2JqZWN0LlxuICAgKiovXG4gIHN0YXRpYyBmbGF0dGVuT2JqZWN0KG9iaiwgcGFyZW50S2V5LCBkZWxpbWl0ZXIgPSAnLicsIHJlc3VsdCA9IHt9KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBjb25zdCBuZXdLZXkgPSBwYXJlbnRLZXkgPyBwYXJlbnRLZXkgKyBkZWxpbWl0ZXIgKyBrZXkgOiBrZXk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcgJiYgb2JqW2tleV0gIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmZsYXR0ZW5PYmplY3Qob2JqW2tleV0sIG5ld0tleSwgZGVsaW1pdGVyLCByZXN1bHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFtuZXdLZXldID0gb2JqW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGEgUHJvbWlzZS5cbiAgICogQHBhcmFtIHthbnl9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBwcm9taXNlLlxuICAgKi9cbiAgc3RhdGljIGlzUHJvbWlzZShvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgUHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIGFsbCBwZXJtdXRhdGlvbnMgb2YgdGhlIG9yaWdpbmFsIGtleXMuXG4gICAqIEZvciBleGFtcGxlLCB0aGlzIGRlZmluaXRpb246XG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgYTogW3RydWUsIGZhbHNlXSxcbiAgICogICBiOiBbMSwgMl0sXG4gICAqICAgYzogWyd4J11cbiAgICogfVxuICAgKiBgYGBcbiAgICogcGVybXV0YXRlcyB0bzpcbiAgICogYGBgXG4gICAqIFtcbiAgICogICB7IGE6IHRydWUsIGI6IDEsIGM6ICd4JyB9LFxuICAgKiAgIHsgYTogdHJ1ZSwgYjogMiwgYzogJ3gnIH0sXG4gICAqICAgeyBhOiBmYWxzZSwgYjogMSwgYzogJ3gnIH0sXG4gICAqICAgeyBhOiBmYWxzZSwgYjogMiwgYzogJ3gnIH1cbiAgICogXVxuICAgKiBgYGBcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHBlcm11dGF0ZS5cbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBbaW5kZXg9MF0gVGhlIGN1cnJlbnQga2V5IGluZGV4LlxuICAgKiBAcGFyYW0ge09iamVjdH0gW2N1cnJlbnQ9e31dIFRoZSBjdXJyZW50IHJlc3VsdCBlbnRyeSBiZWluZyBjb21wb3NlZC5cbiAgICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdHM9W11dIFRoZSByZXN1bHRpbmcgYXJyYXkgb2YgcGVybXV0YXRpb25zLlxuICAgKi9cbiAgc3RhdGljIGdldE9iamVjdEtleVBlcm11dGF0aW9ucyhvYmplY3QsIGluZGV4ID0gMCwgY3VycmVudCA9IHt9LCByZXN1bHRzID0gW10pIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcbiAgICBjb25zdCBrZXkgPSBrZXlzW2luZGV4XTtcbiAgICBjb25zdCB2YWx1ZXMgPSBvYmplY3Rba2V5XTtcblxuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBjdXJyZW50W2tleV0gPSB2YWx1ZTtcbiAgICAgIGNvbnN0IG5leHRJbmRleCA9IGluZGV4ICsgMTtcblxuICAgICAgaWYgKG5leHRJbmRleCA8IGtleXMubGVuZ3RoKSB7XG4gICAgICAgIFV0aWxzLmdldE9iamVjdEtleVBlcm11dGF0aW9ucyhvYmplY3QsIG5leHRJbmRleCwgY3VycmVudCwgcmVzdWx0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50KTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwYXJhbWV0ZXJzIGFuZCB0aHJvd3MgaWYgYSBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cbiAgICogRXhhbXBsZSBwYXJhbWV0ZXIgdHlwZXMgc3ludGF4OlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgIHBhcmFtZXRlck5hbWU6IHtcbiAgICogICAgICB0OiAnYm9vbGVhbicsXG4gICAqICAgICAgdjogaXNCb29sZWFuLFxuICAgKiAgICAgIG86IHRydWVcbiAgICogICB9LFxuICAgKiAgIC4uLlxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIHRvIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IHR5cGVzIFRoZSBwYXJhbWV0ZXIgdHlwZXMgdXNlZCBmb3IgdmFsaWRhdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IHR5cGVzLnQgVGhlIHBhcmFtZXRlciB0eXBlOyB1c2VkIGZvciBlcnJvciBtZXNzYWdlLCBub3QgZm9yIHZhbGlkYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlcy52IFRoZSBmdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVyIHZhbHVlLlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFt0eXBlcy5vPWZhbHNlXSBJcyB0cnVlIGlmIHRoZSBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuXG4gICAqL1xuICBzdGF0aWMgdmFsaWRhdGVQYXJhbXMocGFyYW1zLCB0eXBlcykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlc1trZXldO1xuICAgICAgY29uc3QgaXNPcHRpb25hbCA9ICEhdHlwZS5vO1xuICAgICAgY29uc3QgcGFyYW0gPSBwYXJhbXNba2V5XTtcbiAgICAgIGlmICghKGlzT3B0aW9uYWwgJiYgcGFyYW0gPT0gbnVsbCkgJiYgIXR5cGUudihwYXJhbSkpIHtcbiAgICAgICAgdGhyb3cgYEludmFsaWQgcGFyYW1ldGVyICR7a2V5fSBtdXN0IGJlIG9mIHR5cGUgJHt0eXBlLnR9IGJ1dCBpcyAke3R5cGVvZiBwYXJhbX1gO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgcmVsYXRpdmUgZGF0ZSBiYXNlZCBvbiBhIHN0cmluZy5cbiAgICogQHBhcmFtIHtTdHJpbmd9IHRleHQgVGhlIHN0cmluZyB0byBpbnRlcnByZXQgdGhlIGRhdGUgZnJvbS5cbiAgICogQHBhcmFtIHtEYXRlfSBub3cgVGhlIGRhdGUgdGhlIHN0cmluZyBpcyBjb21wYXJpbmcgYWdhaW5zdC5cbiAgICogQHJldHVybnMge09iamVjdH0gVGhlIHJlbGF0aXZlIGRhdGUgb2JqZWN0LlxuICAgKiovXG4gIHN0YXRpYyByZWxhdGl2ZVRpbWVUb0RhdGUodGV4dCwgbm93ID0gbmV3IERhdGUoKSkge1xuICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgbGV0IHBhcnRzID0gdGV4dC5zcGxpdCgnICcpO1xuXG4gICAgLy8gRmlsdGVyIG91dCB3aGl0ZXNwYWNlXG4gICAgcGFydHMgPSBwYXJ0cy5maWx0ZXIocGFydCA9PiBwYXJ0ICE9PSAnJyk7XG5cbiAgICBjb25zdCBmdXR1cmUgPSBwYXJ0c1swXSA9PT0gJ2luJztcbiAgICBjb25zdCBwYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPT09ICdhZ28nO1xuXG4gICAgaWYgKCFmdXR1cmUgJiYgIXBhc3QgJiYgdGV4dCAhPT0gJ25vdycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgaW5mbzogXCJUaW1lIHNob3VsZCBlaXRoZXIgc3RhcnQgd2l0aCAnaW4nIG9yIGVuZCB3aXRoICdhZ28nXCIsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChmdXR1cmUgJiYgcGFzdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBpbmZvOiBcIlRpbWUgY2Fubm90IGhhdmUgYm90aCAnaW4nIGFuZCAnYWdvJ1wiLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBzdHJpcCB0aGUgJ2Fnbycgb3IgJ2luJ1xuICAgIGlmIChmdXR1cmUpIHtcbiAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHBhc3RcbiAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMCwgcGFydHMubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCAlIDIgIT09IDAgJiYgdGV4dCAhPT0gJ25vdycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgaW5mbzogJ0ludmFsaWQgdGltZSBzdHJpbmcuIERhbmdsaW5nIHVuaXQgb3IgbnVtYmVyLicsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHBhaXJzID0gW107XG4gICAgd2hpbGUgKHBhcnRzLmxlbmd0aCkge1xuICAgICAgcGFpcnMucHVzaChbcGFydHMuc2hpZnQoKSwgcGFydHMuc2hpZnQoKV0pO1xuICAgIH1cblxuICAgIGxldCBzZWNvbmRzID0gMDtcbiAgICBmb3IgKGNvbnN0IFtudW0sIGludGVydmFsXSBvZiBwYWlycykge1xuICAgICAgY29uc3QgdmFsID0gTnVtYmVyKG51bSk7XG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICBpbmZvOiBgJyR7bnVtfScgaXMgbm90IGFuIGludGVnZXIuYCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChpbnRlcnZhbCkge1xuICAgICAgICBjYXNlICd5cic6XG4gICAgICAgIGNhc2UgJ3lycyc6XG4gICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICBjYXNlICd5ZWFycyc6XG4gICAgICAgICAgc2Vjb25kcyArPSB2YWwgKiAzMTUzNjAwMDsgLy8gMzY1ICogMjQgKiA2MCAqIDYwXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnd2snOlxuICAgICAgICBjYXNlICd3a3MnOlxuICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgY2FzZSAnd2Vla3MnOlxuICAgICAgICAgIHNlY29uZHMgKz0gdmFsICogNjA0ODAwOyAvLyA3ICogMjQgKiA2MCAqIDYwXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIGNhc2UgJ2RheXMnOlxuICAgICAgICAgIHNlY29uZHMgKz0gdmFsICogODY0MDA7IC8vIDI0ICogNjAgKiA2MFxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2hyJzpcbiAgICAgICAgY2FzZSAnaHJzJzpcbiAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgICBzZWNvbmRzICs9IHZhbCAqIDM2MDA7IC8vIDYwICogNjBcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtaW4nOlxuICAgICAgICBjYXNlICdtaW5zJzpcbiAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgY2FzZSAnbWludXRlcyc6XG4gICAgICAgICAgc2Vjb25kcyArPSB2YWwgKiA2MDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzZWMnOlxuICAgICAgICBjYXNlICdzZWNzJzpcbiAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgICAgc2Vjb25kcyArPSB2YWw7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAgICAgaW5mbzogYEludmFsaWQgaW50ZXJ2YWw6ICcke2ludGVydmFsfSdgLFxuICAgICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gc2Vjb25kcyAqIDEwMDA7XG4gICAgaWYgKGZ1dHVyZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICAgIGluZm86ICdmdXR1cmUnLFxuICAgICAgICByZXN1bHQ6IG5ldyBEYXRlKG5vdy52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHBhc3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgICBpbmZvOiAncGFzdCcsXG4gICAgICAgIHJlc3VsdDogbmV3IERhdGUobm93LnZhbHVlT2YoKSAtIG1pbGxpc2Vjb25kcyksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcbiAgICAgICAgaW5mbzogJ3ByZXNlbnQnLFxuICAgICAgICByZXN1bHQ6IG5ldyBEYXRlKG5vdy52YWx1ZU9mKCkpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVlcC1zY2FucyBhbiBvYmplY3QgZm9yIGEgbWF0Y2hpbmcga2V5L3ZhbHVlIGRlZmluaXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBzY2FuLlxuICAgKiBAcGFyYW0ge1N0cmluZyB8IHVuZGVmaW5lZH0ga2V5IFRoZSBrZXkgdG8gbWF0Y2gsIG9yIHVuZGVmaW5lZCBpZiBvbmx5IHRoZSB2YWx1ZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAgICogQHBhcmFtIHthbnkgfCB1bmRlZmluZWR9IHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCwgb3IgdW5kZWZpbmVkIGlmIG9ubHkgdGhlIGtleSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAgICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgYSBtYXRjaCB3YXMgZm91bmQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHN0YXRpYyBvYmplY3RDb250YWluc0tleVZhbHVlKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIGNvbnN0IGlzTWF0Y2ggPSAoYSwgYikgPT4gKHR5cGVvZiBhID09PSAnc3RyaW5nJyAmJiBuZXcgUmVnRXhwKGIpLnRlc3QoYSkpIHx8IGEgPT09IGI7XG4gICAgY29uc3QgaXNLZXlNYXRjaCA9IGsgPT4gaXNNYXRjaChrLCBrZXkpO1xuICAgIGNvbnN0IGlzVmFsdWVNYXRjaCA9IHYgPT4gaXNNYXRjaCh2LCB2YWx1ZSk7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlID09PSB1bmRlZmluZWQgJiYgaXNLZXlNYXRjaChrKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpc1ZhbHVlTWF0Y2godikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGtleSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXNLZXlNYXRjaChrKSAmJiBpc1ZhbHVlTWF0Y2godikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoWydbb2JqZWN0IE9iamVjdF0nLCAnW29iamVjdCBBcnJheV0nXS5pbmNsdWRlcyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodikpKSB7XG4gICAgICAgIHJldHVybiBVdGlscy5vYmplY3RDb250YWluc0tleVZhbHVlKHYsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgY2hlY2tQcm9oaWJpdGVkS2V5d29yZHMoY29uZmlnLCBkYXRhKSB7XG4gICAgaWYgKGNvbmZpZz8ucmVxdWVzdEtleXdvcmREZW55bGlzdCkge1xuICAgICAgLy8gU2NhbiByZXF1ZXN0IGRhdGEgZm9yIGRlbmllZCBrZXl3b3Jkc1xuICAgICAgZm9yIChjb25zdCBrZXl3b3JkIG9mIGNvbmZpZy5yZXF1ZXN0S2V5d29yZERlbnlsaXN0KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gVXRpbHMub2JqZWN0Q29udGFpbnNLZXlWYWx1ZShkYXRhLCBrZXl3b3JkLmtleSwga2V5d29yZC52YWx1ZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHRocm93IGBQcm9oaWJpdGVkIGtleXdvcmQgaW4gcmVxdWVzdCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGtleXdvcmQpfS5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBuZXN0ZWQga2V5cyBvZiBhIHNwZWNpZmllZCBrZXkgaW4gYW4gb2JqZWN0IHRvIHRoZSByb290IG9mIHRoZSBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBrZXkgVGhlIGtleSB3aG9zZSBuZXN0ZWQga2V5cyB3aWxsIGJlIG1vdmVkIHRvIHJvb3QuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBtb2RpZmllZCBvYmplY3QsIG9yIHRoZSBvcmlnaW5hbCBvYmplY3QgaWYgbm8gbW9kaWZpY2F0aW9uIGhhcHBlbmVkLlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBvYmogPSB7XG4gICAqICAgYTogMSxcbiAgICogICBiOiB7XG4gICAqICAgICBjOiAyLFxuICAgKiAgICAgZDogM1xuICAgKiAgIH0sXG4gICAqICAgZTogNFxuICAgKiB9O1xuICAgKiBhZGROZXN0ZWRLZXlzVG9Sb290KG9iaiwgJ2InKTtcbiAgICogY29uc29sZS5sb2cob2JqKTtcbiAgICogLy8gT3V0cHV0OiB7IGE6IDEsIGU6IDQsIGM6IDIsIGQ6IDMgfVxuICAqL1xuICBzdGF0aWMgYWRkTmVzdGVkS2V5c1RvUm9vdChvYmosIGtleSkge1xuICAgIGlmIChvYmpba2V5XSAmJiB0eXBlb2Ygb2JqW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBBZGQgbmVzdGVkIGtleXMgdG8gcm9vdFxuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIHsgLi4ub2JqW2tleV0gfSk7XG4gICAgICAvLyBEZWxldGUgb3JpZ2luYWwgbmVzdGVkIGtleVxuICAgICAgZGVsZXRlIG9ialtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZXMgYSBzdHJpbmcgdG8gYmUgdXNlZCBpbiBhIFVSTC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgdG8gZW5jb2RlLlxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgZW5jb2RlZCBzdHJpbmcuXG4gICAqL1xuICBzdGF0aWMgZW5jb2RlRm9yVXJsKGlucHV0KSB7XG4gICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChpbnB1dCkucmVwbGFjZSgvWyEnLigpKl0vZywgY2hhciA9PlxuICAgICAgJyUnICsgY2hhci5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgSlNPTiByZXBsYWNlciBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgTWFwLCBTZXQsIGFuZCBjaXJjdWxhciByZWZlcmVuY2VzLlxuICAgKiBUaGlzIHJlcGxhY2VyIGNhbiBiZSB1c2VkIHdpdGggSlNPTi5zdHJpbmdpZnkgdG8gc2FmZWx5IHNlcmlhbGl6ZSBjb21wbGV4IG9iamVjdHMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSByZXBsYWNlciBmdW5jdGlvbiBmb3IgSlNPTi5zdHJpbmdpZnkgdGhhdDpcbiAgICogLSBDb252ZXJ0cyBNYXAgaW5zdGFuY2VzIHRvIHBsYWluIG9iamVjdHNcbiAgICogLSBDb252ZXJ0cyBTZXQgaW5zdGFuY2VzIHRvIGFycmF5c1xuICAgKiAtIFJlcGxhY2VzIGNpcmN1bGFyIHJlZmVyZW5jZXMgd2l0aCAnW0NpcmN1bGFyXScgbWFya2VyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IG9iaiA9IHsgbmFtZTogJ3Rlc3QnLCBtYXA6IG5ldyBNYXAoW1sna2V5JywgJ3ZhbHVlJ11dKSB9O1xuICAgKiBvYmouc2VsZiA9IG9iajsgLy8gY2lyY3VsYXIgcmVmZXJlbmNlXG4gICAqIEpTT04uc3RyaW5naWZ5KG9iaiwgVXRpbHMuZ2V0Q2lyY3VsYXJSZXBsYWNlcigpKTtcbiAgICogLy8gT3V0cHV0OiB7XCJuYW1lXCI6XCJ0ZXN0XCIsXCJtYXBcIjp7XCJrZXlcIjpcInZhbHVlXCJ9LFwic2VsZlwiOlwiW0NpcmN1bGFyXVwifVxuICAgKi9cbiAgc3RhdGljIGdldENpcmN1bGFyUmVwbGFjZXIoKSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0KCk7XG4gICAgcmV0dXJuIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgIH1cbiAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIG5lc3RlZCBwcm9wZXJ0eSB2YWx1ZSBmcm9tIGFuIG9iamVjdCB1c2luZyBkb3Qgbm90YXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBnZXQgdGhlIHByb3BlcnR5IGZyb20uXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIGluIGRvdCBub3RhdGlvbiwgZS5nLiAnZGF0YWJhc2VPcHRpb25zLmFsbG93UHVibGljRXhwbGFpbicuXG4gICAqIEByZXR1cm5zIHthbnl9IFRoZSBwcm9wZXJ0eSB2YWx1ZSBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kLlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBvYmogPSB7IGRhdGFiYXNlOiB7IG9wdGlvbnM6IHsgZW5hYmxlZDogdHJ1ZSB9IH0gfTtcbiAgICogVXRpbHMuZ2V0TmVzdGVkUHJvcGVydHkob2JqLCAnZGF0YWJhc2Uub3B0aW9ucy5lbmFibGVkJyk7XG4gICAqIC8vIE91dHB1dDogdHJ1ZVxuICAgKi9cbiAgc3RhdGljIGdldE5lc3RlZFByb3BlcnR5KG9iaiwgcGF0aCkge1xuICAgIGlmICghb2JqIHx8ICFwYXRoKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGxldCBjdXJyZW50ID0gb2JqO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGlmIChjdXJyZW50ID09IG51bGwgfHwgdHlwZW9mIGN1cnJlbnQgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudFtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFV0aWxzO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQzVCLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDRSxRQUFROztBQUVqQztBQUNBO0FBQ0E7QUFDQSxNQUFNQyxLQUFLLENBQUM7RUFDVjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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
|
package/lib/batch.js
CHANGED
|
@@ -14,7 +14,7 @@ function mountOnto(router) {
|
|
|
14
14
|
function parseURL(urlString) {
|
|
15
15
|
try {
|
|
16
16
|
return new URL(urlString);
|
|
17
|
-
} catch
|
|
17
|
+
} catch {
|
|
18
18
|
return undefined;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -130,4 +130,4 @@ module.exports = {
|
|
|
130
130
|
mountOnto,
|
|
131
131
|
makeBatchRoutingPathFunction
|
|
132
132
|
};
|
|
133
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJwYXRoIiwiYmF0Y2hQYXRoIiwibW91bnRPbnRvIiwicm91dGVyIiwicm91dGUiLCJyZXEiLCJoYW5kbGVCYXRjaCIsInBhcnNlVVJMIiwidXJsU3RyaW5nIiwiVVJMIiwiZXJyb3IiLCJ1bmRlZmluZWQiLCJtYWtlQmF0Y2hSb3V0aW5nUGF0aEZ1bmN0aW9uIiwib3JpZ2luYWxVcmwiLCJzZXJ2ZXJVUkwiLCJwdWJsaWNTZXJ2ZXJVUkwiLCJhcGlQcmVmaXhMZW5ndGgiLCJsZW5ndGgiLCJhcGlQcmVmaXgiLCJzbGljZSIsIm1ha2VSb3V0YWJsZVBhdGgiLCJyZXF1ZXN0UGF0aCIsIkVycm9yIiwiSU5WQUxJRF9KU09OIiwicG9zaXgiLCJqb2luIiwicGF0aG5hbWUiLCJsb2NhbFBhdGgiLCJwdWJsaWNQYXRoIiwic3RhcnRzV2l0aExvY2FsIiwic3RhcnRzV2l0aCIsInN0YXJ0c1dpdGhQdWJsaWMiLCJwYXRoTGVuZ3RoVG9Vc2UiLCJNYXRoIiwibWF4IiwibmV3UGF0aCIsIkFycmF5IiwiaXNBcnJheSIsImJvZHkiLCJyZXF1ZXN0cyIsImVuZHNXaXRoIiwiY29uZmlnIiwiYmF0Y2giLCJ0cmFuc2FjdGlvblJldHJpZXMiLCJpbml0aWFsUHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwidHJhbnNhY3Rpb24iLCJkYXRhYmFzZSIsImNyZWF0ZVRyYW5zYWN0aW9uYWxTZXNzaW9uIiwidGhlbiIsInByb21pc2VzIiwibWFwIiwicmVzdFJlcXVlc3QiLCJyb3V0YWJsZVBhdGgiLCJyZXF1ZXN0IiwiYXV0aCIsImluZm8iLCJ0cnlSb3V0ZVJlcXVlc3QiLCJtZXRob2QiLCJyZXNwb25zZSIsInN1Y2Nlc3MiLCJjb2RlIiwibWVzc2FnZSIsImFsbCIsInJlc3VsdHMiLCJmaW5kIiwicmVzdWx0IiwiYWJvcnRUcmFuc2FjdGlvbmFsU2Vzc2lvbiIsInJlamVjdCIsImNvbW1pdFRyYW5zYWN0aW9uYWxTZXNzaW9uIiwiY2F0Y2giLCJlcnJvckl0ZW0iLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2JhdGNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbi8vIFRoZXNlIG1ldGhvZHMgaGFuZGxlIGJhdGNoIHJlcXVlc3RzLlxuY29uc3QgYmF0Y2hQYXRoID0gJy9iYXRjaCc7XG5cbi8vIE1vdW50cyBhIGJhdGNoLWhhbmRsZXIgb250byBhIFByb21pc2VSb3V0ZXIuXG5mdW5jdGlvbiBtb3VudE9udG8ocm91dGVyKSB7XG4gIHJvdXRlci5yb3V0ZSgnUE9TVCcsIGJhdGNoUGF0aCwgcmVxID0+IHtcbiAgICByZXR1cm4gaGFuZGxlQmF0Y2gocm91dGVyLCByZXEpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VVUkwodXJsU3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodXJsU3RyaW5nKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VCYXRjaFJvdXRpbmdQYXRoRnVuY3Rpb24ob3JpZ2luYWxVcmwsIHNlcnZlclVSTCwgcHVibGljU2VydmVyVVJMKSB7XG4gIHNlcnZlclVSTCA9IHNlcnZlclVSTCA/IHBhcnNlVVJMKHNlcnZlclVSTCkgOiB1bmRlZmluZWQ7XG4gIHB1YmxpY1NlcnZlclVSTCA9IHB1YmxpY1NlcnZlclVSTCA/IHBhcnNlVVJMKHB1YmxpY1NlcnZlclVSTCkgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgYXBpUHJlZml4TGVuZ3RoID0gb3JpZ2luYWxVcmwubGVuZ3RoIC0gYmF0Y2hQYXRoLmxlbmd0aDtcbiAgbGV0IGFwaVByZWZpeCA9IG9yaWdpbmFsVXJsLnNsaWNlKDAsIGFwaVByZWZpeExlbmd0aCk7XG5cbiAgY29uc3QgbWFrZVJvdXRhYmxlUGF0aCA9IGZ1bmN0aW9uIChyZXF1ZXN0UGF0aCkge1xuICAgIC8vIFRoZSByb3V0YWJsZVBhdGggaXMgdGhlIHBhdGggbWludXMgdGhlIGFwaSBwcmVmaXhcbiAgICBpZiAocmVxdWVzdFBhdGguc2xpY2UoMCwgYXBpUHJlZml4Lmxlbmd0aCkgIT0gYXBpUHJlZml4KSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9KU09OLCAnY2Fubm90IHJvdXRlIGJhdGNoIHBhdGggJyArIHJlcXVlc3RQYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGgucG9zaXguam9pbignLycsIHJlcXVlc3RQYXRoLnNsaWNlKGFwaVByZWZpeC5sZW5ndGgpKTtcbiAgfTtcblxuICBpZiAoc2VydmVyVVJMICYmIHB1YmxpY1NlcnZlclVSTCAmJiBzZXJ2ZXJVUkwucGF0aG5hbWUgIT0gcHVibGljU2VydmVyVVJMLnBhdGhuYW1lKSB7XG4gICAgY29uc3QgbG9jYWxQYXRoID0gc2VydmVyVVJMLnBhdGhuYW1lO1xuICAgIGNvbnN0IHB1YmxpY1BhdGggPSBwdWJsaWNTZXJ2ZXJVUkwucGF0aG5hbWU7XG5cbiAgICAvLyBPdmVycmlkZSB0aGUgYXBpIHByZWZpeFxuICAgIGFwaVByZWZpeCA9IGxvY2FsUGF0aDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHJlcXVlc3RQYXRoKSB7XG4gICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIHNlcnZlciB1cmwgd2FzIHVzZWQgYnkgZmlndXJpbmcgb3V0IHdoaWNoXG4gICAgICAvLyBwYXRoIG1vcmUgY2xvc2VseSBtYXRjaGVzIHJlcXVlc3RQYXRoXG4gICAgICBjb25zdCBzdGFydHNXaXRoTG9jYWwgPSByZXF1ZXN0UGF0aC5zdGFydHNXaXRoKGxvY2FsUGF0aCk7XG4gICAgICBjb25zdCBzdGFydHNXaXRoUHVibGljID0gcmVxdWVzdFBhdGguc3RhcnRzV2l0aChwdWJsaWNQYXRoKTtcbiAgICAgIGNvbnN0IHBhdGhMZW5ndGhUb1VzZSA9XG4gICAgICAgIHN0YXJ0c1dpdGhMb2NhbCAmJiBzdGFydHNXaXRoUHVibGljXG4gICAgICAgICAgPyBNYXRoLm1heChsb2NhbFBhdGgubGVuZ3RoLCBwdWJsaWNQYXRoLmxlbmd0aClcbiAgICAgICAgICA6IHN0YXJ0c1dpdGhMb2NhbFxuICAgICAgICAgICAgPyBsb2NhbFBhdGgubGVuZ3RoXG4gICAgICAgICAgICA6IHB1YmxpY1BhdGgubGVuZ3RoO1xuXG4gICAgICBjb25zdCBuZXdQYXRoID0gcGF0aC5wb3NpeC5qb2luKCcvJywgbG9jYWxQYXRoLCAnLycsIHJlcXVlc3RQYXRoLnNsaWNlKHBhdGhMZW5ndGhUb1VzZSkpO1xuXG4gICAgICAvLyBVc2UgdGhlIG1ldGhvZCBmb3IgbG9jYWwgcm91dGluZ1xuICAgICAgcmV0dXJuIG1ha2VSb3V0YWJsZVBhdGgobmV3UGF0aCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBtYWtlUm91dGFibGVQYXRoO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSBmb3IgYSB7cmVzcG9uc2V9IG9iamVjdC5cbi8vIFRPRE86IHBhc3MgYWxvbmcgYXV0aCBjb3JyZWN0bHlcbmZ1bmN0aW9uIGhhbmRsZUJhdGNoKHJvdXRlciwgcmVxKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyZXEuYm9keT8ucmVxdWVzdHMpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfSlNPTiwgJ3JlcXVlc3RzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIC8vIFRoZSBiYXRjaCBwYXRocyBhcmUgYWxsIGZyb20gdGhlIHJvb3Qgb2Ygb3VyIGRvbWFpbi5cbiAgLy8gVGhhdCBtZWFucyB0aGV5IGluY2x1ZGUgdGhlIEFQSSBwcmVmaXgsIHRoYXQgdGhlIEFQSSBpcyBtb3VudGVkXG4gIC8vIHRvLiBIb3dldmVyLCBvdXIgcHJvbWlzZSByb3V0ZXIgZG9lcyBub3Qgcm91dGUgdGhlIGFwaSBwcmVmaXguIFNvXG4gIC8vIHdlIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgQVBJIHByZWZpeCwgc28gdGhhdCB3ZSBjYW4gc3RyaXAgaXRcbiAgLy8gZnJvbSBhbGwgdGhlIHN1YnJlcXVlc3RzLlxuICBpZiAoIXJlcS5vcmlnaW5hbFVybC5lbmRzV2l0aChiYXRjaFBhdGgpKSB7XG4gICAgdGhyb3cgJ2ludGVybmFsIHJvdXRpbmcgcHJvYmxlbSAtIGV4cGVjdGVkIHVybCB0byBlbmQgd2l0aCBiYXRjaCc7XG4gIH1cblxuICBjb25zdCBtYWtlUm91dGFibGVQYXRoID0gbWFrZUJhdGNoUm91dGluZ1BhdGhGdW5jdGlvbihcbiAgICByZXEub3JpZ2luYWxVcmwsXG4gICAgcmVxLmNvbmZpZy5zZXJ2ZXJVUkwsXG4gICAgcmVxLmNvbmZpZy5wdWJsaWNTZXJ2ZXJVUkxcbiAgKTtcblxuICBjb25zdCBiYXRjaCA9IHRyYW5zYWN0aW9uUmV0cmllcyA9PiB7XG4gICAgbGV0IGluaXRpYWxQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgaWYgKHJlcS5ib2R5Py50cmFuc2FjdGlvbiA9PT0gdHJ1ZSkge1xuICAgICAgaW5pdGlhbFByb21pc2UgPSByZXEuY29uZmlnLmRhdGFiYXNlLmNyZWF0ZVRyYW5zYWN0aW9uYWxTZXNzaW9uKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluaXRpYWxQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgcHJvbWlzZXMgPSByZXEuYm9keT8ucmVxdWVzdHMubWFwKHJlc3RSZXF1ZXN0ID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGFibGVQYXRoID0gbWFrZVJvdXRhYmxlUGF0aChyZXN0UmVxdWVzdC5wYXRoKTtcblxuICAgICAgICAvLyBDb25zdHJ1Y3QgYSByZXF1ZXN0IHRoYXQgd2UgY2FuIHNlbmQgdG8gYSBoYW5kbGVyXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgICAgYm9keTogcmVzdFJlcXVlc3QuYm9keSxcbiAgICAgICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICAgICAgYXV0aDogcmVxLmF1dGgsXG4gICAgICAgICAgaW5mbzogcmVxLmluZm8sXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHJvdXRlci50cnlSb3V0ZVJlcXVlc3QocmVzdFJlcXVlc3QubWV0aG9kLCByb3V0YWJsZVBhdGgsIHJlcXVlc3QpLnRoZW4oXG4gICAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogcmVzcG9uc2UucmVzcG9uc2UgfTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiB7IGNvZGU6IGVycm9yLmNvZGUsIGVycm9yOiBlcnJvci5tZXNzYWdlIH0gfTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgICAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgICAgICBpZiAocmVxLmJvZHk/LnRyYW5zYWN0aW9uID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0cy5maW5kKHJlc3VsdCA9PiB0eXBlb2YgcmVzdWx0LmVycm9yID09PSAnb2JqZWN0JykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcS5jb25maWcuZGF0YWJhc2UuYWJvcnRUcmFuc2FjdGlvbmFsU2Vzc2lvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7IHJlc3BvbnNlOiByZXN1bHRzIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXEuY29uZmlnLmRhdGFiYXNlLmNvbW1pdFRyYW5zYWN0aW9uYWxTZXNzaW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHJlc3VsdHMgfTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7IHJlc3BvbnNlOiByZXN1bHRzIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGVycm9yICYmXG4gICAgICAgICAgICBlcnJvci5yZXNwb25zZSAmJlxuICAgICAgICAgICAgZXJyb3IucmVzcG9uc2UuZmluZChcbiAgICAgICAgICAgICAgZXJyb3JJdGVtID0+IHR5cGVvZiBlcnJvckl0ZW0uZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9ySXRlbS5lcnJvci5jb2RlID09PSAyNTFcbiAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uUmV0cmllcyA+IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBiYXRjaCh0cmFuc2FjdGlvblJldHJpZXMgLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICByZXR1cm4gYmF0Y2goNSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtb3VudE9udG8sXG4gIG1ha2VCYXRjaFJvdXRpbmdQYXRoRnVuY3Rpb24sXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDRCxLQUFLO0FBQ3pDLE1BQU1FLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUM1QjtBQUNBLE1BQU1FLFNBQVMsR0FBRyxRQUFROztBQUUxQjtBQUNBLFNBQVNDLFNBQVNBLENBQUNDLE1BQU0sRUFBRTtFQUN6QkEsTUFBTSxDQUFDQyxLQUFLLENBQUMsTUFBTSxFQUFFSCxTQUFTLEVBQUVJLEdBQUcsSUFBSTtJQUNyQyxPQUFPQyxXQUFXLENBQUNILE1BQU0sRUFBRUUsR0FB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
|
|
133
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJwYXRoIiwiYmF0Y2hQYXRoIiwibW91bnRPbnRvIiwicm91dGVyIiwicm91dGUiLCJyZXEiLCJoYW5kbGVCYXRjaCIsInBhcnNlVVJMIiwidXJsU3RyaW5nIiwiVVJMIiwidW5kZWZpbmVkIiwibWFrZUJhdGNoUm91dGluZ1BhdGhGdW5jdGlvbiIsIm9yaWdpbmFsVXJsIiwic2VydmVyVVJMIiwicHVibGljU2VydmVyVVJMIiwiYXBpUHJlZml4TGVuZ3RoIiwibGVuZ3RoIiwiYXBpUHJlZml4Iiwic2xpY2UiLCJtYWtlUm91dGFibGVQYXRoIiwicmVxdWVzdFBhdGgiLCJFcnJvciIsIklOVkFMSURfSlNPTiIsInBvc2l4Iiwiam9pbiIsInBhdGhuYW1lIiwibG9jYWxQYXRoIiwicHVibGljUGF0aCIsInN0YXJ0c1dpdGhMb2NhbCIsInN0YXJ0c1dpdGgiLCJzdGFydHNXaXRoUHVibGljIiwicGF0aExlbmd0aFRvVXNlIiwiTWF0aCIsIm1heCIsIm5ld1BhdGgiLCJBcnJheSIsImlzQXJyYXkiLCJib2R5IiwicmVxdWVzdHMiLCJlbmRzV2l0aCIsImNvbmZpZyIsImJhdGNoIiwidHJhbnNhY3Rpb25SZXRyaWVzIiwiaW5pdGlhbFByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRyYW5zYWN0aW9uIiwiZGF0YWJhc2UiLCJjcmVhdGVUcmFuc2FjdGlvbmFsU2Vzc2lvbiIsInRoZW4iLCJwcm9taXNlcyIsIm1hcCIsInJlc3RSZXF1ZXN0Iiwicm91dGFibGVQYXRoIiwicmVxdWVzdCIsImF1dGgiLCJpbmZvIiwidHJ5Um91dGVSZXF1ZXN0IiwibWV0aG9kIiwicmVzcG9uc2UiLCJzdWNjZXNzIiwiZXJyb3IiLCJjb2RlIiwibWVzc2FnZSIsImFsbCIsInJlc3VsdHMiLCJmaW5kIiwicmVzdWx0IiwiYWJvcnRUcmFuc2FjdGlvbmFsU2Vzc2lvbiIsInJlamVjdCIsImNvbW1pdFRyYW5zYWN0aW9uYWxTZXNzaW9uIiwiY2F0Y2giLCJlcnJvckl0ZW0iLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2JhdGNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbi8vIFRoZXNlIG1ldGhvZHMgaGFuZGxlIGJhdGNoIHJlcXVlc3RzLlxuY29uc3QgYmF0Y2hQYXRoID0gJy9iYXRjaCc7XG5cbi8vIE1vdW50cyBhIGJhdGNoLWhhbmRsZXIgb250byBhIFByb21pc2VSb3V0ZXIuXG5mdW5jdGlvbiBtb3VudE9udG8ocm91dGVyKSB7XG4gIHJvdXRlci5yb3V0ZSgnUE9TVCcsIGJhdGNoUGF0aCwgcmVxID0+IHtcbiAgICByZXR1cm4gaGFuZGxlQmF0Y2gocm91dGVyLCByZXEpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VVUkwodXJsU3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodXJsU3RyaW5nKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlQmF0Y2hSb3V0aW5nUGF0aEZ1bmN0aW9uKG9yaWdpbmFsVXJsLCBzZXJ2ZXJVUkwsIHB1YmxpY1NlcnZlclVSTCkge1xuICBzZXJ2ZXJVUkwgPSBzZXJ2ZXJVUkwgPyBwYXJzZVVSTChzZXJ2ZXJVUkwpIDogdW5kZWZpbmVkO1xuICBwdWJsaWNTZXJ2ZXJVUkwgPSBwdWJsaWNTZXJ2ZXJVUkwgPyBwYXJzZVVSTChwdWJsaWNTZXJ2ZXJVUkwpIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGFwaVByZWZpeExlbmd0aCA9IG9yaWdpbmFsVXJsLmxlbmd0aCAtIGJhdGNoUGF0aC5sZW5ndGg7XG4gIGxldCBhcGlQcmVmaXggPSBvcmlnaW5hbFVybC5zbGljZSgwLCBhcGlQcmVmaXhMZW5ndGgpO1xuXG4gIGNvbnN0IG1ha2VSb3V0YWJsZVBhdGggPSBmdW5jdGlvbiAocmVxdWVzdFBhdGgpIHtcbiAgICAvLyBUaGUgcm91dGFibGVQYXRoIGlzIHRoZSBwYXRoIG1pbnVzIHRoZSBhcGkgcHJlZml4XG4gICAgaWYgKHJlcXVlc3RQYXRoLnNsaWNlKDAsIGFwaVByZWZpeC5sZW5ndGgpICE9IGFwaVByZWZpeCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfSlNPTiwgJ2Nhbm5vdCByb3V0ZSBiYXRjaCBwYXRoICcgKyByZXF1ZXN0UGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoLnBvc2l4LmpvaW4oJy8nLCByZXF1ZXN0UGF0aC5zbGljZShhcGlQcmVmaXgubGVuZ3RoKSk7XG4gIH07XG5cbiAgaWYgKHNlcnZlclVSTCAmJiBwdWJsaWNTZXJ2ZXJVUkwgJiYgc2VydmVyVVJMLnBhdGhuYW1lICE9IHB1YmxpY1NlcnZlclVSTC5wYXRobmFtZSkge1xuICAgIGNvbnN0IGxvY2FsUGF0aCA9IHNlcnZlclVSTC5wYXRobmFtZTtcbiAgICBjb25zdCBwdWJsaWNQYXRoID0gcHVibGljU2VydmVyVVJMLnBhdGhuYW1lO1xuXG4gICAgLy8gT3ZlcnJpZGUgdGhlIGFwaSBwcmVmaXhcbiAgICBhcGlQcmVmaXggPSBsb2NhbFBhdGg7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChyZXF1ZXN0UGF0aCkge1xuICAgICAgLy8gRmlndXJlIG91dCB3aGljaCBzZXJ2ZXIgdXJsIHdhcyB1c2VkIGJ5IGZpZ3VyaW5nIG91dCB3aGljaFxuICAgICAgLy8gcGF0aCBtb3JlIGNsb3NlbHkgbWF0Y2hlcyByZXF1ZXN0UGF0aFxuICAgICAgY29uc3Qgc3RhcnRzV2l0aExvY2FsID0gcmVxdWVzdFBhdGguc3RhcnRzV2l0aChsb2NhbFBhdGgpO1xuICAgICAgY29uc3Qgc3RhcnRzV2l0aFB1YmxpYyA9IHJlcXVlc3RQYXRoLnN0YXJ0c1dpdGgocHVibGljUGF0aCk7XG4gICAgICBjb25zdCBwYXRoTGVuZ3RoVG9Vc2UgPVxuICAgICAgICBzdGFydHNXaXRoTG9jYWwgJiYgc3RhcnRzV2l0aFB1YmxpY1xuICAgICAgICAgID8gTWF0aC5tYXgobG9jYWxQYXRoLmxlbmd0aCwgcHVibGljUGF0aC5sZW5ndGgpXG4gICAgICAgICAgOiBzdGFydHNXaXRoTG9jYWxcbiAgICAgICAgICAgID8gbG9jYWxQYXRoLmxlbmd0aFxuICAgICAgICAgICAgOiBwdWJsaWNQYXRoLmxlbmd0aDtcblxuICAgICAgY29uc3QgbmV3UGF0aCA9IHBhdGgucG9zaXguam9pbignLycsIGxvY2FsUGF0aCwgJy8nLCByZXF1ZXN0UGF0aC5zbGljZShwYXRoTGVuZ3RoVG9Vc2UpKTtcblxuICAgICAgLy8gVXNlIHRoZSBtZXRob2QgZm9yIGxvY2FsIHJvdXRpbmdcbiAgICAgIHJldHVybiBtYWtlUm91dGFibGVQYXRoKG5ld1BhdGgpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gbWFrZVJvdXRhYmxlUGF0aDtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgZm9yIGEge3Jlc3BvbnNlfSBvYmplY3QuXG4vLyBUT0RPOiBwYXNzIGFsb25nIGF1dGggY29ycmVjdGx5XG5mdW5jdGlvbiBoYW5kbGVCYXRjaChyb3V0ZXIsIHJlcSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmVxLmJvZHk/LnJlcXVlc3RzKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0pTT04sICdyZXF1ZXN0cyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICAvLyBUaGUgYmF0Y2ggcGF0aHMgYXJlIGFsbCBmcm9tIHRoZSByb290IG9mIG91ciBkb21haW4uXG4gIC8vIFRoYXQgbWVhbnMgdGhleSBpbmNsdWRlIHRoZSBBUEkgcHJlZml4LCB0aGF0IHRoZSBBUEkgaXMgbW91bnRlZFxuICAvLyB0by4gSG93ZXZlciwgb3VyIHByb21pc2Ugcm91dGVyIGRvZXMgbm90IHJvdXRlIHRoZSBhcGkgcHJlZml4LiBTb1xuICAvLyB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIEFQSSBwcmVmaXgsIHNvIHRoYXQgd2UgY2FuIHN0cmlwIGl0XG4gIC8vIGZyb20gYWxsIHRoZSBzdWJyZXF1ZXN0cy5cbiAgaWYgKCFyZXEub3JpZ2luYWxVcmwuZW5kc1dpdGgoYmF0Y2hQYXRoKSkge1xuICAgIHRocm93ICdpbnRlcm5hbCByb3V0aW5nIHByb2JsZW0gLSBleHBlY3RlZCB1cmwgdG8gZW5kIHdpdGggYmF0Y2gnO1xuICB9XG5cbiAgY29uc3QgbWFrZVJvdXRhYmxlUGF0aCA9IG1ha2VCYXRjaFJvdXRpbmdQYXRoRnVuY3Rpb24oXG4gICAgcmVxLm9yaWdpbmFsVXJsLFxuICAgIHJlcS5jb25maWcuc2VydmVyVVJMLFxuICAgIHJlcS5jb25maWcucHVibGljU2VydmVyVVJMXG4gICk7XG5cbiAgY29uc3QgYmF0Y2ggPSB0cmFuc2FjdGlvblJldHJpZXMgPT4ge1xuICAgIGxldCBpbml0aWFsUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGlmIChyZXEuYm9keT8udHJhbnNhY3Rpb24gPT09IHRydWUpIHtcbiAgICAgIGluaXRpYWxQcm9taXNlID0gcmVxLmNvbmZpZy5kYXRhYmFzZS5jcmVhdGVUcmFuc2FjdGlvbmFsU2Vzc2lvbigpO1xuICAgIH1cblxuICAgIHJldHVybiBpbml0aWFsUHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IHByb21pc2VzID0gcmVxLmJvZHk/LnJlcXVlc3RzLm1hcChyZXN0UmVxdWVzdCA9PiB7XG4gICAgICAgIGNvbnN0IHJvdXRhYmxlUGF0aCA9IG1ha2VSb3V0YWJsZVBhdGgocmVzdFJlcXVlc3QucGF0aCk7XG5cbiAgICAgICAgLy8gQ29uc3RydWN0IGEgcmVxdWVzdCB0aGF0IHdlIGNhbiBzZW5kIHRvIGEgaGFuZGxlclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgICAgIGJvZHk6IHJlc3RSZXF1ZXN0LmJvZHksXG4gICAgICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgICAgIGF1dGg6IHJlcS5hdXRoLFxuICAgICAgICAgIGluZm86IHJlcS5pbmZvLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByb3V0ZXIudHJ5Um91dGVSZXF1ZXN0KHJlc3RSZXF1ZXN0Lm1ldGhvZCwgcm91dGFibGVQYXRoLCByZXF1ZXN0KS50aGVuKFxuICAgICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHJlc3BvbnNlLnJlc3BvbnNlIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogeyBjb2RlOiBlcnJvci5jb2RlLCBlcnJvcjogZXJyb3IubWVzc2FnZSB9IH07XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgICAgLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAgICAgaWYgKHJlcS5ib2R5Py50cmFuc2FjdGlvbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdHMuZmluZChyZXN1bHQgPT4gdHlwZW9mIHJlc3VsdC5lcnJvciA9PT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXEuY29uZmlnLmRhdGFiYXNlLmFib3J0VHJhbnNhY3Rpb25hbFNlc3Npb24oKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeyByZXNwb25zZTogcmVzdWx0cyB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVxLmNvbmZpZy5kYXRhYmFzZS5jb21taXRUcmFuc2FjdGlvbmFsU2Vzc2lvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHJlc3BvbnNlOiByZXN1bHRzIH07XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyByZXNwb25zZTogcmVzdWx0cyB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlcnJvciAmJlxuICAgICAgICAgICAgZXJyb3IucmVzcG9uc2UgJiZcbiAgICAgICAgICAgIGVycm9yLnJlc3BvbnNlLmZpbmQoXG4gICAgICAgICAgICAgIGVycm9ySXRlbSA9PiB0eXBlb2YgZXJyb3JJdGVtLmVycm9yID09PSAnb2JqZWN0JyAmJiBlcnJvckl0ZW0uZXJyb3IuY29kZSA9PT0gMjUxXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICB0cmFuc2FjdGlvblJldHJpZXMgPiAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gYmF0Y2godHJhbnNhY3Rpb25SZXRyaWVzIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgcmV0dXJuIGJhdGNoKDUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbW91bnRPbnRvLFxuICBtYWtlQmF0Y2hSb3V0aW5nUGF0aEZ1bmN0aW9uLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0QsS0FBSztBQUN6QyxNQUFNRSxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDNUI7QUFDQSxNQUFNRSxTQUFTLEdBQUcsUUFBUTs7QUFFMUI7QUFDQSxTQUFTQyxTQUFTQSxDQUFDQyxNQUFNLEVBQUU7RUFDekJBLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLE1BQU0sRUFBRUgsU0FBUyxFQUFFSSxHQUFHLElBQUk7SUFDckMsT0FBT0MsV0FBVyxDQUFDSCxNQUFNLEVBQUVFLEdBQUcsQ0FBQztFQUNqQyxDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNFLFFBQVFBLENBQUNDLFNBQVMsRUFBRTtFQUMzQixJQUFJO0lBQ0YsT0FBTyxJQUFJQyxHQUFHLENBQUNELFNBQVMsQ0FBQztFQUMzQixDQUFDLENBQUMsTUFBTTtJQUNOLE9BQU9FLFNBQVM7RUFDbEI7QUFDRjtBQUVBLFNBQVNDLDRCQUE0QkEsQ0FBQ0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsRUFBRTtFQUM3RUQsU0FBUyxHQUFHQSxTQUFTLEdBQUdOLFFBQVEsQ0FBQ00sU0FBUyxDQUFDLEdBQUdILFNBQVM7RUFDdkRJLGVBQWUsR0FBR0EsZUFBZSxHQUFHUCxRQUFRLENBQUNPLGVBQWUsQ0FBQyxHQUFHSixTQUFTO0VBRXpFLE1BQU1LLGVBQWUsR0FBR0gsV0FBVyxDQUFDSSxNQUFNLEdBQUdmLFNBQVMsQ0FBQ2UsTUFBTTtFQUM3RCxJQUFJQyxTQUFTLEdBQUdMLFdBQVcsQ0FBQ00sS0FBSyxDQUFDLENBQUMsRUFBRUgsZUFBZSxDQUFDO0VBRXJELE1BQU1JLGdCQUFnQixHQUFHLFNBQUFBLENBQVVDLFdBQVcsRUFBRTtJQUM5QztJQUNBLElBQUlBLFdBQVcsQ0FBQ0YsS0FBSyxDQUFDLENBQUMsRUFBRUQsU0FBUyxDQUFDRCxNQUFNLENBQUMsSUFBSUMsU0FBUyxFQUFFO01BQ3ZELE1BQU0sSUFBSW5CLEtBQUssQ0FBQ3VCLEtBQUssQ0FBQ3ZCLEtBQUssQ0FBQ3VCLEtBQUssQ0FBQ0MsWUFBWSxFQUFFLDBCQUEwQixHQUFHRixXQUFXLENBQUM7SUFDM0Y7SUFDQSxPQUFPcEIsSUFBSSxDQUFDdUIsS0FBSyxDQUFDQyxJQUFJLENBQUMsR0FBRyxFQUFFSixXQUFXLENBQUNGLEtBQUssQ0FBQ0QsU0FBUyxDQUFDRCxNQUFNLENBQUMsQ0FBQztFQUNsRSxDQUFDO0VBRUQsSUFBSUgsU0FBUyxJQUFJQyxlQUFlLElBQUlELFNBQVMsQ0FBQ1ksUUFBUSxJQUFJWCxlQUFlLENBQUNXLFFBQVEsRUFBRTtJQUNsRixNQUFNQyxTQUFTLEdBQUdiLFNBQVMsQ0FBQ1ksUUFBUTtJQUNwQyxNQUFNRSxVQUFVLEdBQUdiLGVBQWUsQ0FBQ1csUUFBUTs7SUFFM0M7SUFDQVIsU0FBUyxHQUFHUyxTQUFTO0lBQ3JCLE9BQU8sVUFBVU4sV0FBVyxFQUFFO01BQzVCO01BQ0E7TUFDQSxNQUFNUSxlQUFlLEdBQUdSLFdBQVcsQ0FBQ1MsVUFBVSxDQUFDSCxTQUFTLENBQUM7TUFDekQsTUFBTUksZ0JBQWdCLEdBQUdWLFdBQVcsQ0FBQ1MsVUFBVSxDQUFDRixVQUFVLENBQUM7TUFDM0QsTUFBTUksZUFBZSxHQUNuQkgsZUFBZSxJQUFJRSxnQkFBZ0IsR0FDL0JFLElBQUksQ0FBQ0MsR0FBRyxDQUFDUCxTQUFTLENBQUNWLE1BQU0sRUFBRVcsVUFBVSxDQUFDWCxNQUFNLENBQUMsR0FDN0NZLGVBQWUsR0FDYkYsU0FBUyxDQUFDVixNQUFNLEdBQ2hCVyxVQUFVLENBQUNYLE1BQU07TUFFekIsTUFBTWtCLE9BQU8sR0FBR2xDLElBQUksQ0FBQ3VCLEtBQUssQ0FBQ0MsSUFBSSxDQUFDLEdBQUcsRUFBRUUsU0FBUyxFQUFFLEdBQUcsRUFBRU4sV0FBVyxDQUFDRixLQUFLLENBQUNhLGVBQWUsQ0FBQyxDQUFDOztNQUV4RjtNQUNBLE9BQU9aLGdCQUFnQixDQUFDZSxPQUFPLENBQUM7SUFDbEMsQ0FBQztFQUNIO0VBRUEsT0FBT2YsZ0JBQWdCO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQSxTQUFTYixXQUFXQSxDQUFDSCxNQUFNLEVBQUVFLEdBQUcsRUFBRTtFQUNoQyxJQUFJLENBQUM4QixLQUFLLENBQUNDLE9BQU8sQ0FBQy9CLEdBQUcsQ0FBQ2dDLElBQUksRUFBRUMsUUFBUSxDQUFDLEVBQUU7SUFDdEMsTUFBTSxJQUFJeEMsS0FBSyxDQUFDdUIsS0FBSyxDQUFDdkIsS0FBSyxDQUFDdUIsS0FBSyxDQUFDQyxZQUFZLEVBQUUsMkJBQTJCLENBQUM7RUFDOUU7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQUksQ0FBQ2pCLEdBQUcsQ0FBQ08sV0FBVyxDQUFDMkIsUUFBUSxDQUFDdEMsU0FBUyxDQUFDLEVBQUU7SUFDeEMsTUFBTSwyREFBMkQ7RUFDbkU7RUFFQSxNQUFNa0IsZ0JBQWdCLEdBQUdSLDRCQUE0QixDQUNuRE4sR0FBRyxDQUFDTyxXQUFXLEVBQ2ZQLEdBQUcsQ0FBQ21DLE1BQU0sQ0FBQzNCLFNBQVMsRUFDcEJSLEdBQUcsQ0FBQ21DLE1BQU0sQ0FBQzFCLGVBQ2IsQ0FBQztFQUVELE1BQU0yQixLQUFLLEdBQUdDLGtCQUFrQixJQUFJO0lBQ2xDLElBQUlDLGNBQWMsR0FBR0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxJQUFJeEMsR0FBRyxDQUFDZ0MsSUFBSSxFQUFFUyxXQUFXLEtBQUssSUFBSSxFQUFFO01BQ2xDSCxjQUFjLEdBQUd0QyxHQUFHLENBQUNtQyxNQUFNLENBQUNPLFFBQVEsQ0FBQ0MsMEJBQTBCLENBQUMsQ0FBQztJQUNuRTtJQUVBLE9BQU9MLGNBQWMsQ0FBQ00sSUFBSSxDQUFDLE1BQU07TUFDL0IsTUFBTUMsUUFBUSxHQUFHN0MsR0FBRyxDQUFDZ0MsSUFBSSxFQUFFQyxRQUFRLENBQUNhLEdBQUcsQ0FBQ0MsV0FBVyxJQUFJO1FBQ3JELE1BQU1DLFlBQVksR0FBR2xDLGdCQUFnQixDQUFDaUMsV0FBVyxDQUFDcEQsSUFBSSxDQUFDOztRQUV2RDtRQUNBLE1BQU1zRCxPQUFPLEdBQUc7VUFDZGpCLElBQUksRUFBRWUsV0FBVyxDQUFDZixJQUFJO1VBQ3RCRyxNQUFNLEVBQUVuQyxHQUFHLENBQUNtQyxNQUFNO1VBQ2xCZSxJQUFJLEVBQUVsRCxHQUFHLENBQUNrRCxJQUFJO1VBQ2RDLElBQUksRUFBRW5ELEdBQUcsQ0FBQ21EO1FBQ1osQ0FBQztRQUVELE9BQU9yRCxNQUFNLENBQUNzRCxlQUFlLENBQUNMLFdBQVcsQ0FBQ00sTUFBTSxFQUFFTCxZQUFZLEVBQUVDLE9BQU8sQ0FBQyxDQUFDTCxJQUFJLENBQzNFVSxRQUFRLElBQUk7VUFDVixPQUFPO1lBQUVDLE9BQU8sRUFBRUQsUUFBUSxDQUFDQTtVQUFTLENBQUM7UUFDdkMsQ0FBQyxFQUNERSxLQUFLLElBQUk7VUFDUCxPQUFPO1lBQUVBLEtBQUssRUFBRTtjQUFFQyxJQUFJLEVBQUVELEtBQUssQ0FBQ0MsSUFBSTtjQUFFRCxLQUFLLEVBQUVBLEtBQUssQ0FBQ0U7WUFBUTtVQUFFLENBQUM7UUFDOUQsQ0FDRixDQUFDO01BQ0gsQ0FBQyxDQUFDO01BRUYsT0FBT25CLE9BQU8sQ0FBQ29CLEdBQUcsQ0FBQ2QsUUFBUSxDQUFDLENBQ3pCRCxJQUFJLENBQUNnQixPQUFPLElBQUk7UUFDZixJQUFJNUQsR0FBRyxDQUFDZ0MsSUFBSSxFQUFFUyxXQUFXLEtBQUssSUFBSSxFQUFFO1VBQ2xDLElBQUltQixPQUFPLENBQUNDLElBQUksQ0FBQ0MsTUFBTSxJQUFJLE9BQU9BLE1BQU0sQ0FBQ04sS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUFFO1lBQzVELE9BQU94RCxHQUFHLENBQUNtQyxNQUFNLENBQUNPLFFBQVEsQ0FBQ3FCLHlCQUF5QixDQUFDLENBQUMsQ0FBQ25CLElBQUksQ0FBQyxNQUFNO2NBQ2hFLE9BQU9MLE9BQU8sQ0FBQ3lCLE1BQU0sQ0FBQztnQkFBRVYsUUFBUSxFQUFFTTtjQUFRLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUM7VUFDSixDQUFDLE1BQU07WUFDTCxPQUFPNUQsR0FBRyxDQUFDbUMsTUFBTSxDQUFDTyxRQUFRLENBQUN1QiwwQkFBMEIsQ0FBQyxDQUFDLENBQUNyQixJQUFJLENBQUMsTUFBTTtjQUNqRSxPQUFPO2dCQUFFVSxRQUFRLEVBQUVNO2NBQVEsQ0FBQztZQUM5QixDQUFDLENBQUM7VUFDSjtRQUNGLENBQUMsTUFBTTtVQUNMLE9BQU87WUFBRU4sUUFBUSxFQUFFTTtVQUFRLENBQUM7UUFDOUI7TUFDRixDQUFDLENBQUMsQ0FDRE0sS0FBSyxDQUFDVixLQUFLLElBQUk7UUFDZCxJQUNFQSxLQUFLLElBQ0xBLEtBQUssQ0FBQ0YsUUFBUSxJQUNkRSxLQUFLLENBQUNGLFFBQVEsQ0FBQ08sSUFBSSxDQUNqQk0sU0FBUyxJQUFJLE9BQU9BLFNBQVMsQ0FBQ1gsS0FBSyxLQUFLLFFBQVEsSUFBSVcsU0FBUyxDQUFDWCxLQUFLLENBQUNDLElBQUksS0FBSyxHQUMvRSxDQUFDLElBQ0RwQixrQkFBa0IsR0FBRyxDQUFDLEVBQ3RCO1VBQ0EsT0FBT0QsS0FBSyxDQUFDQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDdEM7UUFDQSxNQUFNbUIsS0FBSztNQUNiLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRCxPQUFPcEIsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqQjtBQUVBZ0MsTUFBTSxDQUFDQyxPQUFPLEdBQUc7RUFDZnhFLFNBQVM7RUFDVFM7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
package/lib/cli/utils/runner.js
CHANGED
|
@@ -20,7 +20,7 @@ function logStartupOptions(options) {
|
|
|
20
20
|
if (typeof value === 'object') {
|
|
21
21
|
try {
|
|
22
22
|
value = JSON.stringify(value);
|
|
23
|
-
} catch
|
|
23
|
+
} catch {
|
|
24
24
|
if (value && value.constructor && value.constructor.name) {
|
|
25
25
|
value = value.constructor.name;
|
|
26
26
|
}
|
|
@@ -50,4 +50,4 @@ function _default({
|
|
|
50
50
|
logStartupOptions(options);
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJsb2dTdGFydHVwT3B0aW9ucyIsIm9wdGlvbnMiLCJ2ZXJib3NlIiwia2V5c1RvUmVkYWN0Iiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJjb25zb2xlIiwibG9nIiwiX2RlZmF1bHQiLCJkZWZpbml0aW9ucyIsImhlbHAiLCJ1c2FnZSIsInN0YXJ0IiwicHJvZ3JhbSIsImxvYWREZWZpbml0aW9ucyIsIm9uIiwicGFyc2UiLCJwcm9jZXNzIiwiYXJndiIsImVudiIsImdldE9wdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL3V0aWxzL3J1bm5lci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcHJvZ3JhbSBmcm9tICcuL2NvbW1hbmRlcic7XG5cbmZ1bmN0aW9uIGxvZ1N0YXJ0dXBPcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zLnZlcmJvc2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gS2V5cyB0aGF0IG1heSBpbmNsdWRlIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiB0aGF0IHdpbGwgYmUgcmVkYWN0ZWQgaW4gbG9nc1xuICBjb25zdCBrZXlzVG9SZWRhY3QgPSBbXG4gICAgJ2RhdGFiYXNlQWRhcHRlcicsXG4gICAgJ2RhdGFiYXNlVVJJJyxcbiAgICAnbWFzdGVyS2V5JyxcbiAgICAnbWFpbnRlbmFuY2VLZXknLFxuICAgICdwdXNoJyxcbiAgXTtcbiAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucykge1xuICAgIGxldCB2YWx1ZSA9IG9wdGlvbnNba2V5XTtcbiAgICBpZiAoa2V5c1RvUmVkYWN0LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIHZhbHVlID0gJzxSRURBQ1RFRD4nO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICAgIGNvbnNvbGUubG9nKGAke2tleX06ICR7dmFsdWV9YCk7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHsgZGVmaW5pdGlvbnMsIGhlbHAsIHVzYWdlLCBzdGFydCB9KSB7XG4gIHByb2dyYW0ubG9hZERlZmluaXRpb25zKGRlZmluaXRpb25zKTtcbiAgaWYgKHVzYWdlKSB7XG4gICAgcHJvZ3JhbS51c2FnZSh1c2FnZSk7XG4gIH1cbiAgaWYgKGhlbHApIHtcbiAgICBwcm9ncmFtLm9uKCctLWhlbHAnLCBoZWxwKTtcbiAgfVxuICBwcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndiwgcHJvY2Vzcy5lbnYpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPSBwcm9ncmFtLmdldE9wdGlvbnMoKTtcbiAgc3RhcnQocHJvZ3JhbSwgb3B0aW9ucywgZnVuY3Rpb24gKCkge1xuICAgIGxvZ1N0YXJ0dXBPcHRpb25zKG9wdGlvbnMpO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQWtDLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRWxDLFNBQVNHLGlCQUFpQkEsQ0FBQ0MsT0FBTyxFQUFFO0VBQ2xDLElBQUksQ0FBQ0EsT0FBTyxDQUFDQyxPQUFPLEVBQUU7SUFDcEI7RUFDRjtFQUNBO0VBQ0EsTUFBTUMsWUFBWSxHQUFHLENBQ25CLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixNQUFNLENBQ1A7RUFDRCxLQUFLLE1BQU1DLEdBQUcsSUFBSUgsT0FBTyxFQUFFO0lBQ3pCLElBQUlJLEtBQUssR0FBR0osT0FBTyxDQUFDRyxHQUFHLENBQUM7SUFDeEIsSUFBSUQsWUFBWSxDQUFDRyxRQUFRLENBQUNGLEdBQUcsQ0FBQyxFQUFFO01BQzlCQyxLQUFLLEdBQUcsWUFBWTtJQUN0QjtJQUNBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QixJQUFJO1FBQ0ZBLEtBQUssR0FBR0UsSUFBSSxDQUFDQyxTQUFTLENBQUNILEtBQUssQ0FBQztNQUMvQixDQUFDLENBQUMsTUFBTTtRQUNOLElBQUlBLEtBQUssSUFBSUEsS0FBSyxDQUFDSSxXQUFXLElBQUlKLEtBQUssQ0FBQ0ksV0FBVyxDQUFDQyxJQUFJLEVBQUU7VUFDeERMLEtBQUssR0FBR0EsS0FBSyxDQUFDSSxXQUFXLENBQUNDLElBQUk7UUFDaEM7TUFDRjtJQUNGO0lBQ0E7SUFDQUMsT0FBTyxDQUFDQyxHQUFHLENBQUMsR0FBR1IsR0FBRyxLQUFLQyxLQUFLLEVBQUUsQ0FBQztJQUMvQjtFQUNGO0FBQ0Y7QUFFZSxTQUFBUSxTQUFVO0VBQUVDLFdBQVc7RUFBRUMsSUFBSTtFQUFFQyxLQUFLO0VBQUVDO0FBQU0sQ0FBQyxFQUFFO0VBQzVEQyxrQkFBTyxDQUFDQyxlQUFlLENBQUNMLFdBQVcsQ0FBQztFQUNwQyxJQUFJRSxLQUFLLEVBQUU7SUFDVEUsa0JBQU8sQ0FBQ0YsS0FBSyxDQUFDQSxLQUFLLENBQUM7RUFDdEI7RUFDQSxJQUFJRCxJQUFJLEVBQUU7SUFDUkcsa0JBQU8sQ0FBQ0UsRUFBRSxDQUFDLFFBQVEsRUFBRUwsSUFBSSxDQUFDO0VBQzVCO0VBQ0FHLGtCQUFPLENBQUNHLEtBQUssQ0FBQ0MsT0FBTyxDQUFDQyxJQUFJLEVBQUVELE9BQU8sQ0FBQ0UsR0FBRyxDQUFDO0VBRXhDLE1BQU12QixPQUFPLEdBQUdpQixrQkFBTyxDQUFDTyxVQUFVLENBQUMsQ0FBQztFQUNwQ1IsS0FBSyxDQUFDQyxrQkFBTyxFQUFFakIsT0FBTyxFQUFFLFlBQVk7SUFDbENELGlCQUFpQixDQUFDQyxPQUFPLENBQUM7RUFDNUIsQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
|