@dollhousemcp/mcp-server 2.0.11 → 2.0.12-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/config/ConfigManager.d.ts +34 -0
  3. package/dist/config/ConfigManager.d.ts.map +1 -1
  4. package/dist/config/ConfigManager.js +46 -1
  5. package/dist/config/env.d.ts +18 -0
  6. package/dist/config/env.d.ts.map +1 -1
  7. package/dist/config/env.js +89 -2
  8. package/dist/di/Container.d.ts +1 -0
  9. package/dist/di/Container.d.ts.map +1 -1
  10. package/dist/di/Container.js +38 -2
  11. package/dist/elements/agents/AgentManager.js +2 -2
  12. package/dist/generated/version.d.ts +2 -2
  13. package/dist/generated/version.d.ts.map +1 -1
  14. package/dist/generated/version.js +3 -3
  15. package/dist/handlers/mcp-aql/GatekeeperSession.d.ts.map +1 -1
  16. package/dist/handlers/mcp-aql/GatekeeperSession.js +3 -2
  17. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
  18. package/dist/handlers/mcp-aql/MCPAQLHandler.js +11 -3
  19. package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
  20. package/dist/handlers/mcp-aql/OperationSchema.js +11 -6
  21. package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
  22. package/dist/handlers/mcp-aql/policies/ToolClassification.js +8 -1
  23. package/dist/index.js +53 -3
  24. package/dist/security/InputNormalizer.d.ts +4 -6
  25. package/dist/security/InputNormalizer.d.ts.map +1 -1
  26. package/dist/security/InputNormalizer.js +10 -16
  27. package/dist/security/audit/config/suppressions.d.ts.map +1 -1
  28. package/dist/security/audit/config/suppressions.js +26 -1
  29. package/dist/security/constants.d.ts +7 -0
  30. package/dist/security/constants.d.ts.map +1 -1
  31. package/dist/security/constants.js +10 -1
  32. package/dist/security/contentValidator.d.ts.map +1 -1
  33. package/dist/security/contentValidator.js +14 -6
  34. package/dist/security/encryption/PatternEncryptor.d.ts.map +1 -1
  35. package/dist/security/encryption/PatternEncryptor.js +18 -10
  36. package/dist/security/securityMonitor.d.ts +1 -1
  37. package/dist/security/securityMonitor.d.ts.map +1 -1
  38. package/dist/security/securityMonitor.js +1 -1
  39. package/dist/security/tokenManager.d.ts +18 -2
  40. package/dist/security/tokenManager.d.ts.map +1 -1
  41. package/dist/security/tokenManager.js +47 -15
  42. package/dist/security/validators/unicodeValidator.d.ts +4 -5
  43. package/dist/security/validators/unicodeValidator.d.ts.map +1 -1
  44. package/dist/security/validators/unicodeValidator.js +19 -20
  45. package/dist/services/VerificationNotifier.d.ts.map +1 -1
  46. package/dist/services/VerificationNotifier.js +15 -13
  47. package/dist/services/validation/GenericElementValidator.js +5 -5
  48. package/dist/web/console/IngestRoutes.d.ts +14 -2
  49. package/dist/web/console/IngestRoutes.d.ts.map +1 -1
  50. package/dist/web/console/IngestRoutes.js +69 -5
  51. package/dist/web/console/LeaderElection.d.ts +37 -3
  52. package/dist/web/console/LeaderElection.d.ts.map +1 -1
  53. package/dist/web/console/LeaderElection.js +67 -7
  54. package/dist/web/console/LeaderForwardingSink.d.ts +19 -3
  55. package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -1
  56. package/dist/web/console/LeaderForwardingSink.js +44 -9
  57. package/dist/web/console/PromotionManager.d.ts +29 -0
  58. package/dist/web/console/PromotionManager.d.ts.map +1 -0
  59. package/dist/web/console/PromotionManager.js +94 -0
  60. package/dist/web/console/SessionNames.d.ts +7 -0
  61. package/dist/web/console/SessionNames.d.ts.map +1 -1
  62. package/dist/web/console/SessionNames.js +10 -1
  63. package/dist/web/console/UnifiedConsole.d.ts +26 -1
  64. package/dist/web/console/UnifiedConsole.d.ts.map +1 -1
  65. package/dist/web/console/UnifiedConsole.js +143 -20
  66. package/dist/web/portDiscovery.d.ts +4 -3
  67. package/dist/web/portDiscovery.d.ts.map +1 -1
  68. package/dist/web/portDiscovery.js +7 -5
  69. package/dist/web/public/app.js +35 -18
  70. package/dist/web/public/consoleAuth.js +152 -0
  71. package/dist/web/public/index.html +243 -9
  72. package/dist/web/public/logs.js +1 -1
  73. package/dist/web/public/metrics.js +3 -3
  74. package/dist/web/public/permissions.js +1 -1
  75. package/dist/web/public/security.css +396 -0
  76. package/dist/web/public/security.js +393 -0
  77. package/dist/web/public/sessions.css +54 -4
  78. package/dist/web/public/sessions.js +46 -6
  79. package/dist/web/public/setup.css +439 -0
  80. package/dist/web/public/setup.js +490 -18
  81. package/dist/web/public/styles.css +10 -0
  82. package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
  83. package/dist/web/routes/permissionRoutes.js +8 -3
  84. package/dist/web/routes/setupRoutes.d.ts +4 -0
  85. package/dist/web/routes/setupRoutes.d.ts.map +1 -1
  86. package/dist/web/routes/setupRoutes.js +418 -7
  87. package/dist/web/routes.d.ts.map +1 -1
  88. package/dist/web/routes.js +9 -5
  89. package/dist/web/server.d.ts +49 -3
  90. package/dist/web/server.d.ts.map +1 -1
  91. package/dist/web/server.js +282 -82
  92. package/package.json +11 -2
  93. package/server.json +2 -2
@@ -51,6 +51,11 @@ export const suppressions = [
51
51
  file: 'src/web/public/metrics.js',
52
52
  reason: 'FALSE POSITIVE: Browser-side Date.toLocaleTimeString() concatenation for display label. Not SQL — the codebase does not use SQL.'
53
53
  },
54
+ {
55
+ rule: 'CWE-89-001',
56
+ file: 'src/web/public/security.js',
57
+ reason: 'FALSE POSITIVE: HTML string concatenation building DOM markup for the Auth tab. All values HTML-escaped via esc() helper. Not SQL — the codebase does not use SQL. PR #1791'
58
+ },
54
59
  // ========================================
55
60
  // Metrics & Web Console False Positives
56
61
  // ========================================
@@ -79,6 +84,21 @@ export const suppressions = [
79
84
  file: 'src/web/public/setup.js',
80
85
  reason: 'FALSE POSITIVE: Client-side browser JavaScript. User inputs (platform tab clicks, method toggle) are matched against hardcoded DOM element IDs only — no free-text processing. Server-side handlers in setupRoutes.ts use UnicodeValidator.normalize() on all API input. UnicodeValidator is a Node.js module unavailable in browser context.'
81
86
  },
87
+ {
88
+ rule: 'DMCP-SEC-004',
89
+ file: 'src/web/public/security.js',
90
+ reason: 'FALSE POSITIVE: Client-side browser JavaScript for the Auth tab. All user input (TOTP codes) is sent to server-side endpoints (totpRoutes.ts, tokenRoutes.ts) which normalize via consoleRouteHelpers.ts getNormalizedStringField(). The esc() helper applies NFC normalization for display. UnicodeValidator is a Node.js module unavailable in browser context. PR #1791'
91
+ },
92
+ {
93
+ rule: 'DMCP-SEC-004',
94
+ file: 'src/web/routes/totpRoutes.ts',
95
+ reason: 'FALSE POSITIVE: All user input fields (code, pendingId, label) are extracted via getNormalizedStringField() from consoleRouteHelpers.ts which calls UnicodeValidator.normalize(). Normalization is centralized in the shared helper, not duplicated per-router. PR #1795'
96
+ },
97
+ {
98
+ rule: 'DMCP-SEC-004',
99
+ file: 'src/web/routes/tokenRoutes.ts',
100
+ reason: 'FALSE POSITIVE: All user input fields (confirmationCode) are extracted via getNormalizedStringField() from consoleRouteHelpers.ts which calls UnicodeValidator.normalize(). Normalization is centralized in the shared helper, not duplicated per-router. PR #1795'
101
+ },
82
102
  // ========================================
83
103
  // Test File Suppressions
84
104
  // ========================================
@@ -1061,6 +1081,11 @@ export const suppressions = [
1061
1081
  file: 'src/web/public/app.js',
1062
1082
  reason: 'Client-side browser JavaScript. UnicodeValidator is a Node.js module unavailable in browser context. Input served from DollhouseMCP server which normalizes before serving.'
1063
1083
  },
