parse-server 9.6.0-alpha.8 → 9.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/lib/AccountLockout.js +14 -42
  2. package/lib/Adapters/Auth/index.js +2 -2
  3. package/lib/Adapters/Auth/oauth2.js +2 -2
  4. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +3 -3
  5. package/lib/Adapters/Storage/Mongo/MongoTransform.js +30 -30
  6. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +53 -16
  7. package/lib/Auth.js +35 -9
  8. package/lib/Config.js +6 -5
  9. package/lib/Controllers/DatabaseController.js +134 -27
  10. package/lib/Controllers/FilesController.js +2 -2
  11. package/lib/Controllers/LiveQueryController.js +2 -2
  12. package/lib/Controllers/ParseGraphQLController.js +3 -2
  13. package/lib/Controllers/SchemaController.js +3 -7
  14. package/lib/Controllers/UserController.js +12 -3
  15. package/lib/Deprecator/Deprecations.js +41 -1
  16. package/lib/GraphQL/ParseGraphQLServer.js +1 -12
  17. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +6 -5
  18. package/lib/GraphQL/loaders/functionsMutations.js +3 -4
  19. package/lib/GraphQL/loaders/parseClassMutations.js +4 -5
  20. package/lib/GraphQL/loaders/parseClassQueries.js +3 -4
  21. package/lib/GraphQL/loaders/schemaMutations.js +4 -5
  22. package/lib/GraphQL/loaders/schemaQueries.js +2 -3
  23. package/lib/GraphQL/loaders/usersMutations.js +5 -5
  24. package/lib/GraphQL/parseGraphQLUtils.js +9 -1
  25. package/lib/GraphQL/transformers/query.js +2 -2
  26. package/lib/LiveQuery/ParseLiveQueryServer.js +192 -13
  27. package/lib/LiveQuery/QueryTools.js +28 -19
  28. package/lib/Options/Definitions.js +41 -17
  29. package/lib/Options/docs.js +15 -11
  30. package/lib/Options/index.js +1 -1
  31. package/lib/ParseServer.js +9 -4
  32. package/lib/Push/PushWorker.js +2 -4
  33. package/lib/Push/utils.js +3 -4
  34. package/lib/RestQuery.js +32 -4
  35. package/lib/RestWrite.js +50 -24
  36. package/lib/Routers/AggregateRouter.js +9 -2
  37. package/lib/Routers/ClassesRouter.js +6 -2
  38. package/lib/Routers/FilesRouter.js +4 -3
  39. package/lib/Routers/PagesRouter.js +44 -20
  40. package/lib/Routers/UsersRouter.js +64 -30
  41. package/lib/Security/Check.js +2 -2
  42. package/lib/Security/CheckGroups/CheckGroupServerConfig.js +2 -2
  43. package/lib/StatusHandler.js +3 -2
  44. package/lib/Utils.js +74 -8
  45. package/lib/batch.js +39 -36
  46. package/lib/cloud-code/Parse.Cloud.js +2 -2
  47. package/lib/middlewares.js +36 -11
  48. package/lib/triggers.js +9 -2
  49. package/package.json +1 -3
