parse-server 6.0.0-alpha.6 → 6.0.0-alpha.8

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.
@@ -292,9 +292,9 @@ module.exports.ParseServerOptions = {
292
292
  },
293
293
  masterKeyIps: {
294
294
  env: 'PARSE_SERVER_MASTER_KEY_IPS',
295
- help: 'Restrict masterKey to be used by only these ips, defaults to [] (allow all ips)',
295
+ help: "(Optional) Restricts the use of master key permissions to a list of IP addresses.<br><br>This option accepts a list of single IP addresses, for example:<br>`['10.0.0.1', '10.0.0.2']`<br><br>You can also use CIDR notation to specify an IP address range, for example:<br>`['10.0.1.0/24']`<br><br>Special cases:<br>- Setting an empty array `[]` means that `masterKey`` cannot be used even in Parse Server Cloud Code.<br>- Setting `['0.0.0.0/0']` means disabling the filter and the master key can be used from any IP address.<br><br>To connect Parse Dashboard from a different server requires to add the IP address of the server that hosts Parse Dashboard because Parse Dashboard uses the master key.<br><br>Defaults to `['127.0.0.1']` which means that only `localhost`, the server itself, is allowed to use the master key.",
296
296
  action: parsers.arrayParser,
297
- default: []
297
+ default: ['127.0.0.1']
298
298
  },
299
299
  maxLimit: {
300
300
  env: 'PARSE_SERVER_MAX_LIMIT',
@@ -846,4 +846,4 @@ module.exports.AuthAdapter = {
846
846
  default: true
847
847
  }
848
848
  };