1084
+ {
1085
+ rule: 'DMCP-SEC-004',
1086
+ file: 'src/web/public/consoleAuth.js',
1087
+ reason: 'Client-side browser JavaScript (#1780 console auth helper). UnicodeValidator is a Node.js module unavailable in browser context. Token is read from a server-injected meta tag, normalized via native String.prototype.normalize(\'NFC\'), and rejected unless it matches /^[0-9a-f]{64}$/ (strict hex format). The authoritative normalization + validation happens in the middleware sanitizePresentedToken() and consoleToken.verify() on the server side before any comparison runs.'
1088
+ },
1064
1089
  {
1065
1090
  rule: 'DMCP-SEC-004',
1066
1091
  file: 'src/web/server.ts',
@@ -1313,4 +1338,4 @@ const validationErrors = validateSuppressions();
1313
1338
  if (validationErrors.length > 0) {
1314
1339
  logger.warn('Suppression configuration warnings:', validationErrors);
1315
1340
  }
1316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcHJlc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlY3VyaXR5L2F1ZGl0L2NvbmZpZy9zdXBwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRbEQ7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQjtJQUNaLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUNuQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFL0MsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUMxQyxPQUFPLEdBQUcsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLEtBQWM7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlLEVBQUUsS0FBYTtRQUNyQyxJQUFJLENB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LENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzRSwrQ0FBK0M7UUFDL0MsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0FBQ2hELElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZWN1cml0eSBBdWRpdCBTdXBwcmVzc2lvbiBDb25maWd1cmF0aW9uXG4gKiBcbiAqIFRoaXMgZmlsZSBjb250YWlucyBzdXBwcmVzc2lvbiBydWxlcyBmb3IgZmFsc2UgcG9zaXRpdmVzIGluIHRoZSBzZWN1cml0eSBhdWRpdC5cbiAqIEVhY2ggc3VwcHJlc3Npb24gc2hvdWxkIGJlIHdlbGwtZG9jdW1lbnRlZCB3aXRoIGEgY2xlYXIgcmVhc29uLlxuICovXG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VwcHJlc3Npb24ge1xuICBydWxlOiBzdHJpbmc7XG4gIGZpbGU/OiBzdHJpbmc7XG4gIHJlYXNvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN1cHByZXNzaW9uIGNhY2hlIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25cbiAqL1xuY2xhc3MgU3VwcHJlc3Npb25DYWNoZSB7XG4gIHByaXZhdGUgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcbiAgcHJpdmF0ZSByZWdleENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFJlZ0V4cD4oKTtcbiAgXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcbiAgICB0aGlzLnJlZ2V4Q2FjaGUuY2xlYXIoKTtcbiAgfVxuICBcbiAgZ2V0Q2FjaGVLZXkocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtydWxlSWR9Ojoke2ZpbGVQYXRofWA7XG4gIH1cbiAgXG4gIGdldChydWxlSWQ6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNhY2hlLmdldCh0aGlzLmdldENhY2hlS2V5KHJ1bGVJZCwgZmlsZVBhdGgpKTtcbiAgfVxuICBcbiAgc2V0KHJ1bGVJZDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2FjaGUuc2V0KHRoaXMuZ2V0Q2FjaGVLZXkocnVsZUlkLCBmaWxlUGF0aCksIHZhbHVlKTtcbiAgfVxuICBcbiAgZ2V0UmVnZXgocGF0dGVybjogc3RyaW5nKTogUmVnRXhwIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWdleENhY2hlLmdldChwYXR0ZXJuKTtcbiAgfVxuICBcbiAgc2V0UmVnZXgocGF0dGVybjogc3RyaW5nLCByZWdleDogUmVnRXhwKTogdm9pZCB7XG4gICAgdGhpcy5yZWdleENhY2hlLnNldChwYXR0ZXJuLCByZWdleCk7XG4gIH1cbn1cblxuY29uc3QgY2FjaGUgPSBuZXcgU3VwcHJlc3Npb25DYWNoZSgpO1xuXG5leHBvcnQgY29uc3Qgc3VwcHJlc3Npb25zOiBTdXBwcmVzc2lvbltdID0gW1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNRTCBJbmplY3Rpb24gRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAnc3JjL3VwZGF0ZS9VcGRhdGVNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdGYWxzZSBwb3NpdGl2ZSAtIFwiVXBkYXRlIEZhaWxlZFwiIGlzIGEgVUkgbWVzc2FnZSwgbm90IFNRTC4gVGhlIGNvZGViYXNlIGRvZXMgbm90IHVzZSBTUUwuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS04OS0wMDEnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvbWVtb3JpZXMvTWVtb3J5TWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IExpbmUgMTAyNCBpcyBhIGxvZ2dlci5lcnJvcigpIGNhbGwgZm9ybWF0dGluZyBhbiBlcnJvciBtZXNzYWdlIHdpdGggc3RyaW5nIGNvbmNhdGVuYXRpb24uIFRoaXMgaXMgbm90IGEgU1FMIHF1ZXJ5IC0gdGhlIGNvZGViYXNlIGRvZXMgbm90IHVzZSBTUUwuIFRoZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiBidWlsZHMgYSB1c2VyLWZhY2luZyBlcnJvciBtZXNzYWdlIGZvciBkZWxldGlvbiBmYWlsdXJlcy4gUFIgIzcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnQ1dFLTg5LTAwMScsXG4gICAgZmlsZTogJ3NyYy93ZWIvcHVibGljL21ldHJpY3MuanMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBCcm93c2VyLXNpZGUgRGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKSBjb25jYXRlbmF0aW9uIGZvciBkaXNwbGF5IGxhYmVsLiBOb3QgU1FMIOKAlCB0aGUgY29kZWJhc2UgZG9lcyBub3QgdXNlIFNRTC4nXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNZXRyaWNzICYgV2ViIENvbnNvbGUgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvbWV0cmljcy9zaW5rcy9NZW1vcnlNZXRyaWNzU2luay50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEludGVybmFsIG1ldHJpY3Mgc3RvcmFnZSDigJQgZG9lcyBub3QgcHJvY2VzcyB1c2VyIGlucHV0IGRpcmVjdGx5LiBNZXRyaWMgbmFtZXMgYW5kIHNvdXJjZXMgYXJlIHNlcnZlci1nZW5lcmF0ZWQgY29uc3RhbnRzLiBJbnB1dCBub3JtYWxpemF0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIHJvdXRlIGhhbmRsZXIgYm91bmRhcnkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9tZXRyaWNzL2NvbGxlY3RvcnMvUGVyZm9ybWFuY2VNb25pdG9yQ29sbGVjdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogTWV0cmljIGNvbGxlY3RvciB3aXRoIGhhcmRjb2RlZCBjb25zdGFudCBzdHJpbmdzIG9ubHkuIE5vIHVzZXIgaW5wdXQgZW50ZXJzIHRoaXMgY29tcG9uZW50LiBBbGwgbWV0cmljIG5hbWVzLCBzb3VyY2VzLCBhbmQgZGVzY3JpcHRpb25zIGFyZSBjb21waWxlLXRpbWUgY29uc3RhbnRzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9tZXRyaWNzLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogQ2xpZW50LXNpZGUgYnJvd3NlciBKYXZhU2NyaXB0LiBVbmljb2RlVmFsaWRhdG9yIGlzIGEgTm9kZS5qcyBtb2R1bGUgdW5hdmFpbGFibGUgaW4gYnJvd3NlciBjb250ZXh0LiBEYXNoYm9hcmQgcmVuZGVycyBzZXJ2ZXItZ2VuZXJhdGVkIG1ldHJpYyBkYXRhIG9ubHkg4oCUIG5vIHVzZXIgdGV4dCBpbnB1dC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9wdWJsaWMvbG9ncy5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IENsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdC4gRmlsdGVyIGlucHV0cyBhcmUgdXNlZCBmb3IgbG9jYWwgSlMgYXJyYXkgZmlsdGVyaW5nIG9ubHkg4oCUIG5ldmVyIHNlbnQgdG8gc2VydmVyLiBVbmljb2RlVmFsaWRhdG9yIGlzIGEgTm9kZS5qcyBtb2R1bGUgdW5hdmFpbGFibGUgaW4gYnJvd3NlciBjb250ZXh0LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9zZXR1cC5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IENsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdC4gVXNlciBpbnB1dHMgKHBsYXRmb3JtIHRhYiBjbGlja3MsIG1ldGhvZCB0b2dnbGUpIGFyZSBtYXRjaGVkIGFnYWluc3QgaGFyZGNvZGVkIERPTSBlbGVtZW50IElEcyBvbmx5IOKAlCBubyBmcmVlLXRleHQgcHJvY2Vzc2luZy4gU2VydmVyLXNpZGUgaGFuZGxlcnMgaW4gc2V0dXBSb3V0ZXMudHMgdXNlIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKCkgb24gYWxsIEFQSSBpbnB1dC4gVW5pY29kZVZhbGlkYXRvciBpcyBhIE5vZGUuanMgbW9kdWxlIHVuYXZhaWxhYmxlIGluIGJyb3dzZXIgY29udGV4dC4nXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUZXN0IEZpbGUgU3VwcHJlc3Npb25zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgbWF5IGNvbnRhaW4gaW50ZW50aW9uYWwgc2VjdXJpdHkgcGF0dGVybnMgZm9yIHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyoudGVzdC50cycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBtYXkgY29udGFpbiBpbnRlbnRpb25hbCBzZWN1cml0eSBwYXR0ZXJucyBmb3IgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi5zcGVjLnRzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIG1heSBjb250YWluIGludGVudGlvbmFsIHNlY3VyaXR5IHBhdHRlcm5zIGZvciB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3RzLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0aWVzIGFuZCBFMkUgdGVzdHMgZG8gbm90IHByb2Nlc3MgdW50cnVzdGVkIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAndGVzdHMvKiovKicsXG4gICAgcmVhc29uOiAnQXVkaXQgbG9nZ2luZyBub3QgcmVxdWlyZWQgZm9yIHRlc3QgdXRpbGl0aWVzIGFuZCBFMkUgdGVzdHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMycsXG4gICAgZmlsZTogJ3Rlc3RzL2UyZS9jbGVhbnVwLXRlc3QtZGF0YS50cycsXG4gICAgcmVhc29uOiAnRmFsc2UgcG9zaXRpdmUgLSBjb25zb2xlLmxvZyBtZXNzYWdlIHN0cmluZyBsaXRlcmFsLCBub3QgYSBwYXRoIG9wZXJhdGlvbidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDEtMDAxJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgdXNlIGZha2UgdG9rZW5zIGFuZCBzZWNyZXRzIGZvciB0ZXN0aW5nIHNlY3VyaXR5IGZlYXR1cmVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMS0wMDEnLFxuICAgIGZpbGU6ICd0ZXN0cy9maXh0dXJlcy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpeHR1cmVzIGNvbnRhaW4gaW50ZW50aW9uYWwgbW9jayBjcmVkZW50aWFscyBjbGVhcmx5IG1hcmtlZCBhcyBGQUtFL1RFU1QvTk9UX1JFQUwnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAxLTAwMScsXG4gICAgZmlsZTogJ3Rlc3RzL3NlY3VyaXR5L2ZyYW1ld29yay9SYXBpZFNlY3VyaXR5VGVzdGluZy50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IExpbmUgMjAyIGNvbnRhaW5zIGFuIGludGVudGlvbmFsIGZha2UgdG9rZW4gKGdocF8xMjM0NTY3ODkwLi4uKSBmb3Igc2VjdXJpdHkgdGVzdGluZy4gQ2xlYXJseSBtYXJrZWQgd2l0aCBOT1NPTkFSIGNvbW1lbnQuIFVzZWQgdG8gdmVyaWZ5IHRva2VucyBhcmUgbm90IGV4cG9zZWQgaW4gZXJyb3IgbWVzc2FnZXMuIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICd0ZXN0cy9maXh0dXJlcy90ZXN0Q3JlZGVudGlhbHMudHMnLFxuICAgIHJlYXNvbjogJ0NlbnRyYWxpemVkIHRlc3QgY3JlZGVudGlhbHMgZmlsZSB3aXRoIGludGVudGlvbmFsbHkgZmFrZSB2YWx1ZXMgZm9yIHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnQ1dFLTg5LTAwMScsXG4gICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIGNvbnRhaW4gU1FMIGluamVjdGlvbiBwYXR0ZXJucyBmb3Igc2VjdXJpdHkgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgY29udGFpbiBjb21tYW5kIGluamVjdGlvbiBwYXR0ZXJucyBmb3Igc2VjdXJpdHkgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAzJyxcbiAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgY29udGFpbiBwYXRoIHRyYXZlcnNhbCBwYXR0ZXJucyBmb3Igc2VjdXJpdHkgdGVzdGluZydcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gWUFNTCBQYXJzaW5nIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5L3lhbWxWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ1lhbWxWYWxpZGF0b3IgaXMgdGhlIHNlY3VyaXR5IHZhbGlkYXRpb24gbGF5ZXIgaXRzZWxmIC0gaXQgbmVlZHMgZGlyZWN0IHlhbWwubG9hZCBhY2Nlc3MnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5L3NlY3VyZVlhbWxQYXJzZXIudHMnLFxuICAgIHJlYXNvbjogJ1NlY3VyZVlhbWxQYXJzZXIgaXMgdGhlIHNlY3VyaXR5IHdyYXBwZXIgdGhhdCB2YWxpZGF0ZXMgWUFNTCBiZWZvcmUgcGFyc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvc2tpbGxzL1NraWxsTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnVXNlcyB5YW1sLmxvYWQgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgYW5kIHNpemUgdmFsaWRhdGlvbiAtIGVxdWl2YWxlbnQgc2VjdXJpdHkgdG8gU2VjdXJlWWFtbFBhcnNlciBmb3IgcmF3IFlBTUwgaW1wb3J0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy90b29scy9wb3J0Zm9saW8vc3VibWl0VG9Qb3J0Zm9saW9Ub29sLnRzJyxcbiAgICByZWFzb246ICdGYWxzZSBwb3NpdGl2ZSAtIFVzZXMgU2VjdXJlWWFtbFBhcnNlci5wYXJzZSgpIHdoaWNoIGlzIHRoZSBzZWN1cmUgaW1wbGVtZW50YXRpb24gZGVzaWduZWQgdG8gcHJldmVudCBZQU1MIHZ1bG5lcmFiaWxpdGllcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvY29uZmlnL0NvbmZpZ01hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBVc2VzIGpzLXlhbWwgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgZm9yIHB1cmUgWUFNTCBjb25maWcgZmlsZXMuIFRoaXMgcHJldmVudHMgY29kZSBleGVjdXRpb24gYW5kIGlzIHRoZSBhcHByb3ByaWF0ZSBzZWN1cml0eSBtZWFzdXJlIGZvciBjb25maWcgZmlsZXMgdGhhdCBhcmUgTk9UIG1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIuIFJlZ3Jlc3Npb24gdGVzdCBlbnN1cmVzIHdlIGRvIG5vdCB1c2UgU2VjdXJlWWFtbFBhcnNlciBoZXJlIHdoaWNoIHdvdWxkIHJlc2V0IGNvbmZpZyB2YWx1ZXMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9wb3J0Zm9saW8vUG9ydGZvbGlvSW5kZXhNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogTWVtb3J5IGZpbGVzIGFyZSBwdXJlIFlBTUwgKG5vdCBNYXJrZG93biB3aXRoIGZyb250bWF0dGVyKSwgc28gU2VjdXJlWWFtbFBhcnNlciBjYW5ub3QgYmUgdXNlZC4gVXNlcyB5YW1sLmxvYWQgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgKyBzaXplIHZhbGlkYXRpb24gKyB0eXBlIGNoZWNraW5nIGZvciBzZWN1cml0eS4gVGhlc2UgYXJlIHRydXN0ZWQgbG9jYWwgdXNlciBmaWxlcy4gRml4IGZvciBpc3N1ZSAjMTE5Ni4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci9yZXNvdXJjZXMvQ2FwYWJpbGl0eUluZGV4UmVzb3VyY2UudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBjYXBhYmlsaXR5LWluZGV4LnlhbWwgaXMgYSBwdXJlIFlBTUwgZmlsZSAobm90IE1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIpLCBzbyBTZWN1cmVZYW1sUGFyc2VyIGNhbm5vdCBiZSB1c2VkLiBVc2VzIHlhbWwubG9hZCB3aXRoIEZBSUxTQUZFX1NDSEVNQSB3aGljaCBwcmV2ZW50cyBjb2RlIGV4ZWN1dGlvbi4gVGhpcyBpcyBhIHRydXN0ZWQgbG9jYWwgc3lzdGVtLWdlbmVyYXRlZCBmaWxlIChjcmVhdGVkIGJ5IEVuaGFuY2VkSW5kZXhNYW5hZ2VyKS4gU2FtZSBzZWN1cml0eSBwYXR0ZXJuIGFzIENvbmZpZ01hbmFnZXIgYW5kIFBvcnRmb2xpb0luZGV4TWFuYWdlciBmb3IgcHVyZSBZQU1MIGZpbGVzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9Eb2xsaG91c2VUb0FudGhyb3BpY0NvbnZlcnRlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEZvcm1hdCB0cmFuc2Zvcm1lciwgbm90IHNlY3VyaXR5IGJvdW5kYXJ5LiBVc2VzIHlhbWwubG9hZCB3aXRoIENPUkVfU0NIRU1BIHRvIHByZXZlbnQgZGVzZXJpYWxpemF0aW9uIGF0dGFja3MuIENhbm5vdCB1c2UgU2VjdXJlWWFtbFBhcnNlciAoZXhwZWN0cyBmdWxsIE1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIsIG5vdCBleHRyYWN0ZWQgWUFNTCBzdHJpbmdzKS4gUHJlc2VydmVzIGNvbnRlbnQgZmlkZWxpdHkgLSBubyBtb2RpZmljYXRpb24uIElucHV0IHNraWxscyBhbHJlYWR5IHZhbGlkYXRlZCAoZnJvbSBEb2xsaG91c2VNQ1Agc3lzdGVtKS4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL2NvbnZlcnRlcnMvQW50aHJvcGljVG9Eb2xsaG91c2VDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBGb3JtYXQgdHJhbnNmb3JtZXIsIG5vdCBzZWN1cml0eSBib3VuZGFyeS4gVXNlcyB5YW1sLmxvYWQgd2l0aCBDT1JFX1NDSEVNQSB0byBwcmV2ZW50IGRlc2VyaWFsaXphdGlvbiBhdHRhY2tzLiBDYW5ub3QgdXNlIFNlY3VyZVlhbWxQYXJzZXIgKHByb2Nlc3NlcyBleHRyYWN0ZWQgWUFNTCBzdHJpbmdzKS4gUHJlc2VydmVzIGNvbnRlbnQgZmlkZWxpdHkgLSBubyBtb2RpZmljYXRpb24uIE91dHB1dCB2YWxpZGF0ZWQgd2hlbiBsb2FkZWQgdmlhIFNraWxsTWFuYWdlci5sb2FkKCkgd2hpY2ggYXBwbGllcyBTZWN1cmVZYW1sUGFyc2VyLiBQUiAjMTQwMCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvYXVkaXQvc2Nhbm5lcnMvQ29uZmlndXJhdGlvblNjYW5uZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBTZWN1cml0eSBzY2FubmVyIGZvciBwdXJlIFlBTUwgY29uZmlndXJhdGlvbiBmaWxlcyAobm90IE1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIpLiBVc2VzIHlhbWwubG9hZCB3aXRoIEZBSUxTQUZFX1NDSEVNQSB3aGljaCBwcmV2ZW50cyBjb2RlIGV4ZWN1dGlvbiBhbmQgYXJiaXRyYXJ5IG9iamVjdCBpbnN0YW50aWF0aW9uLiBTZWN1cmVZYW1sUGFyc2VyIGlzIGRlc2lnbmVkIGZvciBlbGVtZW50IGZpbGVzIChNYXJrZG93biB3aXRoIFlBTUwgZnJvbnRtYXR0ZXIpLCBub3QgcmF3IGNvbmZpZyBmaWxlcy4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL1NlcmlhbGl6YXRpb25TZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogVXNlcyBzYWZlIFlBTUwgc2NoZW1hIChGQUlMU0FGRV9TQ0hFTUEgb3IgSlNPTl9TQ0hFTUEpIHNlbGVjdGVkIGJ5IGdldFlhbWxTY2hlbWEoKS4gU2VjdXJlWWFtbFBhcnNlciBpcyBkZXNpZ25lZCBmb3IgTWFya2Rvd24gZmlsZXMgd2l0aCBmcm9udG1hdHRlciwgbm90IHB1cmUgWUFNTCBwYXJzaW5nLiBMaW5lcyAzMDcgYW5kIDgxMiB1c2Ugc2FmZSBzY2hlbWFzIHRoYXQgcHJldmVudCBjb2RlIGV4ZWN1dGlvbi4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL21jcC1hcWwvTUNQQVFMSGFuZGxlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEltcG9ydCBvcGVyYXRpb24gcGFyc2VzIHB1cmUgWUFNTCBkYXRhIGZyb20gZXhwb3J0IHBhY2thZ2VzIChub3QgTWFya2Rvd24gd2l0aCBmcm9udG1hdHRlcikuIFVzZXMgeWFtbC5sb2FkIHdpdGggSlNPTl9TQ0hFTUEgd2hpY2ggcHJldmVudHMgY29kZSBleGVjdXRpb24gYW5kIGlzIGFwcHJvcHJpYXRlIGZvciBzdHJ1Y3R1cmVkIGVsZW1lbnQgZGF0YS4gU2VjdXJlWWFtbFBhcnNlciBjYW5ub3QgYmUgdXNlZCBhcyBpdCBleHBlY3RzIE1hcmtkb3duIGZyb250bWF0dGVyIGZvcm1hdC4gUFIgIzE5MydcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNlcnZpY2UgTGF5ZXIgRmFsc2UgUG9zaXRpdmVzIChSZWZhY3RvciBQUilcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9TZXJpYWxpemF0aW9uU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IFNlcmlhbGl6YXRpb25TZXJ2aWNlIGhhbmRsZXMgZGF0YSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbi4gVW5pY29kZSBub3JtYWxpemF0aW9uIGlzIGFwcGxpZWQgYXQgdGhlIHZhbGlkYXRpb24gbGF5ZXIgKFZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlQW5kU2FuaXRpemVJbnB1dCBjYWxscyBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSkgYmVmb3JlIGRhdGEgcmVhY2hlcyBzZXJpYWxpemF0aW9uLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvRmlsZU9wZXJhdGlvbnNTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRmlsZU9wZXJhdGlvbnNTZXJ2aWNlIGhhbmRsZXMgZmlsZSBJL08gb3BlcmF0aW9ucy4gUGF0aHMgYXJlIHZhbGlkYXRlZCBieSBQYXRoVmFsaWRhdG9yLiBDb250ZW50IHZhbGlkYXRpb24gaW5jbHVkaW5nIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBoYXBwZW5zIGF0IHRoZSBlbGVtZW50IG1hbmFnZXIgbGF5ZXIgYmVmb3JlIGZpbGUgb3BlcmF0aW9ucy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEludGVyZmFjZS90eXBlIGRlZmluaXRpb24gZmlsZSBvbmx5LiBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgdXNlIFZhbGlkYXRpb25TZXJ2aWNlIHdoaWNoIHBlcmZvcm1zIFVuaWNvZGUgbm9ybWFsaXphdGlvbiB2aWEgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoKS4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBDYWxscyBJbnB1dE5vcm1hbGl6ZXIubm9ybWFsaXplKCkgYXQgdGhlIHZhbGlkYXRpb24gYm91bmRhcnkgKGxpbmUgNjQpIHdoaWNoIHJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZXMgYWxsIHN0cmluZ3MgdmlhIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKCkuIFRoaXMgaXMgdGhlIGNlbnRyYWxpemVkIG5vcm1hbGl6YXRpb24gcG9pbnQgZm9yIGFsbCBlbGVtZW50IHZhbGlkYXRvcnMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL1BlcnNvbmFFbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRXh0ZW5kcyBHZW5lcmljRWxlbWVudFZhbGlkYXRvciB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dCB2aWEgSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZSgpIGF0IHRoZSBib3VuZGFyeS4gQ3VzdG9tIGZpZWxkcyBhZGRpdGlvbmFsbHkgbm9ybWFsaXplZCBieSBWYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZUFuZFNhbml0aXplSW5wdXQoKS4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vTWVtb3J5RWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIEN1c3RvbSBmaWVsZHMgYWRkaXRpb25hbGx5IG5vcm1hbGl6ZWQgYnkgVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVBbmRTYW5pdGl6ZUlucHV0KCkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL1RlbXBsYXRlRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIEN1c3RvbSBmaWVsZHMgYWRkaXRpb25hbGx5IG5vcm1hbGl6ZWQgYnkgVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVBbmRTYW5pdGl6ZUlucHV0KCkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL0Vuc2VtYmxlRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIEN1c3RvbSBmaWVsZHMgYWRkaXRpb25hbGx5IG5vcm1hbGl6ZWQgYnkgVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVBbmRTYW5pdGl6ZUlucHV0KCkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL1NraWxsRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIHZhbGlkYXRlTWV0YWRhdGEoKSByZWNlaXZlcyBwcmUtbm9ybWFsaXplZCBlbGVtZW50Lm1ldGFkYXRhIGZyb20gU2tpbGwgY29uc3RydWN0b3IgKFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplICsgc2FuaXRpemVJbnB1dCkuIFBSICM0NTcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3ZhbGlkYXRpb24vQWdlbnRFbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRXh0ZW5kcyBHZW5lcmljRWxlbWVudFZhbGlkYXRvciB3aGljaCBub3JtYWxpemVzIGFsbCBpbnB1dCB2aWEgSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZSgpIGF0IHRoZSBib3VuZGFyeS4gQWdlbnQtc3BlY2lmaWMgZmllbGRzIChnb2FsLCBzeXN0ZW1Qcm9tcHQsIGFjdGl2YXRlcywgdG9vbHMsIGF1dG9ub215KSBhZGRpdGlvbmFsbHkgbm9ybWFsaXplZCBieSBWYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZUNvbnRlbnQoKS4gUFIgIzEzNCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9Eb2xsaG91c2VUb0FudGhyb3BpY0NvbnZlcnRlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEZvcm1hdCB0cmFuc2Zvcm1lciwgbm90IHNlY3VyaXR5IGJvdW5kYXJ5LiBQcmVzZXJ2ZXMgY29udGVudCBmaWRlbGl0eSB3aXRob3V0IFVuaWNvZGUgbm9ybWFsaXphdGlvbi4gSW5wdXQgc2tpbGxzIGFscmVhZHkgdmFsaWRhdGVkIChmcm9tIERvbGxob3VzZU1DUCBzeXN0ZW0pLiBPbmUtdG8tb25lIG1lY2hhbmljYWwgdHJhbnNmb3JtYXRpb24gLSBubyBjb250ZW50IG1vZGlmaWNhdGlvbi4gU2VjdXJpdHkgYm91bmRhcnkgaXMgU2tpbGxNYW5hZ2VyLmxvYWQoKSwgbm90IGNvbnZlcnRlcnMuIFBSICMxNDAwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0FudGhyb3BpY1RvRG9sbGhvdXNlQ29udmVydGVyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogRm9ybWF0IHRyYW5zZm9ybWVyLCBub3Qgc2VjdXJpdHkgYm91bmRhcnkuIFByZXNlcnZlcyBjb250ZW50IGZpZGVsaXR5IHdpdGhvdXQgVW5pY29kZSBub3JtYWxpemF0aW9uLiBPdXRwdXQgdmFsaWRhdGVkIHdoZW4gbG9hZGVkIHZpYSBTa2lsbE1hbmFnZXIubG9hZCgpIHdoaWNoIGFwcGxpZXMgZnVsbCBzZWN1cml0eSB2YWxpZGF0aW9uIChTZWN1cmVZYW1sUGFyc2VyICsgVW5pY29kZVZhbGlkYXRvcikuIE9uZS10by1vbmUgbWVjaGFuaWNhbCB0cmFuc2Zvcm1hdGlvbi4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbnZlcnRlcnMvQ29udGVudEV4dHJhY3Rvci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEZvcm1hdCBhbmFseXNpcyB0b29sIGZvciBjb252ZXJ0ZXJzLCBub3Qgc2VjdXJpdHkgYm91bmRhcnkuIFByZXNlcnZlcyBjb250ZW50IGZpZGVsaXR5IHdpdGhvdXQgbW9kaWZpY2F0aW9uLiBVc2VkIGJ5IGZvcm1hdCB0cmFuc2Zvcm1lcnMgd2hpY2ggcHJlc2VydmUgb25lLXRvLW9uZSBjb3JyZXNwb25kZW5jZS4gTm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nIC0gaW50ZXJuYWwgdXRpbGl0eSBmb3IgbWVjaGFuaWNhbCBjb252ZXJzaW9uLiBQUiAjMTQwMCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9Eb2xsaG91c2VUb0FudGhyb3BpY0NvbnZlcnRlci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IENvbnZlcnRlcnMgYXJlIGZvcm1hdCB0cmFuc2Zvcm1lcnMsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zLiBBdWRpdCBsb2dnaW5nIGhhcHBlbnMgYXQgQ0xJIGxldmVsIChjbGkvY29udmVydC50cyBsaW5lIDI1MSkgd2hlcmUgY29udmVyc2lvbiBvcGVyYXRpb25zIGFyZSBsb2dnZWQuIENvbnZlcnRlcnMgYXJlIGludGVybmFsIHV0aWxpdGllcywgbm90IHVzZXItZmFjaW5nIHNlY3VyaXR5IGJvdW5kYXJpZXMuIFBSICMxNDAwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0FudGhyb3BpY1RvRG9sbGhvdXNlQ29udmVydGVyLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogQ29udmVydGVycyBhcmUgZm9ybWF0IHRyYW5zZm9ybWVycywgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMuIEF1ZGl0IGxvZ2dpbmcgaGFwcGVucyBhdCBDTEkgbGV2ZWwgKGNsaS9jb252ZXJ0LnRzIGxpbmUgMjUxKSB3aGVyZSBjb252ZXJzaW9uIG9wZXJhdGlvbnMgYXJlIGxvZ2dlZC4gQ29udmVydGVycyBhcmUgaW50ZXJuYWwgdXRpbGl0aWVzLCBub3QgdXNlci1mYWNpbmcgc2VjdXJpdHkgYm91bmRhcmllcy4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci9yZXNvdXJjZXMvQ2FwYWJpbGl0eUluZGV4UmVzb3VyY2UudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBGaWxlIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSBvcy5ob21lZGlyKCkgKHN5c3RlbS1wcm92aWRlZCkgd2l0aCBoYXJkY29kZWQgcGF0aCBzZWdtZW50cy4gTm8gdXNlciBpbnB1dCBmbG93cyB0aHJvdWdoIHRoaXMgY29kZS4gVGhlIGNhcGFiaWxpdHktaW5kZXgueWFtbCBmaWxlIGlzIHN5c3RlbS1nZW5lcmF0ZWQgYnkgRW5oYW5jZWRJbmRleE1hbmFnZXIsIG5vdCB1c2VyLXByb3ZpZGVkLidcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ2xlYXItdGV4dCBMb2dnaW5nIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDEwJyxcbiAgICBmaWxlOiAnc3JjL3V0aWxzL2xvZ2dlci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IFRoZSBsb2dnZXIgYWxyZWFkeSBzYW5pdGl6ZXMgYWxsIHNlbnNpdGl2ZSBkYXRhIHRocm91Z2ggc2FuaXRpemVNZXNzYWdlKCkgYW5kIHNhbml0aXplT2JqZWN0KCkgbWV0aG9kcy4gQWxsIHNlbnNpdGl2ZSBmaWVsZHMgKHRva2Vucywga2V5cywgcGFzc3dvcmRzLCBldGMuKSBhcmUgcmVwbGFjZWQgd2l0aCBbUkVEQUNURURdIGJlZm9yZSBhbnkgY29uc29sZSBvdXRwdXQuIExpbmVzIDI4OCwgMjkxLCBhbmQgMjk1IG9ubHkgbG9nIHByZS1zYW5pdGl6ZWQgc2FmZSBtZXNzYWdlcy4nXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNlY3VyaXR5IFJ1bGUgRGVmaW5pdGlvbiBGaWxlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS9hdWRpdC9ydWxlcy9TZWN1cml0eVJ1bGVzLnRzJyxcbiAgICByZWFzb246ICdUaGlzIGlzIGEgcmVnZXggcGF0dGVybiBkZWZpbml0aW9uIGZvciBkZXRlY3RpbmcgaW5uZXJIVE1MIHVzYWdlLCBub3QgYWN0dWFsIHVzYWdlJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQZXJzb25hIExvYWRpbmcgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDEnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS9QZXJzb25hTG9hZGVyLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hTG9hZGVyIHZhbGlkYXRlcyBwZXJzb25hcyB0aHJvdWdoIFNlY3VyZVlhbWxQYXJzZXIgYW5kIENvbnRlbnRWYWxpZGF0b3InXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAxJyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvUGVyc29uYU1hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBQZXJzb25hTWFuYWdlciB2YWxpZGF0ZXMgYWxsIGxvYWRlZCBwZXJzb25hcyB1c2luZyBQZXJzb25hVmFsaWRhdG9yLnZhbGlkYXRlUGVyc29uYSgpIGltbWVkaWF0ZWx5IGFmdGVyIGxvYWRpbmcgYXQgbGluZSAzMjUuIEludmFsaWQgcGVyc29uYXMgYXJlIHJlamVjdGVkIGFuZCByZW1vdmVkIGZyb20gY2FjaGUuIFBSICMxJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVbmljb2RlIE5vcm1hbGl6YXRpb24gRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdHlwZXMvKi50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3RlbGVtZXRyeS90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVGVsZW1ldHJ5IHR5cGUgZGVmaW5pdGlvbiBmaWxlIC0gY29udGFpbnMgb25seSBUeXBlU2NyaXB0IGludGVyZmFjZXMsIG5vIHJ1bnRpbWUgY29kZSBvciB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVsZW1ldHJ5L3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUZWxlbWV0cnkgdHlwZSBkZWZpbml0aW9uIGZpbGUgLSBDSSBwYXRoIHZhcmlhbnQsIGNvbnRhaW5zIG9ubHkgVHlwZVNjcmlwdCBpbnRlcmZhY2VzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90eXBlcy9lbGVtZW50cy8qLnRzJyxcbiAgICByZWFzb246ICdFbGVtZW50IGludGVyZmFjZSBmaWxlcyBhcmUgdHlwZSBkZWZpbml0aW9ucyB0aGF0IGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2Vycm9ycy8qLnRzJyxcbiAgICByZWFzb246ICdFcnJvciBjbGFzc2VzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbmZpZy8qLnRzJyxcbiAgICByZWFzb246ICdDb25maWd1cmF0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQgZGlyZWN0bHknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbnN0YW50cy8qLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudCBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBjb250YWlucyBvbmx5IHR5cGUgZGVmaW5pdGlvbnMgYW5kIGNvbnN0YW50cywgbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3NyYy9lbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gY29udGFpbnMgb25seSB0eXBlIGRlZmluaXRpb25zIGFuZCBjb25zdGFudHMsIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9lbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gQ0kgZW52aXJvbm1lbnRzIG1heSBoYXZlIGRpZmZlcmVudCBwYXRoIHN0cnVjdHVyZXMsIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdlbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gaGFuZGxlcyBjYXNlIHdoZXJlIHNyYy8gcHJlZml4IGlzIHN0cmlwcGVkLCBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3JldGVudGlvbi90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGUgZm9yIHJldGVudGlvbiBwb2xpY3kgaW50ZXJmYWNlcyAtIGNvbnRhaW5zIG9ubHkgVHlwZVNjcmlwdCBpbnRlcmZhY2VzIGFuZCB0eXBlIGRlZmluaXRpb25zLCBubyBydW50aW1lIGNvZGUgb3IgdXNlciBpbnB1dCBwcm9jZXNzaW5nLiBBY3R1YWwgVW5pY29kZSBub3JtYWxpemF0aW9uIGlzIGltcGxlbWVudGVkIGluIFJldGVudGlvblBvbGljeVNlcnZpY2UgYW5kIE1lbW9yeVJldGVudGlvblN0cmF0ZWd5LiBQUiAjNTInXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL21lbW9yaWVzL3V0aWxzLnRzJyxcbiAgICByZWFzb246ICdNZW1vcnkgdXRpbGl0aWVzIC0gYWxsIGV4dGVybmFsIGlucHV0IGlzIG5vcm1hbGl6ZWQgdmlhIFVuaWNvZGVWYWxpZGF0b3IgaW4gdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3NyYy9lbGVtZW50cy9tZW1vcmllcy91dGlscy50cycsXG4gICAgcmVhc29uOiAnTWVtb3J5IHV0aWxpdGllcyAtIGFsbCBleHRlcm5hbCBpbnB1dCBpcyBub3JtYWxpemVkIHZpYSBVbmljb2RlVmFsaWRhdG9yIGluIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9lbGVtZW50cy9tZW1vcmllcy91dGlscy50cycsXG4gICAgcmVhc29uOiAnTWVtb3J5IHV0aWxpdGllcyAtIENJIHBhdGggdmFyaWFudCwgYWxsIGV4dGVybmFsIGlucHV0IGlzIG5vcm1hbGl6ZWQgdmlhIFVuaWNvZGVWYWxpZGF0b3InXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnZWxlbWVudHMvbWVtb3JpZXMvdXRpbHMudHMnLFxuICAgIHJlYXNvbjogJ01lbW9yeSB1dGlsaXRpZXMgLSBzcmMtc3RyaXBwZWQgcGF0aCB2YXJpYW50LCBhbGwgZXh0ZXJuYWwgaW5wdXQgaXMgbm9ybWFsaXplZCB2aWEgVW5pY29kZVZhbGlkYXRvcidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9tZW1vcmllcy8qLnRzJyxcbiAgICByZWFzb246ICdNZW1vcnkgZWxlbWVudCBmaWxlcyAtIGFsbCB1c2VyIGlucHV0IGlzIHByb3Blcmx5IG5vcm1hbGl6ZWQgaW4gTWVtb3J5LnRzIGFuZCBNZW1vcnlNYW5hZ2VyLnRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9lbGVtZW50cy9tZW1vcmllcy8qLnRzJyxcbiAgICByZWFzb246ICdNZW1vcnkgZWxlbWVudCBmaWxlcyAtIGFsbCB1c2VyIGlucHV0IGlzIHByb3Blcmx5IG5vcm1hbGl6ZWQgaW4gTWVtb3J5LnRzIGFuZCBNZW1vcnlNYW5hZ2VyLnRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy91dGlscy92ZXJzaW9uLnRzJyxcbiAgICByZWFzb246ICdWZXJzaW9uIHV0aWxpdHkgb25seSBoYW5kbGVzIGludGVybmFsIHZlcnNpb24gc3RyaW5ncywgbm90IHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NhY2hlLyoudHMnLFxuICAgIHJlYXNvbjogJ0NhY2hlIGxheWVyIHJlY2VpdmVzIGFscmVhZHktbm9ybWFsaXplZCBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvKiovKi50cycsXG4gICAgcmVhc29uOiAnU2VjdXJpdHkgbW9kdWxlcyBoYW5kbGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiB0aGVtc2VsdmVzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9pbmRleC50cycsXG4gICAgcmVhc29uOiAnTWFpbiBlbnRyeSBwb2ludCBkZWxlZ2F0ZXMgdG8gU2VydmVyU2V0dXAgd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvU2VydmVyU2V0dXAudHMnLFxuICAgIHJlYXNvbjogJ0NFTlRSQUxJWkVEIFVOSUNPREUgTk9STUFMSVpBVElPTjogVGhpcyBpcyB3aGVyZSBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgaW1wbGVtZW50ZWQgZm9yIEFMTCB0b29sIGlucHV0cy4gU2VydmVyU2V0dXAubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpIChsaW5lcyAxMTMtMTQ2KSByZWN1cnNpdmVseSBub3JtYWxpemVzIGFsbCBzdHJpbmcgYXJndW1lbnRzIGJlZm9yZSB0aGV5IHJlYWNoIGFueSBoYW5kbGVyLiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFyY2hpdGVjdHVyYWwgcGF0dGVybiAoc2luZ2xlIGVudHJ5IHBvaW50KS4gUFIgIzEnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDZW50cmFsaXplZCBVbmljb2RlIE5vcm1hbGl6YXRpb24gLSBQUiAjMVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEFsbCBoYW5kbGVycyByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAudHNcbiAgLy8gU2VydmVyU2V0dXAuc2V0dXBDYWxsVG9vbEhhbmRsZXIoKSBjYWxscyBub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKClcbiAgLy8gb24gbGluZSA4OSBCRUZPUkUgZGlzcGF0Y2hpbmcgdG8gYW55IGhhbmRsZXIuIFRoaXMgcmVjdXJzaXZlbHlcbiAgLy8gbm9ybWFsaXplcyBhbGwgc3RyaW5ncyBpbiB0aGUgYXJndW1lbnRzIG9iamVjdC5cbiAgLy8gU2VlIHNyYy9zZXJ2ZXIvU2VydmVyU2V0dXAudHMgbGluZXMgMTEzLTE0NiBmb3IgaW1wbGVtZW50YXRpb24uXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LWFyY2hpdmUvKiovKicsXG4gICAgcmVhc29uOiAnQ0VOVFJBTElaRUQgTk9STUFMSVpBVElPTjogVGVzdCBhcmNoaXZlIGZpbGVzIGFyZSBhcmNoaXZlZCBleHBlcmltZW50cywgbm90IHByb2R1Y3Rpb24gY29kZS4gQWxsIHByb2R1Y3Rpb24gdXNlciBpbnB1dCBpcyBub3JtYWxpemVkIGluIFNlcnZlclNldHVwLnRzIGJlZm9yZSByZWFjaGluZyBoYW5kbGVycy4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzLyoudHMnLFxuICAgIHJlYXNvbjogJ0NFTlRSQUxJWkVEIE5PUk1BTElaQVRJT046IEFsbCBoYW5kbGVycyByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpIChsaW5lcyA4OSwgMTEzLTE0NikuIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBoYXBwZW5zIGF0IHRoZSBlbnRyeSBwb2ludCBiZWZvcmUgaGFuZGxlcnMgYXJlIGludm9rZWQuIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy8qKi8qLnRzJyxcbiAgICByZWFzb246ICdDRU5UUkFMSVpFRCBOT1JNQUxJWkFUSU9OOiBBbGwgaGFuZGxlciBzdHJhdGVnaWVzIGFuZCBtb2R1bGVzIHJlY2VpdmUgcHJlLW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBTZXJ2ZXJTZXR1cC5ub3JtYWxpemVBcmd1bWVudHNVbmljb2RlKCkuIElucHV0IGlzIHNhbml0aXplZCBhdCB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9lbGVtZW50cy8qKi8qLnRzJyxcbiAgICByZWFzb246ICdDRU5UUkFMSVpFRCBOT1JNQUxJWkFUSU9OOiBFbGVtZW50IG1hbmFnZXJzIHJlY2VpdmUgcHJlLW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBoYW5kbGVycywgd2hpY2ggcmVjZWl2ZSBwcmUtbm9ybWFsaXplZCBpbnB1dCBmcm9tIFNlcnZlclNldHVwLiBEZWZlbnNlIGluIGRlcHRoIHdpdGggY2VudHJhbGl6ZWQgZW50cnkgcG9pbnQgbm9ybWFsaXphdGlvbi4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2RpL0NvbnRhaW5lci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IERJIENvbnRhaW5lciBvbmx5IHdpcmVzIGRlcGVuZGVuY2llcywgZG9lcyBub3QgcHJvY2VzcyB1c2VyIGlucHV0LiBBbGwgdXNlciBpbnB1dCBpcyBub3JtYWxpemVkIGluIFNlcnZlclNldHVwIGJlZm9yZSByZWFjaGluZyBhbnkgaW5qZWN0ZWQgc2VydmljZS4gUFIgIzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbGxlY3Rpb24vKi50cycsXG4gICAgcmVhc29uOiAnTWFya2V0cGxhY2UgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS8qLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdXBkYXRlLyoudHMnLFxuICAgIHJlYXNvbjogJ1VwZGF0ZSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3Rvb2xzLyoudHMnLFxuICAgIHJlYXNvbjogJ1Rvb2wgZmlsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGUgZG9lcyBub3QgcHJvY2VzcyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvdG9vbHMvKi50cycsXG4gICAgcmVhc29uOiAnU2VydmVyIHRvb2xzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIFNlcnZlclNldHVwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NjcmlwdHMvKiovKicsXG4gICAgcmVhc29uOiAnQnVpbGQgYW5kIHV0aWxpdHkgc2NyaXB0cyBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90b29scy9wb3J0Zm9saW8vdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlIGNvbnRhaW5pbmcgb25seSBUeXBlU2NyaXB0IGludGVyZmFjZXMgLSBubyBydW50aW1lIGNvZGUgb3IgdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90b29scy8qKi90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwcm9jZXNzIHVzZXIgaW5wdXQgLSBjb21waWxlLXRpbWUgb25seSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvQnVpbGRJbmZvU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnQnVpbGRJbmZvU2VydmljZSBvbmx5IHByb2Nlc3NlcyBzeXN0ZW0gaW5mb3JtYXRpb24gKHBhY2thZ2UuanNvbiwgZ2l0IGNvbW1hbmRzLCBEb2NrZXIgcnVudGltZSkgLSB0aGUgTUNQIHRvb2wgdGFrZXMgbm8gcGFyYW1ldGVycyBhbmQgbm8gdXNlciBpbnB1dCBmbG93cyB0aHJvdWdoIHRoaXMgc2VydmljZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvU3luY0hhbmRsZXJWMi50cycsXG4gICAgcmVhc29uOiAnU3luY0hhbmRsZXJWMiByZWNlaXZlcyBhbHJlYWR5LW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuIEFsbCB1c2VyIGlucHV0IGlzIG5vcm1hbGl6ZWQgaW4gU2VydmVyU2V0dXAgYmVmb3JlIHJlYWNoaW5nIGhhbmRsZXJzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvQ29uZmlnSGFuZGxlci50cycsXG4gICAgcmVhc29uOiAnQ29uZmlnSGFuZGxlciByZWNlaXZlcyBhbHJlYWR5LW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuIEFsbCB1c2VyIGlucHV0IGlzIG5vcm1hbGl6ZWQgaW4gU2VydmVyU2V0dXAgYmVmb3JlIHJlYWNoaW5nIGhhbmRsZXJzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LXN5bmMtb3BlcmF0aW9ucy5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IGZpbGUgZm9yIGRldmVsb3BtZW50IHRlc3RpbmcuIERvZXMgbm90IHByb2Nlc3MgcHJvZHVjdGlvbiB1c2VyIGlucHV0LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZXN0LXN5bmMtb3BlcmF0aW9ucy5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IGZpbGUgZm9yIGRldmVsb3BtZW50IHRlc3RpbmcuIERvZXMgbm90IHByb2Nlc3MgcHJvZHVjdGlvbiB1c2VyIGlucHV0LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LSouanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBmb3IgZGV2ZWxvcG1lbnQgdGVzdGluZy4gRG8gbm90IHByb2Nlc3MgcHJvZHVjdGlvbiB1c2VyIGlucHV0LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICd0ZXN0LSouanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBmaWxlcyBpbiByb290IGRpcmVjdG9yeS4gQXVkaXQgbG9nZ2luZyBub3QgcmVxdWlyZWQgZm9yIGRldmVsb3BtZW50IHRlc3Qgc2NyaXB0cy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3Rlc3QtKi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IGZpbGVzIHVzaW5nIHNwYXduIHdpdGggYXJyYXkgYXJndW1lbnRzIHdoaWNoIGlzIHNhZmUgZnJvbSBpbmplY3Rpb24uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICcqKi90ZXN0LWVsZW1lbnQtbGlmZWN5Y2xlLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogc3Bhd24gd2l0aCBhcnJheSBhcmd1bWVudHMgaXMgc2FmZSAobm8gc2hlbGwgaW52b2NhdGlvbikuIEdpdEh1YiB0b2tlbiBwYXNzZWQgYXMgYXJyYXkgZWxlbWVudCwgbm90IGNvbmNhdGVuYXRlZCBpbnRvIGNvbW1hbmQgc3RyaW5nLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZXN0LWVsZW1lbnQtbGlmZWN5Y2xlLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogVGVzdCBoYXJuZXNzIHdpdGggbm8gdXNlciBpbnB1dCBtZWNoYW5pc21zLiBBbGwgZGF0YSBpcyBoYXJkY29kZWQgdGVzdCBzY2VuYXJpb3Mgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAndGVzdC1mdWxsLXZhbGlkYXRpb24uanMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBzcGF3biB3aXRoIGFycmF5IGFyZ3VtZW50cyBpcyBzYWZlLiBEb2NrZXIgY29tbWFuZCB1c2VzIGFycmF5IGFyZ3MgcHJldmVudGluZyBzaGVsbCBpbmplY3Rpb24uIExpbmUgMzcyLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovdGVzdC1mdWxsLXZhbGlkYXRpb24uanMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBzcGF3biB3aXRoIGFycmF5IGFyZ3VtZW50cyBpcyBzYWZlLiBEb2NrZXIgY29tbWFuZCB1c2VzIGFycmF5IGFyZ3MgcHJldmVudGluZyBzaGVsbCBpbmplY3Rpb24uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3QtZnVsbC12YWxpZGF0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHZhbGlkYXRpb24gc2NyaXB0IC0gbm90IHByb2R1Y3Rpb24gY29kZS4gTm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nLCBvbmx5IHRlc3Qgc2NlbmFyaW9zLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi90ZXN0LWZ1bGwtdmFsaWRhdGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB2YWxpZGF0aW9uIHNjcmlwdCAtIG5vdCBwcm9kdWN0aW9uIGNvZGUuIE5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZywgb25seSB0ZXN0IHNjZW5hcmlvcy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAndGVzdC12ZXJzaW9uLXZhbGlkYXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBzY3JpcHQgLSBub3QgcHJvZHVjdGlvbiBjb2RlLiBBdWRpdCBsb2dnaW5nIG5vdCByZXF1aXJlZCBmb3IgdGVzdCB1dGlsaXRpZXMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJyoqL3Rlc3QtdmVyc2lvbi12YWxpZGF0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgc2NyaXB0IC0gbm90IHByb2R1Y3Rpb24gY29kZS4gQXVkaXQgbG9nZ2luZyBub3QgcmVxdWlyZWQgZm9yIHRlc3QgdXRpbGl0aWVzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LW1lbW9yeS1kZWxldGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIC0gTm8gdXNlciBpbnB1dCBwcm9jZXNzZWQsIGFsbCB0ZXN0IGRhdGEgaXMgaW50ZXJuYWxseSBnZW5lcmF0ZWQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSAtIE5vIHVzZXIgaW5wdXQgcHJvY2Vzc2VkLCBhbGwgdGVzdCBkYXRhIGlzIGludGVybmFsbHkgZ2VuZXJhdGVkJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3Rlc3QtbWVtb3J5LWRlbGV0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgLSBBdWRpdCBsb2dnaW5nIGhhcHBlbnMgaW4gdGhlIHNlcnZlciBkZWxldGVFbGVtZW50IG1ldGhvZCwgbm90IGluIHRlc3QnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnKiovdGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSAtIEF1ZGl0IGxvZ2dpbmcgaGFwcGVucyBpbiB0aGUgc2VydmVyIGRlbGV0ZUVsZW1lbnQgbWV0aG9kLCBub3QgaW4gdGVzdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAndGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ0ZhbHNlIHBvc2l0aXZlIC0gVGVtcGxhdGUgbGl0ZXJhbHMgaW4gZXJyb3IgbWVzc2FnZXMgYXJlIG5vdCBTUUwgcXVlcmllcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAnKiovdGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ0ZhbHNlIHBvc2l0aXZlIC0gVGVtcGxhdGUgbGl0ZXJhbHMgaW4gZXJyb3IgbWVzc2FnZXMgYXJlIG5vdCBTUUwgcXVlcmllcydcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEF1ZGl0IExvZ2dpbmcgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvdHlwZXMvKi50cycsXG4gICAgcmVhc29uOiAnVHlwZSBkZWZpbml0aW9uIGZpbGVzIGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3R5cGVzL2VsZW1lbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0VsZW1lbnQgaW50ZXJmYWNlIGZpbGVzIGFyZSB0eXBlIGRlZmluaXRpb25zIHRoYXQgZG8gbm90IHBlcmZvcm0gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29uc3RhbnRzLyoudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50IGZpbGVzIGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2NvbmZpZy8qLnRzJyxcbiAgICByZWFzb246ICdDb25maWd1cmF0aW9uIGZpbGVzIGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBjb250YWlucyBvbmx5IHR5cGUgZGVmaW5pdGlvbnMgYW5kIGNvbnN0YW50cywgbm8gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi9zcmMvZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudHMgZmlsZSAtIGNvbnRhaW5zIG9ubHkgdHlwZSBkZWZpbml0aW9ucyBhbmQgY29uc3RhbnRzLCBubyBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJyoqL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBDSSBwYXRoIHZhcmlhbnQsIGNvbnRhaW5zIG9ubHkgdHlwZSBkZWZpbml0aW9ucyBhbmQgY29uc3RhbnRzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBzcmMtc3RyaXBwZWQgcGF0aCB2YXJpYW50LCBjb250YWlucyBvbmx5IHR5cGUgZGVmaW5pdGlvbnMgYW5kIGNvbnN0YW50cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvZXJyb3JzLyoudHMnLFxuICAgIHJlYXNvbjogJ0Vycm9yIGNsYXNzZXMgYXJlIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi8qLmpzb24nLFxuICAgIHJlYXNvbjogJ0pTT04gZmlsZXMgY2Fubm90IGNvbnRhaW4gZXhlY3V0YWJsZSBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdTZWN1cml0eSBtb2R1bGVzIGFyZSBpbmZyYXN0cnVjdHVyZSwgbm90IG9wZXJhdGlvbnMgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG9wZXJhdGlvbnMgYXJlIG5vdCBzZWN1cml0eS1zZW5zaXRpdmUgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG9wZXJhdGlvbnMgYXJlIG5vdCBzZWN1cml0eS1zZW5zaXRpdmUgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hLyoudHMnLFxuICAgIHJlYXNvbjogJ1BlcnNvbmEgb3BlcmF0aW9ucyBhcmUgdmFsaWRhdGVkIGF0IGVudHJ5IHBvaW50LCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS8qKi8qLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hIG9wZXJhdGlvbnMgYXJlIHZhbGlkYXRlZCBhdCBlbnRyeSBwb2ludCwgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZlci90b29scy8qKi8qLnRzJyxcbiAgICByZWFzb246ICdUb29sIGltcGxlbWVudGF0aW9ucyBkZWxlZ2F0ZSB0byBzZXJ2aWNlcyB0aGF0IGhhbmRsZSBzZWN1cml0eSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvaW5kZXgudHMnLFxuICAgIHJlYXNvbjogJ01haW4gZW50cnkgcG9pbnQgZGVsZWdhdGVzIHNlY3VyaXR5IG9wZXJhdGlvbnMgdG8gc3BlY2lhbGl6ZWQgbW9kdWxlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdXRpbHMvRXZpY3RpbmdRdWV1ZS50cycsXG4gICAgcmVhc29uOiAnR2VuZXJpYyBkYXRhIHN0cnVjdHVyZSDigJQgZG9lcyBub3QgcHJvY2VzcyB1c2VyIGlucHV0LiBBbGwgY2FsbGVycyAoQWdlbnQsIFNlY3VyaXR5VGVsZW1ldHJ5LCBTZWN1cml0eU1vbml0b3IsIExvZ2dlcikgc2FuaXRpemUgaW5wdXQgYmVmb3JlIHB1c2hpbmcgdG8gdGhlIHF1ZXVlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy91dGlscy8qLnRzJyxcbiAgICByZWFzb246ICdVdGlsaXR5IGZ1bmN0aW9ucyBhcmUgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMgcmVxdWlyaW5nIGF1ZGl0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy91cGRhdGUvKiovKi50cycsXG4gICAgcmVhc29uOiAnVXBkYXRlIHN5c3RlbSBoYXMgaXRzIG93biBsb2dnaW5nIGFuZCBpcyBub3QgYSBkaXJlY3Qgc2VjdXJpdHkgb3BlcmF0aW9uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlIGRvZXMgbm90IHBlcmZvcm0gb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzY3JpcHRzLyoqLyonLFxuICAgIHJlYXNvbjogJ0J1aWxkIHNjcmlwdHMgZG8gbm90IHBlcmZvcm0gcnVudGltZSBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NjcmlwdHMvbGliL2doLWNvbW1hbmQuanMnLFxuICAgIHJlYXNvbjogJ0NMSSB1dGlsaXR5IC0gU2VjdXJpdHlNb25pdG9yIG5vdCBhdmFpbGFibGUgaW4gc3RhbmRhbG9uZSBzY3JpcHRzLiBTZWN1cml0eSBlbnN1cmVkIHZpYSBpbnB1dCB2YWxpZGF0aW9uIGFuZCBzZWN1cmUgY29tbWFuZCBleGVjdXRpb24gcGF0dGVybnMgKERNQ1AtU0VDLTAwMSwgRE1DUC1TRUMtMDAyKSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi9zY3JpcHRzL2xpYi9naC1jb21tYW5kLmpzJyxcbiAgICByZWFzb246ICdDTEkgdXRpbGl0eSAtIFNlY3VyaXR5TW9uaXRvciBub3QgYXZhaWxhYmxlIGluIHN0YW5kYWxvbmUgc2NyaXB0cy4gU2VjdXJpdHkgZW5zdXJlZCB2aWEgaW5wdXQgdmFsaWRhdGlvbiBhbmQgc2VjdXJlIGNvbW1hbmQgZXhlY3V0aW9uIHBhdHRlcm5zIChETUNQLVNFQy0wMDEsIERNQ1AtU0VDLTAwMiknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3BvcnRmb2xpby9Qb3J0Zm9saW9TeW5jTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnUG9ydGZvbGlvIHN5bmMgb3BlcmF0aW9ucyBhcmUgZmlsZSBtYW5hZ2VtZW50IHRhc2tzLCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucy4gU2VjdXJpdHkgdmFsaWRhdGlvbiBoYXBwZW5zIGF0IHRoZSBNQ1AgcmVxdWVzdCBsYXllci4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL1N5bmNIYW5kbGVyVjIudHMnLFxuICAgIHJlYXNvbjogJ1N5bmMgaGFuZGxlciBkZWxlZ2F0ZXMgdG8gUG9ydGZvbGlvU3luY01hbmFnZXIgd2hpY2ggaGFuZGxlcyBpdHMgb3duIGxvZ2dpbmcuIFNlY3VyaXR5IHZhbGlkYXRpb24gaGFwcGVucyBhdCB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy9Db25maWdIYW5kbGVyLnRzJyxcbiAgICByZWFzb246ICdDb25maWcgaGFuZGxlciBvcGVyYXRpb25zIGFyZSBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zLiBDb25maWdNYW5hZ2VyIGhhbmRsZXMgaXRzIG93biBsb2dnaW5nLidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFF1ZXJ5IFNlcnZpY2VzIC0gSXNzdWUgIzM4IChQUiAjNDYpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUXVlcnkgc2VydmljZXMgcmVjZWl2ZSBwcmUtbm9ybWFsaXplZCBpbnB1dCB2aWEgdHdvIGxheWVyczpcbiAgLy8gMS4gU2VydmVyU2V0dXAubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpIG5vcm1hbGl6ZXMgYWxsIE1DUCB0b29sIGFyZ3VtZW50c1xuICAvLyAyLiBGaWx0ZXJTZXJ2aWNlIHVzZXMgbm9ybWFsaXplU2VhcmNoVGVybSgpIHdoaWNoIGNhbGxzIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKClcbiAgLy8gU2VlIHNyYy91dGlscy9zZWFyY2hVdGlscy50cyBsaW5lcyAxNy0zMCBmb3Igc2Vjb25kYXJ5IG5vcm1hbGl6YXRpb25cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcXVlcnkvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlIGNvbnRhaW5pbmcgb25seSBUeXBlU2NyaXB0IGludGVyZmFjZXMgLSBubyBydW50aW1lIGNvZGUgb3IgdXNlciBpbnB1dCBwcm9jZXNzaW5nLiBQUiAjNDYnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3F1ZXJ5L2luZGV4LnRzJyxcbiAgICByZWFzb246ICdSZS1leHBvcnQgbW9kdWxlIC0gbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nLCBvbmx5IFR5cGVTY3JpcHQgcmUtZXhwb3J0cy4gUFIgIzQ2J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS9QYWdpbmF0aW9uU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnUGFnaW5hdGlvblNlcnZpY2UgcHJvY2Vzc2VzIG51bWVyaWMgcGFyYW1ldGVycyAocGFnZSwgcGFnZVNpemUpIC0gbm8gc3RyaW5nIGlucHV0IHJlcXVpcmluZyBVbmljb2RlIG5vcm1hbGl6YXRpb24uIElucHV0IHByZS12YWxpZGF0ZWQgYXQgTUNQIHJlcXVlc3QgbGF5ZXIuIFBSICM0NidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcXVlcnkvRmlsdGVyU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnRFVBTCBQUk9URUNUSU9OOiAoMSkgSW5wdXQgcHJlLW5vcm1hbGl6ZWQgYnkgU2VydmVyU2V0dXAubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpIGF0IE1DUCBsYXllciwgKDIpIEZpbHRlclNlcnZpY2UgdXNlcyBub3JtYWxpemVTZWFyY2hUZXJtKCkgd2hpY2ggY2FsbHMgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoKS4gU2VlIHNlYXJjaFV0aWxzLnRzOjE3LTMwLiBQUiAjNDYnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3F1ZXJ5L0VsZW1lbnRRdWVyeVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ09yY2hlc3RyYXRvciBzZXJ2aWNlIC0gZGVsZWdhdGVzIHRvIEZpbHRlclNlcnZpY2Ugd2hpY2ggcGVyZm9ybXMgVW5pY29kZSBub3JtYWxpemF0aW9uIHZpYSBub3JtYWxpemVTZWFyY2hUZXJtKCkuIElucHV0IHByZS1ub3JtYWxpemVkIGF0IE1DUCBsYXllci4gUFIgIzQ2J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS9Tb3J0U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnU29ydFNlcnZpY2UgdmFsaWRhdGVzIHNvcnRCeSBhZ2FpbnN0IGVudW0gd2hpdGVsaXN0IChTb3J0YWJsZUZpZWxkKSAtIG5vIGFyYml0cmFyeSBzdHJpbmcgaW5wdXQuIHNvcnRPcmRlciBpcyBlbnVtLXZhbGlkYXRlZC4gTm8gVW5pY29kZSBub3JtYWxpemF0aW9uIG5lZWRlZC4gUFIgIzQ2J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS8qLnRzJyxcbiAgICByZWFzb246ICdRdWVyeSBzZXJ2aWNlcyByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IGZyb20gTUNQIGxheWVyIGFuZCB1c2Ugbm9ybWFsaXplU2VhcmNoVGVybSgpIGZvciBhZGRpdGlvbmFsIHByb3RlY3Rpb24uIFBSICM0NidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENvdmVyYWdlIFJlcG9ydCBGaWxlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ3Rlc3QvY292ZXJhZ2UvKiovKicsXG4gICAgcmVhc29uOiAnQ292ZXJhZ2UgcmVwb3J0IGZpbGVzIGFyZSBhdXRvLWdlbmVyYXRlZCBhbmQgbm90IHBhcnQgb2YgdGhlIGFwcGxpY2F0aW9uIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ3Rlc3RzL2NvdmVyYWdlLyoqLyonLFxuICAgIHJlYXNvbjogJ0NvdmVyYWdlIHJlcG9ydCBmaWxlcyBhcmUgYXV0by1nZW5lcmF0ZWQgYW5kIG5vdCBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi9sY292LXJlcG9ydC8qKi8qJyxcbiAgICByZWFzb246ICdMQ09WIGNvdmVyYWdlIHJlcG9ydCBmaWxlcyBhcmUgYXV0by1nZW5lcmF0ZWQgYW5kIG5vdCBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBEb2N1bWVudGF0aW9uIGFuZCBOb24tQ29kZSBGaWxlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ2RvY3MvKiovKicsXG4gICAgcmVhc29uOiAnRG9jdW1lbnRhdGlvbiBmaWxlcyBpbmNsdWRpbmcgUUEgbWV0cmljcyBhbmQgcmVwb3J0cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi5tZCcsXG4gICAgcmVhc29uOiAnTWFya2Rvd24gZG9jdW1lbnRhdGlvbiBmaWxlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi5qc29uJyxcbiAgICByZWFzb246ICdKU09OIGNvbmZpZ3VyYXRpb24gYW5kIGRhdGEgZmlsZXMgZG8gbm90IGV4ZWN1dGUgY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnTElDRU5TRScsXG4gICAgcmVhc29uOiAnTGljZW5zZSBmaWxlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcuZ2l0aWdub3JlJyxcbiAgICByZWFzb246ICdHaXQgY29uZmlndXJhdGlvbiBmaWxlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICdwYWNrYWdlLWxvY2suanNvbicsXG4gICAgcmVhc29uOiAnTlBNIGxvY2sgZmlsZSAtIGF1dG8tZ2VuZXJhdGVkLCBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyoueW1sJyxcbiAgICByZWFzb246ICdZQU1MIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGRhdGEsIG5vdCBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLnlhbWwnLFxuICAgIHJlYXNvbjogJ1lBTUwgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgZGF0YSwgbm90IGNvZGUnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTZXB0ZW1iZXIgMjIgU2Vzc2lvbiBEb2NzIFJlc3RvcmF0aW9uIC0gUFIgIzEwODJcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICdzY3JpcHRzL3Rlc3QtY2FwYWJpbGl0eS1pbmRleC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBzY3JpcHQgdXNpbmcgc3Bhd24gd2l0aCBoYXJkY29kZWQgYXJyYXkgYXJndW1lbnRzIC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovc2NyaXB0cy90ZXN0LWNhcGFiaWxpdHktaW5kZXguanMnLFxuICAgIHJlYXNvbjogJ1Rlc3Qgc2NyaXB0IHVzaW5nIHNwYXduIHdpdGggaGFyZGNvZGVkIGFycmF5IGFyZ3VtZW50cyAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3Rlc3RzL2V4cGVyaW1lbnRzL2NhcGFiaWxpdHktaW5kZXgtY29tcHJlaGVuc2l2ZS10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgc3Bhd24gd2l0aCBoYXJkY29kZWQgYXJyYXkgYXJndW1lbnRzIC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovdGVzdHMvZXhwZXJpbWVudHMvY2FwYWJpbGl0eS1pbmRleC1jb21wcmVoZW5zaXZlLXRlc3QuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSB1c2luZyBzcGF3biB3aXRoIGhhcmRjb2RlZCBhcnJheSBhcmd1bWVudHMgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwMycsXG4gICAgZmlsZTogJ3NjcmlwdHMvdGVzdC1jYXBhYmlsaXR5LWluZGV4LmpzJyxcbiAgICByZWFzb246ICdUZXN0IHNjcmlwdCB3aXRoIGhhcmRjb2RlZCB0ZXN0IHBlcnNvbmEgcGF0aHMgLSBub3QgcHJvZHVjdGlvbiBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwMycsXG4gICAgZmlsZTogJyoqL3NjcmlwdHMvdGVzdC1jYXBhYmlsaXR5LWluZGV4LmpzJyxcbiAgICByZWFzb246ICdUZXN0IHNjcmlwdCB3aXRoIGhhcmRjb2RlZCB0ZXN0IHBlcnNvbmEgcGF0aHMgLSBub3QgcHJvZHVjdGlvbiBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS0yMi0wMDEnLFxuICAgIGZpbGU6ICd0ZXN0cy9leHBlcmltZW50cy9jYXBhYmlsaXR5LWluZGV4LWRvY2tlci10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgaGFyZGNvZGVkIHRlc3QgcGF0aHMgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS0yMi0wMDEnLFxuICAgIGZpbGU6ICcqKi90ZXN0cy9leHBlcmltZW50cy9jYXBhYmlsaXR5LWluZGV4LWRvY2tlci10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgaGFyZGNvZGVkIHRlc3QgcGF0aHMgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3Rlc3QtbWVtb3J5LWVkaXQuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSBmb3IgbWVtb3J5IGVkaXRpbmcgLSBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVzdC1tZW1vcnktZWRpdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIGZvciBtZW1vcnkgZWRpdGluZyAtIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcblxuICAvLyBBZGRpdGlvbmFsIHN1cHByZXNzaW9ucyBmb3IgcmVtYWluaW5nIGlzc3Vlc1xuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICd0ZXN0cy9leHBlcmltZW50cy9jYXBhYmlsaXR5LWluZGV4LWRvY2tlci10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgc3Bhd24gd2l0aCBoYXJkY29kZWQgYXJyYXkgYXJndW1lbnRzIGF0IGxpbmUgMjc5IC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovdGVzdHMvZXhwZXJpbWVudHMvY2FwYWJpbGl0eS1pbmRleC1kb2NrZXItdGVzdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIHVzaW5nIHNwYXduIHdpdGggaGFyZGNvZGVkIGFycmF5IGFyZ3VtZW50cyBhdCBsaW5lIDI3OSAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAxJyxcbiAgICBmaWxlOiAnc2NyaXB0cy90ZXN0LWNhcGFiaWxpdHktaW5kZXguanMnLFxuICAgIHJlYXNvbjogJ1Rlc3Qgc2NyaXB0IGxvYWRpbmcgdGVzdCBwZXJzb25hcyB3aXRoIGhhcmRjb2RlZCBwYXRocyAtIG5vdCBwcm9kdWN0aW9uIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAxJyxcbiAgICBmaWxlOiAnKiovc2NyaXB0cy90ZXN0LWNhcGFiaWxpdHktaW5kZXguanMnLFxuICAgIHJlYXNvbjogJ1Rlc3Qgc2NyaXB0IGxvYWRpbmcgdGVzdCBwZXJzb25hcyB3aXRoIGhhcmRjb2RlZCBwYXRocyAtIG5vdCBwcm9kdWN0aW9uIGNvZGUnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBwYWNrYWdlcy9zYWZldHkgU3VwcHJlc3Npb25zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAncGFja2FnZXMvc2FmZXR5L3NyYy9EaXNwbGF5U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnSW50ZW50aW9uYWwgZXhlY1N5bmMgZm9yIGNyb3NzLXBsYXRmb3JtIE9TIGRpYWxvZ3MuIEFsbCB1c2VyIGlucHV0IGlzIHByb3Blcmx5IGVzY2FwZWQgdXNpbmcgZXNjYXBlU2hlbGxBcmcgKFVuaXgpIG9yIEJhc2U2NCBlbmNvZGluZyAoUG93ZXJTaGVsbCknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJyoqL3BhY2thZ2VzL3NhZmV0eS9zcmMvRGlzcGxheVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0ludGVudGlvbmFsIGV4ZWNTeW5jIGZvciBjcm9zcy1wbGF0Zm9ybSBPUyBkaWFsb2dzLiBBbGwgdXNlciBpbnB1dCBpcyBwcm9wZXJseSBlc2NhcGVkIHVzaW5nIGVzY2FwZVNoZWxsQXJnIChVbml4KSBvciBCYXNlNjQgZW5jb2RpbmcgKFBvd2VyU2hlbGwpJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3BhY2thZ2VzL3NhZmV0eS9zcmMvRGlzcGxheVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0Rpc3BsYXlTZXJ2aWNlIHJlY2VpdmVzIHNhbml0aXplZCBpbnB1dCBmcm9tIFRpZXJlZFNhZmV0eVNlcnZpY2UuIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBoYXBwZW5zIGF0IHZhbGlkYXRpb24gYm91bmRhcmllcywgbm90IGluIGRpc3BsYXkgbGF5ZXInXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovcGFja2FnZXMvc2FmZXR5L3NyYy9EaXNwbGF5U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnRGlzcGxheVNlcnZpY2UgcmVjZWl2ZXMgc2FuaXRpemVkIGlucHV0IGZyb20gVGllcmVkU2FmZXR5U2VydmljZS4gVW5pY29kZSBub3JtYWxpemF0aW9uIGhhcHBlbnMgYXQgdmFsaWRhdGlvbiBib3VuZGFyaWVzLCBub3QgaW4gZGlzcGxheSBsYXllcidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdwYWNrYWdlcy9zYWZldHkvc3JjL1RpZXJlZFNhZmV0eVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ1RpZXJlZFNhZmV0eVNlcnZpY2UgdmFsaWRhdGVzIG9wZXJhdGlvbiBzYWZldHkgbGV2ZWxzLCBub3QgdXNlciBpbnB1dC4gSW5wdXQgdmFsaWRhdGlvbiB3aXRoIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBpcyBoYW5kbGVkIGJ5IHVwc3RyZWFtIHZhbGlkYXRvcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovcGFja2FnZXMvc2FmZXR5L3NyYy9UaWVyZWRTYWZldHlTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdUaWVyZWRTYWZldHlTZXJ2aWNlIHZhbGlkYXRlcyBvcGVyYXRpb24gc2FmZXR5IGxldmVscywgbm90IHVzZXIgaW5wdXQuIElucHV0IHZhbGlkYXRpb24gd2l0aCBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgaGFuZGxlZCBieSB1cHN0cmVhbSB2YWxpZGF0b3JzJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRG9ja2VyIFRva2VuIE1lYXN1cmVtZW50IFNjcmlwdCAtIFBSICMyOTJcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICdzY3JpcHRzL21lYXN1cmUtZG9ja2VyLXRva2Vucy50cycsXG4gICAgcmVhc29uOiAnQ29tbWFuZCBpbmplY3Rpb24gbWl0aWdhdGVkOiBpbnRlcmZhY2VNb2RlIGFuZCBlbmRwb2ludE1vZGUgYXJlIHZhbGlkYXRlZCBhZ2FpbnN0IFZBTElEX0lOVEVSRkFDRV9NT0RFUyBhbmQgVkFMSURfRU5EUE9JTlRfTU9ERVMgYWxsb3dsaXN0cyBiZWZvcmUgdXNlIGluIHNwYXduKCkuIFR5cGVTY3JpcHQgdHlwZXMgYWxzbyBjb25zdHJhaW4gcGFyYW1ldGVycyBhdCBjb21waWxlIHRpbWUuIFBSICMyOTInXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJyoqL3NjcmlwdHMvbWVhc3VyZS1kb2NrZXItdG9rZW5zLnRzJyxcbiAgICByZWFzb246ICdDb21tYW5kIGluamVjdGlvbiBtaXRpZ2F0ZWQ6IGludGVyZmFjZU1vZGUgYW5kIGVuZHBvaW50TW9kZSBhcmUgdmFsaWRhdGVkIGFnYWluc3QgVkFMSURfSU5URVJGQUNFX01PREVTIGFuZCBWQUxJRF9FTkRQT0lOVF9NT0RFUyBhbGxvd2xpc3RzIGJlZm9yZSB1c2UgaW4gc3Bhd24oKS4gVHlwZVNjcmlwdCB0eXBlcyBhbHNvIGNvbnN0cmFpbiBwYXJhbWV0ZXJzIGF0IGNvbXBpbGUgdGltZS4gUFIgIzI5MidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVuaWZpZWQgTG9nZ2luZyBTeXN0ZW0g4oCUIFBSICM0NzFcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTaW5rcyByZWNlaXZlIHByZS1jb25zdHJ1Y3RlZCBVbmlmaWVkTG9nRW50cnkgb2JqZWN0cyBmcm9tIExvZ01hbmFnZXIuXG4gIC8vIERhdGEgZW50ZXJzIHRoZSBwaXBlbGluZSB0aHJvdWdoIExvZ0hvb2tzIHdoaWNoIGNyZWF0ZXMgZW50cmllcyBmcm9tXG4gIC8vIGludGVybmFsIHN5c3RlbSBldmVudHMuIE1DUExvZ2dlciBzYW5pdGl6ZXMgdmlhIHNhbml0aXplTWVzc2FnZSgpIGFuZFxuICAvLyBzYW5pdGl6ZURhdGEoKSBiZWZvcmUgZW1pdHRpbmcuIE90aGVyIHNvdXJjZXMgKFNlY3VyaXR5TW9uaXRvcixcbiAgLy8gUGVyZm9ybWFuY2VNb25pdG9yLCBldGMuKSBlbWl0IGludGVybmFsIHN5c3RlbSBkYXRhLCBub3QgdXNlciBpbnB1dC5cbiAgLy8gVGhlIFNTRSB2aWV3ZXIgSFRNTC1lc2NhcGVzIGFsbCBkeW5hbWljIGNvbnRlbnQgdmlhIGVzY0h0bWwoKS9cbiAgLy8gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoKS5cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvbG9nZ2luZy90eXBlcy50cycsXG4gICAgcmVhc29uOiAnUHVyZSB0eXBlIGRlZmluaXRpb25zIGFuZCBpbnRlcmZhY2VzIOKAlCBubyBkYXRhIHByb2Nlc3Npbmcgb3IgdXNlciBpbnB1dCBoYW5kbGluZy4gUFIgIzQ3MSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvbG9nZ2luZy9zaW5rcy9NZW1vcnlMb2dTaW5rLnRzJyxcbiAgICByZWFzb246ICdSZWNlaXZlcyBwcmUtY29uc3RydWN0ZWQgVW5pZmllZExvZ0VudHJ5IG9iamVjdHMgZnJvbSBMb2dNYW5hZ2VyLiBRdWVyeSBwYXJhbWV0ZXJzIGFyZSB1c2VkIGFzIHJlYWQtb25seSBzdWJzdHJpbmcgZmlsdGVycywgbm90IHdyaXR0ZW4gdG8gb3V0cHV0LiBQUiAjNDcxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9sb2dnaW5nL3NpbmtzL0ZpbGVMb2dTaW5rLnRzJyxcbiAgICByZWFzb246ICdSZWNlaXZlcyBwcmUtZm9ybWF0dGVkIGVudHJpZXMgdmlhIElMb2dGb3JtYXR0ZXIuIEZpbGUgcGF0aHMgYnVpbHQgZnJvbSBoYXJkY29kZWQgY2F0ZWdvcnkgbmFtZXMgKyBkYXRlcy4gTUNQTG9nZ2VyIHNhbml0aXplcyB1cHN0cmVhbSB2aWEgc2FuaXRpemVNZXNzYWdlL3Nhbml0aXplRGF0YTsgb3RoZXIgc291cmNlcyBlbWl0IGludGVybmFsIHN5c3RlbSBkYXRhLiBQUiAjNDcxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy93ZWIvcm91dGVzL2xvZ1JvdXRlcy50cycsXG4gICAgcmVhc29uOiAnSlNPTi1zZXJpYWxpemVzIHByZS1jb25zdHJ1Y3RlZCBVbmlmaWVkTG9nRW50cnkgb2JqZWN0cyBvdmVyIFNTRS4gQWxsIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHZhbGlkYXRlZCBzdHJpbmdzIHBhc3NlZCB0byBNZW1vcnlMb2dTaW5rLnF1ZXJ5KCkuIE5vIEhUTUwgcmVuZGVyaW5nLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc3RvcmFnZS90eXBlcy50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IFR5cGUtb25seSBpbnRlcmZhY2UgZGVjbGFyYXRpb25zIChTdG9yYWdlSXRlbU1ldGFkYXRhLCBFbGVtZW50SW5kZXhFbnRyeSwgTWFuaWZlc3REaWZmUmVzdWx0KS4gTm8gZXhlY3V0YWJsZSBpbnB1dC1wcm9jZXNzaW5nIGNvZGU7IFVuaWNvZGUgbm9ybWFsaXphdGlvbiBpcyBlbmZvcmNlZCBpbiBjb25jcmV0ZSBzdG9yYWdlIHBhcnNlcnMvbGF5ZXJzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc3RvcmFnZS9JU3RvcmFnZUJhY2tlbmQudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBJbnRlcmZhY2UgY29udHJhY3Qgb25seSBmb3IgYmFja2VuZCBhYnN0cmFjdGlvbi4gTm8gcnVudGltZSB1c2VyLWlucHV0IGhhbmRsaW5nIGluIHRoaXMgZmlsZTsgbm9ybWFsaXphdGlvbiBpcyBlbmZvcmNlZCBieSBpbXBsZW1lbnRpbmcgc3RvcmFnZSBsYXllcnMgYW5kIHZhbGlkYXRvcnMuJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVmVyaWZpY2F0aW9uTm90aWZpZXIgRmFsc2UgUG9zaXRpdmVzIOKAlCBJc3N1ZSAjNTM3XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL1ZlcmlmaWNhdGlvbk5vdGlmaWVyLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogTGluZXMgMTE3LCAxMzIsIDE0NSB1c2Ugc3Bhd24oKSB3aXRoIGFycmF5IGFyZ3VtZW50cyAobm8gc2hlbGwgaW52b2NhdGlvbikuIHplbml0eS9rZGlhbG9nL3htZXNzYWdlIGFyZSBkaXNwbGF5LW9ubHkgdG9vbHMgdGhhdCByZW5kZXIgdGV4dCBpbiBHVUkgZGlhbG9ncyB3aXRob3V0IGludGVycHJldGluZyBjb250ZW50IGFzIGNvZGUuIGFnZW50TmFtZSAoZnJvbSBNQ1AgcGFyYW1zKSBhbmQgY29kZSAoY3J5cHRvZ3JhcGhpYyBhbHBoYW51bWVyaWMpIGZsb3cgaW50byBkaXNwbGF5IHRleHQgb25seS4gU2VlIElzc3VlICM1MzcgZXZpZGVuY2UgdHJhY2UuJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gV2ViIFVJIENsaWVudC1TaWRlIEZhbHNlIFBvc2l0aXZlcyDigJQgUkMxIFNlY3VyaXR5IEF1ZGl0XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9hcHAuanMnLFxuICAgIHJlYXNvbjogJ0NsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdC4gU2VjdXJlWWFtbFBhcnNlciBpcyBhIE5vZGUuanMgbW9kdWxlIHVuYXZhaWxhYmxlIGluIGJyb3dzZXIgY29udGV4dC4gc2FmZVBhcnNlWWFtbCgpIHdyYXBwZXIgdXNlcyBDT1JFX1NDSEVNQSAoc2FmZSwgbm8gY3VzdG9tIHR5cGVzKSB3aXRoIDUxMktCIHNpemUgbGltaXQuIERhdGEgc2VydmVkIGZyb20gbG9jYWxob3N0IG9yIHRydXN0ZWQgR2l0SHViIGNvbGxlY3Rpb24gQVBJLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9hcHAuanMnLFxuICAgIHJlYXNvbjogJ0NsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdC4gVW5pY29kZVZhbGlkYXRvciBpcyBhIE5vZGUuanMgbW9kdWxlIHVuYXZhaWxhYmxlIGluIGJyb3dzZXIgY29udGV4dC4gSW5wdXQgc2VydmVkIGZyb20gRG9sbGhvdXNlTUNQIHNlcnZlciB3aGljaCBub3JtYWxpemVzIGJlZm9yZSBzZXJ2aW5nLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3NlcnZlci50cycsXG4gICAgcmVhc29uOiAnTkZDIG5vcm1hbGl6YXRpb24gYWRkZWQgdG8gcmVxLnBhdGggaW4gU1BBIGZhbGxiYWNrIGhhbmRsZXIgKGxpbmUgMTgwKS4gRmlsZS1sZXZlbCBzY2FubmVyIGZsYWdzIGRlc3BpdGUgcGVyLWlucHV0IGZpeC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9yb3V0ZXMudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIHZpYSBub3JtYWxpemVJbnB1dCgpIGFwcGxpZWQgdG8gYWxsIHJlcS5wYXJhbXMuIEZpbGUtbGV2ZWwgc2Nhbm5lciBmbGFncyBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0FnZW50U2tpbGxDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIGFkZGVkIHRvIGJvdGggY29udmVydEFnZW50VG9Eb2xsaG91c2UoKSBhbmQgY29udmVydERvbGxob3VzZVRvQWdlbnQoKSBlbnRyeSBwb2ludHMuIEZpbGUtbGV2ZWwgc2Nhbm5lciBmbGFncyBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy93ZWIvcm91dGVzL3Blcm1pc3Npb25Sb3V0ZXMudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIGFwcGxpZWQgdG8gdG9vbF9uYW1lIGFuZCBwbGF0Zm9ybSBpbnB1dHMgYXQgSFRUUCBib3VuZGFyeSBiZWZvcmUgZm9yd2FyZGluZyB0byBNQ1BBUUxIYW5kbGVyLmhhbmRsZVJlYWQoKS4gR0VUIC9wZXJtaXNzaW9ucy9zdGF0dXMgaGFzIG5vIHVzZXItc3VwcGxpZWQgc3RyaW5nIHBhcmFtZXRlcnMuIFNjYW5uZXIgbWF5IGZsYWcgZmlsZS1sZXZlbCBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9XG5dO1xuXG4vKipcbiAqIFZhbGlkYXRlIHN1cHByZXNzaW9uIGNvbmZpZ3VyYXRpb24gYXQgc3RhcnR1cFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdXBwcmVzc2lvbnMoKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHNlZW5QYXR0ZXJucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBcbiAgZm9yIChjb25zdCBzdXBwcmVzc2lvbiBvZiBzdXBwcmVzc2lvbnMpIHtcbiAgICAvLyBDaGVjayBmb3IgZW1wdHkgcmVhc29uc1xuICAgIGlmICghc3VwcHJlc3Npb24ucmVhc29uIHx8IHN1cHByZXNzaW9uLnJlYXNvbi50cmltKCkubGVuZ3RoIDwgMTApIHtcbiAgICAgIGVycm9ycy5wdXNoKGBTdXBwcmVzc2lvbiBmb3IgJHtzdXBwcmVzc2lvbi5ydWxlfSBoYXMgaW5zdWZmaWNpZW50IHJlYXNvbmApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgdmFsaWQgcnVsZSBwYXR0ZXJuc1xuICAgIGNvbnN0IHJ1bGVQYXR0ZXJuID0gL14oRE1DUC1TRUMtXFxkezN9fE9XQVNQLVtBLVpdXFxkezJ9LVxcZHszfXxDV0UtXFxkKy1cXGR7M318XFwqKSQvO1xuICAgIGlmICghc3VwcHJlc3Npb24ucnVsZS5tYXRjaChydWxlUGF0dGVybikpIHtcbiAgICAgIGVycm9ycy5wdXNoKGBJbnZhbGlkIHJ1bGUgcGF0dGVybjogJHtzdXBwcmVzc2lvbi5ydWxlfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHN1cHByZXNzaW9uc1xuICAgIGNvbnN0IGtleSA9IGAke3N1cHByZXNzaW9uLnJ1bGV9OiR7c3VwcHJlc3Npb24uZmlsZSB8fCAnKid9YDtcbiAgICBpZiAoc2VlblBhdHRlcm5zLmhhcyhrZXkpKSB7XG4gICAgICBlcnJvcnMucHVzaChgRHVwbGljYXRlIHN1cHByZXNzaW9uOiAke2tleX1gKTtcbiAgICB9XG4gICAgc2VlblBhdHRlcm5zLmFkZChrZXkpO1xuICAgIFxuICAgIC8vIFZhbGlkYXRlIGdsb2IgcGF0dGVybnNcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZT8uaW5jbHVkZXMoJyoqJykgJiYgIXN1cHByZXNzaW9uLmZpbGUuaW5jbHVkZXMoJyoqLycpKSB7XG4gICAgICBlcnJvcnMucHVzaChgSW52YWxpZCBnbG9iIHBhdHRlcm4gaW4gJHtzdXBwcmVzc2lvbi5maWxlfSAtICoqIG11c3QgYmUgZm9sbG93ZWQgYnkgL2ApO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGVycm9ycztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGdsb2IgcGF0dGVybiB0byByZWdleCBwYXR0ZXJuIHNhZmVseVxuICogVXNpbmcgYSBwcm9wZXIgZ2xvYi10by1yZWdleCBjb252ZXJzaW9uIHRoYXQgaGFuZGxlcyBhbGwgZWRnZSBjYXNlc1xuICovXG5mdW5jdGlvbiBnbG9iVG9SZWdleChnbG9iOiBzdHJpbmcpOiBSZWdFeHAge1xuICAvLyBDaGVjayBjYWNoZSBmaXJzdFxuICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXRSZWdleChnbG9iKTtcbiAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgXG4gIC8vIFNwZWNpYWwgY2FzZTogaWYgZ2xvYiBzdGFydHMgd2l0aCAqLCBpdCBzaG91bGQgbWF0Y2ggYW55dGhpbmcgYXQgdGhlIGJlZ2lubmluZ1xuICBsZXQgcHJvY2Vzc2VkR2xvYiA9IGdsb2I7XG4gIGxldCBwcmVmaXggPSAnJztcbiAgaWYgKGdsb2Iuc3RhcnRzV2l0aCgnKicpICYmICFnbG9iLnN0YXJ0c1dpdGgoJyoqJykpIHtcbiAgICBwcmVmaXggPSAnKD86LiovKT8nOyAgLy8gT3B0aW9uYWwgcGF0aCBwcmVmaXhcbiAgICBwcm9jZXNzZWRHbG9iID0gZ2xvYi5zdWJzdHJpbmcoMSk7XG4gIH1cbiAgXG4gIC8vIEVzY2FwZSBhbGwgcmVnZXggc3BlY2lhbCBjaGFyYWN0ZXJzIGV4Y2VwdCAqIGFuZCAvXG4gIC8vIEZpeGVkOiBQcm9wZXJseSBlc2NhcGUgYmFja3NsYXNoZXMgYW5kIG90aGVyIHNwZWNpYWwgcmVnZXggY2hhcmFjdGVyc1xuICBsZXQgcGF0dGVybiA9IHByb2Nlc3NlZEdsb2IucmVwbGFjZUFsbCgvW1xcXFxeJC4oKSs/e31bXFxdfF0vZywgJ1xcXFwkJicpO1xuXG4gIC8vIEhhbmRsZSBnbG9iIHBhdHRlcm5zIGluIGNvcnJlY3Qgb3JkZXJcbiAgLy8gUmVwbGFjZSAqKiBiZWZvcmUgKiB0byBhdm9pZCBjb25mbGljdHNcbiAgcGF0dGVybiA9IHBhdHRlcm5cbiAgICAucmVwbGFjZUFsbCgnKionLCAnPDxHTE9CU1RBUj4+JykgICAgIC8vIFRlbXBvcmFyeSBwbGFjZWhvbGRlciBmb3IgKipcbiAgICAucmVwbGFjZUFsbCgnKicsICc8PFNUQVI+PicpICAgICAgICAgICAgLy8gVGVtcG9yYXJ5IHBsYWNlaG9sZGVyIGZvciAqXG4gICAgLnJlcGxhY2VBbGwoJzw8R0xPQlNUQVI+Pi8nLCAnKD86LiovKT8nKSAvLyAqKi8gbWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGRpcmVjdG9yaWVzIGluY2x1ZGluZyBub25lXG4gICAgLnJlcGxhY2VBbGwoJzw8R0xPQlNUQVI+PicsICcuKicpICAgICAgIC8vICoqIG1hdGNoZXMgYW55dGhpbmdcbiAgICAucmVwbGFjZUFsbCgnPDxTVEFSPj4nLCAnW14vXSonKSAgICAgICAgLy8gKiBtYXRjaGVzIGFueXRoaW5nIGV4Y2VwdCBkaXJlY3Rvcnkgc2VwYXJhdG9yXG4gICAgLnJlcGxhY2VBbGwoJy8nLCAnXFxcXC8nKTsgICAgICAgICAgICAgICAgLy8gRXNjYXBlIGZvcndhcmQgc2xhc2hlc1xuICBcbiAgLy8gQ29tYmluZSBwcmVmaXggYW5kIHBhdHRlcm5cbiAgY29uc3QgZnVsbFBhdHRlcm4gPSBwcmVmaXggKyBwYXR0ZXJuO1xuICBcbiAgLy8gQWRkIGFuY2hvcnMgdG8gZW5zdXJlIGZ1bGwgcGF0aCBtYXRjaFxuICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke2Z1bGxQYXR0ZXJufSRgKTtcbiAgXG4gIC8vIENhY2hlIHRoZSBjb21waWxlZCByZWdleFxuICBjYWNoZS5zZXRSZWdleChnbG9iLCByZWdleCk7XG4gIFxuICByZXR1cm4gcmVnZXg7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGZpbGUgcGF0aCBmb3IgY29uc2lzdGVudCBtYXRjaGluZ1xuICogSGFuZGxlcyBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwYXRocyBhY3Jvc3MgZGlmZmVyZW50IHBsYXRmb3Jtc1xuICovXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBDb252ZXJ0IGJhY2tzbGFzaGVzIHRvIGZvcndhcmQgc2xhc2hlcyBmb3IgV2luZG93cyBwYXRoc1xuICBsZXQgbm9ybWFsaXplZCA9IGZpbGVQYXRoLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpO1xuXG4gIC8vIFJlbW92ZSBkdXBsaWNhdGUgc2xhc2hlc1xuICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5yZXBsYWNlQWxsKC9cXC8rL2csICcvJyk7XG4gIFxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2ggaWYgcHJlc2VudFxuICBpZiAobm9ybWFsaXplZC5lbmRzV2l0aCgnLycpICYmIG5vcm1hbGl6ZWQubGVuZ3RoID4gMSkge1xuICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnNsaWNlKDAsIC0xKTtcbiAgfVxuICBcbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbi8qKlxuICogRXh0cmFjdCByZWxhdGl2ZSBwYXRoIGZyb20gYWJzb2x1dGUgcGF0aFxuICogSGFuZGxlcyB2YXJpb3VzIENJL0NEIGFuZCBsb2NhbCBkZXZlbG9wbWVudCBwYXRoIGZvcm1hdHNcbiAqL1xuZnVuY3Rpb24gZ2V0UmVsYXRpdmVQYXRoKGFic29sdXRlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBhdGgoYWJzb2x1dGVQYXRoKTtcbiAgXG4gIC8vIElmIGFscmVhZHkgYSByZWxhdGl2ZSBwYXRoLCByZXR1cm4gYXMtaXNcbiAgaWYgKCFub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy8nKSAmJiAhbm9ybWFsaXplZC5tYXRjaCgvXltBLVpdOi9pKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG4gIFxuICAvLyBEZWZpbmUgY29tbW9uIHByb2plY3Qgc291cmNlIGRpcmVjdG9yaWVzXG4gIGNvbnN0IHByb2plY3REaXJzID0gWydzcmMvJywgJ19fdGVzdHNfXy8nLCAnc2NyaXB0cy8nLCAnZG9jcy8nLCAndGVzdHMvJywgJ3Rlc3QtYXJjaGl2ZS8nLCAnbGliLyddO1xuICBcbiAgLy8gRmluZCB0aGUgcG9zaXRpb24gb2YgY29tbW9uIHByb2plY3QgZGlyZWN0b3JpZXMgaW4gdGhlIHBhdGhcbiAgbGV0IGJlc3RNYXRjaCA9IHsgaW5kZXg6IC0xLCBkaXI6ICcnLCByZWxhdGl2ZVBhdGg6ICcnIH07XG4gIFxuICBmb3IgKGNvbnN0IGRpciBvZiBwcm9qZWN0RGlycykge1xuICAgIC8vIExvb2sgZm9yIC9kaXIgcGF0dGVybiAod2l0aCBsZWFkaW5nIHNsYXNoIHRvIGF2b2lkIGZhbHNlIG1hdGNoZXMpXG4gICAgY29uc3Qgc2VhcmNoUGF0dGVybiA9IGAvJHtkaXJ9YDtcbiAgICBjb25zdCBpbmRleCA9IG5vcm1hbGl6ZWQubGFzdEluZGV4T2Yoc2VhcmNoUGF0dGVybik7XG4gICAgXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIC8vIEV4dHJhY3QgZXZlcnl0aGluZyBhZnRlciB0aGUgcGFyZW50IG9mIHRoaXMgZGlyZWN0b3J5XG4gICAgICAvLyBGb3IgZXhhbXBsZTogL2hvbWUvdXNlci9wcm9qZWN0L3NyYy9maWxlLnRzIC0+IHNyYy9maWxlLnRzXG4gICAgICBjb25zdCBkaXJTdGFydEluZGV4ID0gaW5kZXggKyAxOyAvLyBTa2lwIHRoZSBsZWFkaW5nIHNsYXNoXG4gICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBub3JtYWxpemVkLnN1YnN0cmluZyhkaXJTdGFydEluZGV4KTtcbiAgICAgIFxuICAgICAgLy8gVmVyaWZ5IHRoaXMgbG9va3MgbGlrZSBhIHZhbGlkIHByb2plY3QgZmlsZVxuICAgICAgaWYgKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKGRpcikgJiYgcmVsYXRpdmVQYXRoLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgbWF0Y2ggdGhhdCBhcHBlYXJzIGxhdGVzdCBpbiB0aGUgcGF0aCAobW9zdCBzcGVjaWZpYylcbiAgICAgICAgaWYgKGluZGV4ID4gYmVzdE1hdGNoLmluZGV4KSB7XG4gICAgICAgICAgYmVzdE1hdGNoID0geyBpbmRleCwgZGlyLCByZWxhdGl2ZVBhdGggfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLy8gSWYgd2UgZm91bmQgYSBtYXRjaCwgcmV0dXJuIGl0XG4gIGlmIChiZXN0TWF0Y2guaW5kZXggPj0gMCkge1xuICAgIHJldHVybiBiZXN0TWF0Y2gucmVsYXRpdmVQYXRoO1xuICB9XG4gIFxuICAvLyBGYWxsYmFjazogVHJ5IHRvIGZpbmQgY29tbW9uIGZpbGUgcGF0dGVybnMgdGhhdCBpbmRpY2F0ZSBwcm9qZWN0IGZpbGVzXG4gIGNvbnN0IGZpbGVQYXR0ZXJucyA9IFtcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLltqdF1zeD8kLyxcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLmpzb24kLyxcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLnlhP21sJC8sXG4gICAgL1xcL3BhY2thZ2VcXC5qc29uJC8sXG4gICAgL1xcL3BhY2thZ2UtbG9ja1xcLmpzb24kLyxcbiAgICAvXFwvdHNjb25maWcuKlxcLmpzb24kLyxcbiAgICAvXFwvXFwuLipyY1xcLmpzb24kLyAgLy8gLmVzbGludHJjLmpzb24sIGV0Yy5cbiAgXTtcbiAgXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBmaWxlUGF0dGVybnMpIHtcbiAgICBjb25zdCBtYXRjaCA9IG5vcm1hbGl6ZWQubWF0Y2gocGF0dGVybik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAvLyBGaW5kIHdoZXJlIHRoZSBtYXRjaCBzdGFydHMgYW5kIGV4dHJhY3QgZnJvbSB0aGVyZVxuICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IG5vcm1hbGl6ZWQuaW5kZXhPZihtYXRjaFswXSk7XG4gICAgICBpZiAobWF0Y2hJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkLnN1YnN0cmluZyhtYXRjaEluZGV4ICsgMSk7IC8vIFNraXAgbGVhZGluZyAvXG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvLyBMYXN0IHJlc29ydDogaWYgcGF0aCBjb250YWlucyBjb21tb24gZXh0ZW5zaW9ucywgdHJ5IHRvIGV4dHJhY3QgYSByZWFzb25hYmxlIHJlbGF0aXZlIHBhdGhcbiAgaWYgKG5vcm1hbGl6ZWQubWF0Y2goL1xcLih0c3xqc3x0c3h8anN4fGpzb258eWFtbHx5bWwpJC8pKSB7XG4gICAgLy8gRmluZCB0aGUgbGFzdCBzZWdtZW50IHRoYXQgbG9va3MgbGlrZSBhIHByb2plY3QgZGlyZWN0b3J5XG4gICAgY29uc3Qgc2VnbWVudHMgPSBub3JtYWxpemVkLnNwbGl0KCcvJyk7XG4gICAgZm9yIChsZXQgaSA9IHNlZ21lbnRzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAocHJvamVjdERpcnMuc29tZShkaXIgPT4gZGlyLnN0YXJ0c1dpdGgoc2VnbWVudHNbaV0pKSkge1xuICAgICAgICByZXR1cm4gc2VnbWVudHMuc2xpY2UoaSkuam9pbignLycpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igcm9vdC1sZXZlbCBmaWxlcyBsaWtlIHBhY2thZ2UtbG9jay5qc29uLCBqdXN0IHJldHVybiB0aGUgZmlsZW5hbWVcbiAgICBjb25zdCBmaWxlbmFtZSA9IHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChmaWxlbmFtZSAmJiBmaWxlbmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICByZXR1cm4gZmlsZW5hbWU7XG4gICAgfVxuICB9XG4gIFxuICAvLyBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgcGF0aCBpZiB3ZSBjYW4ndCBleHRyYWN0IHJlbGF0aXZlXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgZmluZGluZyBzaG91bGQgYmUgc3VwcHJlc3NlZFxuICogT3B0aW1pemVkIHdpdGggY2FjaGluZyBhbmQgZWFybHkgcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkU3VwcHJlc3MocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghZmlsZVBhdGgpIHJldHVybiBmYWxzZTtcbiAgXG4gIC8vIE5vcm1hbGl6ZSBwYXRocyBmb3IgY29uc2lzdGVudCBtYXRjaGluZ1xuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgoZmlsZVBhdGgpO1xuICBjb25zdCByZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGgobm9ybWFsaXplZFBhdGgpO1xuICBcbiAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcbiAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoKTtcbiAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2FjaGVkO1xuICBcbiAgLy8gUHJvY2VzcyBzdXBwcmVzc2lvbnMgd2l0aCBlYXJseSByZXR1cm5zXG4gIGZvciAoY29uc3Qgc3VwcHJlc3Npb24gb2Ygc3VwcHJlc3Npb25zKSB7XG4gICAgLy8gU2tpcCBpZiBydWxlIGRvZXNuJ3QgbWF0Y2hcbiAgICBpZiAoc3VwcHJlc3Npb24ucnVsZSAhPT0gJyonICYmIHN1cHByZXNzaW9uLnJ1bGUgIT09IHJ1bGVJZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIFxuICAgIC8vIEhhbmRsZSBnbG9iYWwgc3VwcHJlc3Npb25zIChubyBmaWxlIHNwZWNpZmllZClcbiAgICBpZiAoIXN1cHByZXNzaW9uLmZpbGUpIHtcbiAgICAgIGNhY2hlLnNldChydWxlSWQsIHJlbGF0aXZlUGF0aCwgdHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZXhhY3QgZmlsZSBtYXRjaCAobW9zdCBjb21tb24gY2FzZSlcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZSA9PT0gcmVsYXRpdmVQYXRoIHx8IHN1cHByZXNzaW9uLmZpbGUgPT09IG5vcm1hbGl6ZWRQYXRoKSB7XG4gICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIHBhdHRlcm4gbWF0Y2ggb25seSBpZiBmaWxlIGNvbnRhaW5zIHdpbGRjYXJkc1xuICAgIGlmIChzdXBwcmVzc2lvbi5maWxlLmluY2x1ZGVzKCcqJykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gZ2xvYlRvUmVnZXgoc3VwcHJlc3Npb24uZmlsZSk7XG4gICAgICAgIGlmIChyZWdleC50ZXN0KHJlbGF0aXZlUGF0aCkgfHwgcmVnZXgudGVzdChub3JtYWxpemVkUGF0aCkpIHtcbiAgICAgICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEludmFsaWQgc3VwcHJlc3Npb24gcGF0dGVybiBcIiR7c3VwcHJlc3Npb24uZmlsZX1cIjpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvLyBOb3Qgc3VwcHJlc3NlZFxuICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIGZhbHNlKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENsZWFyIHN1cHByZXNzaW9uIGNhY2hlICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclN1cHByZXNzaW9uQ2FjaGUoKTogdm9pZCB7XG4gIGNhY2hlLmNsZWFyKCk7XG59XG5cbi8qKlxuICogR2V0IHN1cHByZXNzaW9uIHN0YXRpc3RpY3MgZm9yIHJlcG9ydGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VwcHJlc3Npb25TdGF0cygpOiB7IFxuICB0b3RhbDogbnVtYmVyOyBcbiAgYnlSdWxlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBieUNhdGVnb3J5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufSB7XG4gIGNvbnN0IHN0YXRzID0ge1xuICAgIHRvdGFsOiBzdXBwcmVzc2lvbnMubGVuZ3RoLFxuICAgIGJ5UnVsZToge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgICBieUNhdGVnb3J5OiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+XG4gIH07XG4gIFxuICBmb3IgKGNvbnN0IHN1cHByZXNzaW9uIG9mIHN1cHByZXNzaW9ucykge1xuICAgIC8vIENvdW50IGJ5IHJ1bGVcbiAgICBzdGF0cy5ieVJ1bGVbc3VwcHJlc3Npb24ucnVsZV0gPSAoc3RhdHMuYnlSdWxlW3N1cHByZXNzaW9uLnJ1bGVdIHx8IDApICsgMTtcbiAgICBcbiAgICAvLyBDb3VudCBieSBjYXRlZ29yeSAoZXh0cmFjdCBmcm9tIHJ1bGUgcHJlZml4KVxuICAgIGNvbnN0IGNhdGVnb3J5ID0gc3VwcHJlc3Npb24ucnVsZS5zcGxpdCgnLScpWzBdO1xuICAgIHN0YXRzLmJ5Q2F0ZWdvcnlbY2F0ZWdvcnldID0gKHN0YXRzLmJ5Q2F0ZWdvcnlbY2F0ZWdvcnldIHx8IDApICsgMTtcbiAgfVxuICBcbiAgcmV0dXJuIHN0YXRzO1xufVxuXG4vLyBWYWxpZGF0ZSBzdXBwcmVzc2lvbnMgb24gbW9kdWxlIGxvYWRcbmNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZVN1cHByZXNzaW9ucygpO1xuaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICBsb2dnZXIud2FybignU3VwcHJlc3Npb24gY29uZmlndXJhdGlvbiB3YXJuaW5nczonLCB2YWxpZGF0aW9uRXJyb3JzKTtcbn1cbiJdfQ==
1341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcHJlc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlY3VyaXR5L2F1ZGl0L2NvbmZpZy9zdXBwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRbEQ7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQjtJQUNaLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUNuQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFL0MsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUMxQyxPQUFPLEdBQUcsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLEtBQWM7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlLEVBQUUsS0FBYTtRQUNyQyxJQUFJLENB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b24gQ29uZmlndXJhdGlvblxuICogXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgc3VwcHJlc3Npb24gcnVsZXMgZm9yIGZhbHNlIHBvc2l0aXZlcyBpbiB0aGUgc2VjdXJpdHkgYXVkaXQuXG4gKiBFYWNoIHN1cHByZXNzaW9uIHNob3VsZCBiZSB3ZWxsLWRvY3VtZW50ZWQgd2l0aCBhIGNsZWFyIHJlYXNvbi5cbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1cHByZXNzaW9uIHtcbiAgcnVsZTogc3RyaW5nO1xuICBmaWxlPzogc3RyaW5nO1xuICByZWFzb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdXBwcmVzc2lvbiBjYWNoZSBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uXG4gKi9cbmNsYXNzIFN1cHByZXNzaW9uQ2FjaGUge1xuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVnZXhDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBSZWdFeHA+KCk7XG4gIFxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5yZWdleENhY2hlLmNsZWFyKCk7XG4gIH1cbiAgXG4gIGdldENhY2hlS2V5KHJ1bGVJZDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cnVsZUlkfTo6JHtmaWxlUGF0aH1gO1xuICB9XG4gIFxuICBnZXQocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXQodGhpcy5nZXRDYWNoZUtleShydWxlSWQsIGZpbGVQYXRoKSk7XG4gIH1cbiAgXG4gIHNldChydWxlSWQ6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLnNldCh0aGlzLmdldENhY2hlS2V5KHJ1bGVJZCwgZmlsZVBhdGgpLCB2YWx1ZSk7XG4gIH1cbiAgXG4gIGdldFJlZ2V4KHBhdHRlcm46IHN0cmluZyk6IFJlZ0V4cCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVnZXhDYWNoZS5nZXQocGF0dGVybik7XG4gIH1cbiAgXG4gIHNldFJlZ2V4KHBhdHRlcm46IHN0cmluZywgcmVnZXg6IFJlZ0V4cCk6IHZvaWQge1xuICAgIHRoaXMucmVnZXhDYWNoZS5zZXQocGF0dGVybiwgcmVnZXgpO1xuICB9XG59XG5cbmNvbnN0IGNhY2hlID0gbmV3IFN1cHByZXNzaW9uQ2FjaGUoKTtcblxuZXhwb3J0IGNvbnN0IHN1cHByZXNzaW9uczogU3VwcHJlc3Npb25bXSA9IFtcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTUUwgSW5qZWN0aW9uIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnQ1dFLTg5LTAwMScsXG4gICAgZmlsZTogJ3NyYy91cGRhdGUvVXBkYXRlTWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnRmFsc2UgcG9zaXRpdmUgLSBcIlVwZGF0ZSBGYWlsZWRcIiBpcyBhIFVJIG1lc3NhZ2UsIG5vdCBTUUwuIFRoZSBjb2RlYmFzZSBkb2VzIG5vdCB1c2UgU1FMLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtODktMDAxJyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL21lbW9yaWVzL01lbW9yeU1hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBMaW5lIDEwMjQgaXMgYSBsb2dnZXIuZXJyb3IoKSBjYWxsIGZvcm1hdHRpbmcgYW4gZXJyb3IgbWVzc2FnZSB3aXRoIHN0cmluZyBjb25jYXRlbmF0aW9uLiBUaGlzIGlzIG5vdCBhIFNRTCBxdWVyeSAtIHRoZSBjb2RlYmFzZSBkb2VzIG5vdCB1c2UgU1FMLiBUaGUgc3RyaW5nIGNvbmNhdGVuYXRpb24gYnVpbGRzIGEgdXNlci1mYWNpbmcgZXJyb3IgbWVzc2FnZSBmb3IgZGVsZXRpb24gZmFpbHVyZXMuIFBSICM3J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS04OS0wMDEnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9tZXRyaWNzLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogQnJvd3Nlci1zaWRlIERhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCkgY29uY2F0ZW5hdGlvbiBmb3IgZGlzcGxheSBsYWJlbC4gTm90IFNRTCDigJQgdGhlIGNvZGViYXNlIGRvZXMgbm90IHVzZSBTUUwuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS04OS0wMDEnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9zZWN1cml0eS5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEhUTUwgc3RyaW5nIGNvbmNhdGVuYXRpb24gYnVpbGRpbmcgRE9NIG1hcmt1cCBmb3IgdGhlIEF1dGggdGFiLiBBbGwgdmFsdWVzIEhUTUwtZXNjYXBlZCB2aWEgZXNjKCkgaGVscGVyLiBOb3QgU1FMIOKAlCB0aGUgY29kZWJhc2UgZG9lcyBub3QgdXNlIFNRTC4gUFIgIzE3OTEnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNZXRyaWNzICYgV2ViIENvbnNvbGUgRmFsc2UgUG9zaXRpdmVzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvbWV0cmljcy9zaW5rcy9NZW1vcnlNZXRyaWNzU2luay50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEludGVybmFsIG1ldHJpY3Mgc3RvcmFnZSDigJQgZG9lcyBub3QgcHJvY2VzcyB1c2VyIGlucHV0IGRpcmVjdGx5LiBNZXRyaWMgbmFtZXMgYW5kIHNvdXJjZXMgYXJlIHNlcnZlci1nZW5lcmF0ZWQgY29uc3RhbnRzLiBJbnB1dCBub3JtYWxpemF0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIHJvdXRlIGhhbmRsZXIgYm91bmRhcnkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9tZXRyaWNzL2NvbGxlY3RvcnMvUGVyZm9ybWFuY2VNb25pdG9yQ29sbGVjdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogTWV0cmljIGNvbGxlY3RvciB3aXRoIGhhcmRjb2RlZCBjb25zdGFudCBzdHJpbmdzIG9ubHkuIE5vIHVzZXIgaW5wdXQgZW50ZXJzIHRoaXMgY29tcG9uZW50LiBBbGwgbWV0cmljIG5hbWVzLCBzb3VyY2VzLCBhbmQgZGVzY3JpcHRpb25zIGFyZSBjb21waWxlLXRpbWUgY29uc3RhbnRzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9tZXRyaWNzLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogQ2xpZW50LXNpZGUgYnJvd3NlciBKYXZhU2NyaXB0LiBVbmljb2RlVmFsaWRhdG9yIGlzIGEgTm9kZS5qcyBtb2R1bGUgdW5hdmFpbGFibGUgaW4gYnJvd3NlciBjb250ZXh0LiBEYXNoYm9hcmQgcmVuZGVycyBzZXJ2ZXItZ2VuZXJhdGVkIG1ldHJpYyBkYXRhIG9ubHkg4oCUIG5vIHVzZXIgdGV4dCBpbnB1dC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9wdWJsaWMvbG9ncy5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IENsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdC4gRmlsdGVyIGlucHV0cyBhcmUgdXNlZCBmb3IgbG9jYWwgSlMgYXJyYXkgZmlsdGVyaW5nIG9ubHkg4oCUIG5ldmVyIHNlbnQgdG8gc2VydmVyLiBVbmljb2RlVmFsaWRhdG9yIGlzIGEgTm9kZS5qcyBtb2R1bGUgdW5hdmFpbGFibGUgaW4gYnJvd3NlciBjb250ZXh0LidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3B1YmxpYy9zZXR1cC5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IENsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdC4gVXNlciBpbnB1dHMgKHBsYXRmb3JtIHRhYiBjbGlja3MsIG1ldGhvZCB0b2dnbGUpIGFyZSBtYXRjaGVkIGFnYWluc3QgaGFyZGNvZGVkIERPTSBlbGVtZW50IElEcyBvbmx5IOKAlCBubyBmcmVlLXRleHQgcHJvY2Vzc2luZy4gU2VydmVyLXNpZGUgaGFuZGxlcnMgaW4gc2V0dXBSb3V0ZXMudHMgdXNlIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKCkgb24gYWxsIEFQSSBpbnB1dC4gVW5pY29kZVZhbGlkYXRvciBpcyBhIE5vZGUuanMgbW9kdWxlIHVuYXZhaWxhYmxlIGluIGJyb3dzZXIgY29udGV4dC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9wdWJsaWMvc2VjdXJpdHkuanMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBDbGllbnQtc2lkZSBicm93c2VyIEphdmFTY3JpcHQgZm9yIHRoZSBBdXRoIHRhYi4gQWxsIHVzZXIgaW5wdXQgKFRPVFAgY29kZXMpIGlzIHNlbnQgdG8gc2VydmVyLXNpZGUgZW5kcG9pbnRzICh0b3RwUm91dGVzLnRzLCB0b2tlblJvdXRlcy50cykgd2hpY2ggbm9ybWFsaXplIHZpYSBjb25zb2xlUm91dGVIZWxwZXJzLnRzIGdldE5vcm1hbGl6ZWRTdHJpbmdGaWVsZCgpLiBUaGUgZXNjKCkgaGVscGVyIGFwcGxpZXMgTkZDIG5vcm1hbGl6YXRpb24gZm9yIGRpc3BsYXkuIFVuaWNvZGVWYWxpZGF0b3IgaXMgYSBOb2RlLmpzIG1vZHVsZSB1bmF2YWlsYWJsZSBpbiBicm93c2VyIGNvbnRleHQuIFBSICMxNzkxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy93ZWIvcm91dGVzL3RvdHBSb3V0ZXMudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBBbGwgdXNlciBpbnB1dCBmaWVsZHMgKGNvZGUsIHBlbmRpbmdJZCwgbGFiZWwpIGFyZSBleHRyYWN0ZWQgdmlhIGdldE5vcm1hbGl6ZWRTdHJpbmdGaWVsZCgpIGZyb20gY29uc29sZVJvdXRlSGVscGVycy50cyB3aGljaCBjYWxscyBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSgpLiBOb3JtYWxpemF0aW9uIGlzIGNlbnRyYWxpemVkIGluIHRoZSBzaGFyZWQgaGVscGVyLCBub3QgZHVwbGljYXRlZCBwZXItcm91dGVyLiBQUiAjMTc5NSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3JvdXRlcy90b2tlblJvdXRlcy50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEFsbCB1c2VyIGlucHV0IGZpZWxkcyAoY29uZmlybWF0aW9uQ29kZSkgYXJlIGV4dHJhY3RlZCB2aWEgZ2V0Tm9ybWFsaXplZFN0cmluZ0ZpZWxkKCkgZnJvbSBjb25zb2xlUm91dGVIZWxwZXJzLnRzIHdoaWNoIGNhbGxzIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKCkuIE5vcm1hbGl6YXRpb24gaXMgY2VudHJhbGl6ZWQgaW4gdGhlIHNoYXJlZCBoZWxwZXIsIG5vdCBkdXBsaWNhdGVkIHBlci1yb3V0ZXIuIFBSICMxNzk1J1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVGVzdCBGaWxlIFN1cHByZXNzaW9uc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIG1heSBjb250YWluIGludGVudGlvbmFsIHNlY3VyaXR5IHBhdHRlcm5zIGZvciB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLnRlc3QudHMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgbWF5IGNvbnRhaW4gaW50ZW50aW9uYWwgc2VjdXJpdHkgcGF0dGVybnMgZm9yIHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyouc3BlYy50cycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBtYXkgY29udGFpbiBpbnRlbnRpb25hbCBzZWN1cml0eSBwYXR0ZXJucyBmb3IgdGVzdGluZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0cy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdGllcyBhbmQgRTJFIHRlc3RzIGRvIG5vdCBwcm9jZXNzIHVudHJ1c3RlZCB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3Rlc3RzLyoqLyonLFxuICAgIHJlYXNvbjogJ0F1ZGl0IGxvZ2dpbmcgbm90IHJlcXVpcmVkIGZvciB0ZXN0IHV0aWxpdGllcyBhbmQgRTJFIHRlc3RzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDMnLFxuICAgIGZpbGU6ICd0ZXN0cy9lMmUvY2xlYW51cC10ZXN0LWRhdGEudHMnLFxuICAgIHJlYXNvbjogJ0ZhbHNlIHBvc2l0aXZlIC0gY29uc29sZS5sb2cgbWVzc2FnZSBzdHJpbmcgbGl0ZXJhbCwgbm90IGEgcGF0aCBvcGVyYXRpb24nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAxLTAwMScsXG4gICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIHVzZSBmYWtlIHRva2VucyBhbmQgc2VjcmV0cyBmb3IgdGVzdGluZyBzZWN1cml0eSBmZWF0dXJlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDEtMDAxJyxcbiAgICBmaWxlOiAndGVzdHMvZml4dHVyZXMvKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaXh0dXJlcyBjb250YWluIGludGVudGlvbmFsIG1vY2sgY3JlZGVudGlhbHMgY2xlYXJseSBtYXJrZWQgYXMgRkFLRS9URVNUL05PVF9SRUFMJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMS0wMDEnLFxuICAgIGZpbGU6ICd0ZXN0cy9zZWN1cml0eS9mcmFtZXdvcmsvUmFwaWRTZWN1cml0eVRlc3RpbmcudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBMaW5lIDIwMiBjb250YWlucyBhbiBpbnRlbnRpb25hbCBmYWtlIHRva2VuIChnaHBfMTIzNDU2Nzg5MC4uLikgZm9yIHNlY3VyaXR5IHRlc3RpbmcuIENsZWFybHkgbWFya2VkIHdpdGggTk9TT05BUiBjb21tZW50LiBVc2VkIHRvIHZlcmlmeSB0b2tlbnMgYXJlIG5vdCBleHBvc2VkIGluIGVycm9yIG1lc3NhZ2VzLiBQUiAjMSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAndGVzdHMvZml4dHVyZXMvdGVzdENyZWRlbnRpYWxzLnRzJyxcbiAgICByZWFzb246ICdDZW50cmFsaXplZCB0ZXN0IGNyZWRlbnRpYWxzIGZpbGUgd2l0aCBpbnRlbnRpb25hbGx5IGZha2UgdmFsdWVzIGZvciB0ZXN0aW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0NXRS04OS0wMDEnLFxuICAgIGZpbGU6ICdfX3Rlc3RzX18vKiovKicsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlcyBjb250YWluIFNRTCBpbmplY3Rpb24gcGF0dGVybnMgZm9yIHNlY3VyaXR5IHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIGNvbnRhaW4gY29tbWFuZCBpbmplY3Rpb24gcGF0dGVybnMgZm9yIHNlY3VyaXR5IHRlc3RpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMycsXG4gICAgZmlsZTogJ19fdGVzdHNfXy8qKi8qJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGVzIGNvbnRhaW4gcGF0aCB0cmF2ZXJzYWwgcGF0dGVybnMgZm9yIHNlY3VyaXR5IHRlc3RpbmcnXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFlBTUwgUGFyc2luZyBGYWxzZSBQb3NpdGl2ZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS95YW1sVmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdZYW1sVmFsaWRhdG9yIGlzIHRoZSBzZWN1cml0eSB2YWxpZGF0aW9uIGxheWVyIGl0c2VsZiAtIGl0IG5lZWRzIGRpcmVjdCB5YW1sLmxvYWQgYWNjZXNzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9zZWN1cml0eS9zZWN1cmVZYW1sUGFyc2VyLnRzJyxcbiAgICByZWFzb246ICdTZWN1cmVZYW1sUGFyc2VyIGlzIHRoZSBzZWN1cml0eSB3cmFwcGVyIHRoYXQgdmFsaWRhdGVzIFlBTUwgYmVmb3JlIHBhcnNpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL2VsZW1lbnRzL3NraWxscy9Ta2lsbE1hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ1VzZXMgeWFtbC5sb2FkIHdpdGggRkFJTFNBRkVfU0NIRU1BIGFuZCBzaXplIHZhbGlkYXRpb24gLSBlcXVpdmFsZW50IHNlY3VyaXR5IHRvIFNlY3VyZVlhbWxQYXJzZXIgZm9yIHJhdyBZQU1MIGltcG9ydCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvdG9vbHMvcG9ydGZvbGlvL3N1Ym1pdFRvUG9ydGZvbGlvVG9vbC50cycsXG4gICAgcmVhc29uOiAnRmFsc2UgcG9zaXRpdmUgLSBVc2VzIFNlY3VyZVlhbWxQYXJzZXIucGFyc2UoKSB3aGljaCBpcyB0aGUgc2VjdXJlIGltcGxlbWVudGF0aW9uIGRlc2lnbmVkIHRvIHByZXZlbnQgWUFNTCB2dWxuZXJhYmlsaXRpZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL2NvbmZpZy9Db25maWdNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogVXNlcyBqcy15YW1sIHdpdGggRkFJTFNBRkVfU0NIRU1BIGZvciBwdXJlIFlBTUwgY29uZmlnIGZpbGVzLiBUaGlzIHByZXZlbnRzIGNvZGUgZXhlY3V0aW9uIGFuZCBpcyB0aGUgYXBwcm9wcmlhdGUgc2VjdXJpdHkgbWVhc3VyZSBmb3IgY29uZmlnIGZpbGVzIHRoYXQgYXJlIE5PVCBtYXJrZG93biB3aXRoIGZyb250bWF0dGVyLiBSZWdyZXNzaW9uIHRlc3QgZW5zdXJlcyB3ZSBkbyBub3QgdXNlIFNlY3VyZVlhbWxQYXJzZXIgaGVyZSB3aGljaCB3b3VsZCByZXNldCBjb25maWcgdmFsdWVzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDUnLFxuICAgIGZpbGU6ICdzcmMvcG9ydGZvbGlvL1BvcnRmb2xpb0luZGV4TWFuYWdlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IE1lbW9yeSBmaWxlcyBhcmUgcHVyZSBZQU1MIChub3QgTWFya2Rvd24gd2l0aCBmcm9udG1hdHRlciksIHNvIFNlY3VyZVlhbWxQYXJzZXIgY2Fubm90IGJlIHVzZWQuIFVzZXMgeWFtbC5sb2FkIHdpdGggRkFJTFNBRkVfU0NIRU1BICsgc2l6ZSB2YWxpZGF0aW9uICsgdHlwZSBjaGVja2luZyBmb3Igc2VjdXJpdHkuIFRoZXNlIGFyZSB0cnVzdGVkIGxvY2FsIHVzZXIgZmlsZXMuIEZpeCBmb3IgaXNzdWUgIzExOTYuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvcmVzb3VyY2VzL0NhcGFiaWxpdHlJbmRleFJlc291cmNlLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogY2FwYWJpbGl0eS1pbmRleC55YW1sIGlzIGEgcHVyZSBZQU1MIGZpbGUgKG5vdCBNYXJrZG93biB3aXRoIGZyb250bWF0dGVyKSwgc28gU2VjdXJlWWFtbFBhcnNlciBjYW5ub3QgYmUgdXNlZC4gVXNlcyB5YW1sLmxvYWQgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgd2hpY2ggcHJldmVudHMgY29kZSBleGVjdXRpb24uIFRoaXMgaXMgYSB0cnVzdGVkIGxvY2FsIHN5c3RlbS1nZW5lcmF0ZWQgZmlsZSAoY3JlYXRlZCBieSBFbmhhbmNlZEluZGV4TWFuYWdlcikuIFNhbWUgc2VjdXJpdHkgcGF0dGVybiBhcyBDb25maWdNYW5hZ2VyIGFuZCBQb3J0Zm9saW9JbmRleE1hbmFnZXIgZm9yIHB1cmUgWUFNTCBmaWxlcy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL2NvbnZlcnRlcnMvRG9sbGhvdXNlVG9BbnRocm9waWNDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBGb3JtYXQgdHJhbnNmb3JtZXIsIG5vdCBzZWN1cml0eSBib3VuZGFyeS4gVXNlcyB5YW1sLmxvYWQgd2l0aCBDT1JFX1NDSEVNQSB0byBwcmV2ZW50IGRlc2VyaWFsaXphdGlvbiBhdHRhY2tzLiBDYW5ub3QgdXNlIFNlY3VyZVlhbWxQYXJzZXIgKGV4cGVjdHMgZnVsbCBNYXJrZG93biB3aXRoIGZyb250bWF0dGVyLCBub3QgZXh0cmFjdGVkIFlBTUwgc3RyaW5ncykuIFByZXNlcnZlcyBjb250ZW50IGZpZGVsaXR5IC0gbm8gbW9kaWZpY2F0aW9uLiBJbnB1dCBza2lsbHMgYWxyZWFkeSB2YWxpZGF0ZWQgKGZyb20gRG9sbGhvdXNlTUNQIHN5c3RlbSkuIFBSICMxNDAwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0FudGhyb3BpY1RvRG9sbGhvdXNlQ29udmVydGVyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogRm9ybWF0IHRyYW5zZm9ybWVyLCBub3Qgc2VjdXJpdHkgYm91bmRhcnkuIFVzZXMgeWFtbC5sb2FkIHdpdGggQ09SRV9TQ0hFTUEgdG8gcHJldmVudCBkZXNlcmlhbGl6YXRpb24gYXR0YWNrcy4gQ2Fubm90IHVzZSBTZWN1cmVZYW1sUGFyc2VyIChwcm9jZXNzZXMgZXh0cmFjdGVkIFlBTUwgc3RyaW5ncykuIFByZXNlcnZlcyBjb250ZW50IGZpZGVsaXR5IC0gbm8gbW9kaWZpY2F0aW9uLiBPdXRwdXQgdmFsaWRhdGVkIHdoZW4gbG9hZGVkIHZpYSBTa2lsbE1hbmFnZXIubG9hZCgpIHdoaWNoIGFwcGxpZXMgU2VjdXJlWWFtbFBhcnNlci4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5L2F1ZGl0L3NjYW5uZXJzL0NvbmZpZ3VyYXRpb25TY2FubmVyLnRzJyxcbiAgICByZWFzb246ICdJTlRFTlRJT05BTDogU2VjdXJpdHkgc2Nhbm5lciBmb3IgcHVyZSBZQU1MIGNvbmZpZ3VyYXRpb24gZmlsZXMgKG5vdCBNYXJrZG93biB3aXRoIGZyb250bWF0dGVyKS4gVXNlcyB5YW1sLmxvYWQgd2l0aCBGQUlMU0FGRV9TQ0hFTUEgd2hpY2ggcHJldmVudHMgY29kZSBleGVjdXRpb24gYW5kIGFyYml0cmFyeSBvYmplY3QgaW5zdGFudGlhdGlvbi4gU2VjdXJlWWFtbFBhcnNlciBpcyBkZXNpZ25lZCBmb3IgZWxlbWVudCBmaWxlcyAoTWFya2Rvd24gd2l0aCBZQU1MIGZyb250bWF0dGVyKSwgbm90IHJhdyBjb25maWcgZmlsZXMuIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9TZXJpYWxpemF0aW9uU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IFVzZXMgc2FmZSBZQU1MIHNjaGVtYSAoRkFJTFNBRkVfU0NIRU1BIG9yIEpTT05fU0NIRU1BKSBzZWxlY3RlZCBieSBnZXRZYW1sU2NoZW1hKCkuIFNlY3VyZVlhbWxQYXJzZXIgaXMgZGVzaWduZWQgZm9yIE1hcmtkb3duIGZpbGVzIHdpdGggZnJvbnRtYXR0ZXIsIG5vdCBwdXJlIFlBTUwgcGFyc2luZy4gTGluZXMgMzA3IGFuZCA4MTIgdXNlIHNhZmUgc2NoZW1hcyB0aGF0IHByZXZlbnQgY29kZSBleGVjdXRpb24uJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNScsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy9tY3AtYXFsL01DUEFRTEhhbmRsZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBJbXBvcnQgb3BlcmF0aW9uIHBhcnNlcyBwdXJlIFlBTUwgZGF0YSBmcm9tIGV4cG9ydCBwYWNrYWdlcyAobm90IE1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXIpLiBVc2VzIHlhbWwubG9hZCB3aXRoIEpTT05fU0NIRU1BIHdoaWNoIHByZXZlbnRzIGNvZGUgZXhlY3V0aW9uIGFuZCBpcyBhcHByb3ByaWF0ZSBmb3Igc3RydWN0dXJlZCBlbGVtZW50IGRhdGEuIFNlY3VyZVlhbWxQYXJzZXIgY2Fubm90IGJlIHVzZWQgYXMgaXQgZXhwZWN0cyBNYXJrZG93biBmcm9udG1hdHRlciBmb3JtYXQuIFBSICMxOTMnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTZXJ2aWNlIExheWVyIEZhbHNlIFBvc2l0aXZlcyAoUmVmYWN0b3IgUFIpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvU2VyaWFsaXphdGlvblNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBTZXJpYWxpemF0aW9uU2VydmljZSBoYW5kbGVzIGRhdGEgc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24uIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBpcyBhcHBsaWVkIGF0IHRoZSB2YWxpZGF0aW9uIGxheWVyIChWYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZUFuZFNhbml0aXplSW5wdXQgY2FsbHMgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUpIGJlZm9yZSBkYXRhIHJlYWNoZXMgc2VyaWFsaXphdGlvbi4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL0ZpbGVPcGVyYXRpb25zU2VydmljZS50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEZpbGVPcGVyYXRpb25zU2VydmljZSBoYW5kbGVzIGZpbGUgSS9PIG9wZXJhdGlvbnMuIFBhdGhzIGFyZSB2YWxpZGF0ZWQgYnkgUGF0aFZhbGlkYXRvci4gQ29udGVudCB2YWxpZGF0aW9uIGluY2x1ZGluZyBVbmljb2RlIG5vcm1hbGl6YXRpb24gaGFwcGVucyBhdCB0aGUgZWxlbWVudCBtYW5hZ2VyIGxheWVyIGJlZm9yZSBmaWxlIG9wZXJhdGlvbnMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL0VsZW1lbnRWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBJbnRlcmZhY2UvdHlwZSBkZWZpbml0aW9uIGZpbGUgb25seS4gQ29uY3JldGUgaW1wbGVtZW50YXRpb25zIHVzZSBWYWxpZGF0aW9uU2VydmljZSB3aGljaCBwZXJmb3JtcyBVbmljb2RlIG5vcm1hbGl6YXRpb24gdmlhIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKCkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL0dlbmVyaWNFbGVtZW50VmFsaWRhdG9yLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogQ2FsbHMgSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZSgpIGF0IHRoZSB2YWxpZGF0aW9uIGJvdW5kYXJ5IChsaW5lIDY0KSB3aGljaCByZWN1cnNpdmVseSBub3JtYWxpemVzIGFsbCBzdHJpbmdzIHZpYSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSgpLiBUaGlzIGlzIHRoZSBjZW50cmFsaXplZCBub3JtYWxpemF0aW9uIHBvaW50IGZvciBhbGwgZWxlbWVudCB2YWxpZGF0b3JzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvdmFsaWRhdGlvbi9QZXJzb25hRWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIEN1c3RvbSBmaWVsZHMgYWRkaXRpb25hbGx5IG5vcm1hbGl6ZWQgYnkgVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVBbmRTYW5pdGl6ZUlucHV0KCkuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL01lbW9yeUVsZW1lbnRWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBFeHRlbmRzIEdlbmVyaWNFbGVtZW50VmFsaWRhdG9yIHdoaWNoIG5vcm1hbGl6ZXMgYWxsIGlucHV0IHZpYSBJbnB1dE5vcm1hbGl6ZXIubm9ybWFsaXplKCkgYXQgdGhlIGJvdW5kYXJ5LiBDdXN0b20gZmllbGRzIGFkZGl0aW9uYWxseSBub3JtYWxpemVkIGJ5IFZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlQW5kU2FuaXRpemVJbnB1dCgpLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvdmFsaWRhdGlvbi9UZW1wbGF0ZUVsZW1lbnRWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBFeHRlbmRzIEdlbmVyaWNFbGVtZW50VmFsaWRhdG9yIHdoaWNoIG5vcm1hbGl6ZXMgYWxsIGlucHV0IHZpYSBJbnB1dE5vcm1hbGl6ZXIubm9ybWFsaXplKCkgYXQgdGhlIGJvdW5kYXJ5LiBDdXN0b20gZmllbGRzIGFkZGl0aW9uYWxseSBub3JtYWxpemVkIGJ5IFZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlQW5kU2FuaXRpemVJbnB1dCgpLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvdmFsaWRhdGlvbi9FbnNlbWJsZUVsZW1lbnRWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBFeHRlbmRzIEdlbmVyaWNFbGVtZW50VmFsaWRhdG9yIHdoaWNoIG5vcm1hbGl6ZXMgYWxsIGlucHV0IHZpYSBJbnB1dE5vcm1hbGl6ZXIubm9ybWFsaXplKCkgYXQgdGhlIGJvdW5kYXJ5LiBDdXN0b20gZmllbGRzIGFkZGl0aW9uYWxseSBub3JtYWxpemVkIGJ5IFZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlQW5kU2FuaXRpemVJbnB1dCgpLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvdmFsaWRhdGlvbi9Ta2lsbEVsZW1lbnRWYWxpZGF0b3IudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBFeHRlbmRzIEdlbmVyaWNFbGVtZW50VmFsaWRhdG9yIHdoaWNoIG5vcm1hbGl6ZXMgYWxsIGlucHV0IHZpYSBJbnB1dE5vcm1hbGl6ZXIubm9ybWFsaXplKCkgYXQgdGhlIGJvdW5kYXJ5LiB2YWxpZGF0ZU1ldGFkYXRhKCkgcmVjZWl2ZXMgcHJlLW5vcm1hbGl6ZWQgZWxlbWVudC5tZXRhZGF0YSBmcm9tIFNraWxsIGNvbnN0cnVjdG9yIChVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSArIHNhbml0aXplSW5wdXQpLiBQUiAjNDU3J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy92YWxpZGF0aW9uL0FnZW50RWxlbWVudFZhbGlkYXRvci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IEV4dGVuZHMgR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3Igd2hpY2ggbm9ybWFsaXplcyBhbGwgaW5wdXQgdmlhIElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoKSBhdCB0aGUgYm91bmRhcnkuIEFnZW50LXNwZWNpZmljIGZpZWxkcyAoZ29hbCwgc3lzdGVtUHJvbXB0LCBhY3RpdmF0ZXMsIHRvb2xzLCBhdXRvbm9teSkgYWRkaXRpb25hbGx5IG5vcm1hbGl6ZWQgYnkgVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVDb250ZW50KCkuIFBSICMxMzQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2NvbnZlcnRlcnMvRG9sbGhvdXNlVG9BbnRocm9waWNDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBGb3JtYXQgdHJhbnNmb3JtZXIsIG5vdCBzZWN1cml0eSBib3VuZGFyeS4gUHJlc2VydmVzIGNvbnRlbnQgZmlkZWxpdHkgd2l0aG91dCBVbmljb2RlIG5vcm1hbGl6YXRpb24uIElucHV0IHNraWxscyBhbHJlYWR5IHZhbGlkYXRlZCAoZnJvbSBEb2xsaG91c2VNQ1Agc3lzdGVtKS4gT25lLXRvLW9uZSBtZWNoYW5pY2FsIHRyYW5zZm9ybWF0aW9uIC0gbm8gY29udGVudCBtb2RpZmljYXRpb24uIFNlY3VyaXR5IGJvdW5kYXJ5IGlzIFNraWxsTWFuYWdlci5sb2FkKCksIG5vdCBjb252ZXJ0ZXJzLiBQUiAjMTQwMCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9BbnRocm9waWNUb0RvbGxob3VzZUNvbnZlcnRlci50cycsXG4gICAgcmVhc29uOiAnSU5URU5USU9OQUw6IEZvcm1hdCB0cmFuc2Zvcm1lciwgbm90IHNlY3VyaXR5IGJvdW5kYXJ5LiBQcmVzZXJ2ZXMgY29udGVudCBmaWRlbGl0eSB3aXRob3V0IFVuaWNvZGUgbm9ybWFsaXphdGlvbi4gT3V0cHV0IHZhbGlkYXRlZCB3aGVuIGxvYWRlZCB2aWEgU2tpbGxNYW5hZ2VyLmxvYWQoKSB3aGljaCBhcHBsaWVzIGZ1bGwgc2VjdXJpdHkgdmFsaWRhdGlvbiAoU2VjdXJlWWFtbFBhcnNlciArIFVuaWNvZGVWYWxpZGF0b3IpLiBPbmUtdG8tb25lIG1lY2hhbmljYWwgdHJhbnNmb3JtYXRpb24uIFBSICMxNDAwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0NvbnRlbnRFeHRyYWN0b3IudHMnLFxuICAgIHJlYXNvbjogJ0lOVEVOVElPTkFMOiBGb3JtYXQgYW5hbHlzaXMgdG9vbCBmb3IgY29udmVydGVycywgbm90IHNlY3VyaXR5IGJvdW5kYXJ5LiBQcmVzZXJ2ZXMgY29udGVudCBmaWRlbGl0eSB3aXRob3V0IG1vZGlmaWNhdGlvbi4gVXNlZCBieSBmb3JtYXQgdHJhbnNmb3JtZXJzIHdoaWNoIHByZXNlcnZlIG9uZS10by1vbmUgY29ycmVzcG9uZGVuY2UuIE5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZyAtIGludGVybmFsIHV0aWxpdHkgZm9yIG1lY2hhbmljYWwgY29udmVyc2lvbi4gUFIgIzE0MDAnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2NvbnZlcnRlcnMvRG9sbGhvdXNlVG9BbnRocm9waWNDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBDb252ZXJ0ZXJzIGFyZSBmb3JtYXQgdHJhbnNmb3JtZXJzLCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucy4gQXVkaXQgbG9nZ2luZyBoYXBwZW5zIGF0IENMSSBsZXZlbCAoY2xpL2NvbnZlcnQudHMgbGluZSAyNTEpIHdoZXJlIGNvbnZlcnNpb24gb3BlcmF0aW9ucyBhcmUgbG9nZ2VkLiBDb252ZXJ0ZXJzIGFyZSBpbnRlcm5hbCB1dGlsaXRpZXMsIG5vdCB1c2VyLWZhY2luZyBzZWN1cml0eSBib3VuZGFyaWVzLiBQUiAjMTQwMCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29udmVydGVycy9BbnRocm9waWNUb0RvbGxob3VzZUNvbnZlcnRlci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IENvbnZlcnRlcnMgYXJlIGZvcm1hdCB0cmFuc2Zvcm1lcnMsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zLiBBdWRpdCBsb2dnaW5nIGhhcHBlbnMgYXQgQ0xJIGxldmVsIChjbGkvY29udmVydC50cyBsaW5lIDI1MSkgd2hlcmUgY29udmVyc2lvbiBvcGVyYXRpb25zIGFyZSBsb2dnZWQuIENvbnZlcnRlcnMgYXJlIGludGVybmFsIHV0aWxpdGllcywgbm90IHVzZXItZmFjaW5nIHNlY3VyaXR5IGJvdW5kYXJpZXMuIFBSICMxNDAwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvcmVzb3VyY2VzL0NhcGFiaWxpdHlJbmRleFJlc291cmNlLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogRmlsZSBwYXRoIGlzIGNvbnN0cnVjdGVkIGZyb20gb3MuaG9tZWRpcigpIChzeXN0ZW0tcHJvdmlkZWQpIHdpdGggaGFyZGNvZGVkIHBhdGggc2VnbWVudHMuIE5vIHVzZXIgaW5wdXQgZmxvd3MgdGhyb3VnaCB0aGlzIGNvZGUuIFRoZSBjYXBhYmlsaXR5LWluZGV4LnlhbWwgZmlsZSBpcyBzeXN0ZW0tZ2VuZXJhdGVkIGJ5IEVuaGFuY2VkSW5kZXhNYW5hZ2VyLCBub3QgdXNlci1wcm92aWRlZC4nXG4gIH0sXG4gIFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENsZWFyLXRleHQgTG9nZ2luZyBGYWxzZSBQb3NpdGl2ZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAxMCcsXG4gICAgZmlsZTogJ3NyYy91dGlscy9sb2dnZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBUaGUgbG9nZ2VyIGFscmVhZHkgc2FuaXRpemVzIGFsbCBzZW5zaXRpdmUgZGF0YSB0aHJvdWdoIHNhbml0aXplTWVzc2FnZSgpIGFuZCBzYW5pdGl6ZU9iamVjdCgpIG1ldGhvZHMuIEFsbCBzZW5zaXRpdmUgZmllbGRzICh0b2tlbnMsIGtleXMsIHBhc3N3b3JkcywgZXRjLikgYXJlIHJlcGxhY2VkIHdpdGggW1JFREFDVEVEXSBiZWZvcmUgYW55IGNvbnNvbGUgb3V0cHV0LiBMaW5lcyAyODgsIDI5MSwgYW5kIDI5NSBvbmx5IGxvZyBwcmUtc2FuaXRpemVkIHNhZmUgbWVzc2FnZXMuJ1xuICB9LFxuICBcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTZWN1cml0eSBSdWxlIERlZmluaXRpb24gRmlsZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvYXVkaXQvcnVsZXMvU2VjdXJpdHlSdWxlcy50cycsXG4gICAgcmVhc29uOiAnVGhpcyBpcyBhIHJlZ2V4IHBhdHRlcm4gZGVmaW5pdGlvbiBmb3IgZGV0ZWN0aW5nIGlubmVySFRNTCB1c2FnZSwgbm90IGFjdHVhbCB1c2FnZSdcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUGVyc29uYSBMb2FkaW5nIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDAxJyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvUGVyc29uYUxvYWRlci50cycsXG4gICAgcmVhc29uOiAnUGVyc29uYUxvYWRlciB2YWxpZGF0ZXMgcGVyc29uYXMgdGhyb3VnaCBTZWN1cmVZYW1sUGFyc2VyIGFuZCBDb250ZW50VmFsaWRhdG9yJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwMScsXG4gICAgZmlsZTogJ3NyYy9wZXJzb25hL1BlcnNvbmFNYW5hZ2VyLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogUGVyc29uYU1hbmFnZXIgdmFsaWRhdGVzIGFsbCBsb2FkZWQgcGVyc29uYXMgdXNpbmcgUGVyc29uYVZhbGlkYXRvci52YWxpZGF0ZVBlcnNvbmEoKSBpbW1lZGlhdGVseSBhZnRlciBsb2FkaW5nIGF0IGxpbmUgMzI1LiBJbnZhbGlkIHBlcnNvbmFzIGFyZSByZWplY3RlZCBhbmQgcmVtb3ZlZCBmcm9tIGNhY2hlLiBQUiAjMSdcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVW5pY29kZSBOb3JtYWxpemF0aW9uIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3R5cGVzLyoudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlcyBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90ZWxlbWV0cnkvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1RlbGVtZXRyeSB0eXBlIGRlZmluaXRpb24gZmlsZSAtIGNvbnRhaW5zIG9ubHkgVHlwZVNjcmlwdCBpbnRlcmZhY2VzLCBubyBydW50aW1lIGNvZGUgb3IgdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3RlbGVtZXRyeS90eXBlcy50cycsXG4gICAgcmVhc29uOiAnVGVsZW1ldHJ5IHR5cGUgZGVmaW5pdGlvbiBmaWxlIC0gQ0kgcGF0aCB2YXJpYW50LCBjb250YWlucyBvbmx5IFR5cGVTY3JpcHQgaW50ZXJmYWNlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdHlwZXMvZWxlbWVudHMvKi50cycsXG4gICAgcmVhc29uOiAnRWxlbWVudCBpbnRlcmZhY2UgZmlsZXMgYXJlIHR5cGUgZGVmaW5pdGlvbnMgdGhhdCBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9lcnJvcnMvKi50cycsXG4gICAgcmVhc29uOiAnRXJyb3IgY2xhc3NlcyBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb25maWcvKi50cycsXG4gICAgcmVhc29uOiAnQ29uZmlndXJhdGlvbiBmaWxlcyBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0IGRpcmVjdGx5J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb25zdGFudHMvKi50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnQgZGVmaW5pdGlvbiBmaWxlcyBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9lbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gY29udGFpbnMgb25seSB0eXBlIGRlZmluaXRpb25zIGFuZCBjb25zdGFudHMsIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9zcmMvZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudHMgZmlsZSAtIGNvbnRhaW5zIG9ubHkgdHlwZSBkZWZpbml0aW9ucyBhbmQgY29uc3RhbnRzLCBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudHMgZmlsZSAtIENJIGVudmlyb25tZW50cyBtYXkgaGF2ZSBkaWZmZXJlbnQgcGF0aCBzdHJ1Y3R1cmVzLCBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnZWxlbWVudHMvbWVtb3JpZXMvY29uc3RhbnRzLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudHMgZmlsZSAtIGhhbmRsZXMgY2FzZSB3aGVyZSBzcmMvIHByZWZpeCBpcyBzdHJpcHBlZCwgbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9yZXRlbnRpb24vdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlIGZvciByZXRlbnRpb24gcG9saWN5IGludGVyZmFjZXMgLSBjb250YWlucyBvbmx5IFR5cGVTY3JpcHQgaW50ZXJmYWNlcyBhbmQgdHlwZSBkZWZpbml0aW9ucywgbm8gcnVudGltZSBjb2RlIG9yIHVzZXIgaW5wdXQgcHJvY2Vzc2luZy4gQWN0dWFsIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBpcyBpbXBsZW1lbnRlZCBpbiBSZXRlbnRpb25Qb2xpY3lTZXJ2aWNlIGFuZCBNZW1vcnlSZXRlbnRpb25TdHJhdGVneS4gUFIgIzUyJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9lbGVtZW50cy9tZW1vcmllcy91dGlscy50cycsXG4gICAgcmVhc29uOiAnTWVtb3J5IHV0aWxpdGllcyAtIGFsbCBleHRlcm5hbCBpbnB1dCBpcyBub3JtYWxpemVkIHZpYSBVbmljb2RlVmFsaWRhdG9yIGluIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICcqKi9zcmMvZWxlbWVudHMvbWVtb3JpZXMvdXRpbHMudHMnLFxuICAgIHJlYXNvbjogJ01lbW9yeSB1dGlsaXRpZXMgLSBhbGwgZXh0ZXJuYWwgaW5wdXQgaXMgbm9ybWFsaXplZCB2aWEgVW5pY29kZVZhbGlkYXRvciBpbiB0aGUgZnVuY3Rpb25zIHRoZW1zZWx2ZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovZWxlbWVudHMvbWVtb3JpZXMvdXRpbHMudHMnLFxuICAgIHJlYXNvbjogJ01lbW9yeSB1dGlsaXRpZXMgLSBDSSBwYXRoIHZhcmlhbnQsIGFsbCBleHRlcm5hbCBpbnB1dCBpcyBub3JtYWxpemVkIHZpYSBVbmljb2RlVmFsaWRhdG9yJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ2VsZW1lbnRzL21lbW9yaWVzL3V0aWxzLnRzJyxcbiAgICByZWFzb246ICdNZW1vcnkgdXRpbGl0aWVzIC0gc3JjLXN0cmlwcGVkIHBhdGggdmFyaWFudCwgYWxsIGV4dGVybmFsIGlucHV0IGlzIG5vcm1hbGl6ZWQgdmlhIFVuaWNvZGVWYWxpZGF0b3InXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovbWVtb3JpZXMvKi50cycsXG4gICAgcmVhc29uOiAnTWVtb3J5IGVsZW1lbnQgZmlsZXMgLSBhbGwgdXNlciBpbnB1dCBpcyBwcm9wZXJseSBub3JtYWxpemVkIGluIE1lbW9yeS50cyBhbmQgTWVtb3J5TWFuYWdlci50cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvbWVtb3JpZXMvKi50cycsXG4gICAgcmVhc29uOiAnTWVtb3J5IGVsZW1lbnQgZmlsZXMgLSBhbGwgdXNlciBpbnB1dCBpcyBwcm9wZXJseSBub3JtYWxpemVkIGluIE1lbW9yeS50cyBhbmQgTWVtb3J5TWFuYWdlci50cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdXRpbHMvdmVyc2lvbi50cycsXG4gICAgcmVhc29uOiAnVmVyc2lvbiB1dGlsaXR5IG9ubHkgaGFuZGxlcyBpbnRlcm5hbCB2ZXJzaW9uIHN0cmluZ3MsIG5vdCB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jYWNoZS8qLnRzJyxcbiAgICByZWFzb246ICdDYWNoZSBsYXllciByZWNlaXZlcyBhbHJlYWR5LW5vcm1hbGl6ZWQgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlY3VyaXR5LyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ1NlY3VyaXR5IG1vZHVsZXMgaGFuZGxlIHZhbGlkYXRpb24gYW5kIG5vcm1hbGl6YXRpb24gdGhlbXNlbHZlcydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvaW5kZXgudHMnLFxuICAgIHJlYXNvbjogJ01haW4gZW50cnkgcG9pbnQgZGVsZWdhdGVzIHRvIFNlcnZlclNldHVwIHdoaWNoIG5vcm1hbGl6ZXMgYWxsIGlucHV0cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL1NlcnZlclNldHVwLnRzJyxcbiAgICByZWFzb246ICdDRU5UUkFMSVpFRCBVTklDT0RFIE5PUk1BTElaQVRJT046IFRoaXMgaXMgd2hlcmUgVW5pY29kZSBub3JtYWxpemF0aW9uIGlzIGltcGxlbWVudGVkIGZvciBBTEwgdG9vbCBpbnB1dHMuIFNlcnZlclNldHVwLm5vcm1hbGl6ZUFyZ3VtZW50c1VuaWNvZGUoKSAobGluZXMgMTEzLTE0NikgcmVjdXJzaXZlbHkgbm9ybWFsaXplcyBhbGwgc3RyaW5nIGFyZ3VtZW50cyBiZWZvcmUgdGhleSByZWFjaCBhbnkgaGFuZGxlci4gVGhpcyBpcyB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmFsIHBhdHRlcm4gKHNpbmdsZSBlbnRyeSBwb2ludCkuIFBSICMxJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ2VudHJhbGl6ZWQgVW5pY29kZSBOb3JtYWxpemF0aW9uIC0gUFIgIzFcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBBbGwgaGFuZGxlcnMgcmVjZWl2ZSBwcmUtbm9ybWFsaXplZCBpbnB1dCBmcm9tIFNlcnZlclNldHVwLnRzXG4gIC8vIFNlcnZlclNldHVwLnNldHVwQ2FsbFRvb2xIYW5kbGVyKCkgY2FsbHMgbm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpXG4gIC8vIG9uIGxpbmUgODkgQkVGT1JFIGRpc3BhdGNoaW5nIHRvIGFueSBoYW5kbGVyLiBUaGlzIHJlY3Vyc2l2ZWx5XG4gIC8vIG5vcm1hbGl6ZXMgYWxsIHN0cmluZ3MgaW4gdGhlIGFyZ3VtZW50cyBvYmplY3QuXG4gIC8vIFNlZSBzcmMvc2VydmVyL1NlcnZlclNldHVwLnRzIGxpbmVzIDExMy0xNDYgZm9yIGltcGxlbWVudGF0aW9uLlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdC1hcmNoaXZlLyoqLyonLFxuICAgIHJlYXNvbjogJ0NFTlRSQUxJWkVEIE5PUk1BTElaQVRJT046IFRlc3QgYXJjaGl2ZSBmaWxlcyBhcmUgYXJjaGl2ZWQgZXhwZXJpbWVudHMsIG5vdCBwcm9kdWN0aW9uIGNvZGUuIEFsbCBwcm9kdWN0aW9uIHVzZXIgaW5wdXQgaXMgbm9ybWFsaXplZCBpbiBTZXJ2ZXJTZXR1cC50cyBiZWZvcmUgcmVhY2hpbmcgaGFuZGxlcnMuIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy8qLnRzJyxcbiAgICByZWFzb246ICdDRU5UUkFMSVpFRCBOT1JNQUxJWkFUSU9OOiBBbGwgaGFuZGxlcnMgcmVjZWl2ZSBwcmUtbm9ybWFsaXplZCBpbnB1dCBmcm9tIFNlcnZlclNldHVwLm5vcm1hbGl6ZUFyZ3VtZW50c1VuaWNvZGUoKSAobGluZXMgODksIDExMy0xNDYpLiBVbmljb2RlIG5vcm1hbGl6YXRpb24gaGFwcGVucyBhdCB0aGUgZW50cnkgcG9pbnQgYmVmb3JlIGhhbmRsZXJzIGFyZSBpbnZva2VkLiBQUiAjMSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvKiovKi50cycsXG4gICAgcmVhc29uOiAnQ0VOVFJBTElaRUQgTk9STUFMSVpBVElPTjogQWxsIGhhbmRsZXIgc3RyYXRlZ2llcyBhbmQgbW9kdWxlcyByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IGZyb20gU2VydmVyU2V0dXAubm9ybWFsaXplQXJndW1lbnRzVW5pY29kZSgpLiBJbnB1dCBpcyBzYW5pdGl6ZWQgYXQgdGhlIE1DUCByZXF1ZXN0IGxheWVyLiBQUiAjMSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvZWxlbWVudHMvKiovKi50cycsXG4gICAgcmVhc29uOiAnQ0VOVFJBTElaRUQgTk9STUFMSVpBVElPTjogRWxlbWVudCBtYW5hZ2VycyByZWNlaXZlIHByZS1ub3JtYWxpemVkIGlucHV0IGZyb20gaGFuZGxlcnMsIHdoaWNoIHJlY2VpdmUgcHJlLW5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBTZXJ2ZXJTZXR1cC4gRGVmZW5zZSBpbiBkZXB0aCB3aXRoIGNlbnRyYWxpemVkIGVudHJ5IHBvaW50IG5vcm1hbGl6YXRpb24uIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9kaS9Db250YWluZXIudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBESSBDb250YWluZXIgb25seSB3aXJlcyBkZXBlbmRlbmNpZXMsIGRvZXMgbm90IHByb2Nlc3MgdXNlciBpbnB1dC4gQWxsIHVzZXIgaW5wdXQgaXMgbm9ybWFsaXplZCBpbiBTZXJ2ZXJTZXR1cCBiZWZvcmUgcmVhY2hpbmcgYW55IGluamVjdGVkIHNlcnZpY2UuIFBSICMxJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb2xsZWN0aW9uLyoudHMnLFxuICAgIHJlYXNvbjogJ01hcmtldHBsYWNlIG1vZHVsZXMgcmVjZWl2ZSBub3JtYWxpemVkIGlucHV0IGZyb20gdG9vbCBoYW5kbGVycydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvY29sbGVjdGlvbi8qKi8qLnRzJyxcbiAgICByZWFzb246ICdNYXJrZXRwbGFjZSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvKi50cycsXG4gICAgcmVhc29uOiAnUGVyc29uYSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvKiovKi50cycsXG4gICAgcmVhc29uOiAnUGVyc29uYSBtb2R1bGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIHRvb2wgaGFuZGxlcnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3VwZGF0ZS8qLnRzJyxcbiAgICByZWFzb246ICdVcGRhdGUgbW9kdWxlcyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSB0b29sIGhhbmRsZXJzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy90b29scy8qLnRzJyxcbiAgICByZWFzb246ICdUb29sIGZpbGVzIHJlY2VpdmUgbm9ybWFsaXplZCBpbnB1dCBmcm9tIFNlcnZlclNldHVwJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlIGRvZXMgbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL3Rvb2xzLyoudHMnLFxuICAgIHJlYXNvbjogJ1NlcnZlciB0b29scyByZWNlaXZlIG5vcm1hbGl6ZWQgaW5wdXQgZnJvbSBTZXJ2ZXJTZXR1cCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzY3JpcHRzLyoqLyonLFxuICAgIHJlYXNvbjogJ0J1aWxkIGFuZCB1dGlsaXR5IHNjcmlwdHMgZG8gbm90IHByb2Nlc3MgdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdG9vbHMvcG9ydGZvbGlvL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZSBjb250YWluaW5nIG9ubHkgVHlwZVNjcmlwdCBpbnRlcmZhY2VzIC0gbm8gcnVudGltZSBjb2RlIG9yIHVzZXIgaW5wdXQgcHJvY2Vzc2luZydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvdG9vbHMvKiovdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlcyBkbyBub3QgcHJvY2VzcyB1c2VyIGlucHV0IC0gY29tcGlsZS10aW1lIG9ubHknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL0J1aWxkSW5mb1NlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0J1aWxkSW5mb1NlcnZpY2Ugb25seSBwcm9jZXNzZXMgc3lzdGVtIGluZm9ybWF0aW9uIChwYWNrYWdlLmpzb24sIGdpdCBjb21tYW5kcywgRG9ja2VyIHJ1bnRpbWUpIC0gdGhlIE1DUCB0b29sIHRha2VzIG5vIHBhcmFtZXRlcnMgYW5kIG5vIHVzZXIgaW5wdXQgZmxvd3MgdGhyb3VnaCB0aGlzIHNlcnZpY2UnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL1N5bmNIYW5kbGVyVjIudHMnLFxuICAgIHJlYXNvbjogJ1N5bmNIYW5kbGVyVjIgcmVjZWl2ZXMgYWxyZWFkeS1ub3JtYWxpemVkIGlucHV0IGZyb20gdGhlIE1DUCByZXF1ZXN0IGxheWVyLiBBbGwgdXNlciBpbnB1dCBpcyBub3JtYWxpemVkIGluIFNlcnZlclNldHVwIGJlZm9yZSByZWFjaGluZyBoYW5kbGVycy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2hhbmRsZXJzL0NvbmZpZ0hhbmRsZXIudHMnLFxuICAgIHJlYXNvbjogJ0NvbmZpZ0hhbmRsZXIgcmVjZWl2ZXMgYWxyZWFkeS1ub3JtYWxpemVkIGlucHV0IGZyb20gdGhlIE1DUCByZXF1ZXN0IGxheWVyLiBBbGwgdXNlciBpbnB1dCBpcyBub3JtYWxpemVkIGluIFNlcnZlclNldHVwIGJlZm9yZSByZWFjaGluZyBoYW5kbGVycy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdC1zeW5jLW9wZXJhdGlvbnMuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBmaWxlIGZvciBkZXZlbG9wbWVudCB0ZXN0aW5nLiBEb2VzIG5vdCBwcm9jZXNzIHByb2R1Y3Rpb24gdXNlciBpbnB1dC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVzdC1zeW5jLW9wZXJhdGlvbnMuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBmaWxlIGZvciBkZXZlbG9wbWVudCB0ZXN0aW5nLiBEb2VzIG5vdCBwcm9jZXNzIHByb2R1Y3Rpb24gdXNlciBpbnB1dC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdC0qLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgZm9yIGRldmVsb3BtZW50IHRlc3RpbmcuIERvIG5vdCBwcm9jZXNzIHByb2R1Y3Rpb24gdXNlciBpbnB1dC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAndGVzdC0qLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkuIEF1ZGl0IGxvZ2dpbmcgbm90IHJlcXVpcmVkIGZvciBkZXZlbG9wbWVudCB0ZXN0IHNjcmlwdHMuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICd0ZXN0LSouanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdXRpbGl0eSBmaWxlcyB1c2luZyBzcGF3biB3aXRoIGFycmF5IGFyZ3VtZW50cyB3aGljaCBpcyBzYWZlIGZyb20gaW5qZWN0aW9uLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnKiovdGVzdC1lbGVtZW50LWxpZmVjeWNsZS5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IHNwYXduIHdpdGggYXJyYXkgYXJndW1lbnRzIGlzIHNhZmUgKG5vIHNoZWxsIGludm9jYXRpb24pLiBHaXRIdWIgdG9rZW4gcGFzc2VkIGFzIGFycmF5IGVsZW1lbnQsIG5vdCBjb25jYXRlbmF0ZWQgaW50byBjb21tYW5kIHN0cmluZy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVzdC1lbGVtZW50LWxpZmVjeWNsZS5qcycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IFRlc3QgaGFybmVzcyB3aXRoIG5vIHVzZXIgaW5wdXQgbWVjaGFuaXNtcy4gQWxsIGRhdGEgaXMgaGFyZGNvZGVkIHRlc3Qgc2NlbmFyaW9zIG9yIGVudmlyb25tZW50IHZhcmlhYmxlcy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3Rlc3QtZnVsbC12YWxpZGF0aW9uLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogc3Bhd24gd2l0aCBhcnJheSBhcmd1bWVudHMgaXMgc2FmZS4gRG9ja2VyIGNvbW1hbmQgdXNlcyBhcnJheSBhcmdzIHByZXZlbnRpbmcgc2hlbGwgaW5qZWN0aW9uLiBMaW5lIDM3Mi4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJyoqL3Rlc3QtZnVsbC12YWxpZGF0aW9uLmpzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogc3Bhd24gd2l0aCBhcnJheSBhcmd1bWVudHMgaXMgc2FmZS4gRG9ja2VyIGNvbW1hbmQgdXNlcyBhcnJheSBhcmdzIHByZXZlbnRpbmcgc2hlbGwgaW5qZWN0aW9uLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LWZ1bGwtdmFsaWRhdGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB2YWxpZGF0aW9uIHNjcmlwdCAtIG5vdCBwcm9kdWN0aW9uIGNvZGUuIE5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZywgb25seSB0ZXN0IHNjZW5hcmlvcy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnKiovdGVzdC1mdWxsLXZhbGlkYXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgdmFsaWRhdGlvbiBzY3JpcHQgLSBub3QgcHJvZHVjdGlvbiBjb2RlLiBObyB1c2VyIGlucHV0IHByb2Nlc3NpbmcsIG9ubHkgdGVzdCBzY2VuYXJpb3MuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3Rlc3QtdmVyc2lvbi12YWxpZGF0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IHV0aWxpdHkgc2NyaXB0IC0gbm90IHByb2R1Y3Rpb24gY29kZS4gQXVkaXQgbG9nZ2luZyBub3QgcmVxdWlyZWQgZm9yIHRlc3QgdXRpbGl0aWVzLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi90ZXN0LXZlcnNpb24tdmFsaWRhdGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCB1dGlsaXR5IHNjcmlwdCAtIG5vdCBwcm9kdWN0aW9uIGNvZGUuIEF1ZGl0IGxvZ2dpbmcgbm90IHJlcXVpcmVkIGZvciB0ZXN0IHV0aWxpdGllcy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAndGVzdC1tZW1vcnktZGVsZXRpb24uanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSAtIE5vIHVzZXIgaW5wdXQgcHJvY2Vzc2VkLCBhbGwgdGVzdCBkYXRhIGlzIGludGVybmFsbHkgZ2VuZXJhdGVkJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3Rlc3QtbWVtb3J5LWRlbGV0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgLSBObyB1c2VyIGlucHV0IHByb2Nlc3NlZCwgYWxsIHRlc3QgZGF0YSBpcyBpbnRlcm5hbGx5IGdlbmVyYXRlZCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICd0ZXN0LW1lbW9yeS1kZWxldGlvbi5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIC0gQXVkaXQgbG9nZ2luZyBoYXBwZW5zIGluIHRoZSBzZXJ2ZXIgZGVsZXRlRWxlbWVudCBtZXRob2QsIG5vdCBpbiB0ZXN0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJyoqL3Rlc3QtbWVtb3J5LWRlbGV0aW9uLmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgLSBBdWRpdCBsb2dnaW5nIGhhcHBlbnMgaW4gdGhlIHNlcnZlciBkZWxldGVFbGVtZW50IG1ldGhvZCwgbm90IGluIHRlc3QnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnQ1dFLTg5LTAwMScsXG4gICAgZmlsZTogJ3Rlc3QtbWVtb3J5LWRlbGV0aW9uLmpzJyxcbiAgICByZWFzb246ICdGYWxzZSBwb3NpdGl2ZSAtIFRlbXBsYXRlIGxpdGVyYWxzIGluIGVycm9yIG1lc3NhZ2VzIGFyZSBub3QgU1FMIHF1ZXJpZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnQ1dFLTg5LTAwMScsXG4gICAgZmlsZTogJyoqL3Rlc3QtbWVtb3J5LWRlbGV0aW9uLmpzJyxcbiAgICByZWFzb246ICdGYWxzZSBwb3NpdGl2ZSAtIFRlbXBsYXRlIGxpdGVyYWxzIGluIGVycm9yIG1lc3NhZ2VzIGFyZSBub3QgU1FMIHF1ZXJpZXMnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBBdWRpdCBMb2dnaW5nIEZhbHNlIFBvc2l0aXZlc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3R5cGVzLyoudHMnLFxuICAgIHJlYXNvbjogJ1R5cGUgZGVmaW5pdGlvbiBmaWxlcyBkbyBub3QgcGVyZm9ybSBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy90eXBlcy9lbGVtZW50cy8qLnRzJyxcbiAgICByZWFzb246ICdFbGVtZW50IGludGVyZmFjZSBmaWxlcyBhcmUgdHlwZSBkZWZpbml0aW9ucyB0aGF0IGRvIG5vdCBwZXJmb3JtIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2NvbnN0YW50cy8qLnRzJyxcbiAgICByZWFzb246ICdDb25zdGFudCBmaWxlcyBkbyBub3QgcGVyZm9ybSBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9jb25maWcvKi50cycsXG4gICAgcmVhc29uOiAnQ29uZmlndXJhdGlvbiBmaWxlcyBkbyBub3QgcGVyZm9ybSBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9lbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gY29udGFpbnMgb25seSB0eXBlIGRlZmluaXRpb25zIGFuZCBjb25zdGFudHMsIG5vIHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnKiovc3JjL2VsZW1lbnRzL21lbW9yaWVzL2NvbnN0YW50cy50cycsXG4gICAgcmVhc29uOiAnQ29uc3RhbnRzIGZpbGUgLSBjb250YWlucyBvbmx5IHR5cGUgZGVmaW5pdGlvbnMgYW5kIGNvbnN0YW50cywgbm8gc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICcqKi9lbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gQ0kgcGF0aCB2YXJpYW50LCBjb250YWlucyBvbmx5IHR5cGUgZGVmaW5pdGlvbnMgYW5kIGNvbnN0YW50cydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdlbGVtZW50cy9tZW1vcmllcy9jb25zdGFudHMudHMnLFxuICAgIHJlYXNvbjogJ0NvbnN0YW50cyBmaWxlIC0gc3JjLXN0cmlwcGVkIHBhdGggdmFyaWFudCwgY29udGFpbnMgb25seSB0eXBlIGRlZmluaXRpb25zIGFuZCBjb25zdGFudHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2Vycm9ycy8qLnRzJyxcbiAgICByZWFzb246ICdFcnJvciBjbGFzc2VzIGFyZSBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucyByZXF1aXJpbmcgYXVkaXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnKiovKi5qc29uJyxcbiAgICByZWFzb246ICdKU09OIGZpbGVzIGNhbm5vdCBjb250YWluIGV4ZWN1dGFibGUgY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvc2VjdXJpdHkvKiovKi50cycsXG4gICAgcmVhc29uOiAnU2VjdXJpdHkgbW9kdWxlcyBhcmUgaW5mcmFzdHJ1Y3R1cmUsIG5vdCBvcGVyYXRpb25zIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29sbGVjdGlvbi8qLnRzJyxcbiAgICByZWFzb246ICdNYXJrZXRwbGFjZSBvcGVyYXRpb25zIGFyZSBub3Qgc2VjdXJpdHktc2Vuc2l0aXZlIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvY29sbGVjdGlvbi8qKi8qLnRzJyxcbiAgICByZWFzb246ICdNYXJrZXRwbGFjZSBvcGVyYXRpb25zIGFyZSBub3Qgc2VjdXJpdHktc2Vuc2l0aXZlIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvcGVyc29uYS8qLnRzJyxcbiAgICByZWFzb246ICdQZXJzb25hIG9wZXJhdGlvbnMgYXJlIHZhbGlkYXRlZCBhdCBlbnRyeSBwb2ludCwgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL3BlcnNvbmEvKiovKi50cycsXG4gICAgcmVhc29uOiAnUGVyc29uYSBvcGVyYXRpb25zIGFyZSB2YWxpZGF0ZWQgYXQgZW50cnkgcG9pbnQsIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9zZXJ2ZXIvdG9vbHMvKiovKi50cycsXG4gICAgcmVhc29uOiAnVG9vbCBpbXBsZW1lbnRhdGlvbnMgZGVsZWdhdGUgdG8gc2VydmljZXMgdGhhdCBoYW5kbGUgc2VjdXJpdHknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc3JjL2luZGV4LnRzJyxcbiAgICByZWFzb246ICdNYWluIGVudHJ5IHBvaW50IGRlbGVnYXRlcyBzZWN1cml0eSBvcGVyYXRpb25zIHRvIHNwZWNpYWxpemVkIG1vZHVsZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3V0aWxzL0V2aWN0aW5nUXVldWUudHMnLFxuICAgIHJlYXNvbjogJ0dlbmVyaWMgZGF0YSBzdHJ1Y3R1cmUg4oCUIGRvZXMgbm90IHByb2Nlc3MgdXNlciBpbnB1dC4gQWxsIGNhbGxlcnMgKEFnZW50LCBTZWN1cml0eVRlbGVtZXRyeSwgU2VjdXJpdHlNb25pdG9yLCBMb2dnZXIpIHNhbml0aXplIGlucHV0IGJlZm9yZSBwdXNoaW5nIHRvIHRoZSBxdWV1ZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvdXRpbHMvKi50cycsXG4gICAgcmVhc29uOiAnVXRpbGl0eSBmdW5jdGlvbnMgYXJlIG5vdCBzZWN1cml0eSBvcGVyYXRpb25zIHJlcXVpcmluZyBhdWRpdCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvdXBkYXRlLyoqLyoudHMnLFxuICAgIHJlYXNvbjogJ1VwZGF0ZSBzeXN0ZW0gaGFzIGl0cyBvd24gbG9nZ2luZyBhbmQgaXMgbm90IGEgZGlyZWN0IHNlY3VyaXR5IG9wZXJhdGlvbidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvc2VydmVyL3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZSBkb2VzIG5vdCBwZXJmb3JtIG9wZXJhdGlvbnMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnc2NyaXB0cy8qKi8qJyxcbiAgICByZWFzb246ICdCdWlsZCBzY3JpcHRzIGRvIG5vdCBwZXJmb3JtIHJ1bnRpbWUgc2VjdXJpdHkgb3BlcmF0aW9ucydcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzY3JpcHRzL2xpYi9naC1jb21tYW5kLmpzJyxcbiAgICByZWFzb246ICdDTEkgdXRpbGl0eSAtIFNlY3VyaXR5TW9uaXRvciBub3QgYXZhaWxhYmxlIGluIHN0YW5kYWxvbmUgc2NyaXB0cy4gU2VjdXJpdHkgZW5zdXJlZCB2aWEgaW5wdXQgdmFsaWRhdGlvbiBhbmQgc2VjdXJlIGNvbW1hbmQgZXhlY3V0aW9uIHBhdHRlcm5zIChETUNQLVNFQy0wMDEsIERNQ1AtU0VDLTAwMiknXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA2JyxcbiAgICBmaWxlOiAnKiovc2NyaXB0cy9saWIvZ2gtY29tbWFuZC5qcycsXG4gICAgcmVhc29uOiAnQ0xJIHV0aWxpdHkgLSBTZWN1cml0eU1vbml0b3Igbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFsb25lIHNjcmlwdHMuIFNlY3VyaXR5IGVuc3VyZWQgdmlhIGlucHV0IHZhbGlkYXRpb24gYW5kIHNlY3VyZSBjb21tYW5kIGV4ZWN1dGlvbiBwYXR0ZXJucyAoRE1DUC1TRUMtMDAxLCBETUNQLVNFQy0wMDIpJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9wb3J0Zm9saW8vUG9ydGZvbGlvU3luY01hbmFnZXIudHMnLFxuICAgIHJlYXNvbjogJ1BvcnRmb2xpbyBzeW5jIG9wZXJhdGlvbnMgYXJlIGZpbGUgbWFuYWdlbWVudCB0YXNrcywgbm90IHNlY3VyaXR5IG9wZXJhdGlvbnMuIFNlY3VyaXR5IHZhbGlkYXRpb24gaGFwcGVucyBhdCB0aGUgTUNQIHJlcXVlc3QgbGF5ZXIuJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNicsXG4gICAgZmlsZTogJ3NyYy9oYW5kbGVycy9TeW5jSGFuZGxlclYyLnRzJyxcbiAgICByZWFzb246ICdTeW5jIGhhbmRsZXIgZGVsZWdhdGVzIHRvIFBvcnRmb2xpb1N5bmNNYW5hZ2VyIHdoaWNoIGhhbmRsZXMgaXRzIG93biBsb2dnaW5nLiBTZWN1cml0eSB2YWxpZGF0aW9uIGhhcHBlbnMgYXQgdGhlIE1DUCByZXF1ZXN0IGxheWVyLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDYnLFxuICAgIGZpbGU6ICdzcmMvaGFuZGxlcnMvQ29uZmlnSGFuZGxlci50cycsXG4gICAgcmVhc29uOiAnQ29uZmlnIGhhbmRsZXIgb3BlcmF0aW9ucyBhcmUgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LCBub3Qgc2VjdXJpdHkgb3BlcmF0aW9ucy4gQ29uZmlnTWFuYWdlciBoYW5kbGVzIGl0cyBvd24gbG9nZ2luZy4nXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBRdWVyeSBTZXJ2aWNlcyAtIElzc3VlICMzOCAoUFIgIzQ2KVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFF1ZXJ5IHNlcnZpY2VzIHJlY2VpdmUgcHJlLW5vcm1hbGl6ZWQgaW5wdXQgdmlhIHR3byBsYXllcnM6XG4gIC8vIDEuIFNlcnZlclNldHVwLm5vcm1hbGl6ZUFyZ3VtZW50c1VuaWNvZGUoKSBub3JtYWxpemVzIGFsbCBNQ1AgdG9vbCBhcmd1bWVudHNcbiAgLy8gMi4gRmlsdGVyU2VydmljZSB1c2VzIG5vcm1hbGl6ZVNlYXJjaFRlcm0oKSB3aGljaCBjYWxscyBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSgpXG4gIC8vIFNlZSBzcmMvdXRpbHMvc2VhcmNoVXRpbHMudHMgbGluZXMgMTctMzAgZm9yIHNlY29uZGFyeSBub3JtYWxpemF0aW9uXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3F1ZXJ5L3R5cGVzLnRzJyxcbiAgICByZWFzb246ICdUeXBlIGRlZmluaXRpb24gZmlsZSBjb250YWluaW5nIG9ubHkgVHlwZVNjcmlwdCBpbnRlcmZhY2VzIC0gbm8gcnVudGltZSBjb2RlIG9yIHVzZXIgaW5wdXQgcHJvY2Vzc2luZy4gUFIgIzQ2J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS9pbmRleC50cycsXG4gICAgcmVhc29uOiAnUmUtZXhwb3J0IG1vZHVsZSAtIG5vIHVzZXIgaW5wdXQgcHJvY2Vzc2luZywgb25seSBUeXBlU2NyaXB0IHJlLWV4cG9ydHMuIFBSICM0NidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcXVlcnkvUGFnaW5hdGlvblNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ1BhZ2luYXRpb25TZXJ2aWNlIHByb2Nlc3NlcyBudW1lcmljIHBhcmFtZXRlcnMgKHBhZ2UsIHBhZ2VTaXplKSAtIG5vIHN0cmluZyBpbnB1dCByZXF1aXJpbmcgVW5pY29kZSBub3JtYWxpemF0aW9uLiBJbnB1dCBwcmUtdmFsaWRhdGVkIGF0IE1DUCByZXF1ZXN0IGxheWVyLiBQUiAjNDYnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3NlcnZpY2VzL3F1ZXJ5L0ZpbHRlclNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0RVQUwgUFJPVEVDVElPTjogKDEpIElucHV0IHByZS1ub3JtYWxpemVkIGJ5IFNlcnZlclNldHVwLm5vcm1hbGl6ZUFyZ3VtZW50c1VuaWNvZGUoKSBhdCBNQ1AgbGF5ZXIsICgyKSBGaWx0ZXJTZXJ2aWNlIHVzZXMgbm9ybWFsaXplU2VhcmNoVGVybSgpIHdoaWNoIGNhbGxzIFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKCkuIFNlZSBzZWFyY2hVdGlscy50czoxNy0zMC4gUFIgIzQ2J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9xdWVyeS9FbGVtZW50UXVlcnlTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdPcmNoZXN0cmF0b3Igc2VydmljZSAtIGRlbGVnYXRlcyB0byBGaWx0ZXJTZXJ2aWNlIHdoaWNoIHBlcmZvcm1zIFVuaWNvZGUgbm9ybWFsaXphdGlvbiB2aWEgbm9ybWFsaXplU2VhcmNoVGVybSgpLiBJbnB1dCBwcmUtbm9ybWFsaXplZCBhdCBNQ1AgbGF5ZXIuIFBSICM0NidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcXVlcnkvU29ydFNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ1NvcnRTZXJ2aWNlIHZhbGlkYXRlcyBzb3J0QnkgYWdhaW5zdCBlbnVtIHdoaXRlbGlzdCAoU29ydGFibGVGaWVsZCkgLSBubyBhcmJpdHJhcnkgc3RyaW5nIGlucHV0LiBzb3J0T3JkZXIgaXMgZW51bS12YWxpZGF0ZWQuIE5vIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBuZWVkZWQuIFBSICM0NidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvc2VydmljZXMvcXVlcnkvKi50cycsXG4gICAgcmVhc29uOiAnUXVlcnkgc2VydmljZXMgcmVjZWl2ZSBwcmUtbm9ybWFsaXplZCBpbnB1dCBmcm9tIE1DUCBsYXllciBhbmQgdXNlIG5vcm1hbGl6ZVNlYXJjaFRlcm0oKSBmb3IgYWRkaXRpb25hbCBwcm90ZWN0aW9uLiBQUiAjNDYnXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb3ZlcmFnZSBSZXBvcnQgRmlsZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICd0ZXN0L2NvdmVyYWdlLyoqLyonLFxuICAgIHJlYXNvbjogJ0NvdmVyYWdlIHJlcG9ydCBmaWxlcyBhcmUgYXV0by1nZW5lcmF0ZWQgYW5kIG5vdCBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICd0ZXN0cy9jb3ZlcmFnZS8qKi8qJyxcbiAgICByZWFzb246ICdDb3ZlcmFnZSByZXBvcnQgZmlsZXMgYXJlIGF1dG8tZ2VuZXJhdGVkIGFuZCBub3QgcGFydCBvZiB0aGUgYXBwbGljYXRpb24gY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovbGNvdi1yZXBvcnQvKiovKicsXG4gICAgcmVhc29uOiAnTENPViBjb3ZlcmFnZSByZXBvcnQgZmlsZXMgYXJlIGF1dG8tZ2VuZXJhdGVkIGFuZCBub3QgcGFydCBvZiB0aGUgYXBwbGljYXRpb24gY29kZSdcbiAgfSxcbiAgXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRG9jdW1lbnRhdGlvbiBhbmQgTm9uLUNvZGUgRmlsZXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICdkb2NzLyoqLyonLFxuICAgIHJlYXNvbjogJ0RvY3VtZW50YXRpb24gZmlsZXMgaW5jbHVkaW5nIFFBIG1ldHJpY3MgYW5kIHJlcG9ydHMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyoubWQnLFxuICAgIHJlYXNvbjogJ01hcmtkb3duIGRvY3VtZW50YXRpb24gZmlsZXMnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJyoqLyouanNvbicsXG4gICAgcmVhc29uOiAnSlNPTiBjb25maWd1cmF0aW9uIGFuZCBkYXRhIGZpbGVzIGRvIG5vdCBleGVjdXRlIGNvZGUnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnKicsXG4gICAgZmlsZTogJ0xJQ0VOU0UnLFxuICAgIHJlYXNvbjogJ0xpY2Vuc2UgZmlsZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnLmdpdGlnbm9yZScsXG4gICAgcmVhc29uOiAnR2l0IGNvbmZpZ3VyYXRpb24gZmlsZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAncGFja2FnZS1sb2NrLmpzb24nLFxuICAgIHJlYXNvbjogJ05QTSBsb2NrIGZpbGUgLSBhdXRvLWdlbmVyYXRlZCwgbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJyonLFxuICAgIGZpbGU6ICcqKi8qLnltbCcsXG4gICAgcmVhc29uOiAnWUFNTCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBkYXRhLCBub3QgY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICcqJyxcbiAgICBmaWxlOiAnKiovKi55YW1sJyxcbiAgICByZWFzb246ICdZQU1MIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGRhdGEsIG5vdCBjb2RlJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2VwdGVtYmVyIDIyIFNlc3Npb24gRG9jcyBSZXN0b3JhdGlvbiAtIFBSICMxMDgyXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnc2NyaXB0cy90ZXN0LWNhcGFiaWxpdHktaW5kZXguanMnLFxuICAgIHJlYXNvbjogJ1Rlc3Qgc2NyaXB0IHVzaW5nIHNwYXduIHdpdGggaGFyZGNvZGVkIGFycmF5IGFyZ3VtZW50cyAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJyoqL3NjcmlwdHMvdGVzdC1jYXBhYmlsaXR5LWluZGV4LmpzJyxcbiAgICByZWFzb246ICdUZXN0IHNjcmlwdCB1c2luZyBzcGF3biB3aXRoIGhhcmRjb2RlZCBhcnJheSBhcmd1bWVudHMgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICd0ZXN0cy9leHBlcmltZW50cy9jYXBhYmlsaXR5LWluZGV4LWNvbXByZWhlbnNpdmUtdGVzdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIHVzaW5nIHNwYXduIHdpdGggaGFyZGNvZGVkIGFycmF5IGFyZ3VtZW50cyAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJyoqL3Rlc3RzL2V4cGVyaW1lbnRzL2NhcGFiaWxpdHktaW5kZXgtY29tcHJlaGVuc2l2ZS10ZXN0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgdXNpbmcgc3Bhd24gd2l0aCBoYXJkY29kZWQgYXJyYXkgYXJndW1lbnRzIC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDMnLFxuICAgIGZpbGU6ICdzY3JpcHRzL3Rlc3QtY2FwYWJpbGl0eS1pbmRleC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBzY3JpcHQgd2l0aCBoYXJkY29kZWQgdGVzdCBwZXJzb25hIHBhdGhzIC0gbm90IHByb2R1Y3Rpb24gY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDMnLFxuICAgIGZpbGU6ICcqKi9zY3JpcHRzL3Rlc3QtY2FwYWJpbGl0eS1pbmRleC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBzY3JpcHQgd2l0aCBoYXJkY29kZWQgdGVzdCBwZXJzb25hIHBhdGhzIC0gbm90IHByb2R1Y3Rpb24gY29kZSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtMjItMDAxJyxcbiAgICBmaWxlOiAndGVzdHMvZXhwZXJpbWVudHMvY2FwYWJpbGl0eS1pbmRleC1kb2NrZXItdGVzdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIHVzaW5nIGhhcmRjb2RlZCB0ZXN0IHBhdGhzIC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdDV0UtMjItMDAxJyxcbiAgICBmaWxlOiAnKiovdGVzdHMvZXhwZXJpbWVudHMvY2FwYWJpbGl0eS1pbmRleC1kb2NrZXItdGVzdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIHVzaW5nIGhhcmRjb2RlZCB0ZXN0IHBhdGhzIC0gbm8gdXNlciBpbnB1dCdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICd0ZXN0LW1lbW9yeS1lZGl0LmpzJyxcbiAgICByZWFzb246ICdUZXN0IGZpbGUgZm9yIG1lbW9yeSBlZGl0aW5nIC0gbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3Rlc3QtbWVtb3J5LWVkaXQuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSBmb3IgbWVtb3J5IGVkaXRpbmcgLSBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmcnXG4gIH0sXG5cbiAgLy8gQWRkaXRpb25hbCBzdXBwcmVzc2lvbnMgZm9yIHJlbWFpbmluZyBpc3N1ZXNcbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAndGVzdHMvZXhwZXJpbWVudHMvY2FwYWJpbGl0eS1pbmRleC1kb2NrZXItdGVzdC5qcycsXG4gICAgcmVhc29uOiAnVGVzdCBmaWxlIHVzaW5nIHNwYXduIHdpdGggaGFyZGNvZGVkIGFycmF5IGFyZ3VtZW50cyBhdCBsaW5lIDI3OSAtIG5vIHVzZXIgaW5wdXQnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJyoqL3Rlc3RzL2V4cGVyaW1lbnRzL2NhcGFiaWxpdHktaW5kZXgtZG9ja2VyLXRlc3QuanMnLFxuICAgIHJlYXNvbjogJ1Rlc3QgZmlsZSB1c2luZyBzcGF3biB3aXRoIGhhcmRjb2RlZCBhcnJheSBhcmd1bWVudHMgYXQgbGluZSAyNzkgLSBubyB1c2VyIGlucHV0J1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwMScsXG4gICAgZmlsZTogJ3NjcmlwdHMvdGVzdC1jYXBhYmlsaXR5LWluZGV4LmpzJyxcbiAgICByZWFzb246ICdUZXN0IHNjcmlwdCBsb2FkaW5nIHRlc3QgcGVyc29uYXMgd2l0aCBoYXJkY29kZWQgcGF0aHMgLSBub3QgcHJvZHVjdGlvbiBjb2RlJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwMScsXG4gICAgZmlsZTogJyoqL3NjcmlwdHMvdGVzdC1jYXBhYmlsaXR5LWluZGV4LmpzJyxcbiAgICByZWFzb246ICdUZXN0IHNjcmlwdCBsb2FkaW5nIHRlc3QgcGVyc29uYXMgd2l0aCBoYXJkY29kZWQgcGF0aHMgLSBub3QgcHJvZHVjdGlvbiBjb2RlJ1xuICB9LFxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gcGFja2FnZXMvc2FmZXR5IFN1cHByZXNzaW9uc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3BhY2thZ2VzL3NhZmV0eS9zcmMvRGlzcGxheVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0ludGVudGlvbmFsIGV4ZWNTeW5jIGZvciBjcm9zcy1wbGF0Zm9ybSBPUyBkaWFsb2dzLiBBbGwgdXNlciBpbnB1dCBpcyBwcm9wZXJseSBlc2NhcGVkIHVzaW5nIGVzY2FwZVNoZWxsQXJnIChVbml4KSBvciBCYXNlNjQgZW5jb2RpbmcgKFBvd2VyU2hlbGwpJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICcqKi9wYWNrYWdlcy9zYWZldHkvc3JjL0Rpc3BsYXlTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdJbnRlbnRpb25hbCBleGVjU3luYyBmb3IgY3Jvc3MtcGxhdGZvcm0gT1MgZGlhbG9ncy4gQWxsIHVzZXIgaW5wdXQgaXMgcHJvcGVybHkgZXNjYXBlZCB1c2luZyBlc2NhcGVTaGVsbEFyZyAoVW5peCkgb3IgQmFzZTY0IGVuY29kaW5nIChQb3dlclNoZWxsKSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdwYWNrYWdlcy9zYWZldHkvc3JjL0Rpc3BsYXlTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdEaXNwbGF5U2VydmljZSByZWNlaXZlcyBzYW5pdGl6ZWQgaW5wdXQgZnJvbSBUaWVyZWRTYWZldHlTZXJ2aWNlLiBVbmljb2RlIG5vcm1hbGl6YXRpb24gaGFwcGVucyBhdCB2YWxpZGF0aW9uIGJvdW5kYXJpZXMsIG5vdCBpbiBkaXNwbGF5IGxheWVyJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3BhY2thZ2VzL3NhZmV0eS9zcmMvRGlzcGxheVNlcnZpY2UudHMnLFxuICAgIHJlYXNvbjogJ0Rpc3BsYXlTZXJ2aWNlIHJlY2VpdmVzIHNhbml0aXplZCBpbnB1dCBmcm9tIFRpZXJlZFNhZmV0eVNlcnZpY2UuIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBoYXBwZW5zIGF0IHZhbGlkYXRpb24gYm91bmRhcmllcywgbm90IGluIGRpc3BsYXkgbGF5ZXInXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAncGFja2FnZXMvc2FmZXR5L3NyYy9UaWVyZWRTYWZldHlTZXJ2aWNlLnRzJyxcbiAgICByZWFzb246ICdUaWVyZWRTYWZldHlTZXJ2aWNlIHZhbGlkYXRlcyBvcGVyYXRpb24gc2FmZXR5IGxldmVscywgbm90IHVzZXIgaW5wdXQuIElucHV0IHZhbGlkYXRpb24gd2l0aCBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgaGFuZGxlZCBieSB1cHN0cmVhbSB2YWxpZGF0b3JzJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJyoqL3BhY2thZ2VzL3NhZmV0eS9zcmMvVGllcmVkU2FmZXR5U2VydmljZS50cycsXG4gICAgcmVhc29uOiAnVGllcmVkU2FmZXR5U2VydmljZSB2YWxpZGF0ZXMgb3BlcmF0aW9uIHNhZmV0eSBsZXZlbHMsIG5vdCB1c2VyIGlucHV0LiBJbnB1dCB2YWxpZGF0aW9uIHdpdGggVW5pY29kZSBub3JtYWxpemF0aW9uIGlzIGhhbmRsZWQgYnkgdXBzdHJlYW0gdmFsaWRhdG9ycydcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERvY2tlciBUb2tlbiBNZWFzdXJlbWVudCBTY3JpcHQgLSBQUiAjMjkyXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAge1xuICAgIHJ1bGU6ICdPV0FTUC1BMDMtMDAyJyxcbiAgICBmaWxlOiAnc2NyaXB0cy9tZWFzdXJlLWRvY2tlci10b2tlbnMudHMnLFxuICAgIHJlYXNvbjogJ0NvbW1hbmQgaW5qZWN0aW9uIG1pdGlnYXRlZDogaW50ZXJmYWNlTW9kZSBhbmQgZW5kcG9pbnRNb2RlIGFyZSB2YWxpZGF0ZWQgYWdhaW5zdCBWQUxJRF9JTlRFUkZBQ0VfTU9ERVMgYW5kIFZBTElEX0VORFBPSU5UX01PREVTIGFsbG93bGlzdHMgYmVmb3JlIHVzZSBpbiBzcGF3bigpLiBUeXBlU2NyaXB0IHR5cGVzIGFsc28gY29uc3RyYWluIHBhcmFtZXRlcnMgYXQgY29tcGlsZSB0aW1lLiBQUiAjMjkyJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ09XQVNQLUEwMy0wMDInLFxuICAgIGZpbGU6ICcqKi9zY3JpcHRzL21lYXN1cmUtZG9ja2VyLXRva2Vucy50cycsXG4gICAgcmVhc29uOiAnQ29tbWFuZCBpbmplY3Rpb24gbWl0aWdhdGVkOiBpbnRlcmZhY2VNb2RlIGFuZCBlbmRwb2ludE1vZGUgYXJlIHZhbGlkYXRlZCBhZ2FpbnN0IFZBTElEX0lOVEVSRkFDRV9NT0RFUyBhbmQgVkFMSURfRU5EUE9JTlRfTU9ERVMgYWxsb3dsaXN0cyBiZWZvcmUgdXNlIGluIHNwYXduKCkuIFR5cGVTY3JpcHQgdHlwZXMgYWxzbyBjb25zdHJhaW4gcGFyYW1ldGVycyBhdCBjb21waWxlIHRpbWUuIFBSICMyOTInXG4gIH0sXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVbmlmaWVkIExvZ2dpbmcgU3lzdGVtIOKAlCBQUiAjNDcxXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2lua3MgcmVjZWl2ZSBwcmUtY29uc3RydWN0ZWQgVW5pZmllZExvZ0VudHJ5IG9iamVjdHMgZnJvbSBMb2dNYW5hZ2VyLlxuICAvLyBEYXRhIGVudGVycyB0aGUgcGlwZWxpbmUgdGhyb3VnaCBMb2dIb29rcyB3aGljaCBjcmVhdGVzIGVudHJpZXMgZnJvbVxuICAvLyBpbnRlcm5hbCBzeXN0ZW0gZXZlbnRzLiBNQ1BMb2dnZXIgc2FuaXRpemVzIHZpYSBzYW5pdGl6ZU1lc3NhZ2UoKSBhbmRcbiAgLy8gc2FuaXRpemVEYXRhKCkgYmVmb3JlIGVtaXR0aW5nLiBPdGhlciBzb3VyY2VzIChTZWN1cml0eU1vbml0b3IsXG4gIC8vIFBlcmZvcm1hbmNlTW9uaXRvciwgZXRjLikgZW1pdCBpbnRlcm5hbCBzeXN0ZW0gZGF0YSwgbm90IHVzZXIgaW5wdXQuXG4gIC8vIFRoZSBTU0Ugdmlld2VyIEhUTUwtZXNjYXBlcyBhbGwgZHluYW1pYyBjb250ZW50IHZpYSBlc2NIdG1sKCkvXG4gIC8vIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCkuXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2xvZ2dpbmcvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ1B1cmUgdHlwZSBkZWZpbml0aW9ucyBhbmQgaW50ZXJmYWNlcyDigJQgbm8gZGF0YSBwcm9jZXNzaW5nIG9yIHVzZXIgaW5wdXQgaGFuZGxpbmcuIFBSICM0NzEnXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL2xvZ2dpbmcvc2lua3MvTWVtb3J5TG9nU2luay50cycsXG4gICAgcmVhc29uOiAnUmVjZWl2ZXMgcHJlLWNvbnN0cnVjdGVkIFVuaWZpZWRMb2dFbnRyeSBvYmplY3RzIGZyb20gTG9nTWFuYWdlci4gUXVlcnkgcGFyYW1ldGVycyBhcmUgdXNlZCBhcyByZWFkLW9ubHkgc3Vic3RyaW5nIGZpbHRlcnMsIG5vdCB3cml0dGVuIHRvIG91dHB1dC4gUFIgIzQ3MSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvbG9nZ2luZy9zaW5rcy9GaWxlTG9nU2luay50cycsXG4gICAgcmVhc29uOiAnUmVjZWl2ZXMgcHJlLWZvcm1hdHRlZCBlbnRyaWVzIHZpYSBJTG9nRm9ybWF0dGVyLiBGaWxlIHBhdGhzIGJ1aWx0IGZyb20gaGFyZGNvZGVkIGNhdGVnb3J5IG5hbWVzICsgZGF0ZXMuIE1DUExvZ2dlciBzYW5pdGl6ZXMgdXBzdHJlYW0gdmlhIHNhbml0aXplTWVzc2FnZS9zYW5pdGl6ZURhdGE7IG90aGVyIHNvdXJjZXMgZW1pdCBpbnRlcm5hbCBzeXN0ZW0gZGF0YS4gUFIgIzQ3MSdcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3JvdXRlcy9sb2dSb3V0ZXMudHMnLFxuICAgIHJlYXNvbjogJ0pTT04tc2VyaWFsaXplcyBwcmUtY29uc3RydWN0ZWQgVW5pZmllZExvZ0VudHJ5IG9iamVjdHMgb3ZlciBTU0UuIEFsbCBxdWVyeSBwYXJhbWV0ZXJzIGFyZSB2YWxpZGF0ZWQgc3RyaW5ncyBwYXNzZWQgdG8gTWVtb3J5TG9nU2luay5xdWVyeSgpLiBObyBIVE1MIHJlbmRlcmluZy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3N0b3JhZ2UvdHlwZXMudHMnLFxuICAgIHJlYXNvbjogJ0ZBTFNFIFBPU0lUSVZFOiBUeXBlLW9ubHkgaW50ZXJmYWNlIGRlY2xhcmF0aW9ucyAoU3RvcmFnZUl0ZW1NZXRhZGF0YSwgRWxlbWVudEluZGV4RW50cnksIE1hbmlmZXN0RGlmZlJlc3VsdCkuIE5vIGV4ZWN1dGFibGUgaW5wdXQtcHJvY2Vzc2luZyBjb2RlOyBVbmljb2RlIG5vcm1hbGl6YXRpb24gaXMgZW5mb3JjZWQgaW4gY29uY3JldGUgc3RvcmFnZSBwYXJzZXJzL2xheWVycy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3N0b3JhZ2UvSVN0b3JhZ2VCYWNrZW5kLnRzJyxcbiAgICByZWFzb246ICdGQUxTRSBQT1NJVElWRTogSW50ZXJmYWNlIGNvbnRyYWN0IG9ubHkgZm9yIGJhY2tlbmQgYWJzdHJhY3Rpb24uIE5vIHJ1bnRpbWUgdXNlci1pbnB1dCBoYW5kbGluZyBpbiB0aGlzIGZpbGU7IG5vcm1hbGl6YXRpb24gaXMgZW5mb3JjZWQgYnkgaW1wbGVtZW50aW5nIHN0b3JhZ2UgbGF5ZXJzIGFuZCB2YWxpZGF0b3JzLidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFZlcmlmaWNhdGlvbk5vdGlmaWVyIEZhbHNlIFBvc2l0aXZlcyDigJQgSXNzdWUgIzUzN1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgZmlsZTogJ3NyYy9zZXJ2aWNlcy9WZXJpZmljYXRpb25Ob3RpZmllci50cycsXG4gICAgcmVhc29uOiAnRkFMU0UgUE9TSVRJVkU6IExpbmVzIDExNywgMTMyLCAxNDUgdXNlIHNwYXduKCkgd2l0aCBhcnJheSBhcmd1bWVudHMgKG5vIHNoZWxsIGludm9jYXRpb24pLiB6ZW5pdHkva2RpYWxvZy94bWVzc2FnZSBhcmUgZGlzcGxheS1vbmx5IHRvb2xzIHRoYXQgcmVuZGVyIHRleHQgaW4gR1VJIGRpYWxvZ3Mgd2l0aG91dCBpbnRlcnByZXRpbmcgY29udGVudCBhcyBjb2RlLiBhZ2VudE5hbWUgKGZyb20gTUNQIHBhcmFtcykgYW5kIGNvZGUgKGNyeXB0b2dyYXBoaWMgYWxwaGFudW1lcmljKSBmbG93IGludG8gZGlzcGxheSB0ZXh0IG9ubHkuIFNlZSBJc3N1ZSAjNTM3IGV2aWRlbmNlIHRyYWNlLidcbiAgfSxcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFdlYiBVSSBDbGllbnQtU2lkZSBGYWxzZSBQb3NpdGl2ZXMg4oCUIFJDMSBTZWN1cml0eSBBdWRpdFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA1JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9wdWJsaWMvYXBwLmpzJyxcbiAgICByZWFzb246ICdDbGllbnQtc2lkZSBicm93c2VyIEphdmFTY3JpcHQuIFNlY3VyZVlhbWxQYXJzZXIgaXMgYSBOb2RlLmpzIG1vZHVsZSB1bmF2YWlsYWJsZSBpbiBicm93c2VyIGNvbnRleHQuIHNhZmVQYXJzZVlhbWwoKSB3cmFwcGVyIHVzZXMgQ09SRV9TQ0hFTUEgKHNhZmUsIG5vIGN1c3RvbSB0eXBlcykgd2l0aCA1MTJLQiBzaXplIGxpbWl0LiBEYXRhIHNlcnZlZCBmcm9tIGxvY2FsaG9zdCBvciB0cnVzdGVkIEdpdEh1YiBjb2xsZWN0aW9uIEFQSS4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9wdWJsaWMvYXBwLmpzJyxcbiAgICByZWFzb246ICdDbGllbnQtc2lkZSBicm93c2VyIEphdmFTY3JpcHQuIFVuaWNvZGVWYWxpZGF0b3IgaXMgYSBOb2RlLmpzIG1vZHVsZSB1bmF2YWlsYWJsZSBpbiBicm93c2VyIGNvbnRleHQuIElucHV0IHNlcnZlZCBmcm9tIERvbGxob3VzZU1DUCBzZXJ2ZXIgd2hpY2ggbm9ybWFsaXplcyBiZWZvcmUgc2VydmluZy4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9wdWJsaWMvY29uc29sZUF1dGguanMnLFxuICAgIHJlYXNvbjogJ0NsaWVudC1zaWRlIGJyb3dzZXIgSmF2YVNjcmlwdCAoIzE3ODAgY29uc29sZSBhdXRoIGhlbHBlcikuIFVuaWNvZGVWYWxpZGF0b3IgaXMgYSBOb2RlLmpzIG1vZHVsZSB1bmF2YWlsYWJsZSBpbiBicm93c2VyIGNvbnRleHQuIFRva2VuIGlzIHJlYWQgZnJvbSBhIHNlcnZlci1pbmplY3RlZCBtZXRhIHRhZywgbm9ybWFsaXplZCB2aWEgbmF0aXZlIFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplKFxcJ05GQ1xcJyksIGFuZCByZWplY3RlZCB1bmxlc3MgaXQgbWF0Y2hlcyAvXlswLTlhLWZdezY0fSQvIChzdHJpY3QgaGV4IGZvcm1hdCkuIFRoZSBhdXRob3JpdGF0aXZlIG5vcm1hbGl6YXRpb24gKyB2YWxpZGF0aW9uIGhhcHBlbnMgaW4gdGhlIG1pZGRsZXdhcmUgc2FuaXRpemVQcmVzZW50ZWRUb2tlbigpIGFuZCBjb25zb2xlVG9rZW4udmVyaWZ5KCkgb24gdGhlIHNlcnZlciBzaWRlIGJlZm9yZSBhbnkgY29tcGFyaXNvbiBydW5zLidcbiAgfSxcbiAge1xuICAgIHJ1bGU6ICdETUNQLVNFQy0wMDQnLFxuICAgIGZpbGU6ICdzcmMvd2ViL3NlcnZlci50cycsXG4gICAgcmVhc29uOiAnTkZDIG5vcm1hbGl6YXRpb24gYWRkZWQgdG8gcmVxLnBhdGggaW4gU1BBIGZhbGxiYWNrIGhhbmRsZXIgKGxpbmUgMTgwKS4gRmlsZS1sZXZlbCBzY2FubmVyIGZsYWdzIGRlc3BpdGUgcGVyLWlucHV0IGZpeC4nXG4gIH0sXG4gIHtcbiAgICBydWxlOiAnRE1DUC1TRUMtMDA0JyxcbiAgICBmaWxlOiAnc3JjL3dlYi9yb3V0ZXMudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIHZpYSBub3JtYWxpemVJbnB1dCgpIGFwcGxpZWQgdG8gYWxsIHJlcS5wYXJhbXMuIEZpbGUtbGV2ZWwgc2Nhbm5lciBmbGFncyBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy9jb252ZXJ0ZXJzL0FnZW50U2tpbGxDb252ZXJ0ZXIudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIGFkZGVkIHRvIGJvdGggY29udmVydEFnZW50VG9Eb2xsaG91c2UoKSBhbmQgY29udmVydERvbGxob3VzZVRvQWdlbnQoKSBlbnRyeSBwb2ludHMuIEZpbGUtbGV2ZWwgc2Nhbm5lciBmbGFncyBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9LFxuICB7XG4gICAgcnVsZTogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgZmlsZTogJ3NyYy93ZWIvcm91dGVzL3Blcm1pc3Npb25Sb3V0ZXMudHMnLFxuICAgIHJlYXNvbjogJ05GQyBub3JtYWxpemF0aW9uIGFwcGxpZWQgdG8gdG9vbF9uYW1lIGFuZCBwbGF0Zm9ybSBpbnB1dHMgYXQgSFRUUCBib3VuZGFyeSBiZWZvcmUgZm9yd2FyZGluZyB0byBNQ1BBUUxIYW5kbGVyLmhhbmRsZVJlYWQoKS4gR0VUIC9wZXJtaXNzaW9ucy9zdGF0dXMgaGFzIG5vIHVzZXItc3VwcGxpZWQgc3RyaW5nIHBhcmFtZXRlcnMuIFNjYW5uZXIgbWF5IGZsYWcgZmlsZS1sZXZlbCBkZXNwaXRlIHBlci1pbnB1dCBmaXguJ1xuICB9XG5dO1xuXG4vKipcbiAqIFZhbGlkYXRlIHN1cHByZXNzaW9uIGNvbmZpZ3VyYXRpb24gYXQgc3RhcnR1cFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdXBwcmVzc2lvbnMoKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHNlZW5QYXR0ZXJucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBcbiAgZm9yIChjb25zdCBzdXBwcmVzc2lvbiBvZiBzdXBwcmVzc2lvbnMpIHtcbiAgICAvLyBDaGVjayBmb3IgZW1wdHkgcmVhc29uc1xuICAgIGlmICghc3VwcHJlc3Npb24ucmVhc29uIHx8IHN1cHByZXNzaW9uLnJlYXNvbi50cmltKCkubGVuZ3RoIDwgMTApIHtcbiAgICAgIGVycm9ycy5wdXNoKGBTdXBwcmVzc2lvbiBmb3IgJHtzdXBwcmVzc2lvbi5ydWxlfSBoYXMgaW5zdWZmaWNpZW50IHJlYXNvbmApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgdmFsaWQgcnVsZSBwYXR0ZXJuc1xuICAgIGNvbnN0IHJ1bGVQYXR0ZXJuID0gL14oRE1DUC1TRUMtXFxkezN9fE9XQVNQLVtBLVpdXFxkezJ9LVxcZHszfXxDV0UtXFxkKy1cXGR7M318XFwqKSQvO1xuICAgIGlmICghc3VwcHJlc3Npb24ucnVsZS5tYXRjaChydWxlUGF0dGVybikpIHtcbiAgICAgIGVycm9ycy5wdXNoKGBJbnZhbGlkIHJ1bGUgcGF0dGVybjogJHtzdXBwcmVzc2lvbi5ydWxlfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHN1cHByZXNzaW9uc1xuICAgIGNvbnN0IGtleSA9IGAke3N1cHByZXNzaW9uLnJ1bGV9OiR7c3VwcHJlc3Npb24uZmlsZSB8fCAnKid9YDtcbiAgICBpZiAoc2VlblBhdHRlcm5zLmhhcyhrZXkpKSB7XG4gICAgICBlcnJvcnMucHVzaChgRHVwbGljYXRlIHN1cHByZXNzaW9uOiAke2tleX1gKTtcbiAgICB9XG4gICAgc2VlblBhdHRlcm5zLmFkZChrZXkpO1xuICAgIFxuICAgIC8vIFZhbGlkYXRlIGdsb2IgcGF0dGVybnNcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZT8uaW5jbHVkZXMoJyoqJykgJiYgIXN1cHByZXNzaW9uLmZpbGUuaW5jbHVkZXMoJyoqLycpKSB7XG4gICAgICBlcnJvcnMucHVzaChgSW52YWxpZCBnbG9iIHBhdHRlcm4gaW4gJHtzdXBwcmVzc2lvbi5maWxlfSAtICoqIG11c3QgYmUgZm9sbG93ZWQgYnkgL2ApO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGVycm9ycztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGdsb2IgcGF0dGVybiB0byByZWdleCBwYXR0ZXJuIHNhZmVseVxuICogVXNpbmcgYSBwcm9wZXIgZ2xvYi10by1yZWdleCBjb252ZXJzaW9uIHRoYXQgaGFuZGxlcyBhbGwgZWRnZSBjYXNlc1xuICovXG5mdW5jdGlvbiBnbG9iVG9SZWdleChnbG9iOiBzdHJpbmcpOiBSZWdFeHAge1xuICAvLyBDaGVjayBjYWNoZSBmaXJzdFxuICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXRSZWdleChnbG9iKTtcbiAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgXG4gIC8vIFNwZWNpYWwgY2FzZTogaWYgZ2xvYiBzdGFydHMgd2l0aCAqLCBpdCBzaG91bGQgbWF0Y2ggYW55dGhpbmcgYXQgdGhlIGJlZ2lubmluZ1xuICBsZXQgcHJvY2Vzc2VkR2xvYiA9IGdsb2I7XG4gIGxldCBwcmVmaXggPSAnJztcbiAgaWYgKGdsb2Iuc3RhcnRzV2l0aCgnKicpICYmICFnbG9iLnN0YXJ0c1dpdGgoJyoqJykpIHtcbiAgICBwcmVmaXggPSAnKD86LiovKT8nOyAgLy8gT3B0aW9uYWwgcGF0aCBwcmVmaXhcbiAgICBwcm9jZXNzZWRHbG9iID0gZ2xvYi5zdWJzdHJpbmcoMSk7XG4gIH1cbiAgXG4gIC8vIEVzY2FwZSBhbGwgcmVnZXggc3BlY2lhbCBjaGFyYWN0ZXJzIGV4Y2VwdCAqIGFuZCAvXG4gIC8vIEZpeGVkOiBQcm9wZXJseSBlc2NhcGUgYmFja3NsYXNoZXMgYW5kIG90aGVyIHNwZWNpYWwgcmVnZXggY2hhcmFjdGVyc1xuICBsZXQgcGF0dGVybiA9IHByb2Nlc3NlZEdsb2IucmVwbGFjZUFsbCgvW1xcXFxeJC4oKSs/e31bXFxdfF0vZywgJ1xcXFwkJicpO1xuXG4gIC8vIEhhbmRsZSBnbG9iIHBhdHRlcm5zIGluIGNvcnJlY3Qgb3JkZXJcbiAgLy8gUmVwbGFjZSAqKiBiZWZvcmUgKiB0byBhdm9pZCBjb25mbGljdHNcbiAgcGF0dGVybiA9IHBhdHRlcm5cbiAgICAucmVwbGFjZUFsbCgnKionLCAnPDxHTE9CU1RBUj4+JykgICAgIC8vIFRlbXBvcmFyeSBwbGFjZWhvbGRlciBmb3IgKipcbiAgICAucmVwbGFjZUFsbCgnKicsICc8PFNUQVI+PicpICAgICAgICAgICAgLy8gVGVtcG9yYXJ5IHBsYWNlaG9sZGVyIGZvciAqXG4gICAgLnJlcGxhY2VBbGwoJzw8R0xPQlNUQVI+Pi8nLCAnKD86LiovKT8nKSAvLyAqKi8gbWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGRpcmVjdG9yaWVzIGluY2x1ZGluZyBub25lXG4gICAgLnJlcGxhY2VBbGwoJzw8R0xPQlNUQVI+PicsICcuKicpICAgICAgIC8vICoqIG1hdGNoZXMgYW55dGhpbmdcbiAgICAucmVwbGFjZUFsbCgnPDxTVEFSPj4nLCAnW14vXSonKSAgICAgICAgLy8gKiBtYXRjaGVzIGFueXRoaW5nIGV4Y2VwdCBkaXJlY3Rvcnkgc2VwYXJhdG9yXG4gICAgLnJlcGxhY2VBbGwoJy8nLCAnXFxcXC8nKTsgICAgICAgICAgICAgICAgLy8gRXNjYXBlIGZvcndhcmQgc2xhc2hlc1xuICBcbiAgLy8gQ29tYmluZSBwcmVmaXggYW5kIHBhdHRlcm5cbiAgY29uc3QgZnVsbFBhdHRlcm4gPSBwcmVmaXggKyBwYXR0ZXJuO1xuICBcbiAgLy8gQWRkIGFuY2hvcnMgdG8gZW5zdXJlIGZ1bGwgcGF0aCBtYXRjaFxuICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke2Z1bGxQYXR0ZXJufSRgKTtcbiAgXG4gIC8vIENhY2hlIHRoZSBjb21waWxlZCByZWdleFxuICBjYWNoZS5zZXRSZWdleChnbG9iLCByZWdleCk7XG4gIFxuICByZXR1cm4gcmVnZXg7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGZpbGUgcGF0aCBmb3IgY29uc2lzdGVudCBtYXRjaGluZ1xuICogSGFuZGxlcyBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwYXRocyBhY3Jvc3MgZGlmZmVyZW50IHBsYXRmb3Jtc1xuICovXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBDb252ZXJ0IGJhY2tzbGFzaGVzIHRvIGZvcndhcmQgc2xhc2hlcyBmb3IgV2luZG93cyBwYXRoc1xuICBsZXQgbm9ybWFsaXplZCA9IGZpbGVQYXRoLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpO1xuXG4gIC8vIFJlbW92ZSBkdXBsaWNhdGUgc2xhc2hlc1xuICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5yZXBsYWNlQWxsKC9cXC8rL2csICcvJyk7XG4gIFxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2ggaWYgcHJlc2VudFxuICBpZiAobm9ybWFsaXplZC5lbmRzV2l0aCgnLycpICYmIG5vcm1hbGl6ZWQubGVuZ3RoID4gMSkge1xuICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnNsaWNlKDAsIC0xKTtcbiAgfVxuICBcbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbi8qKlxuICogRXh0cmFjdCByZWxhdGl2ZSBwYXRoIGZyb20gYWJzb2x1dGUgcGF0aFxuICogSGFuZGxlcyB2YXJpb3VzIENJL0NEIGFuZCBsb2NhbCBkZXZlbG9wbWVudCBwYXRoIGZvcm1hdHNcbiAqL1xuZnVuY3Rpb24gZ2V0UmVsYXRpdmVQYXRoKGFic29sdXRlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBhdGgoYWJzb2x1dGVQYXRoKTtcbiAgXG4gIC8vIElmIGFscmVhZHkgYSByZWxhdGl2ZSBwYXRoLCByZXR1cm4gYXMtaXNcbiAgaWYgKCFub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy8nKSAmJiAhbm9ybWFsaXplZC5tYXRjaCgvXltBLVpdOi9pKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG4gIFxuICAvLyBEZWZpbmUgY29tbW9uIHByb2plY3Qgc291cmNlIGRpcmVjdG9yaWVzXG4gIGNvbnN0IHByb2plY3REaXJzID0gWydzcmMvJywgJ19fdGVzdHNfXy8nLCAnc2NyaXB0cy8nLCAnZG9jcy8nLCAndGVzdHMvJywgJ3Rlc3QtYXJjaGl2ZS8nLCAnbGliLyddO1xuICBcbiAgLy8gRmluZCB0aGUgcG9zaXRpb24gb2YgY29tbW9uIHByb2plY3QgZGlyZWN0b3JpZXMgaW4gdGhlIHBhdGhcbiAgbGV0IGJlc3RNYXRjaCA9IHsgaW5kZXg6IC0xLCBkaXI6ICcnLCByZWxhdGl2ZVBhdGg6ICcnIH07XG4gIFxuICBmb3IgKGNvbnN0IGRpciBvZiBwcm9qZWN0RGlycykge1xuICAgIC8vIExvb2sgZm9yIC9kaXIgcGF0dGVybiAod2l0aCBsZWFkaW5nIHNsYXNoIHRvIGF2b2lkIGZhbHNlIG1hdGNoZXMpXG4gICAgY29uc3Qgc2VhcmNoUGF0dGVybiA9IGAvJHtkaXJ9YDtcbiAgICBjb25zdCBpbmRleCA9IG5vcm1hbGl6ZWQubGFzdEluZGV4T2Yoc2VhcmNoUGF0dGVybik7XG4gICAgXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIC8vIEV4dHJhY3QgZXZlcnl0aGluZyBhZnRlciB0aGUgcGFyZW50IG9mIHRoaXMgZGlyZWN0b3J5XG4gICAgICAvLyBGb3IgZXhhbXBsZTogL2hvbWUvdXNlci9wcm9qZWN0L3NyYy9maWxlLnRzIC0+IHNyYy9maWxlLnRzXG4gICAgICBjb25zdCBkaXJTdGFydEluZGV4ID0gaW5kZXggKyAxOyAvLyBTa2lwIHRoZSBsZWFkaW5nIHNsYXNoXG4gICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBub3JtYWxpemVkLnN1YnN0cmluZyhkaXJTdGFydEluZGV4KTtcbiAgICAgIFxuICAgICAgLy8gVmVyaWZ5IHRoaXMgbG9va3MgbGlrZSBhIHZhbGlkIHByb2plY3QgZmlsZVxuICAgICAgaWYgKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKGRpcikgJiYgcmVsYXRpdmVQYXRoLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgbWF0Y2ggdGhhdCBhcHBlYXJzIGxhdGVzdCBpbiB0aGUgcGF0aCAobW9zdCBzcGVjaWZpYylcbiAgICAgICAgaWYgKGluZGV4ID4gYmVzdE1hdGNoLmluZGV4KSB7XG4gICAgICAgICAgYmVzdE1hdGNoID0geyBpbmRleCwgZGlyLCByZWxhdGl2ZVBhdGggfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLy8gSWYgd2UgZm91bmQgYSBtYXRjaCwgcmV0dXJuIGl0XG4gIGlmIChiZXN0TWF0Y2guaW5kZXggPj0gMCkge1xuICAgIHJldHVybiBiZXN0TWF0Y2gucmVsYXRpdmVQYXRoO1xuICB9XG4gIFxuICAvLyBGYWxsYmFjazogVHJ5IHRvIGZpbmQgY29tbW9uIGZpbGUgcGF0dGVybnMgdGhhdCBpbmRpY2F0ZSBwcm9qZWN0IGZpbGVzXG4gIGNvbnN0IGZpbGVQYXR0ZXJucyA9IFtcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLltqdF1zeD8kLyxcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLmpzb24kLyxcbiAgICAvXFwvKHNyY3xfX3Rlc3RzX198c2NyaXB0c3x0ZXN0fHRlc3RzfGxpYilcXC8uKlxcLnlhP21sJC8sXG4gICAgL1xcL3BhY2thZ2VcXC5qc29uJC8sXG4gICAgL1xcL3BhY2thZ2UtbG9ja1xcLmpzb24kLyxcbiAgICAvXFwvdHNjb25maWcuKlxcLmpzb24kLyxcbiAgICAvXFwvXFwuLipyY1xcLmpzb24kLyAgLy8gLmVzbGludHJjLmpzb24sIGV0Yy5cbiAgXTtcbiAgXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBmaWxlUGF0dGVybnMpIHtcbiAgICBjb25zdCBtYXRjaCA9IG5vcm1hbGl6ZWQubWF0Y2gocGF0dGVybik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAvLyBGaW5kIHdoZXJlIHRoZSBtYXRjaCBzdGFydHMgYW5kIGV4dHJhY3QgZnJvbSB0aGVyZVxuICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IG5vcm1hbGl6ZWQuaW5kZXhPZihtYXRjaFswXSk7XG4gICAgICBpZiAobWF0Y2hJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkLnN1YnN0cmluZyhtYXRjaEluZGV4ICsgMSk7IC8vIFNraXAgbGVhZGluZyAvXG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvLyBMYXN0IHJlc29ydDogaWYgcGF0aCBjb250YWlucyBjb21tb24gZXh0ZW5zaW9ucywgdHJ5IHRvIGV4dHJhY3QgYSByZWFzb25hYmxlIHJlbGF0aXZlIHBhdGhcbiAgaWYgKG5vcm1hbGl6ZWQubWF0Y2goL1xcLih0c3xqc3x0c3h8anN4fGpzb258eWFtbHx5bWwpJC8pKSB7XG4gICAgLy8gRmluZCB0aGUgbGFzdCBzZWdtZW50IHRoYXQgbG9va3MgbGlrZSBhIHByb2plY3QgZGlyZWN0b3J5XG4gICAgY29uc3Qgc2VnbWVudHMgPSBub3JtYWxpemVkLnNwbGl0KCcvJyk7XG4gICAgZm9yIChsZXQgaSA9IHNlZ21lbnRzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAocHJvamVjdERpcnMuc29tZShkaXIgPT4gZGlyLnN0YXJ0c1dpdGgoc2VnbWVudHNbaV0pKSkge1xuICAgICAgICByZXR1cm4gc2VnbWVudHMuc2xpY2UoaSkuam9pbignLycpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igcm9vdC1sZXZlbCBmaWxlcyBsaWtlIHBhY2thZ2UtbG9jay5qc29uLCBqdXN0IHJldHVybiB0aGUgZmlsZW5hbWVcbiAgICBjb25zdCBmaWxlbmFtZSA9IHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChmaWxlbmFtZSAmJiBmaWxlbmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICByZXR1cm4gZmlsZW5hbWU7XG4gICAgfVxuICB9XG4gIFxuICAvLyBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgcGF0aCBpZiB3ZSBjYW4ndCBleHRyYWN0IHJlbGF0aXZlXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgZmluZGluZyBzaG91bGQgYmUgc3VwcHJlc3NlZFxuICogT3B0aW1pemVkIHdpdGggY2FjaGluZyBhbmQgZWFybHkgcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkU3VwcHJlc3MocnVsZUlkOiBzdHJpbmcsIGZpbGVQYXRoPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghZmlsZVBhdGgpIHJldHVybiBmYWxzZTtcbiAgXG4gIC8vIE5vcm1hbGl6ZSBwYXRocyBmb3IgY29uc2lzdGVudCBtYXRjaGluZ1xuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgoZmlsZVBhdGgpO1xuICBjb25zdCByZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGgobm9ybWFsaXplZFBhdGgpO1xuICBcbiAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcbiAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KHJ1bGVJZCwgcmVsYXRpdmVQYXRoKTtcbiAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2FjaGVkO1xuICBcbiAgLy8gUHJvY2VzcyBzdXBwcmVzc2lvbnMgd2l0aCBlYXJseSByZXR1cm5zXG4gIGZvciAoY29uc3Qgc3VwcHJlc3Npb24gb2Ygc3VwcHJlc3Npb25zKSB7XG4gICAgLy8gU2tpcCBpZiBydWxlIGRvZXNuJ3QgbWF0Y2hcbiAgICBpZiAoc3VwcHJlc3Npb24ucnVsZSAhPT0gJyonICYmIHN1cHByZXNzaW9uLnJ1bGUgIT09IHJ1bGVJZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIFxuICAgIC8vIEhhbmRsZSBnbG9iYWwgc3VwcHJlc3Npb25zIChubyBmaWxlIHNwZWNpZmllZClcbiAgICBpZiAoIXN1cHByZXNzaW9uLmZpbGUpIHtcbiAgICAgIGNhY2hlLnNldChydWxlSWQsIHJlbGF0aXZlUGF0aCwgdHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZXhhY3QgZmlsZSBtYXRjaCAobW9zdCBjb21tb24gY2FzZSlcbiAgICBpZiAoc3VwcHJlc3Npb24uZmlsZSA9PT0gcmVsYXRpdmVQYXRoIHx8IHN1cHByZXNzaW9uLmZpbGUgPT09IG5vcm1hbGl6ZWRQYXRoKSB7XG4gICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIHBhdHRlcm4gbWF0Y2ggb25seSBpZiBmaWxlIGNvbnRhaW5zIHdpbGRjYXJkc1xuICAgIGlmIChzdXBwcmVzc2lvbi5maWxlLmluY2x1ZGVzKCcqJykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gZ2xvYlRvUmVnZXgoc3VwcHJlc3Npb24uZmlsZSk7XG4gICAgICAgIGlmIChyZWdleC50ZXN0KHJlbGF0aXZlUGF0aCkgfHwgcmVnZXgudGVzdChub3JtYWxpemVkUGF0aCkpIHtcbiAgICAgICAgICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIHRydWUpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEludmFsaWQgc3VwcHJlc3Npb24gcGF0dGVybiBcIiR7c3VwcHJlc3Npb24uZmlsZX1cIjpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvLyBOb3Qgc3VwcHJlc3NlZFxuICBjYWNoZS5zZXQocnVsZUlkLCByZWxhdGl2ZVBhdGgsIGZhbHNlKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENsZWFyIHN1cHByZXNzaW9uIGNhY2hlICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclN1cHByZXNzaW9uQ2FjaGUoKTogdm9pZCB7XG4gIGNhY2hlLmNsZWFyKCk7XG59XG5cbi8qKlxuICogR2V0IHN1cHByZXNzaW9uIHN0YXRpc3RpY3MgZm9yIHJlcG9ydGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VwcHJlc3Npb25TdGF0cygpOiB7IFxuICB0b3RhbDogbnVtYmVyOyBcbiAgYnlSdWxlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBieUNhdGVnb3J5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufSB7XG4gIGNvbnN0IHN0YXRzID0ge1xuICAgIHRvdGFsOiBzdXBwcmVzc2lvbnMubGVuZ3RoLFxuICAgIGJ5UnVsZToge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgICBieUNhdGVnb3J5OiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+XG4gIH07XG4gIFxuICBmb3IgKGNvbnN0IHN1cHByZXNzaW9uIG9mIHN1cHByZXNzaW9ucykge1xuICAgIC8vIENvdW50IGJ5IHJ1bGVcbiAgICBzdGF0cy5ieVJ1bGVbc3VwcHJlc3Npb24ucnVsZV0gPSAoc3RhdHMuYnlSdWxlW3N1cHByZXNzaW9uLnJ1bGVdIHx8IDApICsgMTtcbiAgICBcbiAgICAvLyBDb3VudCBieSBjYXRlZ29yeSAoZXh0cmFjdCBmcm9tIHJ1bGUgcHJlZml4KVxuICAgIGNvbnN0IGNhdGVnb3J5ID0gc3VwcHJlc3Npb24ucnVsZS5zcGxpdCgnLScpWzBdO1xuICAgIHN0YXRzLmJ5Q2F0ZWdvcnlbY2F0ZWdvcnldID0gKHN0YXRzLmJ5Q2F0ZWdvcnlbY2F0ZWdvcnldIHx8IDApICsgMTtcbiAgfVxuICBcbiAgcmV0dXJuIHN0YXRzO1xufVxuXG4vLyBWYWxpZGF0ZSBzdXBwcmVzc2lvbnMgb24gbW9kdWxlIGxvYWRcbmNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZVN1cHByZXNzaW9ucygpO1xuaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICBsb2dnZXIud2FybignU3VwcHJlc3Npb24gY29uZmlndXJhdGlvbiB3YXJuaW5nczonLCB2YWxpZGF0aW9uRXJyb3JzKTtcbn1cbiJdfQ==
@@ -22,6 +22,13 @@ export declare const SECURITY_LIMITS: {
22
22
  MAX_REGEX_INPUT_LENGTH: number;
23
23
  YAML_BOMB_AMPLIFICATION_THRESHOLD: number;
24
24
  };
25
+ /** Shared severity type used across security validators (#1782-7) */
26
+ export type SecuritySeverityLevel = 'low' | 'medium' | 'high' | 'critical';
27
+ /**
28
+ * Escalate severity level — higher severity takes precedence.
29
+ * Extracted from UnicodeValidator and InputNormalizer to eliminate duplication (#1782-7).
30
+ */
31
+ export declare function escalateSeverity(current: SecuritySeverityLevel | undefined, newSeverity: SecuritySeverityLevel): SecuritySeverityLevel;
25
32
  export declare const VALIDATION_PATTERNS: {
26
33
  SAFE_FILENAME: RegExp;
27
34
  SAFE_PATH: RegExp;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/security/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CAkC3B,CAAC;AAGF,eAAO,MAAM,mBAAmB;;;;;;;;;;CA4B/B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAwCA,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/security/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CAkC3B,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE3E;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,qBAAqB,GAAG,SAAS,EAC1C,WAAW,EAAE,qBAAqB,GACjC,qBAAqB,CAIvB;AAGD,eAAO,MAAM,mBAAmB;;;;;;;;;;CA4B/B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAwCA,CAAC"}