@@ -68,7 +68,7 @@ class FilesController extends _AdaptableController.default {
68
68
  * Object may be a single object or list of REST-format objects.
69
69
  */
70
70
  async expandFilesInObject(config, object) {
71
- if (object instanceof Array) {
71
+ if (Array.isArray(object)) {
72
72
  const promises = object.map(obj => this.expandFilesInObject(config, obj));
73
73
  await Promise.all(promises);
74
74
  return;
@@ -119,4 +119,4 @@ class FilesController extends _AdaptableController.default {
119
119
  }
120
120
  exports.FilesController = FilesController;
121
121
  var _default = exports.default = FilesController;
122
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvVXRpbHMiLCJyZXF1aXJlIiwiX0FkYXB0YWJsZUNvbnRyb2xsZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ZpbGVzQWRhcHRlciIsIl9wYXRoIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2UiLCJsZWdhY3lGaWxlc1JlZ2V4IiwiUmVnRXhwIiwiRmlsZXNDb250cm9sbGVyIiwiQWRhcHRhYmxlQ29udHJvbGxlciIsImdldEZpbGVEYXRhIiwiY29uZmlnIiwiZmlsZW5hbWUiLCJhZGFwdGVyIiwiY3JlYXRlRmlsZSIsImRhdGEiLCJjb250ZW50VHlwZSIsIm9wdGlvbnMiLCJleHRuYW1lIiwicGF0aCIsImhhc0V4dGVuc2lvbiIsImxlbmd0aCIsIm1pbWUiLCJnZXRFeHRlbnNpb24iLCJnZXRUeXBlIiwicHJlc2VydmVGaWxlTmFtZSIsInJhbmRvbUhleFN0cmluZyIsImRpcmVjdG9yeSIsInBpcGUiLCJzdXBwb3J0c1N0cmVhbWluZyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiY2h1bmtzIiwib24iLCJjaHVuayIsInB1c2giLCJCdWZmZXIiLCJjb25jYXQiLCJsb2NhdGlvbiIsImdldEZpbGVMb2NhdGlvbiIsInVybCIsIm5hbWUiLCJkZWxldGVGaWxlIiwiZ2V0TWV0YWRhdGEiLCJleHBhbmRGaWxlc0luT2JqZWN0Iiwib2JqZWN0IiwiQXJyYXkiLCJwcm9taXNlcyIsIm1hcCIsIm9iaiIsImFsbCIsImtleSIsImZpbGVPYmplY3QiLCJmaWxlS2V5IiwidW5kZWZpbmVkIiwiaW5kZXhPZiIsImVuY29kZVVSSUNvbXBvbmVudCIsInRlc3QiLCJleHBlY3RlZEFkYXB0ZXJUeXBlIiwiRmlsZXNBZGFwdGVyIiwiaGFuZGxlRmlsZVN0cmVhbSIsInJlcSIsInJlcyIsInZhbGlkYXRlRmlsZW5hbWUiLCJlcnJvciIsIkVycm9yIiwiSU5WQUxJRF9GSUxFX05BTUUiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvQ29udHJvbGxlcnMvRmlsZXNDb250cm9sbGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEZpbGVzQ29udHJvbGxlci5qc1xuaW1wb3J0IHsgcmFuZG9tSGV4U3RyaW5nIH0gZnJvbSAnLi4vY3J5cHRvVXRpbHMnO1xuaW1wb3J0IEFkYXB0YWJsZUNvbnRyb2xsZXIgZnJvbSAnLi9BZGFwdGFibGVDb250cm9sbGVyJztcbmltcG9ydCB7IHZhbGlkYXRlRmlsZW5hbWUsIEZpbGVzQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0ZpbGVzL0ZpbGVzQWRhcHRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmNvbnN0IFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG5jb25zdCBsZWdhY3lGaWxlc1JlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0tLionXG4pO1xuXG5leHBvcnQgY2xhc3MgRmlsZXNDb250cm9sbGVyIGV4dGVuZHMgQWRhcHRhYmxlQ29udHJvbGxlciB7XG4gIGdldEZpbGVEYXRhKGNvbmZpZywgZmlsZW5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldEZpbGVEYXRhKGZpbGVuYW1lKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUZpbGUoY29uZmlnLCBmaWxlbmFtZSwgZGF0YSwgY29udGVudFR5cGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBleHRuYW1lID0gcGF0aC5leHRuYW1lKGZpbGVuYW1lKTtcblxuICAgIGNvbnN0IGhhc0V4dGVuc2lvbiA9IGV4dG5hbWUubGVuZ3RoID4gMDtcbiAgICBjb25zdCBtaW1lID0gKGF3YWl0IGltcG9ydCgnbWltZScpKS5kZWZhdWx0XG4gICAgaWYgKCFoYXNFeHRlbnNpb24gJiYgY29udGVudFR5cGUgJiYgbWltZS5nZXRFeHRlbnNpb24oY29udGVudFR5cGUpKSB7XG4gICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lICsgJy4nICsgbWltZS5nZXRFeHRlbnNpb24oY29udGVudFR5cGUpO1xuICAgIH0gZWxzZSBpZiAoaGFzRXh0ZW5zaW9uICYmICFjb250ZW50VHlwZSkge1xuICAgICAgY29udGVudFR5cGUgPSBtaW1lLmdldFR5cGUoZmlsZW5hbWUpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5vcHRpb25zLnByZXNlcnZlRmlsZU5hbWUpIHtcbiAgICAgIGZpbGVuYW1lID0gcmFuZG9tSGV4U3RyaW5nKDMyKSArICdfJyArIGZpbGVuYW1lO1xuICAgIH1cblxuICAgIC8vIFByZXBlbmQgZGlyZWN0b3J5IGlmIHByb3ZpZGVkXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5kaXJlY3RvcnkpIHtcbiAgICAgIGZpbGVuYW1lID0gb3B0aW9ucy5kaXJlY3RvcnkgKyAnLycgKyBmaWxlbmFtZTtcbiAgICAgIGRlbGV0ZSBvcHRpb25zLmRpcmVjdG9yeTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjazogYnVmZmVyIHN0cmVhbSBmb3IgYWRhcHRlcnMgdGhhdCBkb24ndCBzdXBwb3J0IHN0cmVhbWluZ1xuICAgIGlmICh0eXBlb2YgZGF0YT8ucGlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiAhdGhpcy5hZGFwdGVyLnN1cHBvcnRzU3RyZWFtaW5nKSB7XG4gICAgICBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgICAgZGF0YS5vbignZGF0YScsIGNodW5rID0+IGNodW5rcy5wdXNoKGNodW5rKSk7XG4gICAgICAgIGRhdGEub24oJ2VuZCcsICgpID0+IHJlc29sdmUoQnVmZmVyLmNvbmNhdChjaHVua3MpKSk7XG4gICAgICAgIGRhdGEub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2F0aW9uID0gYXdhaXQgdGhpcy5hZGFwdGVyLmdldEZpbGVMb2NhdGlvbihjb25maWcsIGZpbGVuYW1lKTtcbiAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuY3JlYXRlRmlsZShmaWxlbmFtZSwgZGF0YSwgY29udGVudFR5cGUsIG9wdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICB1cmw6IGxvY2F0aW9uLFxuICAgICAgbmFtZTogZmlsZW5hbWUsXG4gICAgfVxuICB9XG5cbiAgZGVsZXRlRmlsZShjb25maWcsIGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5kZWxldGVGaWxlKGZpbGVuYW1lKTtcbiAgfVxuXG4gIGdldE1ldGFkYXRhKGZpbGVuYW1lKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmFkYXB0ZXIuZ2V0TWV0YWRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0TWV0YWRhdGEoZmlsZW5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGZpbGUgcmVmZXJlbmNlcyBpbiBSRVNULWZvcm1hdCBvYmplY3QgYW5kIGFkZHMgdGhlIHVybCBrZXlcbiAgICogd2l0aCB0aGUgY3VycmVudCBtb3VudCBwb2ludCBhbmQgYXBwIGlkLlxuICAgKiBPYmplY3QgbWF5IGJlIGEgc2luZ2xlIG9iamVjdCBvciBsaXN0IG9mIFJFU1QtZm9ybWF0IG9iamVjdHMuXG4gICAqL1xuICBhc3luYyBleHBhbmRGaWxlc0luT2JqZWN0KGNvbmZpZywgb2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCBwcm9taXNlcyA9IG9iamVjdC5tYXAob2JqID0+IHRoaXMuZXhwYW5kRmlsZXNJbk9iamVjdChjb25maWcsIG9iaikpO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iamVjdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBjb25zdCBmaWxlT2JqZWN0ID0gb2JqZWN0W2tleV07XG4gICAgICBpZiAoZmlsZU9iamVjdCAmJiBmaWxlT2JqZWN0WydfX3R5cGUnXSA9PT0gJ0ZpbGUnKSB7XG4gICAgICAgIGlmIChmaWxlT2JqZWN0Wyd1cmwnXSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lID0gZmlsZU9iamVjdFsnbmFtZSddO1xuICAgICAgICAvLyBhbGwgZmlsZW5hbWVzIHN0YXJ0aW5nIHdpdGggXCJ0ZnNzLVwiIHNob3VsZCBiZSBmcm9tIGZpbGVzLnBhcnNldGZzcy5jb21cbiAgICAgICAgLy8gYWxsIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIGEgXCItXCIgc2VwZXJhdGVkIFVVSUQgc2hvdWxkIGJlIGZyb20gZmlsZXMucGFyc2UuY29tXG4gICAgICAgIC8vIGFsbCBvdGhlciBmaWxlbmFtZXMgaGF2ZSBiZWVuIG1pZ3JhdGVkIG9yIGNyZWF0ZWQgZnJvbSBQYXJzZSBTZXJ2ZXJcbiAgICAgICAgaWYgKGNvbmZpZy5maWxlS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmaWxlT2JqZWN0Wyd1cmwnXSA9IGF3YWl0IHRoaXMuYWRhcHRlci5nZXRGaWxlTG9jYXRpb24oY29uZmlnLCBmaWxlbmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGZpbGVuYW1lLmluZGV4T2YoJ3Rmc3MtJykgPT09IDApIHtcbiAgICAgICAgICAgIGZpbGVPYmplY3RbJ3VybCddID1cbiAgICAgICAgICAgICAgJ2h0dHA6Ly9maWxlcy5wYXJzZXRmc3MuY29tLycgKyBjb25maWcuZmlsZUtleSArICcvJyArIGVuY29kZVVSSUNvbXBvbmVudChmaWxlbmFtZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChsZWdhY3lGaWxlc1JlZ2V4LnRlc3QoZmlsZW5hbWUpKSB7XG4gICAgICAgICAgICBmaWxlT2JqZWN0Wyd1cmwnXSA9XG4gICAgICAgICAgICAgICdodHRwOi8vZmlsZXMucGFyc2UuY29tLycgKyBjb25maWcuZmlsZUtleSArICcvJyArIGVuY29kZVVSSUNvbXBvbmVudChmaWxlbmFtZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbGVPYmplY3RbJ3VybCddID0gYXdhaXQgdGhpcy5hZGFwdGVyLmdldEZpbGVMb2NhdGlvbihjb25maWcsIGZpbGVuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBleHBlY3RlZEFkYXB0ZXJUeXBlKCkge1xuICAgIHJldHVybiBGaWxlc0FkYXB0ZXI7XG4gIH1cblxuICBoYW5kbGVGaWxlU3RyZWFtKGNvbmZpZywgZmlsZW5hbWUsIHJlcSwgcmVzLCBjb250ZW50VHlwZSkge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuaGFuZGxlRmlsZVN0cmVhbShmaWxlbmFtZSwgcmVxLCByZXMsIGNvbnRlbnRUeXBlKTtcbiAgfVxuXG4gIHZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuYWRhcHRlci52YWxpZGF0ZUZpbGVuYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuYWRhcHRlci52YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKTtcbiAgICAgIGlmICh0eXBlb2YgZXJyb3IgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9GSUxFX05BTUUsIGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUpO1xuICB9XG59XG5cbmV4cG9y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
122
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvVXRpbHMiLCJyZXF1aXJlIiwiX0FkYXB0YWJsZUNvbnRyb2xsZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ZpbGVzQWRhcHRlciIsIl9wYXRoIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2UiLCJsZWdhY3lGaWxlc1JlZ2V4IiwiUmVnRXhwIiwiRmlsZXNDb250cm9sbGVyIiwiQWRhcHRhYmxlQ29udHJvbGxlciIsImdldEZpbGVEYXRhIiwiY29uZmlnIiwiZmlsZW5hbWUiLCJhZGFwdGVyIiwiY3JlYXRlRmlsZSIsImRhdGEiLCJjb250ZW50VHlwZSIsIm9wdGlvbnMiLCJleHRuYW1lIiwicGF0aCIsImhhc0V4dGVuc2lvbiIsImxlbmd0aCIsIm1pbWUiLCJnZXRFeHRlbnNpb24iLCJnZXRUeXBlIiwicHJlc2VydmVGaWxlTmFtZSIsInJhbmRvbUhleFN0cmluZyIsImRpcmVjdG9yeSIsInBpcGUiLCJzdXBwb3J0c1N0cmVhbWluZyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiY2h1bmtzIiwib24iLCJjaHVuayIsInB1c2giLCJCdWZmZXIiLCJjb25jYXQiLCJsb2NhdGlvbiIsImdldEZpbGVMb2NhdGlvbiIsInVybCIsIm5hbWUiLCJkZWxldGVGaWxlIiwiZ2V0TWV0YWRhdGEiLCJleHBhbmRGaWxlc0luT2JqZWN0Iiwib2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5IiwicHJvbWlzZXMiLCJtYXAiLCJvYmoiLCJhbGwiLCJrZXkiLCJmaWxlT2JqZWN0IiwiZmlsZUtleSIsInVuZGVmaW5lZCIsImluZGV4T2YiLCJlbmNvZGVVUklDb21wb25lbnQiLCJ0ZXN0IiwiZXhwZWN0ZWRBZGFwdGVyVHlwZSIsIkZpbGVzQWRhcHRlciIsImhhbmRsZUZpbGVTdHJlYW0iLCJyZXEiLCJyZXMiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwiZXJyb3IiLCJFcnJvciIsIklOVkFMSURfRklMRV9OQU1FIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbnRyb2xsZXJzL0ZpbGVzQ29udHJvbGxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGaWxlc0NvbnRyb2xsZXIuanNcbmltcG9ydCB7IHJhbmRvbUhleFN0cmluZyB9IGZyb20gJy4uL2NyeXB0b1V0aWxzJztcbmltcG9ydCBBZGFwdGFibGVDb250cm9sbGVyIGZyb20gJy4vQWRhcHRhYmxlQ29udHJvbGxlcic7XG5pbXBvcnQgeyB2YWxpZGF0ZUZpbGVuYW1lLCBGaWxlc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9GaWxlcy9GaWxlc0FkYXB0ZXInO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5jb25zdCBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcblxuY29uc3QgbGVnYWN5RmlsZXNSZWdleCA9IG5ldyBSZWdFeHAoXG4gICdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9LS4qJ1xuKTtcblxuZXhwb3J0IGNsYXNzIEZpbGVzQ29udHJvbGxlciBleHRlbmRzIEFkYXB0YWJsZUNvbnRyb2xsZXIge1xuICBnZXRGaWxlRGF0YShjb25maWcsIGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRGaWxlRGF0YShmaWxlbmFtZSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVGaWxlKGNvbmZpZywgZmlsZW5hbWUsIGRhdGEsIGNvbnRlbnRUeXBlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgZXh0bmFtZSA9IHBhdGguZXh0bmFtZShmaWxlbmFtZSk7XG5cbiAgICBjb25zdCBoYXNFeHRlbnNpb24gPSBleHRuYW1lLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgbWltZSA9IChhd2FpdCBpbXBvcnQoJ21pbWUnKSkuZGVmYXVsdFxuICAgIGlmICghaGFzRXh0ZW5zaW9uICYmIGNvbnRlbnRUeXBlICYmIG1pbWUuZ2V0RXh0ZW5zaW9uKGNvbnRlbnRUeXBlKSkge1xuICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZSArICcuJyArIG1pbWUuZ2V0RXh0ZW5zaW9uKGNvbnRlbnRUeXBlKTtcbiAgICB9IGVsc2UgaWYgKGhhc0V4dGVuc2lvbiAmJiAhY29udGVudFR5cGUpIHtcbiAgICAgIGNvbnRlbnRUeXBlID0gbWltZS5nZXRUeXBlKGZpbGVuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5wcmVzZXJ2ZUZpbGVOYW1lKSB7XG4gICAgICBmaWxlbmFtZSA9IHJhbmRvbUhleFN0cmluZygzMikgKyAnXycgKyBmaWxlbmFtZTtcbiAgICB9XG5cbiAgICAvLyBQcmVwZW5kIGRpcmVjdG9yeSBpZiBwcm92aWRlZFxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZGlyZWN0b3J5KSB7XG4gICAgICBmaWxlbmFtZSA9IG9wdGlvbnMuZGlyZWN0b3J5ICsgJy8nICsgZmlsZW5hbWU7XG4gICAgICBkZWxldGUgb3B0aW9ucy5kaXJlY3Rvcnk7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IGJ1ZmZlciBzdHJlYW0gZm9yIGFkYXB0ZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzdHJlYW1pbmdcbiAgICBpZiAodHlwZW9mIGRhdGE/LnBpcGUgPT09ICdmdW5jdGlvbicgJiYgIXRoaXMuYWRhcHRlci5zdXBwb3J0c1N0cmVhbWluZykge1xuICAgICAgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgICAgIGRhdGEub24oJ2RhdGEnLCBjaHVuayA9PiBjaHVua3MucHVzaChjaHVuaykpO1xuICAgICAgICBkYXRhLm9uKCdlbmQnLCAoKSA9PiByZXNvbHZlKEJ1ZmZlci5jb25jYXQoY2h1bmtzKSkpO1xuICAgICAgICBkYXRhLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhdGlvbiA9IGF3YWl0IHRoaXMuYWRhcHRlci5nZXRGaWxlTG9jYXRpb24oY29uZmlnLCBmaWxlbmFtZSk7XG4gICAgYXdhaXQgdGhpcy5hZGFwdGVyLmNyZWF0ZUZpbGUoZmlsZW5hbWUsIGRhdGEsIGNvbnRlbnRUeXBlLCBvcHRpb25zKTtcbiAgICByZXR1cm4ge1xuICAgICAgdXJsOiBsb2NhdGlvbixcbiAgICAgIG5hbWU6IGZpbGVuYW1lLFxuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUZpbGUoY29uZmlnLCBmaWxlbmFtZSkge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGVsZXRlRmlsZShmaWxlbmFtZSk7XG4gIH1cblxuICBnZXRNZXRhZGF0YShmaWxlbmFtZSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5hZGFwdGVyLmdldE1ldGFkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldE1ldGFkYXRhKGZpbGVuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBmaWxlIHJlZmVyZW5jZXMgaW4gUkVTVC1mb3JtYXQgb2JqZWN0IGFuZCBhZGRzIHRoZSB1cmwga2V5XG4gICAqIHdpdGggdGhlIGN1cnJlbnQgbW91bnQgcG9pbnQgYW5kIGFwcCBpZC5cbiAgICogT2JqZWN0IG1heSBiZSBhIHNpbmdsZSBvYmplY3Qgb3IgbGlzdCBvZiBSRVNULWZvcm1hdCBvYmplY3RzLlxuICAgKi9cbiAgYXN5bmMgZXhwYW5kRmlsZXNJbk9iamVjdChjb25maWcsIG9iamVjdCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICAgIGNvbnN0IHByb21pc2VzID0gb2JqZWN0Lm1hcChvYmogPT4gdGhpcy5leHBhbmRGaWxlc0luT2JqZWN0KGNvbmZpZywgb2JqKSk7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGNvbnN0IGZpbGVPYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmIChmaWxlT2JqZWN0ICYmIGZpbGVPYmplY3RbJ19fdHlwZSddID09PSAnRmlsZScpIHtcbiAgICAgICAgaWYgKGZpbGVPYmplY3RbJ3VybCddKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlT2JqZWN0WyduYW1lJ107XG4gICAgICAgIC8vIGFsbCBmaWxlbmFtZXMgc3RhcnRpbmcgd2l0aCBcInRmc3MtXCIgc2hvdWxkIGJlIGZyb20gZmlsZXMucGFyc2V0ZnNzLmNvbVxuICAgICAgICAvLyBhbGwgZmlsZW5hbWVzIHN0YXJ0aW5nIHdpdGggYSBcIi1cIiBzZXBlcmF0ZWQgVVVJRCBzaG91bGQgYmUgZnJvbSBmaWxlcy5wYXJzZS5jb21cbiAgICAgICAgLy8gYWxsIG90aGVyIGZpbGVuYW1lcyBoYXZlIGJlZW4gbWlncmF0ZWQgb3IgY3JlYXRlZCBmcm9tIFBhcnNlIFNlcnZlclxuICAgICAgICBpZiAoY29uZmlnLmZpbGVLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZpbGVPYmplY3RbJ3VybCddID0gYXdhaXQgdGhpcy5hZGFwdGVyLmdldEZpbGVMb2NhdGlvbihjb25maWcsIGZpbGVuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZmlsZW5hbWUuaW5kZXhPZigndGZzcy0nKSA9PT0gMCkge1xuICAgICAgICAgICAgZmlsZU9iamVjdFsndXJsJ10gPVxuICAgICAgICAgICAgICAnaHR0cDovL2ZpbGVzLnBhcnNldGZzcy5jb20vJyArIGNvbmZpZy5maWxlS2V5ICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGxlZ2FjeUZpbGVzUmVnZXgudGVzdChmaWxlbmFtZSkpIHtcbiAgICAgICAgICAgIGZpbGVPYmplY3RbJ3VybCddID1cbiAgICAgICAgICAgICAgJ2h0dHA6Ly9maWxlcy5wYXJzZS5jb20vJyArIGNvbmZpZy5maWxlS2V5ICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsZU9iamVjdFsndXJsJ10gPSBhd2FpdCB0aGlzLmFkYXB0ZXIuZ2V0RmlsZUxvY2F0aW9uKGNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cGVjdGVkQWRhcHRlclR5cGUoKSB7XG4gICAgcmV0dXJuIEZpbGVzQWRhcHRlcjtcbiAgfVxuXG4gIGhhbmRsZUZpbGVTdHJlYW0oY29uZmlnLCBmaWxlbmFtZSwgcmVxLCByZXMsIGNvbnRlbnRUeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5oYW5kbGVGaWxlU3RyZWFtKGZpbGVuYW1lLCByZXEsIHJlcywgY29udGVudFR5cGUpO1xuICB9XG5cbiAgdmFsaWRhdGVGaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5hZGFwdGVyLnZhbGlkYXRlRmlsZW5hbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5hZGFwdGVyLnZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUpO1xuICAgICAgaWYgKHR5cGVvZiBlcnJvciAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0ZJTEVfTkFNRSwgZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdGVGaWxlbmFtZShmaWxlbmFtZSk7XG4gIH1cbn1c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
@@ -12,7 +12,7 @@ class LiveQueryController {
12
12
  // If config is empty, we just assume no classs needs to be registered as LiveQuery
13
13
  if (!config || !config.classNames) {
14
14
  this.classNames = new Set();
15
- } else if (config.classNames instanceof Array) {
15
+ } else if (Array.isArray(config.classNames)) {
16
16
  const classNames = config.classNames.map(name => {
17
17
  const _name = (0, _triggers.getClassName)(name);
18
18
  return new RegExp(`^${_name}$`);
@@ -69,4 +69,4 @@ class LiveQueryController {
69
69
  }
70
70
  exports.LiveQueryController = LiveQueryController;
71
71
  var _default = exports.default = LiveQueryController;
72
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUGFyc2VDbG91ZENvZGVQdWJsaXNoZXIiLCJyZXF1aXJlIiwiX09wdGlvbnMiLCJfdHJpZ2dlcnMiLCJMaXZlUXVlcnlDb250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJjbGFzc05hbWVzIiwiU2V0IiwiQXJyYXkiLCJtYXAiLCJuYW1lIiwiX25hbWUiLCJnZXRDbGFzc05hbWUiLCJSZWdFeHAiLCJsaXZlUXVlcnlQdWJsaXNoZXIiLCJQYXJzZUNsb3VkQ29kZVB1Ymxpc2hlciIsImNvbm5lY3QiLCJvbkFmdGVyU2F2ZSIsImNsYXNzTmFtZSIsImN1cnJlbnRPYmplY3QiLCJvcmlnaW5hbE9iamVjdCIsImNsYXNzTGV2ZWxQZXJtaXNzaW9ucyIsImhhc0xpdmVRdWVyeSIsInJlcSIsIl9tYWtlUHVibGlzaGVyUmVxdWVzdCIsIm9uQ2xvdWRDb2RlQWZ0ZXJTYXZlIiwib25BZnRlckRlbGV0ZSIsIm9uQ2xvdWRDb2RlQWZ0ZXJEZWxldGUiLCJ0ZXN0IiwiY2xlYXJDYWNoZWRSb2xlcyIsInVzZXIiLCJvbkNsZWFyQ2FjaGVkUm9sZXMiLCJvYmplY3QiLCJvcmlnaW5hbCIsImV4cG9ydHMiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvQ29udHJvbGxlcnMvTGl2ZVF1ZXJ5Q29udHJvbGxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZUNsb3VkQ29kZVB1Ymxpc2hlciB9IGZyb20gJy4uL0xpdmVRdWVyeS9QYXJzZUNsb3VkQ29kZVB1Ymxpc2hlcic7XG5pbXBvcnQgeyBMaXZlUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vT3B0aW9ucyc7XG5pbXBvcnQgeyBnZXRDbGFzc05hbWUgfSBmcm9tICcuLy4uL3RyaWdnZXJzJztcbmV4cG9ydCBjbGFzcyBMaXZlUXVlcnlDb250cm9sbGVyIHtcbiAgY2xhc3NOYW1lczogYW55O1xuICBsaXZlUXVlcnlQdWJsaXNoZXI6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6ID9MaXZlUXVlcnlPcHRpb25zKSB7XG4gICAgLy8gSWYgY29uZmlnIGlzIGVtcHR5LCB3ZSBqdXN0IGFzc3VtZSBubyBjbGFzc3MgbmVlZHMgdG8gYmUgcmVnaXN0ZXJlZCBhcyBMaXZlUXVlcnlcbiAgICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLmNsYXNzTmFtZXMpIHtcbiAgICAgIHRoaXMuY2xhc3NOYW1lcyA9IG5ldyBTZXQoKTtcbiAgICB9IGVsc2UgaWYgKGNvbmZpZy5jbGFzc05hbWVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBjb25maWcuY2xhc3NOYW1lcy5tYXAobmFtZSA9PiB7XG4gICAgICAgIGNvbnN0IF9uYW1lID0gZ2V0Q2xhc3NOYW1lKG5hbWUpO1xuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7X25hbWV9JGApO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNsYXNzTmFtZXMgPSBuZXcgU2V0KGNsYXNzTmFtZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyAnbGl2ZVF1ZXJ5LmNsYXNzZXMgc2hvdWxkIGJlIGFuIGFycmF5IG9mIHN0cmluZyc7XG4gICAgfVxuICAgIHRoaXMubGl2ZVF1ZXJ5UHVibGlzaGVyID0gbmV3IFBhcnNlQ2xvdWRDb2RlUHVibGlzaGVyKGNvbmZpZyk7XG4gIH1cblxuICBjb25uZWN0KCkge1xuICAgIHJldHVybiB0aGlzLmxpdmVRdWVyeVB1Ymxpc2hlci5jb25uZWN0KCk7XG4gIH1cblxuICBvbkFmdGVyU2F2ZShcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBjdXJyZW50T2JqZWN0OiBhbnksXG4gICAgb3JpZ2luYWxPYmplY3Q6IGFueSxcbiAgICBjbGFzc0xldmVsUGVybWlzc2lvbnM6ID9hbnlcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmhhc0xpdmVRdWVyeShjbGFzc05hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlcSA9IHRoaXMuX21ha2VQdWJsaXNoZXJSZXF1ZXN0KGN1cnJlbnRPYmplY3QsIG9yaWdpbmFsT2JqZWN0LCBjbGFzc0xldmVsUGVybWlzc2lvbnMpO1xuICAgIHRoaXMubGl2ZVF1ZXJ5UHVibGlzaGVyLm9uQ2xvdWRDb2RlQWZ0ZXJTYXZlKHJlcSk7XG4gIH1cblxuICBvbkFmdGVyRGVsZXRlKFxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIGN1cnJlbnRPYmplY3Q6IGFueSxcbiAgICBvcmlnaW5hbE9iamVjdDogYW55LFxuICAgIGNsYXNzTGV2ZWxQZXJtaXNzaW9uczogYW55XG4gICkge1xuICAgIGlmICghdGhpcy5oYXNMaXZlUXVlcnkoY2xhc3NOYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXEgPSB0aGlzLl9tYWtlUHVibGlzaGVyUmVxdWVzdChjdXJyZW50T2JqZWN0LCBvcmlnaW5hbE9iamVjdCwgY2xhc3NMZXZlbFBlcm1pc3Npb25zKTtcbiAgICB0aGlzLmxpdmVRdWVyeVB1Ymxpc2hlci5vbkNsb3VkQ29kZUFmdGVyRGVsZXRlKHJlcSk7XG4gIH1cblxuICBoYXNMaXZlUXVlcnkoY2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgdGhpcy5jbGFzc05hbWVzKSB7XG4gICAgICBpZiAobmFtZS50ZXN0KGNsYXNzTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNsZWFyQ2FjaGVkUm9sZXModXNlcjogYW55KSB7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmxpdmVRdWVyeVB1Ymxpc2hlci5vbkNsZWFyQ2FjaGVkUm9sZXModXNlcik7XG4gIH1cblxuICBfbWFrZVB1Ymxpc2hlclJlcXVlc3QoY3VycmVudE9iamVjdDogYW55LCBvcmlnaW5hbE9iamVjdDogYW55LCBjbGFzc0xldmVsUGVybWlzc2lvbnM6ID9hbnkpOiBhbnkge1xuICAgIGNvbnN0IHJlcSA9IHtcbiAgICAgIG9iamVjdDogY3VycmVudE9iamVjdCxcbiAgICB9O1xuICAgIGlmIChjdXJyZW50T2JqZWN0KSB7XG4gICAgICByZXEub3JpZ2luYWwgPSBvcmlnaW5hbE9iamVjdDtcbiAgICB9XG4gICAgaWYgKGNsYXNzTGV2ZWxQZXJtaXNzaW9ucykge1xuICAgICAgcmVxLmNsYXNzTGV2ZWxQZXJtaXNzaW9ucyA9IGNsYXNzTGV2ZWxQZXJtaXNzaW9ucztcbiAgICB9XG4gICAgcmV0dXJuIHJlcTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMaXZlUXVlcnlDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSx3QkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBQ08sTUFBTUcsbUJBQW1CLENBQUM7RUFJL0JDLFdBQVdBLENBQUNDLE1BQXlCLEVBQUU7SUFDckM7SUFDQSxJQUFJLENBQUNBLE1BQU0sSUFBSSxDQUFDQSxNQUFNLENBQUNDLFVBQVUsRUFBRTtNQUNqQyxJQUFJLENBQUNBLFVBQVUsR0FBRyxJQUFJQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDLE1BQU0sSUFBSUYsTUFBTSxDQUFDQyxVQUFVLFlBQVlFLEtBQUssRUFBRTtNQUM3QyxNQUFNRixVQUFVLEdBQUdELE1BQU0sQ0FBQ0MsVUFBVSxDQUFDRyxHQUFHLENBQUNDLElBQUksSUFBSTtRQUMvQyxNQUFNQyxLQUFLLEdBQUcsSUFBQUMsc0JBQVksRUFBQ0YsSUFBSSxDQUFDO1FBQ2hDLE9BQU8sSUFBSUcsTUFBTSxDQUFDLElBQUlGLEtBQUssR0FBRyxDQUFDO01BQ2pDLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ0wsVUFBVSxHQUFHLElBQUlDLEdBQUcsQ0FBQ0QsVUFBVSxDQUFDO0lBQ3ZDLENBQUMsTUFBTTtNQUNMLE1BQU0sZ0RBQWdEO0lBQ3hEO0lBQ0EsSUFBSSxDQUFDUSxrQkFBa0IsR0FBRyxJQUFJQyxnREFBdUIsQ0FBQ1YsTUFBTSxDQUFDO0VBQy9EO0VBRUFXLE9BQU9BLENBQUEsRUFBRztJQUNSLE9BQU8sSUFBSSxDQUFDRixrQkFBa0IsQ0FBQ0UsT0FBTyxDQUFDLENBQUM7RUFDMUM7RUFFQUMsV0FBV0EsQ0FDVEMsU0FBaUIsRUFDakJDLGFBQWtCLEVBQ2xCQyxjQUFtQixFQUNuQkMscUJBQTJCLEVBQzNCO0lBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQ0MsWUFBWSxDQUFDSixTQUFTLENBQUMsRUFBRTtNQUNqQztJQUNGO0lBQ0EsTUFBTUssR0FBRyxHQUFHLElBQUksQ0FBQ0MscUJBQXFCLENBQUNMLGFBQWEsRUFBRUMsY0FBYyxFQUFFQyxxQkFBcUIsQ0FBQztJQUM1RixJQUFJLENBQUNQLGtCQUFrQixDQUFDVyxvQkFBb0IsQ0FBQ0YsR0FBRyxDQUFDO0VBQ25EO0VBRUFHLGFBQWFBLENBQ1hSLFNBQWlCLEVBQ2pCQyxhQUFrQixFQUNsQkMsY0FBbUIsRUFDbkJDLHFCQUEwQixFQUMxQjtJQUNBLElBQUksQ0FBQyxJQUFJLENBQUNDLFlBQVksQ0FBQ0osU0FBUyxDQUFDLEVBQUU7TUFDakM7SUFDRjtJQUNBLE1BQU1LLEdBQUcsR0FBRyxJQUFJLENBQUNDLHFCQUFxQixDQUFDTCxhQUFhLEVBQUVDLGNBQWMsRUFBRUMscUJBQXFCLENBQUM7SUFDNUYsSUFBSSxDQUFDUCxrQkFBa0IsQ0FBQ2Esc0JBQXNCLENBQUNKLEdBQUcsQ0FBQztFQUNyRDtFQUVBRCxZQUFZQSxDQUFDSixTQUFpQixFQUFXO0lBQ3ZDLEtBQUssTUFBTVIsSUFBSSxJQUFJLElBQUksQ0FBQ0osVUFBVSxFQUFFO01BQ2xDLElBQUlJLElBQUksQ0FBQ2tCLElBQUksQ0FBQ1YsU0FBUyxDQUFDLEVBQUU7UUFDeEIsT0FBTyxJQUFJO01BQ2I7SUFDRjtJQUNBLE9BQU8sS0FBSztFQUNkO0VBRUFXLGdCQUFnQkEsQ0FBQ0MsSUFBUyxFQUFFO0lBQzFCLElBQUksQ0FBQ0EsSUFBSSxFQUFFO01BQ1Q7SUFDRjtJQUNBLE9BQU8sSUFBSSxDQUFDaEIsa0JBQWtCLENBQUNpQixrQkFBa0IsQ0FBQ0QsSUFBSSxDQUFDO0VBQ3pEO0VBRUFOLHFCQUFxQkEsQ0FBQ0wsYUFBa0IsRUFBRUMsY0FBbUIsRUFBRUMscUJBQTJCLEVBQU87SUFDL0YsTUFBTUUsR0FBRyxHQUFHO01BQ1ZTLE1BQU0sRUFBRWI7SUFDVixDQUFDO0lBQ0QsSUFBSUEsYUFBYSxFQUFFO01BQ2pCSSxHQUFHLENBQUNVLFFBQVEsR0FBR2IsY0FBYztJQUMvQjtJQUNBLElBQUlDLHFCQUFxQixFQUFFO01BQ3pCRSxHQUFHLENBQUNGLHFCQUFxQixHQUFHQSxxQkFBcUI7SUFDbkQ7SUFDQSxPQUFPRSxHQUFHO0VBQ1o7QUFDRjtBQUFDVyxPQUFBLENBQUEvQixtQkFBQSxHQUFBQSxtQkFBQTtBQUFBLElBQUFnQyxRQUFBLEdBQUFELE9BQUEsQ0FBQUUsT0FBQSxHQUVjakMsbUJBQW1CIiwiaWdub3JlTGlzdCI6W119
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUGFyc2VDbG91ZENvZGVQdWJsaXNoZXIiLCJyZXF1aXJlIiwiX09wdGlvbnMiLCJfdHJpZ2dlcnMiLCJMaXZlUXVlcnlDb250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJjbGFzc05hbWVzIiwiU2V0IiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwibmFtZSIsIl9uYW1lIiwiZ2V0Q2xhc3NOYW1lIiwiUmVnRXhwIiwibGl2ZVF1ZXJ5UHVibGlzaGVyIiwiUGFyc2VDbG91ZENvZGVQdWJsaXNoZXIiLCJjb25uZWN0Iiwib25BZnRlclNhdmUiLCJjbGFzc05hbWUiLCJjdXJyZW50T2JqZWN0Iiwib3JpZ2luYWxPYmplY3QiLCJjbGFzc0xldmVsUGVybWlzc2lvbnMiLCJoYXNMaXZlUXVlcnkiLCJyZXEiLCJfbWFrZVB1Ymxpc2hlclJlcXVlc3QiLCJvbkNsb3VkQ29kZUFmdGVyU2F2ZSIsIm9uQWZ0ZXJEZWxldGUiLCJvbkNsb3VkQ29kZUFmdGVyRGVsZXRlIiwidGVzdCIsImNsZWFyQ2FjaGVkUm9sZXMiLCJ1c2VyIiwib25DbGVhckNhY2hlZFJvbGVzIiwib2JqZWN0Iiwib3JpZ2luYWwiLCJleHBvcnRzIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbnRyb2xsZXJzL0xpdmVRdWVyeUNvbnRyb2xsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VDbG91ZENvZGVQdWJsaXNoZXIgfSBmcm9tICcuLi9MaXZlUXVlcnkvUGFyc2VDbG91ZENvZGVQdWJsaXNoZXInO1xuaW1wb3J0IHsgTGl2ZVF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4uL09wdGlvbnMnO1xuaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi8uLi90cmlnZ2Vycyc7XG5leHBvcnQgY2xhc3MgTGl2ZVF1ZXJ5Q29udHJvbGxlciB7XG4gIGNsYXNzTmFtZXM6IGFueTtcbiAgbGl2ZVF1ZXJ5UHVibGlzaGVyOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiA/TGl2ZVF1ZXJ5T3B0aW9ucykge1xuICAgIC8vIElmIGNvbmZpZyBpcyBlbXB0eSwgd2UganVzdCBhc3N1bWUgbm8gY2xhc3NzIG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQgYXMgTGl2ZVF1ZXJ5XG4gICAgaWYgKCFjb25maWcgfHwgIWNvbmZpZy5jbGFzc05hbWVzKSB7XG4gICAgICB0aGlzLmNsYXNzTmFtZXMgPSBuZXcgU2V0KCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5jbGFzc05hbWVzKSkge1xuICAgICAgY29uc3QgY2xhc3NOYW1lcyA9IGNvbmZpZy5jbGFzc05hbWVzLm1hcChuYW1lID0+IHtcbiAgICAgICAgY29uc3QgX25hbWUgPSBnZXRDbGFzc05hbWUobmFtZSk7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBeJHtfbmFtZX0kYCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2xhc3NOYW1lcyA9IG5ldyBTZXQoY2xhc3NOYW1lcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93ICdsaXZlUXVlcnkuY2xhc3NlcyBzaG91bGQgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nJztcbiAgICB9XG4gICAgdGhpcy5saXZlUXVlcnlQdWJsaXNoZXIgPSBuZXcgUGFyc2VDbG91ZENvZGVQdWJsaXNoZXIoY29uZmlnKTtcbiAgfVxuXG4gIGNvbm5lY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMubGl2ZVF1ZXJ5UHVibGlzaGVyLmNvbm5lY3QoKTtcbiAgfVxuXG4gIG9uQWZ0ZXJTYXZlKFxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIGN1cnJlbnRPYmplY3Q6IGFueSxcbiAgICBvcmlnaW5hbE9iamVjdDogYW55LFxuICAgIGNsYXNzTGV2ZWxQZXJtaXNzaW9uczogP2FueVxuICApIHtcbiAgICBpZiAoIXRoaXMuaGFzTGl2ZVF1ZXJ5KGNsYXNzTmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVxID0gdGhpcy5fbWFrZVB1Ymxpc2hlclJlcXVlc3QoY3VycmVudE9iamVjdCwgb3JpZ2luYWxPYmplY3QsIGNsYXNzTGV2ZWxQZXJtaXNzaW9ucyk7XG4gICAgdGhpcy5saXZlUXVlcnlQdWJsaXNoZXIub25DbG91ZENvZGVBZnRlclNhdmUocmVxKTtcbiAgfVxuXG4gIG9uQWZ0ZXJEZWxldGUoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgY3VycmVudE9iamVjdDogYW55LFxuICAgIG9yaWdpbmFsT2JqZWN0OiBhbnksXG4gICAgY2xhc3NMZXZlbFBlcm1pc3Npb25zOiBhbnlcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmhhc0xpdmVRdWVyeShjbGFzc05hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlcSA9IHRoaXMuX21ha2VQdWJsaXNoZXJSZXF1ZXN0KGN1cnJlbnRPYmplY3QsIG9yaWdpbmFsT2JqZWN0LCBjbGFzc0xldmVsUGVybWlzc2lvbnMpO1xuICAgIHRoaXMubGl2ZVF1ZXJ5UHVibGlzaGVyLm9uQ2xvdWRDb2RlQWZ0ZXJEZWxldGUocmVxKTtcbiAgfVxuXG4gIGhhc0xpdmVRdWVyeShjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiB0aGlzLmNsYXNzTmFtZXMpIHtcbiAgICAgIGlmIChuYW1lLnRlc3QoY2xhc3NOYW1lKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2xlYXJDYWNoZWRSb2xlcyh1c2VyOiBhbnkpIHtcbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGl2ZVF1ZXJ5UHVibGlzaGVyLm9uQ2xlYXJDYWNoZWRSb2xlcyh1c2VyKTtcbiAgfVxuXG4gIF9tYWtlUHVibGlzaGVyUmVxdWVzdChjdXJyZW50T2JqZWN0OiBhbnksIG9yaWdpbmFsT2JqZWN0OiBhbnksIGNsYXNzTGV2ZWxQZXJtaXNzaW9uczogP2FueSk6IGFueSB7XG4gICAgY29uc3QgcmVxID0ge1xuICAgICAgb2JqZWN0OiBjdXJyZW50T2JqZWN0LFxuICAgIH07XG4gICAgaWYgKGN1cnJlbnRPYmplY3QpIHtcbiAgICAgIHJlcS5vcmlnaW5hbCA9IG9yaWdpbmFsT2JqZWN0O1xuICAgIH1cbiAgICBpZiAoY2xhc3NMZXZlbFBlcm1pc3Npb25zKSB7XG4gICAgICByZXEuY2xhc3NMZXZlbFBlcm1pc3Npb25zID0gY2xhc3NMZXZlbFBlcm1pc3Npb25zO1xuICAgIH1cbiAgICByZXR1cm4gcmVxO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExpdmVRdWVyeUNvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHdCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxTQUFBLEdBQUFGLE9BQUE7QUFDTyxNQUFNRyxtQkFBbUIsQ0FBQztFQUkvQkMsV0FBV0EsQ0FBQ0MsTUFBeUIsRUFBRTtJQUNyQztJQUNBLElBQUksQ0FBQ0EsTUFBTSxJQUFJLENBQUNBLE1BQU0sQ0FBQ0MsVUFBVSxFQUFFO01BQ2pDLElBQUksQ0FBQ0EsVUFBVSxHQUFHLElBQUlDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUMsTUFBTSxJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osTUFBTSxDQUFDQyxVQUFVLENBQUMsRUFBRTtNQUMzQyxNQUFNQSxVQUFVLEdBQUdELE1BQU0sQ0FBQ0MsVUFBVSxDQUFDSSxHQUFHLENBQUNDLElBQUksSUFBSTtRQUMvQyxNQUFNQyxLQUFLLEdBQUcsSUFBQUMsc0JBQVksRUFBQ0YsSUFBSSxDQUFDO1FBQ2hDLE9BQU8sSUFBSUcsTUFBTSxDQUFDLElBQUlGLEtBQUssR0FBRyxDQUFDO01BQ2pDLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ04sVUFBVSxHQUFHLElBQUlDLEdBQUcsQ0FBQ0QsVUFBVSxDQUFDO0lBQ3ZDLENBQUMsTUFBTTtNQUNMLE1BQU0sZ0RBQWdEO0lBQ3hEO0lBQ0EsSUFBSSxDQUFDUyxrQkFBa0IsR0FBRyxJQUFJQyxnREFBdUIsQ0FBQ1gsTUFBTSxDQUFDO0VBQy9EO0VBRUFZLE9BQU9BLENBQUEsRUFBRztJQUNSLE9BQU8sSUFBSSxDQUFDRixrQkFBa0IsQ0FBQ0UsT0FBTyxDQUFDLENBQUM7RUFDMUM7RUFFQUMsV0FBV0EsQ0FDVEMsU0FBaUIsRUFDakJDLGFBQWtCLEVBQ2xCQyxjQUFtQixFQUNuQkMscUJBQTJCLEVBQzNCO0lBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQ0MsWUFBWSxDQUFDSixTQUFTLENBQUMsRUFBRTtNQUNqQztJQUNGO0lBQ0EsTUFBTUssR0FBRyxHQUFHLElBQUksQ0FBQ0MscUJBQXFCLENBQUNMLGFBQWEsRUFBRUMsY0FBYyxFQUFFQyxxQkFBcUIsQ0FBQztJQUM1RixJQUFJLENBQUNQLGtCQUFrQixDQUFDVyxvQkFBb0IsQ0FBQ0YsR0FBRyxDQUFDO0VBQ25EO0VBRUFHLGFBQWFBLENBQ1hSLFNBQWlCLEVBQ2pCQyxhQUFrQixFQUNsQkMsY0FBbUIsRUFDbkJDLHFCQUEwQixFQUMxQjtJQUNBLElBQUksQ0FBQyxJQUFJLENBQUNDLFlBQVksQ0FBQ0osU0FBUyxDQUFDLEVBQUU7TUFDakM7SUFDRjtJQUNBLE1BQU1LLEdBQUcsR0FBRyxJQUFJLENBQUNDLHFCQUFxQixDQUFDTCxhQUFhLEVBQUVDLGNBQWMsRUFBRUMscUJBQXFCLENBQUM7SUFDNUYsSUFBSSxDQUFDUCxrQkFBa0IsQ0FBQ2Esc0JBQXNCLENBQUNKLEdBQUcsQ0FBQztFQUNyRDtFQUVBRCxZQUFZQSxDQUFDSixTQUFpQixFQUFXO0lBQ3ZDLEtBQUssTUFBTVIsSUFBSSxJQUFJLElBQUksQ0FBQ0wsVUFBVSxFQUFFO01BQ2xDLElBQUlLLElBQUksQ0FBQ2tCLElBQUksQ0FBQ1YsU0FBUyxDQUFDLEVBQUU7UUFDeEIsT0FBTyxJQUFJO01BQ2I7SUFDRjtJQUNBLE9BQU8sS0FBSztFQUNkO0VBRUFXLGdCQUFnQkEsQ0FBQ0MsSUFBUyxFQUFFO0lBQzFCLElBQUksQ0FBQ0EsSUFBSSxFQUFFO01BQ1Q7SUFDRjtJQUNBLE9BQU8sSUFBSSxDQUFDaEIsa0JBQWtCLENBQUNpQixrQkFBa0IsQ0FBQ0QsSUFBSSxDQUFDO0VBQ3pEO0VBRUFOLHFCQUFxQkEsQ0FBQ0wsYUFBa0IsRUFBRUMsY0FBbUIsRUFBRUMscUJBQTJCLEVBQU87SUFDL0YsTUFBTUUsR0FBRyxHQUFHO01BQ1ZTLE1BQU0sRUFBRWI7SUFDVixDQUFDO0lBQ0QsSUFBSUEsYUFBYSxFQUFFO01BQ2pCSSxHQUFHLENBQUNVLFFBQVEsR0FBR2IsY0FBYztJQUMvQjtJQUNBLElBQUlDLHFCQUFxQixFQUFFO01BQ3pCRSxHQUFHLENBQUNGLHFCQUFxQixHQUFHQSxxQkFBcUI7SUFDbkQ7SUFDQSxPQUFPRSxHQUFHO0VBQ1o7QUFDRjtBQUFDVyxPQUFBLENBQUFoQyxtQkFBQSxHQUFBQSxtQkFBQTtBQUFBLElBQUFpQyxRQUFBLEdBQUFELE9BQUEsQ0FBQUUsT0FBQSxHQUVjbEMsbUJBQW1CIiwiaWdub3JlTGlzdCI6W119
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = exports.GraphQLConfigKey = exports.GraphQLConfigId = exports.GraphQLConfigClassName = void 0;
7
7
  var _requiredParameter = _interopRequireDefault(require("../../lib/requiredParameter"));
8
+ var _Utils = _interopRequireDefault(require("../Utils"));
8
9
  var _DatabaseController = _interopRequireDefault(require("./DatabaseController"));
9
10
  var _CacheController = _interopRequireDefault(require("./CacheController"));
10
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -287,7 +288,7 @@ const isValidStringArray = function (array) {
287
288
  * etc.
288
289
  */
289
290
  const isValidSimpleObject = function (obj) {
290
- return typeof obj === 'object' && !Array.isArray(obj) && obj !== null && obj instanceof Date !== true && obj instanceof Promise !== true;
291
+ return typeof obj === 'object' && !Array.isArray(obj) && obj !== null && _Utils.default.isDate(obj) !== true && _Utils.default.isPromise(obj) !== true;
291
292
  };
292
293
  var _default = exports.default = ParseGraphQLController;
293
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVxdWlyZWRQYXJhbWV0ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9EYXRhYmFzZUNvbnRyb2xsZXIiLCJfQ2FjaGVDb250cm9sbGVyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiR3JhcGhRTENvbmZpZ0NsYXNzTmFtZSIsImV4cG9ydHMiLCJHcmFwaFFMQ29uZmlnSWQiLCJHcmFwaFFMQ29uZmlnS2V5IiwiUGFyc2VHcmFwaFFMQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwicGFyYW1zIiwiZGF0YWJhc2VDb250cm9sbGVyIiwicmVxdWlyZWRQYXJhbWV0ZXIiLCJjYWNoZUNvbnRyb2xsZXIiLCJpc01vdW50ZWQiLCJtb3VudEdyYXBoUUwiLCJjb25maWdDYWNoZUtleSIsImdldEdyYXBoUUxDb25maWciLCJfY2FjaGVkQ29uZmlnIiwiX2dldENhY2hlZEdyYXBoUUxDb25maWciLCJyZXN1bHRzIiwiZmluZCIsIm9iamVjdElkIiwibGltaXQiLCJncmFwaFFMQ29uZmlnIiwibGVuZ3RoIiwiX3B1dENhY2hlZEdyYXBoUUxDb25maWciLCJ1cGRhdGVHcmFwaFFMQ29uZmlnIiwiX3ZhbGlkYXRlR3JhcGhRTENvbmZpZyIsInVwZGF0ZSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJhY2MiLCJrZXkiLCJ1cHNlcnQiLCJyZXNwb25zZSIsInJlc3VsdCIsImdyYXBoUUwiLCJnZXQiLCJwdXQiLCJlcnJvck1lc3NhZ2VzIiwicHVzaCIsImlzVmFsaWRTaW1wbGVPYmplY3QiLCJlbmFibGVkRm9yQ2xhc3NlcyIsImRpc2FibGVkRm9yQ2xhc3NlcyIsImNsYXNzQ29uZmlncyIsImludmFsaWRLZXlzIiwiaXNWYWxpZFN0cmluZ0FycmF5IiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsImNsYXNzQ29uZmlnIiwiZXJyb3JNZXNzYWdlIiwiX3ZhbGlkYXRlQ2xhc3NDb25maWciLCJjbGFzc05hbWUiLCJFcnJvciIsImpvaW4iLCJ0eXBlIiwicXVlcnkiLCJtdXRhdGlvbiIsInRyaW0iLCJpbnB1dEZpZWxkcyIsIm91dHB1dEZpZWxkcyIsImNvbnN0cmFpbnRGaWVsZHMiLCJzb3J0RmllbGRzIiwiZXZlcnkiLCJzb3J0RmllbGQiLCJpbmRleCIsImZpZWxkIiwiYXNjIiwiZGVzYyIsImNyZWF0ZSIsImluY2x1ZGVzIiwiZmluZEFsaWFzIiwiZ2V0QWxpYXMiLCJkZXN0cm95IiwiY3JlYXRlQWxpYXMiLCJ1cGRhdGVBbGlhcyIsImRlc3Ryb3lBbGlhcyIsImFycmF5Iiwic29tZSIsInMiLCJvYmoiLCJEYXRlIiwiUHJvbWlzZSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbnRyb2xsZXJzL1BhcnNlR3JhcGhRTENvbnRyb2xsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlcXVpcmVkUGFyYW1ldGVyIGZyb20gJy4uLy4uL2xpYi9yZXF1aXJlZFBhcmFtZXRlcic7XG5pbXBvcnQgRGF0YWJhc2VDb250cm9sbGVyIGZyb20gJy4vRGF0YWJhc2VDb250cm9sbGVyJztcbmltcG9ydCBDYWNoZUNvbnRyb2xsZXIgZnJvbSAnLi9DYWNoZUNvbnRyb2xsZXInO1xuXG5jb25zdCBHcmFwaFFMQ29uZmlnQ2xhc3NOYW1lID0gJ19HcmFwaFFMQ29uZmlnJztcbmNvbnN0IEdyYXBoUUxDb25maWdJZCA9ICcxJztcbmNvbnN0IEdyYXBoUUxDb25maWdLZXkgPSAnY29uZmlnJztcblxuY2xhc3MgUGFyc2VHcmFwaFFMQ29udHJvbGxlciB7XG4gIGRhdGFiYXNlQ29udHJvbGxlcjogRGF0YWJhc2VDb250cm9sbGVyO1xuICBjYWNoZUNvbnRyb2xsZXI6IENhY2hlQ29udHJvbGxlcjtcbiAgaXNNb3VudGVkOiBib29sZWFuO1xuICBjb25maWdDYWNoZUtleTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHBhcmFtczoge1xuICAgICAgZGF0YWJhc2VDb250cm9sbGVyOiBEYXRhYmFzZUNvbnRyb2xsZXIsXG4gICAgICBjYWNoZUNvbnRyb2xsZXI6IENhY2hlQ29udHJvbGxlcixcbiAgICB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5kYXRhYmFzZUNvbnRyb2xsZXIgPVxuICAgICAgcGFyYW1zLmRhdGFiYXNlQ29udHJvbGxlciB8fFxuICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoXG4gICAgICAgIGBQYXJzZUdyYXBoUUxDb250cm9sbGVyIHJlcXVpcmVzIGEgXCJkYXRhYmFzZUNvbnRyb2xsZXJcIiB0byBiZSBpbnN0YW50aWF0ZWQuYFxuICAgICAgKTtcbiAgICB0aGlzLmNhY2hlQ29udHJvbGxlciA9IHBhcmFtcy5jYWNoZUNvbnRyb2xsZXI7XG4gICAgdGhpcy5pc01vdW50ZWQgPSAhIXBhcmFtcy5tb3VudEdyYXBoUUw7XG4gICAgdGhpcy5jb25maWdDYWNoZUtleSA9IEdyYXBoUUxDb25maWdLZXk7XG4gIH1cblxuICBhc3luYyBnZXRHcmFwaFFMQ29uZmlnKCk6IFByb21pc2U8UGFyc2VHcmFwaFFMQ29uZmlnPiB7XG4gICAgaWYgKHRoaXMuaXNNb3VudGVkKSB7XG4gICAgICBjb25zdCBfY2FjaGVkQ29uZmlnID0gYXdhaXQgdGhpcy5fZ2V0Q2FjaGVkR3JhcGhRTENvbmZpZygpO1xuICAgICAgaWYgKF9jYWNoZWRDb25maWcpIHtcbiAgICAgICAgcmV0dXJuIF9jYWNoZWRDb25maWc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZGF0YWJhc2VDb250cm9sbGVyLmZpbmQoXG4gICAgICBHcmFwaFFMQ29uZmlnQ2xhc3NOYW1lLFxuICAgICAgeyBvYmplY3RJZDogR3JhcGhRTENvbmZpZ0lkIH0sXG4gICAgICB7IGxpbWl0OiAxIH1cbiAgICApO1xuXG4gICAgbGV0IGdyYXBoUUxDb25maWc7XG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9IDEpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGNvbmZpZyBpbiB0aGUgZGF0YWJhc2UgLSByZXR1cm4gZW1wdHkgY29uZmlnLlxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICBncmFwaFFMQ29uZmlnID0gcmVzdWx0c1swXVtHcmFwaFFMQ29uZmlnS2V5XTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc01vdW50ZWQpIHtcbiAgICAgIHRoaXMuX3B1dENhY2hlZEdyYXBoUUxDb25maWcoZ3JhcGhRTENvbmZpZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyYXBoUUxDb25maWc7XG4gIH1cblxuICBhc3luYyB1cGRhdGVHcmFwaFFMQ29uZmlnKGdyYXBoUUxDb25maWc6IFBhcnNlR3JhcGhRTENvbmZpZyk6IFByb21pc2U8UGFyc2VHcmFwaFFMQ29uZmlnPiB7XG4gICAgLy8gdGhyb3dzIGlmIGludmFsaWRcbiAgICB0aGlzLl92YWxpZGF0ZUdyYXBoUUxDb25maWcoXG4gICAgICBncmFwaFFMQ29uZmlnIHx8IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgZ3JhcGhRTENvbmZpZyEnKVxuICAgICk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gaW4gZG90IG5vdGF0aW9uIHRvIG1ha2Ugc3VyZSBpdCB3b3Jrc1xuICAgIGNvbnN0IHVwZGF0ZSA9IE9iamVjdC5rZXlzKGdyYXBoUUxDb25maWcpLnJlZHVjZShcbiAgICAgIChhY2MsIGtleSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFtHcmFwaFFMQ29uZmlnS2V5XToge1xuICAgICAgICAgICAgLi4uYWNjW0dyYXBoUUxDb25maWdLZXldLFxuICAgICAgICAgICAgW2tleV06IGdyYXBoUUxDb25maWdba2V5XSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHsgW0dyYXBoUUxDb25maWdLZXldOiB7fSB9XG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuZGF0YWJhc2VDb250cm9sbGVyLnVwZGF0ZShcbiAgICAgIEdyYXBoUUxDb25maWdDbGFzc05hbWUsXG4gICAgICB7IG9iamVjdElkOiBHcmFwaFFMQ29uZmlnSWQgfSxcbiAgICAgIHVwZGF0ZSxcbiAgICAgIHsgdXBzZXJ0OiB0cnVlIH1cbiAgICApO1xuXG4gICAgaWYgKHRoaXMuaXNNb3VudGVkKSB7XG4gICAgICB0aGlzLl9wdXRDYWNoZWRHcmFwaFFMQ29uZmlnKGdyYXBoUUxDb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiB7IHJlc3BvbnNlOiB7IHJlc3VsdDogdHJ1ZSB9IH07XG4gIH1cblxuICBfZ2V0Q2FjaGVkR3JhcGhRTENvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNvbnRyb2xsZXIuZ3JhcGhRTC5nZXQodGhpcy5jb25maWdDYWNoZUtleSk7XG4gIH1cblxuICBfcHV0Q2FjaGVkR3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnOiBQYXJzZUdyYXBoUUxDb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNvbnRyb2xsZXIuZ3JhcGhRTC5wdXQodGhpcy5jb25maWdDYWNoZUtleSwgZ3JhcGhRTENvbmZpZywgNjAwMDApO1xuICB9XG5cbiAgX3ZhbGlkYXRlR3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnOiA/UGFyc2VHcmFwaFFMQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlczogc3RyaW5nID0gW107XG4gICAgaWYgKCFncmFwaFFMQ29uZmlnKSB7XG4gICAgICBlcnJvck1lc3NhZ2VzLnB1c2goJ2Nhbm5vdCBiZSB1bmRlZmluZWQsIG51bGwgb3IgZW1wdHknKTtcbiAgICB9IGVsc2UgaWYgKCFpc1ZhbGlkU2ltcGxlT2JqZWN0KGdyYXBoUUxDb25maWcpKSB7XG4gICAgICBlcnJvck1lc3NhZ2VzLnB1c2goJ211c3QgYmUgYSB2YWxpZCBvYmplY3QnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge1xuICAgICAgICBlbmFibGVkRm9yQ2xhc3NlcyA9IG51bGwsXG4gICAgICAgIGRpc2FibGVkRm9yQ2xhc3NlcyA9IG51bGwsXG4gICAgICAgIGNsYXNzQ29uZmlncyA9IG51bGwsXG4gICAgICAgIC4uLmludmFsaWRLZXlzXG4gICAgICB9ID0gZ3JhcGhRTENvbmZpZztcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGludmFsaWRLZXlzKS5sZW5ndGgpIHtcbiAgICAgICAgZXJyb3JNZXNzYWdlcy5wdXNoKGBlbmNvdW50ZXJlZCBpbnZhbGlkIGtleXM6IFske09iamVjdC5rZXlzKGludmFsaWRLZXlzKX1dYCk7XG4gICAgICB9XG4gICAgICBpZiAoZW5hYmxlZEZvckNsYXNzZXMgIT09IG51bGwgJiYgIWlzVmFsaWRTdHJpbmdBcnJheShlbmFibGVkRm9yQ2xhc3NlcykpIHtcbiAgICAgICAgZXJyb3JNZXNzYWdlcy5wdXNoKGBcImVuYWJsZWRGb3JDbGFzc2VzXCIgaXMgbm90IGEgdmFsaWQgYXJyYXlgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkaXNhYmxlZEZvckNsYXNzZXMgIT09IG51bGwgJiYgIWlzVmFsaWRTdHJpbmdBcnJheShkaXNhYmxlZEZvckNsYXNzZXMpKSB7XG4gICAgICAgIGVycm9yTWVzc2FnZXMucHVzaChgXCJkaXNhYmxlZEZvckNsYXNzZXNcIiBpcyBub3QgYSB2YWxpZCBhcnJheWApO1xuICAgICAgfVxuICAgICAgaWYgKGNsYXNzQ29uZmlncyAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjbGFzc0NvbmZpZ3MpKSB7XG4gICAgICAgICAgY2xhc3NDb25maWdzLmZvckVhY2goY2xhc3NDb25maWcgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gdGhpcy5fdmFsaWRhdGVDbGFzc0NvbmZpZyhjbGFzc0NvbmZpZyk7XG4gICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZXMucHVzaChcbiAgICAgICAgICAgICAgICBgY2xhc3NDb25maWc6JHtjbGFzc0NvbmZpZy5jbGFzc05hbWV9IGlzIGludmFsaWQgYmVjYXVzZSAke2Vycm9yTWVzc2FnZX1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3JNZXNzYWdlcy5wdXNoKGBcImNsYXNzQ29uZmlnc1wiIGlzIG5vdCBhIHZhbGlkIGFycmF5YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVycm9yTWVzc2FnZXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZ3JhcGhRTENvbmZpZzogJHtlcnJvck1lc3NhZ2VzLmpvaW4oJzsgJyl9YCk7XG4gICAgfVxuICB9XG5cbiAgX3ZhbGlkYXRlQ2xhc3NDb25maWcoY2xhc3NDb25maWc6ID9QYXJzZUdyYXBoUUxDbGFzc0NvbmZpZyk6IHN0cmluZyB8IHZvaWQge1xuICAgIGlmICghaXNWYWxpZFNpbXBsZU9iamVjdChjbGFzc0NvbmZpZykpIHtcbiAgICAgIHJldHVybiAnaXQgbXVzdCBiZSBhIHZhbGlkIG9iamVjdCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgY2xhc3NOYW1lLCB0eXBlID0gbnVsbCwgcXVlcnkgPSBudWxsLCBtdXRhdGlvbiA9IG51bGwsIC4uLmludmFsaWRLZXlzIH0gPSBjbGFzc0NvbmZpZztcbiAgICAgIGlmIChPYmplY3Qua2V5cyhpbnZhbGlkS2V5cykubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBgXCJpbnZhbGlkS2V5c1wiIFske09iamVjdC5rZXlzKGludmFsaWRLZXlzKX1dIHNob3VsZCBub3QgYmUgcHJlc2VudGA7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGNsYXNzTmFtZSAhPT0gJ3N0cmluZycgfHwgIWNsYXNzTmFtZS50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgIC8vIFRPRE8gY29uc2lkZXIgY2hlY2tpbmcgY2xhc3MgZXhpc3RzIGluIHNjaGVtYT9cbiAgICAgICAgcmV0dXJuIGBcImNsYXNzTmFtZVwiIG11c3QgYmUgYSB2YWxpZCBzdHJpbmdgO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKCFpc1ZhbGlkU2ltcGxlT2JqZWN0KHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIGBcInR5cGVcIiBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0YDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaW5wdXRGaWVsZHMgPSBudWxsLFxuICAgICAgICAgIG91dHB1dEZpZWxkcyA9IG51bGwsXG4gICAgICAgICAgY29uc3RyYWludEZpZWxkcyA9IG51bGwsXG4gICAgICAgICAgc29ydEZpZWxkcyA9IG51bGwsXG4gICAgICAgICAgLi4uaW52YWxpZEtleXNcbiAgICAgICAgfSA9IHR5cGU7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhpbnZhbGlkS2V5cykubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGBcInR5cGVcIiBjb250YWlucyBpbnZhbGlkIGtleXMsIFske09iamVjdC5rZXlzKGludmFsaWRLZXlzKX1dYDtcbiAgICAgICAgfSBlbHNlIGlmIChvdXRwdXRGaWVsZHMgIT09IG51bGwgJiYgIWlzVmFsaWRTdHJpbmdBcnJheShvdXRwdXRGaWVsZHMpKSB7XG4gICAgICAgICAgcmV0dXJuIGBcIm91dHB1dEZpZWxkc1wiIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgYXJyYXlgO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnN0cmFpbnRGaWVsZHMgIT09IG51bGwgJiYgIWlzVmFsaWRTdHJpbmdBcnJheShjb25zdHJhaW50RmllbGRzKSkge1xuICAgICAgICAgIHJldHVybiBgXCJjb25zdHJhaW50RmllbGRzXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBhcnJheWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvcnRGaWVsZHMgIT09IG51bGwpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3J0RmllbGRzKSkge1xuICAgICAgICAgICAgbGV0IGVycm9yTWVzc2FnZTtcbiAgICAgICAgICAgIHNvcnRGaWVsZHMuZXZlcnkoKHNvcnRGaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkU2ltcGxlT2JqZWN0KHNvcnRGaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgXCJzb3J0RmllbGRcIiBhdCBpbmRleCAke2luZGV4fSBpcyBub3QgYSB2YWxpZCBvYmplY3RgO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGZpZWxkLCBhc2MsIGRlc2MsIC4uLmludmFsaWRLZXlzIH0gPSBzb3J0RmllbGQ7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGludmFsaWRLZXlzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGBcInNvcnRGaWVsZFwiIGF0IGluZGV4ICR7aW5kZXh9IGNvbnRhaW5zIGludmFsaWQga2V5cywgWyR7T2JqZWN0LmtleXMoXG4gICAgICAgICAgICAgICAgICAgIGludmFsaWRLZXlzXG4gICAgICAgICAgICAgICAgICApfV1gO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkICE9PSAnc3RyaW5nJyB8fCBmaWVsZC50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGBcInNvcnRGaWVsZFwiIGF0IGluZGV4ICR7aW5kZXh9IGRpZCBub3QgcHJvdmlkZSB0aGUgXCJmaWVsZFwiIGFzIGEgc3RyaW5nYDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXNjICE9PSAnYm9vbGVhbicgfHwgdHlwZW9mIGRlc2MgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgXCJzb3J0RmllbGRcIiBhdCBpbmRleCAke2luZGV4fSBkaWQgbm90IHByb3ZpZGUgXCJhc2NcIiBvciBcImRlc2NcIiBhcyBib29sZWFuc2A7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGBcInNvcnRGaWVsZHNcIiBtdXN0IGJlIGEgdmFsaWQgYXJyYXkuYDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0RmllbGRzICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKGlzVmFsaWRTaW1wbGVPYmplY3QoaW5wdXRGaWVsZHMpKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNyZWF0ZSA9IG51bGwsIHVwZGF0ZSA9IG51bGwsIC4uLmludmFsaWRLZXlzIH0gPSBpbnB1dEZpZWxkcztcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhpbnZhbGlkS2V5cykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBgXCJpbnB1dEZpZWxkc1wiIGNvbnRhaW5zIGludmFsaWQga2V5czogWyR7T2JqZWN0LmtleXMoaW52YWxpZEtleXMpfV1gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZSAhPT0gbnVsbCAmJiAhaXNWYWxpZFN0cmluZ0FycmF5KHVwZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFwiaW5wdXRGaWVsZHMudXBkYXRlXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBhcnJheWA7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkU3RyaW5nQXJyYXkoY3JlYXRlKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGBcImlucHV0RmllbGRzLmNyZWF0ZVwiIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgYXJyYXlgO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xhc3NOYW1lID09PSAnX1VzZXInKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoIWNyZWF0ZS5pbmNsdWRlcygndXNlcm5hbWUnKSB8fCAhY3JlYXRlLmluY2x1ZGVzKCdwYXNzd29yZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgXCJpbnB1dEZpZWxkcy5jcmVhdGVcIiBtdXN0IGluY2x1ZGUgcmVxdWlyZWQgZmllbGRzLCB1c2VybmFtZSBhbmQgcGFzc3dvcmRgO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYFwiaW5wdXRGaWVsZHNcIiBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxdWVyeSAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoaXNWYWxpZFNpbXBsZU9iamVjdChxdWVyeSkpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBmaW5kID0gbnVsbCxcbiAgICAgICAgICAgIGdldCA9IG51bGwsXG4gICAgICAgICAgICBmaW5kQWxpYXMgPSBudWxsLFxuICAgICAgICAgICAgZ2V0QWxpYXMgPSBudWxsLFxuICAgICAgICAgICAgLi4uaW52YWxpZEtleXNcbiAgICAgICAgICB9ID0gcXVlcnk7XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGludmFsaWRLZXlzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJxdWVyeVwiIGNvbnRhaW5zIGludmFsaWQga2V5cywgWyR7T2JqZWN0LmtleXMoaW52YWxpZEtleXMpfV1gO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmluZCAhPT0gbnVsbCAmJiB0eXBlb2YgZmluZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwicXVlcnkuZmluZFwiIG11c3QgYmUgYSBib29sZWFuYDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGdldCAhPT0gbnVsbCAmJiB0eXBlb2YgZ2V0ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJxdWVyeS5nZXRcIiBtdXN0IGJlIGEgYm9vbGVhbmA7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaW5kQWxpYXMgIT09IG51bGwgJiYgdHlwZW9mIGZpbmRBbGlhcyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJxdWVyeS5maW5kQWxpYXNcIiBtdXN0IGJlIGEgc3RyaW5nYDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGdldEFsaWFzICE9PSBudWxsICYmIHR5cGVvZiBnZXRBbGlhcyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJxdWVyeS5nZXRBbGlhc1wiIG11c3QgYmUgYSBzdHJpbmdgO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYFwicXVlcnlcIiBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG11dGF0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChpc1ZhbGlkU2ltcGxlT2JqZWN0KG11dGF0aW9uKSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNyZWF0ZSA9IG51bGwsXG4gICAgICAgICAgICB1cGRhdGUgPSBudWxsLFxuICAgICAgICAgICAgZGVzdHJveSA9IG51bGwsXG4gICAgICAgICAgICBjcmVhdGVBbGlhcyA9IG51bGwsXG4gICAgICAgICAgICB1cGRhdGVBbGlhcyA9IG51bGwsXG4gICAgICAgICAgICBkZXN0cm95QWxpYXMgPSBudWxsLFxuICAgICAgICAgICAgLi4uaW52YWxpZEtleXNcbiAgICAgICAgICB9ID0gbXV0YXRpb247XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGludmFsaWRLZXlzKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJtdXRhdGlvblwiIGNvbnRhaW5zIGludmFsaWQga2V5cywgWyR7T2JqZWN0LmtleXMoaW52YWxpZEtleXMpfV1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY3JlYXRlICE9PSBudWxsICYmIHR5cGVvZiBjcmVhdGUgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGBcIm11dGF0aW9uLmNyZWF0ZVwiIG11c3QgYmUgYSBib29sZWFuYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVwZGF0ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdXBkYXRlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJtdXRhdGlvbi51cGRhdGVcIiBtdXN0IGJlIGEgYm9vbGVhbmA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkZXN0cm95ICE9PSBudWxsICYmIHR5cGVvZiBkZXN0cm95ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJtdXRhdGlvbi5kZXN0cm95XCIgbXVzdCBiZSBhIGJvb2xlYW5gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY3JlYXRlQWxpYXMgIT09IG51bGwgJiYgdHlwZW9mIGNyZWF0ZUFsaWFzICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGBcIm11dGF0aW9uLmNyZWF0ZUFsaWFzXCIgbXVzdCBiZSBhIHN0cmluZ2A7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1cGRhdGVBbGlhcyAhPT0gbnVsbCAmJiB0eXBlb2YgdXBkYXRlQWxpYXMgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwibXV0YXRpb24udXBkYXRlQWxpYXNcIiBtdXN0IGJlIGEgc3RyaW5nYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlc3Ryb3lBbGlhcyAhPT0gbnVsbCAmJiB0eXBlb2YgZGVzdHJveUFsaWFzICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGBcIm11dGF0aW9uLmRlc3Ryb3lBbGlhc1wiIG11c3QgYmUgYSBzdHJpbmdgO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYFwibXV0YXRpb25cIiBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBpc1ZhbGlkU3RyaW5nQXJyYXkgPSBmdW5jdGlvbiAoYXJyYXkpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyYXkpXG4gICAgPyAhYXJyYXkuc29tZShzID0+IHR5cGVvZiBzICE9PSAnc3RyaW5nJyB8fCBzLnRyaW0oKS5sZW5ndGggPCAxKVxuICAgIDogZmFsc2U7XG59O1xuLyoqXG4gKiBFbnN1cmVzIHRoZSBvYmogaXMgYSBzaW1wbGUgSlNPTi97fVxuICogb2JqZWN0LCBpLmUuIG5vdCBhbiBhcnJheSwgbnVsbCwgZGF0ZVxuICogZXRjLlxuICovXG5jb25zdCBpc1ZhbGlkU2ltcGxlT2JqZWN0ID0gZnVuY3Rpb24gKG9iaik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmXG4gICAgIUFycmF5LmlzQXJyYXkob2JqKSAmJlxuICAgIG9iaiAhPT0gbnVsbCAmJlxuICAgIG9iaiBpbnN0YW5jZW9mIERhdGUgIT09IHRydWUgJiZcbiAgICBvYmogaW5zdGFuY2VvZiBQcm9taXNlICE9PSB0cnVlXG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlR3JhcGhRTENvbmZpZyB7XG4gIGVuYWJsZWRGb3JDbGFzc2VzPzogc3RyaW5nW107XG4gIGRpc2FibGVkRm9yQ2xhc3Nlcz86IHN0cmluZ1tdO1xuICBjbGFzc0NvbmZpZ3M/OiBQYXJzZUdyYXBoUUxDbGFzc0NvbmZpZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlR3JhcGhRTENsYXNzQ29uZmlnIHtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIC8qIFRoZSBgdHlwZWAgb2JqZWN0IGNvbnRhaW5zIG9wdGlvbnMgZm9yIGhvdyB0aGUgY2xhc3MgdHlwZXMgYXJlIGdlbmVyYXRlZCAqL1xuICB0eXBlOiA/e1xuICAgIC8qIEZpZWxkcyB0aGF0IGFyZSBhbGxvd2VkIHdoZW4gY3JlYXRpbmcgb3IgdXBkYXRpbmcgYW4gb2JqZWN0LiAqL1xuICAgIGlucHV0RmllbGRzOiA/e1xuICAgICAgLyogTGVhdmUgYmxhbmsgdG8gYWxsb3cgYWxsIGF2YWlsYWJsZSBmaWVsZHMgaW4gdGhlIHNjaGVtYS4gKi9cbiAgICAgIGNyZWF0ZT86IHN0cmluZ1tdLFxuICAgICAgdXBkYXRlPzogc3RyaW5nW10sXG4gICAgfSxcbiAgICAvKiBGaWVsZHMgb24gdGhlIGVkZ2VzIHRoYXQgY2FuIGJlIHJlc29sdmVkIGZyb20gYSBxdWVyeSwgaS5lLiB0aGUgUmVzdWx0IFR5cGUuICovXG4gICAgb3V0cHV0RmllbGRzOiA/KHN0cmluZ1tdKSxcbiAgICAvKiBGaWVsZHMgYnkgd2hpY2ggYSBxdWVyeSBjYW4gYmUgZmlsdGVyZWQsIGkuZS4gdGhlIGB3aGVyZWAgb2JqZWN0LiAqL1xuICAgIGNvbnN0cmFpbnRGaWVsZHM6ID8oc3RyaW5nW10pLFxuICAgIC8qIEZpZWxkcyBieSB3aGljaCBhIHF1ZXJ5IGNhbiBiZSBzb3J0ZWQ7ICovXG4gICAgc29ydEZpZWxkczogPyh7XG4gICAgICBmaWVsZDogc3RyaW5nLFxuICAgICAgYXNjOiBib29sZWFuLFxuICAgICAgZGVzYzogYm9vbGVhbixcbiAgICB9W10pLFxuICB9O1xuICAvKiBUaGUgYHF1ZXJ5YCBvYmplY3QgY29udGFpbnMgb3B0aW9ucyBmb3Igd2hpY2ggY2xhc3MgcXVlcmllcyBhcmUgZ2VuZXJhdGVkICovXG4gIHF1ZXJ5OiA/e1xuICAgIGdldDogP2Jvb2xlYW4sXG4gICAgZmluZDogP2Jvb2xlYW4sXG4gICAgZmluZEFsaWFzOiA/U3RyaW5nLFxuICAgIGdldEFsaWFzOiA/U3RyaW5nLFxuICB9O1xuICAvKiBUaGUgYG11dGF0aW9uYCBvYmplY3QgY29udGFpbnMgb3B0aW9ucyBmb3Igd2hpY2ggY2xhc3MgbXV0YXRpb25zIGFyZSBnZW5lcmF0ZWQgKi9cbiAgbXV0YXRpb246ID97XG4gICAgY3JlYXRlOiA/Ym9vbGVhbixcbiAgICB1cGRhdGU6ID9ib29sZWFuLFxuICAgIC8vIGRlbGV0ZSBpcyBhIHJlc2VydmVkIGtleSB3b3JkIGluIGpzXG4gICAgZGVzdHJveTogP2Jvb2xlYW4sXG4gICAgY3JlYXRlQWxpYXM6ID9TdHJpbmcsXG4gICAgdXBkYXRlQWxpYXM6ID9TdHJpbmcsXG4gICAgZGVzdHJveUFsaWFzOiA/U3RyaW5nLFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBQYXJzZUdyYXBoUUxDb250cm9sbGVyO1xuZXhwb3J0IHsgR3JhcGhRTENvbmZpZ0NsYXNzTmFtZSwgR3JhcGhRTENvbmZpZ0lkLCBHcmFwaFFMQ29uZmlnS2V5IH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGtCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxtQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsZ0JBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFnRCxTQUFBRCx1QkFBQUksQ0FBQSxXQUFBQSxDQUFB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
294
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVxdWlyZWRQYXJhbWV0ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9EYXRhYmFzZUNvbnRyb2xsZXIiLCJfQ2FjaGVDb250cm9sbGVyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiR3JhcGhRTENvbmZpZ0NsYXNzTmFtZSIsImV4cG9ydHMiLCJHcmFwaFFMQ29uZmlnSWQiLCJHcmFwaFFMQ29uZmlnS2V5IiwiUGFyc2VHcmFwaFFMQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwicGFyYW1zIiwiZGF0YWJhc2VDb250cm9sbGVyIiwicmVxdWlyZWRQYXJhbWV0ZXIiLCJjYWNoZUNvbnRyb2xsZXIiLCJpc01vdW50ZWQiLCJtb3VudEdyYXBoUUwiLCJjb25maWdDYWNoZUtleSIsImdldEdyYXBoUUxDb25maWciLCJfY2FjaGVkQ29uZmlnIiwiX2dldENhY2hlZEdyYXBoUUxDb25maWciLCJyZXN1bHRzIiwiZmluZCIsIm9iamVjdElkIiwibGltaXQiLCJncmFwaFFMQ29uZmlnIiwibGVuZ3RoIiwiX3B1dENhY2hlZEdyYXBoUUxDb25maWciLCJ1cGRhdGVHcmFwaFFMQ29uZmlnIiwiX3ZhbGlkYXRlR3JhcGhRTENvbmZpZyIsInVwZGF0ZSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJhY2MiLCJrZXkiLCJ1cHNlcnQiLCJyZXNwb25zZSIsInJlc3VsdCIsImdyYXBoUUwiLCJnZXQiLCJwdXQiLCJlcnJvck1lc3NhZ2VzIiwicHVzaCIsImlzVmFsaWRTaW1wbGVPYmplY3QiLCJlbmFibGVkRm9yQ2xhc3NlcyIsImRpc2FibGVkRm9yQ2xhc3NlcyIsImNsYXNzQ29uZmlncyIsImludmFsaWRLZXlzIiwiaXNWYWxpZFN0cmluZ0FycmF5IiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsImNsYXNzQ29uZmlnIiwiZXJyb3JNZXNzYWdlIiwiX3ZhbGlkYXRlQ2xhc3NDb25maWciLCJjbGFzc05hbWUiLCJFcnJvciIsImpvaW4iLCJ0eXBlIiwicXVlcnkiLCJtdXRhdGlvbiIsInRyaW0iLCJpbnB1dEZpZWxkcyIsIm91dHB1dEZpZWxkcyIsImNvbnN0cmFpbnRGaWVsZHMiLCJzb3J0RmllbGRzIiwiZXZlcnkiLCJzb3J0RmllbGQiLCJpbmRleCIsImZpZWxkIiwiYXNjIiwiZGVzYyIsImNyZWF0ZSIsImluY2x1ZGVzIiwiZmluZEFsaWFzIiwiZ2V0QWxpYXMiLCJkZXN0cm95IiwiY3JlYXRlQWxpYXMiLCJ1cGRhdGVBbGlhcyIsImRlc3Ryb3lBbGlhcyIsImFycmF5Iiwic29tZSIsInMiLCJvYmoiLCJVdGlscyIsImlzRGF0ZSIsImlzUHJvbWlzZSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbnRyb2xsZXJzL1BhcnNlR3JhcGhRTENvbnRyb2xsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlcXVpcmVkUGFyYW1ldGVyIGZyb20gJy4uLy4uL2xpYi9yZXF1aXJlZFBhcmFtZXRlcic7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0IERhdGFiYXNlQ29udHJvbGxlciBmcm9tICcuL0RhdGFiYXNlQ29udHJvbGxlcic7XG5pbXBvcnQgQ2FjaGVDb250cm9sbGVyIGZyb20gJy4vQ2FjaGVDb250cm9sbGVyJztcblxuY29uc3QgR3JhcGhRTENvbmZpZ0NsYXNzTmFtZSA9ICdfR3JhcGhRTENvbmZpZyc7XG5jb25zdCBHcmFwaFFMQ29uZmlnSWQgPSAnMSc7XG5jb25zdCBHcmFwaFFMQ29uZmlnS2V5ID0gJ2NvbmZpZyc7XG5cbmNsYXNzIFBhcnNlR3JhcGhRTENvbnRyb2xsZXIge1xuICBkYXRhYmFzZUNvbnRyb2xsZXI6IERhdGFiYXNlQ29udHJvbGxlcjtcbiAgY2FjaGVDb250cm9sbGVyOiBDYWNoZUNvbnRyb2xsZXI7XG4gIGlzTW91bnRlZDogYm9vbGVhbjtcbiAgY29uZmlnQ2FjaGVLZXk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwYXJhbXM6IHtcbiAgICAgIGRhdGFiYXNlQ29udHJvbGxlcjogRGF0YWJhc2VDb250cm9sbGVyLFxuICAgICAgY2FjaGVDb250cm9sbGVyOiBDYWNoZUNvbnRyb2xsZXIsXG4gICAgfSA9IHt9XG4gICkge1xuICAgIHRoaXMuZGF0YWJhc2VDb250cm9sbGVyID1cbiAgICAgIHBhcmFtcy5kYXRhYmFzZUNvbnRyb2xsZXIgfHxcbiAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKFxuICAgICAgICBgUGFyc2VHcmFwaFFMQ29udHJvbGxlciByZXF1aXJlcyBhIFwiZGF0YWJhc2VDb250cm9sbGVyXCIgdG8gYmUgaW5zdGFudGlhdGVkLmBcbiAgICAgICk7XG4gICAgdGhpcy5jYWNoZUNvbnRyb2xsZXIgPSBwYXJhbXMuY2FjaGVDb250cm9sbGVyO1xuICAgIHRoaXMuaXNNb3VudGVkID0gISFwYXJhbXMubW91bnRHcmFwaFFMO1xuICAgIHRoaXMuY29uZmlnQ2FjaGVLZXkgPSBHcmFwaFFMQ29uZmlnS2V5O1xuICB9XG5cbiAgYXN5bmMgZ2V0R3JhcGhRTENvbmZpZygpOiBQcm9taXNlPFBhcnNlR3JhcGhRTENvbmZpZz4ge1xuICAgIGlmICh0aGlzLmlzTW91bnRlZCkge1xuICAgICAgY29uc3QgX2NhY2hlZENvbmZpZyA9IGF3YWl0IHRoaXMuX2dldENhY2hlZEdyYXBoUUxDb25maWcoKTtcbiAgICAgIGlmIChfY2FjaGVkQ29uZmlnKSB7XG4gICAgICAgIHJldHVybiBfY2FjaGVkQ29uZmlnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmRhdGFiYXNlQ29udHJvbGxlci5maW5kKFxuICAgICAgR3JhcGhRTENvbmZpZ0NsYXNzTmFtZSxcbiAgICAgIHsgb2JqZWN0SWQ6IEdyYXBoUUxDb25maWdJZCB9LFxuICAgICAgeyBsaW1pdDogMSB9XG4gICAgKTtcblxuICAgIGxldCBncmFwaFFMQ29uZmlnO1xuICAgIGlmIChyZXN1bHRzLmxlbmd0aCAhPSAxKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBubyBjb25maWcgaW4gdGhlIGRhdGFiYXNlIC0gcmV0dXJuIGVtcHR5IGNvbmZpZy5cbiAgICAgIHJldHVybiB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JhcGhRTENvbmZpZyA9IHJlc3VsdHNbMF1bR3JhcGhRTENvbmZpZ0tleV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNNb3VudGVkKSB7XG4gICAgICB0aGlzLl9wdXRDYWNoZWRHcmFwaFFMQ29uZmlnKGdyYXBoUUxDb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiBncmFwaFFMQ29uZmlnO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlR3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnOiBQYXJzZUdyYXBoUUxDb25maWcpOiBQcm9taXNlPFBhcnNlR3JhcGhRTENvbmZpZz4ge1xuICAgIC8vIHRocm93cyBpZiBpbnZhbGlkXG4gICAgdGhpcy5fdmFsaWRhdGVHcmFwaFFMQ29uZmlnKFxuICAgICAgZ3JhcGhRTENvbmZpZyB8fCByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIGdyYXBoUUxDb25maWchJylcbiAgICApO1xuXG4gICAgLy8gVHJhbnNmb3JtIGluIGRvdCBub3RhdGlvbiB0byBtYWtlIHN1cmUgaXQgd29ya3NcbiAgICBjb25zdCB1cGRhdGUgPSBPYmplY3Qua2V5cyhncmFwaFFMQ29uZmlnKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBbR3JhcGhRTENvbmZpZ0tleV06IHtcbiAgICAgICAgICAgIC4uLmFjY1tHcmFwaFFMQ29uZmlnS2V5XSxcbiAgICAgICAgICAgIFtrZXldOiBncmFwaFFMQ29uZmlnW2tleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICB7IFtHcmFwaFFMQ29uZmlnS2V5XToge30gfVxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLmRhdGFiYXNlQ29udHJvbGxlci51cGRhdGUoXG4gICAgICBHcmFwaFFMQ29uZmlnQ2xhc3NOYW1lLFxuICAgICAgeyBvYmplY3RJZDogR3JhcGhRTENvbmZpZ0lkIH0sXG4gICAgICB1cGRhdGUsXG4gICAgICB7IHVwc2VydDogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGlmICh0aGlzLmlzTW91bnRlZCkge1xuICAgICAgdGhpcy5fcHV0Q2FjaGVkR3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyByZXNwb25zZTogeyByZXN1bHQ6IHRydWUgfSB9O1xuICB9XG5cbiAgX2dldENhY2hlZEdyYXBoUUxDb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDb250cm9sbGVyLmdyYXBoUUwuZ2V0KHRoaXMuY29uZmlnQ2FjaGVLZXkpO1xuICB9XG5cbiAgX3B1dENhY2hlZEdyYXBoUUxDb25maWcoZ3JhcGhRTENvbmZpZzogUGFyc2VHcmFwaFFMQ29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDb250cm9sbGVyLmdyYXBoUUwucHV0KHRoaXMuY29uZmlnQ2FjaGVLZXksIGdyYXBoUUxDb25maWcsIDYwMDAwKTtcbiAgfVxuXG4gIF92YWxpZGF0ZUdyYXBoUUxDb25maWcoZ3JhcGhRTENvbmZpZzogP1BhcnNlR3JhcGhRTENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZXM6IHN0cmluZyA9IFtdO1xuICAgIGlmICghZ3JhcGhRTENvbmZpZykge1xuICAgICAgZXJyb3JNZXNzYWdlcy5wdXNoKCdjYW5ub3QgYmUgdW5kZWZpbmVkLCBudWxsIG9yIGVtcHR5Jyk7XG4gICAgfSBlbHNlIGlmICghaXNWYWxpZFNpbXBsZU9iamVjdChncmFwaFFMQ29uZmlnKSkge1xuICAgICAgZXJyb3JNZXNzYWdlcy5wdXNoKCdtdXN0IGJlIGEgdmFsaWQgb2JqZWN0Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZW5hYmxlZEZvckNsYXNzZXMgPSBudWxsLFxuICAgICAgICBkaXNhYmxlZEZvckNsYXNzZXMgPSBudWxsLFxuICAgICAgICBjbGFzc0NvbmZpZ3MgPSBudWxsLFxuICAgICAgICAuLi5pbnZhbGlkS2V5c1xuICAgICAgfSA9IGdyYXBoUUxDb25maWc7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhpbnZhbGlkS2V5cykubGVuZ3RoKSB7XG4gICAgICAgIGVycm9yTWVzc2FnZXMucHVzaChgZW5jb3VudGVyZWQgaW52YWxpZCBrZXlzOiBbJHtPYmplY3Qua2V5cyhpbnZhbGlkS2V5cyl9XWApO1xuICAgICAgfVxuICAgICAgaWYgKGVuYWJsZWRGb3JDbGFzc2VzICE9PSBudWxsICYmICFpc1ZhbGlkU3RyaW5nQXJyYXkoZW5hYmxlZEZvckNsYXNzZXMpKSB7XG4gICAgICAgIGVycm9yTWVzc2FnZXMucHVzaChgXCJlbmFibGVkRm9yQ2xhc3Nlc1wiIGlzIG5vdCBhIHZhbGlkIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBpZiAoZGlzYWJsZWRGb3JDbGFzc2VzICE9PSBudWxsICYmICFpc1ZhbGlkU3RyaW5nQXJyYXkoZGlzYWJsZWRGb3JDbGFzc2VzKSkge1xuICAgICAgICBlcnJvck1lc3NhZ2VzLnB1c2goYFwiZGlzYWJsZWRGb3JDbGFzc2VzXCIgaXMgbm90IGEgdmFsaWQgYXJyYXlgKTtcbiAgICAgIH1cbiAgICAgIGlmIChjbGFzc0NvbmZpZ3MgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2xhc3NDb25maWdzKSkge1xuICAgICAgICAgIGNsYXNzQ29uZmlncy5mb3JFYWNoKGNsYXNzQ29uZmlnID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuX3ZhbGlkYXRlQ2xhc3NDb25maWcoY2xhc3NDb25maWcpO1xuICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzLnB1c2goXG4gICAgICAgICAgICAgICAgYGNsYXNzQ29uZmlnOiR7Y2xhc3NDb25maWcuY2xhc3NOYW1lfSBpcyBpbnZhbGlkIGJlY2F1c2UgJHtlcnJvck1lc3NhZ2V9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVycm9yTWVzc2FnZXMucHVzaChgXCJjbGFzc0NvbmZpZ3NcIiBpcyBub3QgYSB2YWxpZCBhcnJheWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlcnJvck1lc3NhZ2VzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGdyYXBoUUxDb25maWc6ICR7ZXJyb3JNZXNzYWdlcy5qb2luKCc7ICcpfWApO1xuICAgIH1cbiAgfVxuXG4gIF92YWxpZGF0ZUNsYXNzQ29uZmlnKGNsYXNzQ29uZmlnOiA/UGFyc2VHcmFwaFFMQ2xhc3NDb25maWcpOiBzdHJpbmcgfCB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRTaW1wbGVPYmplY3QoY2xhc3NDb25maWcpKSB7XG4gICAgICByZXR1cm4gJ2l0IG11c3QgYmUgYSB2YWxpZCBvYmplY3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IGNsYXNzTmFtZSwgdHlwZSA9IG51bGwsIHF1ZXJ5ID0gbnVsbCwgbXV0YXRpb24gPSBudWxsLCAuLi5pbnZhbGlkS2V5cyB9ID0gY2xhc3NDb25maWc7XG4gICAgICBpZiAoT2JqZWN0LmtleXMoaW52YWxpZEtleXMpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gYFwiaW52YWxpZEtleXNcIiBbJHtPYmplY3Qua2V5cyhpbnZhbGlkS2V5cyl9XSBzaG91bGQgbm90IGJlIHByZXNlbnRgO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBjbGFzc05hbWUgIT09ICdzdHJpbmcnIHx8ICFjbGFzc05hbWUudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAvLyBUT0RPIGNvbnNpZGVyIGNoZWNraW5nIGNsYXNzIGV4aXN0cyBpbiBzY2hlbWE/XG4gICAgICAgIHJldHVybiBgXCJjbGFzc05hbWVcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nYDtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghaXNWYWxpZFNpbXBsZU9iamVjdCh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBgXCJ0eXBlXCIgbXVzdCBiZSBhIHZhbGlkIG9iamVjdGA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGlucHV0RmllbGRzID0gbnVsbCxcbiAgICAgICAgICBvdXRwdXRGaWVsZHMgPSBudWxsLFxuICAgICAgICAgIGNvbnN0cmFpbnRGaWVsZHMgPSBudWxsLFxuICAgICAgICAgIHNvcnRGaWVsZHMgPSBudWxsLFxuICAgICAgICAgIC4uLmludmFsaWRLZXlzXG4gICAgICAgIH0gPSB0eXBlO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoaW52YWxpZEtleXMpLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBgXCJ0eXBlXCIgY29udGFpbnMgaW52YWxpZCBrZXlzLCBbJHtPYmplY3Qua2V5cyhpbnZhbGlkS2V5cyl9XWA7XG4gICAgICAgIH0gZWxzZSBpZiAob3V0cHV0RmllbGRzICE9PSBudWxsICYmICFpc1ZhbGlkU3RyaW5nQXJyYXkob3V0cHV0RmllbGRzKSkge1xuICAgICAgICAgIHJldHVybiBgXCJvdXRwdXRGaWVsZHNcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGFycmF5YDtcbiAgICAgICAgfSBlbHNlIGlmIChjb25zdHJhaW50RmllbGRzICE9PSBudWxsICYmICFpc1ZhbGlkU3RyaW5nQXJyYXkoY29uc3RyYWludEZpZWxkcykpIHtcbiAgICAgICAgICByZXR1cm4gYFwiY29uc3RyYWludEZpZWxkc1wiIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgYXJyYXlgO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3J0RmllbGRzICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc29ydEZpZWxkcykpIHtcbiAgICAgICAgICAgIGxldCBlcnJvck1lc3NhZ2U7XG4gICAgICAgICAgICBzb3J0RmllbGRzLmV2ZXJ5KChzb3J0RmllbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaXNWYWxpZFNpbXBsZU9iamVjdChzb3J0RmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYFwic29ydEZpZWxkXCIgYXQgaW5kZXggJHtpbmRleH0gaXMgbm90IGEgdmFsaWQgb2JqZWN0YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmaWVsZCwgYXNjLCBkZXNjLCAuLi5pbnZhbGlkS2V5cyB9ID0gc29ydEZpZWxkO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhpbnZhbGlkS2V5cykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgXCJzb3J0RmllbGRcIiBhdCBpbmRleCAke2luZGV4fSBjb250YWlucyBpbnZhbGlkIGtleXMsIFske09iamVjdC5rZXlzKFxuICAgICAgICAgICAgICAgICAgICBpbnZhbGlkS2V5c1xuICAgICAgICAgICAgICAgICAgKX1dYDtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZCAhPT0gJ3N0cmluZycgfHwgZmllbGQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgXCJzb3J0RmllbGRcIiBhdCBpbmRleCAke2luZGV4fSBkaWQgbm90IHByb3ZpZGUgdGhlIFwiZmllbGRcIiBhcyBhIHN0cmluZ2A7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGFzYyAhPT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiBkZXNjICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYFwic29ydEZpZWxkXCIgYXQgaW5kZXggJHtpbmRleH0gZGlkIG5vdCBwcm92aWRlIFwiYXNjXCIgb3IgXCJkZXNjXCIgYXMgYm9vbGVhbnNgO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJzb3J0RmllbGRzXCIgbXVzdCBiZSBhIHZhbGlkIGFycmF5LmA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dEZpZWxkcyAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChpc1ZhbGlkU2ltcGxlT2JqZWN0KGlucHV0RmllbGRzKSkge1xuICAgICAgICAgICAgY29uc3QgeyBjcmVhdGUgPSBudWxsLCB1cGRhdGUgPSBudWxsLCAuLi5pbnZhbGlkS2V5cyB9ID0gaW5wdXRGaWVsZHM7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoaW52YWxpZEtleXMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gYFwiaW5wdXRGaWVsZHNcIiBjb250YWlucyBpbnZhbGlkIGtleXM6IFske09iamVjdC5rZXlzKGludmFsaWRLZXlzKX1dYDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICh1cGRhdGUgIT09IG51bGwgJiYgIWlzVmFsaWRTdHJpbmdBcnJheSh1cGRhdGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBcImlucHV0RmllbGRzLnVwZGF0ZVwiIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgYXJyYXlgO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNyZWF0ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZFN0cmluZ0FycmF5KGNyZWF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBgXCJpbnB1dEZpZWxkcy5jcmVhdGVcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGFycmF5YDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNsYXNzTmFtZSA9PT0gJ19Vc2VyJykge1xuICAgICAgICAgICAgICAgICAgaWYgKCFjcmVhdGUuaW5jbHVkZXMoJ3VzZXJuYW1lJykgfHwgIWNyZWF0ZS5pbmNsdWRlcygncGFzc3dvcmQnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFwiaW5wdXRGaWVsZHMuY3JlYXRlXCIgbXVzdCBpbmNsdWRlIHJlcXVpcmVkIGZpZWxkcywgdXNlcm5hbWUgYW5kIHBhc3N3b3JkYDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGBcImlucHV0RmllbGRzXCIgbXVzdCBiZSBhIHZhbGlkIG9iamVjdGA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocXVlcnkgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKGlzVmFsaWRTaW1wbGVPYmplY3QocXVlcnkpKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZmluZCA9IG51bGwsXG4gICAgICAgICAgICBnZXQgPSBudWxsLFxuICAgICAgICAgICAgZmluZEFsaWFzID0gbnVsbCxcbiAgICAgICAgICAgIGdldEFsaWFzID0gbnVsbCxcbiAgICAgICAgICAgIC4uLmludmFsaWRLZXlzXG4gICAgICAgICAgfSA9IHF1ZXJ5O1xuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhpbnZhbGlkS2V5cykubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwicXVlcnlcIiBjb250YWlucyBpbnZhbGlkIGtleXMsIFske09iamVjdC5rZXlzKGludmFsaWRLZXlzKX1dYDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpbmQgIT09IG51bGwgJiYgdHlwZW9mIGZpbmQgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGBcInF1ZXJ5LmZpbmRcIiBtdXN0IGJlIGEgYm9vbGVhbmA7XG4gICAgICAgICAgfSBlbHNlIGlmIChnZXQgIT09IG51bGwgJiYgdHlwZW9mIGdldCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwicXVlcnkuZ2V0XCIgbXVzdCBiZSBhIGJvb2xlYW5gO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmluZEFsaWFzICE9PSBudWxsICYmIHR5cGVvZiBmaW5kQWxpYXMgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwicXVlcnkuZmluZEFsaWFzXCIgbXVzdCBiZSBhIHN0cmluZ2A7XG4gICAgICAgICAgfSBlbHNlIGlmIChnZXRBbGlhcyAhPT0gbnVsbCAmJiB0eXBlb2YgZ2V0QWxpYXMgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwicXVlcnkuZ2V0QWxpYXNcIiBtdXN0IGJlIGEgc3RyaW5nYDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGBcInF1ZXJ5XCIgbXVzdCBiZSBhIHZhbGlkIG9iamVjdGA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtdXRhdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoaXNWYWxpZFNpbXBsZU9iamVjdChtdXRhdGlvbikpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjcmVhdGUgPSBudWxsLFxuICAgICAgICAgICAgdXBkYXRlID0gbnVsbCxcbiAgICAgICAgICAgIGRlc3Ryb3kgPSBudWxsLFxuICAgICAgICAgICAgY3JlYXRlQWxpYXMgPSBudWxsLFxuICAgICAgICAgICAgdXBkYXRlQWxpYXMgPSBudWxsLFxuICAgICAgICAgICAgZGVzdHJveUFsaWFzID0gbnVsbCxcbiAgICAgICAgICAgIC4uLmludmFsaWRLZXlzXG4gICAgICAgICAgfSA9IG11dGF0aW9uO1xuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhpbnZhbGlkS2V5cykubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwibXV0YXRpb25cIiBjb250YWlucyBpbnZhbGlkIGtleXMsIFske09iamVjdC5rZXlzKGludmFsaWRLZXlzKX1dYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNyZWF0ZSAhPT0gbnVsbCAmJiB0eXBlb2YgY3JlYXRlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJtdXRhdGlvbi5jcmVhdGVcIiBtdXN0IGJlIGEgYm9vbGVhbmA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1cGRhdGUgIT09IG51bGwgJiYgdHlwZW9mIHVwZGF0ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwibXV0YXRpb24udXBkYXRlXCIgbXVzdCBiZSBhIGJvb2xlYW5gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGVzdHJveSAhPT0gbnVsbCAmJiB0eXBlb2YgZGVzdHJveSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwibXV0YXRpb24uZGVzdHJveVwiIG11c3QgYmUgYSBib29sZWFuYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNyZWF0ZUFsaWFzICE9PSBudWxsICYmIHR5cGVvZiBjcmVhdGVBbGlhcyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJtdXRhdGlvbi5jcmVhdGVBbGlhc1wiIG11c3QgYmUgYSBzdHJpbmdgO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodXBkYXRlQWxpYXMgIT09IG51bGwgJiYgdHlwZW9mIHVwZGF0ZUFsaWFzICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGBcIm11dGF0aW9uLnVwZGF0ZUFsaWFzXCIgbXVzdCBiZSBhIHN0cmluZ2A7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkZXN0cm95QWxpYXMgIT09IG51bGwgJiYgdHlwZW9mIGRlc3Ryb3lBbGlhcyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCJtdXRhdGlvbi5kZXN0cm95QWxpYXNcIiBtdXN0IGJlIGEgc3RyaW5nYDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGBcIm11dGF0aW9uXCIgbXVzdCBiZSBhIHZhbGlkIG9iamVjdGA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgaXNWYWxpZFN0cmluZ0FycmF5ID0gZnVuY3Rpb24gKGFycmF5KTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFycmF5KVxuICAgID8gIWFycmF5LnNvbWUocyA9PiB0eXBlb2YgcyAhPT0gJ3N0cmluZycgfHwgcy50cmltKCkubGVuZ3RoIDwgMSlcbiAgICA6IGZhbHNlO1xufTtcbi8qKlxuICogRW5zdXJlcyB0aGUgb2JqIGlzIGEgc2ltcGxlIEpTT04ve31cbiAqIG9iamVjdCwgaS5lLiBub3QgYW4gYXJyYXksIG51bGwsIGRhdGVcbiAqIGV0Yy5cbiAqL1xuY29uc3QgaXNWYWxpZFNpbXBsZU9iamVjdCA9IGZ1bmN0aW9uIChvYmopOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJlxuICAgICFBcnJheS5pc0FycmF5KG9iaikgJiZcbiAgICBvYmogIT09IG51bGwgJiZcbiAgICBVdGlscy5pc0RhdGUob2JqKSAhPT0gdHJ1ZSAmJlxuICAgIFV0aWxzLmlzUHJvbWlzZShvYmopICE9PSB0cnVlXG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlR3JhcGhRTENvbmZpZyB7XG4gIGVuYWJsZWRGb3JDbGFzc2VzPzogc3RyaW5nW107XG4gIGRpc2FibGVkRm9yQ2xhc3Nlcz86IHN0cmluZ1tdO1xuICBjbGFzc0NvbmZpZ3M/OiBQYXJzZUdyYXBoUUxDbGFzc0NvbmZpZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlR3JhcGhRTENsYXNzQ29uZmlnIHtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIC8qIFRoZSBgdHlwZWAgb2JqZWN0IGNvbnRhaW5zIG9wdGlvbnMgZm9yIGhvdyB0aGUgY2xhc3MgdHlwZXMgYXJlIGdlbmVyYXRlZCAqL1xuICB0eXBlOiA/e1xuICAgIC8qIEZpZWxkcyB0aGF0IGFyZSBhbGxvd2VkIHdoZW4gY3JlYXRpbmcgb3IgdXBkYXRpbmcgYW4gb2JqZWN0LiAqL1xuICAgIGlucHV0RmllbGRzOiA/e1xuICAgICAgLyogTGVhdmUgYmxhbmsgdG8gYWxsb3cgYWxsIGF2YWlsYWJsZSBmaWVsZHMgaW4gdGhlIHNjaGVtYS4gKi9cbiAgICAgIGNyZWF0ZT86IHN0cmluZ1tdLFxuICAgICAgdXBkYXRlPzogc3RyaW5nW10sXG4gICAgfSxcbiAgICAvKiBGaWVsZHMgb24gdGhlIGVkZ2VzIHRoYXQgY2FuIGJlIHJlc29sdmVkIGZyb20gYSBxdWVyeSwgaS5lLiB0aGUgUmVzdWx0IFR5cGUuICovXG4gICAgb3V0cHV0RmllbGRzOiA/KHN0cmluZ1tdKSxcbiAgICAvKiBGaWVsZHMgYnkgd2hpY2ggYSBxdWVyeSBjYW4gYmUgZmlsdGVyZWQsIGkuZS4gdGhlIGB3aGVyZWAgb2JqZWN0LiAqL1xuICAgIGNvbnN0cmFpbnRGaWVsZHM6ID8oc3RyaW5nW10pLFxuICAgIC8qIEZpZWxkcyBieSB3aGljaCBhIHF1ZXJ5IGNhbiBiZSBzb3J0ZWQ7ICovXG4gICAgc29ydEZpZWxkczogPyh7XG4gICAgICBmaWVsZDogc3RyaW5nLFxuICAgICAgYXNjOiBib29sZWFuLFxuICAgICAgZGVzYzogYm9vbGVhbixcbiAgICB9W10pLFxuICB9O1xuICAvKiBUaGUgYHF1ZXJ5YCBvYmplY3QgY29udGFpbnMgb3B0aW9ucyBmb3Igd2hpY2ggY2xhc3MgcXVlcmllcyBhcmUgZ2VuZXJhdGVkICovXG4gIHF1ZXJ5OiA/e1xuICAgIGdldDogP2Jvb2xlYW4sXG4gICAgZmluZDogP2Jvb2xlYW4sXG4gICAgZmluZEFsaWFzOiA/U3RyaW5nLFxuICAgIGdldEFsaWFzOiA/U3RyaW5nLFxuICB9O1xuICAvKiBUaGUgYG11dGF0aW9uYCBvYmplY3QgY29udGFpbnMgb3B0aW9ucyBmb3Igd2hpY2ggY2xhc3MgbXV0YXRpb25zIGFyZSBnZW5lcmF0ZWQgKi9cbiAgbXV0YXRpb246ID97XG4gICAgY3JlYXRlOiA/Ym9vbGVhbixcbiAgICB1cGRhdGU6ID9ib29sZWFuLFxuICAgIC8vIGRlbGV0ZSBpcyBhIHJlc2VydmVkIGtleSB3b3JkIGluIGpzXG4gICAgZGVzdHJveTogP2Jvb2xlYW4sXG4gICAgY3JlYXRlQWxpYXM6ID9TdHJpbmcsXG4gICAgdXBkYXRlQWxpYXM6ID9TdHJpbmcsXG4gICAgZGVzdHJveUFsaWFzOiA/U3RyaW5nLFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBQYXJzZUdyYXBoUUxDb250cm9sbGVyO1xuZXhwb3J0IHsgR3JhcGhRTENvbmZpZ0NsYXNzTmFtZSwgR3JhcGhRTENvbmZpZ0lkLCBHcmFwaFFMQ29uZmlnS2V5IH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGtCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxtQkFBQSxHQUFBSCxzQkFB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