849
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL0RlZmluaXRpb25zLmpzIl0sIm5hbWVzIjpbInBhcnNlcnMiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsIlNjaGVtYU9wdGlvbnMiLCJhZnRlck1pZ3JhdGlvbiIsImVudiIsImhlbHAiLCJiZWZvcmVNaWdyYXRpb24iLCJkZWZpbml0aW9ucyIsInJlcXVpcmVkIiwiYWN0aW9uIiwib2JqZWN0UGFyc2VyIiwiZGVmYXVsdCIsImRlbGV0ZUV4dHJhRmllbGRzIiwiYm9vbGVhblBhcnNlciIsImxvY2tTY2hlbWFzIiwicmVjcmVhdGVNb2RpZmllZEZpZWxkcyIsInN0cmljdCIsIlBhcnNlU2VydmVyT3B0aW9ucyIsImFjY291bnRMb2Nrb3V0IiwiYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uIiwiYWxsb3dDdXN0b21PYmplY3RJZCIsImFsbG93RXhwaXJlZEF1dGhEYXRhVG9rZW4iLCJhbGxvd0hlYWRlcnMiLCJhcnJheVBhcnNlciIsImFsbG93T3JpZ2luIiwiYW5hbHl0aWNzQWRhcHRlciIsIm1vZHVsZU9yT2JqZWN0UGFyc2VyIiwiYXBwSWQiLCJhcHBOYW1lIiwiYXV0aCIsImNhY2hlQWRhcHRlciIsImNhY2hlTWF4U2l6ZSIsIm51bWJlclBhcnNlciIsImNhY2hlVFRMIiwiY2xpZW50S2V5IiwiY2xvdWQiLCJjbHVzdGVyIiwibnVtYmVyT3JCb29sZWFuUGFyc2VyIiwiY29sbGVjdGlvblByZWZpeCIsImN1c3RvbVBhZ2VzIiwiZGF0YWJhc2VBZGFwdGVyIiwiZGF0YWJhc2VPcHRpb25zIiwiZGF0YWJhc2VVUkkiLCJkZWZhdWx0TGltaXQiLCJkaXJlY3RBY2Nlc3MiLCJkb3ROZXRLZXkiLCJlbWFpbEFkYXB0ZXIiLCJlbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkIiwiZW1haWxWZXJpZnlUb2tlblZhbGlkaXR5RHVyYXRpb24iLCJlbmFibGVBbm9ueW1vdXNVc2VycyIsImVuYWJsZUV4cHJlc3NFcnJvckhhbmRsZXIiLCJlbmNyeXB0aW9uS2V5IiwiZW5mb3JjZVByaXZhdGVVc2VycyIsImV4cGlyZUluYWN0aXZlU2Vzc2lvbnMiLCJmaWxlS2V5IiwiZmlsZXNBZGFwdGVyIiwiZmlsZVVwbG9hZCIsImdyYXBoUUxQYXRoIiwiZ3JhcGhRTFNjaGVtYSIsImhvc3QiLCJpZGVtcG90ZW5jeU9wdGlvbnMiLCJqYXZhc2NyaXB0S2V5IiwianNvbkxvZ3MiLCJsaXZlUXVlcnkiLCJsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIiwibG9nZ2VyQWRhcHRlciIsImxvZ0xldmVsIiwibG9nc0ZvbGRlciIsIm1hc3RlcktleSIsIm1hc3RlcktleUlwcyIsIm1heExpbWl0IiwibWF4TG9nRmlsZXMiLCJtYXhVcGxvYWRTaXplIiwibWlkZGxld2FyZSIsIm1vdW50R3JhcGhRTCIsIm1vdW50UGF0aCIsIm1vdW50UGxheWdyb3VuZCIsIm9iamVjdElkU2l6ZSIsInBhZ2VzIiwicGFzc3dvcmRQb2xpY3kiLCJwbGF5Z3JvdW5kUGF0aCIsInBvcnQiLCJwcmVzZXJ2ZUZpbGVOYW1lIiwicHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbCIsInByb3RlY3RlZEZpZWxkcyIsIl9Vc2VyIiwicHVibGljU2VydmVyVVJMIiwicHVzaCIsInJlYWRPbmx5TWFzdGVyS2V5IiwicmVxdWVzdEtleXdvcmREZW55bGlzdCIsImtleSIsInZhbHVlIiwicmVzdEFQSUtleSIsInJldm9rZVNlc3Npb25PblBhc3N3b3JkUmVzZXQiLCJzY2hlZHVsZWRQdXNoIiwic2NoZW1hIiwic2VjdXJpdHkiLCJzZXJ2ZXJDbG9zZUNvbXBsZXRlIiwic2VydmVyU3RhcnRDb21wbGV0ZSIsInNlcnZlclVSTCIsInNlc3Npb25MZW5ndGgiLCJzaWxlbnQiLCJzdGFydExpdmVRdWVyeVNlcnZlciIsInVzZXJTZW5zaXRpdmVGaWVsZHMiLCJ2ZXJib3NlIiwidmVyaWZ5VXNlckVtYWlscyIsIndlYmhvb2tLZXkiLCJTZWN1cml0eU9wdGlvbnMiLCJjaGVja0dyb3VwcyIsImVuYWJsZUNoZWNrIiwiZW5hYmxlQ2hlY2tMb2ciLCJQYWdlc09wdGlvbnMiLCJjdXN0b21Sb3V0ZXMiLCJjdXN0b21VcmxzIiwiZW5hYmxlTG9jYWxpemF0aW9uIiwiZW5hYmxlUm91dGVyIiwiZm9yY2VSZWRpcmVjdCIsImxvY2FsaXphdGlvbkZhbGxiYWNrTG9jYWxlIiwibG9jYWxpemF0aW9uSnNvblBhdGgiLCJwYWdlc0VuZHBvaW50IiwicGFnZXNQYXRoIiwicGxhY2Vob2xkZXJzIiwiUGFnZXNSb3V0ZSIsImhhbmRsZXIiLCJtZXRob2QiLCJwYXRoIiwiUGFnZXNDdXN0b21VcmxzT3B0aW9ucyIsImVtYWlsVmVyaWZpY2F0aW9uTGlua0V4cGlyZWQiLCJlbWFpbFZlcmlmaWNhdGlvbkxpbmtJbnZhbGlkIiwiZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbCIsImVtYWlsVmVyaWZpY2F0aW9uU2VuZFN1Y2Nlc3MiLCJlbWFpbFZlcmlmaWNhdGlvblN1Y2Nlc3MiLCJwYXNzd29yZFJlc2V0IiwicGFzc3dvcmRSZXNldExpbmtJbnZhbGlkIiwicGFzc3dvcmRSZXNldFN1Y2Nlc3MiLCJDdXN0b21QYWdlc09wdGlvbnMiLCJjaG9vc2VQYXNzd29yZCIsImV4cGlyZWRWZXJpZmljYXRpb25MaW5rIiwiaW52YWxpZExpbmsiLCJpbnZhbGlkUGFzc3dvcmRSZXNldExpbmsiLCJpbnZhbGlkVmVyaWZpY2F0aW9uTGluayIsImxpbmtTZW5kRmFpbCIsImxpbmtTZW5kU3VjY2VzcyIsInBhcnNlRnJhbWVVUkwiLCJ2ZXJpZnlFbWFpbFN1Y2Nlc3MiLCJMaXZlUXVlcnlPcHRpb25zIiwiY2xhc3NOYW1lcyIsInB1YlN1YkFkYXB0ZXIiLCJyZWRpc09wdGlvbnMiLCJyZWRpc1VSTCIsIndzc0FkYXB0ZXIiLCJMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIiwiY2FjaGVUaW1lb3V0Iiwia2V5UGFpcnMiLCJ3ZWJzb2NrZXRUaW1lb3V0IiwiSWRlbXBvdGVuY3lPcHRpb25zIiwicGF0aHMiLCJ0dGwiLCJBY2NvdW50TG9ja291dE9wdGlvbnMiLCJkdXJhdGlvbiIsInRocmVzaG9sZCIsInVubG9ja09uUGFzc3dvcmRSZXNldCIsIlBhc3N3b3JkUG9saWN5T3B0aW9ucyIsImRvTm90QWxsb3dVc2VybmFtZSIsIm1heFBhc3N3b3JkQWdlIiwibWF4UGFzc3dvcmRIaXN0b3J5IiwicmVzZXRUb2tlblJldXNlSWZWYWxpZCIsInJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uIiwidmFsaWRhdGlvbkVycm9yIiwidmFsaWRhdG9yQ2FsbGJhY2siLCJ2YWxpZGF0b3JQYXR0ZXJuIiwiRmlsZVVwbG9hZE9wdGlvbnMiLCJlbmFibGVGb3JBbm9ueW1vdXNVc2VyIiwiZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXIiLCJlbmFibGVGb3JQdWJsaWMiLCJEYXRhYmFzZU9wdGlvbnMiLCJlbmFibGVTY2hlbWFIb29rcyIsIkF1dGhBZGFwdGVyIiwiZW5hYmxlZCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsV0FBRCxDQUFyQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLENBQWVDLGFBQWYsR0FBK0I7QUFDN0JDLEVBQUFBLGNBQWMsRUFBRTtBQUNkQyxJQUFBQSxHQUFHLEVBQUUscUNBRFM7QUFFZEMsSUFBQUEsSUFBSSxFQUFFO0FBRlEsR0FEYTtBQUs3QkMsRUFBQUEsZUFBZSxFQUFFO0FBQ2ZGLElBQUFBLEdBQUcsRUFBRSxzQ0FEVTtBQUVmQyxJQUFBQSxJQUFJLEVBQUU7QUFGUyxHQUxZO0FBUzdCRSxFQUFBQSxXQUFXLEVBQUU7QUFDWEgsSUFBQUEsR0FBRyxFQUFFLGlDQURNO0FBRVhDLElBQUFBLElBQUksRUFDRixnR0FIUztBQUlYRyxJQUFBQSxRQUFRLEVBQUUsSUFKQztBQUtYQyxJQUFBQSxNQUFNLEVBQUVYLE9BQU8sQ0FBQ1ksWUFMTDtBQU1YQyxJQUFBQSxPQUFPLEVBQUU7QUFORSxHQVRnQjtBQWlCN0JDLEVBQUFBLGlCQUFp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QUEsR0FBRyxFQUFFLG9EQURpQjtBQUV0QkMsSUFBQUEsSUFBSSxFQUFFLCtEQUZnQjtBQUd0QkksSUFBQUEsTUFBTSxFQUFFWCxPQUFPLENBQUNlLGFBSE07QUFJdEJGLElBQUFBLE9BQU8sRUFBRTtBQUphLEdBRFM7QUFPakNrSyxFQUFBQSwwQkFBMEIsRUFBRTtBQUMxQnpLLElBQUFBLEdBQUcsRUFBRSx3REFEcUI7QUFFMUJDLElBQUFBLElBQUksRUFBRSxtRUFGb0I7QUFHMUJJLElBQUFBLE1BQU0sRUFBRVgsT0FBTyxDQUFDZSxhQUhVO0FBSTFCRixJQUFBQSxPQUFPLEVBQUU7QUFKaUIsR0FQSztBQWFqQ21LLEVBQUFBLGVBQWUsRUFBRTtBQUNmMUssSUFBQUEsR0FBRyxFQUFFLDRDQURVO0FBRWZDLElBQUFBLElBQUksRUFBRSx5RkFGUztBQUdmSSxJQUFBQSxNQUFNLEVBQUVYLE9BQU8sQ0FBQ2UsYUFIRDtBQUlmRixJQUFBQSxPQUFPLEVBQUU7QUFKTTtBQWJnQixDQUFuQztBQW9CQVgsTUFBTSxDQUFDQyxPQUFQLENBQWU4SyxlQUFmLEdBQWlDO0FBQy9CQyxFQUFBQSxpQkFBaUIsRUFBRTtBQUNqQjVLLElBQUFBLEdBQUcsRUFBRSwyQ0FEWTtBQUVqQkMsSUFBQUEsSUFBSSxFQUNGLGtjQUhlO0FBSWpCSSxJQUFBQSxNQUFNLEVBQUVYLE9BQU8sQ0FBQ2UsYUFKQztBQUtqQkYsSUFBQUEsT0FBTyxFQUFFO0FBTFE7QUFEWSxDQUFqQztBQVNBWCxNQUFNLENBQUNDLE9BQVAsQ0FBZWdMLFdBQWYsR0FBNkI7QUFDM0JDLEVBQUFBLE9BQU8sRUFBRTtBQUNQN0ssSUFBQUEsSUFBSSxFQUFFLDhEQURDO0FBRVBJLElBQUFBLE1BQU0sRUFBRVgsT0FBTyxDQUFDZSxhQUZUO0FBR1BGLElBQUFBLE9BQU8sRUFBRTtBQUhGO0FBRGtCLENBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbioqKiogR0VORVJBVEVEIENPREUgKioqKlxuVGhpcyBjb2RlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSByZXNvdXJjZXMvYnVpbGRDb25maWdEZWZpbml0aW9ucy5qc1xuRG8gbm90IGVkaXQgbWFudWFsbHksIGJ1dCB1cGRhdGUgT3B0aW9ucy9pbmRleC5qc1xuKi9cbnZhciBwYXJzZXJzID0gcmVxdWlyZSgnLi9wYXJzZXJzJyk7XG5cbm1vZHVsZS5leHBvcnRzLlNjaGVtYU9wdGlvbnMgPSB7XG4gIGFmdGVyTWlncmF0aW9uOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NDSEVNQV9BRlRFUl9NSUdSQVRJT04nLFxuICAgIGhlbHA6ICdFeGVjdXRlIGEgY2FsbGJhY2sgYWZ0ZXIgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy4nLFxuICB9LFxuICBiZWZvcmVNaWdyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0JFRk9SRV9NSUdSQVRJT04nLFxuICAgIGhlbHA6ICdFeGVjdXRlIGEgY2FsbGJhY2sgYmVmb3JlIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuJyxcbiAgfSxcbiAgZGVmaW5pdGlvbnM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0RFRklOSVRJT05TJyxcbiAgICBoZWxwOlxuICAgICAgJ1Jlc3QgcmVwcmVzZW50YXRpb24gb24gUGFyc2UuU2NoZW1hIGh0dHBzOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9yZXN0L2d1aWRlLyNhZGRpbmctYS1zY2hlbWEnLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDogW10sXG4gIH0sXG4gIGRlbGV0ZUV4dHJhRmllbGRzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NDSEVNQV9ERUxFVEVfRVhUUkFfRklFTERTJyxcbiAgICBoZWxwOlxuICAgICAgJ0lzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBkZWxldGUgYW55IGZpZWxkcyBub3QgZGVmaW5lZCBpbiBhIHNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZHVyaW5nIGRldmVsb3BtZW50LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGxvY2tTY2hlbWFzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NDSEVNQV9MT0NLX1NDSEVNQVMnLFxuICAgIGhlbHA6XG4gICAgICAnSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgd2lsbCByZWplY3QgYW55IGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgc2NoZW1hIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICByZWNyZWF0ZU1vZGlmaWVkRmllbGRzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NDSEVNQV9SRUNSRUFURV9NT0RJRklFRF9GSUVMRFMnLFxuICAgIGhlbHA6XG4gICAgICAnSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIHJlY3JlYXRlIGFueSBmaWVsZHMgdGhhdCBhcmUgZGlmZmVyZW50IGJldHdlZW4gdGhlIGN1cnJlbnQgZGF0YWJhc2Ugc2NoZW1hIGFuZCB0aGVzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGR1cmluZyBkZXZlbG9wbWVudC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBzdHJpY3Q6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX1NUUklDVCcsXG4gICAgaGVscDogJ0lzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBleGl0IGlmIHNjaGVtYSB1cGRhdGUgZmFpbC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLlBhcnNlU2VydmVyT3B0aW9ucyA9IHtcbiAgYWNjb3VudExvY2tvdXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQUNDT1VOVF9MT0NLT1VUJyxcbiAgICBoZWxwOiAnVGhlIGFjY291bnQgbG9ja291dCBwb2xpY3kgZm9yIGZhaWxlZCBsb2dpbiBhdHRlbXB0cy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIGFsbG93Q2xpZW50Q2xhc3NDcmVhdGlvbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BTExPV19DTElFTlRfQ0xBU1NfQ1JFQVRJT04nLFxuICAgIGhlbHA6ICdFbmFibGUgKG9yIGRpc2FibGUpIGNsaWVudCBjbGFzcyBjcmVhdGlvbiwgZGVmYXVsdHMgdG8gdHJ1ZScsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgYWxsb3dDdXN0b21PYmplY3RJZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BTExPV19DVVNUT01fT0JKRUNUX0lEJyxcbiAgICBoZWxwOiAnRW5hYmxlIChvciBkaXNhYmxlKSBjdXN0b20gb2JqZWN0SWQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBhbGxvd0V4cGlyZWRBdXRoRGF0YVRva2VuOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FMTE9XX0VYUElSRURfQVVUSF9EQVRBX1RPS0VOJyxcbiAgICBoZWxwOlxuICAgICAgJ0FsbG93IGEgdXNlciB0byBsb2cgaW4gZXZlbiBpZiB0aGUgM3JkIHBhcnR5IGF1dGhlbnRpY2F0aW9uIHRva2VuIHRoYXQgd2FzIHVzZWQgdG8gc2lnbiBpbiB0byB0aGVpciBhY2NvdW50IGhhcyBleHBpcmVkLiBJZiB0aGlzIGlzIHNldCB0byBgZmFsc2VgLCB0aGVuIHRoZSB0b2tlbiB3aWxsIGJlIHZhbGlkYXRlZCBldmVyeSB0aW1lIHRoZSB1c2VyIHNpZ25zIGluIHRvIHRoZWlyIGFjY291bnQuIFRoaXMgcmVmZXJzIHRvIHRoZSB0b2tlbiB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYF9Vc2VyLmF1dGhEYXRhYCBmaWVsZC4gRGVmYXVsdHMgdG8gYHRydWVgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgYWxsb3dIZWFkZXJzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FMTE9XX0hFQURFUlMnLFxuICAgIGhlbHA6ICdBZGQgaGVhZGVycyB0byBBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gIH0sXG4gIGFsbG93T3JpZ2luOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FMTE9XX09SSUdJTicsXG4gICAgaGVscDogJ1NldHMgdGhlIG9yaWdpbiB0byBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLFxuICB9LFxuICBhbmFseXRpY3NBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FOQUxZVElDU19BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBhbmFseXRpY3MnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgYXBwSWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQVBQTElDQVRJT05fSUQnLFxuICAgIGhlbHA6ICdZb3VyIFBhcnNlIEFwcGxpY2F0aW9uIElEJyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbiAgYXBwTmFtZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BUFBfTkFNRScsXG4gICAgaGVscDogJ1NldHMgdGhlIGFwcCBuYW1lJyxcbiAgfSxcbiAgYXV0aDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BVVRIX1BST1ZJREVSUycsXG4gICAgaGVscDpcbiAgICAgICdDb25maWd1cmF0aW9uIGZvciB5b3VyIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVycywgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jb2F1dGgtYW5kLTNyZC1wYXJ0eS1hdXRoZW50aWNhdGlvbicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICBjYWNoZUFkYXB0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ0FDSEVfQURBUFRFUicsXG4gICAgaGVscDogJ0FkYXB0ZXIgbW9kdWxlIGZvciB0aGUgY2FjaGUnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgY2FjaGVNYXhTaXplOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NBQ0hFX01BWF9TSVpFJyxcbiAgICBoZWxwOiAnU2V0cyB0aGUgbWF4aW11bSBzaXplIGZvciB0aGUgaW4gbWVtb3J5IGNhY2hlLCBkZWZhdWx0cyB0byAxMDAwMCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignY2FjaGVNYXhTaXplJyksXG4gICAgZGVmYXVsdDogMTAwMDAsXG4gIH0sXG4gIGNhY2hlVFRMOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NBQ0hFX1RUTCcsXG4gICAgaGVscDogJ1NldHMgdGhlIFRUTCBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSAoaW4gbXMpLCBkZWZhdWx0cyB0byA1MDAwICg1IHNlY29uZHMpJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdjYWNoZVRUTCcpLFxuICAgIGRlZmF1bHQ6IDUwMDAsXG4gIH0sXG4gIGNsaWVudEtleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DTElFTlRfS0VZJyxcbiAgICBoZWxwOiAnS2V5IGZvciBpT1MsIE1hY09TLCB0dk9TIGNsaWVudHMnLFxuICB9LFxuICBjbG91ZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DTE9VRCcsXG4gICAgaGVscDogJ0Z1bGwgcGF0aCB0byB5b3VyIGNsb3VkIGNvZGUgbWFpbi5qcycsXG4gIH0sXG4gIGNsdXN0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ0xVU1RFUicsXG4gICAgaGVscDogJ1J1biB3aXRoIGNsdXN0ZXIsIG9wdGlvbmFsbHkgc2V0IHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGRlZmF1bHQgdG8gb3MuY3B1cygpLmxlbmd0aCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlck9yQm9vbGVhblBhcnNlcixcbiAgfSxcbiAgY29sbGVjdGlvblByZWZpeDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DT0xMRUNUSU9OX1BSRUZJWCcsXG4gICAgaGVscDogJ0EgY29sbGVjdGlvbiBwcmVmaXggZm9yIHRoZSBjbGFzc2VzJyxcbiAgICBkZWZhdWx0OiAnJyxcbiAgfSxcbiAgY3VzdG9tUGFnZXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ1VTVE9NX1BBR0VTJyxcbiAgICBoZWxwOiAnY3VzdG9tIHBhZ2VzIGZvciBwYXNzd29yZCB2YWxpZGF0aW9uIGFuZCByZXNldCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgZGF0YWJhc2VBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0RBVEFCQVNFX0FEQVBURVInLFxuICAgIGhlbHA6XG4gICAgICAnQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBkYXRhYmFzZTsgYW55IG9wdGlvbnMgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgZGVzY3JpYmVkIGhlcmUgYXJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgZGF0YWJhc2UgY2xpZW50LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxuICBkYXRhYmFzZU9wdGlvbnM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfREFUQUJBU0VfT1BUSU9OUycsXG4gICAgaGVscDogJ09wdGlvbnMgdG8gcGFzcyB0byB0aGUgZGF0YWJhc2UgY2xpZW50JyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBkYXRhYmFzZVVSSToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9EQVRBQkFTRV9VUkknLFxuICAgIGhlbHA6ICdUaGUgZnVsbCBVUkkgdG8geW91ciBkYXRhYmFzZS4gU3VwcG9ydGVkIGRhdGFiYXNlcyBhcmUgbW9uZ29kYiBvciBwb3N0Z3Jlcy4nLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlZmF1bHQ6ICdtb25nb2RiOi8vbG9jYWxob3N0OjI3MDE3L3BhcnNlJyxcbiAgfSxcbiAgZGVmYXVsdExpbWl0OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0RFRkFVTFRfTElNSVQnLFxuICAgIGhlbHA6ICdEZWZhdWx0IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gYDEwMGAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdkZWZhdWx0TGltaXQnKSxcbiAgICBkZWZhdWx0OiAxMDAsXG4gIH0sXG4gIGRpcmVjdEFjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9ESVJFQ1RfQUNDRVNTJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0byBgdHJ1ZWAgaWYgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIHNob3VsZCBiZSByb3V0ZWQgdG8gUGFyc2UgU2VydmVyIGRpcmVjdGx5IGluc3RlYWQgb2YgdmlhIHRoZSBIVFRQIGludGVyZmFjZS4gRGVmYXVsdCBpcyBgZmFsc2VgLjxicj48YnI+SWYgc2V0IHRvIGBmYWxzZWAgdGhlbiBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIHNhbWUgTm9kZS5qcyBlbnZpcm9ubWVudCBhcyBQYXJzZSBTZXJ2ZXIgYXJlIGV4ZWN1dGVkIGFzIEhUVFAgcmVxdWVzdHMgc2VudCB0byBQYXJzZSBTZXJ2ZXIgdmlhIHRoZSBgc2VydmVyVVJMYC4gRm9yIGV4YW1wbGUsIGEgYFBhcnNlLlF1ZXJ5YCBpbiBDbG91ZCBDb2RlIGlzIGNhbGxpbmcgUGFyc2UgU2VydmVyIHZpYSBhIEhUVFAgcmVxdWVzdC4gVGhlIHNlcnZlciBpcyBlc3NlbnRpYWxseSBtYWtpbmcgYSBIVFRQIHJlcXVlc3QgdG8gaXRzZWxmLCB1bm5lY2Vzc2FyaWx5IHVzaW5nIG5ldHdvcmsgcmVzb3VyY2VzIHN1Y2ggYXMgbmV0d29yayBwb3J0cy48YnI+PGJyPlxcdTI2QTBcXHVGRTBGIEluIGVudmlyb25tZW50cyB3aGVyZSBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXIgaW5zdGFuY2VzIHJ1biBiZWhpbmQgYSBsb2FkIGJhbGFuY2VyIGFuZCBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIGN1cnJlbnQgTm9kZS5qcyBlbnZpcm9ubWVudCBzaG91bGQgYmUgcm91dGVkIHZpYSB0aGUgbG9hZCBiYWxhbmNlciBhbmQgZGlzdHJpYnV0ZWQgYXMgSFRUUCByZXF1ZXN0cyBhbW9uZyBhbGwgaW5zdGFuY2VzIHZpYSB0aGUgYHNlcnZlclVSTGAsIHRoaXMgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgZG90TmV0S2V5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0RPVF9ORVRfS0VZJyxcbiAgICBoZWxwOiAnS2V5IGZvciBVbml0eSBhbmQgLk5ldCBTREsnLFxuICB9LFxuICBlbWFpbEFkYXB0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU1BSUxfQURBUFRFUicsXG4gICAgaGVscDogJ0FkYXB0ZXIgbW9kdWxlIGZvciBlbWFpbCBzZW5kaW5nJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGVtYWlsVmVyaWZ5VG9rZW5SZXVzZUlmVmFsaWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU1BSUxfVkVSSUZZX1RPS0VOX1JFVVNFX0lGX1ZBTElEJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0byBgdHJ1ZWAgaWYgYSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVtYWlsVmVyaWZ5VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VNQUlMX1ZFUklGWV9UT0tFTl9WQUxJRElUWV9EVVJBVElPTicsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgdG9rZW4gZXhwaXJlcy4gVGhlIHRva2VuIGlzIHVzZWQgaW4gdGhlIGxpbmsgdGhhdCBpcyBzZXQgaW4gdGhlIGVtYWlsLiBBZnRlciB0aGUgdG9rZW4gZXhwaXJlcywgdGhlIGxpbmsgYmVjb21lcyBpbnZhbGlkIGFuZCBhIG5ldyBsaW5rIGhhcyB0byBiZSBzZW50LiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGB1bmRlZmluZWRgLCB0aGVuIHRoZSB0b2tlbiBuZXZlciBleHBpcmVzLjxicj48YnI+Rm9yIGV4YW1wbGUsIHRvIGV4cGlyZSB0aGUgdG9rZW4gYWZ0ZXIgMiBob3Vycywgc2V0IGEgdmFsdWUgb2YgNzIwMCBzZWNvbmRzICg9IDYwIHNlY29uZHMgKiA2MCBtaW51dGVzICogMiBob3VycykuPGJyPjxicj5EZWZhdWx0IGlzIGB1bmRlZmluZWRgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignZW1haWxWZXJpZnlUb2tlblZhbGlkaXR5RHVyYXRpb24nKSxcbiAgfSxcbiAgZW5hYmxlQW5vbnltb3VzVXNlcnM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU5BQkxFX0FOT05fVVNFUlMnLFxuICAgIGhlbHA6ICdFbmFibGUgKG9yIGRpc2FibGUpIGFub255bW91cyB1c2VycywgZGVmYXVsdHMgdG8gdHJ1ZScsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgZW5hYmxlRXhwcmVzc0Vycm9ySGFuZGxlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTkFCTEVfRVhQUkVTU19FUlJPUl9IQU5ETEVSJyxcbiAgICBoZWxwOiAnRW5hYmxlcyB0aGUgZGVmYXVsdCBleHByZXNzIGVycm9yIGhhbmRsZXIgZm9yIGFsbCBlcnJvcnMnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBlbmNyeXB0aW9uS2V5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VOQ1JZUFRJT05fS0VZJyxcbiAgICBoZWxwOiAnS2V5IGZvciBlbmNyeXB0aW5nIHlvdXIgZmlsZXMnLFxuICB9LFxuICBlbmZvcmNlUHJpdmF0ZVVzZXJzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VORk9SQ0VfUFJJVkFURV9VU0VSUycsXG4gICAgaGVscDogJ1NldCB0byB0cnVlIGlmIG5ldyB1c2VycyBzaG91bGQgYmUgY3JlYXRlZCB3aXRob3V0IHB1YmxpYyByZWFkIGFuZCB3cml0ZSBhY2Nlc3MuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZXhwaXJlSW5hY3RpdmVTZXNzaW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FWFBJUkVfSU5BQ1RJVkVfU0VTU0lPTlMnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0cyB3aGV0aGVyIHdlIHNob3VsZCBleHBpcmUgdGhlIGluYWN0aXZlIHNlc3Npb25zLCBkZWZhdWx0cyB0byB0cnVlLiBJZiBmYWxzZSwgYWxsIG5ldyBzZXNzaW9ucyBhcmUgY3JlYXRlZCB3aXRoIG5vIGV4cGlyYXRpb24gZGF0ZS4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG4gIGZpbGVLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRklMRV9LRVknLFxuICAgIGhlbHA6ICdLZXkgZm9yIHlvdXIgZmlsZXMnLFxuICB9LFxuICBmaWxlc0FkYXB0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRklMRVNfQURBUFRFUicsXG4gICAgaGVscDogJ0FkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZmlsZXMgc3ViLXN5c3RlbScsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxuICBmaWxlVXBsb2FkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0ZJTEVfVVBMT0FEX09QVElPTlMnLFxuICAgIGhlbHA6ICdPcHRpb25zIGZvciBmaWxlIHVwbG9hZHMnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG4gIGdyYXBoUUxQYXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0dSQVBIUUxfUEFUSCcsXG4gICAgaGVscDogJ01vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIGVuZHBvaW50LCBkZWZhdWx0cyB0byAvZ3JhcGhxbCcsXG4gICAgZGVmYXVsdDogJy9ncmFwaHFsJyxcbiAgfSxcbiAgZ3JhcGhRTFNjaGVtYToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9HUkFQSF9RTFNDSEVNQScsXG4gICAgaGVscDogJ0Z1bGwgcGF0aCB0byB5b3VyIEdyYXBoUUwgY3VzdG9tIHNjaGVtYS5ncmFwaHFsIGZpbGUnLFxuICB9LFxuICBob3N0OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0hPU1QnLFxuICAgIGhlbHA6ICdUaGUgaG9zdCB0byBzZXJ2ZSBQYXJzZVNlcnZlciBvbiwgZGVmYXVsdHMgdG8gMC4wLjAuMCcsXG4gICAgZGVmYXVsdDogJzAuMC4wLjAnLFxuICB9LFxuICBpZGVtcG90ZW5jeU9wdGlvbnM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRVhQRVJJTUVOVEFMX0lERU1QT1RFTkNZX09QVElPTlMnLFxuICAgIGhlbHA6XG4gICAgICAnT3B0aW9ucyBmb3IgcmVxdWVzdCBpZGVtcG90ZW5jeSB0byBkZWR1cGxpY2F0ZSBpZGVudGljYWwgcmVxdWVzdHMgdGhhdCBtYXkgYmUgY2F1c2VkIGJ5IG5ldHdvcmsgaXNzdWVzLiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG4gIGphdmFzY3JpcHRLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfSkFWQVNDUklQVF9LRVknLFxuICAgIGhlbHA6ICdLZXkgZm9yIHRoZSBKYXZhc2NyaXB0IFNESycsXG4gIH0sXG4gIGpzb25Mb2dzOiB7XG4gICAgZW52OiAnSlNPTl9MT0dTJyxcbiAgICBoZWxwOiAnTG9nIGFzIHN0cnVjdHVyZWQgSlNPTiBvYmplY3RzJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgfSxcbiAgbGl2ZVF1ZXJ5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xJVkVfUVVFUlknLFxuICAgIGhlbHA6IFwicGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNvbmZpZ3VyYXRpb24gb2JqZWN0XCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgbGl2ZVF1ZXJ5U2VydmVyT3B0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFX1FVRVJZX1NFUlZFUl9PUFRJT05TJyxcbiAgICBoZWxwOiAnTGl2ZSBxdWVyeSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zICh3aWxsIHN0YXJ0IHRoZSBsaXZlUXVlcnkgc2VydmVyKScsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgbG9nZ2VyQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MT0dHRVJfQURBUFRFUicsXG4gICAgaGVscDogJ0FkYXB0ZXIgbW9kdWxlIGZvciB0aGUgbG9nZ2luZyBzdWItc3lzdGVtJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGxvZ0xldmVsOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xPR19MRVZFTCcsXG4gICAgaGVscDogJ1NldHMgdGhlIGxldmVsIGZvciBsb2dzJyxcbiAgfSxcbiAgbG9nc0ZvbGRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MT0dTX0ZPTERFUicsXG4gICAgaGVscDogXCJGb2xkZXIgZm9yIHRoZSBsb2dzIChkZWZhdWx0cyB0byAnLi9sb2dzJyk7IHNldCB0byBudWxsIHRvIGRpc2FibGUgZmlsZSBiYXNlZCBsb2dnaW5nXCIsXG4gICAgZGVmYXVsdDogJy4vbG9ncycsXG4gIH0sXG4gIG1hc3RlcktleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9NQVNURVJfS0VZJyxcbiAgICBoZWxwOiAnWW91ciBQYXJzZSBNYXN0ZXIgS2V5JyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbiAgbWFzdGVyS2V5SXBzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01BU1RFUl9LRVlfSVBTJyxcbiAgICBoZWxwOiAnUmVzdHJpY3QgbWFzdGVyS2V5IHRvIGJlIHVzZWQgYnkgb25seSB0aGVzZSBpcHMsIGRlZmF1bHRzIHRvIFtdIChhbGxvdyBhbGwgaXBzKScsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICAgIGRlZmF1bHQ6IFtdLFxuICB9LFxuICBtYXhMaW1pdDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9NQVhfTElNSVQnLFxuICAgIGhlbHA6ICdNYXggdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byB1bmxpbWl0ZWQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ21heExpbWl0JyksXG4gIH0sXG4gIG1heExvZ0ZpbGVzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01BWF9MT0dfRklMRVMnLFxuICAgIGhlbHA6XG4gICAgICBcIk1heGltdW0gbnVtYmVyIG9mIGxvZ3MgdG8ga2VlcC4gSWYgbm90IHNldCwgbm8gbG9ncyB3aWxsIGJlIHJlbW92ZWQuIFRoaXMgY2FuIGJlIGEgbnVtYmVyIG9mIGZpbGVzIG9yIG51bWJlciBvZiBkYXlzLiBJZiB1c2luZyBkYXlzLCBhZGQgJ2QnIGFzIHRoZSBzdWZmaXguIChkZWZhdWx0OiBudWxsKVwiLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIG1heFVwbG9hZFNpemU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTUFYX1VQTE9BRF9TSVpFJyxcbiAgICBoZWxwOiAnTWF4IGZpbGUgc2l6ZSBmb3IgdXBsb2FkcywgZGVmYXVsdHMgdG8gMjBtYicsXG4gICAgZGVmYXVsdDogJzIwbWInLFxuICB9LFxuICBtaWRkbGV3YXJlOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01JRERMRVdBUkUnLFxuICAgIGhlbHA6ICdtaWRkbGV3YXJlIGZvciBleHByZXNzIHNlcnZlciwgY2FuIGJlIHN0cmluZyBvciBmdW5jdGlvbicsXG4gIH0sXG4gIG1vdW50R3JhcGhRTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9NT1VOVF9HUkFQSFFMJyxcbiAgICBoZWxwOiAnTW91bnRzIHRoZSBHcmFwaFFMIGVuZHBvaW50JyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgbW91bnRQYXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01PVU5UX1BBVEgnLFxuICAgIGhlbHA6ICdNb3VudCBwYXRoIGZvciB0aGUgc2VydmVyLCBkZWZhdWx0cyB0byAvcGFyc2UnLFxuICAgIGRlZmF1bHQ6ICcvcGFyc2UnLFxuICB9LFxuICBtb3VudFBsYXlncm91bmQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTU9VTlRfUExBWUdST1VORCcsXG4gICAgaGVscDogJ01vdW50cyB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kIC0gbmV2ZXIgdXNlIHRoaXMgb3B0aW9uIGluIHByb2R1Y3Rpb24nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBvYmplY3RJZFNpemU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfT0JKRUNUX0lEX1NJWkUnLFxuICAgIGhlbHA6IFwiU2V0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gZ2VuZXJhdGVkIG9iamVjdCBpZCdzLCBkZWZhdWx0IDEwXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignb2JqZWN0SWRTaXplJyksXG4gICAgZGVmYXVsdDogMTAsXG4gIH0sXG4gIHBhZ2VzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoZSBvcHRpb25zIGZvciBwYWdlcyBzdWNoIGFzIHBhc3N3b3JkIHJlc2V0IGFuZCBlbWFpbCB2ZXJpZmljYXRpb24uIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgcGFzc3dvcmRQb2xpY3k6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZJyxcbiAgICBoZWxwOiAnVGhlIHBhc3N3b3JkIHBvbGljeSBmb3IgZW5mb3JjaW5nIHBhc3N3b3JkIHJlbGF0ZWQgcnVsZXMuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBwbGF5Z3JvdW5kUGF0aDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QTEFZR1JPVU5EX1BBVEgnLFxuICAgIGhlbHA6ICdNb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kLCBkZWZhdWx0cyB0byAvcGxheWdyb3VuZCcsXG4gICAgZGVmYXVsdDogJy9wbGF5Z3JvdW5kJyxcbiAgfSxcbiAgcG9ydDoge1xuICAgIGVudjogJ1BPUlQnLFxuICAgIGhlbHA6ICdUaGUgcG9ydCB0byBydW4gdGhlIFBhcnNlU2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigncG9ydCcpLFxuICAgIGRlZmF1bHQ6IDEzMzcsXG4gIH0sXG4gIHByZXNlcnZlRmlsZU5hbWU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUFJFU0VSVkVfRklMRV9OQU1FJyxcbiAgICBoZWxwOiAnRW5hYmxlIChvciBkaXNhYmxlKSB0aGUgYWRkaXRpb24gb2YgYSB1bmlxdWUgaGFzaCB0byB0aGUgZmlsZSBuYW1lcycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHByZXZlbnRMb2dpbldpdGhVbnZlcmlmaWVkRW1haWw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUFJFVkVOVF9MT0dJTl9XSVRIX1VOVkVSSUZJRURfRU1BSUwnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCB0byBwcmV2ZW50IGEgdXNlciBmcm9tIGxvZ2dpbmcgaW4gaWYgdGhlIGVtYWlsIGhhcyBub3QgeWV0IGJlZW4gdmVyaWZpZWQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC48YnI+UmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBwcm90ZWN0ZWRGaWVsZHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUFJPVEVDVEVEX0ZJRUxEUycsXG4gICAgaGVscDogJ1Byb3RlY3RlZCBmaWVsZHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCB3aXRoIGV4dHJhIHNlY3VyaXR5IHdoZW4gZmV0Y2hpbmcgZGV0YWlscy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge1xuICAgICAgX1VzZXI6IHtcbiAgICAgICAgJyonOiBbJ2VtYWlsJ10sXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHB1YmxpY1NlcnZlclVSTDoge1xuICAgIGVudjogJ1BBUlNFX1BVQkxJQ19TRVJWRVJfVVJMJyxcbiAgICBoZWxwOiAnUHVibGljIFVSTCB0byB5b3VyIHBhcnNlIHNlcnZlciB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8uJyxcbiAgfSxcbiAgcHVzaDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QVVNIJyxcbiAgICBoZWxwOlxuICAgICAgJ0NvbmZpZ3VyYXRpb24gZm9yIHB1c2gsIGFzIHN0cmluZ2lmaWVkIEpTT04uIFNlZSBodHRwOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvZ3VpZGUvI3B1c2gtbm90aWZpY2F0aW9ucycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVhZE9ubHlNYXN0ZXJLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUkVBRF9PTkxZX01BU1RFUl9LRVknLFxuICAgIGhlbHA6ICdSZWFkLW9ubHkga2V5LCB3aGljaCBoYXMgdGhlIHNhbWUgY2FwYWJpbGl0aWVzIGFzIE1hc3RlcktleSB3aXRob3V0IHdyaXRlcycsXG4gIH0sXG4gIHJlcXVlc3RLZXl3b3JkRGVueWxpc3Q6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUkVRVUVTVF9LRVlXT1JEX0RFTllMSVNUJyxcbiAgICBoZWxwOlxuICAgICAgJ0FuIGFycmF5IG9mIGtleXMgYW5kIHZhbHVlcyB0aGF0IGFyZSBwcm9oaWJpdGVkIGluIGRhdGFiYXNlIHJlYWQgYW5kIHdyaXRlIHJlcXVlc3RzIHRvIHByZXZlbnQgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBvbmx5IGEga2V5IChge1wia2V5XCI6XCIuLi5cIn1gKSwgb25seSBhIHZhbHVlIChge1widmFsdWVcIjpcIi4uLlwifWApIG9yIGEga2V5LXZhbHVlIHBhaXIgKGB7XCJrZXlcIjpcIi4uLlwiLFwidmFsdWVcIjpcIi4uLlwifWApLiBUaGUgc3BlY2lmaWNhdGlvbiBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGBib29sZWFuYCwgYG51bWVyaWNgIG9yIGBzdHJpbmdgLCB3aGVyZSBgc3RyaW5nYCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgcmVnZXggbm90YXRpb24uIFJlcXVlc3QgZGF0YSBpcyBkZWVwLXNjYW5uZWQgZm9yIG1hdGNoaW5nIGRlZmluaXRpb25zIHRvIGRldGVjdCBhbHNvIGFueSBuZXN0ZWQgb2NjdXJyZW5jZXMuIERlZmF1bHRzIGFyZSBwYXR0ZXJucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBpbiBtYWxpY2lvdXMgcmVxdWVzdHMuIFNldHRpbmcgdGhpcyBvcHRpb24gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXR0ZXJucy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ19ic29udHlwZScsXG4gICAgICAgIHZhbHVlOiAnQ29kZScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdjb25zdHJ1Y3RvcicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdfX3Byb3RvX18nLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICByZXN0QVBJS2V5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1JFU1RfQVBJX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgUkVTVCBjYWxscycsXG4gIH0sXG4gIHJldm9rZVNlc3Npb25PblBhc3N3b3JkUmVzZXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUkVWT0tFX1NFU1NJT05fT05fUEFTU1dPUkRfUkVTRVQnLFxuICAgIGhlbHA6XG4gICAgICBcIldoZW4gYSB1c2VyIGNoYW5nZXMgdGhlaXIgcGFzc3dvcmQsIGVpdGhlciB0aHJvdWdoIHRoZSByZXNldCBwYXNzd29yZCBlbWFpbCBvciB3aGlsZSBsb2dnZWQgaW4sIGFsbCBzZXNzaW9ucyBhcmUgcmV2b2tlZCBpZiB0aGlzIGlzIHRydWUuIFNldCB0byBmYWxzZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byByZXZva2Ugc2Vzc2lvbnMuXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgc2NoZWR1bGVkUHVzaDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFRFVMRURfUFVTSCcsXG4gICAgaGVscDogJ0NvbmZpZ3VyYXRpb24gZm9yIHB1c2ggc2NoZWR1bGluZywgZGVmYXVsdHMgdG8gZmFsc2UuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgc2NoZW1hOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NDSEVNQScsXG4gICAgaGVscDogJ0RlZmluZWQgc2NoZW1hJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBzZWN1cml0eToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRUNVUklUWScsXG4gICAgaGVscDogJ1RoZSBzZWN1cml0eSBvcHRpb25zIHRvIGlkZW50aWZ5IGFuZCByZXBvcnQgd2VhayBzZWN1cml0eSBzZXR0aW5ncy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG4gIHNlcnZlckNsb3NlQ29tcGxldGU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0VSVkVSX0NMT1NFX0NPTVBMRVRFJyxcbiAgICBoZWxwOiAnQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIGNsb3NlZCcsXG4gIH0sXG4gIHNlcnZlclN0YXJ0Q29tcGxldGU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0VSVkVSX1NUQVJUX0NPTVBMRVRFJyxcbiAgICBoZWxwOiAnQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIHN0YXJ0ZWQnLFxuICB9LFxuICBzZXJ2ZXJVUkw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfVVJMJyxcbiAgICBoZWxwOiAnVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy4nLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICB9LFxuICBzZXNzaW9uTGVuZ3RoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NFU1NJT05fTEVOR1RIJyxcbiAgICBoZWxwOiAnU2Vzc2lvbiBkdXJhdGlvbiwgaW4gc2Vjb25kcywgZGVmYXVsdHMgdG8gMSB5ZWFyJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdzZXNzaW9uTGVuZ3RoJyksXG4gICAgZGVmYXVsdDogMzE1MzYwMDAsXG4gIH0sXG4gIHNpbGVudDoge1xuICAgIGVudjogJ1NJTEVOVCcsXG4gICAgaGVscDogJ0Rpc2FibGVzIGNvbnNvbGUgb3V0cHV0JyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgfSxcbiAgc3RhcnRMaXZlUXVlcnlTZXJ2ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU1RBUlRfTElWRV9RVUVSWV9TRVJWRVInLFxuICAgIGhlbHA6ICdTdGFydHMgdGhlIGxpdmVRdWVyeSBzZXJ2ZXInLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICB9LFxuICB1c2VyU2Vuc2l0aXZlRmllbGRzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1VTRVJfU0VOU0lUSVZFX0ZJRUxEUycsXG4gICAgaGVscDpcbiAgICAgICdQZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiBmaWVsZHMgaW4gdGhlIHVzZXIgdGFibGUgdGhlIHNob3VsZCBiZSByZW1vdmVkIGZvciBub24tYXV0aG9yaXplZCB1c2Vycy4gRGVwcmVjYXRlZCBAc2VlIHByb3RlY3RlZEZpZWxkcycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICB2ZXJib3NlOiB7XG4gICAgZW52OiAnVkVSQk9TRScsXG4gICAgaGVscDogJ1NldCB0aGUgbG9nZ2luZyB0byB2ZXJib3NlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgfSxcbiAgdmVyaWZ5VXNlckVtYWlsczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9WRVJJRllfVVNFUl9FTUFJTFMnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCB0byByZXF1aXJlIHVzZXJzIHRvIHZlcmlmeSB0aGVpciBlbWFpbCBhZGRyZXNzIHRvIGNvbXBsZXRlIHRoZSBzaWduLXVwIHByb2Nlc3MuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgd2ViaG9va0tleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9XRUJIT09LX0tFWScsXG4gICAgaGVscDogJ0tleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxscycsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuU2VjdXJpdHlPcHRpb25zID0ge1xuICBjaGVja0dyb3Vwczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRUNVUklUWV9DSEVDS19HUk9VUFMnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHNlY3VyaXR5IGNoZWNrIGdyb3VwcyB0byBydW4uIFRoaXMgYWxsb3dzIHRvIGFkZCBjdXN0b20gc2VjdXJpdHkgY2hlY2tzIG9yIG92ZXJyaWRlIGV4aXN0aW5nIG9uZXMuIERlZmF1bHQgYXJlIHRoZSBncm91cHMgZGVmaW5lZCBpbiBgQ2hlY2tHcm91cHMuanNgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICBlbmFibGVDaGVjazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRUNVUklUWV9FTkFCTEVfQ0hFQ0snLFxuICAgIGhlbHA6ICdJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgY2hlY2sgZm9yIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZW5hYmxlQ2hlY2tMb2c6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0VDVVJJVFlfRU5BQkxFX0NIRUNLX0xPRycsXG4gICAgaGVscDpcbiAgICAgICdJcyB0cnVlIGlmIHRoZSBzZWN1cml0eSBjaGVjayByZXBvcnQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9ncy4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIHRlbXBvcmFyaWx5IHRvIG5vdCBleHBvc2Ugd2VhayBzZWN1cml0eSBzZXR0aW5ncyBpbiBsb2dzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFnZXNPcHRpb25zID0ge1xuICBjdXN0b21Sb3V0ZXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1JPVVRFUycsXG4gICAgaGVscDogJ1RoZSBjdXN0b20gcm91dGVzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICAgIGRlZmF1bHQ6IFtdLFxuICB9LFxuICBjdXN0b21VcmxzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxTJyxcbiAgICBoZWxwOiAnVGhlIFVSTHMgdG8gdGhlIGN1c3RvbSBwYWdlcy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG4gIGVuYWJsZUxvY2FsaXphdGlvbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19FTkFCTEVfTE9DQUxJWkFUSU9OJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBwYWdlcyBzaG91bGQgYmUgbG9jYWxpemVkOyB0aGlzIGhhcyBubyBlZmZlY3Qgb24gY3VzdG9tIHBhZ2UgcmVkaXJlY3RzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVuYWJsZVJvdXRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19FTkFCTEVfUk9VVEVSJyxcbiAgICBoZWxwOlxuICAgICAgJ0lzIHRydWUgaWYgdGhlIHBhZ2VzIHJvdXRlciBzaG91bGQgYmUgZW5hYmxlZDsgdGhpcyBpcyByZXF1aXJlZCBmb3IgYW55IG9mIHRoZSBwYWdlcyBvcHRpb25zIHRvIHRha2UgZWZmZWN0LiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBmb3JjZVJlZGlyZWN0OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0ZPUkNFX1JFRElSRUNUJyxcbiAgICBoZWxwOlxuICAgICAgJ0lzIHRydWUgaWYgcmVzcG9uc2VzIHNob3VsZCBhbHdheXMgYmUgcmVkaXJlY3RzIGFuZCBuZXZlciBjb250ZW50LCBmYWxzZSBpZiB0aGUgcmVzcG9uc2UgdHlwZSBzaG91bGQgZGVwZW5kIG9uIHRoZSByZXF1ZXN0IHR5cGUgKEdFVCByZXF1ZXN0IC0+IGNvbnRlbnQgcmVzcG9uc2U7IFBPU1QgcmVxdWVzdCAtPiByZWRpcmVjdCByZXNwb25zZSkuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgbG9jYWxpemF0aW9uRmFsbGJhY2tMb2NhbGU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfTE9DQUxJWkFUSU9OX0ZBTExCQUNLX0xPQ0FMRScsXG4gICAgaGVscDpcbiAgICAgICdUaGUgZmFsbGJhY2sgbG9jYWxlIGZvciBsb2NhbGl6YXRpb24gaWYgbm8gbWF0Y2hpbmcgdHJhbnNsYXRpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHByb3ZpZGluZyB0cmFuc2xhdGlvbiByZXNvdXJjZXMgdmlhIEpTT04gZmlsZS4nLFxuICAgIGRlZmF1bHQ6ICdlbicsXG4gIH0sXG4gIGxvY2FsaXphdGlvbkpzb25QYXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0xPQ0FMSVpBVElPTl9KU09OX1BBVEgnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZSBmb3IgbG9jYWxpemF0aW9uOyB0aGUgdHJhbnNsYXRpb25zIHdpbGwgYmUgdXNlZCB0byBmaWxsIHRlbXBsYXRlIHBsYWNlaG9sZGVycyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZS4nLFxuICB9LFxuICBwYWdlc0VuZHBvaW50OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX1BBR0VTX0VORFBPSU5UJyxcbiAgICBoZWxwOiBcIlRoZSBBUEkgZW5kcG9pbnQgZm9yIHRoZSBwYWdlcy4gRGVmYXVsdCBpcyAnYXBwcycuXCIsXG4gICAgZGVmYXVsdDogJ2FwcHMnLFxuICB9LFxuICBwYWdlc1BhdGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfUEFHRVNfUEFUSCcsXG4gICAgaGVscDpcbiAgICAgIFwiVGhlIHBhdGggdG8gdGhlIHBhZ2VzIGRpcmVjdG9yeTsgdGhpcyBhbHNvIGRlZmluZXMgd2hlcmUgdGhlIHN0YXRpYyBlbmRwb2ludCAnL2FwcHMnIHBvaW50cyB0by4gRGVmYXVsdCBpcyB0aGUgJy4vcHVibGljLycgZGlyZWN0b3J5LlwiLFxuICAgIGRlZmF1bHQ6ICcuL3B1YmxpYycsXG4gIH0sXG4gIHBsYWNlaG9sZGVyczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19QTEFDRUhPTERFUlMnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHBsYWNlaG9sZGVyIGtleXMgYW5kIHZhbHVlcyB3aGljaCB3aWxsIGJlIGZpbGxlZCBpbiBwYWdlczsgdGhpcyBjYW4gYmUgYSBzaW1wbGUgb2JqZWN0IG9yIGEgY2FsbGJhY2sgZnVuY3Rpb24uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICAgIGRlZmF1bHQ6IHt9LFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLlBhZ2VzUm91dGUgPSB7XG4gIGhhbmRsZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfUk9VVEVfSEFORExFUicsXG4gICAgaGVscDogJ1RoZSByb3V0ZSBoYW5kbGVyIHRoYXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24uJyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbiAgbWV0aG9kOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX1JPVVRFX01FVEhPRCcsXG4gICAgaGVscDogXCJUaGUgcm91dGUgbWV0aG9kLCBlLmcuICdHRVQnIG9yICdQT1NUJy5cIixcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbiAgcGF0aDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19ST1VURV9QQVRIJyxcbiAgICBoZWxwOiAnVGhlIHJvdXRlIHBhdGguJyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5QYWdlc0N1c3RvbVVybHNPcHRpb25zID0ge1xuICBlbWFpbFZlcmlmaWNhdGlvbkxpbmtFeHBpcmVkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxfRU1BSUxfVkVSSUZJQ0FUSU9OX0xJTktfRVhQSVJFRCcsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBleHBpcmVkLicsXG4gIH0sXG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0ludmFsaWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9FTUFJTF9WRVJJRklDQVRJT05fTElOS19JTlZBTElEJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGludmFsaWQuJyxcbiAgfSxcbiAgZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX0VNQUlMX1ZFUklGSUNBVElPTl9TRU5EX0ZBSUwnLFxuICAgIGhlbHA6ICdUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgc2VuZCBmYWlsLicsXG4gIH0sXG4gIGVtYWlsVmVyaWZpY2F0aW9uU2VuZFN1Y2Nlc3M6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9FTUFJTF9WRVJJRklDQVRJT05fU0VORF9TVUNDRVNTJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiByZXNlbmQgbGluayAtPiBzdWNjZXNzLicsXG4gIH0sXG4gIGVtYWlsVmVyaWZpY2F0aW9uU3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX0VNQUlMX1ZFUklGSUNBVElPTl9TVUNDRVNTJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBzdWNjZXNzLicsXG4gIH0sXG4gIHBhc3N3b3JkUmVzZXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9QQVNTV09SRF9SRVNFVCcsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldC4nLFxuICB9LFxuICBwYXNzd29yZFJlc2V0TGlua0ludmFsaWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9QQVNTV09SRF9SRVNFVF9MSU5LX0lOVkFMSUQnLFxuICAgIGhlbHA6ICdUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gbGluayBpbnZhbGlkLicsXG4gIH0sXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxfUEFTU1dPUkRfUkVTRVRfU1VDQ0VTUycsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBzdWNjZXNzLicsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuQ3VzdG9tUGFnZXNPcHRpb25zID0ge1xuICBjaG9vc2VQYXNzd29yZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfQ0hPT1NFX1BBU1NXT1JEJyxcbiAgICBoZWxwOiAnY2hvb3NlIHBhc3N3b3JkIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGV4cGlyZWRWZXJpZmljYXRpb25MaW5rOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19FWFBJUkVEX1ZFUklGSUNBVElPTl9MSU5LJyxcbiAgICBoZWxwOiAnZXhwaXJlZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGgnLFxuICB9LFxuICBpbnZhbGlkTGluazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfSU5WQUxJRF9MSU5LJyxcbiAgICBoZWxwOiAnaW52YWxpZCBsaW5rIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGludmFsaWRQYXNzd29yZFJlc2V0TGluazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfSU5WQUxJRF9QQVNTV09SRF9SRVNFVF9MSU5LJyxcbiAgICBoZWxwOiAnaW52YWxpZCBwYXNzd29yZCByZXNldCBsaW5rIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGludmFsaWRWZXJpZmljYXRpb25MaW5rOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19JTlZBTElEX1ZFUklGSUNBVElPTl9MSU5LJyxcbiAgICBoZWxwOiAnaW52YWxpZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGgnLFxuICB9LFxuICBsaW5rU2VuZEZhaWw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ1VTVE9NX1BBR0VTX0xJTktfU0VORF9GQUlMJyxcbiAgICBoZWxwOiAndmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBmYWlsIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGxpbmtTZW5kU3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfTElOS19TRU5EX1NVQ0NFU1MnLFxuICAgIGhlbHA6ICd2ZXJpZmljYXRpb24gbGluayBzZW5kIHN1Y2Nlc3MgcGFnZSBwYXRoJyxcbiAgfSxcbiAgcGFyc2VGcmFtZVVSTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfUEFSU0VfRlJBTUVfVVJMJyxcbiAgICBoZWxwOiAnZm9yIG1hc2tpbmcgdXNlci1mYWNpbmcgcGFnZXMnLFxuICB9LFxuICBwYXNzd29yZFJlc2V0U3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfUEFTU1dPUkRfUkVTRVRfU1VDQ0VTUycsXG4gICAgaGVscDogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3MgcGFnZSBwYXRoJyxcbiAgfSxcbiAgdmVyaWZ5RW1haWxTdWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19WRVJJRllfRU1BSUxfU1VDQ0VTUycsXG4gICAgaGVscDogJ3ZlcmlmeSBlbWFpbCBzdWNjZXNzIHBhZ2UgcGF0aCcsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuTGl2ZVF1ZXJ5T3B0aW9ucyA9IHtcbiAgY2xhc3NOYW1lczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfQ0xBU1NOQU1FUycsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY2xhc3NOYW1lc1wiLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgfSxcbiAgcHViU3ViQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfUFVCX1NVQl9BREFQVEVSJyxcbiAgICBoZWxwOiAnTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIHJlZGlzT3B0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfUkVESVNfT1BUSU9OUycsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNVUkw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTElWRVFVRVJZX1JFRElTX1VSTCcsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkxcIixcbiAgfSxcbiAgd3NzQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfV1NTX0FEQVBURVInLFxuICAgIGhlbHA6ICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlcicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkxpdmVRdWVyeVNlcnZlck9wdGlvbnMgPSB7XG4gIGFwcElkOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfQVBQX0lEJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgYXBwSWQgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBhcHBJZC4nLFxuICB9LFxuICBjYWNoZVRpbWVvdXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9DQUNIRV9USU1FT1VUJyxcbiAgICBoZWxwOlxuICAgICAgXCJOdW1iZXIgaW4gbWlsbGlzZWNvbmRzLiBXaGVuIGNsaWVudHMgcHJvdmlkZSB0aGUgc2Vzc2lvblRva2VuIHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byBmZXRjaCBpdHMgUGFyc2VVc2VyJ3Mgb2JqZWN0SWQgZnJvbSBwYXJzZSBzZXJ2ZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBjYWNoZS4gVGhlIHZhbHVlIGRlZmluZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWNoZS4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscywgZGVmYXVsdHMgdG8gNSAqIDEwMDAgbXMgKDUgc2Vjb25kcykuXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignY2FjaGVUaW1lb3V0JyksXG4gIH0sXG4gIGtleVBhaXJzOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfS0VZX1BBSVJTJyxcbiAgICBoZWxwOlxuICAgICAgJ0EgSlNPTiBvYmplY3QgdGhhdCBzZXJ2ZXMgYXMgYSB3aGl0ZWxpc3Qgb2Yga2V5cy4gSXQgaXMgdXNlZCBmb3IgdmFsaWRhdGluZyBjbGllbnRzIHdoZW4gdGhleSB0cnkgdG8gY29ubmVjdCB0byB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIGxvZ0xldmVsOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfTE9HX0xFVkVMJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoaXMgc3RyaW5nIGRlZmluZXMgdGhlIGxvZyBsZXZlbCBvZiB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gV2Ugc3VwcG9ydCBWRVJCT1NFLCBJTkZPLCBFUlJPUiwgTk9ORSwgZGVmYXVsdHMgdG8gSU5GTy4nLFxuICB9LFxuICBtYXN0ZXJLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9NQVNURVJfS0VZJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgbWFzdGVyS2V5IGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgbWFzdGVyS2V5LicsXG4gIH0sXG4gIHBvcnQ6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9QT1JUJyxcbiAgICBoZWxwOiAnVGhlIHBvcnQgdG8gcnVuIHRoZSBMaXZlUXVlcnkgc2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigncG9ydCcpLFxuICAgIGRlZmF1bHQ6IDEzMzcsXG4gIH0sXG4gIHB1YlN1YkFkYXB0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9QVUJfU1VCX0FEQVBURVInLFxuICAgIGhlbHA6ICdMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXInLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNPcHRpb25zOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfUkVESVNfT1BUSU9OUycsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNVUkw6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9SRURJU19VUkwnLFxuICAgIGhlbHA6IFwicGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMXCIsXG4gIH0sXG4gIHNlcnZlclVSTDoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX1NFUlZFUl9VUkwnLFxuICAgIGhlbHA6XG4gICAgICAnVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBzZXJ2ZXJVUkwgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBzZXJ2ZXJVUkwuJyxcbiAgfSxcbiAgd2Vic29ja2V0VGltZW91dDoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX1dFQlNPQ0tFVF9USU1FT1VUJyxcbiAgICBoZWxwOlxuICAgICAgJ051bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBwaW5nL3BvbmcgZnJhbWVzLiBUaGUgV2ViU29ja2V0IHNlcnZlciBzZW5kcyBwaW5nL3BvbmcgZnJhbWVzIHRvIHRoZSBjbGllbnRzIHRvIGtlZXAgdGhlIFdlYlNvY2tldCBhbGl2ZS4gVGhpcyB2YWx1ZSBkZWZpbmVzIHRoZSBpbnRlcnZhbCBvZiB0aGUgcGluZy9wb25nIGZyYW1lIGZyb20gdGhlIHNlcnZlciB0byBjbGllbnRzLCBkZWZhdWx0cyB0byAxMCAqIDEwMDAgbXMgKDEwIHMpLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignd2Vic29ja2V0VGltZW91dCcpLFxuICB9LFxuICB3c3NBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfV1NTX0FEQVBURVInLFxuICAgIGhlbHA6ICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlcicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLklkZW1wb3RlbmN5T3B0aW9ucyA9IHtcbiAgcGF0aHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRVhQRVJJTUVOVEFMX0lERU1QT1RFTkNZX1BBVEhTJyxcbiAgICBoZWxwOlxuICAgICAgJ0FuIGFycmF5IG9mIHBhdGhzIGZvciB3aGljaCB0aGUgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZC4gVGhlIG1vdW50IHBhdGggbXVzdCBub3QgYmUgaW5jbHVkZWQsIGZvciBleGFtcGxlIGluc3RlYWQgb2YgYC9wYXJzZS9mdW5jdGlvbnMvbXlGdW5jdGlvbmAgc3BlY2lmaXkgYGZ1bmN0aW9ucy9teUZ1bmN0aW9uYC4gVGhlIGVudHJpZXMgYXJlIGludGVycHJldGVkIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbiwgZm9yIGV4YW1wbGUgYGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgZnVuY3Rpb25zLCBgam9icy8uKmAgbWF0Y2hlcyBhbGwgam9icywgYGNsYXNzZXMvLipgIG1hdGNoZXMgYWxsIGNsYXNzZXMsIGAuKmAgbWF0Y2hlcyBhbGwgcGF0aHMuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gICAgZGVmYXVsdDogW10sXG4gIH0sXG4gIHR0bDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FWFBFUklNRU5UQUxfSURFTVBPVEVOQ1lfVFRMJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIGEgcmVxdWVzdCByZWNvcmQgaXMgZGlzY2FyZGVkIGZyb20gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byAzMDBzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigndHRsJyksXG4gICAgZGVmYXVsdDogMzAwLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkFjY291bnRMb2Nrb3V0T3B0aW9ucyA9IHtcbiAgZHVyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQUNDT1VOVF9MT0NLT1VUX0RVUkFUSU9OJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgZHVyYXRpb24gaW4gbWludXRlcyB0aGF0IGEgbG9ja2VkLW91dCBhY2NvdW50IHJlbWFpbnMgbG9ja2VkIG91dCBiZWZvcmUgYXV0b21hdGljYWxseSBiZWNvbWluZyB1bmxvY2tlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwMDBgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignZHVyYXRpb24nKSxcbiAgfSxcbiAgdGhyZXNob2xkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FDQ09VTlRfTE9DS09VVF9USFJFU0hPTEQnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSBudW1iZXIgb2YgZmFpbGVkIHNpZ24taW4gYXR0ZW1wdHMgdGhhdCB3aWxsIGNhdXNlIGEgdXNlciBhY2NvdW50IHRvIGJlIGxvY2tlZC4gSWYgdGhlIGFjY291bnQgaXMgbG9ja2VkLiBUaGUgYWNjb3VudCB3aWxsIHVubG9jayBhZnRlciB0aGUgZHVyYXRpb24gc2V0IGluIHRoZSBgZHVyYXRpb25gIG9wdGlvbiBoYXMgcGFzc2VkIGFuZCBubyBmdXJ0aGVyIGxvZ2luIGF0dGVtcHRzIGhhdmUgYmVlbiBtYWRlLjxicj48YnI+VmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDBgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigndGhyZXNob2xkJyksXG4gIH0sXG4gIHVubG9ja09uUGFzc3dvcmRSZXNldDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BQ0NPVU5UX0xPQ0tPVVRfVU5MT0NLX09OX1BBU1NXT1JEX1JFU0VUJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0byBgdHJ1ZWAgIGlmIHRoZSBhY2NvdW50IHNob3VsZCBiZSB1bmxvY2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgcGFzc3dvcmQgcmVzZXQuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuPGJyPlJlcXVpcmVzIG9wdGlvbnMgYGR1cmF0aW9uYCBhbmQgYHRocmVzaG9sZGAgdG8gYmUgc2V0LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFzc3dvcmRQb2xpY3lPcHRpb25zID0ge1xuICBkb05vdEFsbG93VXNlcm5hbWU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX0RPX05PVF9BTExPV19VU0VSTkFNRScsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIHRvIGRpc2FsbG93IHRoZSB1c2VybmFtZSBhcyBwYXJ0IG9mIHRoZSBwYXNzd29yZC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBtYXhQYXNzd29yZEFnZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfTUFYX1BBU1NXT1JEX0FHRScsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIGEgcGFzc3dvcmQgZXhwaXJlcy4gTG9naW4gYXR0ZW1wdHMgZmFpbCBpZiB0aGUgdXNlciBkb2VzIG5vdCByZXNldCB0aGUgcGFzc3dvcmQgYmVmb3JlIGV4cGlyYXRpb24uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdtYXhQYXNzd29yZEFnZScpLFxuICB9LFxuICBtYXhQYXNzd29yZEhpc3Rvcnk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX01BWF9QQVNTV09SRF9ISVNUT1JZJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHBhc3N3b3JkIHRoYXQgd2lsbCBub3QgYmUgYWxsb3dlZCB0byBiZSBzZXQgYXMgbmV3IHBhc3N3b3JkLiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGAwYCwgbm8gcHJldmlvdXMgcGFzc3dvcmRzIHdpbGwgYmUgY29uc2lkZXJlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgPj0gYDBgIGFuZCA8PSBgMjBgLjxicj5EZWZhdWx0IGlzIGAwYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ21heFBhc3N3b3JkSGlzdG9yeScpLFxuICB9LFxuICByZXNldFRva2VuUmV1c2VJZlZhbGlkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBU1NXT1JEX1BPTElDWV9SRVNFVF9UT0tFTl9SRVVTRV9JRl9WQUxJRCcsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIGlmIGEgcGFzc3dvcmQgcmVzZXQgdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBU1NXT1JEX1BPTElDWV9SRVNFVF9UT0tFTl9WQUxJRElUWV9EVVJBVElPTicsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBwYXNzd29yZCByZXNldCB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdyZXNldFRva2VuVmFsaWRpdHlEdXJhdGlvbicpLFxuICB9LFxuICB2YWxpZGF0aW9uRXJyb3I6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX1ZBTElEQVRJT05fRVJST1InLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSBlcnJvciBtZXNzYWdlIHRvIGJlIHNlbnQuPGJyPjxicj5EZWZhdWx0IGlzIGBQYXNzd29yZCBkb2VzIG5vdCBtZWV0IHRoZSBQYXNzd29yZCBQb2xpY3kgcmVxdWlyZW1lbnRzLmAnLFxuICB9LFxuICB2YWxpZGF0b3JDYWxsYmFjazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfVkFMSURBVE9SX0NBTExCQUNLJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgcGFzc3dvcmQgdG8gYmUgYWNjZXB0ZWQuPGJyPjxicj5JZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvclBhdHRlcm5gLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuJyxcbiAgfSxcbiAgdmFsaWRhdG9yUGF0dGVybjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfVkFMSURBVE9SX1BBVFRFUk4nLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdmFsaWRhdGlvbiBwYXR0ZXJuIGEgcGFzc3dvcmQgbXVzdCBtYXRjaCB0byBiZSBhY2NlcHRlZC48YnI+PGJyPklmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yQ2FsbGJhY2tgLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuJyxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5GaWxlVXBsb2FkT3B0aW9ucyA9IHtcbiAgZW5hYmxlRm9yQW5vbnltb3VzVXNlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFX1VQTE9BRF9FTkFCTEVfRk9SX0FOT05ZTU9VU19VU0VSJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW5vbnltb3VzIHVzZXJzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0ZJTEVfVVBMT0FEX0VOQUJMRV9GT1JfQVVUSEVOVElDQVRFRF9VU0VSJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYXV0aGVudGljYXRlZCB1c2Vycy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG4gIGVuYWJsZUZvclB1YmxpYzoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFX1VQTE9BRF9FTkFCTEVfRk9SX1BVQkxJQycsXG4gICAgaGVscDogJ0lzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuRGF0YWJhc2VPcHRpb25zID0ge1xuICBlbmFibGVTY2hlbWFIb29rczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9EQVRBQkFTRV9FTkFCTEVfU0NIRU1BX0hPT0tTJyxcbiAgICBoZWxwOlxuICAgICAgJ0VuYWJsZXMgZGF0YWJhc2UgcmVhbC10aW1lIGhvb2tzIHRvIHVwZGF0ZSBzaW5nbGUgc2NoZW1hIGNhY2hlLiBTZXQgdG8gYHRydWVgIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIGNhdXNlIGEgc2NoZW1hIGNoYW5nZSB0byBub3QgcHJvcGFnYXRlIHRvIGFsbCBpbnN0YW5jZXMgYW5kIHJlLXN5bmNpbmcgd2lsbCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBpbnN0YW5jZXMgcmVzdGFydC4gVG8gdXNlIHRoaXMgZmVhdHVyZSB3aXRoIE1vbmdvREIsIGEgcmVwbGljYSBzZXQgY2x1c3RlciB3aXRoIFtjaGFuZ2Ugc3RyZWFtXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL2NoYW5nZVN0cmVhbXMvI2F2YWlsYWJpbGl0eSkgc3VwcG9ydCBpcyByZXF1aXJlZC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkF1dGhBZGFwdGVyID0ge1xuICBlbmFibGVkOiB7XG4gICAgaGVscDogJ0lzIGB0cnVlYCBpZiB0aGUgYXV0aCBhZGFwdGVyIGlzIGVuYWJsZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbn07XG4iXX0=
849
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL0RlZmluaXRpb25zLmpzIl0sIm5hbWVzIjpbInBhcnNlcnMiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsIlNjaGVtYU9wdGlvbnMiLCJhZnRlck1pZ3JhdGlvbiIsImVudiIsImhlbHAiLCJiZWZvcmVNaWdyYXRpb24iLCJkZWZpbml0aW9ucyIsInJlcXVpcmVkIiwiYWN0aW9uIiwib2JqZWN0UGFyc2VyIiwiZGVmYXVsdCIsImRlbGV0ZUV4dHJhRmllbGRzIiwiYm9vbGVhblBhcnNlciIsImxvY2tTY2hlbWFzIiwicmVjcmVhdGVNb2RpZmllZEZpZWxkcyIsInN0cmljdCIsIlBhcnNlU2VydmVyT3B0aW9ucyIsImFjY291bnRMb2Nrb3V0IiwiYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uIiwiYWxsb3dDdXN0b21PYmplY3RJZCIsImFsbG93RXhwaXJlZEF1dGhEYXRhVG9rZW4iLCJhbGxvd0hlYWRlcnMiLCJhcnJheVBhcnNlciIsImFsbG93T3JpZ2luIiwiYW5hbHl0aWNzQWRhcHRlciIsIm1vZHVsZU9yT2JqZWN0UGFyc2VyIiwiYXBwSWQiLCJhcHBOYW1lIiwiYXV0aCIsImNhY2hlQWRhcHRlciIsImNhY2hlTWF4U2l6ZSIsIm51bWJlclBhcnNlciIsImNhY2hlVFRMIiwiY2xpZW50S2V5IiwiY2xvdWQiLCJjbHVzdGVyIiwibnVtYmVyT3JCb29sZWFuUGFyc2VyIiwiY29sbGVjdGlvblByZWZpeCIsImN1c3RvbVBhZ2VzIiwiZGF0YWJhc2VBZGFwdGVyIiwiZGF0YWJhc2VPcHRpb25zIiwiZGF0YWJhc2VVUkkiLCJkZWZhdWx0TGltaXQiLCJkaXJlY3RBY2Nlc3MiLCJkb3ROZXRLZXkiLCJlbWFpbEFkYXB0ZXIiLCJlbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkIiwiZW1haWxWZXJpZnlUb2tlblZhbGlkaXR5RHVyYXRpb24iLCJlbmFibGVBbm9ueW1vdXNVc2VycyIsImVuYWJsZUV4cHJlc3NFcnJvckhhbmRsZXIiLCJlbmNyeXB0aW9uS2V5IiwiZW5mb3JjZVByaXZhdGVVc2VycyIsImV4cGlyZUluYWN0aXZlU2Vzc2lvbnMiLCJmaWxlS2V5IiwiZmlsZXNBZGFwdGVyIiwiZmlsZVVwbG9hZCIsImdyYXBoUUxQYXRoIiwiZ3JhcGhRTFNjaGVtYSIsImhvc3QiLCJpZGVtcG90ZW5jeU9wdGlvbnMiLCJqYXZhc2NyaXB0S2V5IiwianNvbkxvZ3MiLCJsaXZlUXVlcnkiLCJsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIiwibG9nZ2VyQWRhcHRlciIsImxvZ0xldmVsIiwibG9nc0ZvbGRlciIsIm1hc3RlcktleSIsIm1hc3RlcktleUlwcyIsIm1heExpbWl0IiwibWF4TG9nRmlsZXMiLCJtYXhVcGxvYWRTaXplIiwibWlkZGxld2FyZSIsIm1vdW50R3JhcGhRTCIsIm1vdW50UGF0aCIsIm1vdW50UGxheWdyb3VuZCIsIm9iamVjdElkU2l6ZSIsInBhZ2VzIiwicGFzc3dvcmRQb2xpY3kiLCJwbGF5Z3JvdW5kUGF0aCIsInBvcnQiLCJwcmVzZXJ2ZUZpbGVOYW1lIiwicHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbCIsInByb3RlY3RlZEZpZWxkcyIsIl9Vc2VyIiwicHVibGljU2VydmVyVVJMIiwicHVzaCIsInJlYWRPbmx5TWFzdGVyS2V5IiwicmVxdWVzdEtleXdvcmREZW55bGlzdCIsImtleSIsInZhbHVlIiwicmVzdEFQSUtleSIsInJldm9rZVNlc3Npb25PblBhc3N3b3JkUmVzZXQiLCJzY2hlZHVsZWRQdXNoIiwic2NoZW1hIiwic2VjdXJpdHkiLCJzZXJ2ZXJDbG9zZUNvbXBsZXRlIiwic2VydmVyU3RhcnRDb21wbGV0ZSIsInNlcnZlclVSTCIsInNlc3Npb25MZW5ndGgiLCJzaWxlbnQiLCJzdGFydExpdmVRdWVyeVNlcnZlciIsInVzZXJTZW5zaXRpdmVGaWVsZHMiLCJ2ZXJib3NlIiwidmVyaWZ5VXNlckVtYWlscyIsIndlYmhvb2tLZXkiLCJTZWN1cml0eU9wdGlvbnMiLCJjaGVja0dyb3VwcyIsImVuYWJsZUNoZWNrIiwiZW5hYmxlQ2hlY2tMb2ciLCJQYWdlc09wdGlvbnMiLCJjdXN0b21Sb3V0ZXMiLCJjdXN0b21VcmxzIiwiZW5hYmxlTG9jYWxpemF0aW9uIiwiZW5hYmxlUm91dGVyIiwiZm9yY2VSZWRpcmVjdCIsImxvY2FsaXphdGlvbkZhbGxiYWNrTG9jYWxlIiwibG9jYWxpemF0aW9uSnNvblBhdGgiLCJwYWdlc0VuZHBvaW50IiwicGFnZXNQYXRoIiwicGxhY2Vob2xkZXJzIiwiUGFnZXNSb3V0ZSIsImhhbmRsZXIiLCJtZXRob2QiLCJwYXRoIiwiUGFnZXNDdXN0b21VcmxzT3B0aW9ucyIsImVtYWlsVmVyaWZpY2F0aW9uTGlua0V4cGlyZWQiLCJlbWFpbFZlcmlmaWNhdGlvbkxpbmtJbnZhbGlkIiwiZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbCIsImVtYWlsVmVyaWZpY2F0aW9uU2VuZFN1Y2Nlc3MiLCJlbWFpbFZlcmlmaWNhdGlvblN1Y2Nlc3MiLCJwYXNzd29yZFJlc2V0IiwicGFzc3dvcmRSZXNldExpbmtJbnZhbGlkIiwicGFzc3dvcmRSZXNldFN1Y2Nlc3MiLCJDdXN0b21QYWdlc09wdGlvbnMiLCJjaG9vc2VQYXNzd29yZCIsImV4cGlyZWRWZXJpZmljYXRpb25MaW5rIiwiaW52YWxpZExpbmsiLCJpbnZhbGlkUGFzc3dvcmRSZXNldExpbmsiLCJpbnZhbGlkVmVyaWZpY2F0aW9uTGluayIsImxpbmtTZW5kRmFpbCIsImxpbmtTZW5kU3VjY2VzcyIsInBhcnNlRnJhbWVVUkwiLCJ2ZXJpZnlFbWFpbFN1Y2Nlc3MiLCJMaXZlUXVlcnlPcHRpb25zIiwiY2xhc3NOYW1lcyIsInB1YlN1YkFkYXB0ZXIiLCJyZWRpc09wdGlvbnMiLCJyZWRpc1VSTCIsIndzc0FkYXB0ZXIiLCJMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIiwiY2FjaGVUaW1lb3V0Iiwia2V5UGFpcnMiLCJ3ZWJzb2NrZXRUaW1lb3V0IiwiSWRlbXBvdGVuY3lPcHRpb25zIiwicGF0aHMiLCJ0dGwiLCJBY2NvdW50TG9ja291dE9wdGlvbnMiLCJkdXJhdGlvbiIsInRocmVzaG9sZCIsInVubG9ja09uUGFzc3dvcmRSZXNldCIsIlBhc3N3b3JkUG9saWN5T3B0aW9ucyIsImRvTm90QWxsb3dVc2VybmFtZSIsIm1heFBhc3N3b3JkQWdlIiwibWF4UGFzc3dvcmRIaXN0b3J5IiwicmVzZXRUb2tlblJldXNlSWZWYWxpZCIsInJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uIiwidmFsaWRhdGlvbkVycm9yIiwidmFsaWRhdG9yQ2FsbGJhY2siLCJ2YWxpZGF0b3JQYXR0ZXJuIiwiRmlsZVVwbG9hZE9wdGlvbnMiLCJlbmFibGVGb3JBbm9ueW1vdXNVc2VyIiwiZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXIiLCJlbmFibGVGb3JQdWJsaWMiLCJEYXRhYmFzZU9wdGlvbnMiLCJlbmFibGVTY2hlbWFIb29rcyIsIkF1dGhBZGFwdGVyIiwiZW5hYmxlZCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsV0FBRCxDQUFyQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLENBQWVDLGFBQWYsR0FBK0I7QUFDN0JDLEVBQUFBLGNBQWMsRUFBRTtBQUNkQyxJQUFBQSxHQUFHLEVBQUUscUNBRFM7QUFFZEMsSUFBQUEsSUFBSSxFQUFFO0FBRlEsR0FEYTtBQUs3QkMsRUFBQUEsZUFBZSxFQUFFO0FBQ2ZGLElBQUFBLEdBQUcsRUFBRSxzQ0FEVTtBQUVmQyxJQUFBQSxJQUFJLEVBQUU7QUFGUyxHQUxZO0FBUzdCRSxFQUFBQSxXQUFXLEVBQUU7QUFDWEgsSUFBQUEsR0FBRyxFQUFFLGlDQURNO0FBRVhDLElBQUFBLElBQUksRUFDRixnR0FIUztBQUlYRyxJQUFBQSxRQUFRLEVBQUUsSUFKQztBQUtYQyxJQUFBQSxNQUFNLEVBQUVYLE9BQU8sQ0FBQ1ksWUFMTDtBQU1YQyxJQUFBQSxPQUFPLEVBQUU7QUFORSxHQVRnQjtBQWlCN0JDLEVBQUFBLGlCQUFp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QUFDdEJ4SyxJQUFBQSxHQUFHLEVBQUUsb0RBRGlCO0FBRXRCQyxJQUFBQSxJQUFJLEVBQUUsK0RBRmdCO0FBR3RCSSxJQUFBQSxNQUFNLEVBQUVYLE9BQU8sQ0FBQ2UsYUFITTtBQUl0QkYsSUFBQUEsT0FBTyxFQUFFO0FBSmEsR0FEUztBQU9qQ2tLLEVBQUFBLDBCQUEwQixFQUFFO0FBQzFCekssSUFBQUEsR0FBRyxFQUFFLHdEQURxQjtBQUUxQkMsSUFBQUEsSUFBSSxFQUFFLG1FQUZvQjtBQUcxQkksSUFBQUEsTUFBTSxFQUFFWCxPQUFPLENBQUNlLGFBSFU7QUFJMUJGLElBQUFBLE9BQU8sRUFBRTtBQUppQixHQVBLO0FBYWpDbUssRUFBQUEsZUFBZSxFQUFFO0FBQ2YxSyxJQUFBQSxHQUFHLEVBQUUsNENBRFU7QUFFZkMsSUFBQUEsSUFBSSxFQUFFLHlGQUZTO0FBR2ZJLElBQUFBLE1BQU0sRUFBRVgsT0FBTyxDQUFDZSxhQUhEO0FBSWZGLElBQUFBLE9BQU8sRUFBRTtBQUpNO0FBYmdCLENBQW5DO0FBb0JBWCxNQUFNLENBQUNDLE9BQVAsQ0FBZThLLGVBQWYsR0FBaUM7QUFDL0JDLEVBQUFBLGlCQUFpQixFQUFFO0FBQ2pCNUssSUFBQUEsR0FBRyxFQUFFLDJDQURZO0FBRWpCQyxJQUFBQSxJQUFJLEVBQ0Ysa2NBSGU7QUFJakJJLElBQUFBLE1BQU0sRUFBRVgsT0FBTyxDQUFDZSxhQUpDO0FBS2pCRixJQUFBQSxPQUFPLEVBQUU7QUFMUTtBQURZLENBQWpDO0FBU0FYLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlZ0wsV0FBZixHQUE2QjtBQUMzQkMsRUFBQUEsT0FBTyxFQUFFO0FBQ1A3SyxJQUFBQSxJQUFJLEVBQUUsOERBREM7QUFFUEksSUFBQUEsTUFBTSxFQUFFWCxPQUFPLENBQUNlLGFBRlQ7QUFHUEYsSUFBQUEsT0FBTyxFQUFFO0FBSEY7QUFEa0IsQ0FBN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuKioqKiBHRU5FUkFURUQgQ09ERSAqKioqXG5UaGlzIGNvZGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHJlc291cmNlcy9idWlsZENvbmZpZ0RlZmluaXRpb25zLmpzXG5EbyBub3QgZWRpdCBtYW51YWxseSwgYnV0IHVwZGF0ZSBPcHRpb25zL2luZGV4LmpzXG4qL1xudmFyIHBhcnNlcnMgPSByZXF1aXJlKCcuL3BhcnNlcnMnKTtcblxubW9kdWxlLmV4cG9ydHMuU2NoZW1hT3B0aW9ucyA9IHtcbiAgYWZ0ZXJNaWdyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0FGVEVSX01JR1JBVElPTicsXG4gICAgaGVscDogJ0V4ZWN1dGUgYSBjYWxsYmFjayBhZnRlciBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLicsXG4gIH0sXG4gIGJlZm9yZU1pZ3JhdGlvbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFTUFfQkVGT1JFX01JR1JBVElPTicsXG4gICAgaGVscDogJ0V4ZWN1dGUgYSBjYWxsYmFjayBiZWZvcmUgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy4nLFxuICB9LFxuICBkZWZpbml0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFTUFfREVGSU5JVElPTlMnLFxuICAgIGhlbHA6XG4gICAgICAnUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYScsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiBbXSxcbiAgfSxcbiAgZGVsZXRlRXh0cmFGaWVsZHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0RFTEVURV9FWFRSQV9GSUVMRFMnLFxuICAgIGhlbHA6XG4gICAgICAnSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGRlbGV0ZSBhbnkgZmllbGRzIG5vdCBkZWZpbmVkIGluIGEgc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgbG9ja1NjaGVtYXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0xPQ0tfU0NIRU1BUycsXG4gICAgaGVscDpcbiAgICAgICdJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciB3aWxsIHJlamVjdCBhbnkgYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBzY2hlbWEgd2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHJlY3JlYXRlTW9kaWZpZWRGaWVsZHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX1JFQ1JFQVRFX01PRElGSUVEX0ZJRUxEUycsXG4gICAgaGVscDpcbiAgICAgICdJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgcmVjcmVhdGUgYW55IGZpZWxkcyB0aGF0IGFyZSBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgY3VycmVudCBkYXRhYmFzZSBzY2hlbWEgYW5kIHRoZXNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZHVyaW5nIGRldmVsb3BtZW50LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHN0cmljdDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFTUFfU1RSSUNUJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFyc2VTZXJ2ZXJPcHRpb25zID0ge1xuICBhY2NvdW50TG9ja291dDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BQ0NPVU5UX0xPQ0tPVVQnLFxuICAgIGhlbHA6ICdUaGUgYWNjb3VudCBsb2Nrb3V0IHBvbGljeSBmb3IgZmFpbGVkIGxvZ2luIGF0dGVtcHRzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FMTE9XX0NMSUVOVF9DTEFTU19DUkVBVElPTicsXG4gICAgaGVscDogJ0VuYWJsZSAob3IgZGlzYWJsZSkgY2xpZW50IGNsYXNzIGNyZWF0aW9uLCBkZWZhdWx0cyB0byB0cnVlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBhbGxvd0N1c3RvbU9iamVjdElkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FMTE9XX0NVU1RPTV9PQkpFQ1RfSUQnLFxuICAgIGhlbHA6ICdFbmFibGUgKG9yIGRpc2FibGUpIGN1c3RvbSBvYmplY3RJZCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGFsbG93RXhwaXJlZEF1dGhEYXRhVG9rZW46IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQUxMT1dfRVhQSVJFRF9BVVRIX0RBVEFfVE9LRU4nLFxuICAgIGhlbHA6XG4gICAgICAnQWxsb3cgYSB1c2VyIHRvIGxvZyBpbiBldmVuIGlmIHRoZSAzcmQgcGFydHkgYXV0aGVudGljYXRpb24gdG9rZW4gdGhhdCB3YXMgdXNlZCB0byBzaWduIGluIHRvIHRoZWlyIGFjY291bnQgaGFzIGV4cGlyZWQuIElmIHRoaXMgaXMgc2V0IHRvIGBmYWxzZWAsIHRoZW4gdGhlIHRva2VuIHdpbGwgYmUgdmFsaWRhdGVkIGV2ZXJ5IHRpbWUgdGhlIHVzZXIgc2lnbnMgaW4gdG8gdGhlaXIgYWNjb3VudC4gVGhpcyByZWZlcnMgdG8gdGhlIHRva2VuIHRoYXQgaXMgc3RvcmVkIGluIHRoZSBgX1VzZXIuYXV0aERhdGFgIGZpZWxkLiBEZWZhdWx0cyB0byBgdHJ1ZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBhbGxvd0hlYWRlcnM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQUxMT1dfSEVBREVSUycsXG4gICAgaGVscDogJ0FkZCBoZWFkZXJzIHRvIEFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgfSxcbiAgYWxsb3dPcmlnaW46IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQUxMT1dfT1JJR0lOJyxcbiAgICBoZWxwOiAnU2V0cyB0aGUgb3JpZ2luIHRvIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsXG4gIH0sXG4gIGFuYWx5dGljc0FkYXB0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQU5BTFlUSUNTX0FEQVBURVInLFxuICAgIGhlbHA6ICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGFuYWx5dGljcycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxuICBhcHBJZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BUFBMSUNBVElPTl9JRCcsXG4gICAgaGVscDogJ1lvdXIgUGFyc2UgQXBwbGljYXRpb24gSUQnLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICB9LFxuICBhcHBOYW1lOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FQUF9OQU1FJyxcbiAgICBoZWxwOiAnU2V0cyB0aGUgYXBwIG5hbWUnLFxuICB9LFxuICBhdXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FVVEhfUFJPVklERVJTJyxcbiAgICBoZWxwOlxuICAgICAgJ0NvbmZpZ3VyYXRpb24gZm9yIHlvdXIgYXV0aGVudGljYXRpb24gcHJvdmlkZXJzLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNvYXV0aC1hbmQtM3JkLXBhcnR5LWF1dGhlbnRpY2F0aW9uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gIH0sXG4gIGNhY2hlQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DQUNIRV9BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBjYWNoZScsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxuICBjYWNoZU1heFNpemU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ0FDSEVfTUFYX1NJWkUnLFxuICAgIGhlbHA6ICdTZXRzIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUsIGRlZmF1bHRzIHRvIDEwMDAwJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdjYWNoZU1heFNpemUnKSxcbiAgICBkZWZhdWx0OiAxMDAwMCxcbiAgfSxcbiAgY2FjaGVUVEw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ0FDSEVfVFRMJyxcbiAgICBoZWxwOiAnU2V0cyB0aGUgVFRMIGZvciB0aGUgaW4gbWVtb3J5IGNhY2hlIChpbiBtcyksIGRlZmF1bHRzIHRvIDUwMDAgKDUgc2Vjb25kcyknLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ2NhY2hlVFRMJyksXG4gICAgZGVmYXVsdDogNTAwMCxcbiAgfSxcbiAgY2xpZW50S2V5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NMSUVOVF9LRVknLFxuICAgIGhlbHA6ICdLZXkgZm9yIGlPUywgTWFjT1MsIHR2T1MgY2xpZW50cycsXG4gIH0sXG4gIGNsb3VkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NMT1VEJyxcbiAgICBoZWxwOiAnRnVsbCBwYXRoIHRvIHlvdXIgY2xvdWQgY29kZSBtYWluLmpzJyxcbiAgfSxcbiAgY2x1c3Rlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DTFVTVEVSJyxcbiAgICBoZWxwOiAnUnVuIHdpdGggY2x1c3Rlciwgb3B0aW9uYWxseSBzZXQgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgZGVmYXVsdCB0byBvcy5jcHVzKCkubGVuZ3RoJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyT3JCb29sZWFuUGFyc2VyLFxuICB9LFxuICBjb2xsZWN0aW9uUHJlZml4OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NPTExFQ1RJT05fUFJFRklYJyxcbiAgICBoZWxwOiAnQSBjb2xsZWN0aW9uIHByZWZpeCBmb3IgdGhlIGNsYXNzZXMnLFxuICAgIGRlZmF1bHQ6ICcnLFxuICB9LFxuICBjdXN0b21QYWdlczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVMnLFxuICAgIGhlbHA6ICdjdXN0b20gcGFnZXMgZm9yIHBhc3N3b3JkIHZhbGlkYXRpb24gYW5kIHJlc2V0JyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICAgIGRlZmF1bHQ6IHt9LFxuICB9LFxuICBkYXRhYmFzZUFkYXB0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfREFUQUJBU0VfQURBUFRFUicsXG4gICAgaGVscDpcbiAgICAgICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGRhdGFiYXNlOyBhbnkgb3B0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBkZXNjcmliZWQgaGVyZSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBkYXRhYmFzZSBjbGllbnQuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGRhdGFiYXNlT3B0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9EQVRBQkFTRV9PUFRJT05TJyxcbiAgICBoZWxwOiAnT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBkYXRhYmFzZSBjbGllbnQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIGRhdGFiYXNlVVJJOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0RBVEFCQVNFX1VSSScsXG4gICAgaGVscDogJ1RoZSBmdWxsIFVSSSB0byB5b3VyIGRhdGFiYXNlLiBTdXBwb3J0ZWQgZGF0YWJhc2VzIGFyZSBtb25nb2RiIG9yIHBvc3RncmVzLicsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgZGVmYXVsdDogJ21vbmdvZGI6Ly9sb2NhbGhvc3Q6MjcwMTcvcGFyc2UnLFxuICB9LFxuICBkZWZhdWx0TGltaXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfREVGQVVMVF9MSU1JVCcsXG4gICAgaGVscDogJ0RlZmF1bHQgdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byBgMTAwYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ2RlZmF1bHRMaW1pdCcpLFxuICAgIGRlZmF1bHQ6IDEwMCxcbiAgfSxcbiAgZGlyZWN0QWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0RJUkVDVF9BQ0NFU1MnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCBpZiBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIHNhbWUgTm9kZS5qcyBlbnZpcm9ubWVudCBhcyBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGJlIHJvdXRlZCB0byBQYXJzZSBTZXJ2ZXIgZGlyZWN0bHkgaW5zdGVhZCBvZiB2aWEgdGhlIEhUVFAgaW50ZXJmYWNlLiBEZWZhdWx0IGlzIGBmYWxzZWAuPGJyPjxicj5JZiBzZXQgdG8gYGZhbHNlYCB0aGVuIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBhcmUgZXhlY3V0ZWQgYXMgSFRUUCByZXF1ZXN0cyBzZW50IHRvIFBhcnNlIFNlcnZlciB2aWEgdGhlIGBzZXJ2ZXJVUkxgLiBGb3IgZXhhbXBsZSwgYSBgUGFyc2UuUXVlcnlgIGluIENsb3VkIENvZGUgaXMgY2FsbGluZyBQYXJzZSBTZXJ2ZXIgdmlhIGEgSFRUUCByZXF1ZXN0LiBUaGUgc2VydmVyIGlzIGVzc2VudGlhbGx5IG1ha2luZyBhIEhUVFAgcmVxdWVzdCB0byBpdHNlbGYsIHVubmVjZXNzYXJpbHkgdXNpbmcgbmV0d29yayByZXNvdXJjZXMgc3VjaCBhcyBuZXR3b3JrIHBvcnRzLjxicj48YnI+XFx1MjZBMFxcdUZFMEYgSW4gZW52aXJvbm1lbnRzIHdoZXJlIG11bHRpcGxlIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgcnVuIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIgYW5kIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgY3VycmVudCBOb2RlLmpzIGVudmlyb25tZW50IHNob3VsZCBiZSByb3V0ZWQgdmlhIHRoZSBsb2FkIGJhbGFuY2VyIGFuZCBkaXN0cmlidXRlZCBhcyBIVFRQIHJlcXVlc3RzIGFtb25nIGFsbCBpbnN0YW5jZXMgdmlhIHRoZSBgc2VydmVyVVJMYCwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBkb3ROZXRLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRE9UX05FVF9LRVknLFxuICAgIGhlbHA6ICdLZXkgZm9yIFVuaXR5IGFuZCAuTmV0IFNESycsXG4gIH0sXG4gIGVtYWlsQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTUFJTF9BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIGVtYWlsIHNlbmRpbmcnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTUFJTF9WRVJJRllfVE9LRU5fUkVVU0VfSUZfVkFMSUQnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCBpZiBhIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZW1haWxWZXJpZnlUb2tlblZhbGlkaXR5RHVyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU1BSUxfVkVSSUZZX1RPS0VOX1ZBTElESVRZX0RVUkFUSU9OJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbicpLFxuICB9LFxuICBlbmFibGVBbm9ueW1vdXNVc2Vyczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTkFCTEVfQU5PTl9VU0VSUycsXG4gICAgaGVscDogJ0VuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBlbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VOQUJMRV9FWFBSRVNTX0VSUk9SX0hBTkRMRVInLFxuICAgIGhlbHA6ICdFbmFibGVzIHRoZSBkZWZhdWx0IGV4cHJlc3MgZXJyb3IgaGFuZGxlciBmb3IgYWxsIGVycm9ycycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVuY3J5cHRpb25LZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU5DUllQVElPTl9LRVknLFxuICAgIGhlbHA6ICdLZXkgZm9yIGVuY3J5cHRpbmcgeW91ciBmaWxlcycsXG4gIH0sXG4gIGVuZm9yY2VQcml2YXRlVXNlcnM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU5GT1JDRV9QUklWQVRFX1VTRVJTJyxcbiAgICBoZWxwOiAnU2V0IHRvIHRydWUgaWYgbmV3IHVzZXJzIHNob3VsZCBiZSBjcmVhdGVkIHdpdGhvdXQgcHVibGljIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBleHBpcmVJbmFjdGl2ZVNlc3Npb25zOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VYUElSRV9JTkFDVElWRV9TRVNTSU9OUycsXG4gICAgaGVscDpcbiAgICAgICdTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgZmlsZUtleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgeW91ciBmaWxlcycsXG4gIH0sXG4gIGZpbGVzQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFU19BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBmaWxlcyBzdWItc3lzdGVtJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGZpbGVVcGxvYWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRklMRV9VUExPQURfT1BUSU9OUycsXG4gICAgaGVscDogJ09wdGlvbnMgZm9yIGZpbGUgdXBsb2FkcycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgZ3JhcGhRTFBhdGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfR1JBUEhRTF9QQVRIJyxcbiAgICBoZWxwOiAnTW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgZW5kcG9pbnQsIGRlZmF1bHRzIHRvIC9ncmFwaHFsJyxcbiAgICBkZWZhdWx0OiAnL2dyYXBocWwnLFxuICB9LFxuICBncmFwaFFMU2NoZW1hOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0dSQVBIX1FMU0NIRU1BJyxcbiAgICBoZWxwOiAnRnVsbCBwYXRoIHRvIHlvdXIgR3JhcGhRTCBjdXN0b20gc2NoZW1hLmdyYXBocWwgZmlsZScsXG4gIH0sXG4gIGhvc3Q6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfSE9TVCcsXG4gICAgaGVscDogJ1RoZSBob3N0IHRvIHNlcnZlIFBhcnNlU2VydmVyIG9uLCBkZWZhdWx0cyB0byAwLjAuMC4wJyxcbiAgICBkZWZhdWx0OiAnMC4wLjAuMCcsXG4gIH0sXG4gIGlkZW1wb3RlbmN5T3B0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FWFBFUklNRU5UQUxfSURFTVBPVEVOQ1lfT1BUSU9OUycsXG4gICAgaGVscDpcbiAgICAgICdPcHRpb25zIGZvciByZXF1ZXN0IGlkZW1wb3RlbmN5IHRvIGRlZHVwbGljYXRlIGlkZW50aWNhbCByZXF1ZXN0cyB0aGF0IG1heSBiZSBjYXVzZWQgYnkgbmV0d29yayBpc3N1ZXMuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgamF2YXNjcmlwdEtleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9KQVZBU0NSSVBUX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgdGhlIEphdmFzY3JpcHQgU0RLJyxcbiAgfSxcbiAganNvbkxvZ3M6IHtcbiAgICBlbnY6ICdKU09OX0xPR1MnLFxuICAgIGhlbHA6ICdMb2cgYXMgc3RydWN0dXJlZCBKU09OIG9iamVjdHMnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICB9LFxuICBsaXZlUXVlcnk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTElWRV9RVUVSWScsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY29uZmlndXJhdGlvbiBvYmplY3RcIixcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xJVkVfUVVFUllfU0VSVkVSX09QVElPTlMnLFxuICAgIGhlbHA6ICdMaXZlIHF1ZXJ5IHNlcnZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgKHdpbGwgc3RhcnQgdGhlIGxpdmVRdWVyeSBzZXJ2ZXIpJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBsb2dnZXJBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xPR0dFUl9BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBsb2dnaW5nIHN1Yi1zeXN0ZW0nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgbG9nTGV2ZWw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTE9HX0xFVkVMJyxcbiAgICBoZWxwOiAnU2V0cyB0aGUgbGV2ZWwgZm9yIGxvZ3MnLFxuICB9LFxuICBsb2dzRm9sZGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xPR1NfRk9MREVSJyxcbiAgICBoZWxwOiBcIkZvbGRlciBmb3IgdGhlIGxvZ3MgKGRlZmF1bHRzIHRvICcuL2xvZ3MnKTsgc2V0IHRvIG51bGwgdG8gZGlzYWJsZSBmaWxlIGJhc2VkIGxvZ2dpbmdcIixcbiAgICBkZWZhdWx0OiAnLi9sb2dzJyxcbiAgfSxcbiAgbWFzdGVyS2V5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01BU1RFUl9LRVknLFxuICAgIGhlbHA6ICdZb3VyIFBhcnNlIE1hc3RlciBLZXknLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICB9LFxuICBtYXN0ZXJLZXlJcHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTUFTVEVSX0tFWV9JUFMnLFxuICAgIGhlbHA6XG4gICAgICBcIihPcHRpb25hbCkgUmVzdHJpY3RzIHRoZSB1c2Ugb2YgbWFzdGVyIGtleSBwZXJtaXNzaW9ucyB0byBhIGxpc3Qgb2YgSVAgYWRkcmVzc2VzLjxicj48YnI+VGhpcyBvcHRpb24gYWNjZXB0cyBhIGxpc3Qgb2Ygc2luZ2xlIElQIGFkZHJlc3NlcywgZm9yIGV4YW1wbGU6PGJyPmBbJzEwLjAuMC4xJywgJzEwLjAuMC4yJ11gPGJyPjxicj5Zb3UgY2FuIGFsc28gdXNlIENJRFIgbm90YXRpb24gdG8gc3BlY2lmeSBhbiBJUCBhZGRyZXNzIHJhbmdlLCBmb3IgZXhhbXBsZTo8YnI+YFsnMTAuMC4xLjAvMjQnXWA8YnI+PGJyPlNwZWNpYWwgY2FzZXM6PGJyPi0gU2V0dGluZyBhbiBlbXB0eSBhcnJheSBgW11gIG1lYW5zIHRoYXQgYG1hc3RlcktleWBgIGNhbm5vdCBiZSB1c2VkIGV2ZW4gaW4gUGFyc2UgU2VydmVyIENsb3VkIENvZGUuPGJyPi0gU2V0dGluZyBgWycwLjAuMC4wLzAnXWAgbWVhbnMgZGlzYWJsaW5nIHRoZSBmaWx0ZXIgYW5kIHRoZSBtYXN0ZXIga2V5IGNhbiBiZSB1c2VkIGZyb20gYW55IElQIGFkZHJlc3MuPGJyPjxicj5UbyBjb25uZWN0IFBhcnNlIERhc2hib2FyZCBmcm9tIGEgZGlmZmVyZW50IHNlcnZlciByZXF1aXJlcyB0byBhZGQgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIHNlcnZlciB0aGF0IGhvc3RzIFBhcnNlIERhc2hib2FyZCBiZWNhdXNlIFBhcnNlIERhc2hib2FyZCB1c2VzIHRoZSBtYXN0ZXIga2V5Ljxicj48YnI+RGVmYXVsdHMgdG8gYFsnMTI3LjAuMC4xJ11gIHdoaWNoIG1lYW5zIHRoYXQgb25seSBgbG9jYWxob3N0YCwgdGhlIHNlcnZlciBpdHNlbGYsIGlzIGFsbG93ZWQgdG8gdXNlIHRoZSBtYXN0ZXIga2V5LlwiLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgICBkZWZhdWx0OiBbJzEyNy4wLjAuMSddLFxuICB9LFxuICBtYXhMaW1pdDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9NQVhfTElNSVQnLFxuICAgIGhlbHA6ICdNYXggdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byB1bmxpbWl0ZWQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ21heExpbWl0JyksXG4gIH0sXG4gIG1heExvZ0ZpbGVzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01BWF9MT0dfRklMRVMnLFxuICAgIGhlbHA6XG4gICAgICBcIk1heGltdW0gbnVtYmVyIG9mIGxvZ3MgdG8ga2VlcC4gSWYgbm90IHNldCwgbm8gbG9ncyB3aWxsIGJlIHJlbW92ZWQuIFRoaXMgY2FuIGJlIGEgbnVtYmVyIG9mIGZpbGVzIG9yIG51bWJlciBvZiBkYXlzLiBJZiB1c2luZyBkYXlzLCBhZGQgJ2QnIGFzIHRoZSBzdWZmaXguIChkZWZhdWx0OiBudWxsKVwiLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIG1heFVwbG9hZFNpemU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTUFYX1VQTE9BRF9TSVpFJyxcbiAgICBoZWxwOiAnTWF4IGZpbGUgc2l6ZSBmb3IgdXBsb2FkcywgZGVmYXVsdHMgdG8gMjBtYicsXG4gICAgZGVmYXVsdDogJzIwbWInLFxuICB9LFxuICBtaWRkbGV3YXJlOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01JRERMRVdBUkUnLFxuICAgIGhlbHA6ICdtaWRkbGV3YXJlIGZvciBleHByZXNzIHNlcnZlciwgY2FuIGJlIHN0cmluZyBvciBmdW5jdGlvbicsXG4gIH0sXG4gIG1vdW50R3JhcGhRTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9NT1VOVF9HUkFQSFFMJyxcbiAgICBoZWxwOiAnTW91bnRzIHRoZSBHcmFwaFFMIGVuZHBvaW50JyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgbW91bnRQYXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01PVU5UX1BBVEgnLFxuICAgIGhlbHA6ICdNb3VudCBwYXRoIGZvciB0aGUgc2VydmVyLCBkZWZhdWx0cyB0byAvcGFyc2UnLFxuICAgIGRlZmF1bHQ6ICcvcGFyc2UnLFxuICB9LFxuICBtb3VudFBsYXlncm91bmQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTU9VTlRfUExBWUdST1VORCcsXG4gICAgaGVscDogJ01vdW50cyB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kIC0gbmV2ZXIgdXNlIHRoaXMgb3B0aW9uIGluIHByb2R1Y3Rpb24nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBvYmplY3RJZFNpemU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfT0JKRUNUX0lEX1NJWkUnLFxuICAgIGhlbHA6IFwiU2V0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gZ2VuZXJhdGVkIG9iamVjdCBpZCdzLCBkZWZhdWx0IDEwXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignb2JqZWN0SWRTaXplJyksXG4gICAgZGVmYXVsdDogMTAsXG4gIH0sXG4gIHBhZ2VzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoZSBvcHRpb25zIGZvciBwYWdlcyBzdWNoIGFzIHBhc3N3b3JkIHJlc2V0IGFuZCBlbWFpbCB2ZXJpZmljYXRpb24uIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgcGFzc3dvcmRQb2xpY3k6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZJyxcbiAgICBoZWxwOiAnVGhlIHBhc3N3b3JkIHBvbGljeSBmb3IgZW5mb3JjaW5nIHBhc3N3b3JkIHJlbGF0ZWQgcnVsZXMuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBwbGF5Z3JvdW5kUGF0aDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QTEFZR1JPVU5EX1BBVEgnLFxuICAgIGhlbHA6ICdNb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kLCBkZWZhdWx0cyB0byAvcGxheWdyb3VuZCcsXG4gICAgZGVmYXVsdDogJy9wbGF5Z3JvdW5kJyxcbiAgfSxcbiAgcG9ydDoge1xuICAgIGVudjogJ1BPUlQnLFxuICAgIGhlbHA6ICdUaGUgcG9ydCB0byBydW4gdGhlIFBhcnNlU2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigncG9ydCcpLFxuICAgIGRlZmF1bHQ6IDEzMzcsXG4gIH0sXG4gIHByZXNlcnZlRmlsZU5hbWU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUFJFU0VSVkVfRklMRV9OQU1FJyxcbiAgICBoZWxwOiAnRW5hYmxlIChvciBkaXNhYmxlKSB0aGUgYWRkaXRpb24gb2YgYSB1bmlxdWUgaGFzaCB0byB0aGUgZmlsZSBuYW1lcycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHByZXZlbnRMb2dpbldpdGhVbnZlcmlmaWVkRW1haWw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUFJFVkVOVF9MT0dJTl9XSVRIX1VOVkVSSUZJRURfRU1BSUwnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCB0byBwcmV2ZW50IGEgdXNlciBmcm9tIGxvZ2dpbmcgaW4gaWYgdGhlIGVtYWlsIGhhcyBub3QgeWV0IGJlZW4gdmVyaWZpZWQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC48YnI+UmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBwcm90ZWN0ZWRGaWVsZHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUFJPVEVDVEVEX0ZJRUxEUycsXG4gICAgaGVscDogJ1Byb3RlY3RlZCBmaWVsZHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCB3aXRoIGV4dHJhIHNlY3VyaXR5IHdoZW4gZmV0Y2hpbmcgZGV0YWlscy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge1xuICAgICAgX1VzZXI6IHtcbiAgICAgICAgJyonOiBbJ2VtYWlsJ10sXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHB1YmxpY1NlcnZlclVSTDoge1xuICAgIGVudjogJ1BBUlNFX1BVQkxJQ19TRVJWRVJfVVJMJyxcbiAgICBoZWxwOiAnUHVibGljIFVSTCB0byB5b3VyIHBhcnNlIHNlcnZlciB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8uJyxcbiAgfSxcbiAgcHVzaDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QVVNIJyxcbiAgICBoZWxwOlxuICAgICAgJ0NvbmZpZ3VyYXRpb24gZm9yIHB1c2gsIGFzIHN0cmluZ2lmaWVkIEpTT04uIFNlZSBodHRwOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvZ3VpZGUvI3B1c2gtbm90aWZpY2F0aW9ucycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVhZE9ubHlNYXN0ZXJLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUkVBRF9PTkxZX01BU1RFUl9LRVknLFxuICAgIGhlbHA6ICdSZWFkLW9ubHkga2V5LCB3aGljaCBoYXMgdGhlIHNhbWUgY2FwYWJpbGl0aWVzIGFzIE1hc3RlcktleSB3aXRob3V0IHdyaXRlcycsXG4gIH0sXG4gIHJlcXVlc3RLZXl3b3JkRGVueWxpc3Q6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUkVRVUVTVF9LRVlXT1JEX0RFTllMSVNUJyxcbiAgICBoZWxwOlxuICAgICAgJ0FuIGFycmF5IG9mIGtleXMgYW5kIHZhbHVlcyB0aGF0IGFyZSBwcm9oaWJpdGVkIGluIGRhdGFiYXNlIHJlYWQgYW5kIHdyaXRlIHJlcXVlc3RzIHRvIHByZXZlbnQgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBvbmx5IGEga2V5IChge1wia2V5XCI6XCIuLi5cIn1gKSwgb25seSBhIHZhbHVlIChge1widmFsdWVcIjpcIi4uLlwifWApIG9yIGEga2V5LXZhbHVlIHBhaXIgKGB7XCJrZXlcIjpcIi4uLlwiLFwidmFsdWVcIjpcIi4uLlwifWApLiBUaGUgc3BlY2lmaWNhdGlvbiBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGBib29sZWFuYCwgYG51bWVyaWNgIG9yIGBzdHJpbmdgLCB3aGVyZSBgc3RyaW5nYCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgcmVnZXggbm90YXRpb24uIFJlcXVlc3QgZGF0YSBpcyBkZWVwLXNjYW5uZWQgZm9yIG1hdGNoaW5nIGRlZmluaXRpb25zIHRvIGRldGVjdCBhbHNvIGFueSBuZXN0ZWQgb2NjdXJyZW5jZXMuIERlZmF1bHRzIGFyZSBwYXR0ZXJucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBpbiBtYWxpY2lvdXMgcmVxdWVzdHMuIFNldHRpbmcgdGhpcyBvcHRpb24gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXR0ZXJucy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgICBkZWZhdWx0OiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ19ic29udHlwZScsXG4gICAgICAgIHZhbHVlOiAnQ29kZScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdjb25zdHJ1Y3RvcicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdfX3Byb3RvX18nLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICByZXN0QVBJS2V5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1JFU1RfQVBJX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgUkVTVCBjYWxscycsXG4gIH0sXG4gIHJldm9rZVNlc3Npb25PblBhc3N3b3JkUmVzZXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUkVWT0tFX1NFU1NJT05fT05fUEFTU1dPUkRfUkVTRVQnLFxuICAgIGhlbHA6XG4gICAgICBcIldoZW4gYSB1c2VyIGNoYW5nZXMgdGhlaXIgcGFzc3dvcmQsIGVpdGhlciB0aHJvdWdoIHRoZSByZXNldCBwYXNzd29yZCBlbWFpbCBvciB3aGlsZSBsb2dnZWQgaW4sIGFsbCBzZXNzaW9ucyBhcmUgcmV2b2tlZCBpZiB0aGlzIGlzIHRydWUuIFNldCB0byBmYWxzZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byByZXZva2Ugc2Vzc2lvbnMuXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgc2NoZWR1bGVkUHVzaDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFRFVMRURfUFVTSCcsXG4gICAgaGVscDogJ0NvbmZpZ3VyYXRpb24gZm9yIHB1c2ggc2NoZWR1bGluZywgZGVmYXVsdHMgdG8gZmFsc2UuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgc2NoZW1hOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NDSEVNQScsXG4gICAgaGVscDogJ0RlZmluZWQgc2NoZW1hJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBzZWN1cml0eToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRUNVUklUWScsXG4gICAgaGVscDogJ1RoZSBzZWN1cml0eSBvcHRpb25zIHRvIGlkZW50aWZ5IGFuZCByZXBvcnQgd2VhayBzZWN1cml0eSBzZXR0aW5ncy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG4gIHNlcnZlckNsb3NlQ29tcGxldGU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0VSVkVSX0NMT1NFX0NPTVBMRVRFJyxcbiAgICBoZWxwOiAnQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIGNsb3NlZCcsXG4gIH0sXG4gIHNlcnZlclN0YXJ0Q29tcGxldGU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0VSVkVSX1NUQVJUX0NPTVBMRVRFJyxcbiAgICBoZWxwOiAnQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIHN0YXJ0ZWQnLFxuICB9LFxuICBzZXJ2ZXJVUkw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfVVJMJyxcbiAgICBoZWxwOiAnVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy4nLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICB9LFxuICBzZXNzaW9uTGVuZ3RoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NFU1NJT05fTEVOR1RIJyxcbiAgICBoZWxwOiAnU2Vzc2lvbiBkdXJhdGlvbiwgaW4gc2Vjb25kcywgZGVmYXVsdHMgdG8gMSB5ZWFyJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdzZXNzaW9uTGVuZ3RoJyksXG4gICAgZGVmYXVsdDogMzE1MzYwMDAsXG4gIH0sXG4gIHNpbGVudDoge1xuICAgIGVudjogJ1NJTEVOVCcsXG4gICAgaGVscDogJ0Rpc2FibGVzIGNvbnNvbGUgb3V0cHV0JyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgfSxcbiAgc3RhcnRMaXZlUXVlcnlTZXJ2ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU1RBUlRfTElWRV9RVUVSWV9TRVJWRVInLFxuICAgIGhlbHA6ICdTdGFydHMgdGhlIGxpdmVRdWVyeSBzZXJ2ZXInLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICB9LFxuICB1c2VyU2Vuc2l0aXZlRmllbGRzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1VTRVJfU0VOU0lUSVZFX0ZJRUxEUycsXG4gICAgaGVscDpcbiAgICAgICdQZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiBmaWVsZHMgaW4gdGhlIHVzZXIgdGFibGUgdGhlIHNob3VsZCBiZSByZW1vdmVkIGZvciBub24tYXV0aG9yaXplZCB1c2Vycy4gRGVwcmVjYXRlZCBAc2VlIHByb3RlY3RlZEZpZWxkcycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICB2ZXJib3NlOiB7XG4gICAgZW52OiAnVkVSQk9TRScsXG4gICAgaGVscDogJ1NldCB0aGUgbG9nZ2luZyB0byB2ZXJib3NlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgfSxcbiAgdmVyaWZ5VXNlckVtYWlsczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9WRVJJRllfVVNFUl9FTUFJTFMnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCB0byByZXF1aXJlIHVzZXJzIHRvIHZlcmlmeSB0aGVpciBlbWFpbCBhZGRyZXNzIHRvIGNvbXBsZXRlIHRoZSBzaWduLXVwIHByb2Nlc3MuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgd2ViaG9va0tleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9XRUJIT09LX0tFWScsXG4gICAgaGVscDogJ0tleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxscycsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuU2VjdXJpdHlPcHRpb25zID0ge1xuICBjaGVja0dyb3Vwczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRUNVUklUWV9DSEVDS19HUk9VUFMnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHNlY3VyaXR5IGNoZWNrIGdyb3VwcyB0byBydW4uIFRoaXMgYWxsb3dzIHRvIGFkZCBjdXN0b20gc2VjdXJpdHkgY2hlY2tzIG9yIG92ZXJyaWRlIGV4aXN0aW5nIG9uZXMuIERlZmF1bHQgYXJlIHRoZSBncm91cHMgZGVmaW5lZCBpbiBgQ2hlY2tHcm91cHMuanNgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICBlbmFibGVDaGVjazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRUNVUklUWV9FTkFCTEVfQ0hFQ0snLFxuICAgIGhlbHA6ICdJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgY2hlY2sgZm9yIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZW5hYmxlQ2hlY2tMb2c6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0VDVVJJVFlfRU5BQkxFX0NIRUNLX0xPRycsXG4gICAgaGVscDpcbiAgICAgICdJcyB0cnVlIGlmIHRoZSBzZWN1cml0eSBjaGVjayByZXBvcnQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9ncy4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIHRlbXBvcmFyaWx5IHRvIG5vdCBleHBvc2Ugd2VhayBzZWN1cml0eSBzZXR0aW5ncyBpbiBsb2dzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFnZXNPcHRpb25zID0ge1xuICBjdXN0b21Sb3V0ZXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1JPVVRFUycsXG4gICAgaGVscDogJ1RoZSBjdXN0b20gcm91dGVzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICAgIGRlZmF1bHQ6IFtdLFxuICB9LFxuICBjdXN0b21VcmxzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxTJyxcbiAgICBoZWxwOiAnVGhlIFVSTHMgdG8gdGhlIGN1c3RvbSBwYWdlcy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG4gIGVuYWJsZUxvY2FsaXphdGlvbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19FTkFCTEVfTE9DQUxJWkFUSU9OJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBwYWdlcyBzaG91bGQgYmUgbG9jYWxpemVkOyB0aGlzIGhhcyBubyBlZmZlY3Qgb24gY3VzdG9tIHBhZ2UgcmVkaXJlY3RzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVuYWJsZVJvdXRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19FTkFCTEVfUk9VVEVSJyxcbiAgICBoZWxwOlxuICAgICAgJ0lzIHRydWUgaWYgdGhlIHBhZ2VzIHJvdXRlciBzaG91bGQgYmUgZW5hYmxlZDsgdGhpcyBpcyByZXF1aXJlZCBmb3IgYW55IG9mIHRoZSBwYWdlcyBvcHRpb25zIHRvIHRha2UgZWZmZWN0LiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBmb3JjZVJlZGlyZWN0OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0ZPUkNFX1JFRElSRUNUJyxcbiAgICBoZWxwOlxuICAgICAgJ0lzIHRydWUgaWYgcmVzcG9uc2VzIHNob3VsZCBhbHdheXMgYmUgcmVkaXJlY3RzIGFuZCBuZXZlciBjb250ZW50LCBmYWxzZSBpZiB0aGUgcmVzcG9uc2UgdHlwZSBzaG91bGQgZGVwZW5kIG9uIHRoZSByZXF1ZXN0IHR5cGUgKEdFVCByZXF1ZXN0IC0+IGNvbnRlbnQgcmVzcG9uc2U7IFBPU1QgcmVxdWVzdCAtPiByZWRpcmVjdCByZXNwb25zZSkuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgbG9jYWxpemF0aW9uRmFsbGJhY2tMb2NhbGU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfTE9DQUxJWkFUSU9OX0ZBTExCQUNLX0xPQ0FMRScsXG4gICAgaGVscDpcbiAgICAgICdUaGUgZmFsbGJhY2sgbG9jYWxlIGZvciBsb2NhbGl6YXRpb24gaWYgbm8gbWF0Y2hpbmcgdHJhbnNsYXRpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHByb3ZpZGluZyB0cmFuc2xhdGlvbiByZXNvdXJjZXMgdmlhIEpTT04gZmlsZS4nLFxuICAgIGRlZmF1bHQ6ICdlbicsXG4gIH0sXG4gIGxvY2FsaXphdGlvbkpzb25QYXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0xPQ0FMSVpBVElPTl9KU09OX1BBVEgnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZSBmb3IgbG9jYWxpemF0aW9uOyB0aGUgdHJhbnNsYXRpb25zIHdpbGwgYmUgdXNlZCB0byBmaWxsIHRlbXBsYXRlIHBsYWNlaG9sZGVycyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZS4nLFxuICB9LFxuICBwYWdlc0VuZHBvaW50OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX1BBR0VTX0VORFBPSU5UJyxcbiAgICBoZWxwOiBcIlRoZSBBUEkgZW5kcG9pbnQgZm9yIHRoZSBwYWdlcy4gRGVmYXVsdCBpcyAnYXBwcycuXCIsXG4gICAgZGVmYXVsdDogJ2FwcHMnLFxuICB9LFxuICBwYWdlc1BhdGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfUEFHRVNfUEFUSCcsXG4gICAgaGVscDpcbiAgICAgIFwiVGhlIHBhdGggdG8gdGhlIHBhZ2VzIGRpcmVjdG9yeTsgdGhpcyBhbHNvIGRlZmluZXMgd2hlcmUgdGhlIHN0YXRpYyBlbmRwb2ludCAnL2FwcHMnIHBvaW50cyB0by4gRGVmYXVsdCBpcyB0aGUgJy4vcHVibGljLycgZGlyZWN0b3J5LlwiLFxuICAgIGRlZmF1bHQ6ICcuL3B1YmxpYycsXG4gIH0sXG4gIHBsYWNlaG9sZGVyczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19QTEFDRUhPTERFUlMnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHBsYWNlaG9sZGVyIGtleXMgYW5kIHZhbHVlcyB3aGljaCB3aWxsIGJlIGZpbGxlZCBpbiBwYWdlczsgdGhpcyBjYW4gYmUgYSBzaW1wbGUgb2JqZWN0IG9yIGEgY2FsbGJhY2sgZnVuY3Rpb24uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICAgIGRlZmF1bHQ6IHt9LFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLlBhZ2VzUm91dGUgPSB7XG4gIGhhbmRsZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfUk9VVEVfSEFORExFUicsXG4gICAgaGVscDogJ1RoZSByb3V0ZSBoYW5kbGVyIHRoYXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24uJyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbiAgbWV0aG9kOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX1JPVVRFX01FVEhPRCcsXG4gICAgaGVscDogXCJUaGUgcm91dGUgbWV0aG9kLCBlLmcuICdHRVQnIG9yICdQT1NUJy5cIixcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbiAgcGF0aDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19ST1VURV9QQVRIJyxcbiAgICBoZWxwOiAnVGhlIHJvdXRlIHBhdGguJyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5QYWdlc0N1c3RvbVVybHNPcHRpb25zID0ge1xuICBlbWFpbFZlcmlmaWNhdGlvbkxpbmtFeHBpcmVkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxfRU1BSUxfVkVSSUZJQ0FUSU9OX0xJTktfRVhQSVJFRCcsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBleHBpcmVkLicsXG4gIH0sXG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0ludmFsaWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9FTUFJTF9WRVJJRklDQVRJT05fTElOS19JTlZBTElEJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGludmFsaWQuJyxcbiAgfSxcbiAgZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX0VNQUlMX1ZFUklGSUNBVElPTl9TRU5EX0ZBSUwnLFxuICAgIGhlbHA6ICdUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgc2VuZCBmYWlsLicsXG4gIH0sXG4gIGVtYWlsVmVyaWZpY2F0aW9uU2VuZFN1Y2Nlc3M6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9FTUFJTF9WRVJJRklDQVRJT05fU0VORF9TVUNDRVNTJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiByZXNlbmQgbGluayAtPiBzdWNjZXNzLicsXG4gIH0sXG4gIGVtYWlsVmVyaWZpY2F0aW9uU3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX0VNQUlMX1ZFUklGSUNBVElPTl9TVUNDRVNTJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBzdWNjZXNzLicsXG4gIH0sXG4gIHBhc3N3b3JkUmVzZXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9QQVNTV09SRF9SRVNFVCcsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldC4nLFxuICB9LFxuICBwYXNzd29yZFJlc2V0TGlua0ludmFsaWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9QQVNTV09SRF9SRVNFVF9MSU5LX0lOVkFMSUQnLFxuICAgIGhlbHA6ICdUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gbGluayBpbnZhbGlkLicsXG4gIH0sXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxfUEFTU1dPUkRfUkVTRVRfU1VDQ0VTUycsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBzdWNjZXNzLicsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuQ3VzdG9tUGFnZXNPcHRpb25zID0ge1xuICBjaG9vc2VQYXNzd29yZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfQ0hPT1NFX1BBU1NXT1JEJyxcbiAgICBoZWxwOiAnY2hvb3NlIHBhc3N3b3JkIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGV4cGlyZWRWZXJpZmljYXRpb25MaW5rOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19FWFBJUkVEX1ZFUklGSUNBVElPTl9MSU5LJyxcbiAgICBoZWxwOiAnZXhwaXJlZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGgnLFxuICB9LFxuICBpbnZhbGlkTGluazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfSU5WQUxJRF9MSU5LJyxcbiAgICBoZWxwOiAnaW52YWxpZCBsaW5rIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGludmFsaWRQYXNzd29yZFJlc2V0TGluazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfSU5WQUxJRF9QQVNTV09SRF9SRVNFVF9MSU5LJyxcbiAgICBoZWxwOiAnaW52YWxpZCBwYXNzd29yZCByZXNldCBsaW5rIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGludmFsaWRWZXJpZmljYXRpb25MaW5rOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19JTlZBTElEX1ZFUklGSUNBVElPTl9MSU5LJyxcbiAgICBoZWxwOiAnaW52YWxpZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGgnLFxuICB9LFxuICBsaW5rU2VuZEZhaWw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ1VTVE9NX1BBR0VTX0xJTktfU0VORF9GQUlMJyxcbiAgICBoZWxwOiAndmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBmYWlsIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGxpbmtTZW5kU3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfTElOS19TRU5EX1NVQ0NFU1MnLFxuICAgIGhlbHA6ICd2ZXJpZmljYXRpb24gbGluayBzZW5kIHN1Y2Nlc3MgcGFnZSBwYXRoJyxcbiAgfSxcbiAgcGFyc2VGcmFtZVVSTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfUEFSU0VfRlJBTUVfVVJMJyxcbiAgICBoZWxwOiAnZm9yIG1hc2tpbmcgdXNlci1mYWNpbmcgcGFnZXMnLFxuICB9LFxuICBwYXNzd29yZFJlc2V0U3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfUEFTU1dPUkRfUkVTRVRfU1VDQ0VTUycsXG4gICAgaGVscDogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3MgcGFnZSBwYXRoJyxcbiAgfSxcbiAgdmVyaWZ5RW1haWxTdWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19WRVJJRllfRU1BSUxfU1VDQ0VTUycsXG4gICAgaGVscDogJ3ZlcmlmeSBlbWFpbCBzdWNjZXNzIHBhZ2UgcGF0aCcsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuTGl2ZVF1ZXJ5T3B0aW9ucyA9IHtcbiAgY2xhc3NOYW1lczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfQ0xBU1NOQU1FUycsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY2xhc3NOYW1lc1wiLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgfSxcbiAgcHViU3ViQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfUFVCX1NVQl9BREFQVEVSJyxcbiAgICBoZWxwOiAnTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIHJlZGlzT3B0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfUkVESVNfT1BUSU9OUycsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNVUkw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTElWRVFVRVJZX1JFRElTX1VSTCcsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkxcIixcbiAgfSxcbiAgd3NzQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfV1NTX0FEQVBURVInLFxuICAgIGhlbHA6ICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlcicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkxpdmVRdWVyeVNlcnZlck9wdGlvbnMgPSB7XG4gIGFwcElkOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfQVBQX0lEJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgYXBwSWQgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBhcHBJZC4nLFxuICB9LFxuICBjYWNoZVRpbWVvdXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9DQUNIRV9USU1FT1VUJyxcbiAgICBoZWxwOlxuICAgICAgXCJOdW1iZXIgaW4gbWlsbGlzZWNvbmRzLiBXaGVuIGNsaWVudHMgcHJvdmlkZSB0aGUgc2Vzc2lvblRva2VuIHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byBmZXRjaCBpdHMgUGFyc2VVc2VyJ3Mgb2JqZWN0SWQgZnJvbSBwYXJzZSBzZXJ2ZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBjYWNoZS4gVGhlIHZhbHVlIGRlZmluZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWNoZS4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscywgZGVmYXVsdHMgdG8gNSAqIDEwMDAgbXMgKDUgc2Vjb25kcykuXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignY2FjaGVUaW1lb3V0JyksXG4gIH0sXG4gIGtleVBhaXJzOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfS0VZX1BBSVJTJyxcbiAgICBoZWxwOlxuICAgICAgJ0EgSlNPTiBvYmplY3QgdGhhdCBzZXJ2ZXMgYXMgYSB3aGl0ZWxpc3Qgb2Yga2V5cy4gSXQgaXMgdXNlZCBmb3IgdmFsaWRhdGluZyBjbGllbnRzIHdoZW4gdGhleSB0cnkgdG8gY29ubmVjdCB0byB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIGxvZ0xldmVsOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfTE9HX0xFVkVMJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoaXMgc3RyaW5nIGRlZmluZXMgdGhlIGxvZyBsZXZlbCBvZiB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gV2Ugc3VwcG9ydCBWRVJCT1NFLCBJTkZPLCBFUlJPUiwgTk9ORSwgZGVmYXVsdHMgdG8gSU5GTy4nLFxuICB9LFxuICBtYXN0ZXJLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9NQVNURVJfS0VZJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgbWFzdGVyS2V5IGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgbWFzdGVyS2V5LicsXG4gIH0sXG4gIHBvcnQ6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9QT1JUJyxcbiAgICBoZWxwOiAnVGhlIHBvcnQgdG8gcnVuIHRoZSBMaXZlUXVlcnkgc2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigncG9ydCcpLFxuICAgIGRlZmF1bHQ6IDEzMzcsXG4gIH0sXG4gIHB1YlN1YkFkYXB0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9QVUJfU1VCX0FEQVBURVInLFxuICAgIGhlbHA6ICdMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXInLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNPcHRpb25zOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfUkVESVNfT1BUSU9OUycsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNVUkw6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9SRURJU19VUkwnLFxuICAgIGhlbHA6IFwicGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMXCIsXG4gIH0sXG4gIHNlcnZlclVSTDoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX1NFUlZFUl9VUkwnLFxuICAgIGhlbHA6XG4gICAgICAnVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBzZXJ2ZXJVUkwgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBzZXJ2ZXJVUkwuJyxcbiAgfSxcbiAgd2Vic29ja2V0VGltZW91dDoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX1dFQlNPQ0tFVF9USU1FT1VUJyxcbiAgICBoZWxwOlxuICAgICAgJ051bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBwaW5nL3BvbmcgZnJhbWVzLiBUaGUgV2ViU29ja2V0IHNlcnZlciBzZW5kcyBwaW5nL3BvbmcgZnJhbWVzIHRvIHRoZSBjbGllbnRzIHRvIGtlZXAgdGhlIFdlYlNvY2tldCBhbGl2ZS4gVGhpcyB2YWx1ZSBkZWZpbmVzIHRoZSBpbnRlcnZhbCBvZiB0aGUgcGluZy9wb25nIGZyYW1lIGZyb20gdGhlIHNlcnZlciB0byBjbGllbnRzLCBkZWZhdWx0cyB0byAxMCAqIDEwMDAgbXMgKDEwIHMpLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignd2Vic29ja2V0VGltZW91dCcpLFxuICB9LFxuICB3c3NBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfV1NTX0FEQVBURVInLFxuICAgIGhlbHA6ICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlcicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLklkZW1wb3RlbmN5T3B0aW9ucyA9IHtcbiAgcGF0aHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRVhQRVJJTUVOVEFMX0lERU1QT1RFTkNZX1BBVEhTJyxcbiAgICBoZWxwOlxuICAgICAgJ0FuIGFycmF5IG9mIHBhdGhzIGZvciB3aGljaCB0aGUgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZC4gVGhlIG1vdW50IHBhdGggbXVzdCBub3QgYmUgaW5jbHVkZWQsIGZvciBleGFtcGxlIGluc3RlYWQgb2YgYC9wYXJzZS9mdW5jdGlvbnMvbXlGdW5jdGlvbmAgc3BlY2lmaXkgYGZ1bmN0aW9ucy9teUZ1bmN0aW9uYC4gVGhlIGVudHJpZXMgYXJlIGludGVycHJldGVkIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbiwgZm9yIGV4YW1wbGUgYGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgZnVuY3Rpb25zLCBgam9icy8uKmAgbWF0Y2hlcyBhbGwgam9icywgYGNsYXNzZXMvLipgIG1hdGNoZXMgYWxsIGNsYXNzZXMsIGAuKmAgbWF0Y2hlcyBhbGwgcGF0aHMuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gICAgZGVmYXVsdDogW10sXG4gIH0sXG4gIHR0bDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FWFBFUklNRU5UQUxfSURFTVBPVEVOQ1lfVFRMJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIGEgcmVxdWVzdCByZWNvcmQgaXMgZGlzY2FyZGVkIGZyb20gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byAzMDBzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigndHRsJyksXG4gICAgZGVmYXVsdDogMzAwLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkFjY291bnRMb2Nrb3V0T3B0aW9ucyA9IHtcbiAgZHVyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQUNDT1VOVF9MT0NLT1VUX0RVUkFUSU9OJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgZHVyYXRpb24gaW4gbWludXRlcyB0aGF0IGEgbG9ja2VkLW91dCBhY2NvdW50IHJlbWFpbnMgbG9ja2VkIG91dCBiZWZvcmUgYXV0b21hdGljYWxseSBiZWNvbWluZyB1bmxvY2tlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwMDBgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignZHVyYXRpb24nKSxcbiAgfSxcbiAgdGhyZXNob2xkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FDQ09VTlRfTE9DS09VVF9USFJFU0hPTEQnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSBudW1iZXIgb2YgZmFpbGVkIHNpZ24taW4gYXR0ZW1wdHMgdGhhdCB3aWxsIGNhdXNlIGEgdXNlciBhY2NvdW50IHRvIGJlIGxvY2tlZC4gSWYgdGhlIGFjY291bnQgaXMgbG9ja2VkLiBUaGUgYWNjb3VudCB3aWxsIHVubG9jayBhZnRlciB0aGUgZHVyYXRpb24gc2V0IGluIHRoZSBgZHVyYXRpb25gIG9wdGlvbiBoYXMgcGFzc2VkIGFuZCBubyBmdXJ0aGVyIGxvZ2luIGF0dGVtcHRzIGhhdmUgYmVlbiBtYWRlLjxicj48YnI+VmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDBgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigndGhyZXNob2xkJyksXG4gIH0sXG4gIHVubG9ja09uUGFzc3dvcmRSZXNldDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BQ0NPVU5UX0xPQ0tPVVRfVU5MT0NLX09OX1BBU1NXT1JEX1JFU0VUJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0byBgdHJ1ZWAgIGlmIHRoZSBhY2NvdW50IHNob3VsZCBiZSB1bmxvY2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgcGFzc3dvcmQgcmVzZXQuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuPGJyPlJlcXVpcmVzIG9wdGlvbnMgYGR1cmF0aW9uYCBhbmQgYHRocmVzaG9sZGAgdG8gYmUgc2V0LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFzc3dvcmRQb2xpY3lPcHRpb25zID0ge1xuICBkb05vdEFsbG93VXNlcm5hbWU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX0RPX05PVF9BTExPV19VU0VSTkFNRScsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIHRvIGRpc2FsbG93IHRoZSB1c2VybmFtZSBhcyBwYXJ0IG9mIHRoZSBwYXNzd29yZC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBtYXhQYXNzd29yZEFnZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfTUFYX1BBU1NXT1JEX0FHRScsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIGEgcGFzc3dvcmQgZXhwaXJlcy4gTG9naW4gYXR0ZW1wdHMgZmFpbCBpZiB0aGUgdXNlciBkb2VzIG5vdCByZXNldCB0aGUgcGFzc3dvcmQgYmVmb3JlIGV4cGlyYXRpb24uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdtYXhQYXNzd29yZEFnZScpLFxuICB9LFxuICBtYXhQYXNzd29yZEhpc3Rvcnk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX01BWF9QQVNTV09SRF9ISVNUT1JZJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHBhc3N3b3JkIHRoYXQgd2lsbCBub3QgYmUgYWxsb3dlZCB0byBiZSBzZXQgYXMgbmV3IHBhc3N3b3JkLiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGAwYCwgbm8gcHJldmlvdXMgcGFzc3dvcmRzIHdpbGwgYmUgY29uc2lkZXJlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgPj0gYDBgIGFuZCA8PSBgMjBgLjxicj5EZWZhdWx0IGlzIGAwYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ21heFBhc3N3b3JkSGlzdG9yeScpLFxuICB9LFxuICByZXNldFRva2VuUmV1c2VJZlZhbGlkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBU1NXT1JEX1BPTElDWV9SRVNFVF9UT0tFTl9SRVVTRV9JRl9WQUxJRCcsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIGlmIGEgcGFzc3dvcmQgcmVzZXQgdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBU1NXT1JEX1BPTElDWV9SRVNFVF9UT0tFTl9WQUxJRElUWV9EVVJBVElPTicsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBwYXNzd29yZCByZXNldCB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdyZXNldFRva2VuVmFsaWRpdHlEdXJhdGlvbicpLFxuICB9LFxuICB2YWxpZGF0aW9uRXJyb3I6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX1ZBTElEQVRJT05fRVJST1InLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSBlcnJvciBtZXNzYWdlIHRvIGJlIHNlbnQuPGJyPjxicj5EZWZhdWx0IGlzIGBQYXNzd29yZCBkb2VzIG5vdCBtZWV0IHRoZSBQYXNzd29yZCBQb2xpY3kgcmVxdWlyZW1lbnRzLmAnLFxuICB9LFxuICB2YWxpZGF0b3JDYWxsYmFjazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfVkFMSURBVE9SX0NBTExCQUNLJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgcGFzc3dvcmQgdG8gYmUgYWNjZXB0ZWQuPGJyPjxicj5JZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvclBhdHRlcm5gLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuJyxcbiAgfSxcbiAgdmFsaWRhdG9yUGF0dGVybjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfVkFMSURBVE9SX1BBVFRFUk4nLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdmFsaWRhdGlvbiBwYXR0ZXJuIGEgcGFzc3dvcmQgbXVzdCBtYXRjaCB0byBiZSBhY2NlcHRlZC48YnI+PGJyPklmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yQ2FsbGJhY2tgLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuJyxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5GaWxlVXBsb2FkT3B0aW9ucyA9IHtcbiAgZW5hYmxlRm9yQW5vbnltb3VzVXNlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFX1VQTE9BRF9FTkFCTEVfRk9SX0FOT05ZTU9VU19VU0VSJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW5vbnltb3VzIHVzZXJzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0ZJTEVfVVBMT0FEX0VOQUJMRV9GT1JfQVVUSEVOVElDQVRFRF9VU0VSJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYXV0aGVudGljYXRlZCB1c2Vycy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG4gIGVuYWJsZUZvclB1YmxpYzoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFX1VQTE9BRF9FTkFCTEVfRk9SX1BVQkxJQycsXG4gICAgaGVscDogJ0lzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuRGF0YWJhc2VPcHRpb25zID0ge1xuICBlbmFibGVTY2hlbWFIb29rczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9EQVRBQkFTRV9FTkFCTEVfU0NIRU1BX0hPT0tTJyxcbiAgICBoZWxwOlxuICAgICAgJ0VuYWJsZXMgZGF0YWJhc2UgcmVhbC10aW1lIGhvb2tzIHRvIHVwZGF0ZSBzaW5nbGUgc2NoZW1hIGNhY2hlLiBTZXQgdG8gYHRydWVgIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIGNhdXNlIGEgc2NoZW1hIGNoYW5nZSB0byBub3QgcHJvcGFnYXRlIHRvIGFsbCBpbnN0YW5jZXMgYW5kIHJlLXN5bmNpbmcgd2lsbCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBpbnN0YW5jZXMgcmVzdGFydC4gVG8gdXNlIHRoaXMgZmVhdHVyZSB3aXRoIE1vbmdvREIsIGEgcmVwbGljYSBzZXQgY2x1c3RlciB3aXRoIFtjaGFuZ2Ugc3RyZWFtXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL2NoYW5nZVN0cmVhbXMvI2F2YWlsYWJpbGl0eSkgc3VwcG9ydCBpcyByZXF1aXJlZC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkF1dGhBZGFwdGVyID0ge1xuICBlbmFibGVkOiB7XG4gICAgaGVscDogJ0lzIGB0cnVlYCBpZiB0aGUgYXV0aCBhZGFwdGVyIGlzIGVuYWJsZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbn07XG4iXX0=
@@ -58,7 +58,7 @@
58
58
  * @property {String} logLevel Sets the level for logs
59
59
  * @property {String} logsFolder Folder for the logs (defaults to './logs'); set to null to disable file based logging
60
60
  * @property {String} masterKey Your Parse Master Key
61
- * @property {String[]} masterKeyIps Restrict masterKey to be used by only these ips, defaults to [] (allow all ips)
61
+ * @property {String[]} masterKeyIps (Optional) Restricts the use of master key permissions to a list of IP addresses.<br><br>This option accepts a list of single IP addresses, for example:<br>`['10.0.0.1', '10.0.0.2']`<br><br>You can also use CIDR notation to specify an IP address range, for example:<br>`['10.0.1.0/24']`<br><br>Special cases:<br>- Setting an empty array `[]` means that `masterKey`` cannot be used even in Parse Server Cloud Code.<br>- Setting `['0.0.0.0/0']` means disabling the filter and the master key can be used from any IP address.<br><br>To connect Parse Dashboard from a different server requires to add the IP address of the server that hosts Parse Dashboard because Parse Dashboard uses the master key.<br><br>Defaults to `['127.0.0.1']` which means that only `localhost`, the server itself, is allowed to use the master key.
62
62
  * @property {Number} maxLimit Max value for limit option on queries, defaults to unlimited
63
63
  * @property {Number|String} maxLogFiles Maximum number of logs to keep. If not set, no logs will be removed. This can be a number of files or number of days. If using days, add 'd' as the suffix. (default: null)
64
64
  * @property {String} maxUploadSize Max file size for uploads, defaults to 20mb
@@ -216,4 +216,4 @@
216
216
  * @property {Boolean} enabled Is `true` if the auth adapter is enabled, `false` otherwise.
217
217
  */
218
218
  "use strict";
219
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL2RvY3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJmYWNlIFNjaGVtYU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGFmdGVyTWlncmF0aW9uIEV4ZWN1dGUgYSBjYWxsYmFjayBhZnRlciBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gYmVmb3JlTWlncmF0aW9uIEV4ZWN1dGUgYSBjYWxsYmFjayBiZWZvcmUgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7QW55fSBkZWZpbml0aW9ucyBSZXN0IHJlcHJlc2VudGF0aW9uIG9uIFBhcnNlLlNjaGVtYSBodHRwczovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcmVzdC9ndWlkZS8jYWRkaW5nLWEtc2NoZW1hXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGRlbGV0ZUV4dHJhRmllbGRzIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBkZWxldGUgYW55IGZpZWxkcyBub3QgZGVmaW5lZCBpbiBhIHNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZHVyaW5nIGRldmVsb3BtZW50LlxuICogQHByb3BlcnR5IHtCb29sZWFufSBsb2NrU2NoZW1hcyBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciB3aWxsIHJlamVjdCBhbnkgYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBzY2hlbWEgd2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nLlxuICogQHByb3BlcnR5IHtCb29sZWFufSByZWNyZWF0ZU1vZGlmaWVkRmllbGRzIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCByZWNyZWF0ZSBhbnkgZmllbGRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGRhdGFiYXNlIHNjaGVtYSBhbmQgdGhlc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHN0cmljdCBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgZXhpdCBpZiBzY2hlbWEgdXBkYXRlIGZhaWwuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9uc1xuICogQHByb3BlcnR5IHtBY2NvdW50TG9ja291dE9wdGlvbnN9IGFjY291bnRMb2Nrb3V0IFRoZSBhY2NvdW50IGxvY2tvdXQgcG9saWN5IGZvciBmYWlsZWQgbG9naW4gYXR0ZW1wdHMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGFsbG93Q2xpZW50Q2xhc3NDcmVhdGlvbiBFbmFibGUgKG9yIGRpc2FibGUpIGNsaWVudCBjbGFzcyBjcmVhdGlvbiwgZGVmYXVsdHMgdG8gdHJ1ZVxuICogQHByb3BlcnR5IHtCb29sZWFufSBhbGxvd0N1c3RvbU9iamVjdElkIEVuYWJsZSAob3IgZGlzYWJsZSkgY3VzdG9tIG9iamVjdElkXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGFsbG93RXhwaXJlZEF1dGhEYXRhVG9rZW4gQWxsb3cgYSB1c2VyIHRvIGxvZyBpbiBldmVuIGlmIHRoZSAzcmQgcGFydHkgYXV0aGVudGljYXRpb24gdG9rZW4gdGhhdCB3YXMgdXNlZCB0byBzaWduIGluIHRvIHRoZWlyIGFjY291bnQgaGFzIGV4cGlyZWQuIElmIHRoaXMgaXMgc2V0IHRvIGBmYWxzZWAsIHRoZW4gdGhlIHRva2VuIHdpbGwgYmUgdmFsaWRhdGVkIGV2ZXJ5IHRpbWUgdGhlIHVzZXIgc2lnbnMgaW4gdG8gdGhlaXIgYWNjb3VudC4gVGhpcyByZWZlcnMgdG8gdGhlIHRva2VuIHRoYXQgaXMgc3RvcmVkIGluIHRoZSBgX1VzZXIuYXV0aERhdGFgIGZpZWxkLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gKiBAcHJvcGVydHkge1N0cmluZ1tdfSBhbGxvd0hlYWRlcnMgQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVyc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGFsbG93T3JpZ2luIFNldHMgdGhlIG9yaWdpbiB0byBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5cbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxBbmFseXRpY3NBZGFwdGVyPn0gYW5hbHl0aWNzQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGFuYWx5dGljc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGFwcElkIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhcHBOYW1lIFNldHMgdGhlIGFwcCBuYW1lXG4gKiBAcHJvcGVydHkge0F1dGhBZGFwdGVyW119IGF1dGggQ29uZmlndXJhdGlvbiBmb3IgeW91ciBhdXRoZW50aWNhdGlvbiBwcm92aWRlcnMsIGFzIHN0cmluZ2lmaWVkIEpTT04uIFNlZSBodHRwOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvZ3VpZGUvI29hdXRoLWFuZC0zcmQtcGFydHktYXV0aGVudGljYXRpb25cbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxDYWNoZUFkYXB0ZXI+fSBjYWNoZUFkYXB0ZXIgQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBjYWNoZVxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGNhY2hlTWF4U2l6ZSBTZXRzIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUsIGRlZmF1bHRzIHRvIDEwMDAwXG4gKiBAcHJvcGVydHkge051bWJlcn0gY2FjaGVUVEwgU2V0cyB0aGUgVFRMIGZvciB0aGUgaW4gbWVtb3J5IGNhY2hlIChpbiBtcyksIGRlZmF1bHRzIHRvIDUwMDAgKDUgc2Vjb25kcylcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjbGllbnRLZXkgS2V5IGZvciBpT1MsIE1hY09TLCB0dk9TIGNsaWVudHNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjbG91ZCBGdWxsIHBhdGggdG8geW91ciBjbG91ZCBjb2RlIG1haW4uanNcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfEJvb2xlYW59IGNsdXN0ZXIgUnVuIHdpdGggY2x1c3Rlciwgb3B0aW9uYWxseSBzZXQgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgZGVmYXVsdCB0byBvcy5jcHVzKCkubGVuZ3RoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gY29sbGVjdGlvblByZWZpeCBBIGNvbGxlY3Rpb24gcHJlZml4IGZvciB0aGUgY2xhc3Nlc1xuICogQHByb3BlcnR5IHtDdXN0b21QYWdlc09wdGlvbnN9IGN1c3RvbVBhZ2VzIGN1c3RvbSBwYWdlcyBmb3IgcGFzc3dvcmQgdmFsaWRhdGlvbiBhbmQgcmVzZXRcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxTdG9yYWdlQWRhcHRlcj59IGRhdGFiYXNlQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGRhdGFiYXNlOyBhbnkgb3B0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBkZXNjcmliZWQgaGVyZSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBkYXRhYmFzZSBjbGllbnQuXG4gKiBAcHJvcGVydHkge0RhdGFiYXNlT3B0aW9uc30gZGF0YWJhc2VPcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgZGF0YWJhc2UgY2xpZW50XG4gKiBAcHJvcGVydHkge1N0cmluZ30gZGF0YWJhc2VVUkkgVGhlIGZ1bGwgVVJJIHRvIHlvdXIgZGF0YWJhc2UuIFN1cHBvcnRlZCBkYXRhYmFzZXMgYXJlIG1vbmdvZGIgb3IgcG9zdGdyZXMuXG4gKiBAcHJvcGVydHkge051bWJlcn0gZGVmYXVsdExpbWl0IERlZmF1bHQgdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byBgMTAwYC5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZGlyZWN0QWNjZXNzIFNldCB0byBgdHJ1ZWAgaWYgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIHNob3VsZCBiZSByb3V0ZWQgdG8gUGFyc2UgU2VydmVyIGRpcmVjdGx5IGluc3RlYWQgb2YgdmlhIHRoZSBIVFRQIGludGVyZmFjZS4gRGVmYXVsdCBpcyBgZmFsc2VgLjxicj48YnI+SWYgc2V0IHRvIGBmYWxzZWAgdGhlbiBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIHNhbWUgTm9kZS5qcyBlbnZpcm9ubWVudCBhcyBQYXJzZSBTZXJ2ZXIgYXJlIGV4ZWN1dGVkIGFzIEhUVFAgcmVxdWVzdHMgc2VudCB0byBQYXJzZSBTZXJ2ZXIgdmlhIHRoZSBgc2VydmVyVVJMYC4gRm9yIGV4YW1wbGUsIGEgYFBhcnNlLlF1ZXJ5YCBpbiBDbG91ZCBDb2RlIGlzIGNhbGxpbmcgUGFyc2UgU2VydmVyIHZpYSBhIEhUVFAgcmVxdWVzdC4gVGhlIHNlcnZlciBpcyBlc3NlbnRpYWxseSBtYWtpbmcgYSBIVFRQIHJlcXVlc3QgdG8gaXRzZWxmLCB1bm5lY2Vzc2FyaWx5IHVzaW5nIG5ldHdvcmsgcmVzb3VyY2VzIHN1Y2ggYXMgbmV0d29yayBwb3J0cy48YnI+PGJyPuKaoO+4jyBJbiBlbnZpcm9ubWVudHMgd2hlcmUgbXVsdGlwbGUgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBydW4gYmVoaW5kIGEgbG9hZCBiYWxhbmNlciBhbmQgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBjdXJyZW50IE5vZGUuanMgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHJvdXRlZCB2aWEgdGhlIGxvYWQgYmFsYW5jZXIgYW5kIGRpc3RyaWJ1dGVkIGFzIEhUVFAgcmVxdWVzdHMgYW1vbmcgYWxsIGluc3RhbmNlcyB2aWEgdGhlIGBzZXJ2ZXJVUkxgLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBkb3ROZXRLZXkgS2V5IGZvciBVbml0eSBhbmQgLk5ldCBTREtcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxNYWlsQWRhcHRlcj59IGVtYWlsQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgZW1haWwgc2VuZGluZ1xuICogQHByb3BlcnR5IHtCb29sZWFufSBlbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkIFNldCB0byBgdHJ1ZWAgaWYgYSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGVtYWlsVmVyaWZ5VG9rZW5WYWxpZGl0eUR1cmF0aW9uIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUFub255bW91c1VzZXJzIEVuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUV4cHJlc3NFcnJvckhhbmRsZXIgRW5hYmxlcyB0aGUgZGVmYXVsdCBleHByZXNzIGVycm9yIGhhbmRsZXIgZm9yIGFsbCBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbmNyeXB0aW9uS2V5IEtleSBmb3IgZW5jcnlwdGluZyB5b3VyIGZpbGVzXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuZm9yY2VQcml2YXRlVXNlcnMgU2V0IHRvIHRydWUgaWYgbmV3IHVzZXJzIHNob3VsZCBiZSBjcmVhdGVkIHdpdGhvdXQgcHVibGljIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZXhwaXJlSW5hY3RpdmVTZXNzaW9ucyBTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGZpbGVLZXkgS2V5IGZvciB5b3VyIGZpbGVzXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8RmlsZXNBZGFwdGVyPn0gZmlsZXNBZGFwdGVyIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZmlsZXMgc3ViLXN5c3RlbVxuICogQHByb3BlcnR5IHtGaWxlVXBsb2FkT3B0aW9uc30gZmlsZVVwbG9hZCBPcHRpb25zIGZvciBmaWxlIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBncmFwaFFMUGF0aCBNb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBlbmRwb2ludCwgZGVmYXVsdHMgdG8gL2dyYXBocWxcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBncmFwaFFMU2NoZW1hIEZ1bGwgcGF0aCB0byB5b3VyIEdyYXBoUUwgY3VzdG9tIHNjaGVtYS5ncmFwaHFsIGZpbGVcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBob3N0IFRoZSBob3N0IHRvIHNlcnZlIFBhcnNlU2VydmVyIG9uLCBkZWZhdWx0cyB0byAwLjAuMC4wXG4gKiBAcHJvcGVydHkge0lkZW1wb3RlbmN5T3B0aW9uc30gaWRlbXBvdGVuY3lPcHRpb25zIE9wdGlvbnMgZm9yIHJlcXVlc3QgaWRlbXBvdGVuY3kgdG8gZGVkdXBsaWNhdGUgaWRlbnRpY2FsIHJlcXVlc3RzIHRoYXQgbWF5IGJlIGNhdXNlZCBieSBuZXR3b3JrIGlzc3Vlcy4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uXG4gKiBAcHJvcGVydHkge1N0cmluZ30gamF2YXNjcmlwdEtleSBLZXkgZm9yIHRoZSBKYXZhc2NyaXB0IFNES1xuICogQHByb3BlcnR5IHtCb29sZWFufSBqc29uTG9ncyBMb2cgYXMgc3RydWN0dXJlZCBKU09OIG9iamVjdHNcbiAqIEBwcm9wZXJ0eSB7TGl2ZVF1ZXJ5T3B0aW9uc30gbGl2ZVF1ZXJ5IHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSBjb25maWd1cmF0aW9uIG9iamVjdFxuICogQHByb3BlcnR5IHtMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zfSBsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIExpdmUgcXVlcnkgc2VydmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAod2lsbCBzdGFydCB0aGUgbGl2ZVF1ZXJ5IHNlcnZlcilcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxMb2dnZXJBZGFwdGVyPn0gbG9nZ2VyQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGxvZ2dpbmcgc3ViLXN5c3RlbVxuICogQHByb3BlcnR5IHtTdHJpbmd9IGxvZ0xldmVsIFNldHMgdGhlIGxldmVsIGZvciBsb2dzXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbG9nc0ZvbGRlciBGb2xkZXIgZm9yIHRoZSBsb2dzIChkZWZhdWx0cyB0byAnLi9sb2dzJyk7IHNldCB0byBudWxsIHRvIGRpc2FibGUgZmlsZSBiYXNlZCBsb2dnaW5nXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbWFzdGVyS2V5IFlvdXIgUGFyc2UgTWFzdGVyIEtleVxuICogQHByb3BlcnR5IHtTdHJpbmdbXX0gbWFzdGVyS2V5SXBzIFJlc3RyaWN0IG1hc3RlcktleSB0byBiZSB1c2VkIGJ5IG9ubHkgdGhlc2UgaXBzLCBkZWZhdWx0cyB0byBbXSAoYWxsb3cgYWxsIGlwcylcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBtYXhMaW1pdCBNYXggdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byB1bmxpbWl0ZWRcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfFN0cmluZ30gbWF4TG9nRmlsZXMgTWF4aW11bSBudW1iZXIgb2YgbG9ncyB0byBrZWVwLiBJZiBub3Qgc2V0LCBubyBsb2dzIHdpbGwgYmUgcmVtb3ZlZC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2YgZmlsZXMgb3IgbnVtYmVyIG9mIGRheXMuIElmIHVzaW5nIGRheXMsIGFkZCAnZCcgYXMgdGhlIHN1ZmZpeC4gKGRlZmF1bHQ6IG51bGwpXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbWF4VXBsb2FkU2l6ZSBNYXggZmlsZSBzaXplIGZvciB1cGxvYWRzLCBkZWZhdWx0cyB0byAyMG1iXG4gKiBAcHJvcGVydHkge1VuaW9ufSBtaWRkbGV3YXJlIG1pZGRsZXdhcmUgZm9yIGV4cHJlc3Mgc2VydmVyLCBjYW4gYmUgc3RyaW5nIG9yIGZ1bmN0aW9uXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IG1vdW50R3JhcGhRTCBNb3VudHMgdGhlIEdyYXBoUUwgZW5kcG9pbnRcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBtb3VudFBhdGggTW91bnQgcGF0aCBmb3IgdGhlIHNlcnZlciwgZGVmYXVsdHMgdG8gL3BhcnNlXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IG1vdW50UGxheWdyb3VuZCBNb3VudHMgdGhlIEdyYXBoUUwgUGxheWdyb3VuZCAtIG5ldmVyIHVzZSB0aGlzIG9wdGlvbiBpbiBwcm9kdWN0aW9uXG4gKiBAcHJvcGVydHkge051bWJlcn0gb2JqZWN0SWRTaXplIFNldHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGdlbmVyYXRlZCBvYmplY3QgaWQncywgZGVmYXVsdCAxMFxuICogQHByb3BlcnR5IHtQYWdlc09wdGlvbnN9IHBhZ2VzIFRoZSBvcHRpb25zIGZvciBwYWdlcyBzdWNoIGFzIHBhc3N3b3JkIHJlc2V0IGFuZCBlbWFpbCB2ZXJpZmljYXRpb24uIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLlxuICogQHByb3BlcnR5IHtQYXNzd29yZFBvbGljeU9wdGlvbnN9IHBhc3N3b3JkUG9saWN5IFRoZSBwYXNzd29yZCBwb2xpY3kgZm9yIGVuZm9yY2luZyBwYXNzd29yZCByZWxhdGVkIHJ1bGVzLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBsYXlncm91bmRQYXRoIE1vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIFBsYXlncm91bmQsIGRlZmF1bHRzIHRvIC9wbGF5Z3JvdW5kXG4gKiBAcHJvcGVydHkge051bWJlcn0gcG9ydCBUaGUgcG9ydCB0byBydW4gdGhlIFBhcnNlU2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LlxuICogQHByb3BlcnR5IHtCb29sZWFufSBwcmVzZXJ2ZUZpbGVOYW1lIEVuYWJsZSAob3IgZGlzYWJsZSkgdGhlIGFkZGl0aW9uIG9mIGEgdW5pcXVlIGhhc2ggdG8gdGhlIGZpbGUgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbCBTZXQgdG8gYHRydWVgIHRvIHByZXZlbnQgYSB1c2VyIGZyb20gbG9nZ2luZyBpbiBpZiB0aGUgZW1haWwgaGFzIG5vdCB5ZXQgYmVlbiB2ZXJpZmllZCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICogQHByb3BlcnR5IHtQcm90ZWN0ZWRGaWVsZHN9IHByb3RlY3RlZEZpZWxkcyBQcm90ZWN0ZWQgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQgd2l0aCBleHRyYSBzZWN1cml0eSB3aGVuIGZldGNoaW5nIGRldGFpbHMuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcHVibGljU2VydmVyVVJMIFB1YmxpYyBVUkwgdG8geW91ciBwYXJzZSBzZXJ2ZXIgd2l0aCBodHRwOi8vIG9yIGh0dHBzOi8vLlxuICogQHByb3BlcnR5IHtBbnl9IHB1c2ggQ29uZmlndXJhdGlvbiBmb3IgcHVzaCwgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jcHVzaC1ub3RpZmljYXRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcmVhZE9ubHlNYXN0ZXJLZXkgUmVhZC1vbmx5IGtleSwgd2hpY2ggaGFzIHRoZSBzYW1lIGNhcGFiaWxpdGllcyBhcyBNYXN0ZXJLZXkgd2l0aG91dCB3cml0ZXNcbiAqIEBwcm9wZXJ0eSB7UmVxdWVzdEtleXdvcmREZW55bGlzdFtdfSByZXF1ZXN0S2V5d29yZERlbnlsaXN0IEFuIGFycmF5IG9mIGtleXMgYW5kIHZhbHVlcyB0aGF0IGFyZSBwcm9oaWJpdGVkIGluIGRhdGFiYXNlIHJlYWQgYW5kIHdyaXRlIHJlcXVlc3RzIHRvIHByZXZlbnQgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBvbmx5IGEga2V5IChge1wia2V5XCI6XCIuLi5cIn1gKSwgb25seSBhIHZhbHVlIChge1widmFsdWVcIjpcIi4uLlwifWApIG9yIGEga2V5LXZhbHVlIHBhaXIgKGB7XCJrZXlcIjpcIi4uLlwiLFwidmFsdWVcIjpcIi4uLlwifWApLiBUaGUgc3BlY2lmaWNhdGlvbiBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGBib29sZWFuYCwgYG51bWVyaWNgIG9yIGBzdHJpbmdgLCB3aGVyZSBgc3RyaW5nYCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgcmVnZXggbm90YXRpb24uIFJlcXVlc3QgZGF0YSBpcyBkZWVwLXNjYW5uZWQgZm9yIG1hdGNoaW5nIGRlZmluaXRpb25zIHRvIGRldGVjdCBhbHNvIGFueSBuZXN0ZWQgb2NjdXJyZW5jZXMuIERlZmF1bHRzIGFyZSBwYXR0ZXJucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBpbiBtYWxpY2lvdXMgcmVxdWVzdHMuIFNldHRpbmcgdGhpcyBvcHRpb24gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXR0ZXJucy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSByZXN0QVBJS2V5IEtleSBmb3IgUkVTVCBjYWxsc1xuICogQHByb3BlcnR5IHtCb29sZWFufSByZXZva2VTZXNzaW9uT25QYXNzd29yZFJlc2V0IFdoZW4gYSB1c2VyIGNoYW5nZXMgdGhlaXIgcGFzc3dvcmQsIGVpdGhlciB0aHJvdWdoIHRoZSByZXNldCBwYXNzd29yZCBlbWFpbCBvciB3aGlsZSBsb2dnZWQgaW4sIGFsbCBzZXNzaW9ucyBhcmUgcmV2b2tlZCBpZiB0aGlzIGlzIHRydWUuIFNldCB0byBmYWxzZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byByZXZva2Ugc2Vzc2lvbnMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHNjaGVkdWxlZFB1c2ggQ29uZmlndXJhdGlvbiBmb3IgcHVzaCBzY2hlZHVsaW5nLCBkZWZhdWx0cyB0byBmYWxzZS5cbiAqIEBwcm9wZXJ0eSB7U2NoZW1hT3B0aW9uc30gc2NoZW1hIERlZmluZWQgc2NoZW1hXG4gKiBAcHJvcGVydHkge1NlY3VyaXR5T3B0aW9uc30gc2VjdXJpdHkgVGhlIHNlY3VyaXR5IG9wdGlvbnMgdG8gaWRlbnRpZnkgYW5kIHJlcG9ydCB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gc2VydmVyQ2xvc2VDb21wbGV0ZSBDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgY2xvc2VkXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBzZXJ2ZXJTdGFydENvbXBsZXRlIENhbGxiYWNrIHdoZW4gc2VydmVyIGhhcyBzdGFydGVkXG4gKiBAcHJvcGVydHkge1N0cmluZ30gc2VydmVyVVJMIFVSTCB0byB5b3VyIHBhcnNlIHNlcnZlciB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8uXG4gKiBAcHJvcGVydHkge051bWJlcn0gc2Vzc2lvbkxlbmd0aCBTZXNzaW9uIGR1cmF0aW9uLCBpbiBzZWNvbmRzLCBkZWZhdWx0cyB0byAxIHllYXJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gc2lsZW50IERpc2FibGVzIGNvbnNvbGUgb3V0cHV0XG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHN0YXJ0TGl2ZVF1ZXJ5U2VydmVyIFN0YXJ0cyB0aGUgbGl2ZVF1ZXJ5IHNlcnZlclxuICogQHByb3BlcnR5IHtTdHJpbmdbXX0gdXNlclNlbnNpdGl2ZUZpZWxkcyBQZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiBmaWVsZHMgaW4gdGhlIHVzZXIgdGFibGUgdGhlIHNob3VsZCBiZSByZW1vdmVkIGZvciBub24tYXV0aG9yaXplZCB1c2Vycy4gRGVwcmVjYXRlZCBAc2VlIHByb3RlY3RlZEZpZWxkc1xuICogQHByb3BlcnR5IHtCb29sZWFufSB2ZXJib3NlIFNldCB0aGUgbG9nZ2luZyB0byB2ZXJib3NlXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHZlcmlmeVVzZXJFbWFpbHMgU2V0IHRvIGB0cnVlYCB0byByZXF1aXJlIHVzZXJzIHRvIHZlcmlmeSB0aGVpciBlbWFpbCBhZGRyZXNzIHRvIGNvbXBsZXRlIHRoZSBzaWduLXVwIHByb2Nlc3MuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gd2ViaG9va0tleSBLZXkgc2VudCB3aXRoIG91dGdvaW5nIHdlYmhvb2sgY2FsbHNcbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgU2VjdXJpdHlPcHRpb25zXG4gKiBAcHJvcGVydHkge0NoZWNrR3JvdXBbXX0gY2hlY2tHcm91cHMgVGhlIHNlY3VyaXR5IGNoZWNrIGdyb3VwcyB0byBydW4uIFRoaXMgYWxsb3dzIHRvIGFkZCBjdXN0b20gc2VjdXJpdHkgY2hlY2tzIG9yIG92ZXJyaWRlIGV4aXN0aW5nIG9uZXMuIERlZmF1bHQgYXJlIHRoZSBncm91cHMgZGVmaW5lZCBpbiBgQ2hlY2tHcm91cHMuanNgLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVDaGVjayBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgY2hlY2sgZm9yIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUNoZWNrTG9nIElzIHRydWUgaWYgdGhlIHNlY3VyaXR5IGNoZWNrIHJlcG9ydCBzaG91bGQgYmUgd3JpdHRlbiB0byBsb2dzLiBUaGlzIHNob3VsZCBvbmx5IGJlIGVuYWJsZWQgdGVtcG9yYXJpbHkgdG8gbm90IGV4cG9zZSB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzIGluIGxvZ3MuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIFBhZ2VzT3B0aW9uc1xuICogQHByb3BlcnR5IHtQYWdlc1JvdXRlW119IGN1c3RvbVJvdXRlcyBUaGUgY3VzdG9tIHJvdXRlcy5cbiAqIEBwcm9wZXJ0eSB7UGFnZXNDdXN0b21VcmxzT3B0aW9uc30gY3VzdG9tVXJscyBUaGUgVVJMcyB0byB0aGUgY3VzdG9tIHBhZ2VzLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVMb2NhbGl6YXRpb24gSXMgdHJ1ZSBpZiBwYWdlcyBzaG91bGQgYmUgbG9jYWxpemVkOyB0aGlzIGhhcyBubyBlZmZlY3Qgb24gY3VzdG9tIHBhZ2UgcmVkaXJlY3RzLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVSb3V0ZXIgSXMgdHJ1ZSBpZiB0aGUgcGFnZXMgcm91dGVyIHNob3VsZCBiZSBlbmFibGVkOyB0aGlzIGlzIHJlcXVpcmVkIGZvciBhbnkgb2YgdGhlIHBhZ2VzIG9wdGlvbnMgdG8gdGFrZSBlZmZlY3QuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBmb3JjZVJlZGlyZWN0IElzIHRydWUgaWYgcmVzcG9uc2VzIHNob3VsZCBhbHdheXMgYmUgcmVkaXJlY3RzIGFuZCBuZXZlciBjb250ZW50LCBmYWxzZSBpZiB0aGUgcmVzcG9uc2UgdHlwZSBzaG91bGQgZGVwZW5kIG9uIHRoZSByZXF1ZXN0IHR5cGUgKEdFVCByZXF1ZXN0IC0+IGNvbnRlbnQgcmVzcG9uc2U7IFBPU1QgcmVxdWVzdCAtPiByZWRpcmVjdCByZXNwb25zZSkuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbG9jYWxpemF0aW9uRmFsbGJhY2tMb2NhbGUgVGhlIGZhbGxiYWNrIGxvY2FsZSBmb3IgbG9jYWxpemF0aW9uIGlmIG5vIG1hdGNoaW5nIHRyYW5zbGF0aW9uIGlzIHByb3ZpZGVkIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgd2hlbiBwcm92aWRpbmcgdHJhbnNsYXRpb24gcmVzb3VyY2VzIHZpYSBKU09OIGZpbGUuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbG9jYWxpemF0aW9uSnNvblBhdGggVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZSBmb3IgbG9jYWxpemF0aW9uOyB0aGUgdHJhbnNsYXRpb25zIHdpbGwgYmUgdXNlZCB0byBmaWxsIHRlbXBsYXRlIHBsYWNlaG9sZGVycyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZS5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYWdlc0VuZHBvaW50IFRoZSBBUEkgZW5kcG9pbnQgZm9yIHRoZSBwYWdlcy4gRGVmYXVsdCBpcyAnYXBwcycuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGFnZXNQYXRoIFRoZSBwYXRoIHRvIHRoZSBwYWdlcyBkaXJlY3Rvcnk7IHRoaXMgYWxzbyBkZWZpbmVzIHdoZXJlIHRoZSBzdGF0aWMgZW5kcG9pbnQgJy9hcHBzJyBwb2ludHMgdG8uIERlZmF1bHQgaXMgdGhlICcuL3B1YmxpYy8nIGRpcmVjdG9yeS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBwbGFjZWhvbGRlcnMgVGhlIHBsYWNlaG9sZGVyIGtleXMgYW5kIHZhbHVlcyB3aGljaCB3aWxsIGJlIGZpbGxlZCBpbiBwYWdlczsgdGhpcyBjYW4gYmUgYSBzaW1wbGUgb2JqZWN0IG9yIGEgY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIFBhZ2VzUm91dGVcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGhhbmRsZXIgVGhlIHJvdXRlIGhhbmRsZXIgdGhhdCBpcyBhbiBhc3luYyBmdW5jdGlvbi5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBtZXRob2QgVGhlIHJvdXRlIG1ldGhvZCwgZS5nLiAnR0VUJyBvciAnUE9TVCcuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGF0aCBUaGUgcm91dGUgcGF0aC5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgUGFnZXNDdXN0b21VcmxzT3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGVtYWlsVmVyaWZpY2F0aW9uTGlua0V4cGlyZWQgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGV4cGlyZWQuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZW1haWxWZXJpZmljYXRpb25MaW5rSW52YWxpZCBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgaW52YWxpZC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbWFpbFZlcmlmaWNhdGlvblNlbmRGYWlsIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBzZW5kIGZhaWwuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZW1haWxWZXJpZmljYXRpb25TZW5kU3VjY2VzcyBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHJlc2VuZCBsaW5rIC0+IHN1Y2Nlc3MuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZW1haWxWZXJpZmljYXRpb25TdWNjZXNzIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gc3VjY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYXNzd29yZFJlc2V0IFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYXNzd29yZFJlc2V0TGlua0ludmFsaWQgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0IC0+IGxpbmsgaW52YWxpZC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYXNzd29yZFJlc2V0U3VjY2VzcyBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gc3VjY2Vzcy5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgQ3VzdG9tUGFnZXNPcHRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ30gY2hvb3NlUGFzc3dvcmQgY2hvb3NlIHBhc3N3b3JkIHBhZ2UgcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGV4cGlyZWRWZXJpZmljYXRpb25MaW5rIGV4cGlyZWQgdmVyaWZpY2F0aW9uIGxpbmsgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gaW52YWxpZExpbmsgaW52YWxpZCBsaW5rIHBhZ2UgcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGludmFsaWRQYXNzd29yZFJlc2V0TGluayBpbnZhbGlkIHBhc3N3b3JkIHJlc2V0IGxpbmsgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gaW52YWxpZFZlcmlmaWNhdGlvbkxpbmsgaW52YWxpZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBsaW5rU2VuZEZhaWwgdmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBmYWlsIHBhZ2UgcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGxpbmtTZW5kU3VjY2VzcyB2ZXJpZmljYXRpb24gbGluayBzZW5kIHN1Y2Nlc3MgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGFyc2VGcmFtZVVSTCBmb3IgbWFza2luZyB1c2VyLWZhY2luZyBwYWdlc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhc3N3b3JkUmVzZXRTdWNjZXNzIHBhc3N3b3JkIHJlc2V0IHN1Y2Nlc3MgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gdmVyaWZ5RW1haWxTdWNjZXNzIHZlcmlmeSBlbWFpbCBzdWNjZXNzIHBhZ2UgcGF0aFxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBMaXZlUXVlcnlPcHRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ1tdfSBjbGFzc05hbWVzIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSBjbGFzc05hbWVzXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8UHViU3ViQWRhcHRlcj59IHB1YlN1YkFkYXB0ZXIgTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyXG4gKiBAcHJvcGVydHkge0FueX0gcmVkaXNPcHRpb25zIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSByZWRpc1VSTCBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkxcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxXU1NBZGFwdGVyPn0gd3NzQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlclxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ30gYXBwSWQgVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBhcHBJZCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIGFwcElkLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGNhY2hlVGltZW91dCBOdW1iZXIgaW4gbWlsbGlzZWNvbmRzLiBXaGVuIGNsaWVudHMgcHJvdmlkZSB0aGUgc2Vzc2lvblRva2VuIHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byBmZXRjaCBpdHMgUGFyc2VVc2VyJ3Mgb2JqZWN0SWQgZnJvbSBwYXJzZSBzZXJ2ZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBjYWNoZS4gVGhlIHZhbHVlIGRlZmluZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWNoZS4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscywgZGVmYXVsdHMgdG8gNSAqIDEwMDAgbXMgKDUgc2Vjb25kcykuXG4gKiBAcHJvcGVydHkge0FueX0ga2V5UGFpcnMgQSBKU09OIG9iamVjdCB0aGF0IHNlcnZlcyBhcyBhIHdoaXRlbGlzdCBvZiBrZXlzLiBJdCBpcyB1c2VkIGZvciB2YWxpZGF0aW5nIGNsaWVudHMgd2hlbiB0aGV5IHRyeSB0byBjb25uZWN0IHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGxvZ0xldmVsIFRoaXMgc3RyaW5nIGRlZmluZXMgdGhlIGxvZyBsZXZlbCBvZiB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gV2Ugc3VwcG9ydCBWRVJCT1NFLCBJTkZPLCBFUlJPUiwgTk9ORSwgZGVmYXVsdHMgdG8gSU5GTy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBtYXN0ZXJLZXkgVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBtYXN0ZXJLZXkgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBtYXN0ZXJLZXkuXG4gKiBAcHJvcGVydHkge051bWJlcn0gcG9ydCBUaGUgcG9ydCB0byBydW4gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8UHViU3ViQWRhcHRlcj59IHB1YlN1YkFkYXB0ZXIgTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyXG4gKiBAcHJvcGVydHkge0FueX0gcmVkaXNPcHRpb25zIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSByZWRpc1VSTCBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkxcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBzZXJ2ZXJVUkwgVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBzZXJ2ZXJVUkwgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBzZXJ2ZXJVUkwuXG4gKiBAcHJvcGVydHkge051bWJlcn0gd2Vic29ja2V0VGltZW91dCBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gcGluZy9wb25nIGZyYW1lcy4gVGhlIFdlYlNvY2tldCBzZXJ2ZXIgc2VuZHMgcGluZy9wb25nIGZyYW1lcyB0byB0aGUgY2xpZW50cyB0byBrZWVwIHRoZSBXZWJTb2NrZXQgYWxpdmUuIFRoaXMgdmFsdWUgZGVmaW5lcyB0aGUgaW50ZXJ2YWwgb2YgdGhlIHBpbmcvcG9uZyBmcmFtZSBmcm9tIHRoZSBzZXJ2ZXIgdG8gY2xpZW50cywgZGVmYXVsdHMgdG8gMTAgKiAxMDAwIG1zICgxMCBzKS5cbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxXU1NBZGFwdGVyPn0gd3NzQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlclxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBJZGVtcG90ZW5jeU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nW119IHBhdGhzIEFuIGFycmF5IG9mIHBhdGhzIGZvciB3aGljaCB0aGUgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZC4gVGhlIG1vdW50IHBhdGggbXVzdCBub3QgYmUgaW5jbHVkZWQsIGZvciBleGFtcGxlIGluc3RlYWQgb2YgYC9wYXJzZS9mdW5jdGlvbnMvbXlGdW5jdGlvbmAgc3BlY2lmaXkgYGZ1bmN0aW9ucy9teUZ1bmN0aW9uYC4gVGhlIGVudHJpZXMgYXJlIGludGVycHJldGVkIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbiwgZm9yIGV4YW1wbGUgYGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgZnVuY3Rpb25zLCBgam9icy8uKmAgbWF0Y2hlcyBhbGwgam9icywgYGNsYXNzZXMvLipgIG1hdGNoZXMgYWxsIGNsYXNzZXMsIGAuKmAgbWF0Y2hlcyBhbGwgcGF0aHMuXG4gKiBAcHJvcGVydHkge051bWJlcn0gdHRsIFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIGEgcmVxdWVzdCByZWNvcmQgaXMgZGlzY2FyZGVkIGZyb20gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byAzMDBzLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBBY2NvdW50TG9ja291dE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBkdXJhdGlvbiBTZXQgdGhlIGR1cmF0aW9uIGluIG1pbnV0ZXMgdGhhdCBhIGxvY2tlZC1vdXQgYWNjb3VudCByZW1haW5zIGxvY2tlZCBvdXQgYmVmb3JlIGF1dG9tYXRpY2FsbHkgYmVjb21pbmcgdW5sb2NrZWQuPGJyPjxicj5WYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMDAwYC5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB0aHJlc2hvbGQgU2V0IHRoZSBudW1iZXIgb2YgZmFpbGVkIHNpZ24taW4gYXR0ZW1wdHMgdGhhdCB3aWxsIGNhdXNlIGEgdXNlciBhY2NvdW50IHRvIGJlIGxvY2tlZC4gSWYgdGhlIGFjY291bnQgaXMgbG9ja2VkLiBUaGUgYWNjb3VudCB3aWxsIHVubG9jayBhZnRlciB0aGUgZHVyYXRpb24gc2V0IGluIHRoZSBgZHVyYXRpb25gIG9wdGlvbiBoYXMgcGFzc2VkIGFuZCBubyBmdXJ0aGVyIGxvZ2luIGF0dGVtcHRzIGhhdmUgYmVlbiBtYWRlLjxicj48YnI+VmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDBgLlxuICogQHByb3BlcnR5IHtCb29sZWFufSB1bmxvY2tPblBhc3N3b3JkUmVzZXQgU2V0IHRvIGB0cnVlYCAgaWYgdGhlIGFjY291bnQgc2hvdWxkIGJlIHVubG9ja2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBwYXNzd29yZCByZXNldC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC48YnI+UmVxdWlyZXMgb3B0aW9ucyBgZHVyYXRpb25gIGFuZCBgdGhyZXNob2xkYCB0byBiZSBzZXQuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIFBhc3N3b3JkUG9saWN5T3B0aW9uc1xuICogQHByb3BlcnR5IHtCb29sZWFufSBkb05vdEFsbG93VXNlcm5hbWUgU2V0IHRvIGB0cnVlYCB0byBkaXNhbGxvdyB0aGUgdXNlcm5hbWUgYXMgcGFydCBvZiB0aGUgcGFzc3dvcmQuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcHJvcGVydHkge051bWJlcn0gbWF4UGFzc3dvcmRBZ2UgU2V0IHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCBhIHBhc3N3b3JkIGV4cGlyZXMuIExvZ2luIGF0dGVtcHRzIGZhaWwgaWYgdGhlIHVzZXIgZG9lcyBub3QgcmVzZXQgdGhlIHBhc3N3b3JkIGJlZm9yZSBleHBpcmF0aW9uLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IG1heFBhc3N3b3JkSGlzdG9yeSBTZXQgdGhlIG51bWJlciBvZiBwcmV2aW91cyBwYXNzd29yZCB0aGF0IHdpbGwgbm90IGJlIGFsbG93ZWQgdG8gYmUgc2V0IGFzIG5ldyBwYXNzd29yZC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgMGAsIG5vIHByZXZpb3VzIHBhc3N3b3JkcyB3aWxsIGJlIGNvbnNpZGVyZWQuPGJyPjxicj5WYWxpZCB2YWx1ZXMgYXJlID49IGAwYCBhbmQgPD0gYDIwYC48YnI+RGVmYXVsdCBpcyBgMGAuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHJlc2V0VG9rZW5SZXVzZUlmVmFsaWQgU2V0IHRvIGB0cnVlYCBpZiBhIHBhc3N3b3JkIHJlc2V0IHRva2VuIHNob3VsZCBiZSByZXVzZWQgaW4gY2FzZSBhbm90aGVyIHRva2VuIGlzIHJlcXVlc3RlZCBidXQgdGhlcmUgaXMgYSB0b2tlbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpLmUuIGhhcyBub3QgZXhwaXJlZC4gVGhpcyBhdm9pZHMgdGhlIG9mdGVuIG9ic2VydmVkIGlzc3VlIHRoYXQgYSB1c2VyIHJlcXVlc3RzIG11bHRpcGxlIGVtYWlscyBhbmQgZG9lcyBub3Qga25vdyB3aGljaCBsaW5rIGNvbnRhaW5zIGEgdmFsaWQgdG9rZW4gYmVjYXVzZSBlYWNoIG5ld2x5IGdlbmVyYXRlZCB0b2tlbiB3b3VsZCBpbnZhbGlkYXRlIHRoZSBwcmV2aW91cyB0b2tlbi48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSByZXNldFRva2VuVmFsaWRpdHlEdXJhdGlvbiBTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBwYXNzd29yZCByZXNldCB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gdmFsaWRhdGlvbkVycm9yIFNldCB0aGUgZXJyb3IgbWVzc2FnZSB0byBiZSBzZW50Ljxicj48YnI+RGVmYXVsdCBpcyBgUGFzc3dvcmQgZG9lcyBub3QgbWVldCB0aGUgUGFzc3dvcmQgUG9saWN5IHJlcXVpcmVtZW50cy5gXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSB2YWxpZGF0b3JDYWxsYmFjayBTZXQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhIHBhc3N3b3JkIHRvIGJlIGFjY2VwdGVkLjxicj48YnI+SWYgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGB2YWxpZGF0b3JQYXR0ZXJuYCwgdGhlIHBhc3N3b3JkIG11c3QgcGFzcyBib3RoIHRvIGJlIGFjY2VwdGVkLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHZhbGlkYXRvclBhdHRlcm4gU2V0IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdmFsaWRhdGlvbiBwYXR0ZXJuIGEgcGFzc3dvcmQgbXVzdCBtYXRjaCB0byBiZSBhY2NlcHRlZC48YnI+PGJyPklmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yQ2FsbGJhY2tgLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIEZpbGVVcGxvYWRPcHRpb25zXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUZvckFub255bW91c1VzZXIgSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW5vbnltb3VzIHVzZXJzLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlciBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhdXRoZW50aWNhdGVkIHVzZXJzLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVGb3JQdWJsaWMgSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW55b25lLCByZWdhcmRsZXNzIG9mIHVzZXIgYXV0aGVudGljYXRpb24uXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIERhdGFiYXNlT3B0aW9uc1xuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVTY2hlbWFIb29rcyBFbmFibGVzIGRhdGFiYXNlIHJlYWwtdGltZSBob29rcyB0byB1cGRhdGUgc2luZ2xlIHNjaGVtYSBjYWNoZS4gU2V0IHRvIGB0cnVlYCBpZiB1c2luZyBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXJzIGluc3RhbmNlcyBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgZGF0YWJhc2UuIEZhaWxpbmcgdG8gZG8gc28gd2lsbCBjYXVzZSBhIHNjaGVtYSBjaGFuZ2UgdG8gbm90IHByb3BhZ2F0ZSB0byBhbGwgaW5zdGFuY2VzIGFuZCByZS1zeW5jaW5nIHdpbGwgb25seSBoYXBwZW4gd2hlbiB0aGUgaW5zdGFuY2VzIHJlc3RhcnQuIFRvIHVzZSB0aGlzIGZlYXR1cmUgd2l0aCBNb25nb0RCLCBhIHJlcGxpY2Egc2V0IGNsdXN0ZXIgd2l0aCBbY2hhbmdlIHN0cmVhbV0oaHR0cHM6Ly9kb2NzLm1vbmdvZGIuY29tL21hbnVhbC9jaGFuZ2VTdHJlYW1zLyNhdmFpbGFiaWxpdHkpIHN1cHBvcnQgaXMgcmVxdWlyZWQuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIEF1dGhBZGFwdGVyXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZWQgSXMgYHRydWVgIGlmIHRoZSBhdXRoIGFkYXB0ZXIgaXMgZW5hYmxlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbiJdfQ==
219
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL2RvY3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJmYWNlIFNjaGVtYU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGFmdGVyTWlncmF0aW9uIEV4ZWN1dGUgYSBjYWxsYmFjayBhZnRlciBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gYmVmb3JlTWlncmF0aW9uIEV4ZWN1dGUgYSBjYWxsYmFjayBiZWZvcmUgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7QW55fSBkZWZpbml0aW9ucyBSZXN0IHJlcHJlc2VudGF0aW9uIG9uIFBhcnNlLlNjaGVtYSBodHRwczovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcmVzdC9ndWlkZS8jYWRkaW5nLWEtc2NoZW1hXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGRlbGV0ZUV4dHJhRmllbGRzIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBkZWxldGUgYW55IGZpZWxkcyBub3QgZGVmaW5lZCBpbiBhIHNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZHVyaW5nIGRldmVsb3BtZW50LlxuICogQHByb3BlcnR5IHtCb29sZWFufSBsb2NrU2NoZW1hcyBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciB3aWxsIHJlamVjdCBhbnkgYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBzY2hlbWEgd2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nLlxuICogQHByb3BlcnR5IHtCb29sZWFufSByZWNyZWF0ZU1vZGlmaWVkRmllbGRzIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCByZWNyZWF0ZSBhbnkgZmllbGRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGRhdGFiYXNlIHNjaGVtYSBhbmQgdGhlc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHN0cmljdCBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgZXhpdCBpZiBzY2hlbWEgdXBkYXRlIGZhaWwuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9uc1xuICogQHByb3BlcnR5IHtBY2NvdW50TG9ja291dE9wdGlvbnN9IGFjY291bnRMb2Nrb3V0IFRoZSBhY2NvdW50IGxvY2tvdXQgcG9saWN5IGZvciBmYWlsZWQgbG9naW4gYXR0ZW1wdHMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGFsbG93Q2xpZW50Q2xhc3NDcmVhdGlvbiBFbmFibGUgKG9yIGRpc2FibGUpIGNsaWVudCBjbGFzcyBjcmVhdGlvbiwgZGVmYXVsdHMgdG8gdHJ1ZVxuICogQHByb3BlcnR5IHtCb29sZWFufSBhbGxvd0N1c3RvbU9iamVjdElkIEVuYWJsZSAob3IgZGlzYWJsZSkgY3VzdG9tIG9iamVjdElkXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGFsbG93RXhwaXJlZEF1dGhEYXRhVG9rZW4gQWxsb3cgYSB1c2VyIHRvIGxvZyBpbiBldmVuIGlmIHRoZSAzcmQgcGFydHkgYXV0aGVudGljYXRpb24gdG9rZW4gdGhhdCB3YXMgdXNlZCB0byBzaWduIGluIHRvIHRoZWlyIGFjY291bnQgaGFzIGV4cGlyZWQuIElmIHRoaXMgaXMgc2V0IHRvIGBmYWxzZWAsIHRoZW4gdGhlIHRva2VuIHdpbGwgYmUgdmFsaWRhdGVkIGV2ZXJ5IHRpbWUgdGhlIHVzZXIgc2lnbnMgaW4gdG8gdGhlaXIgYWNjb3VudC4gVGhpcyByZWZlcnMgdG8gdGhlIHRva2VuIHRoYXQgaXMgc3RvcmVkIGluIHRoZSBgX1VzZXIuYXV0aERhdGFgIGZpZWxkLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gKiBAcHJvcGVydHkge1N0cmluZ1tdfSBhbGxvd0hlYWRlcnMgQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVyc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGFsbG93T3JpZ2luIFNldHMgdGhlIG9yaWdpbiB0byBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5cbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxBbmFseXRpY3NBZGFwdGVyPn0gYW5hbHl0aWNzQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGFuYWx5dGljc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGFwcElkIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhcHBOYW1lIFNldHMgdGhlIGFwcCBuYW1lXG4gKiBAcHJvcGVydHkge0F1dGhBZGFwdGVyW119IGF1dGggQ29uZmlndXJhdGlvbiBmb3IgeW91ciBhdXRoZW50aWNhdGlvbiBwcm92aWRlcnMsIGFzIHN0cmluZ2lmaWVkIEpTT04uIFNlZSBodHRwOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvZ3VpZGUvI29hdXRoLWFuZC0zcmQtcGFydHktYXV0aGVudGljYXRpb25cbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxDYWNoZUFkYXB0ZXI+fSBjYWNoZUFkYXB0ZXIgQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBjYWNoZVxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGNhY2hlTWF4U2l6ZSBTZXRzIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUsIGRlZmF1bHRzIHRvIDEwMDAwXG4gKiBAcHJvcGVydHkge051bWJlcn0gY2FjaGVUVEwgU2V0cyB0aGUgVFRMIGZvciB0aGUgaW4gbWVtb3J5IGNhY2hlIChpbiBtcyksIGRlZmF1bHRzIHRvIDUwMDAgKDUgc2Vjb25kcylcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjbGllbnRLZXkgS2V5IGZvciBpT1MsIE1hY09TLCB0dk9TIGNsaWVudHNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjbG91ZCBGdWxsIHBhdGggdG8geW91ciBjbG91ZCBjb2RlIG1haW4uanNcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfEJvb2xlYW59IGNsdXN0ZXIgUnVuIHdpdGggY2x1c3Rlciwgb3B0aW9uYWxseSBzZXQgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgZGVmYXVsdCB0byBvcy5jcHVzKCkubGVuZ3RoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gY29sbGVjdGlvblByZWZpeCBBIGNvbGxlY3Rpb24gcHJlZml4IGZvciB0aGUgY2xhc3Nlc1xuICogQHByb3BlcnR5IHtDdXN0b21QYWdlc09wdGlvbnN9IGN1c3RvbVBhZ2VzIGN1c3RvbSBwYWdlcyBmb3IgcGFzc3dvcmQgdmFsaWRhdGlvbiBhbmQgcmVzZXRcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxTdG9yYWdlQWRhcHRlcj59IGRhdGFiYXNlQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGRhdGFiYXNlOyBhbnkgb3B0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBkZXNjcmliZWQgaGVyZSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBkYXRhYmFzZSBjbGllbnQuXG4gKiBAcHJvcGVydHkge0RhdGFiYXNlT3B0aW9uc30gZGF0YWJhc2VPcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgZGF0YWJhc2UgY2xpZW50XG4gKiBAcHJvcGVydHkge1N0cmluZ30gZGF0YWJhc2VVUkkgVGhlIGZ1bGwgVVJJIHRvIHlvdXIgZGF0YWJhc2UuIFN1cHBvcnRlZCBkYXRhYmFzZXMgYXJlIG1vbmdvZGIgb3IgcG9zdGdyZXMuXG4gKiBAcHJvcGVydHkge051bWJlcn0gZGVmYXVsdExpbWl0IERlZmF1bHQgdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byBgMTAwYC5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZGlyZWN0QWNjZXNzIFNldCB0byBgdHJ1ZWAgaWYgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIHNob3VsZCBiZSByb3V0ZWQgdG8gUGFyc2UgU2VydmVyIGRpcmVjdGx5IGluc3RlYWQgb2YgdmlhIHRoZSBIVFRQIGludGVyZmFjZS4gRGVmYXVsdCBpcyBgZmFsc2VgLjxicj48YnI+SWYgc2V0IHRvIGBmYWxzZWAgdGhlbiBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIHNhbWUgTm9kZS5qcyBlbnZpcm9ubWVudCBhcyBQYXJzZSBTZXJ2ZXIgYXJlIGV4ZWN1dGVkIGFzIEhUVFAgcmVxdWVzdHMgc2VudCB0byBQYXJzZSBTZXJ2ZXIgdmlhIHRoZSBgc2VydmVyVVJMYC4gRm9yIGV4YW1wbGUsIGEgYFBhcnNlLlF1ZXJ5YCBpbiBDbG91ZCBDb2RlIGlzIGNhbGxpbmcgUGFyc2UgU2VydmVyIHZpYSBhIEhUVFAgcmVxdWVzdC4gVGhlIHNlcnZlciBpcyBlc3NlbnRpYWxseSBtYWtpbmcgYSBIVFRQIHJlcXVlc3QgdG8gaXRzZWxmLCB1bm5lY2Vzc2FyaWx5IHVzaW5nIG5ldHdvcmsgcmVzb3VyY2VzIHN1Y2ggYXMgbmV0d29yayBwb3J0cy48YnI+PGJyPuKaoO+4jyBJbiBlbnZpcm9ubWVudHMgd2hlcmUgbXVsdGlwbGUgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBydW4gYmVoaW5kIGEgbG9hZCBiYWxhbmNlciBhbmQgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBjdXJyZW50IE5vZGUuanMgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHJvdXRlZCB2aWEgdGhlIGxvYWQgYmFsYW5jZXIgYW5kIGRpc3RyaWJ1dGVkIGFzIEhUVFAgcmVxdWVzdHMgYW1vbmcgYWxsIGluc3RhbmNlcyB2aWEgdGhlIGBzZXJ2ZXJVUkxgLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBkb3ROZXRLZXkgS2V5IGZvciBVbml0eSBhbmQgLk5ldCBTREtcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxNYWlsQWRhcHRlcj59IGVtYWlsQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgZW1haWwgc2VuZGluZ1xuICogQHByb3BlcnR5IHtCb29sZWFufSBlbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkIFNldCB0byBgdHJ1ZWAgaWYgYSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGVtYWlsVmVyaWZ5VG9rZW5WYWxpZGl0eUR1cmF0aW9uIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUFub255bW91c1VzZXJzIEVuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUV4cHJlc3NFcnJvckhhbmRsZXIgRW5hYmxlcyB0aGUgZGVmYXVsdCBleHByZXNzIGVycm9yIGhhbmRsZXIgZm9yIGFsbCBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbmNyeXB0aW9uS2V5IEtleSBmb3IgZW5jcnlwdGluZyB5b3VyIGZpbGVzXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuZm9yY2VQcml2YXRlVXNlcnMgU2V0IHRvIHRydWUgaWYgbmV3IHVzZXJzIHNob3VsZCBiZSBjcmVhdGVkIHdpdGhvdXQgcHVibGljIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZXhwaXJlSW5hY3RpdmVTZXNzaW9ucyBTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGZpbGVLZXkgS2V5IGZvciB5b3VyIGZpbGVzXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8RmlsZXNBZGFwdGVyPn0gZmlsZXNBZGFwdGVyIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZmlsZXMgc3ViLXN5c3RlbVxuICogQHByb3BlcnR5IHtGaWxlVXBsb2FkT3B0aW9uc30gZmlsZVVwbG9hZCBPcHRpb25zIGZvciBmaWxlIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBncmFwaFFMUGF0aCBNb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBlbmRwb2ludCwgZGVmYXVsdHMgdG8gL2dyYXBocWxcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBncmFwaFFMU2NoZW1hIEZ1bGwgcGF0aCB0byB5b3VyIEdyYXBoUUwgY3VzdG9tIHNjaGVtYS5ncmFwaHFsIGZpbGVcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBob3N0IFRoZSBob3N0IHRvIHNlcnZlIFBhcnNlU2VydmVyIG9uLCBkZWZhdWx0cyB0byAwLjAuMC4wXG4gKiBAcHJvcGVydHkge0lkZW1wb3RlbmN5T3B0aW9uc30gaWRlbXBvdGVuY3lPcHRpb25zIE9wdGlvbnMgZm9yIHJlcXVlc3QgaWRlbXBvdGVuY3kgdG8gZGVkdXBsaWNhdGUgaWRlbnRpY2FsIHJlcXVlc3RzIHRoYXQgbWF5IGJlIGNhdXNlZCBieSBuZXR3b3JrIGlzc3Vlcy4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uXG4gKiBAcHJvcGVydHkge1N0cmluZ30gamF2YXNjcmlwdEtleSBLZXkgZm9yIHRoZSBKYXZhc2NyaXB0IFNES1xuICogQHByb3BlcnR5IHtCb29sZWFufSBqc29uTG9ncyBMb2cgYXMgc3RydWN0dXJlZCBKU09OIG9iamVjdHNcbiAqIEBwcm9wZXJ0eSB7TGl2ZVF1ZXJ5T3B0aW9uc30gbGl2ZVF1ZXJ5IHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSBjb25maWd1cmF0aW9uIG9iamVjdFxuICogQHByb3BlcnR5IHtMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zfSBsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIExpdmUgcXVlcnkgc2VydmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAod2lsbCBzdGFydCB0aGUgbGl2ZVF1ZXJ5IHNlcnZlcilcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxMb2dnZXJBZGFwdGVyPn0gbG9nZ2VyQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGxvZ2dpbmcgc3ViLXN5c3RlbVxuICogQHByb3BlcnR5IHtTdHJpbmd9IGxvZ0xldmVsIFNldHMgdGhlIGxldmVsIGZvciBsb2dzXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbG9nc0ZvbGRlciBGb2xkZXIgZm9yIHRoZSBsb2dzIChkZWZhdWx0cyB0byAnLi9sb2dzJyk7IHNldCB0byBudWxsIHRvIGRpc2FibGUgZmlsZSBiYXNlZCBsb2dnaW5nXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbWFzdGVyS2V5IFlvdXIgUGFyc2UgTWFzdGVyIEtleVxuICogQHByb3BlcnR5IHtTdHJpbmdbXX0gbWFzdGVyS2V5SXBzIChPcHRpb25hbCkgUmVzdHJpY3RzIHRoZSB1c2Ugb2YgbWFzdGVyIGtleSBwZXJtaXNzaW9ucyB0byBhIGxpc3Qgb2YgSVAgYWRkcmVzc2VzLjxicj48YnI+VGhpcyBvcHRpb24gYWNjZXB0cyBhIGxpc3Qgb2Ygc2luZ2xlIElQIGFkZHJlc3NlcywgZm9yIGV4YW1wbGU6PGJyPmBbJzEwLjAuMC4xJywgJzEwLjAuMC4yJ11gPGJyPjxicj5Zb3UgY2FuIGFsc28gdXNlIENJRFIgbm90YXRpb24gdG8gc3BlY2lmeSBhbiBJUCBhZGRyZXNzIHJhbmdlLCBmb3IgZXhhbXBsZTo8YnI+YFsnMTAuMC4xLjAvMjQnXWA8YnI+PGJyPlNwZWNpYWwgY2FzZXM6PGJyPi0gU2V0dGluZyBhbiBlbXB0eSBhcnJheSBgW11gIG1lYW5zIHRoYXQgYG1hc3RlcktleWBgIGNhbm5vdCBiZSB1c2VkIGV2ZW4gaW4gUGFyc2UgU2VydmVyIENsb3VkIENvZGUuPGJyPi0gU2V0dGluZyBgWycwLjAuMC4wLzAnXWAgbWVhbnMgZGlzYWJsaW5nIHRoZSBmaWx0ZXIgYW5kIHRoZSBtYXN0ZXIga2V5IGNhbiBiZSB1c2VkIGZyb20gYW55IElQIGFkZHJlc3MuPGJyPjxicj5UbyBjb25uZWN0IFBhcnNlIERhc2hib2FyZCBmcm9tIGEgZGlmZmVyZW50IHNlcnZlciByZXF1aXJlcyB0byBhZGQgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIHNlcnZlciB0aGF0IGhvc3RzIFBhcnNlIERhc2hib2FyZCBiZWNhdXNlIFBhcnNlIERhc2hib2FyZCB1c2VzIHRoZSBtYXN0ZXIga2V5Ljxicj48YnI+RGVmYXVsdHMgdG8gYFsnMTI3LjAuMC4xJ11gIHdoaWNoIG1lYW5zIHRoYXQgb25seSBgbG9jYWxob3N0YCwgdGhlIHNlcnZlciBpdHNlbGYsIGlzIGFsbG93ZWQgdG8gdXNlIHRoZSBtYXN0ZXIga2V5LlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IG1heExpbWl0IE1heCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIHVubGltaXRlZFxuICogQHByb3BlcnR5IHtOdW1iZXJ8U3RyaW5nfSBtYXhMb2dGaWxlcyBNYXhpbXVtIG51bWJlciBvZiBsb2dzIHRvIGtlZXAuIElmIG5vdCBzZXQsIG5vIGxvZ3Mgd2lsbCBiZSByZW1vdmVkLiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBmaWxlcyBvciBudW1iZXIgb2YgZGF5cy4gSWYgdXNpbmcgZGF5cywgYWRkICdkJyBhcyB0aGUgc3VmZml4LiAoZGVmYXVsdDogbnVsbClcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBtYXhVcGxvYWRTaXplIE1heCBmaWxlIHNpemUgZm9yIHVwbG9hZHMsIGRlZmF1bHRzIHRvIDIwbWJcbiAqIEBwcm9wZXJ0eSB7VW5pb259IG1pZGRsZXdhcmUgbWlkZGxld2FyZSBmb3IgZXhwcmVzcyBzZXJ2ZXIsIGNhbiBiZSBzdHJpbmcgb3IgZnVuY3Rpb25cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gbW91bnRHcmFwaFFMIE1vdW50cyB0aGUgR3JhcGhRTCBlbmRwb2ludFxuICogQHByb3BlcnR5IHtTdHJpbmd9IG1vdW50UGF0aCBNb3VudCBwYXRoIGZvciB0aGUgc2VydmVyLCBkZWZhdWx0cyB0byAvcGFyc2VcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gbW91bnRQbGF5Z3JvdW5kIE1vdW50cyB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kIC0gbmV2ZXIgdXNlIHRoaXMgb3B0aW9uIGluIHByb2R1Y3Rpb25cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBvYmplY3RJZFNpemUgU2V0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gZ2VuZXJhdGVkIG9iamVjdCBpZCdzLCBkZWZhdWx0IDEwXG4gKiBAcHJvcGVydHkge1BhZ2VzT3B0aW9uc30gcGFnZXMgVGhlIG9wdGlvbnMgZm9yIHBhZ2VzIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbi4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uXG4gKiBAcHJvcGVydHkge1Bhc3N3b3JkUG9saWN5T3B0aW9uc30gcGFzc3dvcmRQb2xpY3kgVGhlIHBhc3N3b3JkIHBvbGljeSBmb3IgZW5mb3JjaW5nIHBhc3N3b3JkIHJlbGF0ZWQgcnVsZXMuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGxheWdyb3VuZFBhdGggTW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgUGxheWdyb3VuZCwgZGVmYXVsdHMgdG8gL3BsYXlncm91bmRcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBwb3J0IFRoZSBwb3J0IHRvIHJ1biB0aGUgUGFyc2VTZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHByZXNlcnZlRmlsZU5hbWUgRW5hYmxlIChvciBkaXNhYmxlKSB0aGUgYWRkaXRpb24gb2YgYSB1bmlxdWUgaGFzaCB0byB0aGUgZmlsZSBuYW1lc1xuICogQHByb3BlcnR5IHtCb29sZWFufSBwcmV2ZW50TG9naW5XaXRoVW52ZXJpZmllZEVtYWlsIFNldCB0byBgdHJ1ZWAgdG8gcHJldmVudCBhIHVzZXIgZnJvbSBsb2dnaW5nIGluIGlmIHRoZSBlbWFpbCBoYXMgbm90IHlldCBiZWVuIHZlcmlmaWVkIGFuZCBlbWFpbCB2ZXJpZmljYXRpb24gaXMgcmVxdWlyZWQuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gKiBAcHJvcGVydHkge1Byb3RlY3RlZEZpZWxkc30gcHJvdGVjdGVkRmllbGRzIFByb3RlY3RlZCBmaWVsZHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCB3aXRoIGV4dHJhIHNlY3VyaXR5IHdoZW4gZmV0Y2hpbmcgZGV0YWlscy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwdWJsaWNTZXJ2ZXJVUkwgUHVibGljIFVSTCB0byB5b3VyIHBhcnNlIHNlcnZlciB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8uXG4gKiBAcHJvcGVydHkge0FueX0gcHVzaCBDb25maWd1cmF0aW9uIGZvciBwdXNoLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNwdXNoLW5vdGlmaWNhdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSByZWFkT25seU1hc3RlcktleSBSZWFkLW9ubHkga2V5LCB3aGljaCBoYXMgdGhlIHNhbWUgY2FwYWJpbGl0aWVzIGFzIE1hc3RlcktleSB3aXRob3V0IHdyaXRlc1xuICogQHByb3BlcnR5IHtSZXF1ZXN0S2V5d29yZERlbnlsaXN0W119IHJlcXVlc3RLZXl3b3JkRGVueWxpc3QgQW4gYXJyYXkgb2Yga2V5cyBhbmQgdmFsdWVzIHRoYXQgYXJlIHByb2hpYml0ZWQgaW4gZGF0YWJhc2UgcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMgdG8gcHJldmVudCBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IG9ubHkgYSBrZXkgKGB7XCJrZXlcIjpcIi4uLlwifWApLCBvbmx5IGEgdmFsdWUgKGB7XCJ2YWx1ZVwiOlwiLi4uXCJ9YCkgb3IgYSBrZXktdmFsdWUgcGFpciAoYHtcImtleVwiOlwiLi4uXCIsXCJ2YWx1ZVwiOlwiLi4uXCJ9YCkuIFRoZSBzcGVjaWZpY2F0aW9uIGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0eXBlczogYGJvb2xlYW5gLCBgbnVtZXJpY2Agb3IgYHN0cmluZ2AsIHdoZXJlIGBzdHJpbmdgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSByZWdleCBub3RhdGlvbi4gUmVxdWVzdCBkYXRhIGlzIGRlZXAtc2Nhbm5lZCBmb3IgbWF0Y2hpbmcgZGVmaW5pdGlvbnMgdG8gZGV0ZWN0IGFsc28gYW55IG5lc3RlZCBvY2N1cnJlbmNlcy4gRGVmYXVsdHMgYXJlIHBhdHRlcm5zIHRoYXQgYXJlIGxpa2VseSB0byBiZSB1c2VkIGluIG1hbGljaW91cyByZXF1ZXN0cy4gU2V0dGluZyB0aGlzIG9wdGlvbiB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhdHRlcm5zLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHJlc3RBUElLZXkgS2V5IGZvciBSRVNUIGNhbGxzXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHJldm9rZVNlc3Npb25PblBhc3N3b3JkUmVzZXQgV2hlbiBhIHVzZXIgY2hhbmdlcyB0aGVpciBwYXNzd29yZCwgZWl0aGVyIHRocm91Z2ggdGhlIHJlc2V0IHBhc3N3b3JkIGVtYWlsIG9yIHdoaWxlIGxvZ2dlZCBpbiwgYWxsIHNlc3Npb25zIGFyZSByZXZva2VkIGlmIHRoaXMgaXMgdHJ1ZS4gU2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IHRvIHJldm9rZSBzZXNzaW9ucy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gc2NoZWR1bGVkUHVzaCBDb25maWd1cmF0aW9uIGZvciBwdXNoIHNjaGVkdWxpbmcsIGRlZmF1bHRzIHRvIGZhbHNlLlxuICogQHByb3BlcnR5IHtTY2hlbWFPcHRpb25zfSBzY2hlbWEgRGVmaW5lZCBzY2hlbWFcbiAqIEBwcm9wZXJ0eSB7U2VjdXJpdHlPcHRpb25zfSBzZWN1cml0eSBUaGUgc2VjdXJpdHkgb3B0aW9ucyB0byBpZGVudGlmeSBhbmQgcmVwb3J0IHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBzZXJ2ZXJDbG9zZUNvbXBsZXRlIENhbGxiYWNrIHdoZW4gc2VydmVyIGhhcyBjbG9zZWRcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHNlcnZlclN0YXJ0Q29tcGxldGUgQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIHN0YXJ0ZWRcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBzZXJ2ZXJVUkwgVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBzZXNzaW9uTGVuZ3RoIFNlc3Npb24gZHVyYXRpb24sIGluIHNlY29uZHMsIGRlZmF1bHRzIHRvIDEgeWVhclxuICogQHByb3BlcnR5IHtCb29sZWFufSBzaWxlbnQgRGlzYWJsZXMgY29uc29sZSBvdXRwdXRcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gc3RhcnRMaXZlUXVlcnlTZXJ2ZXIgU3RhcnRzIHRoZSBsaXZlUXVlcnkgc2VydmVyXG4gKiBAcHJvcGVydHkge1N0cmluZ1tdfSB1c2VyU2Vuc2l0aXZlRmllbGRzIFBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIGZpZWxkcyBpbiB0aGUgdXNlciB0YWJsZSB0aGUgc2hvdWxkIGJlIHJlbW92ZWQgZm9yIG5vbi1hdXRob3JpemVkIHVzZXJzLiBEZXByZWNhdGVkIEBzZWUgcHJvdGVjdGVkRmllbGRzXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHZlcmJvc2UgU2V0IHRoZSBsb2dnaW5nIHRvIHZlcmJvc2VcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gdmVyaWZ5VXNlckVtYWlscyBTZXQgdG8gYHRydWVgIHRvIHJlcXVpcmUgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIGVtYWlsIGFkZHJlc3MgdG8gY29tcGxldGUgdGhlIHNpZ24tdXAgcHJvY2Vzcy48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB3ZWJob29rS2V5IEtleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxsc1xuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBTZWN1cml0eU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Q2hlY2tHcm91cFtdfSBjaGVja0dyb3VwcyBUaGUgc2VjdXJpdHkgY2hlY2sgZ3JvdXBzIHRvIHJ1bi4gVGhpcyBhbGxvd3MgdG8gYWRkIGN1c3RvbSBzZWN1cml0eSBjaGVja3Mgb3Igb3ZlcnJpZGUgZXhpc3Rpbmcgb25lcy4gRGVmYXVsdCBhcmUgdGhlIGdyb3VwcyBkZWZpbmVkIGluIGBDaGVja0dyb3Vwcy5qc2AuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUNoZWNrIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBjaGVjayBmb3Igd2VhayBzZWN1cml0eSBzZXR0aW5ncy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlQ2hlY2tMb2cgSXMgdHJ1ZSBpZiB0aGUgc2VjdXJpdHkgY2hlY2sgcmVwb3J0IHNob3VsZCBiZSB3cml0dGVuIHRvIGxvZ3MuIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCB0ZW1wb3JhcmlseSB0byBub3QgZXhwb3NlIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MgaW4gbG9ncy5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgUGFnZXNPcHRpb25zXG4gKiBAcHJvcGVydHkge1BhZ2VzUm91dGVbXX0gY3VzdG9tUm91dGVzIFRoZSBjdXN0b20gcm91dGVzLlxuICogQHByb3BlcnR5IHtQYWdlc0N1c3RvbVVybHNPcHRpb25zfSBjdXN0b21VcmxzIFRoZSBVUkxzIHRvIHRoZSBjdXN0b20gcGFnZXMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUxvY2FsaXphdGlvbiBJcyB0cnVlIGlmIHBhZ2VzIHNob3VsZCBiZSBsb2NhbGl6ZWQ7IHRoaXMgaGFzIG5vIGVmZmVjdCBvbiBjdXN0b20gcGFnZSByZWRpcmVjdHMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZVJvdXRlciBJcyB0cnVlIGlmIHRoZSBwYWdlcyByb3V0ZXIgc2hvdWxkIGJlIGVuYWJsZWQ7IHRoaXMgaXMgcmVxdWlyZWQgZm9yIGFueSBvZiB0aGUgcGFnZXMgb3B0aW9ucyB0byB0YWtlIGVmZmVjdC4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGZvcmNlUmVkaXJlY3QgSXMgdHJ1ZSBpZiByZXNwb25zZXMgc2hvdWxkIGFsd2F5cyBiZSByZWRpcmVjdHMgYW5kIG5ldmVyIGNvbnRlbnQsIGZhbHNlIGlmIHRoZSByZXNwb25zZSB0eXBlIHNob3VsZCBkZXBlbmQgb24gdGhlIHJlcXVlc3QgdHlwZSAoR0VUIHJlcXVlc3QgLT4gY29udGVudCByZXNwb25zZTsgUE9TVCByZXF1ZXN0IC0+IHJlZGlyZWN0IHJlc3BvbnNlKS5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBsb2NhbGl6YXRpb25GYWxsYmFja0xvY2FsZSBUaGUgZmFsbGJhY2sgbG9jYWxlIGZvciBsb2NhbGl6YXRpb24gaWYgbm8gbWF0Y2hpbmcgdHJhbnNsYXRpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHByb3ZpZGluZyB0cmFuc2xhdGlvbiByZXNvdXJjZXMgdmlhIEpTT04gZmlsZS5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBsb2NhbGl6YXRpb25Kc29uUGF0aCBUaGUgcGF0aCB0byB0aGUgSlNPTiBmaWxlIGZvciBsb2NhbGl6YXRpb247IHRoZSB0cmFuc2xhdGlvbnMgd2lsbCBiZSB1c2VkIHRvIGZpbGwgdGVtcGxhdGUgcGxhY2Vob2xkZXJzIGFjY29yZGluZyB0byB0aGUgbG9jYWxlLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhZ2VzRW5kcG9pbnQgVGhlIEFQSSBlbmRwb2ludCBmb3IgdGhlIHBhZ2VzLiBEZWZhdWx0IGlzICdhcHBzJy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYWdlc1BhdGggVGhlIHBhdGggdG8gdGhlIHBhZ2VzIGRpcmVjdG9yeTsgdGhpcyBhbHNvIGRlZmluZXMgd2hlcmUgdGhlIHN0YXRpYyBlbmRwb2ludCAnL2FwcHMnIHBvaW50cyB0by4gRGVmYXVsdCBpcyB0aGUgJy4vcHVibGljLycgZGlyZWN0b3J5LlxuICogQHByb3BlcnR5IHtPYmplY3R9IHBsYWNlaG9sZGVycyBUaGUgcGxhY2Vob2xkZXIga2V5cyBhbmQgdmFsdWVzIHdoaWNoIHdpbGwgYmUgZmlsbGVkIGluIHBhZ2VzOyB0aGlzIGNhbiBiZSBhIHNpbXBsZSBvYmplY3Qgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgUGFnZXNSb3V0ZVxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgcm91dGUgaGFuZGxlciB0aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IG1ldGhvZCBUaGUgcm91dGUgbWV0aG9kLCBlLmcuICdHRVQnIG9yICdQT1NUJy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYXRoIFRoZSByb3V0ZSBwYXRoLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBQYWdlc0N1c3RvbVVybHNPcHRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZW1haWxWZXJpZmljYXRpb25MaW5rRXhwaXJlZCBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgZXhwaXJlZC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbWFpbFZlcmlmaWNhdGlvbkxpbmtJbnZhbGlkIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBpbnZhbGlkLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGVtYWlsVmVyaWZpY2F0aW9uU2VuZEZhaWwgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIHNlbmQgZmFpbC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbWFpbFZlcmlmaWNhdGlvblNlbmRTdWNjZXNzIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gcmVzZW5kIGxpbmsgLT4gc3VjY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbWFpbFZlcmlmaWNhdGlvblN1Y2Nlc3MgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBzdWNjZXNzLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhc3N3b3JkUmVzZXQgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0LlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhc3N3b3JkUmVzZXRMaW5rSW52YWxpZCBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gbGluayBpbnZhbGlkLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhc3N3b3JkUmVzZXRTdWNjZXNzIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBzdWNjZXNzLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBDdXN0b21QYWdlc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjaG9vc2VQYXNzd29yZCBjaG9vc2UgcGFzc3dvcmQgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZXhwaXJlZFZlcmlmaWNhdGlvbkxpbmsgZXhwaXJlZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBpbnZhbGlkTGluayBpbnZhbGlkIGxpbmsgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gaW52YWxpZFBhc3N3b3JkUmVzZXRMaW5rIGludmFsaWQgcGFzc3dvcmQgcmVzZXQgbGluayBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBpbnZhbGlkVmVyaWZpY2F0aW9uTGluayBpbnZhbGlkIHZlcmlmaWNhdGlvbiBsaW5rIHBhZ2UgcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGxpbmtTZW5kRmFpbCB2ZXJpZmljYXRpb24gbGluayBzZW5kIGZhaWwgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbGlua1NlbmRTdWNjZXNzIHZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgc3VjY2VzcyBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYXJzZUZyYW1lVVJMIGZvciBtYXNraW5nIHVzZXItZmFjaW5nIHBhZ2VzXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGFzc3dvcmRSZXNldFN1Y2Nlc3MgcGFzc3dvcmQgcmVzZXQgc3VjY2VzcyBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB2ZXJpZnlFbWFpbFN1Y2Nlc3MgdmVyaWZ5IGVtYWlsIHN1Y2Nlc3MgcGFnZSBwYXRoXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIExpdmVRdWVyeU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nW119IGNsYXNzTmFtZXMgcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNsYXNzTmFtZXNcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxQdWJTdWJBZGFwdGVyPn0gcHViU3ViQWRhcHRlciBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXJcbiAqIEBwcm9wZXJ0eSB7QW55fSByZWRpc09wdGlvbnMgcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzT3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IHJlZGlzVVJMIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTFxuICogQHByb3BlcnR5IHtBZGFwdGVyPFdTU0FkYXB0ZXI+fSB3c3NBZGFwdGVyIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIExpdmVRdWVyeVNlcnZlck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhcHBJZCBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIGFwcElkIGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgYXBwSWQuXG4gKiBAcHJvcGVydHkge051bWJlcn0gY2FjaGVUaW1lb3V0IE51bWJlciBpbiBtaWxsaXNlY29uZHMuIFdoZW4gY2xpZW50cyBwcm92aWRlIHRoZSBzZXNzaW9uVG9rZW4gdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIGZldGNoIGl0cyBQYXJzZVVzZXIncyBvYmplY3RJZCBmcm9tIHBhcnNlIHNlcnZlciBhbmQgc3RvcmUgaXQgaW4gdGhlIGNhY2hlLiBUaGUgdmFsdWUgZGVmaW5lcyB0aGUgZHVyYXRpb24gb2YgdGhlIGNhY2hlLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLCBkZWZhdWx0cyB0byA1ICogMTAwMCBtcyAoNSBzZWNvbmRzKS5cbiAqIEBwcm9wZXJ0eSB7QW55fSBrZXlQYWlycyBBIEpTT04gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGEgd2hpdGVsaXN0IG9mIGtleXMuIEl0IGlzIHVzZWQgZm9yIHZhbGlkYXRpbmcgY2xpZW50cyB3aGVuIHRoZXkgdHJ5IHRvIGNvbm5lY3QgdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIuIENoZWNrIHRoZSBmb2xsb3dpbmcgU2VjdXJpdHkgc2VjdGlvbiBhbmQgb3VyIHByb3RvY29sIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbG9nTGV2ZWwgVGhpcyBzdHJpbmcgZGVmaW5lcyB0aGUgbG9nIGxldmVsIG9mIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBXZSBzdXBwb3J0IFZFUkJPU0UsIElORk8sIEVSUk9SLCBOT05FLCBkZWZhdWx0cyB0byBJTkZPLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IG1hc3RlcktleSBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIG1hc3RlcktleSBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIG1hc3RlcktleS5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBwb3J0IFRoZSBwb3J0IHRvIHJ1biB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciwgZGVmYXVsdHMgdG8gMTMzNy5cbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxQdWJTdWJBZGFwdGVyPn0gcHViU3ViQWRhcHRlciBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXJcbiAqIEBwcm9wZXJ0eSB7QW55fSByZWRpc09wdGlvbnMgcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzT3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IHJlZGlzVVJMIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTFxuICogQHByb3BlcnR5IHtTdHJpbmd9IHNlcnZlclVSTCBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIHNlcnZlclVSTCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIHNlcnZlclVSTC5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB3ZWJzb2NrZXRUaW1lb3V0IE51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBwaW5nL3BvbmcgZnJhbWVzLiBUaGUgV2ViU29ja2V0IHNlcnZlciBzZW5kcyBwaW5nL3BvbmcgZnJhbWVzIHRvIHRoZSBjbGllbnRzIHRvIGtlZXAgdGhlIFdlYlNvY2tldCBhbGl2ZS4gVGhpcyB2YWx1ZSBkZWZpbmVzIHRoZSBpbnRlcnZhbCBvZiB0aGUgcGluZy9wb25nIGZyYW1lIGZyb20gdGhlIHNlcnZlciB0byBjbGllbnRzLCBkZWZhdWx0cyB0byAxMCAqIDEwMDAgbXMgKDEwIHMpLlxuICogQHByb3BlcnR5IHtBZGFwdGVyPFdTU0FkYXB0ZXI+fSB3c3NBZGFwdGVyIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIElkZW1wb3RlbmN5T3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmdbXX0gcGF0aHMgQW4gYXJyYXkgb2YgcGF0aHMgZm9yIHdoaWNoIHRoZSBmZWF0dXJlIHNob3VsZCBiZSBlbmFibGVkLiBUaGUgbW91bnQgcGF0aCBtdXN0IG5vdCBiZSBpbmNsdWRlZCwgZm9yIGV4YW1wbGUgaW5zdGVhZCBvZiBgL3BhcnNlL2Z1bmN0aW9ucy9teUZ1bmN0aW9uYCBzcGVjaWZpeSBgZnVuY3Rpb25zL215RnVuY3Rpb25gLiBUaGUgZW50cmllcyBhcmUgaW50ZXJwcmV0ZWQgYXMgcmVndWxhciBleHByZXNzaW9uLCBmb3IgZXhhbXBsZSBgZnVuY3Rpb25zLy4qYCBtYXRjaGVzIGFsbCBmdW5jdGlvbnMsIGBqb2JzLy4qYCBtYXRjaGVzIGFsbCBqb2JzLCBgY2xhc3Nlcy8uKmAgbWF0Y2hlcyBhbGwgY2xhc3NlcywgYC4qYCBtYXRjaGVzIGFsbCBwYXRocy5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB0dGwgVGhlIGR1cmF0aW9uIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggYSByZXF1ZXN0IHJlY29yZCBpcyBkaXNjYXJkZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIDMwMHMuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIEFjY291bnRMb2Nrb3V0T3B0aW9uc1xuICogQHByb3BlcnR5IHtOdW1iZXJ9IGR1cmF0aW9uIFNldCB0aGUgZHVyYXRpb24gaW4gbWludXRlcyB0aGF0IGEgbG9ja2VkLW91dCBhY2NvdW50IHJlbWFpbnMgbG9ja2VkIG91dCBiZWZvcmUgYXV0b21hdGljYWxseSBiZWNvbWluZyB1bmxvY2tlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwMDBgLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHRocmVzaG9sZCBTZXQgdGhlIG51bWJlciBvZiBmYWlsZWQgc2lnbi1pbiBhdHRlbXB0cyB0aGF0IHdpbGwgY2F1c2UgYSB1c2VyIGFjY291bnQgdG8gYmUgbG9ja2VkLiBJZiB0aGUgYWNjb3VudCBpcyBsb2NrZWQuIFRoZSBhY2NvdW50IHdpbGwgdW5sb2NrIGFmdGVyIHRoZSBkdXJhdGlvbiBzZXQgaW4gdGhlIGBkdXJhdGlvbmAgb3B0aW9uIGhhcyBwYXNzZWQgYW5kIG5vIGZ1cnRoZXIgbG9naW4gYXR0ZW1wdHMgaGF2ZSBiZWVuIG1hZGUuPGJyPjxicj5WYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMGAuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHVubG9ja09uUGFzc3dvcmRSZXNldCBTZXQgdG8gYHRydWVgICBpZiB0aGUgYWNjb3VudCBzaG91bGQgYmUgdW5sb2NrZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIHBhc3N3b3JkIHJlc2V0Ljxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb25zIGBkdXJhdGlvbmAgYW5kIGB0aHJlc2hvbGRgIHRvIGJlIHNldC5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgUGFzc3dvcmRQb2xpY3lPcHRpb25zXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGRvTm90QWxsb3dVc2VybmFtZSBTZXQgdG8gYHRydWVgIHRvIGRpc2FsbG93IHRoZSB1c2VybmFtZSBhcyBwYXJ0IG9mIHRoZSBwYXNzd29yZC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBtYXhQYXNzd29yZEFnZSBTZXQgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIGEgcGFzc3dvcmQgZXhwaXJlcy4gTG9naW4gYXR0ZW1wdHMgZmFpbCBpZiB0aGUgdXNlciBkb2VzIG5vdCByZXNldCB0aGUgcGFzc3dvcmQgYmVmb3JlIGV4cGlyYXRpb24uXG4gKiBAcHJvcGVydHkge051bWJlcn0gbWF4UGFzc3dvcmRIaXN0b3J5IFNldCB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHBhc3N3b3JkIHRoYXQgd2lsbCBub3QgYmUgYWxsb3dlZCB0byBiZSBzZXQgYXMgbmV3IHBhc3N3b3JkLiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGAwYCwgbm8gcHJldmlvdXMgcGFzc3dvcmRzIHdpbGwgYmUgY29uc2lkZXJlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgPj0gYDBgIGFuZCA8PSBgMjBgLjxicj5EZWZhdWx0IGlzIGAwYC5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcmVzZXRUb2tlblJldXNlSWZWYWxpZCBTZXQgdG8gYHRydWVgIGlmIGEgcGFzc3dvcmQgcmVzZXQgdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIHBhc3N3b3JkIHJlc2V0IHRva2VuIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHRva2VuIGV4cGlyZXMuIFRoZSB0b2tlbiBpcyB1c2VkIGluIHRoZSBsaW5rIHRoYXQgaXMgc2V0IGluIHRoZSBlbWFpbC4gQWZ0ZXIgdGhlIHRva2VuIGV4cGlyZXMsIHRoZSBsaW5rIGJlY29tZXMgaW52YWxpZCBhbmQgYSBuZXcgbGluayBoYXMgdG8gYmUgc2VudC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgdW5kZWZpbmVkYCwgdGhlbiB0aGUgdG9rZW4gbmV2ZXIgZXhwaXJlcy48YnI+PGJyPkZvciBleGFtcGxlLCB0byBleHBpcmUgdGhlIHRva2VuIGFmdGVyIDIgaG91cnMsIHNldCBhIHZhbHVlIG9mIDcyMDAgc2Vjb25kcyAoPSA2MCBzZWNvbmRzICogNjAgbWludXRlcyAqIDIgaG91cnMpLjxicj48YnI+RGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB2YWxpZGF0aW9uRXJyb3IgU2V0IHRoZSBlcnJvciBtZXNzYWdlIHRvIGJlIHNlbnQuPGJyPjxicj5EZWZhdWx0IGlzIGBQYXNzd29yZCBkb2VzIG5vdCBtZWV0IHRoZSBQYXNzd29yZCBQb2xpY3kgcmVxdWlyZW1lbnRzLmBcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHZhbGlkYXRvckNhbGxiYWNrIFNldCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgcGFzc3dvcmQgdG8gYmUgYWNjZXB0ZWQuPGJyPjxicj5JZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvclBhdHRlcm5gLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gdmFsaWRhdG9yUGF0dGVybiBTZXQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB2YWxpZGF0aW9uIHBhdHRlcm4gYSBwYXNzd29yZCBtdXN0IG1hdGNoIHRvIGJlIGFjY2VwdGVkLjxicj48YnI+SWYgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGB2YWxpZGF0b3JDYWxsYmFja2AsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRmlsZVVwbG9hZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlRm9yQW5vbnltb3VzVXNlciBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhbm9ueW1vdXMgdXNlcnMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlcnMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUZvclB1YmxpYyBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhbnlvbmUsIHJlZ2FyZGxlc3Mgb2YgdXNlciBhdXRoZW50aWNhdGlvbi5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRGF0YWJhc2VPcHRpb25zXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZVNjaGVtYUhvb2tzIEVuYWJsZXMgZGF0YWJhc2UgcmVhbC10aW1lIGhvb2tzIHRvIHVwZGF0ZSBzaW5nbGUgc2NoZW1hIGNhY2hlLiBTZXQgdG8gYHRydWVgIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIGNhdXNlIGEgc2NoZW1hIGNoYW5nZSB0byBub3QgcHJvcGFnYXRlIHRvIGFsbCBpbnN0YW5jZXMgYW5kIHJlLXN5bmNpbmcgd2lsbCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBpbnN0YW5jZXMgcmVzdGFydC4gVG8gdXNlIHRoaXMgZmVhdHVyZSB3aXRoIE1vbmdvREIsIGEgcmVwbGljYSBzZXQgY2x1c3RlciB3aXRoIFtjaGFuZ2Ugc3RyZWFtXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL2NoYW5nZVN0cmVhbXMvI2F2YWlsYWJpbGl0eSkgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgQXV0aEFkYXB0ZXJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlZCBJcyBgdHJ1ZWAgaWYgdGhlIGF1dGggYWRhcHRlciBpcyBlbmFibGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuIl19