@cubist-labs/cubesigner-sdk 0.4.244 → 0.4.246

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 (53) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/spec/env/gamma.json +5 -0
  3. package/dist/src/audit_log.d.ts +3 -3
  4. package/dist/src/client/api_client.d.ts +13 -6
  5. package/dist/src/client/api_client.d.ts.map +1 -1
  6. package/dist/src/client/api_client.js +23 -13
  7. package/dist/src/client/base_client.d.ts +5 -1
  8. package/dist/src/client/base_client.d.ts.map +1 -1
  9. package/dist/src/client/base_client.js +15 -9
  10. package/dist/src/client/session.d.ts +3 -1
  11. package/dist/src/client/session.d.ts.map +1 -1
  12. package/dist/src/client/session.js +7 -3
  13. package/dist/src/client.d.ts +12 -5
  14. package/dist/src/client.d.ts.map +1 -1
  15. package/dist/src/client.js +15 -4
  16. package/dist/src/diffie_hellman.js +2 -2
  17. package/dist/src/env.d.ts +7 -0
  18. package/dist/src/env.d.ts.map +1 -1
  19. package/dist/src/env.js +14 -1
  20. package/dist/src/key.js +3 -3
  21. package/dist/src/policy.d.ts +24 -7
  22. package/dist/src/policy.d.ts.map +1 -1
  23. package/dist/src/policy.js +34 -16
  24. package/dist/src/response.d.ts +3 -3
  25. package/dist/src/response.d.ts.map +1 -1
  26. package/dist/src/response.js +3 -6
  27. package/dist/src/schema.d.ts +186 -33
  28. package/dist/src/schema.d.ts.map +1 -1
  29. package/dist/src/schema.js +1 -1
  30. package/dist/src/schema_types.d.ts.map +1 -1
  31. package/dist/src/schema_types.js +2 -1
  32. package/dist/src/scopes.d.ts.map +1 -1
  33. package/dist/src/scopes.js +14 -11
  34. package/dist/src/user_export.d.ts +1 -1
  35. package/dist/src/user_export.js +3 -3
  36. package/dist/src/util.d.ts +7 -0
  37. package/dist/src/util.d.ts.map +1 -1
  38. package/dist/src/util.js +30 -7
  39. package/package.json +1 -1
  40. package/src/client/api_client.ts +26 -14
  41. package/src/client/base_client.ts +12 -2
  42. package/src/client/session.ts +10 -3
  43. package/src/client.ts +17 -4
  44. package/src/diffie_hellman.ts +1 -1
  45. package/src/env.ts +17 -0
  46. package/src/key.ts +2 -2
  47. package/src/policy.ts +34 -16
  48. package/src/response.ts +6 -9
  49. package/src/schema.ts +202 -49
  50. package/src/schema_types.ts +1 -0
  51. package/src/scopes.ts +13 -10
  52. package/src/user_export.ts +2 -2
  53. package/src/util.ts +34 -8
@@ -4,4 +4,4 @@
4
4
  * Do not make direct changes to the file.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIGJ5IG9wZW5hcGktdHlwZXNjcmlwdC5cbiAqIERvIG5vdCBtYWtlIGRpcmVjdCBjaGFuZ2VzIHRvIHRoZSBmaWxlLlxuICovXG5cbi8qKiBPbmVPZiB0eXBlIGhlbHBlcnMgKi9cbnR5cGUgV2l0aG91dDxULCBVPiA9IHsgW1AgaW4gRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBVPl0/OiBuZXZlciB9O1xudHlwZSBYT1I8VCwgVT4gPSBUIHwgVSBleHRlbmRzIG9iamVjdCA/IChXaXRob3V0PFQsIFU+ICYgVSkgfCAoV2l0aG91dDxVLCBUPiAmIFQpIDogVCB8IFU7XG50eXBlIE9uZU9mPFQgZXh0ZW5kcyBhbnlbXT4gPSBUIGV4dGVuZHMgW2luZmVyIE9ubHldXG4gID8gT25seVxuICA6IFQgZXh0ZW5kcyBbaW5mZXIgQSwgaW5mZXIgQiwgLi4uaW5mZXIgUmVzdF1cbiAgICA/IE9uZU9mPFtYT1I8QSwgQj4sIC4uLlJlc3RdPlxuICAgIDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgcGF0aHMge1xuICBcIi92MC9hYm91dF9tZVwiOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICpcbiAgICAgKiBQUkVGRVIgYEdFVCAvdjAvb3Jncy97b3JnX2lkfS91c2VyL21lYFxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImFib3V0TWVMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL2F0dGVzdGF0aW9uLy53ZWxsLWtub3duL2p3a3MuanNvblwiOiB7XG4gICAgLyoqXG4gICAgICogSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciB0aGUgYXR0ZXN0YXRpb24ga2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5IHVzZWQgdG8gc2lnbiBLZXkgaW5mbyBhdHRlc3RhdGlvbnMuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYXR0ZXN0YXRpb25Kd2tTZXRcIl07XG4gIH07XG4gIFwiL3YwL2VtYWlsL29yZ3NcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgYWNjZXNzaWJsZSBvcmdhbml6YXRpb25zLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFjY2Vzc2libGUgb3JnYW5pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIFVuYXV0aGVudGljYXRlZCBlbmRwb2ludCBmb3IgcmV0cmlldmluZyBhbGwgb3JnYW5pemF0aW9ucyBhY2Nlc3NpYmxlIHRvIGEgdXNlci5cbiAgICAgKiBUaGlzIGluZm9ybWF0aW9uIGlzIGVtYWlsZWQgdG8gdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZW1haWxfbXlfb3Jnc1wiXTtcbiAgfTtcbiAgXCIvdjAvaW50ZXJuYWwvc2VudHJ5XCI6IHtcbiAgICAvKipcbiAgICAgKiAoSU5URVJOQUwpIFNlbnRyeSBBUEkgUHJveHlcbiAgICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBTZW50cnkgQVBJIFByb3h5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNlbnRyeUFwaUNhbGxQdWJsaWNcIl07XG4gIH07XG4gIFwiL3YwL21taS92My8ud2VsbC1rbm93bi9qd2tzLmpzb25cIjoge1xuICAgIC8qKlxuICAgICAqIEpXS1MgZW5kcG9pbnQgZm9yIE1NSVxuICAgICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciBNTUlcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBzaWduIEpTT04gV2ViIFRva2VucyBmb3IgTU1JLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1taUp3a1NldFwiXTtcbiAgfTtcbiAgXCIvdjAvbW1pL3YzL2pzb24tcnBjXCI6IHtcbiAgICAvKipcbiAgICAgKiBNTUkgSlNPTi1SUEMgZW5kcG9pbnRcbiAgICAgKiBAZGVzY3JpcHRpb24gTU1JIEpTT04tUlBDIGVuZHBvaW50XG4gICAgICpcbiAgICAgKiBIYW5kbGVyIGZvciBhbGwgW01NSSBKU09OLVJQQ10oaHR0cHM6Ly9kb2NzLm1ldGFtYXNrLWluc3RpdHV0aW9uYWwuaW8vY3VzdG9kaWFuLWludGVncmF0aW9uL2ludGVncmF0aW9uLWRvY3MvYXBpL21ldGhvZHMpXG4gICAgICogcmVxdWVzdHMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1taVwiXTtcbiAgfTtcbiAgXCIvdjAvb2F1dGgvdG9rZW5cIjoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIHJlZnJlc2ggZW5kcG9pbnQsIGNvbXBsaWFudCB3aXRoIE9BdXRoLlxuICAgICAqIEBkZXNjcmlwdGlvbiBUb2tlbiByZWZyZXNoIGVuZHBvaW50LCBjb21wbGlhbnQgd2l0aCBPQXV0aC5cbiAgICAgKlxuICAgICAqIFRoZSBib2R5IGNvbnRlbnQgdHlwZSBjYW4gYmUgZWl0aGVyICdhcHBsaWNhdGlvbi9qc29uJyBvciAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2F1dGgyVG9rZW5SZWZyZXNoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRPcmdcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIE9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAgICpcbiAgICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZU9yZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2F1ZGl0XCI6IHtcbiAgICAvKipcbiAgICAgKiBRdWVyeSB0aGUgYXVkaXQgbG9nLlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWVyeSB0aGUgYXVkaXQgbG9nLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJxdWVyeUF1ZGl0TG9nXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXV0aF9taWdyYXRpb24vYWRkX2lkZW50aXR5XCI6IHtcbiAgICAvKipcbiAgICAgKiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdXRoTWlncmF0aW9uSWRlbnRpdHlBZGRcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdXRoX21pZ3JhdGlvbi9yZW1vdmVfaWRlbnRpdHlcIjoge1xuICAgIC8qKlxuICAgICAqIERpc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBEaXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYXV0aE1pZ3JhdGlvbklkZW50aXR5UmVtb3ZlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXV0aF9taWdyYXRpb24vdXBkYXRlX3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgZXhpc3RpbmcgdXNlcnMnIHByb2ZpbGVzLiBDdXJyZW50bHkgc3VwcG9ydHMgb25seSAocmUpc2V0dGluZyBlbWFpbHMuXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBleGlzdGluZyB1c2VycycgcHJvZmlsZXMuIEN1cnJlbnRseSBzdXBwb3J0cyBvbmx5IChyZSlzZXR0aW5nIGVtYWlscy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYXV0aE1pZ3JhdGlvblVzZXJVcGRhdGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdmEvc2lnbi97YXZhX2NoYWlufS97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIEF2YWxhbmNoZSBtZXNzYWdlIHdpdGggYSBnaXZlbiBTZWNwRXRoIChDLUNoYWluIG1lc3NhZ2VzKSBvclxuICAgICAqIFNlY3BBdmEgKFgtIGFuZCBQLUNoYWluIG1lc3NhZ2VzKSBrZXkuIEN1cnJlbnRseSBzaWduaW5nIEMtQ2hhaW4gbWVzc2FnZXNcbiAgICAgKiB3aXRoIFNlY3BFdGgga2V5IG11c3QgYWxzbyBiZSBleHBsaWNpdGx5IGFsbG93ZWQgdmlhIGBBbGxvd1Jhd0Jsb2JTaWduaW5nYFxuICAgICAqIHBvbGljeS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTZXJpYWxpemVkVHhTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXZhL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBKU09OLWVuY29kZWQgQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgICAqXG4gICAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYmFieWxvbi9jb3Yvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCYWJ5bG9uIENvdmVuYW50IENvbW1pdHRlZSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBDb3ZlbmFudCBDb21taXR0ZWUgUmVxdWVzdFxuICAgICAqXG4gICAgICogU2lnbnMgdHJhbnNhY3Rpb25zIHJlbGV2YW50IHRvIGEgQmFieWxvbiBjb3ZlbmFudCBjb21taXR0ZWUgc2lnbmVyLFxuICAgICAqIGkuZS4sIFNjaG5vcnIgYW5kIGFkYXB0b3Igc2lnbmF0dXJlcyBmb3IgdGhlIHVuYm9uZGluZywgc2xhc2hpbmcsIGFuZFxuICAgICAqIHNsYXNoLXVuYm9uZGluZyBvdXRwdXRzIG9mIGEgQmFieWxvbiBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJiYWJ5bG9uQ292U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vZW90cy9ub25jZXMve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBFT1RTIG5vbmNlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgRU9UUyBub25jZXNcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIHNldCBvZiBCYWJ5bG9uIEVPVFMgbm9uY2VzIGZvciBhIHNwZWNpZmllZCBjaGFpbi1pZCwgc3RhcnRpbmcgYXQgYVxuICAgICAqIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZUVvdHNOb25jZXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9iYWJ5bG9uL2VvdHMvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFuIEVPVFMgc2lnbmF0dXJlXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBhbiBFT1RTIHNpZ25hdHVyZVxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGFuIEVPVFMgc2lnbmF0dXJlIGZvciB0aGUgc3BlY2lmaWVkIGNoYWluLWlkLCBibG9jayBoZWlnaHQsIGFuZCBtZXNzYWdlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlb3RzU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vcmVnaXN0cmF0aW9uL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEJhYnlsb24gU3Rha2luZyBSZWdpc3RyYXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgUmVnaXN0cmF0aW9uXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuZCBzaWducyB0aGUgZGF0YSBuZWVkZWQgdG8gcmVnaXN0ZXIgYSBQaGFzZS0yIG9yIFBoYXNlLTNcbiAgICAgKiBCYWJ5bG9uIHN0YWtlLiBUaGlzIGluY2x1ZGVzIHRoZSBkZXBvc2l0IGFuZCB1bmJvbmRpbmcgdHJhbnNhY3Rpb25zLFxuICAgICAqIHR3byBzbGFzaGluZyB0cmFuc2FjdGlvbnMsIHRoZSBzbGFzaGluZyBzaWduYXR1cmVzLCBhbmQgdGhlIHByb29mIG9mXG4gICAgICogcG9zc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGdlbmVyYXRlIHRoaXMgcmVnaXN0cmF0aW9uIGRhdGEgYnlcbiAgICAgKiBtYWtpbmcgZm91ciBjYWxscyB0byB0aGUgQmFieWxvbiBzdGFraW5nIEFQSSwgcGx1cyBvbmUgY2FsbCB0byB0aGVcbiAgICAgKiBQU0JUIHNpZ25pbmcgQVBJIHRvIGdlbmVyYXRlIHRoZSBCSVAtMzIyIHByb29mIG9mIHBvc3Nlc3Npb24uIFRoZVxuICAgICAqIHJlZ2lzdHJhdGlvbiBBUEkgZ2VuZXJhdGVzIHRoZSBzYW1lIGRhdGEgYnV0IGlzIGVhc2llciB0byB1c2UuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdpdGggYSBUYXByb290IGtleS4gSWYgeW91clxuICAgICAqIGRlcG9zaXQgdHJhbnNhY3Rpb24gc3BlbmRzIFVUWE9zIHRoYXQgYXJlIGNvbnRyb2xsZWQgYnkgb3RoZXIga2V5cyxcbiAgICAgKiB5b3UgY2FuIHN1Ym1pdCB0aGUgJ2RlcG9zaXQnIFBTQlQgdG8gdGhlIFBTQlQgc2lnbmluZyBBUEkgb25lIG9yIG1vcmVcbiAgICAgKiB0aW1lcyB0byBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgc2lnbmF0dXJlcy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBjb25zdWx0IHRoZVxuICAgICAqIFtCYWJ5bG9uIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJ5bG9ubGFicy1pby9iYWJ5bG9uL2Jsb2IvcmVsZWFzZS92MS54L2RvY3MvcmVnaXN0ZXItYml0Y29pbi1zdGFrZS5tZCkuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYmFieWxvblJlZ2lzdHJhdGlvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vc3Rha2luZy97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYW5kIHNpZ25zIHRyYW5zYWN0aW9ucyByZWxhdGVkIHRvIEJhYnlsb24gc3Rha2luZyAoaS5lLixcbiAgICAgKiBkZXBvc2l0LCBlYXJseSB1bmJvbmQsIHdpdGhkcmF3YWwpLiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgUHJlLVNpZ25lZFxuICAgICAqIEJpdGNvaW4gVHJhbnNhY3Rpb24gKFBTQlQpLCBhcyBkZWZpbmVkIGluIEJJUC0xNzQsIHdoaWNoIG1hdGNoZXMgdGhlXG4gICAgICogZm9ybWF0IHVzZWQgaW4gbW9zdCBCYWJ5bG9uIHRvb2xpbmcuXG4gICAgICpcbiAgICAgKiBUaGUgJ2RlcG9zaXQnIGFjdGlvbiBjYW4gYmUgdXNlZCB3aXRoIGVpdGhlciBTZWd3aXQgKGkuZS4sIFNlY3BCdGMvU2VjcEJ0Y1Rlc3QpXG4gICAgICogb3IgVGFwcm9vdCAoaS5lLiwgVGFwcm9vdEJ0Yy9UYXByb290QnRjVGVzdCkga2V5cy4gVGhlIHJlbWFpbmluZyBhY3Rpb25zIGNhbiBiZVxuICAgICAqIHVzZWQgb25seSB3aXRoIFRhcHJvb3Qga2V5cy5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJiYWJ5bG9uU3Rha2luZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy9tZXNzYWdlL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gYSBCaXRjb2luIG1lc3NhZ2UuXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gYSBCaXRjb2luIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgQklQMTM3IG1lc3NhZ2Ugc2lnbmluZyB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYnRjTWVzc2FnZVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9idGMvcHNidC9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgICAqXG4gICAgICogU2lnbnMgYWxsIGlucHV0cyBvZiB0aGUgc3VwcGxpZWQgUFNCVCB2MCAoQklQLTE3NCkgdGhhdCBwZXJ0YWluIHRvIHRoZVxuICAgICAqICdwdWJrZXknIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIFRhcHJvb3Qgb3IgYVxuICAgICAqIFNlZ3dpdCBrZXkuIEZvciBTZWd3aXQga2V5cywgQ3ViZVNpZ25lci1zcGVjaWZpYyBkZXRlcm1pbmlzdGljIHR3ZWFraW5nXG4gICAgICogY2FuIGJlIGFwcGxpZWQgdG8gJ3B1YmtleScgYmVmb3JlIHNpZ25pbmcsIG9uIGEgcGVyLWlucHV0IGJhc2lzLiAoU2VlIHRoZVxuICAgICAqIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBTZWd3aXQgdHdlYWtpbmcuKVxuICAgICAqXG4gICAgICogV2hlbiBjYWxsaW5nIHdpdGggYSBzZWd3aXQga2V5IHRoZSByZXF1aXJlZCBzY29wZSBpcyAnc2lnbjpidGM6cHNidDpzZWd3aXQnLlxuICAgICAqIEZvciBhIHRhcHJvb3Qga2V5LCB0aGUgc2NvcGUgaXMgJ3NpZ246YnRjOnBzYnQ6dGFwcm9vdCcuIEVpdGhlciB0eXBlIG9mIGtleVxuICAgICAqIGNhbiBiZSB1c2VkIHdpdGggdGhlICdzaWduOmJ0Yzpwc2J0JyBzY29wZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJwc2J0U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEJpdGNvaW4gU2Vnd2l0IFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBTZWd3aXQgVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIFNpZ25zIGEgQml0Y29pbiBTZWd3aXQgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYnRjU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy90YXByb290L3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gQml0Y29pbiBUYXByb290IFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUYXByb290IFRyYW5zYWN0aW9uXG4gICAgICpcbiAgICAgKiBTaWducyBhIEJpdGNvaW4gVGFwcm9vdCB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJidGNUYXByb290U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2NvbnRhY3RzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IENvbnRhY3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgQ29udGFjdHNcbiAgICAgKlxuICAgICAqIExpc3QgYWxsIGNvbnRhY3RzIGluIHRoZSBvcmcuXG4gICAgICogQW55IG9yZyBtZW1iZXIgaXMgYWxsb3dlZCB0byBsaXN0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnLlxuICAgICAqXG4gICAgICogIyMgU2VhcmNoIENvbmRpdGlvblxuICAgICAqIFRoZSBzZWFyY2ggY29uZGl0aW9uIGlzIG9wdGlvbmFsLlxuICAgICAqXG4gICAgICogLSBJZiB0aGUgc2VhcmNoIGNvbmRpdGlvbiBzdGFydHMgd2l0aCBcImxhYmVsOi4uLlwiLCB0aGlzIGxpc3Qgd2lsbCBvbmx5IGhvbGQgY29udGFjdHMgd2l0aFxuICAgICAqIHRoZSBsYWJlbCBwcm92aWRlZCBhZnRlciB0aGUgXCI6XCIuIEZvciBleGFtcGxlLCBcImxhYmVsOmN1YmlzdDplcmMyMF90b2tlblwiIHdvdWxkIHJldHVybiBjb250YWN0cyB0aGF0XG4gICAgICogaG9sZCB0aGUgbGFiZWwgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIi5cbiAgICAgKlxuICAgICAqIC0gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBjb250YWN0cyB3aG8gaGF2ZSBhbiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGgsIG9yXG4gICAgICogZXF1YWxpbmcsIHRoZSBnaXZlbiBzZWFyY2ggc3RyaW5nLiBGb3IgZXhhbXBsZSwgXCIweGVlXCIgd291bGQgcmV0dXJuIGFsbCBjb250YWN0cyBob2xkaW5nIGFuXG4gICAgICogYWRkcmVzcyBzdGFydGluZyB3aXRoIFwiMHhlZVwiLiBUaGUgc2VhcmNoIGlzIGNhc2UtaW5zZW5zaXRpdmUuXG4gICAgICpcbiAgICAgKiBJZiBhIHNlYXJjaCB0ZXJtIGlzIGRlZmluZWQsIHdlIGRvIG5vdCBndWFyYW50ZWVcbiAgICAgKiB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgaW4gYSBwYWdlLiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBwYXJhbWV0ZXIgbWF5IGNoYW5nZVxuICAgICAqIGluIHRoZSBmdXR1cmUgKGZvciBleGFtcGxlLCBtYWtpbmcgcmVzdWx0cyBtb3JlIHN0cmljdGx5IHBhZ2luYXRlZCBvclxuICAgICAqIHBlcmZvcm1pbmcgYSBmdXp6eSBzZWFyY2ggcmF0aGVyIHRoYW4gYSBwcmVmaXggc2VhcmNoKS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Q29udGFjdHNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIENvbnRhY3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIENvbnRhY3RcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY29udGFjdCBpbiB0aGUgb3JnYW5pemF0aW9uLXdpZGUgYWRkcmVzcyBib29rLiBUaGVcbiAgICAgKiB1c2VyIG1ha2luZyB0aGUgcmVxdWVzdCBpcyB0aGUgb3duZXIgb2YgdGhlIGNvbnRhY3QsIGdpdmluZyB0aGVtIGVkaXQgYWNjZXNzXG4gICAgICogdG8gdGhlIGNvbnRhY3QgYWxvbmcgd2l0aCB0aGUgb3JnIG93bmVycy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlQ29udGFjdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2NvbnRhY3RzL2J5LWFkZHJlc3NcIjoge1xuICAgIC8qKlxuICAgICAqIExvb2t1cCBDb250YWN0cyBieSBBZGRyZXNzXG4gICAgICogQGRlc2NyaXB0aW9uIExvb2t1cCBDb250YWN0cyBieSBBZGRyZXNzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFsbCBjb250YWN0cyBpbiB0aGUgb3JnIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gYWRkcmVzcy5cbiAgICAgKlxuICAgICAqIFdoZW4gcXVlcnlpbmcgd2l0aCBhbiBFVk0gYWRkcmVzcyB3aXRob3V0IGEgY2hhaW4sIHRoaXMgZW5kcG9pbnQgcmV0dXJuc1xuICAgICAqIGNvbnRhY3RzIHdpdGggdGhhdCBhZGRyZXNzIG9uICphbnkqIGNoYWluLCBpbmNsdWRpbmcgdGhvc2Ugd2l0aG91dCBhIGNoYWluXG4gICAgICogZGVmaW5lZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wibG9va3VwQ29udGFjdHNCeUFkZHJlc3NcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9jb250YWN0cy97Y29udGFjdF9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBDb250YWN0XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEgQ29udGFjdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRDb250YWN0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBDb250YWN0XG4gICAgICpcbiAgICAgKiBEZWxldGUgYSBjb250YWN0LCBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqXG4gICAgICogT25seSB0aGUgY29udGFjdCBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUgY29udGFjdHMuXG4gICAgICogQWRkaXRpb25hbGx5LCB0aGUgY29udGFjdCdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSBkZWxldGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVDb250YWN0XCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBDb250YWN0XG4gICAgICpcbiAgICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGNvbnRhY3QgaW4gdGhlIG9yZ2FuaXphdGlvbi13aWRlIGFkZHJlc3MgYm9vay4gT25seVxuICAgICAqIHRoZSBjb250YWN0IG93bmVyIG9yIGFuIG9yZyBvd25lciBjYW4gdXBkYXRlIGNvbnRhY3RzLlxuICAgICAqXG4gICAgICogKlVwZGF0ZXMgd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIHZhbHVlIG9mIHRoZSBmaWVsZC4qXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVDb250YWN0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vY291bnRzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBjb3VudHMgb2YgdXNlcnMgYW5kIGtleXMgd2l0aGluIGFuIG9yZy5cbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGN1cnJlbnQgY291bnRzIG9mIHVzZXJzIGFuZCBrZXlzIHdpdGhpbiBhbiBvcmcuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY291bnRzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqXG4gICAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiZGVyaXZlS2V5TGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIERlcml2ZSBLZXkgRnJvbSBOZXcgT3IgRXhpc3RpbmcgTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTmV3IE9yIEV4aXN0aW5nIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKlxuICAgICAqIFVzZXMgZWl0aGVyIGEgbmV3IG9yIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMgdG8gZGVyaXZlIGtleXMgb2ZcbiAgICAgKiBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgdHlwZXMgdmlhIHNwZWNpZmllZCBkZXJpdmF0aW9uIHBhdGhzLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImRlcml2ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2RpZmZpZV9oZWxsbWFuL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBDb21wdXRlIERpZmZpZSBIZWxsbWFuIHNoYXJlZCBzZWNyZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0ZSBEaWZmaWUgSGVsbG1hbiBzaGFyZWQgc2VjcmV0XG4gICAgICpcbiAgICAgKiBGb3IgYSBzZXQgb2YgZWxsaXB0aWMgY3VydmUgcG9pbnRzIChQXzEsIC4uLiwgUF9pKSwgY29tcHV0ZXMgdGhlIERpZmZpZSBIZWxsbWFuXG4gICAgICogc2hhcmVkIHNlY3JldCAoUV8xLCAuLi4sIFFpKSA9IChzayAqIFBfMSwgLi4uIHNrICogUF9pKSwgZm9yIHNrIHRoZSBzZWNyZXQga2V5LlxuICAgICAqIFBvaW50cyBhcmUgc3BlY2lmaWVkIGluIGEgY3VydmUtZGVwZW5kZW50IGZvcm1hdC4gU2VlIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvblxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgdXNlciBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEgTklTVCBQLTI1NiBwdWJsaWMga2V5LCBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHRcbiAgICAgKiB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGUgcHVibGljIGtleSB1c2luZyBSRkM5MTgwIEhQS0UoUC0yNTYsIEhLREYtU0hBMjU2KSB3aXRoXG4gICAgICogQUVTLTI1Ni1HQ00gYXMgdGhlIHN5bW1ldHJpYyBjaXBoZXIuIEluIHRoaXMgY2FzZSwgdGhlIHJlc3VsdGluZyBjaXBoZXJ0ZXh0IHdpbGxcbiAgICAgKiBjb250YWluIGEgc2VyaWFsaXplZCBKU09OIGJsb2IgY29udGFpbmluZyB0aGUgdmVjdG9yIG9mIHNoYXJlZCBzZWNyZXRzIGluIHRoZSBzYW1lXG4gICAgICogb3JkZXIgdGhleSB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHRoZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYSBwdWJsaWMga2V5LCB0aGUgcmVzdWx0aW5nIHNoYXJlZCBzZWNyZXRzIHdpbGwgYmVcbiAgICAgKiByZXR1cm5lZCB1bmVuY3J5cHRlZC4gSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBzYW1wbGUgYSByYW5kb20gdmFsdWUgclxuICAgICAqIG1vZHVsbyB0aGUgZ3JvdXAgb3JkZXIgYW5kIG1hc2sgdGhlIHJlcXVlc3RlZCBwb2ludHMgYXMgKHIgKiBQXzEsIC4uLiwgciAqIFBfaSkuXG4gICAgICogVGhlIHJlc3VsdCB3aWxsIGJlIChyICogc2sgKiBQXzEsIC4uLiwgciAqIHNrICogUF9pKSwgd2hpY2ggY2FuIGJlIHVubWFza2VkIGJ5XG4gICAgICogZmlyc3QgY29tcHV0aW5nIHJeLTEsIHRoZSBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIHIgbW9kdWxvIHRoZSBncm91cCBvcmRlcixcbiAgICAgKiB0aGVuIGNvbXB1dGluZyBhIHNjYWxhciBtdWx0aXBsaWNhdGlvbiBvZiBlYWNoIHJldHVybmVkIHBvaW50IHdpdGggcl4tMS5cbiAgICAgKlxuICAgICAqIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgc2VjdXJpdHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBhcHByb2FjaGVzLiBUaGVcbiAgICAgKiBjbGllbnQgaXMgZnJlZSB0byBjaG9vc2UgdGhlIG9uZSB0aGF0IGlzIGVhc2llciBmcm9tIGFuIGltcGxlbWVudGF0aW9uIHBlcnNwZWN0aXZlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJkaWZmaWVIZWxsbWFuRXhjaGFuZ2VcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9lbWFpbHMve3B1cnBvc2V9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgRW1haWwgVGVtcGxhdGVcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IEVtYWlsIFRlbXBsYXRlXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBlbWFpbCB0ZW1wbGF0ZSBmb3IgYSBnaXZlbiBwdXJwb3NlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldEVtYWlsQ29uZmlnXCJdO1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZSBFbWFpbCBUZW1wbGF0ZVxuICAgICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmUgRW1haWwgVGVtcGxhdGVcbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJjb25maWd1cmVFbWFpbFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgRW1haWwgVGVtcGxhdGVcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEVtYWlsIFRlbXBsYXRlXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlRW1haWxDb25maWdcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9ldm0vZWlwMTkxL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAgICpcbiAgICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgRUlQLTE5MSBwZXJzb25hbF9zaWduIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlaXAxOTFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZXZtL2VpcDcxMi9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgICAqXG4gICAgICogU2lnbnMgdHlwZWQgZGF0YSBhY2NvcmRpbmcgdG8gRUlQLTcxMiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZWlwNzEyU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V4cG9ydC97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IGFuIE9yZy1FeHBvcnQgQ2lwaGVydGV4dFxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgYW4gT3JnLUV4cG9ydCBDaXBoZXJ0ZXh0XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBleHBvcnQgY2lwaGVydGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIGtleS1pZC5cbiAgICAgKiBJbiBvcmRlciB0byB1c2UgdGhpcyBBUEksIHlvdSBtdXN0IGJlIGFuIG9yZyBvd25lciBhbmQgeW91ciBvcmcgbXVzdFxuICAgICAqIGJlIGNvbmZpZ3VyZWQgZm9yIG9yZyBleHBvcnQgYW5kIGZvciBBUEktYmFzZWQgZXhwb3J0IGRlbGl2ZXJ5LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldE9yZ0V4cG9ydFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5XCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IGFzc29jaWF0ZWQgT0lEQyBpZGVudGl0aWVzIHdpdGggdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBhc3NvY2lhdGVkIE9JREMgaWRlbnRpdGllcyB3aXRoIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdE9pZGNJZGVudGl0aWVzXCJdO1xuICAgIC8qKlxuICAgICAqIEFzc29jaWF0ZSBhbiBPSURDIGlkZW50aXR5IHdpdGggdGhlIGN1cnJlbnQgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqXG4gICAgICogQWxpZW4gdXNlcnMgYXJlIGFsbG93ZWQgdG8gY2FsbCB0aGlzIGVuZHBvaW50LCBidXQgZm9yIHRoZW0gTUZBIGlzIHJlcXVpcmVkXG4gICAgICogKHVubGVzcyB0aGV5IGFyZSByZWdpc3RlcmluZyBhbiBlbWFpbC1vdHAgaWRlbnRpdHkgbWF0Y2hpbmcgdGhlaXIgY3VycmVudCBlbWFpbCk7XG4gICAgICogYWRkaXRpb25hbGx5LCBsaW1pdHMgbWF5IGFwcGx5IHRvIGhvdyBtYW55IGlkZW50aXRpZXMgdGhhdCBtYXkgcmVnaXN0ZXIuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImFkZE9pZGNJZGVudGl0eVwiXTtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIHRoZSBjdXJyZW50IHVzZXIncyBhY2NvdW50IGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIHRoZSBjdXJyZW50IHVzZXIncyBhY2NvdW50IGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZU9pZGNJZGVudGl0eVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5L3Byb3ZlXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIGFcbiAgICAgKiB2YWxpZCBDdWJlU2lnbmVyIHNlc3Npb24uXG4gICAgICpcbiAgICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlXG4gICAgICogdG8gYW5vdGhlciBzZXJ2aWNlIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUHJvb2ZDdWJlU2lnbmVyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvcHJvdmUvb2lkY1wiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICAgKlxuICAgICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqXG4gICAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBtZXQgdGhlXG4gICAgICogYXV0aGVudGljYXRpb24gcmVxdWlyZW1lbnRzIChhbGxvd2VkIGlzc3VlcnMgJiBhdWRpZW5jZXMpIGZvciBDdWJlU2lnbmVyXG4gICAgICogd2l0aG91dCBsZWFraW5nIHRoZWlyIGNyZWRlbnRpYWxzLlxuICAgICAqXG4gICAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZSB0byBhbm90aGVyIHNlcnZpY2VcbiAgICAgKiB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVByb29mT2lkY1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5L3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgICAqXG4gICAgICogQWxsb3dzIGEgdGhpcmQtcGFydHkgdG8gdmFsaWRhdGUgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBXaGVuIGEgdGhpcmQtcGFydHkgaXMgcHJvdmlkZWQgYW4gW0lkZW50aXR5UHJvb2ZdIG9iamVjdCwgdGhleSBtdXN0IGNoZWNrIGl0c1xuICAgICAqIHZlcmFjaXR5IGJ5IGNhbGxpbmcgdGhpcyBlbmRwb2ludFxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ2ZXJpZnlQcm9vZlwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkcC9hdXRoZW50aWNhdGVcIjoge1xuICAgIC8qKlxuICAgICAqIEF1dGhlbnRpY2F0ZVxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdGVcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgZXhjaGFuZ2VzIGFuIGVtYWlsICYgcGFzc3dvcmQgZm9yIGFuIE9JREMgdG9rZW5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaWRwQXV0aGVudGljYXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRwL3Bhc3N3b3JkX3Jlc2V0XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXF1ZXN0IFBhc3N3b3JkIFJlc2V0XG4gICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgUGFzc3dvcmQgUmVzZXRcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZSAob2YgdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS5gKSxcbiAgICAgKiBhbmQgc2VuZHMgdGhlIHNpZ25hdHVyZSB0byB0aGUgdXNlcidzIGVtYWlsLiBDbGllbnQgYXBwbGljYXRpb25zIGNhbiByZWNvbnN0cnVjdCB0aGUgdG9rZW5cbiAgICAgKiBieSBjb25jYXRlbmF0aW5nIHRoZSBge2hlYWRlcn0ue3BheWxvYWR9LmAgd2l0aCB0aGUgc2lnbmF0dXJlLCBwcm9kdWNpbmcgYSB2YWxpZCBPSURDIHRva2VuIG9mXG4gICAgICogdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS57c2lnbmF0dXJlfWAuIFRoZSB0b2tlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlclxuICAgICAqIHdoZW4gcGVyZm9ybWluZyB0aGUgYGlkcF9wYXNzd29yZF9yZXNldF9jb25maXJtYCByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJpZHBQYXNzd29yZFJlc2V0UmVxdWVzdFwiXTtcbiAgICAvKipcbiAgICAgKiBDb25maXJtIFBhc3N3b3JkIFJlc2V0XG4gICAgICogQGRlc2NyaXB0aW9uIENvbmZpcm0gUGFzc3dvcmQgUmVzZXRcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgYWxsb3dzIElEUCB1c2VycyB0byByZXNldCB0aGVpciBwYXNzd29yZFxuICAgICAqIHVzaW5nIGEgdG9rZW4gdGhleSBoYXZlIHJlY2VpdmVkIGluIHRoZWlyIGVtYWlsLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wiaWRwUGFzc3dvcmRSZXNldENvbmZpcm1cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleUltcG9ydEtleVwiXTtcbiAgICAvKipcbiAgICAgKiBJbXBvcnQgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEltcG9ydCBLZXlcbiAgICAgKlxuICAgICAqIFNlY3VyZWx5IGltcG9ydHMgYW4gZXhpc3Rpbmcga2V5IHVzaW5nIGEgcHJldmlvdXNseSBnZW5lcmF0ZWQga2V5LWltcG9ydCBrZXkuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiaW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW5mb1wiOiB7XG4gICAgLyoqXG4gICAgICogUHVibGljIE9yZyBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFB1YmxpYyBPcmcgSW5mb1xuICAgICAqXG4gICAgICogVW5hdXRoZW50aWNhdGVkIGVuZHBvaW50IHRoYXQgcmV0dXJucyBwdWJsaWNseS1hdmFpbGFibGUgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pemF0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcInB1YmxpY19vcmdfaW5mb1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2ludGVybmFsL2N1c3RvbV9jaGFpbl9ycGNcIjoge1xuICAgIC8qKlxuICAgICAqIChJTlRFUk5BTCkgQ3VzdG9tIGNoYWluIFJQQyBwcm94eVxuICAgICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEN1c3RvbSBjaGFpbiBSUEMgcHJveHlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3VzdG9tQ2hhaW5ScGNDYWxsXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW50ZXJuYWwvZXNwbG9yYVwiOiB7XG4gICAgLyoqXG4gICAgICogKElOVEVSTkFMKSBFc3Bsb3JhIEFQSSBQcm94eVxuICAgICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVzcGxvcmFBcGlDYWxsXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW50ZXJuYWwvc2VudHJ5XCI6IHtcbiAgICAvKipcbiAgICAgKiAoSU5URVJOQUwpIEF1dGhlbnRpY2F0ZWQgU2VudHJ5IEFQSSBQcm94eVxuICAgICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEF1dGhlbnRpY2F0ZWQgU2VudHJ5IEFQSSBQcm94eVxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzZW50cnlBcGlDYWxsXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW52aXRhdGlvbi9hY2NlcHRcIjoge1xuICAgIC8qKlxuICAgICAqIEFjY2VwdCBhbiBpbnZpdGF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEFjY2VwdCBhbiBpbnZpdGF0aW9uXG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGFsbG93cyBpZHAgdXNlcnMgdG8gcmVnaXN0ZXIgdXNpbmcgYSB0b2tlbiB0aGV5IGhhdmUgcmVjZWl2ZWQgaW4gdGhlaXIgZW1haWxcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52aXRhdGlvbkFjY2VwdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2ludml0YXRpb25zXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHBlbmRpbmcgaW52aXRhdGlvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBwZW5kaW5nIGludml0YXRpb25zXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFsbCBwZW5kaW5nIChub3QgeWV0IGFjY2VwdGVkKSBpbnZpdGF0aW9ucyBmb3IgdGhlIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0SW52aXRhdGlvbnNcIl07XG4gICAgLyoqXG4gICAgICogQ2FuY2VsIGEgcGVuZGluZyBpbnZpdGF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIENhbmNlbCBhIHBlbmRpbmcgaW52aXRhdGlvblxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhIHBlbmRpbmcgaW52aXRhdGlvbiBmcm9tIHRoZSBvcmdhbml6YXRpb24uIElmIG5vIHBlbmRpbmcgaW52aXRhdGlvblxuICAgICAqIGV4aXN0cyBmb3IgdGhlIGdpdmVuIGVtYWlsIGFkZHJlc3MsIGEgbm90LWZvdW5kIGVycm9yIGlzIHJldHVybmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImNhbmNlbEludml0YXRpb25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbnZpdGVcIjoge1xuICAgIC8qKlxuICAgICAqIEludml0ZSBVc2VyXG4gICAgICogQGRlc2NyaXB0aW9uIEludml0ZSBVc2VyXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgaW4gYW4gZXhpc3Rpbmcgb3JnIGFuZCBzZW5kcyB0aGF0IHVzZXIgYW4gaW52aXRlIGVtYWlsLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJpbnZpdGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXlzXG4gICAgICpcbiAgICAgKiBHZXRzIHRoZSBsaXN0IG9mIGFjY2Vzc2libGUga2V5cyBpbiBhIGdpdmVuIG9yZyAodG8gb3JnIG93bmVyLCBhbGwgb3JnIGtleXNcbiAgICAgKiBhcmUgYWNjZXNzaWJsZTsgdG8gbWVtYmVycywgb25seSB0aGVpciBvd24ga2V5cyBhcmUgYWNjZXNzaWJsZSkuXG4gICAgICpcbiAgICAgKiBJZiBhIHNlYXJjaCBjb25kaXRpb24gaXMsIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG9ubHkgdGhlIGtleXMgd2hvc2UgZWl0aGVyXG4gICAgICogbWF0ZXJpYWwgSUQgb3IgbWV0YWRhdGEgY29udGFpbiB0aGUgc2VhcmNoIGNvbmRpdGlvbiBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBOT1RFIHRoYXQgaWYgcGFnaW5hdGlvbiBpcyB1c2VkIGFuZCBhIHBhZ2UgbGltaXQgaXMgc2V0LCB0aGUgcmV0dXJuZWQgcmVzdWx0XG4gICAgICogc2V0IG1heSBjb250YWluIGVpdGhlciBGRVdFUiBvciBNT1JFIGVsZW1lbnRzIHRoYW4gdGhlIHJlcXVlc3RlZCBwYWdlIGxpbWl0LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldEtleUluT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEtleVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIGtleSBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqXG4gICAgICogT25seSB0aGUga2V5IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBrZXlzLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZUtleVwiXTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBLZXlcbiAgICAgKlxuICAgICAqIEVuYWJsZSBvciBkaXNhYmxlIGEga2V5LiAgVGhlIHVzZXIgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGtleSBvclxuICAgICAqIG9yZ2FuaXphdGlvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqXG4gICAgICogRm9yIGVhY2ggcmVxdWVzdGVkIHVwZGF0ZSwgdGhlIHNlc3Npb24gbXVzdCBoYXZlIHRoZSBjb3JyZXNwb25kaW5nICdtYW5hZ2U6a2V5OnVwZGF0ZTpfJyBzY29wZTtcbiAgICAgKiBpZiBubyB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHRoZSBzZXNzaW9uIG11c3QgaGF2ZSAnbWFuYWdlOmtleTpnZXQnLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfS9hdHRlc3RcIjoge1xuICAgIC8qKlxuICAgICAqIEF0dGVzdCB0byBLZXkgUHJvcGVydGllc1xuICAgICAqIEBkZXNjcmlwdGlvbiBBdHRlc3QgdG8gS2V5IFByb3BlcnRpZXNcbiAgICAgKlxuICAgICAqIFRoZSByZXNwb25zZSBpcyBhIEpXVCB3aG9zZSBjbGFpbXMgYXJlIHRoZSBrZXkgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhdHRlc3RLZXlcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9rZXlzL3trZXlfaWR9L3JvbGVzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IEtleSBSb2xlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleSBSb2xlc1xuICAgICAqXG4gICAgICogR2V0IGFsbCByb2xlcyB0aGUga2V5IGlzIGluXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdEtleVJvbGVzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfS90eFwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEhpc3RvcmljYWwgVHJhbnNhY3Rpb25zXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGEgc29ydGVkLCBwYWdpbmF0ZWQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGJ5IGEgZ2l2ZW4ga2V5LFxuICAgICAqIG9yZGVyZWQgZnJvbSBtb3N0IHJlY2VudCBmaXJzdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0SGlzdG9yaWNhbEtleVR4XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X3R5cGV9L3ttYXRlcmlhbF9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBLZXkgYnkgTWF0ZXJpYWwgSURcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleSBieSBNYXRlcmlhbCBJRFxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIGtleS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRLZXlCeU1hdGVyaWFsSWRcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZXRyaWNzXCI6IHtcbiAgICAvKipcbiAgICAgKiBRdWVyeSBvcmcgbWV0cmljcy5cbiAgICAgKiBAZGVzY3JpcHRpb24gUXVlcnkgb3JnIG1ldHJpY3MuXG4gICAgICpcbiAgICAgKiBNZXRyaWNzIHN1bW1hcml6ZSB1c2FnZSBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIEN1YmVTaWduZXIgb3JnYW5pemF0aW9uIG92ZXIgdGltZS4gRm9yIGV4YW1wbGUsXG4gICAgICogeW91IGNhbiBjYWxsIHRoaXMgZW5kcG9pbnQgZmluZCBvdXQ6XG4gICAgICpcbiAgICAgKiAtIHRoZSBhdmVyYWdlIG51bWJlciBvZiBrZXlzIG92ZXIgdGhlIGxhc3QgbW9udGgsXG4gICAgICogLSB0aGUgYXZlcmFnZSBudW1iZXIgbW9udGhseSB1c2VycyBvdmVyIHRoZSBsYXN0IHllYXIsXG4gICAgICogLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBzaWduZWQgbGFzdCB3ZWVrLFxuICAgICAqIC0gaG93IHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IEFQSSByZXF1ZXN0cyB3YXMgdHJlbmRpbmcgZGF5LWJ5LWRheSBvdmVyIHRoZSBsYXN0IHdlZWsvbW9udGgveWVhciwgZXRjLlxuICAgICAqXG4gICAgICogRWFjaCBtZXRyaWMga2luZCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBkaW1lbnNpb25zLCB0byBmdXJ0aGVyIHNwZWNpZnkgdGhlIG9yZyBwcm9wZXJ0eSBpdCBkZXNjcmliZXMuXG4gICAgICogRm9yIGV4YW1wbGUsIHRoZSBgVXNlckNvdW50YCBtZXRyaWNzIGhhdmUgYSBtZW1iZXJzaGlwIGRpbWVuc2lvbnMgdG8gc3BlY2lmeSB0aGUga2luZCBvZiB1c2VyIG1lbWJlcnNoaXBcbiAgICAgKiBpbiB0aGUgb3JnYW5pemF0aW9uIChcIk93bmVyXCIgdnMuIFwiTWVtYmVyXCIgdnMuIFwiQWxpZW5cIikuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInF1ZXJ5TWV0cmljc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYVwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzIHRoYXQgYXJlIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbixcbiAgICAgKiBpLmUuLCB0aG9zZSBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHNlc3Npb24gaWRlbnRpdHkgcGx1cyB0aG9zZSBpbiB3aGljaCB0aGUgY3VycmVudCB1c2VyXG4gICAgICogaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibWZhTGlzdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1mYUdldFwiXTtcbiAgICAvKipcbiAgICAgKiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqXG4gICAgICogQXBwcm92ZSBvciByZWplY3QgcmVxdWVzdCBhZnRlciBsb2dnaW5nIGluIHdpdGggQ3ViZVNpZ25lci5cbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudGx5LWxvZ2dlZCB1c2VyIGFzIGFuIGFwcHJvdmVyXG4gICAgICogb2YgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IG9mIHRoZSBbU3RhdHVzOjpSZXF1aXJlZEFwcHJvdmVyc10ga2luZC4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZlxuICAgICAqIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0b1xuICAgICAqIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZUNzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L2VtYWlsXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBhbiBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhbiBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBFbWFpbCBPVFAuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1mYUVtYWlsSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSBhIEVtYWlsIE9UUCBNRkEgQXBwcm92YWwvUmVqZWN0aW9uLlxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIEVtYWlsIE9UUCBNRkEgQXBwcm92YWwvUmVqZWN0aW9uLlxuICAgICAqXG4gICAgICogVGhlIHJlcXVlc3Qgc2hvdWxkIGNvbnRhaW4gdGhlIGZ1bGwgSldUIG9idGFpbmVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlXG4gICAgICogcGFydGlhbCB0b2tlbiByZXR1cm5lZCBieSB0aGUgYG1mYV9lbWFpbF9pbml0YCBlbmRwb2ludCBhbmQgdGhlIHNpZ25hdHVyZVxuICAgICAqIGVtYWlsZWQgdG8gdGhlIHVzZXIgaXNzdWluZyB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyBhbiBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICogSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkO1xuICAgICAqIHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0byByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcIm1mYVZvdGVFbWFpbENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsL3JlamVjdGlvbiBwcm9jZXNzIG9mIGFuIE1GQSBSZXF1ZXN0IHVzaW5nIEZJRE8uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1mYUZpZG9Jbml0XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlRmlkb0NvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudCB1c2VyIGFzIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieVxuICAgICAqIHByb3ZpZGluZyBUT1RQIGNvZGUuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpc1xuICAgICAqIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlVG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21taS92My9tZXNzYWdlc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBwZW5kaW5nIE1NSSByZXF1ZXN0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHBlbmRpbmcgTU1JIHJlcXVlc3RzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTU1JIG1lc3NhZ2VzIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiBpZGVudGl0eSwgaS5lLixcbiAgICAgKiAtIGEgcm9sZSBzZXNzaW9uIGNhbiBhY2Nlc3Mgb25seSB0aGUgbWVzc2FnZXMgY3JlYXRlZCBieSB0aGF0IHJvbGVcbiAgICAgKiAtIGEgdXNlciBzZXNzaW9uIGNhbiBhY2Nlc3MgdGhlIG1lc3NhZ2VzIGNyZWF0ZWQgYnkgZWl0aGVyIHRoYXQgdXNlciBvciBhbnkgcm9sZSB3aGljaCB0aGUgdXNlciBpcyBhIG1lbWJlciBvZlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1taU1lc3NhZ2VMaXN0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbW1pL3YzL21lc3NhZ2VzL3ttc2dfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgYW4gTU1JIHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGFuIE1NSSByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYSBwZW5kaW5nIE1NSSByZXF1ZXN0IGJ5IGl0cyBJRC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJtbWlNZXNzYWdlR2V0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBNTUkgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gTU1JIHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFJlamVjdHMgYW4gZXhpc3RpbmcgTU1JIHJlcXVlc3QgYW5kIHRoZW4gZGVsZXRlcyBpdCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJtbWlNZXNzYWdlRGVsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbW1pL3YzL21lc3NhZ2VzL3ttc2dfaWR9L3JlamVjdFwiOiB7XG4gICAgLyoqXG4gICAgICogUmVqZWN0IGFuIE1NSSByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFJlamVjdCBhbiBNTUkgcmVxdWVzdFxuICAgICAqXG4gICAgICogUmVqZWN0cyBhIHBlbmRpbmcgTU1JIHJlcXVlc3QuIFRoZSByZWNvcmQgb2YgdGhlIE1NSSByZXF1ZXN0IGlzIGtlcHQgaW5cbiAgICAgKiB0aGUgZGF0YWJhc2UgdW50aWwgaXQgZXhwaXJlcyBvciBpcyBleHBsaWNpdGx5IGRlbGV0ZWQuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSB1cGRhdGVkIHJlcXVlc3QgaW5mb3JtYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1taU1lc3NhZ2VSZWplY3RcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tbWkvdjMvbWVzc2FnZXMve21zZ19pZH0vc2lnblwiOiB7XG4gICAgLyoqXG4gICAgICogQXBwcm92ZSBhbmQgc2lnbiBhbiBNTUkgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlIGFuZCBzaWduIGFuIE1NSSByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBTaWducyBhIHBlbmRpbmcgcmVxdWVzdCB0aGF0IHdhcyBnZW5lcmF0ZWQgdGhyb3VnaCB0aGUgTU1JIEpTT04gUlBDIGVuZHBvaW50LlxuICAgICAqIFRoZSBzaWduYXR1cmUgaXMgc3RvcmVkIHdpdGggdGhlIHBlbmRpbmcgbWVzc2FnZSBhbmQgdGhlIHVwZGF0ZWQgcmVxdWVzdCBpbmZvIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogVGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JnYW5pemF0aW9uIHRoaXMgaXMgY2FsbGVkIGZyb20sXG4gICAgICogYW5kIHRoZSB1c2VyIHNob3VsZCBiZSB0aGUgb3duZXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgbWVzc2FnZSdzIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wibW1pTWVzc2FnZVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vYXV0aDIvdHdpdHRlclwiOiB7XG4gICAgLyoqXG4gICAgICogTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAgICogQGRlc2NyaXB0aW9uIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBhY3RzIGlkZW50aWNhbGx5IHRvIFR3aXR0ZXIncyBbYG9hdXRoMi90b2tlbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLnR3aXR0ZXIuY29tL2VuL2RvY3MvYXV0aGVudGljYXRpb24vYXBpLXJlZmVyZW5jZS90b2tlbikgZW5kcG9pbnQsXG4gICAgICogYnV0IGV4dGVuZHMgdGhlIG91dHB1dCB3aXRoIGFuIGBpZF90b2tlbmAuXG4gICAgICpcbiAgICAgKiBUaGlzIGBpZF90b2tlbmAgY2FuIHRoZW4gYmUgdXNlZCB3aXRoIGFueSBDdWJlU2lnbmVyIGVuZHBvaW50IHRoYXQgcmVxdWlyZXMgYW4gT0lEQyB0b2tlbi5cbiAgICAgKlxuICAgICAqID4gWyFJTVBPUlRBTlRdXG4gICAgICogPiBUaGlzIGVuZHBvaW50IHdpbGwgZmFpbCB1bmxlc3MgdGhlIG9yZyBpcyBjb25maWd1cmVkIHRvIGFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90d2l0dGVyYCBhbmQgY2xpZW50IElEIGJlaW5nIHVzZWQgZm9yIFR3aXR0ZXIuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm9hdXRoMlR3aXR0ZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBMb2dpbiB3aXRoIE9JRENcbiAgICAgKiBAZGVzY3JpcHRpb24gTG9naW4gd2l0aCBPSURDXG4gICAgICpcbiAgICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBzaWduZXIgc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIE1GQSBpcyByZXF1aXJlZCB3aGVuOlxuICAgICAqIC0gYW4gTUZBIHBvbGljeSBpcyBleHBsaWNpdGx5IGF0dGFjaGVkIHRvIHRoZSB1c2VyIGxvZ2dpbmcgaW5cbiAgICAgKiAoZS5nLiwgYW4gb3JnIG93bmVyIGNhbiBkbyB0aGF0IGF0IHVzZXIgY3JlYXRpb24gdGltZSB0byByZXF1aXJlIGNlcnRhaW4ga2luZCBvZiBNRkEpXG4gICAgICogLSB0aGUgdXNlciBoYXMgYXQgbGVhc3QgMSBNRkEgZmFjdG9yIGNvbmZpZ3VyZWRcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2lkY0F1dGhcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vaWRjL2VtYWlsLW90cFwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgbG9naW4gdmlhIGVtYWlsIHRva2VuXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGxvZ2luIHZpYSBlbWFpbCB0b2tlblxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlIChvZiB0aGUgZm9ybSBgaGVhZGVyLnBheWxvYWQuYCksIGFuZCBzZW5kcyB0aGUgc2lnbmF0dXJlIHRvIHRoZSB1c2VyJ3MgZW1haWwuXG4gICAgICogQ2xpZW50IGFwcGxpY2F0aW9ucyBjYW4gcmVjb25zdHJ1Y3QgdGhlIHRva2VuIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGBwYXJ0aWFsX3Rva2VuYCB3aXRoIHRoZSBzaWduYXR1cmUsIHByb2R1Y2luZyBhIHZhbGlkIE9JREMgdG9rZW4gb2YgdGhlIGZvcm0gYGhlYWRlci5wYXlsb2FkLnNpZ25hdHVyZWBcbiAgICAgKiBUaGUgdG9rZW4gY2FuIHRoZW4gYmUgdXNlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKiA+IFshSU1QT1JUQU5UXVxuICAgICAqID4gRm9yIHRoaXMgZW5kcG9pbnQgdG8gc3VjY2VlZCwgdGhlIG9yZyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG86XG4gICAgICogPiAxLiBBbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvZW1haWwtb3RwYCBhbmQgY2xpZW50IElEIGJlaW5nIHRoZSBPcmcgSURcbiAgICAgKiA+IDIuIEhhdmUgYW4gZW1haWwgc2VuZGVyIGNvbmZpZ3VyZWQgZm9yIE9UUHNcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZW1haWxPdHBBdXRoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2lkYy9zaXdlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKS5cbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgbG9naW4gdmlhIFNpZ24taW4gV2l0aCBFdGhlcmV1bSAoU0lXRSkuXG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGdlbmVyYXRlcyBhIGNoYWxsZW5nZSB3aGljaCBjYW4gYmUgYW5zd2VyZWQgKHZpYSB0aGUgY29ycmVzcG9uZGluZyBQQVRDSCBlbmRwb2ludClcbiAgICAgKiB0byBvYnRhaW4gYW4gT0lEQyB0b2tlbi4gVGhlIE9JREMgdG9rZW4gY2FuIHRoZW4gYmUgZXhjaGFuZ2VkIGZvciBhIHVzZXIgc2Vzc2lvbiB2aWEgdGhlIHN0YW5kYXJkXG4gICAgICogT0lEQyBhdXRoIHJvdXRlLlxuICAgICAqXG4gICAgICogPiBbIUlNUE9SVEFOVF1cbiAgICAgKiA+IEZvciB0aGlzIGVuZHBvaW50IHRvIHN1Y2NlZWQsIHRoZSBvcmcgbXVzdCBiZSBjb25maWd1cmVkIHRvOlxuICAgICAqID4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3Npd2VgIHdpdGggdGhlIE9yZyBJRCBhcyB0aGUgY2xpZW50IElEXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNpd2VJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIENvbXBsZXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpXG4gICAgICpcbiAgICAgKiBJZiB0aGUgY2hhbGxlbmdlIChpc3N1ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgUE9TVCBlbmRwb2ludCkgaXMgYW5zd2VyZWQgY29ycmVjdGx5LCB0aGlzIGVuZHBvaW50XG4gICAgICogZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gdGhhdCBjYW4gdGhlbiBiZSBleGNoYW5nZWQgZm9yIGEgdXNlciBzZXNzaW9uIHZpYSB0aGUgc3RhbmRhcmQgT0lEQyBhdXRoIHJvdXRlLlxuICAgICAqXG4gICAgICogPiBbIUlNUE9SVEFOVF1cbiAgICAgKiA+IEZvciB0aGlzIGVuZHBvaW50IHRvIHN1Y2NlZWQsIHRoZSBvcmcgbXVzdCBiZSBjb25maWd1cmVkIHRvOlxuICAgICAqID4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3Npd2VgIHdpdGggdGhlIE9yZyBJRCBhcyB0aGUgY2xpZW50IElEXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJzaXdlQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vaWRjL3RlbGVncmFtXCI6IHtcbiAgICAvKipcbiAgICAgKiBBbGxvd3MgYSB1c2VyIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIHRoZSB0ZWxlZ3JhbSBBUEkgdXNpbmcgdGhlIHRnV2ViQXBwRGF0YSB2YWx1ZVxuICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgYSB1c2VyIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIHRoZSB0ZWxlZ3JhbSBBUEkgdXNpbmcgdGhlIHRnV2ViQXBwRGF0YSB2YWx1ZVxuICAgICAqIFRoZSB0b2tlbiBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgICAqIC0gVGhlIGBzdWJgIGZpZWxkIGlzIHRoZSB0ZWxlZ3JhbSB1c2VyIElEXG4gICAgICogLSBUaGUgYGlzc2AgZmllbGQgZGVwZW5kcyBvbiB0aGUgY2hvc2VuIGVudmlyb25tZW50OlxuICAgICAqIC0gYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90ZWxlZ3JhbS9wcm9kdWN0aW9uYCBmb3IgdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcbiAgICAgKiAtIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdGVsZWdyYW0vdGVzdGAgZm9yIHRoZSB0ZXN0IGVudmlyb25tZW50XG4gICAgICogLSBUaGUgYGF1ZGAgZmllbGQgaXMgdGhlIHByb3ZpZGVkIHRlbGVncmFtIGJvdCBJRFxuICAgICAqIC0gVGhlIGBleHBgIGZpZWxkIGlzIGRlcml2ZWQgZnJvbSB0aGUgYGF1dGhfZGF0ZWAgZmllbGQgaW4gdGhlIHRlbGVncmFtIGRhdGFcbiAgICAgKlxuICAgICAqIEZhaWxzIGlmIHRoZSB0ZWxlZ3JhbSBkYXRhIGlzIGludmFsaWQgb3IgdGhlIHNpZ25hdHVyZSBpcyBpbnZhbGlkXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInRlbGVncmFtQXV0aFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L29yZ3NcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIE9yZ1xuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBvcmdhbml6YXRpb24uIFRoZSBuZXcgb3JnIGlzIGEgY2hpbGQgb2YgdGhlXG4gICAgICogY3VycmVudCBvcmcgYW5kIGluaGVyaXRzIGl0cyBrZXktZXhwb3J0IHBvbGljeS4gVGhlIG5ldyBvcmdcbiAgICAgKiBpcyBjcmVhdGVkIHdpdGggb25lIG93bmVyLCB0aGUgY2FsbGVyIG9mIHRoaXMgQVBJLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVPcmdcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBQb2xpY2llc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBvbGljaWVzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBwb2xpY2llcyBpbiB0aGUgT3JnLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RQb2xpY2llc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBQb2xpY3lcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgbmFtZWQgcG9saWN5IGluIHRoZSBvcmdhbml6YXRpb24uIFRoZSB1c2VyIG1ha2luZyB0aGUgcmVxdWVzdCBpcyB0aGVcbiAgICAgKiBvd25lciBvZiB0aGUgcG9saWN5LCBnaXZpbmcgdGhlbSBlZGl0IGFjY2VzcyB0byB0aGUgcG9saWN5IGFsb25nIHdpdGggdGhlIG9yZyBvd25lcnMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVBvbGljeVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljaWVzL3twb2xpY3lfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBQb2xpY3lcbiAgICAgKlxuICAgICAqIERlbGV0ZSB0aGUgbmFtZWQgcG9saWN5IHdpdGggdGhlIGdpdmVuIG5hbWUgb3IgaWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlUG9saWN5XCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBQb2xpY3lcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFBvbGljeVxuICAgICAqXG4gICAgICogVXBkYXRlcyB0aGUgcG9saWN5IHdpdGggdGhlIGdpdmVuIG5hbWUgb3IgaWQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVQb2xpY3lcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llcy97cG9saWN5X2lkfS9sb2dzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgUG9saWN5IExvZ3NcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFBvbGljeSBMb2dzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBsb2dzIGZvciB0aGUgZ2l2ZW4gcG9saWN5LCB3aXRoaW4gdGhlIGdpdmVuIHRpbWVmcmFtZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZ2V0UG9saWN5TG9nc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljaWVzL3twb2xpY3lfaWR9L3t2ZXJzaW9ufVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgUG9saWN5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBvciBsYXRlc3Qgb2YgYSBuYW1lZCBwb2xpY3kgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBvciBpZC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRQb2xpY3lcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llcy97cG9saWN5X2lkfS97dmVyc2lvbn0vaW52b2tlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbnZva2UgUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIEludm9rZSBQb2xpY3lcbiAgICAgKlxuICAgICAqIEludm9rZXMgdGhlIFtOYW1lZFBvbGljeV0gd2l0aCB0aGUgZ2l2ZW4gSUQgd2l0aCB0aGUgZ2l2ZW4gcmVxdWVzdCBpbmZvcm1hdGlvbi5cbiAgICAgKiBJdCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgV2FzbSBwb2xpY2llcy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52b2tlUG9saWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L2J1Y2tldHNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgQnVja2V0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEJ1Y2tldHNcbiAgICAgKlxuICAgICAqIExpc3QgYXZhaWxhYmxlIG1ldGEgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHBvbGljeSBLViBzdG9yZSBidWNrZXRzIGluIHRoZSBvcmcuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFBvbGljeUJ1Y2tldHNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY3kvYnVja2V0cy97YnVja2V0X25hbWV9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgQnVja2V0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBCdWNrZXRcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIG1ldGEgaW5mb3JtYXRpb24gb2YgYSBwb2xpY3kgS1Ygc3RvcmUgYnVja2V0LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFBvbGljeUJ1Y2tldFwiXTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgQnVja2V0XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBCdWNrZXRcbiAgICAgKlxuICAgICAqIFVwZGF0ZXMgbWV0YSBpbmZvcm1hdGlvbiBmb3IgYW4gZXhpc3RpbmcgcG9saWN5IEtWIHN0b3JlIGJ1Y2tldC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZVBvbGljeUJ1Y2tldFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljeS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUG9saWN5IEltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFBvbGljeSBJbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3IgZW5jcnlwdGluZyBkYXRhIHJlbGF0ZWQgdG8gV2FzbVxuICAgICAqIHBvbGljaWVzIChlLmcuLCBwb2xpY3kgc2VjcmV0cykuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY3JlYXRlUG9saWN5SW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L3NlY3JldHNcIjoge1xuICAgIC8qKlxuICAgICAqIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgdGhlIGtleXMgZm9yIHRoZSBzZWNyZXRzLCBvbWl0dGluZyB0aGUgdmFsdWVzLlxuICAgICAqIFRoZSB2YWx1ZXMgYXJlIHNlY3JldCBhbmQgYXJlIG5vdCBhY2Nlc3NpYmxlIG91dHNpZGUgV2FzbSBwb2xpY3kgZXhlY3V0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFBvbGljeVNlY3JldHNcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIG9yZy1sZXZlbCBwb2xpY3kgc2VjcmV0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgb3JnLWxldmVsIHBvbGljeSBzZWNyZXRzXG4gICAgICpcbiAgICAgKiBUaGUgcHJvdmlkZWQgc2VjcmV0cyB3aWxsIHJlcGxhY2UgYW55IGV4aXN0aW5nIG9yZy1sZXZlbCBzZWNyZXRzLlxuICAgICAqIEl0IGZhaWxzIGlmIHRoZSBzZWNyZXRzIHdlcmVuJ3QgcHJldmlvdXNseSBjcmVhdGVkLlxuICAgICAqXG4gICAgICogTXVzdCBiZSBwZXJtaXR0ZWQgYnkgdGhlIHBvbGljeSBzZWNyZXQncyBlZGl0IHBvbGljeSBpZiBzZXQsIGFuZCB0aGUgb3JnJ3MgZWRpdCBwb2xpY3kgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlUG9saWN5U2VjcmV0c1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljeS9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAgICogTXVzdCBiZSBwZXJtaXR0ZWQgYnkgdGhlIHBvbGljeSBzZWNyZXQncyBlZGl0IHBvbGljeSBpZiBzZXQsIGFuZCB0aGUgb3JnJ3MgZWRpdCBwb2xpY3kgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcInNldFBvbGljeVNlY3JldFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldC5cbiAgICAgKiBNdXN0IGJlIHBlcm1pdHRlZCBieSB0aGUgcG9saWN5IHNlY3JldCdzIGVkaXQgcG9saWN5IGlmIHNldCwgYW5kIHRoZSBvcmcncyBlZGl0IHBvbGljeSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlUG9saWN5U2VjcmV0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L3dhc21cIjoge1xuICAgIC8qKlxuICAgICAqIFVwbG9hZCBXYXNtIFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGxvYWQgV2FzbSBQb2xpY3lcbiAgICAgKlxuICAgICAqIFJldHVybnMgYSBzaWduZWQgVVJMIGZvciB1cGxvYWRpbmcgYSB3YXNtIHBvbGljeSB0byBDdWJlU2lnbmVyLiBUaGUgcG9saWN5IHdpbGwgYmVcbiAgICAgKiBkZWxldGVkIGlmIG5vdCBhdHRhY2hlZCB0byBhIFtOYW1lZFBvbGljeV0gc29vbiBhZnRlciB0aGUgdXBsb2FkIGhhcyBiZWVuIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXBsb2FkV2FzbVBvbGljeVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFJvbGVzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZXNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uIHRoYXQgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIGFjY2Vzcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZXNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFJvbGVcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uIFVubGVzcyB0aGUgbG9nZ2VkLWluIHVzZXJcbiAgICAgKiBpcyB0aGUgb3duZXIsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFJvbGVcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0Um9sZVwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUm9sZVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLlxuICAgICAqXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgcm9sZSAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVgIHNjb3BlKS5cbiAgICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5YCBzY29wZSkuXG4gICAgICogVXBkYXRlcyB0aGUgcm9sZSdzIGVkaXQgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6ZWRpdFBvbGljeWAgc2NvcGUpLlxuICAgICAqXG4gICAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9hZGRfa2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIEtleXNcbiAgICAgKlxuICAgICAqIEFkZHMgYSBsaXN0IG9mIGV4aXN0aW5nIGtleXMgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgb3duZXIgaXMgYWxsb3dlZCB0byBhZGQgdGhlaXIga2V5IHRvIGFueSByb2xlIHRoYXQgdGhleSBhcmUgaW4uXG4gICAgICpcbiAgICAgKiBJbiBcIm9yZyBjdXN0b2R5XCIgbW9kZWwgb25seSwgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBhZGQgYW55IGtleSB0byBhbnkgcm9sZS5cbiAgICAgKlxuICAgICAqIEluIGFsbCBjYXNlczogdGhlIHJvbGUncyBlZGl0IHBvbGljeSwgYXMgd2VsbCBhcyB0aGUgZWRpdCBwb2xpY3kgb2YgZWFjaCBvZiB0aGUga2V5cywgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKlxuICAgICAqIEVhY2ggcmVxdWVzdCB0byB0aGlzIGVuZHBvaW50IGNhbiBhZGQsIGF0IG1heGltdW0sIDMyIGtleXMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiYWRkS2V5c1RvUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9hZGRfdXNlci97dXNlcl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEFkZCBVc2VyXG4gICAgICogQGRlc2NyaXB0aW9uIEFkZCBVc2VyXG4gICAgICpcbiAgICAgKiBBZGRzIGFuIGV4aXN0aW5nIHVzZXIgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gYWRkIHVzZXJzIHRvIGEgcm9sZS5cbiAgICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJhZGRVc2VyVG9Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2F0dGVzdFwiOiB7XG4gICAgLyoqXG4gICAgICogQXR0ZXN0IHRvIFJvbGUgUHJvcGVydGllc1xuICAgICAqIEBkZXNjcmlwdGlvbiBBdHRlc3QgdG8gUm9sZSBQcm9wZXJ0aWVzXG4gICAgICpcbiAgICAgKiBUaGUgcmVzcG9uc2UgaXMgYSBKV1Qgd2hvc2UgY2xhaW1zIGFyZSB0aGUgcmVxdWVzdGVkIHJvbGUgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhdHRlc3RSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZSBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBLZXlzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBrZXlzIGluIGEgcm9sZS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZUtleXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0va2V5cy97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IGEgS2V5IGluIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGEgS2V5IGluIFJvbGVcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIGtleS1pbi1yb2xlIGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIGtleSBhbmQgcm9sZS4gSWYgYGRldGFpbHNgIGlzIHNldCB0byBgdHJ1ZWAsXG4gICAgICogdGhpcyBlbmRwb2ludCByZXR1cm5zIGRldGFpbGVkIGtleSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRSb2xlS2V5XCJdO1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIEtleVxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGtleSBmcm9tIGEgcm9sZS5cbiAgICAgKlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIGtleXMgZnJvbSBhIHJvbGUuXG4gICAgICogQWRkaXRpb25hbGx5LCBib3RoIHRoZSByb2xlJ3MgYW5kIHRoZSBrZXkncyBlZGl0IHBvbGljeSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZUtleUZyb21Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3Rva2Vuc1wiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFRva2VuXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBUb2tlblxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBhY2Nlc3MgdG9rZW4gZm9yIGEgZ2l2ZW4gcm9sZSAodG8gYmUgdXNlZCBhcyBcIkFQSSBLZXlcIiBmb3IgYWxsIHNpZ25pbmcgYWN0aW9ucykuXG4gICAgICogVGhlIGByZXN0cmljdGVkX2FjdGlvbnNgIGZpZWxkIG9uIHRoZSBbUm9sZV0gZGV0ZXJtaW5lcyB0aGUgbWVtYmVyc2hpcCByb2xlIHRoYXQgaXMgcmVxdWlyZWQgdG9cbiAgICAgKiBjcmVhdGUgdG9rZW5zLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlVG9rZW5cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdHhcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgICAqXG4gICAgICogUmV0dXJucyBhIHNvcnRlZCwgcGFnaW5hdGVkIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIHNpZ25lZCBieSB0aGUgZ2l2ZW4gcm9sZSxcbiAgICAgKiBvcmRlcmVkIGZyb20gbW9zdCByZWNlbnQgZmlyc3QuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdEhpc3RvcmljYWxSb2xlVHhcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdXNlcnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZSBVc2Vycy5cbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIFVzZXJzLlxuICAgICAqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdXNlcnMgd2hvIGhhdmUgYWNjZXNzIHRvIGEgcm9sZS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZVVzZXJzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3VzZXJzL3t1c2VyX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogUmVtb3ZlIFVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIFVzZXJcbiAgICAgKlxuICAgICAqIFJlbW92ZXMgYW4gZXhpc3RpbmcgdXNlciBmcm9tIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAgICpcbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSB1c2VycyBmcm9tIGEgcm9sZS5cbiAgICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZW1vdmVVc2VyRnJvbVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9ycGNcIjoge1xuICAgIC8qKlxuICAgICAqIEhpZ2gtbGV2ZWwgUlBDIGVuZHBvaW50LlxuICAgICAqIEBkZXNjcmlwdGlvbiBIaWdoLWxldmVsIFJQQyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicnBjQXBpXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc2Vzc2lvblwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBzZXNzaW9uc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHNlc3Npb25zXG4gICAgICpcbiAgICAgKiBJZiBubyBxdWVyeSBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZCwgYWxsIGFjdGl2ZSBzZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnQgdXNlciBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBJZiBhIGByb2xlYCBxdWVyeSBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQsIGFsbCBhY3RpdmUgc2Vzc2lvbnMgZm9yIHRoZSBzZWxlY3RlZCByb2xlIGFyZSByZXR1cm5lZFxuICAgICAqIChhc3NlcnRpbmcgZmlyc3QgdGhhdCB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9ucyB0byByZWFkIHNlc3Npb25zIGZvciB0aGF0IHJvbGUpLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RTZXNzaW9uc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgc2Vzc2lvbiwgc2lsZW50bHkgdHJ1bmNhdGluZyByZXF1ZXN0ZWQgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZXMgdG8gYmUgYXRcbiAgICAgKiBtb3N0IHJlcXVlc3RvcidzIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWUsIHJlc3BlY3RpdmVseS4gVG8gZXh0ZW5kIHRoZSByZXF1ZXN0ZWQgbGlmZXRpbWVzIHBhc3RcbiAgICAgKiB0aGUgcmVxdWVzdG9yJ3MsIHNldCB0aGUgYGV4dGVuZF9saWZldGltZXNgIGZsYWcgaW4gdGhlIHJlcXVlc3QgYm9keSAoaW4gd2hpY2ggY2FzZSBNRkEgd2lsbFxuICAgICAqIGJlIHJlcXVpcmVkKS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlU2Vzc2lvblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBBTEwgZXhpc3RpbmcgdXNlciBvciByb2xlIHNlc3Npb24ocylcbiAgICAgKlxuICAgICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgZXhpc3Rpbmcgc2Vzc2lvbnMsIHByZXZlbnRpbmcgdGhlbSBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkLlxuICAgICAqXG4gICAgICogSWYgbm8gcXVlcnkgcGFyYW1zIGFyZSBwcm92aWRlZCwgKipBTEwqKiBzZXNzaW9ucyBmb3IgdGhlICoqQ1VSUkVOVCBVU0VSKiogYXJlIHJldm9rZWRcbiAgICAgKiAodG8gcmV2b2tlIGp1c3QgdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uLCB1c2UgYERFTEVURSAvdjAvb3JnLzxvcmdfaWQ+L3Nlc3Npb24vc2VsZmApXG4gICAgICpcbiAgICAgKiBJZiBhIGByb2xlYCBxdWVyeSBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQsICoqQUxMKiogc2Vzc2lvbiBmb3IgKipUSEFUIFJPTEUqKiBhcmUgcmV2b2tlZFxuICAgICAqIChpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9ucyB0byByZXZva2Ugc2Vzc2lvbnMgZm9yIHRoZSByb2xlKS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VTZXNzaW9uc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb24vc2VsZlwiOiB7XG4gICAgLyoqXG4gICAgICogUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIHRoZSBjdXJyZW50IHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZUN1cnJlbnRTZXNzaW9uXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc2Vzc2lvbi97c2Vzc2lvbl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0U2Vzc2lvblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgYSBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBhIHNlc3Npb25cbiAgICAgKlxuICAgICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgYW4gZXhpc3Rpbmcgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlU2Vzc2lvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3NvbGFuYS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgU29sYW5hIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wic29sYW5hU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3N1aS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIGEgc2VyaWFsaXplZCBTVUkgdHJhbnNhY3Rpb24uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gYSBzZXJpYWxpemVkIFNVSSB0cmFuc2FjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzdWlTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdGVuZGVybWludC9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIGEgdGVuZGVybWludCBtZXNzYWdlLlxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgdGVuZGVybWludCBtZXNzYWdlLlxuICAgICAqXG4gICAgICogU2lnbnMgdGhlIGdpdmVuIGJhc2UtNjQgZW5jb2RlZCB2b3RlIG9yIHByb3Bvc2FsIHdpdGggdGhlIGdpdmVuIHRlbmRlcm1pbnQga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ0ZW5kZXJtaW50U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Rva2VuL2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFRva2VuLUFjY2Vzc2libGUgS2V5c1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIHRoZSBrZXlzIHRoYXQgYSB1c2VyIG9yIHJvbGUgc2Vzc2lvbiBjYW4gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RUb2tlbktleXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lXCI6IHtcbiAgICAvKipcbiAgICAgKiBVc2VyIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhYm91dE1lXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9lbWFpbFwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgUmVzZXQgVmVyaWZpZWQgRW1haWwgRmxvd1xuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJSZXNldEVtYWlsSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSBhIFJlc2V0IFZlcmlmaWVkIEVtYWlsIEZsb3dcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyUmVzZXRFbWFpbENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9leHBvcnRcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRMaXN0XCJdO1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFRoaXMgc3RhcnRzIGEgZGVsYXkgKHdob3NlIGxlbmd0aCBpcyBkZXRlcm1pbmVkIGJ5IE9yZy13aWRlIHNldHRpbmdzKVxuICAgICAqIGJlZm9yZSBleHBvcnQgY2FuIGJlIGNvbXBsZXRlZCwgYW5kIHJldHVybnMgYSB0aWNrZXQgdGhhdCBjYW4gYmUgdXNlZFxuICAgICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAgICpcbiAgICAgKiBPbmx5IG9uZSB1c2VyLWV4cG9ydCByZXF1ZXN0IGNhbiBiZSBhY3RpdmUgZm9yIGEgZ2l2ZW4ga2V5LiBJZiB0aGVyZVxuICAgICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICAgKiBjcmVhdGUgYSBuZXcgcmVxdWVzdCwgZmlyc3QgZGVsZXRlIHRoZSBleGlzdGluZyBvbmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckV4cG9ydERlbGV0ZVwiXTtcbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICAgKiB0aGUgYHVzZXJfZXhwb3J0X2luaXRgIEFQSSwgYW5kIG9ubHkgd2l0aGluIHRoZSBzdWJzZXF1ZW50IGV4cG9ydCB3aW5kb3dcbiAgICAgKiAoaS5lLiwgYWZ0ZXIgdGhlIGV4cG9ydCBkZWxheSBoYXMgcGFzc2VkIGFuZCBiZWZvcmUgdGhlIHJlcXVlc3QgaGFzIGV4cGlyZWQpLlxuICAgICAqXG4gICAgICogVG8gY2hlY2sgb24gdGhlIHN0YXR1cyBvZiBhbiBleHBvcnQgcmVxdWVzdCwgc2VlIHRoZSBgdXNlcl9leHBvcnRfbGlzdGAgQVBJLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlckV4cG9ydENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleS5cbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXkuXG4gICAgICpcbiAgICAgKiBJZiBhIGRpc2NvdmVyYWJsZSBrZXkgaXMgcmVxdWVzdGVkLCB1c2VyIHZlcmlmaWNhdGlvbiAoUElOKSBpcyByZXF1aXJlZC5cbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVnaXN0ZXJGaWRvSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkby97Zmlkb19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgRklETyBrZXlcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSBGSURPIGtleSBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgdGhlIGtleSBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckRlbGV0ZUZpZG9cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgICAqXG4gICAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVzZXRUb3RwSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgVE9UUFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgVE9UUFxuICAgICAqXG4gICAgICogRGVsZXRlcyBUT1RQIGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiBUT1RQIGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJ1c2VyRGVsZXRlVG90cFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlclJlc2V0VG90cENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwL3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJWZXJpZnlUb3RwXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAgICpcbiAgICAgKiBJZiBhIHF1ZXJ5IGlzIGRlZmluZWQsIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG9ubHkgdGhlIHVzZXJzIHdob3NlIG5hbWUgb3JcbiAgICAgKiBlbWFpbCBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcuIE5PVEUgdGhhdCBpZiBwYWdpbmF0aW9uIGlzIHVzZWQgYW5kIGEgcGFnZVxuICAgICAqIGxpbWl0IGlzIHNldCwgdGhlIHJldHVybmVkIHJlc3VsdCBzZXQgbWF5IGNvbnRhaW4gRkVXRVIgZWxlbWVudHMgdGhhbiB0aGVcbiAgICAgKiByZXF1ZXN0ZWQgcGFnZSBsaW1pdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0VXNlcnNJbk9yZ1wiXTtcbiAgICAvKipcbiAgICAgKiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZU9pZGNVc2VyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMvZW1haWwve2VtYWlsfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IHVzZXIgYnkgZW1haWwuXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCB1c2VyIGJ5IGVtYWlsLlxuICAgICAqXG4gICAgICogVGhlIHNlYXJjaCBpbmNsdWRlcyBhbGwgdXNlcnMgYW5kIHRoZWlyIHRoaXJkLXBhcnR5IGlkZW50aXRpZXMuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0VXNlckluT3JnQnlFbWFpbFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlT2lkY1VzZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vycy9vaWRjL3tpc3N9L3tzdWJ9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgYSB1c2VyIGJ5IHRoZWlyIE9JREMgaWRlbnRpdHlcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGEgdXNlciBieSB0aGVpciBPSURDIGlkZW50aXR5XG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYSB1c2VyIGluIHRoZSBvcmdhbml6YXRpb24gYnkgdGhlaXIgT0lEQyBpc3N1ZXIgYW5kIHN1YmplY3QuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0VXNlckluT3JnQnlPaWRjXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMvcmVzZXRfbWZhXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIE1GQSByZXNldCBmb3IgdXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIE1GQSByZXNldCBmb3IgdXNlclxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJyZXNldE1lbWJlck1mYVwiXTtcbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSBNRkEgcmVzZXQgZm9yIHVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJjb21wbGV0ZVJlc2V0TWVtYmVyTWZhXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMve3VzZXJfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgdXNlciBieSBpZFxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBpZFxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFVzZXJJbk9yZ1wiXTtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZVVzZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vycy97dXNlcl9pZH0vbWVtYmVyc2hpcFwiOiB7XG4gICAgLyoqXG4gICAgICogVXBkYXRlIGEgdXNlcidzIG1lbWJlcnNoaXAgaW4gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgYSB1c2VyJ3MgbWVtYmVyc2hpcCBpbiB0aGUgb3JnXG4gICAgICpcbiAgICAgKiBFbmFibGUvZGlzYWJsZSBhbm90aGVyIHVzZXIgaW4gdGhlIG9yZywgb3IgY2hhbmdlIHRoZWlyIG1lbWJlcnNoaXAgcm9sZS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZVVzZXJNZW1iZXJzaGlwXCJdO1xuICB9O1xuICBcIi92MC9wYXNza2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBMb2dpbiB3aXRoIFBhc3NrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAgICpcbiAgICAgKiBUaGUgcmVzcG9uc2UgY29udGFpbnMgYSBGSURPIGNoYWxsZW5nZSB0aGF0IHRoZSBjbGllbnQgbXVzdCBhbnN3ZXIgd2l0aCBhbnkgb2YgdGhlaXJcbiAgICAgKiBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuICBUaGUgYW5zd2VyIHNob3VsZCBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBQQVRDSCByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJwYXNza2V5QXV0aEluaXRcIl07XG4gICAgLyoqXG4gICAgICogQ29tcGxldGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgICAqXG4gICAgICogVGhlIHJlcXVlc3Qgc2hvdWxkIGNvbnRhaW4gYW4gYW5zd2VyIHRvIHRoZSBjaGFsbGVuZ2UgaXNzdWVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFBPU1QgcmVxdWVzdC5cbiAgICAgKiBUaGUgY2hhbGxlbmdlIG1heSBiZSBhbnN3ZXJlZCB3aXRoIGFueSBvZiB0aGUgdXNlcidzIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFsczsgaWYgdGhlIGNyZWRlbnRpYWxcbiAgICAgKiBpbmNsdWRlZCBpbiB0aGUgYW5zd2VyIGlzIHJlZ2lzdGVyZWQgd2l0aCBhIHVzZXIgYW5kIGFuIG9yZ2FuaXphdGlvbiwgdGhlIHJlc3BvbnNlIHdpbGwgY29udGFpblxuICAgICAqIGEgQ3ViZVNpZ25lciBzZXNzaW9uICh3aXRoIHRoZSBwYXJhbWV0ZXJzIHN1cHBsaWVkIGluIHRoZSBwcmV2aW91cyBQT1NUIHJlcXVlc3QpIGZvciB0aGF0IHVzZXJcbiAgICAgKiBpbiB0aGF0IG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInBhc3NrZXlBdXRoQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvbWUvZmlkb1wiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQT1NUIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicmVnaXN0ZXJGaWRvSW5pdExlZ2FjeVwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBERVBSRUNBVEVELiBVc2UgYFBBVENIIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0NvbXBsZXRlTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQT1NUIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAgICpcbiAgICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlc2V0VG90cEluaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQQVRDSCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cGAgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInJlc2V0VG90cENvbXBsZXRlTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL3RvdHAvdmVyaWZ5XCI6IHtcbiAgICAvKipcbiAgICAgKiBWZXJpZnkgVE9UUFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAgICpcbiAgICAgKiBERVBSRUNBVEVELiBVc2UgYFBPU1QgL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHAvdmVyaWZ5YCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widmVyaWZ5VG90cExlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9vcmdzXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYWxsIHRoZSBvcmdzIHRoZSB1c2VyIGlzIGEgcGFydCBvZlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYWxsIHRoZSBvcmdzIHRoZSB1c2VyIGlzIGEgcGFydCBvZlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcInVzZXJPcmdzXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vYmxvYi9zaWduL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFJhdyBCbG9iXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gUmF3IEJsb2JcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIGFyYml0cmFyeSBibG9iIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICpcbiAgICAgKiAtIEVDRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgYXMgYmlnLWVuZGlhbiByIGFuZCBzIHBsdXMgcmVjb3ZlcnktaWRcbiAgICAgKiBieXRlIHYsIHdoaWNoIGNhbiBpbiBnZW5lcmFsIHRha2UgYW55IG9mIHRoZSB2YWx1ZXMgMCwgMSwgMiwgb3IgMy5cbiAgICAgKlxuICAgICAqIC0gRWREU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBpbiB0aGUgc3RhbmRhcmQgZm9ybWF0LlxuICAgICAqXG4gICAgICogLSBCTFMgc2lnbmF0dXJlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGUgYmxvYi1zaWduIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJibG9iU2lnblwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2N1YmUzc2lnbmVyL2hlYXJ0YmVhdFwiOiB7XG4gICAgLyoqXG4gICAgICogUmVjb3JkIGhlYXJ0YmVhdFxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWNvcmQgaGVhcnRiZWF0XG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGlzIGNhbGxlZCBieSB0aGUgY3ViZTNzaWduZXIgcHJveHkgdG8gcmVjb3JkIHZhcmlvdXMgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjdWJlM3NpZ25lckhlYXJ0YmVhdFwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFVk0gVHJhbnNhY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFVk0gVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIEV0aGVyZXVtIChhbmQgb3RoZXIgRVZNKSB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKiBSZXR1cm5zIGFuIFJMUC1lbmNvZGVkIHRyYW5zYWN0aW9uIHdpdGggRUlQLTE1NSBzaWduYXR1cmUuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZXRoMVNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBWYWxpZGF0b3IgUmVxdWVzdFxuICAgICAqXG4gICAgICogU2lnbnMgYW4gZXRoMiB2YWxpZGF0b3IgcmVxdWVzdCB3aXRoIGEgZ2l2ZW4gQkxTIGtleS5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJldGgyU2lnblwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDIvc3Rha2VcIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgZGVwb3NpdCB0cmFuc2FjdGlvbiB3aXRoIGEgYHZhbGlkYXRvcl9rZXlgLiBJZiBgdmFsaWRhdG9yX2tleWAgaXMgc2V0IHRvIGEgcHJlZ2VuZXJhdGVkIGtleSwgd2UgdXNlIHRoZVxuICAgICAqIHByb3ZpZGVkIHZhbGlkYXRvciBrZXkuIE90aGVyd2lzZSwgd2UgZ2VuZXJhdGUgYSBuZXcgQkxTIGtleS5cbiAgICAgKlxuICAgICAqIFdoZW4gdXNpbmcgYSBwcmVnZW5lcmF0ZWQga2V5LCB0aGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2VcbiAgICAgKiBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzdGFrZVwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDIvdW5zdGFrZS97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIEhhbmRsZSB1bnN0YWtpbmcgcmVxdWVzdCwgcHJvZHVjaW5nIGEgc2lnbmVkIHZvbHVudGFyeSBleGl0IG1lc3NhZ2VcbiAgICAgKiB0aGF0IGNhbiBiZSBwb3N0ZWQgZGlyZWN0bHkgdG8gdGhlIEJlYWNvbiBjaGFpbi5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1bnN0YWtlXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vdG9rZW4vcmVmcmVzaFwiOiB7XG4gICAgLyoqXG4gICAgICogUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJzaWduZXJTZXNzaW9uUmVmcmVzaFwiXTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgd2ViaG9va3MgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgY29tcG9uZW50cyB7XG4gIHNjaGVtYXM6IHtcbiAgICBBY2NlcHRlZFJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEaWZmZXJlbnQgcmVzcG9uc2VzIHdlIHJldHVybiBmb3Igc3VjY2VzcyBzdGF0dXMgY29kZXMuICovXG4gICAgQWNjZXB0ZWRWYWx1ZTogT25lT2Y8XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBTaWduRHJ5UnVuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25EcnlSdW5BcmdzXCJdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQmluYW5jZURyeVJ1bjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlRHJ5UnVuQXJnc1wiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIE1mYVJlcXVpcmVkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVpcmVkQXJnc1wiXTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEFjY2VwdGVkVmFsdWVDb2RlOiBcIlNpZ25EcnlSdW5cIiB8IFwiQmluYW5jZURyeVJ1blwiIHwgXCJNZmFSZXF1aXJlZFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdobyBjb250cm9scyB0aGUga2V5cyB3aXRoaW4gYW4gb3JnXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBY2Nlc3NNb2RlbDogXCJVc2VyXCIgfCBcIk9yZ1wiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPbmUgYXNzZXQgYmFsYW5jZSBlbnRyeSBpbiBbYEFjY291bnRJbmZvUmVzcG9uc2U6OmJhbGFuY2VzYF0uIERpc3RpbmN0IGZyb21cbiAgICAgKiBbYFN1YkFjY291bnRBc3NldGBdIGJlY2F1c2UgdGhlIHNwb3QtYWNjb3VudCBzY2hlbWEgbGFja3MgdGhlIGBmcmVlemVgIGFuZFxuICAgICAqIGB3aXRoZHJhd2luZ2AgZmllbGRzLlxuICAgICAqL1xuICAgIEFjY291bnRCYWxhbmNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFzc2V0IHN5bWJvbCAoZS5nLiBgXCJVU0RUXCJgLCBgXCJCVENcImApLiAqL1xuICAgICAgYXNzZXQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIGJhbGFuY2UuICovXG4gICAgICBmcmVlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhbGFuY2UgbG9ja2VkIGluIG9wZW4gb3JkZXJzLiAqL1xuICAgICAgbG9ja2VkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYEdFVCAvYXBpL3YzL2FjY291bnRgLlxuICAgICAqXG4gICAgICogUmV0dXJucyBTcG90IGFjY291bnQgaW5mbyBmb3Igd2hpY2hldmVyIGFjY291bnQgdGhlIHNpZ25pbmcga2V5XG4gICAgICogYXV0aGVudGljYXRlcyBhcyAobWFzdGVyIG9yIHN1YikuXG4gICAgICovXG4gICAgQWNjb3VudEluZm9SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBgdHJ1ZWAsIHRoZSByZXNwb25zZSBvbWl0cyBhc3NldHMgd2l0aCBhbGwtemVybyBiYWxhbmNlcy4gRGVmYXVsdHMgdG9cbiAgICAgICAqIGBmYWxzZWAgKEJpbmFuY2UncyBkZWZhdWx0KS5cbiAgICAgICAqL1xuICAgICAgb21pdFplcm9CYWxhbmNlcz86IGJvb2xlYW4gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSBmb3IgW2BCaW5hbmNlTWFuYWdlcjo6YWNjb3VudF9pbmZvYF0uICovXG4gICAgQWNjb3VudEluZm9SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBY2NvdW50IHR5cGUsIGUuZy4gYFwiU1BPVFwiYC4gTGVmdCBhcyBgU3RyaW5nYCBmb3IgZm9yd2FyZCBjb21wYXRpYmlsaXR5LiAqL1xuICAgICAgYWNjb3VudFR5cGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT25lIGVudHJ5IHBlciBhc3NldC4gQWZmZWN0ZWQgYnkgdGhlIGBvbWl0X3plcm9fYmFsYW5jZXNgIHJlcXVlc3QgZmxhZy4gKi9cbiAgICAgIGJhbGFuY2VzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY291bnRCYWxhbmNlXCJdW107XG4gICAgICBicm9rZXJlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICBidXllckNvbW1pc3Npb246IG51bWJlcjtcbiAgICAgIGNhbkRlcG9zaXQ6IGJvb2xlYW47XG4gICAgICBjYW5UcmFkZTogYm9vbGVhbjtcbiAgICAgIGNhbldpdGhkcmF3OiBib29sZWFuO1xuICAgICAgY29tbWlzc2lvblJhdGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1pc3Npb25SYXRlc1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE1ha2VyIGNvbW1pc3Npb24sIGluIGJhc2lzIHBvaW50cyAoZS5nLiBgMTBgID0gMC4xJSkuIFN1cGVyc2VkZWQgYnlcbiAgICAgICAqIFtgQWNjb3VudEluZm9SZXNwb25zZTo6Y29tbWlzc2lvbl9yYXRlc2BdIGZvciBmcmFjdGlvbmFsIHJhdGVzLlxuICAgICAgICovXG4gICAgICBtYWtlckNvbW1pc3Npb246IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUGVybWlzc2lvbiBmbGFncywgZS5nLiBgW1wiU1BPVFwiLCBcIk1BUkdJTlwiXWAuICovXG4gICAgICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gICAgICBwcmV2ZW50U29yOiBib29sZWFuO1xuICAgICAgcmVxdWlyZVNlbGZUcmFkZVByZXZlbnRpb246IGJvb2xlYW47XG4gICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgc2VsbGVyQ29tbWlzc2lvbjogbnVtYmVyO1xuICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgIHRha2VyQ29tbWlzc2lvbjogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWNjb3VudCB1c2VyIGlkLlxuICAgICAgICovXG4gICAgICB1aWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIExhc3QgYWNjb3VudCB1cGRhdGUgdGltZSAobXMgc2luY2UgZXBvY2gpLlxuICAgICAgICovXG4gICAgICB1cGRhdGVUaW1lOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2FsbGV0IHR5cGUgdXNlZCBhcyB0aGUgc291cmNlIG9yIGRlc3RpbmF0aW9uIG9mIGEgW2BVbml2ZXJzYWxUcmFuc2ZlclJlcXVlc3RgXS5cbiAgICAgKlxuICAgICAqIFNlcmlhbGl6ZXMgdG8gdGhlIFNDUkVBTUlOR19TTkFLRV9DQVNFIHN0cmluZ3MgQmluYW5jZSBleHBlY3RzLiBUaGUgZGVmYXVsdFxuICAgICAqIGlzIFtgQWNjb3VudFR5cGU6OlNwb3RgXS5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEFjY291bnRUeXBlOiBcIlNQT1RcIiB8IFwiVVNEVF9GVVRVUkVcIiB8IFwiQ09JTl9GVVRVUkVcIiB8IFwiTUFSR0lOXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIGFkZCBPSURDIGlkZW50aXR5IHRvIGFuIGV4aXN0aW5nIHVzZXIgYWNjb3VudCAqL1xuICAgIEFkZElkZW50aXR5UmVxdWVzdDoge1xuICAgICAgb2lkY190b2tlbjogc3RyaW5nO1xuICAgICAgdXNlcl9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgIH07XG4gICAgQWRkS2V5c1RvUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiBrZXlzIHRvIGFkZCB0byBhIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJLZXkjNjMwMjNhMjctMWU3MC00MzBhLWIyOTMtZmZiYzlkNmM0NDg0XCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAga2V5X2lkczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY2llcyB0byBhcHBseSBmb3IgZWFjaCBrZXlcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjogXCJDYW5vbmljYWxcIlxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjoge1xuICAgICAgICogICAgICAgICBcIlJlcXVpcmVkQXBwcm92ZXJzXCI6IHtcbiAgICAgICAqICAgICAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICAgICAgfVxuICAgICAgICogICAgICAgfSxcbiAgICAgICAqICAgICAgIFwicmVzdHJpY3RlZF9vcGVyYXRpb25zXCI6IFtcbiAgICAgICAqICAgICAgICAgXCJFdGgxU2lnblwiLFxuICAgICAgICogICAgICAgICBcIkJsb2JTaWduXCJcbiAgICAgICAqICAgICAgIF1cbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogdW5rbm93bltdIHwgbnVsbDtcbiAgICB9O1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdXNlciBlbWFpbFxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgaWRlbnRpdHk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNJZGVudGl0eVwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGxvZ2luIE1GQSBwb2xpY3kgKi9cbiAgICAgIG1mYV9wb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyIGZ1bGwgbmFtZVxuICAgICAgICogQGV4YW1wbGUgQWxpY2UgV29uZGVybGFuZFxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHByb29mPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eVByb29mXCJdIHwgbnVsbDtcbiAgICAgIHJvbGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICB9O1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWRkcmVzc2VzIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuICovXG4gICAgQWRkcmVzc01hcDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCaXRjb2luIGFkZHJlc3Nlcy4gKi9cbiAgICAgIGJ0Yz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQml0Y29pbkFkZHJlc3NJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIENhbnRvbiBwYXJ0aWVzLiAqL1xuICAgICAgY2FudG9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDYW50b25QYXJ0eUluZm9cIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRVZNIGFkZHJlc3Nlcy4gKi9cbiAgICAgIGV2bT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtQWRkcmVzc0luZm9cIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU29sYW5hIGFkZHJlc3Nlcy4gKi9cbiAgICAgIHNvbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU29sYW5hQWRkcmVzc0luZm9cIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU1VJIGFkZHJlc3Nlcy4gKi9cbiAgICAgIHN1aT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3VpQWRkcmVzc0luZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEFsZXJ0S2luZDogXCJQb2xpY3lDaGFuZ2VzXCIgfCBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCIgfCBcIkJhYnlsb25Fb3RzQ29uY3VycmVudFNpZ25pbmdcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgdXNlZCBmb3IgaW5kaXZpZHVhbCBpbXBsaWNpdGx5IHNlY3VyaXR5LXNlbnNpdGl2ZVxuICAgICAqIG9wZXJhdGlvbnMgKGxpa2UgbG9nZ2luZyBpbiwgYWRkaW5nIGFuIE1GQSBmYWN0b3IsIGV4cG9ydGluZyBrZXlzLCBldGM7IHNlZSBgTWZhUHJvdGVjdGVkQWN0aW9uYCkuXG4gICAgICovXG4gICAgQWxsb3dlZE1mYU1hcDoge1xuICAgICAgW2tleTogc3RyaW5nXTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdW107XG4gICAgfTtcbiAgICBBcHByb3ZhbEluZm86IHtcbiAgICAgIHRpbWVzdGFtcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdlYkF1dGhuIFJlbHlpbmcgUGFydGllcyBtYXkgdXNlIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UgdG8gc3BlY2lmeVxuICAgICAqIHRoZWlyIHByZWZlcmVuY2UgcmVnYXJkaW5nIGF0dGVzdGF0aW9uIGNvbnZleWFuY2UgZHVyaW5nIGNyZWRlbnRpYWxcbiAgICAgKiBnZW5lcmF0aW9uLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtYXR0ZXN0YXRpb25jb252ZXlhbmNlcHJlZmVyZW5jZVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTogXCJub25lXCIgfCBcImluZGlyZWN0XCIgfCBcImRpcmVjdFwiIHwgXCJlbnRlcnByaXNlXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEF1ZGllbmNlKHMpIHRoYXQgdGhpcyBJRCBUb2tlbiBpcyBpbnRlbmRlZCBmb3IuIEl0IE1VU1QgY29udGFpbiB0aGVcbiAgICAgKiBPQXV0aCAyLjAgY2xpZW50X2lkIG9mIHRoZSBSZWx5aW5nIFBhcnR5IGFzIGFuIGF1ZGllbmNlIHZhbHVlLiBJdCBNQVkgYWxzbyBjb250YWluXG4gICAgICogaWRlbnRpZmllcnMgZm9yIG90aGVyIGF1ZGllbmNlcy4gSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIGF1ZCB2YWx1ZSBpcyBhbiBhcnJheSBvZlxuICAgICAqIGNhc2Utc2Vuc2l0aXZlIHN0cmluZ3MuIEluIHRoZSBjb21tb24gc3BlY2lhbCBjYXNlIHdoZW4gdGhlcmUgaXMgb25lIGF1ZGllbmNlLFxuICAgICAqIHRoZSBhdWQgdmFsdWUgTUFZIGJlIGEgc2luZ2xlIGNhc2Utc2Vuc2l0aXZlIHN0cmluZy5cbiAgICAgKi9cbiAgICBBdWQ6IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIEF1ZGl0TG9nRW50cnk6IHtcbiAgICAgIGV2ZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RGlzY3JpbWluYW50c1wiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVVVJRCBvZiB0aGUgZXZlbnQuIFVuaXF1ZSBhY3Jvc3MgYWxsIGV2ZW50cy4gKi9cbiAgICAgIGV2ZW50X2lkOiBzdHJpbmc7XG4gICAgICBvcmdfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIEhUVFAgcmVxdWVzdCB3aGljaCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gICAgICAgKiAoYSBzaW5nbGUgcmVxdWVzdCBjYW4gdHJpZ2dlciBtdWx0aXBsZSBldmVudHMpLlxuICAgICAgICovXG4gICAgICByZXF1ZXN0X2lkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0aW1lIHdoZW4gdGhlIGV2ZW50IHdhcyBsb2dnZWQuICovXG4gICAgICB0aW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGlkZW50aXR5ICh1c2VyIG9yIHJvbGUpIHdoaWNoIHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAgICAgICAqIChtYXkgYmUgdW5kZWZpbmVkIGZvciBjZXJ0YWluIHVuYXV0aGVudGljYXRlZCBlbmRwb2ludHMpXG4gICAgICAgKi9cbiAgICAgIHRyaWdnZXJlZF9ieT86IHN0cmluZyB8IG51bGw7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCB0eXBlIGZvciBxdWVyeWluZyB0aGUgYXVkaXQgbG9nLiAqL1xuICAgIEF1ZGl0TG9nUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gRW5kIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byAnbm93Jy5cbiAgICAgICAqL1xuICAgICAgZW5kX3RpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIHRoZSBsb2cgYnkgdGhlIGV2ZW50IG5hbWUuXG4gICAgICAgKiBJZiBvbWl0dGVkLCBhbGwgZXZlbnRzIHdpbGwgYmUgaW5jbHVkZWQuXG4gICAgICAgKiBNdXN0IG5vdCBiZSBzZXQgdG8gYW4gZW1wdHkgYXJyYXlcbiAgICAgICAqL1xuICAgICAgZXZlbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERpc2NyaW1pbmFudHNcIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFydCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC5cbiAgICAgICAqL1xuICAgICAgc3RhcnRfdGltZTogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYXVkaXQgbG9nIHJlc3BvbnNlICovXG4gICAgQXVkaXRMb2dSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBdWRpdCBsb2cgZW50cmllcyAqL1xuICAgICAgZW50cmllczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdWRpdExvZ0VudHJ5XCJdW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERhdGEgcmVxdWlyZWQgZm9yIGJvdGggYGF1dGhlbnRpY2F0ZWAgYW5kIGByZWZyZXNoYC4gKi9cbiAgICBBdXRoRGF0YToge1xuICAgICAgLyoqIEZvcm1hdDogaW50MzIgKi9cbiAgICAgIGVwb2NoX251bTogbnVtYmVyO1xuICAgICAgZXBvY2hfdG9rZW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQjMyXCJdO1xuICAgICAgb3RoZXJfdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdCByZWRlbXB0aW9uIHRpbWUsIHRoZSB1c2VyIG11c3QgcHJvdmlkZSBhIGNyZWRlbnRpYWwgdGhleSB3aXNoIHRvIHVzZSB0byBhdXRoZW50aWNhdGUuXG4gICAgICogVGhpcyBlbnVtIHJlcHJlc2VudHMgdGhlIHR3byBwb3NzaWJsZSBzb3VyY2VzIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqL1xuICAgIEF1dGhTb3VyY2U6IHtcbiAgICAgIGNyZWRlbnRpYWw6IHN0cmluZztcbiAgICAgIGtpbmQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aFNvdXJjZUtpbmRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXQgcmVkZW1wdGlvbiB0aW1lLCB0aGUgdXNlciBtdXN0IHByb3ZpZGUgYSBjcmVkZW50aWFsIHRoZXkgd2lzaCB0byB1c2UgdG8gYXV0aGVudGljYXRlLlxuICAgICAqIFRoaXMgZW51bSByZXByZXNlbnRzIHRoZSB0d28gcG9zc2libGUgc291cmNlcyBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF1dGhTb3VyY2VLaW5kOiBcInBhc3N3b3JkXCIgfCBcIm9pZGNcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXF1ZXN0IGJvZHkgZm9yIHRoZSBpZHAgYXV0aGVudGljYXRlIGVuZHBvaW50ICovXG4gICAgQXV0aGVudGljYXRpb25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgdXNlciBhdHRlbXB0aW5nIHRvIGF1dGhlbnRpY2F0ZVxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBhc3N3b3JkIGZvciB0aGF0IHVzZXIgKi9cbiAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byB0aGUgaWRwIGF1dGhlbnRpY2F0ZSBlbmRwb2ludCAqL1xuICAgIEF1dGhlbnRpY2F0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gT0lEQyB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIEN1YmVTaWduZXIgKi9cbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgYXNzZXJ0aW9uIHJlc3BvbnNlIHVzZWQgYnkgY2xpZW50cyB3aGVuIGF0dGVtcHRpbmcgdG8gbG9nIGluIHdpdGggYSBrbm93biBjcmVkZW50aWFsXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2F1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgdGhlIHN0YW5kYXJkIENUQVAyIGF1dGhlbnRpY2F0b3IgZGF0YS4gTXVzdCBiZSBhIHZhbGlkIFtgQXV0aGVudGljYXRvckRhdGFgXS5cbiAgICAgICAqIFRoaXMgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaG93IGtleSB3YXMgaW52b2tlZC5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcmFzc2VydGlvbnJlc3BvbnNlLWF1dGhlbnRpY2F0b3JkYXRhXG4gICAgICAgKi9cbiAgICAgIGF1dGhlbnRpY2F0b3JEYXRhOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250YWlucyBVVEY4IGVuY29kZWQgSlNPTiB3aGljaCBtdXN0IGJlIGEgdmFsaWQgW2BDbGllbnREYXRhYF1cbiAgICAgICAqIFRoaXMgZGF0YSBpcyBjb21iaW5lZCB3aXRoIGBhdXRoZW50aWNhdG9yX2RhdGFgIHRvIHByb2R1Y2UgdGhlIHNpZ25hdHVyZVxuICAgICAgICogbWVhbmluZyB0aGUgY2xpZW50IGF0dGVzdHMgdG8gdGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgZGF0YS5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnJlc3BvbnNlLWNsaWVudGRhdGFqc29uXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBjb25jYXRlbmF0ZWQgYGF1dGhlbnRpY2F0b3JEYXRhIHx8IGhhc2hgIHdoZXJlXG4gICAgICAgKiBgaGFzaGAgaXMgdGhlIFNIQTI1NiBoYXNoIG9mIHRoZSBgY2xpZW50RGF0YUpTT05gIGJ1ZmZlcjpcbiAgICAgICAqXG4gICAgICAgKiBGaWVsZCBEZWZpbml0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1zaWduYXR1cmVcbiAgICAgICAqIFN0ZXAgMTEgb2YgYGdldEFzc2VydGlvbmAgc3BlY2lmaWVzIHRoZSBjb25jYXRlbmF0aW9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jc2N0bi1vcC1nZXQtYXNzZXJ0aW9uXG4gICAgICAgKiBSZXF1aXJlbWVudCBmb3IgU0hBLTI1NjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2NvbGxlY3RlZGNsaWVudGRhdGEtaGFzaC1vZi10aGUtc2VyaWFsaXplZC1jbGllbnQtZGF0YVxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93cyB0aGUgYXV0aGVudGljYXRvciB0byBvcHRpb25hbGx5IGRlY2xhcmUgdGhlIGNyZWRlbnRpYWwgaWRlbnRpZmllciB0aGV5IHVzZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS11c2VyaGFuZGxlXG4gICAgICAgKi9cbiAgICAgIHVzZXJIYW5kbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSBhdXRoZW50aWNhdG9ycycgYXR0YWNobWVudCBtb2RhbGl0aWVzLlxuICAgICAqIFJlbHlpbmcgUGFydGllcyB1c2UgdGhpcyB0byBleHByZXNzIGEgcHJlZmVycmVkIGF1dGhlbnRpY2F0b3IgYXR0YWNobWVudFxuICAgICAqIG1vZGFsaXR5IHdoZW4gY2FsbGluZyBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgdG8gY3JlYXRlIGEgY3JlZGVudGlhbC5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF1dGhlbnRpY2F0b3JhdHRhY2htZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0YWNobWVudDogXCJwbGF0Zm9ybVwiIHwgXCJjcm9zcy1wbGF0Zm9ybVwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGhlIGF1dGhlbnRpY2F0b3Inc1xuICAgICAqIHJlc3BvbnNlIHRvIGEgY2xpZW504oCZcyByZXF1ZXN0IGZvciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgcHVibGljIGtleVxuICAgICAqIGNyZWRlbnRpYWwuIEl0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgY3JlZGVudGlhbCB0aGF0IGNhbiBiZVxuICAgICAqIHVzZWQgdG8gaWRlbnRpZnkgaXQgZm9yIGxhdGVyIHVzZSwgYW5kIG1ldGFkYXRhIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlXG4gICAgICogV2ViQXV0aG4gUmVseWluZyBQYXJ0eSB0byBhc3Nlc3MgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgY3JlZGVudGlhbFxuICAgICAqIGR1cmluZyByZWdpc3RyYXRpb24uXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jaWZhY2UtYXV0aGVudGljYXRvcmF0dGVzdGF0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYW4gYXR0ZXN0YXRpb24gb2JqZWN0LCB3aGljaCBpcyBvcGFxdWUgdG8sIGFuZFxuICAgICAgICogY3J5cHRvZ3JhcGhpY2FsbHkgcHJvdGVjdGVkIGFnYWluc3QgdGFtcGVyaW5nIGJ5LCB0aGUgY2xpZW50LiBUaGVcbiAgICAgICAqIGF0dGVzdGF0aW9uIG9iamVjdCBjb250YWlucyBib3RoIGF1dGhlbnRpY2F0b3IgZGF0YSBhbmQgYW4gYXR0ZXN0YXRpb25cbiAgICAgICAqIHN0YXRlbWVudC4gVGhlIGZvcm1lciBjb250YWlucyB0aGUgQUFHVUlELCBhIHVuaXF1ZSBjcmVkZW50aWFsIElELCBhbmRcbiAgICAgICAqIHRoZSBjcmVkZW50aWFsIHB1YmxpYyBrZXkuIFRoZSBjb250ZW50cyBvZiB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGFyZVxuICAgICAgICogZGV0ZXJtaW5lZCBieSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50IGZvcm1hdCB1c2VkIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gSXQgYWxzbyBjb250YWlucyBhbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0aGF0IHRoZVxuICAgICAgICogUmVseWluZyBQYXJ0eSdzIHNlcnZlciByZXF1aXJlcyB0byB2YWxpZGF0ZSB0aGUgYXR0ZXN0YXRpb24gc3RhdGVtZW50LFxuICAgICAgICogYXMgd2VsbCBhcyB0byBkZWNvZGUgYW5kIHZhbGlkYXRlIHRoZSBhdXRoZW50aWNhdG9yIGRhdGEgYWxvbmcgd2l0aCB0aGVcbiAgICAgICAqIEpTT04tY29tcGF0aWJsZSBzZXJpYWxpemF0aW9uIG9mIGNsaWVudCBkYXRhLiBGb3IgbW9yZSBkZXRhaWxzLCBzZWVcbiAgICAgICAqIMKn4oCvNi41IEF0dGVzdGF0aW9uLCDCp+KArzYuNS40IEdlbmVyYXRpbmcgYW4gQXR0ZXN0YXRpb24gT2JqZWN0LCBhbmQgRmlndXJlXG4gICAgICAgKiA2LlxuICAgICAgICovXG4gICAgICBhdHRlc3RhdGlvbk9iamVjdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBhdHRyaWJ1dGUsIGluaGVyaXRlZCBmcm9tIEF1dGhlbnRpY2F0b3JSZXNwb25zZSwgY29udGFpbnMgdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YSAoc2VlIMKn4oCvNi41IEF0dGVzdGF0aW9uKVxuICAgICAgICogcGFzc2VkIHRvIHRoZSBhdXRoZW50aWNhdG9yIGJ5IHRoZSBjbGllbnQgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhpc1xuICAgICAgICogY3JlZGVudGlhbC4gVGhlIGV4YWN0IEpTT04gc2VyaWFsaXphdGlvbiBNVVNUIGJlIHByZXNlcnZlZCwgYXMgdGhlIGhhc2hcbiAgICAgICAqIG9mIHRoZSBzZXJpYWxpemVkIGNsaWVudCBkYXRhIGhhcyBiZWVuIGNvbXB1dGVkIG92ZXIgaXQuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudERhdGFKU09OOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2ViQXV0aG4gUmVseWluZyBQYXJ0aWVzIG1heSB1c2UgdGhlIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVxuICAgICAqIGRpY3Rpb25hcnkgdG8gc3BlY2lmeSB0aGVpciByZXF1aXJlbWVudHMgcmVnYXJkaW5nIGF1dGhlbnRpY2F0b3JcbiAgICAgKiBhdHRyaWJ1dGVzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3RkZWYtYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhOiB7XG4gICAgICBhdXRoZW50aWNhdG9yQXR0YWNobWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckF0dGFjaG1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggV2ViQXV0aG4gTGV2ZWxcbiAgICAgICAqIDEgYW5kLCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCBpdHMgbmFtaW5nIHJldGFpbnMgdGhlIGRlcHJlY2F0ZWRcbiAgICAgICAqIOKAnHJlc2lkZW504oCdIHRlcm1pbm9sb2d5IGZvciBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIHNldCBpdCB0byB0cnVlIGlmLCBhbmQgb25seSBpZiwgcmVzaWRlbnRLZXkgaXMgc2V0IHRvIHJlcXVpcmVkLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tYXV0aGVudGljYXRvcnNlbGVjdGlvbmNyaXRlcmlhLXJlcXVpcmVyZXNpZGVudGtleVxuICAgICAgICovXG4gICAgICByZXF1aXJlUmVzaWRlbnRLZXk/OiBib29sZWFuO1xuICAgICAgcmVzaWRlbnRLZXk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc2lkZW50S2V5UmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgdXNlclZlcmlmaWNhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIG1heSBpbXBsZW1lbnQgdmFyaW91cyB0cmFuc3BvcnRzIGZvciBjb21tdW5pY2F0aW5nIHdpdGhcbiAgICAgKiBjbGllbnRzLiBUaGlzIGVudW1lcmF0aW9uIGRlZmluZXMgaGludHMgYXMgdG8gaG93IGNsaWVudHMgbWlnaHQgY29tbXVuaWNhdGVcbiAgICAgKiB3aXRoIGEgcGFydGljdWxhciBhdXRoZW50aWNhdG9yIGluIG9yZGVyIHRvIG9idGFpbiBhbiBhc3NlcnRpb24gZm9yIGFcbiAgICAgKiBzcGVjaWZpYyBjcmVkZW50aWFsLiBOb3RlIHRoYXQgdGhlc2UgaGludHMgcmVwcmVzZW50IHRoZSBXZWJBdXRobiBSZWx5aW5nXG4gICAgICogUGFydHkncyBiZXN0IGJlbGllZiBhcyB0byBob3cgYW4gYXV0aGVudGljYXRvciBtYXkgYmUgcmVhY2hlZC4gQSBSZWx5aW5nXG4gICAgICogUGFydHkgd2lsbCB0eXBpY2FsbHkgbGVhcm4gb2YgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIGZvciBhIHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsIHZpYSBnZXRUcmFuc3BvcnRzKCkuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9ydHJhbnNwb3J0XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OiBcInVzYlwiIHwgXCJuZmNcIiB8IFwiYmxlXCIgfCBcImludGVybmFsXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHNpZ24gYSBzZXJpYWxpemVkIEF2YWxhbmNoZSB0cmFuc2FjdGlvbiAqL1xuICAgIEF2YVNlcmlhbGl6ZWRUeFNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2VyaWFsaXplZCB0cmFuc2FjdGlvbiB0byBzaWduICovXG4gICAgICB0eDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHNpZ24gYW4gQXZhbGFuY2hlIHRyYW5zYWN0aW9uICovXG4gICAgQXZhU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHByb2R1Y2UgYSB2YWxpZCBzaWduYXR1cmUsIGp1c3QgZXZhbHVhdGUgYXR0YWNoZWQgcG9saWNpZXMuICovXG4gICAgICBkcnlfcnVuPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gdG8gc2lnbi5cbiAgICAgICAqXG4gICAgICAgKiBFeGFtcGxlczpcbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvYWRkX3Blcm1pc3Npb25sZXNzX3ZhbGlkYXRvci5ycyNMMTQpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFN1Ym5ldFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfc3VibmV0X3ZhbGlkYXRvci5ycyNMMjkpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfdmFsaWRhdG9yLnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQ3JlYXRlQ2hhaW5cIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX2NoYWluLnJzI0w4KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJDcmVhdGVTdWJuZXRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX3N1Ym5ldC5ycyNMOCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2V4cG9ydC5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkltcG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9pbXBvcnQucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJCYXNlXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvbW9kLnJzI0wyMSkgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvZXhwb3J0LnJzI0wxNikgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiSW1wb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvaW1wb3J0LnJzI0wxNCkgfX1cbiAgICAgICAqL1xuICAgICAgdHg6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gV3JhcHBlciBhcm91bmQgYSB6ZXJvaXppbmcgMzItYnl0ZSBmaXhlZC1zaXplIGFycmF5ICovXG4gICAgQjMyOiBzdHJpbmc7XG4gICAgQmFieWxvbkNvdlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXlzIGZvciB0aGUgZmluYWxpdHkgcHJvdmlkZXJzIHRvIHdoaWNoIHRoaXMgdHJhbnNhY3Rpb24gaXMgYmVpbmcgc3Rha2VkLlxuICAgICAgICogRWFjaCBrZXkgaXMgYSBoZXggc3RyaW5nIGNvbnRhaW5pbmcgYSBTRUMxLWVuY29kZWQgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiMDNiNTczZTMxODgwM2ZkN2FlZTFiZTViNmIxOGQ0OTZjYzYwZWNjNTI0MjlkYmQ0NzdhODc5MjE3YzNlZDI2YTc5NWNiNGY0ZTg4MGFhZmYzYTZhZDY2MzM1ZTU0MDRmYTUxY2FlYjQ5NjRmMGM5Zjc1NjI3Mzc4NjRlM2JkZTViY1wiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGZwX2VuY19rZXlzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC11bmJvbmRpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgNjg5OWI1YmFmNzEzYTJjNjBlNmFiZjA1ZTg5MDk0NDBkNDFkYzQxMjViOTg4OTFjMzMyZjcwODdkYWYwMTdmYjI0MzYyODZlMmFhMDk3NDY0ZDljOTI3ZDY0NGZhNmRlXG4gICAgICAgKi9cbiAgICAgIHNsYXNoX3VuYm9uZGluZ190eDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHNjcmlwdCBpbiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgODc3ZjA1Y2M2MjZkZWRjZjUzYjUwZWViYTA4MjFjYTBcbiAgICAgICAqL1xuICAgICAgc2xhc2hpbmdfc2NyaXB0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2hpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgZjM3ZTdjYTJiMjRhNWY3YjhiNmM5YmEwNTRmOTkzMmVmYjA0N2NlODBjZjUwYTExOGUzZjcyNzUxNDI5ZmIxM2EzNTVmYTA5M2JkMzU4Y2RjMzBlZmFjZjVhNjJjYWJlXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX3R4OiBzdHJpbmc7XG4gICAgICBzdGFrZV9leHBhbnNpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25Db3ZTdGFrZUV4cGFuc2lvblJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG91dHB1dCBpbmRleCBvZiB0aGUgQmFieWxvbiBzdGFraW5nIHNjcmlwdHMgaW4gdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfb3V0cHV0X2lkeDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgOTU0YmExMThlNzEzM2I0YmIzYTY3YWNjNGY0MGNiOTUyOWFhYmJjMDEwMDcyMjlmN2JmZDg1NzA2ODUwMTc1ZDc3ZDVjYmU1ZTRjMGNhNjcyMzhkMTRhZmE0N2M1MWNjXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfdHg6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgc2NyaXB0IGluIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAgICogVGhpcyBpcyBhIEJpdGNvaW4gY29uc2Vuc3VzLS1lbmNvZGVkIGhleCBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZSA1NWY2NjM4YzBjMGMwYjBlNTFjYTkyMmUwZTllNmFiZFxuICAgICAgICovXG4gICAgICB1bmJvbmRpbmdfc2NyaXB0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2hpbmcgc2NyaXB0IGluIHRoZSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIGUxMzNmNWE5MjNhMDdiOWM3ZjY3NjdjZGExNzEwMDViXG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ19zbGFzaGluZ19zY3JpcHQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24gYmVpbmcgYXBwcm92ZWQgYnkgdGhlIGNvdmVuYW50IHNpZ25lci5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgOTY5Y2I5NTEyOWE1NWE5NmQ1MTkxOWY1ZjY3ZjNhZGM1OTdlY2RlZTZlZGEyMWU3Nzc3ZjM3MGMzYjE4MDkzMzZlZTdkMDhlYzU3NGM4YmJiMzYxZmY2M2QwMzJhOTc2XG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ190eDogc3RyaW5nO1xuICAgIH07XG4gICAgQmFieWxvbkNvdlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC11bmJvbmRpbmcgdHJhbnNhY3Rpb24gc2lnbmF0dXJlcyBhcyBhbiBhcnJheSBvZiBoZXggc3RyaW5ncyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIjAyZTIxYTdiMDUxOTUzOWVmNjcwZjc5ZDFjMjVhNTRmOTBiMGM2ZDlmZGI1NmE3ZGU4MTNmYjIwNzAzMzAzMmZmZmFkOGFhYWZlYjFiNzdkZDllYThmMTdkYWRjZjI5NzY5NmJiZjVhNDEzMzI5MmYzNTE1Yjg2YmI5YzJkNzhkOWNcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBzbGFzaF91bmJvbmRpbmdfdHJhbnNhY3Rpb25zX3NpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHRyYW5zYWN0aW9uIHNpZ25hdHVyZXMgYXMgYW4gYXJyYXkgb2YgaGV4IHN0cmluZ3Mgd2l0aCBubyAweCBwcmVmaXhcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCIwMzA3NWVjYTlkMTc2ZDE2MDVkNmMwOTZjMTExZTlhNGY4ZDg3MzlhYzk3MDhjMWRmM2VkNTE2MTA2ZTdhYjEzODdhMzkyNGE2NjUyYWNmMmUzNTI0MzU5NzMxY2ExZmJiMzM4YTNhZmIxYTY3ZjZlYTE5YzIwN2I2ZmY0NjZhNWFkXCIsXG4gICAgICAgKiAgIFwiMDIyMjI0NDkzZjRjZmZhZDViODQwNzZkYjMyZGQ4YzQ5YTI4ZmY0OGFmNGUxOWUyYmNjOTk1M2ZmODAzNDdiYTZlODM0M2NmN2E0NGU3NGE5NmZmNzFlYTU5YTAzYjQwMTY2ZTg1YjBkMTM1NTk1NGUwNGE0NDI3ZGM4ZDYzN2ZmMFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX3RyYW5zYWN0aW9uc19zaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzaWduYXR1cmUgdGhhdCBhbGxvd3MgZXhwYW5kaW5nIGEgc3Rha2UgYnkgc3BlbmRpbmcgdGhlIGN1cnJlbnQgYWN0aXZlXG4gICAgICAgKiBzdGFrZSB0cmFuc2FjdGlvbiBpbnRvIGEgbmV3IHN0YWtpbmcgdHJhbnNhY3Rpb24uIEEgdmFsdWUgaXMgcHJlc2VudCBpZmYgdGhlXG4gICAgICAgKiBjb3JyZXNwb25kaW5nIHJlcXVlc3QgaW5jbHVkZWQgYSBgc3Rha2VfZXhwYW5zaW9uYCB2YWx1ZS5cbiAgICAgICAqIEBleGFtcGxlIGI1NzNlMzE4ODAzZmQ3YWVlMWJlNWI2YjE4ZDQ5NmNjNjBlY2M1MjQyOWRiZDQ3N2E4NzkyMTdjM2VkMjZhNzk1Y2I0ZjRlODgwYWFmZjNhNmFkNjYzMzVlNTQwNGZhNTFjYWViNDk2NGYwYzlmNzU2MjczNzg2NGUzYmRlNWJjXG4gICAgICAgKi9cbiAgICAgIHN0YWtlX2V4cGFuc2lvbl90cmFuc2FjdGlvbl9zaWduYXR1cmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVuYm9uZGluZyB0cmFuc2FjdGlvbiBzaWduYXR1cmUgYXMgaGV4IHN0cmluZyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICogQGV4YW1wbGUgYjU3M2UzMTg4MDNmZDdhZWUxYmU1YjZiMThkNDk2Y2M2MGVjYzUyNDI5ZGJkNDc3YTg3OTIxN2MzZWQyNmE3OTVjYjRmNGU4ODBhYWZmM2E2YWQ2NjMzNWU1NDA0ZmE1MWNhZWI0OTY0ZjBjOWY3NTYyNzM3ODY0ZTNiZGU1YmNcbiAgICAgICAqL1xuICAgICAgdW5ib25kaW5nX3RyYW5zYWN0aW9uX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIGV4cGFuZCBhbiBhY3RpdmUgc3Rha2Ugd2l0aCBhZGRpdGlvbmFsIGZ1bmRzLiAqL1xuICAgIEJhYnlsb25Db3ZTdGFrZUV4cGFuc2lvblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBvdXRwdXQgdGhhdCBpcyBiZWluZyB1c2VkIHRvIGZ1bmQgdGhlIHN0YWtlIGV4cGFuc2lvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICovXG4gICAgICBvdGhlcl9mdW5kaW5nX291dHB1dDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFjdGl2ZSBzdGFraW5nIHRyYW5zYWN0aW9uIHRoYXQgaXMgYmVpbmcgZXhwYW5kZWQgd2l0aCB0aGlzIHJlcXVlc3QuXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDk1NGJhMTE4ZTcxMzNiNGJiM2E2N2FjYzRmNDBjYjk1MjlhYWJiYzAxMDA3MjI5ZjdiZmQ4NTcwNjg1MDE3NWQ3N2Q1Y2JlNWU0YzBjYTY3MjM4ZDE0YWZhNDdjNTFjY1xuICAgICAgICovXG4gICAgICBwcmV2aW91c19hY3RpdmVfc3Rha2VfdHg6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgc2NyaXB0IGluIHRoZSBhY3RpdmUgc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgZTEzM2Y1YTkyM2EwN2I5YzdmNjc2N2NkYTE3MTAwNWJcbiAgICAgICAqL1xuICAgICAgcHJldmlvdXNfYWN0aXZlX3N0YWtlX3VuYm9uZGluZ19zY3JpcHQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHN0YWtlIG91dHB1dCBpbiB0aGUgYWN0aXZlIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIHByZXZpb3VzX3N0YWtpbmdfb3V0cHV0X2lkeDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXR3b3JrLWlkIGZvciBCYWJ5bG9uIHN0YWtpbmdcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEJhYnlsb25OZXR3b3JrSWQ6IFwiYmJ0NFwiIHwgXCJiYm4xXCIgfCBcImJidDVcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEJhYnlsb24gc3Rha2luZyByZWdpc3RyYXRpb24gc3BlY2lmaWNhdGlvbiAqL1xuICAgIEJhYnlsb25SZWdpc3RyYXRpb25SZXF1ZXN0OiAoe1xuICAgICAgZXhwbGljaXRfcGFyYW1zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1BhcmFtc1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIGZpbmFsaXR5XG4gICAgICAgKiBwcm92aWRlciB0byB3aGljaCB0aGUgc3Rha2UgaXMgZGVsZWdhdGVkLlxuICAgICAgICovXG4gICAgICBmaW5hbGl0eV9wcm92aWRlcl9wa3M6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxvY2sgdGltZSB1c2VkIGZvciB0aGUgd2l0aGRyYXdhbCBvdXRwdXQgaW4gdGhlIHN0YWtpbmcgZGVwb3NpdCB0cmFuc2FjdGlvblxuICAgICAgICovXG4gICAgICBsb2NrX3RpbWU6IG51bWJlcjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvbk5ldHdvcmtJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTY2hub3JyIHB1YmxpYyBrZXkgKGkuZS4sIDMyLWJ5dGUgWC1jb29yZGluYXRlKSBvZiB0aGUgc3Rha2VyLiBUaGlzXG4gICAgICAgKiBpcyB0aGUga2V5IHRoYXQgc2lnbnMgdGhlIHNsYXNoaW5nLCB3aXRoZHJhd2FsLCBhbmQgdW5ib25kaW5nIHNjcmlwdHMuXG4gICAgICAgKi9cbiAgICAgIHN0YWtlcl9wazogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBhcmFtZXRlciB2ZXJzaW9uIHRvIHVzZS4gSWYgYE5vbmVgLCB1c2VzIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbj86IG51bWJlciB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGNoYW5nZSBhZGRyZXNzLCBzcGVjaWZpZWQgYXMgYSBCaXRjb2luIHNwZW5kIHNjcmlwdCAqL1xuICAgICAgY2hhbmdlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gZmVlIHZhbHVlLiBUaGUgYGZlZV90eXBlYCBmaWVsZCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhpc1xuICAgICAgICogaXMgYSBmaXhlZCBmZWUgaW4gc2F0cyBvciBhIHJhdGUgaW4gc2F0cyBwZXIgKGVzdGltYXRlZCkgdmlydHVhbCBieXRlIG9mXG4gICAgICAgKiB0cmFuc2FjdGlvbiB3ZWlnaHQgKGkuZS4sIHNhdHMgcGVyIHZiKS5cbiAgICAgICAqL1xuICAgICAgZmVlOiBudW1iZXI7XG4gICAgICBmZWVfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGZWVUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQnkgZGVmYXVsdCwgdGhlIFBTQlQgaW4gdGhpcyByZXF1ZXN0IGNhbiBvbmx5IHNwZWNpZnkgdHJhbnNhY3Rpb24gaW5wdXRzOlxuICAgICAgICogUFNCVHMgdGhhdCBzcGVjaWZ5IG91dHB1dHMgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IuIFdoZW4gdGhpcyBmbGFnIGlzIHNldCxcbiAgICAgICAqIGV4aXN0aW5nIG91dHB1dHMgaW4gdGhlIFBTQlQgd2lsbCBpbnN0ZWFkIGJlIGlnbm9yZWQgKGkuZS4sIGRlbGV0ZWQgZnJvbVxuICAgICAgICogdGhlIFBTQlQpIHdoZW4gY3JlYXRpbmcgdGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGlnbm9yZV9wc2J0X291dHB1dHM/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBoZXgtc2VyaWFsaXplZCBQU0JUICh2ZXJzaW9uIDApIGNvbnRhaW5pbmcgdGhlIHRyYW5zYWN0aW9uIGlucHV0cyBhbmRcbiAgICAgICAqIGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZm9yIHNpZ25pbmcgKGUuZy4sIHRhcHJvb3QgcGF0aCBhbmQgbGVhZlxuICAgICAgICogaW5mb3JtYXRpb24pLiBUaGlzIFBTQlQgbXVzdCBub3QgaGF2ZSBhbnkgdHJhbnNhY3Rpb24gb3V0cHV0czsgdGhleVxuICAgICAgICogd2lsbCBiZSBhZGRlZCB0byB0aGUgcmV0dXJuZWQgUFNCVC5cbiAgICAgICAqL1xuICAgICAgcHNidDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIHRvIGJlIHN0YWtlZCBpbiBzYXRzXG4gICAgICAgKi9cbiAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgfSkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBCYWJ5bG9uIGFkZHJlc3MgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHN0YWtpbmcgcmV3YXJkcyBmb3IgdGhpcyBkZXBvc2l0LlxuICAgICAgICogQmFieWxvbiByZXF1aXJlcyB0aGlzIHRvIGJlIHRoZSBzYW1lIGFkZHJlc3MgdGhhdCByZWdpc3RlcnMgdGhlIGRlcG9zaXQgb25cbiAgICAgICAqIHRoZSBCYWJ5bG9uIGNoYWluLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgbXVzdCBiZSBhIHNlY3AyNTZrMSBDb3Ntb3MgYWRkcmVzcyB3aXRoIGVpdGhlciBhIGBiYm5gIG9yIGEgYGNvc21vc2BcbiAgICAgICAqIGh1bWFuLXJlYWRhYmxlIHBhcnQgKGkuZS4sIGBiYm4xLi4uYCBvciBgY29zbW9zMS4uLmApLiBUaGUgbGF0dGVyIGxldHMgeW91XG4gICAgICAgKiBzcGVjaWZ5IHRoZSBtYXRlcmlhbC1pZCBvZiBhIFNlY3BDb3Ntb3MgQ3ViZVNpZ25lciBrZXkuXG4gICAgICAgKiBAZXhhbXBsZSBiYm4xbjVhbm1jMGtrcmg3MHlqeTdmNmYzOTljNzR5ZDA5eGw1dGVmZm1cbiAgICAgICAqL1xuICAgICAgYmJuX2FkZHI6IHN0cmluZztcbiAgICB9O1xuICAgIEJhYnlsb25SZWdpc3RyYXRpb25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBCYWJ5bG9uIGFkZHJlc3MgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHN0YWtpbmcgcmV3YXJkcyBmb3IgdGhpcyBkZXBvc2l0LlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgdmFsdWUgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBgYmJuX2FkZHJgIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCxcbiAgICAgICAqIGJ1dCBpdCB3aWxsIGFsd2F5cyBoYXZlIGEgYGJibmAgaHVtYW4tcmVhZGFibGUgcGFydC5cbiAgICAgICAqIEBleGFtcGxlIGJibjFuNWFubWMwa2tyaDcweWp5N2Y2ZjM5OWM3NHlkMDl4bDV0ZWZmbVxuICAgICAgICovXG4gICAgICBiYm5fYWRkcjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gUFNCVC4gVGhpcyBQU0JUIGluY2x1ZGVzIHNpZ25hdHVyZXMgb24gYW55XG4gICAgICAgKiBpbnB1dHMgY29udHJvbGxlZCBieSB0aGUgc3Rha2VyIHRhcHJvb3Qga2V5IHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICAgICAqL1xuICAgICAgZGVwb3NpdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gZmVlIGluIHNhdHMuXG4gICAgICAgKiBAZXhhbXBsZSAxMzM3XG4gICAgICAgKi9cbiAgICAgIGRlcG9zaXRfZmVlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHJvb2Ygb2YgcG9zc2Vzc2lvbiwgaS5lLiwgYSBCSVAzMjIgc2lnbmF0dXJlIG9uIHRoZSBzdGFrZXInc1xuICAgICAgICogQmFieWxvbiBhZGRyZXNzIHNpZ25lZCBieSB0aGUgc3Rha2VyIHRhcHJvb3Qga2V5LiBUaGlzIGlzIGEgQml0Y29pblxuICAgICAgICogd2l0bmVzcyBzdGFjayBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuXG4gICAgICAgKi9cbiAgICAgIHBvcDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2gtZGVwb3NpdCB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICBzbGFzaF9kZXBvc2l0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3Rha2VyIHRhcHJvb3Qga2V5J3Mgc2lnbmF0dXJlIG9uIHRoZSBzbGFzaC1kZXBvc2l0IHRyYW5zYWN0aW9uLlxuICAgICAgICogVGhpcyBpcyBhIEJJUDM0MCBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdC5cbiAgICAgICAqL1xuICAgICAgc2xhc2hfZGVwb3NpdF9zaWc6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICBzbGFzaF91bmJvbmQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFrZXIgdGFwcm9vdCBrZXkncyBzaWduYXR1cmUgb24gdGhlIHNsYXNoLXVuYm9uZCB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCSVAzNDAgc2lnbmF0dXJlIGluIGhleCBmb3JtYXQuXG4gICAgICAgKi9cbiAgICAgIHNsYXNoX3VuYm9uZF9zaWc6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlICh1bnNpZ25lZCkgdW5ib25kaW5nIHRyYW5zYWN0aW9uIGluIEJpdGNvaW4gY29uc2Vuc3VzIGhleCBlbmNvZGluZy4gKi9cbiAgICAgIHVuYm9uZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgdGhlIEJhYnlsb24gZGVwb3NpdCBzY3JpcHRzICovXG4gICAgQmFieWxvblNjcmlwdERhdGE6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgYSBCYWJ5bG9uIGRlcG9zaXQgdHJhbnNhY3Rpb24gKi9cbiAgICBCYWJ5bG9uU3Rha2luZ0RlcG9zaXQ6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjaGFuZ2UgYWRkcmVzcywgc3BlY2lmaWVkIGFzIGEgQml0Y29pbiBzcGVuZCBzY3JpcHQgKi9cbiAgICAgIGNoYW5nZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIGZlZSB2YWx1ZS4gVGhlIGBmZWVfdHlwZWAgZmllbGQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXNcbiAgICAgICAqIGlzIGEgZml4ZWQgZmVlIGluIHNhdHMgb3IgYSByYXRlIGluIHNhdHMgcGVyIChlc3RpbWF0ZWQpIHZpcnR1YWwgYnl0ZSBvZlxuICAgICAgICogdHJhbnNhY3Rpb24gd2VpZ2h0IChpLmUuLCBzYXRzIHBlciB2YikuXG4gICAgICAgKi9cbiAgICAgIGZlZTogbnVtYmVyO1xuICAgICAgZmVlX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmVlVHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJ5IGRlZmF1bHQsIHRoZSBQU0JUIGluIHRoaXMgcmVxdWVzdCBjYW4gb25seSBzcGVjaWZ5IHRyYW5zYWN0aW9uIGlucHV0czpcbiAgICAgICAqIFBTQlRzIHRoYXQgc3BlY2lmeSBvdXRwdXRzIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsXG4gICAgICAgKiBleGlzdGluZyBvdXRwdXRzIGluIHRoZSBQU0JUIHdpbGwgaW5zdGVhZCBiZSBpZ25vcmVkIChpLmUuLCBkZWxldGVkIGZyb21cbiAgICAgICAqIHRoZSBQU0JUKSB3aGVuIGNyZWF0aW5nIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLlxuICAgICAgICovXG4gICAgICBpZ25vcmVfcHNidF9vdXRwdXRzPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaGV4LXNlcmlhbGl6ZWQgUFNCVCAodmVyc2lvbiAwKSBjb250YWluaW5nIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgYW5kXG4gICAgICAgKiBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciBzaWduaW5nIChlLmcuLCB0YXByb290IHBhdGggYW5kIGxlYWZcbiAgICAgICAqIGluZm9ybWF0aW9uKS4gVGhpcyBQU0JUIG11c3Qgbm90IGhhdmUgYW55IHRyYW5zYWN0aW9uIG91dHB1dHM7IHRoZXlcbiAgICAgICAqIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJldHVybmVkIFBTQlQuXG4gICAgICAgKi9cbiAgICAgIHBzYnQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSB0byBiZSBzdGFrZWQgaW4gc2F0c1xuICAgICAgICovXG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgYSBCYWJ5bG9uIGVhcmx5LXVuYm9uZGluZyBvciBzbGFzaGluZyB0cmFuc2FjdGlvbiAqL1xuICAgIEJhYnlsb25TdGFraW5nRWFybHlVbmJvbmQ6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBgdHJ1ZWAsIHRoZSByZXN1bHRpbmcgUFNCVCBpcyBlbmNvZGVkIGFzIGEgYmFzZTY0IHN0cmluZy5cbiAgICAgICAqIE90aGVyd2lzZSwgaXQgaXMgZW5jb2RlZCBhcyBhIGhleCBzdHJpbmcuXG4gICAgICAgKi9cbiAgICAgIGFzX2Jhc2U2ND86IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uLWlkIG9mIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIHRvIHVuYm9uZCBvciBzbGFzaC4gKi9cbiAgICAgIHR4aWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSBpbiBzYXRzIHRoYXQgd2FzIHN0YWtlZCBpbiB0aGUgdHJhbnNhY3Rpb24gdG8gdW5ib25kIG9yIHNsYXNoLlxuICAgICAgICovXG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gb3V0cHV0IGluZGV4IG9mIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIHRvIHVuYm9uZCBvciBzbGFzaC5cbiAgICAgICAqIEZvciBzdGFraW5nIHRyYW5zYWN0aW9ucyBnZW5lcmF0ZWQgYnkgQ3ViZVNpZ25lciwgdGhpcyB3aWxsIGFsd2F5cyBiZSB6ZXJvLlxuICAgICAgICovXG4gICAgICB2b3V0OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVyIHNldCBmb3IgQmFieWxvbiBzdGFraW5nLiBUaGUgbGF0ZXN0IHBhcmFtZXRlciBzZXRzIGFyZVxuICAgICAqIGF2YWlsYWJsZSBmcm9tIDxodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmNoYWluL25ldHdvcmtzPlxuICAgICAqL1xuICAgIEJhYnlsb25TdGFraW5nUGFyYW1zOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBCbG9jayBoZWlnaHQgYXQgd2hpY2ggdGhlc2UgcGFyYW1zIHdpbGwgZW50ZXIgdXNlXG4gICAgICAgKi9cbiAgICAgIGFjdGl2YXRpb25faGVpZ2h0OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFB1YmxpYyBrZXlzIG9mIHRoZSBjb3ZlbmFudCBzaWduZXJzICovXG4gICAgICBjb3ZlbmFudF9wa3M6IHN0cmluZ1tdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBRdW9ydW0gZm9yIGNvdmVuYW50IHNpZ25lciAqL1xuICAgICAgY292ZW5hbnRfcXVvcnVtOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggYW1vdW50IHRoYXQgY2FuIGJlIHN0YWtlZCBpbiBhIHNpbmdsZSB0eG5cbiAgICAgICAqL1xuICAgICAgbWF4X3N0YWtpbmdfYW1vdW50OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggdGltZWxvY2sgZm9yIHN0YWtpbmdcbiAgICAgICAqL1xuICAgICAgbWF4X3N0YWtpbmdfdGltZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWluIGFtb3VudCB0aGF0IG11c3QgYmUgc3Rha2VkXG4gICAgICAgKi9cbiAgICAgIG1pbl9zdGFraW5nX2Ftb3VudDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWluIHRpbWVsb2NrIGZvciBzdGFraW5nXG4gICAgICAgKi9cbiAgICAgIG1pbl9zdGFraW5nX3RpbWU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE1pbmltdW0gZmVlIChpbiBzYXRzKSB0aGF0IG11c3QgYmUgcGFpZCBhcyBwYXJ0IG9mIHRoZSBzbGFzaGluZyB0eG5cbiAgICAgICAqL1xuICAgICAgc2xhc2hpbmdfZmVlPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gZXh0cmEgbnVtYmVyIG9mIHNhdHMgdG8gc2xhc2ggaW4gdGhlIHNsYXNoaW5nIHR4bi4gVGhpcyBjYW4gYmUgdXNlZFxuICAgICAgICogdG8gZW5zdXJlIHRoYXQgdGhlIHRyYW5zYWN0aW9uIG1lZXRzIHRoZSBtaW5pbXVtIHNsYXNoaW5nIHJlcXVpcmVtZW50XG4gICAgICAgKiBldmVuIGlmIHRoZSBjb3ZlbmFudCBjb21taXR0ZWUgbWVtYmVycyB1c2UgZmxvYXRzIHRvIGNvbXB1dGUgdGhlIGFtb3VudFxuICAgICAgICogdGhhdCBzaG91bGQgYmUgc2xhc2hlZC4gVGhlIGRlZmF1bHQgaXMgMjsgaXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG9cbiAgICAgICAqIGdvIGhpZ2hlciB0aGFuIHRoaXMuXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX21hcmdpbj86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGtfc2NyaXB0IHZhbHVlIGZvciB0aGUgMHRoIG91dHB1dCBpbmRleCBvZiBhIHNsYXNoaW5nIHRyYW5zYWN0aW9uLFxuICAgICAgICogc2VyaWFsaXplZCBhcyBhIGhleCBieXRlIHN0cmluZy4gVGhpcyB2YWx1ZSBtdXN0IGJlIHByZXNlbnQgdG8gY3JlYXRlXG4gICAgICAgKiBzbGFzaGluZyBzaWduYXR1cmVzLlxuICAgICAgICovXG4gICAgICBzbGFzaGluZ19wa19zY3JpcHQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZnJhY3Rpb24gb2Ygc3Rha2Ugc2xhc2hlZCBpZiBhIGRvdWJsZS1zaWduIGlzIGRldGVjdGVkICovXG4gICAgICBzbGFzaGluZ19yYXRlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJpdGNvaW4gdHJhbnNhY3Rpb24gdGFnIGZvciBzdGFraW5nIG1ldGFkYXRhLiBJZiBwcmVzZW50LCBhbiBpZGVudGlmaWFibGVcbiAgICAgICAqIHN0YWtpbmcgb3V0cHV0IChpLmUuLCBvbmUgd2l0aCBhbiBPUF9SRVRVUk4pIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgICAqL1xuICAgICAgdGFnPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEZlZSAoaW4gc2F0cykgdGhhdCBtdXN0IGJlIHNwZW50IGFzIHBhcnQgb2YgdGhlIHVuYm9uZGluZyB0eG5cbiAgICAgICAqL1xuICAgICAgdW5ib25kaW5nX2ZlZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWluIHRpbWVsb2NrIGZvciBhbiB1bmJvbmRpbmcgc2NyaXB0XG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ190aW1lOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXIgdmVyc2lvblxuICAgICAgICovXG4gICAgICB2ZXJzaW9uOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY3Rpb25zIHBvc3NpYmxlIHZpYSB0aGUgQmFieWxvbiBTdGFraW5nIGVuZHBvaW50ICovXG4gICAgQmFieWxvblN0YWtpbmdSZXF1ZXN0OlxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ0RlcG9zaXRcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgYWN0aW9uOiBcImRlcG9zaXRcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdFYXJseVVuYm9uZFwiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBhY3Rpb246IFwiZWFybHlfdW5ib25kXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nV2l0aGRyYXdhbFwiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBhY3Rpb246IFwid2l0aGRyYXdfdGltZWxvY2tcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdXaXRoZHJhd2FsXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJ3aXRoZHJhd19lYXJseV91bmJvbmRcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdXaXRoZHJhd2FsXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJ3aXRoZHJhd19zbGFzaGluZ1wiO1xuICAgICAgICB9KVxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ0Vhcmx5VW5ib25kXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJzbGFzaF9kZXBvc2l0XCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nRWFybHlVbmJvbmRcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgYWN0aW9uOiBcInNsYXNoX2Vhcmx5X3VuYm9uZFwiO1xuICAgICAgICB9KTtcbiAgICBCYWJ5bG9uU3Rha2luZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIGZlZSBpbiBzYXRzXG4gICAgICAgKiBAZXhhbXBsZSAxMzM3XG4gICAgICAgKi9cbiAgICAgIGZlZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFBTQlQgaW4gZWl0aGVyIGhleCBvciBiYXNlNjQgc2VyaWFsaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgNzA3MzYyNzRmZjAxMDA1ZS4uLlxuICAgICAgICovXG4gICAgICBwc2J0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERhdGEgbmVlZGVkIHRvIGNyZWF0ZSBhIEJhYnlsb24gd2l0aGRyYXdhbCB0cmFuc2FjdGlvbiAqL1xuICAgIEJhYnlsb25TdGFraW5nV2l0aGRyYXdhbDoge1xuICAgICAgZXhwbGljaXRfcGFyYW1zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1BhcmFtc1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIGZpbmFsaXR5XG4gICAgICAgKiBwcm92aWRlciB0byB3aGljaCB0aGUgc3Rha2UgaXMgZGVsZWdhdGVkLlxuICAgICAgICovXG4gICAgICBmaW5hbGl0eV9wcm92aWRlcl9wa3M6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxvY2sgdGltZSB1c2VkIGZvciB0aGUgd2l0aGRyYXdhbCBvdXRwdXQgaW4gdGhlIHN0YWtpbmcgZGVwb3NpdCB0cmFuc2FjdGlvblxuICAgICAgICovXG4gICAgICBsb2NrX3RpbWU6IG51bWJlcjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvbk5ldHdvcmtJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTY2hub3JyIHB1YmxpYyBrZXkgKGkuZS4sIDMyLWJ5dGUgWC1jb29yZGluYXRlKSBvZiB0aGUgc3Rha2VyLiBUaGlzXG4gICAgICAgKiBpcyB0aGUga2V5IHRoYXQgc2lnbnMgdGhlIHNsYXNoaW5nLCB3aXRoZHJhd2FsLCBhbmQgdW5ib25kaW5nIHNjcmlwdHMuXG4gICAgICAgKi9cbiAgICAgIHN0YWtlcl9wazogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBhcmFtZXRlciB2ZXJzaW9uIHRvIHVzZS4gSWYgYE5vbmVgLCB1c2VzIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbj86IG51bWJlciB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgdGhlIHJlc3VsdGluZyBQU0JUIGlzIGVuY29kZWQgYXMgYSBiYXNlNjQgc3RyaW5nLlxuICAgICAgICogT3RoZXJ3aXNlLCBpdCBpcyBlbmNvZGVkIGFzIGEgaGV4IHN0cmluZy5cbiAgICAgICAqL1xuICAgICAgYXNfYmFzZTY0PzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBmZWUgdmFsdWUuIFRoZSBgZmVlX3R5cGVgIGZpZWxkIGRldGVybWluZXMgd2hldGhlciB0aGlzXG4gICAgICAgKiBpcyBhIGZpeGVkIGZlZSBpbiBzYXRzIG9yIGEgcmF0ZSBpbiBzYXRzIHBlciAoZXN0aW1hdGVkKSB2aXJ0dWFsIGJ5dGUgb2ZcbiAgICAgICAqIHRyYW5zYWN0aW9uIHdlaWdodCAoaS5lLiwgc2F0cyBwZXIgdmIpLlxuICAgICAgICovXG4gICAgICBmZWU6IG51bWJlcjtcbiAgICAgIGZlZV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZlZVR5cGVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB3aXRoZHJhd2FsIHJlY2lwaWVudCwgc3BlY2lmaWVkIGFzIGEgQml0Y29pbiBzcGVuZCBzY3JpcHQgKi9cbiAgICAgIHJlY2lwaWVudDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbi1pZCBvZiB0aGUgZGVwb3NpdCBvciBlYXJseSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24gdG8gd2l0aGRyYXcgZnJvbSAqL1xuICAgICAgdHhpZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgbG9jayBoZWlnaHQgKGluIGJsb2NrcykgZm9yIHRoaXMgdHJhbnNhY3Rpb24uIFRoZSByZXN1bHRpbmdcbiAgICAgICAqIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSBtaW5lZCBiZWZvcmUgdGhlIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAgICAgKi9cbiAgICAgIHR4bl9sb2NrX2hlaWdodD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgaW4gc2F0cyB0aGF0IGlzIHN0YWtlZCBpbiB0aGUgdHJhbnNhY3Rpb24gYmVpbmcgd2l0aGRyYXduXG4gICAgICAgKi9cbiAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbiBvdXRwdXQgaW5kZXggb2YgdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24gZnJvbSB3aGljaCB0byB3aXRoZHJhdy5cbiAgICAgICAqIEZvciBzdGFraW5nIHRyYW5zYWN0aW9ucyBnZW5lcmF0ZWQgYnkgQ3ViZVNpZ25lciwgdGhpcyB3aWxsIGFsd2F5cyBiZSAwLlxuICAgICAgICogRm9yIHNsYXNoaW5nIHRyYW5zYWN0aW9ucyBnZW5lcmF0ZWQgYnkgQ3ViZVNpZ25lciwgdGhpcyB3aWxsIGFsd2F5cyBiZSAxLlxuICAgICAgICovXG4gICAgICB2b3V0OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBCYWRHYXRld2F5RXJyb3JDb2RlOlxuICAgICAgfCBcIkdlbmVyaWNcIlxuICAgICAgfCBcIkN1c3RvbUNoYWluUnBjRXJyb3JcIlxuICAgICAgfCBcIkVzcGxvcmFBcGlFcnJvclwiXG4gICAgICB8IFwiU2VudHJ5QXBpRXJyb3JcIlxuICAgICAgfCBcIkNhbGxXZWJob29rRXJyb3JcIlxuICAgICAgfCBcIk9BdXRoUHJvdmlkZXJFcnJvclwiXG4gICAgICB8IFwiT2lkY0Rpc292ZXJ5RmFpbGVkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVySndrRW5kcG9pbnRVbmF2YWlsYWJsZVwiXG4gICAgICB8IFwiU210cFNlcnZlclVuYXZhaWxhYmxlXCI7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQmFkUmVxdWVzdEVycm9yQ29kZTpcbiAgICAgIHwgXCJHZW5lcmljQmFkUmVxdWVzdFwiXG4gICAgICB8IFwiRGlzYWxsb3dlZEFsbG93UnVsZVJlZmVyZW5jZVwiXG4gICAgICB8IFwiSW52YWxpZFBhZ2luYXRpb25Ub2tlblwiXG4gICAgICB8IFwiSW52YWxpZEVtYWlsXCJcbiAgICAgIHwgXCJJbnZhbGlkRW1haWxUZW1wbGF0ZVwiXG4gICAgICB8IFwiUXVlcnlNZXRyaWNzRXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRUZWxlZ3JhbURhdGFcIlxuICAgICAgfCBcIlZhbGlkYXRpb25FcnJvclwiXG4gICAgICB8IFwiV2ViaG9va1BvbGljeVRpbWVvdXRPdXRPZkJvdW5kc1wiXG4gICAgICB8IFwiV2ViaG9va1BvbGljeURpc2FsbG93ZWRVcmxTY2hlbWVcIlxuICAgICAgfCBcIldlYmhvb2tQb2xpY3lEaXNhbGxvd2VkVXJsSG9zdFwiXG4gICAgICB8IFwiV2ViaG9va1BvbGljeURpc2FsbG93ZWRIZWFkZXJzXCJcbiAgICAgIHwgXCJSZXNlcnZlZE5hbWVcIlxuICAgICAgfCBcIlVzZXJFbWFpbE5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIkVtYWlsUGFzc3dvcmROb3RGb3VuZFwiXG4gICAgICB8IFwiUGFzc3dvcmRBdXRoTm90QWxsb3dlZEJ5SW52aXRhdGlvblwiXG4gICAgICB8IFwiT25lVGltZUNvZGVFeHBpcmVkXCJcbiAgICAgIHwgXCJJbnZhbGlkQm9keVwiXG4gICAgICB8IFwiSW52YWxpZEp3dFwiXG4gICAgICB8IFwiSW52aXRhdGlvbk5vTG9uZ2VyVmFsaWRcIlxuICAgICAgfCBcIlRva2VuUmVxdWVzdEVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeUNvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5TnVtQXV0aEZhY3RvcnNcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lOdW1BbGxvd2VkQXBwcm92ZXJzXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5R3JhY2VQZXJpb2RUb29Mb25nXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFieWxvblN0YWtpbmdQb2xpY3lQYXJhbXNcIlxuICAgICAgfCBcIkludmFsaWRTdWlUeFJlY2VpdmVyc0VtcHR5QWxsb3dsaXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkQnRjVHhSZWNlaXZlcnNFbXB0eUFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZFJlcXVpcmVSb2xlU2Vzc2lvbkFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZENyZWF0ZUtleUNvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkRGlmZmllSGVsbG1hbkNvdW50XCJcbiAgICAgIHwgXCJPcmdJbnZpdGVFeGlzdGluZ1VzZXJcIlxuICAgICAgfCBcIk9yZ1VzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJPcmdOYW1lVGFrZW5cIlxuICAgICAgfCBcIkt3a05vdEZvdW5kSW5SZWdpb25cIlxuICAgICAgfCBcIk9yZ0lzTm90T3JnRXhwb3J0XCJcbiAgICAgIHwgXCJSb2xlTmFtZVRha2VuXCJcbiAgICAgIHwgXCJQb2xpY3lOYW1lVGFrZW5cIlxuICAgICAgfCBcIk5hbWVUYWtlblwiXG4gICAgICB8IFwiQ29udGFjdE5hbWVJbnZhbGlkXCJcbiAgICAgIHwgXCJDb250YWN0QWRkcmVzc2VzSW52YWxpZFwiXG4gICAgICB8IFwiQ29udGFjdExhYmVsSW52YWxpZFwiXG4gICAgICB8IFwiQ29udGFjdE1vZGlmaWVkXCJcbiAgICAgIHwgXCJQb2xpY3lOb3RGb3VuZFwiXG4gICAgICB8IFwiUG9saWN5VmVyc2lvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJQb2xpY3lSdWxlRGlzYWxsb3dlZEJ5VHlwZVwiXG4gICAgICB8IFwiUG9saWN5VHlwZURpc2FsbG93ZWRcIlxuICAgICAgfCBcIlBvbGljeUR1cGxpY2F0ZUVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lTdGlsbEF0dGFjaGVkXCJcbiAgICAgIHwgXCJQb2xpY3lNb2RpZmllZFwiXG4gICAgICB8IFwiUG9saWN5Tm90QXR0YWNoZWRcIlxuICAgICAgfCBcIkFkZEtleVRvUm9sZUNvdW50VG9vSGlnaFwiXG4gICAgICB8IFwiSW52YWxpZEtleUlkXCJcbiAgICAgIHwgXCJJbnZhbGlkVGltZUxvY2tBbHJlYWR5SW5UaGVQYXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkUmVzdHJpY3RlZFNjb3Blc1wiXG4gICAgICB8IFwiSW52YWxpZFVwZGF0ZVwiXG4gICAgICB8IFwiSW52YWxpZE1ldGFkYXRhTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiS2V5Tm90Rm91bmRcIlxuICAgICAgfCBcIlNpd2VDaGFsbGVuZ2VOb3RGb3VuZFwiXG4gICAgICB8IFwiU2l3ZUludmFsaWRSZXF1ZXN0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0RGVyaXZlZEtleVwiXG4gICAgICB8IFwiVXNlckV4cG9ydFB1YmxpY0tleUludmFsaWRcIlxuICAgICAgfCBcIk5pc3RQMjU2UHVibGljS2V5SW52YWxpZFwiXG4gICAgICB8IFwiVW5hYmxlVG9BY2Nlc3NTbXRwUmVsYXlcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRJblByb2dyZXNzXCJcbiAgICAgIHwgXCJSb2xlTm90Rm91bmRcIlxuICAgICAgfCBcIkludmFsaWRSb2xlTmFtZU9ySWRcIlxuICAgICAgfCBcIkludmFsaWRNZmFSZWNlaXB0T3JnSWRNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdEludmFsaWRPcmdJZFwiXG4gICAgICB8IFwiTWZhUmVxdWVzdE5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5VHlwZVwiXG4gICAgICB8IFwiSW52YWxpZFByb3BlcnRpZXNGb3JLZXlUeXBlXCJcbiAgICAgIHwgXCJNaXNtYXRjaGVkS2V5UHJvcGVydGllc1BhdGNoXCJcbiAgICAgIHwgXCJNaXNzaW5nQmluYW5jZUFwaUtleVwiXG4gICAgICB8IFwiQmluYW5jZUtleU1hc3Rlck1pc21hdGNoXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxcIlxuICAgICAgfCBcIkludmFsaWRIZXhWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEJhc2UzMlZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFzZTU4VmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRCYXNlNjRWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZFNzNThWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEZvcmtWZXJzaW9uTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoQWRkcmVzc1wiXG4gICAgICB8IFwiSW52YWxpZFN0ZWxsYXJBZGRyZXNzXCJcbiAgICAgIHwgXCJJbnZhbGlkT3JnTmFtZU9ySWRcIlxuICAgICAgfCBcIkludmFsaWRVcGRhdGVPcmdSZXF1ZXN0RGlzYWxsb3dlZE1mYVR5cGVcIlxuICAgICAgfCBcIkludmFsaWRVcGRhdGVPcmdSZXF1ZXN0RW1wdHlBbGxvd2VkTWZhVHlwZXNcIlxuICAgICAgfCBcIkVtYWlsT3RwRGVsYXlUb29TaG9ydEZvclJlZ2lzdGVyTWZhXCJcbiAgICAgIHwgXCJJbnZhbGlkU3Rha2VEZXBvc2l0XCJcbiAgICAgIHwgXCJJbnZhbGlkQmxvYlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRGlmZmllSGVsbG1hblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRTb2xhbmFTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZEVpcDcxMlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJPbmx5U3BlY2lmeU9uZVwiXG4gICAgICB8IFwiTm9PaWRjRGF0YUluUHJvb2ZcIlxuICAgICAgfCBcIkludmFsaWRFdm1TaWduUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZEV0aDJTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZERlcml2ZUtleVJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRTdGFraW5nQW1vdW50XCJcbiAgICAgIHwgXCJDdXN0b21TdGFraW5nQW1vdW50Tm90QWxsb3dlZEZvcldyYXBwZXJDb250cmFjdFwiXG4gICAgICB8IFwiSW52YWxpZFVuc3Rha2VSZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkQ3JlYXRlVXNlclJlcXVlc3RcIlxuICAgICAgfCBcIlVzZXJBbHJlYWR5RXhpc3RzXCJcbiAgICAgIHwgXCJJZHBVc2VyQWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiQ29nbml0b1VzZXJBbHJlYWR5T3JnTWVtYmVyXCJcbiAgICAgIHwgXCJVc2VyTm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJXaXRoRW1haWxOb3RGb3VuZFwiXG4gICAgICB8IFwiUG9saWN5S2V5TWlzbWF0Y2hcIlxuICAgICAgfCBcIkVtcHR5U2NvcGVzXCJcbiAgICAgIHwgXCJJbnZhbGlkU2NvcGVzRm9yUm9sZVNlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRMaWZldGltZVwiXG4gICAgICB8IFwiTm9TaW5nbGVLZXlGb3JVc2VyXCJcbiAgICAgIHwgXCJJbnZhbGlkT3JnUG9saWN5UnVsZVwiXG4gICAgICB8IFwiU291cmNlSXBBbGxvd2xpc3RFbXB0eVwiXG4gICAgICB8IFwiTGltaXRXaW5kb3dUb29Mb25nXCJcbiAgICAgIHwgXCJFcmMyMENvbnRyYWN0RGlzYWxsb3dlZFwiXG4gICAgICB8IFwiRW1wdHlSdWxlRXJyb3JcIlxuICAgICAgfCBcIk9wdGlvbmFsTGlzdEVtcHR5XCJcbiAgICAgIHwgXCJNdWx0aXBsZUV4Y2x1c2l2ZUZpZWxkc1Byb3ZpZGVkXCJcbiAgICAgIHwgXCJEdXBsaWNhdGVGaWVsZEVudHJ5XCJcbiAgICAgIHwgXCJJbnZhbGlkUmFuZ2VcIlxuICAgICAgfCBcIkludmFsaWRPcmdQb2xpY3lSZXBlYXRlZFJ1bGVcIlxuICAgICAgfCBcIkludmFsaWRTdWlUcmFuc2FjdGlvblwiXG4gICAgICB8IFwiU3VpU2VuZGVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkF2YVNpZ25IYXNoRXJyb3JcIlxuICAgICAgfCBcIkF2YVNpZ25FcnJvclwiXG4gICAgICB8IFwiQnRjU2Vnd2l0SGFzaEVycm9yXCJcbiAgICAgIHwgXCJCdGNUYXByb290SGFzaEVycm9yXCJcbiAgICAgIHwgXCJCdGNTaWduRXJyb3JcIlxuICAgICAgfCBcIlRhcHJvb3RTaWduRXJyb3JcIlxuICAgICAgfCBcIkVpcDcxMlNpZ25FcnJvclwiXG4gICAgICB8IFwiSW52YWxpZE1lbWJlclJvbGVJblVzZXJBZGRcIlxuICAgICAgfCBcIkludmFsaWRNZW1iZXJSb2xlSW5SZWNpcGllbnRBZGRcIlxuICAgICAgfCBcIlRoaXJkUGFydHlVc2VyQWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiT2lkY0lkZW50aXR5QWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiVXNlckFscmVhZHlIYXNJZGVudGl0eVwiXG4gICAgICB8IFwiVGhpcmRQYXJ0eVVzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiRGVsZXRlT2lkY1VzZXJFcnJvclwiXG4gICAgICB8IFwiRGVsZXRlVXNlckVycm9yXCJcbiAgICAgIHwgXCJTZXNzaW9uUm9sZU1pc21hdGNoXCJcbiAgICAgIHwgXCJJbnZhbGlkT2lkY1Rva2VuXCJcbiAgICAgIHwgXCJJbnZhbGlkT2lkY0lkZW50aXR5XCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyVW5zdXBwb3J0ZWRcIlxuICAgICAgfCBcIk9pZGNJc3N1ZXJOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyTm9BcHBsaWNhYmxlSndrXCJcbiAgICAgIHwgXCJGaWRvS2V5QWxyZWFkeVJlZ2lzdGVyZWRcIlxuICAgICAgfCBcIkZpZG9LZXlTaWduQ291bnRUb29Mb3dcIlxuICAgICAgfCBcIkZpZG9WZXJpZmljYXRpb25GYWlsZWRcIlxuICAgICAgfCBcIkZpZG9DaGFsbGVuZ2VNZmFNaXNtYXRjaFwiXG4gICAgICB8IFwiVW5zdXBwb3J0ZWRMZWdhY3lDb2duaXRvU2Vzc2lvblwiXG4gICAgICB8IFwiSW52YWxpZElkZW50aXR5UHJvb2ZcIlxuICAgICAgfCBcIlBhZ2luYXRpb25EYXRhRXhwaXJlZFwiXG4gICAgICB8IFwiRXhpc3RpbmdLZXlzVmlvbGF0ZUV4Y2x1c2l2ZUtleUFjY2Vzc1wiXG4gICAgICB8IFwiRXhwb3J0RGVsYXlUb29TaG9ydFwiXG4gICAgICB8IFwiRXhwb3J0V2luZG93VG9vTG9uZ1wiXG4gICAgICB8IFwiSW52YWxpZFRvdHBGYWlsdXJlTGltaXRcIlxuICAgICAgfCBcIkludmFsaWRFaXAxOTFTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiQ2Fubm90UmVzZW5kVXNlckludml0YXRpb25cIlxuICAgICAgfCBcIkludmFsaWROb3RpZmljYXRpb25FbmRwb2ludENvdW50XCJcbiAgICAgIHwgXCJDYW5ub3REZWxldGVQZW5kaW5nU3Vic2NyaXB0aW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkTm90aWZpY2F0aW9uVXJsUHJvdG9jb2xcIlxuICAgICAgfCBcIkVtcHR5T25lT2ZPcmdFdmVudEZpbHRlclwiXG4gICAgICB8IFwiRW1wdHlBbGxFeGNlcHRPcmdFdmVudEZpbHRlclwiXG4gICAgICB8IFwiSW52YWxpZFRhcE5vZGVIYXNoXCJcbiAgICAgIHwgXCJJbnZhbGlkT25lVGltZUNvZGVcIlxuICAgICAgfCBcIk1lc3NhZ2VOb3RGb3VuZFwiXG4gICAgICB8IFwiTWVzc2FnZUFscmVhZHlTaWduZWRcIlxuICAgICAgfCBcIk1lc3NhZ2VSZWplY3RlZFwiXG4gICAgICB8IFwiTWVzc2FnZVJlcGxhY2VkXCJcbiAgICAgIHwgXCJJbnZhbGlkTWVzc2FnZVR5cGVcIlxuICAgICAgfCBcIkVtcHR5QWRkcmVzc1wiXG4gICAgICB8IFwiSW52YWxpZEV0aDJTaWduaW5nUG9saWN5U2xvdFJhbmdlXCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25pbmdQb2xpY3lFcG9jaFJhbmdlXCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25pbmdQb2xpY3lUaW1lc3RhbXBSYW5nZVwiXG4gICAgICB8IFwiSW52YWxpZEV0aDJTaWduaW5nUG9saWN5T3ZlcmxhcHBpbmdSdWxlXCJcbiAgICAgIHwgXCJScGNVcmxNaXNzaW5nXCJcbiAgICAgIHwgXCJNbWlDaGFpbklkTWlzc2luZ1wiXG4gICAgICB8IFwiRXRoZXJzSW52YWxpZFJwY1VybFwiXG4gICAgICB8IFwiRXRoZXJzR2V0VHJhbnNhY3Rpb25Db3VudEVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkUGFzc3dvcmRcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nRmVlUGx1c0R1c3RPdmVyZmxvd1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nSW5jb3JyZWN0S2V5XCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ1NlZ3dpdE5vbkRlcG9zaXRcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nUmVnaXN0cmF0aW9uUmVxdWlyZXNUYXByb290XCJcbiAgICAgIHwgXCJQc2J0U2lnbmluZ1wiXG4gICAgICB8IFwiVG9vTWFueVJlc2V0c1wiXG4gICAgICB8IFwiVG9vTWFueVJlcXVlc3RzXCJcbiAgICAgIHwgXCJUb29NYW55RmFpbGVkTG9naW5zXCJcbiAgICAgIHwgXCJCYWRCdGNNZXNzYWdlU2lnblAyc2hGbGFnXCJcbiAgICAgIHwgXCJJbnZhbGlkVGVuZGVybWludFJlcXVlc3RcIlxuICAgICAgfCBcIlBvbGljeVZlcnNpb25NYXhSZWFjaGVkXCJcbiAgICAgIHwgXCJQb2xpY3lWZXJzaW9uSW52YWxpZFwiXG4gICAgICB8IFwiUG9saWN5U2VjcmV0TGltaXRSZWFjaGVkXCJcbiAgICAgIHwgXCJQb2xpY3lTZWNyZXRUb29MYXJnZVwiXG4gICAgICB8IFwiSW52YWxpZEltcG9ydEtleVwiXG4gICAgICB8IFwiQWxpZW5Pd25lckludmFsaWRcIlxuICAgICAgfCBcIkVtcHR5VXBkYXRlUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZFBvbGljeVJlZmVyZW5jZVwiXG4gICAgICB8IFwiUG9saWN5RW5naW5lRGlzYWJsZWRcIlxuICAgICAgfCBcIkludmFsaWRXYXNtUG9saWN5XCJcbiAgICAgIHwgXCJJbnZhbGlkUG9saWN5XCJcbiAgICAgIHwgXCJSZWR1bmRhbnREZXJpdmF0aW9uUGF0aFwiXG4gICAgICB8IFwiSW1wb3J0S2V5TWlzc2luZ1wiXG4gICAgICB8IFwiSW52YWxpZEFiaU1ldGhvZHNcIlxuICAgICAgfCBcIkJhYnlsb25Db3ZTaWduXCJcbiAgICAgIHwgXCJJbnZhbGlkUG9saWN5TG9nc1JlcXVlc3RcIlxuICAgICAgfCBcIlVzZXJQcm9maWxlTWlncmF0aW9uTXVsdGlwbGVFbnRyaWVzXCJcbiAgICAgIHwgXCJVc2VyUHJvZmlsZU1pZ3JhdGlvblRvb01hbnlJdGVtc1wiXG4gICAgICB8IFwiSW5wdXRUb29TaG9ydFwiXG4gICAgICB8IFwiSW52YWxpZFR3ZWFrTGVuZ3RoXCJcbiAgICAgIHwgXCJJbnZhbGlkQ3VzdG9tQ2hhaW5zXCJcbiAgICAgIHwgXCJJbnZhbGlkUnBjUmVxdWVzdFwiO1xuICAgIEJpbGxpbmdBcmdzOiB7XG4gICAgICBiaWxsaW5nX29yZzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIGV2ZW50X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmlsbGluZ0V2ZW50XCJdO1xuICAgICAga2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICByb2xlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICB1c2VyPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgfTtcbiAgICBCaWxsaW5nRGltZW5zaW9uczoge1xuICAgICAga2luZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaWxsaW5nRXZlbnRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtZXRyaWNzIG11c3QgaW5jbHVkZSAnb3JnX2lkJyBhcyBhIGRpbWVuc2lvbi4gKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEJpbGxpbmcgZXZlbnQgdHlwZXMuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBCaWxsaW5nRXZlbnQ6XG4gICAgICB8IFwiTW1pXCJcbiAgICAgIHwgXCJNbWlNZXNzYWdlR2V0XCJcbiAgICAgIHwgXCJNbWlNZXNzYWdlTGlzdFwiXG4gICAgICB8IFwiTW1pTWVzc2FnZVNpZ25cIlxuICAgICAgfCBcIk1taU1lc3NhZ2VSZWplY3RcIlxuICAgICAgfCBcIk1taU1lc3NhZ2VEZWxldGVcIlxuICAgICAgfCBcIkFib3V0TWVcIlxuICAgICAgfCBcIlVzZXJSZXNldEVtYWlsSW5pdFwiXG4gICAgICB8IFwiVXNlclJlc2V0RW1haWxDb21wbGV0ZVwiXG4gICAgICB8IFwiVXNlckRlbGV0ZVRvdHBcIlxuICAgICAgfCBcIlVzZXJSZXNldFRvdHBJbml0XCJcbiAgICAgIHwgXCJVc2VyUmVzZXRUb3RwQ29tcGxldGVcIlxuICAgICAgfCBcIlVzZXJWZXJpZnlUb3RwXCJcbiAgICAgIHwgXCJVc2VyUmVnaXN0ZXJGaWRvSW5pdFwiXG4gICAgICB8IFwiVXNlclJlZ2lzdGVyRmlkb0NvbXBsZXRlXCJcbiAgICAgIHwgXCJVc2VyRGVsZXRlRmlkb1wiXG4gICAgICB8IFwiQ3JlYXRlUHJvb2ZPaWRjXCJcbiAgICAgIHwgXCJDcmVhdGVQcm9vZkN1YmVTaWduZXJcIlxuICAgICAgfCBcIlZlcmlmeVByb29mXCJcbiAgICAgIHwgXCJBZGRPaWRjSWRlbnRpdHlcIlxuICAgICAgfCBcIlJlbW92ZU9pZGNJZGVudGl0eVwiXG4gICAgICB8IFwiTGlzdE9pZGNJZGVudGl0aWVzXCJcbiAgICAgIHwgXCJHZXRPcmdcIlxuICAgICAgfCBcIlVwZGF0ZU9yZ1wiXG4gICAgICB8IFwiR2V0T3JnRXhwb3J0XCJcbiAgICAgIHwgXCJDcmVhdGVPcmdcIlxuICAgICAgfCBcIkxpc3RLZXlzXCJcbiAgICAgIHwgXCJBdHRlc3RLZXlcIlxuICAgICAgfCBcIkdldEtleVwiXG4gICAgICB8IFwiR2V0S2V5QnlNYXRlcmlhbElkXCJcbiAgICAgIHwgXCJMaXN0S2V5Um9sZXNcIlxuICAgICAgfCBcIlVwZGF0ZUtleVwiXG4gICAgICB8IFwiTGlzdEhpc3RvcmljYWxLZXlUeFwiXG4gICAgICB8IFwiSW52aXRlXCJcbiAgICAgIHwgXCJDYW5jZWxJbnZpdGF0aW9uXCJcbiAgICAgIHwgXCJMaXN0SW52aXRhdGlvbnNcIlxuICAgICAgfCBcIkxpc3RVc2Vyc1wiXG4gICAgICB8IFwiR2V0VXNlclwiXG4gICAgICB8IFwiR2V0VXNlckJ5RW1haWxcIlxuICAgICAgfCBcIkdldFVzZXJCeU9pZGNcIlxuICAgICAgfCBcIlVwZGF0ZU1lbWJlcnNoaXBcIlxuICAgICAgfCBcIlJlc2V0TWVtYmVyTWZhXCJcbiAgICAgIHwgXCJDb21wbGV0ZVJlc2V0TWVtYmVyTWZhXCJcbiAgICAgIHwgXCJDcmVhdGVSb2xlXCJcbiAgICAgIHwgXCJBdHRlc3RSb2xlXCJcbiAgICAgIHwgXCJHZXRSb2xlXCJcbiAgICAgIHwgXCJMaXN0VG9rZW5LZXlzXCJcbiAgICAgIHwgXCJMaXN0Um9sZXNcIlxuICAgICAgfCBcIkdldFJvbGVLZXlcIlxuICAgICAgfCBcIkxpc3RSb2xlS2V5c1wiXG4gICAgICB8IFwiTGlzdFJvbGVVc2Vyc1wiXG4gICAgICB8IFwiVXBkYXRlUm9sZVwiXG4gICAgICB8IFwiRGVsZXRlUm9sZVwiXG4gICAgICB8IFwiQ29uZmlndXJlRW1haWxcIlxuICAgICAgfCBcIkdldEVtYWlsQ29uZmlnXCJcbiAgICAgIHwgXCJEZWxldGVFbWFpbENvbmZpZ1wiXG4gICAgICB8IFwiTGlzdEhpc3RvcmljYWxSb2xlVHhcIlxuICAgICAgfCBcIkNyZWF0ZVBvbGljeVwiXG4gICAgICB8IFwiR2V0UG9saWN5XCJcbiAgICAgIHwgXCJMaXN0UG9saWNpZXNcIlxuICAgICAgfCBcIkRlbGV0ZVBvbGljeVwiXG4gICAgICB8IFwiVXBkYXRlUG9saWN5XCJcbiAgICAgIHwgXCJJbnZva2VQb2xpY3lcIlxuICAgICAgfCBcIkdldFBvbGljeUxvZ3NcIlxuICAgICAgfCBcIlVwbG9hZFdhc21Qb2xpY3lcIlxuICAgICAgfCBcIkdldFBvbGljeVNlY3JldHNcIlxuICAgICAgfCBcIlVwZGF0ZVBvbGljeVNlY3JldHNcIlxuICAgICAgfCBcIlNldFBvbGljeVNlY3JldFwiXG4gICAgICB8IFwiRGVsZXRlUG9saWN5U2VjcmV0XCJcbiAgICAgIHwgXCJDcmVhdGVQb2xpY3lJbXBvcnRLZXlcIlxuICAgICAgfCBcIkdldFBvbGljeUJ1Y2tldFwiXG4gICAgICB8IFwiTGlzdFBvbGljeUJ1Y2tldHNcIlxuICAgICAgfCBcIlVwZGF0ZVBvbGljeUJ1Y2tldFwiXG4gICAgICB8IFwiVXNlckV4cG9ydERlbGV0ZVwiXG4gICAgICB8IFwiVXNlckV4cG9ydExpc3RcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRJbml0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0Q29tcGxldGVcIlxuICAgICAgfCBcIkFkZFVzZXJUb1JvbGVcIlxuICAgICAgfCBcIlJlbW92ZVVzZXJGcm9tUm9sZVwiXG4gICAgICB8IFwiTWZhQXBwcm92ZUNzXCJcbiAgICAgIHwgXCJNZmFSZWplY3RDc1wiXG4gICAgICB8IFwiTWZhR2V0XCJcbiAgICAgIHwgXCJNZmFMaXN0XCJcbiAgICAgIHwgXCJBZGRLZXlzVG9Sb2xlXCJcbiAgICAgIHwgXCJSZW1vdmVLZXlGcm9tUm9sZVwiXG4gICAgICB8IFwiQ3JlYXRlVG9rZW5cIlxuICAgICAgfCBcIkNyZWF0ZVNlc3Npb25cIlxuICAgICAgfCBcIlJldm9rZVNlc3Npb25cIlxuICAgICAgfCBcIlJldm9rZUN1cnJlbnRTZXNzaW9uXCJcbiAgICAgIHwgXCJSZXZva2VTZXNzaW9uc1wiXG4gICAgICB8IFwiTGlzdFNlc3Npb25zXCJcbiAgICAgIHwgXCJHZXRTZXNzaW9uXCJcbiAgICAgIHwgXCJTaWduZXJTZXNzaW9uUmVmcmVzaFwiXG4gICAgICB8IFwiTWZhQXBwcm92ZVRvdHBcIlxuICAgICAgfCBcIk1mYVJlamVjdFRvdHBcIlxuICAgICAgfCBcIk1mYUZpZG9Jbml0XCJcbiAgICAgIHwgXCJNZmFBcHByb3ZlRmlkb0NvbXBsZXRlXCJcbiAgICAgIHwgXCJNZmFSZWplY3RGaWRvQ29tcGxldGVcIlxuICAgICAgfCBcIk1mYUVtYWlsSW5pdFwiXG4gICAgICB8IFwiTWZhRW1haWxDb21wbGV0ZVwiXG4gICAgICB8IFwiQ3ViZTNzaWduZXJIZWFydGJlYXRcIlxuICAgICAgfCBcIkNyZWF0ZUNvbnRhY3RcIlxuICAgICAgfCBcIkdldENvbnRhY3RcIlxuICAgICAgfCBcIkxpc3RDb250YWN0c1wiXG4gICAgICB8IFwiRGVsZXRlQ29udGFjdFwiXG4gICAgICB8IFwiVXBkYXRlQ29udGFjdFwiXG4gICAgICB8IFwiTG9va3VwQ29udGFjdHNCeUFkZHJlc3NcIlxuICAgICAgfCBcIlF1ZXJ5TWV0cmljc1wiXG4gICAgICB8IFwiUXVlcnlBdWRpdExvZ1wiXG4gICAgICB8IFwiQ291bnRzXCJcbiAgICAgIHwgXCJDcmVhdGVLZXlcIlxuICAgICAgfCBcIkltcG9ydEtleVwiXG4gICAgICB8IFwiQ3JlYXRlS2V5SW1wb3J0S2V5XCJcbiAgICAgIHwgXCJEZXJpdmVLZXlcIlxuICAgICAgfCBcIkRlbGV0ZUtleVwiXG4gICAgICB8IFwiQXZhU2lnblwiXG4gICAgICB8IFwiQXZhU2VyaWFsaXplZFR4U2lnblwiXG4gICAgICB8IFwiQmFieWxvblJlZ2lzdHJhdGlvblwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdcIlxuICAgICAgfCBcIkJhYnlsb25Db3ZTaWduXCJcbiAgICAgIHwgXCJCbG9iU2lnblwiXG4gICAgICB8IFwiQnRjTWVzc2FnZVNpZ25cIlxuICAgICAgfCBcIkJ0Y1NpZ25cIlxuICAgICAgfCBcIkRpZmZpZUhlbGxtYW5FeGNoYW5nZVwiXG4gICAgICB8IFwiUHNidFNpZ25cIlxuICAgICAgfCBcIlBzYnRMZWdhY3lJbnB1dFNpZ25cIlxuICAgICAgfCBcIlBzYnRTZWd3aXRJbnB1dFNpZ25cIlxuICAgICAgfCBcIlBzYnRUYXByb290SW5wdXRTaWduXCJcbiAgICAgIHwgXCJUYXByb290U2lnblwiXG4gICAgICB8IFwiRWlwNzEyU2lnblwiXG4gICAgICB8IFwiRWlwMTkxU2lnblwiXG4gICAgICB8IFwiRXRoMVNpZ25cIlxuICAgICAgfCBcIkV0aDJTaWduXCJcbiAgICAgIHwgXCJTb2xhbmFTaWduXCJcbiAgICAgIHwgXCJTdWlTaWduXCJcbiAgICAgIHwgXCJUZW5kZXJtaW50U2lnblwiXG4gICAgICB8IFwiU3Rha2VcIlxuICAgICAgfCBcIlVuc3Rha2VcIlxuICAgICAgfCBcIlBhc3NrZXlBdXRoSW5pdFwiXG4gICAgICB8IFwiUGFzc2tleUF1dGhDb21wbGV0ZVwiXG4gICAgICB8IFwiT2lkY0F1dGhcIlxuICAgICAgfCBcIk9hdXRoMlR3aXR0ZXJcIlxuICAgICAgfCBcIk9BdXRoMlRva2VuUmVmcmVzaFwiXG4gICAgICB8IFwiRW1haWxPdHBBdXRoXCJcbiAgICAgIHwgXCJTaXdlSW5pdFwiXG4gICAgICB8IFwiU2l3ZUNvbXBsZXRlXCJcbiAgICAgIHwgXCJUZWxlZ3JhbUF1dGhcIlxuICAgICAgfCBcIkNyZWF0ZU9pZGNVc2VyXCJcbiAgICAgIHwgXCJEZWxldGVPaWRjVXNlclwiXG4gICAgICB8IFwiRGVsZXRlVXNlclwiXG4gICAgICB8IFwiQ3JlYXRlRW90c05vbmNlc1wiXG4gICAgICB8IFwiRW90c1NpZ25cIlxuICAgICAgfCBcIkF1dGhNaWdyYXRpb25JZGVudGl0eUFkZFwiXG4gICAgICB8IFwiQXV0aE1pZ3JhdGlvbklkZW50aXR5UmVtb3ZlXCJcbiAgICAgIHwgXCJBdXRoTWlncmF0aW9uVXNlclVwZGF0ZVwiXG4gICAgICB8IFwiS2V5Q3JlYXRlZFwiXG4gICAgICB8IFwiS2V5SW1wb3J0ZWRcIlxuICAgICAgfCBcIkludml0YXRpb25BY2NlcHRcIlxuICAgICAgfCBcIklkcEF1dGhlbnRpY2F0ZVwiXG4gICAgICB8IFwiSWRwUGFzc3dvcmRSZXNldFJlcXVlc3RcIlxuICAgICAgfCBcIklkcFBhc3N3b3JkUmVzZXRDb25maXJtXCJcbiAgICAgIHwgXCJScGNBcGlcIlxuICAgICAgfCBcIlJwY0NyZWF0ZVRyYW5zYWN0aW9uXCJcbiAgICAgIHwgXCJScGNHZXRUcmFuc2FjdGlvblwiXG4gICAgICB8IFwiUnBjTGlzdFRyYW5zYWN0aW9uc1wiXG4gICAgICB8IFwiUnBjQmluYW5jZVN1YlRvTWFzdGVyXCJcbiAgICAgIHwgXCJScGNCaW5hbmNlU3ViVG9TdWJcIlxuICAgICAgfCBcIlJwY0JpbmFuY2VVbml2ZXJzYWxUcmFuc2ZlclwiXG4gICAgICB8IFwiUnBjQmluYW5jZVN1YkFjY291bnRBc3NldHNcIlxuICAgICAgfCBcIlJwY0JpbmFuY2VBY2NvdW50SW5mb1wiXG4gICAgICB8IFwiUnBjQmluYW5jZVN1YkFjY291bnRUcmFuc2Zlckhpc3RvcnlcIlxuICAgICAgfCBcIlJwY0JpbmFuY2VVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlcIlxuICAgICAgfCBcIlJwY0JpbmFuY2VXaXRoZHJhd1wiXG4gICAgICB8IFwiUnBjQmluYW5jZVdpdGhkcmF3SGlzdG9yeVwiXG4gICAgICB8IFwiQ3VzdG9tQ2hhaW5ScGNDYWxsXCJcbiAgICAgIHwgXCJFc3Bsb3JhQXBpQ2FsbFwiXG4gICAgICB8IFwiU2VudHJ5QXBpQ2FsbFwiXG4gICAgICB8IFwiU2VudHJ5QXBpQ2FsbFB1YmxpY1wiXG4gICAgICB8IFwiTW1pSndrU2V0XCJcbiAgICAgIHwgXCJBdHRlc3RhdGlvbkp3a1NldFwiXG4gICAgICB8IFwiVXNlck9yZ3NcIlxuICAgICAgfCBcIlB1YmxpY09yZ0luZm9cIlxuICAgICAgfCBcIkVtYWlsTXlPcmdzXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGVudmVsb3BlIGZvciBhbGwgQmluYW5jZSBSUEMgbWV0aG9kcy4gKi9cbiAgICBCaW5hbmNlQWNjb3VudEluZm9QYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjb3VudEluZm9SZXF1ZXN0XCJdICYge1xuICAgICAgZHJ5UnVuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlRHJ5UnVuTW9kZVwiXSB8IG51bGw7XG4gICAgICBrZXlJZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIFwicmVjZWl2ZSB3aW5kb3dcIiwgaS5lLiwgZm9yIGhvdyBsb25nIHRoZSByZXF1ZXN0IHN0YXlzIHZhbGlkLlxuICAgICAgICogTWF5IG9ubHkgYmUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcywgd2l0aCB1cCB0byB0aHJlZSBkZWNpbWFsIHBsYWNlcyBvZiBwcmVjaXNpb24uXG4gICAgICAgKiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byBcIjEwMDAwXCIuIE11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBcIjYwMDAwXCIuXG4gICAgICAgKi9cbiAgICAgIHJlY3ZXaW5kb3c/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgQmluYW5jZUFwaVByb3BlcnRpZXNQYXRjaDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgQmluYW5jZS1pc3N1ZWQgQVBJIGtleSBzdHJpbmcuIEVuY3J5cHRlZCBzZXJ2ZXItc2lkZSBiZWZvcmUgc3RvcmFnZS4gKi9cbiAgICAgIGFwaV9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbWFpbCBhZGRyZXNzIG9mIHRoZSBCaW5hbmNlIChtYXN0ZXIgb3Igc3ViKSBhY2NvdW50IHRoaXMga2V5IGF1dGhlbnRpY2F0ZXMgYXMuICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhpcyBjb3JyZXNwb25kcyB0byBhIG1hc3RlciAoYXMgb3Bwb3NlZCB0byBhIHN1YikgYWNjb3VudCBvbiBCaW5hbmNlLiAqL1xuICAgICAgaXNfbWFzdGVyPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFyYml0cmFyeSBsYWJlbC4gVXNlZnVsIGZvciBzdG9yaW5nIHRoZSBjb3JyZXNwb25kaW5nIEFQSSBrZXkgbGFiZWwgb24gdGhlIEJpbmFuY2Ugc2lkZS4gKi9cbiAgICAgIGxhYmVsPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIEJpbmFuY2VEcnlSdW5BcmdzOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBCaW5hbmNlIEFQSSBtZXRob2QgdGhhdCB3b3VsZCBoYXZlIGJlZW4gdXNlZCAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBCaW5hbmNlIEFQSSB1cmwgbWV0aG9kIHRoYXQgd291bGQgaGF2ZSBiZWVuIGNhbGxlZCAqL1xuICAgICAgdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGlmZmVyZW50IFwiZHJ5IHJ1blwiIG1vZGVzIGZvciBleGVjdXRpbmcgQmluYW5jZSByZXF1ZXN0c1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQmluYW5jZURyeVJ1bk1vZGU6IFwiTk9fU0lHTlwiIHwgXCJOT19TVUJNSVRcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQmluYW5jZS1mYW1pbHkgUlBDIG1ldGhvZHMuIEVhY2ggdmFyaWFudCBhdXRoZW50aWNhdGVzIGFzIHRoZVxuICAgICAqIFtgS2V5VHlwZTo6RWQyNTUxOUJpbmFuY2VBcGlgXSBrZXkgaW4gaXRzIGBwYXJhbXMua2V5X2lkYC5cbiAgICAgKi9cbiAgICBCaW5hbmNlUnBjOlxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2JpbmFuY2VTdWJUb01hc3RlclwiO1xuICAgICAgICAgIHBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlU3ViVG9NYXN0ZXJQYXJhbXNcIl07XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1ldGhvZDogXCJjc19iaW5hbmNlU3ViVG9TdWJcIjtcbiAgICAgICAgICBwYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZVN1YlRvU3ViUGFyYW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtZXRob2Q6IFwiY3NfYmluYW5jZVVuaXZlcnNhbFRyYW5zZmVyXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VVbml2ZXJzYWxUcmFuc2ZlclBhcmFtc1wiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2JpbmFuY2VTdWJBY2NvdW50QXNzZXRzXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VTdWJBY2NvdW50QXNzZXRzUGFyYW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtZXRob2Q6IFwiY3NfYmluYW5jZUFjY291bnRJbmZvXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VBY2NvdW50SW5mb1BhcmFtc1wiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2JpbmFuY2VTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5XCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5UGFyYW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtZXRob2Q6IFwiY3NfYmluYW5jZVVuaXZlcnNhbFRyYW5zZmVySGlzdG9yeVwiO1xuICAgICAgICAgIHBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlVW5pdmVyc2FsVHJhbnNmZXJIaXN0b3J5UGFyYW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtZXRob2Q6IFwiY3NfYmluYW5jZVdpdGhkcmF3XCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VXaXRoZHJhd1BhcmFtc1wiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2JpbmFuY2VXaXRoZHJhd0hpc3RvcnlcIjtcbiAgICAgICAgICBwYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZVdpdGhkcmF3SGlzdG9yeVBhcmFtc1wiXTtcbiAgICAgICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZW52ZWxvcGUgZm9yIGFsbCBCaW5hbmNlIFJQQyBtZXRob2RzLiAqL1xuICAgIEJpbmFuY2VTdWJBY2NvdW50QXNzZXRzUGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1YkFjY291bnRBc3NldHNSZXF1ZXN0XCJdICYge1xuICAgICAgZHJ5UnVuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlRHJ5UnVuTW9kZVwiXSB8IG51bGw7XG4gICAgICBrZXlJZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIFwicmVjZWl2ZSB3aW5kb3dcIiwgaS5lLiwgZm9yIGhvdyBsb25nIHRoZSByZXF1ZXN0IHN0YXlzIHZhbGlkLlxuICAgICAgICogTWF5IG9ubHkgYmUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcywgd2l0aCB1cCB0byB0aHJlZSBkZWNpbWFsIHBsYWNlcyBvZiBwcmVjaXNpb24uXG4gICAgICAgKiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byBcIjEwMDAwXCIuIE11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBcIjYwMDAwXCIuXG4gICAgICAgKi9cbiAgICAgIHJlY3ZXaW5kb3c/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGVudmVsb3BlIGZvciBhbGwgQmluYW5jZSBSUEMgbWV0aG9kcy4gKi9cbiAgICBCaW5hbmNlU3ViQWNjb3VudFRyYW5zZmVySGlzdG9yeVBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5UmVxdWVzdFwiXSAmIHtcbiAgICAgIGRyeVJ1bj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZURyeVJ1bk1vZGVcIl0gfCBudWxsO1xuICAgICAga2V5SWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBcInJlY2VpdmUgd2luZG93XCIsIGkuZS4sIGZvciBob3cgbG9uZyB0aGUgcmVxdWVzdCBzdGF5cyB2YWxpZC5cbiAgICAgICAqIE1heSBvbmx5IGJlIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMsIHdpdGggdXAgdG8gdGhyZWUgZGVjaW1hbCBwbGFjZXMgb2YgcHJlY2lzaW9uLlxuICAgICAgICogSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gXCIxMDAwMFwiLiBNdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gXCI2MDAwMFwiLlxuICAgICAgICovXG4gICAgICByZWN2V2luZG93Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBlbnZlbG9wZSBmb3IgYWxsIEJpbmFuY2UgUlBDIG1ldGhvZHMuICovXG4gICAgQmluYW5jZVN1YlRvTWFzdGVyUGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1YlRvTWFzdGVyUmVxdWVzdFwiXSAmIHtcbiAgICAgIGRyeVJ1bj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZURyeVJ1bk1vZGVcIl0gfCBudWxsO1xuICAgICAga2V5SWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBcInJlY2VpdmUgd2luZG93XCIsIGkuZS4sIGZvciBob3cgbG9uZyB0aGUgcmVxdWVzdCBzdGF5cyB2YWxpZC5cbiAgICAgICAqIE1heSBvbmx5IGJlIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMsIHdpdGggdXAgdG8gdGhyZWUgZGVjaW1hbCBwbGFjZXMgb2YgcHJlY2lzaW9uLlxuICAgICAgICogSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gXCIxMDAwMFwiLiBNdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gXCI2MDAwMFwiLlxuICAgICAgICovXG4gICAgICByZWN2V2luZG93Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBlbnZlbG9wZSBmb3IgYWxsIEJpbmFuY2UgUlBDIG1ldGhvZHMuICovXG4gICAgQmluYW5jZVN1YlRvU3ViUGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1YlRvU3ViUmVxdWVzdFwiXSAmIHtcbiAgICAgIGRyeVJ1bj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZURyeVJ1bk1vZGVcIl0gfCBudWxsO1xuICAgICAga2V5SWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBcInJlY2VpdmUgd2luZG93XCIsIGkuZS4sIGZvciBob3cgbG9uZyB0aGUgcmVxdWVzdCBzdGF5cyB2YWxpZC5cbiAgICAgICAqIE1heSBvbmx5IGJlIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMsIHdpdGggdXAgdG8gdGhyZWUgZGVjaW1hbCBwbGFjZXMgb2YgcHJlY2lzaW9uLlxuICAgICAgICogSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gXCIxMDAwMFwiLiBNdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gXCI2MDAwMFwiLlxuICAgICAgICovXG4gICAgICByZWN2V2luZG93Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBlbnZlbG9wZSBmb3IgYWxsIEJpbmFuY2UgUlBDIG1ldGhvZHMuICovXG4gICAgQmluYW5jZVVuaXZlcnNhbFRyYW5zZmVySGlzdG9yeVBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlSZXF1ZXN0XCJdICYge1xuICAgICAgZHJ5UnVuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlRHJ5UnVuTW9kZVwiXSB8IG51bGw7XG4gICAgICBrZXlJZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIFwicmVjZWl2ZSB3aW5kb3dcIiwgaS5lLiwgZm9yIGhvdyBsb25nIHRoZSByZXF1ZXN0IHN0YXlzIHZhbGlkLlxuICAgICAgICogTWF5IG9ubHkgYmUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcywgd2l0aCB1cCB0byB0aHJlZSBkZWNpbWFsIHBsYWNlcyBvZiBwcmVjaXNpb24uXG4gICAgICAgKiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byBcIjEwMDAwXCIuIE11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBcIjYwMDAwXCIuXG4gICAgICAgKi9cbiAgICAgIHJlY3ZXaW5kb3c/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGVudmVsb3BlIGZvciBhbGwgQmluYW5jZSBSUEMgbWV0aG9kcy4gKi9cbiAgICBCaW5hbmNlVW5pdmVyc2FsVHJhbnNmZXJQYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5pdmVyc2FsVHJhbnNmZXJSZXF1ZXN0XCJdICYge1xuICAgICAgZHJ5UnVuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlRHJ5UnVuTW9kZVwiXSB8IG51bGw7XG4gICAgICBrZXlJZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIFwicmVjZWl2ZSB3aW5kb3dcIiwgaS5lLiwgZm9yIGhvdyBsb25nIHRoZSByZXF1ZXN0IHN0YXlzIHZhbGlkLlxuICAgICAgICogTWF5IG9ubHkgYmUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcywgd2l0aCB1cCB0byB0aHJlZSBkZWNpbWFsIHBsYWNlcyBvZiBwcmVjaXNpb24uXG4gICAgICAgKiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byBcIjEwMDAwXCIuIE11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBcIjYwMDAwXCIuXG4gICAgICAgKi9cbiAgICAgIHJlY3ZXaW5kb3c/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGVudmVsb3BlIGZvciBhbGwgQmluYW5jZSBSUEMgbWV0aG9kcy4gKi9cbiAgICBCaW5hbmNlV2l0aGRyYXdIaXN0b3J5UGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldpdGhkcmF3SGlzdG9yeVJlcXVlc3RcIl0gJiB7XG4gICAgICBkcnlSdW4/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VEcnlSdW5Nb2RlXCJdIHwgbnVsbDtcbiAgICAgIGtleUlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgXCJyZWNlaXZlIHdpbmRvd1wiLCBpLmUuLCBmb3IgaG93IGxvbmcgdGhlIHJlcXVlc3Qgc3RheXMgdmFsaWQuXG4gICAgICAgKiBNYXkgb25seSBiZSBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzLCB3aXRoIHVwIHRvIHRocmVlIGRlY2ltYWwgcGxhY2VzIG9mIHByZWNpc2lvbi5cbiAgICAgICAqIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIFwiMTAwMDBcIi4gTXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIFwiNjAwMDBcIi5cbiAgICAgICAqL1xuICAgICAgcmVjdldpbmRvdz86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZW52ZWxvcGUgZm9yIGFsbCBCaW5hbmNlIFJQQyBtZXRob2RzLiAqL1xuICAgIEJpbmFuY2VXaXRoZHJhd1BhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJXaXRoZHJhd1JlcXVlc3RcIl0gJiB7XG4gICAgICBkcnlSdW4/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VEcnlSdW5Nb2RlXCJdIHwgbnVsbDtcbiAgICAgIGtleUlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgXCJyZWNlaXZlIHdpbmRvd1wiLCBpLmUuLCBmb3IgaG93IGxvbmcgdGhlIHJlcXVlc3Qgc3RheXMgdmFsaWQuXG4gICAgICAgKiBNYXkgb25seSBiZSBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzLCB3aXRoIHVwIHRvIHRocmVlIGRlY2ltYWwgcGxhY2VzIG9mIHByZWNpc2lvbi5cbiAgICAgICAqIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIFwiMTAwMDBcIi4gTXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIFwiNjAwMDBcIi5cbiAgICAgICAqL1xuICAgICAgcmVjdldpbmRvdz86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgYml0Y29pbiBhZGRyZXNzIGFuZCBpdHMgbmV0d29yay4gKi9cbiAgICBCaXRjb2luQWRkcmVzc0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBiaXRjb2luIGFkZHJlc3MuXG4gICAgICAgKiBAZXhhbXBsZSBiYzFwdWMwcThqaHgza25jMnN0bGZobDM1bmphODludmttcXI0YzVlMmxkeXVxMm1jY2tocjNtc2F2ajk5alxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBjaGFpbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNDaGFpblwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwibWVzc2FnZV9iYXNlNjRcIjogXCJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYb3hNak0wTlRZS1wiXG4gICAgICogfVxuICAgICAqL1xuICAgIEJsb2JTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBiYXNlNjQgc3RyaW5nIGNvbXByaXNpbmcgYSBTRUMxLWVuY29kZWQgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gICAgICAgKiBUaGlzIGZpZWxkIGNhbiBiZSB1c2VkICpvbmx5KiB3aXRoIFNjaG5vcnIga2V5cy5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIHByZXNlbnQsIHRoZSByZXNwb25zZSB3aWxsIGJlIGEgU2Nobm9yciBhZGFwdG9yIHNpZ25hdHVyZVxuICAgICAgICogaW4gdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgQmxvY2tzdHJlYW0gZm9yIHVzZSBpbiBsaWJzZWNwMjU2azEtemtwLiBTZWVcbiAgICAgICAqIDxodHRwczovL2dpdGh1Yi5jb20vWmhlUGFuZy9QeXRob25fU3BlY2lmaWNhdGlvbl9mb3JfU2Nobm9ycl9BZGFwdG9yLz5cbiAgICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAgICogQGV4YW1wbGUgQXJueTRXb0hETkJWWFljeW5oTmw5L3k3SnR0SjJyazBDQ1JmTFI3dDNhRGdcbiAgICAgICAqL1xuICAgICAgYWRhcHRvcl9waz86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBkb21haW4gc2VwYXJhdGlvbiB0YWcgZm9yIHVzZSAqb25seSogd2l0aCBCTFMgc2lnbmluZyByZXF1ZXN0cy5cbiAgICAgICAqIFRoaXMgZmllbGQgbXVzdCBub3QgYmUgc3VwcGxpZWQgZm9yIHJlcXVlc3RzIGludm9sdmluZyBub24tQkxTIGtleSB0eXBlcy5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBwcmVzZW50IG9yIG51bGwsIHRoZSBkb21haW4gc2VwYXJhdGlvbiB0YWcgc3BlY2lmaWVkIGluXG4gICAgICAgKiB0aGUgSUVURiBCTFMgU2lnbmF0dXJlcyBkcmFmdCB2ZXJzaW9ucyA0IGFuZCA1LCBzZWN0aW9uIDQuMi4zIChtaW5pbWFsIHB1YmtleVxuICAgICAgICogc2l6ZSB2YXJpYW50KSBpcyB1c2VkLlxuICAgICAgICpcbiAgICAgICAqIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIG5vbi1lbXB0eSBieXRlXG4gICAgICAgKiB2ZWN0b3IuIFdoZW4gdXNpbmcgYSBjdXN0b20gdGFnLCBSRkM5MzgwIChTZWN0aW9uIDMuMSkgcmVjb21tZW5kcyBhIGxlbmd0aCBvZlxuICAgICAgICogYXQgbGVhc3QgMTYgYnl0ZXMuXG4gICAgICAgKiBAZXhhbXBsZSBFYmJMdkN4STdnYW43MWlJU0RzZnI0NmV0T3Y2MDZRa0dHRFA1UHBWbDVRPVxuICAgICAgICovXG4gICAgICBibHNfZHN0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBibG9iIHRvIHNpZ24sIGVuY29kZWQgYXMgYSBiYXNlNjQgc3RyaW5nLlxuICAgICAgICpcbiAgICAgICAqIE5vdGUgdGhhdCBjZXJ0YWluIHNpZ25pbmcga2V5cyBpbXBvc2UgYWRkaXRpb25hbCByZXF1aXJlbWVudHMgb24gdGhlIGNvbnRlbnRzIG9mXG4gICAgICAgKiB0aGUgbWVzc2FnZS4gRm9yIGV4YW1wbGUsIFNlY3AyNTZrMSBrZXlzIHJlcXVpcmUgdGhhdCB0aGUgbWVzc2FnZSBpcyAzMiBieXRlcyBsb25nLlxuICAgICAgICovXG4gICAgICBtZXNzYWdlX2Jhc2U2NDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgdHdlYWsgdmFsdWUgZm9yIHVzZSBvbmx5IHdpdGggKHNvbWUpIHNlY3AyNTZrMSBrZXkgdHlwZXMuXG4gICAgICAgKiBUaGlzIGZpZWxkIG11c3Qgbm90IGJlIHN1cHBsaWVkIGZvciByZXF1ZXN0cyBpbnZvbHZpbmcgYW55IG90aGVyIGtleSB0eXBlLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoaXMgZmllbGQgaXMgbm90IHByZXNlbnQgb3IgbnVsbCwgbm8gdHdlYWsgaXMgYXBwbGllZC4gT3RoZXJ3aXNlLCB0aGlzIGZpZWxkXG4gICAgICAgKiBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZiBleGFjdGx5IDMyIGJ5dGVzLiBTZWUgdGhlXG4gICAgICAgKiBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFNlZ3dpdCB0d2Vha2luZyBwcm9jZWR1cmUuXG4gICAgICAgKiBAZXhhbXBsZSBGNDFIQXkycTVHbjhsYUYyQ3VNc1piUkFRVG1EKzRPYjNWVU1aN1RCR0s0PVxuICAgICAgICovXG4gICAgICBzZWd3aXRfdHdlYWs/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgdHdlYWsgdmFsdWUgZm9yIHVzZSAqb25seSogd2l0aCBUYXByb290IGtleXMuIFRoaXMgZmllbGQgbXVzdCBub3RcbiAgICAgICAqIGJlIHN1cHBsaWVkIGZvciByZXF1ZXN0cyBpbnZvbHZpbmcgYW55IG90aGVyIGtleSB0eXBlLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoaXMgZmllbGQgaXMgbm90IHByZXNlbnQgb3IgbnVsbCwgbm8gdHdlYWsgaXMgYXBwbGllZC4gSWYgdGhlIGZpZWxkIGlzIGFuXG4gICAgICAgKiBlbXB0eSBzdHJpbmcsIHRoZSBrZXkgaXMgdHdlYWtlZCB3aXRoIGFuIHVuc3BlbmRhYmxlIHNjcmlwdCBwYXRoIHBlciBCSVAwMzQxLlxuICAgICAgICogT3RoZXJ3aXNlLCB0aGlzIGZpZWxkIG11c3QgY29udGFpbiBhIDMyLWJ5dGUsIGJhc2UtNjQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGVcbiAgICAgICAqIE1lcmtsZSByb290IHdpdGggd2hpY2ggdG8gdHdlYWsgdGhlIGtleSBiZWZvcmUgc2lnbmluZy5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIHRhcHJvb3RfdHdlYWs/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBCVEMgY2hhaW5zLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQnRjQ2hhaW46IFwibWFpbm5ldFwiIHwgXCJzaWduZXRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIExlYWYgaGFzaCBhbmQgY29kZSwgYXMgcGVyIEJJUDM0MSBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3J1c3QtYml0Y29pbi9ydXN0LWJpdGNvaW4vYmxvYi80NjQyMDIxMDlkMmIyYzk2ZTliNDg2NzQ2MWJmZmU0MjBkYmQ4MTc3L2JpdGNvaW4vc3JjL2NyeXB0by9zaWdoYXNoLnJzI0w2OTEgKi9cbiAgICBCdGNMZWFmSGFzaENvZGVTZXBhcmF0b3I6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvZGUgc2VwYXJhdG9yXG4gICAgICAgKi9cbiAgICAgIGNvZGVfc2VwYXJhdG9yOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRhcHJvb3QtdGFnZ2VkIGhhc2ggd2l0aCB0YWcgXCJUYXBMZWFmXCIuICovXG4gICAgICBsZWFmX2hhc2g6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGF0YSB0byBzaWduICovXG4gICAgQnRjTWVzc2FnZVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1lc3NhZ2UgdG8gc2lnbiBhcyBhIGhleC1lbmNvZGVkIGJ5dGUgc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgMHhkZWFkYmVlZjEzYzBmZmVlXG4gICAgICAgKi9cbiAgICAgIGRhdGE6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRm9yIHNlZ3dpdCwgc2lnbiB0aGUgbWVzc2FnZSBhcyBwMnNoLXAyd3BraCBpbnN0ZWFkIG9mIHAyd3BraCAqL1xuICAgICAgaXNfcDJzaD86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEJUQyBtZXNzYWdlIHNpZ25pbmcgcmVzcG9uc2UgKi9cbiAgICBCdGNNZXNzYWdlU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYmFzZTY0LWVuY29kZWQgc2lnbmF0dXJlIGluIEJJUDEzNyBmb3JtYXQuICovXG4gICAgICBzaWc6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEJ0Y1NpZ2hhc2hUeXBlOlxuICAgICAgfCBcIkFsbFwiXG4gICAgICB8IFwiTm9uZVwiXG4gICAgICB8IFwiU2luZ2xlXCJcbiAgICAgIHwgXCJBbGxQbHVzQW55b25lQ2FuUGF5XCJcbiAgICAgIHwgXCJOb25lUGx1c0FueW9uZUNhblBheVwiXG4gICAgICB8IFwiU2luZ2xlUGx1c0FueW9uZUNhblBheVwiO1xuICAgIEJ0Y1NpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIHNpZ19raW5kOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ25hdHVyZUtpbmRcIl07XG4gICAgICB0eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNUeFwiXTtcbiAgICB9O1xuICAgIEJ0Y1NpZ25hdHVyZUtpbmQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2VncmVnYXRlZCBXaXRuZXNzICovXG4gICAgICBTZWd3aXQ6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbiBpbnB1dCBpbmRleFxuICAgICAgICAgKiBAZXhhbXBsZSAwXG4gICAgICAgICAqL1xuICAgICAgICBpbnB1dF9pbmRleDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFNjcmlwdFxuICAgICAgICAgKiBAZXhhbXBsZSAweDc2YTkxNDc5MDkxOTcyMTg2YzQ0OWViMWRlZDIyYjc4ZTQwZDAwOWJkZjAwODk4OGFjXG4gICAgICAgICAqL1xuICAgICAgICBzY3JpcHRfY29kZTogc3RyaW5nO1xuICAgICAgICBzaWdoYXNoX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjU2lnaGFzaFR5cGVcIl07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdHdlYWsgdG8gYXBwbHkgdG8gdGhlIGtleSBiZWZvcmUgc2lnbmluZy5cbiAgICAgICAgICpcbiAgICAgICAgICogV2hlbiBzdXBwbGllZCwgdGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZlxuICAgICAgICAgKiBleGFjdGx5IDMyIGJ5dGVzLCB3aGljaCBhcmUgdXNlZCB0byBjb21wdXRlIHRoZSB0d2Vha2VkIHB1YmxpYyBrZXkuIFNlZSB0aGVcbiAgICAgICAgICogQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBTZWd3aXQgdHdlYWtpbmcgcHJvY2VkdXJlLlxuICAgICAgICAgKiBAZXhhbXBsZSBGNDFIQXkycTVHbjhsYUYyQ3VNc1piUkFRVG1EKzRPYjNWVU1aN1RCR0s0PVxuICAgICAgICAgKi9cbiAgICAgICAgdHdlYWs/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRvdGFsIGFtb3VudCBvZiB0aGUgaW5wdXQgKGluIHNhdG9zaGlzKS5cbiAgICAgICAgICogQGV4YW1wbGUgMTAwMDAwMFxuICAgICAgICAgKi9cbiAgICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImlucHV0XCI6IFtcbiAgICAgKiAgICAge1xuICAgICAqICAgICAgIFwicHJldmlvdXNfb3V0cHV0XCI6IFwiNzc1NDFhZWIzYzRkYWM5MjYwYjY4Zjc0ZjQ0Yzk3MzA4MWE5ZDRjYjJlYmU4MDM4YjJkNzBmYWEyMDFiNmJkYjoxXCIsXG4gICAgICogICAgICAgXCJzY3JpcHRfc2lnXCI6IFwiXCIsXG4gICAgICogICAgICAgXCJzZXF1ZW5jZVwiOiA0Mjk0OTY3Mjk0LFxuICAgICAqICAgICAgIFwid2l0bmVzc1wiOiBbXVxuICAgICAqICAgICB9XG4gICAgICogICBdLFxuICAgICAqICAgXCJsb2NrX3RpbWVcIjogMTE3MCxcbiAgICAgKiAgIFwib3V0cHV0XCI6IFtcbiAgICAgKiAgICAge1xuICAgICAqICAgICAgIFwic2NyaXB0X3B1YmtleVwiOiBcIjc2YTkxNGE0NTdiNjg0ZDdmMGQ1MzlhNDZhNDViYmMwNDNmMzViNTlkMGQ5NjM4OGFjXCIsXG4gICAgICogICAgICAgXCJ2YWx1ZVwiOiAxOTk5OTY2MDBcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAge1xuICAgICAqICAgICAgIFwic2NyaXB0X3B1YmtleVwiOiBcIjc2YTkxNGZkMjcwYjFlZTZhYmNhZWE5N2ZlYTdhZDA0MDJlOGJkOGFkNmQ3N2M4OGFjXCIsXG4gICAgICogICAgICAgXCJ2YWx1ZVwiOiA4MDAwMDAwMDBcbiAgICAgKiAgICAgfVxuICAgICAqICAgXSxcbiAgICAgKiAgIFwidmVyc2lvblwiOiAxXG4gICAgICogfVxuICAgICAqL1xuICAgIEJ0Y1R4OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgQnRjVHhPdXQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNjcmlwdCB3aGljaCBtdXN0IGJlIHNhdGlzZmllZCBmb3IgdGhlIG91dHB1dCB0byBiZSBzcGVudC4gKi9cbiAgICAgIHNjcmlwdF9wdWJrZXk6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0LCBpbiBzYXRvc2hpcy5cbiAgICAgICAqL1xuICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzLWNvbnRyb2xsZWQgYWN0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gYSBidWNrZXRcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEJ1Y2tldEFjdGlvbjpcbiAgICAgIHwgXCJyZWFkOmtleTp2YWx1ZVwiXG4gICAgICB8IFwicmVhZDprZXk6ZXhpc3RzXCJcbiAgICAgIHwgXCJ1cGRhdGU6a2V5OnZhbHVlXCJcbiAgICAgIHwgXCJkZWxldGU6a2V5OnZhbHVlXCJcbiAgICAgIHwgXCJzY2FuOmtleXNcIlxuICAgICAgfCBcInVwZGF0ZTpidWNrZXQ6b3duZXJcIlxuICAgICAgfCBcInVwZGF0ZTpidWNrZXQ6YWNsXCJcbiAgICAgIHwgXCJ1cGRhdGU6YnVja2V0Om1ldGFkYXRhXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHBvbGljeSBLViBzdG9yZSBidWNrZXQuICovXG4gICAgQnVja2V0SW5mbzogKHtcbiAgICAgIGNyZWF0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXI7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoZSBidWNrZXQuICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcmJpdHJhcnkgdXNlci1kZWZpbmVkIG1ldGFkYXRhLiAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgb3duZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgfSkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBidWNrZXQuICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3ViLWVudGl0eSBvZiBvcmcgd2hlcmUgcGVyLWJ1Y2tldCBtZXRhZGF0YSAobGlrZSBBQ0wpIGlzIHN0b3JlZC5cbiAgICAgKiBUaGUgW0lkXSBvZiBhIFtCdWNrZXRNZXRhXSBtdXN0IGJlIHRoZSBidWNrZXQgbmFtZS5cbiAgICAgKi9cbiAgICBCdWNrZXRNZXRhOiB7XG4gICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgIGxhc3RfbW9kaWZpZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGlzIG9iamVjdFxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MtY29udHJvbCBlbnRyaWVzIGZvciB0aGUgYnVja2V0LiAqL1xuICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXJiaXRyYXJ5IHVzZXItZGVmaW5lZCBtZXRhZGF0YS4gKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIG93bmVyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgIH07XG4gICAgQ2FuY2VsSW52aXRhdGlvblJlcXVlc3Q6IHtcbiAgICAgIGVtYWlsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBDYW50b24gZW52aXJvbm1lbnRzLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQ2FudG9uRW52aXJvbm1lbnQ6IFwibWFpbm5ldFwiIHwgXCJkZXZuZXRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgQ2FudG9uIHBhcnR5LiAqL1xuICAgIENhbnRvblBhcnR5SW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBDYW50b24gcGFydHkuXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZTo6MTIyMGYyZmUyOTg2NmZkNmEwMDA5ZWNjOGE2NGNjZGMwOWYxOTU4YmQwZjgwMTE2NmJhYWVlNDY5ZDEyNTFiMmViNzJcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgY2hhaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2FudG9uRW52aXJvbm1lbnRcIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlc2NyaWJlcyBob3cgdG8gZGVyaXZlIGEgV2ViQXV0aG4gY2hhbGxlbmdlIHZhbHVlLiAqL1xuICAgIENoYWxsZW5nZVBpZWNlczoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgVVRGOCBKU09OLiBUaGUgZGF0YSBpbiB0aGF0IEpTT04gaXMgZW5kcG9pbnQgc3BlY2lmaWMsIGFuZCBkZXNjcmliZXMgd2hhdCB0aGlzIEZJRE8gY2hhbGxlbmdlIHdpbGwgYmUgdXNlZCBmb3IuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBjYW4gdXNlIGBwcmVpbWFnZWAgYWxvbmcgd2l0aCBgcmFuZG9tX3NlZWRgIHRvIHJlY29uc3RydWN0IHRoZSBjaGFsbGVuZ2UgbGlrZSBzbzpcbiAgICAgICAqXG4gICAgICAgKiBgY2hhbGxlbmdlID0gSE1BQy1TSEEyNTYoa2V5PXJhbmRvbV9zZWVkLCBtZXNzYWdlPXByZWltYWdlKWBcbiAgICAgICAqL1xuICAgICAgcHJlaW1hZ2U6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSByYW5kb20gc2VlZCB0aGF0IHByZXZlbnRzIHJlcGxheSBhdHRhY2tzICovXG4gICAgICByYW5kb21fc2VlZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDbGllbnQgaW5mb3JtYXRpb24gcmVwcmVzZW50aW5nIHRoZSBuYXR1cmUgb2YgZnJvbnQtZW5kIGluIFtgQ2xpZW50U2Vzc2lvbk1ldGFkYXRhYF0gYW5kIHJlZmxlY3RlZCBpbiBbYFNlc3Npb25NZXRhZGF0YWBdLiAqL1xuICAgIENsaWVudFByb2ZpbGU6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFnZW50L1Byb2R1Y3QgbmFtZVxuICAgICAgICogQGV4YW1wbGUgTW96aWxsYSBGaXJlZm94XG4gICAgICAgKi9cbiAgICAgIGFnZW50Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb2YgdGhlIGVuZ2luZVxuICAgICAgICogQGV4YW1wbGUgR2Vja29cbiAgICAgICAqL1xuICAgICAgZW5naW5lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFnZW50L3Byb2R1Y3QgdmVyc2lvblxuICAgICAgICogQGV4YW1wbGUgNDEuMlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGNsaWVudC5cbiAgICAgKiBUaGlzIHN0cnVjdCB3b3JrcyBpbiB0YW5kZW0gd2l0aCBpdHMgc2VydmVyLXNpZGUgY291bnRlcnBhcnQgW2BTZXNzaW9uRGF0YWBdLlxuICAgICAqL1xuICAgIENsaWVudFNlc3Npb25JbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRvIHVzZSBmb3IgYXV0aG9yaXphdGlvbi4gKi9cbiAgICAgIGF1dGhfdG9rZW46IHN0cmluZztcbiAgICAgIGF1dGhfdG9rZW5fZXhwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFcG9jaCBhdCB3aGljaCB0aGUgdG9rZW4gd2FzIGxhc3QgcmVmcmVzaGVkXG4gICAgICAgKi9cbiAgICAgIGVwb2NoOiBudW1iZXI7XG4gICAgICBlcG9jaF90b2tlbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCMzJcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRvIHVzZSBmb3IgcmVmcmVzaGluZyB0aGUgYChhdXRoLCByZWZyZXNoKWAgdG9rZW4gcGFpciAqL1xuICAgICAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xuICAgICAgcmVmcmVzaF90b2tlbl9leHA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRCAqL1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBdHRyaWJ1dGVzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQgKi9cbiAgICBDbGllbnRTZXNzaW9uTWV0YWRhdGE6IHtcbiAgICAgIGNsaWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50UHJvZmlsZVwiXTtcbiAgICAgIG9zX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9zSW5mb1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29tbWlzc2lvbiByYXRlcyBhcyBkZWNpbWFsIHN0cmluZ3MgKGUuZy4gYFwiMC4wMDEwMDAwMFwiYCkuICovXG4gICAgQ29tbWlzc2lvblJhdGVzOiB7XG4gICAgICBidXllcjogc3RyaW5nO1xuICAgICAgbWFrZXI6IHN0cmluZztcbiAgICAgIHNlbGxlcjogc3RyaW5nO1xuICAgICAgdGFrZXI6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBGaWVsZHMgdGhhdCBhcmUgY29tbW9uIHRvIGRpZmZlcmVudCB0eXBlcyBvZiByZXNvdXJjZXMgc3VjaCBhcyBrZXlzLCByb2xlcywgZXRjLlxuICAgICAqIEluY2x1ZGVzIHZlcnNpb25pbmcgZmllbGRzIHBsdXMgbWV0YWRhdGEsIGVkaXQgcG9saWN5LCBldGMuXG4gICAgICovXG4gICAgQ29tbW9uRmllbGRzOiB7XG4gICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgIGxhc3RfbW9kaWZpZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGlzIG9iamVjdFxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgIH0gJiB7XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXItZGVmaW5lZCBtZXRhZGF0YS4gV2hlbiByZW5kZXJpbmcgKGUuZy4sIGluIHRoZSBicm93c2VyKSB5b3Ugc2hvdWxkIHRyZWF0XG4gICAgICAgKiBpdCBhcyB1bnRydXN0ZWQgdXNlciBkYXRhIChhbmQgYXZvaWQgaW5qZWN0aW5nIG1ldGFkYXRhIGludG8gSFRNTCBkaXJlY3RseSkgaWZcbiAgICAgICAqIHVudHJ1c3RlZCB1c2VycyBjYW4gY3JlYXRlL3VwZGF0ZSBrZXlzIChvciB0aGVpciBtZXRhZGF0YSkuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9O1xuICAgIENvbXBsZXRlTWZhUmVzZXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcmVzZXQgdG9rZW4gZW1haWxlZCB0byB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG51bWJlciBvZiB1c2VycyBhbmQga2V5cyBpbiBhbiBvcmcsIG9yZ2FuaXplZCBieSB1c2VyIHJvbGUgYW5kIGtleSB0eXBlICovXG4gICAgQ29tcHV0ZUNvdW50c1Jlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhIGBLZXlUeXBlYCB0byB0aGUgYW1vdW50IG9mIGtleXMgd2l0aCB0aGF0IHR5cGUgaW4gdGhlIG9yZy5cbiAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAqICAgXCJTZWNwQnRjXCI6IDMsXG4gICAgICAgKiAgIFwiU2VjcEV0aEFkZHJcIjogMVxuICAgICAgICogfVxuICAgICAgICovXG4gICAgICBrZXlzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgIH07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhIGBNZW1iZXJSb2xlYCB0byB0aGUgYW1vdW50IG9mIG51bWJlciBvZiB1c2VycyB3aXRoIHRoYXQgcm9sZSBpbiB0aGUgb3JnLlxuICAgICAgICogQGV4YW1wbGUge1xuICAgICAgICogICBcIk1lbWJlclwiOiAxMCxcbiAgICAgICAqICAgXCJPd25lclwiOiAxXG4gICAgICAgKiB9XG4gICAgICAgKi9cbiAgICAgIHVzZXJzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgIH07XG4gICAgfTtcbiAgICBDb25maWd1cmVFbWFpbFJlcXVlc3Q6IHtcbiAgICAgIGF1dGg6IHtcbiAgICAgICAgc210cDogc3RyaW5nO1xuICAgICAgfTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFkZHJlc3MgdGhhdCBlbWFpbHMgd2lsbCBiZSBzZW50IGZyb20gKi9cbiAgICAgIHNlbmRlcjogc3RyaW5nO1xuICAgICAgdGVtcGxhdGU/OiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gSFRNTCB0ZW1wbGF0ZSB0byB1c2UgZm9yIHRoZSBib2R5LiAqL1xuICAgICAgICBib2R5X3RlbXBsYXRlOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN1YmplY3QgbGluZSB0ZW1wbGF0ZSAqL1xuICAgICAgICBzdWJqZWN0X3RlbXBsYXRlOiBzdHJpbmc7XG4gICAgICB9IHwgbnVsbDtcbiAgICB9O1xuICAgIENvbmZpZ3VyZWRNZmE6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0eXBlOiBcInRvdHBcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVVUlEIG9mIHRoZSBkZXZpY2UgdHlwZSAqL1xuICAgICAgICAgIGFhZ3VpZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRpb24gZGF0ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhpcyBrZXkgd2FzIHJlcXVlc3RlZCB0byBiZSBkaXNjb3ZlcmFibGUuICovXG4gICAgICAgICAgZGlzY292ZXJhYmxlOiBib29sZWFuO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgY3JlZGVudGlhbCBpZCAqL1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBMYXN0IHVzZWQgZGF0ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfdXNlZF9hdDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGdpdmVuIHRvIHRoZSBrZXkgKi9cbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgdHlwZTogXCJmaWRvXCI7XG4gICAgICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQ29uZmxpY3RFcnJvckNvZGU6XG4gICAgICB8IFwiQ29uY3VycmVudFJlcXVlc3REaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJDb25jdXJyZW50TG9ja0NyZWF0aW9uXCJcbiAgICAgIHwgXCJDb25jdXJyZW50VHJhbnNhY3Rpb25TdWJtaXNzaW9uXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIGNvbnRhY3QgaW4gdGhlIG9yZy4gKi9cbiAgICBDb250YWN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIExhYmVscyB0byBjYXRlZ29yaXplIHRoaXMgY29udGFjdC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBsYWJlbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RMYWJlbFwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5hbWUgZm9yIHRoZSBjb250YWN0LiBNdXN0IGJlIGEgdW5pcXVlIG5hbWUgYW1vbmcgY29udGFjdHMgaW4gdGhlXG4gICAgICAgKiBvcmcuIFRoZSBuYW1lIG11c3QgY29uc2lzdCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgc3BhY2VzLCBgLmAgYW5kIGAtYCxcbiAgICAgICAqIGFuZCBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gNTAgY2hhcmFjdGVycy5cbiAgICAgICAqIEBleGFtcGxlIFNhdG9zaGkgTmFrYW1vdG9cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgb3duZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIGEgY29udGFjdC4gKi9cbiAgICBDb250YWN0QWRkcmVzc0RhdGE6XG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpdGNvaW5BZGRyZXNzSW5mb1wiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBuZXR3b3JrOiBcIkJpdGNvaW5cIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtQWRkcmVzc0luZm9cIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbmV0d29yazogXCJFdm1cIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3VpQWRkcmVzc0luZm9cIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbmV0d29yazogXCJTdWlcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU29sYW5hQWRkcmVzc0luZm9cIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbmV0d29yazogXCJTb2xhbmFcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2FudG9uUGFydHlJbmZvXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG5ldHdvcms6IFwiQ2FudG9uXCI7XG4gICAgICAgIH0pO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBDb250YWN0LiAqL1xuICAgIENvbnRhY3RJbmZvUmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdFwiXSAmIHtcbiAgICAgIGFkZHJlc3NlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRyZXNzTWFwXCJdO1xuICAgICAgaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTGFiZWxzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gYSBjb250YWN0LlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQ29udGFjdExhYmVsOiBcImN1YmlzdDplcmMyMF90b2tlblwiIHwgXCJjdWJpc3Q6c3BsX3Rva2VuXCI7XG4gICAgQ3JlYXRlQW5kVXBkYXRlS2V5UHJvcGVydGllczoge1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2V0IHRoaXMga2V5J3MgbWV0YWRhdGEuIElmIHRoaXMgdmFsdWUgaXMgYG51bGxgLCB0aGUgbWV0YWRhdGEgaXMgZXJhc2VkLiBJZiB0aGUgZmllbGQgaXNcbiAgICAgICAqIG1pc3NpbmcsIHRoZSBtZXRhZGF0YSByZW1haW5zIHVuY2hhbmdlZC5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3BlY2lmeSBhIHVzZXIgb3RoZXIgdGhhbiB0aGVtc2VsdmVzIHRvIGJlIHRoZSAocG90ZW50aWFsbHkgbmV3KSBvd25lciBvZiB0aGUga2V5LlxuICAgICAgICogVGhlIHNwZWNpZmllZCBvd25lciBtdXN0IGJlIGFuIGV4aXN0aW5nIHVzZXIgd2hvIGlzIGEgbWVtYmVyIG9mIHRoZSBzYW1lIG9yZy5cbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNldCB0aGlzIGtleSdzIHBvbGljaWVzLiBGb3IgYW4gZXhpc3Rpbmcga2V5LCB0aGlzIG92ZXJ3cml0ZXMgYWxsIGl0cyBwb2xpY2llcy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCIsXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IHVua25vd25bXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlIGEgQ29udGFjdC4gKi9cbiAgICBDcmVhdGVDb250YWN0UmVxdWVzdDoge1xuICAgICAgYWRkcmVzc2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRyZXNzTWFwXCJdO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbGFiZWxzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBjb250YWN0LlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcImN1YmlzdDplcmMyMF90b2tlblwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGxhYmVscz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdExhYmVsXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXItZGVmaW5lZCBtZXRhZGF0YSBhYm91dCB0aGUgY29udGFjdC4gKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIGZvciB0aGUgY29udGFjdC4gTXVzdCBiZSBhIHVuaXF1ZSBuYW1lIGFtb25nIGNvbnRhY3RzIGluIHRoZVxuICAgICAgICogb3JnLiBOYW1lIG11c3QgY29uc2lzdCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgc3BhY2VzLCBgLmAgYW5kIGAtYCxcbiAgICAgICAqIGFuZCBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gNTAgY2hhcmFjdGVycy5cbiAgICAgICAqIEBleGFtcGxlIFNhdG9zaGkgTmFrYW1vdG9cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBhbiBFVk0gdHJhbnNhY3Rpb24uICovXG4gICAgQ3JlYXRlRXZtVHJhbnNhY3Rpb25SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUV2bVRyYW5zZmVyUmVxdWVzdFwiXSAmIHtcbiAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgdHlwZTogXCJUcmFuc2ZlclwiO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBhbiBFVk0gdHJhbnNmZXIuICovXG4gICAgQ3JlYXRlRXZtVHJhbnNmZXJSZXF1ZXN0OiB7XG4gICAgICB0b2tlbjogXCJDcmVhdGVFdm1UcmFuc2ZlclJlcXVlc3RcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bVRva2VuXCJdLCBcInRva2VuXCI+ICZcbiAgICAgIGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtVHhDdXN0b21pemF0aW9uXCJdICYge1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEVWTSBjaGFpbiBpZCB0aGlzIHRyYW5zYWN0aW9uIGlzIGZvci5cbiAgICAgICAgICovXG4gICAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFkZHJlc3MgdGhhdCB0aGUgYW1vdW50IHdpbGwgYmUgdHJhbnNmZXJyZWQgZnJvbS5cbiAgICAgICAgICpcbiAgICAgICAgICogTXVzdCBtYXRjaCB0aGUgbWF0ZXJpYWwgaWQgb2YgYSBrZXkgdGhlIHNlc3Npb24gY2FuIGFjY2Vzcy5cbiAgICAgICAgICovXG4gICAgICAgIGZyb206IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWRkcmVzcyB0aGF0IHRoZSBhbW91bnQgd2lsbCBiZSB0cmFuc2ZlcnJlZCB0by4gKi9cbiAgICAgICAgdG86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYW1vdW50IGJlaW5nIHRyYW5zZmVycmVkLCBhcyBhIGhleCB2YWx1ZS5cbiAgICAgICAgICpcbiAgICAgICAgICogVGhpcyB2YWx1ZSBzaG91bGQgYmUgaW4gV0VJIGZvciBuYXRpdmUgdHJhbnNmZXJzLCBhbmQgaW4gdGhlIHRva2VuJ3MgZGVub21pbmF0aW9uXG4gICAgICAgICAqIGZvciBFUkMtMjAgdHJhbnNmZXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgdmFsdWU6IHN0cmluZztcbiAgICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gYXR0ZXN0YXRpb24gZG9jdW1lbnQgZnJvbSBhIHNlY3VyZSBlbmNsYXZlLCBpbmNsdWRpbmcgYW5cbiAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAqL1xuICAgICAgZW5jbGF2ZV9hdHRlc3RhdGlvbjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gUlNBLVBTUy1TSEEyNTYgc2lnbmF0dXJlIG9uIHRoZSBwdWJsaWMga2V5IGFuZCBlbmNyeXB0ZWRcbiAgICAgICAqIHNlY3JldHMgYXR0ZXN0aW5nIHRvIHRoZWlyIGdlbmVyYXRpb24gaW5zaWRlIGEgc2VjdXJlIGVuY2xhdmUuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDcmVhdGVLZXlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUFuZFVwZGF0ZUtleVByb3BlcnRpZXNcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXNcbiAgICAgICAqIEBleGFtcGxlIDVcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIGtleXMgdG8gY3JlYXRlXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgIH07XG4gICAgQ3JlYXRlS2V5UmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm8gYWJvdXQgdGhlIGNyZWF0ZWQga2V5cyAqL1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgfTtcbiAgICBDcmVhdGVPcmdSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdG8gZW5hYmxlIG1ldHJpY3MgZm9yIHRoZSBuZXcgb3JnYW5pemF0aW9uICovXG4gICAgICBtZXRyaWNzX2VuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGh1bWFuIHJlYWRhYmxlIG5hbWUgb2YgdGhlIG5ldyBvcmdhbml6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIE15IENvb2wgT3JnXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gW2NyZWF0ZV9pbXBvcnRfa2V5XSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQga2V5IGFuZCBlbmNsYXZlXG4gICAgICogYXR0ZXN0YXRpb25zLlxuICAgICAqL1xuICAgIENyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIGF0dGVzdGF0aW9uIGRvY3VtZW50IGZyb20gYSBzZWN1cmUgZW5jbGF2ZSwgaW5jbHVkaW5nIGFuXG4gICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfYXR0ZXN0YXRpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgKiBzZWNyZXRzIGF0dGVzdGluZyB0byB0aGVpciBnZW5lcmF0aW9uIGluc2lkZSBhIHNlY3VyZSBlbmNsYXZlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGZvciBjcmVhdGluZyBhIG5hbWVkIHBvbGljeSAqL1xuICAgIENyZWF0ZVBvbGljeVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFjY2Vzcy1jb250cm9sIGVudHJpZXMgZGVmaW5pbmcgaG93IHRoZSBwb2xpY3kgY2FuIGJlIGFjY2Vzc2VkLCBtb2RpZmllZCxcbiAgICAgICAqIGF0dGFjaGVkIGFuZCBleGVjdXRlZC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYWN0aW9uXCI6IFwiYXR0YWNoXCIsXG4gICAgICAgKiAgICAgXCJyZXNvdXJjZXNcIjogW1xuICAgICAgICogICAgICAge1xuICAgICAgICogICAgICAgICBcImtleV9pZFwiOiBcIipcIixcbiAgICAgICAqICAgICAgICAgXCJyb2xlX2lkXCI6IFwiUm9sZSNlNDI3YzI4YS05YzViLTQ5Y2MtYTI1Ny04NzhhZWE1OGEyMmNcIlxuICAgICAgICogICAgICAgfVxuICAgICAgICogICAgIF0sXG4gICAgICAgKiAgICAgXCJzdWJqZWN0c1wiOiBcIipcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJhY3Rpb25cIjogXCJzaWduXCIsXG4gICAgICAgKiAgICAgXCJzdWJqZWN0c1wiOiBcIlJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgbmFtZS5cbiAgICAgICAqIE11c3QgYmUgdW5pcXVlIGFtb25nIHRoZSBuYW1lZCBwb2xpY2llcyBpbiB0aGlzIG9yZy4gRHVwbGljYXRlIHBvbGljeSBuYW1lc1xuICAgICAgICogd2lsbCBiZSByZWplY3RlZC5cbiAgICAgICAqIEBleGFtcGxlIG15X3BvbGljeVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBwb2xpY3lfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBydWxlcy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcnVsZXM6IHVua25vd25bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgY3JlYXRlIHJvbGUgcmVxdWVzdCBib2R5ICovXG4gICAgQ3JlYXRlUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ld2x5IGNyZWF0ZWQgcm9sZSBpbmZvcm1hdGlvbiAqL1xuICAgIENyZWF0ZVJvbGVSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZVxuICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAqL1xuICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQ3JlYXRlU2Vzc2lvblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBCeSBkZWZhdWx0LCB0aGUgcmVxdWVzdGVkIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWVzIGFyZSB0cnVuY2F0ZWQgdG8gYmUgYXQgbW9zdCByZXF1ZXN0b3Inc1xuICAgICAgICAgKiBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lLCByZXNwZWN0aXZlbHkuIFRvIGV4dGVuZCB0aGUgcmVxdWVzdGVkIGxpZmV0aW1lcyBwYXN0IHRoZVxuICAgICAgICAgKiByZXF1ZXN0b3Incywgc2V0IHRoaXMgcHJvcGVydHkgdG8gYHRydWVgIChpbiB3aGljaCBjYXNlIE1GQSB3aWxsIGJlIHJlcXVpcmVkKS5cbiAgICAgICAgICovXG4gICAgICAgIGV4dGVuZF9saWZldGltZXM/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHNlc3Npb24ncyBwdXJwb3NlXG4gICAgICAgICAqIEBleGFtcGxlIE1hbmFnZSBrZXlzIG9uIHNlcnZlciBmb28uYmFyXG4gICAgICAgICAqL1xuICAgICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgd2hhdCBjYXBhYmlsaXRpZXMgdGhpcyBzZXNzaW9uIHdpbGwgaGF2ZS5cbiAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgKiAgIFwibWFuYWdlOmtleToqXCJcbiAgICAgICAgICogXVxuICAgICAgICAgKi9cbiAgICAgICAgc2NvcGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlXCJdW107XG4gICAgICB9O1xuICAgIENyZWF0ZVRva2VuUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdICZcbiAgICAgIGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbk1ldGFkYXRhXCJdICYge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHB1cnBvc2Ugb2YgdGhlIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBWYWxpZGF0b3IgU2lnbmluZ1xuICAgICAgICAgKi9cbiAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuIEJ5IGRlZmF1bHQsIGl0IGhhcyBhbGxcbiAgICAgICAgICogc2lnbmluZyBjYXBhYmlsaXRpZXMsIGkuZS4sIGp1c3QgdGhlICdzaWduOionIHNjb3BlLlxuICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAqICAgXCJzaWduOipcIlxuICAgICAgICAgKiBdXG4gICAgICAgICAqL1xuICAgICAgICBzY29wZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlXCJdW10gfCBudWxsO1xuICAgICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIHRoZSBbYGNzX2NyZWF0ZVRyYW5zYWN0aW9uYF0oUnBjTWV0aG9kOjpDcmVhdGVUcmFuc2FjdGlvbikgbWV0aG9kLiAqL1xuICAgIENyZWF0ZVRyYW5zYWN0aW9uUmVxdWVzdDoge1xuICAgICAgdHlwZTogXCJDcmVhdGVUcmFuc2FjdGlvblJlcXVlc3RcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUV2bVRyYW5zYWN0aW9uUmVxdWVzdFwiXSwgXCJ0eXBlXCI+ICYge1xuICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgY2hhaW46IFwiRXZtXCI7XG4gICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbiBleHRlbmRlZCBmb3JtIG9mIGBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zYCB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGRlcml2ZSB0aGUgV2ViQXV0aG4gY2hhbGxlbmdlXG4gICAgICogZnJvbSBhIHN0cnVjdHVyZWQgcHJlaW1hZ2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgd2VidWF0aG4gc2lnbmF0dXJlIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGEgc3BlY2lmaWMgcHVycG9zZVxuICAgICAqL1xuICAgIENyZWF0aW9uT3B0aW9uc1dpdGhIYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29yZSBSUEMgbWV0aG9kcyAodHJhbnNhY3Rpb24gQ1JVRCkuICovXG4gICAgQ3NScGM6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2NyZWF0ZVRyYW5zYWN0aW9uXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVRyYW5zYWN0aW9uUmVxdWVzdFwiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1ldGhvZDogXCJjc19nZXRUcmFuc2FjdGlvblwiO1xuICAgICAgICAgIHBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJHZXRUcmFuc2FjdGlvblJlcXVlc3RcIl07XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtZXRob2Q6IFwiY3NfbGlzdFRyYW5zYWN0aW9uc1wiO1xuICAgICAgICAgIHBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMaXN0VHJhbnNhY3Rpb25zUmVxdWVzdFwiXTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIEN1YmVTaWduZXJVc2VySW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBjb25maWd1cmVkX21mYTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb25maWd1cmVkTWZhXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNldCBvbmNlIHRoZSB1c2VyIHN1Y2Nlc3NmdWxseSBsb2dzIGludG8gQ3ViZVNpZ25lciAqL1xuICAgICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGh1bWFuIG5hbWUgZm9yIHRoZSB1c2VyICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQ3ViZVNpZ25lcidzIHVzZXIgaWRlbnRpZmllciAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDdXN0b20gY2hhaW4gUlBDIHJlcXVlc3QgKi9cbiAgICBDdXN0b21DaGFpblJwY1JlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCBib2R5ICovXG4gICAgICBib2R5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIGNoYWluOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1c3RvbUNoYWluU2VsZWN0b3JcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcmVsYXRpdmUgcGF0aCAqL1xuICAgICAgcGF0aDogc3RyaW5nO1xuICAgIH07XG4gICAgQ3VzdG9tQ2hhaW5ScGNSZXNwb25zZTogdW5rbm93bjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEN1c3RvbSBjaGFpbiBzZWxlY3RvciAqL1xuICAgIEN1c3RvbUNoYWluU2VsZWN0b3I6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRVZNIGNoYWluICovXG4gICAgICBFdm06IHtcbiAgICAgICAgLyoqIEBleGFtcGxlIDB4MDEgKi9cbiAgICAgICAgY2hhaW5faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGFuIG9yZydzIGN1c3RvbSBjaGFpbnMuICovXG4gICAgQ3VzdG9tQ2hhaW5zRGF0YToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDdXN0b20gRVZNIGNoYWlucy4gKi9cbiAgICAgIGV2bTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1DdXN0b21DaGFpblwiXVtdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIHByb2R1Y2VkIGJ5IGEgc3VjY2Vzc2Z1bCBkZXBvc2l0XG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJjaGFpbl9pZFwiOiA1LFxuICAgICAqICAgXCJkZXBvc2l0X3R4blwiOiB7XG4gICAgICogICAgIFwiZGF0YVwiOiBcIjB4Li4uXCIsXG4gICAgICogICAgIFwidG9cIjogXCIweGZmNTBlZDNkMGVjMDNhYzAxZDRjNzlhYWQ3NDkyOGJmZjQ4YTdiMmJcIixcbiAgICAgKiAgICAgXCJ2YWx1ZVwiOiBcIjB4MWJjMTZkNjc0ZWM4MDAwMDBcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwibmV3X3ZhbGlkYXRvcl9wa1wiOiBcIjk3MDBmYmI4YzkwNjk0MjQ0MmMyYTViM2FkNzQ5OGYyN2FlZGRhMjUzNzg2YTZmYmFhOGZlZjQ3ZmI3YWYyMzRlNTBjZjJjY2U4MTVhNTUzMDg3OTkyYWU1NjVkNDhkYVwiXG4gICAgICogfVxuICAgICAqL1xuICAgIERlcG9zaXRUeG46IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIENoYWluIElEIGZvciB3aGljaCB0aGUgZGVwb3NpdCB0cmFuc2FjdGlvbiB3YXMgY3JlYXRlZFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVwb3NpdCB0cmFuc2FjdGlvbi4gSW5jbHVkZXMgb25seSBgdG9gLCBgdmFsdWVgLCBhbmQgYGRhdGFgIGZpZWxkcy4gKi9cbiAgICAgIGRlcG9zaXRfdHhuOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBjb21wcmVzc2VkIGZvcm0gb2YgdGhlIG5ldyB2YWxpZGF0b3IgQkxTIHB1YmxpYyBrZXkgKi9cbiAgICAgIG5ld192YWxpZGF0b3JfcGs6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiBkZXBvc2l0IHRvIHBlcmZvcm1cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIERlcG9zaXRUeXBlOiBcIkNhbm9uaWNhbFwiIHwgXCJXcmFwcGVyXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIGRlcml2ZSBrZXlzIGZvciBvbmUgdHlwZSBmcm9tIGEgc3BlY2lmaWVkIG1uZW1vbmljLiAqL1xuICAgIERlcml2ZUtleVJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlQW5kVXBkYXRlS2V5UHJvcGVydGllc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIExpc3Qgb2YgZGVyaXZhdGlvbiBwYXRocyBmb3Igd2hpY2ggdG8gZGVyaXZlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIm0vNDQnLzYwJy8wJy8wLzBcIixcbiAgICAgICAqICAgXCJtLzQ0Jy85MDAwJy8wJy8wLzBcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSAodGhlIGRlZmF1bHQpLCBub3RoaW5nIGlzIHJldHVybmVkIHdoZW4gYSBkZXJpdmVkIGtleSBhbHJlYWR5XG4gICAgICAgKiBleGlzdHMuIFdoZW4gdHJ1ZSwgcmV0dXJucyB0aGUgS2V5SW5mbyBzdHJ1Y3QgZm9yIGtleXMgdGhhdCBhbHJlYWR5IGV4aXN0XG4gICAgICAgKiBpZiBjYWxsZXIgaXMgYWxsb3dlZCB0byBsaXN0IHRoYXQga2V5LlxuICAgICAgICovXG4gICAgICBpZGVtcG90ZW50PzogYm9vbGVhbjtcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXRlcmlhbC1pZCBvZiB0aGUgbW5lbW9uaWMgdG8gdXNlIGZvciBkZXJpdmF0aW9uLlxuICAgICAgICogQGV4YW1wbGUgMHg5ZjA3YmU4MmQ5MzRmY2I1ZDBmNzVkZDI0YzJkZmVhOGE4NWE0ZDBjMjg5ZDU4ODI4YjM1MzdmYWUyNGQzMmI4XG4gICAgICAgKi9cbiAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gZGVyaXZlIGtleXMgZm9yIG11bHRpcGxlIHR5cGVzIGZyb20gYSBzcGVjaWZpZWQgbW5lbW9uaWMuICovXG4gICAgRGVyaXZlS2V5c1JlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlQW5kVXBkYXRlS2V5UHJvcGVydGllc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gZmFsc2UgKHRoZSBkZWZhdWx0KSwgbm90aGluZyBpcyByZXR1cm5lZCB3aGVuIGEgZGVyaXZlZCBrZXkgYWxyZWFkeVxuICAgICAgICogZXhpc3RzLiBXaGVuIHRydWUsIHJldHVybnMgdGhlIEtleUluZm8gc3RydWN0IGZvciBrZXlzIHRoYXQgYWxyZWFkeSBleGlzdFxuICAgICAgICogaWYgY2FsbGVyIGlzIGFsbG93ZWQgdG8gbGlzdCB0aGF0IGtleS5cbiAgICAgICAqL1xuICAgICAgaWRlbXBvdGVudD86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgdHlwZXMgYW5kIGNvcnJlc3BvbmRpbmcgcGF0aHMgZm9yIGRlcml2YXRpb24sIHBsdXMgb3B0aW9uYWxcbiAgICAgICAqIHBvbGljaWVzIHRvIGluY2x1ZGUgZm9yIHNwZWNpZmljIGtleXMuIEl0IGlzIGFuIGVycm9yIHRvIHNwZWNpZnlcbiAgICAgICAqIGEgcG9saWN5IHRoYXQgZG9lcyBub3QgYXBwbHkgdG8gdGhlIGNvcnJlc3BvbmRpbmcga2V5IHR5cGUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcImRlcml2YXRpb25fcGF0aFwiOiBcIm0vNDQnLzYwJy8wJy8wLzBcIixcbiAgICAgICAqICAgICBcImtleV90eXBlXCI6IFwiU2VjcEV0aEFkZHJcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJkZXJpdmF0aW9uX3BhdGhcIjogXCJtLzExJy8yMicvMzNcIixcbiAgICAgICAqICAgICBcImtleV90eXBlXCI6IFwiVGFwcm9vdEJ0Y1wiLFxuICAgICAgICogICAgIFwicG9saWN5XCI6IFtcbiAgICAgICAqICAgICAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGtleV90eXBlc19hbmRfZGVyaXZhdGlvbl9wYXRoczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlQW5kRGVyaXZhdGlvblBhdGhcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1hdGVyaWFsLWlkIG9mIHRoZSBtbmVtb25pYyB0byB1c2UgZm9yIGRlcml2YXRpb24uIElmIHVuc3BlY2lmaWVkLFxuICAgICAgICogYSBuZXcgbW5lbW9uaWMgaXMgZmlyc3QgY3JlYXRlZC5cbiAgICAgICAqIEBleGFtcGxlIDB4OWYwN2JlODJkOTM0ZmNiNWQwZjc1ZGQyNGMyZGZlYThhODVhNGQwYzI4OWQ1ODgyOGIzNTM3ZmFlMjRkMzJiOFxuICAgICAgICovXG4gICAgICBtbmVtb25pY19pZD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBEaWZmaWVIZWxsbWFuUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2V0IG9mIHNlcmlhbGl6ZWQgZWxsaXB0aWMgY3VydmUgcG9pbnRzIGZyb20gd2hpY2ggdG8gY29tcHV0ZSBzaGFyZWQgc2VjcmV0cy5cbiAgICAgICAqIFRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCBvZiB0aGVzZSBwb2ludHMgZGVwZW5kcyBvbiB0aGUga2V5IHR5cGU7IHNlZSB0aGUgQ3ViZVNpZ25lclxuICAgICAgICogZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgICAqL1xuICAgICAgcG9pbnRzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIE5JU1QgUC0yNTYgcHVibGljIGtleSAoYmFzZTY0LWVuY29kZWQgU0VDMSB3aXRoIG9yIHdpdGhvdXQgY29tcHJlc3Npb24pLlxuICAgICAgICpcbiAgICAgICAqIElmIHByb3ZpZGVkLCB0aGUgcmVzcG9uc2Ugd2lsbCBiZSBlbmNyeXB0ZWQgdG8gdGhpcyBwdWJsaWMga2V5IHVzaW5nIFJGQzkxODBcbiAgICAgICAqIEhQS0UtREhLRU0oUC0yNTYsIEhLREYtU0hBMjU2KSB3aXRoIEFFUy0yNTYtR0NNIGFzIHRoZSBzeW1tZXRyaWMgY2lwaGVyLlxuICAgICAgICpcbiAgICAgICAqIElmIG5vIHB1YmxpYyBrZXkgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0cyB3aWxsIGJlIHJldHVybmVkIHVuZW5jcnlwdGVkLiBJbiB0aGlzXG4gICAgICAgKiBjYXNlLCB0aGUgaW5wdXQgcG9pbnRzIHNob3VsZCBiZSBtYXNrZWQgd2l0aCBhIHJhbmRvbSBzY2FsYXIgdG8gYXZvaWQgbGVha2luZyB0aGVcbiAgICAgICAqIHNoYXJlZCBzZWNyZXQgaW4gdGhlIHJlc3BvbnNlOyB0aGUgcmVzdWx0cyBjYW4gYmUgdW5tYXNrZWQgdmlhIHBvaW50IG11bHRpcGxpY2F0aW9uXG4gICAgICAgKiB3aXRoIHRoZSBpbnZlcnNlIG9mIHRoZSBtYXNraW5nIHNjYWxhci5cbiAgICAgICAqIEBleGFtcGxlIEFrcExULzNkWEFwSnpYU2R1YVBRN2FweVQwQURCd3FrdDFlcy9hVDBpV1dmXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzdWx0IG9mIGEgRGlmZmllIEhlbGxtYW4ga2V5IGV4Y2hhbmdlICovXG4gICAgRGlmZmllSGVsbG1hblJlc3BvbnNlOiAoXG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHRpbmcgcG9pbnRzIGFzIGJhc2U2NC1lbmNvZGVkIGJ5dGUgc3RyaW5ncyBpbiBhIGtleS10eXBlLS1kZXBlbmRlbnQgZm9ybWF0LiAqL1xuICAgICAgICAgIHBvaW50czogc3RyaW5nW107XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgcmVzcG9uc2VfdHlwZTogXCJtYXNrZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgY2lwaGVydGV4dCBjb250YWluaW5nIHRoZSByZXN1bHRpbmcgcG9pbnRzLiBUaGUgZW5jbG9zZWQgcGxhaW50ZXh0IGlzIGEgc2VxdWVuY2VcbiAgICAgICAgICAgKiBvZiBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZ3MgaW4gYSBrZXktdHlwZS0tZGVwZW5kZW50IGZvcm1hdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNyeXB0ZWRfc2hhcmVkX3NlY3JldHM6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHVzZWQgZm9yIEhQS0Uga2V5IGRlcml2YXRpb24gaW4gYmFzZTY0LWVuY29kZWRcbiAgICAgICAgICAgKiB1bmNvbXByZXNzZWQgU0VDMSBzZXJpYWxpemF0aW9uLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVwaGVtZXJhbF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgcmVzcG9uc2VfdHlwZTogXCJlbmNyeXB0ZWRcIjtcbiAgICAgICAgfVxuICAgICkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIHBvbGljeSB3aGljaCBnb3Zlcm5zIHdoZW4gYW5kIHdobyBpcyBhbGxvd2VkIHRvIHVwZGF0ZSB0aGUgZW50aXR5IHRoaXMgcG9saWN5IGlzXG4gICAgICogYXR0YWNoZWQgdG8gKGUuZy4sIGEgcm9sZSBvciBhIGtleSkuXG4gICAgICpcbiAgICAgKiBXaGVuIGF0dGFjaGVkIHRvIGEgcm9sZSwgYnkgZGVmYXVsdCwgdGhpcyBwb2xpY3kgYXBwbGllcyB0byByb2xlIGRlbGV0aW9uIGFuZCBhbGxcbiAgICAgKiByb2xlIHVwZGF0ZXMgKGluY2x1ZGluZyBhZGRpbmcvcmVtb3Zpbmcga2V5cyBhbmQgdXNlcnMpOyBpbiB0ZXJtcyBvZiBzY29wZXMsXG4gICAgICogaXQgYXBwbGllcyB0byBgbWFuYWdlOnJvbGU6dXBkYXRlOipgIGFuZCBgbWFuYWdlOnJvbGU6ZGVsZXRlYC5cbiAgICAgKlxuICAgICAqIFdoZW4gYXR0YWNoZWQgdG8gYSBrZXksIGJ5IGRlZmF1bHQsIHRoaXMgcG9saWN5IGFwcGxpZXMgdG8ga2V5IGRlbGV0aW9uLCBhbGxcbiAgICAgKiBrZXkgdXBkYXRlcywgYW5kIGFkZGluZy9yZW1vdmluZyB0aGF0IGtleSB0by9mcm9tIGEgcm9sZTsgaW4gdGVybXMgb2Ygc2NvcGVzLFxuICAgICAqIGl0IGFwcGxpZXMgdG8gYG1hbmFnZTprZXk6dXBkYXRlOipgLCBgbWFuYWdlOmtleTpkZWxldGVgLCBgbWFuYWdlOnJvbGU6dXBkYXRlOmtleToqYC5cbiAgICAgKlxuICAgICAqIFRoaXMgZGVmYXVsdCBjYW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIHRoZSBgYXBwbGllc190b19zY29wZXNgIHByb3BlcnR5LlxuICAgICAqL1xuICAgIEVkaXRQb2xpY3k6IHtcbiAgICAgIGFwcGxpZXNfdG9fc2NvcGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVNldFwiXTtcbiAgICAgIG1mYT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIHRpbWVfbG9ja191bnRpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgfTtcbiAgICBFaXAxOTFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFSVAtMTkxIGRhdGEgdG8gc2lnbiBhcyBoZXgtZW5jb2RlZCBieXRlcy5cbiAgICAgICAqIEBleGFtcGxlIDB4ZGVhZGJlZWYxM2MwZmZlZVxuICAgICAgICovXG4gICAgICBkYXRhOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCB0d2VhayB2YWx1ZSB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgc2VjcmV0IGtleSBiZWZvcmUgc2lnbmluZy5cbiAgICAgICAqIFRoaXMgZmllbGQgbXVzdCBjb250YWluIGEgYmFzZS02NCBzdHJpbmcgZW5jb2RpbmcgYSB2ZWN0b3Igb2YgZXhhY3RseSAzMiBieXRlcy5cbiAgICAgICAqIFNlZSB0aGUgQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSB0d2Vha2luZyBwcm9jZWR1cmUuXG4gICAgICAgKiBAZXhhbXBsZSBGNDFIQXkycTVHbjhsYUYyQ3VNc1piUkFRVG1EKzRPYjNWVU1aN1RCR0s0PVxuICAgICAgICovXG4gICAgICB0d2Vhaz86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDEzMzcsXG4gICAgICogICBcInR5cGVkX2RhdGFcIjoge1xuICAgICAqICAgICBcImRvbWFpblwiOiB7XG4gICAgICogICAgICAgXCJjaGFpbklkXCI6IDEzMzcsXG4gICAgICogICAgICAgXCJuYW1lXCI6IFwiRXRoZXIgTWFpbFwiLFxuICAgICAqICAgICAgIFwic2FsdFwiOiBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLFxuICAgICAqICAgICAgIFwidmVyaWZ5aW5nQ29udHJhY3RcIjogXCIweENjQ0NjY2NjQ0NDQ2NDQ0NDQ0NjQ2NDY2NDY0NDQ2NDY2NjY2NjY0NcIixcbiAgICAgKiAgICAgICBcInZlcnNpb25cIjogXCIxXCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJtZXNzYWdlXCI6IHtcbiAgICAgKiAgICAgICBcImNvbnRlbnRzXCI6IFwiSGVsbG8sIEJvYiFcIixcbiAgICAgKiAgICAgICBcImZyb21cIjoge1xuICAgICAqICAgICAgICAgXCJuYW1lXCI6IFwiQ293XCIsXG4gICAgICogICAgICAgICBcIndhbGxldHNcIjogW1xuICAgICAqICAgICAgICAgICBcIjB4Q0QyYTNkOUY5MzhFMTNDRDk0N0VjMDVBYkM3RkU3MzREZjhERDgyNlwiLFxuICAgICAqICAgICAgICAgICBcIjB4RGVhRGJlZWZkRUFkYmVlZmRFYWRiRUVGZGVhZGJlRUZkRWFEYmVlRlwiXG4gICAgICogICAgICAgICBdXG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcInRvXCI6IHtcbiAgICAgKiAgICAgICAgIFwibmFtZVwiOiBcIkJvYlwiLFxuICAgICAqICAgICAgICAgXCJ3YWxsZXRzXCI6IFtcbiAgICAgKiAgICAgICAgICAgXCIweGJCYkJCQkJiYkJCQmJiYkJiYkJiYmJiQkJiQmJiYmJCYkJiYkJCYkJcIixcbiAgICAgKiAgICAgICAgICAgXCIweEIwQmRhQmVhNTdCMEJEQUJlQTU3YjBiZEFCRUE1N2IwQkRhYkVhNTdcIixcbiAgICAgKiAgICAgICAgICAgXCIweEIwQjBiMGIwYjBiMEIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAqICAgICAgICAgXVxuICAgICAqICAgICAgIH1cbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJwcmltYXJ5VHlwZVwiOiBcIk1haWxcIixcbiAgICAgKiAgICAgXCJ0eXBlc1wiOiB7XG4gICAgICogICAgICAgXCJFSVA3MTJEb21haW5cIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ2ZXJzaW9uXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJjaGFpbklkXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInVpbnQyNTZcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwidmVyaWZ5aW5nQ29udHJhY3RcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiYWRkcmVzc1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJzYWx0XCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcImJ5dGVzMzJcIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF0sXG4gICAgICogICAgICAgXCJHcm91cFwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm1lbWJlcnNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiUGVyc29uW11cIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF0sXG4gICAgICogICAgICAgXCJNYWlsXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwiZnJvbVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25cIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwidG9cIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiUGVyc29uXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcImNvbnRlbnRzXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIlBlcnNvblwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIndhbGxldHNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiYWRkcmVzc1tdXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdXG4gICAgICogICAgIH1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgRWlwNzEyU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHByb2R1Y2UgYSB2YWxpZCBzaWduYXR1cmUsIGp1c3QgZXZhbHVhdGUgYXR0YWNoZWQgcG9saWNpZXMuICovXG4gICAgICBkcnlfcnVuPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNoYWluLWlkIHRvIHdoaWNoIHRoaXMgdHlwZWQgZGF0YSB3aWxsIGJlIHNlbnRcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBzZWNyZXQga2V5IGJlZm9yZSBzaWduaW5nLlxuICAgICAgICogVGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZiBleGFjdGx5IDMyIGJ5dGVzLlxuICAgICAgICogU2VlIHRoZSBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHR3ZWFraW5nIHByb2NlZHVyZS5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIHR3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHR5cGVkX2RhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWREYXRhXCJdO1xuICAgIH07XG4gICAgRW1haWw6IHN0cmluZztcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGFuc3dlciB0byB0aGUgY2hhbGxlbmdlIHJldHVybmVkIGJ5IHRoZSBgbWZhX2VtYWlsX2luaXRgIGVuZHBvaW50LiAqL1xuICAgIEVtYWlsT3RwQW5zd2VyOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBGdWxsIEpXVCB0b2tlbiwgY29uc3RydWN0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGUgXCJwYXJ0aWFsIHRva2VuXCJcbiAgICAgICAqIChpLmUuLCBge2hlYWRlcn0ue3BheWxvYWR9LmApIHJldHVybmVkIGJ5IHRoZSBgbWFpbF9lbWFpbF9pbml0YCBlbmRwb2ludFxuICAgICAgICogYW5kIHRoZSBzaWduYXR1cmUgc2VudCB0byB0aGUgdXNlcidzIGVtYWlsLlxuICAgICAgICovXG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCB1c2VycyBzZW5kIHRvIGluaXRpYXRlIGVtYWlsIE9UUCAqL1xuICAgIEVtYWlsT3RwUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSBPVFAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEhUVFAgcmVzcG9uc2UgdG8gYW4gZW1haWwgT1RQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBUaGlzIHJlc3BvbnNlIGNvbnRhaW5zIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZS5cbiAgICAgKiBUaGUgc2lnbmF0dXJlIGlzIHNlbnQgdG8gdGhlIGVuZC11c2VyIGluIGFuIGVtYWlsLlxuICAgICAqIFRoZSB0b2tlbiBjYW4gYmUgcmVjb25zdHJ1Y3RlZCBieSBjb25jYXRlbmF0aW5nIHRoZSBgcGFydGlhbF90b2tlbmAgd2l0aCB0aGUgc2lnbmF0dXJlLlxuICAgICAqL1xuICAgIEVtYWlsT3RwUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHRva2VuIHdpdGhvdXQgdGhlIHNpZ25hdHVyZS5cbiAgICAgICAqIChUaGUgc2lnbmF0dXJlLCB3aGljaCBpcyBhY3R1YWxseSBhIE1BQywgaXMgc2VudCB0byB0aGUgZW5kLXVzZXIgaW4gYW4gZW1haWwpXG4gICAgICAgKi9cbiAgICAgIHBhcnRpYWxfdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIGVtYWlsIHByZWZlcmVuY2VzIGF0IGFuIE9yZyBsZXZlbCAtIHdoYXQgZW1haWxzIHRvIHNlbmQgYW5kIG9wdGlvbnMgYXNzb2NpYXRlZCAqL1xuICAgIEVtYWlsUHJlZmVyZW5jZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnQWxlcnRzUHJlZnNcIl0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHRydWUsIHNlbmQgbm90aWZpY2F0aW9ucyBvbiBldmVyeSBsb2dpbiAqL1xuICAgICAgbG9naW5fbm90aWZpY2F0aW9ucz86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgdHJ1ZSwgc2VuZCBub3RpZmljYXRpb25zIHdoZW4gbG9nZ2luZyBpbiBmcm9tIGEgbmV3IGRldmljZS5cbiAgICAgICAqIG5ld19kZXZpY2UgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGxvZ2luX25vdGlmaWNhdGlvbnMuIEUuZy4sIGVtYWlsIGZvclxuICAgICAgICogbmV3X2RldmljZSBpcyBzZW50IGluc3RlYWQgb2YgYSBnZW5lcmFsIGxvZ2luIG5vdGlmaWNhdGlvbiBlbWFpbCB3aGVuIGFcbiAgICAgICAqIG5ldyBkZXZpY2UgaXMgZGV0ZWN0ZWRcbiAgICAgICAqL1xuICAgICAgbmV3X2RldmljZT86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJZiB0cnVlLCBzZW5kIGVtYWlsIG5vdGlmaWNhdGlvbnMgZm9yIG1mYSBhcHByb3ZhbHMgKi9cbiAgICAgIHBlbmRpbmdfYXBwcm92YWxzPzogYm9vbGVhbiB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gcmVzZXQgdmVyaWZpZWQgZW1haWwuICovXG4gICAgRW1haWxSZXNldFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhpcyBlbWFpbCBzaG91bGQgYmUgdXNhYmxlIGZvciBlbWFpbCBPVFAgbG9naW4uIFRoZSByZXF1ZXN0XG4gICAgICAgKiB3aWxsIGZhaWwgaWYgdGhpcyBmaWVsZCBpcyBzZXQgdG8gYHRydWVgLCBhbmQgdGhlIG9yZyBkb2VzIG5vdCBoYXZlXG4gICAgICAgKiBlbWFpbCBPVFAgZW5hYmxlZC4gRGVmYXVsdDogYGZhbHNlYFxuICAgICAgICovXG4gICAgICBhbGxvd19vdHBfbG9naW4/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIHRvIHJlZ2lzdGVyICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZWZhdWx0IG51bGwgKi9cbiAgICBFbXB0eTogdW5rbm93bjtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gY3JlYXRlIGEgc2V0IG9mIEVPVFMgbm9uY2VzIGZvciBhIHNwZWNpZmllZCBjaGFpbi1pZCwgc3RhcnRpbmdcbiAgICAgKiBhdCBhIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAgICovXG4gICAgRW90c0NyZWF0ZU5vbmNlUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBub25jZXMgd2lsbCBiZSB1c2VkLCBhcyBhIGhleCBzdHJpbmdcbiAgICAgICAqIEBleGFtcGxlIDB4MTEyMjMzNDRcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBudW1iZXIgb2Ygbm9uY2VzIHRvIGdlbmVyYXRlXG4gICAgICAgKiBAZXhhbXBsZSAxNlxuICAgICAgICovXG4gICAgICBudW06IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydGluZyBibG9jayBoZWlnaHQgb2YgdGhlIGdlbmVyYXRlZCBub25jZXMgKHF1b3RlZCBkZWNpbWFsIHU2NClcbiAgICAgICAqIEBleGFtcGxlIDMxMzM3XG4gICAgICAgKi9cbiAgICAgIHN0YXJ0X2hlaWdodDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSBnZW5lcmF0ZWQgd2hlbiBjcmVhdGluZyBFT1RTIG5vbmNlcyAqL1xuICAgIEVvdHNDcmVhdGVOb25jZVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGdlbmVyYXRlZCBub25jZXMgYXMgYW4gYXJyYXkgb2YgMHgtcHJlZml4ZWQgaGV4IHN0cmluZ3NcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCIweGIzOTNiZjM5ZTcxYTE2ZDc4NDg1M2Q1ODI1NWEyOTYyMjJhOTlmZDNjODdhYTdjYTIwNmM1MjMwYzE4OGYxYzdcIixcbiAgICAgICAqICAgXCIweGUwMTkzNjU4NGI0ZjBjMGU5N2YwZDMwMThjNGY5ZGIyYmY3ZGU0MTM5NWM2NDAzYTQ4ZmQwZGZmMGVmN2I0MGRcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBub25jZXM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGZvciBhbiBFT1RTIHNpZ25hdHVyZSBvbiBhIHNwZWNpZmllZCBtZXNzYWdlLCBjaGFpbi1pZCwgYmxvY2staGVpZ2h0IHRyaXBsZSAqL1xuICAgIEVvdHNTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYmxvY2sgaGVpZ2h0IGZvciB0aGUgc2lnbmF0dXJlIChxdW90ZWQgZGVjaW1hbCB1NjQpXG4gICAgICAgKiBAZXhhbXBsZSAxMjM0NTZcbiAgICAgICAqL1xuICAgICAgYmxvY2tfaGVpZ2h0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQgZm9yIHRoZSBzaWduYXR1cmVcbiAgICAgICAqIEBleGFtcGxlIDB4MTEyMjMzNDRcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBtZXNzYWdlIHRvIHNpZ25cbiAgICAgICAqIEBleGFtcGxlIDB4NWEyNjg4ZmFlYTA5ZDQyYjkyNzBmZGI4ZGU2ZmZmNmYxOTIyNDNhOTEwYmE2NjMyOTA3M2UxMmUwZDAwNDZhMlxuICAgICAgICovXG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRXBvY2ggaXMgYSBxdW90ZWQgYHVpbnQ2NGAuXG4gICAgICogQGV4YW1wbGUgMjU2XG4gICAgICovXG4gICAgRXBvY2g6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICogQGRlc2NyaXB0aW9uIERhdGVUaW1lIG1lYXN1cmVkIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC5cbiAgICAgKiBBIHdyYXBwZXIgdHlwZSBmb3Igc2VyaWFsaXphdGlvbiB0aGF0IGVuY29kZXMgYSBbYFN5c3RlbVRpbWVgXSBhcyBhIFtgdTY0YF1cbiAgICAgKiByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIFtgU3lzdGVtVGltZTo6VU5JWF9FUE9DSGBdLlxuICAgICAqL1xuICAgIEVwb2NoRGF0ZVRpbWU6IG51bWJlcjtcbiAgICBFcnJvck9iajoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29kZVxuICAgICAgICovXG4gICAgICBjb2RlOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGRhdGEgKi9cbiAgICAgIGRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNZXNzYWdlICovXG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzdHJ1Y3R1cmUgb2YgRXJyb3JSZXNwb25zZSBtdXN0IG1hdGNoIHRoZSByZXNwb25zZSB0ZW1wbGF0ZSB0aGF0IEFXUyB1c2VzICovXG4gICAgRXJyb3JSZXNwb25zZToge1xuICAgICAgYWNjZXB0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkVmFsdWVcIl0gfCBudWxsO1xuICAgICAgZXJyb3JfY29kZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZXJFcnJvckNvZGVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVycm9yIG1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZSAoaW5jbHVkZWQgaW4gc2lnbmVyIHJlc3BvbnNlcywgd2hlbiByZXF1ZXN0ZWQpICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcmVxdWVzdCBpZGVudGlmaWVyICovXG4gICAgICByZXF1ZXN0X2lkPzogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFc3Bsb3JhIHJlcXVlc3QgKi9cbiAgICBFc3Bsb3JhUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIGJvZHkgKi9cbiAgICAgIGJvZHk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIG1ldGhvZCAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgIG5ldHdvcms6IFwibWFpbm5ldFwiIHwgXCJ0ZXN0bmV0XCIgfCBcInNpZ25ldFwiO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIHJlbGF0aXZlIHBhdGggKHdoaWNoIGNvbWVzIGFmdGVyICcve25ldHdvcmt9L2FwaS8nKSAqL1xuICAgICAgcGF0aDogc3RyaW5nO1xuICAgIH07XG4gICAgRXNwbG9yYVJlc3BvbnNlOiB1bmtub3duO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFVk0gdHJhbnNhY3Rpb24gc2lnbmluZyByZXF1ZXN0LlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogNDMxMTMsXG4gICAgICogICBcInR4XCI6IHtcbiAgICAgKiAgICAgXCJjaGFpbl9pZFwiOiBcIjB4YTg2OVwiLFxuICAgICAqICAgICBcImdhc1wiOiBcIjB4NjFhODBcIixcbiAgICAgKiAgICAgXCJtYXhGZWVQZXJHYXNcIjogXCIweDk1MDJGOTAwXCIsXG4gICAgICogICAgIFwibWF4UHJpb3JpdHlGZWVQZXJHYXNcIjogXCIweDUwXCIsXG4gICAgICogICAgIFwibm9uY2VcIjogXCIweGJcIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZjAwYmExMmYwMDAwMDAwMGI0MTIxMjAwMDAwZjAwYzBmZmVlZjAwZFwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCIweDJcIixcbiAgICAgKiAgICAgXCJ2YWx1ZVwiOiBcIjB4MTAwMDAwMDAwMDBcIlxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFdGgxU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHByb2R1Y2UgYSB2YWxpZCBzaWduYXR1cmUsIGp1c3QgZXZhbHVhdGUgYXR0YWNoZWQgcG9saWNpZXMuICovXG4gICAgICBkcnlfcnVuPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNoYWluIGlkIHRvIHNldCBpbiB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCB0d2VhayB2YWx1ZSB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgc2VjcmV0IGtleSBiZWZvcmUgc2lnbmluZy5cbiAgICAgICAqIFRoaXMgZmllbGQgbXVzdCBjb250YWluIGEgYmFzZS02NCBzdHJpbmcgZW5jb2RpbmcgYSB2ZWN0b3Igb2YgZXhhY3RseSAzMiBieXRlcy5cbiAgICAgICAqIFNlZSB0aGUgQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSB0d2Vha2luZyBwcm9jZWR1cmUuXG4gICAgICAgKiBAZXhhbXBsZSBGNDFIQXkycTVHbjhsYUYyQ3VNc1piUkFRVG1EKzRPYjNWVU1aN1RCR0s0PVxuICAgICAgICovXG4gICAgICB0d2Vhaz86IHN0cmluZyB8IG51bGw7XG4gICAgICB0eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvblwiXTtcbiAgICB9O1xuICAgIEV0aDFTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBSTFAgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uIGFuZCBpdHMgc2lnbmF0dXJlXG4gICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICovXG4gICAgICBybHBfc2lnbmVkX3R4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImV0aDJfc2lnbl9yZXF1ZXN0XCI6IHtcbiAgICAgKiAgICAgXCJhZ2dyZWdhdGlvbl9zbG90XCI6IHtcbiAgICAgKiAgICAgICBcInNsb3RcIjogXCIzNlwiXG4gICAgICogICAgIH0sXG4gICAgICogICAgIFwiZm9ya19pbmZvXCI6IHtcbiAgICAgKiAgICAgICBcImZvcmtcIjoge1xuICAgICAqICAgICAgICAgXCJjdXJyZW50X3ZlcnNpb25cIjogXCIweDQyNDI0MjQyXCIsXG4gICAgICogICAgICAgICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgICAgICAgXCJwcmV2aW91c192ZXJzaW9uXCI6IFwiMHg0MjQyNDI0MlwiXG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcImdlbmVzaXNfdmFsaWRhdG9yc19yb290XCI6IFwiMHg5ZDEzZDYxMjEyYzA2N2UwMmNlOGU2MDhhNzAwN2UyYzNiMDI1NzFlOWU2ZjI3ZmY0NWRmYTkxYmYyN2M4NzBiXCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJzaWduaW5nUm9vdFwiOiBcIjB4OWM1N2U3N2M0OTY1NzI3NTQyYjkzMzdkZjY3NTZmOTQ4NDY0YmNhMzg1OWJlYTZlZDNjMGVjNjYwMGQ4OTgyYVwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCJBR0dSRUdBVElPTl9TTE9UXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ldHdvcmtcIjogXCJtYWlubmV0XCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRXRoMlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFN1YnNldCBvZiB0aGUgV2ViM1NpZ25lciBFdGgyIEJMUyBzaWduaW5nIHJlcXVlc3Qgd2hvc2Ugc2NoZW1hIGlzIGRlZmluZWRcbiAgICAgICAqIFtoZXJlXShodHRwczovL2NvbnNlbnN5cy5naXRodWIuaW8vd2ViM3NpZ25lci93ZWIzc2lnbmVyLWV0aDIuaHRtbCN0YWcvU2lnbmluZy9vcGVyYXRpb24vRVRIMl9TSUdOKS5cbiAgICAgICAqIFdlIGhhbmRsZSBkZXBvc2l0cyBhbmQgdm9sdW50YXJ5IGV4aXRzIHNlcGFyYXRlbHkuXG4gICAgICAgKi9cbiAgICAgIGV0aDJfc2lnbl9yZXF1ZXN0OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ldHdvcmtcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50YXRpb24gb2YgYW4gZXZlbnQuIFRoaXMgdHlwZSBpcyB1c2VkIHRvIHNlcmlhbGl6ZSBldmVudHMgdG8gQ2xvdWRXYXRjaCBMb2dzIGFuZCB0b1xuICAgICAqIGRlc2VyaWFsaXplIHRoZW0gd2hlbiBhbmFseXppbmcgdGhlIGxvZ3MuXG4gICAgICovXG4gICAgRXZlbnQ6IHtcbiAgICAgIGV2ZW50OiBcIkV2ZW50XCI7XG4gICAgfSAmIE9taXQ8Y29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdmVudERhdGFcIl0sIFwiZXZlbnRcIj4gJiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVW5pcXVlIGlkZW50aWZpZXIgb2YgYW4gZXZlbnQuICovXG4gICAgICAgIGV2ZW50X2lkPzogc3RyaW5nO1xuICAgICAgICBvcmc6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG9yaWdpbiBoZWFkZXIgb2YgdGhlIHJlcXVlc3QgdGhhdCB0cmlnZ2VyZWQgdGhpcyBldmVudCAqL1xuICAgICAgICBvcmlnaW4/OiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSByZXF1ZXN0IHRoYXQgdHJpZ2dlcmVkIHRoaXMgZXZlbnQgKi9cbiAgICAgICAgcmVxdWVzdF9pZD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0aW1lc3RhbXAgb2YgdGhlIGV2ZW50IChpbiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIFVuaXggRXBvY2gpXG4gICAgICAgICAqL1xuICAgICAgICB1dGNfdGltZXN0YW1wOiBudW1iZXI7XG4gICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEYXRhIGFzc29jaWF0ZWQgd2l0aCBhbiBldmVudC4gRGVwZW5kaW5nIG9uIHRoZSBldmVudCB0eXBlIChpLmUuLCBiaWxsaW5nIG9yIG9yZyBldmVudCksXG4gICAgICogZGlmZmVyZW50IGZpZWxkcyBhcmUgdXNlZC5cbiAgICAgKi9cbiAgICBFdmVudERhdGE6XG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdBcmdzXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGV2ZW50OiBcImN1YmlzdDo6YmlsbGluZ1wiO1xuICAgICAgICB9KVxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudEFyZ3NcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgZXZlbnQ6IFwiY3ViaXN0OjpvcmdfZXZlbnRcIjtcbiAgICAgICAgfSk7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBFVk0gYWRkcmVzcyBhbmQgaXRzIGNoYWluLiAqL1xuICAgIEV2bUFkZHJlc3NJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgRVZNIGFkZHJlc3MuXG4gICAgICAgKiBAZXhhbXBsZSAweDUyZjZjMGIzMDZlNjY4OTNjMDQxNGFiYjcwOTUxYzRkYWMxNWE5NjlcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEVWTSBjaGFpbiB0aGlzIGFkZHJlc3MgYmVsb25ncyB0byAqKmFzIGEgaGV4IHN0cmluZyoqLiBUaGUgc3RyaW5nXG4gICAgICAgKiBtdXN0IHN0YXJ0IHdpdGggXCIweFwiIGFuZCBoYXZlIGFuIGV2ZW4gbGVuZ3RoLiBJZiB0aGUgY2hhaW4gaXMgb21pdHRlZCxcbiAgICAgICAqIHRoZSBhZGRyZXNzIGlzIGFsbG93ZWQgdG8gYmUgdXNlZCBvbiBhbnkgRVZNIGNoYWluLCBhbmQgaXMgcmVmZXJyZWQgdG9cbiAgICAgICAqIGFzIGEgZ2xvYmFsIEVWTSBhZGRyZXNzLlxuICAgICAgICogQGV4YW1wbGUgMHgwMVxuICAgICAgICovXG4gICAgICBjaGFpbj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgY3VycmVuY3kgdXNlZCBvbiBhbiBFVk0gY2hhaW4uICovXG4gICAgRXZtQ3VycmVuY3lJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgY3VycmVuY3kgdXNlcy5cbiAgICAgICAqIEBleGFtcGxlIDE4XG4gICAgICAgKi9cbiAgICAgIGRlY2ltYWxzOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBjdXJyZW5jeS5cbiAgICAgICAqIEBleGFtcGxlIEV0aGVyXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzeW1ib2wgZm9yIHRoZSBjdXJyZW5jeSwgdHlwaWNhbGx5IGEgdGhyZWUgbGV0dGVyIHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIEVUSFxuICAgICAgICovXG4gICAgICBzeW1ib2w6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBjdXN0b20gRVZNIGNoYWluLiAqL1xuICAgIEV2bUN1c3RvbUNoYWluOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQuIEVuZm9yY2VkIHRvIGJlIHVuaXF1ZSBhbW9uZyBhbGwgY3VzdG9tIEVWTSBjaGFpbnMgaW4gdGhlIG9yZ2FuaXphdGlvbi4gSXQgbXVzdCBiZSBhIGhleCBzdHJpbmcgKHN0YXJ0aW5nIHdpdGggXCIweFwiKSB3aXRoIGV2ZW4gbGVuZ3RoLlxuICAgICAgICogQGV4YW1wbGUgMHgwMVxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5hbWUgb2YgdGhlIGNoYWluLlxuICAgICAgICogQGV4YW1wbGUgRXRoZXJldW0gTWFpbm5ldFxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBuYXRpdmVfY3VycmVuY3k6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtQ3VycmVuY3lJbmZvXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFVSTCBvZiB0aGUgUlBDIHByb3ZpZGVyIGZvciB0aGlzIGNoYWluLlxuICAgICAgICogQGV4YW1wbGUgaHR0cHM6Ly9ldGhlcmV1bS1ycGMucHVibGljbm9kZS5jb21cbiAgICAgICAqL1xuICAgICAgcnBjX3VybDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBFVk0gdG9rZW4uICovXG4gICAgRXZtVG9rZW46XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0b2tlbjogXCJOYXRpdmVcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgdG9rZW46IFwiRXJjMjBcIjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBFUkMtMjAgdG9rZW4gYWRkcmVzcy4gKi9cbiAgICAgICAgICB0b2tlbl9hZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFVk0tc3BlY2lmaWMgdHJhbnNhY3Rpb24gZGV0YWlscy4gKi9cbiAgICBFdm1UcmFuc2FjdGlvbkRldGFpbHM6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBoYXNoLCBhcyBzdWJtaXR0ZWQgdG8gdGhlIGNoYWluLlxuICAgICAgICpcbiAgICAgICAqIENhbiBiZSB1bmRlZmluZWQgaWYgdGhlIHRyYW5zYWN0aW9uIGhhc24ndCBiZWVuIHNpZ25lZCBvciBzdWJtaXR0ZWQgeWV0LlxuICAgICAgICovXG4gICAgICBoYXNoPzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSBmb3IgdGhlIHRyYW5zYWN0aW9uLlxuICAgICAgICpcbiAgICAgICAqIENhbiBiZSB1bmRlZmluZWQgaWYgdGhlIHRyYW5zYWN0aW9uIGhhc24ndCBiZWVuIHNpZ25lZCB5ZXQsIG9yIGZhaWxlZCB0byBiZSBzaWduZWQuXG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBpdHNlbGYuICovXG4gICAgICB0eDogdW5rbm93bjtcbiAgICB9O1xuICAgIEV2bVR4Q21wOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUbyBwcmV2ZW50IHJlcGxheSBhdHRhY2tzLCBhbnkgZ2l2ZW4gTUZBIHJlY2VpcHQgaXMgbm9ybWFsbHkgYWxsb3dlZCB0byBiZSB1c2VkIG9ubHkgb25jZS5cbiAgICAgICAqXG4gICAgICAgKiBJbiB0aGlzIGNhc2UsIGhvd2V2ZXIsIGJlY2F1c2UgRVZNIHRyYW5zYWN0aW9ucyBhbHJlYWR5IGhhdmUgYSByZXBsYXkgcHJldmVudGlvbiBtZWNoYW5pc21cbiAgICAgICAqIChuYW1lbHkgdGhlICdub25jZScgcHJvcGVydHkpLCB3ZSBhbGxvdyB0aGUgdXNlciB0byBzcGVjaWZ5IGEgZ3JhY2UgcGVyaW9kIChpbiBzZWNvbmRzKSB0b1xuICAgICAgICogaW5kaWNhdGUgaG93IGxvbmcgYW4gTUZBIHJlY2VpcHQgc2hvdWxkIHJlbWFpbiB2YWxpZCBhZnRlciBpdHMgZmlyc3QgdXNlLlxuICAgICAgICpcbiAgICAgICAqIE5vdGUgdGhhdCB3ZSBhbGxvdyBib3RoICdncmFjZScgYW5kICdpZ25vcmVfbm9uY2UnIHRvIGJlIHNldCBiZWNhdXNlIG9uY2UgYW4gTUZBIHJlcXVlc3RcbiAgICAgICAqIGVudGVycyBpdHMgZ3JhY2UgcGVyaW9kIHdlIHVuY29uZGl0aW9uYWxseSBzZXQgaXRzICdpZ25vcmVfbm9uY2UnIHByb3BlcnR5IHRvICdmYWxzZScgdG9cbiAgICAgICAqIGVuc3VyZSB0aGF0IGFueSBzdWJzZXF1ZW50IHJlcXVlc3RzIHRoYXQgY2xhaW0gdGhlIHNhbWUgcmVjZWlwdCBtdXN0IHNpZ24gZm9yIHRoZSBzYW1lXG4gICAgICAgKiBub25jZSBhcyB0aGUgcmVxdWVzdCB3ZSBzaWduZWQgb3JpZ2luYWxseSB3aXRoIHRoYXQgcmVjZWlwdC5cbiAgICAgICAqXG4gICAgICAgKiBBbHNvIG5vdGUgdGhhdCB0aGUgZ3JhY2UgcGVyaW9kIGNhbm5vdCBleHRlbmQgdGhlIGxpZmV0aW1lIG9mIGFuIE1GQSByZXF1ZXN0IGJleW9uZCBpdHNcbiAgICAgICAqIG9yaWdpbmFsIGV4cGlyYXRpb24gZGF0ZS5cbiAgICAgICAqXG4gICAgICAgKiBUaGUgZ3JhY2UgcGVyaW9kIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiAzMCBkYXlzLlxuICAgICAgICovXG4gICAgICBncmFjZT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlICdnYXMnIHByb3BlcnR5IG9mIHRoZSBFVk0gdHJhbnNhY3Rpb24gaXMgYWxsb3dlZCB0byBiZSBkaWZmZXJlbnQuICovXG4gICAgICBpZ25vcmVfZ2FzPzogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgJ25vbmNlJyBwcm9wZXJ0eSBvZiB0aGUgRVZNIHRyYW5zYWN0aW9uIGlzIGFsbG93ZWQgdG8gYmUgZGlmZmVyZW50LiAqL1xuICAgICAgaWdub3JlX25vbmNlPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZmllbGRzIHVzZWQgdG8gY3VzdG9taXplIEVWTSB0cmFuc2FjdGlvbnMuICovXG4gICAgRXZtVHhDdXN0b21pemF0aW9uOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBnYXMgbGltaXQuXG4gICAgICAgKlxuICAgICAgICogSWYgbm90IHNwZWNpZmllZCwgZXN0aW1hdGVkIGdhcyBpcyB1c2VkLlxuICAgICAgICovXG4gICAgICBnYXNfbGltaXQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWF4IGZlZSBmb3IgdGhlIHRyYW5zYWN0aW9uLlxuICAgICAgICpcbiAgICAgICAqIElmIG5vdCBzcGVjaWZpZWQsIGVzdGltYXRlZCBmZWVzIGFyZSB1c2VkLlxuICAgICAgICovXG4gICAgICBtYXhfZmVlX3Blcl9nYXM/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWF4IHByaW9yaXR5IGZlZSBmb3IgdGhlIHRyYW5zYWN0aW9uLlxuICAgICAgICpcbiAgICAgICAqIElmIG5vdCBzcGVjaWZpZWQsIGVzdGltYXRlZCBmZWVzIGFyZSB1c2VkLlxuICAgICAgICovXG4gICAgICBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXM/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbm9uY2UuXG4gICAgICAgKlxuICAgICAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIHNlbmRlcidzIHRyYW5zYWN0aW9uIGNvdW50IGZyb20gdGhlIGxhdGVzdCBibG9jayBpc1xuICAgICAgICogdXNlZC5cbiAgICAgICAqL1xuICAgICAgbm9uY2U/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgRXZtVHhEZXBvc2l0RXJyb3JDb2RlOlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFJlY2VpdmVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEVtcHR5RGF0YVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0RW1wdHlDaGFpbklkXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRFbXB0eVJlY2VpdmVyXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkVmFsdWVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWREYXRhTGVuZ3RoXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXROb0FiaVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0Tm9EZXBvc2l0RnVuY3Rpb25cIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRGdW5jdGlvbk5hbWVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRWYWxpZGF0b3JLZXlcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEludmFsaWRWYWxpZGF0b3JLZXlcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdE1pc3NpbmdEZXBvc2l0QXJnXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRXcm9uZ0RlcG9zaXRBcmdUeXBlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRWYWxpZGF0b3JLZXlOb3RJblJvbGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRXaXRoZHJhd2FsQ3JlZGVudGlhbHNcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVucmVzb2x2ZWRSb2xlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRJbnZhbGlkRGVwb3NpdEVuY29kaW5nXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBzb3VyY2Ugb2YgYSBwb2xpY3kgZXhlY3V0aW9uLCBpLmUuIHRoZSByZWFzb24gaXQgd2FzIGV4ZWN1dGVkLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRXhlY3V0aW9uU291cmNlOiBcIlNpZ25SZXF1ZXN0XCIgfCBcIlVzZXJJbnZvY2F0aW9uXCI7XG4gICAgLyoqXG4gICAgICogRXhwbGljaXRTY29wZVxuICAgICAqIEBkZXNjcmlwdGlvbiBFeHBsaWNpdGx5IG5hbWVkIHNjb3BlcyBmb3IgYWNjZXNzaW5nIEN1YmVTaWduZXIgQVBJc1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRXhwbGljaXRTY29wZTpcbiAgICAgIHwgXCJzaWduOipcIlxuICAgICAgfCBcInNpZ246YXZhXCJcbiAgICAgIHwgXCJzaWduOmJsb2JcIlxuICAgICAgfCBcInNpZ246ZGlmZmllSGVsbG1hblwiXG4gICAgICB8IFwic2lnbjpidGM6KlwiXG4gICAgICB8IFwic2lnbjpidGM6c2Vnd2l0XCJcbiAgICAgIHwgXCJzaWduOmJ0Yzp0YXByb290XCJcbiAgICAgIHwgXCJzaWduOmJ0Yzpwc2J0OipcIlxuICAgICAgfCBcInNpZ246YnRjOnBzYnQ6ZG9nZVwiXG4gICAgICB8IFwic2lnbjpidGM6cHNidDpsZWdhY3lcIlxuICAgICAgfCBcInNpZ246YnRjOnBzYnQ6c2Vnd2l0XCJcbiAgICAgIHwgXCJzaWduOmJ0Yzpwc2J0OnRhcHJvb3RcIlxuICAgICAgfCBcInNpZ246YnRjOnBzYnQ6bHRjU2Vnd2l0XCJcbiAgICAgIHwgXCJzaWduOmJ0YzptZXNzYWdlOipcIlxuICAgICAgfCBcInNpZ246YnRjOm1lc3NhZ2U6c2Vnd2l0XCJcbiAgICAgIHwgXCJzaWduOmJ0YzptZXNzYWdlOmxlZ2FjeVwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOipcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjplb3RzOipcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjplb3RzOm5vbmNlc1wiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOmVvdHM6c2lnblwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOnN0YWtpbmc6KlwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOnN0YWtpbmc6ZGVwb3NpdFwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOnN0YWtpbmc6dW5ib25kXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246c3Rha2luZzp3aXRoZHJhd1wiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOnN0YWtpbmc6c2xhc2hcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjpyZWdpc3RyYXRpb25cIlxuICAgICAgfCBcInNpZ246YmFieWxvbjpjb3ZlbmFudFwiXG4gICAgICB8IFwic2lnbjpldm06KlwiXG4gICAgICB8IFwic2lnbjpldm06dHhcIlxuICAgICAgfCBcInNpZ246ZXZtOmVpcDE5MVwiXG4gICAgICB8IFwic2lnbjpldm06ZWlwNzEyXCJcbiAgICAgIHwgXCJzaWduOmV0aDI6KlwiXG4gICAgICB8IFwic2lnbjpldGgyOnZhbGlkYXRlXCJcbiAgICAgIHwgXCJzaWduOmV0aDI6c3Rha2VcIlxuICAgICAgfCBcInNpZ246ZXRoMjp1bnN0YWtlXCJcbiAgICAgIHwgXCJzaWduOnNvbGFuYVwiXG4gICAgICB8IFwic2lnbjpzdWlcIlxuICAgICAgfCBcInNpZ246dGVuZGVybWludFwiXG4gICAgICB8IFwic2lnbjptbWlcIlxuICAgICAgfCBcIm1hbmFnZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTplbWFpbDoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6ZW1haWw6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6ZW1haWw6dXBkYXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6ZW1haWw6ZGVsZXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dm90ZTpjc1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOmVtYWlsXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnZvdGU6Zmlkb1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6KlwiXG4gICAgICB8IFwibWFuYWdlOm1mYTpyZWdpc3RlcjpmaWRvXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnJlZ2lzdGVyOnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6ZW1haWxcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dW5yZWdpc3RlcjoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnVucmVnaXN0ZXI6Zmlkb1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTp1bnJlZ2lzdGVyOnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dmVyaWZ5OipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dmVyaWZ5OnRvdHBcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6KlwiXG4gICAgICB8IFwibWFuYWdlOmtleTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOmtleTpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6YXR0ZXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5Omxpc3RSb2xlc1wiXG4gICAgICB8IFwibWFuYWdlOmtleTpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5Omhpc3Rvcnk6dHg6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOmtleTpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6aW1wb3J0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6cG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTplbmFibGVkXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTpyZWdpb25cIlxuICAgICAgfCBcIm1hbmFnZTprZXk6dXBkYXRlOm1ldGFkYXRhXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTpwcm9wZXJ0aWVzXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OmRlbGV0ZVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OmNyZWF0ZVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpkZWxldGVcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6dXBkYXRlOipcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6dXBkYXRlOm93bmVyXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTpuYW1lXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTphY2xcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6dXBkYXRlOmVkaXRQb2xpY3lcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6dXBkYXRlOm1ldGFkYXRhXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTpydWxlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5Omludm9rZVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp3YXNtOipcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6d2FzbTp1cGxvYWRcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6c2VjcmV0czoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6dXBkYXRlOipcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6c2VjcmV0czp1cGRhdGU6dmFsdWVzXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6dXBkYXRlOmFjbFwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOnVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OmJ1Y2tldHM6KlwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpidWNrZXRzOmdldFwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpidWNrZXRzOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6YnVja2V0czp1cGRhdGU6KlwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpidWNrZXRzOnVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpidWNrZXRzOnVwZGF0ZTphY2xcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6YnVja2V0czp1cGRhdGU6bWV0YWRhdGFcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OipcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OmdldFwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6ZGVsZXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6KlwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOm5hbWVcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZTphZGRyZXNzZXNcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOmxhYmVsc1wiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOm1ldGFkYXRhXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6ZWRpdFBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6bG9va3VwOipcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0Omxvb2t1cDphZGRyZXNzXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OmNyZWF0ZUltcG9ydEtleVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6KlwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmNyZWF0ZVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6ZGVsZXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpnZXQ6KlwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6YXR0ZXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpnZXQ6a2V5c1wiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6Z2V0OmtleXM6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6Z2V0OmtleXM6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpnZXQ6dXNlcnNcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6ZW5hYmxlZFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOnBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOmVkaXRQb2xpY3lcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTphY3Rpb25zXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6a2V5OipcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTprZXk6YWRkXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6a2V5OnJlbW92ZVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOnVzZXI6KlwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOnVzZXI6YWRkXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6dXNlcjpyZW1vdmVcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmhpc3Rvcnk6dHg6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOmlkZW50aXR5OipcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOmlkZW50aXR5OnZlcmlmeVwiXG4gICAgICB8IFwibWFuYWdlOmlkZW50aXR5OmFkZFwiXG4gICAgICB8IFwibWFuYWdlOmlkZW50aXR5OnJlbW92ZVwiXG4gICAgICB8IFwibWFuYWdlOmlkZW50aXR5Omxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6KlwiXG4gICAgICB8IFwibWFuYWdlOm9yZzpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6bWV0cmljczpxdWVyeVwiXG4gICAgICB8IFwibWFuYWdlOm9yZzphdWRpdDpxdWVyeVwiXG4gICAgICB8IFwibWFuYWdlOm9yZzpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOm9yZzphZGRVc2VyXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmludml0ZVVzZXJcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6aW52aXRlQWxpZW5cIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6aW52aXRhdGlvbjpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmludml0YXRpb246Y2FuY2VsXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZU1lbWJlcnNoaXA6KlwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGVNZW1iZXJzaGlwOm93bmVyXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZU1lbWJlcnNoaXA6bWVtYmVyXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZU1lbWJlcnNoaXA6YWxpZW5cIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6bGlzdFVzZXJzXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVzZXI6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmRlbGV0ZVVzZXI6KlwiXG4gICAgICB8IFwibWFuYWdlOm9yZzpkZWxldGVVc2VyOm93bmVyXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmRlbGV0ZVVzZXI6bWVtYmVyXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmRlbGV0ZVVzZXI6YWxpZW5cIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTplbmFibGVkXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpwb2xpY3lcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOnNpZ25Qb2xpY3lcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOmV4cG9ydFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6dG90cEZhaWx1cmVMaW1pdFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6bm90aWZpY2F0aW9uRW5kcG9pbnRzXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpkZWZhdWx0SW52aXRlS2luZFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6aWRwQ29uZmlndXJhdGlvblwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6cGFzc2tleUNvbmZpZ3VyYXRpb25cIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOmVtYWlsUHJlZmVyZW5jZXNcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOmhpc3RvcmljYWxEYXRhXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpyZXF1aXJlU2NvcGVDZWlsaW5nXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTphbGllbkxvZ2luUmVxdWlyZW1lbnRcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOm1lbWJlckxvZ2luUmVxdWlyZW1lbnRcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOmtleUV4cG9ydFJlcXVpcmVtZW50XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTphbGxvd2VkTWZhVHlwZXNcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOnBvbGljeUVuZ2luZUNvbmZcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOmN1c3RvbUNoYWluc1wiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6ZXh0UHJvcHNcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOmVkaXRQb2xpY3lcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXNlcjpyZXNldE1mYVwiXG4gICAgICB8IFwibWFuYWdlOnNlc3Npb246KlwiXG4gICAgICB8IFwibWFuYWdlOnNlc3Npb246cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOmdldFwiXG4gICAgICB8IFwibWFuYWdlOnNlc3Npb246bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOnNlc3Npb246Y3JlYXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6c2Vzc2lvbjpleHRlbmRcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOnJldm9rZVwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6ZXhwb3J0OnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6ZXhwb3J0Om9yZzoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6ZXhwb3J0Om9yZzpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTpleHBvcnQ6dXNlcjoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6ZXhwb3J0OnVzZXI6ZGVsZXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6ZXhwb3J0OnVzZXI6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOmF1dGhNaWdyYXRpb246KlwiXG4gICAgICB8IFwibWFuYWdlOmF1dGhNaWdyYXRpb246aWRlbnRpdHk6YWRkXCJcbiAgICAgIHwgXCJtYW5hZ2U6YXV0aE1pZ3JhdGlvbjppZGVudGl0eTpyZW1vdmVcIlxuICAgICAgfCBcIm1hbmFnZTphdXRoTWlncmF0aW9uOnVzZXI6dXBkYXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6bW1pOipcIlxuICAgICAgfCBcIm1hbmFnZTptbWk6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTptbWk6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6bW1pOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTptbWk6cmVqZWN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6bW1pOmRlbGV0ZVwiXG4gICAgICB8IFwiZXhwb3J0OipcIlxuICAgICAgfCBcImV4cG9ydDp1c2VyOipcIlxuICAgICAgfCBcImV4cG9ydDp1c2VyOmluaXRcIlxuICAgICAgfCBcImV4cG9ydDp1c2VyOmNvbXBsZXRlXCJcbiAgICAgIHwgXCJtbWk6KlwiXG4gICAgICB8IFwib3JnQWNjZXNzOipcIlxuICAgICAgfCBcIm9yZ0FjY2VzczpjaGlsZDoqXCJcbiAgICAgIHwgXCJycGM6KlwiXG4gICAgICB8IFwicnBjOmNyZWF0ZVRyYW5zYWN0aW9uOipcIlxuICAgICAgfCBcInJwYzpjcmVhdGVUcmFuc2FjdGlvbjpldm1cIlxuICAgICAgfCBcInJwYzpnZXRUcmFuc2FjdGlvblwiXG4gICAgICB8IFwicnBjOmxpc3RUcmFuc2FjdGlvbnNcIlxuICAgICAgfCBcInJwYzpiaW5hbmNlOipcIlxuICAgICAgfCBcInJwYzpiaW5hbmNlOnN1YlRvTWFzdGVyXCJcbiAgICAgIHwgXCJycGM6YmluYW5jZTpzdWJUb1N1YlwiXG4gICAgICB8IFwicnBjOmJpbmFuY2U6dW5pdmVyc2FsVHJhbnNmZXJcIlxuICAgICAgfCBcInJwYzpiaW5hbmNlOnN1YkFjY291bnRBc3NldHNcIlxuICAgICAgfCBcInJwYzpiaW5hbmNlOmFjY291bnRJbmZvXCJcbiAgICAgIHwgXCJycGM6YmluYW5jZTpzdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5XCJcbiAgICAgIHwgXCJycGM6YmluYW5jZTp1bml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlcIlxuICAgICAgfCBcInJwYzpiaW5hbmNlOndpdGhkcmF3XCJcbiAgICAgIHwgXCJycGM6YmluYW5jZTp3aXRoZHJhd0hpc3RvcnlcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIHNwZWNpZmllcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBmZWVgIGZpZWxkIGluIEJhYnlsb25cbiAgICAgKiBzdGFraW5nIHJlcXVlc3RzLiBJZiBgc2F0c2AsIHRoZSBmaWVsZCBpcyBpbnRwcmV0ZWQgYXMgYSBmaXhlZCB2YWx1ZVxuICAgICAqIGluIHNhdHMuIElmIGBzYXRzX3ByX3ZiYCwgdGhlIGZpZWxkIGlzIGludGVycHJldGVkIGFzIGEgcmF0ZSBhbmQgdGhlXG4gICAgICogZmVlIGlzIGNvbXB1dGVkIGJ5IGVzdGltYXRpbmcgdGhlIHdlaWdodCBvZiB0aGUgb3V0cHV0IHRyYW5zYWN0aW9uLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRmVlVHlwZTogXCJzYXRzXCIgfCBcInNhdHNfcGVyX2t3dVwiIHwgXCJzYXRzX3Blcl92YlwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIEZpZG9Bc3NlcnRBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZTogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlY2xhcmVzIGludGVudCB0byByZWdpc3RlciBhIG5ldyBGSURPIGtleSAqL1xuICAgIEZpZG9DcmVhdGVSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhpcyBrZXkgY2FuIGJlIHVzZWQgZm9yIHBhc3N3b3JkbGVzcyBsb2dpbiAqL1xuICAgICAgZGlzY292ZXJhYmxlPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG5ldyBmaWRvIGNyZWRlbnRpYWxcbiAgICAgICAqIEBleGFtcGxlIFdvcmsgWXViaWtleVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIHJlcXVlc3QgdGhlIHVuaXF1ZSBhdXRoZW50aWNhdG9yIGRldmljZSBtYW51ZmFjdHVyZXIgaWRlbnRpZmllci5cbiAgICAgICAqIFRoaXMgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgdG8gcmVuZGVyIHRoZSBtYW51ZmFjdHVyZXIgbmFtZSAoZS5nLiwgXCJZdWJpS2V5XCIsXG4gICAgICAgKiBvciBcIkdvb2dsZSBQYXNzd29yZCBNYW5hZ2VyXCIsIG9yIFwiMVBhc3N3b3JkXCIsIGV0Yy4pLiBXaGVuIHJlcXVlc3RlZCwgc29tZSB1c2VyXG4gICAgICAgKiBhZ2VudHMgKGUuZy4sIEZpcmVmb3gpIHdpbGwgYXNrIHRoZSB1c2VyIHRvIGFncmVlIG9yIGRpc2FncmVlLCB3aGVyZWFzIHNvbWVcbiAgICAgICAqIChlLmcuLCBDaHJvbWUpIHdpbGwgc2lsZW50bHkgYWdyZWUuXG4gICAgICAgKi9cbiAgICAgIHJlcXVlc3RfZGV2aWNlX2lkZW50aWZpZXI/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgRm9yYmlkZGVuRXJyb3JDb2RlOlxuICAgICAgfCBcIkFsaWVuS2V5Q3JlYXRlXCJcbiAgICAgIHwgXCJDYW5ub3RBc3N1bWVJZGVudGl0eVwiXG4gICAgICB8IFwiU2VudHJ5RGlzYWxsb3dlZFwiXG4gICAgICB8IFwiUGFzc2tleUxvZ2luRGlzYWJsZWRcIlxuICAgICAgfCBcIlBhc3NrZXlOb3RSZWdpc3RlcmVkXCJcbiAgICAgIHwgXCJDYW5ub3RDcmVhdGVPcmdcIlxuICAgICAgfCBcIldyb25nTWZhRW1haWxPdHBKd3RcIlxuICAgICAgfCBcIk9yZ0ZsYWdOb3RTZXRcIlxuICAgICAgfCBcIkZpZG9SZXF1aXJlZFRvUmVtb3ZlVG90cFwiXG4gICAgICB8IFwiT2lkY0lkZW50aXR5TGltaXRSZWFjaGVkXCJcbiAgICAgIHwgXCJPaWRjU2NvcGVDZWlsaW5nTWlzc2luZ1wiXG4gICAgICB8IFwiT2lkY0lzc3Vlck5vdEFsbG93ZWRGb3JNZW1iZXJSb2xlXCJcbiAgICAgIHwgXCJPaWRjTm9NZW1iZXJSb2xlc0FsbG93ZWRcIlxuICAgICAgfCBcIkVtYWlsT3RwTm90Q29uZmlndXJlZFwiXG4gICAgICB8IFwiTWZhQ2hhbGxlbmdlRXhwaXJlZFwiXG4gICAgICB8IFwiQ2hhaW5JZE5vdEFsbG93ZWRcIlxuICAgICAgfCBcIkludmFsaWRPcmdcIlxuICAgICAgfCBcIk9yZ0lkTWlzbWF0Y2hcIlxuICAgICAgfCBcIlNlc3Npb25Gb3JXcm9uZ09yZ1wiXG4gICAgICB8IFwiU2VsZkRlbGV0ZVwiXG4gICAgICB8IFwiU2VsZkRpc2FibGVcIlxuICAgICAgfCBcIkludmFsaWRPcmdNZW1iZXJzaGlwUm9sZUNoYW5nZVwiXG4gICAgICB8IFwiVXNlckRpc2FibGVkXCJcbiAgICAgIHwgXCJPcmdEaXNhYmxlZFwiXG4gICAgICB8IFwiT3JnTm90Rm91bmRcIlxuICAgICAgfCBcIk9yZ1dpdGhvdXRPd25lclwiXG4gICAgICB8IFwiT3JwaGFuZWRVc2VyXCJcbiAgICAgIHwgXCJPaWRjVXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJVc2VyTm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJOb3RPcmdPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEtleU93bmVyXCJcbiAgICAgIHwgXCJJbnZhbGlkUm9sZVwiXG4gICAgICB8IFwiRGlzYWJsZWRSb2xlXCJcbiAgICAgIHwgXCJLZXlEaXNhYmxlZFwiXG4gICAgICB8IFwiS2V5Tm90SW5Sb2xlXCJcbiAgICAgIHwgXCJDb250YWN0Tm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0Tm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0SW52YWxpZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydERpc2FibGVkXCJcbiAgICAgIHwgXCJVc2VyTm90T3JpZ2luYWxLZXlPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEluUm9sZVwiXG4gICAgICB8IFwiTXVzdEJlRnVsbE1lbWJlclwiXG4gICAgICB8IFwiU2Vzc2lvbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25DaGFuZ2VkXCJcbiAgICAgIHwgXCJTZXNzaW9uUmV2b2tlZFwiXG4gICAgICB8IFwiRXhwZWN0ZWRVc2VyU2Vzc2lvblwiXG4gICAgICB8IFwiU2Vzc2lvblJvbGVDaGFuZ2VkXCJcbiAgICAgIHwgXCJTY29wZWROYW1lTm90Rm91bmRcIlxuICAgICAgfCBcIlNlc3Npb25JbnZhbGlkRXBvY2hUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkludmFsaWRSZWZyZXNoVG9rZW5cIlxuICAgICAgfCBcIlNlc3Npb25SZWZyZXNoVG9rZW5FeHBpcmVkXCJcbiAgICAgIHwgXCJJbnZhbGlkQXV0aEhlYWRlclwiXG4gICAgICB8IFwiU2Vzc2lvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkQXJuXCJcbiAgICAgIHwgXCJTZXNzaW9uSW52YWxpZEF1dGhUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkF1dGhUb2tlbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25Qb3NzaWJseVN0b2xlblRva2VuXCJcbiAgICAgIHwgXCJNZmFEaXNhbGxvd2VkSWRlbnRpdHlcIlxuICAgICAgfCBcIk1mYURpc2FsbG93ZWRBcHByb3ZlclwiXG4gICAgICB8IFwiTWZhVHlwZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk1mYU5vdEFwcHJvdmVkWWV0XCJcbiAgICAgIHwgXCJNZmFDb25maXJtYXRpb25Db2RlTWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYUh0dHBSZXF1ZXN0TWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYVJlbW92ZUJlbG93TWluXCJcbiAgICAgIHwgXCJNZmFPcmdSZXF1aXJlbWVudE5vdE1ldFwiXG4gICAgICB8IFwiTWZhUmVnaXN0cmF0aW9uRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiVG90cEFscmVhZHlDb25maWd1cmVkXCJcbiAgICAgIHwgXCJUb3RwQ29uZmlndXJhdGlvbkNoYW5nZWRcIlxuICAgICAgfCBcIk1mYVRvdHBCYWRDb25maWd1cmF0aW9uXCJcbiAgICAgIHwgXCJNZmFUb3RwQmFkQ29kZVwiXG4gICAgICB8IFwiTWZhVG90cFJhdGVMaW1pdFwiXG4gICAgICB8IFwiSW1wcm9wZXJTZXNzaW9uU2NvcGVcIlxuICAgICAgfCBcIkZ1bGxTZXNzaW9uUmVxdWlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25XaXRob3V0QW55U2NvcGVVbmRlclwiXG4gICAgICB8IFwiVXNlclJvbGVVbnByaXZpbGVnZWRcIlxuICAgICAgfCBcIk1lbWJlclJvbGVGb3JiaWRkZW5cIlxuICAgICAgfCBcIk1mYU5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIlJlbW92ZUxhc3RPaWRjSWRlbnRpdHlcIlxuICAgICAgfCBcIk9wZXJhdGlvbk5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk9yZ0V4cG9ydFJldHJpZXZhbERpc2FibGVkXCJcbiAgICAgIHwgXCJDaGFuZ2luZ0tleUV4cG9ydFJlcXVpcmVtZW50SXNEaXNhYmxlZFwiXG4gICAgICB8IFwiQXV0b0FkZEJsc0tleVRvUHJvdGVjdGVkUm9sZVwiXG4gICAgICB8IFwiVXNlck5vdFBvbGljeU93bmVyXCJcbiAgICAgIHwgXCJVc2VyTm90Q29udGFjdE93bmVyXCJcbiAgICAgIHwgXCJVc2VyTm90QnVja2V0T3duZXJcIlxuICAgICAgfCBcIkxlZ2FjeVNlc3Npb25DYW5ub3RIYXZlU2NvcGVDZWlsaW5nXCJcbiAgICAgIHwgXCJSb2xlSW5QYXJlbnRPcmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJSZW1vdmVLZXlGcm9tUm9sZVVzZXJOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJTaXdlQ2hhbGxlbmdlRXhwaXJlZFwiXG4gICAgICB8IFwiU2l3ZU1lc3NhZ2VOb3RWYWxpZFwiXG4gICAgICB8IFwiU2l3ZU1lc3NhZ2VJbnZhbGlkU2lnbmF0dXJlXCJcbiAgICAgIHwgXCJBY2xcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3BlY2lmaWVzIGEgZm9yayBvZiB0aGUgYEJlYWNvbkNoYWluYCwgdG8gcHJldmVudCByZXBsYXkgYXR0YWNrcy5cbiAgICAgKiBUaGUgc2NoZW1hIG9mIGBGb3JrYCBpcyBkZWZpbmVkIGluIHRoZSBbQmVhY29uIGNoYWluXG4gICAgICogc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI2ZvcmspLlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY3VycmVudF92ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiLFxuICAgICAqICAgXCJlcG9jaFwiOiBcIjBcIixcbiAgICAgKiAgIFwicHJldmlvdXNfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBGb3JrOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IGZvcmsgdmVyc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIDB4NDM0MzQzNDNcbiAgICAgICAqL1xuICAgICAgY3VycmVudF92ZXJzaW9uOiBzdHJpbmc7XG4gICAgICBlcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFByZXZpb3VzIGZvcmsgdmVyc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIDB4NDI0MjQyNDJcbiAgICAgICAqL1xuICAgICAgcHJldmlvdXNfdmVyc2lvbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgZGF0YSBhcyBkZWZpbmVkIGluIHRoZSBbQmVhY29uIEFQSVxuICAgICAqIHNwZWNdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL2dldEdlbmVzaXMpLlxuICAgICAqIFlvdSBjYW4gZ2V0IHRoZSBnZW5lc2lzIGRhdGEgZnJvbSB0aGUgQmVhY29uIG5vZGUncyBgL2V0aC92MS9iZWFjb24vZ2VuZXNpc2AgZW5kLXBvaW50LlxuICAgICAqIFRoaXMgc3RydWN0IGRlZmluaXRpb24gaXMgb3JpZ2luYWxseSBmcm9tIGxpZ2h0aG91c2UncyBldGgyLlxuICAgICAqL1xuICAgIEdlbmVzaXNEYXRhOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIGZvcmsgdmVyc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIDB4NDI0MjQyNDJcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc19mb3JrX3ZlcnNpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgdGltZVxuICAgICAgICogQGV4YW1wbGUgMTY3OTMyNjQ0OVxuICAgICAgICovXG4gICAgICBnZW5lc2lzX3RpbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgdmFsaWRhdG9ycyByb290LlxuICAgICAgICogQGV4YW1wbGUgMHgyNzBkNDNlNzRjZTM0MGRlNGJjYTJiMTkzNmJlY2EwZjRmNTQwOGQ5ZTc4YWVjNDg1MDkyMGJhZjY1OWQ1YjY5XG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfdmFsaWRhdG9yc19yb290OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBzZW5kZXIgY29uZmlndXJhdGlvbiAod2l0aG91dCBzZW5zaXRpdmUgYXV0aCBkZXRhaWxzKSAqL1xuICAgIEdldEVtYWlsQ29uZmlnUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFkZHJlc3MgdGhhdCBlbWFpbHMgYXJlIHNlbnQgZnJvbSAqL1xuICAgICAgc2VuZGVyOiBzdHJpbmc7XG4gICAgICB0ZW1wbGF0ZT86IHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBIVE1MIHRlbXBsYXRlIHRvIHVzZSBmb3IgdGhlIGJvZHkuICovXG4gICAgICAgIGJvZHlfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3ViamVjdCBsaW5lIHRlbXBsYXRlICovXG4gICAgICAgIHN1YmplY3RfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgIH0gfCBudWxsO1xuICAgIH07XG4gICAgR2V0S2V5c0luT3JnUmVxdWVzdDoge1xuICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciB0aGUgW2Bjc19nZXRUcmFuc2FjdGlvbmBdKFJwY01ldGhvZDo6R2V0VHJhbnNhY3Rpb24pIG1ldGhvZC4gKi9cbiAgICBHZXRUcmFuc2FjdGlvblJlcXVlc3Q6IHtcbiAgICAgIGlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgIH07XG4gICAgR2V0VXNlckJ5RW1haWxSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHlwaWNhbGx5LCB0aGlzIGFycmF5IGlzIGVpdGhlciBlbXB0eSAoaWYgbm8gdXNlciB3aXRoIGEgZ2l2ZW4gZW1haWwgd2FzIGZvdW5kKVxuICAgICAgICogb3IgY29udGFpbnMgYSBzaW5nbGUgZWxlbWVudCwgaS5lLiwgdGhlIHVzZXIgd2l0aCBhIGdpdmVuIGVtYWlsLlxuICAgICAgICovXG4gICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5PcmdJbmZvV2l0aElkZW50aXR5XCJdW107XG4gICAgfTtcbiAgICBHZXRVc2VyQnlPaWRjUmVzcG9uc2U6IHtcbiAgICAgIHVzZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ0luZm9XaXRoSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTdGF0cyBwZXJ0YWluaW5nIHRoZSB0aGUgc2VuZGVyIGBjdWJlM3NpZ25lcmAgaW5zdGFuY2UgKi9cbiAgICBIZWFydGJlYXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgY3VycmVudGx5IGFjdGl2ZSAocmVjZWl2ZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBiZWluZyBwcm9jZXNzZWQgeWV0KVxuICAgICAgICovXG4gICAgICBjdXJyZW50X251bV9yZXF1ZXN0c19hY3RpdmU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIGJ5IGN1YmUzc2lnbmVyXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfbnVtX3JlcXVlc3RzX3Byb2Nlc3Npbmc6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHJlY29yZCBtZXRyaWMgZGF0YSBmcm9tIHRoaXMgaGVhcnRiZWF0ICovXG4gICAgICBpZ25vcmU/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIG5ldyByZXF1ZXN0cyBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0czogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIHRoYXQgZmFpbGVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JlcXVlc3RzX2ZhaWxlZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIHdlcmUgcmV0cmllZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0c19yZXRyaWVkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmV0cmllcyBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXRyaWVzOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgdGltZXMgYXV0aCB0b2tlbiB3YXMgcmVmcmVzaGVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3Rva2VuX3JlZnJlc2hlcz86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiB0aW1lcyBhdXRoIHRva2VuIHJlZnJlc2ggZmFpbGVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3Rva2VuX3JlZnJlc2hlc19mYWlsZWQ/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoZSBwcm94eSBzZW5kaW5nIHRoZSBoZWFydCBiZWF0IHJlcXVlc3RcbiAgICAgICAqXG4gICAgICAgKiBUT0RPOiBNYWtlIG5vbi1vcHRpb25hbCBvbmNlIHdlIGRvIG5vdCBzdXBwb3J0IHByb3hpZXMgd2l0aG91dCB2ZXJzaW9uIGluZm9ybWF0aW9uXG4gICAgICAgKi9cbiAgICAgIHByb3h5X3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGdvdmVybmluZyB3aGV0aGVyIGFuZCBob3cgdG8gc2F2ZSBoaXN0b3JpY2FsIGRhdGEuICovXG4gICAgSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uOiB7XG4gICAgICB0eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIaXN0b3JpY2FsVHhDb25maWd1cmF0aW9uXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlY2VudGx5IHNpZ25lZCB0cmFuc2FjdGlvbiB0aGF0IHdlIHN0b3JlIGluIHRoZSBEQi4gKi9cbiAgICBIaXN0b3JpY2FsVHg6IHtcbiAgICAgIGRhdGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgaGlzdG9yaWNhbF90eF9vcmdfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICBrZXlfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICBtZmFfc3RhdHVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl0gfCBudWxsO1xuICAgICAgb3BlcmF0aW9uOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl07XG4gICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcmlnaW5hbCByZXF1ZXN0IGlkICovXG4gICAgICByZXF1ZXN0X2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3BlcmF0aW9uLXNwZWNpZmljIHJlc3VsdCAqL1xuICAgICAgcmVzdWx0OiB1bmtub3duO1xuICAgICAgcm9sZV9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgdXNlcl9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGdvdmVybmluZyB3aGV0aGVyIGFuZCBob3cgdG8gc2F2ZSBoaXN0b3JpY2FsIHRyYW5zYWN0aW9ucy4gKi9cbiAgICBIaXN0b3JpY2FsVHhDb25maWd1cmF0aW9uOiB7XG4gICAgICBsaWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBDYXB0dXJlcyBhbGwgdGhlIHJlbGV2YW50IGluZm8gKGluY2x1ZGluZyB0aGUgcmVxdWVzdCBib2R5KSBhYm91dCByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgTUZBLlxuICAgICAqIFdlIHVzZSB0aGlzIHRvIHZlcmlmeSB0aGF0IHdoZW4gYSByZXF1ZXN0IGlzIHJlc3VtZWQgKGFmdGVyIG9idGFpbmluZyBuZWNlc3NhcnkgTUZBIGFwcHJvdmFscylcbiAgICAgKiBpdCBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGl0IG9yaWdpbmFsbHkgd2FzLlxuICAgICAqL1xuICAgIEh0dHBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcmVxdWVzdCBib2R5ICovXG4gICAgICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIG1ldGhvZCBvZiB0aGUgcmVxdWVzdCAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcGF0aCBvZiB0aGUgcmVxdWVzdCwgZXhjbHVkaW5nIHRoZSBob3N0ICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEhvdyB0byBjb21wYXJlIEhUVFAgcmVxdWVzdHMgd2hlbiB2ZXJpZnlpbmcgTUZBIHJlY2VpcHQgKHNlZSBbTWZhUmVxdWVzdDo6dmVyaWZ5X3JlcXVlc3RdKSAqL1xuICAgIEh0dHBSZXF1ZXN0Q21wOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgXCJFcVwiLFxuICAgICAgICB7XG4gICAgICAgICAgRXZtVHg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtVHhDbXBcIl07XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBTb2xhbmFUeDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFUeENtcFwiXTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIElkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbGlua2VkIE9JREMgaWRlbnRpdHkgaW5jbHVkaW5nIHVuaXF1ZSBpZGVudGlmaWVycyBhbmQgdXNlciBpbmZvXG4gICAgICogKGUuZy4sIGVtYWlsKVxuICAgICAqL1xuICAgIElkZW50aXR5SW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gJlxuICAgICAgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjVXNlckluZm9cIl0gJlxuICAgICAgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgYXVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdWRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBpZGVudGl0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VybmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIGN1YmlzdGRldlxuICAgICAgICovXG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdXNlcl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdWJlU2lnbmVyVXNlckluZm9cIl0gfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcHJvb2YgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIElEUCBjb25maWd1cmF0aW9uICovXG4gICAgSWRwQ29uZmlnOiB7XG4gICAgICB0aHJvdHRsZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGhyb3R0bGVDb25maWdcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbmFibGUgZm9yIGNlcnRhaW4gdXNlciByb2xlcyAqL1xuICAgICAgdXNlcnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXSB8IG51bGw7XG4gICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUFuZFVwZGF0ZUtleVByb3BlcnRpZXNcIl0gJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSAodGhlIGRlZmF1bHQpLCBub3RoaW5nIGlzIHJldHVybmVkIHdoZW4gYW4gaW1wb3J0ZWQga2V5IGFscmVhZHlcbiAgICAgICAgICogZXhpc3RzLiBXaGVuIHRydWUsIHJldHVybnMgdGhlIEtleUluZm8gc3RydWN0IGZvciBrZXlzIHRoYXQgYWxyZWFkeSBleGlzdFxuICAgICAgICAgKiBpZiBjYWxsZXIgaXMgYWxsb3dlZCB0byBsaXN0IHRoYXQga2V5LlxuICAgICAgICAgKi9cbiAgICAgICAgaWRlbXBvdGVudD86IGJvb2xlYW47XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzZXQgb2YgZW5jcnlwdGVkIGtleXMgdG8gYmUgaW1wb3J0ZWQgKi9cbiAgICAgICAga2V5X21hdGVyaWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RNYXRlcmlhbFwiXVtdO1xuICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0TWF0ZXJpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjbGllbnQncyBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQsIFNFQzEtZW5jb2RlZCBQMzg0IHB1YmxpYyBrZXkuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW5jcnlwdGVkIGtleWluZyBtYXRlcmlhbCB0byBiZSBpbXBvcnRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBjaXBoZXJ0ZXh0LlxuICAgICAgICovXG4gICAgICBpa21fZW5jOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHNhbHQgdmFsdWUgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5LlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkIGJ5dGUgc3RyaW5nLlxuICAgICAgICovXG4gICAgICBzYWx0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBJbnRlcm5hbEVycm9yQ29kZTpcbiAgICAgIHwgXCJOb01hdGVyaWFsSWRcIlxuICAgICAgfCBcIkludmFsaWRBdWRpdExvZ0VudHJ5XCJcbiAgICAgIHwgXCJVbmV4cGVjdGVkQ2hlY2tlclJ1bGVcIlxuICAgICAgfCBcIlVucmVzb2x2ZWRQb2xpY3lSZWZlcmVuY2VcIlxuICAgICAgfCBcIlVuZXhwZWN0ZWRBY2xBY3Rpb25cIlxuICAgICAgfCBcIkZpZG9LZXlBc3NvY2lhdGVkV2l0aE11bHRpcGxlVXNlcnNcIlxuICAgICAgfCBcIkNsYWltc1BhcnNlRXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRUaHJvdHRsZUlkXCJcbiAgICAgIHwgXCJJbnZhbGlkRW1haWxBZGRyZXNzXCJcbiAgICAgIHwgXCJFbWFpbFRlbXBsYXRlUmVuZGVyXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlIZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlQYXJzZUVycm9yXCJcbiAgICAgIHwgXCJTeXN0ZW1UaW1lRXJyb3JcIlxuICAgICAgfCBcIlBhc3N3b3JkSGFzaFBhcnNlRXJyb3JcIlxuICAgICAgfCBcIlNlbmRNYWlsRXJyb3JcIlxuICAgICAgfCBcIlJlcXdlc3RFcnJvclwiXG4gICAgICB8IFwiRW1haWxDb25zdHJ1Y3Rpb25FcnJvclwiXG4gICAgICB8IFwiVHNXcml0ZUVycm9yXCJcbiAgICAgIHwgXCJUc1F1ZXJ5RXJyb3JcIlxuICAgICAgfCBcIkRiUXVlcnlFcnJvclwiXG4gICAgICB8IFwiRGJHZXRFcnJvclwiXG4gICAgICB8IFwiRGJEZWxldGVFcnJvclwiXG4gICAgICB8IFwiRGJQdXRFcnJvclwiXG4gICAgICB8IFwiRGJVcGRhdGVFcnJvclwiXG4gICAgICB8IFwiU2VyZGVFcnJvclwiXG4gICAgICB8IFwiVGVzdEFuZFNldEVycm9yXCJcbiAgICAgIHwgXCJEYkdldEl0ZW1zRXJyb3JcIlxuICAgICAgfCBcIkRiV3JpdGVFcnJvclwiXG4gICAgICB8IFwiQ3ViaXN0U2lnbmVyRXJyb3JcIlxuICAgICAgfCBcIkN3TGlzdE1ldHJpY3NFcnJvclwiXG4gICAgICB8IFwiQ3dQdXRNZXRyaWNEYXRhRXJyb3JcIlxuICAgICAgfCBcIkdldEF3c1NlY3JldEVycm9yXCJcbiAgICAgIHwgXCJTZWNyZXROb3RGb3VuZFwiXG4gICAgICB8IFwiS21zR2VuZXJhdGVSYW5kb21FcnJvclwiXG4gICAgICB8IFwiTWFsZm9ybWVkVG90cEJ5dGVzXCJcbiAgICAgIHwgXCJLbXNHZW5lcmF0ZVJhbmRvbU5vUmVzcG9uc2VFcnJvclwiXG4gICAgICB8IFwiQ3JlYXRlS2V5RXJyb3JcIlxuICAgICAgfCBcIlBhcnNlRGVyaXZhdGlvblBhdGhFcnJvclwiXG4gICAgICB8IFwiU3BsaXRTaWduZXJFcnJvclwiXG4gICAgICB8IFwiQ3JlYXRlSW1wb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIkNyZWF0ZUVvdHNOb25jZXNFcnJvclwiXG4gICAgICB8IFwiRW90c1NpZ25FcnJvclwiXG4gICAgICB8IFwiQmFieWxvbkNvdlNpZ25FcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0RlbGV0ZVVzZXJFcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0xpc3RVc2Vyc0Vycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvR2V0VXNlckVycm9yXCJcbiAgICAgIHwgXCJNaXNzaW5nVXNlckVtYWlsXCJcbiAgICAgIHwgXCJDb2duaXRvUmVzZW5kVXNlckludml0YXRpb25cIlxuICAgICAgfCBcIkNvZ25pdG9TZXRVc2VyUGFzc3dvcmRFcnJvclwiXG4gICAgICB8IFwiR2VuZXJpY0ludGVybmFsRXJyb3JcIlxuICAgICAgfCBcIkFzc3VtZVJvbGVXaXRob3V0RXZpZGVuY2VcIlxuICAgICAgfCBcIk9pZGNBdXRoV2l0aG91dE9yZ1wiXG4gICAgICB8IFwiTWlzc2luZ0tleU1ldGFkYXRhXCJcbiAgICAgIHwgXCJLbXNFbmFibGVLZXlFcnJvclwiXG4gICAgICB8IFwiS21zRGlzYWJsZUtleUVycm9yXCJcbiAgICAgIHwgXCJMYW1iZGFJbnZva2VFcnJvclwiXG4gICAgICB8IFwiTGFtYmRhTm9SZXNwb25zZUVycm9yXCJcbiAgICAgIHwgXCJMYW1iZGFGYWlsdXJlXCJcbiAgICAgIHwgXCJMYW1iZGFVbnBhcnNhYmxlUmVzcG9uc2VcIlxuICAgICAgfCBcIlNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJEZXNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJSZUVuY3J5cHRVc2VyRXhwb3J0XCJcbiAgICAgIHwgXCJTM1VwbG9hZEVycm9yXCJcbiAgICAgIHwgXCJTM0Rvd25sb2FkRXJyb3JcIlxuICAgICAgfCBcIlMzQ29weUVycm9yXCJcbiAgICAgIHwgXCJTM0xpc3RPYmplY3RzRXJyb3JcIlxuICAgICAgfCBcIlMzRGVsZXRlT2JqZWN0c0Vycm9yXCJcbiAgICAgIHwgXCJTM0J1aWxkRXJyb3JcIlxuICAgICAgfCBcIlMzUHJlc2lnbmVkVXJsRXJyb3JcIlxuICAgICAgfCBcIk1hbmFnZWRTdGF0ZU1pc3NpbmdcIlxuICAgICAgfCBcIkludGVybmFsSGVhZGVyTWlzc2luZ1wiXG4gICAgICB8IFwiSW52YWxpZEludGVybmFsSGVhZGVyVmFsdWVcIlxuICAgICAgfCBcIlJlcXVlc3RMb2NhbFN0YXRlQWxyZWFkeVNldFwiXG4gICAgICB8IFwiT2lkY09yZ01pc21hdGNoXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVySW52YWxpZEp3a1wiXG4gICAgICB8IFwiSW52YWxpZFBrRm9yTWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiU2Vnd2l0VHdlYWtGYWlsZWRcIlxuICAgICAgfCBcIlVuY2hlY2tlZE9yZ1wiXG4gICAgICB8IFwiU2Vzc2lvbk9yZ0lkTWlzc2luZ1wiXG4gICAgICB8IFwiQXZhU2lnbkNyZWRzTWlzc2luZ1wiXG4gICAgICB8IFwiQXZhU2lnblNpZ25hdHVyZU1pc3NpbmdcIlxuICAgICAgfCBcIkV4cGVjdGVkUm9sZVNlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRUaGlyZFBhcnR5SWRlbnRpdHlcIlxuICAgICAgfCBcIkNvZ25pdG9HZXRVc2VyXCJcbiAgICAgIHwgXCJTbnNTdWJzY3JpYmVFcnJvclwiXG4gICAgICB8IFwiU25zVW5zdWJzY3JpYmVFcnJvclwiXG4gICAgICB8IFwiU25zR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0Vycm9yXCJcbiAgICAgIHwgXCJTbnNTdWJzY3JpcHRpb25BdHRyaWJ1dGVzTWlzc2luZ1wiXG4gICAgICB8IFwiU25zU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0Vycm9yXCJcbiAgICAgIHwgXCJTbnNQdWJsaXNoQmF0Y2hFcnJvclwiXG4gICAgICB8IFwiSW5jb25zaXN0ZW50TXVsdGlWYWx1ZVRlc3RBbmRTZXRcIlxuICAgICAgfCBcIk1hdGVyaWFsSWRFcnJvclwiXG4gICAgICB8IFwiSW52YWxpZEJ0Y0FkZHJlc3NcIlxuICAgICAgfCBcIkhpc3RvcmljYWxUeEJvZHlNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkT3BlcmF0aW9uXCJcbiAgICAgIHwgXCJQYXJlbnRPcmdOb3RGb3VuZFwiXG4gICAgICB8IFwiT3JnUGFyZW50TG9vcFwiXG4gICAgICB8IFwiUmVzb2x2ZWRQYXJlbnRPcmdXaXRoTm9TY29wZUNlaWxpbmdcIlxuICAgICAgfCBcIkludmFsaWRVcGxvYWRPYmplY3RJZFwiXG4gICAgICB8IFwiUG9saWN5RW5naW5lTm90Rm91bmRcIlxuICAgICAgfCBcIlBvbGljeUVuZ2luZUVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lTZWNyZXRzRW5jcnlwdGlvbkVycm9yXCJcbiAgICAgIHwgXCJDcmVhdGVQb2xpY3lJbXBvcnRLZXlFcnJvclwiXG4gICAgICB8IFwiSW52YWxpZEFsaWFzXCJcbiAgICAgIHwgXCJFbXB0eVVwZGF0ZU1vZGlmaWVkT2JqZWN0XCJcbiAgICAgIHwgXCJFbXB0eVVwZGF0ZU1vZGlmaWVkQWN0aW9uc1wiXG4gICAgICB8IFwiRGJDb250YWN0QWRkcmVzc2VzSW52YWxpZFwiXG4gICAgICB8IFwiSW52YWxpZEV2bVNpZ2VkUmxwXCJcbiAgICAgIHwgXCJJbnZhbGlkRXJjMjBEYXRhXCJcbiAgICAgIHwgXCJJbnZhbGlkUnBjVXJsXCI7XG4gICAgSW52aXRhdGlvbkFjY2VwdFJlcXVlc3Q6IHtcbiAgICAgIGF1dGg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aFNvdXJjZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW52aXRhdGlvbiB0b2tlbiAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBwZW5kaW5nIGludml0YXRpb24gKi9cbiAgICBJbnZpdGF0aW9uSW5mbzoge1xuICAgICAgY3JlYXRlZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYWRkcmVzcyB0aGUgaW52aXRhdGlvbiB3YXMgc2VudCB0byAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIGV4cGlyYXRpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGludml0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGludml0ZWQgdXNlcidzIG5hbWUgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHJvbGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmRpY2F0ZXMgdGhlIGF1dGggc291cmNlcyBhbGxvd2VkIHRvIGFuIGludml0ZWQgdXNlclxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgSW52aXRlS2luZDogXCJDb2duaXRvXCIgfCBcIklkcEFuZFNzb1wiIHwgXCJTc29cIjtcbiAgICBJbnZpdGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIGFkZHJlc3NcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGFjbWUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICBpbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGxvZ2luIE1GQSBwb2xpY3kgKi9cbiAgICAgIG1mYV9wb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGZ1bGwgbmFtZVxuICAgICAgICogQGV4YW1wbGUgQWxpY2UgV29uZGVybGFuZFxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICByb2xlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNraXAgc2VuZGluZyBhbiBpbnZpdGF0aW9uIGVtYWlsIHRvIHRoaXMgdXNlciBpZiB0cnVlLlxuICAgICAgICpcbiAgICAgICAqIE5PVEU6IHRoaXMgZmllbGQgaXMgZm9yIGludGVybmFsIHRlc3RpbmcgdXNlIE9OTFkuIElmIHlvdSBkbyBub3RcbiAgICAgICAqIHNlbmQgYW4gaW52aXRhdGlvbiBlbWFpbCAoYW5kIHRoZSBpbnZpdGUga2luZCBpcyBub3QgU1NPKSwgdGhlIHVzZXIgd2lsbCBuZXZlciBiZSBhYmxlIHRvIGxvZyBpbi5cbiAgICAgICAqIEBleGFtcGxlIGZhbHNlXG4gICAgICAgKi9cbiAgICAgIHNraXBfZW1haWw/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgY29udGFpbmluZyB0aGUgZGF0YSB0aGF0IGEgV2FzbSBwb2xpY3kgc2hvdWxkIGJlIGludm9rZWQgd2l0aC4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBLZXkgSUQuIElmIGRlZmluZWQsIHRoZSBwb2xpY3kgd2lsbCBiZSBpbnZva2VkIGFzIGlmIGl0IGlzIHNpZ25pbmdcbiAgICAgICAqIHRoZSBtZXNzYWdlIHdpdGggdGhpcyBrZXkuXG4gICAgICAgKi9cbiAgICAgIGtleV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBcInJlcXVlc3QgYm9keVwiIHRoYXQgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIHBvbGljeS4gKi9cbiAgICAgIHJlcXVlc3Q/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBSb2xlIElELiBJZiBgTm9uZWAsIHRoZSBwb2xpY3kgd2lsbCBiZSBpbnZva2VkIGZyb20gdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uLiAqL1xuICAgICAgcm9sZV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBXYXNtIHBvbGljeS4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXNwb25zZToge1xuICAgICAgcmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiV2FzbVBvbGljeVJlc3BvbnNlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZGVycmAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgKi9cbiAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZG91dGAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgKi9cbiAgICAgIHN0ZG91dDogc3RyaW5nO1xuICAgIH07XG4gICAgSnJwY1Jlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIFtgS2V5UGFja2FnZWBdIHNlcmlhbGl6ZWQgaW50byBhIGZvcm1hdCB0aGF0IGdpdmVzIGEgdGlkaWVyIEpTT05cbiAgICAgKiByZXByZXNlbnRhdGlvbiBzdWl0YWJsZSBmb3IgZW5jcnlwdGlvbiBpbiB0aGUgdXNlci1leHBvcnQgZmxvdy5cbiAgICAgKlxuICAgICAqIFdlIGNvbnN0cnVjdCB2YWx1ZXMgb2YgdGhpcyB0eXBlIHJhdGhlciB0aGFuIGNvbnN0cnVjdGluZyBgc2VyZGVfanNvbjo6VmFsdWVgc1xuICAgICAqIGRpcmVjdGx5IHdpdGggYGpzb24hKClgIGJlY2F1c2UgdGhpcyBhbGxvd3MgdXMgdG8gemVyb2l6ZSB2YWx1ZXMgb24gZHJvcCwgd2hpY2hcbiAgICAgKiBkb2Vzbid0IHdvcmsgd2l0aCBgc2VyZGVfanNvbjo6VmFsdWVgLlxuICAgICAqXG4gICAgICogRXhhbXBsZXMgb2Ygc2VyaWFsaXplZCBtYXRlcmlhbDpcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6RW5nbGlzaE1uZW1vbmljYDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogRGVyaXZhdGlvblBhdGgsIEtleVBhY2thZ2UsIE1uZW1vbmljLCBNbmVtb25pY1BhY2thZ2UsIFNlY3AyNTZrMVBrZyxcbiAgICAgKiB9O1xuICAgICAqIHVzZSBzZXJkZV9qc29uOjpqc29uO1xuICAgICAqXG4gICAgICogY29uc3QgTU5FTU9OSUM6ICZzdHIgPSBcImRlcG9zaXQgZmlzY2FsIGJyYWluIHN3YXJtIHN1cnJvdW5kIGNvdXNpbiBob3JuIGdsYXJlIGZpeCBsb3ZlIHJlbmRlciBiZWxpZXZlIGd1aWRlIHNodWZmbGUgc3RlbSBjcmFtIGJyb2Njb2xpIHJlc2VtYmxlIGJlYWNoIGFydGVmYWN0IGxhbmd1YWdlIGdpZnQgamFyIHBlcm1pdFwiO1xuICAgICAqIGNvbnN0IERFUl9QQVRIOiAmc3RyID0gXCJtLzQ0Jy82MCcvMCcvMC8wXCI7XG4gICAgICogY29uc3QgS0VZX1RZUEU6ICZzdHIgPSBcImVjZHNhOnNlY3AyNTZrMVwiO1xuICAgICAqXG4gICAgICogbGV0IG1uZSA9IE1uZW1vbmljOjp0cnlfZnJvbShNTkVNT05JQykuZXhwZWN0KFwiZ29vZCBtbmVtb25pY1wiKTtcbiAgICAgKiBsZXQgZGVycCA9IERlcml2YXRpb25QYXRoOjp0cnlfZnJvbShERVJfUEFUSCkuZXhwZWN0KFwiZ29vZCBkZXIgcGF0aFwiKTtcbiAgICAgKiBsZXQgbW5lX3BrZyA9IE1uZW1vbmljUGFja2FnZTo6bmV3KG1uZSwgXCJcIiwgZGVycCk7XG4gICAgICogbGV0IGtleV9wa2cgPSBLZXlQYWNrYWdlOjo8U2VjcDI1NmsxUGtnPjo6RW5nbGlzaE1uZW1vbmljKG1uZV9wa2cpO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcImVuZ2xpc2hfbW5lbW9uaWNcIixcbiAgICAgKiBcIm1uZW1vbmljXCI6IE1ORU1PTklDLFxuICAgICAqIFwicGFzc3dvcmRcIjogXCJcIixcbiAgICAgKiBcImRlcml2YXRpb25fcGF0aFwiOiBERVJfUEFUSCxcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGFzc2VydF9lcSEoXG4gICAgICogc2VyZGVfanNvbjo6dG9fdmFsdWUoJmpzb25fcGtnKS5leHBlY3QoXCJqc29uIHNlcmlhbGl6YXRpb25cIiksXG4gICAgICoganNvbl9leHBlY3QsXG4gICAgICogKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6UmF3U2VjcmV0YDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogZ2V0X3JhbmRvbV9ieXRlX2FycmF5LCBoZXhfZW5jb2RlLCBLZXlQYWNrYWdlLCBSbmdDb3JlLCBTZWNwMjU2azFQa2csXG4gICAgICogfTtcbiAgICAgKiB1c2Ugc2VyZGVfanNvbjo6anNvbjtcbiAgICAgKlxuICAgICAqIGNvbnN0IEtFWV9UWVBFOiAmc3RyID0gXCJlY2RzYTpzZWNwMjU2azFcIjtcbiAgICAgKlxuICAgICAqIC8vIHJhbmRvbSAzMi1ieXRlIHNlY3JldFxuICAgICAqIGxldCBzazogW3U4OyAzMl0gPSAqZ2V0X3JhbmRvbV9ieXRlX2FycmF5KCk7XG4gICAgICpcbiAgICAgKiBsZXQga2V5X3BrZyA9IEtleVBhY2thZ2U6OjxTZWNwMjU2azFQa2c+OjpTZWNyZXQoc2spO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcInJhd19zZWNyZXRcIixcbiAgICAgKiBcInNlY3JldFwiOiBoZXhfZW5jb2RlKCZzayksXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3NlcnRfZXEhKFxuICAgICAqIHNlcmRlX2pzb246OnRvX3ZhbHVlKCZqc29uX3BrZykuZXhwZWN0KFwianNvbiBzZXJpYWxpemF0aW9uXCIpLFxuICAgICAqIGpzb25fZXhwZWN0LFxuICAgICAqICk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgSnNvbktleVBhY2thZ2U6IChcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwicmF3X3NlY3JldFwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIG9mIHRoZSByYXcgc2VjcmV0ICovXG4gICAgICAgICAgc2VjcmV0OiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwiZW5nbGlzaF9tbmVtb25pY1wiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljICovXG4gICAgICAgICAgbW5lbW9uaWM6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwYXNzd29yZCAod2hpY2ggbWF5IGJlIGVtcHR5KSAqL1xuICAgICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICApICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiBrZXkgdGhpcyBwYWNrYWdlIHJlcHJlc2VudHMgKi9cbiAgICAgIGtleV90eXBlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0b3AtbGV2ZWwgSlNPTi1SUEMgcmVxdWVzdCB0eXBlLiAqL1xuICAgIEpzb25ScGNSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJwY01ldGhvZFwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBJRCAqL1xuICAgICAgaWQ/OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEpTT04tUlBDIHZlcnNpb24uICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBSUEMgQVBJJ3MgcmVzcG9uc2UuICovXG4gICAgSnNvblJwY1Jlc3BvbnNlOiB7XG4gICAgICBlcnJvcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JPYmpcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJRCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIHJlcXVlc3QuICovXG4gICAgICBpZD86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIENvbnN0YW50IFwiMi4wXCIuICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3VsdCwgaWYgc3VjY2Vzcy4gKi9cbiAgICAgIHJlc3VsdD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVmFsaWQgYHJlc3VsdGAgZnJvbSB0aGUgSlNPTi1SUEMgQVBJLiAqL1xuICAgIEpzb25ScGNSZXN1bHQ6XG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHJhbnNhY3Rpb25JbmZvXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGlzdFRyYW5zYWN0aW9uc1BhZ2luYXRlZFJlc3BvbnNlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3ViQWNjb3VudFRyYW5zZmVyUmVzcG9uc2VcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbml2ZXJzYWxUcmFuc2ZlclJlc3BvbnNlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3ViQWNjb3VudEFzc2V0c1Jlc3BvbnNlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjb3VudEluZm9SZXNwb25zZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1YkFjY291bnRUcmFuc2Zlckhpc3RvcnlSZXNwb25zZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuaXZlcnNhbFRyYW5zZmVySGlzdG9yeVJlc3BvbnNlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiV2l0aGRyYXdSZXNwb25zZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldpdGhkcmF3SGlzdG9yeVJlc3BvbnNlXCJdO1xuICAgIEp3a1NldFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXlzIGluY2x1ZGVkIGluIHRoaXMgc2V0ICovXG4gICAgICBrZXlzOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICB9O1xuICAgIEtleUF0dGVzdGF0aW9uQ2xhaW1zOiB7XG4gICAgICBleHA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGlhdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAga2V5X2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgcmVxdWVzdGVkLCB0aGUgcm9sZXMgdGhlIGtleSBpcyBjdXJyZW50bHkgaW4uICovXG4gICAgICBrZXlfcm9sZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXSB8IG51bGw7XG4gICAgfTtcbiAgICBLZXlDb3VudERpbWVuc2lvbnM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGtleSB0eXBlICovXG4gICAgICBrZXlfdHlwZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbWV0cmljcyBtdXN0IGluY2x1ZGUgJ29yZ19pZCcgYXMgYSBkaW1lbnNpb24uICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVyaXZhdGlvbiBwYXRoIHVzZWQgdG8gZGVyaXZlIHRoaXMga2V5ICovXG4gICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgd3JhcHBlZCBrZXktaW1wb3J0IGtleSAqL1xuICAgIEtleUltcG9ydEtleToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgZGtfZW5jOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIHRpbWVzdGFtcCBleHByZXNzZWQgYXMgc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC5cbiAgICAgICAqL1xuICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHRvIHdoaWNoIGFuIGltcG9ydGVkIGtleSBzaG91bGQgYmUgZW5jcnlwdGVkLlxuICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgc2tfZW5jOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJblJvbGVJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgSURcbiAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICBrZXlfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSB0aGlzIGtleSBpcyB1c2VkIG9uIGJlaGFsZiBvZiB0aGlzIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjogXCJDYW5vbmljYWxcIlxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJvbGUgSURcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29tbW9uRmllbGRzXCJdICYge1xuICAgICAgZGVyaXZhdGlvbl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlEZXJpdmF0aW9uSW5mb1wiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGtleSBpcyBlbmFibGVkIChvbmx5IGVuYWJsZWQga2V5cyBtYXkgYmUgdXNlZCBmb3Igc2lnbmluZykgKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleTogXCJLZXkjXCIgZm9sbG93ZWQgYnkgYSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0b1xuICAgICAgICogdGhlIHR5cGUgb2Yga2V5IChzdWNoIGFzIGEgcHVibGljIGtleSBmb3IgQkxTIG9yIGFuIGV0aGVyZXVtIGFkZHJlc3MgZm9yIFNlY3ApXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2Yga2V5LCBzdWNoIGFzIGEgcHVibGljIGtleSBvciBhbiBldGhlcmV1bSBhZGRyZXNzXG4gICAgICAgKiBAZXhhbXBsZSAweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAgbWF0ZXJpYWxfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE93bmVyIG9mIHRoZSBrZXlcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgcG9saWN5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k6IHVua25vd25bXTtcbiAgICAgIHByb3BlcnRpZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVByb3BlcnRpZXNQYXRjaFwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXkgcHJvdmVuYW5jZS4gKi9cbiAgICAgIHByb3ZlbmFuY2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQsIHNlcmlhbGl6ZWQgcHVibGljIGtleS4gVGhlIGZvcm1hdCB1c2VkIGRlcGVuZHMgb24gdGhlIGtleSB0eXBlOlxuICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAqIC0gQkxTIGtleXMgdXNlIDQ4LWJ5dGUgY29tcHJlc3NlZCBCTFMxMi0zODEgKFpDYXNoKSBmb3JtYXQ7XG4gICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHVycG9zZSBmb3Igd2hpY2ggdGhlIGtleSBjYW4gYmUgdXNlZCAoZS5nLiwgY2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzKVxuICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gYWZmaW5pdHkgZm9yIHRoaXMga2V5ICovXG4gICAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIHdoZW4gcmVxdWVzdGluZyBhIGtleSBhdHRlc3RhdGlvbi4gKi9cbiAgICBLZXlJbmZvSnd0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBLZXlJbmZvYCBzdHJ1Y3R1cmUuICovXG4gICAgICBqd3Q6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluZm9zOiB7XG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDbGllbnQtc2lkZSB3aXJlIHBheWxvYWQgZm9yIFtgS2V5UHJvcGVydGllc2BdLiBVc2VkIGluIGJvdGggZGlyZWN0aW9uczpcbiAgICAgKlxuICAgICAqIC0gKipPbiB3cml0ZSoqOiBhICpwYXRjaCosIGkuZS4sIGZvciBlYWNoIGZpZWxkLCBtaXNzaW5nIG1lYW5zIFwibGVhdmUgYWxvbmVcIixcbiAgICAgKiBgbnVsbGAgbWVhbnMgXCJjbGVhclwiLCBhbmQgYSB2YWx1ZSBtZWFucyBcInNldFwiLiBTZWNyZXQgZmllbGRzIGFycml2ZSBpbiB0aGVcbiAgICAgKiBjbGVhciBhbmQgYXJlIGVuY3J5cHRlZCBzZXJ2ZXItc2lkZSBiZWZvcmUgcGVyc2lzdGluZy5cbiAgICAgKiAtICoqT24gcmVhZCoqOiBlYWNoIGZpZWxkIGlzIG9taXR0ZWQgd2hlbiB0aGUgc3RvcmVkIHByb3BlcnR5IGlzIHVuc2V0OyBzZWNyZXRcbiAgICAgKiBmaWVsZHMgYXJlIGVtaXR0ZWQgd2l0aCB0aGUgcmVkYWN0ZWQgbWFya2VyIChlLmcuIFwiW1JFREFDVEVEXVwiKS5cbiAgICAgKi9cbiAgICBLZXlQcm9wZXJ0aWVzUGF0Y2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZUFwaVByb3BlcnRpZXNQYXRjaFwiXSAmIHtcbiAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAga2luZDogXCJCaW5hbmNlQXBpXCI7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBLZXlUeXBlOlxuICAgICAgfCBcIlNlY3BFdGhBZGRyXCJcbiAgICAgIHwgXCJTZWNwQnRjXCJcbiAgICAgIHwgXCJTZWNwQnRjVGVzdFwiXG4gICAgICB8IFwiU2VjcEJ0Y0xlZ2FjeVwiXG4gICAgICB8IFwiU2VjcEJ0Y0xlZ2FjeVRlc3RcIlxuICAgICAgfCBcIlNlY3BBdmFBZGRyXCJcbiAgICAgIHwgXCJTZWNwQXZhVGVzdEFkZHJcIlxuICAgICAgfCBcIkJsc1B1YlwiXG4gICAgICB8IFwiQmxzSW5hY3RpdmVcIlxuICAgICAgfCBcIkJsc0F2YUljbVwiXG4gICAgICB8IFwiRWQyNTUxOVNvbGFuYUFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlTdWlBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5QXB0b3NBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5Q2FyZGFub0FkZHJWa1wiXG4gICAgICB8IFwiRWQyNTUxOVN0ZWxsYXJBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5U3Vic3RyYXRlQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOUNhbnRvbkFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlCaW5hbmNlQXBpXCJcbiAgICAgIHwgXCJNbmVtb25pY1wiXG4gICAgICB8IFwiU3RhcmtcIlxuICAgICAgfCBcIkJhYnlsb25Fb3RzXCJcbiAgICAgIHwgXCJCYWJ5bG9uQ292XCJcbiAgICAgIHwgXCJUYXByb290QnRjXCJcbiAgICAgIHwgXCJUYXByb290QnRjVGVzdFwiXG4gICAgICB8IFwiU2VjcENvc21vc0FkZHJcIlxuICAgICAgfCBcIlAyNTZDb3Ntb3NBZGRyXCJcbiAgICAgIHwgXCJQMjU2T250b2xvZ3lBZGRyXCJcbiAgICAgIHwgXCJQMjU2TmVvM0FkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlUZW5kZXJtaW50QWRkclwiXG4gICAgICB8IFwiU2VjcFRyb25BZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5VG9uQWRkclwiXG4gICAgICB8IFwiU2VjcERvZ2VBZGRyXCJcbiAgICAgIHwgXCJTZWNwRG9nZVRlc3RBZGRyXCJcbiAgICAgIHwgXCJTZWNwS2FzcGFBZGRyXCJcbiAgICAgIHwgXCJTZWNwS2FzcGFUZXN0QWRkclwiXG4gICAgICB8IFwiU2Nobm9yckthc3BhQWRkclwiXG4gICAgICB8IFwiU2Nobm9yckthc3BhVGVzdEFkZHJcIlxuICAgICAgfCBcIlNlY3BMdGNcIlxuICAgICAgfCBcIlNlY3BMdGNUZXN0XCJcbiAgICAgIHwgXCJTZWNwWHJwQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOVhycEFkZHJcIlxuICAgICAgfCBcIkJhYnlKdWJqdWJcIjtcbiAgICBLZXlUeXBlQW5kRGVyaXZhdGlvblBhdGg6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIExpc3Qgb2YgZGVyaXZhdGlvbiBwYXRocyBmb3Igd2hpY2ggdG8gZGVyaXZlLlxuICAgICAgICogQGV4YW1wbGUgbS80NCcvNjAnLzAnLzAvMFxuICAgICAgICovXG4gICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZztcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY2llcyB0byBhcHBseSB0byB0aGlzIGtleS4gSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lmeSBhIHBvbGljeVxuICAgICAgICogdGhhdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGBrZXlfdHlwZWAuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiB1bmtub3duW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGVuY3J5cHRlZCBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gYnl0ZXMuXG4gICAgICpcbiAgICAgKiBXZSBzZXJpYWxpemUgdGhpcyBpbnRvIGEgYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIGFuZCByZXR1cm4gdG8gdGhlIHVzZXJcbiAgICAgKiBzbyB0aGF0IHRoZXkgY2FuIHBhc3MgdGhpcyBiYWNrIHRvIHVzIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgKi9cbiAgICBMYXN0RXZhbEtleTogc3RyaW5nO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhpcmQtcGFydHkgaWRlbnRpdGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIncyBhY2NvdW50ICovXG4gICAgTGlzdElkZW50aXRpZXNSZXNwb25zZToge1xuICAgICAgaWRlbnRpdGllczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gTGlzdCBvZiBwZW5kaW5nIGludml0YXRpb25zICovXG4gICAgTGlzdEludml0YXRpb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUGVuZGluZyBpbnZpdGF0aW9ucyAqL1xuICAgICAgaW52aXRhdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRhdGlvbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgKi9cbiAgICAgIG1mYV9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNTUkgcmVxdWVzdHMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLiAqL1xuICAgIExpc3RQZW5kaW5nTWVzc2FnZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBtZXNzYWdlcyBmb3IgYSB1c2VyLiAqL1xuICAgICAgcGVuZGluZ19tZXNzYWdlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQZW5kaW5nTWVzc2FnZUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgTGlzdFRyYW5zYWN0aW9uc1BhZ2luYXRlZFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiB0cmFuc2FjdGlvbiBpbmZvcy4gKi9cbiAgICAgIHRyYW5zYWN0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgdGhlIFtgY3NfbGlzdFRyYW5zYWN0aW9uc2BdKFJwY01ldGhvZDo6TGlzdFRyYW5zYWN0aW9ucykgbWV0aG9kLiAqL1xuICAgIExpc3RUcmFuc2FjdGlvbnNSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhZ2VcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyIG9yIHJvbGUgaWQuXG4gICAgICAgKlxuICAgICAgICogSWYgZGVmaW5lZCwgdGhlIHJlc3BvbnNlIGlzIGZpbHRlcmVkIHRvIHRyYW5zYWN0aW9ucyBjcmVhdGVkIGJ5IHRoZSBnaXZlbiBpZC5cbiAgICAgICAqL1xuICAgICAgb3duZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gW2Bjc19saXN0VHJhbnNhY3Rpb25zYF0oc3VwZXI6OnJlcXVlc3Q6OkNzUnBjOjpMaXN0VHJhbnNhY3Rpb25zKSAqL1xuICAgIExpc3RUcmFuc2FjdGlvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgdHJhbnNhY3Rpb24gaW5mb3MuICovXG4gICAgICB0cmFuc2FjdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHJhbnNhY3Rpb25JbmZvXCJdW107XG4gICAgfTtcbiAgICBMb2dpblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luUmVxdWVzdFwiXTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIHdoZXRoZXIgYSB1c2VyIGluIGFuIG9yZyBpcyBhbiBPd25lciBvciBqdXN0IGEgcmVndWxhciBtZW1iZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1lbWJlclJvbGU6IFwiQWxpZW5cIiB8IFwiTWVtYmVyXCIgfCBcIk93bmVyXCI7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgTWVtYmVyc2hpcFN0YXR1czogXCJlbmFibGVkXCIgfCBcImRpc2FibGVkXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgbWV0cmljIHRvIGNvbXB1dGUgKi9cbiAgICBNZXRyaWNOYW1lOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY0Rpc2NyaW1pbmFudHNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUc1F1ZXJ5TmFtZVwiXTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImFsbG93ZWRfYXBwcm92ZXJzXCI6IFtcbiAgICAgKiAgICAgXCJVc2VyI2ZhYmMzZjg4LTA0ZTAtNDcxYi05NjU3LTBhZTEyYTNjZDczZVwiLFxuICAgICAqICAgICBcIlVzZXIjZDc5NmMzNjktOTk3NC00NzNiLWFiOWUtZTRhMjQxOGQyZDA3XCJcbiAgICAgKiAgIF0sXG4gICAgICogICBcImNvdW50XCI6IDIsXG4gICAgICogICBcImxpZmV0aW1lXCI6IDkwMFxuICAgICAqIH1cbiAgICAgKi9cbiAgICBNZmFQb2xpY3k6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGFyZSBhbGxvd2VkIHRvIGFwcHJvdmUuIElmIGVtcHR5IGF0IGNyZWF0aW9uIHRpbWUsIGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgdXNlci4gKi9cbiAgICAgIGFsbG93ZWRfYXBwcm92ZXJzPzogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbG93ZWQgYXBwcm92YWwgdHlwZXMuIFdoZW4gb21pdHRlZCwgZGVmYXVsdHMgdG8gYW55LiAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSB1c2VycyB0byByZXF1aXJlIHRvIGFwcHJvdmUgKGRlZmF1bHRzIHRvIDEpLlxuICAgICAgICovXG4gICAgICBjb3VudD86IG51bWJlcjtcbiAgICAgIGxpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgYXV0aCBmYWN0b3JzIHRvIHJlcXVpcmUgcGVyIHVzZXIgKGRlZmF1bHRzIHRvIDEpLlxuICAgICAgICovXG4gICAgICBudW1fYXV0aF9mYWN0b3JzPzogbnVtYmVyO1xuICAgICAgcmVxdWVzdF9jb21wYXJlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RDbXBcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyIG9wZXJhdGlvbnMgdG8gd2hpY2ggdGhpcyBwb2xpY3kgc2hvdWxkIGFwcGx5LlxuICAgICAgICogV2hlbiBvbWl0dGVkLCBhcHBsaWVzIHRvIGFsbCBvcGVyYXRpb25zLlxuICAgICAgICovXG4gICAgICByZXN0cmljdGVkX29wZXJhdGlvbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl1bXSB8IG51bGw7XG4gICAgICB0aW1lX2RlbGF5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1GQS1wcm90ZWN0ZWQgYWN0aW9ucyB3aG9zZSBNRkEgcmVxdWlyZW1lbnRzIGFyZSBjb25maWd1cmFibGUgYnkgb3JnIG93bmVycy5cbiAgICAgKlxuICAgICAqIFNwZWNpZnlpbmcgdGhlICdDdWJlU2lnbmVyJyBNRkEgdHlwZSBpcyBuZXZlciBhbGxvd2VkIGZvciBhbnkgb2YgdGhlc2UgYWN0aW9ucy5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1mYVByb3RlY3RlZEFjdGlvbjpcbiAgICAgIHwgXCJEZWZhdWx0XCJcbiAgICAgIHwgXCJSZWdpc3Rlck1mYVwiXG4gICAgICB8IFwiTG9naW5cIlxuICAgICAgfCBcIkV4dGVuZFNlc3Npb25cIlxuICAgICAgfCBcIkFkZElkZW50aXR5XCJcbiAgICAgIHwgXCJLZXlFeHBvcnRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIGFzIGEgcmVzcG9uc2UgZnJvbSBtdWx0aXBsZSByb3V0ZXMgKGUuZy4sICdnZXQgbWZhJywgJ2FwcHJvdmUgbWZhJywgJ2FwcHJvdmUgdG90cCcpLiAqL1xuICAgIE1mYVJlcXVlc3RJbmZvOiB7XG4gICAgICBjcmVhdGVkX2F0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2Vzc2lvbiBpZGVudGl0eSAodXNlciBvciByb2xlKSB0aGF0IGNyZWF0ZWQgdGhpcyByZXF1ZXN0LiAqL1xuICAgICAgY3JlYXRlZF9ieTogc3RyaW5nO1xuICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcHByb3ZhbCByZXF1ZXN0IElELiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIG5vdF92YWxpZF91bnRpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1GQSBwb2xpY3kgcHJvdmVuYW5jZVxuICAgICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgcHJvdmVuYW5jZTogXCJPcmdcIiB8IFwiS2V5XCIgfCBcIktleUluUm9sZVwiIHwgXCJSb2xlXCIgfCBcIlVzZXJcIiB8IFwiRWRpdFBvbGljeVwiO1xuICAgICAgcmVjZWlwdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVjZWlwdFwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gdGhpcyBNRkEgcmVxdWVzdCB3YXMgY3JlYXRlZCBpbi4gIEl0IGNhbiBvbmx5IGJlIHJlZGVlbWVkIGZyb20gdGhlIHNhbWUgcmVnaW9uLiAqL1xuICAgICAgcmVnaW9uPzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCBjb250YWlucyB0aGUgSURzIG9mIGFsbCBNRkEgcmVxdWVzdHMgKGluY2x1ZGluZyB0aGlzIG9uZSEpIHRoYXRcbiAgICAgICAqIHdlcmUgZ2VuZXJhdGVkIGF0IG9uY2UgZm9yIHRoZSBzYW1lIEN1YmVTaWduZXIgb3BlcmF0aW9uLlxuICAgICAgICpcbiAgICAgICAqIElmIG5vdCBzZXQsIGl0IG1lYW5zIHRoYXQgdGhpcyB3YXMgdGhlIGxvbmUgTUZBIHJlcXVlc3QgZ2VuZXJhdGVkIGZvciBgcmVxdWVzdGAuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBpcyB1c2VmdWwgc28gdGhhdCBhIGNsaWVudCBjYW4gZGlzY292ZXIgYWxsIHRoZSBNRkFzIHdob3NlIHJlY2VpcHRzIG11c3RcbiAgICAgICAqIGJlIHN1Ym1pdHRlZCB0b2dldGhlciB0byBjYXJyeSBvdXQgdGhlIG9yaWdpbmFsIEN1YmVTaWduZXIgb3BlcmF0aW9uLlxuICAgICAgICovXG4gICAgICByZWxhdGVkX2lkcz86IHN0cmluZ1tdO1xuICAgICAgcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIdHRwUmVxdWVzdFwiXTtcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl07XG4gICAgfTtcbiAgICBNZmFSZXF1aXJlZEFyZ3M6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWx3YXlzIHNldCB0byBmaXJzdCBNRkEgaWQgZnJvbSBgU2VsZjo6aWRzYCAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gTm9uLWVtcHR5IE1GQSByZXF1ZXN0IElEcyAqL1xuICAgICAgaWRzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnYW5pemF0aW9uIGlkICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZSAoaW5jbHVkZWQgaW4gc2lnbmVyIHJlc3BvbnNlcywgd2hlbiByZXF1ZXN0ZWQpICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgIHNlc3Npb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9yZy13aWRlIE1GQSByZXF1aXJlbWVudHMuICovXG4gICAgTWZhUmVxdWlyZW1lbnRzOiB7XG4gICAgICBhbGllbl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl07XG4gICAgICBhbGxvd2VkX21mYV90eXBlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWxsb3dlZE1mYU1hcFwiXTtcbiAgICAgIGtleV9leHBvcnRfcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdO1xuICAgICAgbWVtYmVyX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIE1mYVJlc2V0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyIHlvdSB3YW50IHRvIHJlc2V0IE1GQSBmb3JcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogJ0N1YmVTaWduZXInIHwgJ0ZpZG8nIHwgYEZpZG9LZXkjJHtzdHJpbmd9YCB8ICdUb3RwJyB8ICdFbWFpbE90cCcgfCBgRW1haWxPdHAjJHtudW1iZXJ9YFxuICAgICAqIEBkZXNjcmlwdGlvbiBEaWZmZXJlbnQgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHByb3ZlIGFuIE1GQSByZXF1ZXN0XG4gICAgICovXG4gICAgTWZhVHlwZTogc3RyaW5nO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIE1mYVZvdGU6IFwiYXBwcm92ZVwiIHwgXCJyZWplY3RcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGluZGl2aWR1YWwgaXRlbSBpbiBhIE1pZ3JhdGVJZGVudGl0eVJlcXVlc3QgKi9cbiAgICBNaWdyYXRlSWRlbnRpdHlJdGVtOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNJZGVudGl0eVwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyIHlvdSB3YW50IHRvIG9wZXJhdGUgb24gKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IHRvIGFkZCBvciByZW1vdmUgYW4gT0lEQyBpZGVudGl0aWVzIGZvciBhbiBleGlzdGluZyB1c2VyICovXG4gICAgTWlncmF0ZUlkZW50aXR5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNaWdyYXRlSWRlbnRpdHlJdGVtXCJdW107XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gdXBkYXRlIGFuIGV4aXN0aW5nIHVzZXIuICovXG4gICAgTWlncmF0ZVVwZGF0ZVVzZXJJdGVtOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgdXNlciB5b3Ugd2FudCB0byBvcGVyYXRlIG9uICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPdmVycmlkZSB1c2VyJ3MgdmVyaWZpZWQgZW1haWwgaW4gdGhpcyBvcmcuIFVzZSBhbiBlbXB0eSBzdHJpbmcgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHVzZXInc1xuICAgICAgICogdmVyaWZpZWQgZW1haWwgc2hvdWxkIGJlIGNsZWFyZWQgKGFuZCBmYWxsYmFjayB0byB0aGVpciBkaXNwbGF5IGVtYWlsKS5cbiAgICAgICAqL1xuICAgICAgdmVyaWZpZWRfZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgTWlncmF0ZVVwZGF0ZVVzZXJzUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNaWdyYXRlVXBkYXRlVXNlckl0ZW1cIl1bXTtcbiAgICBNbWlNZXRhZGF0YToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDaGFpbiBJRCAobm90IHJlcXVpcmVkIHdoZW4gc2lnbmluZyBhIHBlcnNvbmFsIG1lc3NhZ2UgKEVJUC0xOTEpKSAqL1xuICAgICAgY2hhaW5JZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHRoZSBjdXN0b2RpYW4gc2hvdWxkIHB1Ymxpc2ggdGhlIHRyYW5zYWN0aW9uICovXG4gICAgICBjdXN0b2RpYW5QdWJsaXNoZXNUcmFuc2FjdGlvbj86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIG5vdGUgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zYWN0aW9uIHdoaWNoIGNhbiBiZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgKi9cbiAgICAgIG5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgd2ViIHBhZ2UvZGFwcCB3aGVyZSB0aGUgdHJhbnNhY3Rpb24gb3JpZ2luYXRlZCAqL1xuICAgICAgb3JpZ2luVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcidzIHByZWZlcnJlZCBSUEMgVVJMLCBhbmQgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBSUEMgVVJMIGZvciB0aGUgbmV0d29yayBjb3JyZXNwb25kaW5nIHRvIHRoZSBDaGFpbiBJRCAqL1xuICAgICAgcnBjVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGNhdGVnb3J5IG9mIHRyYW5zYWN0aW9uLCBhcyBiZXN0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSB3YWxsZXQgKi9cbiAgICAgIHRyYW5zYWN0aW9uQ2F0ZWdvcnk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgTW1pUmVqZWN0UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCByZWFzb24gZm9yIHJlamVjdGluZy4gKi9cbiAgICAgIHJlYXNvbj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBNbWlTdGF0dXM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2hvcnQgdGV4dCB0byBkaXNwbGF5IHRvIHRoZSB1c2VyICovXG4gICAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBzaWduZWQgbWVzc2FnZSBoYXMgZmluaXNoZWQsIGUuZy4gaXQgaXMgY29tcGxldGVkLCBmYWlsZWQgb3IgY2FuY2VsbGVkICovXG4gICAgICBmaW5pc2hlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlYXNvbiBmb3IgdGhlIHNpZ25lZCBtZXNzYWdlIHN0YXR1cyAqL1xuICAgICAgcmVhc29uPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgc2lnbmVkICovXG4gICAgICBzaWduZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHRyYW5zYWN0aW9uIHdhcyBzdWJtaXR0ZWQgdG8gdGhlIGJsb2NrY2hhaW4gKi9cbiAgICAgIHN1Ym1pdHRlZD86IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHRyYW5zYWN0aW9uIHdhcyBzdWNjZXNzZnVsLCBpLmUuIGl0IHdhcyBpbmNsdWRlZCBpbiBhIGJsb2NrIGFuZCBub3QgcmV2ZXJ0ZWQgKi9cbiAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc2lnbmVkIG1lc3NhZ2UgKi9cbiAgICBNc2dTaWduYXR1cmU6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc3RydWN0IHJlcHJlc2VudGluZyB0aGUgcGVuZGluZyBtZXNzYWdlIHN0YXR1cyAqL1xuICAgIE1zZ1N0YXR1czpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJQZW5kaW5nXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBzaWduZWQgbWVzc2FnZSAqL1xuICAgICAgICAgIHNpZzoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmF0dXJlICovXG4gICAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJTaWduZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgc3RhdHVzOiBcIlJlamVjdGVkXCI7XG4gICAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE5ldHdvcmsgbmFtZSAoJ21haW5uZXQnLCAnaG9sZXNreScpXG4gICAgICogQGV4YW1wbGUgaG9sZXNreVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgTmV0d29yazogXCJtYWlubmV0XCIgfCBcImhvbGVza3lcIiB8IFwiaG9vZGlcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbmV3IHNlc3Npb24sIHJldHVybmVkIGZyb20gbXVsdGlwbGUgZW5kcG9pbnRzIChlLmcuLCBsb2dpbiwgcmVmcmVzaCwgZXRjLikuICovXG4gICAgTmV3U2Vzc2lvblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGV4cGlyYXRpb24gKGluIHNlY29uZHMgc2luY2UgVU5JWCBlcG9jaCksIGJleW9uZCB3aGljaCBpdCBjYW5ub3QgYmUgcmVmcmVzaGVkLlxuICAgICAgICogQGV4YW1wbGUgMTcwMTg3OTY0MFxuICAgICAgICovXG4gICAgICBleHBpcmF0aW9uPzogbnVtYmVyO1xuICAgICAgb3JnX2lkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVmcmVzaCB0aGlzIHNlc3Npb24uICovXG4gICAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgICBzZXNzaW9uX2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbkluZm9cIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOZXcgdG9rZW4gdG8gYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24uIFJlcXVlc3RzIHRvIHNpZ25pbmcgZW5kcG9pbnRzXG4gICAgICAgKiBzaG91bGQgaW5jbHVkZSB0aGlzIHZhbHVlIGluIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyLlxuICAgICAgICovXG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEZvcm1hdDogYmluYXJ5ICovXG4gICAgTm9uY2VWYWx1ZTogc3RyaW5nO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIE5vdEZvdW5kRXJyb3JDb2RlOlxuICAgICAgfCBcIlVyaVNlZ21lbnRNaXNzaW5nXCJcbiAgICAgIHwgXCJVcmlTZWdtZW50SW52YWxpZFwiXG4gICAgICB8IFwiVG90cE5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIkZpZG9LZXlOb3RGb3VuZFwiXG4gICAgICB8IFwiRmlkb0NoYWxsZW5nZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJUb3RwQ2hhbGxlbmdlTm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0Tm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRDaXBoZXJ0ZXh0Tm90Rm91bmRcIlxuICAgICAgfCBcIk9yZ0V4cG9ydENpcGhlcnRleHROb3RGb3VuZFwiXG4gICAgICB8IFwiVXBsb2FkT2JqZWN0Tm90Rm91bmRcIlxuICAgICAgfCBcIlBvbGljeVNlY3JldE5vdEZvdW5kXCJcbiAgICAgIHwgXCJCdWNrZXRNZXRhTm90Rm91bmRcIlxuICAgICAgfCBcIlRpbWVzdHJlYW1EaXNhYmxlZFwiXG4gICAgICB8IFwiQ3VzdG9tQ2hhaW5Ob3RGb3VuZFwiXG4gICAgICB8IFwiSW52aXRhdGlvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJUcmFuc2FjdGlvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJFbWFpbENvbmZpZ05vdEZvdW5kXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY29uZmlndXJhdGlvbiBhbmQgc3RhdHVzIG9mIGEgbm90aWZpY2F0aW9uIGVuZHBvaW50ICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRTdWJzY3JpcHRpb25cIl0gJiB7XG4gICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3Vic2NyaXB0aW9uU3RhdHVzXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY29uZmlndXJhdGlvbiBmb3IgYW4gb3JnIGV2ZW50IGVuZHBvaW50ICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICBmaWx0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RmlsdGVyXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVUkwgb2YgdGhlIGVuZHBvaW50ICovXG4gICAgICB1cmw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBub3RpZmljYXRpb24gZW5kcG9pbnQgc3Vic2NyaXB0aW9uICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIEFSTiBvZiB0aGUgc3Vic2NyaXB0aW9uICovXG4gICAgICBhcm46IHN0cmluZztcbiAgICAgIGNvbmZpZzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlIE9JREMgdG9rZW4gKi9cbiAgICBPaWRjQ2xhaW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNVc2VySW5mb1wiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNJZGVudGl0eVwiXSAmIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdWRpZW5jZShzKSB0aGF0IHRoaXMgSUQgVG9rZW4gaXMgaW50ZW5kZWQgZm9yLiBJdCBNVVNUIGNvbnRhaW4gdGhlXG4gICAgICAgICAqIE9BdXRoIDIuMCBjbGllbnRfaWQgb2YgdGhlIFJlbHlpbmcgUGFydHkgYXMgYW4gYXVkaWVuY2UgdmFsdWUuIEl0IE1BWVxuICAgICAgICAgKiBhbHNvIGNvbnRhaW4gaWRlbnRpZmllcnMgZm9yIG90aGVyIGF1ZGllbmNlcy5cbiAgICAgICAgICogVGhpcyB2YWx1ZSBpcyBvcGFxdWUgYWNjb3JkaW5nIHRvIHRoZSBPSURDIHNwZWMsIGJ1dCBmb3IgZXhhbXBsZSBHb29nbGVcbiAgICAgICAgICogYXVkaWVuY2VzIGxvb2sgbGlrZSBgMTIzNDk4NzgxOTIwMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbWBcbiAgICAgICAgICogQGV4YW1wbGUgMTIzNDk4NzgxOTIwMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbVxuICAgICAgICAgKi9cbiAgICAgICAgYXVkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgcmVzdHJpY3Rpb24gb24gdGhlIHNldCBvZiBzY29wZXMgYWxsb3dlZCB3aXRoIHRoaXMgdG9rZW4gKi9cbiAgICAgICAgY3ViZXNpZ25lcl9zY29wZV9jZWlsaW5nPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBnbG9iYWxseSB1bmlxdWUgT0lEQy1hdXRob3JpemVkIHVzZXIgYnkgZXhwcmVzc2luZyB0aGUgZnVsbCBcInBhdGhcIiB0byBhIHVzZXIuIFRoYXQgaXM6XG4gICAgICpcbiAgICAgKiAoaXNzKSAgICAgICAoc3ViKVxuICAgICAqIElzc3VlciAtPiBTdWJyZXNvdXJjZVxuICAgICAqL1xuICAgIE9pZGNJZGVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJvb3QtbGV2ZWwgaXNzdWVyIHdobyBhZG1pbmlzdHJhdGVzIHRoaXMgdXNlci4gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICogSXNzdWVyIElkZW50aWZpZXIgZm9yIHRoZSBJc3N1ZXIgb2YgdGhlIHJlc3BvbnNlLiBUaGUgaXNzXG4gICAgICAgKiB2YWx1ZSBpcyBhIGNhc2Ugc2Vuc2l0aXZlIFVSTCB1c2luZyB0aGUgaHR0cHMgc2NoZW1lIHRoYXQgY29udGFpbnNcbiAgICAgICAqIHNjaGVtZSwgaG9zdCwgYW5kIG9wdGlvbmFsbHksIHBvcnQgbnVtYmVyIGFuZCBwYXRoIGNvbXBvbmVudHMgYW5kXG4gICAgICAgKiBubyBxdWVyeSBvciBmcmFnbWVudCBjb21wb25lbnRzLlxuICAgICAgICogQGV4YW1wbGUgaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGlzczogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICpcbiAgICAgICAqIEEgbG9jYWxseSB1bmlxdWUgYW5kIG5ldmVyIHJlYXNzaWduZWQgaWRlbnRpZmllciB3aXRoaW4gdGhlIElzc3VlciBmb3JcbiAgICAgICAqIHRoZSBFbmQtVXNlciwgd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgY29uc3VtZWQgYnkgdGhlIENsaWVudCwgZS5nLixcbiAgICAgICAqIDI0NDAwMzIwIG9yIEFJdE9hd213dFd3Y1QwazUxQmF5ZXdOdnV0ckpVcXN2bDZxczdBNC4gSXQgTVVTVCBOT1QgZXhjZWVkXG4gICAgICAgKiAyNTUgQVNDSUkgY2hhcmFjdGVycyBpbiBsZW5ndGguIFRoZSBzdWIgdmFsdWUgaXMgYSBjYXNlIHNlbnNpdGl2ZVxuICAgICAgICogc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgMTA3NjkxNTAzNTAwMDYxNTA3MTUxMTMwODIzNjdcbiAgICAgICAqL1xuICAgICAgc3ViOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGFuIGV4cGxpY2l0bHkgY29uZmlndXJlZCAoYWxsb3dsaXN0ZWQpIE9wZW5JRCBwcm92aWRlciBmb3IgYW4gb3JnICovXG4gICAgT2lkY0lzc3VlckluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW50ZW5kZWQgYXVkaWVuY2VzIChjbGllbnQgSURzKSAqL1xuICAgICAgYXVkaWVuY2VzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSXNzdWVyIFVSTCAqL1xuICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGlzc3VlciBuaWNrbmFtZSAqL1xuICAgICAgbmlja25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByb2xlcyBhbGxvd2VkIHRvIHVzZSB0aGlzIElEUCAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdO1xuICAgIH07XG4gICAgT2lkY0xvZ2luRGltZW5zaW9uczoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyBpc3N1ZXIgKHByb3ZpZGVyKSAqL1xuICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtZXRyaWNzIG11c3QgaW5jbHVkZSAnb3JnX2lkJyBhcyBhIGRpbWVuc2lvbi4gKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPSURDIGxvZ2luIHJlcXVlc3QgKi9cbiAgICBPaWRjTG9naW5SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUgc2Vzc2lvbiAqL1xuICAgICAgcHVycG9zZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcInNpZ246KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3BlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgdG9rZW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdO1xuICAgIH07XG4gICAgT2lkY1VzZXJJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSB1c2VyQGVtYWlsLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBuYW1lIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgZHJpbFxuICAgICAgICovXG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFsbCBkaWZmZXJlbnQga2luZHMgb2Ygc2Vuc2l0aXZlIG9wZXJhdGlvbnNcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE9wZXJhdGlvbktpbmQ6XG4gICAgICB8IFwiQXZhU2lnblwiXG4gICAgICB8IFwiQXZhQ2hhaW5UeFNpZ25cIlxuICAgICAgfCBcIkJhYnlsb25Db3ZTaWduXCJcbiAgICAgIHwgXCJCYWJ5bG9uUmVnaXN0cmF0aW9uXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ1wiXG4gICAgICB8IFwiQmxvYlNpZ25cIlxuICAgICAgfCBcIkJ0Y01lc3NhZ2VTaWduXCJcbiAgICAgIHwgXCJCdGNTaWduXCJcbiAgICAgIHwgXCJEaWZmaWVIZWxsbWFuXCJcbiAgICAgIHwgXCJQc2J0U2lnblwiXG4gICAgICB8IFwiVGFwcm9vdFNpZ25cIlxuICAgICAgfCBcIkVpcDE5MVNpZ25cIlxuICAgICAgfCBcIkVpcDcxMlNpZ25cIlxuICAgICAgfCBcIkVvdHNOb25jZXNcIlxuICAgICAgfCBcIkVvdHNTaWduXCJcbiAgICAgIHwgXCJFdGgxU2lnblwiXG4gICAgICB8IFwiRXRoMlNpZ25cIlxuICAgICAgfCBcIkV0aDJTdGFrZVwiXG4gICAgICB8IFwiRXRoMlVuc3Rha2VcIlxuICAgICAgfCBcIlNvbGFuYVNpZ25cIlxuICAgICAgfCBcIlN1aVNpZ25cIlxuICAgICAgfCBcIlRlbmRlcm1pbnRTaWduXCJcbiAgICAgIHwgXCJSb2xlVXBkYXRlXCI7XG4gICAgT3JnQWxlcnRzUHJlZnM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUmVjaXBpZW50IHVzZXJzIGZvciBvcmctbGV2ZWwgYWxlcnRzICovXG4gICAgICBhbGVydF9yZWNpcGllbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnLWxldmVsIGFsZXJ0cyB0byBzZW5kIGVtYWlscyBmb3IgKi9cbiAgICAgIHN1YnNjcmliZWRfYWxlcnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBbGVydEtpbmRcIl1bXSB8IG51bGw7XG4gICAgfTtcbiAgICBPcmdEYXRhOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG9yZ1xuICAgICAgICogQGV4YW1wbGUgT3JnIzEyMy4uLlxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBvcmdfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBPcmdFdmVudEFyZ3M6IHtcbiAgICAgIG9yZ19ldmVudDogXCJPcmdFdmVudEFyZ3NcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RGF0YVwiXSwgXCJvcmdfZXZlbnRcIj4gJiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkZW50aXR5IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudCAqL1xuICAgICAgICB0cmlnZ2VyZWRfYnk6IHN0cmluZztcbiAgICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcmctbGV2ZWwgZXZlbnRzIHRoYXQgd2Ugbm90aWZ5IG91ciBjdXN0b21lcnMgYWJvdXQgKi9cbiAgICBPcmdFdmVudERhdGE6XG4gICAgICB8IHtcbiAgICAgICAgICBiaWxsaW5nX2V2ZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdFdmVudFwiXTtcbiAgICAgICAgICBrZXk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiQmlsbGluZ1wiO1xuICAgICAgICAgIHJvbGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgICAgICB1c2VyPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGR1cmF0aW9uIG9mIHRoZSByZXF1ZXN0IGluIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAqL1xuICAgICAgICAgIGR1cmF0aW9uX21zOiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCAqL1xuICAgICAgICAgIG1ldGhvZDogc3RyaW5nO1xuICAgICAgICAgIG9wZXJhdGlvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaWxsaW5nRXZlbnRcIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlJlc3BvbnNlXCI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXNwb25zZSBzdGF0dXNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBIVFRQIHJlcXVlc3QgcGF0aCArIHF1ZXJ5IHBhcmFtZXRlcnMgKi9cbiAgICAgICAgICB1cmk6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgbWVtYmVyc2hpcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJPaWRjQXV0aFwiO1xuICAgICAgICAgIHB1cnBvc2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIHNjb3BlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgICAgIHVzZXJfaW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjQ2xhaW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtYXRlcmlhbCBpZCAoYWRkcmVzcykgb2YgdGhlIGtleSB1c2VkIGZvciBzaWduaW5nICovXG4gICAgICAgICAga2V5X21hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgICAgICBvcGVyYXRpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3BlcmF0aW9uS2luZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiU2lnbmVkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGNoYWluX2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIGtleV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiQmFieWxvbkVvdHNDb25jdXJyZW50U2lnbmluZ1wiO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgcHJldl9ibG9ja19oZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgICBwcmV2X3NpZ25pbmdfaGFzaDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgcmVxX2Jsb2NrX2hlaWdodDogbnVtYmVyO1xuICAgICAgICAgIHJlcV9zaWduaW5nX2hhc2g6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgYXR0ZXN0YXRpb246IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhhc2ggdGhhdCB3YXMgc2lnbmVkICovXG4gICAgICAgICAgICBzaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhdHRlc3RhdGlvbi5kYXRhLnNvdXJjZS5lcG9jaCBvZiB0aGUgc2lnbmVkIGF0dGVzdGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNvdXJjZV9lcG9jaDogbnVtYmVyO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGF0dGVzdGF0aW9uLmRhdGEudGFyZ2V0LmVwb2NoIG9mIHRoZSBzaWduZWQgYXR0ZXN0YXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGFyZ2V0X2Vwb2NoOiBudW1iZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBrZXk6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgbWF0ZXJpYWxfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGFzaCB0aGF0IHdhcyBzaWduZWQgKi9cbiAgICAgICAgICAgIHNpZ25pbmdfcm9vdDogc3RyaW5nO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBibG9jayB0aGF0IHdhcyBzaWduZWRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2xvdDogbnVtYmVyO1xuICAgICAgICAgIH07XG4gICAgICAgICAga2V5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIG1hdGVyaWFsX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgZW5mb3JjZWQ6IGJvb2xlYW47XG4gICAgICAgICAgbGFzdF9zaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIGxhc3Rfc2xvdDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgySW52YWxpZEJsb2NrUHJvcG9zZXJTbG90VG9vTG93XCI7XG4gICAgICAgICAgc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICBzbG90OiBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGVuZm9yY2VkOiBib29sZWFuO1xuICAgICAgICAgIGxhc3Rfc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICBsYXN0X3RhcmdldF9lcG9jaDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgySW52YWxpZEF0dGVzdGF0aW9uU291cmNlRXBvY2hUb29Mb3dcIjtcbiAgICAgICAgICBzaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIHNvdXJjZV9lcG9jaDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBlbmZvcmNlZDogYm9vbGVhbjtcbiAgICAgICAgICBsYXN0X3NpZ25pbmdfcm9vdDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgbGFzdF90YXJnZXRfZXBvY2g6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkludmFsaWRBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCI7XG4gICAgICAgICAgc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICB0YXJnZXRfZXBvY2g6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50MzIgKi9cbiAgICAgICAgICBkYWlseV91bnN0YWtlX2NvdW50OiBudW1iZXI7XG4gICAgICAgICAga2V5X2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJFdGgyVW5zdGFrZVwiO1xuICAgICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgdmFsaWRhdG9yX2luZGV4OiBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGRhdGU6IHVua25vd247XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50MzIgKi9cbiAgICAgICAgICBtYXg6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkV4Y2VlZGVkTWF4VW5zdGFrZVwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEtleSBpZHMgKi9cbiAgICAgICAgICBrZXlfaWRzOiBzdHJpbmdbXTtcbiAgICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJLZXlDcmVhdGVkXCI7XG4gICAgICAgICAgb3duZXJfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGFwcHJvdmVkX3dpdGhfbWZhX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXTtcbiAgICAgICAgICBtZmFfcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiTWZhQXBwcm92ZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgbWZhX3JlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIk1mYVJlamVjdGVkXCI7XG4gICAgICAgICAgcmVqZWN0ZWRfYnk6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgcmVqZWN0ZWRfbWZhX2lkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgICAgcmVqZWN0ZWRfd2l0aF9tZmFfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBjaGFuZ2VkX2J5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBwb2xpY3kgKi9cbiAgICAgICAgICBuZXdfcG9saWN5OiB1bmtub3duW107XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlBvbGljeUNoYW5nZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDaGFpbiBpZCAqL1xuICAgICAgICAgIGNoYWluX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgcmVxdWVzdCAqL1xuICAgICAgICAgIGN1cnJlbnRfc3RhdGU6IHVua25vd247XG4gICAgICAgICAga2V5X2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN0YXRlIG9mIHRoZSBsYXN0IHNpZ25lZCBtZXNzYWdlICovXG4gICAgICAgICAgbGFzdF9zdGF0ZTogdW5rbm93bjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiVGVuZGVybWludENvbmN1cnJlbnRTaWduaW5nXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGludml0ZWQgdXNlciAqL1xuICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIkludml0YXRpb25DcmVhdGVkXCI7XG4gICAgICAgICAgcm9sZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhZGRyZXNzIHdob3NlIGludml0YXRpb24gd2FzIGNhbmNlbGVkICovXG4gICAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiSW52aXRhdGlvbkNhbmNlbGVkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGtleV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiVXNlckV4cG9ydEluaXRcIjtcbiAgICAgICAgICB2YWxpZF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBrZXlfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlVzZXJFeHBvcnRDb21wbGV0ZVwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlcnJvciBmcm9tIHRoZSBwb2xpY3kgZW5naW5lICh3aGVuIHJlc3BvbnNlIGlzIGVxdWFsIHRvICdFcnJvcicpICovXG4gICAgICAgICAgZXJyb3I/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIGtleV9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJXYXNtUG9saWN5RXhlY3V0ZWRcIjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFBvbGljeSBuYW1lIG9yIGlkICovXG4gICAgICAgICAgcG9saWN5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBQb2xpY3kgaGFzaCAqL1xuICAgICAgICAgIHBvbGljeV9oYXNoOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVhc29uIGZvciB0aGUgZGVuaWFsICh3aGVuIHJlc3BvbnNlIGlzIGVxdWFsIHRvICdEZW55JykgKi9cbiAgICAgICAgICByZWFzb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAgICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICAgICAgICovXG4gICAgICAgICAgcmVzcG9uc2U6IFwiQWxsb3dcIiB8IFwiRGVueVwiIHwgXCJFcnJvclwiO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc291cmNlIG9mIGEgcG9saWN5IGV4ZWN1dGlvbiwgaS5lLiB0aGUgcmVhc29uIGl0IHdhcyBleGVjdXRlZC5cbiAgICAgICAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNvdXJjZTogXCJTaWduUmVxdWVzdFwiIHwgXCJVc2VySW52b2NhdGlvblwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gUG9saWN5IGVycm9yIG91dHB1dCAqL1xuICAgICAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gUG9saWN5IHN0YW5kYXJkIG91dHB1dCAqL1xuICAgICAgICAgIHN0ZG91dDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnRXZlbnREaXNjcmltaW5hbnRzOlxuICAgICAgfCBcIkJpbGxpbmdcIlxuICAgICAgfCBcIlJlc3BvbnNlXCJcbiAgICAgIHwgXCJPaWRjQXV0aFwiXG4gICAgICB8IFwiU2lnbmVkXCJcbiAgICAgIHwgXCJCYWJ5bG9uRW90c0NvbmN1cnJlbnRTaWduaW5nXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQmxvY2tQcm9wb3NlclNsb3RUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQXR0ZXN0YXRpb25Tb3VyY2VFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkludmFsaWRBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyVW5zdGFrZVwiXG4gICAgICB8IFwiRXRoMkV4Y2VlZGVkTWF4VW5zdGFrZVwiXG4gICAgICB8IFwiS2V5Q3JlYXRlZFwiXG4gICAgICB8IFwiTWZhQXBwcm92ZWRcIlxuICAgICAgfCBcIk1mYVJlamVjdGVkXCJcbiAgICAgIHwgXCJQb2xpY3lDaGFuZ2VkXCJcbiAgICAgIHwgXCJUZW5kZXJtaW50Q29uY3VycmVudFNpZ25pbmdcIlxuICAgICAgfCBcIkludml0YXRpb25DcmVhdGVkXCJcbiAgICAgIHwgXCJJbnZpdGF0aW9uQ2FuY2VsZWRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRJbml0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0Q29tcGxldGVcIlxuICAgICAgfCBcIldhc21Qb2xpY3lFeGVjdXRlZFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdGVyIGZvciBvcmcgZXZlbnRzICovXG4gICAgT3JnRXZlbnRGaWx0ZXI6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICBcIkFsbFwiLFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBY2NlcHRzIGFsbCBvcmcgZXZlbnRzIG90aGVyIHRoYW4gdGhlIG9uZXMgbGlzdGVkICovXG4gICAgICAgICAgQWxsRXhjZXB0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RGlzY3JpbWluYW50c1wiXVtdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPbmx5IGFjY2VwdHMgb3JnIGV2ZW50cyB0aGF0IGFyZSBvbmUgb2YgdGhlIGxpc3RlZCBldmVudHMgKi9cbiAgICAgICAgICBPbmVPZjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERpc2NyaW1pbmFudHNcIl1bXTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3JnLWV4cG9ydCBjaXBoZXJ0ZXh0IHJldHJpZXZlZCB2aWEgdGhlIG9yZy1leHBvcnQgQVBJLiAqL1xuICAgIE9yZ0V4cG9ydFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgYmFzZTY0LWVuY29kZWQgZXhwb3J0IGNpcGhlcnRleHQuICovXG4gICAgICBjaXBoZXJ0ZXh0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBPcmdJbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVpcmVtZW50c1wiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgICAgYWNjZXNzX21vZGVsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2Vzc01vZGVsXCJdO1xuICAgICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgICAgZGVmYXVsdF9pbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXTtcbiAgICAgICAgZW1haWxfcHJlZmVyZW5jZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsUHJlZmVyZW5jZXNcIl07XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSwgYWxsIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBpbnZvbHZpbmcga2V5cyBpbiB0aGlzIG9yZyBhcmUgZGlzYWJsZWQuICovXG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIGV4dF9kYXRhPzpcbiAgICAgICAgICB8ICh7XG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgKiBUaGlzIHNldHRpbmcgaXMgY2hlY2tlZCBvbmx5IHdoZW4gYW4gYWxpZW4gdXNlciByZXF1ZXN0cyB0byBjcmVhdGUgb3IgaW1wb3J0IGEgbmV3IGtleS5cbiAgICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBhbGllbl9rZXlfY291bnRfdGhyZXNob2xkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICAgIGNyZWF0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgICAgICAgICBsYXN0X21vZGlmaWVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFZlcnNpb24gb2YgdGhpcyBvYmplY3RcbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIHZlcnNpb24/OiBudW1iZXI7XG4gICAgICAgICAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+KVxuICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgaGlzdG9yaWNhbF9kYXRhX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxEYXRhQ29uZmlndXJhdGlvblwiXTtcbiAgICAgICAgaWRwX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkcENvbmZpZ1wiXTtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkOiB0aGlzIGZpZWxkIHNob3VsZCBiZSBpZ25vcmVkLiAqL1xuICAgICAgICBrZXlfaW1wb3J0X2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIHVuaXZlcnNhbGx5IHVuaXF1ZSBrZXktd3JhcHBpbmcta2V5IGlkZW50aWZpZXIuXG4gICAgICAgICAqIFRoaXMgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBzZXR0aW5nIHVwIGtleSBleHBvcnQuXG4gICAgICAgICAqIEBleGFtcGxlIG1yay1mY2UwOTUyNWU4MTU4N2QyMzUyMGYxMWUwN2UyZTlkOVxuICAgICAgICAgKi9cbiAgICAgICAga3drX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZS90aW1lIChpbiBVVEMpIHdoZW4gbGFzdCAndW5zdGFrZScgd2FzIHBlcmZvcm1lZC4gVW5peCBlcG9jaCBpZiBub25lLlxuICAgICAgICAgKiBAZXhhbXBsZSBUT0RPXG4gICAgICAgICAqL1xuICAgICAgICBsYXN0X3Vuc3Rha2U6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55ICd1bnN0YWtlJyBjYWxscyBoYXBwZW5lZCBvbiB0aGUgZGF5IHdoZW4gYGxhc3RfdW5zdGFrZWAgd2FzIHBlcmZvcm1lZC5cbiAgICAgICAgICovXG4gICAgICAgIGxhc3RfdW5zdGFrZV9kYXlfY291bnQ6IG51bWJlcjtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG1ldHJpY3MgYXJlIGNvbGxlY3RlZCBmb3IgdGhpcyBvcmcgKi9cbiAgICAgICAgbWV0cmljc19lbmFibGVkPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIG5vdGlmaWNhdGlvbiBlbmRwb2ludHMsIHdoaWNoIGFyZSBIVFRQUyBVUkxzIGFyZSBub3RpZmllZCBhYm91dCBhXG4gICAgICAgICAqIGNvbmZpZ3VyYWJsZSBzZXQgb2YgZXZlbnRzIGluIGFuIG9yZ2FuaXphdGlvbi4gRm9yIGVhY2ggZXZlbnQsIEN1YmVTaWduZXIgc2VuZHMgYSBQT1NUXG4gICAgICAgICAqIHJlcXVlc3Qgd2l0aCBhIEpTT04tZm9ybWF0dGVkIGJvZHkgdGhhdCBjb250YWlucyB0aGUgZXZlbnQgZGV0YWlscy5cbiAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgKiAgIHtcbiAgICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDFcIixcbiAgICAgICAgICogICAgIFwiY29uZmlnXCI6IHtcbiAgICAgICAgICogICAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MVwiXG4gICAgICAgICAqICAgICB9LFxuICAgICAgICAgKiAgICAgXCJzdGF0dXNcIjogXCJDb25maXJtZWRcIlxuICAgICAgICAgKiAgIH0sXG4gICAgICAgICAqICAge1xuICAgICAgICAgKiAgICAgXCJhcm5cIjogXCJhcm46YXdzOnNuczp1cy1lYXN0LTE6MDEyMzQ1Njc4OTAxOk9yZ0V2ZW50c1RvcGljOjEyMzQ1Njc4LTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMlwiLFxuICAgICAgICAgKiAgICAgXCJjb25maWdcIjoge1xuICAgICAgICAgKiAgICAgICBcImZpbHRlclwiOiB7XG4gICAgICAgICAqICAgICAgICAgXCJPbmVPZlwiOiBbXG4gICAgICAgICAqICAgICAgICAgICBcIkV0aDJDb25jdXJyZW50QXR0ZXN0YXRpb25TaWduaW5nXCIsXG4gICAgICAgICAqICAgICAgICAgICBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCJcbiAgICAgICAgICogICAgICAgICBdXG4gICAgICAgICAqICAgICAgIH0sXG4gICAgICAgICAqICAgICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDJcIlxuICAgICAgICAgKiAgICAgfSxcbiAgICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiUGVuZGluZ1wiXG4gICAgICAgICAqICAgfVxuICAgICAgICAgKiBdXG4gICAgICAgICAqL1xuICAgICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludFwiXVtdO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICBwYXNza2V5X2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlDb25maWdcIl07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgcG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgYSBrZXkgaXMgdXNlZCBmb3Igc2lnbmluZ1xuICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAqICAge1xuICAgICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICAgKiAgIH1cbiAgICAgICAgICogXVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgIHBvbGljeV9lbmdpbmVfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5RW5naW5lQ29uZmlndXJhdGlvblwiXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBHbG9iYWwgc2lnbiBwb2xpY3kgdGhhdCBhcHBsaWVzIHRvIGV2ZXJ5IHNpZ24gb3BlcmF0aW9uIChldmVyeSBrZXksIGV2ZXJ5IHJvbGUpIGluIHRoZSBvcmdcbiAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgKiAgIHtcbiAgICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICAgICAqICAgfVxuICAgICAgICAgKiBdXG4gICAgICAgICAqL1xuICAgICAgICBzaWduX3BvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIFRPVFAgZmFpbHVyZSBsaW1pdCwgaS5lLiwgdGhlIG51bWJlclxuICAgICAgICAgKiBvZiB0aW1lcyBhIHVzZXIgY2FuIHByb3ZpZGUgYW4gaW5jb3JyZWN0IFRPVFAgY29kZSBiZWZvcmUgYmVpbmcgcmF0ZSBsaW1pdGVkLlxuICAgICAgICAgKiBUaGlzIHZhbHVlIGNhbiBiZSBiZXR3ZWVuIDEgYW5kIDUgKGluY2x1c2l2ZSkuXG4gICAgICAgICAqL1xuICAgICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIG1pbmltdW1cbiAgICAgICAgICogYW1vdW50IG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiBhIHVzZXItZXhwb3J0IGlzIGluaXRpYXRlZCBhbmQgd2hlblxuICAgICAgICAgKiBpdCBtYXkgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZSBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZVxuICAgICAgICAgKiBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9leHBvcnRfZGVsYXk6IG51bWJlcjtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHVzZXIgZXhwb3J0IGlzIGRpc2FibGVkICovXG4gICAgICAgIHVzZXJfZXhwb3J0X2Rpc2FibGVkPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnRcbiAgICAgICAgICogb2YgdGltZSAoaW4gc2Vjb25kcykgYmV0d2VlbiB3aGVuIHRoZSB1c2VyLWV4cG9ydCBkZWxheSBpcyBjb21wbGV0ZWQgYW5kIHdoZW5cbiAgICAgICAgICogdGhlIHVzZXIgZXhwb3J0IHJlcXVlc3QgaGFzIGV4cGlyZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZVxuICAgICAgICAgKiBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZSBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9leHBvcnRfd2luZG93OiBudW1iZXI7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgb2ZmaWNpYWwgd2ViYXBwIG9yaWdpbiBpcyBhdXRvbWF0aWNhbGx5IGFsbG93ZWQgKi9cbiAgICAgICAgd2ViYXBwX2VuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBvcmcgbWV0cmljcy4gKi9cbiAgICBPcmdNZXRyaWM6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgQmlsbGluZ0V2ZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdEaW1lbnNpb25zXCJdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgT2lkY0xvZ2luRXZlbnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luRGltZW5zaW9uc1wiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFNpZ25FdmVudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduRGltZW5zaW9uc1wiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFVzZXJDb3VudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyQ291bnREaW1lbnNpb25zXCJdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgS2V5Q291bnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5Q291bnREaW1lbnNpb25zXCJdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgT3JnTWV0cmljRGF0YToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGF0YSBwb2ludHMsIG9uZSBmb3IgZWFjaCB0aW1lIHBlcmlvZCAodGltZSBwZXJpb2RzIGZvciB3aGljaCB0aGUgdmFsdWUgaXMgMCBhcmUgb21pdHRlZCkuICovXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgIH07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXRyaWMgZGltZW5zaW9ucy4gKi9cbiAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRvLWdlbmVyYXRlZCBkaXNjcmltaW5hbnQgZW51bSB2YXJpYW50c1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnTWV0cmljRGlzY3JpbWluYW50czpcbiAgICAgIHwgXCJCaWxsaW5nRXZlbnRcIlxuICAgICAgfCBcIk9pZGNMb2dpbkV2ZW50XCJcbiAgICAgIHwgXCJTaWduRXZlbnRcIlxuICAgICAgfCBcIlVzZXJDb3VudFwiXG4gICAgICB8IFwiS2V5Q291bnRcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIHN0YXRpc3RpY3MgdG8gY29tcHV0ZVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgT3JnTWV0cmljU3RhdDogXCJTdW1cIiB8IFwiQXZlcmFnZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT1MgaW5mb3JtYXRpb24gc2V0IGluIFtgQ2xpZW50U2Vzc2lvbk1ldGFkYXRhYF0gYW5kIHJlZmxlY3RlZCBpbiBbYFNlc3Npb25NZXRhZGF0YWBdICovXG4gICAgT3NJbmZvOiB7XG4gICAgICAvKiogQGV4YW1wbGUgYXJtNjQgKi9cbiAgICAgIGFyY2hpdGVjdHVyZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGV4YW1wbGUgTWFjIE9TICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZXhhbXBsZSAxNC41LjAgKi9cbiAgICAgIHZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBleGFtcGxlIDY0LWJpdCAqL1xuICAgICAgd29yZF9zaXplPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcm9ja2V0IHF1ZXJ5IHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIHBhZ2UgZnJvbSB3aGljaCB0byBzdGFydCBhIHBhZ2luYXRlZCBxdWVyeS5cbiAgICAgKlxuICAgICAqIE1VU1QgYmUgbmFtZWQgYDxwYWdlPmAgaW4gcm9ja2V0IHVybCBzcGVjIHNvIHRoYXQgJ3NlcmRlKHJlbmFtZSA9IFwicGFnZS4qXCIpJyBiZWxvdyBjb250aW51ZXMgdG8gd29ya1xuICAgICAqL1xuICAgIFBhZ2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAqL1xuICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICovXG4gICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZEF1ZGl0TG9nUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXVkaXQgbG9nIGVudHJpZXMgKi9cbiAgICAgIGVudHJpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkaXRMb2dFbnRyeVwiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRHZXRVc2Vyc0luT3JnUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2YgdXNlcnMgaW4gdGhlIG9yZyAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0QnVja2V0c1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBidWNrZXRzIGluIHRoZSBvcmdhbml6YXRpb24uICovXG4gICAgICBidWNrZXRzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ1Y2tldEluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdENvbnRhY3RzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBsaXN0IG9mIGNvbnRhY3RzIGluIHRoZSBvcmdhbml6YXRpb24sIG1hdGNoaW5nIGFueSBwcm92aWRlZCBxdWVyaWVzLiAqL1xuICAgICAgY29udGFjdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdEluZm9SZXNwb25zZVwiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0SGlzdG9yaWNhbFR4UmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSGlzdG9yaWNhbCB0cmFuc2FjdGlvbnMgc2lnbmVkIHdpdGggdGhlIHJlcXVlc3RlZCBrZXksIHNvcnRlZCBmcm9tIG1vc3QgdG8gbGVhc3QgcmVjZW50LiAqL1xuICAgICAgdHhzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhpc3RvcmljYWxUeFwiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0SW52aXRhdGlvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBQZW5kaW5nIGludml0YXRpb25zICovXG4gICAgICBpbnZpdGF0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZpdGF0aW9uSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgdGhlIGtleSBpcyBpbiAqL1xuICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlOiB7XG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFBvbGljaWVzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9yZydzIG5hbWVkIHBvbGljaWVzLiAqL1xuICAgICAgcG9saWNpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5SW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwga2V5cyBpbiBhIHJvbGUgKi9cbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZVVzZXJzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHVzZXJzIGluIGEgcm9sZSAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIGluIGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZFBvbGljeUxvZ3NSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IGV4ZWN1dGlvbiBsb2dzICovXG4gICAgICBsb2dzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgIH1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkUXVlcnlNZXRyaWNzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWR2aXNvcnkgbWVzc2FnZXMgKGUuZy4sIGlmIG1heCBudW1iZXIgb2YgcmVzdWx0cyBpcyByZWFjaGVkKS4gKi9cbiAgICAgIG1lc3NhZ2VzPzogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGVyaW9kIGZvciB3aGljaCB0aGUgc3RhdGlzdGljIGlzIGNvbXB1dGVkLCBpZiBhbnkgKG5vdCBhbGwgbWV0cmljcyBzdXBwb3J0IHNwbGl0dGluZyB0aGUgcmVxdWVzdGVkIHRpbWUgcmFuZ2UgaW50byBiaW5zKS5cbiAgICAgICAqIElmIHNldCwgZXF1YWxzIHRvIHRoZSB2YWx1ZSBmcm9tIHRoZSByZXF1ZXN0IHJvdW5kZWQgdXAgdG8gdGhlIGNsb3Nlc3QgbXVsdGlwbGUgb2YgNjAuXG4gICAgICAgKi9cbiAgICAgIHBlcmlvZD86IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU29tZSBtZXRyaWNzIGNhbiBvcHRpb25hbGx5IHJldHVybiB0aGUgcmF3IGRhdGEsIHdoZW4gcmVxdWVzdGVkLiAqL1xuICAgICAgcmF3X2RhdGE6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgfVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDb21wdXRlZCBkYXRhIHBvaW50cy4gKi9cbiAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGF0YSBwb2ludHMsIG9uZSBmb3IgZWFjaCB0aW1lIHBlcmlvZCAodGltZSBwZXJpb2RzIGZvciB3aGljaCB0aGUgdmFsdWUgaXMgMCBhcmUgb21pdHRlZCkuICovXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1ldHJpYyBkaW1lbnNpb25zLiAqL1xuICAgICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfVtdO1xuICAgICAgc3RhdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnTWV0cmljU3RhdFwiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZFVzZXJFeHBvcnRMaXN0UmVzcG9uc2U6IHtcbiAgICAgIGV4cG9ydF9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gYW5zd2VyIGEgZmlkbyBjaGFsbGVuZ2UgKi9cbiAgICBQYXNza2V5QXNzZXJ0QW5zd2VyOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlIHRoYXQgd2FzIHJldHVybmVkIGZyb20gdGhlIFBPU1QgZW5kcG9pbnQgKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgY3JlZGVudGlhbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsXCJdO1xuICAgIH07XG4gICAgUGFzc2tleUFzc2VydENoYWxsZW5nZTogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG4gICAgfSkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnLWxldmVsIHBhc3NrZXkgY29uZmlndXJhdGlvbiAqL1xuICAgIFBhc3NrZXlDb25maWc6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRW5hYmxlIHBhc3NrZXkgbG9naW4gZm9yIGNlcnRhaW4gdXNlciByb2xlcyAoZGlzYWJsZWQgZm9yIGV2ZXJ5b25lIGJ5IGRlZmF1bHQpICovXG4gICAgICB1c2Vycz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdO1xuICAgIH07XG4gICAgUGFzc3dvcmRSZXNldENvbmZpcm1SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgcGFzc3dvcmQgdG8gc2V0LiAqL1xuICAgICAgbmV3X3Bhc3N3b3JkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJbnZpdGF0aW9uIHRva2VuLCBjb25zdHJ1Y3RlZCBieSBjb25jYXRlbmF0aW5nIHRoZSBcInBhcnRpYWwgdG9rZW5cIlxuICAgICAgICogKGkuZS4sIGB7aGVhZGVyfS57cGF5bG9hZH0uYCkgcmV0dXJuZWQgYnkgdGhlIGBpZHBfcGFzc3dvcmRfcmVzZXRfcmVxdWVzdGAgZW5kcG9pbnRcbiAgICAgICAqIGFuZCB0aGUgc2lnbmF0dXJlIHNlbnQgdG8gdGhlIHVzZXIncyBlbWFpbC5cbiAgICAgICAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlcXVlc3QgYm9keSBmb3IgdGhlIGlkcCBwYXNzd29yZCByZXNldCBlbmRwb2ludCAqL1xuICAgIFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgdXNlciByZXF1ZXN0aW5nIHRvIHJlc2V0IHRoZWlyIHBhc3N3b3JkXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCBhbiBleGlzdGluZyBNTUkgcmVxdWVzdC4gKi9cbiAgICBQZW5kaW5nTWVzc2FnZUluZm86IHtcbiAgICAgIG1ldGFkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taU1ldGFkYXRhXCJdO1xuICAgICAgc2lnbmVkTWVzc2FnZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVkTWVzc2FnZVwiXSB8IG51bGw7XG4gICAgICB0cmFuc2FjdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHJhbnNhY3Rpb25BbmRTdGF0dXNcIl0gfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICBjcmVhdGVkX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBleHBpcmVzX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcGVuZGluZyBtZXNzYWdlICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWRlbnRpdHkgKGEgdXNlciBvciBhIHJvbGUgaWQpIHdoaWNoIGNyZWF0ZWQgdGhpcyBtZXNzYWdlLiAqL1xuICAgICAgaWRlbnRpdHk6IHN0cmluZztcbiAgICAgIG1lc3NhZ2VfZWlwMTkxPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAqIEBleGFtcGxlIDB4MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAgICAgKi9cbiAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIChpbmNsdWRpbmcgYSAnMHgnIHByZWZpeCkgbWVzc2FnZSB0byBzaWduLiAqL1xuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICB9IHwgbnVsbDtcbiAgICAgIG1lc3NhZ2VfZWlwNzEyPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAqIEBleGFtcGxlIDB4MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAgICAgKi9cbiAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICBkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkRGF0YVwiXTtcbiAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgIHZlcnNpb246IFwidjNcIiB8IFwidjRcIjtcbiAgICAgIH0gfCBudWxsO1xuICAgICAgbWVzc2FnZV90eD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWRUcmFuc2FjdGlvblwiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IGFuIGV4aXN0aW5nIE1NSSBtZXNzYWdlLCBpbmNsdWRpbmcgdGhlIHNpZ25hdHVyZS4gKi9cbiAgICBQZW5kaW5nTWVzc2FnZVNpZ25SZXNwb25zZTogKHtcbiAgICAgIG1ldGFkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taU1ldGFkYXRhXCJdO1xuICAgICAgc2lnbmVkTWVzc2FnZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVkTWVzc2FnZVwiXSB8IG51bGw7XG4gICAgICB0cmFuc2FjdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHJhbnNhY3Rpb25BbmRTdGF0dXNcIl0gfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICBjcmVhdGVkX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBleHBpcmVzX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcGVuZGluZyBtZXNzYWdlICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWRlbnRpdHkgKGEgdXNlciBvciBhIHJvbGUgaWQpIHdoaWNoIGNyZWF0ZWQgdGhpcyBtZXNzYWdlLiAqL1xuICAgICAgaWRlbnRpdHk6IHN0cmluZztcbiAgICAgIG1lc3NhZ2VfZWlwMTkxPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAqIEBleGFtcGxlIDB4MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAgICAgKi9cbiAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIChpbmNsdWRpbmcgYSAnMHgnIHByZWZpeCkgbWVzc2FnZSB0byBzaWduLiAqL1xuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICB9IHwgbnVsbDtcbiAgICAgIG1lc3NhZ2VfZWlwNzEyPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAqIEBleGFtcGxlIDB4MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAgICAgKi9cbiAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICBkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkRGF0YVwiXTtcbiAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgIHZlcnNpb246IFwidjNcIiB8IFwidjRcIjtcbiAgICAgIH0gfCBudWxsO1xuICAgICAgbWVzc2FnZV90eD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWRUcmFuc2FjdGlvblwiXSB8IG51bGw7XG4gICAgfSkgJlxuICAgICAgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzLWNvbnRyb2xsZWQgYWN0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gYSBuYW1lZCBwb2xpY3kuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBQb2xpY3lBY3Rpb246XG4gICAgICB8IFwicmVhZDoqXCJcbiAgICAgIHwgXCJyZWFkXCJcbiAgICAgIHwgXCJyZWFkOnBvbGljeVwiXG4gICAgICB8IFwicmVhZDpsb2dzXCJcbiAgICAgIHwgXCJ1cGRhdGU6KlwiXG4gICAgICB8IFwidXBkYXRlXCJcbiAgICAgIHwgXCJ1cGRhdGU6bmFtZVwiXG4gICAgICB8IFwidXBkYXRlOnJ1bGVzXCJcbiAgICAgIHwgXCJ1cGRhdGU6bWV0YWRhdGFcIlxuICAgICAgfCBcInVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJ1cGRhdGU6b3duZXJcIlxuICAgICAgfCBcInVwZGF0ZTphY2xcIlxuICAgICAgfCBcImRlbGV0ZVwiXG4gICAgICB8IFwiYXR0YWNoXCJcbiAgICAgIHwgXCJzaWduXCJcbiAgICAgIHwgXCJpbnZva2VcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBmb3IgYXR0YWNoaW5nIGEgbmFtZWQgcG9saWN5IHRvIGEga2V5LCByb2xlLCBvciBrZXkgaW4gcm9sZS4gKi9cbiAgICBQb2xpY3lBdHRhY2hlZFRvSWQ6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5IGluIHRoZSByb2xlIHRoZSBwb2xpY3kgc2hvdWxkIGJlIGF0dGFjaGVkIHRvLlxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSByb2xlIHRoZSBrZXkgaXMgaW4uXG4gICAgICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXkgdGhlIHBvbGljeSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgcm9sZSB0aGUgcG9saWN5IHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG9yZyB0aGUgcG9saWN5IHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjYjAxNTZhYmQtNTNiZC00MDQzLThlNTUtNTdmN2FmOTUxMmQ1XG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc3RydWN0IGNvbnRhaW5pbmcgT3JnLWxldmVsIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgd29ya2luZ3Mgb2YgdGhlIFBvbGljeSBFbmdpbmUuICovXG4gICAgUG9saWN5RW5naW5lQ29uZmlndXJhdGlvbjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWxsb3dlZCBkb21haW5zIGZvciBIVFRQIHJlcXVlc3RzXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiY3ViaXN0LmRldjo0NDNcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBhbGxvd2VkX2h0dHBfYXV0aG9yaXRpZXM6IHN0cmluZ1tdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcG9saWN5IHNlY3JldHMgZm9yIHRoZSBPcmcuICovXG4gICAgICBvcmdfc2VjcmV0c19saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgfTtcbiAgICBQb2xpY3lFcnJvckNvZGU6XG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5RXJyb3JPd25Db2Rlc1wiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bVR4RGVwb3NpdEVycm9yQ29kZVwiXTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBQb2xpY3lFcnJvck93bkNvZGVzOlxuICAgICAgfCBcIkluYXBwbGljYWJsZVwiXG4gICAgICB8IFwiU3VpVHhSZWNlaXZlcnNEaXNhbGxvd2VkVHJhbnNhY3Rpb25LaW5kXCJcbiAgICAgIHwgXCJTdWlUeFJlY2VpdmVyc0Rpc2FsbG93ZWRUcmFuc2ZlckFkZHJlc3NcIlxuICAgICAgfCBcIlN1aVR4UmVjZWl2ZXJzRGlzYWxsb3dlZENvbW1hbmRcIlxuICAgICAgfCBcIkJ0Y1R4RGlzYWxsb3dlZE91dHB1dHNcIlxuICAgICAgfCBcIkJ0Y1NpZ25hdHVyZUV4Y2VlZGVkVmFsdWVcIlxuICAgICAgfCBcIkJ0Y1ZhbHVlT3ZlcmZsb3dcIlxuICAgICAgfCBcIkJ0Y1NpZ2hhc2hUeXBlRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiRXZtVHhSZWNlaXZlck1pc21hdGNoXCJcbiAgICAgIHwgXCJFdm1UeENoYWluSWRNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhTZW5kZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhFeGNlZWRlZFZhbHVlXCJcbiAgICAgIHwgXCJFdm1UeEV4Y2VlZGVkR2FzQ29zdFwiXG4gICAgICB8IFwiRXZtVHhHYXNDb3N0VW5kZWZpbmVkXCJcbiAgICAgIHwgXCJFdm1EYXRhRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiRXJjMjBEYXRhSW52YWxpZFwiXG4gICAgICB8IFwiRXZtQ29udHJhY3RBZGRyZXNzVW5kZWZpbmVkXCJcbiAgICAgIHwgXCJFdm1Db250cmFjdENoYWluSWRVbmRlZmluZWRcIlxuICAgICAgfCBcIkV2bURhdGFOb3REZWZpbmVkXCJcbiAgICAgIHwgXCJFdm1EYXRhSW52YWxpZFwiXG4gICAgICB8IFwiRXZtQ29udHJhY3ROb3RJbkFsbG93bGlzdFwiXG4gICAgICB8IFwiRXJjMjBFeGNlZWRlZFRyYW5zZmVyTGltaXRcIlxuICAgICAgfCBcIkVyYzIwUmVjZWl2ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXJjMjBFeGNlZWRlZEFwcHJvdmVMaW1pdFwiXG4gICAgICB8IFwiRXJjMjBTcGVuZGVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bUZ1bmN0aW9uTm90SW5BbGxvd2xpc3RcIlxuICAgICAgfCBcIkV2bUZ1bmN0aW9uQ2FsbEludmFsaWRcIlxuICAgICAgfCBcIkV2bUZ1bmN0aW9uQ2FsbERpc2FsbG93ZWRBcmdcIlxuICAgICAgfCBcIlBvbGljeURpc2p1bmN0aW9uRXJyb3JcIlxuICAgICAgfCBcIlBvbGljeU5lZ2F0aW9uRXJyb3JcIlxuICAgICAgfCBcIkV0aDJFeGNlZWRlZE1heFVuc3Rha2VcIlxuICAgICAgfCBcIkV0aDJDb25jdXJyZW50VW5zdGFraW5nXCJcbiAgICAgIHwgXCJOb3RJbklwdjRBbGxvd2xpc3RcIlxuICAgICAgfCBcIk5vdEluT3JpZ2luQWxsb3dsaXN0XCJcbiAgICAgIHwgXCJOb3RJbk9wZXJhdGlvbkFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZFNvdXJjZUlwXCJcbiAgICAgIHwgXCJSYXdTaWduaW5nTm90QWxsb3dlZFwiXG4gICAgICB8IFwiRGlmZmllSGVsbG1hbkV4Y2hhbmdlTm90QWxsb3dlZFwiXG4gICAgICB8IFwiRWlwNzEyU2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIk9pZGNTb3VyY2VOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJOb09pZGNBdXRoU291cmNlc0RlZmluZWRcIlxuICAgICAgfCBcIkFkZEtleVRvUm9sZURpc2FsbG93ZWRcIlxuICAgICAgfCBcIktleXNBbHJlYWR5SW5Sb2xlXCJcbiAgICAgIHwgXCJLZXlJbk11bHRpcGxlUm9sZXNcIlxuICAgICAgfCBcIktleUFjY2Vzc0Vycm9yXCJcbiAgICAgIHwgXCJSZXF1aXJlUm9sZVNlc3Npb25LZXlBY2Nlc3NFcnJvclwiXG4gICAgICB8IFwiQnRjTWVzc2FnZVNpZ25pbmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJFaXAxOTFTaWduaW5nTm90QWxsb3dlZFwiXG4gICAgICB8IFwiVGFwcm9vdFNpZ25pbmdEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJTZWd3aXRTaWduaW5nRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiUHNidFNpZ25pbmdEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ0Rpc2FsbG93ZWRcIlxuICAgICAgfCBcIlRpbWVMb2NrZWRcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nTmV0d29ya1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdQYXJhbXNWZXJzaW9uXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ0V4cGxpY2l0UGFyYW1zXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ1N0YWtlclBrXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ0ZpbmFsaXR5UHJvdmlkZXJQa1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdMb2NrVGltZVwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdWYWx1ZVwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdDaGFuZ2VBZGRyZXNzXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ0ZlZVwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdXaXRoZHJhd2FsQWRkcmVzc1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdCYm5BZGRyZXNzXCJcbiAgICAgIHwgXCJTb2xhbmFJbnN0cnVjdGlvbkNvdW50TG93XCJcbiAgICAgIHwgXCJTb2xhbmFJbnN0cnVjdGlvbkNvdW50SGlnaFwiXG4gICAgICB8IFwiU29sYW5hTm90SW5JbnN0cnVjdGlvbkFsbG93bGlzdFwiXG4gICAgICB8IFwiU29sYW5hSW5zdHJ1Y3Rpb25NaXNtYXRjaFwiXG4gICAgICB8IFwiV2FzbVBvbGljaWVzRGlzYWJsZWRcIlxuICAgICAgfCBcIldhc21Qb2xpY3lEZW5pZWRcIlxuICAgICAgfCBcIldhc21Qb2xpY3lGYWlsZWRcIlxuICAgICAgfCBcIldlYmhvb2tQb2xpY2llc0Rpc2FibGVkXCJcbiAgICAgIHwgXCJEZW5pZWRCeVdlYmhvb2tcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc3RydWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIHZlcnNpb24gb2YgYSBwb2xpY3kuICovXG4gICAgUG9saWN5SW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzLWNvbnRyb2wgZW50cmllcyBmb3IgdGhlIHBvbGljeS4gKi9cbiAgICAgIGFjbD86IHVua25vd25bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiBlbnRpdGllcyAoa2V5cywgcm9sZXMsIGV0Yy4pIHRoZSBwb2xpY3kgaXMgYXR0YWNoZWQgdG8uICovXG4gICAgICBhdHRhY2hlZF90bzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lBdHRhY2hlZFRvSWRcIl1bXTtcbiAgICAgIGNyZWF0ZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVc2VyLWRlZmluZWQgbWV0YWRhdGEgZm9yIHRoZSBuYW1lZCBwb2xpY3kuICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBwb2xpY3kuICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBvd25lcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBpZCAqL1xuICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgICBwb2xpY3lfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lUeXBlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IHJ1bGUuICovXG4gICAgICBydWxlczogdW5rbm93bltdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBydWxlJ3MgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgZm9yIHF1ZXJ5aW5nIFdhc20gcG9saWN5IGxvZ3MuICovXG4gICAgUG9saWN5TG9nc1JlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEVuZCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gJ25vdycuXG4gICAgICAgKi9cbiAgICAgIGVuZF90aW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFN0YXJ0IHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byAyNCBob3VycyBhZ28uXG4gICAgICAgKi9cbiAgICAgIHN0YXJ0X3RpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZlcnNpb24gb2YgdGhlIHBvbGljeSB0byBnZXQgdGhlIGxvZ3MgZm9yLlxuICAgICAgICogSWYgb21pdHRlZCwgYWxsIHBvbGljeSBsb2dzIGFyZSByZXRyaWV2ZWQuXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBvbGljeVJlc3VsdFJlc3BvbnNlIGlzIGEgd3JhcHBlciBvbiBQb2xpY3lSZXN1bHQgd2l0aCB0d28gaW1wb3J0YW50XG4gICAgICogcHJvcGVydGllczpcbiAgICAgKiAqIGRlcml2ZXMgT2tUb0xvZ1Jlc3BvbnNlLCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIHRoZSByb2NrZXQgaGFuZGxlci5cbiAgICAgKiAqIGRlcml2ZXMgVG9TY2hlbWEgYW5kIFRvUmVzcG9uc2UsIHdpdGggdGhlIGB2YWxgIGZpZWxkIHdpdGggdmFsdWVfdHlwZVxuICAgICAqIE9iamVjdCwgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHByb3ZpZGUgYWxsIG9mIHRoZSBPcGVuQVBJIHR5cGVcbiAgICAgKiBkZXNjcmlwdGlvbnMgb2YgYSBQb2xpY3lSZXN1bHQuXG4gICAgICpcbiAgICAgKiBUaGUgUG9saWN5UmVzdWx0IGluY2x1ZGVzIGVudW1zIGFuZCBvdGhlciBzdGFuZGFyZCB0eXBlcyAoZS5nLlxuICAgICAqIHN0ZDo6dGltZTo6SW50ZXJ2YWwpIHdoaWNoIGFyZSBub250cml2aWFsIHRvIHJlcHJlc2VudCBpbiBPcGVuQVBJLiBTaW5jZVxuICAgICAqIHRoaXMgZW5kcG9pbnQgaXMganVzdCBmb3IgdGVzdGluZywgd2UgZG9uJ3QgcmVhbGx5IGNhcmUgYWJvdXQgaG93IGFjY3VyYXRlXG4gICAgICogdGhlIHNjaGVtYSBpcywgYW5kIGNhbiBsZWFuIG9uIHNlcmRlX2pzb24gd2hlbiBkZWNvZGluZyB0aGlzIHJlc3BvbnNlIHRvIGFcbiAgICAgKiBQb2xpY3lSZXN1bHQgaW4gYSBjbGllbnQuIE5vdGUgdGhhdCB0aGVyZSBpcyBhIGJ1ZyBpbiB1dG9pcGEgd2hlcmUgdGhlXG4gICAgICogdmFsdWVfdHlwZSBhbm5vdGF0aW9uIHdpbGwgbm90IHdvcmsgZm9yIGEgdHVwbGUtc3RydWN0LCBvbmx5IGEgc3RydWN0IHdpdGhcbiAgICAgKiBmaWVsZHMuXG4gICAgICovXG4gICAgUG9saWN5UmVzdWx0UmVzcG9uc2U6IHtcbiAgICAgIHZhbDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIGFsbCBub24tc2VjcmV0IGluZm9ybWF0aW9uIGFib3V0IHBvbGljeSBzZWNyZXRzLiAqL1xuICAgIFBvbGljeVNlY3JldHNJbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlcHJlY2F0ZWRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZXMgb2YgdGhlIHNlY3JldHMuXG4gICAgICAgKi9cbiAgICAgIG5hbWVzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBzZWNyZXRzLiAqL1xuICAgICAgc2VjcmV0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNyZXRJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgYSBbTmFtZWRQb2xpY3ldLlxuICAgICAqXG4gICAgICogVGhlIHR5cGUgb2YgYSBwb2xpY3kgaXMgc2V0IGF0IGNyZWF0aW9uIHRpbWUsIGFuZCBpcyB1c2VkIHRvIG9mZmVyIGd1YXJhbnRlZXNcbiAgICAgKiBhYm91dCB0aGUgY3VycmVudCBhbmQgYWxsIGZ1dHVyZSB2ZXJzaW9ucyBvZiBhIFtOYW1lZFBvbGljeV0uXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBQb2xpY3lUeXBlOiBcIktleVwiIHwgXCJSb2xlXCIgfCBcIldhc21cIjtcbiAgICBQcmVjb25kaXRpb25FcnJvckNvZGU6XG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHJlY29uZGl0aW9uRXJyb3JPd25Db2Rlc1wiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVycm9yQ29kZVwiXTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBQcmVjb25kaXRpb25FcnJvck93bkNvZGVzOlxuICAgICAgfCBcIkZhaWxPbk1mYVJlcXVpcmVkXCJcbiAgICAgIHwgXCJLZXlSZWdpb25Mb2NrZWRcIlxuICAgICAgfCBcIktleVJlZ2lvbkNoYW5nZWRSZWNlbnRseVwiXG4gICAgICB8IFwiTWZhUmVnaW9uTG9ja2VkXCJcbiAgICAgIHwgXCJFdGgyUHJvcG9zZXJTbG90VG9vTG93XCJcbiAgICAgIHwgXCJFdGgyQXR0ZXN0YXRpb25Tb3VyY2VFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkF0dGVzdGF0aW9uVGFyZ2V0RXBvY2hUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFRvTm9uR2VuZXJhdGVkS2V5XCJcbiAgICAgIHwgXCJFdGgyTXVsdGlEZXBvc2l0VW5rbm93bkluaXRpYWxEZXBvc2l0XCJcbiAgICAgIHwgXCJFdGgyTXVsdGlEZXBvc2l0V2l0aGRyYXdhbEFkZHJlc3NNaXNtYXRjaFwiXG4gICAgICB8IFwiQ29uY3VycmVudFNpZ25pbmdXaGVuVGltZUxpbWl0UG9saWN5SXNEZWZpbmVkXCJcbiAgICAgIHwgXCJCYWJ5bG9uRW90c0NvbmN1cnJlbnRTaWduaW5nXCJcbiAgICAgIHwgXCJUZW5kZXJtaW50U3RhdGVFcnJvclwiXG4gICAgICB8IFwiVGVuZGVybWludENvbmN1cnJlbnRTaWduaW5nXCJcbiAgICAgIHwgXCJNZmFBcHByb3ZhbHNOb3RZZXRWYWxpZFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgb3V0cHV0cyBvZiBwcmV2aW91cyB0cmFuc2FjdGlvbnMuICovXG4gICAgUHJldk91dHB1dHM6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIGBPbmVgIHZhcmlhbnQgYWxsb3dzIHByb3Zpc2lvbiBvZiB0aGUgc2luZ2xlIHByZXZpb3VzIG91dHB1dCBuZWVkZWQuIEl0J3MgdXNlZnVsLFxuICAgICAgICAgICAqIGZvciBleGFtcGxlLCB3aGVuIG1vZGlmaWVyIGBTSUdIQVNIX0FOWU9ORUNBTlBBWWAgaXMgcHJvdmlkZWQsIG9ubHkgcHJldmlvdXMgb3V0cHV0XG4gICAgICAgICAgICogb2YgdGhlIGN1cnJlbnQgaW5wdXQgaXMgbmVlZGVkLiBUaGUgZmlyc3QgYGluZGV4YCBhcmd1bWVudCBpcyB0aGUgaW5wdXQgaW5kZXhcbiAgICAgICAgICAgKiB0aGlzIG91dHB1dCBpcyByZWZlcnJpbmcgdG8uXG4gICAgICAgICAgICovXG4gICAgICAgICAgT25lOiB7XG4gICAgICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgICAgICAgICAgdHhfb3V0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1R4T3V0XCJdO1xuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBgU0lHSEFTSF9BTllPTkVDQU5QQVlgIGlzIG5vdCBwcm92aWRlZCwgb3Igd2hlbiB0aGUgY2FsbGVyIGlzIGdpdmluZyBhbGxcbiAgICAgICAgICAgKiBwcmV2aW91cyBvdXRwdXRzIHNvIHRoZSBzYW1lIHZhcmlhYmxlIGNhbiBiZSB1c2VkIGZvciBtdWx0aXBsZSBpbnB1dHMuXG4gICAgICAgICAgICovXG4gICAgICAgICAgQWxsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1R4T3V0XCJdW107XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byBzaWduIGEgUFNCVCAqL1xuICAgIFBzYnRTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGhleC1zZXJpYWxpemVkIFBTQlQgKHZlcnNpb24gMCksIHdpdGggb3Igd2l0aG91dCBsZWFkaW5nIDB4IHByZWZpeC5cbiAgICAgICAqIFRoaXMgUFNCVCBtdXN0IGNvbnRhaW4gdGhlIHRyYW5zYWN0aW9uIGlucHV0cyBhbmQgb3V0cHV0cywgcGx1cyBhbGxcbiAgICAgICAqIGluZm9ybWF0aW9uIG5lZWRlZCB0byBzaWduIChlLmcuLCB0YXByb290IHBhdGggYW5kIGxlYWYgaW5mb3JtYXRpb24pLlxuICAgICAgICovXG4gICAgICBwc2J0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGVuIHRydWUsIHVuY29uZGl0aW9uYWxseSBzaWduIGV2ZXJ5IGlucHV0IHRvIHRoZSBQU0JUIGNvbnRyb2xsZWQgYnkgYSBzY3JpcHRcbiAgICAgICAqIHNwZW5kLiBPdGhlcndpc2UgKGZhbHNlLCB0aGUgZGVmYXVsdCksIHRoaXMgZW5kcG9pbnQgdXNlcyBhIGhldXJpc3RpYyB0byBkZWNpZGVcbiAgICAgICAqIHdoZXRoZXIgdGhlIHNjcmlwdCBjb250cm9sbGluZyBhIGdpdmVuIFVUWE8gcmVxdWlyZXMgYSBzaWduYXR1cmUgZnJvbSB0aGlzIGtleS5cbiAgICAgICAqL1xuICAgICAgc2lnbl9hbGxfc2NyaXB0cz86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHRvIGEgUFNCVCBzaWduaW5nIHJlcXVlc3QgKi9cbiAgICBQc2J0U2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFBTQlQgaW4gc3RhbmRhcmQgaGV4IHNlcmlhbGl6YXRpb24sIHdpdGhvdXQgbGVhZGluZyBcIjB4XCIuXG4gICAgICAgKiBAZXhhbXBsZSA3MDczNjI3NGZmMDEwMDVlLi4uXG4gICAgICAgKi9cbiAgICAgIHBzYnQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIHdpcmUtZW5jb2RhYmxlIGZvcm0gb2YgdGhlIFB1YmxpY0tleUNyZWRlbnRpYWwgaW50ZXJmYWNlXG4gICAgICogQ2xpZW50cyBtYXkgbmVlZCB0byBtYW51YWxseSBlbmNvZGUgaW50byB0aGlzIGZvcm1hdCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBzZXJ2ZXJcbiAgICAgKlxuICAgICAqIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIGludGVyZmFjZSBpbmhlcml0cyBmcm9tIENyZWRlbnRpYWxcbiAgICAgKiBbQ1JFREVOVElBTC1NQU5BR0VNRU5ULTFdLCBhbmQgY29udGFpbnMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBhcmUgcmV0dXJuZWQgdG9cbiAgICAgKiB0aGUgY2FsbGVyIHdoZW4gYSBuZXcgY3JlZGVudGlhbCBpcyBjcmVhdGVkLCBvciBhIG5ldyBhc3NlcnRpb24gaXNcbiAgICAgKiByZXF1ZXN0ZWQuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jaWZhY2UtcGtjcmVkZW50aWFsXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBpbnRlcm5hbCBzbG90IGNvbnRhaW5zIHRoZSByZXN1bHRzIG9mIHByb2Nlc3NpbmcgY2xpZW50IGV4dGVuc2lvbnNcbiAgICAgICAqIHJlcXVlc3RlZCBieSB0aGUgUmVseWluZyBQYXJ0eSB1cG9uIHRoZSBSZWx5aW5nIFBhcnR5J3MgaW52b2NhdGlvbiBvZlxuICAgICAgICogZWl0aGVyIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoKSBvciBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KCkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsLWNsaWVudGV4dGVuc2lvbnNyZXN1bHRzLXNsb3RcbiAgICAgICAqXG4gICAgICAgKiBJTVBMRU1FTlRBVElPTiBOT1RFOiBUaGUgdHlwZSBmb3IgdGhpcyBmaWVsZCBjb21lcyBmcm9tIHRoZSB0eXBlIG9mIGdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSB3aGljaCBhcyB0aGUgZm9sbG93aW5nIGRvYzpcbiAgICAgICAqXG4gICAgICAgKiBUaGlzIG9wZXJhdGlvbiByZXR1cm5zIHRoZSB2YWx1ZSBvZiBbW2NsaWVudEV4dGVuc2lvbnNSZXN1bHRzXV0sIHdoaWNoIGlzIGEgbWFwIGNvbnRhaW5pbmcgZXh0ZW5zaW9uIGlkZW50aWZpZXIg4oaSIGNsaWVudCBleHRlbnNpb24gb3V0cHV0IGVudHJpZXMgcHJvZHVjZWQgYnkgdGhlIGV4dGVuc2lvbuKAmXMgY2xpZW50IGV4dGVuc2lvbiBwcm9jZXNzaW5nLlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI3JlZi1mb3ItZG9tLXB1YmxpY2tleWNyZWRlbnRpYWwtZ2V0Y2xpZW50ZXh0ZW5zaW9ucmVzdWx0c1xuICAgICAgICovXG4gICAgICBjbGllbnRFeHRlbnNpb25SZXN1bHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBpbnRlcm5hbCBzbG90IGNvbnRhaW5zIHRoZSBjcmVkZW50aWFsIElELCBjaG9zZW4gYnkgdGhlXG4gICAgICAgKiBhdXRoZW50aWNhdG9yLiBUaGUgY3JlZGVudGlhbCBJRCBpcyB1c2VkIHRvIGxvb2sgdXAgY3JlZGVudGlhbHMgZm9yIHVzZSxcbiAgICAgICAqIGFuZCBpcyB0aGVyZWZvcmUgZXhwZWN0ZWQgdG8gYmUgZ2xvYmFsbHkgdW5pcXVlIHdpdGggaGlnaCBwcm9iYWJpbGl0eVxuICAgICAgICogYWNyb3NzIGFsbCBjcmVkZW50aWFscyBvZiB0aGUgc2FtZSB0eXBlLCBhY3Jvc3MgYWxsIGF1dGhlbnRpY2F0b3JzLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbC1pZGVudGlmaWVyLXNsb3RcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXV0aGVudGljYXRvcnMgcmVzcG9uZCB0byBSZWx5aW5nIFBhcnR5IHJlcXVlc3RzIGJ5IHJldHVybmluZyBhbiBvYmplY3QgZGVyaXZlZCBmcm9tIHRoZSBBdXRoZW50aWNhdG9yUmVzcG9uc2UgaW50ZXJmYWNlICovXG4gICAgICByZXNwb25zZTpcbiAgICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlXCJdXG4gICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2VcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHB1YmxpYyBrZXkgY3JlZGVudGlhbFxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3RkZWYtcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9uc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6IHtcbiAgICAgIGF0dGVzdGF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlXCJdO1xuICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGNvbnRhaW5zIGEgY2hhbGxlbmdlIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlXG4gICAgICAgKiBuZXdseSBjcmVhdGVkIGNyZWRlbnRpYWzigJlzIGF0dGVzdGF0aW9uIG9iamVjdC4gU2VlIHRoZSDCp+KArzEzLjQuM1xuICAgICAgICogQ3J5cHRvZ3JhcGhpYyBDaGFsbGVuZ2VzIHNlY3VyaXR5IGNvbnNpZGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLWNoYWxsZW5nZVxuICAgICAgICovXG4gICAgICBjaGFsbGVuZ2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGlzIGludGVuZGVkIGZvciB1c2UgYnkgUmVseWluZyBQYXJ0aWVzIHRoYXQgd2lzaCB0byBsaW1pdFxuICAgICAgICogdGhlIGNyZWF0aW9uIG9mIG11bHRpcGxlIGNyZWRlbnRpYWxzIGZvciB0aGUgc2FtZSBhY2NvdW50IG9uIGEgc2luZ2xlXG4gICAgICAgKiBhdXRoZW50aWNhdG9yLiBUaGUgY2xpZW50IGlzIHJlcXVlc3RlZCB0byByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIG5ld1xuICAgICAgICogY3JlZGVudGlhbCB3b3VsZCBiZSBjcmVhdGVkIG9uIGFuIGF1dGhlbnRpY2F0b3IgdGhhdCBhbHNvIGNvbnRhaW5zIG9uZVxuICAgICAgICogb2YgdGhlIGNyZWRlbnRpYWxzIGVudW1lcmF0ZWQgaW4gdGhpcyBwYXJhbWV0ZXIuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLWV4Y2x1ZGVjcmVkZW50aWFsc1xuICAgICAgICovXG4gICAgICBleGNsdWRlQ3JlZGVudGlhbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXCJdW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgcmVxdWVzdGluZyBhZGRpdGlvbmFsXG4gICAgICAgKiBwcm9jZXNzaW5nIGJ5IHRoZSBjbGllbnQgYW5kIGF1dGhlbnRpY2F0b3IuIEZvciBleGFtcGxlLCB0aGUgY2FsbGVyIG1heVxuICAgICAgICogcmVxdWVzdCB0aGF0IG9ubHkgYXV0aGVudGljYXRvcnMgd2l0aCBjZXJ0YWluIGNhcGFiaWxpdGllcyBiZSB1c2VkIHRvXG4gICAgICAgKiBjcmVhdGUgdGhlIGNyZWRlbnRpYWwsIG9yIHRoYXQgcGFydGljdWxhciBpbmZvcm1hdGlvbiBiZSByZXR1cm5lZCBpbiB0aGVcbiAgICAgICAqIGF0dGVzdGF0aW9uIG9iamVjdC4gU29tZSBleHRlbnNpb25zIGFyZSBkZWZpbmVkIGluIMKn4oCvOSBXZWJBdXRoblxuICAgICAgICogRXh0ZW5zaW9uczsgY29uc3VsdCB0aGUgSUFOQSBcIldlYkF1dGhuIEV4dGVuc2lvbiBJZGVudGlmaWVyc1wiIHJlZ2lzdHJ5XG4gICAgICAgKiBbSUFOQS1XZWJBdXRobi1SZWdpc3RyaWVzXSBlc3RhYmxpc2hlZCBieSBbUkZDODgwOV0gZm9yIGFuIHVwLXRvLWRhdGVcbiAgICAgICAqIGxpc3Qgb2YgcmVnaXN0ZXJlZCBXZWJBdXRobiBFeHRlbnNpb25zLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1leHRlbnNpb25zXG4gICAgICAgKi9cbiAgICAgIGV4dGVuc2lvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGVzaXJlZCBwcm9wZXJ0aWVzIG9mIHRoZVxuICAgICAgICogY3JlZGVudGlhbCB0byBiZSBjcmVhdGVkLiBUaGUgc2VxdWVuY2UgaXMgb3JkZXJlZCBmcm9tIG1vc3QgcHJlZmVycmVkIHRvXG4gICAgICAgKiBsZWFzdCBwcmVmZXJyZWQuIFRoZSBjbGllbnQgbWFrZXMgYSBiZXN0LWVmZm9ydCB0byBjcmVhdGUgdGhlIG1vc3RcbiAgICAgICAqIHByZWZlcnJlZCBjcmVkZW50aWFsIHRoYXQgaXQgY2FuLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1wdWJrZXljcmVkcGFyYW1zXG4gICAgICAgKi9cbiAgICAgIHB1YktleUNyZWRQYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnNcIl1bXTtcbiAgICAgIHJwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIHNwZWNpZmllcyBhIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdGhhdCB0aGUgY2FsbGVyIGlzXG4gICAgICAgKiB3aWxsaW5nIHRvIHdhaXQgZm9yIHRoZSBjYWxsIHRvIGNvbXBsZXRlLiBUaGlzIGlzIHRyZWF0ZWQgYXMgYSBoaW50LCBhbmRcbiAgICAgICAqIE1BWSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjbGllbnQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZGljdGlvbmFyeSBjb250YWlucyB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSBzcGVjaWZpZWQgYnkgYSBjYWxsZXIgd2hlblxuICAgICAqIHJlZmVycmluZyB0byBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBhcyBhbiBpbnB1dCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZSgpXG4gICAgICogb3IgZ2V0KCkgbWV0aG9kcy4gSXQgbWlycm9ycyB0aGUgZmllbGRzIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIG9iamVjdFxuICAgICAqIHJldHVybmVkIGJ5IHRoZSBsYXR0ZXIgbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0aW9uYXJ5LWNyZWRlbnRpYWwtZGVzY3JpcHRvclxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyB0aGUgY3JlZGVudGlhbCBJRCBvZiB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsIHRoZSBjYWxsZXIgaXMgcmVmZXJyaW5nIHRvLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGRlc2NyaXB0b3ItaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIGNvbnRhaW5zIGEgaGludCBhcyB0byBob3cgdGhlIGNsaWVudCBtaWdodFxuICAgICAgICogY29tbXVuaWNhdGUgd2l0aCB0aGUgbWFuYWdpbmcgYXV0aGVudGljYXRvciBvZiB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsXG4gICAgICAgKiB0aGUgY2FsbGVyIGlzIHJlZmVycmluZyB0by4gVGhlIHZhbHVlcyBTSE9VTEQgYmUgbWVtYmVycyBvZlxuICAgICAgICogQXV0aGVudGljYXRvclRyYW5zcG9ydCBidXQgY2xpZW50IHBsYXRmb3JtcyBNVVNUIGlnbm9yZSB1bmtub3duIHZhbHVlcy5cbiAgICAgICAqXG4gICAgICAgKiBUaGUgZ2V0VHJhbnNwb3J0cygpIG9wZXJhdGlvbiBjYW4gcHJvdmlkZSBzdWl0YWJsZSB2YWx1ZXMgZm9yIHRoaXNcbiAgICAgICAqIG1lbWJlci4gV2hlbiByZWdpc3RlcmluZyBhIG5ldyBjcmVkZW50aWFsLCB0aGUgUmVseWluZyBQYXJ0eSBTSE9VTERcbiAgICAgICAqIHN0b3JlIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGdldFRyYW5zcG9ydHMoKS4gV2hlbiBjcmVhdGluZyBhXG4gICAgICAgKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciBmb3IgdGhhdCBjcmVkZW50aWFsLCB0aGUgUmVseWluZyBQYXJ0eVxuICAgICAgICogU0hPVUxEIHJldHJpZXZlIHRoYXQgc3RvcmVkIHZhbHVlIGFuZCBzZXQgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZVxuICAgICAgICogdHJhbnNwb3J0cyBtZW1iZXIuXG4gICAgICAgKi9cbiAgICAgIHRyYW5zcG9ydHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRcIl1bXSB8IG51bGw7XG4gICAgICB0eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZGljdGlvbmFyeSBpcyB1c2VkIHRvIHN1cHBseSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgd2hlbiBjcmVhdGluZyBhIG5ld1xuICAgICAqIGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1jcmVkZW50aWFsLXBhcmFtc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBzcGVjaWZpZXMgdGhlIGNyeXB0b2dyYXBoaWMgc2lnbmF0dXJlIGFsZ29yaXRobSB3aXRoIHdoaWNoXG4gICAgICAgKiB0aGUgbmV3bHkgZ2VuZXJhdGVkIGNyZWRlbnRpYWwgd2lsbCBiZSB1c2VkLCBhbmQgdGh1cyBhbHNvIHRoZSB0eXBlIG9mXG4gICAgICAgKiBhc3ltbWV0cmljIGtleSBwYWlyIHRvIGJlIGdlbmVyYXRlZCwgZS5nLiwgUlNBIG9yIEVsbGlwdGljIEN1cnZlLlxuICAgICAgICovXG4gICAgICBhbGc6IG51bWJlcjtcbiAgICAgIHR5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFR5cGVcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNgIGRpY3Rpb25hcnkgc3VwcGxpZXMgZ2V0KCkgd2l0aCB0aGVcbiAgICAgKiBkYXRhIGl0IG5lZWRzIHRvIGdlbmVyYXRlIGFuIGFzc2VydGlvbi4gSXRzIGNoYWxsZW5nZSBtZW1iZXIgTVVTVCBiZVxuICAgICAqIHByZXNlbnQsIHdoaWxlIGl0cyBvdGhlciBtZW1iZXJzIGFyZSBPUFRJT05BTC5cbiAgICAgKlxuICAgICAqIFRoaXMgc3RydWN0IGlzIGFsc28gdXNlZCBhcyBwYXJ0IG9mIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VkdXJlIGZvciBhc3NlcnRpb25zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBjb250YWlucyBhIGxpc3Qgb2YgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcbiAgICAgICAqIG9iamVjdHMgcmVwcmVzZW50aW5nIHB1YmxpYyBrZXkgY3JlZGVudGlhbHMgYWNjZXB0YWJsZSB0byB0aGUgY2FsbGVyLCBpblxuICAgICAgICogZGVzY2VuZGluZyBvcmRlciBvZiB0aGUgY2FsbGVy4oCZcyBwcmVmZXJlbmNlICh0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICogaXMgdGhlIG1vc3QgcHJlZmVycmVkIGNyZWRlbnRpYWwsIGFuZCBzbyBvbiBkb3duIHRoZSBsaXN0KS5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1hbGxvd2NyZWRlbnRpYWxzXG4gICAgICAgKi9cbiAgICAgIGFsbG93Q3JlZGVudGlhbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXCJdW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciByZXByZXNlbnRzIGEgY2hhbGxlbmdlIHRoYXQgdGhlIHNlbGVjdGVkIGF1dGhlbnRpY2F0b3JcbiAgICAgICAqIHNpZ25zLCBhbG9uZyB3aXRoIG90aGVyIGRhdGEsIHdoZW4gcHJvZHVjaW5nIGFuIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgKiBhc3NlcnRpb24uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtY2hhbGxlbmdlXG4gICAgICAgKi9cbiAgICAgIGNoYWxsZW5nZTogc3RyaW5nO1xuICAgICAgZXh0ZW5zaW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIHNwZWNpZmllcyB0aGUgcmVseWluZyBwYXJ0eSBpZGVudGlmaWVyIGNsYWltZWQgYnlcbiAgICAgICAqIHRoZSBjYWxsZXIuIElmIG9taXR0ZWQsIGl0cyB2YWx1ZSB3aWxsIGJlIHRoZSBDcmVkZW50aWFsc0NvbnRhaW5lclxuICAgICAgICogb2JqZWN04oCZcyByZWxldmFudCBzZXR0aW5ncyBvYmplY3QncyBvcmlnaW4ncyBlZmZlY3RpdmUgZG9tYWluLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLXJwaWRcbiAgICAgICAqL1xuICAgICAgcnBJZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBzcGVjaWZpZXMgYSB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRoYXQgdGhlIGNhbGxlclxuICAgICAgICogaXMgd2lsbGluZyB0byB3YWl0IGZvciB0aGUgY2FsbCB0byBjb21wbGV0ZS4gVGhlIHZhbHVlIGlzIHRyZWF0ZWQgYXMgYVxuICAgICAgICogaGludCwgYW5kIE1BWSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjbGllbnQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtdGltZW91dFxuICAgICAgICovXG4gICAgICB0aW1lb3V0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIHVzZXJWZXJpZmljYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5IGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbFxuICAgICAqIFJlbHlpbmcgUGFydHkgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1ycC1jcmVkZW50aWFsLXBhcmFtc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIFJlbHlpbmcgUGFydHkgZW50aXR5LCB3aGljaCBzZXRzIHRoZSBSUCBJRC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxycGVudGl0eS1pZFxuICAgICAgICovXG4gICAgICBpZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXBhbGF0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LiBJdHMgZnVuY3Rpb24gZGVwZW5kcyBvbiB3aGF0IHRoZVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbEVudGl0eSByZXByZXNlbnRzOiBXaGVuIGluaGVyaXRlZCBieVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5IGl0IGlzIGEgaHVtYW4tcGFsYXRhYmxlIGlkZW50aWZpZXIgZm9yIHRoZVxuICAgICAgICogUmVseWluZyBQYXJ0eSwgaW50ZW5kZWQgb25seSBmb3IgZGlzcGxheS4gRm9yIGV4YW1wbGUsIFwiQUNNRVxuICAgICAgICogQ29ycG9yYXRpb25cIiwgXCJXb25kZXJmdWwgV2lkZ2V0cywgSW5jLlwiIG9yIFwi0J7QkNCeINCf0YDQuNC80LXRgNGC0LXRhVwiLlxuICAgICAgICpcbiAgICAgICAqIFJlbHlpbmcgUGFydGllcyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuM1xuICAgICAgICogb2YgW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgd2hlbiBzZXR0aW5nIG5hbWUncyB2YWx1ZSwgb3IgZGlzcGxheWluZyB0aGUgdmFsdWUgdG8gdGhlXG4gICAgICAgKiB1c2VyLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgc3RyaW5nIE1BWSBjb250YWluIGxhbmd1YWdlIGFuZCBkaXJlY3Rpb24gbWV0YWRhdGEuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIGNvbnNpZGVyIHByb3ZpZGluZyB0aGlzIGluZm9ybWF0aW9uLiBTZWUgwqfigK82LjQuMiBMYW5ndWFnZSBhbmRcbiAgICAgICAqIERpcmVjdGlvbiBFbmNvZGluZyBhYm91dCBob3cgdGhpcyBtZXRhZGF0YSBpcyBlbmNvZGVkLlxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIHRoZSB2YWxpZCBjcmVkZW50aWFsIHR5cGVzLiBJdCBpcyBhbiBleHRlbnNpb25cbiAgICAgKiBwb2ludDsgdmFsdWVzIGNhbiBiZSBhZGRlZCB0byBpdCBpbiB0aGUgZnV0dXJlLCBhcyBtb3JlIGNyZWRlbnRpYWwgdHlwZXMgYXJlXG4gICAgICogZGVmaW5lZC4gVGhlIHZhbHVlcyBvZiB0aGlzIGVudW1lcmF0aW9uIGFyZSB1c2VkIGZvciB2ZXJzaW9uaW5nIHRoZVxuICAgICAqIEF1dGhlbnRpY2F0aW9uIEFzc2VydGlvbiBhbmQgYXR0ZXN0YXRpb24gc3RydWN0dXJlcyBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2ZcbiAgICAgKiB0aGUgYXV0aGVudGljYXRvci4gIEN1cnJlbnRseSBvbmUgY3JlZGVudGlhbCB0eXBlIGlzIGRlZmluZWQsIG5hbWVseVxuICAgICAqIFwicHVibGljLWtleVwiLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtcHVibGlja2V5Y3JlZGVudGlhbHR5cGVcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOiBcInB1YmxpYy1rZXlcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5IGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbFxuICAgICAqIHVzZXIgYWNjb3VudCBhdHRyaWJ1dGVzIHdoZW4gY3JlYXRpbmcgYSBuZXcgY3JlZGVudGlhbC5cbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1wYWxhdGFibGUgbmFtZSBmb3IgdGhlIHVzZXIgYWNjb3VudCwgaW50ZW5kZWQgb25seSBmb3IgZGlzcGxheS5cbiAgICAgICAqIEZvciBleGFtcGxlLCBcIkFsZXggTcO8bGxlclwiIG9yIFwi55Sw5Lit5YCrXCIuIFRoZSBSZWx5aW5nIFBhcnR5IFNIT1VMRCBsZXQgdGhlXG4gICAgICAgKiB1c2VyIGNob29zZSB0aGlzLCBhbmQgU0hPVUxEIE5PVCByZXN0cmljdCB0aGUgY2hvaWNlIG1vcmUgdGhhblxuICAgICAgICogbmVjZXNzYXJ5LlxuICAgICAgICpcbiAgICAgICAqIFJlbHlpbmcgUGFydGllcyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuM1xuICAgICAgICogb2YgW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgd2hlbiBzZXR0aW5nIGRpc3BsYXlOYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvXG4gICAgICAgKiB0aGUgdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMi4zIG9mXG4gICAgICAgKiBbUkZDODI2Nl0gZm9yIHRoZSBOaWNrbmFtZSBQcm9maWxlIG9mIHRoZSBQUkVDSVMgRnJlZWZvcm1DbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCBvbiBkaXNwbGF5TmFtZSdzIHZhbHVlIHByaW9yIHRvIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlciBvciBpbmNsdWRpbmcgdGhlIHZhbHVlIGFzIGEgcGFyYW1ldGVyIG9mIHRoZVxuICAgICAgICogYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsIG9wZXJhdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBXaGVuIGNsaWVudHMsIGNsaWVudCBwbGF0Zm9ybXMsIG9yIGF1dGhlbnRpY2F0b3JzIGRpc3BsYXkgYVxuICAgICAgICogZGlzcGxheU5hbWUncyB2YWx1ZSwgdGhleSBzaG91bGQgYWx3YXlzIHVzZSBVSSBlbGVtZW50cyB0byBwcm92aWRlIGFcbiAgICAgICAqIGNsZWFyIGJvdW5kYXJ5IGFyb3VuZCB0aGUgZGlzcGxheWVkIHZhbHVlLCBhbmQgbm90IGFsbG93IG92ZXJmbG93IGludG9cbiAgICAgICAqIG90aGVyIGVsZW1lbnRzIFtjc3Mtb3ZlcmZsb3ctM10uXG4gICAgICAgKlxuICAgICAgICogQXV0aGVudGljYXRvcnMgTVVTVCBhY2NlcHQgYW5kIHN0b3JlIGEgNjQtYnl0ZSBtaW5pbXVtIGxlbmd0aCBmb3IgYVxuICAgICAgICogZGlzcGxheU5hbWUgbWVtYmVy4oCZcyB2YWx1ZS4gQXV0aGVudGljYXRvcnMgTUFZIHRydW5jYXRlIGEgZGlzcGxheU5hbWVcbiAgICAgICAqIG1lbWJlcuKAmXMgdmFsdWUgc28gdGhhdCBpdCBmaXRzIHdpdGhpbiA2NCBieXRlcy4gU2VlIMKn4oCvNi40LjEgU3RyaW5nXG4gICAgICAgKiBUcnVuY2F0aW9uIGFib3V0IHRydW5jYXRpb24gYW5kIG90aGVyIGNvbnNpZGVyYXRpb25zLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHktZGlzcGxheW5hbWVcbiAgICAgICAqL1xuICAgICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyIGhhbmRsZSBvZiB0aGUgdXNlciBhY2NvdW50IGVudGl0eS4gQSB1c2VyIGhhbmRsZSBpcyBhbiBvcGFxdWVcbiAgICAgICAqIGJ5dGUgc2VxdWVuY2Ugd2l0aCBhIG1heGltdW0gc2l6ZSBvZiA2NCBieXRlcywgYW5kIGlzIG5vdCBtZWFudCB0byBiZVxuICAgICAgICogZGlzcGxheWVkIHRvIHRoZSB1c2VyLlxuICAgICAgICpcbiAgICAgICAqIFRvIGVuc3VyZSBzZWN1cmUgb3BlcmF0aW9uLCBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBkZWNpc2lvbnNcbiAgICAgICAqIE1VU1QgYmUgbWFkZSBvbiB0aGUgYmFzaXMgb2YgdGhpcyBpZCBtZW1iZXIsIG5vdCB0aGUgZGlzcGxheU5hbWUgbm9yXG4gICAgICAgKiBuYW1lIG1lbWJlcnMuIFNlZSBTZWN0aW9uIDYuMSBvZiBbUkZDODI2Nl0uXG4gICAgICAgKlxuICAgICAgICogVGhlIHVzZXIgaGFuZGxlIE1VU1QgTk9UIGNvbnRhaW4gcGVyc29uYWxseSBpZGVudGlmeWluZyBpbmZvcm1hdGlvblxuICAgICAgICogYWJvdXQgdGhlIHVzZXIsIHN1Y2ggYXMgYSB1c2VybmFtZSBvciBlLW1haWwgYWRkcmVzczsgc2VlIMKn4oCvMTQuNi4xIFVzZXJcbiAgICAgICAqIEhhbmRsZSBDb250ZW50cyBmb3IgZGV0YWlscy4gVGhlIHVzZXIgaGFuZGxlIE1VU1QgTk9UIGJlIGVtcHR5LCB0aG91Z2hcbiAgICAgICAqIGl0IE1BWSBiZSBudWxsLlxuICAgICAgICpcbiAgICAgICAqIE5vdGU6IHRoZSB1c2VyIGhhbmRsZSBvdWdodCBub3QgYmUgYSBjb25zdGFudCB2YWx1ZSBhY3Jvc3MgZGlmZmVyZW50XG4gICAgICAgKiBhY2NvdW50cywgZXZlbiBmb3Igbm9uLWRpc2NvdmVyYWJsZSBjcmVkZW50aWFscywgYmVjYXVzZSBzb21lXG4gICAgICAgKiBhdXRoZW50aWNhdG9ycyBhbHdheXMgY3JlYXRlIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFscy4gVGh1cyBhIGNvbnN0YW50XG4gICAgICAgKiB1c2VyIGhhbmRsZSB3b3VsZCBwcmV2ZW50IGEgdXNlciBmcm9tIHVzaW5nIHN1Y2ggYW4gYXV0aGVudGljYXRvciB3aXRoXG4gICAgICAgKiBtb3JlIHRoYW4gb25lIGFjY291bnQgYXQgdGhlIFJlbHlpbmcgUGFydHkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsdXNlcmVudGl0eS1pZFxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBpbmhlcml0ZWQgYnkgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHksIGl0IGlzIGEgaHVtYW4tcGFsYXRhYmxlXG4gICAgICAgKiBpZGVudGlmaWVyIGZvciBhIHVzZXIgYWNjb3VudC4gSXQgaXMgaW50ZW5kZWQgb25seSBmb3IgZGlzcGxheSwgaS5lLixcbiAgICAgICAqIGFpZGluZyB0aGUgdXNlciBpbiBkZXRlcm1pbmluZyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHVzZXIgYWNjb3VudHMgd2l0aFxuICAgICAgICogc2ltaWxhciBkaXNwbGF5TmFtZXMuIEZvciBleGFtcGxlLCBcImFsZXhtXCIsIFwiYWxleC5tdWVsbGVyQGV4YW1wbGUuY29tXCJcbiAgICAgICAqIG9yIFwiKzE0MjU1NTUxMjM0XCIuXG4gICAgICAgKlxuICAgICAgICogVGhlIFJlbHlpbmcgUGFydHkgTUFZIGxldCB0aGUgdXNlciBjaG9vc2UgdGhpcyB2YWx1ZS4gVGhlIFJlbHlpbmcgUGFydHlcbiAgICAgICAqIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMy40LjMgb2YgW1JGQzgyNjVdXG4gICAgICAgKiBmb3IgdGhlIFVzZXJuYW1lQ2FzZVByZXNlcnZlZCBQcm9maWxlIG9mIHRoZSBQUkVDSVMgSWRlbnRpZmllckNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBuYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMy40LjMgb2YgW1JGQzgyNjVdIGZvciB0aGUgVXNlcm5hbWVDYXNlUHJlc2VydmVkIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBJZGVudGlmaWVyQ2xhc3MgW1JGQzgyNjRdLCBvbiBuYW1lJ3MgdmFsdWUgcHJpb3IgdG8gZGlzcGxheWluZyB0aGUgdmFsdWUgdG8gdGhlIHVzZXIgb3IgaW5jbHVkaW5nIHRoZSB2YWx1ZSBhcyBhIHBhcmFtZXRlciBvZiB0aGUgYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsIG9wZXJhdGlvbi5cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQdWJsaWMgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgIFB1YmxpY09yZ0luZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRXhwbGljaXRseSBjb25maWd1cmVkIChhbGxvd2xpc3RlZCkgT3BlbklEIHByb3ZpZGVycyBmb3IgYW4gb3JnICovXG4gICAgICBvaWRjX2lzc3VlcnM6IHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJbnRlbmRlZCBhdWRpZW5jZXMgKGNsaWVudCBJRHMpICovXG4gICAgICAgIGF1ZGllbmNlczogc3RyaW5nW107XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSXNzdWVyIFVSTCAqL1xuICAgICAgICBpc3N1ZXI6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBpc3N1ZXIgbmlja25hbWUgKi9cbiAgICAgICAgbmlja25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyIHJvbGVzIGFsbG93ZWQgdG8gdXNlIHRoaXMgSURQICovXG4gICAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXTtcbiAgICAgIH1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9yZyBpZGVudGlmaWVyXG4gICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIGxvZ2dpbmcgaW4gd2l0aCBqdXN0IGEgcGFzc2tleSBpcyBhbGxvd2VkICovXG4gICAgICBwYXNza2V5X2xvZ2luX2VuYWJsZWQ6IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBQdXJwb3NlOlxuICAgICAgfCBcIm90cFwiXG4gICAgICB8IFwibWZhX3Jlc2V0XCJcbiAgICAgIHwgXCJvdHBfbWZhXCJcbiAgICAgIHwgXCJhbGllbl9wYXNzd29yZF9yZXNldFwiXG4gICAgICB8IFwibWVtYmVyX3Bhc3N3b3JkX3Jlc2V0XCJcbiAgICAgIHwgXCJhbGllbl9pbnZpdGVcIlxuICAgICAgfCBcIm1lbWJlcl9pbnZpdGVcIlxuICAgICAgfCBcIndlbGNvbWVcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXF1ZXN0IHR5cGUgZm9yIHF1ZXJ5aW5nIG1ldHJpY3MuICovXG4gICAgUXVlcnlNZXRyaWNzUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gRW5kIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byAnbm93Jy5cbiAgICAgICAqL1xuICAgICAgZW5kX3RpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGdyYW51bGFyaXR5LCBpbiBzZWNvbmRzLCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBwb2ludHMuXG4gICAgICAgKlxuICAgICAgICogVGhpcyB2YWx1ZSBpcyBhdXRvbWF0aWNhbGx5IHJvdW5kZWQgdXAgdG8gYSBtdWx0aXBsZSBvZiAzNjAwIChpLmUuLCAxIGhvdXIpLlxuICAgICAgICogSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gdGhlIGR1cmF0aW9uIGJldHdlZW4gYGVuZF90aW1lYCBhbmQgYHN0YXJ0X3RpbWVgLlxuICAgICAgICogTXVzdCBiZSBubyBsZXNzIHRoYW4gMSBob3VyICgzNjAwIHNlY29uZHMpIGZvciBcImV2ZW50XCIgbWV0cmljcywgYW5kIDEgZGF5XG4gICAgICAgKiAoODY0MDAgc2Vjb25kcykgZm9yIFwiY291bnRcIiBtZXRyaWNzLiBBbHNvLCB0aGlzIHBlcmlvZCBtdXN0IG5vdFxuICAgICAgICogZGl2aWRlIHRoZSBgZW5kX3RpbWUgLSBzdGFydF90aW1lYCBwZXJpb2QgaW50byBtb3JlIHRoYW4gMTAwIGRhdGEgcG9pbnRzLlxuICAgICAgICovXG4gICAgICBwZXJpb2Q/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmV0dXJuIHRoZSByYXcgZGF0YSBpbnN0ZWFkIG9mIGNvbXB1dGluZyB0aGUgbWV0cmljIHZhbHVlc1xuICAgICAgICogKG5vdCBzdXBwb3J0ZWQgYnkgYWxsIG1ldHJpY3MpLlxuICAgICAgICovXG4gICAgICByYXdfZGF0YT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFydCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC5cbiAgICAgICAqL1xuICAgICAgc3RhcnRfdGltZTogbnVtYmVyO1xuICAgIH0gJiB7XG4gICAgICBtZXRyaWNfbmFtZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZXRyaWNOYW1lXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRhdGEgcG9pbnRzLiAqL1xuICAgIFF1ZXJ5TWV0cmljc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFkdmlzb3J5IG1lc3NhZ2VzIChlLmcuLCBpZiBtYXggbnVtYmVyIG9mIHJlc3VsdHMgaXMgcmVhY2hlZCkuICovXG4gICAgICBtZXNzYWdlcz86IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBlcmlvZCBmb3Igd2hpY2ggdGhlIHN0YXRpc3RpYyBpcyBjb21wdXRlZCwgaWYgYW55IChub3QgYWxsIG1ldHJpY3Mgc3VwcG9ydCBzcGxpdHRpbmcgdGhlIHJlcXVlc3RlZCB0aW1lIHJhbmdlIGludG8gYmlucykuXG4gICAgICAgKiBJZiBzZXQsIGVxdWFscyB0byB0aGUgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCByb3VuZGVkIHVwIHRvIHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIDYwLlxuICAgICAgICovXG4gICAgICBwZXJpb2Q/OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbWUgbWV0cmljcyBjYW4gb3B0aW9uYWxseSByZXR1cm4gdGhlIHJhdyBkYXRhLCB3aGVuIHJlcXVlc3RlZC4gKi9cbiAgICAgIHJhd19kYXRhOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgIH1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQ29tcHV0ZWQgZGF0YSBwb2ludHMuICovXG4gICAgICByZXN1bHRzOiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRhdGEgcG9pbnRzLCBvbmUgZm9yIGVhY2ggdGltZSBwZXJpb2QgKHRpbWUgcGVyaW9kcyBmb3Igd2hpY2ggdGhlIHZhbHVlIGlzIDAgYXJlIG9taXR0ZWQpLiAqL1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgICB9O1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXRyaWMgZGltZW5zaW9ucy4gKi9cbiAgICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH1bXTtcbiAgICAgIHN0YXQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY1N0YXRcIl0gfCBudWxsO1xuICAgIH07XG4gICAgUmF0Y2hldENvbmZpZzoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpZmV0aW1lIChpbiBzZWNvbmRzKSBvZiBhdXRoIHRva2VucyBmb3IgdGhpcyBzZXNzaW9uLlxuICAgICAgICogQXV0aCB0b2tlbnMgY2FuIGJlIHJlZnJlc2hlZCAocmVuZXdlZCkgdXNpbmcgYSB2YWxpZCAodW5leHBpcmVkKVxuICAgICAgICogcmVmcmVzaCB0b2tlbiwgYnV0IG5vdCBiZXlvbmQgdGhlIHNlc3Npb24gbGlmZXRpbWUuXG4gICAgICAgKiBAZGVmYXVsdCAzMDBcbiAgICAgICAqIEBleGFtcGxlIDM2MDBcbiAgICAgICAqL1xuICAgICAgYXV0aF9saWZldGltZT86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhbW91bnQgb2YgdGltZSAoaW4gc2Vjb25kcykgdGhhdCBhbiBhdXRoIHRva2VuIGZvciB0aGlzIHNlc3Npb24gcmVtYWluc1xuICAgICAgICogdmFsaWQgYWZ0ZXIgaXQgaGFzIGJlZW4gcmVmcmVzaGVkIGFuZCBhIG5ldyBhdXRoIHRva2VuIGhhcyBiZWVuIGlzc3VlZC4gVGhpc1xuICAgICAgICogaGVscHMgdG8gYWRkcmVzcyBjb25jdXJyZW5jeSBoYXphcmRzLCBmb3IgZXhhbXBsZSwgaWYgb25lIHRocmVhZCBtYWtlcyByZXF1ZXN0c1xuICAgICAgICogd2l0aCBhdXRoIHRva2VuIHdoaWxlIGFub3RoZXIgcmVmcmVzaGVzIGl0LlxuICAgICAgICogQGRlZmF1bHQgMzBcbiAgICAgICAqIEBleGFtcGxlIDMwXG4gICAgICAgKi9cbiAgICAgIGdyYWNlX2xpZmV0aW1lPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpZmV0aW1lIChpbiBzZWNvbmRzKSBvZiByZWZyZXNoIHRva2VucyBmb3IgdGhpcyBzZXNzaW9uLlxuICAgICAgICogSWYgdGhpcyB2YWx1ZSBpcyBzaG9ydGVyIHRoYW4gdGhlIHNlc3Npb24gbGlmZXRpbWUsIGluYWN0aXZlIHNlc3Npb25zXG4gICAgICAgKiB3aWxsIGJlY29tZSBpbnZhbGlkIG9uY2UgdGhlIGF1dGggYW5kIHJlZnJlc2ggdG9rZW5zIGhhdmUgYm90aCBleHBpcmVkLlxuICAgICAgICogQGRlZmF1bHQgODY0MDBcbiAgICAgICAqIEBleGFtcGxlIDQzMjAwXG4gICAgICAgKi9cbiAgICAgIHJlZnJlc2hfbGlmZXRpbWU/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbGlmZXRpbWUgKGluIHNlY29uZHMpIG9mIHRoZSBzZXNzaW9uLlxuICAgICAgICogVGhlIHNlc3Npb24gY2Fubm90IGJlIGV4dGVuZGVkIGJleW9uZCBpdHMgb3JpZ2luYWwgbGlmZXRpbWUuXG4gICAgICAgKiBAZGVmYXVsdCAzMTUzNjAwMFxuICAgICAgICogQGV4YW1wbGUgODY0MDBcbiAgICAgICAqL1xuICAgICAgc2Vzc2lvbl9saWZldGltZT86IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVjZWlwdCB0aGF0IGFuIE1GQSByZXF1ZXN0IHdhcyBhcHByb3ZlZC4gKi9cbiAgICBSZWNlaXB0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb25maXJtYXRpb24gY29kZSB0aGUgdXNlciBuZWVkcyB0byBwcmVzZW50IHdoZW4gcmVzdW1pbmcgdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gICAgICAgKiBAZXhhbXBsZSBiYTFkNzVkZC1kOTk5LTRjMWItOTQ0ZC0yNWMyNTQ0MGM4YWZcbiAgICAgICAqL1xuICAgICAgY29uZmlybWF0aW9uOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgbG9nZ2VkLWluIHVzZXIgd2hvc2UgYWN0aW9uIGNyZWF0ZWQgdGhpcyBhcHByb3ZhbC4gKi9cbiAgICAgIGZpbmFsX2FwcHJvdmVyOiBzdHJpbmc7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFJlZnJlc2hHcmFudFR5cGU6IFwicmVmcmVzaF90b2tlblwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSlNPTi1SUEMgcmVxdWVzdCBvYmplY3QgKi9cbiAgICBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgSUQgKi9cbiAgICAgIGlkPzogdW5rbm93bjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSlNPTi1SUEMgdmVyc2lvbi4gKi9cbiAgICAgIGpzb25ycGM6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gTmFtZSBvZiB0aGUgbWV0aG9kIHRvIGJlIGludm9rZWQuICovXG4gICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVyIHZhbHVlcyBvZiB0aGUgcmVxdWVzdC4gKi9cbiAgICAgIHBhcmFtcz86IHVua25vd247XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQW4gZXh0ZW5kZWQgZm9ybSBvZiBgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zYCB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGRlcml2ZSB0aGUgV2ViQXV0aG4gY2hhbGxlbmdlXG4gICAgICogZnJvbSBhIHN0cnVjdHVyZWQgcHJlaW1hZ2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgd2VidWF0aG4gc2lnbmF0dXJlIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGEgc3BlY2lmaWMgcHVycG9zZVxuICAgICAqL1xuICAgIFJlcXVlc3RPcHRpb25zV2l0aEhhc2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBlbnVtZXJhdGlvbuKAmXMgdmFsdWVzIGRlc2NyaWJlIHRoZSBSZWx5aW5nIFBhcnR5J3MgcmVxdWlyZW1lbnRzIGZvclxuICAgICAqIGNsaWVudC1zaWRlIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFscyAoZm9ybWVybHkga25vd24gYXMgcmVzaWRlbnQgY3JlZGVudGlhbHNcbiAgICAgKiBvciByZXNpZGVudCBrZXlzKTpcbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLXJlc2lkZW50a2V5cmVxdWlyZW1lbnRcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFJlc2lkZW50S2V5UmVxdWlyZW1lbnQ6IFwiZGlzY291cmFnZWRcIiB8IFwicHJlZmVycmVkXCIgfCBcInJlcXVpcmVkXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBKU09OLVJQQyByZXNwb25zZSBvYmplY3QgKi9cbiAgICBSZXNwb25zZToge1xuICAgICAgZXJyb3I/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yT2JqXCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSUQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0ICovXG4gICAgICBpZD86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIENvbnN0YW50IFwiMi4wXCIgKi9cbiAgICAgIGpzb25ycGM6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzdWx0LCBpZiBzdWNjZXNzICovXG4gICAgICByZXN1bHQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgbWFwIG9mIGFjdGlvbnMgdG8gc2V0cyBvZiBtZW1iZXJzaGlwIHJvbGVzICovXG4gICAgUmVzdHJpY3RlZEFjdGlvbnNNYXA6IHtcbiAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3Qgb2Ygcm9sZSBhY3Rpb25zIHRoYXQgY2FuIGJlIHJlc3RyaWN0ZWQgdG8gYSBzZXQgb2YgbWVtYmVyIHJvbGVzXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBSb2xlQWN0aW9uOiBcIkNyZWF0ZVRva2VuXCIgfCBcIkdldEtleVwiO1xuICAgIFJvbGVBdHRlc3RhdGlvbkNsYWltczoge1xuICAgICAgZXhwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBpYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIHF1ZXJ5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVBdHRlc3RhdGlvblF1ZXJ5XCJdO1xuICAgICAgcm9sZV9pbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVJbmZvXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGtleXMgY3VycmVudGx5IGluIHRoaXMgcm9sZS4gKi9cbiAgICAgIHJvbGVfa2V5cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEcyBvZiB0aGUgdXNlcnMgd2hvIGFyZSBjdXJyZW50bHkgaW4gdGhpcyByb2xlLiAqL1xuICAgICAgcm9sZV91c2Vyczogc3RyaW5nW107XG4gICAgfTtcbiAgICBSb2xlQXR0ZXN0YXRpb25RdWVyeToge1xuICAgICAga2V5X2ZpbHRlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgdmVyYm9zaXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlQXR0ZXN0YXRpb25WZXJib3NpdHlcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3BlY2lmaWVzIHdoaWNoIHJvbGUgcHJvcGVydGllcyB0byBpbmNsdWRlIGluIGFuIGF0dGVzdGF0aW9uXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBSb2xlQXR0ZXN0YXRpb25WZXJib3NpdHk6IFwiU3VtbWFyeVwiIHwgXCJXaXRoS2V5c1wiIHwgXCJGdWxsXCI7XG4gICAgUm9sZUluZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29tbW9uRmllbGRzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgcm9sZSBpcyBlbmFibGVkXG4gICAgICAgKiBAZXhhbXBsZSB0cnVlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQuIFRoZSBDdWJlU2lnbmVyIElEcyBvZiBhdCBtb3N0IDEwMCBrZXlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJvbGUuICovXG4gICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgY3VycmVudCB1c2VyIGlzIGEgbWVtYmVyIG9mIHRoZSByb2xlLiBUaGlzIGlzIGFsd2F5cyB0cnVlLFxuICAgICAgICogZXhjZXB0IGZvciBvd25lcnMgd2hvIGNhbiBzZWUgcm9sZXMgdGhleSBhcmUgbm90IG1lbWJlcnMgb2YuXG4gICAgICAgKi9cbiAgICAgIG1lbWJlcjogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZSAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIHJlc3RyaWN0ZWRfYWN0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXN0cmljdGVkQWN0aW9uc01hcFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcm9sZVxuICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAqL1xuICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgbGlzdCBvZiBhdCBtb3N0IDEwMCB1c2VycyB3aXRoIGFjY2VzcyB0byB0aGUgcm9sZS4gKi9cbiAgICAgIHVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSByZXR1cm5lZCB3aGVuIHJlcXVlc3RpbmcgYSByb2xlIGF0dGVzdGF0aW9uLiAqL1xuICAgIFJvbGVJbmZvSnd0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBSb2xlSW5mb2Agc3RydWN0dXJlLiAqL1xuICAgICAgand0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFJQQyBBUEkgbWV0aG9kIGFuZCBtYXRjaGluZyBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogVG9wLWxldmVsIGRpc3BhdGNoLiBXaXJlIGZvcm1hdCBpcyBwcmVzZXJ2ZWQgYnkgYCNbc2VyZGUodW50YWdnZWQpXWA6IGVhY2hcbiAgICAgKiBpbmJvdW5kIHJlcXVlc3QgaXMgbWF0Y2hlZCBhZ2FpbnN0IG9uZSBvZiB0aGUgaW50ZXJuYWxseS10YWdnZWQgaW5uZXIgZW51bXNcbiAgICAgKiAoW2BDc1JwY2BdIGZvciB0aGUgY29yZSBtZXRob2RzLCBbYEJpbmFuY2VScGNgXSBmb3IgdGhlIEJpbmFuY2UgZmFtaWx5KS5cbiAgICAgKi9cbiAgICBScGNNZXRob2Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3NScGNcIl0gfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VScGNcIl07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgc2NvcGVzIGZvciBhY2Nlc3NpbmcgQ3ViZVNpZ25lciBBUElzICovXG4gICAgU2NvcGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXhwbGljaXRTY29wZVwiXSB8IHN0cmluZztcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc2V0IG9mIHNjb3Blcy4gKi9cbiAgICBTY29wZVNldDogT25lT2Y8XG4gICAgICBbXG4gICAgICAgIFwiQWxsXCIsXG4gICAgICAgIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBzY29wZXMgZXhjZXB0IHRoZXNlIChpbmNsdWRpbmcgdGhvc2UgdHJhbnNpdGl2ZWx5IGltcGxpZWQpLiAqL1xuICAgICAgICAgIEFsbEV4Y2VwdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgb2YgdGhlc2Ugc2NvcGVzIChpbmNsdWRpbmcgdGhvc2UgdHJhbnNpdGl2ZWx5IGltcGxpZWQpLiAqL1xuICAgICAgICAgIEFsbE9mOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlXCJdW107XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIE1GQSBhcHByb3ZhbHMgcmVxdWlyZWQgZm9yIGEgZ2l2ZW4gb3BlcmF0aW9uXG4gICAgICogKGUuZy4gbG9naW4pLiBDYW4gYmUgdXNlZCB0byBwcm9kdWNlIGEgY29uY3JldGUgcG9saWN5IGZvciBhIGdpdmVuIHVzZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFNlY29uZEZhY3RvclJlcXVpcmVtZW50OiBcIm5vbmVcIiB8IFwiaWZfcmVnaXN0ZXJlZFwiIHwgXCJyZXF1aXJlZFwiO1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgKiBAZGVzY3JpcHRpb24gRHVyYXRpb24gbWVhc3VyZWQgaW4gc2Vjb25kc1xuICAgICAqIEEgd3JhcHBlciB0eXBlIGZvciBzZXJpYWxpemF0aW9uIHRoYXQgZW5jb2RlcyBhIGBEdXJhdGlvbmAgYXMgYSBgdTY0YCByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzLlxuICAgICAqL1xuICAgIFNlY29uZHM6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBTZWNyZXRBY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sbGVkIGFjdGlvbnMgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIG9uIGFuIGluZGl2aWR1YWwgcG9saWN5IHNlY3JldC5cbiAgICAgKiBAZXhhbXBsZSByZWFkOnNlY3JldFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgU2VjcmV0QWN0aW9uOlxuICAgICAgfCBcInJlYWQ6KlwiXG4gICAgICB8IFwicmVhZDppbmZvXCJcbiAgICAgIHwgXCJyZWFkOnNlY3JldFwiXG4gICAgICB8IFwidXBkYXRlOipcIlxuICAgICAgfCBcInVwZGF0ZTpzZWNyZXRcIlxuICAgICAgfCBcInVwZGF0ZTphY2xcIlxuICAgICAgfCBcImRlbGV0ZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBzZWNyZXQuICovXG4gICAgU2VjcmV0SW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzLWNvbnRyb2wgZW50cmllcyBmb3IgdGhpcyBzZWNyZXQuICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgc2VjcmV0LiAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgb2YgYSBwb2xpY3kgc2VjcmV0LiAqL1xuICAgIFNlY3JldFZhbHVlOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjbGllbnQncyBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkLCBTRUMxLWVuY29kZWQgUDM4NCBwdWJsaWMga2V5LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNsaWVudF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbmNyeXB0ZWQgc2VjcmV0IHZhbHVlLlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBjaXBoZXJ0ZXh0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuY3J5cHRlZF92YWx1ZTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHNhbHQgdmFsdWUgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5IGZvciBBRVMtR0NNLlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzYWx0OiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICBTZXNzaW9uSW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uTWV0YWRhdGFcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGlvbiBkYXRlIChpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2gpXG4gICAgICAgKi9cbiAgICAgIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEV4cGlyYXRpb24gZGF0ZSAoaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoKVxuICAgICAgICovXG4gICAgICBleHA6IG51bWJlcjtcbiAgICAgIGxhc3RfdXNlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiV2hlcmVBbmRXaGVuXCJdIHwgbnVsbDtcbiAgICAgIGxpZmV0aW1lcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgKiBAZXhhbXBsZSBPSURDIGxvZ2luIHNlc3Npb25cbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTGlzdHMgdXNlciBwZXJtaXNzaW9uIGFuZCBhY2Nlc3MgZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwic2lnbjoqXCIsXG4gICAgICAgKiAgIFwibWFuYWdlOm1mYTp2b3RlOmNzXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgc2Vzc2lvbiwgYnV0IGNhbm5vdCBiZSB1c2VkIGZvciBhdXRoLlxuICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICovXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29sbGVjdGlvbiBvZiBhdHRyaWJ1dGVzIHJlbGF0ZWQgdG8gYSBTZXNzaW9uLlxuICAgICAqIFRoaXMgaXMgdGhlIGJhY2tlbmQgdmFyaWFudCBvZiBbYENsaWVudFNlc3Npb25NZXRhZGF0YWBdIGFuZCB3b3JrcyBpbiB0YW5kZW0gd2l0aCBpdHMgZnJvbnRlbmQgY291bnRlcnBhcnQuXG4gICAgICovXG4gICAgU2Vzc2lvbk1ldGFkYXRhOiB7XG4gICAgICBjbGllbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFByb2ZpbGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXIgd2hvIGNyZWF0ZWQgdGhlIHNlc3Npb24uXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2VmNDEzNmRkLWQyMmYtNDViYy1hNjVjLTEyYjRiYWE3MjlkNFxuICAgICAgICovXG4gICAgICBjcmVhdGVkX2J5Pzogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPUyBTdHJpbmcgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBzZWUgb3NfaW5mbyBpbnN0ZWFkLiAqL1xuICAgICAgb3M/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgb3NfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3NJbmZvXCJdO1xuICAgICAgc291cmNlX2lwPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb3VyY2VJcFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXIgYWdlbnQgdGhhdCBjcmVhdGVkIHRoZSBzZXNzaW9uLlxuICAgICAgICogQGV4YW1wbGUgTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggeC55OyBydjo0Mi4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzQyLjBcbiAgICAgICAqL1xuICAgICAgdXNlcl9hZ2VudD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgZm9yIHNldHRpbmcgYW4gT3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAgICpcbiAgICAgKiBFaXRoZXIgYHZhbHVlYCBvciBgYWNsYCBtdXN0IGJlIHByb3ZpZGVkLlxuICAgICAqL1xuICAgIFNldFBvbGljeVNlY3JldFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzZWNyZXQncyBhY2Nlc3MtY29udHJvbCBlbnRyaWVzLlxuICAgICAgICogQ2FuIGJlIGBOb25lYCBpZiB0aGUgcmVxdWVzdCBpcyBjcmVhdGluZyBhIHNlY3JldCB3aXRob3V0IEFDTCBvciB1cGRhdGluZyBhblxuICAgICAgICogZXhpc3Rpbmcgc2VjcmV0J3MgdmFsdWUuXG4gICAgICAgKi9cbiAgICAgIGFjbD86IHVua25vd25bXSB8IG51bGw7XG4gICAgICBpbXBvcnRfa2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbXBvcnRLZXlcIl0gfCBudWxsO1xuICAgICAgdmFsdWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY3JldFZhbHVlXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFNpZ25EaW1lbnNpb25zOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzaWduIG9wZXJhdGlvbiAqL1xuICAgICAgb3BlcmF0aW9uOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtZXRyaWNzIG11c3QgaW5jbHVkZSAnb3JnX2lkJyBhcyBhIGRpbWVuc2lvbi4gKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgU2lnbkRyeVJ1bkFyZ3M6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciBNRkEgaXMgcmVxdWlyZWQgKi9cbiAgICAgIG1mYV9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLCBpZiByZXF1ZXN0ZWQgKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH07XG4gICAgU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgcmVzdWx0aW5nIHNpZ25hdHVyZS4gKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgU2lnbmF0dXJlVmVyc2lvbjogXCJlaXBfNzEyX3YzXCIgfCBcImVpcF83MTJfdjRcIiB8IFwicGVyc29uYWxfc2lnblwiO1xuICAgIFNpZ25lZE1lc3NhZ2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhZGRyZXNzIG9mIHRoZSBzaWduZXIsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJlcXVlc3QgcmVjb3JkLiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSwgaGV4IGVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnICovXG4gICAgICBzaWduYXR1cmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc2lnbmF0dXJlVmVyc2lvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduYXR1cmVWZXJzaW9uXCJdO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taVN0YXR1c1wiXTtcbiAgICB9O1xuICAgIFNpZ25lckVycm9yQ29kZTpcbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZXJFcnJvck93bkNvZGVzXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRWYWx1ZUNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWRSZXF1ZXN0RXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFkR2F0ZXdheUVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdEZvdW5kRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRm9yYmlkZGVuRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5hdXRob3JpemVkRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHJlY29uZGl0aW9uRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGltZW91dEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZsaWN0RXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW50ZXJuYWxFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgU2lnbmVyRXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJQcmVDb21wdXRlZFwiXG4gICAgICB8IFwiU3RhdHVzQ29kZVdpdGhNZXNzYWdlXCJcbiAgICAgIHwgXCJKcnBjRXJyb3JcIlxuICAgICAgfCBcIlVuaGFuZGxlZEVycm9yXCJcbiAgICAgIHwgXCJQcm94eVN0YXJ0RXJyb3JcIlxuICAgICAgfCBcIkVuY2xhdmVFcnJvclwiXG4gICAgICB8IFwiUG9saWN5RXJyb3JXaXRoRXZhbFRyZWVcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuc3dlciB0byBhIFNpZ24taW4gd2l0aCBFdGhlcmV1bSBjaGFsbGVuZ2UuICovXG4gICAgU2l3ZUNvbXBsZXRlUmVxdWVzdDoge1xuICAgICAgY2hhbGxlbmdlX2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgRUlQLTE5MSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgcmV0dXJuZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgUE9TVCAoJ2luaXQnKSBlbmRwb2ludCAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIHVwb24gYSBzdWNjZXNzZnVsIFNJV0UgYXV0aGVudGljYXRpb24uICovXG4gICAgU2l3ZUNvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGUgdXNlciB3aXRoIHRoZSByZXF1ZXN0ZWQgU0lXRSBpZGVudGl0eS4gKi9cbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSB0aGUgcmVxdWVzdCB0byBzaWduIGluIHdpdGggZXRoZXJldW0uIFRoZSByZXNwb25zZSB3aWxsXG4gICAgICogY29udGFpbiBhIFNJV0UgbWVzc2FnZSB0aGF0IHRoZSBjbGllbnQgaGFzIHRvIHNpZ24gYW5kIHN1Ym1pdCB2aWEgdGhlXG4gICAgICogY29ycmVzcG9uZGluZyBQQVRDSCBlbmRwb2ludCB3aXRoaW4gNSBtaW51dGVzLlxuICAgICAqL1xuICAgIFNpd2VJbml0UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgRXRoZXJldW0gYWRkcmVzcyBwZXJmb3JtaW5nIHRoZSBzaWduaW5nIGNvbmZvcm1hbnQgdG8gY2FwaXRhbGl6YXRpb24gZW5jb2RlZCBjaGVja3N1bSBzcGVjaWZpZWQgaW4gRUlQLTU1LiAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgUkZDIDM5ODYgYXV0aG9yaXR5IHRoYXQgaXMgcmVxdWVzdGluZyB0aGUgc2lnbmluZy4gKi9cbiAgICAgIGRvbWFpbjogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSVNPIDg2MDEgZGF0ZXRpbWUgc3RyaW5nIHRoYXQsIGlmIHByZXNlbnQsIGluZGljYXRlcyB3aGVuIHRoZSBzaWduZWQgYXV0aGVudGljYXRpb24gbWVzc2FnZSBpcyBubyBsb25nZXIgdmFsaWQuICovXG4gICAgICBleHBpcmF0aW9uX3RpbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSVNPIDg2MDEgZGF0ZXRpbWUgc3RyaW5nIHRoYXQsIGlmIHByZXNlbnQsIGluZGljYXRlcyB3aGVuIHRoZSBzaWduZWQgYXV0aGVudGljYXRpb24gbWVzc2FnZSB3aWxsIGJlY29tZSB2YWxpZC4gKi9cbiAgICAgIG5vdF9iZWZvcmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN5c3RlbS1zcGVjaWZpYyBpZGVudGlmaWVyIHRoYXQgbWF5IGJlIHVzZWQgdG8gdW5pcXVlbHkgcmVmZXIgdG8gdGhlIHNpZ24taW4gcmVxdWVzdC4gKi9cbiAgICAgIHJlcXVlc3RfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgaW5mb3JtYXRpb24gb3IgcmVmZXJlbmNlcyB0byBpbmZvcm1hdGlvbiB0aGUgdXNlciB3aXNoZXMgdG8gaGF2ZSByZXNvbHZlZCBhcyBwYXJ0IG9mIGF1dGhlbnRpY2F0aW9uIGJ5IHRoZSByZWx5aW5nIHBhcnR5LiBUaGV5IGFyZSBleHByZXNzZWQgYXMgUkZDIDM5ODYgVVJJcyBzZXBhcmF0ZWQgYnkgXCJcXG4tIFwiIHdoZXJlIFxcbiBpcyB0aGUgYnl0ZSAweDBhLiAqL1xuICAgICAgcmVzb3VyY2VzPzogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgQVNDSUkgYXNzZXJ0aW9uIHRoYXQgdGhlIHVzZXIgd2lsbCBzaWduLCBhbmQgaXQgbXVzdCBub3QgY29udGFpbiAnXFxuJyAodGhlIGJ5dGUgMHgwYSkuICovXG4gICAgICBzdGF0ZW1lbnQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBSRkMgMzk4NiBVUkkgcmVmZXJyaW5nIHRvIHRoZSByZXNvdXJjZSB0aGF0IGlzIHRoZSBzdWJqZWN0IG9mIHRoZSBzaWduaW5nIChhcyBpbiB0aGUgc3ViamVjdCBvZiBhIGNsYWltKS4gKi9cbiAgICAgIHVyaTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgY2hhbGxlbmdlIHJldHVybmVkIGluIHJlc3BvbnNlIHRvIGEgU2lnbi1JbiB3aXRoIEV0aGVyZXVtIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBDb250YWlucyBhIG1lc3NhZ2UgdGhhdCB0aGUgY2xpZW50IG11c3Qgc2lnbiBmb2xsb3dpbmcgRUlQLTE5MVxuICAgICAqIHdpdGggdGhlIHJlcXVlc3RlZCBrZXkgaW4gb3JkZXIgdG8gY29tcGxldGUgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBUaGUgY2xpZW50IGhhcyB1bnRpbCB0aGUgbWVzc2FnZSBleHBpcmVzIChidXQgbm8gbW9yZSB0aGFuIDUgbWludXRlcykgdG8gY29tcGxldGUgdGhlIGNoYWxsZW5nZS5cbiAgICAgKi9cbiAgICBTaXdlSW5pdFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlICh0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0IHdoZW4gY2FsbGluZyB0aGUgUEFUQ0ggKCdjb21wbGV0ZScpIGVuZHBvaW50KSAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXNzYWdlIHRvIHNpZ24gZm9sbG93aW5nIHRoZSBFSVAtMTkxIHN0YW5kYXJkLiAqL1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIFNvbGFuYSBhZGRyZXNzIGFuZCB0aGUgY2x1c3RlciBpdCBpcyBvbi4gKi9cbiAgICBTb2xhbmFBZGRyZXNzSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNvbGFuYSBhZGRyZXNzLlxuICAgICAgICogQGV4YW1wbGUgRVB3NExzTndDWUNZWGFjZTFCS3Z3TGNkN29lWnpSaVlHdUdFNXpmUHZvUHlcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgY2x1c3RlcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFDbHVzdGVyXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBTb2xhbmEgY2x1c3RlcnMuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBTb2xhbmFDbHVzdGVyOiBcIm1haW5uZXRcIiB8IFwiZGV2bmV0XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNvbGFuYSBzaWduaW5nIHJlcXVlc3RcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcIm1lc3NhZ2VfYmFzZTY0XCI6IFwiQVFBQkE4T0tWekxFanN0c3RONHhYcjM5a0xLSFQ4ZDU4ZVFZMVFFczZNZVh3RUZCcnhUQWxVTFgxdHJvTGJXeHVBWFFxZ2JRb2ZHaTZ6OGZKaTdLQUFJZjdZTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpLMHRuMzlrMjhzK1g4Nlc0N0V2YlJSS25ZQlZROFEvbDJtMUViZlQ3K3ZBUUlDQUFFTUFnQUFBR1FBQUFBQUFBQUFcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBTb2xhbmFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbGFuYSBiYXNlNjQtZW5jb2RlZCBzZXJpYWxpemVkIE1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBTb2xhbmFUeENtcDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSAncmVjZW50X2Jsb2NraGFzaCcgcHJvcGVydHkgb2YgdGhlIFNvbGFuYSB0cmFuc2FjdGlvbiBpcyBhbGxvd2VkIHRvIGJlIGRpZmZlcmVudC4gKi9cbiAgICAgIGlnbm9yZV9ibG9ja2hhc2g/OiBib29sZWFuO1xuICAgIH07XG4gICAgU291cmNlSXA6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGNhbGxlci4gKi9cbiAgICAgIHNvdXJjZV9pcDogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBvbiB3aGljaCB3ZSB3aWxsIGRlcG9zaXRcbiAgICAgICAqIEBleGFtcGxlIDVcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIGRlcG9zaXRfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHN0YWtpbmcgYW1vdW50IGluIEdXRUkuXG4gICAgICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0cyB0byAzMl8wMDBfMDAwXzAwMCAoMzIgRVRIKS5cbiAgICAgICAqIE11c3QgYmUgYmV0d2VlbiAxIEVUSCBhbmQgMzIgRVRILlxuICAgICAgICogTXVzdCBub3QgYmUgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiAnZGVwb3NpdF90eXBlJyBpcyBcIldyYXBwZXJcIi5cbiAgICAgICAqL1xuICAgICAgc3Rha2luZ19hbW91bnRfZ3dlaT86IG51bWJlcjtcbiAgICAgIHVuc2FmZV9jb25mPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbnNhZmVDb25mXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3IgQkxTIHB1YmxpYyBrZXkgdG8gdXNlLCBvciBgTm9uZWAgdG8gZ2VuZXJhdGUgYSBmcmVzaCBvbmUuXG4gICAgICAgKiBAZXhhbXBsZSAweGE5OWE3NmVkNzc5NmY3YmUyMmQ1YjdlODVkZWViN2M1Njc3ZTg4ZTUxMWUwYjMzNzYxOGY4YzRlYjYxMzQ5YjRiZjJkMTUzZjY0OWY3YjUzMzU5ZmU4Yjk0YTM4ZTQ0Y1xuICAgICAgICovXG4gICAgICB2YWxpZGF0b3Jfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBldGhlcmV1bSBhZGRyZXNzIHRvIHdoaWNoIHdpdGhkcmF3biBmdW5kcyBnb1xuICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIHdpdGhkcmF3YWxfYWRkcjogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXNwb25zZTogKHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICBkZXBvc2l0X3R4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeG5cIl07XG4gICAgfSkgJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIGtleSBpZCAoXCJLZXkjLi4uXCIpXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjZGIxNzMxZjgtMzY1OS00NWMwLTg4NWItZTExZTFmNWI3YmUyXG4gICAgICAgKi9cbiAgICAgIGNyZWF0ZWRfdmFsaWRhdG9yX2tleV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgU3RhdHVzOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXJzIHdobyBhcmUgYWxsb3dlZCB0byBhcHByb3ZlLiBNdXN0IGJlIG5vbi1lbXB0eS4gKi9cbiAgICAgIGFsbG93ZWRfYXBwcm92ZXJzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsb3dlZCBhcHByb3ZhbCB0eXBlcy4gV2hlbiBvbWl0dGVkLCBkZWZhdWx0cyB0byBhbnkuICovXG4gICAgICBhbGxvd2VkX21mYV90eXBlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGhhdmUgYWxyZWFkeSBhcHByb3ZlZCAqL1xuICAgICAgYXBwcm92ZWRfYnk6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXBwcm92YWxJbmZvXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55IHVzZXJzIG11c3QgYXBwcm92ZVxuICAgICAgICovXG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgYXV0aCBmYWN0b3JzIHRvIHJlcXVpcmUgcGVyIHVzZXJcbiAgICAgICAqL1xuICAgICAgbnVtX2F1dGhfZmFjdG9yczogbnVtYmVyO1xuICAgICAgcmVxdWVzdF9jb21wYXJlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RDbXBcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQSBzaW5nbGUgYXNzZXQgYmFsYW5jZSBlbnRyeSByZXR1cm5lZCBieSBbYFN1YkFjY291bnRBc3NldHNSZXNwb25zZWBdLlxuICAgICAqXG4gICAgICogQWxsIGJhbGFuY2UgZmllbGRzIGFyZSBkZWNpbWFsIHN0cmluZ3MgKEJpbmFuY2UgcHJlc2VydmVzIHByZWNpc2lvbiBieSBub3RcbiAgICAgKiBjb252ZXJ0aW5nIHRvIGZsb2F0cykuXG4gICAgICovXG4gICAgU3ViQWNjb3VudEFzc2V0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFzc2V0IHN5bWJvbCAoZS5nLiBgXCJVU0RUXCJgLCBgXCJCVENcImApLiAqL1xuICAgICAgYXNzZXQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIGJhbGFuY2UuICovXG4gICAgICBmcmVlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhbGFuY2UgZnJvemVuIGJ5IEJpbmFuY2UgKGUuZy4gZHVlIHRvIGNvbXBsaWFuY2UgaG9sZHMpLiAqL1xuICAgICAgZnJlZXplOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhbGFuY2UgbG9ja2VkIGluIG9wZW4gb3JkZXJzLiAqL1xuICAgICAgbG9ja2VkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhbGFuY2UgY3VycmVudGx5IGJlaW5nIHdpdGhkcmF3bi4gKi9cbiAgICAgIHdpdGhkcmF3aW5nOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYEdFVCAvc2FwaS92NC9zdWItYWNjb3VudC9hc3NldHNgLlxuICAgICAqXG4gICAgICogUXVlcmllcyB0aGUgc3BvdC13YWxsZXQgYmFsYW5jZXMgb2YgYSBzaW5nbGUgc3ViLWFjY291bnQuIE11c3QgYmUgY2FsbGVkIGJ5XG4gICAgICogYSBtYXN0ZXItYWNjb3VudCBjcmVkZW50aWFsLlxuICAgICAqL1xuICAgIFN1YkFjY291bnRBc3NldHNSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVtYWlsIGFkZHJlc3Mgb2YgdGhlIHN1Yi1hY2NvdW50IHdob3NlIGJhbGFuY2VzIHRvIGZldGNoLiAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgZm9yIFtgQmluYW5jZU1hbmFnZXI6OnN1Yl9hY2NvdW50X2Fzc2V0c2BdLiAqL1xuICAgIFN1YkFjY291bnRBc3NldHNSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT25lIGVudHJ5IHBlciBhc3NldCBoZWxkIGluIHRoZSBzdWItYWNjb3VudCdzIHNwb3Qgd2FsbGV0LiBCaW5hbmNlXG4gICAgICAgKiBvbWl0cyBhc3NldHMgd2l0aCBhbGwtemVybyBiYWxhbmNlcy5cbiAgICAgICAqL1xuICAgICAgYmFsYW5jZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3ViQWNjb3VudEFzc2V0XCJdW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9uZSB0cmFuc2ZlciBlbnRyeSBpbiBbYFN1YkFjY291bnRUcmFuc2Zlckhpc3RvcnlSZXNwb25zZWBdLiAqL1xuICAgIFN1YkFjY291bnRUcmFuc2Zlckhpc3RvcnlFbnRyeToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBc3NldCBzeW1ib2wgKGUuZy4gYFwiVVNEVFwiYCkuICovXG4gICAgICBhc3NldDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbWFpbCBvZiB0aGUgY291bnRlcnBhcnR5IGFjY291bnQgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIHRyYW5zZmVyLiAqL1xuICAgICAgY291bnRlclBhcnR5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFbWFpbCBvZiB0aGUgYWNjb3VudCB0aGlzIGVudHJ5J3MgQVBJIGtleSBhdXRoZW50aWNhdGVzIGFzLiBCaW5hbmNlXG4gICAgICAgKiByZXR1cm5zIHRoaXMgb24gZWFjaCByb3cgZXZlbiB0aG91Z2ggaXQgaXMgdGhlIHNhbWUgZm9yIHRoZSB3aG9sZSBwYWdlLlxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2FsbGV0IHR5cGUgZGViaXRlZCBvbiB0aGUgc291cmNlIHNpZGUgKGUuZy4gYFwiU1BPVFwiYCxcbiAgICAgICAqIGBcIlVTRFRfRlVUVVJFXCJgKS4gTGVmdCBhcyBgU3RyaW5nYCBmb3IgZm9yd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgICAgICovXG4gICAgICBmcm9tQWNjb3VudFR5cGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW1vdW50IHRyYW5zZmVycmVkLCBhcyBhIGRlY2ltYWwgc3RyaW5nLiAqL1xuICAgICAgcXR5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2ZlciBzdGF0dXM6IGBcIlBST0NFU1NcImAsIGBcIlNVQ0NFU1NcImAsIG9yIGBcIkZBSUxVUkVcImAuIExlZnQgYXNcbiAgICAgICAqIGBTdHJpbmdgIGZvciBmb3J3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAgICAgKi9cbiAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGltZSBvZiB0aGUgdHJhbnNmZXIgKG1zIHNpbmNlIGVwb2NoKS5cbiAgICAgICAqL1xuICAgICAgdGltZTogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXYWxsZXQgdHlwZSBjcmVkaXRlZCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZS4gKi9cbiAgICAgIHRvQWNjb3VudFR5cGU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zZmVyIGlkLiBNYXRjaGVzIHRoZSBgdHhuSWRgIHJldHVybmVkIGJ5IHRoZSBvcmlnaW5hbFxuICAgICAgICogW2BTdWJBY2NvdW50VHJhbnNmZXJSZXNwb25zZWBdLlxuICAgICAgICovXG4gICAgICB0cmFuSWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIGAxYCA9IHRyYW5zZmVyIGluLCBgMmAgPSB0cmFuc2ZlciBvdXQuXG4gICAgICAgKi9cbiAgICAgIHR5cGU6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBgR0VUIC9zYXBpL3YxL3N1Yi1hY2NvdW50L3RyYW5zZmVyL3N1YlVzZXJIaXN0b3J5YC5cbiAgICAgKlxuICAgICAqIExpc3RzIHRoZSB0cmFuc2ZlciBoaXN0b3J5IG9mIHRoZSBjYWxsaW5nIHN1Yi1hY2NvdW50LiBDb3ZlcnMgYm90aFxuICAgICAqIHN1Yi10by1tYXN0ZXIgYW5kIHN1Yi10by1zdWIgdHJhbnNmZXJzLiBBbGwgZmlsdGVycyBhcmUgb3B0aW9uYWw7IGlmXG4gICAgICogYHN0YXJ0X3RpbWVgL2BlbmRfdGltZWAgYXJlIG9taXR0ZWQsIEJpbmFuY2UgcmV0dXJucyB0aGUgbW9zdCByZWNlbnQgMzBcbiAgICAgKiBkYXlzLiBJZiBgciN0eXBlYCBpcyBvbWl0dGVkLCBCaW5hbmNlIGRlZmF1bHRzIHRvIGBUcmFuc2Zlck91dGAgKGAyYCkuXG4gICAgICovXG4gICAgU3ViQWNjb3VudFRyYW5zZmVySGlzdG9yeVJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdGVyIHRvIGEgc3BlY2lmaWMgYXNzZXQgKGUuZy4gYFwiVVNEVFwiYCkuICovXG4gICAgICBhc3NldD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaW5kb3cgZW5kIChtcyBzaW5jZSBlcG9jaCkuXG4gICAgICAgKi9cbiAgICAgIGVuZFRpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUGFnZSBzaXplIChCaW5hbmNlIGRlZmF1bHQ6IDUwMCkuXG4gICAgICAgKi9cbiAgICAgIGxpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgaW5jbHVkZSBmYWlsZWQgdHJhbnNmZXJzIGluIHRoZSByZXNwb25zZS4gQmluYW5jZSBkZWZhdWx0c1xuICAgICAgICogdG8gYGZhbHNlYC5cbiAgICAgICAqL1xuICAgICAgcmV0dXJuRmFpbEhpc3Rvcnk/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFdpbmRvdyBzdGFydCAobXMgc2luY2UgZXBvY2gpLlxuICAgICAgICovXG4gICAgICBzdGFydFRpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRGlyZWN0aW9uIGZpbHRlciAoYDFgID0gdHJhbnNmZXIgaW4sIGAyYCA9IHRyYW5zZmVyIG91dCkuXG4gICAgICAgKi9cbiAgICAgIHR5cGU/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGZvciBbYEJpbmFuY2VNYW5hZ2VyOjpzdWJfYWNjb3VudF90cmFuc2Zlcl9oaXN0b3J5YF0uXG4gICAgICpcbiAgICAgKiBCaW5hbmNlIHJldHVybnMgYSB0b3AtbGV2ZWwgSlNPTiBhcnJheTsgdGhpcyBuZXd0eXBlIHByZXNlcnZlcyB0aGF0IHdpcmVcbiAgICAgKiBmb3JtYXQgd2hpbGUgZ2l2aW5nIHRoZSByZXNwb25zZSBhIG5hbWVkIHR5cGUgaW4gdGhlIE9wZW5BUEkgc2NoZW1hLlxuICAgICAqL1xuICAgIFN1YkFjY291bnRUcmFuc2Zlckhpc3RvcnlSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5RW50cnlcIl1bXTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGZvciBbYEJpbmFuY2VNYW5hZ2VyOjpzdWJfdG9fbWFzdGVyYF0gYW5kIFtgQmluYW5jZU1hbmFnZXI6OnN1Yl90b19zdWJgXS4gKi9cbiAgICBTdWJBY2NvdW50VHJhbnNmZXJSZXNwb25zZToge1xuICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgIHR4bklkOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYFBPU1QgL3NhcGkvdjEvc3ViLWFjY291bnQvdHJhbnNmZXIvc3ViVG9NYXN0ZXJgLlxuICAgICAqXG4gICAgICogVHJhbnNmZXJzIGFuIGFzc2V0IGZyb20gdGhlIGNhbGxlcidzIHN1Yi1hY2NvdW50IHRvIHRoZSBtYXN0ZXIgYWNjb3VudC5cbiAgICAgKi9cbiAgICBTdWJUb01hc3RlclJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhbW91bnQgYmVpbmcgdHJhbnNmZXJyZWQsIGZvcm1hdHRlZCBhcyBhIGRlY2ltYWwgc3RyaW5nIChlLmcuIGBcIjAuMVwiYCkuXG4gICAgICAgKiBTZW50IHZlcmJhdGltOiBCaW5hbmNlIGlzIHN0cmljdCBhYm91dCBkZWNpbWFsIGZvcm1hdHRpbmcuXG4gICAgICAgKi9cbiAgICAgIGFtb3VudDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYXNzZXQgc3ltYm9sIGJlaW5nIHRyYW5zZmVycmVkIChlLmcuIGBcIlVTRFRcImAsIGBcIkJUQ1wiYCkuICovXG4gICAgICBhc3NldDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIGBQT1NUIC9zYXBpL3YxL3N1Yi1hY2NvdW50L3RyYW5zZmVyL3N1YlRvU3ViYC5cbiAgICAgKlxuICAgICAqIFRyYW5zZmVycyBhbiBhc3NldCBmcm9tIHRoZSBjYWxsZXIncyBzdWItYWNjb3VudCB0byBhbm90aGVyIHN1Yi1hY2NvdW50XG4gICAgICogdW5kZXIgdGhlIHNhbWUgbWFzdGVyIGFjY291bnQuXG4gICAgICovXG4gICAgU3ViVG9TdWJSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhbW91bnQgYmVpbmcgdHJhbnNmZXJyZWQsIGFzIGEgZGVjaW1hbCBzdHJpbmcgKGUuZy4gYFwiMC4xXCJgKS4gKi9cbiAgICAgIGFtb3VudDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYXNzZXQgc3ltYm9sIGJlaW5nIHRyYW5zZmVycmVkIChlLmcuIGBcIlVTRFRcImApLiAqL1xuICAgICAgYXNzZXQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVtYWlsIGFkZHJlc3Mgb2YgdGhlIGRlc3RpbmF0aW9uIHN1Yi1hY2NvdW50LiBNdXN0IGJlIGEgc3ViLWFjY291bnQgb2ZcbiAgICAgICAqIHRoZSBzYW1lIG1hc3Rlci5cbiAgICAgICAqL1xuICAgICAgdG9FbWFpbDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGF0dXMgb2YgYSBzdWJzY3JpcHRpb25cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFN1YnNjcmlwdGlvblN0YXR1czogXCJDb25maXJtZWRcIiB8IFwiUGVuZGluZ1wiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBTdWkgYWRkcmVzcyBhbmQgaXRzIGNoYWluLiAqL1xuICAgIFN1aUFkZHJlc3NJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU3VpIGFkZHJlc3MuXG4gICAgICAgKiBAZXhhbXBsZSAweDRlODcxMmUzOGIwOWI1NDY3YzEwZmRjNDBmYTc4NjVhNjU1NjM5ODNlZWI3NGIyNDZkZjk4MWU2MWE2NmI5OGRcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgY2hhaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3VpQ2hhaW5cIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3VwcG9ydGVkIFN1aSBjaGFpbnMuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBTdWlDaGFpbjogXCJtYWlubmV0XCIgfCBcImRldm5ldFwiIHwgXCJ0ZXN0bmV0XCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHNpZ24gYSBzZXJpYWxpemVkIFNVSSB0cmFuc2FjdGlvbiAqL1xuICAgIFN1aVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGluZyBvZiBhIEJDUy1zZXJpYWxpemVkIFNVSSB0cmFuc2FjdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBXaGVuIHVzaW5nIHRoZSBTVUkgVHlwZVNjcmlwdCBTREssIHRoZXNlIGJ5dGVzXG4gICAgICAgKiBhcmUgcmV0dXJuZWQgYnkgdGhlIGBUcmFuc2FjdGlvbi5idWlsZCgpYCBtZXRob2QuXG4gICAgICAgKi9cbiAgICAgIHR4OiBzdHJpbmc7XG4gICAgfTtcbiAgICBUYXByb290U2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHByb2R1Y2UgYSB2YWxpZCBzaWduYXR1cmUsIGp1c3QgZXZhbHVhdGUgYXR0YWNoZWQgcG9saWNpZXMuICovXG4gICAgICBkcnlfcnVuPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgc2lnX2tpbmQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGFwcm9vdFNpZ25hdHVyZUtpbmRcIl07XG4gICAgICB0eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNUeFwiXTtcbiAgICB9O1xuICAgIFRhcHJvb3RTaWduYXR1cmVLaW5kOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGFubmV4LCBhcyBwZXIgQklQMzQxICovXG4gICAgICBhbm5leD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbiBpbnB1dCBpbmRleFxuICAgICAgICogQGV4YW1wbGUgMFxuICAgICAgICovXG4gICAgICBpbnB1dF9pbmRleDogbnVtYmVyO1xuICAgICAgbGVhZl9oYXNoX2NvZGVfc2VwYXJhdG9yPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNMZWFmSGFzaENvZGVTZXBhcmF0b3JcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgdGhpcyBmaWVsZCBpcyBub3QgcHJlc2VudCBvciBudWxsLCBubyB0d2VhayBpcyBhcHBsaWVkLiBJZiB0aGUgZmllbGQgaXMgYW5cbiAgICAgICAqIGVtcHR5IHN0cmluZywgdGhlIGtleSBpcyB0d2Vha2VkIHdpdGggYW4gdW5zcGVuZGFibGUgc2NyaXB0IHBhdGggcGVyIEJJUDAzNDEuXG4gICAgICAgKiBPdGhlcndpc2UsIHRoaXMgZmllbGQgbXVzdCBjb250YWluIGEgYmFzZS02NCBzdHJpbmcgZW5jb2RpbmcgMzIgYnl0ZXMgdGhhdFxuICAgICAgICogcmVwcmVzZW50IHRoZSBNZXJrbGUgcm9vdCB3aXRoIHdoaWNoIHRvIHR3ZWFrIHRoZSBrZXkgYmVmb3JlIHNpZ25pbmcuXG4gICAgICAgKiBAZXhhbXBsZSBGNDFIQXkycTVHbjhsYUYyQ3VNc1piUkFRVG1EKzRPYjNWVU1aN1RCR0s0PVxuICAgICAgICovXG4gICAgICBtZXJrbGVfcm9vdD86IHN0cmluZyB8IG51bGw7XG4gICAgICBwcmV2b3V0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQcmV2T3V0cHV0c1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhhc2ggdHlwZSBvZiBhbiBpbnB1dCdzIHNpZ25hdHVyZSwgZW5jb2RlZCBpbiB0aGUgbGFzdCBieXRlIG9mIHRoZSBzaWduYXR1cmUuXG4gICAgICAgKiBQb3NzaWJsZSB2YWx1ZXM6XG4gICAgICAgKiAtIFNJR0hBU0hfQUxMXG4gICAgICAgKiAtIFNJR0hBU0hfQUxMfFNJR0hBU0hfQU5ZT05FQ0FOUEFZXG4gICAgICAgKiAtIFNJR0hBU0hfREVGQVVMVFxuICAgICAgICogLSBTSUdIQVNIX05PTkVcbiAgICAgICAqIC0gU0lHSEFTSF9OT05FfFNJR0hBU0hfQU5ZT05FQ0FOUEFZXG4gICAgICAgKiAtIFNJR0hBU0hfU0lOR0xFXG4gICAgICAgKiAtIFNJR0hBU0hfU0lOR0xFfFNJR0hBU0hfQU5ZT05FQ0FOUEFZXG4gICAgICAgKiBAZXhhbXBsZSBTSUdIQVNIX0FMTFxuICAgICAgICovXG4gICAgICBzaWdoYXNoX3R5cGU6IHN0cmluZztcbiAgICB9O1xuICAgIFRlbGVncmFtQXV0aFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHRlbGVncmFtIGJvdCBJRCAqL1xuICAgICAgYm90X2lkOiBzdHJpbmc7XG4gICAgICBlbnZpcm9ubWVudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUZWxlZ3JhbUVudmlyb25tZW50XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdGVsZWdyYW0gd2ViYXBwIGRhdGEgKGZvdW5kIGluIHRoZSBgdGdXZWJBcHBEYXRhYCBwYXJhbWV0ZXIgZW5jb2RlZCBpbiB0aGUgaGFzaCBzZWN0aW9uIG9mIHRoZSBVUkwpICovXG4gICAgICB0Z193ZWJfYXBwX2RhdGE6IHN0cmluZztcbiAgICB9O1xuICAgIFRlbGVncmFtQXV0aFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHRva2VuIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyB0ZWxlZ3JhbSB1c2VyICovXG4gICAgICBpZF90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRlbGVncmFtIGhhcyB0d28gZW52aXJvbm1lbnRzOiBwcm9kdWN0aW9uIGFuZCB0ZXN0XG4gICAgICogRWFjaCBvbmUgaGFzIGFuIGFzc29jaWF0ZWQgcHVibGljIGtleSBmb3IgdmVyaWZ5aW5nIHNpZ25hdHVyZXMsXG4gICAgICogYW5kIHdlIGFzc2lnbiBlYWNoIG9uZSBhIHVuaXF1ZSBPSURDIGlzc3VlclxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgVGVsZWdyYW1FbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIgfCBcInRlc3RcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXF1ZXN0IGZvciB1c2luZyB0aGUgVGVuZGVybWludCBzaWduIGVuZHBvaW50LiAqL1xuICAgIFRlbmRlcm1pbnRTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBieXRlcyBvZiB0aGUgcHJvdG9idWYtZW5jb2RlZCBtZXNzYWdlIHRvIHNpZ24gYXMgYSBCQVNFNjQgc3RyaW5nLiAqL1xuICAgICAgbWVzc2FnZV9iYXNlNjQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGEgdGhyb3R0bGUgd2hpY2ggbGltaXRzIHRoZSBudW1iZXIgb2YgZW50aXRpZXMgd2l0aGluIGEgZ2l2ZW4gdGltZSB3aW5kb3cgKi9cbiAgICBUaHJvdHRsZUNvbmZpZzoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG51bWJlciBvZiBlbnRpdGllcyBhbGxvd2VkIHdpdGhpbiB0aGUgd2luZG93XG4gICAgICAgKi9cbiAgICAgIHRocmVzaG9sZDogbnVtYmVyO1xuICAgICAgd2luZG93OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBUaW1lb3V0RXJyb3JDb2RlOiBcIlBvbGljeUVuZ2luZVRpbWVvdXRcIiB8IFwiV2FzbVBvbGljeUV4ZWN1dGlvblRpbWVvdXRcIjtcbiAgICBUb2tlblJlcXVlc3Q6IHtcbiAgICAgIGdyYW50X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVmcmVzaEdyYW50VHlwZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlZnJlc2ggdG9rZW4gaXNzdWVkIHRvIHRoZSBjbGllbnQuICovXG4gICAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT0F1dGgyIHN0YW5kYXJkIFRva2VuIFJlc3BvbnNlLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NzQ5I3NlY3Rpb24tNC4yLjJcbiAgICAgKi9cbiAgICBUb2tlblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MgdG9rZW4gaXNzdWVkIGJ5IHRoZSBhdXRob3JpemF0aW9uIHNlcnZlci4gKi9cbiAgICAgIGFjY2Vzc190b2tlbjogc3RyaW5nO1xuICAgICAgZXhwaXJlc19pbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBPSURDIHRva2VuIGlzc3VlZCBieSBDdWJpc3QsIGNvbnRhaW5pbmcgdXNlciBpbmZvcm1hdGlvbiAqL1xuICAgICAgaWRfdG9rZW4/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVmcmVzaCB0b2tlbiBpc3N1ZWQgYnkgdGhlIGF1dGhvcml6YXRpb24gc2VydmVyLiAqL1xuICAgICAgcmVmcmVzaF90b2tlbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIHRoZSB0b2tlbiBpc3N1ZWQuIFZhbHVlIGlzIGNhc2UgaW5zZW5zaXRpdmUuICovXG4gICAgICB0b2tlbl90eXBlOiBzdHJpbmc7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgVG90cEFwcHJvdmVSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRPVFAgdmVyaWZpY2F0aW9uIGNvZGUgKi9cbiAgICAgIGNvZGU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBUT1RQIGNoYWxsZW5nZSAqL1xuICAgIFRvdHBDaGFsbGVuZ2VBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnQgVE9UUCBjb2RlICovXG4gICAgICBjb2RlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlIHRoYXQgd2FzIHJldHVybmVkIGZyb20gdGhlIFBPU1QgZW5kcG9pbnQgKi9cbiAgICAgIHRvdHBfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIFRvdHBJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIFRPVFAgY2hhbGxlbmdlLlxuICAgICAgICogQGV4YW1wbGUgVG90cENoYWxsZW5nZSM3ODkyZWJiYS01NjNlLTQ4NWItYmI3ZC1lMjYyNjczNjMyODZcbiAgICAgICAqL1xuICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3RhbmRhcmQgVE9UUCB1cmwgd2hpY2ggaW5jbHVkZXMgZXZlcnl0aGluZyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBUT1RQLlxuICAgICAgICogQGV4YW1wbGUgb3RwYXV0aDovL3RvdHAvQ3ViaXN0OmFsaWNlLSU0MGV4YW1wbGUuY29tP3NlY3JldD1EQUhGN0tDT1RRV1NPTUs0WEZFTU5IWE80SjQzM09ENyZpc3N1ZXI9Q3ViaXN0XG4gICAgICAgKi9cbiAgICAgIHRvdHBfdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gcmVzZXQgVE9UUC4gKi9cbiAgICBUb3RwUmVzZXRSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBpc3N1ZXI7IGRlZmF1bHRzIHRvIFwiQ3ViaXN0XCIuICovXG4gICAgICBpc3N1ZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgVHJhbnNhY3Rpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWRUcmFuc2FjdGlvblwiXTtcbiAgICBUcmFuc2FjdGlvbkFuZFN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGFzaCBvZiB0aGUgdHJhbnNhY3Rpb24gdGhhdCB3YXMgc2lnbmVkICovXG4gICAgICBoYXNoPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSByZXF1ZXN0IHJlY29yZC4gKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBub25jZSAoY29tcHV0ZWQgcmlnaHQgYmVmb3JlIHNpZ25pbmcpICovXG4gICAgICBub25jZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzaWduYXR1cmUgKi9cbiAgICAgIHNpZ25lZFJhd1RyYW5zYWN0aW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNbWlTdGF0dXNcIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIENoYWluLXNwZWNpZmljIHRyYW5zYWN0aW9uIGRldGFpbHMuICovXG4gICAgVHJhbnNhY3Rpb25EZXRhaWxzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bVRyYW5zYWN0aW9uRGV0YWlsc1wiXSAmIHtcbiAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgY2hhaW46IFwiRXZtXCI7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uIGNyZWF0ZWQgYnkgdGhlIFJQQyBBUEkuICovXG4gICAgVHJhbnNhY3Rpb25JbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRyYW5zYWN0aW9uXCJdICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gaWQuICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBxdWVyaWVzXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBUc1F1ZXJ5TmFtZTpcbiAgICAgIHwgXCJBY3RpdmVLZXlzXCJcbiAgICAgIHwgXCJBY3RpdmVVc2Vyc1wiXG4gICAgICB8IFwiVW5pcXVlU2lnbkluc1wiXG4gICAgICB8IFwiVXNlckNvdW50XCJcbiAgICAgIHwgXCJMYXRlc3RVc2VyQ291bnRcIlxuICAgICAgfCBcIktleUNvdW50XCJcbiAgICAgIHwgXCJMYXRlc3RLZXlDb3VudFwiXG4gICAgICB8IFwiQmlsbGluZ0V2ZW50c1wiXG4gICAgICB8IFwiT2lkY0xvZ2luc1wiXG4gICAgICB8IFwiU2lnbkV2ZW50c1wiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBzaWduZWQgdHJhbnNhY3Rpb24gKi9cbiAgICBUeFNpZ25hdHVyZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBLZWNjYWsgMjU2IEhhc2ggb2YgdGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gKi9cbiAgICAgIGhhc2g6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5vbmNlIChlaXRoZXIgcHJvdmlkZWQgZXhwbGljaXRseSBvciBjb21wdXRlZCByaWdodCBiZWZvcmUgc2lnbmluZykgKi9cbiAgICAgIG5vbmNlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmVkIHJhdyB0cmFuc2FjdGlvblxuICAgICAgICogQGV4YW1wbGUgMHhkYjMzYjAzYzJiODEwM2UyYThjMzYxZDNiNGY1YWJjNjdmOTZjNjkyMWRmNmUxNTFkNTMwODdhNWUxMmIxZTRmXG4gICAgICAgKi9cbiAgICAgIHNpZ25lZF90eDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCByZXByZXNlbnRpbmcgdGhlIHBlbmRpbmcgbWVzc2FnZSBzdGF0dXMgKi9cbiAgICBUeFN0YXR1czpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJQZW5kaW5nXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBzaWduZWQgdHJhbnNhY3Rpb24gKi9cbiAgICAgICAgICBzaWc6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gS2VjY2FrIDI1NiBIYXNoIG9mIHRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uICovXG4gICAgICAgICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBub25jZSAoZWl0aGVyIHByb3ZpZGVkIGV4cGxpY2l0bHkgb3IgY29tcHV0ZWQgcmlnaHQgYmVmb3JlIHNpZ25pbmcpICovXG4gICAgICAgICAgICBub25jZTogc3RyaW5nO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25lZCByYXcgdHJhbnNhY3Rpb25cbiAgICAgICAgICAgICAqIEBleGFtcGxlIDB4ZGIzM2IwM2MyYjgxMDNlMmE4YzM2MWQzYjRmNWFiYzY3Zjk2YzY5MjFkZjZlMTUxZDUzMDg3YTVlMTJiMWU0ZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaWduZWRfdHg6IHN0cmluZztcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJTaWduZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgc3RhdHVzOiBcIlJlamVjdGVkXCI7XG4gICAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIFtFSVAtNzEyXShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTcxMikgdHlwZWQgZGF0YSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBUeXBlZCBkYXRhIGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0eXBlIGluZm9ybWF0aW9uLCBkb21haW4gc2VwYXJhdG9yIHBhcmFtZXRlcnMgYW5kIHRoZVxuICAgICAqIG1lc3NhZ2Ugb2JqZWN0LlxuICAgICAqL1xuICAgIFR5cGVkRGF0YToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgW0VJUC03MTJdKGh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtNzEyKSBFSVA3MTJEb21haW4gb2JqZWN0LlxuICAgICAgICpcbiAgICAgICAqIEVJUDcxMkRvbWFpbiBpcyBhIEpTT04gb2JqZWN0IHdpdGggb25lIG9yIG1vcmUgb2YgdGhlIGJlbG93IGZpZWxkcy4gUHJvdG9jb2wgZGVzaWduZXJzIG9ubHkgbmVlZCB0byBpbmNsdWRlIHRoZSBmaWVsZHMgdGhhdCBtYWtlIHNlbnNlIGZvciB0aGVpciBzaWduaW5nIGRvbWFpbi5cbiAgICAgICAqL1xuICAgICAgZG9tYWluOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEVJUC0xNTUgY2hhaW4gaWQuIFRoZSB1c2VyLWFnZW50IHNob3VsZCByZWZ1c2Ugc2lnbmluZyBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGVcbiAgICAgICAgICogY3VycmVudGx5IGFjdGl2ZSBjaGFpbi5cbiAgICAgICAgICogQGV4YW1wbGUgMHgxXG4gICAgICAgICAqL1xuICAgICAgICBjaGFpbklkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByZWFkYWJsZSBuYW1lIG9mIHNpZ25pbmcgZG9tYWluLCBpLmUuLCB0aGUgbmFtZSBvZiB0aGUgREFwcCBvciB0aGUgcHJvdG9jb2wuXG4gICAgICAgICAqIEBleGFtcGxlIEV0aGVyIE1haWxcbiAgICAgICAgICovXG4gICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgZGlzYW1iaWd1YXRpbmcgc2FsdCBmb3IgdGhlIHByb3RvY29sLiBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgZG9tYWluIHNlcGFyYXRvciBvZiBsYXN0IHJlc29ydC4gQ2FuIGJlIGVpdGhlciBhIGhleC1lbmNvZGVkIHN0cmluZyBvciBieXRlIGFycmF5ICovXG4gICAgICAgIHNhbHQ/OiBzdHJpbmcgfCBudW1iZXJbXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdGhhdCB3aWxsIHZlcmlmeSB0aGUgc2lnbmF0dXJlLlxuICAgICAgICAgKiBAZXhhbXBsZSAweENjQ0NjY2NjQ0NDQ2NDQ0NDQ0NjQ2NDY2NDY0NDQ2NDY2NjY2NjY0NcbiAgICAgICAgICovXG4gICAgICAgIHZlcmlmeWluZ0NvbnRyYWN0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY3VycmVudCBtYWpvciB2ZXJzaW9uIG9mIHRoZSBzaWduaW5nIGRvbWFpbi4gU2lnbmF0dXJlcyBmcm9tIGRpZmZlcmVudCB2ZXJzaW9ucyBhcmUgbm90XG4gICAgICAgICAqIGNvbXBhdGlibGUuXG4gICAgICAgICAqIEBleGFtcGxlIDFcbiAgICAgICAgICovXG4gICAgICAgIHZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1lc3NhZ2UgdG8gYmUgc2lnbmVkLiAqL1xuICAgICAgbWVzc2FnZToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgICAgfTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2UuICovXG4gICAgICBwcmltYXJ5VHlwZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY3VzdG9tIHR5cGVzIHVzZWQgYnkgdGhpcyBtZXNzYWdlLiAqL1xuICAgICAgdHlwZXM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSBuYW1lICovXG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSB0eXBlICovXG4gICAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICB9W107XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFSVAtMjcxOCB0eXBlZCB0cmFuc2FjdGlvbiwgaW5jbHVkaW5nIEVJUC0xNTU5IHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMlwiIC4uLiB9YCksIGFuZCBsZWdhY3kgdHJhbnNhY3Rpb25zIChgeyBcInR5cGVcIjogXCIweDAwXCIgLi4uIH1gKS4gQWxsIHZhbHVlcyBpbiB0aGUgdHJhbnNhY3Rpb24gYXJlIGV4cGVjdGVkIHRvIGJlICgweC1wcmVmaXhlZCBvciBub3QpIGhleCBzdHJpbmdzIG9yIGJ5dGUgYXJyYXlzLiAqL1xuICAgIFR5cGVkVHJhbnNhY3Rpb246IE9uZU9mPFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDEgKi9cbiAgICAgICAgICBkYXRhPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDRjZjE4YThhNmExZmZlNzdmZWM2MDBkYTJiOTBlYzM1YmEwNTBiMDcgKi9cbiAgICAgICAgICBmcm9tPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDEgKi9cbiAgICAgICAgICBnYXM/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MSAqL1xuICAgICAgICAgIGdhc1ByaWNlPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDEgKi9cbiAgICAgICAgICBub25jZT86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgwNjhiZDUyOTQyNmY0ZjI3ZTI0OGJhZjM2ZTQ1NThlNDQwNzM4ZmJiICovXG4gICAgICAgICAgdG8/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDAgKi9cbiAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MSAqL1xuICAgICAgICAgIHZhbHVlPzogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcImFkZHJlc3NcIjogXCIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICAgKiAgICAgXCJzdG9yYWdlS2V5c1wiOiBbXG4gICAgICAgICAgICogICAgICAgXCIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGFjY2Vzc0xpc3Q/OiB7XG4gICAgICAgICAgICAvKiogQGV4YW1wbGUgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwICovXG4gICAgICAgICAgICBhZGRyZXNzPzogc3RyaW5nO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICAgKiAgIFwiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCJcbiAgICAgICAgICAgICAqIF1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3RvcmFnZUtleXM/OiBzdHJpbmdbXTtcbiAgICAgICAgICB9W107XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDEgKi9cbiAgICAgICAgICBkYXRhPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDRjZjE4YThhN2ExZmZlNzdmZWM2MDBkYTJiOTBlYzM1YmEwNTBiMDcgKi9cbiAgICAgICAgICBmcm9tPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDYxYTgwICovXG4gICAgICAgICAgZ2FzPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDk1MDJmOTAwICovXG4gICAgICAgICAgbWF4RmVlUGVyR2FzPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDk1MDJmOTAwICovXG4gICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4YiAqL1xuICAgICAgICAgIG5vbmNlPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDA2OGJkNTM5NDI2ZjRmMjdlMjQ4YmFmMzZlNDU1OGU0NDA3MzhmYmIgKi9cbiAgICAgICAgICB0bz86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgwMiAqL1xuICAgICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgxICovXG4gICAgICAgICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBVbmF1dGhvcml6ZWRFcnJvckNvZGU6XG4gICAgICB8IFwiQXV0aG9yaXphdGlvbkhlYWRlck1pc3NpbmdcIlxuICAgICAgfCBcIkVuZHBvaW50UmVxdWlyZXNVc2VyU2Vzc2lvblwiXG4gICAgICB8IFwiUmVmcmVzaFRva2VuTWlzc2luZ1wiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT25lIHRyYW5zZmVyIGVudHJ5IGluIFtgVW5pdmVyc2FsVHJhbnNmZXJIaXN0b3J5UmVzcG9uc2VgXS4gKi9cbiAgICBVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlFbnRyeToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbW91bnQgdHJhbnNmZXJyZWQsIGFzIGEgZGVjaW1hbCBzdHJpbmcuICovXG4gICAgICBhbW91bnQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXNzZXQgc3ltYm9sLiAqL1xuICAgICAgYXNzZXQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xpZW50LXN1cHBsaWVkIHRyYW5zZmVyIGlkLCBpZiBvbmUgd2FzIHNldCBvbiB0aGUgb3JpZ2luYWwgdHJhbnNmZXIuICovXG4gICAgICBjbGllbnRUcmFuSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGltZSBvZiB0aGUgdHJhbnNmZXIgKG1zIHNpbmNlIGVwb2NoKS5cbiAgICAgICAqL1xuICAgICAgY3JlYXRlVGltZVN0YW1wOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXYWxsZXQgdHlwZSBkZWJpdGVkIG9uIHRoZSBzb3VyY2Ugc2lkZS4gTGVmdCBhcyBgU3RyaW5nYCBmb3IgZm9yd2FyZFxuICAgICAgICogY29tcGF0aWJpbGl0eS5cbiAgICAgICAqL1xuICAgICAgZnJvbUFjY291bnRUeXBlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvdXJjZSBzdWItYWNjb3VudCBlbWFpbDsgYWJzZW50IHdoZW4gdGhlIHNvdXJjZSBpcyB0aGUgbWFzdGVyLiAqL1xuICAgICAgZnJvbUVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVHJhbnNmZXIgc3RhdHVzIChlLmcuIGBcIlNVQ0NFU1NcImApLiAqL1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdhbGxldCB0eXBlIGNyZWRpdGVkIG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlLiAqL1xuICAgICAgdG9BY2NvdW50VHlwZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXN0aW5hdGlvbiBzdWItYWNjb3VudCBlbWFpbDsgYWJzZW50IHdoZW4gdGhlIGRlc3RpbmF0aW9uIGlzIG1hc3Rlci4gKi9cbiAgICAgIHRvRW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNmZXIgaWQuIE1hdGNoZXMgdGhlIGB0cmFuSWRgIHJldHVybmVkIGJ5IHRoZSBvcmlnaW5hbFxuICAgICAgICogW2BVbml2ZXJzYWxUcmFuc2ZlclJlc3BvbnNlYF0uXG4gICAgICAgKi9cbiAgICAgIHRyYW5JZDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIGBHRVQgL3NhcGkvdjEvc3ViLWFjY291bnQvdW5pdmVyc2FsVHJhbnNmZXJgLlxuICAgICAqXG4gICAgICogTGlzdHMgdW5pdmVyc2FsIHRyYW5zZmVycyBpbml0aWF0ZWQgYnkgdGhlIG1hc3RlciBhY2NvdW50LiBBbGwgZmlsdGVyc1xuICAgICAqIGFyZSBvcHRpb25hbDsgaWYgYHN0YXJ0X3RpbWVgL2BlbmRfdGltZWAgYXJlIG9taXR0ZWQsIEJpbmFuY2UgcmV0dXJucyB0aGVcbiAgICAgKiBtb3N0IHJlY2VudCAzMCBkYXlzLiBCaW5hbmNlIGRvZXMgbm90IHN1cHBvcnQgZmlsdGVyaW5nIGJ5IGB0cmFuX2lkYFxuICAgICAqIGRpcmVjdGx5IOKAlCB1c2UgYGNsaWVudF90cmFuX2lkYCBpZiB5b3Ugc2V0IG9uZSB3aGVuIGluaXRpYXRpbmcgdGhlXG4gICAgICogdHJhbnNmZXIsIG9yIHBhZ2UgdGhyb3VnaCB0aGUgcmVzdWx0IGFuZCBtYXRjaCB0aGUgYHRyYW5JZGAgY2xpZW50LXNpZGUuXG4gICAgICovXG4gICAgVW5pdmVyc2FsVHJhbnNmZXJIaXN0b3J5UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBGaWx0ZXIgYnkgY2xpZW50LXN1cHBsaWVkIHRyYW5zZmVyIGlkLiAqL1xuICAgICAgY2xpZW50VHJhbklkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFdpbmRvdyBlbmQgKG1zIHNpbmNlIGVwb2NoKS5cbiAgICAgICAqL1xuICAgICAgZW5kVGltZT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEZpbHRlciB0byB0cmFuc2ZlcnMgb3JpZ2luYXRpbmcgZnJvbSB0aGlzIHN1Yi1hY2NvdW50IGVtYWlsLiAqL1xuICAgICAgZnJvbUVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFBhZ2Ugc2l6ZSAoQmluYW5jZSBkZWZhdWx0OiA1MDAsIG1heDogNTAwKS5cbiAgICAgICAqL1xuICAgICAgbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gMS1iYXNlZCBwYWdlIG51bWJlciAoQmluYW5jZSBkZWZhdWx0OiAxKS5cbiAgICAgICAqL1xuICAgICAgcGFnZT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaW5kb3cgc3RhcnQgKG1zIHNpbmNlIGVwb2NoKS5cbiAgICAgICAqL1xuICAgICAgc3RhcnRUaW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdGVyIHRvIHRyYW5zZmVycyBkZXN0aW5lZCBmb3IgdGhpcyBzdWItYWNjb3VudCBlbWFpbC4gKi9cbiAgICAgIHRvRW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSBmb3IgW2BCaW5hbmNlTWFuYWdlcjo6dW5pdmVyc2FsX3RyYW5zZmVyX2hpc3RvcnlgXS4gKi9cbiAgICBVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUcmFuc2ZlcnMgaW4gdGhlIGN1cnJlbnQgcGFnZS4gKi9cbiAgICAgIHJlc3VsdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlFbnRyeVwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVG90YWwgbnVtYmVyIG9mIHRyYW5zZmVycyBtYXRjaGluZyB0aGUgZmlsdGVycyBhY3Jvc3MgYWxsIHBhZ2VzLlxuICAgICAgICovXG4gICAgICB0b3RhbENvdW50OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYFBPU1QgL3NhcGkvdjEvc3ViLWFjY291bnQvdW5pdmVyc2FsVHJhbnNmZXJgLlxuICAgICAqXG4gICAgICogVHJhbnNmZXJzIGFuIGFzc2V0IGJldHdlZW4gYW55IHR3byBhY2NvdW50cyAobWFzdGVyIHRvL2Zyb20gc3ViLCBvciBzdWJcbiAgICAgKiB0by9mcm9tIHN1YikgYW5kIGJldHdlZW4gYW55IHR3byB3YWxsZXQgdHlwZXMgKHNwb3QsIGZ1dHVyZXMsIG1hcmdpbiwgZXRjKS5cbiAgICAgKiBUaGUgc2lnbmluZyBjcmVkZW50aWFsICh0aGUgQVBJIGtleSArIEVkMjU1MTkga2V5IHBhaXIpIG11c3QgYmVsb25nIHRvIHRoZVxuICAgICAqIG1hc3RlciBhY2NvdW50LlxuICAgICAqL1xuICAgIFVuaXZlcnNhbFRyYW5zZmVyUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYW1vdW50IGJlaW5nIHRyYW5zZmVycmVkLCBhcyBhIGRlY2ltYWwgc3RyaW5nLiAqL1xuICAgICAgYW1vdW50OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhc3NldCBzeW1ib2wgYmVpbmcgdHJhbnNmZXJyZWQgKGUuZy4gYFwiVVNEVFwiYCkuICovXG4gICAgICBhc3NldDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgY2xpZW50LXN1cHBsaWVkIHRyYW5zZmVyIGlkLiBJZiBzZXQsIEJpbmFuY2UgZWNob2VzIGl0IGJhY2tcbiAgICAgICAqIG9uIFtgVW5pdmVyc2FsVHJhbnNmZXJSZXNwb25zZTo6Y2xpZW50X3RyYW5faWRgXSBhbmQgbGV0cyBpdCBiZSB1c2VkXG4gICAgICAgKiBhcyBhIGZpbHRlciBvblxuICAgICAgICogW2BVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlSZXF1ZXN0OjpjbGllbnRfdHJhbl9pZGBdLlxuICAgICAgICovXG4gICAgICBjbGllbnRUcmFuSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgZnJvbUFjY291bnRUeXBlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NvdW50VHlwZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU291cmNlIHN1Yi1hY2NvdW50IGVtYWlsLiBJZiBgTm9uZWAsIHRoZSBzb3VyY2UgaXMgdGhlIG1hc3RlciBhY2NvdW50LiAqL1xuICAgICAgZnJvbUVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHRvQWNjb3VudFR5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY291bnRUeXBlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXN0aW5hdGlvbiBzdWItYWNjb3VudCBlbWFpbC4gSWYgYE5vbmVgLCB0aGUgZGVzdGluYXRpb24gaXMgdGhlIG1hc3RlciBhY2NvdW50LiAqL1xuICAgICAgdG9FbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGZvciBbYEJpbmFuY2VNYW5hZ2VyOjp1bml2ZXJzYWxfdHJhbnNmZXJgXS4gKi9cbiAgICBVbml2ZXJzYWxUcmFuc2ZlclJlc3BvbnNlOiB7XG4gICAgICBjbGllbnRUcmFuSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgIHRyYW5JZDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25zIHRoYXQgc2hvdWxkIGJlIHNldCBvbmx5IGZvciBsb2NhbCBkZXZuZXQgdGVzdGluZy4gKi9cbiAgICBVbnNhZmVDb25mOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgYWRkcmVzcyBvZiB0aGUgZGVwb3NpdCBjb250cmFjdC4gSWYgb21pdHRlZCwgaW5mZXJyZWQgZnJvbSBgY2hhaW5faWRgXG4gICAgICAgKiBAZXhhbXBsZSAweGZmNTBlZDNkMGVjMDNhYzAxZDRjNzlhYWQ3NDkyOGJmZjQ4YTdiMmJcbiAgICAgICAqL1xuICAgICAgZGVwb3NpdF9jb250cmFjdF9hZGRyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCA0LWJ5dGUgZm9yayB2ZXJzaW9uXG4gICAgICAgKiBAZXhhbXBsZSAweDAwMDAxMDIwXG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfZm9ya192ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIFVuc3Rha2VSZXF1ZXN0OiB7XG4gICAgICBlcG9jaD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl0gfCBudWxsO1xuICAgICAgZm9yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGb3JrXCJdO1xuICAgICAgZ2VuZXNpc19kYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkdlbmVzaXNEYXRhXCJdO1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXR3b3JrXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9yIGluZGV4IChgdWludDY0YCkgdG8gZXhpdC4gWW91IGNhbiBnZXQgdGhlIHZhbGlkYXRvciBpbmRleCBmcm9tIHRoZSBCZWFjb24gbm9kZSdzXG4gICAgICAgKiBgL2V0aC92MS9iZWFjb24vc3RhdGVzL2hlYWQvdmFsaWRhdG9ycy97cHVia2V5fWAgZW5kLXBvaW50LiBUaGlzIGVuZCBwb2ludCByZXR1cm5zIGFuXG4gICAgICAgKiBvYmplY3QgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFsaWRhdG9yICh3aG9zZSBwdWJsaWMga2V5IGlzIGB7cHVia2V5fWApLFxuICAgICAgICogaW5jbHVkaW5nIHRoZSB2YWxpZGF0b3IgaW5kZXguIFRoZSBzY2hlbWEgb2YgdGhpcyBlbmQtcG9pbnQgaXMgZGVmaW5lZFxuICAgICAgICogW2hlcmVdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL2dldFN0YXRlVmFsaWRhdG9yKS5cbiAgICAgICAqIEBleGFtcGxlIDMxMzM3XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVzcG9uc2UgdG8gc2lnbiBhbiBldGgyIHVuc3Rha2UgcmVxdWVzdC4gKi9cbiAgICBVbnN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIG1lc3NhZ2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVm9sdW50YXJ5RXhpdFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJMUyBzaWduYXR1cmUuXG4gICAgICAgKiBAZXhhbXBsZSAweDkxMGM3Y2Q1MzdlZDkxY2M4YzRhODJmM2NiZDgzMmU5YmU4YzI0YTIyZTljODZkZjQ3OWY3Y2U0MjAyNWVhNmEwOTYxOWI0MThiNjY2YTA2MGUyNjBkMmFhZTMxYjhlNTBlOWQwNWNhMzQ0MmM3ZWVkM2I1MDdlNTIwN2UxNDY3NDI3NWY2OGMyYmE4NGM0YmY2YjhkZDM2NGEzMDRhY2FjOGNmYWIzNjgxZTI1MTRiNDQwMGY5MjQyYmM2MTE2NFxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdXBkYXRlIGEgYnVja2V0LiAqL1xuICAgIFVwZGF0ZUJ1Y2tldFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWNjZXNzLWNvbnRyb2wgZW50cmllcyBkZWZpbmluZyBob3cgdGhlIGJ1Y2tldCBjYW4gYmUgYWNjZXNzZWQuICovXG4gICAgICBhY2w/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGluZyBvbmx5IHN1Y2NlZWRzIGlmIHRoZSBjdXJyZW50IHZlcnNpb24gbWF0Y2hlcyB0aGlzIHZhbHVlLlxuICAgICAgICovXG4gICAgICBleHBlY3RlZF92ZXJzaW9uPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgdGhlIG93bmVyIG9mIHRoZSBidWNrZXRcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXG4gICAgICAgKi9cbiAgICAgIG93bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byB1cGRhdGUgYSBDb250YWN0LiAqL1xuICAgIFVwZGF0ZUNvbnRhY3RSZXF1ZXN0OiB7XG4gICAgICBhZGRyZXNzZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZHJlc3NNYXBcIl0gfCBudWxsO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBuZXcgc2V0IG9mIGxhYmVscyBmb3IgdGhlIGNvbnRhY3QuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiY3ViaXN0OmVyYzIwX3Rva2VuXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgbGFiZWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb250YWN0TGFiZWxcIl1bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbmV3IHZhbHVlIGZvciB0aGUgb3B0aW9uYWwgdXNlci1kZWZpbmVkIG1ldGFkYXRhIGFib3V0IHRoZSBjb250YWN0LiAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBuZXcgbmFtZSBmb3IgdGhlIGNvbnRhY3QuIE11c3QgYmUgYSB1bmlxdWUgbmFtZSBhbW9uZyBjb250YWN0cyBpbiB0aGVcbiAgICAgICAqIG9yZy4gTmFtZSBtdXN0IGNvbnNpc3Qgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHNwYWNlcywgYC5gIGFuZCBgLWAsXG4gICAgICAgKiBhbmQgY2Fubm90IGJlIGxvbmdlciB0aGFuIDUwIGNoYXJhY3RlcnMuXG4gICAgICAgKiBAZXhhbXBsZSBTYXRvc2hpIE5ha2Ftb3RvXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgb3duZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZUtleVJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlQW5kVXBkYXRlS2V5UHJvcGVydGllc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUga2V5J3MgYGVuYWJsZWRgIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKiBPbmNlIGRpc2FibGVkLCBhIGtleSBjYW5ub3QgYmUgdXNlZCBmb3Igc2lnbmluZy5cbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCBwYXRjaCB0aGUga2V5J3Mgc3RydWN0dXJlZCBbYEtleVByb3BlcnRpZXNgXS4gVGhlIHBhdGNoJ3MgdmFyaWFudCBtdXN0XG4gICAgICAgKiBtYXRjaCB0aGUga2V5J3MgW2BLZXlUeXBlYF0gKGUuZy4gYEJpbmFuY2VBcGlgIHByb3BlcnRpZXMgYXJlIG9ubHkgYWxsb3dlZCBvblxuICAgICAgICogYEVkMjU1MTlCaW5hbmNlQXBpYCBrZXlzKS4gRWFjaCBmaWVsZCBpbiB0aGUgcGF0Y2ggaXMgaW5kZXBlbmRlbnQ6IG1pc3NpbmdcbiAgICAgICAqIG1lYW5zIGxlYXZlIGFsb25lLCBKU09OIGBudWxsYCBjbGVhcnMsIGEgdmFsdWUgc2V0cy4gU2VuZGluZyBKU09OIGBudWxsYCBmb3JcbiAgICAgICAqIHRoZSB3aG9sZSBmaWVsZCBjbGVhcnMgYWxsIHByb3BlcnRpZXMgb24gdGhlIGtleS5cbiAgICAgICAqL1xuICAgICAgcHJvcGVydGllcz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIGNoYW5nZSB0aGUga2V5J3MgcmVnaW9uIGFmZmluaXR5IHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBpcyBhIHJlZ2lvbi1sb2NrZWQgb3BlcmF0aW9uLCBpLmUuLCBpdCBjYW4gb25seSBiZSBwZXJmb3JtZWRcbiAgICAgICAqIGZyb20gdGhlIHJlZ2lvbiBtYXRjaGluZyB0aGUga2V5J3MgY3VycmVudCByZWdpb24gYWZmaW5pdHlcbiAgICAgICAqL1xuICAgICAgcmVnaW9uPzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGluZyB0aGUgbWV0YWRhdGEgb25seSBzdWNjZWVkcyBpZiB0aGUgdmVyc2lvbiBtYXRjaGVzIHRoaXMgdmFsdWUuXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQb2xpY3kgRW5naW5lIGNvbmZpZ3VyYXRpb25zLiAqL1xuICAgIFVwZGF0ZU9yZ1BvbGljeUVuZ2luZUNvbmZpZ3M6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93ZWQgZG9tYWlucyBmb3IgSFRUUCByZXF1ZXN0c1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcImN1YmlzdC5kZXY6NDQzXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgYWxsb3dlZF9odHRwX2F1dGhvcml0aWVzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1JlcXVlc3Q6IHtcbiAgICAgIGFsaWVuX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNRkEgdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSB1c2VkIGZvciBpbXBsaWNpdGx5IHNlY3VyaXR5LXNlbnNpdGl2ZVxuICAgICAgICogb3BlcmF0aW9ucyAobGlrZSBsb2dnaW5nIGluLCBhZGRpbmcgYW4gTUZBIGZhY3RvciwgZXhwb3J0aW5nIGtleXMsIGV0Yy4pLlxuICAgICAgICogQGV4YW1wbGUge1xuICAgICAgICogICBcIkRlZmF1bHRcIjogW1xuICAgICAgICogICAgIFwiRmlkb1wiLFxuICAgICAgICogICAgIFwiVG90cFwiLFxuICAgICAgICogICAgIFwiRW1haWxPdHBcIlxuICAgICAgICogICBdLFxuICAgICAgICogICBcIktleUV4cG9ydFwiOiBbXG4gICAgICAgKiAgICAgXCJGaWRvXCJcbiAgICAgICAqICAgXVxuICAgICAgICogfVxuICAgICAgICovXG4gICAgICBhbGxvd2VkX21mYV90eXBlcz86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdW107XG4gICAgICB9IHwgbnVsbDtcbiAgICAgIGN1c3RvbV9jaGFpbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1c3RvbUNoYWluc0RhdGFcIl0gfCBudWxsO1xuICAgICAgZGVmYXVsdF9pbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXSB8IG51bGw7XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXSB8IG51bGw7XG4gICAgICBlbWFpbF9wcmVmZXJlbmNlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxQcmVmZXJlbmNlc1wiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgYGVuYWJsZWRgIGZpZWxkIHRvIHRoaXMgdmFsdWUuICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICBleHRfcHJvcHM/OlxuICAgICAgICB8ICh7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFRoaXMgc2V0dGluZyBpcyBjaGVja2VkIG9ubHkgd2hlbiBhbiBhbGllbiB1c2VyIHJlcXVlc3RzIHRvIGNyZWF0ZSBvciBpbXBvcnQgYSBuZXcga2V5LlxuICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFsaWVuX2tleV9jb3VudF90aHJlc2hvbGQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0aW5nIHdpbGwgc3VjY2VlZCBpZiB0aGUgY3VycmVudCB2ZXJzaW9uIG1hdGNoZXMgdGhpcyB2YWx1ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2ZXJzaW9uPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICB9KVxuICAgICAgICB8IG51bGw7XG4gICAgICBoaXN0b3JpY2FsX2RhdGFfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uXCJdIHwgbnVsbDtcbiAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl0gfCBudWxsO1xuICAgICAga2V5X2V4cG9ydF9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgbWVtYmVyX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIG5vdGlmaWNhdGlvbiBlbmRwb2ludHMuIE5vdGlmaWNhdGlvbiBlbmRwb2ludHMgYXJlIGV4cGVjdGVkIHRvIGJlXG4gICAgICAgKiBIVFRQUyBVUkxzLCB3aGljaCBhY2NlcHQgUE9TVCByZXF1ZXN0cy4gVGhlIGJvZHkgb2YgdGhlIHJlcXVlc3RzIHNlbnQgdG8gdGhlc2UgZW5kcG9pbnRzIGFyZVxuICAgICAgICogYXJlIGZvcm1hdHRlZCBpbiBKU09OIGFuZCBoYXZlIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgICAgICpcbiAgICAgICAqIGBgYGpzb25cbiAgICAgICAqIHtcbiAgICAgICAqIFwib3JnXCI6IFwiLi4uXCIsXG4gICAgICAgKiBcInV0Y190aW1lc3RhbXBcIjogXCIuLi5cIixcbiAgICAgICAqIFwib3JnX2V2ZW50XCI6IFwiLi4uXCIsXG4gICAgICAgKiAuLi5cbiAgICAgICAqIH1cbiAgICAgICAqIGBgYFxuICAgICAgICpcbiAgICAgICAqIGBvcmdgIGlzIHRoZSBvcmcgaWQsIGB1dGNfdGltZXN0YW1wYCBpcyB0aGUgVVRDIHRpbWVzdGFtcCBvZiB0aGUgZXZlbnQgaW4gbWlsbGlzZWNvbmRzLCBhbmRcbiAgICAgICAqIGBvcmdfZXZlbnRgIGlzIGEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSB0eXBlIG9mIGV2ZW50IHRoYXQgaGFzIG9jY3VycmVkLiBUaGUgcmVzdCBvZiB0aGVcbiAgICAgICAqIGZpZWxkcyBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgZXZlbnQuXG4gICAgICAgKlxuICAgICAgICogRW5kcG9pbnRzIGNhbiBvcHRpb25hbGx5IGluY2x1ZGUgZmlsdGVycyB0byBjdXN0b21pemUgdGhlIG9yZyBldmVudHMgdGhhdCB0aGV5IGFyZSBub3RpZmllZFxuICAgICAgICogYWJvdXQuIEN1cnJlbnRseSwgdGhlIG9ubHkgc3VwcG9ydGVkIGZpbHRlciB0eXBlIGlzIGBPbmVPZmAsIHdoaWNoIGV4cGVjdHMgYSBsaXN0IG9mIG9yZ1xuICAgICAgICogZXZlbnQgdHlwZXMgdG8gc2VuZCB0byB0aGUgZW5kcG9pbnQuIElmIG5vIGZpbHRlciBpcyBjb25maWd1cmVkLCB0aGUgc3lzdGVtIHNlbmRzIGFsbCBvcmdcbiAgICAgICAqIGV2ZW50cyB0byB0aGUgZW5kcG9pbnQuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcInVybDpcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MVwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcImZpbHRlclwiOiB7XG4gICAgICAgKiAgICAgICBcIk9uZU9mXCI6IFtcbiAgICAgICAqICAgICAgICAgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiLFxuICAgICAgICogICAgICAgICBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCJcbiAgICAgICAqICAgICAgIF1cbiAgICAgICAqICAgICB9LFxuICAgICAgICogICAgIFwidXJsOlwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQyXCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl1bXSB8IG51bGw7XG4gICAgICBwYXNza2V5X2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlDb25maWdcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEwLjEuMi4zLzhcIixcbiAgICAgICAqICAgICAgIFwiMTY5LjI1NC4xNy4xLzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgcG9saWN5X2VuZ2luZV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVPcmdQb2xpY3lFbmdpbmVDb25maWdzXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgYWxsIHVzZXIgbG9naW5zIHdpbGwgcmVxdWlyZSB0aGUgY2xhaW0gYGN1YmVzaWduZXJfc2NvcGVfY2VpbGluZ2AgdG8gYmUgcHJlc2VudCBpblxuICAgICAgICogdGhlIHVzZXIncyB0b2tlbi4gVGhpcyBjbGFpbSBpcyBhbiBhcnJheSBvZiBzY29wZXMgKGUuZy4gYFsgXCJtYW5hZ2U6a2V5czpsaXN0XCIsIFwic2lnbjpldm06dHhcIiBdYCksXG4gICAgICAgKiB3aGljaCBkZWZpbmUgYSBtYXhpbXVtIHNldCBvZiBzY29wZXMgdGhlIHVzZXIgbWF5IHJlcXVlc3QuIElmIHRoZSB1c2VyJ3MgdG9rZW4gZG9lcyBub3QgY29udGFpblxuICAgICAgICogdGhpcyBjbGFpbSwgdGhlIGxvZ2luIHdpbGwgYmUgcmVqZWN0ZWQuXG4gICAgICAgKlxuICAgICAgICogT3duZXJzIG9mIHRoZSBvcmcgYXJlIGV4ZW1wdCBmcm9tIHRoaXMgcmVxdWlyZW1lbnQuXG4gICAgICAgKi9cbiAgICAgIHJlcXVpcmVfc2NvcGVfY2VpbGluZz86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBzaWduIHJ1bGUgKG9sZCBzaWduIHJ1bGVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIE9ubHkgXCJkZW55XCItc3R5bGUgcnVsZXMgbWF5IGJlIHNldC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBbXG4gICAgICAgKiAgICAgICBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNpZ25fcG9saWN5PzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgVE9UUCBmYWlsdXJlIGxpbWl0LiBBZnRlciB0aGlzIG1hbnkgZmFpbHVyZXMsXG4gICAgICAgKiB0aGUgdXNlciBpcyByYXRlIGxpbWl0ZWQgdW50aWwgdGhlIG5leHQgMzAtc2Vjb25kIFRPVFAgd2luZG93LlxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIGFtb3VudCBvZiB0aW1lXG4gICAgICAgKiAoaW4gc2Vjb25kcykgYmV0d2VlbiBhIHVzZXIncyBpbml0aWF0aW5nIGFuIGV4cG9ydCBhbmQgdGhlIHRpbWUgd2hlblxuICAgICAgICogZXhwb3J0IGlzIGFsbG93ZWQuIEZvciBzZWN1cml0eSwgdGhpcyBkZWxheSBjYW5ub3QgYmUgc2V0IHRvIGxlc3MgdGhhblxuICAgICAgICogMTcyODAwLCBpLmUuLCAyIGRheXMuXG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X2RlbGF5PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0dXJuIHRoaXMgb3JnJ3MgdXNlciBleHBvcnQgb2ZmIChieSBwYXNzaW5nIGB0cnVlYCkgb3Igb24gKGJ5IHBhc3NpbmcgYGZhbHNlYCkuICovXG4gICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnQgb2YgdGltZVxuICAgICAgICogKGluIHNlY29uZHMpIHRoYXQgZXhwb3J0IGlzIGFsbG93ZWQgYWZ0ZXIgdGhlIHVzZXItZXhwb3J0IGRlbGF5LiBBZnRlclxuICAgICAgICogdGhpcyBhbW91bnQgb2YgdGltZSwgdGhlIGV4cG9ydCBpcyBjYW5jZWxlZCBhbmQgbXVzdCBiZSByZS1pbml0aWF0ZWQuXG4gICAgICAgKiBGb3Igc2VjdXJpdHksIHRoaXMgd2luZG93IGNhbm5vdCBiZSBzZXQgdG8gZ3JlYXRlciB0aGFuIDI1OTIwMCwgaS5lLixcbiAgICAgICAqIDMgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1Jlc3BvbnNlOiB7XG4gICAgICBhbGllbl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHR5cGVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgdXNlZCBmb3IgaW1wbGljaXRseSBzZWN1cml0eS1zZW5zaXRpdmVcbiAgICAgICAqIG9wZXJhdGlvbnMgKGxpa2UgbG9nZ2luZyBpbiwgYWRkaW5nIGFuIE1GQSBmYWN0b3IsIGV4cG9ydGluZyBrZXlzLCBldGMuKS5cbiAgICAgICAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgIGRlZmF1bHRfaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl0gfCBudWxsO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgZW1haWxfcHJlZmVyZW5jZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsUHJlZmVyZW5jZXNcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIGV4dF9kYXRhPzpcbiAgICAgICAgfCAoe1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUGVyIGFsaWVuIHVzZXIga2V5IGNvdW50IHRocmVzaG9sZCwgd2hpY2gsIG9uY2UgZXhjZWVkZWQsIGRpc2FsbG93cyBmdXJ0aGVyIGtleSBjcmVhdGlvbiBieSBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGlzIHNldHRpbmcgaXMgY2hlY2tlZCBvbmx5IHdoZW4gYW4gYWxpZW4gdXNlciByZXF1ZXN0cyB0byBjcmVhdGUgb3IgaW1wb3J0IGEgbmV3IGtleS5cbiAgICAgICAgICAgICAqIEluIG90aGVyIHdvcmRzLCBvcmcgYWRtaW5zIGNhbiBzdGlsbCBhc3NpZ24gdW5saW1pdGVkIG51bWJlciBvZiBrZXlzIHRvIHRoZWlyIGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhbGllbl9rZXlfY291bnRfdGhyZXNob2xkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICB9ICYge1xuICAgICAgICAgICAgY3JlYXRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICBsYXN0X21vZGlmaWVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFZlcnNpb24gb2YgdGhpcyBvYmplY3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICAgICAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+KVxuICAgICAgICB8IG51bGw7XG4gICAgICBoaXN0b3JpY2FsX2RhdGFfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uXCJdIHwgbnVsbDtcbiAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl0gfCBudWxsO1xuICAgICAga2V5X2V4cG9ydF9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgbWVtYmVyX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IG5vdGlmaWNhdGlvbiBlbmRwb2ludCBjb25maWd1cmF0aW9uc1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50XCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIHBhc3NrZXlfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGFzc2tleUNvbmZpZ1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICBwb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb25cIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHJlcXVpcmVfc2NvcGVfY2VpbGluZyAqL1xuICAgICAgcmVxdWlyZV9zY29wZV9jZWlsaW5nPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBvcmctd2lkZSBzaWduIHJ1bGVzXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNpZ25fcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgVE9UUCBmYWlsdXJlIGxpbWl0XG4gICAgICAgKi9cbiAgICAgIHRvdHBfZmFpbHVyZV9saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRlbGF5XG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X2RlbGF5PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCBkaXNhYmxlZCAqL1xuICAgICAgdXNlcl9leHBvcnRfZGlzYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgd2luZG93XG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdz86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOZXcgb3JnIHZlcnNpb25cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGJvZHkgZm9yIHVwZGF0aW5nIGEgbmFtZWQgcG9saWN5LiAqL1xuICAgIFVwZGF0ZVBvbGljeVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyBBY2Nlc3MtY29udHJvbCBlbnRyaWVzLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJhY3Rpb25cIjogXCJhdHRhY2hcIixcbiAgICAgICAqICAgICBcInJlc291cmNlc1wiOiBbXG4gICAgICAgKiAgICAgICB7XG4gICAgICAgKiAgICAgICAgIFwia2V5X2lkXCI6IFwiKlwiLFxuICAgICAgICogICAgICAgICBcInJvbGVfaWRcIjogXCJSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1wiXG4gICAgICAgKiAgICAgICB9XG4gICAgICAgKiAgICAgXSxcbiAgICAgICAqICAgICBcInN1YmplY3RzXCI6IFwiKlwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcImFjdGlvblwiOiBcInNpZ25cIixcbiAgICAgICAqICAgICBcInN1YmplY3RzXCI6IFwiUm9sZSNlNDI3YzI4YS05YzViLTQ5Y2MtYTI1Ny04NzhhZWE1OGEyMmNcIlxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGFjbD86IHVua25vd25bXSB8IG51bGw7XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbmV3IG1ldGFkYXRhLiAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIG5ldyBuYW1lIGZvciB0aGUgcG9saWN5LiAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbmV3IG93bmVyIGZvciB0aGUgcG9saWN5LiAqL1xuICAgICAgb3duZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBOZXcgcG9saWN5IHJ1bGVzLiAqL1xuICAgICAgcnVsZXM/OiB1bmtub3duW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgZm9yIHVwZGF0aW5nIE9yZy1sZXZlbCBwb2xpY3kgc2VjcmV0cyAqL1xuICAgIFVwZGF0ZVBvbGljeVNlY3JldHNSZXF1ZXN0OiB7XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXSB8IG51bGw7XG4gICAgfTtcbiAgICBVcGRhdGVSb2xlUmVxdWVzdDoge1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGVzIHRoZSByb2xlJ3MgYGVuYWJsZWRgIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKiBPbmNlIGRpc2FibGVkLCBhIHJvbGUgY2Fubm90IGJlIHVzZWQ7IGFuZCBpdCdzIHRva2VucyBjYW5ub3QgYmUgdXNlZCBmb3Igc2lnbmluZy5cbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyByb2xlJ3Mga2V5IHBvbGljaWVzIChvbGQgcG9saWNpZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiEpLlxuICAgICAgICogT25seSBcImRlbnlcIiBzdHlsZSBwb2xpY2llcyBtYXkgYmUgc2V0LlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IHVua25vd25bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIHJvbGUncyBzZXR0aW5ncyBmb3IgcmVzdHJpY3Rpbmcgd2hpY2ggbWVtYmVyIHJvbGVzIGFyZSBhbGxvd2VkIHRvXG4gICAgICAgKiBwZXJmb3JtIGFjdGlvbnMgb24gdGhpcyByb2xlLlxuICAgICAgICogQGV4YW1wbGUge1xuICAgICAgICogICBcIkNyZWF0ZVRva2VuXCI6IFtcbiAgICAgICAqICAgICBcIk93bmVyXCJcbiAgICAgICAqICAgXVxuICAgICAgICogfVxuICAgICAgICovXG4gICAgICByZXN0cmljdGVkX2FjdGlvbnM/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdO1xuICAgICAgfSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gdXBkYXRlIGFuIGV4aXN0aW5nIHVzZXIgKi9cbiAgICBVcGRhdGVVc2VyTWVtYmVyc2hpcFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRW5hYmxlIG9yIGRpc2FibGUgdXNlciAqL1xuICAgICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIHJvbGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRm9ybWF0OiBiaW5hcnlcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNIQS0yNTYgaGFzaCBvZiB0aGUgb2JqZWN0IGZvciBhbiBbVXBsb2FkUmVxdWVzdF0uXG4gICAgICovXG4gICAgVXBsb2FkT2JqZWN0SGFzaDogc3RyaW5nO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBmb3IgdXBsb2FkaW5nIGEgd2FzbSBwb2xpY3kgKi9cbiAgICBVcGxvYWRXYXNtUG9saWN5UmVxdWVzdDoge1xuICAgICAgaGFzaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGxvYWRPYmplY3RIYXNoXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gYSByZXF1ZXN0IGZvciB1cGxvYWRpbmcgYSB3YXNtIHBvbGljeSAqL1xuICAgIFVwbG9hZFdhc21Qb2xpY3lSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHNpZ25lZCBVUkwgZm9yIHVwbG9hZGluZyB0aGUgcmVxdWVzdGVkIHdhc20gcG9saWN5LiAqL1xuICAgICAgc2lnbmVkX3VybDogc3RyaW5nO1xuICAgIH07XG4gICAgVXNlckNvdW50RGltZW5zaW9uczoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVc2VyJ3MgbWVtYmVyc2hpcCBpbiB0aGUgb3JnICovXG4gICAgICBtZW1iZXJzaGlwOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtZXRyaWNzIG11c3QgaW5jbHVkZSAnb3JnX2lkJyBhcyBhIGRpbWVuc2lvbi4gKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gY29tcGxldGUgYSB1c2VyIGV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5IHRvIGJlIGV4cG9ydGVkLiBUaGUga2V5LWlkIG11c3QgY29ycmVzcG9uZCB0byB0aGUgb25lIGluXG4gICAgICAgKiB0aGUgc3BlY2lmaWVkIGV4cG9ydCByZXF1ZXN0LCBhbmQgdGhlIGNhbGxlciBtdXN0IG93biB0aGlzIGtleS5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dCBjb21wcmVzc2lvbilcbiAgICAgICAqIHRvIHdoaWNoIHRoZSBleHBvcnQgd2lsbCBiZSBlbmNyeXB0ZWQuIElmIGEgcHVibGljIGtleSB3YXMgcHJvdmlkZWQgd2hlblxuICAgICAgICogYHVzZXJfZXhwb3J0X2luaXRgIHdhcyBjYWxsZWQsIHRoaXMga2V5IG11c3QgbWF0Y2ggdGhhdCBvbmUuXG4gICAgICAgKiBAZXhhbXBsZSBBa3BMVC8zZFhBcEp6WFNkdWFQUTdhcHlUMEFEQndxa3QxZXMvYVQwaVdXZlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGVuY3J5cHRlZCB1c2VyLWV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXhwb3J0ZWQga2V5IG1hdGVyaWFsLCBlbmNyeXB0ZWQgd2l0aCBBRVMtMjU2LUdDTSB1bmRlciBhIGtleVxuICAgICAgICogZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0IHZpYSBIUEtFIChSRkM5MTgwKVxuICAgICAgICogd2l0aCBESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIGFuZCBiYXNlNjQgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgZW5jcnlwdGVkX2tleV9tYXRlcmlhbDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHVzZWQgZm9yIEhQS0Uga2V5IGRlcml2YXRpb24gYXMgYmFzZTY0LWVuY29kZWRcbiAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgKi9cbiAgICAgIGVwaGVtZXJhbF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHRvIHdoaWNoIHRoaXMga2V5IGJlbG9uZ3MuICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byBpbml0aWF0ZSBhIHVzZXIgZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydEluaXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSB0byBiZSBleHBvcnRlZC4gVGhpcyBrZXkgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyLlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIE5JU1QgUC0yNTYgcHVibGljIGtleSAoYmFzZTY0LWVuY29kZWQgU0VDMSB3aXRoIG9yIHdpdGhvdXRcbiAgICAgICAqIGNvbXByZXNzaW9uKSB0byB3aGljaCB0aGUgZXhwb3J0IHdpbGwgYmUgZW5jcnlwdGVkLiBJZiBwcm92aWRlZCwgdGhpc1xuICAgICAgICogcHVibGljIGtleSBNVVNUIGJlIHRoZSBvbmUgdXNlZCB0byBlbmNyeXB0IHRoZSBleHBvcnQgb25jZSB0aGUgZGVsYXkgaGFzXG4gICAgICAgKiBleHBpcmVkLiBPdGhlcndpc2UsIHRoZSB1c2VyIGNhbiBwcm92aWRlIGFueSBwdWJsaWMga2V5IHdoZW4gY29tcGxldGluZ1xuICAgICAgICogdGhlIGV4cG9ydCByZXF1ZXN0IHBvc3QgZGVsYXkuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcHRpb24gbWF5IHByb3ZpZGUgZXh0cmEgc2VjdXJpdHkgd2hlbiB0aGUgdXNlciBoYXMgYSBzZWN1cmUgaGFyZHdhcmVcbiAgICAgICAqIGRldmljZSAoZS5nLiwgYSBwaG9uZSdzIHNlY3VyZSBlbGVtZW50IG9yIGEgWXViaUtleSkgaW4gd2hpY2ggYSBOSVNUIFAtMjU2XG4gICAgICAgKiBzZWNyZXQga2V5IGNhbiBiZSBnZW5lcmF0ZWQuIFByb3ZpZGluZyB0aGUgY29ycmVzcG9uZGluZyBwdWJsaWMga2V5IGhlcmVcbiAgICAgICAqIGVuc3VyZXMgdGhhdCBvbmx5IHRoYXQgc3BlY2lmaWMgZGV2aWNlIHdpbGwgYmUgY2FwYWJsZSBvZiBkZWNyeXB0aW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGNpcGhlcnRleHQuXG4gICAgICAgKlxuICAgICAgICogSWYgbm8gc2VjdXJlIGhhcmR3YXJlIGRldmljZSBpcyBhdmFpbGFibGUgdG8gc3RvcmUgdGhlIHNlY3JldCBrZXksIHRoaXNcbiAgICAgICAqIG9wdGlvbiBTSE9VTEQgTk9UIGJlIHVzZWQgYmVjYXVzZSBvZiB0aGUgcmlzayBvZiBzZWNyZXQga2V5IHRoZWZ0IGR1cmluZ1xuICAgICAgICogdGhlIGV4cG9ydCBkZWxheSBwZXJpb2QuXG4gICAgICAgKiBAZXhhbXBsZSBBa3BMVC8zZFhBcEp6WFNkdWFQUTdhcHlUMEFEQndxa3QxZXMvYVQwaVdXZlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgc3VjY2Vzc2Z1bCB1c2VyLWV4cG9ydCBpbml0IHJlcXVlc3QgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRSZXF1ZXN0XCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGtleS1pZCBiZWluZyByZXF1ZXN0ZWQuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQZW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3QgYXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gKi9cbiAgICBVc2VyRXhwb3J0UmVxdWVzdDoge1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnLWlkIGluIHdoaWNoIHRoZSBrZXkgaXMgaG91c2VkLlxuICAgICAgICogQGV4YW1wbGUgT3JnI2YzNjFlZDZiLTVkMTktNGNjZi1hNGQ1LWViYTkzNWRjMGI5MFxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIHB1YmxpYyBrZXkgcHJvdmlkZWQgYXQgZXhwb3J0IGluaXRpYXRpb24sXG4gICAgICAgKiBpZiBhbnkuIElmIGEga2V5IHdhcyBwcm92aWRlZCwgb25seSB0aGF0IGtleSBjYW4gYmUgdXNlZCB0byBjb21wbGV0ZVxuICAgICAgICogdGhlIGV4cG9ydCBwcm9jZWR1cmUuIE90aGVyd2lzZSwgYW55IGtleSBjYW4gYmUgdXNlZC5cbiAgICAgICAqXG4gICAgICAgKiBJTVBPUlRBTlQ6IGlmIGEgcHVibGljIGtleSBpcyBzdXBwbGllZCBhdCBleHBvcnQgaW5pdGlhdGlvbiwgaXQgaXNcbiAgICAgICAqIFNUUk9OR0xZIFJFQ09NTUVOREVEIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgc2VjcmV0IGtleSBiZSBzdG9yZWQgaW5cbiAgICAgICAqIGEgc2VjdXJlIGhhcmR3YXJlIGRldmljZSwgZS5nLiwgYSBZdWJpS2V5IG9yIGEgcGhvbmUncyBzZWN1cmUgZWxlbWVudC5cbiAgICAgICAqIElmIG5vIHN1Y2ggaGFyZHdhcmUgaXMgYXZhaWxhYmxlLCBzdXBwbHlpbmcgYSBwdWJsaWMga2V5IGF0IGV4cG9ydFxuICAgICAgICogaW5pdGlhdGlvbiBpcyBTVFJPTkdMWSBESVNDT1VSQUdFRCBiZWNhdXNlIG9mIHRoZSByaXNrIG9mIHRoZWZ0IGR1cmluZ1xuICAgICAgICogdGhlIGV4cG9ydCBkZWxheSBwZXJpb2QuXG4gICAgICAgKlxuICAgICAgICogKFNlZSBhbHNvIHRoZSBjb21tZW50IGluIHRoZSBgcHVibGljX2tleWAgZmllbGQgb2YgYFVzZXJJbml0UmVxdWVzdGAuKVxuICAgICAgICogQGV4YW1wbGUgZGY0NTdhOThkNTUzODU0MGY1NGQxMzE2YjU5N2EwZjM5YjhkOTZmNDg4ZjEwYTJlMzFhOTU1YzE0NmZkZjFkM1xuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5X2hhc2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdmFsaWRfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIFVzZXJJbk9yZ0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZW1haWwgKG9wdGlvbmFsKVxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSB1c2VyIGhhcyBldmVyIHN1Y2Nlc3NmdWxseSBsb2dnZWQgaW4gKi9cbiAgICAgIGluaXRpYWxpemVkPzogYm9vbGVhbjtcbiAgICAgIG1lbWJlcnNoaXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdXNlciBuYW1lLiAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyc2hpcFN0YXR1c1wiXTtcbiAgICAgIHZlcmlmaWVkX2VtYWlsPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWZXJpZmllZEVtYWlsXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFVzZXJJbk9yZ0luZm9XaXRoSWRlbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZW1haWwgKG9wdGlvbmFsKVxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSB1c2VyIGhhcyBldmVyIHN1Y2Nlc3NmdWxseSBsb2dnZWQgaW4gKi9cbiAgICAgIGluaXRpYWxpemVkPzogYm9vbGVhbjtcbiAgICAgIG1lbWJlcnNoaXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdXNlciBuYW1lLiAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyc2hpcFN0YXR1c1wiXTtcbiAgICAgIHZlcmlmaWVkX2VtYWlsPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWZXJpZmllZEVtYWlsXCJdIHwgbnVsbDtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB0aGlyZC1wYXJ0eSBpZGVudGl0aWVzIHZpYSB3aGljaCB0aGUgdXNlciB3YXMgZm91bmQgKi9cbiAgICAgIGlkZW50aXRpZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkZW50aXR5SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgdXNlcidzIG1lbWJlcnNoaXAgaW4gYW4gb3JnYW5pemF0aW9uXG4gICAgICogKHdpdGhvdXQgaW5jbHVkaW5nIGFueSBpbmZvIGFib3V0IHRoZSB1c2VyKVxuICAgICAqL1xuICAgIFVzZXJJbk9yZ01lbWJlcnNoaXA6IHtcbiAgICAgIG1lbWJlcnNoaXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9yZ2FuaXphdGlvbiBpZFxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJzaGlwU3RhdHVzXCJdO1xuICAgIH07XG4gICAgVXNlckluUm9sZUluZm86IHtcbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIFVzZXJJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBlbWFpbFxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgbWZhX3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG5hbWVcbiAgICAgICAqIEBleGFtcGxlIEFsaWNlXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG8uIERlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgJ29yZ3MnLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIk9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBvcmdfaWRzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG9yZ2FuaXphdGlvbnMgdGhlIHVzZXIgYmVsb25ncyB0bywgaW5jbHVkaW5nIHRoZSBtZW1iZXJzaGlwIHJvbGUgaW4gZWFjaC4gKi9cbiAgICAgIG9yZ3M6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnTWVtYmVyc2hpcFwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIHZlcmlmaWVkX2VtYWlsPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWZXJpZmllZEVtYWlsXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIHRoZSB1c2VyL29yZ3MgZW5kcG9pbnQgKi9cbiAgICBVc2VyT3Jnc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIG9yZ3MgdGhpcyB1c2VyIGlzIGEgbWVtYmVyIG9mICovXG4gICAgICBvcmdzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0RhdGFcIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIFdlYkF1dGhuIFJlbHlpbmcgUGFydHkgbWF5IHJlcXVpcmUgdXNlciB2ZXJpZmljYXRpb24gZm9yIHNvbWUgb2YgaXRzXG4gICAgICogb3BlcmF0aW9ucyBidXQgbm90IGZvciBvdGhlcnMsIGFuZCBtYXkgdXNlIHRoaXMgdHlwZSB0byBleHByZXNzIGl0cyBuZWVkcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtLXVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OiBcInJlcXVpcmVkXCIgfCBcImRpc2NvdXJhZ2VkXCIgfCBcInByZWZlcnJlZFwiO1xuICAgIFZlcmlmaWVkRW1haWw6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRW1haWwgYWRkcmVzcyAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIExhc3QgdGltZSB0aGlzIHJlY29yZCB3YXMgdXBkYXRlZCAoaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoKVxuICAgICAgICovXG4gICAgICB1cGRhdGVkX2F0OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQW4gZXhpdCB2b2x1bnRhcmlseSBzdWJtaXR0ZWQgYSB2YWxpZGF0b3Igd2hvIHdpc2hlcyB0byB3aXRoZHJhdy5cbiAgICAgKiBUaGUgc2NoZW1hIGZvciB0aGlzIG1lc3NhZ2UgaXMgZGVmaW5lZFxuICAgICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vY29uc2Vuc3VzLXNwZWNzL2Jsb2IvdjEuMC4xL3NwZWNzL3BoYXNlMC9iZWFjb24tY2hhaW4ubWQjc2lnbmVkdm9sdW50YXJ5ZXhpdCkuXG4gICAgICovXG4gICAgVm9sdW50YXJ5RXhpdDoge1xuICAgICAgZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJbmRleCBvZiB0aGUgZXhpdGluZyB2YWxpZGF0b3IuXG4gICAgICAgKiBAZXhhbXBsZSAyNTZcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2luZGV4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGludm9raW5nIGEgV2FzbSBwb2xpY3kuICovXG4gICAgV2FzbVBvbGljeVJlc3BvbnNlOlxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgcmVzcG9uc2U6IFwiQWxsb3dcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVhc29uIGZvciB0aGUgZGVuaWFsLiAqL1xuICAgICAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHJlc3BvbnNlOiBcIkRlbnlcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZXJyb3IgZnJvbSB0aGUgUG9saWN5IEVuZ2luZS4gKi9cbiAgICAgICAgICBlcnJvcjogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHJlc3BvbnNlOiBcIkVycm9yXCI7XG4gICAgICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHdhc20gcG9saWN5IHJ1bGUgdGhhdCBjYW4gYmUgZXhlY3V0ZWQgaW4gdGhlIHdhc20gZW5naW5lLiAqL1xuICAgIFdhc21SdWxlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBTSEEtMjU2IGhhc2ggb2YgYSB3YXNtIHBvbGljeSB0aGF0IGNhbiBiZSB1c2VkIHRvIGxvb2sgaXQgdXAgaW4gdGhlIHBvbGljeSBzdG9yZS4gKi9cbiAgICAgIGhhc2g6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElkIG9mIHRoZSBwb2xpY3kgdGhpcyB3YXNtIHJ1bGUgYmVsb25ncyB0by4gKi9cbiAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFsbG93ZWQgd2ViaG9vayBtZXRob2RzXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBXZWJob29rTWV0aG9kOiBcIkdFVFwiIHwgXCJQT1NUXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXlsb2FkIHRoYXQgaXMgc2VudCB0byB0aGUgd2ViaG9vay5cbiAgICAgKlxuICAgICAqIFRoZSB3ZWJob29rIHNob3VsZCByZXNwb25kIHdpdGggSFRUUCBzdGF0dXMgY29kZSAyMDAgaWYgdGhlIG9wZXJhdGlvbiBpcyBwZXJtaXR0ZWQuXG4gICAgICpcbiAgICAgKiBBbGwgbm9uLTIwMCBzdGF0dXMgY29kZXMgaW1wbHkgdGhhdCB0aGUgb3BlcmF0aW9uIGlzIGRlbmllZDsgYW55IHJlc3BvbnNlIGJvZHkgcmV0dXJuZWRcbiAgICAgKiBieSB0aGUgd2ViaG9vayB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBlcnJvciByZXNwb25zZSBzZW50IGJhY2sgdG8gdGhlIGNsaWVudC5cbiAgICAgKi9cbiAgICBXZWJob29rUGF5bG9hZDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWRkcmVzcyAobWF0ZXJpYWwgaWQpIG9mIHRoZSBrZXkgdXNlZCB0byBzaWduIHRoZSByZXF1ZXN0ICovXG4gICAgICBrZXlfYWRkcmVzczogc3RyaW5nO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIG9wZXJhdGlvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcGVyYXRpb25LaW5kXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcGF5bG9hZCAoaWYgYW55KSBvZiB0aGUgc2lnbiBvcGVyYXRpb24gKi9cbiAgICAgIHJlcXVlc3Q/OiB1bmtub3duO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciB0aGUgW0Rlbnk6OldlYmhvb2tdIHBvbGljeS4gKi9cbiAgICBXZWJob29rUG9saWN5UGFyYW1zOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIEhUVFAgaGVhZGVycyB0byBzZXQgKi9cbiAgICAgIGhlYWRlcnM/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgIH07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIEhUVFAgbWV0aG9kIHRvIHVzZS4gRGVmYXVsdHMgdG8gUE9TVC4gKi9cbiAgICAgIG1ldGhvZD86IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEN1YmVTaWduZXIgb3BlcmF0aW9ucyB0byB3aGljaCB0aGlzIHBvbGljeSBzaG91bGQgYXBwbHkuXG4gICAgICAgKiBXaGVuIG9taXR0ZWQsIGFwcGxpZXMgdG8gYWxsIG9wZXJhdGlvbnMuXG4gICAgICAgKi9cbiAgICAgIHJlc3RyaWN0ZWRfb3BlcmF0aW9ucz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3BlcmF0aW9uS2luZFwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgZXhlY3V0aW9uIHRpbWVvdXQgaW4gc2Vjb25kczsgbXVzdCBub3QgZXhjZWVkIDUgc2Vjb25kcy5cbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHVybCBvZiB0aGUgd2ViaG9vayAqL1xuICAgICAgdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICBXaGVyZUFuZFdoZW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU291cmNlSXBcIl0gJiB7XG4gICAgICB0aW1lOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9uZSB3aXRoZHJhd2FsIGVudHJ5IGluIFtgV2l0aGRyYXdIaXN0b3J5UmVzcG9uc2VgXS4gKi9cbiAgICBXaXRoZHJhd0hpc3RvcnlFbnRyeToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXN0aW5hdGlvbiBhZGRyZXNzLiAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaXRoZHJhd2FsIGFtb3VudCwgYXMgYSBkZWNpbWFsIHN0cmluZy4gKi9cbiAgICAgIGFtb3VudDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGltZSB0aGUgd2l0aGRyYXdhbCB3YXMgcmVxdWVzdGVkIChCaW5hbmNlIHJldHVybnMgYSBVVEMgc3RyaW5nLFxuICAgICAgICogZS5nLiBgXCIyMDE5LTA5LTI0IDEyOjQzOjQ1XCJgKS5cbiAgICAgICAqL1xuICAgICAgYXBwbHlUaW1lOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFzc2V0IHN5bWJvbCAoZS5nLiBgXCJVU0RUXCJgLCBgXCJCVENcImApLiAqL1xuICAgICAgY29pbjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGltZSB0aGUgd2l0aGRyYXdhbCBjb21wbGV0ZWQgKFVUQyBzdHJpbmcpLCBwcmVzZW50IG9uY2VcbiAgICAgICAqIGBzdGF0dXMgPT0gNmAuXG4gICAgICAgKi9cbiAgICAgIGNvbXBsZXRlVGltZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2Ygb24tY2hhaW4gY29uZmlybWF0aW9ucy5cbiAgICAgICAqL1xuICAgICAgY29uZmlybU5vPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJpbmFuY2UtYXNzaWduZWQgd2l0aGRyYXdhbCBpZC4gTWF0Y2hlcyB0aGUgYGlkYCByZXR1cm5lZCBieVxuICAgICAgICogW2BXaXRoZHJhd1Jlc3BvbnNlYF0uXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEZhaWx1cmUgcmVhc29uIHdoZW4gdGhlIHdpdGhkcmF3YWwgd2FzIHJlamVjdGVkLiAqL1xuICAgICAgaW5mbz86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJsb2NrY2hhaW4gbmV0d29yayBpZGVudGlmaWVyIChlLmcuIGBcIkJTQ1wiYCwgYFwiRVRIXCJgKS4gKi9cbiAgICAgIG5ldHdvcms/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2l0aGRyYXdhbCBzdGF0dXMuIEJpbmFuY2UgdmFsdWVzOiBgMGAgPSBFbWFpbCBTZW50LFxuICAgICAgICogYDJgID0gQXdhaXRpbmcgQXBwcm92YWwsIGAzYCA9IFJlamVjdGVkLCBgNGAgPSBQcm9jZXNzaW5nLFxuICAgICAgICogYDZgID0gQ29tcGxldGVkLiBMZWZ0IGFzIGB1OGAgZm9yIGZvcndhcmQgY29tcGF0aWJpbGl0eS5cbiAgICAgICAqL1xuICAgICAgc3RhdHVzOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE5ldHdvcmsgZmVlIGNoYXJnZWQgZm9yIHRoZSB3aXRoZHJhd2FsLCBhcyBhIGRlY2ltYWwgc3RyaW5nLiAqL1xuICAgICAgdHJhbnNhY3Rpb25GZWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIGAwYCA9IGV4dGVybmFsIHRyYW5zZmVyLCBgMWAgPSBpbnRlcm5hbCAoQmluYW5jZeKGlEJpbmFuY2UpIHRyYW5zZmVyLlxuICAgICAgICovXG4gICAgICB0cmFuc2ZlclR5cGU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9uLWNoYWluIHRyYW5zYWN0aW9uIGhhc2gsIG9uY2UgQmluYW5jZSBoYXMgYnJvYWRjYXN0IHRoZSB3aXRoZHJhd2FsLlxuICAgICAgICogTWF5IGJlIGVtcHR5IHVudGlsIHRoZW4uXG4gICAgICAgKi9cbiAgICAgIHR4SWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU291cmNlIHdhbGxldDogYDBgID0gc3BvdCB3YWxsZXQsIGAxYCA9IGZ1bmRpbmcgd2FsbGV0LlxuICAgICAgICovXG4gICAgICB3YWxsZXRUeXBlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDbGllbnQtc3VwcGxpZWQgd2l0aGRyYXdhbCBpZCwgaWYgb25lIHdhcyBzZXQgb24gdGhlIG9yaWdpbmFsXG4gICAgICAgKiB3aXRoZHJhd2FsIGNhbGwuXG4gICAgICAgKi9cbiAgICAgIHdpdGhkcmF3T3JkZXJJZD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYEdFVCAvc2FwaS92MS9jYXBpdGFsL3dpdGhkcmF3L2hpc3RvcnlgLlxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgbWFzdGVyIGFjY291bnQncyB3aXRoZHJhd2FsIGhpc3RvcnkuIEFsbCBmaWx0ZXJzIGFyZVxuICAgICAqIG9wdGlvbmFsOyBpZiBgc3RhcnRfdGltZWAvYGVuZF90aW1lYCBhcmUgb21pdHRlZCwgQmluYW5jZSByZXR1cm5zIHRoZVxuICAgICAqIG1vc3QgcmVjZW50IDkwIGRheXMuIFVzZSBgaWRfbGlzdGAgdG8gbG9vayB1cCBzcGVjaWZpYyB3aXRoZHJhd2FscyBieVxuICAgICAqIHRoZSBgaWRgIHJldHVybmVkIGZyb20gW2BCaW5hbmNlUnBjOjpXaXRoZHJhd2BdLCBvciBgd2l0aGRyYXdfb3JkZXJfaWRgXG4gICAgICogdG8gbG9vayBvbmUgdXAgYnkgaXRzIGNsaWVudC1zdXBwbGllZCBpZC5cbiAgICAgKi9cbiAgICBXaXRoZHJhd0hpc3RvcnlSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEZpbHRlciB0byBhIHNwZWNpZmljIGFzc2V0IChlLmcuIGBcIlVTRFRcImApLiAqL1xuICAgICAgY29pbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaW5kb3cgZW5kIChtcyBzaW5jZSBlcG9jaCkuXG4gICAgICAgKi9cbiAgICAgIGVuZFRpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgQmluYW5jZS1hc3NpZ25lZCB3aXRoZHJhd2FsIGlkcyAodGhlIGBpZGBcbiAgICAgICAqIGZpZWxkIG9mIFtgV2l0aGRyYXdSZXNwb25zZWBdKS4gVXAgdG8gNDUgaWRzIHBlciBxdWVyeSwgcGVyIEJpbmFuY2UuXG4gICAgICAgKi9cbiAgICAgIGlkTGlzdD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQYWdlIHNpemUgKEJpbmFuY2UgZGVmYXVsdCBhbmQgbWF4OiAxMDAwKS5cbiAgICAgICAqL1xuICAgICAgbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUGFnaW5hdGlvbiBvZmZzZXQuXG4gICAgICAgKi9cbiAgICAgIG9mZnNldD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaW5kb3cgc3RhcnQgKG1zIHNpbmNlIGVwb2NoKS5cbiAgICAgICAqL1xuICAgICAgc3RhcnRUaW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEZpbHRlciBieSB3aXRoZHJhd2FsIHN0YXR1cy4gQmluYW5jZSB2YWx1ZXM6XG4gICAgICAgKiBgMGAgPSBFbWFpbCBTZW50LCBgMmAgPSBBd2FpdGluZyBBcHByb3ZhbCwgYDNgID0gUmVqZWN0ZWQsXG4gICAgICAgKiBgNGAgPSBQcm9jZXNzaW5nLCBgNmAgPSBDb21wbGV0ZWQuIExlZnQgYXMgYHU4YCBmb3IgZm9yd2FyZFxuICAgICAgICogY29tcGF0aWJpbGl0eS5cbiAgICAgICAqL1xuICAgICAgc3RhdHVzPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEZpbHRlciBieSB0aGUgY2xpZW50LXN1cHBsaWVkIHdpdGhkcmF3YWwgaWQgb3JpZ2luYWxseSBwYXNzZWQgdG9cbiAgICAgICAqIFtgV2l0aGRyYXdSZXF1ZXN0Ojp3aXRoZHJhd19vcmRlcl9pZGBdLlxuICAgICAgICovXG4gICAgICB3aXRoZHJhd09yZGVySWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGZvciBbYEJpbmFuY2VNYW5hZ2VyOjp3aXRoZHJhd19oaXN0b3J5YF0uXG4gICAgICpcbiAgICAgKiBCaW5hbmNlIHJldHVybnMgYSB0b3AtbGV2ZWwgSlNPTiBhcnJheTsgdGhpcyBuZXd0eXBlIHByZXNlcnZlcyB0aGF0IHdpcmVcbiAgICAgKiBmb3JtYXQgd2hpbGUgZ2l2aW5nIHRoZSByZXNwb25zZSBhIG5hbWVkIHR5cGUgaW4gdGhlIE9wZW5BUEkgc2NoZW1hLlxuICAgICAqL1xuICAgIFdpdGhkcmF3SGlzdG9yeVJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldpdGhkcmF3SGlzdG9yeUVudHJ5XCJdW107XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIGBQT1NUIC9zYXBpL3YxL2NhcGl0YWwvd2l0aGRyYXcvYXBwbHlgLlxuICAgICAqXG4gICAgICogU3VibWl0cyBhIHdpdGhkcmF3YWwgb2YgYGFtb3VudGAgb2YgYGNvaW5gIHRvIHRoZSBnaXZlbiBleHRlcm5hbCBgYWRkcmVzc2AuXG4gICAgICogVGhlIHNpZ25pbmcga2V5J3MgYWNjb3VudCBtdXN0IGhhdmUgd2l0aGRyYXdhbCBwZXJtaXNzaW9ucyBlbmFibGVkLlxuICAgICAqL1xuICAgIFdpdGhkcmF3UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXN0aW5hdGlvbiBhZGRyZXNzLiAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vjb25kYXJ5IGFkZHJlc3MgaWRlbnRpZmllciByZXF1aXJlZCBieSBzb21lIGFzc2V0cyAoZS5nLiBtZW1vIGZvclxuICAgICAgICogWFJQLCB0YWcgZm9yIFhMTSkuXG4gICAgICAgKi9cbiAgICAgIGFkZHJlc3NUYWc/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFtb3VudCBiZWluZyB3aXRoZHJhd24sIGZvcm1hdHRlZCBhcyBhIGRlY2ltYWwgc3RyaW5nIChlLmcuIGBcIjAuMVwiYCkuXG4gICAgICAgKiBTZW50IHZlcmJhdGltOiBCaW5hbmNlIGlzIHN0cmljdCBhYm91dCBkZWNpbWFsIGZvcm1hdHRpbmcuXG4gICAgICAgKi9cbiAgICAgIGFtb3VudDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYXNzZXQgc3ltYm9sIGJlaW5nIHdpdGhkcmF3biAoZS5nLiBgXCJVU0RUXCJgLCBgXCJCVENcImApLiAqL1xuICAgICAgY29pbjogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHdpdGhkcmF3YWwuICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE5ldHdvcmsgaWRlbnRpZmllciAoZS5nLiBgXCJCU0NcImAsIGBcIkVUSFwiYCkuIElmIG9taXR0ZWQsIEJpbmFuY2UgcGlja3NcbiAgICAgICAqIHRoZSBkZWZhdWx0IG5ldHdvcmsgZm9yIHRoZSBhc3NldC5cbiAgICAgICAqL1xuICAgICAgbmV0d29yaz86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBgdHJ1ZWAsIHRoZSB3aXRoZHJhd2FsIGZlZSBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBkZXN0aW5hdGlvbiBhbW91bnQ7XG4gICAgICAgKiBpZiBgZmFsc2VgIChCaW5hbmNlIGRlZmF1bHQpLCBpdCBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBhY2NvdW50IGJhbGFuY2VcbiAgICAgICAqIGluIGFkZGl0aW9uIHRvIGBhbW91bnRgLlxuICAgICAgICovXG4gICAgICB0cmFuc2FjdGlvbkZlZUZsYWc/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNvdXJjZSB3YWxsZXQ6IGAwYCA9IHNwb3Qgd2FsbGV0IChkZWZhdWx0KSwgYDFgID0gZnVuZGluZyB3YWxsZXQuXG4gICAgICAgKi9cbiAgICAgIHdhbGxldFR5cGU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2xpZW50LXN1cHBsaWVkIHdpdGhkcmF3YWwgaWQsIHJldHVybmVkIGJ5IEJpbmFuY2UgYXMgYHdpdGhkcmF3T3JkZXJJZGBcbiAgICAgICAqIGluIHN1YnNlcXVlbnQgd2l0aGRyYXdhbC1oaXN0b3J5IHF1ZXJpZXMuXG4gICAgICAgKi9cbiAgICAgIHdpdGhkcmF3T3JkZXJJZD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGZvciBbYEJpbmFuY2VNYW5hZ2VyOjp3aXRoZHJhd2BdLiAqL1xuICAgIFdpdGhkcmF3UmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJpbmFuY2UtYXNzaWduZWQgd2l0aGRyYXdhbCBpZC4gVXNlZCB0byBsb29rIHRoZSByZXF1ZXN0IHVwIGxhdGVyIHZpYVxuICAgICAgICogdGhlIHdpdGhkcmF3YWwtaGlzdG9yeSBlbmRwb2ludC5cbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICByZXNwb25zZXM6IHtcbiAgICBBZGRUaGlyZFBhcnR5VXNlclJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIHRoZSBpZHAgYXV0aGVudGljYXRlIGVuZHBvaW50ICovXG4gICAgQXV0aGVudGljYXRpb25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gT0lEQyB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIEN1YmVTaWduZXIgKi9cbiAgICAgICAgICBpZF90b2tlbjogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEJhYnlsb25Db3ZTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC11bmJvbmRpbmcgdHJhbnNhY3Rpb24gc2lnbmF0dXJlcyBhcyBhbiBhcnJheSBvZiBoZXggc3RyaW5ncyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiMDJlMjFhN2IwNTE5NTM5ZWY2NzBmNzlkMWMyNWE1NGY5MGIwYzZkOWZkYjU2YTdkZTgxM2ZiMjA3MDMzMDMyZmZmYWQ4YWFhZmViMWI3N2RkOWVhOGYxN2RhZGNmMjk3Njk2YmJmNWE0MTMzMjkyZjM1MTViODZiYjljMmQ3OGQ5Y1wiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNsYXNoX3VuYm9uZGluZ190cmFuc2FjdGlvbnNfc2lnbmF0dXJlczogc3RyaW5nW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaGluZyB0cmFuc2FjdGlvbiBzaWduYXR1cmVzIGFzIGFuIGFycmF5IG9mIGhleCBzdHJpbmdzIHdpdGggbm8gMHggcHJlZml4XG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCIwMzA3NWVjYTlkMTc2ZDE2MDVkNmMwOTZjMTExZTlhNGY4ZDg3MzlhYzk3MDhjMWRmM2VkNTE2MTA2ZTdhYjEzODdhMzkyNGE2NjUyYWNmMmUzNTI0MzU5NzMxY2ExZmJiMzM4YTNhZmIxYTY3ZjZlYTE5YzIwN2I2ZmY0NjZhNWFkXCIsXG4gICAgICAgICAgICogICBcIjAyMjIyNDQ5M2Y0Y2ZmYWQ1Yjg0MDc2ZGIzMmRkOGM0OWEyOGZmNDhhZjRlMTllMmJjYzk5NTNmZjgwMzQ3YmE2ZTgzNDNjZjdhNDRlNzRhOTZmZjcxZWE1OWEwM2I0MDE2NmU4NWIwZDEzNTU5NTRlMDRhNDQyN2RjOGQ2MzdmZjBcIlxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzbGFzaGluZ190cmFuc2FjdGlvbnNfc2lnbmF0dXJlczogc3RyaW5nW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzaWduYXR1cmUgdGhhdCBhbGxvd3MgZXhwYW5kaW5nIGEgc3Rha2UgYnkgc3BlbmRpbmcgdGhlIGN1cnJlbnQgYWN0aXZlXG4gICAgICAgICAgICogc3Rha2UgdHJhbnNhY3Rpb24gaW50byBhIG5ldyBzdGFraW5nIHRyYW5zYWN0aW9uLiBBIHZhbHVlIGlzIHByZXNlbnQgaWZmIHRoZVxuICAgICAgICAgICAqIGNvcnJlc3BvbmRpbmcgcmVxdWVzdCBpbmNsdWRlZCBhIGBzdGFrZV9leHBhbnNpb25gIHZhbHVlLlxuICAgICAgICAgICAqIEBleGFtcGxlIGI1NzNlMzE4ODAzZmQ3YWVlMWJlNWI2YjE4ZDQ5NmNjNjBlY2M1MjQyOWRiZDQ3N2E4NzkyMTdjM2VkMjZhNzk1Y2I0ZjRlODgwYWFmZjNhNmFkNjYzMzVlNTQwNGZhNTFjYWViNDk2NGYwYzlmNzU2MjczNzg2NGUzYmRlNWJjXG4gICAgICAgICAgICovXG4gICAgICAgICAgc3Rha2VfZXhwYW5zaW9uX3RyYW5zYWN0aW9uX3NpZ25hdHVyZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24gc2lnbmF0dXJlIGFzIGhleCBzdHJpbmcgd2l0aCBubyAweCBwcmVmaXhcbiAgICAgICAgICAgKiBAZXhhbXBsZSBiNTczZTMxODgwM2ZkN2FlZTFiZTViNmIxOGQ0OTZjYzYwZWNjNTI0MjlkYmQ0NzdhODc5MjE3YzNlZDI2YTc5NWNiNGY0ZTg4MGFhZmYzYTZhZDY2MzM1ZTU0MDRmYTUxY2FlYjQ5NjRmMGM5Zjc1NjI3Mzc4NjRlM2JkZTViY1xuICAgICAgICAgICAqL1xuICAgICAgICAgIHVuYm9uZGluZ190cmFuc2FjdGlvbl9zaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBCYWJ5bG9uUmVnaXN0cmF0aW9uUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBCYWJ5bG9uIGFkZHJlc3MgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHN0YWtpbmcgcmV3YXJkcyBmb3IgdGhpcyBkZXBvc2l0LlxuICAgICAgICAgICAqXG4gICAgICAgICAgICogVGhpcyB2YWx1ZSB3aWxsIGNvcnJlc3BvbmQgdG8gdGhlIGBiYm5fYWRkcmAgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0LFxuICAgICAgICAgICAqIGJ1dCBpdCB3aWxsIGFsd2F5cyBoYXZlIGEgYGJibmAgaHVtYW4tcmVhZGFibGUgcGFydC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBiYm4xbjVhbm1jMGtrcmg3MHlqeTdmNmYzOTljNzR5ZDA5eGw1dGVmZm1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBiYm5fYWRkcjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZGVwb3NpdCB0cmFuc2FjdGlvbiBQU0JULiBUaGlzIFBTQlQgaW5jbHVkZXMgc2lnbmF0dXJlcyBvbiBhbnlcbiAgICAgICAgICAgKiBpbnB1dHMgY29udHJvbGxlZCBieSB0aGUgc3Rha2VyIHRhcHJvb3Qga2V5IHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBkZXBvc2l0OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZGVwb3NpdCB0cmFuc2FjdGlvbiBmZWUgaW4gc2F0cy5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAxMzM3XG4gICAgICAgICAgICovXG4gICAgICAgICAgZGVwb3NpdF9mZWU6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHByb29mIG9mIHBvc3Nlc3Npb24sIGkuZS4sIGEgQklQMzIyIHNpZ25hdHVyZSBvbiB0aGUgc3Rha2VyJ3NcbiAgICAgICAgICAgKiBCYWJ5bG9uIGFkZHJlc3Mgc2lnbmVkIGJ5IHRoZSBzdGFrZXIgdGFwcm9vdCBrZXkuIFRoaXMgaXMgYSBCaXRjb2luXG4gICAgICAgICAgICogd2l0bmVzcyBzdGFjayBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9wOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2gtZGVwb3NpdCB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICAgICAgc2xhc2hfZGVwb3NpdDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3Rha2VyIHRhcHJvb3Qga2V5J3Mgc2lnbmF0dXJlIG9uIHRoZSBzbGFzaC1kZXBvc2l0IHRyYW5zYWN0aW9uLlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBCSVAzNDAgc2lnbmF0dXJlIGluIGhleCBmb3JtYXQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2xhc2hfZGVwb3NpdF9zaWc6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC11bmJvbmQgdHJhbnNhY3Rpb24gaW4gQml0Y29pbiBjb25zZW5zdXMgaGV4IGVuY29kaW5nLiAqL1xuICAgICAgICAgIHNsYXNoX3VuYm9uZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3Rha2VyIHRhcHJvb3Qga2V5J3Mgc2lnbmF0dXJlIG9uIHRoZSBzbGFzaC11bmJvbmQgdHJhbnNhY3Rpb24uXG4gICAgICAgICAgICogVGhpcyBpcyBhIEJJUDM0MCBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzbGFzaF91bmJvbmRfc2lnOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgKHVuc2lnbmVkKSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24gaW4gQml0Y29pbiBjb25zZW5zdXMgaGV4IGVuY29kaW5nLiAqL1xuICAgICAgICAgIHVuYm9uZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEJhYnlsb25TdGFraW5nUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gZmVlIGluIHNhdHNcbiAgICAgICAgICAgKiBAZXhhbXBsZSAxMzM3XG4gICAgICAgICAgICovXG4gICAgICAgICAgZmVlOiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBQU0JUIGluIGVpdGhlciBoZXggb3IgYmFzZTY0IHNlcmlhbGl6YXRpb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSA3MDczNjI3NGZmMDEwMDVlLi4uXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHNidDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQlRDIG1lc3NhZ2Ugc2lnbmluZyByZXNwb25zZSAqL1xuICAgIEJ0Y01lc3NhZ2VTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYmFzZTY0LWVuY29kZWQgc2lnbmF0dXJlIGluIEJJUDEzNyBmb3JtYXQuICovXG4gICAgICAgICAgc2lnOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHBvbGljeSBLViBzdG9yZSBidWNrZXQuICovXG4gICAgQnVja2V0SW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKHtcbiAgICAgICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICBsYXN0X21vZGlmaWVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFZlcnNpb24gb2YgdGhpcyBvYmplY3RcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoZSBidWNrZXQuICovXG4gICAgICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFyYml0cmFyeSB1c2VyLWRlZmluZWQgbWV0YWRhdGEuICovXG4gICAgICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgICAgIG93bmVyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBidWNrZXQuICovXG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG51bWJlciBvZiB1c2VycyBhbmQga2V5cyBpbiBhbiBvcmcsIG9yZ2FuaXplZCBieSB1c2VyIHJvbGUgYW5kIGtleSB0eXBlICovXG4gICAgQ29tcHV0ZUNvdW50c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgbWFwIG9mIGEgYEtleVR5cGVgIHRvIHRoZSBhbW91bnQgb2Yga2V5cyB3aXRoIHRoYXQgdHlwZSBpbiB0aGUgb3JnLlxuICAgICAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAgICAgKiAgIFwiU2VjcEJ0Y1wiOiAzLFxuICAgICAgICAgICAqICAgXCJTZWNwRXRoQWRkclwiOiAxXG4gICAgICAgICAgICogfVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleXM6IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhIGBNZW1iZXJSb2xlYCB0byB0aGUgYW1vdW50IG9mIG51bWJlciBvZiB1c2VycyB3aXRoIHRoYXQgcm9sZSBpbiB0aGUgb3JnLlxuICAgICAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAgICAgKiAgIFwiTWVtYmVyXCI6IDEwLFxuICAgICAgICAgICAqICAgXCJPd25lclwiOiAxXG4gICAgICAgICAgICogfVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJzOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgQ29udGFjdC4gKi9cbiAgICBDb250YWN0SW5mb1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RcIl0gJiB7XG4gICAgICAgICAgYWRkcmVzc2VzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZHJlc3NNYXBcIl07XG4gICAgICAgICAgaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mbyBhYm91dCB0aGUgY3JlYXRlZCBrZXlzICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBbY3JlYXRlX2ltcG9ydF9rZXldIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBrZXkgYW5kIGVuY2xhdmVcbiAgICAgKiBhdHRlc3RhdGlvbnMuXG4gICAgICovXG4gICAgQ3JlYXRlUG9saWN5SW1wb3J0S2V5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ld2x5IGNyZWF0ZWQgcm9sZSBpbmZvcm1hdGlvbiAqL1xuICAgIENyZWF0ZVJvbGVSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlLlxuICAgICAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBuZXdseSBjcmVhdGVkIHJvbGVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHRvIFtDdXN0b21DaGFpblJwY1JlcXVlc3RdICovXG4gICAgQ3VzdG9tQ2hhaW5ScGNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogdW5rbm93bjtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgYSBEaWZmaWUgSGVsbG1hbiBrZXkgZXhjaGFuZ2UgKi9cbiAgICBEaWZmaWVIZWxsbWFuUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzdWx0aW5nIHBvaW50cyBhcyBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZ3MgaW4gYSBrZXktdHlwZS0tZGVwZW5kZW50IGZvcm1hdC4gKi9cbiAgICAgICAgICAgICAgcG9pbnRzOiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgICAgIHJlc3BvbnNlX3R5cGU6IFwibWFza2VkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCB7XG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBjaXBoZXJ0ZXh0IGNvbnRhaW5pbmcgdGhlIHJlc3VsdGluZyBwb2ludHMuIFRoZSBlbmNsb3NlZCBwbGFpbnRleHQgaXMgYSBzZXF1ZW5jZVxuICAgICAgICAgICAgICAgKiBvZiBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZ3MgaW4gYSBrZXktdHlwZS0tZGVwZW5kZW50IGZvcm1hdC5cbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIGVuY3J5cHRlZF9zaGFyZWRfc2VjcmV0czogc3RyaW5nO1xuICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIGZvciBIUEtFIGtleSBkZXJpdmF0aW9uIGluIGJhc2U2NC1lbmNvZGVkXG4gICAgICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBlcGhlbWVyYWxfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICAgICAgcmVzcG9uc2VfdHlwZTogXCJlbmNyeXB0ZWRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBIVFRQIHJlc3BvbnNlIHRvIGFuIGVtYWlsIE9UUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogVGhpcyByZXNwb25zZSBjb250YWlucyBhbiBPSURDIHRva2VuIHdpdGhvdXQgYSBzaWduYXR1cmUuXG4gICAgICogVGhlIHNpZ25hdHVyZSBpcyBzZW50IHRvIHRoZSBlbmQtdXNlciBpbiBhbiBlbWFpbC5cbiAgICAgKiBUaGUgdG9rZW4gY2FuIGJlIHJlY29uc3RydWN0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGUgYHBhcnRpYWxfdG9rZW5gIHdpdGggdGhlIHNpZ25hdHVyZS5cbiAgICAgKi9cbiAgICBFbWFpbE90cFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHRva2VuIHdpdGhvdXQgdGhlIHNpZ25hdHVyZS5cbiAgICAgICAgICAgKiAoVGhlIHNpZ25hdHVyZSwgd2hpY2ggaXMgYWN0dWFsbHkgYSBNQUMsIGlzIHNlbnQgdG8gdGhlIGVuZC11c2VyIGluIGFuIGVtYWlsKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBhcnRpYWxfdG9rZW46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGdlbmVyYXRlZCB3aGVuIGNyZWF0aW5nIEVPVFMgbm9uY2VzICovXG4gICAgRW90c0NyZWF0ZU5vbmNlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBnZW5lcmF0ZWQgbm9uY2VzIGFzIGFuIGFycmF5IG9mIDB4LXByZWZpeGVkIGhleCBzdHJpbmdzXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCIweGIzOTNiZjM5ZTcxYTE2ZDc4NDg1M2Q1ODI1NWEyOTYyMjJhOTlmZDNjODdhYTdjYTIwNmM1MjMwYzE4OGYxYzdcIixcbiAgICAgICAgICAgKiAgIFwiMHhlMDE5MzY1ODRiNGYwYzBlOTdmMGQzMDE4YzRmOWRiMmJmN2RlNDEzOTVjNjQwM2E0OGZkMGRmZjBlZjdiNDBkXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgbm9uY2VzOiBzdHJpbmdbXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHRvIFtFc3Bsb3JhUmVxdWVzdF0gKi9cbiAgICBFc3Bsb3JhUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHVua25vd247XG4gICAgICB9O1xuICAgIH07XG4gICAgRXRoMVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgUkxQIGVuY29kaW5nIG9mIHRoZSB0cmFuc2FjdGlvbiBhbmQgaXRzIHNpZ25hdHVyZVxuICAgICAgICAgICAqIEBleGFtcGxlIDB4MjI4OTUxMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjAxZDU4NjU2YjBlMjJhYWE2OGZkYzY5MmRiNDE5NzkwOThjMzg4NmVkMzMwMTVkNzQ2N2RlOTIxMTYwOWNkYWMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDhiMGMyOTAwMzI0ZDNmZjlhZGZiYTdmZGZlNWFmM2Y5YjJjZGJlZWY3YjI4MDQzN2JiZjFiMWM1OWEwOTNkNjE1YWZlM2U1ZGZlZDk2MjJiNTQwY2RkOWI0OWIzYzVhZDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5MDExYWRiY2MzYmM5YzAzMDdiYjA3ZjM3ZGRhMWExYTljNjlkMmUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwOTAzZGI4NTI1Njc0YjhlNzkwNGY5YjdkN2Q5ZWM1NWEwYTQyZDMzY2Y1OGJlMjU0NjliMGMyMWJiYjZkMDYxNzJiYzViYjVmZDFhZWQ4ZTRmMzU5MzY5Njg5NTgxMTZiMDYxOTU1M2MyY2IxYzUyZTczMjMwNzRjNmY4ZWIzZDVhNzA3NGZjNjU4MDE0OGRmOTA3ODM3ZmEzYjE2NGFkN2ZiYzIyODhkYWQxZThhNWIwMjEwOTViNTdjOGEzNmQ0XG4gICAgICAgICAgICovXG4gICAgICAgICAgcmxwX3NpZ25lZF90eDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEZpZG9Bc3NlcnRDaGFsbGVuZ2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICAgICAgfSkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbiAgICAgICAgfSkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIHNlbmRlciBjb25maWd1cmF0aW9uICh3aXRob3V0IHNlbnNpdGl2ZSBhdXRoIGRldGFpbHMpICovXG4gICAgR2V0RW1haWxDb25maWdSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFkZHJlc3MgdGhhdCBlbWFpbHMgYXJlIHNlbnQgZnJvbSAqL1xuICAgICAgICAgIHNlbmRlcjogc3RyaW5nO1xuICAgICAgICAgIHRlbXBsYXRlPzoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBIVE1MIHRlbXBsYXRlIHRvIHVzZSBmb3IgdGhlIGJvZHkuICovXG4gICAgICAgICAgICBib2R5X3RlbXBsYXRlOiBzdHJpbmc7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzdWJqZWN0IGxpbmUgdGVtcGxhdGUgKi9cbiAgICAgICAgICAgIHN1YmplY3RfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBHZXRVc2VyQnlFbWFpbFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFR5cGljYWxseSwgdGhpcyBhcnJheSBpcyBlaXRoZXIgZW1wdHkgKGlmIG5vIHVzZXIgd2l0aCBhIGdpdmVuIGVtYWlsIHdhcyBmb3VuZClcbiAgICAgICAgICAgKiBvciBjb250YWlucyBhIHNpbmdsZSBlbGVtZW50LCBpLmUuLCB0aGUgdXNlciB3aXRoIGEgZ2l2ZW4gZW1haWwuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1dpdGhJZGVudGl0eVwiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEdldFVzZXJCeU9pZGNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHVzZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ0luZm9XaXRoSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGF1ZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICAgICAqIEBleGFtcGxlIHVzZXJAZW1haWwuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGlkZW50aXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcm5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgY3ViaXN0ZGV2XG4gICAgICAgICAgICovXG4gICAgICAgICAgcHJlZmVycmVkX3VzZXJuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICB1c2VyX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1YmVTaWduZXJVc2VySW5mb1wiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgdGhlIHByb29mICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBXYXNtIHBvbGljeS4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldhc21Qb2xpY3lSZXNwb25zZVwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZGVycmAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICAgICAqIEluIG1vc3QgY2FzZXMsIHRoZXNlIGJ5dGVzIGNvcnJlc3BvbmQgdG8gYSBVVEYtOC1lbmNvZGVkIGBTdHJpbmdgLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYnl0ZXMgd3JpdHRlbiB0byBgc3Rkb3V0YCwgZW5jb2RlZCBhcyBhIGhleC1zdHJpbmcuXG4gICAgICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgICAgICovXG4gICAgICAgICAgc3Rkb3V0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgSnJwY1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIFJQQyBBUEkncyByZXNwb25zZS4gKi9cbiAgICBKc29uUnBjUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBlcnJvcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JPYmpcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSUQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0LiAqL1xuICAgICAgICAgIGlkPzogdW5rbm93bjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIENvbnN0YW50IFwiMi4wXCIuICovXG4gICAgICAgICAganNvbnJwYzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzdWx0LCBpZiBzdWNjZXNzLiAqL1xuICAgICAgICAgIHJlc3VsdD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgS2V5IHNldCBkZXNjcmliaW5nIHRoZSBrZXkgdXNlZCB0byBzaWduIEpTT04gV2ViIFRva2VucyAqL1xuICAgIEp3a1NldFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUga2V5cyBpbmNsdWRlZCBpbiB0aGlzIHNldCAqL1xuICAgICAgICAgIGtleXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSB3cmFwcGVkIGtleS1pbXBvcnQga2V5ICovXG4gICAgS2V5SW1wb3J0S2V5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdG8gd2hpY2ggYW4gaW1wb3J0ZWQga2V5IHNob3VsZCBiZSBlbmNyeXB0ZWQuXG4gICAgICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluUm9sZUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IElEXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIGtleV9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgdGhpcyBrZXkgaXMgdXNlZCBvbiBiZWhhbGYgb2YgdGhpcyByb2xlXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICAgICAqICAgfSxcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICAgICAqICAgICAgIFwia2luZFwiOiBcIkNhbm9uaWNhbFwiXG4gICAgICAgICAgICogICAgIH1cbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFJvbGUgSURcbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1xuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBLZXlJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgICAgICBkZXJpdmF0aW9uX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleURlcml2YXRpb25JbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGtleSBpcyBlbmFibGVkIChvbmx5IGVuYWJsZWQga2V5cyBtYXkgYmUgdXNlZCBmb3Igc2lnbmluZykgKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleTogXCJLZXkjXCIgZm9sbG93ZWQgYnkgYSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0b1xuICAgICAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE93bmVyIG9mIHRoZSBrZXlcbiAgICAgICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICAgICAqL1xuICAgICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEtleSBwb2xpY3lcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAgICAgKiAgICAgfVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k6IHVua25vd25bXTtcbiAgICAgICAgICBwcm9wZXJ0aWVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlQcm9wZXJ0aWVzUGF0Y2hcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGtleSBwcm92ZW5hbmNlLiAqL1xuICAgICAgICAgIHByb3ZlbmFuY2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCwgc2VyaWFsaXplZCBwdWJsaWMga2V5LiBUaGUgZm9ybWF0IHVzZWQgZGVwZW5kcyBvbiB0aGUga2V5IHR5cGU6XG4gICAgICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBTdGFyayBrZXlzIHVzZSAzMy1ieXRlIGNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBCTFMga2V5cyB1c2UgNDgtYnl0ZSBjb21wcmVzc2VkIEJMUzEyLTM4MSAoWkNhc2gpIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDA0ZDI2ODhiNmJjMmNlN2Y5ODc5YjllNzQ1ZjNjNGRjMTc3OTA4YzVjZWYwYzFiNjRjZmYxOWFlN2ZmMjdkZWU2MjNjNjRmZTlkOWMzMjVjN2ZiYmM3NDhiYmQ1ZjYwN2NlMTRkZDgzZTI4ZWJiYmI3ZDNlN2YyZmZiNzBhNzk0MzFcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwdXJwb3NlIGZvciB3aGljaCB0aGUga2V5IGNhbiBiZSB1c2VkIChlLmcuLCBjaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXMpXG4gICAgICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gYWZmaW5pdHkgZm9yIHRoaXMga2V5ICovXG4gICAgICAgICAgcmVnaW9uPzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgd2hlbiByZXF1ZXN0aW5nIGEga2V5IGF0dGVzdGF0aW9uLiAqL1xuICAgIEtleUluZm9Kd3Q6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBLZXlJbmZvYCBzdHJ1Y3R1cmUuICovXG4gICAgICAgICAgand0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgS2V5SW5mb3M6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoaXJkLXBhcnR5IGlkZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyJ3MgYWNjb3VudCAqL1xuICAgIExpc3RJZGVudGl0aWVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBpZGVudGl0aWVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkZW50aXR5SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzICovXG4gICAgICAgICAgbWZhX3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNTUkgcmVxdWVzdHMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLiAqL1xuICAgIExpc3RQZW5kaW5nTWVzc2FnZXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgbWVzc2FnZXMgZm9yIGEgdXNlci4gKi9cbiAgICAgICAgICBwZW5kaW5nX21lc3NhZ2VzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBlbmRpbmdNZXNzYWdlSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmV0dXJuZWQgYXMgYSByZXNwb25zZSBmcm9tIG11bHRpcGxlIHJvdXRlcyAoZS5nLiwgJ2dldCBtZmEnLCAnYXBwcm92ZSBtZmEnLCAnYXBwcm92ZSB0b3RwJykuICovXG4gICAgTWZhUmVxdWVzdEluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBjcmVhdGVkX2F0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNlc3Npb24gaWRlbnRpdHkgKHVzZXIgb3Igcm9sZSkgdGhhdCBjcmVhdGVkIHRoaXMgcmVxdWVzdC4gKi9cbiAgICAgICAgICBjcmVhdGVkX2J5OiBzdHJpbmc7XG4gICAgICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXBwcm92YWwgcmVxdWVzdCBJRC4gKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIG5vdF92YWxpZF91bnRpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHBvbGljeSBwcm92ZW5hbmNlXG4gICAgICAgICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwcm92ZW5hbmNlOiBcIk9yZ1wiIHwgXCJLZXlcIiB8IFwiS2V5SW5Sb2xlXCIgfCBcIlJvbGVcIiB8IFwiVXNlclwiIHwgXCJFZGl0UG9saWN5XCI7XG4gICAgICAgICAgcmVjZWlwdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVjZWlwdFwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVnaW9uIHRoaXMgTUZBIHJlcXVlc3Qgd2FzIGNyZWF0ZWQgaW4uICBJdCBjYW4gb25seSBiZSByZWRlZW1lZCBmcm9tIHRoZSBzYW1lIHJlZ2lvbi4gKi9cbiAgICAgICAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgY29udGFpbnMgdGhlIElEcyBvZiBhbGwgTUZBIHJlcXVlc3RzIChpbmNsdWRpbmcgdGhpcyBvbmUhKSB0aGF0XG4gICAgICAgICAgICogd2VyZSBnZW5lcmF0ZWQgYXQgb25jZSBmb3IgdGhlIHNhbWUgQ3ViZVNpZ25lciBvcGVyYXRpb24uXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBJZiBub3Qgc2V0LCBpdCBtZWFucyB0aGF0IHRoaXMgd2FzIHRoZSBsb25lIE1GQSByZXF1ZXN0IGdlbmVyYXRlZCBmb3IgYHJlcXVlc3RgLlxuICAgICAgICAgICAqXG4gICAgICAgICAgICogVGhpcyBpcyB1c2VmdWwgc28gdGhhdCBhIGNsaWVudCBjYW4gZGlzY292ZXIgYWxsIHRoZSBNRkFzIHdob3NlIHJlY2VpcHRzIG11c3RcbiAgICAgICAgICAgKiBiZSBzdWJtaXR0ZWQgdG9nZXRoZXIgdG8gY2Fycnkgb3V0IHRoZSBvcmlnaW5hbCBDdWJlU2lnbmVyIG9wZXJhdGlvbi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICByZWxhdGVkX2lkcz86IHN0cmluZ1tdO1xuICAgICAgICAgIHJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RcIl07XG4gICAgICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YXR1c1wiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbmV3IHNlc3Npb24sIHJldHVybmVkIGZyb20gbXVsdGlwbGUgZW5kcG9pbnRzIChlLmcuLCBsb2dpbiwgcmVmcmVzaCwgZXRjLikuICovXG4gICAgTmV3U2Vzc2lvblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGV4cGlyYXRpb24gKGluIHNlY29uZHMgc2luY2UgVU5JWCBlcG9jaCksIGJleW9uZCB3aGljaCBpdCBjYW5ub3QgYmUgcmVmcmVzaGVkLlxuICAgICAgICAgICAqIEBleGFtcGxlIDE3MDE4Nzk2NDBcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBleHBpcmF0aW9uPzogbnVtYmVyO1xuICAgICAgICAgIG9yZ19pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byByZWZyZXNoIHRoaXMgc2Vzc2lvbi4gKi9cbiAgICAgICAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgICAgc2Vzc2lvbl9pbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25JbmZvXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBOZXcgdG9rZW4gdG8gYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24uIFJlcXVlc3RzIHRvIHNpZ25pbmcgZW5kcG9pbnRzXG4gICAgICAgICAgICogc2hvdWxkIGluY2x1ZGUgdGhpcyB2YWx1ZSBpbiB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b2tlbjogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3JnLWV4cG9ydCBjaXBoZXJ0ZXh0IHJldHJpZXZlZCB2aWEgdGhlIG9yZy1leHBvcnQgQVBJLiAqL1xuICAgIE9yZ0V4cG9ydFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGJhc2U2NC1lbmNvZGVkIGV4cG9ydCBjaXBoZXJ0ZXh0LiAqL1xuICAgICAgICAgIGNpcGhlcnRleHQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBPcmdJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVpcmVtZW50c1wiXSAmXG4gICAgICAgICAgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAgICAgICBhY2Nlc3NfbW9kZWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXNzTW9kZWxcIl07XG4gICAgICAgICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgICAgICAgIGRlZmF1bHRfaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl07XG4gICAgICAgICAgICBlbWFpbF9wcmVmZXJlbmNlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxQcmVmZXJlbmNlc1wiXTtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSwgYWxsIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBpbnZvbHZpbmcga2V5cyBpbiB0aGlzIG9yZyBhcmUgZGlzYWJsZWQuICovXG4gICAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgICAgZXh0X2RhdGE/OlxuICAgICAgICAgICAgICB8ICh7XG4gICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAqIFRoaXMgc2V0dGluZyBpcyBjaGVja2VkIG9ubHkgd2hlbiBhbiBhbGllbiB1c2VyIHJlcXVlc3RzIHRvIGNyZWF0ZSBvciBpbXBvcnQgYSBuZXcga2V5LlxuICAgICAgICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgIGFsaWVuX2tleV9jb3VudF90aHJlc2hvbGQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICAgICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAgICAgICAgIGxhc3RfbW9kaWZpZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGlzIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgICAgICAgICAgICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4pXG4gICAgICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgICAgIGhpc3RvcmljYWxfZGF0YV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIaXN0b3JpY2FsRGF0YUNvbmZpZ3VyYXRpb25cIl07XG4gICAgICAgICAgICBpZHBfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRwQ29uZmlnXCJdO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkOiB0aGlzIGZpZWxkIHNob3VsZCBiZSBpZ25vcmVkLiAqL1xuICAgICAgICAgICAga2V5X2ltcG9ydF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIHVuaXZlcnNhbGx5IHVuaXF1ZSBrZXktd3JhcHBpbmcta2V5IGlkZW50aWZpZXIuXG4gICAgICAgICAgICAgKiBUaGlzIHZhbHVlIGlzIHJlcXVpcmVkIHdoZW4gc2V0dGluZyB1cCBrZXkgZXhwb3J0LlxuICAgICAgICAgICAgICogQGV4YW1wbGUgbXJrLWZjZTA5NTI1ZTgxNTg3ZDIzNTIwZjExZTA3ZTJlOWQ5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGt3a19pZDogc3RyaW5nO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZS90aW1lIChpbiBVVEMpIHdoZW4gbGFzdCAndW5zdGFrZScgd2FzIHBlcmZvcm1lZC4gVW5peCBlcG9jaCBpZiBub25lLlxuICAgICAgICAgICAgICogQGV4YW1wbGUgVE9ET1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsYXN0X3Vuc3Rha2U6IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55ICd1bnN0YWtlJyBjYWxscyBoYXBwZW5lZCBvbiB0aGUgZGF5IHdoZW4gYGxhc3RfdW5zdGFrZWAgd2FzIHBlcmZvcm1lZC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGFzdF91bnN0YWtlX2RheV9jb3VudDogbnVtYmVyO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG1ldHJpY3MgYXJlIGNvbGxlY3RlZCBmb3IgdGhpcyBvcmcgKi9cbiAgICAgICAgICAgIG1ldHJpY3NfZW5hYmxlZD86IGJvb2xlYW47XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3Mgbm90aWZpY2F0aW9uIGVuZHBvaW50cywgd2hpY2ggYXJlIEhUVFBTIFVSTHMgYXJlIG5vdGlmaWVkIGFib3V0IGFcbiAgICAgICAgICAgICAqIGNvbmZpZ3VyYWJsZSBzZXQgb2YgZXZlbnRzIGluIGFuIG9yZ2FuaXphdGlvbi4gRm9yIGVhY2ggZXZlbnQsIEN1YmVTaWduZXIgc2VuZHMgYSBQT1NUXG4gICAgICAgICAgICAgKiByZXF1ZXN0IHdpdGggYSBKU09OLWZvcm1hdHRlZCBib2R5IHRoYXQgY29udGFpbnMgdGhlIGV2ZW50IGRldGFpbHMuXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgICAqICAgICBcImFyblwiOiBcImFybjphd3M6c25zOnVzLWVhc3QtMTowMTIzNDU2Nzg5MDE6T3JnRXZlbnRzVG9waWM6MTIzNDU2NzgtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxXCIsXG4gICAgICAgICAgICAgKiAgICAgXCJjb25maWdcIjoge1xuICAgICAgICAgICAgICogICAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MVwiXG4gICAgICAgICAgICAgKiAgICAgfSxcbiAgICAgICAgICAgICAqICAgICBcInN0YXR1c1wiOiBcIkNvbmZpcm1lZFwiXG4gICAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgICAqICAgICBcImFyblwiOiBcImFybjphd3M6c25zOnVzLWVhc3QtMTowMTIzNDU2Nzg5MDE6T3JnRXZlbnRzVG9waWM6MTIzNDU2NzgtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAyXCIsXG4gICAgICAgICAgICAgKiAgICAgXCJjb25maWdcIjoge1xuICAgICAgICAgICAgICogICAgICAgXCJmaWx0ZXJcIjoge1xuICAgICAgICAgICAgICogICAgICAgICBcIk9uZU9mXCI6IFtcbiAgICAgICAgICAgICAqICAgICAgICAgICBcIkV0aDJDb25jdXJyZW50QXR0ZXN0YXRpb25TaWduaW5nXCIsXG4gICAgICAgICAgICAgKiAgICAgICAgICAgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICAgICAgICAgKiAgICAgICAgIF1cbiAgICAgICAgICAgICAqICAgICAgIH0sXG4gICAgICAgICAgICAgKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQyXCJcbiAgICAgICAgICAgICAqICAgICB9LFxuICAgICAgICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiUGVuZGluZ1wiXG4gICAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgICAqIF1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRcIl1bXTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAgICAgcGFzc2tleV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQYXNza2V5Q29uZmlnXCJdO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgcG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgYSBrZXkgaXMgdXNlZCBmb3Igc2lnbmluZ1xuICAgICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAgICogICB7XG4gICAgICAgICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICAgICAgICogICB9XG4gICAgICAgICAgICAgKiBdXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgICAgcG9saWN5X2VuZ2luZV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFbmdpbmVDb25maWd1cmF0aW9uXCJdO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gR2xvYmFsIHNpZ24gcG9saWN5IHRoYXQgYXBwbGllcyB0byBldmVyeSBzaWduIG9wZXJhdGlvbiAoZXZlcnkga2V5LCBldmVyeSByb2xlKSBpbiB0aGUgb3JnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAgICAgICAgICogICB9XG4gICAgICAgICAgICAgKiBdXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNpZ25fcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgVE9UUCBmYWlsdXJlIGxpbWl0LCBpLmUuLCB0aGUgbnVtYmVyXG4gICAgICAgICAgICAgKiBvZiB0aW1lcyBhIHVzZXIgY2FuIHByb3ZpZGUgYW4gaW5jb3JyZWN0IFRPVFAgY29kZSBiZWZvcmUgYmVpbmcgcmF0ZSBsaW1pdGVkLlxuICAgICAgICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ6IG51bWJlcjtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIG1pbmltdW1cbiAgICAgICAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAgICAgICAqIGl0IG1heSBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlXG4gICAgICAgICAgICAgKiBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB1c2VyX2V4cG9ydF9kZWxheTogbnVtYmVyO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHVzZXIgZXhwb3J0IGlzIGRpc2FibGVkICovXG4gICAgICAgICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW47XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50XG4gICAgICAgICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICAgICAgICogdGhlIHVzZXIgZXhwb3J0IHJlcXVlc3QgaGFzIGV4cGlyZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZVxuICAgICAgICAgICAgICogaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2Ugb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdXNlcl9leHBvcnRfd2luZG93OiBudW1iZXI7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIG9mZmljaWFsIHdlYmFwcCBvcmlnaW4gaXMgYXV0b21hdGljYWxseSBhbGxvd2VkICovXG4gICAgICAgICAgICB3ZWJhcHBfZW5hYmxlZD86IGJvb2xlYW47XG4gICAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRBdWRpdExvZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBdWRpdCBsb2cgZW50cmllcyAqL1xuICAgICAgICAgIGVudHJpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkaXRMb2dFbnRyeVwiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRHZXRVc2Vyc0luT3JnUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHVzZXJzIGluIHRoZSBvcmcgKi9cbiAgICAgICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5PcmdJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RCdWNrZXRzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBidWNrZXRzIGluIHRoZSBvcmdhbml6YXRpb24uICovXG4gICAgICAgICAgYnVja2V0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdWNrZXRJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RDb250YWN0c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgY29udGFjdHMgaW4gdGhlIG9yZ2FuaXphdGlvbiwgbWF0Y2hpbmcgYW55IHByb3ZpZGVkIHF1ZXJpZXMuICovXG4gICAgICAgICAgY29udGFjdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdEluZm9SZXNwb25zZVwiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0SGlzdG9yaWNhbFR4UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEhpc3RvcmljYWwgdHJhbnNhY3Rpb25zIHNpZ25lZCB3aXRoIHRoZSByZXF1ZXN0ZWQga2V5LCBzb3J0ZWQgZnJvbSBtb3N0IHRvIGxlYXN0IHJlY2VudC4gKi9cbiAgICAgICAgICB0eHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbFR4XCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RJbnZpdGF0aW9uc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBQZW5kaW5nIGludml0YXRpb25zICovXG4gICAgICAgICAgaW52aXRhdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRhdGlvbkluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdEtleVJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyB0aGUga2V5IGlzIGluICovXG4gICAgICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RQb2xpY2llc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT3JnJ3MgbmFtZWQgcG9saWNpZXMuICovXG4gICAgICAgICAgcG9saWNpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5SW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIGtleXMgaW4gYSByb2xlICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHVzZXJzIGluIGEgcm9sZSAqL1xuICAgICAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgICAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFBvbGljeUxvZ3NSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBleGVjdXRpb24gbG9ncyAqL1xuICAgICAgICAgIGxvZ3M6IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgICB9W107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFF1ZXJ5TWV0cmljc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBZHZpc29yeSBtZXNzYWdlcyAoZS5nLiwgaWYgbWF4IG51bWJlciBvZiByZXN1bHRzIGlzIHJlYWNoZWQpLiAqL1xuICAgICAgICAgIG1lc3NhZ2VzPzogc3RyaW5nW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGVyaW9kIGZvciB3aGljaCB0aGUgc3RhdGlzdGljIGlzIGNvbXB1dGVkLCBpZiBhbnkgKG5vdCBhbGwgbWV0cmljcyBzdXBwb3J0IHNwbGl0dGluZyB0aGUgcmVxdWVzdGVkIHRpbWUgcmFuZ2UgaW50byBiaW5zKS5cbiAgICAgICAgICAgKiBJZiBzZXQsIGVxdWFscyB0byB0aGUgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCByb3VuZGVkIHVwIHRvIHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIDYwLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBlcmlvZD86IG51bWJlcjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbWUgbWV0cmljcyBjYW4gb3B0aW9uYWxseSByZXR1cm4gdGhlIHJhdyBkYXRhLCB3aGVuIHJlcXVlc3RlZC4gKi9cbiAgICAgICAgICByYXdfZGF0YToge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIENvbXB1dGVkIGRhdGEgcG9pbnRzLiAqL1xuICAgICAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRhdGEgcG9pbnRzLCBvbmUgZm9yIGVhY2ggdGltZSBwZXJpb2QgKHRpbWUgcGVyaW9kcyBmb3Igd2hpY2ggdGhlIHZhbHVlIGlzIDAgYXJlIG9taXR0ZWQpLiAqL1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICAgICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIHN0YXQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY1N0YXRcIl0gfCBudWxsO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFVzZXJFeHBvcnRMaXN0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBleHBvcnRfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG4gICAgICAgIH0pICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IGFuIGV4aXN0aW5nIE1NSSByZXF1ZXN0LiAqL1xuICAgIFBlbmRpbmdNZXNzYWdlSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIG1ldGFkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taU1ldGFkYXRhXCJdO1xuICAgICAgICAgIHNpZ25lZE1lc3NhZ2U/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lZE1lc3NhZ2VcIl0gfCBudWxsO1xuICAgICAgICAgIHRyYW5zYWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkFuZFN0YXR1c1wiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgY3JlYXRlZF9hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcGVuZGluZyBtZXNzYWdlICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZGVudGl0eSAoYSB1c2VyIG9yIGEgcm9sZSBpZCkgd2hpY2ggY3JlYXRlZCB0aGlzIG1lc3NhZ2UuICovXG4gICAgICAgICAgaWRlbnRpdHk6IHN0cmluZztcbiAgICAgICAgICBtZXNzYWdlX2VpcDE5MT86IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCAoaW5jbHVkaW5nIGEgJzB4JyBwcmVmaXgpIG1lc3NhZ2UgdG8gc2lnbi4gKi9cbiAgICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgICBtZXNzYWdlX2VpcDcxMj86IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZERhdGFcIl07XG4gICAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICAgIHZlcnNpb246IFwidjNcIiB8IFwidjRcIjtcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgICBtZXNzYWdlX3R4PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IGFuIGV4aXN0aW5nIE1NSSBtZXNzYWdlLCBpbmNsdWRpbmcgdGhlIHNpZ25hdHVyZS4gKi9cbiAgICBQZW5kaW5nTWVzc2FnZVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKHtcbiAgICAgICAgICBtZXRhZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNbWlNZXRhZGF0YVwiXTtcbiAgICAgICAgICBzaWduZWRNZXNzYWdlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZWRNZXNzYWdlXCJdIHwgbnVsbDtcbiAgICAgICAgICB0cmFuc2FjdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHJhbnNhY3Rpb25BbmRTdGF0dXNcIl0gfCBudWxsO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIGNyZWF0ZWRfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICBleHBpcmVzX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHBlbmRpbmcgbWVzc2FnZSAqL1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWRlbnRpdHkgKGEgdXNlciBvciBhIHJvbGUgaWQpIHdoaWNoIGNyZWF0ZWQgdGhpcyBtZXNzYWdlLiAqL1xuICAgICAgICAgIGlkZW50aXR5OiBzdHJpbmc7XG4gICAgICAgICAgbWVzc2FnZV9laXAxOTE/OiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIGFkZHJlc3MsIGhleC1lbmNvZGVkLCB3aXRoIGxlYWRpbmcgJzB4J1xuICAgICAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgKGluY2x1ZGluZyBhICcweCcgcHJlZml4KSBtZXNzYWdlIHRvIHNpZ24uICovXG4gICAgICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAgICAgfSB8IG51bGw7XG4gICAgICAgICAgbWVzc2FnZV9laXA3MTI/OiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIGFkZHJlc3MsIGhleC1lbmNvZGVkLCB3aXRoIGxlYWRpbmcgJzB4J1xuICAgICAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgICAgICAgIGRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWREYXRhXCJdO1xuICAgICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgICB2ZXJzaW9uOiBcInYzXCIgfCBcInY0XCI7XG4gICAgICAgICAgfSB8IG51bGw7XG4gICAgICAgICAgbWVzc2FnZV90eD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWRUcmFuc2FjdGlvblwiXSB8IG51bGw7XG4gICAgICAgIH0pICZcbiAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcG9saWN5LiAqL1xuICAgIFBvbGljeUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MtY29udHJvbCBlbnRyaWVzIGZvciB0aGUgcG9saWN5LiAqL1xuICAgICAgICAgIGFjbD86IHVua25vd25bXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgZW50aXRpZXMgKGtleXMsIHJvbGVzLCBldGMuKSB0aGUgcG9saWN5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICAgICAgICAgIGF0dGFjaGVkX3RvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUF0dGFjaGVkVG9JZFwiXVtdO1xuICAgICAgICAgIGNyZWF0ZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXItZGVmaW5lZCBtZXRhZGF0YSBmb3IgdGhlIG5hbWVkIHBvbGljeS4gKi9cbiAgICAgICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LiAqL1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICBvd25lcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgaWQgKi9cbiAgICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgICAgICBwb2xpY3lfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lUeXBlXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBydWxlLiAqL1xuICAgICAgICAgIHJ1bGVzOiB1bmtub3duW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IHJ1bGUncyB2ZXJzaW9uLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHZlcnNpb246IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5UmVzdWx0UmVzcG9uc2UgaXMgYSB3cmFwcGVyIG9uIFBvbGljeVJlc3VsdCB3aXRoIHR3byBpbXBvcnRhbnRcbiAgICAgKiBwcm9wZXJ0aWVzOlxuICAgICAqICogZGVyaXZlcyBPa1RvTG9nUmVzcG9uc2UsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIHJvY2tldCBoYW5kbGVyLlxuICAgICAqICogZGVyaXZlcyBUb1NjaGVtYSBhbmQgVG9SZXNwb25zZSwgd2l0aCB0aGUgYHZhbGAgZmllbGQgd2l0aCB2YWx1ZV90eXBlXG4gICAgICogT2JqZWN0LCBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcHJvdmlkZSBhbGwgb2YgdGhlIE9wZW5BUEkgdHlwZVxuICAgICAqIGRlc2NyaXB0aW9ucyBvZiBhIFBvbGljeVJlc3VsdC5cbiAgICAgKlxuICAgICAqIFRoZSBQb2xpY3lSZXN1bHQgaW5jbHVkZXMgZW51bXMgYW5kIG90aGVyIHN0YW5kYXJkIHR5cGVzIChlLmcuXG4gICAgICogc3RkOjp0aW1lOjpJbnRlcnZhbCkgd2hpY2ggYXJlIG5vbnRyaXZpYWwgdG8gcmVwcmVzZW50IGluIE9wZW5BUEkuIFNpbmNlXG4gICAgICogdGhpcyBlbmRwb2ludCBpcyBqdXN0IGZvciB0ZXN0aW5nLCB3ZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCBob3cgYWNjdXJhdGVcbiAgICAgKiB0aGUgc2NoZW1hIGlzLCBhbmQgY2FuIGxlYW4gb24gc2VyZGVfanNvbiB3aGVuIGRlY29kaW5nIHRoaXMgcmVzcG9uc2UgdG8gYVxuICAgICAqIFBvbGljeVJlc3VsdCBpbiBhIGNsaWVudC4gTm90ZSB0aGF0IHRoZXJlIGlzIGEgYnVnIGluIHV0b2lwYSB3aGVyZSB0aGVcbiAgICAgKiB2YWx1ZV90eXBlIGFubm90YXRpb24gd2lsbCBub3Qgd29yayBmb3IgYSB0dXBsZS1zdHJ1Y3QsIG9ubHkgYSBzdHJ1Y3Qgd2l0aFxuICAgICAqIGZpZWxkcy5cbiAgICAgKi9cbiAgICBQb2xpY3lSZXN1bHRSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHZhbDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzdHJ1Y3QgY29udGFpbmluZyBhbGwgbm9uLXNlY3JldCBpbmZvcm1hdGlvbiBhYm91dCBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICBQb2xpY3lTZWNyZXRzSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlcHJlY2F0ZWRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5hbWVzIG9mIHRoZSBzZWNyZXRzLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWVzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICAgICAgICBzZWNyZXRzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY3JldEluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHRvIGEgUFNCVCBzaWduaW5nIHJlcXVlc3QgKi9cbiAgICBQc2J0U2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgUFNCVCBpbiBzdGFuZGFyZCBoZXggc2VyaWFsaXphdGlvbiwgd2l0aG91dCBsZWFkaW5nIFwiMHhcIi5cbiAgICAgICAgICAgKiBAZXhhbXBsZSA3MDczNjI3NGZmMDEwMDVlLi4uXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHNidDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUHVibGljIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICBQdWJsaWNPcmdJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFeHBsaWNpdGx5IGNvbmZpZ3VyZWQgKGFsbG93bGlzdGVkKSBPcGVuSUQgcHJvdmlkZXJzIGZvciBhbiBvcmcgKi9cbiAgICAgICAgICBvaWRjX2lzc3VlcnM6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW50ZW5kZWQgYXVkaWVuY2VzIChjbGllbnQgSURzKSAqL1xuICAgICAgICAgICAgYXVkaWVuY2VzOiBzdHJpbmdbXTtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSXNzdWVyIFVSTCAqL1xuICAgICAgICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGlzc3VlciBuaWNrbmFtZSAqL1xuICAgICAgICAgICAgbmlja25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByb2xlcyBhbGxvd2VkIHRvIHVzZSB0aGlzIElEUCAqL1xuICAgICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdO1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3JnIGlkZW50aWZpZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIGxvZ2dpbmcgaW4gd2l0aCBqdXN0IGEgcGFzc2tleSBpcyBhbGxvd2VkICovXG4gICAgICAgICAgcGFzc2tleV9sb2dpbl9lbmFibGVkOiBib29sZWFuO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1ldHJpYyBkYXRhIHBvaW50cy4gKi9cbiAgICBRdWVyeU1ldHJpY3NSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWR2aXNvcnkgbWVzc2FnZXMgKGUuZy4sIGlmIG1heCBudW1iZXIgb2YgcmVzdWx0cyBpcyByZWFjaGVkKS4gKi9cbiAgICAgICAgICBtZXNzYWdlcz86IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBlcmlvZCBmb3Igd2hpY2ggdGhlIHN0YXRpc3RpYyBpcyBjb21wdXRlZCwgaWYgYW55IChub3QgYWxsIG1ldHJpY3Mgc3VwcG9ydCBzcGxpdHRpbmcgdGhlIHJlcXVlc3RlZCB0aW1lIHJhbmdlIGludG8gYmlucykuXG4gICAgICAgICAgICogSWYgc2V0LCBlcXVhbHMgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHJlcXVlc3Qgcm91bmRlZCB1cCB0byB0aGUgY2xvc2VzdCBtdWx0aXBsZSBvZiA2MC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwZXJpb2Q/OiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTb21lIG1ldHJpY3MgY2FuIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSByYXcgZGF0YSwgd2hlbiByZXF1ZXN0ZWQuICovXG4gICAgICAgICAgcmF3X2RhdGE6IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgICB9W107XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDb21wdXRlZCBkYXRhIHBvaW50cy4gKi9cbiAgICAgICAgICByZXN1bHRzOiB7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkYXRhIHBvaW50cywgb25lIGZvciBlYWNoIHRpbWUgcGVyaW9kICh0aW1lIHBlcmlvZHMgZm9yIHdoaWNoIHRoZSB2YWx1ZSBpcyAwIGFyZSBvbWl0dGVkKS4gKi9cbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1ldHJpYyBkaW1lbnNpb25zLiAqL1xuICAgICAgICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgICBzdGF0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdNZXRyaWNTdGF0XCJdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBSb2xlSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHJvbGUgaXMgZW5hYmxlZFxuICAgICAgICAgICAqIEBleGFtcGxlIHRydWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZC4gVGhlIEN1YmVTaWduZXIgSURzIG9mIGF0IG1vc3QgMTAwIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcm9sZS4gKi9cbiAgICAgICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaXMgYSBtZW1iZXIgb2YgdGhlIHJvbGUuIFRoaXMgaXMgYWx3YXlzIHRydWUsXG4gICAgICAgICAgICogZXhjZXB0IGZvciBvd25lcnMgd2hvIGNhbiBzZWUgcm9sZXMgdGhleSBhcmUgbm90IG1lbWJlcnMgb2YuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbWVtYmVyOiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIHJlc3RyaWN0ZWRfYWN0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXN0cmljdGVkQWN0aW9uc01hcFwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSByb2xlXG4gICAgICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgbGlzdCBvZiBhdCBtb3N0IDEwMCB1c2VycyB3aXRoIGFjY2VzcyB0byB0aGUgcm9sZS4gKi9cbiAgICAgICAgICB1c2Vycz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIHdoZW4gcmVxdWVzdGluZyBhIHJvbGUgYXR0ZXN0YXRpb24uICovXG4gICAgUm9sZUluZm9Kd3Q6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBSb2xlSW5mb2Agc3RydWN0dXJlLiAqL1xuICAgICAgICAgIGp3dDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNlc3Npb25JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIENyZWF0aW9uIGRhdGUgKGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaClcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjcmVhdGVkX2F0OiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIGRhdGUgKGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaClcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBleHA6IG51bWJlcjtcbiAgICAgICAgICBsYXN0X3VzZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldoZXJlQW5kV2hlblwiXSB8IG51bGw7XG4gICAgICAgICAgbGlmZXRpbWVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2Vzc2lvblxuICAgICAgICAgICAqIEBleGFtcGxlIE9JREMgbG9naW4gc2Vzc2lvblxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gTGlzdHMgdXNlciBwZXJtaXNzaW9uIGFuZCBhY2Nlc3MgZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCJzaWduOipcIixcbiAgICAgICAgICAgKiAgIFwibWFuYWdlOm1mYTp2b3RlOmNzXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2NvcGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVbmlxdWVseSBpZGVudGlmaWVzIHRoZSBzZXNzaW9uLCBidXQgY2Fubm90IGJlIHVzZWQgZm9yIGF1dGguXG4gICAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCByZXN1bHRpbmcgc2lnbmF0dXJlLiAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmV0dXJuZWQgdXBvbiBhIHN1Y2Nlc3NmdWwgU0lXRSBhdXRoZW50aWNhdGlvbi4gKi9cbiAgICBTaXdlQ29tcGxldGVSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGUgdXNlciB3aXRoIHRoZSByZXF1ZXN0ZWQgU0lXRSBpZGVudGl0eS4gKi9cbiAgICAgICAgICBpZF90b2tlbjogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIGNoYWxsZW5nZSByZXR1cm5lZCBpbiByZXNwb25zZSB0byBhIFNpZ24tSW4gd2l0aCBFdGhlcmV1bSByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQ29udGFpbnMgYSBtZXNzYWdlIHRoYXQgdGhlIGNsaWVudCBtdXN0IHNpZ24gZm9sbG93aW5nIEVJUC0xOTFcbiAgICAgKiB3aXRoIHRoZSByZXF1ZXN0ZWQga2V5IGluIG9yZGVyIHRvIGNvbXBsZXRlIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqXG4gICAgICogVGhlIGNsaWVudCBoYXMgdW50aWwgdGhlIG1lc3NhZ2UgZXhwaXJlcyAoYnV0IG5vIG1vcmUgdGhhbiA1IG1pbnV0ZXMpIHRvIGNvbXBsZXRlIHRoZSBjaGFsbGVuZ2UuXG4gICAgICovXG4gICAgU2l3ZUluaXRSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgKHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3Qgd2hlbiBjYWxsaW5nIHRoZSBQQVRDSCAoJ2NvbXBsZXRlJykgZW5kcG9pbnQpICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWVzc2FnZSB0byBzaWduIGZvbGxvd2luZyB0aGUgRUlQLTE5MSBzdGFuZGFyZC4gKi9cbiAgICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgU3Rha2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgZGVwb3NpdF90eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHhuXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbGlkYXRvciBrZXkgaWQgKFwiS2V5Iy4uLlwiKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSNkYjE3MzFmOC0zNjU5LTQ1YzAtODg1Yi1lMTFlMWY1YjdiZTJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjcmVhdGVkX3ZhbGlkYXRvcl9rZXlfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBUZWxlZ3JhbUF1dGhSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGlzIHRlbGVncmFtIHVzZXIgKi9cbiAgICAgICAgICBpZF90b2tlbjogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPQXV0aDIgc3RhbmRhcmQgVG9rZW4gUmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY3NDkjc2VjdGlvbi00LjIuMlxuICAgICAqL1xuICAgIFRva2VuUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MgdG9rZW4gaXNzdWVkIGJ5IHRoZSBhdXRob3JpemF0aW9uIHNlcnZlci4gKi9cbiAgICAgICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZztcbiAgICAgICAgICBleHBpcmVzX2luOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBPSURDIHRva2VuIGlzc3VlZCBieSBDdWJpc3QsIGNvbnRhaW5pbmcgdXNlciBpbmZvcm1hdGlvbiAqL1xuICAgICAgICAgIGlkX3Rva2VuPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWZyZXNoIHRva2VuIGlzc3VlZCBieSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIuICovXG4gICAgICAgICAgcmVmcmVzaF90b2tlbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiB0aGUgdG9rZW4gaXNzdWVkLiBWYWx1ZSBpcyBjYXNlIGluc2Vuc2l0aXZlLiAqL1xuICAgICAgICAgIHRva2VuX3R5cGU6IHN0cmluZztcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgICAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFRvdHBJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgVE9UUCBjaGFsbGVuZ2UuXG4gICAgICAgICAgICogQGV4YW1wbGUgVG90cENoYWxsZW5nZSM3ODkyZWJiYS01NjNlLTQ4NWItYmI3ZC1lMjYyNjczNjMyODZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFN0YW5kYXJkIFRPVFAgdXJsIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIGluaXRpYWxpemUgVE9UUC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBvdHBhdXRoOi8vdG90cC9DdWJpc3Q6YWxpY2UtJTQwZXhhbXBsZS5jb20/c2VjcmV0PURBSEY3S0NPVFFXU09NSzRYRkVNTkhYTzRKNDMzT0Q3Jmlzc3Vlcj1DdWJpc3RcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX3VybDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXNwb25zZSB0byBzaWduIGFuIGV0aDIgdW5zdGFrZSByZXF1ZXN0LiAqL1xuICAgIFVuc3Rha2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIG1lc3NhZ2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVm9sdW50YXJ5RXhpdFwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQkxTIHNpZ25hdHVyZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDkxMGM3Y2Q1MzdlZDkxY2M4YzRhODJmM2NiZDgzMmU5YmU4YzI0YTIyZTljODZkZjQ3OWY3Y2U0MjAyNWVhNmEwOTYxOWI0MThiNjY2YTA2MGUyNjBkMmFhZTMxYjhlNTBlOWQwNWNhMzQ0MmM3ZWVkM2I1MDdlNTIwN2UxNDY3NDI3NWY2OGMyYmE4NGM0YmY2YjhkZDM2NGEzMDRhY2FjOGNmYWIzNjgxZTI1MTRiNDQwMGY5MjQyYmM2MTE2NFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIH07XG4gICAgfTtcbiAgICBVcGRhdGVPcmdSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGFsaWVuX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE1GQSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQgZm9yIGltcGxpY2l0bHkgc2VjdXJpdHktc2Vuc2l0aXZlXG4gICAgICAgICAgICogb3BlcmF0aW9ucyAobGlrZSBsb2dnaW5nIGluLCBhZGRpbmcgYW4gTUZBIGZhY3RvciwgZXhwb3J0aW5nIGtleXMsIGV0Yy4pLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGFsbG93ZWRfbWZhX3R5cGVzPzoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdW107XG4gICAgICAgICAgfSB8IG51bGw7XG4gICAgICAgICAgY3VzdG9tX2NoYWlucz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5zRGF0YVwiXSB8IG51bGw7XG4gICAgICAgICAgZGVmYXVsdF9pbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXSB8IG51bGw7XG4gICAgICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgICAgIGVtYWlsX3ByZWZlcmVuY2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFByZWZlcmVuY2VzXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSAqL1xuICAgICAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgICAgICBleHRfZGF0YT86XG4gICAgICAgICAgICB8ICh7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAgICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICAgICAgY3JlYXRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICAgICAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPilcbiAgICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgICBoaXN0b3JpY2FsX2RhdGFfY29uZmlndXJhdGlvbj86XG4gICAgICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uXCJdXG4gICAgICAgICAgICB8IG51bGw7XG4gICAgICAgICAgaWRwX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkcENvbmZpZ1wiXSB8IG51bGw7XG4gICAgICAgICAga2V5X2V4cG9ydF9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgICAgIG1lbWJlcl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgbm90aWZpY2F0aW9uIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnRcIlxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzpcbiAgICAgICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl1bXVxuICAgICAgICAgICAgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgICBwYXNza2V5X2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlDb25maWdcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCJodHRwczovL2V4YW1wbGUuY29tXCJcbiAgICAgICAgICAgKiAgICAgXVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAgICAgcG9saWN5X2VuZ2luZV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFbmdpbmVDb25maWd1cmF0aW9uXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgcmVxdWlyZV9zY29wZV9jZWlsaW5nICovXG4gICAgICAgICAgcmVxdWlyZV9zY29wZV9jZWlsaW5nPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlIG9yZy13aWRlIHNpZ24gcnVsZXNcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25fcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgVE9UUCBmYWlsdXJlIGxpbWl0XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF9kZWxheT86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRpc2FibGVkICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfZGlzYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgd2luZG93XG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyBvcmcgdmVyc2lvblxuICAgICAgICAgICAqL1xuICAgICAgICAgIHZlcnNpb246IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBhIHJlcXVlc3QgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5ICovXG4gICAgVXBsb2FkV2FzbVBvbGljeVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHNpZ25lZCBVUkwgZm9yIHVwbG9hZGluZyB0aGUgcmVxdWVzdGVkIHdhc20gcG9saWN5LiAqL1xuICAgICAgICAgIHNpZ25lZF91cmw6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGVuY3J5cHRlZCB1c2VyLWV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBleHBvcnRlZCBrZXkgbWF0ZXJpYWwsIGVuY3J5cHRlZCB3aXRoIEFFUy0yNTYtR0NNIHVuZGVyIGEga2V5XG4gICAgICAgICAgICogZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0IHZpYSBIUEtFIChSRkM5MTgwKVxuICAgICAgICAgICAqIHdpdGggREhLRU0oUC0yNTYsIEhLREYtU0hBMjU2KSBhbmQgYmFzZTY0IGVuY29kZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jcnlwdGVkX2tleV9tYXRlcmlhbDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBhcyBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHRvIHdoaWNoIHRoaXMga2V5IGJlbG9uZ3MuICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgc3VjY2Vzc2Z1bCB1c2VyLWV4cG9ydCBpbml0IHJlcXVlc3QgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRSZXF1ZXN0XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIGJlaW5nIHJlcXVlc3RlZC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXNlckluT3JnSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIChvcHRpb25hbClcbiAgICAgICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgdXNlciBoYXMgZXZlciBzdWNjZXNzZnVsbHkgbG9nZ2VkIGluICovXG4gICAgICAgICAgaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAgICAgICAgIG1lbWJlcnNoaXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgbmFtZS4gKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyc2hpcFN0YXR1c1wiXTtcbiAgICAgICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZW1haWxcbiAgICAgICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgICAgIG1mYV9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVBvbGljeVwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG5hbWVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXByZWNhdGVkXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG8uIERlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgJ29yZ3MnLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVwiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZHM6IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG9yZ2FuaXphdGlvbnMgdGhlIHVzZXIgYmVsb25ncyB0bywgaW5jbHVkaW5nIHRoZSBtZW1iZXJzaGlwIHJvbGUgaW4gZWFjaC4gKi9cbiAgICAgICAgICBvcmdzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ01lbWJlcnNoaXBcIl1bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gdGhlIHVzZXIvb3JncyBlbmRwb2ludCAqL1xuICAgIFVzZXJPcmdzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIG9yZ3MgdGhpcyB1c2VyIGlzIGEgbWVtYmVyIG9mICovXG4gICAgICAgICAgb3JnczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdEYXRhXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHBhcmFtZXRlcnM6IG5ldmVyO1xuICByZXF1ZXN0Qm9kaWVzOiBuZXZlcjtcbiAgaGVhZGVyczogbmV2ZXI7XG4gIHBhdGhJdGVtczogbmV2ZXI7XG59XG5cbmV4cG9ydCB0eXBlICRkZWZzID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgdHlwZSBleHRlcm5hbCA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IGludGVyZmFjZSBvcGVyYXRpb25zIHtcbiAgLyoqXG4gICAqIFVzZXIgSW5mb1xuICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKlxuICAgKiBQUkVGRVIgYEdFVCAvdjAvb3Jncy97b3JnX2lkfS91c2VyL21lYFxuICAgKi9cbiAgYWJvdXRNZUxlZ2FjeToge1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgKiBAZGVzY3JpcHRpb24gSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5IHVzZWQgdG8gc2lnbiBLZXkgaW5mbyBhdHRlc3RhdGlvbnMuXG4gICAqL1xuICBhdHRlc3RhdGlvbkp3a1NldDoge1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSndrU2V0UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBhY2Nlc3NpYmxlIG9yZ2FuaXphdGlvbnMuXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFjY2Vzc2libGUgb3JnYW5pemF0aW9ucy5cbiAgICpcbiAgICogVW5hdXRoZW50aWNhdGVkIGVuZHBvaW50IGZvciByZXRyaWV2aW5nIGFsbCBvcmdhbml6YXRpb25zIGFjY2Vzc2libGUgdG8gYSB1c2VyLlxuICAgKiBUaGlzIGluZm9ybWF0aW9uIGlzIGVtYWlsZWQgdG8gdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MuXG4gICAqL1xuICBlbWFpbF9teV9vcmdzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgb2YgdGhlIHVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAgICovXG4gICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogKElOVEVSTkFMKSBTZW50cnkgQVBJIFByb3h5XG4gICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIFNlbnRyeSBBUEkgUHJveHlcbiAgICovXG4gIHNlbnRyeUFwaUNhbGxQdWJsaWM6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcInRleHQvcGxhaW5cIjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEpXS1MgZW5kcG9pbnQgZm9yIE1NSVxuICAgKiBAZGVzY3JpcHRpb24gSldLUyBlbmRwb2ludCBmb3IgTU1JXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBzaWduIEpTT04gV2ViIFRva2VucyBmb3IgTU1JLlxuICAgKi9cbiAgbW1pSndrU2V0OiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJKd2tTZXRSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBNTUkgSlNPTi1SUEMgZW5kcG9pbnRcbiAgICogQGRlc2NyaXB0aW9uIE1NSSBKU09OLVJQQyBlbmRwb2ludFxuICAgKlxuICAgKiBIYW5kbGVyIGZvciBhbGwgW01NSSBKU09OLVJQQ10oaHR0cHM6Ly9kb2NzLm1ldGFtYXNrLWluc3RpdHV0aW9uYWwuaW8vY3VzdG9kaWFuLWludGVncmF0aW9uL2ludGVncmF0aW9uLWRvY3MvYXBpL21ldGhvZHMpXG4gICAqIHJlcXVlc3RzLlxuICAgKi9cbiAgbW1pOiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkpycGNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBUb2tlbiByZWZyZXNoIGVuZHBvaW50LCBjb21wbGlhbnQgd2l0aCBPQXV0aC5cbiAgICogQGRlc2NyaXB0aW9uIFRva2VuIHJlZnJlc2ggZW5kcG9pbnQsIGNvbXBsaWFudCB3aXRoIE9BdXRoLlxuICAgKlxuICAgKiBUaGUgYm9keSBjb250ZW50IHR5cGUgY2FuIGJlIGVpdGhlciAnYXBwbGljYXRpb24vanNvbicgb3IgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcuXG4gICAqL1xuICBvYXV0aDJUb2tlblJlZnJlc2g6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb2tlblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBPcmdcbiAgICogQGRlc2NyaXB0aW9uIEdldCBPcmdcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIGdldE9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIE9yZ1xuICAgKlxuICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICovXG4gIHVwZGF0ZU9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVPcmdSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXBkYXRlT3JnUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUXVlcnkgdGhlIGF1ZGl0IGxvZy5cbiAgICogQGRlc2NyaXB0aW9uIFF1ZXJ5IHRoZSBhdWRpdCBsb2cuXG4gICAqL1xuICBxdWVyeUF1ZGl0TG9nOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1ZGl0TG9nUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZEF1ZGl0TG9nUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICogQGRlc2NyaXB0aW9uIEFzc29jaWF0ZSBhbiBPSURDIGlkZW50aXR5IHdpdGggYW4gYXJiaXRyYXJ5IHVzZXIgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAqL1xuICBhdXRoTWlncmF0aW9uSWRlbnRpdHlBZGQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWlncmF0ZUlkZW50aXR5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEaXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICogQGRlc2NyaXB0aW9uIERpc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKi9cbiAgYXV0aE1pZ3JhdGlvbklkZW50aXR5UmVtb3ZlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1pZ3JhdGVJZGVudGl0eVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIGV4aXN0aW5nIHVzZXJzJyBwcm9maWxlcy4gQ3VycmVudGx5IHN1cHBvcnRzIG9ubHkgKHJlKXNldHRpbmcgZW1haWxzLlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIGV4aXN0aW5nIHVzZXJzJyBwcm9maWxlcy4gQ3VycmVudGx5IHN1cHBvcnRzIG9ubHkgKHJlKXNldHRpbmcgZW1haWxzLlxuICAgKi9cbiAgYXV0aE1pZ3JhdGlvblVzZXJVcGRhdGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWlncmF0ZVVwZGF0ZVVzZXJzUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIGEgc2VyaWFsaXplZCBBdmFsYW5jaGUgQy9YL1AtQ2hhaW4gTWVzc2FnZVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BFdGggKEMtQ2hhaW4gbWVzc2FnZXMpIG9yXG4gICAqIFNlY3BBdmEgKFgtIGFuZCBQLUNoYWluIG1lc3NhZ2VzKSBrZXkuIEN1cnJlbnRseSBzaWduaW5nIEMtQ2hhaW4gbWVzc2FnZXNcbiAgICogd2l0aCBTZWNwRXRoIGtleSBtdXN0IGFsc28gYmUgZXhwbGljaXRseSBhbGxvd2VkIHZpYSBgQWxsb3dSYXdCbG9iU2lnbmluZ2BcbiAgICogcG9saWN5LlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGF2YVNlcmlhbGl6ZWRUeFNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXZhbGFuY2hlIGNoYWluXG4gICAgICAgICAqIEBleGFtcGxlIFBcbiAgICAgICAgICovXG4gICAgICAgIGF2YV9jaGFpbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEF2YWxhbmNoZSBhZGRyZXNzIGluIGJlY2gzMiBvciBFVEggZm9ybWF0XG4gICAgICAgICAqIEBleGFtcGxlIDB4QjMxZjY2QUEzQzFlNzg1MzYzRjA4NzVBMUI3NEUyN2I4NUZENjZjN1xuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXZhU2VyaWFsaXplZFR4U2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGF2YVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXZhbGFuY2hlIGJlY2gzMiBhZGRyZXNzIGZvcm1hdCB3aXRob3V0IHRoZSBjaGFpbiBwcmVmaXhcbiAgICAgICAgICogQGV4YW1wbGUgYXZheDFhbTR3NmhmcnZtaDNha2R1emtqdGhydGd0cWFmYWxjZTZhbjhjclxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXZhU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQmFieWxvbiBDb3ZlbmFudCBDb21taXR0ZWUgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIENvdmVuYW50IENvbW1pdHRlZSBSZXF1ZXN0XG4gICAqXG4gICAqIFNpZ25zIHRyYW5zYWN0aW9ucyByZWxldmFudCB0byBhIEJhYnlsb24gY292ZW5hbnQgY29tbWl0dGVlIHNpZ25lcixcbiAgICogaS5lLiwgU2Nobm9yciBhbmQgYWRhcHRvciBzaWduYXR1cmVzIGZvciB0aGUgdW5ib25kaW5nLCBzbGFzaGluZywgYW5kXG4gICAqIHNsYXNoLXVuYm9uZGluZyBvdXRwdXRzIG9mIGEgQmFieWxvbiBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYmFieWxvbkNvdlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gaGV4LWVuY29kZWQgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDAzZTM4MTA2ZGQ3NjY1NmJjNjhkMDI4OThlZGUxYTkxMWRmOGM3OTNlNDZhYzRlYjM3ZDI2YzI2NmFhZTVkMmE1YVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvbkNvdlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQmFieWxvbkNvdlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEVPVFMgbm9uY2VzXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgRU9UUyBub25jZXNcbiAgICpcbiAgICogR2VuZXJhdGVzIGEgc2V0IG9mIEJhYnlsb24gRU9UUyBub25jZXMgZm9yIGEgc3BlY2lmaWVkIGNoYWluLWlkLCBzdGFydGluZyBhdCBhXG4gICAqIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAqL1xuICBjcmVhdGVFb3RzTm9uY2VzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHB1YmxpYyBrZXkgb2YgdGhlIEVPVFMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDU3ZjBmMjRjZmIwNmMzYzM1ODc0YmJkMWY1OWI1NzE4MGE1YTlkN2UxZjY5MjkyODA4MzljODMwZjVjMTQ3ZlxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW90c0NyZWF0ZU5vbmNlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVvdHNDcmVhdGVOb25jZVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBFT1RTIHNpZ25hdHVyZVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIGFuIEVPVFMgc2lnbmF0dXJlXG4gICAqXG4gICAqIEdlbmVyYXRlcyBhbiBFT1RTIHNpZ25hdHVyZSBmb3IgdGhlIHNwZWNpZmllZCBjaGFpbi1pZCwgYmxvY2sgaGVpZ2h0LCBhbmQgbWVzc2FnZS5cbiAgICovXG4gIGVvdHNTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHB1YmxpYyBrZXkgb2YgdGhlIEVPVFMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDU3ZjBmMjRjZmIwNmMzYzM1ODc0YmJkMWY1OWI1NzE4MGE1YTlkN2UxZjY5MjkyODA4MzljODMwZjVjMTQ3ZlxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW90c1NpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJhYnlsb24gU3Rha2luZyBSZWdpc3RyYXRpb25cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBTdGFraW5nIFJlZ2lzdHJhdGlvblxuICAgKlxuICAgKiBDcmVhdGVzIGFuZCBzaWducyB0aGUgZGF0YSBuZWVkZWQgdG8gcmVnaXN0ZXIgYSBQaGFzZS0yIG9yIFBoYXNlLTNcbiAgICogQmFieWxvbiBzdGFrZS4gVGhpcyBpbmNsdWRlcyB0aGUgZGVwb3NpdCBhbmQgdW5ib25kaW5nIHRyYW5zYWN0aW9ucyxcbiAgICogdHdvIHNsYXNoaW5nIHRyYW5zYWN0aW9ucywgdGhlIHNsYXNoaW5nIHNpZ25hdHVyZXMsIGFuZCB0aGUgcHJvb2Ygb2ZcbiAgICogcG9zc2Vzc2lvbi5cbiAgICpcbiAgICogTm90ZSB0aGF0IGl0IGlzIGFsc28gcG9zc2libGUgdG8gZ2VuZXJhdGUgdGhpcyByZWdpc3RyYXRpb24gZGF0YSBieVxuICAgKiBtYWtpbmcgZm91ciBjYWxscyB0byB0aGUgQmFieWxvbiBzdGFraW5nIEFQSSwgcGx1cyBvbmUgY2FsbCB0byB0aGVcbiAgICogUFNCVCBzaWduaW5nIEFQSSB0byBnZW5lcmF0ZSB0aGUgQklQLTMyMiBwcm9vZiBvZiBwb3NzZXNzaW9uLiBUaGVcbiAgICogcmVnaXN0cmF0aW9uIEFQSSBnZW5lcmF0ZXMgdGhlIHNhbWUgZGF0YSBidXQgaXMgZWFzaWVyIHRvIHVzZS5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgVGFwcm9vdCBrZXkuIElmIHlvdXJcbiAgICogZGVwb3NpdCB0cmFuc2FjdGlvbiBzcGVuZHMgVVRYT3MgdGhhdCBhcmUgY29udHJvbGxlZCBieSBvdGhlciBrZXlzLFxuICAgKiB5b3UgY2FuIHN1Ym1pdCB0aGUgJ2RlcG9zaXQnIFBTQlQgdG8gdGhlIFBTQlQgc2lnbmluZyBBUEkgb25lIG9yIG1vcmVcbiAgICogdGltZXMgdG8gZ2VuZXJhdGUgdGhlIHJlcXVpcmVkIHNpZ25hdHVyZXMuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBjb25zdWx0IHRoZVxuICAgKiBbQmFieWxvbiBkb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmxhYnMtaW8vYmFieWxvbi9ibG9iL3JlbGVhc2UvdjEueC9kb2NzL3JlZ2lzdGVyLWJpdGNvaW4tc3Rha2UubWQpLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGJhYnlsb25SZWdpc3RyYXRpb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyIGVuY29kaW5nIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIHRiMXBlNGZneW44N3B3a3UyeGRwdGMyZHRhZXF6eXg4d3g4OWNxYTZ5bnR1OHRkNDlmbHB0NXdxNWs2aGF1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uUmVnaXN0cmF0aW9uUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJhYnlsb25SZWdpc3RyYXRpb25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBTdGFraW5nIFRyYW5zYWN0aW9uXG4gICAqXG4gICAqIENyZWF0ZXMgYW5kIHNpZ25zIHRyYW5zYWN0aW9ucyByZWxhdGVkIHRvIEJhYnlsb24gc3Rha2luZyAoaS5lLixcbiAgICogZGVwb3NpdCwgZWFybHkgdW5ib25kLCB3aXRoZHJhd2FsKS4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIFByZS1TaWduZWRcbiAgICogQml0Y29pbiBUcmFuc2FjdGlvbiAoUFNCVCksIGFzIGRlZmluZWQgaW4gQklQLTE3NCwgd2hpY2ggbWF0Y2hlcyB0aGVcbiAgICogZm9ybWF0IHVzZWQgaW4gbW9zdCBCYWJ5bG9uIHRvb2xpbmcuXG4gICAqXG4gICAqIFRoZSAnZGVwb3NpdCcgYWN0aW9uIGNhbiBiZSB1c2VkIHdpdGggZWl0aGVyIFNlZ3dpdCAoaS5lLiwgU2VjcEJ0Yy9TZWNwQnRjVGVzdClcbiAgICogb3IgVGFwcm9vdCAoaS5lLiwgVGFwcm9vdEJ0Yy9UYXByb290QnRjVGVzdCkga2V5cy4gVGhlIHJlbWFpbmluZyBhY3Rpb25zIGNhbiBiZVxuICAgKiB1c2VkIG9ubHkgd2l0aCBUYXByb290IGtleXMuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYmFieWxvblN0YWtpbmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyIGVuY29kaW5nIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIHRiMXBlNGZneW44N3B3a3UyeGRwdGMyZHRhZXF6eXg4d3g4OWNxYTZ5bnR1OHRkNDlmbHB0NXdxNWs2aGF1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1Jlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIGEgQml0Y29pbiBtZXNzYWdlLlxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIEJpdGNvaW4gbWVzc2FnZS5cbiAgICpcbiAgICogU2lnbnMgYSBtZXNzYWdlIHVzaW5nIEJJUDEzNyBtZXNzYWdlIHNpZ25pbmcgd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqL1xuICBidGNNZXNzYWdlU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBZGRyZXNzIG9mIGEgU2Vnd2l0IG9yIExlZ2FjeSBiaXRjb2luIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBiYzFxM3IzNXU0dGg3OGgwNmQ2NG13bXAzdnB1OHFtenlhMDVwcThmd2xcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y01lc3NhZ2VTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJ0Y01lc3NhZ2VTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gYSBQYXJ0aWFsbHkgU2lnbmVkIEJpdGNvaW4gVHJhbnNhY3Rpb24gKFBTQlQpXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgKlxuICAgKiBTaWducyBhbGwgaW5wdXRzIG9mIHRoZSBzdXBwbGllZCBQU0JUIHYwIChCSVAtMTc0KSB0aGF0IHBlcnRhaW4gdG8gdGhlXG4gICAqICdwdWJrZXknIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIFRhcHJvb3Qgb3IgYVxuICAgKiBTZWd3aXQga2V5LiBGb3IgU2Vnd2l0IGtleXMsIEN1YmVTaWduZXItc3BlY2lmaWMgZGV0ZXJtaW5pc3RpYyB0d2Vha2luZ1xuICAgKiBjYW4gYmUgYXBwbGllZCB0byAncHVia2V5JyBiZWZvcmUgc2lnbmluZywgb24gYSBwZXItaW5wdXQgYmFzaXMuIChTZWUgdGhlXG4gICAqIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBTZWd3aXQgdHdlYWtpbmcuKVxuICAgKlxuICAgKiBXaGVuIGNhbGxpbmcgd2l0aCBhIHNlZ3dpdCBrZXkgdGhlIHJlcXVpcmVkIHNjb3BlIGlzICdzaWduOmJ0Yzpwc2J0OnNlZ3dpdCcuXG4gICAqIEZvciBhIHRhcHJvb3Qga2V5LCB0aGUgc2NvcGUgaXMgJ3NpZ246YnRjOnBzYnQ6dGFwcm9vdCcuIEVpdGhlciB0eXBlIG9mIGtleVxuICAgKiBjYW4gYmUgdXNlZCB3aXRoIHRoZSAnc2lnbjpidGM6cHNidCcgc2NvcGUuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgcHNidFNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyKG0pLWVuY29kZWQgc2Vnd2l0IG9yIHRhcHJvb3QgYWRkcmVzc1xuICAgICAgICAgKiBAZXhhbXBsZSBiYzFwMndzbGRlejVtdWQyeWFtMjlxMjJ3Z2ZoOTQzOXNwZ2R1dmN0ODNrM3BtNTBmY3hhNWRwczU5aDR6NVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHNidFNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUHNidFNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBCaXRjb2luIFNlZ3dpdCBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCaXRjb2luIFNlZ3dpdCBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhIEJpdGNvaW4gU2Vnd2l0IHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYnRjU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzItZW5jb2RlZCBzZWd3aXQgYWRkcmVzc1xuICAgICAgICAgKiBAZXhhbXBsZSBiYzFxNXA1cWthZTc3bHk4MGtyNHB5Znl0ZHFtN3JmMDhkZGhkZWpsOWdcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJpdGNvaW4gVGFwcm9vdCBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCaXRjb2luIFRhcHJvb3QgVHJhbnNhY3Rpb25cbiAgICpcbiAgICogU2lnbnMgYSBCaXRjb2luIFRhcHJvb3QgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBidGNUYXByb290U2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzJtLWVuY29kZWQgdGFwcm9vdCBhZGRyZXNzXG4gICAgICAgICAqIEBleGFtcGxlIGJjMXAyd3NsZGV6NW11ZDJ5YW0yOXEyMndnZmg5NDM5c3BnZHV2Y3Q4M2szcG01MGZjeGE1ZHBzNTloNHo1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUYXByb290U2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgQ29udGFjdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgQ29udGFjdHNcbiAgICpcbiAgICogTGlzdCBhbGwgY29udGFjdHMgaW4gdGhlIG9yZy5cbiAgICogQW55IG9yZyBtZW1iZXIgaXMgYWxsb3dlZCB0byBsaXN0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnLlxuICAgKlxuICAgKiAjIyBTZWFyY2ggQ29uZGl0aW9uXG4gICAqIFRoZSBzZWFyY2ggY29uZGl0aW9uIGlzIG9wdGlvbmFsLlxuICAgKlxuICAgKiAtIElmIHRoZSBzZWFyY2ggY29uZGl0aW9uIHN0YXJ0cyB3aXRoIFwibGFiZWw6Li4uXCIsIHRoaXMgbGlzdCB3aWxsIG9ubHkgaG9sZCBjb250YWN0cyB3aXRoXG4gICAqIHRoZSBsYWJlbCBwcm92aWRlZCBhZnRlciB0aGUgXCI6XCIuIEZvciBleGFtcGxlLCBcImxhYmVsOmN1YmlzdDplcmMyMF90b2tlblwiIHdvdWxkIHJldHVybiBjb250YWN0cyB0aGF0XG4gICAqIGhvbGQgdGhlIGxhYmVsIFwiY3ViaXN0OmVyYzIwX3Rva2VuXCIuXG4gICAqXG4gICAqIC0gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBjb250YWN0cyB3aG8gaGF2ZSBhbiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGgsIG9yXG4gICAqIGVxdWFsaW5nLCB0aGUgZ2l2ZW4gc2VhcmNoIHN0cmluZy4gRm9yIGV4YW1wbGUsIFwiMHhlZVwiIHdvdWxkIHJldHVybiBhbGwgY29udGFjdHMgaG9sZGluZyBhblxuICAgKiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGggXCIweGVlXCIuIFRoZSBzZWFyY2ggaXMgY2FzZS1pbnNlbnNpdGl2ZS5cbiAgICpcbiAgICogSWYgYSBzZWFyY2ggdGVybSBpcyBkZWZpbmVkLCB3ZSBkbyBub3QgZ3VhcmFudGVlXG4gICAqIHRoZSBudW1iZXIgb2YgcmVzdWx0cyBpbiBhIHBhZ2UuIFRoZSBiZWhhdmlvciBvZiB0aGlzIHBhcmFtZXRlciBtYXkgY2hhbmdlXG4gICAqIGluIHRoZSBmdXR1cmUgKGZvciBleGFtcGxlLCBtYWtpbmcgcmVzdWx0cyBtb3JlIHN0cmljdGx5IHBhZ2luYXRlZCBvclxuICAgKiBwZXJmb3JtaW5nIGEgZnV6enkgc2VhcmNoIHJhdGhlciB0aGFuIGEgcHJlZml4IHNlYXJjaCkuXG4gICAqL1xuICBsaXN0Q29udGFjdHM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFaXRoZXIgJ2xhYmVsOi4uLicsIHdoaWNoIGxpc3RzIGNvbnRhY3RzIHdpdGggdGhlIGxhYmVsIHByb3ZpZGVkIGFmdGVyIHRoZSAnOicuIE9yLCBhbiBlbnRpcmUgYWRkcmVzcywgb3IgcHJlZml4IG9mIGFuIGFkZHJlc3MsIHRoYXQgcmV0dXJuZWQgY29udGFjdHMgbXVzdCBoYXZlLiBXaGVuIHNlYXJjaGluZyBieSBhZGRyZXNzLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDMgY2hhcmFjdGVycy4gKi9cbiAgICAgICAgc2VhcmNoPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Q29udGFjdHNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgQ29udGFjdFxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIENvbnRhY3RcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBjb250YWN0IGluIHRoZSBvcmdhbml6YXRpb24td2lkZSBhZGRyZXNzIGJvb2suIFRoZVxuICAgKiB1c2VyIG1ha2luZyB0aGUgcmVxdWVzdCBpcyB0aGUgb3duZXIgb2YgdGhlIGNvbnRhY3QsIGdpdmluZyB0aGVtIGVkaXQgYWNjZXNzXG4gICAqIHRvIHRoZSBjb250YWN0IGFsb25nIHdpdGggdGhlIG9yZyBvd25lcnMuXG4gICAqL1xuICBjcmVhdGVDb250YWN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUNvbnRhY3RSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ29udGFjdEluZm9SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMb29rdXAgQ29udGFjdHMgYnkgQWRkcmVzc1xuICAgKiBAZGVzY3JpcHRpb24gTG9va3VwIENvbnRhY3RzIGJ5IEFkZHJlc3NcbiAgICpcbiAgICogUmV0dXJucyBhbGwgY29udGFjdHMgaW4gdGhlIG9yZyB0aGF0IGhhdmUgdGhlIGdpdmVuIGFkZHJlc3MuXG4gICAqXG4gICAqIFdoZW4gcXVlcnlpbmcgd2l0aCBhbiBFVk0gYWRkcmVzcyB3aXRob3V0IGEgY2hhaW4sIHRoaXMgZW5kcG9pbnQgcmV0dXJuc1xuICAgKiBjb250YWN0cyB3aXRoIHRoYXQgYWRkcmVzcyBvbiAqYW55KiBjaGFpbiwgaW5jbHVkaW5nIHRob3NlIHdpdGhvdXQgYSBjaGFpblxuICAgKiBkZWZpbmVkLlxuICAgKi9cbiAgbG9va3VwQ29udGFjdHNCeUFkZHJlc3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdEFkZHJlc3NEYXRhXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdENvbnRhY3RzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IENvbnRhY3RcbiAgICogQGRlc2NyaXB0aW9uIEdldCBDb250YWN0XG4gICAqXG4gICAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgb2YgYSBDb250YWN0LlxuICAgKi9cbiAgZ2V0Q29udGFjdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBDb250YWN0XG4gICAgICAgICAqIEBleGFtcGxlIENvbnRhY3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBjb250YWN0X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDb250YWN0SW5mb1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBDb250YWN0XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgQ29udGFjdFxuICAgKlxuICAgKiBEZWxldGUgYSBjb250YWN0LCBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgKlxuICAgKiBPbmx5IHRoZSBjb250YWN0IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBjb250YWN0cy5cbiAgICogQWRkaXRpb25hbGx5LCB0aGUgY29udGFjdCdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSBkZWxldGlvbi5cbiAgICovXG4gIGRlbGV0ZUNvbnRhY3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgQ29udGFjdFxuICAgICAgICAgKiBAZXhhbXBsZSBDb250YWN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgY29udGFjdF9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBDb250YWN0XG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgQ29udGFjdFxuICAgKlxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGNvbnRhY3QgaW4gdGhlIG9yZ2FuaXphdGlvbi13aWRlIGFkZHJlc3MgYm9vay4gT25seVxuICAgKiB0aGUgY29udGFjdCBvd25lciBvciBhbiBvcmcgb3duZXIgY2FuIHVwZGF0ZSBjb250YWN0cy5cbiAgICpcbiAgICogKlVwZGF0ZXMgd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIHZhbHVlIG9mIHRoZSBmaWVsZC4qXG4gICAqL1xuICB1cGRhdGVDb250YWN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIENvbnRhY3RcbiAgICAgICAgICogQGV4YW1wbGUgQ29udGFjdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGNvbnRhY3RfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVDb250YWN0UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNvbnRhY3RJbmZvUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IGN1cnJlbnQgY291bnRzIG9mIHVzZXJzIGFuZCBrZXlzIHdpdGhpbiBhbiBvcmcuXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgY3VycmVudCBjb3VudHMgb2YgdXNlcnMgYW5kIGtleXMgd2l0aGluIGFuIG9yZy5cbiAgICovXG4gIGNvdW50czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNvbXB1dGVDb3VudHNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICpcbiAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgKiBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljLlxuICAgKi9cbiAgZGVyaXZlS2V5TGVnYWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcml2ZUtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZXJpdmUgS2V5IEZyb20gTmV3IE9yIEV4aXN0aW5nIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICogQGRlc2NyaXB0aW9uIERlcml2ZSBLZXkgRnJvbSBOZXcgT3IgRXhpc3RpbmcgTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKlxuICAgKiBVc2VzIGVpdGhlciBhIG5ldyBvciBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljIHRvIGRlcml2ZSBrZXlzIG9mXG4gICAqIG9uZSBvciBtb3JlIHNwZWNpZmllZCB0eXBlcyB2aWEgc3BlY2lmaWVkIGRlcml2YXRpb24gcGF0aHMuXG4gICAqL1xuICBkZXJpdmVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVyaXZlS2V5c1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wdXRlIERpZmZpZSBIZWxsbWFuIHNoYXJlZCBzZWNyZXRcbiAgICogQGRlc2NyaXB0aW9uIENvbXB1dGUgRGlmZmllIEhlbGxtYW4gc2hhcmVkIHNlY3JldFxuICAgKlxuICAgKiBGb3IgYSBzZXQgb2YgZWxsaXB0aWMgY3VydmUgcG9pbnRzIChQXzEsIC4uLiwgUF9pKSwgY29tcHV0ZXMgdGhlIERpZmZpZSBIZWxsbWFuXG4gICAqIHNoYXJlZCBzZWNyZXQgKFFfMSwgLi4uLCBRaSkgPSAoc2sgKiBQXzEsIC4uLiBzayAqIFBfaSksIGZvciBzayB0aGUgc2VjcmV0IGtleS5cbiAgICogUG9pbnRzIGFyZSBzcGVjaWZpZWQgaW4gYSBjdXJ2ZS1kZXBlbmRlbnQgZm9ybWF0LiBTZWUgQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uXG4gICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAqXG4gICAqIFRoZSB1c2VyIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYSBOSVNUIFAtMjU2IHB1YmxpYyBrZXksIGluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdFxuICAgKiB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGUgcHVibGljIGtleSB1c2luZyBSRkM5MTgwIEhQS0UoUC0yNTYsIEhLREYtU0hBMjU2KSB3aXRoXG4gICAqIEFFUy0yNTYtR0NNIGFzIHRoZSBzeW1tZXRyaWMgY2lwaGVyLiBJbiB0aGlzIGNhc2UsIHRoZSByZXN1bHRpbmcgY2lwaGVydGV4dCB3aWxsXG4gICAqIGNvbnRhaW4gYSBzZXJpYWxpemVkIEpTT04gYmxvYiBjb250YWluaW5nIHRoZSB2ZWN0b3Igb2Ygc2hhcmVkIHNlY3JldHMgaW4gdGhlIHNhbWVcbiAgICogb3JkZXIgdGhleSB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgdGhlIHVzZXIgZG9lcyBub3Qgc3BlY2lmeSBhIHB1YmxpYyBrZXksIHRoZSByZXN1bHRpbmcgc2hhcmVkIHNlY3JldHMgd2lsbCBiZVxuICAgKiByZXR1cm5lZCB1bmVuY3J5cHRlZC4gSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBzYW1wbGUgYSByYW5kb20gdmFsdWUgclxuICAgKiBtb2R1bG8gdGhlIGdyb3VwIG9yZGVyIGFuZCBtYXNrIHRoZSByZXF1ZXN0ZWQgcG9pbnRzIGFzIChyICogUF8xLCAuLi4sIHIgKiBQX2kpLlxuICAgKiBUaGUgcmVzdWx0IHdpbGwgYmUgKHIgKiBzayAqIFBfMSwgLi4uLCByICogc2sgKiBQX2kpLCB3aGljaCBjYW4gYmUgdW5tYXNrZWQgYnlcbiAgICogZmlyc3QgY29tcHV0aW5nIHJeLTEsIHRoZSBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIHIgbW9kdWxvIHRoZSBncm91cCBvcmRlcixcbiAgICogdGhlbiBjb21wdXRpbmcgYSBzY2FsYXIgbXVsdGlwbGljYXRpb24gb2YgZWFjaCByZXR1cm5lZCBwb2ludCB3aXRoIHJeLTEuXG4gICAqXG4gICAqIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgc2VjdXJpdHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBhcHByb2FjaGVzLiBUaGVcbiAgICogY2xpZW50IGlzIGZyZWUgdG8gY2hvb3NlIHRoZSBvbmUgdGhhdCBpcyBlYXNpZXIgZnJvbSBhbiBpbXBsZW1lbnRhdGlvbiBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIGRpZmZpZUhlbGxtYW5FeGNoYW5nZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGlmZmllSGVsbG1hblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJEaWZmaWVIZWxsbWFuUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBFbWFpbCBUZW1wbGF0ZVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IEVtYWlsIFRlbXBsYXRlXG4gICAqXG4gICAqIFJldHVybnMgdGhlIGVtYWlsIHRlbXBsYXRlIGZvciBhIGdpdmVuIHB1cnBvc2UuXG4gICAqL1xuICBnZXRFbWFpbENvbmZpZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGljaCBlbWFpbCBjb25maWd1cmF0aW9uIHRvIGdldCAqL1xuICAgICAgICBwdXJwb3NlOlxuICAgICAgICAgIHwgXCJvdHBcIlxuICAgICAgICAgIHwgXCJtZmFfcmVzZXRcIlxuICAgICAgICAgIHwgXCJvdHBfbWZhXCJcbiAgICAgICAgICB8IFwiYWxpZW5fcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgICAgIHwgXCJtZW1iZXJfcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgICAgIHwgXCJhbGllbl9pbnZpdGVcIlxuICAgICAgICAgIHwgXCJtZW1iZXJfaW52aXRlXCJcbiAgICAgICAgICB8IFwid2VsY29tZVwiO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiR2V0RW1haWxDb25maWdSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb25maWd1cmUgRW1haWwgVGVtcGxhdGVcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZSBFbWFpbCBUZW1wbGF0ZVxuICAgKi9cbiAgY29uZmlndXJlRW1haWw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hpY2ggZW1haWwgdG8gY29uZmlndXJlICovXG4gICAgICAgIHB1cnBvc2U6XG4gICAgICAgICAgfCBcIm90cFwiXG4gICAgICAgICAgfCBcIm1mYV9yZXNldFwiXG4gICAgICAgICAgfCBcIm90cF9tZmFcIlxuICAgICAgICAgIHwgXCJhbGllbl9wYXNzd29yZF9yZXNldFwiXG4gICAgICAgICAgfCBcIm1lbWJlcl9wYXNzd29yZF9yZXNldFwiXG4gICAgICAgICAgfCBcImFsaWVuX2ludml0ZVwiXG4gICAgICAgICAgfCBcIm1lbWJlcl9pbnZpdGVcIlxuICAgICAgICAgIHwgXCJ3ZWxjb21lXCI7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlRW1haWxSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBFbWFpbCBUZW1wbGF0ZVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEVtYWlsIFRlbXBsYXRlXG4gICAqL1xuICBkZWxldGVFbWFpbENvbmZpZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGljaCBlbWFpbCBjb25maWd1cmF0aW9uIHRvIGRlbGV0ZSAqL1xuICAgICAgICBwdXJwb3NlOlxuICAgICAgICAgIHwgXCJvdHBcIlxuICAgICAgICAgIHwgXCJtZmFfcmVzZXRcIlxuICAgICAgICAgIHwgXCJvdHBfbWZhXCJcbiAgICAgICAgICB8IFwiYWxpZW5fcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgICAgIHwgXCJtZW1iZXJfcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgICAgIHwgXCJhbGllbl9pbnZpdGVcIlxuICAgICAgICAgIHwgXCJtZW1iZXJfaW52aXRlXCJcbiAgICAgICAgICB8IFwid2VsY29tZVwiO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC0xOTEgRGF0YVxuICAgKlxuICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgRUlQLTE5MSBwZXJzb25hbF9zaWduIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKi9cbiAgZWlwMTkxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyBvZiB0aGUgU2VjcDI1NmsxIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVpcDE5MVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICpcbiAgICogU2lnbnMgdHlwZWQgZGF0YSBhY2NvcmRpbmcgdG8gRUlQLTcxMiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICovXG4gIGVpcDcxMlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgRVZNIGFkZHJlc3Mgb2YgdGhlIFNlY3AyNTZrMSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFaXA3MTJTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IGFuIE9yZy1FeHBvcnQgQ2lwaGVydGV4dFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGFuIE9yZy1FeHBvcnQgQ2lwaGVydGV4dFxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBleHBvcnQgY2lwaGVydGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIGtleS1pZC5cbiAgICogSW4gb3JkZXIgdG8gdXNlIHRoaXMgQVBJLCB5b3UgbXVzdCBiZSBhbiBvcmcgb3duZXIgYW5kIHlvdXIgb3JnIG11c3RcbiAgICogYmUgY29uZmlndXJlZCBmb3Igb3JnIGV4cG9ydCBhbmQgZm9yIEFQSS1iYXNlZCBleHBvcnQgZGVsaXZlcnkuXG4gICAqL1xuICBnZXRPcmdFeHBvcnQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiT3JnRXhwb3J0UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBhc3NvY2lhdGVkIE9JREMgaWRlbnRpdGllcyB3aXRoIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFzc29jaWF0ZWQgT0lEQyBpZGVudGl0aWVzIHdpdGggdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGxpc3RPaWRjSWRlbnRpdGllczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkxpc3RJZGVudGl0aWVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKlxuICAgKiBBbGllbiB1c2VycyBhcmUgYWxsb3dlZCB0byBjYWxsIHRoaXMgZW5kcG9pbnQsIGJ1dCBmb3IgdGhlbSBNRkEgaXMgcmVxdWlyZWRcbiAgICogKHVubGVzcyB0aGV5IGFyZSByZWdpc3RlcmluZyBhbiBlbWFpbC1vdHAgaWRlbnRpdHkgbWF0Y2hpbmcgdGhlaXIgY3VycmVudCBlbWFpbCk7XG4gICAqIGFkZGl0aW9uYWxseSwgbGltaXRzIG1heSBhcHBseSB0byBob3cgbWFueSBpZGVudGl0aWVzIHRoYXQgbWF5IHJlZ2lzdGVyLlxuICAgKi9cbiAgYWRkT2lkY0lkZW50aXR5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZElkZW50aXR5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSB0aGUgY3VycmVudCB1c2VyJ3MgYWNjb3VudCBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhbiBPSURDIGlkZW50aXR5IGZyb20gdGhlIGN1cnJlbnQgdXNlcidzIGFjY291bnQgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAqL1xuICByZW1vdmVPaWRjSWRlbnRpdHk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAqXG4gICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgYVxuICAgKiB2YWxpZCBDdWJlU2lnbmVyIHNlc3Npb24uXG4gICAqXG4gICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2VcbiAgICogdG8gYW5vdGhlciBzZXJ2aWNlIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICovXG4gIGNyZWF0ZVByb29mQ3ViZVNpZ25lcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAqXG4gICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIG1ldCB0aGVcbiAgICogYXV0aGVudGljYXRpb24gcmVxdWlyZW1lbnRzIChhbGxvd2VkIGlzc3VlcnMgJiBhdWRpZW5jZXMpIGZvciBDdWJlU2lnbmVyXG4gICAqIHdpdGhvdXQgbGVha2luZyB0aGVpciBjcmVkZW50aWFscy5cbiAgICpcbiAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZSB0byBhbm90aGVyIHNlcnZpY2VcbiAgICogd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgKi9cbiAgY3JlYXRlUHJvb2ZPaWRjOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgKlxuICAgKiBBbGxvd3MgYSB0aGlyZC1wYXJ0eSB0byB2YWxpZGF0ZSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogV2hlbiBhIHRoaXJkLXBhcnR5IGlzIHByb3ZpZGVkIGFuIFtJZGVudGl0eVByb29mXSBvYmplY3QsIHRoZXkgbXVzdCBjaGVjayBpdHNcbiAgICogdmVyYWNpdHkgYnkgY2FsbGluZyB0aGlzIGVuZHBvaW50XG4gICAqL1xuICB2ZXJpZnlQcm9vZjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGVcbiAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0ZVxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGV4Y2hhbmdlcyBhbiBlbWFpbCAmIHBhc3N3b3JkIGZvciBhbiBPSURDIHRva2VuXG4gICAqL1xuICBpZHBBdXRoZW50aWNhdGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRpb25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQXV0aGVudGljYXRpb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXF1ZXN0IFBhc3N3b3JkIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IFBhc3N3b3JkIFJlc2V0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZSAob2YgdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS5gKSxcbiAgICogYW5kIHNlbmRzIHRoZSBzaWduYXR1cmUgdG8gdGhlIHVzZXIncyBlbWFpbC4gQ2xpZW50IGFwcGxpY2F0aW9ucyBjYW4gcmVjb25zdHJ1Y3QgdGhlIHRva2VuXG4gICAqIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGB7aGVhZGVyfS57cGF5bG9hZH0uYCB3aXRoIHRoZSBzaWduYXR1cmUsIHByb2R1Y2luZyBhIHZhbGlkIE9JREMgdG9rZW4gb2ZcbiAgICogdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS57c2lnbmF0dXJlfWAuIFRoZSB0b2tlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlclxuICAgKiB3aGVuIHBlcmZvcm1pbmcgdGhlIGBpZHBfcGFzc3dvcmRfcmVzZXRfY29uZmlybWAgcmVxdWVzdC5cbiAgICovXG4gIGlkcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3N3b3JkUmVzZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1haWxPdHBSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb25maXJtIFBhc3N3b3JkIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBDb25maXJtIFBhc3N3b3JkIFJlc2V0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgYWxsb3dzIElEUCB1c2VycyB0byByZXNldCB0aGVpciBwYXNzd29yZFxuICAgKiB1c2luZyBhIHRva2VuIHRoZXkgaGF2ZSByZWNlaXZlZCBpbiB0aGVpciBlbWFpbC5cbiAgICovXG4gIGlkcFBhc3N3b3JkUmVzZXRDb25maXJtOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3N3b3JkUmVzZXRDb25maXJtUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgKlxuICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgKi9cbiAgY3JlYXRlS2V5SW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW1wb3J0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gSW1wb3J0IEtleVxuICAgKlxuICAgKiBTZWN1cmVseSBpbXBvcnRzIGFuIGV4aXN0aW5nIGtleSB1c2luZyBhIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGtleS1pbXBvcnQga2V5LlxuICAgKi9cbiAgaW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBQdWJsaWMgT3JnIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFB1YmxpYyBPcmcgSW5mb1xuICAgKlxuICAgKiBVbmF1dGhlbnRpY2F0ZWQgZW5kcG9pbnQgdGhhdCByZXR1cm5zIHB1YmxpY2x5LWF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24uXG4gICAqL1xuICBwdWJsaWNfb3JnX2luZm86IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQdWJsaWNPcmdJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIChJTlRFUk5BTCkgQ3VzdG9tIGNoYWluIFJQQyBwcm94eVxuICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBDdXN0b20gY2hhaW4gUlBDIHByb3h5XG4gICAqL1xuICBjdXN0b21DaGFpblJwY0NhbGw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5ScGNSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3VzdG9tQ2hhaW5ScGNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAqL1xuICBlc3Bsb3JhQXBpQ2FsbDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFc3Bsb3JhUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVzcGxvcmFSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiAoSU5URVJOQUwpIEF1dGhlbnRpY2F0ZWQgU2VudHJ5IEFQSSBQcm94eVxuICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBBdXRoZW50aWNhdGVkIFNlbnRyeSBBUEkgUHJveHlcbiAgICovXG4gIHNlbnRyeUFwaUNhbGw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJ0ZXh0L3BsYWluXCI6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBY2NlcHQgYW4gaW52aXRhdGlvblxuICAgKiBAZGVzY3JpcHRpb24gQWNjZXB0IGFuIGludml0YXRpb25cbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBhbGxvd3MgaWRwIHVzZXJzIHRvIHJlZ2lzdGVyIHVzaW5nIGEgdG9rZW4gdGhleSBoYXZlIHJlY2VpdmVkIGluIHRoZWlyIGVtYWlsXG4gICAqL1xuICBpbnZpdGF0aW9uQWNjZXB0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0YXRpb25BY2NlcHRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHBlbmRpbmcgaW52aXRhdGlvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgcGVuZGluZyBpbnZpdGF0aW9uc1xuICAgKlxuICAgKiBSZXR1cm5zIGFsbCBwZW5kaW5nIChub3QgeWV0IGFjY2VwdGVkKSBpbnZpdGF0aW9ucyBmb3IgdGhlIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIGxpc3RJbnZpdGF0aW9uczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RJbnZpdGF0aW9uc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENhbmNlbCBhIHBlbmRpbmcgaW52aXRhdGlvblxuICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VsIGEgcGVuZGluZyBpbnZpdGF0aW9uXG4gICAqXG4gICAqIFJlbW92ZXMgYSBwZW5kaW5nIGludml0YXRpb24gZnJvbSB0aGUgb3JnYW5pemF0aW9uLiBJZiBubyBwZW5kaW5nIGludml0YXRpb25cbiAgICogZXhpc3RzIGZvciB0aGUgZ2l2ZW4gZW1haWwgYWRkcmVzcywgYSBub3QtZm91bmQgZXJyb3IgaXMgcmV0dXJuZWQuXG4gICAqL1xuICBjYW5jZWxJbnZpdGF0aW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNhbmNlbEludml0YXRpb25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEludml0ZSBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgaW4gYW4gZXhpc3Rpbmcgb3JnIGFuZCBzZW5kcyB0aGF0IHVzZXIgYW4gaW52aXRlIGVtYWlsLlxuICAgKi9cbiAgaW52aXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleXNcbiAgICpcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBhY2Nlc3NpYmxlIGtleXMgaW4gYSBnaXZlbiBvcmcgKHRvIG9yZyBvd25lciwgYWxsIG9yZyBrZXlzXG4gICAqIGFyZSBhY2Nlc3NpYmxlOyB0byBtZW1iZXJzLCBvbmx5IHRoZWlyIG93biBrZXlzIGFyZSBhY2Nlc3NpYmxlKS5cbiAgICpcbiAgICogSWYgYSBzZWFyY2ggY29uZGl0aW9uIGlzLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBrZXlzIHdob3NlIGVpdGhlclxuICAgKiBtYXRlcmlhbCBJRCBvciBtZXRhZGF0YSBjb250YWluIHRoZSBzZWFyY2ggY29uZGl0aW9uIHN0cmluZy5cbiAgICpcbiAgICogTk9URSB0aGF0IGlmIHBhZ2luYXRpb24gaXMgdXNlZCBhbmQgYSBwYWdlIGxpbWl0IGlzIHNldCwgdGhlIHJldHVybmVkIHJlc3VsdFxuICAgKiBzZXQgbWF5IGNvbnRhaW4gZWl0aGVyIEZFV0VSIG9yIE1PUkUgZWxlbWVudHMgdGhhbiB0aGUgcmVxdWVzdGVkIHBhZ2UgbGltaXQuXG4gICAqL1xuICBsaXN0S2V5c0luT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IGtleSB0eXBlXG4gICAgICAgICAqIEBleGFtcGxlIFNlY3BFdGhBZGRyXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfdHlwZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IGtleSBvd25lclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzUyNjljNTc5LWI0ZjktNDYyMC05ZTkwLWU0NmE1YTBmZmI0ZFxuICAgICAgICAgKi9cbiAgICAgICAga2V5X293bmVyPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2VhcmNoIGtleSBtZXRhZGF0YVxuICAgICAgICAgKiBAZXhhbXBsZSBzb21lIHZhbHVlXG4gICAgICAgICAqL1xuICAgICAgICBzZWFyY2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleVxuICAgKlxuICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICovXG4gIGNyZWF0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgKi9cbiAgZ2V0S2V5SW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgS2V5XG4gICAqXG4gICAqIERlbGV0ZXMgYSBrZXkgc3BlY2lmaWVkIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogT25seSB0aGUga2V5IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBrZXlzLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIGRlbGV0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBLZXlcbiAgICpcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgYSBrZXkuICBUaGUgdXNlciBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUga2V5IG9yXG4gICAqIG9yZ2FuaXphdGlvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKlxuICAgKiBGb3IgZWFjaCByZXF1ZXN0ZWQgdXBkYXRlLCB0aGUgc2Vzc2lvbiBtdXN0IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgJ21hbmFnZTprZXk6dXBkYXRlOl8nIHNjb3BlO1xuICAgKiBpZiBubyB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHRoZSBzZXNzaW9uIG11c3QgaGF2ZSAnbWFuYWdlOmtleTpnZXQnLlxuICAgKi9cbiAgdXBkYXRlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXR0ZXN0IHRvIEtleSBQcm9wZXJ0aWVzXG4gICAqIEBkZXNjcmlwdGlvbiBBdHRlc3QgdG8gS2V5IFByb3BlcnRpZXNcbiAgICpcbiAgICogVGhlIHJlc3BvbnNlIGlzIGEgSldUIHdob3NlIGNsYWltcyBhcmUgdGhlIGtleSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgYXR0ZXN0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIGluY2x1ZGVfcm9sZXM/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb0p3dFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IEtleSBSb2xlc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXkgUm9sZXNcbiAgICpcbiAgICogR2V0IGFsbCByb2xlcyB0aGUga2V5IGlzIGluXG4gICAqL1xuICBsaXN0S2V5Um9sZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdEtleVJvbGVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgKlxuICAgKiBSZXR1cm5zIGEgc29ydGVkLCBwYWdpbmF0ZWQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGJ5IGEgZ2l2ZW4ga2V5LFxuICAgKiBvcmRlcmVkIGZyb20gbW9zdCByZWNlbnQgZmlyc3QuXG4gICAqL1xuICBsaXN0SGlzdG9yaWNhbEtleVR4OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RIaXN0b3JpY2FsVHhSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgS2V5IGJ5IE1hdGVyaWFsIElEXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5IGJ5IE1hdGVyaWFsIElEXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgb2YgYSBrZXkuXG4gICAqL1xuICBnZXRLZXlCeU1hdGVyaWFsSWQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVHlwZSBvZiB0aGUga2V5IHRvIGxvb2sgdXAgKi9cbiAgICAgICAga2V5X3R5cGU6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNYXRlcmlhbCBJRCBvZiB0aGUga2V5IHRvIGxvb2sgdXAgKi9cbiAgICAgICAgbWF0ZXJpYWxfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUXVlcnkgb3JnIG1ldHJpY3MuXG4gICAqIEBkZXNjcmlwdGlvbiBRdWVyeSBvcmcgbWV0cmljcy5cbiAgICpcbiAgICogTWV0cmljcyBzdW1tYXJpemUgdXNhZ2UgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBDdWJlU2lnbmVyIG9yZ2FuaXphdGlvbiBvdmVyIHRpbWUuIEZvciBleGFtcGxlLFxuICAgKiB5b3UgY2FuIGNhbGwgdGhpcyBlbmRwb2ludCBmaW5kIG91dDpcbiAgICpcbiAgICogLSB0aGUgYXZlcmFnZSBudW1iZXIgb2Yga2V5cyBvdmVyIHRoZSBsYXN0IG1vbnRoLFxuICAgKiAtIHRoZSBhdmVyYWdlIG51bWJlciBtb250aGx5IHVzZXJzIG92ZXIgdGhlIGxhc3QgeWVhcixcbiAgICogLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBzaWduZWQgbGFzdCB3ZWVrLFxuICAgKiAtIGhvdyB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBBUEkgcmVxdWVzdHMgd2FzIHRyZW5kaW5nIGRheS1ieS1kYXkgb3ZlciB0aGUgbGFzdCB3ZWVrL21vbnRoL3llYXIsIGV0Yy5cbiAgICpcbiAgICogRWFjaCBtZXRyaWMga2luZCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBkaW1lbnNpb25zLCB0byBmdXJ0aGVyIHNwZWNpZnkgdGhlIG9yZyBwcm9wZXJ0eSBpdCBkZXNjcmliZXMuXG4gICAqIEZvciBleGFtcGxlLCB0aGUgYFVzZXJDb3VudGAgbWV0cmljcyBoYXZlIGEgbWVtYmVyc2hpcCBkaW1lbnNpb25zIHRvIHNwZWNpZnkgdGhlIGtpbmQgb2YgdXNlciBtZW1iZXJzaGlwXG4gICAqIGluIHRoZSBvcmdhbml6YXRpb24gKFwiT3duZXJcIiB2cy4gXCJNZW1iZXJcIiB2cy4gXCJBbGllblwiKS5cbiAgICovXG4gIHF1ZXJ5TWV0cmljczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJRdWVyeU1ldHJpY3NSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkUXVlcnlNZXRyaWNzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzIHRoYXQgYXJlIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbixcbiAgICogaS5lLiwgdGhvc2UgY3JlYXRlZCBieSB0aGUgY3VycmVudCBzZXNzaW9uIGlkZW50aXR5IHBsdXMgdGhvc2UgaW4gd2hpY2ggdGhlIGN1cnJlbnQgdXNlclxuICAgKiBpcyBsaXN0ZWQgYXMgYW4gYXBwcm92ZXJcbiAgICovXG4gIG1mYUxpc3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJMaXN0TWZhUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAqXG4gICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgKi9cbiAgbWZhR2V0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICpcbiAgICogQXBwcm92ZSBvciByZWplY3QgcmVxdWVzdCBhZnRlciBsb2dnaW5nIGluIHdpdGggQ3ViZVNpZ25lci5cbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIHRoZSBjdXJyZW50bHktbG9nZ2VkIHVzZXIgYXMgYW4gYXBwcm92ZXJcbiAgICogb2YgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IG9mIHRoZSBbU3RhdHVzOjpSZXF1aXJlZEFwcHJvdmVyc10ga2luZC4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZlxuICAgKiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG9cbiAgICogcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVDczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICBtZmFfdm90ZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVm90ZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhbiBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYW4gRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICpcbiAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBFbWFpbCBPVFAuXG4gICAqL1xuICBtZmFFbWFpbEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1haWxPdHBSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSBhIEVtYWlsIE9UUCBNRkEgQXBwcm92YWwvUmVqZWN0aW9uLlxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvbi5cbiAgICpcbiAgICogVGhlIHJlcXVlc3Qgc2hvdWxkIGNvbnRhaW4gdGhlIGZ1bGwgSldUIG9idGFpbmVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlXG4gICAqIHBhcnRpYWwgdG9rZW4gcmV0dXJuZWQgYnkgdGhlIGBtZmFfZW1haWxfaW5pdGAgZW5kcG9pbnQgYW5kIHRoZSBzaWduYXR1cmVcbiAgICogZW1haWxlZCB0byB0aGUgdXNlciBpc3N1aW5nIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAqIHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0byByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKi9cbiAgbWZhVm90ZUVtYWlsQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbE90cEFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKlxuICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsL3JlamVjdGlvbiBwcm9jZXNzIG9mIGFuIE1GQSBSZXF1ZXN0IHVzaW5nIEZJRE8uXG4gICAqL1xuICBtZmFGaWRvSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0Fzc2VydENoYWxsZW5nZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICogSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkO1xuICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVGaWRvQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9Bc3NlcnRBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnQgdXNlciBhcyBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnlcbiAgICogcHJvdmlkaW5nIFRPVFAgY29kZS4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzXG4gICAqIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHBlbmRpbmcgTU1JIHJlcXVlc3RzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IHBlbmRpbmcgTU1JIHJlcXVlc3RzXG4gICAqXG4gICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhbGwgcGVuZGluZyBNTUkgbWVzc2FnZXMgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCBzZXNzaW9uIGlkZW50aXR5LCBpLmUuLFxuICAgKiAtIGEgcm9sZSBzZXNzaW9uIGNhbiBhY2Nlc3Mgb25seSB0aGUgbWVzc2FnZXMgY3JlYXRlZCBieSB0aGF0IHJvbGVcbiAgICogLSBhIHVzZXIgc2Vzc2lvbiBjYW4gYWNjZXNzIHRoZSBtZXNzYWdlcyBjcmVhdGVkIGJ5IGVpdGhlciB0aGF0IHVzZXIgb3IgYW55IHJvbGUgd2hpY2ggdGhlIHVzZXIgaXMgYSBtZW1iZXIgb2ZcbiAgICovXG4gIG1taU1lc3NhZ2VMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdFBlbmRpbmdNZXNzYWdlc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBhbiBNTUkgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGFuIE1NSSByZXF1ZXN0XG4gICAqXG4gICAqIFJldHJpZXZlcyBhIHBlbmRpbmcgTU1JIHJlcXVlc3QgYnkgaXRzIElELlxuICAgKi9cbiAgbW1pTWVzc2FnZUdldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFBlbmRpbmdNZXNzYWdlXG4gICAgICAgICAqIEBleGFtcGxlIFBlbmRpbmdNZXNzYWdlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbXNnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQZW5kaW5nTWVzc2FnZUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIGFuIE1NSSByZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gTU1JIHJlcXVlc3RcbiAgICpcbiAgICogUmVqZWN0cyBhbiBleGlzdGluZyBNTUkgcmVxdWVzdCBhbmQgdGhlbiBkZWxldGVzIGl0IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgbW1pTWVzc2FnZURlbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFBlbmRpbmdNZXNzYWdlXG4gICAgICAgICAqIEBleGFtcGxlIFBlbmRpbmdNZXNzYWdlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbXNnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVqZWN0IGFuIE1NSSByZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBSZWplY3QgYW4gTU1JIHJlcXVlc3RcbiAgICpcbiAgICogUmVqZWN0cyBhIHBlbmRpbmcgTU1JIHJlcXVlc3QuIFRoZSByZWNvcmQgb2YgdGhlIE1NSSByZXF1ZXN0IGlzIGtlcHQgaW5cbiAgICogdGhlIGRhdGFiYXNlIHVudGlsIGl0IGV4cGlyZXMgb3IgaXMgZXhwbGljaXRseSBkZWxldGVkLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSB1cGRhdGVkIHJlcXVlc3QgaW5mb3JtYXRpb24uXG4gICAqL1xuICBtbWlNZXNzYWdlUmVqZWN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUGVuZGluZ01lc3NhZ2VcbiAgICAgICAgICogQGV4YW1wbGUgUGVuZGluZ01lc3NhZ2UjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtc2dfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTW1pUmVqZWN0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQZW5kaW5nTWVzc2FnZUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZSBhbmQgc2lnbiBhbiBNTUkgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBhbmQgc2lnbiBhbiBNTUkgcmVxdWVzdFxuICAgKlxuICAgKiBTaWducyBhIHBlbmRpbmcgcmVxdWVzdCB0aGF0IHdhcyBnZW5lcmF0ZWQgdGhyb3VnaCB0aGUgTU1JIEpTT04gUlBDIGVuZHBvaW50LlxuICAgKiBUaGUgc2lnbmF0dXJlIGlzIHN0b3JlZCB3aXRoIHRoZSBwZW5kaW5nIG1lc3NhZ2UgYW5kIHRoZSB1cGRhdGVkIHJlcXVlc3QgaW5mbyBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogVGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JnYW5pemF0aW9uIHRoaXMgaXMgY2FsbGVkIGZyb20sXG4gICAqIGFuZCB0aGUgdXNlciBzaG91bGQgYmUgdGhlIG93bmVyIG9mIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2UncyBrZXkuXG4gICAqL1xuICBtbWlNZXNzYWdlU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFBlbmRpbmdNZXNzYWdlXG4gICAgICAgICAqIEBleGFtcGxlIFBlbmRpbmdNZXNzYWdlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbXNnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGVuZGluZ01lc3NhZ2VJbmZvXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGVuZGluZ01lc3NhZ2VTaWduUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAqIEBkZXNjcmlwdGlvbiBNaW50IGFuIE9JREMgSUQgdG9rZW4gZm9yIFR3aXR0ZXJcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBhY3RzIGlkZW50aWNhbGx5IHRvIFR3aXR0ZXIncyBbYG9hdXRoMi90b2tlbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLnR3aXR0ZXIuY29tL2VuL2RvY3MvYXV0aGVudGljYXRpb24vYXBpLXJlZmVyZW5jZS90b2tlbikgZW5kcG9pbnQsXG4gICAqIGJ1dCBleHRlbmRzIHRoZSBvdXRwdXQgd2l0aCBhbiBgaWRfdG9rZW5gLlxuICAgKlxuICAgKiBUaGlzIGBpZF90b2tlbmAgY2FuIHRoZW4gYmUgdXNlZCB3aXRoIGFueSBDdWJlU2lnbmVyIGVuZHBvaW50IHRoYXQgcmVxdWlyZXMgYW4gT0lEQyB0b2tlbi5cbiAgICpcbiAgICogPiBbIUlNUE9SVEFOVF1cbiAgICogPiBUaGlzIGVuZHBvaW50IHdpbGwgZmFpbCB1bmxlc3MgdGhlIG9yZyBpcyBjb25maWd1cmVkIHRvIGFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90d2l0dGVyYCBhbmQgY2xpZW50IElEIGJlaW5nIHVzZWQgZm9yIFR3aXR0ZXIuXG4gICAqL1xuICBvYXV0aDJUd2l0dGVyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG9rZW5SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMb2dpbiB3aXRoIE9JRENcbiAgICogQGRlc2NyaXB0aW9uIExvZ2luIHdpdGggT0lEQ1xuICAgKlxuICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBzaWduZXIgc2Vzc2lvbi5cbiAgICpcbiAgICogTUZBIGlzIHJlcXVpcmVkIHdoZW46XG4gICAqIC0gYW4gTUZBIHBvbGljeSBpcyBleHBsaWNpdGx5IGF0dGFjaGVkIHRvIHRoZSB1c2VyIGxvZ2dpbmcgaW5cbiAgICogKGUuZy4sIGFuIG9yZyBvd25lciBjYW4gZG8gdGhhdCBhdCB1c2VyIGNyZWF0aW9uIHRpbWUgdG8gcmVxdWlyZSBjZXJ0YWluIGtpbmQgb2YgTUZBKVxuICAgKiAtIHRoZSB1c2VyIGhhcyBhdCBsZWFzdCAxIE1GQSBmYWN0b3IgY29uZmlndXJlZFxuICAgKi9cbiAgb2lkY0F1dGg6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgbG9naW4gdmlhIGVtYWlsIHRva2VuXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBsb2dpbiB2aWEgZW1haWwgdG9rZW5cbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlIChvZiB0aGUgZm9ybSBgaGVhZGVyLnBheWxvYWQuYCksIGFuZCBzZW5kcyB0aGUgc2lnbmF0dXJlIHRvIHRoZSB1c2VyJ3MgZW1haWwuXG4gICAqIENsaWVudCBhcHBsaWNhdGlvbnMgY2FuIHJlY29uc3RydWN0IHRoZSB0b2tlbiBieSBjb25jYXRlbmF0aW5nIHRoZSBgcGFydGlhbF90b2tlbmAgd2l0aCB0aGUgc2lnbmF0dXJlLCBwcm9kdWNpbmcgYSB2YWxpZCBPSURDIHRva2VuIG9mIHRoZSBmb3JtIGBoZWFkZXIucGF5bG9hZC5zaWduYXR1cmVgXG4gICAqIFRoZSB0b2tlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlci5cbiAgICpcbiAgICogPiBbIUlNUE9SVEFOVF1cbiAgICogPiBGb3IgdGhpcyBlbmRwb2ludCB0byBzdWNjZWVkLCB0aGUgb3JnIG11c3QgYmUgY29uZmlndXJlZCB0bzpcbiAgICogPiAxLiBBbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvZW1haWwtb3RwYCBhbmQgY2xpZW50IElEIGJlaW5nIHRoZSBPcmcgSURcbiAgICogPiAyLiBIYXZlIGFuIGVtYWlsIHNlbmRlciBjb25maWd1cmVkIGZvciBPVFBzXG4gICAqL1xuICBlbWFpbE90cEF1dGg6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxPdHBSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1haWxPdHBSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKS5cbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpLlxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGdlbmVyYXRlcyBhIGNoYWxsZW5nZSB3aGljaCBjYW4gYmUgYW5zd2VyZWQgKHZpYSB0aGUgY29ycmVzcG9uZGluZyBQQVRDSCBlbmRwb2ludClcbiAgICogdG8gb2J0YWluIGFuIE9JREMgdG9rZW4uIFRoZSBPSURDIHRva2VuIGNhbiB0aGVuIGJlIGV4Y2hhbmdlZCBmb3IgYSB1c2VyIHNlc3Npb24gdmlhIHRoZSBzdGFuZGFyZFxuICAgKiBPSURDIGF1dGggcm91dGUuXG4gICAqXG4gICAqID4gWyFJTVBPUlRBTlRdXG4gICAqID4gRm9yIHRoaXMgZW5kcG9pbnQgdG8gc3VjY2VlZCwgdGhlIG9yZyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG86XG4gICAqID4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3Npd2VgIHdpdGggdGhlIE9yZyBJRCBhcyB0aGUgY2xpZW50IElEXG4gICAqL1xuICBzaXdlSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaXdlSW5pdFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaXdlSW5pdFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpXG4gICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKVxuICAgKlxuICAgKiBJZiB0aGUgY2hhbGxlbmdlIChpc3N1ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgUE9TVCBlbmRwb2ludCkgaXMgYW5zd2VyZWQgY29ycmVjdGx5LCB0aGlzIGVuZHBvaW50XG4gICAqIGdlbmVyYXRlcyBhbiBPSURDIHRva2VuIHRoYXQgY2FuIHRoZW4gYmUgZXhjaGFuZ2VkIGZvciBhIHVzZXIgc2Vzc2lvbiB2aWEgdGhlIHN0YW5kYXJkIE9JREMgYXV0aCByb3V0ZS5cbiAgICpcbiAgICogPiBbIUlNUE9SVEFOVF1cbiAgICogPiBGb3IgdGhpcyBlbmRwb2ludCB0byBzdWNjZWVkLCB0aGUgb3JnIG11c3QgYmUgY29uZmlndXJlZCB0bzpcbiAgICogPiBBbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvc2l3ZWAgd2l0aCB0aGUgT3JnIElEIGFzIHRoZSBjbGllbnQgSURcbiAgICovXG4gIHNpd2VDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaXdlQ29tcGxldGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2l3ZUNvbXBsZXRlUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWxsb3dzIGEgdXNlciB0byBhdXRoZW50aWNhdGUgd2l0aCB0aGUgdGVsZWdyYW0gQVBJIHVzaW5nIHRoZSB0Z1dlYkFwcERhdGEgdmFsdWVcbiAgICogQGRlc2NyaXB0aW9uIEFsbG93cyBhIHVzZXIgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIHRlbGVncmFtIEFQSSB1c2luZyB0aGUgdGdXZWJBcHBEYXRhIHZhbHVlXG4gICAqIFRoZSB0b2tlbiBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKiAtIFRoZSBgc3ViYCBmaWVsZCBpcyB0aGUgdGVsZWdyYW0gdXNlciBJRFxuICAgKiAtIFRoZSBgaXNzYCBmaWVsZCBkZXBlbmRzIG9uIHRoZSBjaG9zZW4gZW52aXJvbm1lbnQ6XG4gICAqIC0gYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90ZWxlZ3JhbS9wcm9kdWN0aW9uYCBmb3IgdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcbiAgICogLSBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3RlbGVncmFtL3Rlc3RgIGZvciB0aGUgdGVzdCBlbnZpcm9ubWVudFxuICAgKiAtIFRoZSBgYXVkYCBmaWVsZCBpcyB0aGUgcHJvdmlkZWQgdGVsZWdyYW0gYm90IElEXG4gICAqIC0gVGhlIGBleHBgIGZpZWxkIGlzIGRlcml2ZWQgZnJvbSB0aGUgYGF1dGhfZGF0ZWAgZmllbGQgaW4gdGhlIHRlbGVncmFtIGRhdGFcbiAgICpcbiAgICogRmFpbHMgaWYgdGhlIHRlbGVncmFtIGRhdGEgaXMgaW52YWxpZCBvciB0aGUgc2lnbmF0dXJlIGlzIGludmFsaWRcbiAgICovXG4gIHRlbGVncmFtQXV0aDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUZWxlZ3JhbUF1dGhSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVGVsZWdyYW1BdXRoUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIE9yZ1xuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IG9yZ2FuaXphdGlvbi4gVGhlIG5ldyBvcmcgaXMgYSBjaGlsZCBvZiB0aGVcbiAgICogY3VycmVudCBvcmcgYW5kIGluaGVyaXRzIGl0cyBrZXktZXhwb3J0IHBvbGljeS4gVGhlIG5ldyBvcmdcbiAgICogaXMgY3JlYXRlZCB3aXRoIG9uZSBvd25lciwgdGhlIGNhbGxlciBvZiB0aGlzIEFQSS5cbiAgICovXG4gIGNyZWF0ZU9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVPcmdSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiT3JnSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFBvbGljaWVzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBvbGljaWVzXG4gICAqXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIHBvbGljaWVzIGluIHRoZSBPcmcuXG4gICAqL1xuICBsaXN0UG9saWNpZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3B0aW9uYWwgdHlwZSBvZiBwb2xpY2llcyB0byByZXR1cm5cbiAgICAgICAgICogQGV4YW1wbGUgS2V5XG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfdHlwZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5VHlwZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFBvbGljaWVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFBvbGljeVxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IG5hbWVkIHBvbGljeSBpbiB0aGUgb3JnYW5pemF0aW9uLiBUaGUgdXNlciBtYWtpbmcgdGhlIHJlcXVlc3QgaXMgdGhlXG4gICAqIG93bmVyIG9mIHRoZSBwb2xpY3ksIGdpdmluZyB0aGVtIGVkaXQgYWNjZXNzIHRvIHRoZSBwb2xpY3kgYWxvbmcgd2l0aCB0aGUgb3JnIG93bmVycy5cbiAgICovXG4gIGNyZWF0ZVBvbGljeToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVQb2xpY3lSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUG9saWN5XG4gICAqXG4gICAqIERlbGV0ZSB0aGUgbmFtZWQgcG9saWN5IHdpdGggdGhlIGdpdmVuIG5hbWUgb3IgaWQuXG4gICAqL1xuICBkZWxldGVQb2xpY3k6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBOYW1lZFBvbGljeVxuICAgICAgICAgKiBAZXhhbXBsZSBOYW1lZFBvbGljeSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgUG9saWN5XG4gICAqXG4gICAqIFVwZGF0ZXMgdGhlIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgKi9cbiAgdXBkYXRlUG9saWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTmFtZWRQb2xpY3lcbiAgICAgICAgICogQGV4YW1wbGUgTmFtZWRQb2xpY3kjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVQb2xpY3lSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5SW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFBvbGljeSBMb2dzXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUG9saWN5IExvZ3NcbiAgICpcbiAgICogUmV0dXJucyB0aGUgbG9ncyBmb3IgdGhlIGdpdmVuIHBvbGljeSwgd2l0aGluIHRoZSBnaXZlbiB0aW1lZnJhbWUuXG4gICAqL1xuICBnZXRQb2xpY3lMb2dzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTmFtZWRQb2xpY3lcbiAgICAgICAgICogQGV4YW1wbGUgTmFtZWRQb2xpY3kjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lMb2dzUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZFBvbGljeUxvZ3NSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUG9saWN5XG4gICAqXG4gICAqIFJldHVybnMgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIG9yIGxhdGVzdCBvZiBhIG5hbWVkIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgKi9cbiAgZ2V0UG9saWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTmFtZWRQb2xpY3lcbiAgICAgICAgICogQGV4YW1wbGUgTmFtZWRQb2xpY3kjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IHZlcnNpb24sIGVpdGhlciAnbGF0ZXN0JyBvciAndjxudW1iZXI+Jy5cbiAgICAgICAgICogQGV4YW1wbGUgbGF0ZXN0XG4gICAgICAgICAqL1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQb2xpY3lJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEludm9rZSBQb2xpY3lcbiAgICogQGRlc2NyaXB0aW9uIEludm9rZSBQb2xpY3lcbiAgICpcbiAgICogSW52b2tlcyB0aGUgW05hbWVkUG9saWN5XSB3aXRoIHRoZSBnaXZlbiBJRCB3aXRoIHRoZSBnaXZlbiByZXF1ZXN0IGluZm9ybWF0aW9uLlxuICAgKiBJdCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgV2FzbSBwb2xpY2llcy5cbiAgICovXG4gIGludm9rZVBvbGljeToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE5hbWVkUG9saWN5XG4gICAgICAgICAqIEBleGFtcGxlIE5hbWVkUG9saWN5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSB2ZXJzaW9uLCBlaXRoZXIgJ2xhdGVzdCcgb3IgJ3Y8bnVtYmVyPicuXG4gICAgICAgICAqIEBleGFtcGxlIGxhdGVzdFxuICAgICAgICAgKi9cbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludm9rZVBvbGljeVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJJbnZva2VQb2xpY3lSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IEJ1Y2tldHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgQnVja2V0c1xuICAgKlxuICAgKiBMaXN0IGF2YWlsYWJsZSBtZXRhIGluZm9ybWF0aW9uIGFib3V0IGFsbCBwb2xpY3kgS1Ygc3RvcmUgYnVja2V0cyBpbiB0aGUgb3JnLlxuICAgKi9cbiAgbGlzdFBvbGljeUJ1Y2tldHM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0QnVja2V0c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBCdWNrZXRcbiAgICogQGRlc2NyaXB0aW9uIEdldCBCdWNrZXRcbiAgICpcbiAgICogUmV0dXJucyB0aGUgbWV0YSBpbmZvcm1hdGlvbiBvZiBhIHBvbGljeSBLViBzdG9yZSBidWNrZXQuXG4gICAqL1xuICBnZXRQb2xpY3lCdWNrZXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIGJ1Y2tldF9uYW1lOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCdWNrZXRJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBCdWNrZXRcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBCdWNrZXRcbiAgICpcbiAgICogVXBkYXRlcyBtZXRhIGluZm9ybWF0aW9uIGZvciBhbiBleGlzdGluZyBwb2xpY3kgS1Ygc3RvcmUgYnVja2V0LlxuICAgKi9cbiAgdXBkYXRlUG9saWN5QnVja2V0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICBidWNrZXRfbmFtZTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZUJ1Y2tldFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCdWNrZXRJbmZvXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgUG9saWN5IEltcG9ydCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBQb2xpY3kgSW1wb3J0IEtleVxuICAgKlxuICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3IgZW5jcnlwdGluZyBkYXRhIHJlbGF0ZWQgdG8gV2FzbVxuICAgKiBwb2xpY2llcyAoZS5nLiwgcG9saWN5IHNlY3JldHMpLlxuICAgKi9cbiAgY3JlYXRlUG9saWN5SW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlUG9saWN5SW1wb3J0S2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IHRoZSBvcmctd2lkZSBwb2xpY3kgc2VjcmV0cy5cbiAgICogQGRlc2NyaXB0aW9uIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGlzIG9ubHkgcmV0dXJucyB0aGUga2V5cyBmb3IgdGhlIHNlY3JldHMsIG9taXR0aW5nIHRoZSB2YWx1ZXMuXG4gICAqIFRoZSB2YWx1ZXMgYXJlIHNlY3JldCBhbmQgYXJlIG5vdCBhY2Nlc3NpYmxlIG91dHNpZGUgV2FzbSBwb2xpY3kgZXhlY3V0aW9uLlxuICAgKi9cbiAgZ2V0UG9saWN5U2VjcmV0czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBvbGljeVNlY3JldHNJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICpcbiAgICogVGhlIHByb3ZpZGVkIHNlY3JldHMgd2lsbCByZXBsYWNlIGFueSBleGlzdGluZyBvcmctbGV2ZWwgc2VjcmV0cy5cbiAgICogSXQgZmFpbHMgaWYgdGhlIHNlY3JldHMgd2VyZW4ndCBwcmV2aW91c2x5IGNyZWF0ZWQuXG4gICAqXG4gICAqIE11c3QgYmUgcGVybWl0dGVkIGJ5IHRoZSBwb2xpY3kgc2VjcmV0J3MgZWRpdCBwb2xpY3kgaWYgc2V0LCBhbmQgdGhlIG9yZydzIGVkaXQgcG9saWN5IG90aGVyd2lzZS5cbiAgICovXG4gIHVwZGF0ZVBvbGljeVNlY3JldHM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlUG9saWN5U2VjcmV0c1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQb2xpY3lTZWNyZXRzSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIG9yIG92ZXJ3cml0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldC5cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAqIE11c3QgYmUgcGVybWl0dGVkIGJ5IHRoZSBwb2xpY3kgc2VjcmV0J3MgZWRpdCBwb2xpY3kgaWYgc2V0LCBhbmQgdGhlIG9yZydzIGVkaXQgcG9saWN5IG90aGVyd2lzZS5cbiAgICovXG4gIHNldFBvbGljeVNlY3JldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgc2VjcmV0X25hbWU6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXRQb2xpY3lTZWNyZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5U2VjcmV0c0luZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldC5cbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldC5cbiAgICogTXVzdCBiZSBwZXJtaXR0ZWQgYnkgdGhlIHBvbGljeSBzZWNyZXQncyBlZGl0IHBvbGljeSBpZiBzZXQsIGFuZCB0aGUgb3JnJ3MgZWRpdCBwb2xpY3kgb3RoZXJ3aXNlLlxuICAgKi9cbiAgZGVsZXRlUG9saWN5U2VjcmV0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICBzZWNyZXRfbmFtZTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5U2VjcmV0c0luZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwbG9hZCBXYXNtIFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gVXBsb2FkIFdhc20gUG9saWN5XG4gICAqXG4gICAqIFJldHVybnMgYSBzaWduZWQgVVJMIGZvciB1cGxvYWRpbmcgYSB3YXNtIHBvbGljeSB0byBDdWJlU2lnbmVyLiBUaGUgcG9saWN5IHdpbGwgYmVcbiAgICogZGVsZXRlZCBpZiBub3QgYXR0YWNoZWQgdG8gYSBbTmFtZWRQb2xpY3ldIHNvb24gYWZ0ZXIgdGhlIHVwbG9hZCBoYXMgYmVlbiBjb21wbGV0ZWQuXG4gICAqL1xuICB1cGxvYWRXYXNtUG9saWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwbG9hZFdhc21Qb2xpY3lSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXBsb2FkV2FzbVBvbGljeVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZXNcbiAgICpcbiAgICogUmV0cmlldmVzIGFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzLlxuICAgKi9cbiAgbGlzdFJvbGVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG9uJ3QgaW5jbHVkZSBrZXlzIGFuZCB1c2VycyBmb3IgZWFjaCByb2xlICovXG4gICAgICAgIHN1bW1hcml6ZT86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUm9sZVxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLiBVbmxlc3MgdGhlIGxvZ2dlZC1pbiB1c2VyXG4gICAqIGlzIHRoZSBvd25lciwgdGhleSBhcmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbmV3bHkgY3JlYXRlZCByb2xlLlxuICAgKi9cbiAgY3JlYXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHJlcXVlc3QgYm9keSB0byBzZXQgdGhlIHJvbGUgbmFtZSAqL1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVSb2xlUmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVSb2xlUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIEdldCBSb2xlXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uXG4gICAqL1xuICBnZXRSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIHN1bW1hcml6ZT86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJvbGVJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUm9sZVxuICAgKlxuICAgKiBEZWxldGVzIGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uXG4gICAqXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgKi9cbiAgZGVsZXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBSb2xlXG4gICAqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYSByb2xlICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOmVuYWJsZWAgc2NvcGUpLlxuICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5YCBzY29wZSkuXG4gICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBlZGl0IHBvbGljaWVzICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOmVkaXRQb2xpY3lgIHNjb3BlKS5cbiAgICpcbiAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIHVwZGF0ZVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlUm9sZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSb2xlSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWRkIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBLZXlzXG4gICAqXG4gICAqIEFkZHMgYSBsaXN0IG9mIGV4aXN0aW5nIGtleXMgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICpcbiAgICogVGhlIGtleSBvd25lciBpcyBhbGxvd2VkIHRvIGFkZCB0aGVpciBrZXkgdG8gYW55IHJvbGUgdGhhdCB0aGV5IGFyZSBpbi5cbiAgICpcbiAgICogSW4gXCJvcmcgY3VzdG9keVwiIG1vZGVsIG9ubHksIG9yZyBvd25lcnMgYXJlIGFsbG93ZWQgdG8gYWRkIGFueSBrZXkgdG8gYW55IHJvbGUuXG4gICAqXG4gICAqIEluIGFsbCBjYXNlczogdGhlIHJvbGUncyBlZGl0IHBvbGljeSwgYXMgd2VsbCBhcyB0aGUgZWRpdCBwb2xpY3kgb2YgZWFjaCBvZiB0aGUga2V5cywgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICpcbiAgICogRWFjaCByZXF1ZXN0IHRvIHRoaXMgZW5kcG9pbnQgY2FuIGFkZCwgYXQgbWF4aW11bSwgMzIga2V5cy5cbiAgICovXG4gIGFkZEtleXNUb1JvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkS2V5c1RvUm9sZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgVXNlclxuICAgKlxuICAgKiBBZGRzIGFuIGV4aXN0aW5nIHVzZXIgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICpcbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIGFkZFVzZXJUb1JvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBdHRlc3QgdG8gUm9sZSBQcm9wZXJ0aWVzXG4gICAqIEBkZXNjcmlwdGlvbiBBdHRlc3QgdG8gUm9sZSBQcm9wZXJ0aWVzXG4gICAqXG4gICAqIFRoZSByZXNwb25zZSBpcyBhIEpXVCB3aG9zZSBjbGFpbXMgYXJlIHRoZSByZXF1ZXN0ZWQgcm9sZSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgYXR0ZXN0Um9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFJvbGUgcHJvcGVydGllcyB0byBpbmNsdWRlIGluIGFuIGF0dGVzdGF0aW9uLiBEZWZhdWx0cyB0byBiYXNpYyByb2xlXG4gICAgICAgICAqIHByb3BlcnRpZXMsIGluY2x1ZGluZyBhc3NvY2lhdGVkIHVzZXJzLCBidXQgZXhjbHVkaW5nIGFzc29jaWF0ZWQga2V5cy5cbiAgICAgICAgICovXG4gICAgICAgIHZlcmJvc2l0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUF0dGVzdGF0aW9uVmVyYm9zaXR5XCJdO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEFzc29jaWF0ZWQga2V5cyBmaWx0ZXIsIGkuZS4sIHdoZW4gc3BlY2lmaWVkLCBvdXQgYWxsIG90aGVyIGFzc29jaWF0ZWRcbiAgICAgICAgICoga2V5cyBhcmUgZmlsdGVyZWQgb3V0LiBEZWZhdWx0cyB0byBpbmNsdWRpbmcgYWxsIGFzc29jaWF0ZWQga2V5cy5cbiAgICAgICAgICovXG4gICAgICAgIGtleV9maWx0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSb2xlSW5mb0p3dFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFJvbGUgS2V5c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIEtleXNcbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwga2V5cyBpbiBhIHJvbGUuXG4gICAqL1xuICBsaXN0Um9sZUtleXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgYSBLZXkgaW4gUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGEgS2V5IGluIFJvbGVcbiAgICpcbiAgICogUmV0dXJucyB0aGUga2V5LWluLXJvbGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4ga2V5IGFuZCByb2xlLiBJZiBgZGV0YWlsc2AgaXMgc2V0IHRvIGB0cnVlYCxcbiAgICogdGhpcyBlbmRwb2ludCByZXR1cm5zIGRldGFpbGVkIGtleSBpbmZvcm1hdGlvbi5cbiAgICovXG4gIGdldFJvbGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIGluY2x1ZGUgZGV0YWlsZWQga2V5IGluZm9ybWF0aW9uXG4gICAgICAgICAqIEBleGFtcGxlIHRydWVcbiAgICAgICAgICovXG4gICAgICAgIGRldGFpbHM/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgS2V5XG4gICAqXG4gICAqIFJlbW92ZXMgYSBnaXZlbiBrZXkgZnJvbSBhIHJvbGUuXG4gICAqXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIGtleXMgZnJvbSBhIHJvbGUuXG4gICAqIEFkZGl0aW9uYWxseSwgYm90aCB0aGUgcm9sZSdzIGFuZCB0aGUga2V5J3MgZWRpdCBwb2xpY3kgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIHJlbW92ZUtleUZyb21Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFRva2VuXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgVG9rZW5cbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBhY2Nlc3MgdG9rZW4gZm9yIGEgZ2l2ZW4gcm9sZSAodG8gYmUgdXNlZCBhcyBcIkFQSSBLZXlcIiBmb3IgYWxsIHNpZ25pbmcgYWN0aW9ucykuXG4gICAqIFRoZSBgcmVzdHJpY3RlZF9hY3Rpb25zYCBmaWVsZCBvbiB0aGUgW1JvbGVdIGRldGVybWluZXMgdGhlIG1lbWJlcnNoaXAgcm9sZSB0aGF0IGlzIHJlcXVpcmVkIHRvXG4gICAqIGNyZWF0ZSB0b2tlbnMuXG4gICAqL1xuICBjcmVhdGVSb2xlVG9rZW46IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlVG9rZW5SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICpcbiAgICogUmV0dXJucyBhIHNvcnRlZCwgcGFnaW5hdGVkIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIHNpZ25lZCBieSB0aGUgZ2l2ZW4gcm9sZSxcbiAgICogb3JkZXJlZCBmcm9tIG1vc3QgcmVjZW50IGZpcnN0LlxuICAgKi9cbiAgbGlzdEhpc3RvcmljYWxSb2xlVHg6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0SGlzdG9yaWNhbFR4UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlIFVzZXJzLlxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIFVzZXJzLlxuICAgKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB1c2VycyB3aG8gaGF2ZSBhY2Nlc3MgdG8gYSByb2xlLlxuICAgKi9cbiAgbGlzdFJvbGVVc2Vyczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIFVzZXJcbiAgICpcbiAgICogUmVtb3ZlcyBhbiBleGlzdGluZyB1c2VyIGZyb20gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICpcbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiByZW1vdmUgdXNlcnMgZnJvbSBhIHJvbGUuXG4gICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgKi9cbiAgcmVtb3ZlVXNlckZyb21Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSGlnaC1sZXZlbCBSUEMgZW5kcG9pbnQuXG4gICAqIEBkZXNjcmlwdGlvbiBIaWdoLWxldmVsIFJQQyBlbmRwb2ludC5cbiAgICovXG4gIHJwY0FwaToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJKc29uUnBjUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkpzb25ScGNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHNlc3Npb25zXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IHNlc3Npb25zXG4gICAqXG4gICAqIElmIG5vIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLCBhbGwgYWN0aXZlIHNlc3Npb25zIGZvciB0aGUgY3VycmVudCB1c2VyIGFyZSByZXR1cm5lZC5cbiAgICpcbiAgICogSWYgYSBgcm9sZWAgcXVlcnkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCBhbGwgYWN0aXZlIHNlc3Npb25zIGZvciB0aGUgc2VsZWN0ZWQgcm9sZSBhcmUgcmV0dXJuZWRcbiAgICogKGFzc2VydGluZyBmaXJzdCB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaGFzIHBlcm1pc3Npb25zIHRvIHJlYWQgc2Vzc2lvbnMgZm9yIHRoYXQgcm9sZSkuXG4gICAqL1xuICBsaXN0U2Vzc2lvbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIG5hbWUgb3IgSUQgb2YgYSByb2xlIHRvIG9wZXJhdGUgb24uXG4gICAgICAgICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgdXNlcmAuXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUgSUQgb2YgYSB1c2VyIHRvIG9wZXJhdGUgb24uXG4gICAgICAgICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgcm9sZWAuXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgdXNlciBzZXNzaW9uLCBzaWxlbnRseSB0cnVuY2F0aW5nIHJlcXVlc3RlZCBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lcyB0byBiZSBhdFxuICAgKiBtb3N0IHJlcXVlc3RvcidzIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWUsIHJlc3BlY3RpdmVseS4gVG8gZXh0ZW5kIHRoZSByZXF1ZXN0ZWQgbGlmZXRpbWVzIHBhc3RcbiAgICogdGhlIHJlcXVlc3RvcidzLCBzZXQgdGhlIGBleHRlbmRfbGlmZXRpbWVzYCBmbGFnIGluIHRoZSByZXF1ZXN0IGJvZHkgKGluIHdoaWNoIGNhc2UgTUZBIHdpbGxcbiAgICogYmUgcmVxdWlyZWQpLlxuICAgKi9cbiAgY3JlYXRlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVTZXNzaW9uUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgZXhpc3Rpbmcgc2Vzc2lvbnMsIHByZXZlbnRpbmcgdGhlbSBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkLlxuICAgKlxuICAgKiBJZiBubyBxdWVyeSBwYXJhbXMgYXJlIHByb3ZpZGVkLCAqKkFMTCoqIHNlc3Npb25zIGZvciB0aGUgKipDVVJSRU5UIFVTRVIqKiBhcmUgcmV2b2tlZFxuICAgKiAodG8gcmV2b2tlIGp1c3QgdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uLCB1c2UgYERFTEVURSAvdjAvb3JnLzxvcmdfaWQ+L3Nlc3Npb24vc2VsZmApXG4gICAqXG4gICAqIElmIGEgYHJvbGVgIHF1ZXJ5IHBhcmFtZXRlciBpcyBwcm92aWRlZCwgKipBTEwqKiBzZXNzaW9uIGZvciAqKlRIQVQgUk9MRSoqIGFyZSByZXZva2VkXG4gICAqIChpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9ucyB0byByZXZva2Ugc2Vzc2lvbnMgZm9yIHRoZSByb2xlKS5cbiAgICovXG4gIHJldm9rZVNlc3Npb25zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBuYW1lIG9yIElEIG9mIGEgcm9sZSB0byBvcGVyYXRlIG9uLlxuICAgICAgICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYHVzZXJgLlxuICAgICAgICAgKiBAZXhhbXBsZSBteS1yb2xlXG4gICAgICAgICAqL1xuICAgICAgICByb2xlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIElEIG9mIGEgdXNlciB0byBvcGVyYXRlIG9uLlxuICAgICAgICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYHJvbGVgLlxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAqL1xuICByZXZva2VDdXJyZW50U2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgKiBAZGVzY3JpcHRpb24gR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICovXG4gIGdldFNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIGdldCBvciAnc2VsZicgZm9yIGN1cnJlbnQgc2Vzc2lvblxuICAgICAgICAgKiBAZXhhbXBsZSAxYzBkODUzZC1jMTVmLTQyZGMtYTgyYy05ODc0ZTU4OWJjNzVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25JbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBhIHNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBhIHNlc3Npb25cbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBhbiBleGlzdGluZyBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICovXG4gIHJldm9rZVNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIHJldm9rZVxuICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTZXNzaW9uSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAqXG4gICAqIFNpZ25zIGEgU29sYW5hIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBzb2xhbmFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBiYXNlNTgtZW5jb2RlZCBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDg2WlJQc3pCcDVFb1BqN3dSM2JIbjd3bkFaNWlZZnBhc1JjN0RLRlBUVWFaXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIHN1aVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgU1VJIGtleSBhZGRyZXNzXG4gICAgICAgICAqIEBleGFtcGxlIDB4ZGQ2OGQzNWE3NzhkYjFlMzEyM2M5NTBlNWRiNTM2MTMzM2Y1NzczM2E3NzQ4NmE3MDRkZDhjOTk0ZDk2NzYxZFxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3VpU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gYSB0ZW5kZXJtaW50IG1lc3NhZ2UuXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgdGVuZGVybWludCBtZXNzYWdlLlxuICAgKlxuICAgKiBTaWducyB0aGUgZ2l2ZW4gYmFzZS02NCBlbmNvZGVkIHZvdGUgb3IgcHJvcG9zYWwgd2l0aCB0aGUgZ2l2ZW4gdGVuZGVybWludCBrZXkuXG4gICAqL1xuICB0ZW5kZXJtaW50U2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgcHVibGljIGtleSB3aXRoIDB4IHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSAweDdkOGQzNDRlNmU1MzE1MTY5MmZhNzhhMDk4NjMwNzk5OTQ2YWQ0ZDZhMDI3YWU2YmNkN2E3OGRjNzgyODE2NTBcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRlbmRlcm1pbnRTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqXG4gICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IGEgdXNlciBvciByb2xlIHNlc3Npb24gY2FuIGFjY2Vzcy5cbiAgICovXG4gIGxpc3RUb2tlbktleXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvc1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVc2VyIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGFib3V0TWU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VySW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqL1xuICB1c2VyUmVzZXRFbWFpbEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxSZXNldFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbWFpbE90cFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIGEgUmVzZXQgVmVyaWZpZWQgRW1haWwgRmxvd1xuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqL1xuICB1c2VyUmVzZXRFbWFpbENvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsT3RwQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICovXG4gIHVzZXJFeHBvcnRMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSB1c2VyLWlkIHdob3NlIHVzZXItZXhwb3J0IHJlcXVlc3RzIHRvIGxpc3QuIERlZmF1bHRzIHRvIHRoZVxuICAgICAgICAgKiBjdXJyZW50IHVzZXIuICBPbmx5IHRoZSBvcmcgb3duZXIgbWF5IGxpc3QgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUga2V5LWlkIGZvciB3aGljaCB0byBsaXN0IGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIHN0YXJ0cyBhIGRlbGF5ICh3aG9zZSBsZW5ndGggaXMgZGV0ZXJtaW5lZCBieSBPcmctd2lkZSBzZXR0aW5ncylcbiAgICogYmVmb3JlIGV4cG9ydCBjYW4gYmUgY29tcGxldGVkLCBhbmQgcmV0dXJucyBhIHRpY2tldCB0aGF0IGNhbiBiZSB1c2VkXG4gICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAqXG4gICAqIE9ubHkgb25lIHVzZXItZXhwb3J0IHJlcXVlc3QgY2FuIGJlIGFjdGl2ZSBmb3IgYSBnaXZlbiBrZXkuIElmIHRoZXJlXG4gICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICogY3JlYXRlIGEgbmV3IHJlcXVlc3QsIGZpcnN0IGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICAgKi9cbiAgdXNlckV4cG9ydEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqL1xuICB1c2VyRXhwb3J0RGVsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIHdob3NlIGV4cG9ydCByZXF1ZXN0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHdobyBvd25zIHRoaXMgcmVxdWVzdC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgICAgICogT25seSB0aGUgb3JnIG93bmVyIG1heSBkZWxldGUgdXNlci1leHBvcnQgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICogdGhlIGB1c2VyX2V4cG9ydF9pbml0YCBBUEksIGFuZCBvbmx5IHdpdGhpbiB0aGUgc3Vic2VxdWVudCBleHBvcnQgd2luZG93XG4gICAqIChpLmUuLCBhZnRlciB0aGUgZXhwb3J0IGRlbGF5IGhhcyBwYXNzZWQgYW5kIGJlZm9yZSB0aGUgcmVxdWVzdCBoYXMgZXhwaXJlZCkuXG4gICAqXG4gICAqIFRvIGNoZWNrIG9uIHRoZSBzdGF0dXMgb2YgYW4gZXhwb3J0IHJlcXVlc3QsIHNlZSB0aGUgYHVzZXJfZXhwb3J0X2xpc3RgIEFQSS5cbiAgICovXG4gIHVzZXJFeHBvcnRDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0Q29tcGxldGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5LlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXkuXG4gICAqXG4gICAqIElmIGEgZGlzY292ZXJhYmxlIGtleSBpcyByZXF1ZXN0ZWQsIHVzZXIgdmVyaWZpY2F0aW9uIChQSU4pIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleS5cbiAgICovXG4gIHVzZXJSZWdpc3RlckZpZG9Jbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBGSURPIGtleVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEZJRE8ga2V5XG4gICAqXG4gICAqIERlbGV0ZXMgYSBGSURPIGtleSBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgdGhlIGtleSBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyRGVsZXRlRmlkbzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIEZpZG9LZXlcbiAgICAgICAgICogQGV4YW1wbGUgRmlkb0tleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGZpZG9faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBUT1RQXG4gICAqXG4gICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyRGVsZXRlVG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cENoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAqL1xuICB1c2VyVmVyaWZ5VG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIElmIGEgcXVlcnkgaXMgZGVmaW5lZCwgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gb25seSB0aGUgdXNlcnMgd2hvc2UgbmFtZSBvclxuICAgKiBlbWFpbCBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcuIE5PVEUgdGhhdCBpZiBwYWdpbmF0aW9uIGlzIHVzZWQgYW5kIGEgcGFnZVxuICAgKiBsaW1pdCBpcyBzZXQsIHRoZSByZXR1cm5lZCByZXN1bHQgc2V0IG1heSBjb250YWluIEZFV0VSIGVsZW1lbnRzIHRoYW4gdGhlXG4gICAqIHJlcXVlc3RlZCBwYWdlIGxpbWl0LlxuICAgKi9cbiAgbGlzdFVzZXJzSW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHF1ZXJ5IHN0cmluZy4gSWYgZGVmaW5lZCwgYWxsIHJldHVybmVkIHVzZXJzIHdpbGwgY29udGFpbiB0aGlzIHN0cmluZyBpbiB0aGVpciBuYW1lIG9yIGVtYWlsLiAqL1xuICAgICAgICBxPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRHZXRVc2Vyc0luT3JnUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICovXG4gIGNyZWF0ZU9pZGNVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZFRoaXJkUGFydHlVc2VyUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IHVzZXIgYnkgZW1haWwuXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBlbWFpbC5cbiAgICpcbiAgICogVGhlIHNlYXJjaCBpbmNsdWRlcyBhbGwgdXNlcnMgYW5kIHRoZWlyIHRoaXJkLXBhcnR5IGlkZW50aXRpZXMuXG4gICAqL1xuICBnZXRVc2VySW5PcmdCeUVtYWlsOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIuICovXG4gICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJHZXRVc2VyQnlFbWFpbFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgKi9cbiAgZGVsZXRlT2lkY1VzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBhIHVzZXIgYnkgdGhlaXIgT0lEQyBpZGVudGl0eVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGEgdXNlciBieSB0aGVpciBPSURDIGlkZW50aXR5XG4gICAqXG4gICAqIFJldHJpZXZlcyBhIHVzZXIgaW4gdGhlIG9yZ2FuaXphdGlvbiBieSB0aGVpciBPSURDIGlzc3VlciBhbmQgc3ViamVjdC5cbiAgICovXG4gIGdldFVzZXJJbk9yZ0J5T2lkYzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyBpc3N1ZXIuICovXG4gICAgICAgIGlzczogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHN1YmplY3QuICovXG4gICAgICAgIHN1Yjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiR2V0VXNlckJ5T2lkY1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIE1GQSByZXNldCBmb3IgdXNlclxuICAgKi9cbiAgcmVzZXRNZW1iZXJNZmE6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVzZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIE1GQSByZXNldCBmb3IgdXNlclxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAqL1xuICBjb21wbGV0ZVJlc2V0TWVtYmVyTWZhOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbXBsZXRlTWZhUmVzZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCB1c2VyIGJ5IGlkXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBpZFxuICAgKi9cbiAgZ2V0VXNlckluT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhIHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqL1xuICBkZWxldGVVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgYSB1c2VyJ3MgbWVtYmVyc2hpcCBpbiB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgYSB1c2VyJ3MgbWVtYmVyc2hpcCBpbiB0aGUgb3JnXG4gICAqXG4gICAqIEVuYWJsZS9kaXNhYmxlIGFub3RoZXIgdXNlciBpbiB0aGUgb3JnLCBvciBjaGFuZ2UgdGhlaXIgbWVtYmVyc2hpcCByb2xlLlxuICAgKi9cbiAgdXBkYXRlVXNlck1lbWJlcnNoaXA6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZVVzZXJNZW1iZXJzaGlwUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBMb2dpbiB3aXRoIFBhc3NrZXlcbiAgICpcbiAgICogVGhlIHJlc3BvbnNlIGNvbnRhaW5zIGEgRklETyBjaGFsbGVuZ2UgdGhhdCB0aGUgY2xpZW50IG11c3QgYW5zd2VyIHdpdGggYW55IG9mIHRoZWlyXG4gICAqIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFscy4gIFRoZSBhbnN3ZXIgc2hvdWxkIGJlIHN1Ym1pdHRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIFBBVENIIHJlcXVlc3QuXG4gICAqL1xuICBwYXNza2V5QXV0aEluaXQ6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMb2dpblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IHNob3VsZCBjb250YWluIGFuIGFuc3dlciB0byB0aGUgY2hhbGxlbmdlIGlzc3VlZCBieSB0aGUgY29ycmVzcG9uZGluZyBQT1NUIHJlcXVlc3QuXG4gICAqIFRoZSBjaGFsbGVuZ2UgbWF5IGJlIGFuc3dlcmVkIHdpdGggYW55IG9mIHRoZSB1c2VyJ3MgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzOyBpZiB0aGUgY3JlZGVudGlhbFxuICAgKiBpbmNsdWRlZCBpbiB0aGUgYW5zd2VyIGlzIHJlZ2lzdGVyZWQgd2l0aCBhIHVzZXIgYW5kIGFuIG9yZ2FuaXphdGlvbiwgdGhlIHJlc3BvbnNlIHdpbGwgY29udGFpblxuICAgKiBhIEN1YmVTaWduZXIgc2Vzc2lvbiAod2l0aCB0aGUgcGFyYW1ldGVycyBzdXBwbGllZCBpbiB0aGUgcHJldmlvdXMgUE9TVCByZXF1ZXN0KSBmb3IgdGhhdCB1c2VyXG4gICAqIGluIHRoYXQgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgcGFzc2tleUF1dGhDb21wbGV0ZToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlBc3NlcnRBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb2AgaW5zdGVhZC5cbiAgICpcbiAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICovXG4gIHJlZ2lzdGVyRmlkb0luaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUEFUQ0ggL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG9gIGluc3RlYWQuXG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZWdpc3RlckZpZG9Db21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogREVQUkVDQVRFRC4gVXNlIGBQT1NUIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAqXG4gICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlc2V0VG90cEluaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUEFUQ0ggL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHBgIGluc3RlYWQuXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZXNldFRvdHBDb21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVmVyaWZ5IFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cC92ZXJpZnlgIGluc3RlYWQuXG4gICAqXG4gICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgKi9cbiAgdmVyaWZ5VG90cExlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYWxsIHRoZSBvcmdzIHRoZSB1c2VyIGlzIGEgcGFydCBvZlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCB0aGUgb3JncyB0aGUgdXNlciBpcyBhIHBhcnQgb2ZcbiAgICovXG4gIHVzZXJPcmdzOiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VyT3Jnc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gUmF3IEJsb2JcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gUmF3IEJsb2JcbiAgICpcbiAgICogU2lnbnMgYW4gYXJiaXRyYXJ5IGJsb2Igd2l0aCBhIGdpdmVuIGtleS5cbiAgICpcbiAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgKlxuICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICpcbiAgICogLSBCTFMgc2lnbmF0dXJlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGUgYmxvYi1zaWduIGVuZHBvaW50LlxuICAgKi9cbiAgYmxvYlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJsb2JTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVjb3JkIGhlYXJ0YmVhdFxuICAgKiBAZGVzY3JpcHRpb24gUmVjb3JkIGhlYXJ0YmVhdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGlzIGNhbGxlZCBieSB0aGUgY3ViZTNzaWduZXIgcHJveHkgdG8gcmVjb3JkIHZhcmlvdXMgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICAgKi9cbiAgY3ViZTNzaWduZXJIZWFydGJlYXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhlYXJ0YmVhdFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhbiBFdGhlcmV1bSAoYW5kIG90aGVyIEVWTSkgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqIFJldHVybnMgYW4gUkxQLWVuY29kZWQgdHJhbnNhY3Rpb24gd2l0aCBFSVAtMTU1IHNpZ25hdHVyZS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBldGhlcmV1bSBhZGRyZXNzIG9mIHRoZSBzZWNwIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV0aDFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkV0aDFTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICpcbiAgICogU2lnbnMgYW4gZXRoMiB2YWxpZGF0b3IgcmVxdWVzdCB3aXRoIGEgZ2l2ZW4gQkxTIGtleS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgyU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgKEJMUykgcHVibGljIGtleSB3aXRoIDB4IHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSAweDk3MDBmYmI4YzkwNjk0MjQ0MmMyYTViM2FkNzQ5OGYyN2FlZGRhMjUzNzg2YTZmYmFhOGZlZjQ3ZmI3YWYyMzRlNTBjZjJjY2U4MTVhNTUzMDg3OTkyYWU1NjVkNDhkYVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXRoMlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgKlxuICAgKiBTaWducyBhIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2l0aCBhIGB2YWxpZGF0b3Jfa2V5YC4gSWYgYHZhbGlkYXRvcl9rZXlgIGlzIHNldCB0byBhIHByZWdlbmVyYXRlZCBrZXksIHdlIHVzZSB0aGVcbiAgICogcHJvdmlkZWQgdmFsaWRhdG9yIGtleS4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhIG5ldyBCTFMga2V5LlxuICAgKlxuICAgKiBXaGVuIHVzaW5nIGEgcHJlZ2VuZXJhdGVkIGtleSwgdGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlXG4gICAqIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBzdGFrZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGFrZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTdGFrZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICpcbiAgICogSGFuZGxlIHVuc3Rha2luZyByZXF1ZXN0LCBwcm9kdWNpbmcgYSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZVxuICAgKiB0aGF0IGNhbiBiZSBwb3N0ZWQgZGlyZWN0bHkgdG8gdGhlIEJlYWNvbiBjaGFpbi5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICB1bnN0YWtlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHZhbGlkYXRvciAoQkxTKSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4YTk5YTc2ZWQ3Nzk2ZjdiZTIyZDViN2U4NWRlZWI3YzU2NzdlODhlNTExZTBiMzM3NjE4ZjhjNGViNjEzNDliNGJmMmQxNTNmNjQ5ZjdiNTMzNTlmZThiOTRhMzhlNDRjXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbnN0YWtlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVuc3Rha2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgKi9cbiAgc2lnbmVyU2Vzc2lvblJlZnJlc2g6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIG9yZ2FuaXphdGlvbiBvd25pbmcgdGhlIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoRGF0YVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIGJ5IG9wZW5hcGktdHlwZXNjcmlwdC5cbiAqIERvIG5vdCBtYWtlIGRpcmVjdCBjaGFuZ2VzIHRvIHRoZSBmaWxlLlxuICovXG5cbi8qKiBPbmVPZiB0eXBlIGhlbHBlcnMgKi9cbnR5cGUgV2l0aG91dDxULCBVPiA9IHsgW1AgaW4gRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBVPl0/OiBuZXZlciB9O1xudHlwZSBYT1I8VCwgVT4gPSBUIHwgVSBleHRlbmRzIG9iamVjdCA/IChXaXRob3V0PFQsIFU+ICYgVSkgfCAoV2l0aG91dDxVLCBUPiAmIFQpIDogVCB8IFU7XG50eXBlIE9uZU9mPFQgZXh0ZW5kcyBhbnlbXT4gPSBUIGV4dGVuZHMgW2luZmVyIE9ubHldXG4gID8gT25seVxuICA6IFQgZXh0ZW5kcyBbaW5mZXIgQSwgaW5mZXIgQiwgLi4uaW5mZXIgUmVzdF1cbiAgICA/IE9uZU9mPFtYT1I8QSwgQj4sIC4uLlJlc3RdPlxuICAgIDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgcGF0aHMge1xuICBcIi92MC9hYm91dF9tZVwiOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICpcbiAgICAgKiBQUkVGRVIgYEdFVCAvdjAvb3Jncy97b3JnX2lkfS91c2VyL21lYFxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImFib3V0TWVMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL2F0dGVzdGF0aW9uLy53ZWxsLWtub3duL2p3a3MuanNvblwiOiB7XG4gICAgLyoqXG4gICAgICogSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciB0aGUgYXR0ZXN0YXRpb24ga2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5IHVzZWQgdG8gc2lnbiBLZXkgaW5mbyBhdHRlc3RhdGlvbnMuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYXR0ZXN0YXRpb25Kd2tTZXRcIl07XG4gIH07XG4gIFwiL3YwL2VtYWlsL29yZ3NcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgYWNjZXNzaWJsZSBvcmdhbml6YXRpb25zLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFjY2Vzc2libGUgb3JnYW5pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIFVuYXV0aGVudGljYXRlZCBlbmRwb2ludCBmb3IgcmV0cmlldmluZyBhbGwgb3JnYW5pemF0aW9ucyBhY2Nlc3NpYmxlIHRvIGEgdXNlci5cbiAgICAgKiBUaGlzIGluZm9ybWF0aW9uIGlzIGVtYWlsZWQgdG8gdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZW1haWxfbXlfb3Jnc1wiXTtcbiAgfTtcbiAgXCIvdjAvaW50ZXJuYWwvc2VudHJ5XCI6IHtcbiAgICAvKipcbiAgICAgKiAoSU5URVJOQUwpIFNlbnRyeSBBUEkgUHJveHlcbiAgICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBTZW50cnkgQVBJIFByb3h5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNlbnRyeUFwaUNhbGxQdWJsaWNcIl07XG4gIH07XG4gIFwiL3YwL21taS92My8ud2VsbC1rbm93bi9qd2tzLmpzb25cIjoge1xuICAgIC8qKlxuICAgICAqIEpXS1MgZW5kcG9pbnQgZm9yIE1NSVxuICAgICAqIEBkZXNjcmlwdGlvbiBKV0tTIGVuZHBvaW50IGZvciBNTUlcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBzaWduIEpTT04gV2ViIFRva2VucyBmb3IgTU1JLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1taUp3a1NldFwiXTtcbiAgfTtcbiAgXCIvdjAvbW1pL3YzL2pzb24tcnBjXCI6IHtcbiAgICAvKipcbiAgICAgKiBNTUkgSlNPTi1SUEMgZW5kcG9pbnRcbiAgICAgKiBAZGVzY3JpcHRpb24gTU1JIEpTT04tUlBDIGVuZHBvaW50XG4gICAgICpcbiAgICAgKiBIYW5kbGVyIGZvciBhbGwgW01NSSBKU09OLVJQQ10oaHR0cHM6Ly9kb2NzLm1ldGFtYXNrLWluc3RpdHV0aW9uYWwuaW8vY3VzdG9kaWFuLWludGVncmF0aW9uL2ludGVncmF0aW9uLWRvY3MvYXBpL21ldGhvZHMpXG4gICAgICogcmVxdWVzdHMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1taVwiXTtcbiAgfTtcbiAgXCIvdjAvb2F1dGgvdG9rZW5cIjoge1xuICAgIC8qKlxuICAgICAqIFRva2VuIHJlZnJlc2ggZW5kcG9pbnQsIGNvbXBsaWFudCB3aXRoIE9BdXRoLlxuICAgICAqIEBkZXNjcmlwdGlvbiBUb2tlbiByZWZyZXNoIGVuZHBvaW50LCBjb21wbGlhbnQgd2l0aCBPQXV0aC5cbiAgICAgKlxuICAgICAqIFRoZSBib2R5IGNvbnRlbnQgdHlwZSBjYW4gYmUgZWl0aGVyICdhcHBsaWNhdGlvbi9qc29uJyBvciAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2F1dGgyVG9rZW5SZWZyZXNoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRPcmdcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIE9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAgICpcbiAgICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZU9yZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2F1ZGl0XCI6IHtcbiAgICAvKipcbiAgICAgKiBRdWVyeSB0aGUgYXVkaXQgbG9nLlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWVyeSB0aGUgYXVkaXQgbG9nLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJxdWVyeUF1ZGl0TG9nXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXV0aF9taWdyYXRpb24vYWRkX2lkZW50aXR5XCI6IHtcbiAgICAvKipcbiAgICAgKiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSB3aXRoIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdXRoTWlncmF0aW9uSWRlbnRpdHlBZGRcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdXRoX21pZ3JhdGlvbi9yZW1vdmVfaWRlbnRpdHlcIjoge1xuICAgIC8qKlxuICAgICAqIERpc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBEaXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYXV0aE1pZ3JhdGlvbklkZW50aXR5UmVtb3ZlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXV0aF9taWdyYXRpb24vdXBkYXRlX3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgZXhpc3RpbmcgdXNlcnMnIHByb2ZpbGVzLiBDdXJyZW50bHkgc3VwcG9ydHMgb25seSAocmUpc2V0dGluZyBlbWFpbHMuXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBleGlzdGluZyB1c2VycycgcHJvZmlsZXMuIEN1cnJlbnRseSBzdXBwb3J0cyBvbmx5IChyZSlzZXR0aW5nIGVtYWlscy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYXV0aE1pZ3JhdGlvblVzZXJVcGRhdGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9hdmEvc2lnbi97YXZhX2NoYWlufS97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIEF2YWxhbmNoZSBtZXNzYWdlIHdpdGggYSBnaXZlbiBTZWNwRXRoIChDLUNoYWluIG1lc3NhZ2VzKSBvclxuICAgICAqIFNlY3BBdmEgKFgtIGFuZCBQLUNoYWluIG1lc3NhZ2VzKSBrZXkuIEN1cnJlbnRseSBzaWduaW5nIEMtQ2hhaW4gbWVzc2FnZXNcbiAgICAgKiB3aXRoIFNlY3BFdGgga2V5IG11c3QgYWxzbyBiZSBleHBsaWNpdGx5IGFsbG93ZWQgdmlhIGBBbGxvd1Jhd0Jsb2JTaWduaW5nYFxuICAgICAqIHBvbGljeS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTZXJpYWxpemVkVHhTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYXZhL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBKU09OLWVuY29kZWQgQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgICAqXG4gICAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJhdmFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vYmFieWxvbi9jb3Yvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCYWJ5bG9uIENvdmVuYW50IENvbW1pdHRlZSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBDb3ZlbmFudCBDb21taXR0ZWUgUmVxdWVzdFxuICAgICAqXG4gICAgICogU2lnbnMgdHJhbnNhY3Rpb25zIHJlbGV2YW50IHRvIGEgQmFieWxvbiBjb3ZlbmFudCBjb21taXR0ZWUgc2lnbmVyLFxuICAgICAqIGkuZS4sIFNjaG5vcnIgYW5kIGFkYXB0b3Igc2lnbmF0dXJlcyBmb3IgdGhlIHVuYm9uZGluZywgc2xhc2hpbmcsIGFuZFxuICAgICAqIHNsYXNoLXVuYm9uZGluZyBvdXRwdXRzIG9mIGEgQmFieWxvbiBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJiYWJ5bG9uQ292U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vZW90cy9ub25jZXMve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBFT1RTIG5vbmNlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgRU9UUyBub25jZXNcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIHNldCBvZiBCYWJ5bG9uIEVPVFMgbm9uY2VzIGZvciBhIHNwZWNpZmllZCBjaGFpbi1pZCwgc3RhcnRpbmcgYXQgYVxuICAgICAqIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZUVvdHNOb25jZXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9iYWJ5bG9uL2VvdHMvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFuIEVPVFMgc2lnbmF0dXJlXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBhbiBFT1RTIHNpZ25hdHVyZVxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGFuIEVPVFMgc2lnbmF0dXJlIGZvciB0aGUgc3BlY2lmaWVkIGNoYWluLWlkLCBibG9jayBoZWlnaHQsIGFuZCBtZXNzYWdlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlb3RzU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vcmVnaXN0cmF0aW9uL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEJhYnlsb24gU3Rha2luZyBSZWdpc3RyYXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgUmVnaXN0cmF0aW9uXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuZCBzaWducyB0aGUgZGF0YSBuZWVkZWQgdG8gcmVnaXN0ZXIgYSBQaGFzZS0yIG9yIFBoYXNlLTNcbiAgICAgKiBCYWJ5bG9uIHN0YWtlLiBUaGlzIGluY2x1ZGVzIHRoZSBkZXBvc2l0IGFuZCB1bmJvbmRpbmcgdHJhbnNhY3Rpb25zLFxuICAgICAqIHR3byBzbGFzaGluZyB0cmFuc2FjdGlvbnMsIHRoZSBzbGFzaGluZyBzaWduYXR1cmVzLCBhbmQgdGhlIHByb29mIG9mXG4gICAgICogcG9zc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGdlbmVyYXRlIHRoaXMgcmVnaXN0cmF0aW9uIGRhdGEgYnlcbiAgICAgKiBtYWtpbmcgZm91ciBjYWxscyB0byB0aGUgQmFieWxvbiBzdGFraW5nIEFQSSwgcGx1cyBvbmUgY2FsbCB0byB0aGVcbiAgICAgKiBQU0JUIHNpZ25pbmcgQVBJIHRvIGdlbmVyYXRlIHRoZSBCSVAtMzIyIHByb29mIG9mIHBvc3Nlc3Npb24uIFRoZVxuICAgICAqIHJlZ2lzdHJhdGlvbiBBUEkgZ2VuZXJhdGVzIHRoZSBzYW1lIGRhdGEgYnV0IGlzIGVhc2llciB0byB1c2UuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIHdpdGggYSBUYXByb290IGtleS4gSWYgeW91clxuICAgICAqIGRlcG9zaXQgdHJhbnNhY3Rpb24gc3BlbmRzIFVUWE9zIHRoYXQgYXJlIGNvbnRyb2xsZWQgYnkgb3RoZXIga2V5cyxcbiAgICAgKiB5b3UgY2FuIHN1Ym1pdCB0aGUgJ2RlcG9zaXQnIFBTQlQgdG8gdGhlIFBTQlQgc2lnbmluZyBBUEkgb25lIG9yIG1vcmVcbiAgICAgKiB0aW1lcyB0byBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgc2lnbmF0dXJlcy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBjb25zdWx0IHRoZVxuICAgICAqIFtCYWJ5bG9uIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJ5bG9ubGFicy1pby9iYWJ5bG9uL2Jsb2IvcmVsZWFzZS92MS54L2RvY3MvcmVnaXN0ZXItYml0Y29pbi1zdGFrZS5tZCkuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYmFieWxvblJlZ2lzdHJhdGlvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2JhYnlsb24vc3Rha2luZy97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYW5kIHNpZ25zIHRyYW5zYWN0aW9ucyByZWxhdGVkIHRvIEJhYnlsb24gc3Rha2luZyAoaS5lLixcbiAgICAgKiBkZXBvc2l0LCBlYXJseSB1bmJvbmQsIHdpdGhkcmF3YWwpLiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgUHJlLVNpZ25lZFxuICAgICAqIEJpdGNvaW4gVHJhbnNhY3Rpb24gKFBTQlQpLCBhcyBkZWZpbmVkIGluIEJJUC0xNzQsIHdoaWNoIG1hdGNoZXMgdGhlXG4gICAgICogZm9ybWF0IHVzZWQgaW4gbW9zdCBCYWJ5bG9uIHRvb2xpbmcuXG4gICAgICpcbiAgICAgKiBUaGUgJ2RlcG9zaXQnIGFjdGlvbiBjYW4gYmUgdXNlZCB3aXRoIGVpdGhlciBTZWd3aXQgKGkuZS4sIFNlY3BCdGMvU2VjcEJ0Y1Rlc3QpXG4gICAgICogb3IgVGFwcm9vdCAoaS5lLiwgVGFwcm9vdEJ0Yy9UYXByb290QnRjVGVzdCkga2V5cy4gVGhlIHJlbWFpbmluZyBhY3Rpb25zIGNhbiBiZVxuICAgICAqIHVzZWQgb25seSB3aXRoIFRhcHJvb3Qga2V5cy5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJiYWJ5bG9uU3Rha2luZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy9tZXNzYWdlL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gYSBCaXRjb2luIG1lc3NhZ2UuXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gYSBCaXRjb2luIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgQklQMTM3IG1lc3NhZ2Ugc2lnbmluZyB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYnRjTWVzc2FnZVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9idGMvcHNidC9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgICAqXG4gICAgICogU2lnbnMgYWxsIGlucHV0cyBvZiB0aGUgc3VwcGxpZWQgUFNCVCB2MCAoQklQLTE3NCkgdGhhdCBwZXJ0YWluIHRvIHRoZVxuICAgICAqICdwdWJrZXknIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIFRhcHJvb3Qgb3IgYVxuICAgICAqIFNlZ3dpdCBrZXkuIEZvciBTZWd3aXQga2V5cywgQ3ViZVNpZ25lci1zcGVjaWZpYyBkZXRlcm1pbmlzdGljIHR3ZWFraW5nXG4gICAgICogY2FuIGJlIGFwcGxpZWQgdG8gJ3B1YmtleScgYmVmb3JlIHNpZ25pbmcsIG9uIGEgcGVyLWlucHV0IGJhc2lzLiAoU2VlIHRoZVxuICAgICAqIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBTZWd3aXQgdHdlYWtpbmcuKVxuICAgICAqXG4gICAgICogV2hlbiBjYWxsaW5nIHdpdGggYSBzZWd3aXQga2V5IHRoZSByZXF1aXJlZCBzY29wZSBpcyAnc2lnbjpidGM6cHNidDpzZWd3aXQnLlxuICAgICAqIEZvciBhIHRhcHJvb3Qga2V5LCB0aGUgc2NvcGUgaXMgJ3NpZ246YnRjOnBzYnQ6dGFwcm9vdCcuIEVpdGhlciB0eXBlIG9mIGtleVxuICAgICAqIGNhbiBiZSB1c2VkIHdpdGggdGhlICdzaWduOmJ0Yzpwc2J0JyBzY29wZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJwc2J0U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEJpdGNvaW4gU2Vnd2l0IFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBTZWd3aXQgVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIFNpZ25zIGEgQml0Y29pbiBTZWd3aXQgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYnRjU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2J0Yy90YXByb290L3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gQml0Y29pbiBUYXByb290IFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUYXByb290IFRyYW5zYWN0aW9uXG4gICAgICpcbiAgICAgKiBTaWducyBhIEJpdGNvaW4gVGFwcm9vdCB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJidGNUYXByb290U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2NvbnRhY3RzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IENvbnRhY3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgQ29udGFjdHNcbiAgICAgKlxuICAgICAqIExpc3QgYWxsIGNvbnRhY3RzIGluIHRoZSBvcmcuXG4gICAgICogQW55IG9yZyBtZW1iZXIgaXMgYWxsb3dlZCB0byBsaXN0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnLlxuICAgICAqXG4gICAgICogIyMgU2VhcmNoIENvbmRpdGlvblxuICAgICAqIFRoZSBzZWFyY2ggY29uZGl0aW9uIGlzIG9wdGlvbmFsLlxuICAgICAqXG4gICAgICogLSBJZiB0aGUgc2VhcmNoIGNvbmRpdGlvbiBzdGFydHMgd2l0aCBcImxhYmVsOi4uLlwiLCB0aGlzIGxpc3Qgd2lsbCBvbmx5IGhvbGQgY29udGFjdHMgd2l0aFxuICAgICAqIHRoZSBsYWJlbCBwcm92aWRlZCBhZnRlciB0aGUgXCI6XCIuIEZvciBleGFtcGxlLCBcImxhYmVsOmN1YmlzdDplcmMyMF90b2tlblwiIHdvdWxkIHJldHVybiBjb250YWN0cyB0aGF0XG4gICAgICogaG9sZCB0aGUgbGFiZWwgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIi5cbiAgICAgKlxuICAgICAqIC0gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBjb250YWN0cyB3aG8gaGF2ZSBhbiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGgsIG9yXG4gICAgICogZXF1YWxpbmcsIHRoZSBnaXZlbiBzZWFyY2ggc3RyaW5nLiBGb3IgZXhhbXBsZSwgXCIweGVlXCIgd291bGQgcmV0dXJuIGFsbCBjb250YWN0cyBob2xkaW5nIGFuXG4gICAgICogYWRkcmVzcyBzdGFydGluZyB3aXRoIFwiMHhlZVwiLiBUaGUgc2VhcmNoIGlzIGNhc2UtaW5zZW5zaXRpdmUuXG4gICAgICpcbiAgICAgKiBJZiBhIHNlYXJjaCB0ZXJtIGlzIGRlZmluZWQsIHdlIGRvIG5vdCBndWFyYW50ZWVcbiAgICAgKiB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgaW4gYSBwYWdlLiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBwYXJhbWV0ZXIgbWF5IGNoYW5nZVxuICAgICAqIGluIHRoZSBmdXR1cmUgKGZvciBleGFtcGxlLCBtYWtpbmcgcmVzdWx0cyBtb3JlIHN0cmljdGx5IHBhZ2luYXRlZCBvclxuICAgICAqIHBlcmZvcm1pbmcgYSBmdXp6eSBzZWFyY2ggcmF0aGVyIHRoYW4gYSBwcmVmaXggc2VhcmNoKS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Q29udGFjdHNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIENvbnRhY3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIENvbnRhY3RcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY29udGFjdCBpbiB0aGUgb3JnYW5pemF0aW9uLXdpZGUgYWRkcmVzcyBib29rLiBUaGVcbiAgICAgKiB1c2VyIG1ha2luZyB0aGUgcmVxdWVzdCBpcyB0aGUgb3duZXIgb2YgdGhlIGNvbnRhY3QsIGdpdmluZyB0aGVtIGVkaXQgYWNjZXNzXG4gICAgICogdG8gdGhlIGNvbnRhY3QgYWxvbmcgd2l0aCB0aGUgb3JnIG93bmVycy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlQ29udGFjdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2NvbnRhY3RzL2J5LWFkZHJlc3NcIjoge1xuICAgIC8qKlxuICAgICAqIExvb2t1cCBDb250YWN0cyBieSBBZGRyZXNzXG4gICAgICogQGRlc2NyaXB0aW9uIExvb2t1cCBDb250YWN0cyBieSBBZGRyZXNzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFsbCBjb250YWN0cyBpbiB0aGUgb3JnIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gYWRkcmVzcy5cbiAgICAgKlxuICAgICAqIFdoZW4gcXVlcnlpbmcgd2l0aCBhbiBFVk0gYWRkcmVzcyB3aXRob3V0IGEgY2hhaW4sIHRoaXMgZW5kcG9pbnQgcmV0dXJuc1xuICAgICAqIGNvbnRhY3RzIHdpdGggdGhhdCBhZGRyZXNzIG9uICphbnkqIGNoYWluLCBpbmNsdWRpbmcgdGhvc2Ugd2l0aG91dCBhIGNoYWluXG4gICAgICogZGVmaW5lZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wibG9va3VwQ29udGFjdHNCeUFkZHJlc3NcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9jb250YWN0cy97Y29udGFjdF9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBDb250YWN0XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEgQ29udGFjdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRDb250YWN0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBDb250YWN0XG4gICAgICpcbiAgICAgKiBEZWxldGUgYSBjb250YWN0LCBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqXG4gICAgICogT25seSB0aGUgY29udGFjdCBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUgY29udGFjdHMuXG4gICAgICogQWRkaXRpb25hbGx5LCB0aGUgY29udGFjdCdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSBkZWxldGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVDb250YWN0XCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBDb250YWN0XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBDb250YWN0XG4gICAgICpcbiAgICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGNvbnRhY3QgaW4gdGhlIG9yZ2FuaXphdGlvbi13aWRlIGFkZHJlc3MgYm9vay4gT25seVxuICAgICAqIHRoZSBjb250YWN0IG93bmVyIG9yIGFuIG9yZyBvd25lciBjYW4gdXBkYXRlIGNvbnRhY3RzLlxuICAgICAqXG4gICAgICogKlVwZGF0ZXMgd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIHZhbHVlIG9mIHRoZSBmaWVsZC4qXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVDb250YWN0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vY291bnRzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBjb3VudHMgb2YgdXNlcnMgYW5kIGtleXMgd2l0aGluIGFuIG9yZy5cbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGN1cnJlbnQgY291bnRzIG9mIHVzZXJzIGFuZCBrZXlzIHdpdGhpbiBhbiBvcmcuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY291bnRzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleVwiOiB7XG4gICAgLyoqXG4gICAgICogRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqXG4gICAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiZGVyaXZlS2V5TGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZGVyaXZlX2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIERlcml2ZSBLZXkgRnJvbSBOZXcgT3IgRXhpc3RpbmcgTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTmV3IE9yIEV4aXN0aW5nIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICAgKlxuICAgICAqIFVzZXMgZWl0aGVyIGEgbmV3IG9yIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMgdG8gZGVyaXZlIGtleXMgb2ZcbiAgICAgKiBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgdHlwZXMgdmlhIHNwZWNpZmllZCBkZXJpdmF0aW9uIHBhdGhzLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImRlcml2ZUtleVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2RpZmZpZV9oZWxsbWFuL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBDb21wdXRlIERpZmZpZSBIZWxsbWFuIHNoYXJlZCBzZWNyZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0ZSBEaWZmaWUgSGVsbG1hbiBzaGFyZWQgc2VjcmV0XG4gICAgICpcbiAgICAgKiBGb3IgYSBzZXQgb2YgZWxsaXB0aWMgY3VydmUgcG9pbnRzIChQXzEsIC4uLiwgUF9pKSwgY29tcHV0ZXMgdGhlIERpZmZpZSBIZWxsbWFuXG4gICAgICogc2hhcmVkIHNlY3JldCAoUV8xLCAuLi4sIFFpKSA9IChzayAqIFBfMSwgLi4uIHNrICogUF9pKSwgZm9yIHNrIHRoZSBzZWNyZXQga2V5LlxuICAgICAqIFBvaW50cyBhcmUgc3BlY2lmaWVkIGluIGEgY3VydmUtZGVwZW5kZW50IGZvcm1hdC4gU2VlIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvblxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgdXNlciBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEgTklTVCBQLTI1NiBwdWJsaWMga2V5LCBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHRcbiAgICAgKiB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGUgcHVibGljIGtleSB1c2luZyBSRkM5MTgwIEhQS0UoUC0yNTYsIEhLREYtU0hBMjU2KSB3aXRoXG4gICAgICogQUVTLTI1Ni1HQ00gYXMgdGhlIHN5bW1ldHJpYyBjaXBoZXIuIEluIHRoaXMgY2FzZSwgdGhlIHJlc3VsdGluZyBjaXBoZXJ0ZXh0IHdpbGxcbiAgICAgKiBjb250YWluIGEgc2VyaWFsaXplZCBKU09OIGJsb2IgY29udGFpbmluZyB0aGUgdmVjdG9yIG9mIHNoYXJlZCBzZWNyZXRzIGluIHRoZSBzYW1lXG4gICAgICogb3JkZXIgdGhleSB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHRoZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYSBwdWJsaWMga2V5LCB0aGUgcmVzdWx0aW5nIHNoYXJlZCBzZWNyZXRzIHdpbGwgYmVcbiAgICAgKiByZXR1cm5lZCB1bmVuY3J5cHRlZC4gSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBzYW1wbGUgYSByYW5kb20gdmFsdWUgclxuICAgICAqIG1vZHVsbyB0aGUgZ3JvdXAgb3JkZXIgYW5kIG1hc2sgdGhlIHJlcXVlc3RlZCBwb2ludHMgYXMgKHIgKiBQXzEsIC4uLiwgciAqIFBfaSkuXG4gICAgICogVGhlIHJlc3VsdCB3aWxsIGJlIChyICogc2sgKiBQXzEsIC4uLiwgciAqIHNrICogUF9pKSwgd2hpY2ggY2FuIGJlIHVubWFza2VkIGJ5XG4gICAgICogZmlyc3QgY29tcHV0aW5nIHJeLTEsIHRoZSBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIHIgbW9kdWxvIHRoZSBncm91cCBvcmRlcixcbiAgICAgKiB0aGVuIGNvbXB1dGluZyBhIHNjYWxhciBtdWx0aXBsaWNhdGlvbiBvZiBlYWNoIHJldHVybmVkIHBvaW50IHdpdGggcl4tMS5cbiAgICAgKlxuICAgICAqIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgc2VjdXJpdHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBhcHByb2FjaGVzLiBUaGVcbiAgICAgKiBjbGllbnQgaXMgZnJlZSB0byBjaG9vc2UgdGhlIG9uZSB0aGF0IGlzIGVhc2llciBmcm9tIGFuIGltcGxlbWVudGF0aW9uIHBlcnNwZWN0aXZlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJkaWZmaWVIZWxsbWFuRXhjaGFuZ2VcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9lbWFpbHMve3B1cnBvc2V9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgRW1haWwgVGVtcGxhdGVcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IEVtYWlsIFRlbXBsYXRlXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBlbWFpbCB0ZW1wbGF0ZSBmb3IgYSBnaXZlbiBwdXJwb3NlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldEVtYWlsQ29uZmlnXCJdO1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZSBFbWFpbCBUZW1wbGF0ZVxuICAgICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmUgRW1haWwgVGVtcGxhdGVcbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJjb25maWd1cmVFbWFpbFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgRW1haWwgVGVtcGxhdGVcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEVtYWlsIFRlbXBsYXRlXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlRW1haWxDb25maWdcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9ldm0vZWlwMTkxL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAgICpcbiAgICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgRUlQLTE5MSBwZXJzb25hbF9zaWduIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJlaXAxOTFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZXZtL2VpcDcxMi9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgICAqXG4gICAgICogU2lnbnMgdHlwZWQgZGF0YSBhY2NvcmRpbmcgdG8gRUlQLTcxMiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZWlwNzEyU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V4cG9ydC97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IGFuIE9yZy1FeHBvcnQgQ2lwaGVydGV4dFxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgYW4gT3JnLUV4cG9ydCBDaXBoZXJ0ZXh0XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBleHBvcnQgY2lwaGVydGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIGtleS1pZC5cbiAgICAgKiBJbiBvcmRlciB0byB1c2UgdGhpcyBBUEksIHlvdSBtdXN0IGJlIGFuIG9yZyBvd25lciBhbmQgeW91ciBvcmcgbXVzdFxuICAgICAqIGJlIGNvbmZpZ3VyZWQgZm9yIG9yZyBleHBvcnQgYW5kIGZvciBBUEktYmFzZWQgZXhwb3J0IGRlbGl2ZXJ5LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldE9yZ0V4cG9ydFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5XCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IGFzc29jaWF0ZWQgT0lEQyBpZGVudGl0aWVzIHdpdGggdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBhc3NvY2lhdGVkIE9JREMgaWRlbnRpdGllcyB3aXRoIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdE9pZGNJZGVudGl0aWVzXCJdO1xuICAgIC8qKlxuICAgICAqIEFzc29jaWF0ZSBhbiBPSURDIGlkZW50aXR5IHdpdGggdGhlIGN1cnJlbnQgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqXG4gICAgICogQWxpZW4gdXNlcnMgYXJlIGFsbG93ZWQgdG8gY2FsbCB0aGlzIGVuZHBvaW50LCBidXQgZm9yIHRoZW0gTUZBIGlzIHJlcXVpcmVkXG4gICAgICogKHVubGVzcyB0aGV5IGFyZSByZWdpc3RlcmluZyBhbiBlbWFpbC1vdHAgaWRlbnRpdHkgbWF0Y2hpbmcgdGhlaXIgY3VycmVudCBlbWFpbCk7XG4gICAgICogYWRkaXRpb25hbGx5LCBsaW1pdHMgbWF5IGFwcGx5IHRvIGhvdyBtYW55IGlkZW50aXRpZXMgdGhhdCBtYXkgcmVnaXN0ZXIuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImFkZE9pZGNJZGVudGl0eVwiXTtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIHRoZSBjdXJyZW50IHVzZXIncyBhY2NvdW50IGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIHRoZSBjdXJyZW50IHVzZXIncyBhY2NvdW50IGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZU9pZGNJZGVudGl0eVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5L3Byb3ZlXCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIGFcbiAgICAgKiB2YWxpZCBDdWJlU2lnbmVyIHNlc3Npb24uXG4gICAgICpcbiAgICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlXG4gICAgICogdG8gYW5vdGhlciBzZXJ2aWNlIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUHJvb2ZDdWJlU2lnbmVyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRlbnRpdHkvcHJvdmUvb2lkY1wiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICAgKlxuICAgICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqXG4gICAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBtZXQgdGhlXG4gICAgICogYXV0aGVudGljYXRpb24gcmVxdWlyZW1lbnRzIChhbGxvd2VkIGlzc3VlcnMgJiBhdWRpZW5jZXMpIGZvciBDdWJlU2lnbmVyXG4gICAgICogd2l0aG91dCBsZWFraW5nIHRoZWlyIGNyZWRlbnRpYWxzLlxuICAgICAqXG4gICAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZSB0byBhbm90aGVyIHNlcnZpY2VcbiAgICAgKiB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVByb29mT2lkY1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5L3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgICAqXG4gICAgICogQWxsb3dzIGEgdGhpcmQtcGFydHkgdG8gdmFsaWRhdGUgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAgICpcbiAgICAgKiBXaGVuIGEgdGhpcmQtcGFydHkgaXMgcHJvdmlkZWQgYW4gW0lkZW50aXR5UHJvb2ZdIG9iamVjdCwgdGhleSBtdXN0IGNoZWNrIGl0c1xuICAgICAqIHZlcmFjaXR5IGJ5IGNhbGxpbmcgdGhpcyBlbmRwb2ludFxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ2ZXJpZnlQcm9vZlwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkcC9hdXRoZW50aWNhdGVcIjoge1xuICAgIC8qKlxuICAgICAqIEF1dGhlbnRpY2F0ZVxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdGVcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgZXhjaGFuZ2VzIGFuIGVtYWlsICYgcGFzc3dvcmQgZm9yIGFuIE9JREMgdG9rZW5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaWRwQXV0aGVudGljYXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaWRwL3Bhc3N3b3JkX3Jlc2V0XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXF1ZXN0IFBhc3N3b3JkIFJlc2V0XG4gICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgUGFzc3dvcmQgUmVzZXRcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZSAob2YgdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS5gKSxcbiAgICAgKiBhbmQgc2VuZHMgdGhlIHNpZ25hdHVyZSB0byB0aGUgdXNlcidzIGVtYWlsLiBDbGllbnQgYXBwbGljYXRpb25zIGNhbiByZWNvbnN0cnVjdCB0aGUgdG9rZW5cbiAgICAgKiBieSBjb25jYXRlbmF0aW5nIHRoZSBge2hlYWRlcn0ue3BheWxvYWR9LmAgd2l0aCB0aGUgc2lnbmF0dXJlLCBwcm9kdWNpbmcgYSB2YWxpZCBPSURDIHRva2VuIG9mXG4gICAgICogdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS57c2lnbmF0dXJlfWAuIFRoZSB0b2tlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlclxuICAgICAqIHdoZW4gcGVyZm9ybWluZyB0aGUgYGlkcF9wYXNzd29yZF9yZXNldF9jb25maXJtYCByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJpZHBQYXNzd29yZFJlc2V0UmVxdWVzdFwiXTtcbiAgICAvKipcbiAgICAgKiBDb25maXJtIFBhc3N3b3JkIFJlc2V0XG4gICAgICogQGRlc2NyaXB0aW9uIENvbmZpcm0gUGFzc3dvcmQgUmVzZXRcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgYWxsb3dzIElEUCB1c2VycyB0byByZXNldCB0aGVpciBwYXNzd29yZFxuICAgICAqIHVzaW5nIGEgdG9rZW4gdGhleSBoYXZlIHJlY2VpdmVkIGluIHRoZWlyIGVtYWlsLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wiaWRwUGFzc3dvcmRSZXNldENvbmZpcm1cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleUltcG9ydEtleVwiXTtcbiAgICAvKipcbiAgICAgKiBJbXBvcnQgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEltcG9ydCBLZXlcbiAgICAgKlxuICAgICAqIFNlY3VyZWx5IGltcG9ydHMgYW4gZXhpc3Rpbmcga2V5IHVzaW5nIGEgcHJldmlvdXNseSBnZW5lcmF0ZWQga2V5LWltcG9ydCBrZXkuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiaW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW5mb1wiOiB7XG4gICAgLyoqXG4gICAgICogUHVibGljIE9yZyBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFB1YmxpYyBPcmcgSW5mb1xuICAgICAqXG4gICAgICogVW5hdXRoZW50aWNhdGVkIGVuZHBvaW50IHRoYXQgcmV0dXJucyBwdWJsaWNseS1hdmFpbGFibGUgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pemF0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcInB1YmxpY19vcmdfaW5mb1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2ludGVybmFsL2N1c3RvbV9jaGFpbl9ycGNcIjoge1xuICAgIC8qKlxuICAgICAqIChJTlRFUk5BTCkgQ3VzdG9tIGNoYWluIFJQQyBwcm94eVxuICAgICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEN1c3RvbSBjaGFpbiBSUEMgcHJveHlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3VzdG9tQ2hhaW5ScGNDYWxsXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW50ZXJuYWwvZXNwbG9yYVwiOiB7XG4gICAgLyoqXG4gICAgICogKElOVEVSTkFMKSBFc3Bsb3JhIEFQSSBQcm94eVxuICAgICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVzcGxvcmFBcGlDYWxsXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW50ZXJuYWwvc2VudHJ5XCI6IHtcbiAgICAvKipcbiAgICAgKiAoSU5URVJOQUwpIEF1dGhlbnRpY2F0ZWQgU2VudHJ5IEFQSSBQcm94eVxuICAgICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEF1dGhlbnRpY2F0ZWQgU2VudHJ5IEFQSSBQcm94eVxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzZW50cnlBcGlDYWxsXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW52aXRhdGlvbi9hY2NlcHRcIjoge1xuICAgIC8qKlxuICAgICAqIEFjY2VwdCBhbiBpbnZpdGF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEFjY2VwdCBhbiBpbnZpdGF0aW9uXG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGFsbG93cyBpZHAgdXNlcnMgdG8gcmVnaXN0ZXIgdXNpbmcgYSB0b2tlbiB0aGV5IGhhdmUgcmVjZWl2ZWQgaW4gdGhlaXIgZW1haWxcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52aXRhdGlvbkFjY2VwdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2ludml0YXRpb25zXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHBlbmRpbmcgaW52aXRhdGlvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBwZW5kaW5nIGludml0YXRpb25zXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFsbCBwZW5kaW5nIChub3QgeWV0IGFjY2VwdGVkKSBpbnZpdGF0aW9ucyBmb3IgdGhlIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0SW52aXRhdGlvbnNcIl07XG4gICAgLyoqXG4gICAgICogQ2FuY2VsIGEgcGVuZGluZyBpbnZpdGF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIENhbmNlbCBhIHBlbmRpbmcgaW52aXRhdGlvblxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhIHBlbmRpbmcgaW52aXRhdGlvbiBmcm9tIHRoZSBvcmdhbml6YXRpb24uIElmIG5vIHBlbmRpbmcgaW52aXRhdGlvblxuICAgICAqIGV4aXN0cyBmb3IgdGhlIGdpdmVuIGVtYWlsIGFkZHJlc3MsIGEgbm90LWZvdW5kIGVycm9yIGlzIHJldHVybmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImNhbmNlbEludml0YXRpb25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbnZpdGVcIjoge1xuICAgIC8qKlxuICAgICAqIEludml0ZSBVc2VyXG4gICAgICogQGRlc2NyaXB0aW9uIEludml0ZSBVc2VyXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgaW4gYW4gZXhpc3Rpbmcgb3JnIGFuZCBzZW5kcyB0aGF0IHVzZXIgYW4gaW52aXRlIGVtYWlsLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJpbnZpdGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9rZXlzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXlzXG4gICAgICpcbiAgICAgKiBHZXRzIHRoZSBsaXN0IG9mIGFjY2Vzc2libGUga2V5cyBpbiBhIGdpdmVuIG9yZyAodG8gb3JnIG93bmVyLCBhbGwgb3JnIGtleXNcbiAgICAgKiBhcmUgYWNjZXNzaWJsZTsgdG8gbWVtYmVycywgb25seSB0aGVpciBvd24ga2V5cyBhcmUgYWNjZXNzaWJsZSkuXG4gICAgICpcbiAgICAgKiBJZiBhIHNlYXJjaCBjb25kaXRpb24gaXMsIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG9ubHkgdGhlIGtleXMgd2hvc2UgZWl0aGVyXG4gICAgICogbWF0ZXJpYWwgSUQgb3IgbWV0YWRhdGEgY29udGFpbiB0aGUgc2VhcmNoIGNvbmRpdGlvbiBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBOT1RFIHRoYXQgaWYgcGFnaW5hdGlvbiBpcyB1c2VkIGFuZCBhIHBhZ2UgbGltaXQgaXMgc2V0LCB0aGUgcmV0dXJuZWQgcmVzdWx0XG4gICAgICogc2V0IG1heSBjb250YWluIGVpdGhlciBGRVdFUiBvciBNT1JFIGVsZW1lbnRzIHRoYW4gdGhlIHJlcXVlc3RlZCBwYWdlIGxpbWl0LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldEtleUluT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEtleVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIGtleSBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqXG4gICAgICogT25seSB0aGUga2V5IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBrZXlzLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZUtleVwiXTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBLZXlcbiAgICAgKlxuICAgICAqIEVuYWJsZSBvciBkaXNhYmxlIGEga2V5LiAgVGhlIHVzZXIgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGtleSBvclxuICAgICAqIG9yZ2FuaXphdGlvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqXG4gICAgICogRm9yIGVhY2ggcmVxdWVzdGVkIHVwZGF0ZSwgdGhlIHNlc3Npb24gbXVzdCBoYXZlIHRoZSBjb3JyZXNwb25kaW5nICdtYW5hZ2U6a2V5OnVwZGF0ZTpfJyBzY29wZTtcbiAgICAgKiBpZiBubyB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHRoZSBzZXNzaW9uIG11c3QgaGF2ZSAnbWFuYWdlOmtleTpnZXQnLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfS9hdHRlc3RcIjoge1xuICAgIC8qKlxuICAgICAqIEF0dGVzdCB0byBLZXkgUHJvcGVydGllc1xuICAgICAqIEBkZXNjcmlwdGlvbiBBdHRlc3QgdG8gS2V5IFByb3BlcnRpZXNcbiAgICAgKlxuICAgICAqIFRoZSByZXNwb25zZSBpcyBhIEpXVCB3aG9zZSBjbGFpbXMgYXJlIHRoZSBrZXkgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhdHRlc3RLZXlcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9rZXlzL3trZXlfaWR9L3JvbGVzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IEtleSBSb2xlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleSBSb2xlc1xuICAgICAqXG4gICAgICogR2V0IGFsbCByb2xlcyB0aGUga2V5IGlzIGluXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdEtleVJvbGVzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfS90eFwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEhpc3RvcmljYWwgVHJhbnNhY3Rpb25zXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGEgc29ydGVkLCBwYWdpbmF0ZWQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGJ5IGEgZ2l2ZW4ga2V5LFxuICAgICAqIG9yZGVyZWQgZnJvbSBtb3N0IHJlY2VudCBmaXJzdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0SGlzdG9yaWNhbEtleVR4XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X3R5cGV9L3ttYXRlcmlhbF9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBLZXkgYnkgTWF0ZXJpYWwgSURcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleSBieSBNYXRlcmlhbCBJRFxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIGtleS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRLZXlCeU1hdGVyaWFsSWRcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZXRyaWNzXCI6IHtcbiAgICAvKipcbiAgICAgKiBRdWVyeSBvcmcgbWV0cmljcy5cbiAgICAgKiBAZGVzY3JpcHRpb24gUXVlcnkgb3JnIG1ldHJpY3MuXG4gICAgICpcbiAgICAgKiBNZXRyaWNzIHN1bW1hcml6ZSB1c2FnZSBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIEN1YmVTaWduZXIgb3JnYW5pemF0aW9uIG92ZXIgdGltZS4gRm9yIGV4YW1wbGUsXG4gICAgICogeW91IGNhbiBjYWxsIHRoaXMgZW5kcG9pbnQgZmluZCBvdXQ6XG4gICAgICpcbiAgICAgKiAtIHRoZSBhdmVyYWdlIG51bWJlciBvZiBrZXlzIG92ZXIgdGhlIGxhc3QgbW9udGgsXG4gICAgICogLSB0aGUgYXZlcmFnZSBudW1iZXIgbW9udGhseSB1c2VycyBvdmVyIHRoZSBsYXN0IHllYXIsXG4gICAgICogLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBzaWduZWQgbGFzdCB3ZWVrLFxuICAgICAqIC0gaG93IHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IEFQSSByZXF1ZXN0cyB3YXMgdHJlbmRpbmcgZGF5LWJ5LWRheSBvdmVyIHRoZSBsYXN0IHdlZWsvbW9udGgveWVhciwgZXRjLlxuICAgICAqXG4gICAgICogRWFjaCBtZXRyaWMga2luZCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBkaW1lbnNpb25zLCB0byBmdXJ0aGVyIHNwZWNpZnkgdGhlIG9yZyBwcm9wZXJ0eSBpdCBkZXNjcmliZXMuXG4gICAgICogRm9yIGV4YW1wbGUsIHRoZSBgVXNlckNvdW50YCBtZXRyaWNzIGhhdmUgYSBtZW1iZXJzaGlwIGRpbWVuc2lvbnMgdG8gc3BlY2lmeSB0aGUga2luZCBvZiB1c2VyIG1lbWJlcnNoaXBcbiAgICAgKiBpbiB0aGUgb3JnYW5pemF0aW9uIChcIk93bmVyXCIgdnMuIFwiTWVtYmVyXCIgdnMuIFwiQWxpZW5cIikuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInF1ZXJ5TWV0cmljc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYVwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzIHRoYXQgYXJlIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbixcbiAgICAgKiBpLmUuLCB0aG9zZSBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHNlc3Npb24gaWRlbnRpdHkgcGx1cyB0aG9zZSBpbiB3aGljaCB0aGUgY3VycmVudCB1c2VyXG4gICAgICogaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibWZhTGlzdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1mYUdldFwiXTtcbiAgICAvKipcbiAgICAgKiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqXG4gICAgICogQXBwcm92ZSBvciByZWplY3QgcmVxdWVzdCBhZnRlciBsb2dnaW5nIGluIHdpdGggQ3ViZVNpZ25lci5cbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudGx5LWxvZ2dlZCB1c2VyIGFzIGFuIGFwcHJvdmVyXG4gICAgICogb2YgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IG9mIHRoZSBbU3RhdHVzOjpSZXF1aXJlZEFwcHJvdmVyc10ga2luZC4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZlxuICAgICAqIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0b1xuICAgICAqIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZUNzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L2VtYWlsXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBhbiBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhbiBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgICAqXG4gICAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBFbWFpbCBPVFAuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1mYUVtYWlsSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSBhIEVtYWlsIE9UUCBNRkEgQXBwcm92YWwvUmVqZWN0aW9uLlxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIEVtYWlsIE9UUCBNRkEgQXBwcm92YWwvUmVqZWN0aW9uLlxuICAgICAqXG4gICAgICogVGhlIHJlcXVlc3Qgc2hvdWxkIGNvbnRhaW4gdGhlIGZ1bGwgSldUIG9idGFpbmVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlXG4gICAgICogcGFydGlhbCB0b2tlbiByZXR1cm5lZCBieSB0aGUgYG1mYV9lbWFpbF9pbml0YCBlbmRwb2ludCBhbmQgdGhlIHNpZ25hdHVyZVxuICAgICAqIGVtYWlsZWQgdG8gdGhlIHVzZXIgaXNzdWluZyB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyBhbiBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICogSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkO1xuICAgICAqIHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0byByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcIm1mYVZvdGVFbWFpbENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsL3JlamVjdGlvbiBwcm9jZXNzIG9mIGFuIE1GQSBSZXF1ZXN0IHVzaW5nIEZJRE8uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1mYUZpZG9Jbml0XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlRmlkb0NvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudCB1c2VyIGFzIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieVxuICAgICAqIHByb3ZpZGluZyBUT1RQIGNvZGUuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpc1xuICAgICAqIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlVG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21taS92My9tZXNzYWdlc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBwZW5kaW5nIE1NSSByZXF1ZXN0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHBlbmRpbmcgTU1JIHJlcXVlc3RzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTU1JIG1lc3NhZ2VzIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiBpZGVudGl0eSwgaS5lLixcbiAgICAgKiAtIGEgcm9sZSBzZXNzaW9uIGNhbiBhY2Nlc3Mgb25seSB0aGUgbWVzc2FnZXMgY3JlYXRlZCBieSB0aGF0IHJvbGVcbiAgICAgKiAtIGEgdXNlciBzZXNzaW9uIGNhbiBhY2Nlc3MgdGhlIG1lc3NhZ2VzIGNyZWF0ZWQgYnkgZWl0aGVyIHRoYXQgdXNlciBvciBhbnkgcm9sZSB3aGljaCB0aGUgdXNlciBpcyBhIG1lbWJlciBvZlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1taU1lc3NhZ2VMaXN0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbW1pL3YzL21lc3NhZ2VzL3ttc2dfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgYW4gTU1JIHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGFuIE1NSSByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYSBwZW5kaW5nIE1NSSByZXF1ZXN0IGJ5IGl0cyBJRC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJtbWlNZXNzYWdlR2V0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBNTUkgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gTU1JIHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFJlamVjdHMgYW4gZXhpc3RpbmcgTU1JIHJlcXVlc3QgYW5kIHRoZW4gZGVsZXRlcyBpdCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJtbWlNZXNzYWdlRGVsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbW1pL3YzL21lc3NhZ2VzL3ttc2dfaWR9L3JlamVjdFwiOiB7XG4gICAgLyoqXG4gICAgICogUmVqZWN0IGFuIE1NSSByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIFJlamVjdCBhbiBNTUkgcmVxdWVzdFxuICAgICAqXG4gICAgICogUmVqZWN0cyBhIHBlbmRpbmcgTU1JIHJlcXVlc3QuIFRoZSByZWNvcmQgb2YgdGhlIE1NSSByZXF1ZXN0IGlzIGtlcHQgaW5cbiAgICAgKiB0aGUgZGF0YWJhc2UgdW50aWwgaXQgZXhwaXJlcyBvciBpcyBleHBsaWNpdGx5IGRlbGV0ZWQuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSB1cGRhdGVkIHJlcXVlc3QgaW5mb3JtYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1taU1lc3NhZ2VSZWplY3RcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tbWkvdjMvbWVzc2FnZXMve21zZ19pZH0vc2lnblwiOiB7XG4gICAgLyoqXG4gICAgICogQXBwcm92ZSBhbmQgc2lnbiBhbiBNTUkgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlIGFuZCBzaWduIGFuIE1NSSByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBTaWducyBhIHBlbmRpbmcgcmVxdWVzdCB0aGF0IHdhcyBnZW5lcmF0ZWQgdGhyb3VnaCB0aGUgTU1JIEpTT04gUlBDIGVuZHBvaW50LlxuICAgICAqIFRoZSBzaWduYXR1cmUgaXMgc3RvcmVkIHdpdGggdGhlIHBlbmRpbmcgbWVzc2FnZSBhbmQgdGhlIHVwZGF0ZWQgcmVxdWVzdCBpbmZvIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogVGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JnYW5pemF0aW9uIHRoaXMgaXMgY2FsbGVkIGZyb20sXG4gICAgICogYW5kIHRoZSB1c2VyIHNob3VsZCBiZSB0aGUgb3duZXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgbWVzc2FnZSdzIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wibW1pTWVzc2FnZVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vYXV0aDIvdHdpdHRlclwiOiB7XG4gICAgLyoqXG4gICAgICogTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAgICogQGRlc2NyaXB0aW9uIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBhY3RzIGlkZW50aWNhbGx5IHRvIFR3aXR0ZXIncyBbYG9hdXRoMi90b2tlbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLnR3aXR0ZXIuY29tL2VuL2RvY3MvYXV0aGVudGljYXRpb24vYXBpLXJlZmVyZW5jZS90b2tlbikgZW5kcG9pbnQsXG4gICAgICogYnV0IGV4dGVuZHMgdGhlIG91dHB1dCB3aXRoIGFuIGBpZF90b2tlbmAuXG4gICAgICpcbiAgICAgKiBUaGlzIGBpZF90b2tlbmAgY2FuIHRoZW4gYmUgdXNlZCB3aXRoIGFueSBDdWJlU2lnbmVyIGVuZHBvaW50IHRoYXQgcmVxdWlyZXMgYW4gT0lEQyB0b2tlbi5cbiAgICAgKlxuICAgICAqID4gWyFJTVBPUlRBTlRdXG4gICAgICogPiBUaGlzIGVuZHBvaW50IHdpbGwgZmFpbCB1bmxlc3MgdGhlIG9yZyBpcyBjb25maWd1cmVkIHRvIGFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90d2l0dGVyYCBhbmQgY2xpZW50IElEIGJlaW5nIHVzZWQgZm9yIFR3aXR0ZXIuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm9hdXRoMlR3aXR0ZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBMb2dpbiB3aXRoIE9JRENcbiAgICAgKiBAZGVzY3JpcHRpb24gTG9naW4gd2l0aCBPSURDXG4gICAgICpcbiAgICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBzaWduZXIgc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIE1GQSBpcyByZXF1aXJlZCB3aGVuOlxuICAgICAqIC0gYW4gTUZBIHBvbGljeSBpcyBleHBsaWNpdGx5IGF0dGFjaGVkIHRvIHRoZSB1c2VyIGxvZ2dpbmcgaW5cbiAgICAgKiAoZS5nLiwgYW4gb3JnIG93bmVyIGNhbiBkbyB0aGF0IGF0IHVzZXIgY3JlYXRpb24gdGltZSB0byByZXF1aXJlIGNlcnRhaW4ga2luZCBvZiBNRkEpXG4gICAgICogLSB0aGUgdXNlciBoYXMgYXQgbGVhc3QgMSBNRkEgZmFjdG9yIGNvbmZpZ3VyZWRcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2lkY0F1dGhcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vaWRjL2VtYWlsLW90cFwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgbG9naW4gdmlhIGVtYWlsIHRva2VuXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGxvZ2luIHZpYSBlbWFpbCB0b2tlblxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlIChvZiB0aGUgZm9ybSBgaGVhZGVyLnBheWxvYWQuYCksIGFuZCBzZW5kcyB0aGUgc2lnbmF0dXJlIHRvIHRoZSB1c2VyJ3MgZW1haWwuXG4gICAgICogQ2xpZW50IGFwcGxpY2F0aW9ucyBjYW4gcmVjb25zdHJ1Y3QgdGhlIHRva2VuIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGBwYXJ0aWFsX3Rva2VuYCB3aXRoIHRoZSBzaWduYXR1cmUsIHByb2R1Y2luZyBhIHZhbGlkIE9JREMgdG9rZW4gb2YgdGhlIGZvcm0gYGhlYWRlci5wYXlsb2FkLnNpZ25hdHVyZWBcbiAgICAgKiBUaGUgdG9rZW4gY2FuIHRoZW4gYmUgdXNlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKiA+IFshSU1QT1JUQU5UXVxuICAgICAqID4gRm9yIHRoaXMgZW5kcG9pbnQgdG8gc3VjY2VlZCwgdGhlIG9yZyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG86XG4gICAgICogPiAxLiBBbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvZW1haWwtb3RwYCBhbmQgY2xpZW50IElEIGJlaW5nIHRoZSBPcmcgSURcbiAgICAgKiA+IDIuIEhhdmUgYW4gZW1haWwgc2VuZGVyIGNvbmZpZ3VyZWQgZm9yIE9UUHNcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZW1haWxPdHBBdXRoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vb2lkYy9zaXdlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKS5cbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgbG9naW4gdmlhIFNpZ24taW4gV2l0aCBFdGhlcmV1bSAoU0lXRSkuXG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGdlbmVyYXRlcyBhIGNoYWxsZW5nZSB3aGljaCBjYW4gYmUgYW5zd2VyZWQgKHZpYSB0aGUgY29ycmVzcG9uZGluZyBQQVRDSCBlbmRwb2ludClcbiAgICAgKiB0byBvYnRhaW4gYW4gT0lEQyB0b2tlbi4gVGhlIE9JREMgdG9rZW4gY2FuIHRoZW4gYmUgZXhjaGFuZ2VkIGZvciBhIHVzZXIgc2Vzc2lvbiB2aWEgdGhlIHN0YW5kYXJkXG4gICAgICogT0lEQyBhdXRoIHJvdXRlLlxuICAgICAqXG4gICAgICogPiBbIUlNUE9SVEFOVF1cbiAgICAgKiA+IEZvciB0aGlzIGVuZHBvaW50IHRvIHN1Y2NlZWQsIHRoZSBvcmcgbXVzdCBiZSBjb25maWd1cmVkIHRvOlxuICAgICAqID4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3Npd2VgIHdpdGggdGhlIE9yZyBJRCBhcyB0aGUgY2xpZW50IElEXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInNpd2VJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIENvbXBsZXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpXG4gICAgICpcbiAgICAgKiBJZiB0aGUgY2hhbGxlbmdlIChpc3N1ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgUE9TVCBlbmRwb2ludCkgaXMgYW5zd2VyZWQgY29ycmVjdGx5LCB0aGlzIGVuZHBvaW50XG4gICAgICogZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gdGhhdCBjYW4gdGhlbiBiZSBleGNoYW5nZWQgZm9yIGEgdXNlciBzZXNzaW9uIHZpYSB0aGUgc3RhbmRhcmQgT0lEQyBhdXRoIHJvdXRlLlxuICAgICAqXG4gICAgICogPiBbIUlNUE9SVEFOVF1cbiAgICAgKiA+IEZvciB0aGlzIGVuZHBvaW50IHRvIHN1Y2NlZWQsIHRoZSBvcmcgbXVzdCBiZSBjb25maWd1cmVkIHRvOlxuICAgICAqID4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3Npd2VgIHdpdGggdGhlIE9yZyBJRCBhcyB0aGUgY2xpZW50IElEXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJzaXdlQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vaWRjL3RlbGVncmFtXCI6IHtcbiAgICAvKipcbiAgICAgKiBBbGxvd3MgYSB1c2VyIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIHRoZSB0ZWxlZ3JhbSBBUEkgdXNpbmcgdGhlIHRnV2ViQXBwRGF0YSB2YWx1ZVxuICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgYSB1c2VyIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIHRoZSB0ZWxlZ3JhbSBBUEkgdXNpbmcgdGhlIHRnV2ViQXBwRGF0YSB2YWx1ZVxuICAgICAqIFRoZSB0b2tlbiBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgICAqIC0gVGhlIGBzdWJgIGZpZWxkIGlzIHRoZSB0ZWxlZ3JhbSB1c2VyIElEXG4gICAgICogLSBUaGUgYGlzc2AgZmllbGQgZGVwZW5kcyBvbiB0aGUgY2hvc2VuIGVudmlyb25tZW50OlxuICAgICAqIC0gYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90ZWxlZ3JhbS9wcm9kdWN0aW9uYCBmb3IgdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcbiAgICAgKiAtIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvdGVsZWdyYW0vdGVzdGAgZm9yIHRoZSB0ZXN0IGVudmlyb25tZW50XG4gICAgICogLSBUaGUgYGF1ZGAgZmllbGQgaXMgdGhlIHByb3ZpZGVkIHRlbGVncmFtIGJvdCBJRFxuICAgICAqIC0gVGhlIGBleHBgIGZpZWxkIGlzIGRlcml2ZWQgZnJvbSB0aGUgYGF1dGhfZGF0ZWAgZmllbGQgaW4gdGhlIHRlbGVncmFtIGRhdGFcbiAgICAgKlxuICAgICAqIEZhaWxzIGlmIHRoZSB0ZWxlZ3JhbSBkYXRhIGlzIGludmFsaWQgb3IgdGhlIHNpZ25hdHVyZSBpcyBpbnZhbGlkXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInRlbGVncmFtQXV0aFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L29yZ3NcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIE9yZ1xuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBvcmdhbml6YXRpb24uIFRoZSBuZXcgb3JnIGlzIGEgY2hpbGQgb2YgdGhlXG4gICAgICogY3VycmVudCBvcmcgYW5kIGluaGVyaXRzIGl0cyBrZXktZXhwb3J0IHBvbGljeS4gVGhlIG5ldyBvcmdcbiAgICAgKiBpcyBjcmVhdGVkIHdpdGggb25lIG93bmVyLCB0aGUgY2FsbGVyIG9mIHRoaXMgQVBJLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVPcmdcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBQb2xpY2llc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBvbGljaWVzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBwb2xpY2llcyBpbiB0aGUgT3JnLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RQb2xpY2llc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBQb2xpY3lcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgbmFtZWQgcG9saWN5IGluIHRoZSBvcmdhbml6YXRpb24uIFRoZSB1c2VyIG1ha2luZyB0aGUgcmVxdWVzdCBpcyB0aGVcbiAgICAgKiBvd25lciBvZiB0aGUgcG9saWN5LCBnaXZpbmcgdGhlbSBlZGl0IGFjY2VzcyB0byB0aGUgcG9saWN5IGFsb25nIHdpdGggdGhlIG9yZyBvd25lcnMuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVBvbGljeVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljaWVzL3twb2xpY3lfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBQb2xpY3lcbiAgICAgKlxuICAgICAqIERlbGV0ZSB0aGUgbmFtZWQgcG9saWN5IHdpdGggdGhlIGdpdmVuIG5hbWUgb3IgaWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlUG9saWN5XCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBQb2xpY3lcbiAgICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFBvbGljeVxuICAgICAqXG4gICAgICogVXBkYXRlcyB0aGUgcG9saWN5IHdpdGggdGhlIGdpdmVuIG5hbWUgb3IgaWQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVQb2xpY3lcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llcy97cG9saWN5X2lkfS9sb2dzXCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgUG9saWN5IExvZ3NcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFBvbGljeSBMb2dzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBsb2dzIGZvciB0aGUgZ2l2ZW4gcG9saWN5LCB3aXRoaW4gdGhlIGdpdmVuIHRpbWVmcmFtZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZ2V0UG9saWN5TG9nc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljaWVzL3twb2xpY3lfaWR9L3t2ZXJzaW9ufVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgUG9saWN5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBvciBsYXRlc3Qgb2YgYSBuYW1lZCBwb2xpY3kgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBvciBpZC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRQb2xpY3lcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY2llcy97cG9saWN5X2lkfS97dmVyc2lvbn0vaW52b2tlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbnZva2UgUG9saWN5XG4gICAgICogQGRlc2NyaXB0aW9uIEludm9rZSBQb2xpY3lcbiAgICAgKlxuICAgICAqIEludm9rZXMgdGhlIFtOYW1lZFBvbGljeV0gd2l0aCB0aGUgZ2l2ZW4gSUQgd2l0aCB0aGUgZ2l2ZW4gcmVxdWVzdCBpbmZvcm1hdGlvbi5cbiAgICAgKiBJdCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgV2FzbSBwb2xpY2llcy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52b2tlUG9saWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L2J1Y2tldHNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgQnVja2V0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEJ1Y2tldHNcbiAgICAgKlxuICAgICAqIExpc3QgYXZhaWxhYmxlIG1ldGEgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHBvbGljeSBLViBzdG9yZSBidWNrZXRzIGluIHRoZSBvcmcuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFBvbGljeUJ1Y2tldHNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9wb2xpY3kvYnVja2V0cy97YnVja2V0X25hbWV9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgQnVja2V0XG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBCdWNrZXRcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIG1ldGEgaW5mb3JtYXRpb24gb2YgYSBwb2xpY3kgS1Ygc3RvcmUgYnVja2V0LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFBvbGljeUJ1Y2tldFwiXTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgQnVja2V0XG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBCdWNrZXRcbiAgICAgKlxuICAgICAqIFVwZGF0ZXMgbWV0YSBpbmZvcm1hdGlvbiBmb3IgYW4gZXhpc3RpbmcgcG9saWN5IEtWIHN0b3JlIGJ1Y2tldC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZVBvbGljeUJ1Y2tldFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljeS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUG9saWN5IEltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFBvbGljeSBJbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3IgZW5jcnlwdGluZyBkYXRhIHJlbGF0ZWQgdG8gV2FzbVxuICAgICAqIHBvbGljaWVzIChlLmcuLCBwb2xpY3kgc2VjcmV0cykuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiY3JlYXRlUG9saWN5SW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L3NlY3JldHNcIjoge1xuICAgIC8qKlxuICAgICAqIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgdGhlIGtleXMgZm9yIHRoZSBzZWNyZXRzLCBvbWl0dGluZyB0aGUgdmFsdWVzLlxuICAgICAqIFRoZSB2YWx1ZXMgYXJlIHNlY3JldCBhbmQgYXJlIG5vdCBhY2Nlc3NpYmxlIG91dHNpZGUgV2FzbSBwb2xpY3kgZXhlY3V0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFBvbGljeVNlY3JldHNcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIG9yZy1sZXZlbCBwb2xpY3kgc2VjcmV0c1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgb3JnLWxldmVsIHBvbGljeSBzZWNyZXRzXG4gICAgICpcbiAgICAgKiBUaGUgcHJvdmlkZWQgc2VjcmV0cyB3aWxsIHJlcGxhY2UgYW55IGV4aXN0aW5nIG9yZy1sZXZlbCBzZWNyZXRzLlxuICAgICAqIEl0IGZhaWxzIGlmIHRoZSBzZWNyZXRzIHdlcmVuJ3QgcHJldmlvdXNseSBjcmVhdGVkLlxuICAgICAqXG4gICAgICogTXVzdCBiZSBwZXJtaXR0ZWQgYnkgdGhlIHBvbGljeSBzZWNyZXQncyBlZGl0IHBvbGljeSBpZiBzZXQsIGFuZCB0aGUgb3JnJ3MgZWRpdCBwb2xpY3kgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlUG9saWN5U2VjcmV0c1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3BvbGljeS9zZWNyZXRzL3tzZWNyZXRfbmFtZX1cIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAgICogTXVzdCBiZSBwZXJtaXR0ZWQgYnkgdGhlIHBvbGljeSBzZWNyZXQncyBlZGl0IHBvbGljeSBpZiBzZXQsIGFuZCB0aGUgb3JnJ3MgZWRpdCBwb2xpY3kgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcInNldFBvbGljeVNlY3JldFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldC5cbiAgICAgKiBNdXN0IGJlIHBlcm1pdHRlZCBieSB0aGUgcG9saWN5IHNlY3JldCdzIGVkaXQgcG9saWN5IGlmIHNldCwgYW5kIHRoZSBvcmcncyBlZGl0IHBvbGljeSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlUG9saWN5U2VjcmV0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcG9saWN5L3dhc21cIjoge1xuICAgIC8qKlxuICAgICAqIFVwbG9hZCBXYXNtIFBvbGljeVxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGxvYWQgV2FzbSBQb2xpY3lcbiAgICAgKlxuICAgICAqIFJldHVybnMgYSBzaWduZWQgVVJMIGZvciB1cGxvYWRpbmcgYSB3YXNtIHBvbGljeSB0byBDdWJlU2lnbmVyLiBUaGUgcG9saWN5IHdpbGwgYmVcbiAgICAgKiBkZWxldGVkIGlmIG5vdCBhdHRhY2hlZCB0byBhIFtOYW1lZFBvbGljeV0gc29vbiBhZnRlciB0aGUgdXBsb2FkIGhhcyBiZWVuIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXBsb2FkV2FzbVBvbGljeVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFJvbGVzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZXNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uIHRoYXQgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIGFjY2Vzcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZXNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFJvbGVcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uIFVubGVzcyB0aGUgbG9nZ2VkLWluIHVzZXJcbiAgICAgKiBpcyB0aGUgb3duZXIsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFJvbGVcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0Um9sZVwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUm9sZVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLlxuICAgICAqXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgcm9sZSAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVgIHNjb3BlKS5cbiAgICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5YCBzY29wZSkuXG4gICAgICogVXBkYXRlcyB0aGUgcm9sZSdzIGVkaXQgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6ZWRpdFBvbGljeWAgc2NvcGUpLlxuICAgICAqXG4gICAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9hZGRfa2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIEtleXNcbiAgICAgKlxuICAgICAqIEFkZHMgYSBsaXN0IG9mIGV4aXN0aW5nIGtleXMgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgb3duZXIgaXMgYWxsb3dlZCB0byBhZGQgdGhlaXIga2V5IHRvIGFueSByb2xlIHRoYXQgdGhleSBhcmUgaW4uXG4gICAgICpcbiAgICAgKiBJbiBcIm9yZyBjdXN0b2R5XCIgbW9kZWwgb25seSwgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBhZGQgYW55IGtleSB0byBhbnkgcm9sZS5cbiAgICAgKlxuICAgICAqIEluIGFsbCBjYXNlczogdGhlIHJvbGUncyBlZGl0IHBvbGljeSwgYXMgd2VsbCBhcyB0aGUgZWRpdCBwb2xpY3kgb2YgZWFjaCBvZiB0aGUga2V5cywgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKlxuICAgICAqIEVhY2ggcmVxdWVzdCB0byB0aGlzIGVuZHBvaW50IGNhbiBhZGQsIGF0IG1heGltdW0sIDMyIGtleXMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiYWRkS2V5c1RvUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9hZGRfdXNlci97dXNlcl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEFkZCBVc2VyXG4gICAgICogQGRlc2NyaXB0aW9uIEFkZCBVc2VyXG4gICAgICpcbiAgICAgKiBBZGRzIGFuIGV4aXN0aW5nIHVzZXIgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gYWRkIHVzZXJzIHRvIGEgcm9sZS5cbiAgICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJhZGRVc2VyVG9Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2F0dGVzdFwiOiB7XG4gICAgLyoqXG4gICAgICogQXR0ZXN0IHRvIFJvbGUgUHJvcGVydGllc1xuICAgICAqIEBkZXNjcmlwdGlvbiBBdHRlc3QgdG8gUm9sZSBQcm9wZXJ0aWVzXG4gICAgICpcbiAgICAgKiBUaGUgcmVzcG9uc2UgaXMgYSBKV1Qgd2hvc2UgY2xhaW1zIGFyZSB0aGUgcmVxdWVzdGVkIHJvbGUgcHJvcGVydGllcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhdHRlc3RSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZSBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBLZXlzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBrZXlzIGluIGEgcm9sZS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZUtleXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0va2V5cy97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IGEgS2V5IGluIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGEgS2V5IGluIFJvbGVcbiAgICAgKlxuICAgICAqIFJldHVybnMgdGhlIGtleS1pbi1yb2xlIGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIGtleSBhbmQgcm9sZS4gSWYgYGRldGFpbHNgIGlzIHNldCB0byBgdHJ1ZWAsXG4gICAgICogdGhpcyBlbmRwb2ludCByZXR1cm5zIGRldGFpbGVkIGtleSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRSb2xlS2V5XCJdO1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIEtleVxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGtleSBmcm9tIGEgcm9sZS5cbiAgICAgKlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIGtleXMgZnJvbSBhIHJvbGUuXG4gICAgICogQWRkaXRpb25hbGx5LCBib3RoIHRoZSByb2xlJ3MgYW5kIHRoZSBrZXkncyBlZGl0IHBvbGljeSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJlbW92ZUtleUZyb21Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3Rva2Vuc1wiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFRva2VuXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBUb2tlblxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBhY2Nlc3MgdG9rZW4gZm9yIGEgZ2l2ZW4gcm9sZSAodG8gYmUgdXNlZCBhcyBcIkFQSSBLZXlcIiBmb3IgYWxsIHNpZ25pbmcgYWN0aW9ucykuXG4gICAgICogVGhlIGByZXN0cmljdGVkX2FjdGlvbnNgIGZpZWxkIG9uIHRoZSBbUm9sZV0gZGV0ZXJtaW5lcyB0aGUgbWVtYmVyc2hpcCByb2xlIHRoYXQgaXMgcmVxdWlyZWQgdG9cbiAgICAgKiBjcmVhdGUgdG9rZW5zLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlVG9rZW5cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdHhcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgICAqXG4gICAgICogUmV0dXJucyBhIHNvcnRlZCwgcGFnaW5hdGVkIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIHNpZ25lZCBieSB0aGUgZ2l2ZW4gcm9sZSxcbiAgICAgKiBvcmRlcmVkIGZyb20gbW9zdCByZWNlbnQgZmlyc3QuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdEhpc3RvcmljYWxSb2xlVHhcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdXNlcnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZSBVc2Vycy5cbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIFVzZXJzLlxuICAgICAqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdXNlcnMgd2hvIGhhdmUgYWNjZXNzIHRvIGEgcm9sZS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZVVzZXJzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L3VzZXJzL3t1c2VyX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogUmVtb3ZlIFVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIFVzZXJcbiAgICAgKlxuICAgICAqIFJlbW92ZXMgYW4gZXhpc3RpbmcgdXNlciBmcm9tIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAgICpcbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSB1c2VycyBmcm9tIGEgcm9sZS5cbiAgICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZW1vdmVVc2VyRnJvbVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9ycGNcIjoge1xuICAgIC8qKlxuICAgICAqIEhpZ2gtbGV2ZWwgUlBDIGVuZHBvaW50LlxuICAgICAqIEBkZXNjcmlwdGlvbiBIaWdoLWxldmVsIFJQQyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicnBjQXBpXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc2Vzc2lvblwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBzZXNzaW9uc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHNlc3Npb25zXG4gICAgICpcbiAgICAgKiBJZiBubyBxdWVyeSBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZCwgYWxsIGFjdGl2ZSBzZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnQgdXNlciBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBJZiBhIGByb2xlYCBxdWVyeSBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQsIGFsbCBhY3RpdmUgc2Vzc2lvbnMgZm9yIHRoZSBzZWxlY3RlZCByb2xlIGFyZSByZXR1cm5lZFxuICAgICAqIChhc3NlcnRpbmcgZmlyc3QgdGhhdCB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9ucyB0byByZWFkIHNlc3Npb25zIGZvciB0aGF0IHJvbGUpLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RTZXNzaW9uc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgc2Vzc2lvbiwgc2lsZW50bHkgdHJ1bmNhdGluZyByZXF1ZXN0ZWQgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZXMgdG8gYmUgYXRcbiAgICAgKiBtb3N0IHJlcXVlc3RvcidzIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWUsIHJlc3BlY3RpdmVseS4gVG8gZXh0ZW5kIHRoZSByZXF1ZXN0ZWQgbGlmZXRpbWVzIHBhc3RcbiAgICAgKiB0aGUgcmVxdWVzdG9yJ3MsIHNldCB0aGUgYGV4dGVuZF9saWZldGltZXNgIGZsYWcgaW4gdGhlIHJlcXVlc3QgYm9keSAoaW4gd2hpY2ggY2FzZSBNRkEgd2lsbFxuICAgICAqIGJlIHJlcXVpcmVkKS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlU2Vzc2lvblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBBTEwgZXhpc3RpbmcgdXNlciBvciByb2xlIHNlc3Npb24ocylcbiAgICAgKlxuICAgICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgZXhpc3Rpbmcgc2Vzc2lvbnMsIHByZXZlbnRpbmcgdGhlbSBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkLlxuICAgICAqXG4gICAgICogSWYgbm8gcXVlcnkgcGFyYW1zIGFyZSBwcm92aWRlZCwgKipBTEwqKiBzZXNzaW9ucyBmb3IgdGhlICoqQ1VSUkVOVCBVU0VSKiogYXJlIHJldm9rZWRcbiAgICAgKiAodG8gcmV2b2tlIGp1c3QgdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uLCB1c2UgYERFTEVURSAvdjAvb3JnLzxvcmdfaWQ+L3Nlc3Npb24vc2VsZmApXG4gICAgICpcbiAgICAgKiBJZiBhIGByb2xlYCBxdWVyeSBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQsICoqQUxMKiogc2Vzc2lvbiBmb3IgKipUSEFUIFJPTEUqKiBhcmUgcmV2b2tlZFxuICAgICAqIChpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9ucyB0byByZXZva2Ugc2Vzc2lvbnMgZm9yIHRoZSByb2xlKS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VTZXNzaW9uc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb24vc2VsZlwiOiB7XG4gICAgLyoqXG4gICAgICogUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIHRoZSBjdXJyZW50IHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZUN1cnJlbnRTZXNzaW9uXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc2Vzc2lvbi97c2Vzc2lvbl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0U2Vzc2lvblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgYSBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBhIHNlc3Npb25cbiAgICAgKlxuICAgICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgYW4gZXhpc3Rpbmcgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlU2Vzc2lvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3NvbGFuYS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgU29sYW5hIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wic29sYW5hU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3N1aS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIGEgc2VyaWFsaXplZCBTVUkgdHJhbnNhY3Rpb24uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gYSBzZXJpYWxpemVkIFNVSSB0cmFuc2FjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzdWlTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdGVuZGVybWludC9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIGEgdGVuZGVybWludCBtZXNzYWdlLlxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgdGVuZGVybWludCBtZXNzYWdlLlxuICAgICAqXG4gICAgICogU2lnbnMgdGhlIGdpdmVuIGJhc2UtNjQgZW5jb2RlZCB2b3RlIG9yIHByb3Bvc2FsIHdpdGggdGhlIGdpdmVuIHRlbmRlcm1pbnQga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ0ZW5kZXJtaW50U2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Rva2VuL2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFRva2VuLUFjY2Vzc2libGUgS2V5c1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIHRoZSBrZXlzIHRoYXQgYSB1c2VyIG9yIHJvbGUgc2Vzc2lvbiBjYW4gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RUb2tlbktleXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lXCI6IHtcbiAgICAvKipcbiAgICAgKiBVc2VyIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhYm91dE1lXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9lbWFpbFwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgUmVzZXQgVmVyaWZpZWQgRW1haWwgRmxvd1xuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJSZXNldEVtYWlsSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSBhIFJlc2V0IFZlcmlmaWVkIEVtYWlsIEZsb3dcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyUmVzZXRFbWFpbENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9leHBvcnRcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRMaXN0XCJdO1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFRoaXMgc3RhcnRzIGEgZGVsYXkgKHdob3NlIGxlbmd0aCBpcyBkZXRlcm1pbmVkIGJ5IE9yZy13aWRlIHNldHRpbmdzKVxuICAgICAqIGJlZm9yZSBleHBvcnQgY2FuIGJlIGNvbXBsZXRlZCwgYW5kIHJldHVybnMgYSB0aWNrZXQgdGhhdCBjYW4gYmUgdXNlZFxuICAgICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAgICpcbiAgICAgKiBPbmx5IG9uZSB1c2VyLWV4cG9ydCByZXF1ZXN0IGNhbiBiZSBhY3RpdmUgZm9yIGEgZ2l2ZW4ga2V5LiBJZiB0aGVyZVxuICAgICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICAgKiBjcmVhdGUgYSBuZXcgcmVxdWVzdCwgZmlyc3QgZGVsZXRlIHRoZSBleGlzdGluZyBvbmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckV4cG9ydERlbGV0ZVwiXTtcbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICAgKiB0aGUgYHVzZXJfZXhwb3J0X2luaXRgIEFQSSwgYW5kIG9ubHkgd2l0aGluIHRoZSBzdWJzZXF1ZW50IGV4cG9ydCB3aW5kb3dcbiAgICAgKiAoaS5lLiwgYWZ0ZXIgdGhlIGV4cG9ydCBkZWxheSBoYXMgcGFzc2VkIGFuZCBiZWZvcmUgdGhlIHJlcXVlc3QgaGFzIGV4cGlyZWQpLlxuICAgICAqXG4gICAgICogVG8gY2hlY2sgb24gdGhlIHN0YXR1cyBvZiBhbiBleHBvcnQgcmVxdWVzdCwgc2VlIHRoZSBgdXNlcl9leHBvcnRfbGlzdGAgQVBJLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlckV4cG9ydENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleS5cbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXkuXG4gICAgICpcbiAgICAgKiBJZiBhIGRpc2NvdmVyYWJsZSBrZXkgaXMgcmVxdWVzdGVkLCB1c2VyIHZlcmlmaWNhdGlvbiAoUElOKSBpcyByZXF1aXJlZC5cbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVnaXN0ZXJGaWRvSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkby97Zmlkb19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgRklETyBrZXlcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgYSBGSURPIGtleSBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgdGhlIGtleSBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckRlbGV0ZUZpZG9cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgICAqXG4gICAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyUmVzZXRUb3RwSW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgVE9UUFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgVE9UUFxuICAgICAqXG4gICAgICogRGVsZXRlcyBUT1RQIGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiBUT1RQIGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJ1c2VyRGVsZXRlVG90cFwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlclJlc2V0VG90cENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwL3ZlcmlmeVwiOiB7XG4gICAgLyoqXG4gICAgICogVmVyaWZ5IFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJWZXJpZnlUb3RwXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAgICpcbiAgICAgKiBJZiBhIHF1ZXJ5IGlzIGRlZmluZWQsIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG9ubHkgdGhlIHVzZXJzIHdob3NlIG5hbWUgb3JcbiAgICAgKiBlbWFpbCBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcuIE5PVEUgdGhhdCBpZiBwYWdpbmF0aW9uIGlzIHVzZWQgYW5kIGEgcGFnZVxuICAgICAqIGxpbWl0IGlzIHNldCwgdGhlIHJldHVybmVkIHJlc3VsdCBzZXQgbWF5IGNvbnRhaW4gRkVXRVIgZWxlbWVudHMgdGhhbiB0aGVcbiAgICAgKiByZXF1ZXN0ZWQgcGFnZSBsaW1pdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0VXNlcnNJbk9yZ1wiXTtcbiAgICAvKipcbiAgICAgKiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZU9pZGNVc2VyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMvZW1haWwve2VtYWlsfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IHVzZXIgYnkgZW1haWwuXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCB1c2VyIGJ5IGVtYWlsLlxuICAgICAqXG4gICAgICogVGhlIHNlYXJjaCBpbmNsdWRlcyBhbGwgdXNlcnMgYW5kIHRoZWlyIHRoaXJkLXBhcnR5IGlkZW50aXRpZXMuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0VXNlckluT3JnQnlFbWFpbFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzL29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlT2lkY1VzZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vycy9vaWRjL3tpc3N9L3tzdWJ9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgYSB1c2VyIGJ5IHRoZWlyIE9JREMgaWRlbnRpdHlcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGEgdXNlciBieSB0aGVpciBPSURDIGlkZW50aXR5XG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgYSB1c2VyIGluIHRoZSBvcmdhbml6YXRpb24gYnkgdGhlaXIgT0lEQyBpc3N1ZXIgYW5kIHN1YmplY3QuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0VXNlckluT3JnQnlPaWRjXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMvcmVzZXRfbWZhXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIE1GQSByZXNldCBmb3IgdXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIE1GQSByZXNldCBmb3IgdXNlclxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJyZXNldE1lbWJlck1mYVwiXTtcbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSBNRkEgcmVzZXQgZm9yIHVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJjb21wbGV0ZVJlc2V0TWVtYmVyTWZhXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMve3VzZXJfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgdXNlciBieSBpZFxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBpZFxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldFVzZXJJbk9yZ1wiXTtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZVVzZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vycy97dXNlcl9pZH0vbWVtYmVyc2hpcFwiOiB7XG4gICAgLyoqXG4gICAgICogVXBkYXRlIGEgdXNlcidzIG1lbWJlcnNoaXAgaW4gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgYSB1c2VyJ3MgbWVtYmVyc2hpcCBpbiB0aGUgb3JnXG4gICAgICpcbiAgICAgKiBFbmFibGUvZGlzYWJsZSBhbm90aGVyIHVzZXIgaW4gdGhlIG9yZywgb3IgY2hhbmdlIHRoZWlyIG1lbWJlcnNoaXAgcm9sZS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZVVzZXJNZW1iZXJzaGlwXCJdO1xuICB9O1xuICBcIi92MC9wYXNza2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBMb2dpbiB3aXRoIFBhc3NrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAgICpcbiAgICAgKiBUaGUgcmVzcG9uc2UgY29udGFpbnMgYSBGSURPIGNoYWxsZW5nZSB0aGF0IHRoZSBjbGllbnQgbXVzdCBhbnN3ZXIgd2l0aCBhbnkgb2YgdGhlaXJcbiAgICAgKiBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuICBUaGUgYW5zd2VyIHNob3VsZCBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBQQVRDSCByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJwYXNza2V5QXV0aEluaXRcIl07XG4gICAgLyoqXG4gICAgICogQ29tcGxldGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgICAqXG4gICAgICogVGhlIHJlcXVlc3Qgc2hvdWxkIGNvbnRhaW4gYW4gYW5zd2VyIHRvIHRoZSBjaGFsbGVuZ2UgaXNzdWVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFBPU1QgcmVxdWVzdC5cbiAgICAgKiBUaGUgY2hhbGxlbmdlIG1heSBiZSBhbnN3ZXJlZCB3aXRoIGFueSBvZiB0aGUgdXNlcidzIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFsczsgaWYgdGhlIGNyZWRlbnRpYWxcbiAgICAgKiBpbmNsdWRlZCBpbiB0aGUgYW5zd2VyIGlzIHJlZ2lzdGVyZWQgd2l0aCBhIHVzZXIgYW5kIGFuIG9yZ2FuaXphdGlvbiwgdGhlIHJlc3BvbnNlIHdpbGwgY29udGFpblxuICAgICAqIGEgQ3ViZVNpZ25lciBzZXNzaW9uICh3aXRoIHRoZSBwYXJhbWV0ZXJzIHN1cHBsaWVkIGluIHRoZSBwcmV2aW91cyBQT1NUIHJlcXVlc3QpIGZvciB0aGF0IHVzZXJcbiAgICAgKiBpbiB0aGF0IG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInBhc3NrZXlBdXRoQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvbWUvZmlkb1wiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQT1NUIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wicmVnaXN0ZXJGaWRvSW5pdExlZ2FjeVwiXTtcbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBERVBSRUNBVEVELiBVc2UgYFBBVENIIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0NvbXBsZXRlTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQT1NUIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAgICpcbiAgICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlc2V0VG90cEluaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqXG4gICAgICogREVQUkVDQVRFRC4gVXNlIGBQQVRDSCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cGAgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInJlc2V0VG90cENvbXBsZXRlTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL3RvdHAvdmVyaWZ5XCI6IHtcbiAgICAvKipcbiAgICAgKiBWZXJpZnkgVE9UUFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAgICpcbiAgICAgKiBERVBSRUNBVEVELiBVc2UgYFBPU1QgL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHAvdmVyaWZ5YCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widmVyaWZ5VG90cExlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9vcmdzXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYWxsIHRoZSBvcmdzIHRoZSB1c2VyIGlzIGEgcGFydCBvZlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYWxsIHRoZSBvcmdzIHRoZSB1c2VyIGlzIGEgcGFydCBvZlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcInVzZXJPcmdzXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vYmluYW5jZS9zaWduL3ttYXRlcmlhbF9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gQmluYW5jZSBSUEMgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEJpbmFuY2UgUlBDIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgdHlwZWQgW2BCaW5hbmNlUnBjYF0gcmVxdWVzdCB3aXRoIHRoZSBbYEtleVR5cGU6OkVkMjU1MTlCaW5hbmNlQXBpYF1cbiAgICAgKiBrZXkgaWRlbnRpZmllZCBieSBgbWF0ZXJpYWxfaWRgLiBUaGUgc2lnbmVyIFVSTC1lbmNvZGVzIHRoZSBpbm5lciByZXF1ZXN0LFxuICAgICAqIGFwcGVuZHMgQmluYW5jZSdzIGByZWN2V2luZG93YCBhbmQgYHRpbWVzdGFtcGAgcGFyYW1ldGVycywgc2lnbnMgdGhlXG4gICAgICogcmVzdWx0aW5nIHF1ZXJ5LCBhbmQgcmV0dXJucyB0aGUgZnVsbCBxdWVyeSBzdHJpbmcgcmVhZHkgdG8gYmUgc3VibWl0dGVkXG4gICAgICogdG8gQmluYW5jZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiYmluYW5jZVNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ibG9iL3NpZ24ve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gUmF3IEJsb2JcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBSYXcgQmxvYlxuICAgICAqXG4gICAgICogU2lnbnMgYW4gYXJiaXRyYXJ5IGJsb2Igd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKlxuICAgICAqIC0gRUNEU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBhcyBiaWctZW5kaWFuIHIgYW5kIHMgcGx1cyByZWNvdmVyeS1pZFxuICAgICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgICAqXG4gICAgICogLSBFZERTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGluIHRoZSBzdGFuZGFyZCBmb3JtYXQuXG4gICAgICpcbiAgICAgKiAtIEJMUyBzaWduYXR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoZSBibG9iLXNpZ24gZW5kcG9pbnQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImJsb2JTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vY3ViZTNzaWduZXIvaGVhcnRiZWF0XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZWNvcmQgaGVhcnRiZWF0XG4gICAgICogQGRlc2NyaXB0aW9uIFJlY29yZCBoZWFydGJlYXRcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgaXMgY2FsbGVkIGJ5IHRoZSBjdWJlM3NpZ25lciBwcm94eSB0byByZWNvcmQgdmFyaW91cyBtZXRyaWNzIHRvIENsb3VkV2F0Y2guXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImN1YmUzc2lnbmVySGVhcnRiZWF0XCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgICAqXG4gICAgICogU2lnbnMgYW4gRXRoZXJldW0gKGFuZCBvdGhlciBFVk0pIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqIFJldHVybnMgYW4gUkxQLWVuY29kZWQgdHJhbnNhY3Rpb24gd2l0aCBFSVAtMTU1IHNpZ25hdHVyZS5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJldGgxU2lnblwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDIvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBWYWxpZGF0b3IgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBTaWducyBhbiBldGgyIHZhbGlkYXRvciByZXF1ZXN0IHdpdGggYSBnaXZlbiBCTFMga2V5LlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImV0aDJTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi9zdGFrZVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgICAqXG4gICAgICogU2lnbnMgYSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdpdGggYSBgdmFsaWRhdG9yX2tleWAuIElmIGB2YWxpZGF0b3Jfa2V5YCBpcyBzZXQgdG8gYSBwcmVnZW5lcmF0ZWQga2V5LCB3ZSB1c2UgdGhlXG4gICAgICogcHJvdmlkZWQgdmFsaWRhdG9yIGtleS4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhIG5ldyBCTFMga2V5LlxuICAgICAqXG4gICAgICogV2hlbiB1c2luZyBhIHByZWdlbmVyYXRlZCBrZXksIHRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZVxuICAgICAqIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInN0YWtlXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi91bnN0YWtlL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgICAqXG4gICAgICogSGFuZGxlIHVuc3Rha2luZyByZXF1ZXN0LCBwcm9kdWNpbmcgYSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZVxuICAgICAqIHRoYXQgY2FuIGJlIHBvc3RlZCBkaXJlY3RseSB0byB0aGUgQmVhY29uIGNoYWluLlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVuc3Rha2VcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS90b2tlbi9yZWZyZXNoXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInNpZ25lclNlc3Npb25SZWZyZXNoXCJdO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSB3ZWJob29rcyA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IGludGVyZmFjZSBjb21wb25lbnRzIHtcbiAgc2NoZW1hczoge1xuICAgIEFjY2VwdGVkUmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERpZmZlcmVudCByZXNwb25zZXMgd2UgcmV0dXJuIGZvciBzdWNjZXNzIHN0YXR1cyBjb2Rlcy4gKi9cbiAgICBBY2NlcHRlZFZhbHVlOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIFNpZ25EcnlSdW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbkRyeVJ1bkFyZ3NcIl07XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBCaW5hbmNlRHJ5UnVuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VEcnlSdW5BcmdzXCJdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTWZhUmVxdWlyZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWlyZWRBcmdzXCJdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQWNjZXB0ZWRWYWx1ZUNvZGU6IFwiU2lnbkRyeVJ1blwiIHwgXCJCaW5hbmNlRHJ5UnVuXCIgfCBcIk1mYVJlcXVpcmVkXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERldGVybWluZXMgd2hvIGNvbnRyb2xzIHRoZSBrZXlzIHdpdGhpbiBhbiBvcmdcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEFjY2Vzc01vZGVsOiBcIlVzZXJcIiB8IFwiT3JnXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9uZSBhc3NldCBiYWxhbmNlIGVudHJ5IGluIFtgQWNjb3VudEluZm9SZXNwb25zZTo6YmFsYW5jZXNgXS4gRGlzdGluY3QgZnJvbVxuICAgICAqIFtgU3ViQWNjb3VudEFzc2V0YF0gYmVjYXVzZSB0aGUgc3BvdC1hY2NvdW50IHNjaGVtYSBsYWNrcyB0aGUgYGZyZWV6ZWAgYW5kXG4gICAgICogYHdpdGhkcmF3aW5nYCBmaWVsZHMuXG4gICAgICovXG4gICAgQWNjb3VudEJhbGFuY2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXNzZXQgc3ltYm9sIChlLmcuIGBcIlVTRFRcImAsIGBcIkJUQ1wiYCkuICovXG4gICAgICBhc3NldDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBdmFpbGFibGUgYmFsYW5jZS4gKi9cbiAgICAgIGZyZWU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFsYW5jZSBsb2NrZWQgaW4gb3BlbiBvcmRlcnMuICovXG4gICAgICBsb2NrZWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBgR0VUIC9hcGkvdjMvYWNjb3VudGAuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIFNwb3QgYWNjb3VudCBpbmZvIGZvciB3aGljaGV2ZXIgYWNjb3VudCB0aGUgc2lnbmluZyBrZXlcbiAgICAgKiBhdXRoZW50aWNhdGVzIGFzIChtYXN0ZXIgb3Igc3ViKS5cbiAgICAgKi9cbiAgICBBY2NvdW50SW5mb1JlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIGB0cnVlYCwgdGhlIHJlc3BvbnNlIG9taXRzIGFzc2V0cyB3aXRoIGFsbC16ZXJvIGJhbGFuY2VzLiBEZWZhdWx0cyB0b1xuICAgICAgICogYGZhbHNlYCAoQmluYW5jZSdzIGRlZmF1bHQpLlxuICAgICAgICovXG4gICAgICBvbWl0WmVyb0JhbGFuY2VzPzogYm9vbGVhbiB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIGJ5IGBjc19iaW5hbmNlQWNjb3VudEluZm9gLiAqL1xuICAgIEFjY291bnRJbmZvUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWNjb3VudCB0eXBlLCBlLmcuIGBcIlNQT1RcImAuIExlZnQgYXMgYFN0cmluZ2AgZm9yIGZvcndhcmQgY29tcGF0aWJpbGl0eS4gKi9cbiAgICAgIGFjY291bnRUeXBlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9uZSBlbnRyeSBwZXIgYXNzZXQuIEFmZmVjdGVkIGJ5IHRoZSBgb21pdF96ZXJvX2JhbGFuY2VzYCByZXF1ZXN0IGZsYWcuICovXG4gICAgICBiYWxhbmNlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NvdW50QmFsYW5jZVwiXVtdO1xuICAgICAgYnJva2VyZWQ6IGJvb2xlYW47XG4gICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgYnV5ZXJDb21taXNzaW9uOiBudW1iZXI7XG4gICAgICBjYW5EZXBvc2l0OiBib29sZWFuO1xuICAgICAgY2FuVHJhZGU6IGJvb2xlYW47XG4gICAgICBjYW5XaXRoZHJhdzogYm9vbGVhbjtcbiAgICAgIGNvbW1pc3Npb25SYXRlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21taXNzaW9uUmF0ZXNcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYWtlciBjb21taXNzaW9uLCBpbiBiYXNpcyBwb2ludHMgKGUuZy4gYDEwYCA9IDAuMSUpLiBTdXBlcnNlZGVkIGJ5XG4gICAgICAgKiBbYEFjY291bnRJbmZvUmVzcG9uc2U6OmNvbW1pc3Npb25fcmF0ZXNgXSBmb3IgZnJhY3Rpb25hbCByYXRlcy5cbiAgICAgICAqL1xuICAgICAgbWFrZXJDb21taXNzaW9uOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFBlcm1pc3Npb24gZmxhZ3MsIGUuZy4gYFtcIlNQT1RcIiwgXCJNQVJHSU5cIl1gLiAqL1xuICAgICAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICAgICAgcHJldmVudFNvcjogYm9vbGVhbjtcbiAgICAgIHJlcXVpcmVTZWxmVHJhZGVQcmV2ZW50aW9uOiBib29sZWFuO1xuICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgIHNlbGxlckNvbW1pc3Npb246IG51bWJlcjtcbiAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICB0YWtlckNvbW1pc3Npb246IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEFjY291bnQgdXNlciBpZC5cbiAgICAgICAqL1xuICAgICAgdWlkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBMYXN0IGFjY291bnQgdXBkYXRlIHRpbWUgKG1zIHNpbmNlIGVwb2NoKS5cbiAgICAgICAqL1xuICAgICAgdXBkYXRlVGltZTogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdhbGxldCB0eXBlIHVzZWQgYXMgdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBvZiBhIFtgVW5pdmVyc2FsVHJhbnNmZXJSZXF1ZXN0YF0uXG4gICAgICpcbiAgICAgKiBTZXJpYWxpemVzIHRvIHRoZSBTQ1JFQU1JTkdfU05BS0VfQ0FTRSBzdHJpbmdzIEJpbmFuY2UgZXhwZWN0cy4gVGhlIGRlZmF1bHRcbiAgICAgKiBpcyBbYEFjY291bnRUeXBlOjpTcG90YF0uXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBY2NvdW50VHlwZTogXCJTUE9UXCIgfCBcIlVTRFRfRlVUVVJFXCIgfCBcIkNPSU5fRlVUVVJFXCIgfCBcIk1BUkdJTlwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBhZGQgT0lEQyBpZGVudGl0eSB0byBhbiBleGlzdGluZyB1c2VyIGFjY291bnQgKi9cbiAgICBBZGRJZGVudGl0eVJlcXVlc3Q6IHtcbiAgICAgIG9pZGNfdG9rZW46IHN0cmluZztcbiAgICAgIHVzZXJfaWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIEFkZEtleXNUb1JvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2Yga2V5cyB0byBhZGQgdG8gYSByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiS2V5IzYzMDIzYTI3LTFlNzAtNDMwYS1iMjkzLWZmYmM5ZDZjNDQ4NFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGtleV9pZHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWNpZXMgdG8gYXBwbHkgZm9yIGVhY2gga2V5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IHtcbiAgICAgICAqICAgICAgICAgXCJSZXF1aXJlZEFwcHJvdmVyc1wiOiB7XG4gICAgICAgKiAgICAgICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgICAgIH1cbiAgICAgICAqICAgICAgIH0sXG4gICAgICAgKiAgICAgICBcInJlc3RyaWN0ZWRfb3BlcmF0aW9uc1wiOiBbXG4gICAgICAgKiAgICAgICAgIFwiRXRoMVNpZ25cIixcbiAgICAgICAqICAgICAgICAgXCJCbG9iU2lnblwiXG4gICAgICAgKiAgICAgICBdXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IHVua25vd25bXSB8IG51bGw7XG4gICAgfTtcbiAgICBBZGRUaGlyZFBhcnR5VXNlclJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgZW1haWxcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIGlkZW50aXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdXNlciBmdWxsIG5hbWVcbiAgICAgICAqIEBleGFtcGxlIEFsaWNlIFdvbmRlcmxhbmRcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBwcm9vZj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXSB8IG51bGw7XG4gICAgICByb2xlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl07XG4gICAgfTtcbiAgICBBZGRUaGlyZFBhcnR5VXNlclJlc3BvbnNlOiB7XG4gICAgICAvKiogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGYgKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFkZHJlc3NlcyBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LiAqL1xuICAgIEFkZHJlc3NNYXA6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQml0Y29pbiBhZGRyZXNzZXMuICovXG4gICAgICBidGM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpdGNvaW5BZGRyZXNzSW5mb1wiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDYW50b24gcGFydGllcy4gKi9cbiAgICAgIGNhbnRvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2FudG9uUGFydHlJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVWTSBhZGRyZXNzZXMuICovXG4gICAgICBldm0/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bUFkZHJlc3NJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbGFuYSBhZGRyZXNzZXMuICovXG4gICAgICBzb2w/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYUFkZHJlc3NJbmZvXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNVSSBhZGRyZXNzZXMuICovXG4gICAgICBzdWk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1aUFkZHJlc3NJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBBbGVydEtpbmQ6IFwiUG9saWN5Q2hhbmdlc1wiIHwgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiIHwgXCJCYWJ5bG9uRW90c0NvbmN1cnJlbnRTaWduaW5nXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1GQSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQgZm9yIGluZGl2aWR1YWwgaW1wbGljaXRseSBzZWN1cml0eS1zZW5zaXRpdmVcbiAgICAgKiBvcGVyYXRpb25zIChsaWtlIGxvZ2dpbmcgaW4sIGFkZGluZyBhbiBNRkEgZmFjdG9yLCBleHBvcnRpbmcga2V5cywgZXRjOyBzZWUgYE1mYVByb3RlY3RlZEFjdGlvbmApLlxuICAgICAqL1xuICAgIEFsbG93ZWRNZmFNYXA6IHtcbiAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdO1xuICAgIH07XG4gICAgQXBwcm92YWxJbmZvOiB7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXZWJBdXRobiBSZWx5aW5nIFBhcnRpZXMgbWF5IHVzZSBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlIHRvIHNwZWNpZnlcbiAgICAgKiB0aGVpciBwcmVmZXJlbmNlIHJlZ2FyZGluZyBhdHRlc3RhdGlvbiBjb252ZXlhbmNlIGR1cmluZyBjcmVkZW50aWFsXG4gICAgICogZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF0dGVzdGF0aW9uY29udmV5YW5jZXByZWZlcmVuY2VcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6IFwibm9uZVwiIHwgXCJpbmRpcmVjdFwiIHwgXCJkaXJlY3RcIiB8IFwiZW50ZXJwcmlzZVwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdWRpZW5jZShzKSB0aGF0IHRoaXMgSUQgVG9rZW4gaXMgaW50ZW5kZWQgZm9yLiBJdCBNVVNUIGNvbnRhaW4gdGhlXG4gICAgICogT0F1dGggMi4wIGNsaWVudF9pZCBvZiB0aGUgUmVseWluZyBQYXJ0eSBhcyBhbiBhdWRpZW5jZSB2YWx1ZS4gSXQgTUFZIGFsc28gY29udGFpblxuICAgICAqIGlkZW50aWZpZXJzIGZvciBvdGhlciBhdWRpZW5jZXMuIEluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSBhdWQgdmFsdWUgaXMgYW4gYXJyYXkgb2ZcbiAgICAgKiBjYXNlLXNlbnNpdGl2ZSBzdHJpbmdzLiBJbiB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSB3aGVuIHRoZXJlIGlzIG9uZSBhdWRpZW5jZSxcbiAgICAgKiB0aGUgYXVkIHZhbHVlIE1BWSBiZSBhIHNpbmdsZSBjYXNlLXNlbnNpdGl2ZSBzdHJpbmcuXG4gICAgICovXG4gICAgQXVkOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICBBdWRpdExvZ0VudHJ5OiB7XG4gICAgICBldmVudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERpc2NyaW1pbmFudHNcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVVSUQgb2YgdGhlIGV2ZW50LiBVbmlxdWUgYWNyb3NzIGFsbCBldmVudHMuICovXG4gICAgICBldmVudF9pZDogc3RyaW5nO1xuICAgICAgb3JnX2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBIVFRQIHJlcXVlc3Qgd2hpY2ggdHJpZ2dlcmVkIHRoZSBldmVudFxuICAgICAgICogKGEgc2luZ2xlIHJlcXVlc3QgY2FuIHRyaWdnZXIgbXVsdGlwbGUgZXZlbnRzKS5cbiAgICAgICAqL1xuICAgICAgcmVxdWVzdF9pZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdGltZSB3aGVuIHRoZSBldmVudCB3YXMgbG9nZ2VkLiAqL1xuICAgICAgdGltZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBpZGVudGl0eSAodXNlciBvciByb2xlKSB3aGljaCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gICAgICAgKiAobWF5IGJlIHVuZGVmaW5lZCBmb3IgY2VydGFpbiB1bmF1dGhlbnRpY2F0ZWQgZW5kcG9pbnRzKVxuICAgICAgICovXG4gICAgICB0cmlnZ2VyZWRfYnk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlcXVlc3QgdHlwZSBmb3IgcXVlcnlpbmcgdGhlIGF1ZGl0IGxvZy4gKi9cbiAgICBBdWRpdExvZ1JlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEVuZCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gJ25vdycuXG4gICAgICAgKi9cbiAgICAgIGVuZF90aW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEZpbHRlciB0aGUgbG9nIGJ5IHRoZSBldmVudCBuYW1lLlxuICAgICAgICogSWYgb21pdHRlZCwgYWxsIGV2ZW50cyB3aWxsIGJlIGluY2x1ZGVkLlxuICAgICAgICogTXVzdCBub3QgYmUgc2V0IHRvIGFuIGVtcHR5IGFycmF5XG4gICAgICAgKi9cbiAgICAgIGV2ZW50cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnRXZlbnREaXNjcmltaW5hbnRzXCJdW10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3RhcnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guXG4gICAgICAgKi9cbiAgICAgIHN0YXJ0X3RpbWU6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGF1ZGl0IGxvZyByZXNwb25zZSAqL1xuICAgIEF1ZGl0TG9nUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXVkaXQgbG9nIGVudHJpZXMgKi9cbiAgICAgIGVudHJpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkaXRMb2dFbnRyeVwiXVtdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIHJlcXVpcmVkIGZvciBib3RoIGBhdXRoZW50aWNhdGVgIGFuZCBgcmVmcmVzaGAuICovXG4gICAgQXV0aERhdGE6IHtcbiAgICAgIC8qKiBGb3JtYXQ6IGludDMyICovXG4gICAgICBlcG9jaF9udW06IG51bWJlcjtcbiAgICAgIGVwb2NoX3Rva2VuOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkIzMlwiXTtcbiAgICAgIG90aGVyX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXQgcmVkZW1wdGlvbiB0aW1lLCB0aGUgdXNlciBtdXN0IHByb3ZpZGUgYSBjcmVkZW50aWFsIHRoZXkgd2lzaCB0byB1c2UgdG8gYXV0aGVudGljYXRlLlxuICAgICAqIFRoaXMgZW51bSByZXByZXNlbnRzIHRoZSB0d28gcG9zc2libGUgc291cmNlcyBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKi9cbiAgICBBdXRoU291cmNlOiB7XG4gICAgICBjcmVkZW50aWFsOiBzdHJpbmc7XG4gICAgICBraW5kOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhTb3VyY2VLaW5kXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEF0IHJlZGVtcHRpb24gdGltZSwgdGhlIHVzZXIgbXVzdCBwcm92aWRlIGEgY3JlZGVudGlhbCB0aGV5IHdpc2ggdG8gdXNlIHRvIGF1dGhlbnRpY2F0ZS5cbiAgICAgKiBUaGlzIGVudW0gcmVwcmVzZW50cyB0aGUgdHdvIHBvc3NpYmxlIHNvdXJjZXMgb2YgYXV0aGVudGljYXRpb24uXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBBdXRoU291cmNlS2luZDogXCJwYXNzd29yZFwiIHwgXCJvaWRjXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCBib2R5IGZvciB0aGUgaWRwIGF1dGhlbnRpY2F0ZSBlbmRwb2ludCAqL1xuICAgIEF1dGhlbnRpY2F0aW9uUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIHVzZXIgYXR0ZW1wdGluZyB0byBhdXRoZW50aWNhdGVcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwYXNzd29yZCBmb3IgdGhhdCB1c2VyICovXG4gICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gdGhlIGlkcCBhdXRoZW50aWNhdGUgZW5kcG9pbnQgKi9cbiAgICBBdXRoZW50aWNhdGlvblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIE9JREMgdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBhdXRoZW50aWNhdGUgd2l0aCBDdWJlU2lnbmVyICovXG4gICAgICBpZF90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGFzc2VydGlvbiByZXNwb25zZSB1c2VkIGJ5IGNsaWVudHMgd2hlbiBhdHRlbXB0aW5nIHRvIGxvZyBpbiB3aXRoIGEga25vd24gY3JlZGVudGlhbFxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNhdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRhaW5zIHRoZSBzdGFuZGFyZCBDVEFQMiBhdXRoZW50aWNhdG9yIGRhdGEuIE11c3QgYmUgYSB2YWxpZCBbYEF1dGhlbnRpY2F0b3JEYXRhYF0uXG4gICAgICAgKiBUaGlzIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGhvdyBrZXkgd2FzIGludm9rZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1hdXRoZW50aWNhdG9yZGF0YVxuICAgICAgICovXG4gICAgICBhdXRoZW50aWNhdG9yRGF0YTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgVVRGOCBlbmNvZGVkIEpTT04gd2hpY2ggbXVzdCBiZSBhIHZhbGlkIFtgQ2xpZW50RGF0YWBdXG4gICAgICAgKiBUaGlzIGRhdGEgaXMgY29tYmluZWQgd2l0aCBgYXV0aGVudGljYXRvcl9kYXRhYCB0byBwcm9kdWNlIHRoZSBzaWduYXR1cmVcbiAgICAgICAqIG1lYW5pbmcgdGhlIGNsaWVudCBhdHRlc3RzIHRvIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGRhdGEuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JyZXNwb25zZS1jbGllbnRkYXRhanNvblxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSBvZiB0aGUgY29uY2F0ZW5hdGVkIGBhdXRoZW50aWNhdG9yRGF0YSB8fCBoYXNoYCB3aGVyZVxuICAgICAgICogYGhhc2hgIGlzIHRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgYGNsaWVudERhdGFKU09OYCBidWZmZXI6XG4gICAgICAgKlxuICAgICAgICogRmllbGQgRGVmaW5pdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2Utc2lnbmF0dXJlXG4gICAgICAgKiBTdGVwIDExIG9mIGBnZXRBc3NlcnRpb25gIHNwZWNpZmllcyB0aGUgY29uY2F0ZW5hdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI3NjdG4tb3AtZ2V0LWFzc2VydGlvblxuICAgICAgICogUmVxdWlyZW1lbnQgZm9yIFNIQS0yNTY6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNjb2xsZWN0ZWRjbGllbnRkYXRhLWhhc2gtb2YtdGhlLXNlcmlhbGl6ZWQtY2xpZW50LWRhdGFcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgdGhlIGF1dGhlbnRpY2F0b3IgdG8gb3B0aW9uYWxseSBkZWNsYXJlIHRoZSBjcmVkZW50aWFsIGlkZW50aWZpZXIgdGhleSB1c2VkLlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2UtdXNlcmhhbmRsZVxuICAgICAgICovXG4gICAgICB1c2VySGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGVudW1lcmF0aW9u4oCZcyB2YWx1ZXMgZGVzY3JpYmUgYXV0aGVudGljYXRvcnMnIGF0dGFjaG1lbnQgbW9kYWxpdGllcy5cbiAgICAgKiBSZWx5aW5nIFBhcnRpZXMgdXNlIHRoaXMgdG8gZXhwcmVzcyBhIHByZWZlcnJlZCBhdXRoZW50aWNhdG9yIGF0dGFjaG1lbnRcbiAgICAgKiBtb2RhbGl0eSB3aGVuIGNhbGxpbmcgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZSgpIHRvIGNyZWF0ZSBhIGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9yYXR0YWNobWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6IFwicGxhdGZvcm1cIiB8IFwiY3Jvc3MtcGxhdGZvcm1cIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGludGVyZmFjZSByZXByZXNlbnRzIHRoZSBhdXRoZW50aWNhdG9yJ3NcbiAgICAgKiByZXNwb25zZSB0byBhIGNsaWVudOKAmXMgcmVxdWVzdCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsLiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IGNyZWRlbnRpYWwgdGhhdCBjYW4gYmVcbiAgICAgKiB1c2VkIHRvIGlkZW50aWZ5IGl0IGZvciBsYXRlciB1c2UsIGFuZCBtZXRhZGF0YSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZVxuICAgICAqIFdlYkF1dGhuIFJlbHlpbmcgUGFydHkgdG8gYXNzZXNzIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGNyZWRlbnRpYWxcbiAgICAgKiBkdXJpbmcgcmVnaXN0cmF0aW9uLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLWF1dGhlbnRpY2F0b3JhdHRlc3RhdGlvbnJlc3BvbnNlXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGFuIGF0dGVzdGF0aW9uIG9iamVjdCwgd2hpY2ggaXMgb3BhcXVlIHRvLCBhbmRcbiAgICAgICAqIGNyeXB0b2dyYXBoaWNhbGx5IHByb3RlY3RlZCBhZ2FpbnN0IHRhbXBlcmluZyBieSwgdGhlIGNsaWVudC4gVGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QgY29udGFpbnMgYm90aCBhdXRoZW50aWNhdG9yIGRhdGEgYW5kIGFuIGF0dGVzdGF0aW9uXG4gICAgICAgKiBzdGF0ZW1lbnQuIFRoZSBmb3JtZXIgY29udGFpbnMgdGhlIEFBR1VJRCwgYSB1bmlxdWUgY3JlZGVudGlhbCBJRCwgYW5kXG4gICAgICAgKiB0aGUgY3JlZGVudGlhbCBwdWJsaWMga2V5LiBUaGUgY29udGVudHMgb2YgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBhcmVcbiAgICAgICAqIGRldGVybWluZWQgYnkgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBmb3JtYXQgdXNlZCBieSB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIEl0IGFsc28gY29udGFpbnMgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHkncyBzZXJ2ZXIgcmVxdWlyZXMgdG8gdmFsaWRhdGUgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCxcbiAgICAgICAqIGFzIHdlbGwgYXMgdG8gZGVjb2RlIGFuZCB2YWxpZGF0ZSB0aGUgYXV0aGVudGljYXRvciBkYXRhIGFsb25nIHdpdGggdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YS4gRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICAgICAgKiDCp+KArzYuNSBBdHRlc3RhdGlvbiwgwqfigK82LjUuNCBHZW5lcmF0aW5nIGFuIEF0dGVzdGF0aW9uIE9iamVjdCwgYW5kIEZpZ3VyZVxuICAgICAgICogNi5cbiAgICAgICAqL1xuICAgICAgYXR0ZXN0YXRpb25PYmplY3Q6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlLCBpbmhlcml0ZWQgZnJvbSBBdXRoZW50aWNhdG9yUmVzcG9uc2UsIGNvbnRhaW5zIHRoZVxuICAgICAgICogSlNPTi1jb21wYXRpYmxlIHNlcmlhbGl6YXRpb24gb2YgY2xpZW50IGRhdGEgKHNlZSDCp+KArzYuNSBBdHRlc3RhdGlvbilcbiAgICAgICAqIHBhc3NlZCB0byB0aGUgYXV0aGVudGljYXRvciBieSB0aGUgY2xpZW50IGluIG9yZGVyIHRvIGdlbmVyYXRlIHRoaXNcbiAgICAgICAqIGNyZWRlbnRpYWwuIFRoZSBleGFjdCBKU09OIHNlcmlhbGl6YXRpb24gTVVTVCBiZSBwcmVzZXJ2ZWQsIGFzIHRoZSBoYXNoXG4gICAgICAgKiBvZiB0aGUgc2VyaWFsaXplZCBjbGllbnQgZGF0YSBoYXMgYmVlbiBjb21wdXRlZCBvdmVyIGl0LlxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdlYkF1dGhuIFJlbHlpbmcgUGFydGllcyBtYXkgdXNlIHRoZSBBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWFcbiAgICAgKiBkaWN0aW9uYXJ5IHRvIHNwZWNpZnkgdGhlaXIgcmVxdWlyZW1lbnRzIHJlZ2FyZGluZyBhdXRoZW50aWNhdG9yXG4gICAgICogYXR0cmlidXRlcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYToge1xuICAgICAgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBdHRhY2htZW50XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFdlYkF1dGhuIExldmVsXG4gICAgICAgKiAxIGFuZCwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgaXRzIG5hbWluZyByZXRhaW5zIHRoZSBkZXByZWNhdGVkXG4gICAgICAgKiDigJxyZXNpZGVudOKAnSB0ZXJtaW5vbG9neSBmb3IgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBzZXQgaXQgdG8gdHJ1ZSBpZiwgYW5kIG9ubHkgaWYsIHJlc2lkZW50S2V5IGlzIHNldCB0byByZXF1aXJlZC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYS1yZXF1aXJlcmVzaWRlbnRrZXlcbiAgICAgICAqL1xuICAgICAgcmVxdWlyZVJlc2lkZW50S2V5PzogYm9vbGVhbjtcbiAgICAgIHJlc2lkZW50S2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXNpZGVudEtleVJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIHVzZXJWZXJpZmljYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdG9ycyBtYXkgaW1wbGVtZW50IHZhcmlvdXMgdHJhbnNwb3J0cyBmb3IgY29tbXVuaWNhdGluZyB3aXRoXG4gICAgICogY2xpZW50cy4gVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIGhpbnRzIGFzIHRvIGhvdyBjbGllbnRzIG1pZ2h0IGNvbW11bmljYXRlXG4gICAgICogd2l0aCBhIHBhcnRpY3VsYXIgYXV0aGVudGljYXRvciBpbiBvcmRlciB0byBvYnRhaW4gYW4gYXNzZXJ0aW9uIGZvciBhXG4gICAgICogc3BlY2lmaWMgY3JlZGVudGlhbC4gTm90ZSB0aGF0IHRoZXNlIGhpbnRzIHJlcHJlc2VudCB0aGUgV2ViQXV0aG4gUmVseWluZ1xuICAgICAqIFBhcnR5J3MgYmVzdCBiZWxpZWYgYXMgdG8gaG93IGFuIGF1dGhlbnRpY2F0b3IgbWF5IGJlIHJlYWNoZWQuIEEgUmVseWluZ1xuICAgICAqIFBhcnR5IHdpbGwgdHlwaWNhbGx5IGxlYXJuIG9mIHRoZSBzdXBwb3J0ZWQgdHJhbnNwb3J0cyBmb3IgYSBwdWJsaWMga2V5XG4gICAgICogY3JlZGVudGlhbCB2aWEgZ2V0VHJhbnNwb3J0cygpLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtYXV0aGVudGljYXRvcnRyYW5zcG9ydFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclRyYW5zcG9ydDogXCJ1c2JcIiB8IFwibmZjXCIgfCBcImJsZVwiIHwgXCJpbnRlcm5hbFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBzaWduIGEgc2VyaWFsaXplZCBBdmFsYW5jaGUgdHJhbnNhY3Rpb24gKi9cbiAgICBBdmFTZXJpYWxpemVkVHhTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gdG8gc2lnbiAqL1xuICAgICAgdHg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBzaWduIGFuIEF2YWxhbmNoZSB0cmFuc2FjdGlvbiAqL1xuICAgIEF2YVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uIHRvIHNpZ24uXG4gICAgICAgKlxuICAgICAgICogRXhhbXBsZXM6XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2FkZF9wZXJtaXNzaW9ubGVzc192YWxpZGF0b3IucnMjTDE0KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJBZGRTdWJuZXRWYWxpZGF0b3JcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvYWRkX3N1Ym5ldF92YWxpZGF0b3IucnMjTDI5KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJBZGRWYWxpZGF0b3JcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvYWRkX3ZhbGlkYXRvci5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkNyZWF0ZUNoYWluXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2NyZWF0ZV9jaGFpbi5ycyNMOCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQ3JlYXRlU3VibmV0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2NyZWF0ZV9zdWJuZXQucnMjTDgpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkV4cG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9leHBvcnQucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJJbXBvcnRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvaW1wb3J0LnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiQmFzZVwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9hdm0vdHhzL21vZC5ycyNMMjEpIH19XG4gICAgICAgKiAtIHtcIlhcIjogeyBcIkV4cG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9hdm0vdHhzL2V4cG9ydC5ycyNMMTYpIH19XG4gICAgICAgKiAtIHtcIlhcIjogeyBcIkltcG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9hdm0vdHhzL2ltcG9ydC5ycyNMMTQpIH19XG4gICAgICAgKi9cbiAgICAgIHR4OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGEgemVyb2l6aW5nIDMyLWJ5dGUgZml4ZWQtc2l6ZSBhcnJheSAqL1xuICAgIEIzMjogc3RyaW5nO1xuICAgIEJhYnlsb25Db3ZTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5cyBmb3IgdGhlIGZpbmFsaXR5IHByb3ZpZGVycyB0byB3aGljaCB0aGlzIHRyYW5zYWN0aW9uIGlzIGJlaW5nIHN0YWtlZC5cbiAgICAgICAqIEVhY2gga2V5IGlzIGEgaGV4IHN0cmluZyBjb250YWluaW5nIGEgU0VDMS1lbmNvZGVkIHNlY3AyNTZrMSBwdWJsaWMga2V5LlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIjAzYjU3M2UzMTg4MDNmZDdhZWUxYmU1YjZiMThkNDk2Y2M2MGVjYzUyNDI5ZGJkNDc3YTg3OTIxN2MzZWQyNmE3OTVjYjRmNGU4ODBhYWZmM2E2YWQ2NjMzNWU1NDA0ZmE1MWNhZWI0OTY0ZjBjOWY3NTYyNzM3ODY0ZTNiZGU1YmNcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBmcF9lbmNfa2V5czogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2gtdW5ib25kaW5nIHRyYW5zYWN0aW9uIGJlaW5nIGFwcHJvdmVkIGJ5IHRoZSBjb3ZlbmFudCBzaWduZXIuXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDY4OTliNWJhZjcxM2EyYzYwZTZhYmYwNWU4OTA5NDQwZDQxZGM0MTI1Yjk4ODkxYzMzMmY3MDg3ZGFmMDE3ZmIyNDM2Mjg2ZTJhYTA5NzQ2NGQ5YzkyN2Q2NDRmYTZkZVxuICAgICAgICovXG4gICAgICBzbGFzaF91bmJvbmRpbmdfdHg6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaGluZyBzY3JpcHQgaW4gdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDg3N2YwNWNjNjI2ZGVkY2Y1M2I1MGVlYmEwODIxY2EwXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX3NjcmlwdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHRyYW5zYWN0aW9uIGJlaW5nIGFwcHJvdmVkIGJ5IHRoZSBjb3ZlbmFudCBzaWduZXIuXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIGYzN2U3Y2EyYjI0YTVmN2I4YjZjOWJhMDU0Zjk5MzJlZmIwNDdjZTgwY2Y1MGExMThlM2Y3Mjc1MTQyOWZiMTNhMzU1ZmEwOTNiZDM1OGNkYzMwZWZhY2Y1YTYyY2FiZVxuICAgICAgICovXG4gICAgICBzbGFzaGluZ190eDogc3RyaW5nO1xuICAgICAgc3Rha2VfZXhwYW5zaW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uQ292U3Rha2VFeHBhbnNpb25SZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvdXRwdXQgaW5kZXggb2YgdGhlIEJhYnlsb24gc3Rha2luZyBzY3JpcHRzIGluIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAgICogQGV4YW1wbGUgMVxuICAgICAgICovXG4gICAgICBzdGFraW5nX291dHB1dF9pZHg6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIGJlaW5nIGFwcHJvdmVkIGJ5IHRoZSBjb3ZlbmFudCBzaWduZXIuXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDk1NGJhMTE4ZTcxMzNiNGJiM2E2N2FjYzRmNDBjYjk1MjlhYWJiYzAxMDA3MjI5ZjdiZmQ4NTcwNjg1MDE3NWQ3N2Q1Y2JlNWU0YzBjYTY3MjM4ZDE0YWZhNDdjNTFjY1xuICAgICAgICovXG4gICAgICBzdGFraW5nX3R4OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdW5ib25kaW5nIHNjcmlwdCBpbiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCaXRjb2luIGNvbnNlbnN1cy0tZW5jb2RlZCBoZXggc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgNTVmNjYzOGMwYzBjMGIwZTUxY2E5MjJlMGU5ZTZhYmRcbiAgICAgICAqL1xuICAgICAgdW5ib25kaW5nX3NjcmlwdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoaW5nIHNjcmlwdCBpbiB0aGUgdW5ib25kaW5nIHRyYW5zYWN0aW9uLlxuICAgICAgICogVGhpcyBpcyBhIEJpdGNvaW4gY29uc2Vuc3VzLS1lbmNvZGVkIGhleCBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZSBlMTMzZjVhOTIzYTA3YjljN2Y2NzY3Y2RhMTcxMDA1YlxuICAgICAgICovXG4gICAgICB1bmJvbmRpbmdfc2xhc2hpbmdfc2NyaXB0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdW5ib25kaW5nIHRyYW5zYWN0aW9uIGJlaW5nIGFwcHJvdmVkIGJ5IHRoZSBjb3ZlbmFudCBzaWduZXIuXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIDk2OWNiOTUxMjlhNTVhOTZkNTE5MTlmNWY2N2YzYWRjNTk3ZWNkZWU2ZWRhMjFlNzc3N2YzNzBjM2IxODA5MzM2ZWU3ZDA4ZWM1NzRjOGJiYjM2MWZmNjNkMDMyYTk3NlxuICAgICAgICovXG4gICAgICB1bmJvbmRpbmdfdHg6IHN0cmluZztcbiAgICB9O1xuICAgIEJhYnlsb25Db3ZTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2gtdW5ib25kaW5nIHRyYW5zYWN0aW9uIHNpZ25hdHVyZXMgYXMgYW4gYXJyYXkgb2YgaGV4IHN0cmluZ3Mgd2l0aCBubyAweCBwcmVmaXhcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCIwMmUyMWE3YjA1MTk1MzllZjY3MGY3OWQxYzI1YTU0ZjkwYjBjNmQ5ZmRiNTZhN2RlODEzZmIyMDcwMzMwMzJmZmZhZDhhYWFmZWIxYjc3ZGQ5ZWE4ZjE3ZGFkY2YyOTc2OTZiYmY1YTQxMzMyOTJmMzUxNWI4NmJiOWMyZDc4ZDljXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2xhc2hfdW5ib25kaW5nX3RyYW5zYWN0aW9uc19zaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaGluZyB0cmFuc2FjdGlvbiBzaWduYXR1cmVzIGFzIGFuIGFycmF5IG9mIGhleCBzdHJpbmdzIHdpdGggbm8gMHggcHJlZml4XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiMDMwNzVlY2E5ZDE3NmQxNjA1ZDZjMDk2YzExMWU5YTRmOGQ4NzM5YWM5NzA4YzFkZjNlZDUxNjEwNmU3YWIxMzg3YTM5MjRhNjY1MmFjZjJlMzUyNDM1OTczMWNhMWZiYjMzOGEzYWZiMWE2N2Y2ZWExOWMyMDdiNmZmNDY2YTVhZFwiLFxuICAgICAgICogICBcIjAyMjIyNDQ5M2Y0Y2ZmYWQ1Yjg0MDc2ZGIzMmRkOGM0OWEyOGZmNDhhZjRlMTllMmJjYzk5NTNmZjgwMzQ3YmE2ZTgzNDNjZjdhNDRlNzRhOTZmZjcxZWE1OWEwM2I0MDE2NmU4NWIwZDEzNTU5NTRlMDRhNDQyN2RjOGQ2MzdmZjBcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBzbGFzaGluZ190cmFuc2FjdGlvbnNfc2lnbmF0dXJlczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmF0dXJlIHRoYXQgYWxsb3dzIGV4cGFuZGluZyBhIHN0YWtlIGJ5IHNwZW5kaW5nIHRoZSBjdXJyZW50IGFjdGl2ZVxuICAgICAgICogc3Rha2UgdHJhbnNhY3Rpb24gaW50byBhIG5ldyBzdGFraW5nIHRyYW5zYWN0aW9uLiBBIHZhbHVlIGlzIHByZXNlbnQgaWZmIHRoZVxuICAgICAgICogY29ycmVzcG9uZGluZyByZXF1ZXN0IGluY2x1ZGVkIGEgYHN0YWtlX2V4cGFuc2lvbmAgdmFsdWUuXG4gICAgICAgKiBAZXhhbXBsZSBiNTczZTMxODgwM2ZkN2FlZTFiZTViNmIxOGQ0OTZjYzYwZWNjNTI0MjlkYmQ0NzdhODc5MjE3YzNlZDI2YTc5NWNiNGY0ZTg4MGFhZmYzYTZhZDY2MzM1ZTU0MDRmYTUxY2FlYjQ5NjRmMGM5Zjc1NjI3Mzc4NjRlM2JkZTViY1xuICAgICAgICovXG4gICAgICBzdGFrZV9leHBhbnNpb25fdHJhbnNhY3Rpb25fc2lnbmF0dXJlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmJvbmRpbmcgdHJhbnNhY3Rpb24gc2lnbmF0dXJlIGFzIGhleCBzdHJpbmcgd2l0aCBubyAweCBwcmVmaXhcbiAgICAgICAqIEBleGFtcGxlIGI1NzNlMzE4ODAzZmQ3YWVlMWJlNWI2YjE4ZDQ5NmNjNjBlY2M1MjQyOWRiZDQ3N2E4NzkyMTdjM2VkMjZhNzk1Y2I0ZjRlODgwYWFmZjNhNmFkNjYzMzVlNTQwNGZhNTFjYWViNDk2NGYwYzlmNzU2MjczNzg2NGUzYmRlNWJjXG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ190cmFuc2FjdGlvbl9zaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBleHBhbmQgYW4gYWN0aXZlIHN0YWtlIHdpdGggYWRkaXRpb25hbCBmdW5kcy4gKi9cbiAgICBCYWJ5bG9uQ292U3Rha2VFeHBhbnNpb25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gb3V0cHV0IHRoYXQgaXMgYmVpbmcgdXNlZCB0byBmdW5kIHRoZSBzdGFrZSBleHBhbnNpb24uXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqL1xuICAgICAgb3RoZXJfZnVuZGluZ19vdXRwdXQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhY3RpdmUgc3Rha2luZyB0cmFuc2FjdGlvbiB0aGF0IGlzIGJlaW5nIGV4cGFuZGVkIHdpdGggdGhpcyByZXF1ZXN0LlxuICAgICAgICogVGhpcyBpcyBhIEJpdGNvaW4gY29uc2Vuc3VzLS1lbmNvZGVkIGhleCBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZSA5NTRiYTExOGU3MTMzYjRiYjNhNjdhY2M0ZjQwY2I5NTI5YWFiYmMwMTAwNzIyOWY3YmZkODU3MDY4NTAxNzVkNzdkNWNiZTVlNGMwY2E2NzIzOGQxNGFmYTQ3YzUxY2NcbiAgICAgICAqL1xuICAgICAgcHJldmlvdXNfYWN0aXZlX3N0YWtlX3R4OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdW5ib25kaW5nIHNjcmlwdCBpbiB0aGUgYWN0aXZlIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBUaGlzIGlzIGEgQml0Y29pbiBjb25zZW5zdXMtLWVuY29kZWQgaGV4IHN0cmluZy5cbiAgICAgICAqIEBleGFtcGxlIGUxMzNmNWE5MjNhMDdiOWM3ZjY3NjdjZGExNzEwMDViXG4gICAgICAgKi9cbiAgICAgIHByZXZpb3VzX2FjdGl2ZV9zdGFrZV91bmJvbmRpbmdfc2NyaXB0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaW5kZXggb2YgdGhlIGFjdGl2ZSBzdGFrZSBvdXRwdXQgaW4gdGhlIGFjdGl2ZSBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgICAgICogQGV4YW1wbGUgMVxuICAgICAgICovXG4gICAgICBwcmV2aW91c19zdGFraW5nX291dHB1dF9pZHg6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV0d29yay1pZCBmb3IgQmFieWxvbiBzdGFraW5nXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBCYWJ5bG9uTmV0d29ya0lkOiBcImJidDRcIiB8IFwiYmJuMVwiIHwgXCJiYnQ1XCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBCYWJ5bG9uIHN0YWtpbmcgcmVnaXN0cmF0aW9uIHNwZWNpZmljYXRpb24gKi9cbiAgICBCYWJ5bG9uUmVnaXN0cmF0aW9uUmVxdWVzdDogKHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjaGFuZ2UgYWRkcmVzcywgc3BlY2lmaWVkIGFzIGEgQml0Y29pbiBzcGVuZCBzY3JpcHQgKi9cbiAgICAgIGNoYW5nZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIGZlZSB2YWx1ZS4gVGhlIGBmZWVfdHlwZWAgZmllbGQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXNcbiAgICAgICAqIGlzIGEgZml4ZWQgZmVlIGluIHNhdHMgb3IgYSByYXRlIGluIHNhdHMgcGVyIChlc3RpbWF0ZWQpIHZpcnR1YWwgYnl0ZSBvZlxuICAgICAgICogdHJhbnNhY3Rpb24gd2VpZ2h0IChpLmUuLCBzYXRzIHBlciB2YikuXG4gICAgICAgKi9cbiAgICAgIGZlZTogbnVtYmVyO1xuICAgICAgZmVlX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmVlVHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJ5IGRlZmF1bHQsIHRoZSBQU0JUIGluIHRoaXMgcmVxdWVzdCBjYW4gb25seSBzcGVjaWZ5IHRyYW5zYWN0aW9uIGlucHV0czpcbiAgICAgICAqIFBTQlRzIHRoYXQgc3BlY2lmeSBvdXRwdXRzIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsXG4gICAgICAgKiBleGlzdGluZyBvdXRwdXRzIGluIHRoZSBQU0JUIHdpbGwgaW5zdGVhZCBiZSBpZ25vcmVkIChpLmUuLCBkZWxldGVkIGZyb21cbiAgICAgICAqIHRoZSBQU0JUKSB3aGVuIGNyZWF0aW5nIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLlxuICAgICAgICovXG4gICAgICBpZ25vcmVfcHNidF9vdXRwdXRzPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaGV4LXNlcmlhbGl6ZWQgUFNCVCAodmVyc2lvbiAwKSBjb250YWluaW5nIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgYW5kXG4gICAgICAgKiBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciBzaWduaW5nIChlLmcuLCB0YXByb290IHBhdGggYW5kIGxlYWZcbiAgICAgICAqIGluZm9ybWF0aW9uKS4gVGhpcyBQU0JUIG11c3Qgbm90IGhhdmUgYW55IHRyYW5zYWN0aW9uIG91dHB1dHM7IHRoZXlcbiAgICAgICAqIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJldHVybmVkIFBTQlQuXG4gICAgICAgKi9cbiAgICAgIHBzYnQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSB0byBiZSBzdGFrZWQgaW4gc2F0c1xuICAgICAgICovXG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgQmFieWxvbiBhZGRyZXNzIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBzdGFraW5nIHJld2FyZHMgZm9yIHRoaXMgZGVwb3NpdC5cbiAgICAgICAqIEJhYnlsb24gcmVxdWlyZXMgdGhpcyB0byBiZSB0aGUgc2FtZSBhZGRyZXNzIHRoYXQgcmVnaXN0ZXJzIHRoZSBkZXBvc2l0IG9uXG4gICAgICAgKiB0aGUgQmFieWxvbiBjaGFpbi5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIG11c3QgYmUgYSBzZWNwMjU2azEgQ29zbW9zIGFkZHJlc3Mgd2l0aCBlaXRoZXIgYSBgYmJuYCBvciBhIGBjb3Ntb3NgXG4gICAgICAgKiBodW1hbi1yZWFkYWJsZSBwYXJ0IChpLmUuLCBgYmJuMS4uLmAgb3IgYGNvc21vczEuLi5gKS4gVGhlIGxhdHRlciBsZXRzIHlvdVxuICAgICAgICogc3BlY2lmeSB0aGUgbWF0ZXJpYWwtaWQgb2YgYSBTZWNwQ29zbW9zIEN1YmVTaWduZXIga2V5LlxuICAgICAgICogQGV4YW1wbGUgYmJuMW41YW5tYzBra3JoNzB5ank3ZjZmMzk5Yzc0eWQwOXhsNXRlZmZtXG4gICAgICAgKi9cbiAgICAgIGJibl9hZGRyOiBzdHJpbmc7XG4gICAgfTtcbiAgICBCYWJ5bG9uUmVnaXN0cmF0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgQmFieWxvbiBhZGRyZXNzIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBzdGFraW5nIHJld2FyZHMgZm9yIHRoaXMgZGVwb3NpdC5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHZhbHVlIHdpbGwgY29ycmVzcG9uZCB0byB0aGUgYGJibl9hZGRyYCB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QsXG4gICAgICAgKiBidXQgaXQgd2lsbCBhbHdheXMgaGF2ZSBhIGBiYm5gIGh1bWFuLXJlYWRhYmxlIHBhcnQuXG4gICAgICAgKiBAZXhhbXBsZSBiYm4xbjVhbm1jMGtrcmg3MHlqeTdmNmYzOTljNzR5ZDA5eGw1dGVmZm1cbiAgICAgICAqL1xuICAgICAgYmJuX2FkZHI6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIFBTQlQuIFRoaXMgUFNCVCBpbmNsdWRlcyBzaWduYXR1cmVzIG9uIGFueVxuICAgICAgICogaW5wdXRzIGNvbnRyb2xsZWQgYnkgdGhlIHN0YWtlciB0YXByb290IGtleSBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QuXG4gICAgICAgKi9cbiAgICAgIGRlcG9zaXQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIGZlZSBpbiBzYXRzLlxuICAgICAgICogQGV4YW1wbGUgMTMzN1xuICAgICAgICovXG4gICAgICBkZXBvc2l0X2ZlZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHByb29mIG9mIHBvc3Nlc3Npb24sIGkuZS4sIGEgQklQMzIyIHNpZ25hdHVyZSBvbiB0aGUgc3Rha2VyJ3NcbiAgICAgICAqIEJhYnlsb24gYWRkcmVzcyBzaWduZWQgYnkgdGhlIHN0YWtlciB0YXByb290IGtleS4gVGhpcyBpcyBhIEJpdGNvaW5cbiAgICAgICAqIHdpdG5lc3Mgc3RhY2sgaW4gQml0Y29pbiBjb25zZW5zdXMgaGV4IGVuY29kaW5nLlxuICAgICAgICovXG4gICAgICBwb3A6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoLWRlcG9zaXQgdHJhbnNhY3Rpb24gaW4gQml0Y29pbiBjb25zZW5zdXMgaGV4IGVuY29kaW5nLiAqL1xuICAgICAgc2xhc2hfZGVwb3NpdDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YWtlciB0YXByb290IGtleSdzIHNpZ25hdHVyZSBvbiB0aGUgc2xhc2gtZGVwb3NpdCB0cmFuc2FjdGlvbi5cbiAgICAgICAqIFRoaXMgaXMgYSBCSVAzNDAgc2lnbmF0dXJlIGluIGhleCBmb3JtYXQuXG4gICAgICAgKi9cbiAgICAgIHNsYXNoX2RlcG9zaXRfc2lnOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzbGFzaC11bmJvbmQgdHJhbnNhY3Rpb24gaW4gQml0Y29pbiBjb25zZW5zdXMgaGV4IGVuY29kaW5nLiAqL1xuICAgICAgc2xhc2hfdW5ib25kOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3Rha2VyIHRhcHJvb3Qga2V5J3Mgc2lnbmF0dXJlIG9uIHRoZSBzbGFzaC11bmJvbmQgdHJhbnNhY3Rpb24uXG4gICAgICAgKiBUaGlzIGlzIGEgQklQMzQwIHNpZ25hdHVyZSBpbiBoZXggZm9ybWF0LlxuICAgICAgICovXG4gICAgICBzbGFzaF91bmJvbmRfc2lnOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSAodW5zaWduZWQpIHVuYm9uZGluZyB0cmFuc2FjdGlvbiBpbiBCaXRjb2luIGNvbnNlbnN1cyBoZXggZW5jb2RpbmcuICovXG4gICAgICB1bmJvbmQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGF0YSBuZWVkZWQgdG8gY3JlYXRlIHRoZSBCYWJ5bG9uIGRlcG9zaXQgc2NyaXB0cyAqL1xuICAgIEJhYnlsb25TY3JpcHREYXRhOiB7XG4gICAgICBleHBsaWNpdF9wYXJhbXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nUGFyYW1zXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTY2hub3JyIHB1YmxpYyBrZXkgKGkuZS4sIDMyLWJ5dGUgWC1jb29yZGluYXRlKSBvZiB0aGUgZmluYWxpdHlcbiAgICAgICAqIHByb3ZpZGVyIHRvIHdoaWNoIHRoZSBzdGFrZSBpcyBkZWxlZ2F0ZWQuXG4gICAgICAgKi9cbiAgICAgIGZpbmFsaXR5X3Byb3ZpZGVyX3Brczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbG9jayB0aW1lIHVzZWQgZm9yIHRoZSB3aXRoZHJhd2FsIG91dHB1dCBpbiB0aGUgc3Rha2luZyBkZXBvc2l0IHRyYW5zYWN0aW9uXG4gICAgICAgKi9cbiAgICAgIGxvY2tfdGltZTogbnVtYmVyO1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uTmV0d29ya0lkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBzdGFrZXIuIFRoaXNcbiAgICAgICAqIGlzIHRoZSBrZXkgdGhhdCBzaWducyB0aGUgc2xhc2hpbmcsIHdpdGhkcmF3YWwsIGFuZCB1bmJvbmRpbmcgc2NyaXB0cy5cbiAgICAgICAqL1xuICAgICAgc3Rha2VyX3BrOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGFyYW1ldGVyIHZlcnNpb24gdG8gdXNlLiBJZiBgTm9uZWAsIHVzZXMgdGhlIGxhdGVzdCB2ZXJzaW9uLlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGF0YSBuZWVkZWQgdG8gY3JlYXRlIGEgQmFieWxvbiBkZXBvc2l0IHRyYW5zYWN0aW9uICovXG4gICAgQmFieWxvblN0YWtpbmdEZXBvc2l0OiB7XG4gICAgICBleHBsaWNpdF9wYXJhbXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nUGFyYW1zXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTY2hub3JyIHB1YmxpYyBrZXkgKGkuZS4sIDMyLWJ5dGUgWC1jb29yZGluYXRlKSBvZiB0aGUgZmluYWxpdHlcbiAgICAgICAqIHByb3ZpZGVyIHRvIHdoaWNoIHRoZSBzdGFrZSBpcyBkZWxlZ2F0ZWQuXG4gICAgICAgKi9cbiAgICAgIGZpbmFsaXR5X3Byb3ZpZGVyX3Brczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbG9jayB0aW1lIHVzZWQgZm9yIHRoZSB3aXRoZHJhd2FsIG91dHB1dCBpbiB0aGUgc3Rha2luZyBkZXBvc2l0IHRyYW5zYWN0aW9uXG4gICAgICAgKi9cbiAgICAgIGxvY2tfdGltZTogbnVtYmVyO1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uTmV0d29ya0lkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBzdGFrZXIuIFRoaXNcbiAgICAgICAqIGlzIHRoZSBrZXkgdGhhdCBzaWducyB0aGUgc2xhc2hpbmcsIHdpdGhkcmF3YWwsIGFuZCB1bmJvbmRpbmcgc2NyaXB0cy5cbiAgICAgICAqL1xuICAgICAgc3Rha2VyX3BrOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGFyYW1ldGVyIHZlcnNpb24gdG8gdXNlLiBJZiBgTm9uZWAsIHVzZXMgdGhlIGxhdGVzdCB2ZXJzaW9uLlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogbnVtYmVyIHwgbnVsbDtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY2hhbmdlIGFkZHJlc3MsIHNwZWNpZmllZCBhcyBhIEJpdGNvaW4gc3BlbmQgc2NyaXB0ICovXG4gICAgICBjaGFuZ2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBmZWUgdmFsdWUuIFRoZSBgZmVlX3R5cGVgIGZpZWxkIGRldGVybWluZXMgd2hldGhlciB0aGlzXG4gICAgICAgKiBpcyBhIGZpeGVkIGZlZSBpbiBzYXRzIG9yIGEgcmF0ZSBpbiBzYXRzIHBlciAoZXN0aW1hdGVkKSB2aXJ0dWFsIGJ5dGUgb2ZcbiAgICAgICAqIHRyYW5zYWN0aW9uIHdlaWdodCAoaS5lLiwgc2F0cyBwZXIgdmIpLlxuICAgICAgICovXG4gICAgICBmZWU6IG51bWJlcjtcbiAgICAgIGZlZV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZlZVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBCeSBkZWZhdWx0LCB0aGUgUFNCVCBpbiB0aGlzIHJlcXVlc3QgY2FuIG9ubHkgc3BlY2lmeSB0cmFuc2FjdGlvbiBpbnB1dHM6XG4gICAgICAgKiBQU0JUcyB0aGF0IHNwZWNpZnkgb3V0cHV0cyB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4gV2hlbiB0aGlzIGZsYWcgaXMgc2V0LFxuICAgICAgICogZXhpc3Rpbmcgb3V0cHV0cyBpbiB0aGUgUFNCVCB3aWxsIGluc3RlYWQgYmUgaWdub3JlZCAoaS5lLiwgZGVsZXRlZCBmcm9tXG4gICAgICAgKiB0aGUgUFNCVCkgd2hlbiBjcmVhdGluZyB0aGUgZGVwb3NpdCB0cmFuc2FjdGlvbi5cbiAgICAgICAqL1xuICAgICAgaWdub3JlX3BzYnRfb3V0cHV0cz86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGhleC1zZXJpYWxpemVkIFBTQlQgKHZlcnNpb24gMCkgY29udGFpbmluZyB0aGUgdHJhbnNhY3Rpb24gaW5wdXRzIGFuZFxuICAgICAgICogYWxsIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3Igc2lnbmluZyAoZS5nLiwgdGFwcm9vdCBwYXRoIGFuZCBsZWFmXG4gICAgICAgKiBpbmZvcm1hdGlvbikuIFRoaXMgUFNCVCBtdXN0IG5vdCBoYXZlIGFueSB0cmFuc2FjdGlvbiBvdXRwdXRzOyB0aGV5XG4gICAgICAgKiB3aWxsIGJlIGFkZGVkIHRvIHRoZSByZXR1cm5lZCBQU0JULlxuICAgICAgICovXG4gICAgICBwc2J0OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgdG8gYmUgc3Rha2VkIGluIHNhdHNcbiAgICAgICAqL1xuICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGF0YSBuZWVkZWQgdG8gY3JlYXRlIGEgQmFieWxvbiBlYXJseS11bmJvbmRpbmcgb3Igc2xhc2hpbmcgdHJhbnNhY3Rpb24gKi9cbiAgICBCYWJ5bG9uU3Rha2luZ0Vhcmx5VW5ib25kOiB7XG4gICAgICBleHBsaWNpdF9wYXJhbXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nUGFyYW1zXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTY2hub3JyIHB1YmxpYyBrZXkgKGkuZS4sIDMyLWJ5dGUgWC1jb29yZGluYXRlKSBvZiB0aGUgZmluYWxpdHlcbiAgICAgICAqIHByb3ZpZGVyIHRvIHdoaWNoIHRoZSBzdGFrZSBpcyBkZWxlZ2F0ZWQuXG4gICAgICAgKi9cbiAgICAgIGZpbmFsaXR5X3Byb3ZpZGVyX3Brczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbG9jayB0aW1lIHVzZWQgZm9yIHRoZSB3aXRoZHJhd2FsIG91dHB1dCBpbiB0aGUgc3Rha2luZyBkZXBvc2l0IHRyYW5zYWN0aW9uXG4gICAgICAgKi9cbiAgICAgIGxvY2tfdGltZTogbnVtYmVyO1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uTmV0d29ya0lkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBzdGFrZXIuIFRoaXNcbiAgICAgICAqIGlzIHRoZSBrZXkgdGhhdCBzaWducyB0aGUgc2xhc2hpbmcsIHdpdGhkcmF3YWwsIGFuZCB1bmJvbmRpbmcgc2NyaXB0cy5cbiAgICAgICAqL1xuICAgICAgc3Rha2VyX3BrOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGFyYW1ldGVyIHZlcnNpb24gdG8gdXNlLiBJZiBgTm9uZWAsIHVzZXMgdGhlIGxhdGVzdCB2ZXJzaW9uLlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogbnVtYmVyIHwgbnVsbDtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgYHRydWVgLCB0aGUgcmVzdWx0aW5nIFBTQlQgaXMgZW5jb2RlZCBhcyBhIGJhc2U2NCBzdHJpbmcuXG4gICAgICAgKiBPdGhlcndpc2UsIGl0IGlzIGVuY29kZWQgYXMgYSBoZXggc3RyaW5nLlxuICAgICAgICovXG4gICAgICBhc19iYXNlNjQ/OiBib29sZWFuO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbi1pZCBvZiB0aGUgZGVwb3NpdCB0cmFuc2FjdGlvbiB0byB1bmJvbmQgb3Igc2xhc2guICovXG4gICAgICB0eGlkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgaW4gc2F0cyB0aGF0IHdhcyBzdGFrZWQgaW4gdGhlIHRyYW5zYWN0aW9uIHRvIHVuYm9uZCBvciBzbGFzaC5cbiAgICAgICAqL1xuICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uIG91dHB1dCBpbmRleCBvZiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvbiB0byB1bmJvbmQgb3Igc2xhc2guXG4gICAgICAgKiBGb3Igc3Rha2luZyB0cmFuc2FjdGlvbnMgZ2VuZXJhdGVkIGJ5IEN1YmVTaWduZXIsIHRoaXMgd2lsbCBhbHdheXMgYmUgemVyby5cbiAgICAgICAqL1xuICAgICAgdm91dDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBhcmFtZXRlciBzZXQgZm9yIEJhYnlsb24gc3Rha2luZy4gVGhlIGxhdGVzdCBwYXJhbWV0ZXIgc2V0cyBhcmVcbiAgICAgKiBhdmFpbGFibGUgZnJvbSA8aHR0cHM6Ly9naXRodWIuY29tL2JhYnlsb25jaGFpbi9uZXR3b3Jrcz5cbiAgICAgKi9cbiAgICBCYWJ5bG9uU3Rha2luZ1BhcmFtczoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQmxvY2sgaGVpZ2h0IGF0IHdoaWNoIHRoZXNlIHBhcmFtcyB3aWxsIGVudGVyIHVzZVxuICAgICAgICovXG4gICAgICBhY3RpdmF0aW9uX2hlaWdodDogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBQdWJsaWMga2V5cyBvZiB0aGUgY292ZW5hbnQgc2lnbmVycyAqL1xuICAgICAgY292ZW5hbnRfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUXVvcnVtIGZvciBjb3ZlbmFudCBzaWduZXIgKi9cbiAgICAgIGNvdmVuYW50X3F1b3J1bTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IGFtb3VudCB0aGF0IGNhbiBiZSBzdGFrZWQgaW4gYSBzaW5nbGUgdHhuXG4gICAgICAgKi9cbiAgICAgIG1heF9zdGFraW5nX2Ftb3VudDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IHRpbWVsb2NrIGZvciBzdGFraW5nXG4gICAgICAgKi9cbiAgICAgIG1heF9zdGFraW5nX3RpbWU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE1pbiBhbW91bnQgdGhhdCBtdXN0IGJlIHN0YWtlZFxuICAgICAgICovXG4gICAgICBtaW5fc3Rha2luZ19hbW91bnQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1pbiB0aW1lbG9jayBmb3Igc3Rha2luZ1xuICAgICAgICovXG4gICAgICBtaW5fc3Rha2luZ190aW1lOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNaW5pbXVtIGZlZSAoaW4gc2F0cykgdGhhdCBtdXN0IGJlIHBhaWQgYXMgcGFydCBvZiB0aGUgc2xhc2hpbmcgdHhuXG4gICAgICAgKi9cbiAgICAgIHNsYXNoaW5nX2ZlZT86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dHJhIG51bWJlciBvZiBzYXRzIHRvIHNsYXNoIGluIHRoZSBzbGFzaGluZyB0eG4uIFRoaXMgY2FuIGJlIHVzZWRcbiAgICAgICAqIHRvIGVuc3VyZSB0aGF0IHRoZSB0cmFuc2FjdGlvbiBtZWV0cyB0aGUgbWluaW11bSBzbGFzaGluZyByZXF1aXJlbWVudFxuICAgICAgICogZXZlbiBpZiB0aGUgY292ZW5hbnQgY29tbWl0dGVlIG1lbWJlcnMgdXNlIGZsb2F0cyB0byBjb21wdXRlIHRoZSBhbW91bnRcbiAgICAgICAqIHRoYXQgc2hvdWxkIGJlIHNsYXNoZWQuIFRoZSBkZWZhdWx0IGlzIDI7IGl0IHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IHRvXG4gICAgICAgKiBnbyBoaWdoZXIgdGhhbiB0aGlzLlxuICAgICAgICovXG4gICAgICBzbGFzaGluZ19tYXJnaW4/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBrX3NjcmlwdCB2YWx1ZSBmb3IgdGhlIDB0aCBvdXRwdXQgaW5kZXggb2YgYSBzbGFzaGluZyB0cmFuc2FjdGlvbixcbiAgICAgICAqIHNlcmlhbGl6ZWQgYXMgYSBoZXggYnl0ZSBzdHJpbmcuIFRoaXMgdmFsdWUgbXVzdCBiZSBwcmVzZW50IHRvIGNyZWF0ZVxuICAgICAgICogc2xhc2hpbmcgc2lnbmF0dXJlcy5cbiAgICAgICAqL1xuICAgICAgc2xhc2hpbmdfcGtfc2NyaXB0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGZyYWN0aW9uIG9mIHN0YWtlIHNsYXNoZWQgaWYgYSBkb3VibGUtc2lnbiBpcyBkZXRlY3RlZCAqL1xuICAgICAgc2xhc2hpbmdfcmF0ZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBCaXRjb2luIHRyYW5zYWN0aW9uIHRhZyBmb3Igc3Rha2luZyBtZXRhZGF0YS4gSWYgcHJlc2VudCwgYW4gaWRlbnRpZmlhYmxlXG4gICAgICAgKiBzdGFraW5nIG91dHB1dCAoaS5lLiwgb25lIHdpdGggYW4gT1BfUkVUVVJOKSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAgICAgKi9cbiAgICAgIHRhZz86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBGZWUgKGluIHNhdHMpIHRoYXQgbXVzdCBiZSBzcGVudCBhcyBwYXJ0IG9mIHRoZSB1bmJvbmRpbmcgdHhuXG4gICAgICAgKi9cbiAgICAgIHVuYm9uZGluZ19mZWU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1pbiB0aW1lbG9jayBmb3IgYW4gdW5ib25kaW5nIHNjcmlwdFxuICAgICAgICovXG4gICAgICB1bmJvbmRpbmdfdGltZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVyIHZlcnNpb25cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWN0aW9ucyBwb3NzaWJsZSB2aWEgdGhlIEJhYnlsb24gU3Rha2luZyBlbmRwb2ludCAqL1xuICAgIEJhYnlsb25TdGFraW5nUmVxdWVzdDpcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdEZXBvc2l0XCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJkZXBvc2l0XCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nRWFybHlVbmJvbmRcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgYWN0aW9uOiBcImVhcmx5X3VuYm9uZFwiO1xuICAgICAgICB9KVxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1dpdGhkcmF3YWxcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgYWN0aW9uOiBcIndpdGhkcmF3X3RpbWVsb2NrXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nV2l0aGRyYXdhbFwiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBhY3Rpb246IFwid2l0aGRyYXdfZWFybHlfdW5ib25kXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25TdGFraW5nV2l0aGRyYXdhbFwiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBhY3Rpb246IFwid2l0aGRyYXdfc2xhc2hpbmdcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdFYXJseVVuYm9uZFwiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBhY3Rpb246IFwic2xhc2hfZGVwb3NpdFwiO1xuICAgICAgICB9KVxuICAgICAgfCAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ0Vhcmx5VW5ib25kXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIGFjdGlvbjogXCJzbGFzaF9lYXJseV91bmJvbmRcIjtcbiAgICAgICAgfSk7XG4gICAgQmFieWxvblN0YWtpbmdSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBmZWUgaW4gc2F0c1xuICAgICAgICogQGV4YW1wbGUgMTMzN1xuICAgICAgICovXG4gICAgICBmZWU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBQU0JUIGluIGVpdGhlciBoZXggb3IgYmFzZTY0IHNlcmlhbGl6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIDcwNzM2Mjc0ZmYwMTAwNWUuLi5cbiAgICAgICAqL1xuICAgICAgcHNidDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEYXRhIG5lZWRlZCB0byBjcmVhdGUgYSBCYWJ5bG9uIHdpdGhkcmF3YWwgdHJhbnNhY3Rpb24gKi9cbiAgICBCYWJ5bG9uU3Rha2luZ1dpdGhkcmF3YWw6IHtcbiAgICAgIGV4cGxpY2l0X3BhcmFtcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvblN0YWtpbmdQYXJhbXNcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNjaG5vcnIgcHVibGljIGtleSAoaS5lLiwgMzItYnl0ZSBYLWNvb3JkaW5hdGUpIG9mIHRoZSBmaW5hbGl0eVxuICAgICAgICogcHJvdmlkZXIgdG8gd2hpY2ggdGhlIHN0YWtlIGlzIGRlbGVnYXRlZC5cbiAgICAgICAqL1xuICAgICAgZmluYWxpdHlfcHJvdmlkZXJfcGtzOiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsb2NrIHRpbWUgdXNlZCBmb3IgdGhlIHdpdGhkcmF3YWwgb3V0cHV0IGluIHRoZSBzdGFraW5nIGRlcG9zaXQgdHJhbnNhY3Rpb25cbiAgICAgICAqL1xuICAgICAgbG9ja190aW1lOiBudW1iZXI7XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhYnlsb25OZXR3b3JrSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU2Nobm9yciBwdWJsaWMga2V5IChpLmUuLCAzMi1ieXRlIFgtY29vcmRpbmF0ZSkgb2YgdGhlIHN0YWtlci4gVGhpc1xuICAgICAgICogaXMgdGhlIGtleSB0aGF0IHNpZ25zIHRoZSBzbGFzaGluZywgd2l0aGRyYXdhbCwgYW5kIHVuYm9uZGluZyBzY3JpcHRzLlxuICAgICAgICovXG4gICAgICBzdGFrZXJfcGs6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwYXJhbWV0ZXIgdmVyc2lvbiB0byB1c2UuIElmIGBOb25lYCwgdXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBgdHJ1ZWAsIHRoZSByZXN1bHRpbmcgUFNCVCBpcyBlbmNvZGVkIGFzIGEgYmFzZTY0IHN0cmluZy5cbiAgICAgICAqIE90aGVyd2lzZSwgaXQgaXMgZW5jb2RlZCBhcyBhIGhleCBzdHJpbmcuXG4gICAgICAgKi9cbiAgICAgIGFzX2Jhc2U2ND86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gZmVlIHZhbHVlLiBUaGUgYGZlZV90eXBlYCBmaWVsZCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhpc1xuICAgICAgICogaXMgYSBmaXhlZCBmZWUgaW4gc2F0cyBvciBhIHJhdGUgaW4gc2F0cyBwZXIgKGVzdGltYXRlZCkgdmlydHVhbCBieXRlIG9mXG4gICAgICAgKiB0cmFuc2FjdGlvbiB3ZWlnaHQgKGkuZS4sIHNhdHMgcGVyIHZiKS5cbiAgICAgICAqL1xuICAgICAgZmVlOiBudW1iZXI7XG4gICAgICBmZWVfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGZWVUeXBlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgd2l0aGRyYXdhbCByZWNpcGllbnQsIHNwZWNpZmllZCBhcyBhIEJpdGNvaW4gc3BlbmQgc2NyaXB0ICovXG4gICAgICByZWNpcGllbnQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24taWQgb2YgdGhlIGRlcG9zaXQgb3IgZWFybHkgdW5ib25kaW5nIHRyYW5zYWN0aW9uIHRvIHdpdGhkcmF3IGZyb20gKi9cbiAgICAgIHR4aWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIGxvY2sgaGVpZ2h0IChpbiBibG9ja3MpIGZvciB0aGlzIHRyYW5zYWN0aW9uLiBUaGUgcmVzdWx0aW5nXG4gICAgICAgKiB0cmFuc2FjdGlvbiBjYW5ub3QgYmUgbWluZWQgYmVmb3JlIHRoZSBzcGVjaWZpZWQgYmxvY2sgaGVpZ2h0LlxuICAgICAgICovXG4gICAgICB0eG5fbG9ja19oZWlnaHQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIGluIHNhdHMgdGhhdCBpcyBzdGFrZWQgaW4gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIHdpdGhkcmF3blxuICAgICAgICovXG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gb3V0cHV0IGluZGV4IG9mIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIGZyb20gd2hpY2ggdG8gd2l0aGRyYXcuXG4gICAgICAgKiBGb3Igc3Rha2luZyB0cmFuc2FjdGlvbnMgZ2VuZXJhdGVkIGJ5IEN1YmVTaWduZXIsIHRoaXMgd2lsbCBhbHdheXMgYmUgMC5cbiAgICAgICAqIEZvciBzbGFzaGluZyB0cmFuc2FjdGlvbnMgZ2VuZXJhdGVkIGJ5IEN1YmVTaWduZXIsIHRoaXMgd2lsbCBhbHdheXMgYmUgMS5cbiAgICAgICAqL1xuICAgICAgdm91dDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQmFkR2F0ZXdheUVycm9yQ29kZTpcbiAgICAgIHwgXCJHZW5lcmljXCJcbiAgICAgIHwgXCJDdXN0b21DaGFpblJwY0Vycm9yXCJcbiAgICAgIHwgXCJFc3Bsb3JhQXBpRXJyb3JcIlxuICAgICAgfCBcIlNlbnRyeUFwaUVycm9yXCJcbiAgICAgIHwgXCJDYWxsV2ViaG9va0Vycm9yXCJcbiAgICAgIHwgXCJPQXV0aFByb3ZpZGVyRXJyb3JcIlxuICAgICAgfCBcIk9pZGNEaXNvdmVyeUZhaWxlZFwiXG4gICAgICB8IFwiT2lkY0lzc3Vlckp3a0VuZHBvaW50VW5hdmFpbGFibGVcIlxuICAgICAgfCBcIlNtdHBTZXJ2ZXJVbmF2YWlsYWJsZVwiO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEJhZFJlcXVlc3RFcnJvckNvZGU6XG4gICAgICB8IFwiR2VuZXJpY0JhZFJlcXVlc3RcIlxuICAgICAgfCBcIkRpc2FsbG93ZWRBbGxvd1J1bGVSZWZlcmVuY2VcIlxuICAgICAgfCBcIkludmFsaWRQYWdpbmF0aW9uVG9rZW5cIlxuICAgICAgfCBcIkludmFsaWRFbWFpbFwiXG4gICAgICB8IFwiSW52YWxpZEVtYWlsVGVtcGxhdGVcIlxuICAgICAgfCBcIlF1ZXJ5TWV0cmljc0Vycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkVGVsZWdyYW1EYXRhXCJcbiAgICAgIHwgXCJWYWxpZGF0aW9uRXJyb3JcIlxuICAgICAgfCBcIldlYmhvb2tQb2xpY3lUaW1lb3V0T3V0T2ZCb3VuZHNcIlxuICAgICAgfCBcIldlYmhvb2tQb2xpY3lEaXNhbGxvd2VkVXJsU2NoZW1lXCJcbiAgICAgIHwgXCJXZWJob29rUG9saWN5RGlzYWxsb3dlZFVybEhvc3RcIlxuICAgICAgfCBcIldlYmhvb2tQb2xpY3lEaXNhbGxvd2VkSGVhZGVyc1wiXG4gICAgICB8IFwiUmVzZXJ2ZWROYW1lXCJcbiAgICAgIHwgXCJVc2VyRW1haWxOb3RDb25maWd1cmVkXCJcbiAgICAgIHwgXCJFbWFpbFBhc3N3b3JkTm90Rm91bmRcIlxuICAgICAgfCBcIlBhc3N3b3JkQXV0aE5vdEFsbG93ZWRCeUludml0YXRpb25cIlxuICAgICAgfCBcIk9uZVRpbWVDb2RlRXhwaXJlZFwiXG4gICAgICB8IFwiSW52YWxpZEJvZHlcIlxuICAgICAgfCBcIkludmFsaWRKd3RcIlxuICAgICAgfCBcIkludml0YXRpb25Ob0xvbmdlclZhbGlkXCJcbiAgICAgIHwgXCJUb2tlblJlcXVlc3RFcnJvclwiXG4gICAgICB8IFwiSW52YWxpZE1mYVJlY2VpcHRcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lDb3VudFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeU51bUF1dGhGYWN0b3JzXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5TnVtQWxsb3dlZEFwcHJvdmVyc1wiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeUdyYWNlUGVyaW9kVG9vTG9uZ1wiXG4gICAgICB8IFwiSW52YWxpZEJhYnlsb25TdGFraW5nUG9saWN5UGFyYW1zXCJcbiAgICAgIHwgXCJJbnZhbGlkU3VpVHhSZWNlaXZlcnNFbXB0eUFsbG93bGlzdFwiXG4gICAgICB8IFwiSW52YWxpZEJ0Y1R4UmVjZWl2ZXJzRW1wdHlBbGxvd2xpc3RcIlxuICAgICAgfCBcIkludmFsaWRSZXF1aXJlUm9sZVNlc3Npb25BbGxvd2xpc3RcIlxuICAgICAgfCBcIkludmFsaWRDcmVhdGVLZXlDb3VudFwiXG4gICAgICB8IFwiSW52YWxpZERpZmZpZUhlbGxtYW5Db3VudFwiXG4gICAgICB8IFwiT3JnSW52aXRlRXhpc3RpbmdVc2VyXCJcbiAgICAgIHwgXCJPcmdVc2VyQWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiT3JnTmFtZVRha2VuXCJcbiAgICAgIHwgXCJLd2tOb3RGb3VuZEluUmVnaW9uXCJcbiAgICAgIHwgXCJPcmdJc05vdE9yZ0V4cG9ydFwiXG4gICAgICB8IFwiUm9sZU5hbWVUYWtlblwiXG4gICAgICB8IFwiUG9saWN5TmFtZVRha2VuXCJcbiAgICAgIHwgXCJOYW1lVGFrZW5cIlxuICAgICAgfCBcIkNvbnRhY3ROYW1lSW52YWxpZFwiXG4gICAgICB8IFwiQ29udGFjdEFkZHJlc3Nlc0ludmFsaWRcIlxuICAgICAgfCBcIkNvbnRhY3RMYWJlbEludmFsaWRcIlxuICAgICAgfCBcIkNvbnRhY3RNb2RpZmllZFwiXG4gICAgICB8IFwiUG9saWN5Tm90Rm91bmRcIlxuICAgICAgfCBcIlBvbGljeVZlcnNpb25Ob3RGb3VuZFwiXG4gICAgICB8IFwiUG9saWN5UnVsZURpc2FsbG93ZWRCeVR5cGVcIlxuICAgICAgfCBcIlBvbGljeVR5cGVEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJQb2xpY3lEdXBsaWNhdGVFcnJvclwiXG4gICAgICB8IFwiUG9saWN5U3RpbGxBdHRhY2hlZFwiXG4gICAgICB8IFwiUG9saWN5TW9kaWZpZWRcIlxuICAgICAgfCBcIlBvbGljeU5vdEF0dGFjaGVkXCJcbiAgICAgIHwgXCJBZGRLZXlUb1JvbGVDb3VudFRvb0hpZ2hcIlxuICAgICAgfCBcIkludmFsaWRLZXlJZFwiXG4gICAgICB8IFwiSW52YWxpZFRpbWVMb2NrQWxyZWFkeUluVGhlUGFzdFwiXG4gICAgICB8IFwiSW52YWxpZFJlc3RyaWN0ZWRTY29wZXNcIlxuICAgICAgfCBcIkludmFsaWRVcGRhdGVcIlxuICAgICAgfCBcIkludmFsaWRNZXRhZGF0YUxlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZExlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZEtleU1hdGVyaWFsSWRcIlxuICAgICAgfCBcIktleU5vdEZvdW5kXCJcbiAgICAgIHwgXCJTaXdlQ2hhbGxlbmdlTm90Rm91bmRcIlxuICAgICAgfCBcIlNpd2VJbnZhbGlkUmVxdWVzdFwiXG4gICAgICB8IFwiVXNlckV4cG9ydERlcml2ZWRLZXlcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRQdWJsaWNLZXlJbnZhbGlkXCJcbiAgICAgIHwgXCJOaXN0UDI1NlB1YmxpY0tleUludmFsaWRcIlxuICAgICAgfCBcIlVuYWJsZVRvQWNjZXNzU210cFJlbGF5XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0SW5Qcm9ncmVzc1wiXG4gICAgICB8IFwiUm9sZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkUm9sZU5hbWVPcklkXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdE9yZ0lkTWlzc2luZ1wiXG4gICAgICB8IFwiSW52YWxpZE1mYVJlY2VpcHRJbnZhbGlkT3JnSWRcIlxuICAgICAgfCBcIk1mYVJlcXVlc3ROb3RGb3VuZFwiXG4gICAgICB8IFwiSW52YWxpZEtleVR5cGVcIlxuICAgICAgfCBcIkludmFsaWRQcm9wZXJ0aWVzRm9yS2V5VHlwZVwiXG4gICAgICB8IFwiTWlzbWF0Y2hlZEtleVByb3BlcnRpZXNQYXRjaFwiXG4gICAgICB8IFwiTWlzc2luZ0JpbmFuY2VBcGlLZXlcIlxuICAgICAgfCBcIkJpbmFuY2VLZXlNYXN0ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiSW52YWxpZEtleU1hdGVyaWFsXCJcbiAgICAgIHwgXCJJbnZhbGlkSGV4VmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRCYXNlMzJWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEJhc2U1OFZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFzZTY0VmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRTczU4VmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRGb3JrVmVyc2lvbkxlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZEV0aEFkZHJlc3NcIlxuICAgICAgfCBcIkludmFsaWRTdGVsbGFyQWRkcmVzc1wiXG4gICAgICB8IFwiSW52YWxpZE9yZ05hbWVPcklkXCJcbiAgICAgIHwgXCJJbnZhbGlkVXBkYXRlT3JnUmVxdWVzdERpc2FsbG93ZWRNZmFUeXBlXCJcbiAgICAgIHwgXCJJbnZhbGlkVXBkYXRlT3JnUmVxdWVzdEVtcHR5QWxsb3dlZE1mYVR5cGVzXCJcbiAgICAgIHwgXCJFbWFpbE90cERlbGF5VG9vU2hvcnRGb3JSZWdpc3Rlck1mYVwiXG4gICAgICB8IFwiSW52YWxpZFN0YWtlRGVwb3NpdFwiXG4gICAgICB8IFwiSW52YWxpZEJsb2JTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZERpZmZpZUhlbGxtYW5SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkU29sYW5hU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRFaXA3MTJTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiT25seVNwZWNpZnlPbmVcIlxuICAgICAgfCBcIk5vT2lkY0RhdGFJblByb29mXCJcbiAgICAgIHwgXCJJbnZhbGlkRXZtU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRFdGgyU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWREZXJpdmVLZXlSZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkU3Rha2luZ0Ftb3VudFwiXG4gICAgICB8IFwiQ3VzdG9tU3Rha2luZ0Ftb3VudE5vdEFsbG93ZWRGb3JXcmFwcGVyQ29udHJhY3RcIlxuICAgICAgfCBcIkludmFsaWRVbnN0YWtlUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZENyZWF0ZVVzZXJSZXF1ZXN0XCJcbiAgICAgIHwgXCJVc2VyQWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiSWRwVXNlckFscmVhZHlFeGlzdHNcIlxuICAgICAgfCBcIkNvZ25pdG9Vc2VyQWxyZWFkeU9yZ01lbWJlclwiXG4gICAgICB8IFwiVXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJVc2VyV2l0aEVtYWlsTm90Rm91bmRcIlxuICAgICAgfCBcIlBvbGljeUtleU1pc21hdGNoXCJcbiAgICAgIHwgXCJFbXB0eVNjb3Blc1wiXG4gICAgICB8IFwiSW52YWxpZFNjb3Blc0ZvclJvbGVTZXNzaW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkTGlmZXRpbWVcIlxuICAgICAgfCBcIk5vU2luZ2xlS2V5Rm9yVXNlclwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1BvbGljeVJ1bGVcIlxuICAgICAgfCBcIlNvdXJjZUlwQWxsb3dsaXN0RW1wdHlcIlxuICAgICAgfCBcIkxpbWl0V2luZG93VG9vTG9uZ1wiXG4gICAgICB8IFwiRXJjMjBDb250cmFjdERpc2FsbG93ZWRcIlxuICAgICAgfCBcIkVtcHR5UnVsZUVycm9yXCJcbiAgICAgIHwgXCJPcHRpb25hbExpc3RFbXB0eVwiXG4gICAgICB8IFwiTXVsdGlwbGVFeGNsdXNpdmVGaWVsZHNQcm92aWRlZFwiXG4gICAgICB8IFwiRHVwbGljYXRlRmllbGRFbnRyeVwiXG4gICAgICB8IFwiSW52YWxpZFJhbmdlXCJcbiAgICAgIHwgXCJJbnZhbGlkT3JnUG9saWN5UmVwZWF0ZWRSdWxlXCJcbiAgICAgIHwgXCJJbnZhbGlkU3VpVHJhbnNhY3Rpb25cIlxuICAgICAgfCBcIlN1aVNlbmRlck1pc21hdGNoXCJcbiAgICAgIHwgXCJBdmFTaWduSGFzaEVycm9yXCJcbiAgICAgIHwgXCJBdmFTaWduRXJyb3JcIlxuICAgICAgfCBcIkJ0Y1NlZ3dpdEhhc2hFcnJvclwiXG4gICAgICB8IFwiQnRjVGFwcm9vdEhhc2hFcnJvclwiXG4gICAgICB8IFwiQnRjU2lnbkVycm9yXCJcbiAgICAgIHwgXCJUYXByb290U2lnbkVycm9yXCJcbiAgICAgIHwgXCJFaXA3MTJTaWduRXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRNZW1iZXJSb2xlSW5Vc2VyQWRkXCJcbiAgICAgIHwgXCJJbnZhbGlkTWVtYmVyUm9sZUluUmVjaXBpZW50QWRkXCJcbiAgICAgIHwgXCJUaGlyZFBhcnR5VXNlckFscmVhZHlFeGlzdHNcIlxuICAgICAgfCBcIk9pZGNJZGVudGl0eUFscmVhZHlFeGlzdHNcIlxuICAgICAgfCBcIlVzZXJBbHJlYWR5SGFzSWRlbnRpdHlcIlxuICAgICAgfCBcIlRoaXJkUGFydHlVc2VyTm90Rm91bmRcIlxuICAgICAgfCBcIkRlbGV0ZU9pZGNVc2VyRXJyb3JcIlxuICAgICAgfCBcIkRlbGV0ZVVzZXJFcnJvclwiXG4gICAgICB8IFwiU2Vzc2lvblJvbGVNaXNtYXRjaFwiXG4gICAgICB8IFwiSW52YWxpZE9pZGNUb2tlblwiXG4gICAgICB8IFwiSW52YWxpZE9pZGNJZGVudGl0eVwiXG4gICAgICB8IFwiT2lkY0lzc3VlclVuc3VwcG9ydGVkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyTm90QWxsb3dlZFwiXG4gICAgICB8IFwiT2lkY0lzc3Vlck5vQXBwbGljYWJsZUp3a1wiXG4gICAgICB8IFwiRmlkb0tleUFscmVhZHlSZWdpc3RlcmVkXCJcbiAgICAgIHwgXCJGaWRvS2V5U2lnbkNvdW50VG9vTG93XCJcbiAgICAgIHwgXCJGaWRvVmVyaWZpY2F0aW9uRmFpbGVkXCJcbiAgICAgIHwgXCJGaWRvQ2hhbGxlbmdlTWZhTWlzbWF0Y2hcIlxuICAgICAgfCBcIlVuc3VwcG9ydGVkTGVnYWN5Q29nbml0b1Nlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRJZGVudGl0eVByb29mXCJcbiAgICAgIHwgXCJQYWdpbmF0aW9uRGF0YUV4cGlyZWRcIlxuICAgICAgfCBcIkV4aXN0aW5nS2V5c1Zpb2xhdGVFeGNsdXNpdmVLZXlBY2Nlc3NcIlxuICAgICAgfCBcIkV4cG9ydERlbGF5VG9vU2hvcnRcIlxuICAgICAgfCBcIkV4cG9ydFdpbmRvd1Rvb0xvbmdcIlxuICAgICAgfCBcIkludmFsaWRUb3RwRmFpbHVyZUxpbWl0XCJcbiAgICAgIHwgXCJJbnZhbGlkRWlwMTkxU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkNhbm5vdFJlc2VuZFVzZXJJbnZpdGF0aW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkTm90aWZpY2F0aW9uRW5kcG9pbnRDb3VudFwiXG4gICAgICB8IFwiQ2Fubm90RGVsZXRlUGVuZGluZ1N1YnNjcmlwdGlvblwiXG4gICAgICB8IFwiSW52YWxpZE5vdGlmaWNhdGlvblVybFByb3RvY29sXCJcbiAgICAgIHwgXCJFbXB0eU9uZU9mT3JnRXZlbnRGaWx0ZXJcIlxuICAgICAgfCBcIkVtcHR5QWxsRXhjZXB0T3JnRXZlbnRGaWx0ZXJcIlxuICAgICAgfCBcIkludmFsaWRUYXBOb2RlSGFzaFwiXG4gICAgICB8IFwiSW52YWxpZE9uZVRpbWVDb2RlXCJcbiAgICAgIHwgXCJNZXNzYWdlTm90Rm91bmRcIlxuICAgICAgfCBcIk1lc3NhZ2VBbHJlYWR5U2lnbmVkXCJcbiAgICAgIHwgXCJNZXNzYWdlUmVqZWN0ZWRcIlxuICAgICAgfCBcIk1lc3NhZ2VSZXBsYWNlZFwiXG4gICAgICB8IFwiSW52YWxpZE1lc3NhZ2VUeXBlXCJcbiAgICAgIHwgXCJFbXB0eUFkZHJlc3NcIlxuICAgICAgfCBcIkludmFsaWRFdGgyU2lnbmluZ1BvbGljeVNsb3RSYW5nZVwiXG4gICAgICB8IFwiSW52YWxpZEV0aDJTaWduaW5nUG9saWN5RXBvY2hSYW5nZVwiXG4gICAgICB8IFwiSW52YWxpZEV0aDJTaWduaW5nUG9saWN5VGltZXN0YW1wUmFuZ2VcIlxuICAgICAgfCBcIkludmFsaWRFdGgyU2lnbmluZ1BvbGljeU92ZXJsYXBwaW5nUnVsZVwiXG4gICAgICB8IFwiUnBjVXJsTWlzc2luZ1wiXG4gICAgICB8IFwiTW1pQ2hhaW5JZE1pc3NpbmdcIlxuICAgICAgfCBcIkV0aGVyc0ludmFsaWRScGNVcmxcIlxuICAgICAgfCBcIkV0aGVyc0dldFRyYW5zYWN0aW9uQ291bnRFcnJvclwiXG4gICAgICB8IFwiSW52YWxpZFBhc3N3b3JkXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ0ZlZVBsdXNEdXN0T3ZlcmZsb3dcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ0luY29ycmVjdEtleVwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdTZWd3aXROb25EZXBvc2l0XCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ1JlZ2lzdHJhdGlvblJlcXVpcmVzVGFwcm9vdFwiXG4gICAgICB8IFwiUHNidFNpZ25pbmdcIlxuICAgICAgfCBcIlRvb01hbnlSZXNldHNcIlxuICAgICAgfCBcIlRvb01hbnlSZXF1ZXN0c1wiXG4gICAgICB8IFwiVG9vTWFueUZhaWxlZExvZ2luc1wiXG4gICAgICB8IFwiQmFkQnRjTWVzc2FnZVNpZ25QMnNoRmxhZ1wiXG4gICAgICB8IFwiSW52YWxpZFRlbmRlcm1pbnRSZXF1ZXN0XCJcbiAgICAgIHwgXCJQb2xpY3lWZXJzaW9uTWF4UmVhY2hlZFwiXG4gICAgICB8IFwiUG9saWN5VmVyc2lvbkludmFsaWRcIlxuICAgICAgfCBcIlBvbGljeVNlY3JldExpbWl0UmVhY2hlZFwiXG4gICAgICB8IFwiUG9saWN5U2VjcmV0VG9vTGFyZ2VcIlxuICAgICAgfCBcIkludmFsaWRJbXBvcnRLZXlcIlxuICAgICAgfCBcIkFsaWVuT3duZXJJbnZhbGlkXCJcbiAgICAgIHwgXCJFbXB0eVVwZGF0ZVJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRQb2xpY3lSZWZlcmVuY2VcIlxuICAgICAgfCBcIlBvbGljeUVuZ2luZURpc2FibGVkXCJcbiAgICAgIHwgXCJJbnZhbGlkV2FzbVBvbGljeVwiXG4gICAgICB8IFwiSW52YWxpZFBvbGljeVwiXG4gICAgICB8IFwiUmVkdW5kYW50RGVyaXZhdGlvblBhdGhcIlxuICAgICAgfCBcIkltcG9ydEtleU1pc3NpbmdcIlxuICAgICAgfCBcIkludmFsaWRBYmlNZXRob2RzXCJcbiAgICAgIHwgXCJCYWJ5bG9uQ292U2lnblwiXG4gICAgICB8IFwiSW52YWxpZFBvbGljeUxvZ3NSZXF1ZXN0XCJcbiAgICAgIHwgXCJVc2VyUHJvZmlsZU1pZ3JhdGlvbk11bHRpcGxlRW50cmllc1wiXG4gICAgICB8IFwiVXNlclByb2ZpbGVNaWdyYXRpb25Ub29NYW55SXRlbXNcIlxuICAgICAgfCBcIklucHV0VG9vU2hvcnRcIlxuICAgICAgfCBcIkludmFsaWRUd2Vha0xlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZEN1c3RvbUNoYWluc1wiXG4gICAgICB8IFwiSW52YWxpZFJwY1JlcXVlc3RcIjtcbiAgICBCaWxsaW5nQXJnczoge1xuICAgICAgYmlsbGluZ19vcmc6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICBldmVudF90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbGxpbmdFdmVudFwiXTtcbiAgICAgIGtleT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgcm9sZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgdXNlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgIH07XG4gICAgQmlsbGluZ0RpbWVuc2lvbnM6IHtcbiAgICAgIGtpbmQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmlsbGluZ0V2ZW50XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbWV0cmljcyBtdXN0IGluY2x1ZGUgJ29yZ19pZCcgYXMgYSBkaW1lbnNpb24uICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCaWxsaW5nIGV2ZW50IHR5cGVzLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQmlsbGluZ0V2ZW50OlxuICAgICAgfCBcIk1taVwiXG4gICAgICB8IFwiTW1pTWVzc2FnZUdldFwiXG4gICAgICB8IFwiTW1pTWVzc2FnZUxpc3RcIlxuICAgICAgfCBcIk1taU1lc3NhZ2VTaWduXCJcbiAgICAgIHwgXCJNbWlNZXNzYWdlUmVqZWN0XCJcbiAgICAgIHwgXCJNbWlNZXNzYWdlRGVsZXRlXCJcbiAgICAgIHwgXCJBYm91dE1lXCJcbiAgICAgIHwgXCJVc2VyUmVzZXRFbWFpbEluaXRcIlxuICAgICAgfCBcIlVzZXJSZXNldEVtYWlsQ29tcGxldGVcIlxuICAgICAgfCBcIlVzZXJEZWxldGVUb3RwXCJcbiAgICAgIHwgXCJVc2VyUmVzZXRUb3RwSW5pdFwiXG4gICAgICB8IFwiVXNlclJlc2V0VG90cENvbXBsZXRlXCJcbiAgICAgIHwgXCJVc2VyVmVyaWZ5VG90cFwiXG4gICAgICB8IFwiVXNlclJlZ2lzdGVyRmlkb0luaXRcIlxuICAgICAgfCBcIlVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZVwiXG4gICAgICB8IFwiVXNlckRlbGV0ZUZpZG9cIlxuICAgICAgfCBcIkNyZWF0ZVByb29mT2lkY1wiXG4gICAgICB8IFwiQ3JlYXRlUHJvb2ZDdWJlU2lnbmVyXCJcbiAgICAgIHwgXCJWZXJpZnlQcm9vZlwiXG4gICAgICB8IFwiQWRkT2lkY0lkZW50aXR5XCJcbiAgICAgIHwgXCJSZW1vdmVPaWRjSWRlbnRpdHlcIlxuICAgICAgfCBcIkxpc3RPaWRjSWRlbnRpdGllc1wiXG4gICAgICB8IFwiR2V0T3JnXCJcbiAgICAgIHwgXCJVcGRhdGVPcmdcIlxuICAgICAgfCBcIkdldE9yZ0V4cG9ydFwiXG4gICAgICB8IFwiQ3JlYXRlT3JnXCJcbiAgICAgIHwgXCJMaXN0S2V5c1wiXG4gICAgICB8IFwiQXR0ZXN0S2V5XCJcbiAgICAgIHwgXCJHZXRLZXlcIlxuICAgICAgfCBcIkdldEtleUJ5TWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiTGlzdEtleVJvbGVzXCJcbiAgICAgIHwgXCJVcGRhdGVLZXlcIlxuICAgICAgfCBcIkxpc3RIaXN0b3JpY2FsS2V5VHhcIlxuICAgICAgfCBcIkludml0ZVwiXG4gICAgICB8IFwiQ2FuY2VsSW52aXRhdGlvblwiXG4gICAgICB8IFwiTGlzdEludml0YXRpb25zXCJcbiAgICAgIHwgXCJMaXN0VXNlcnNcIlxuICAgICAgfCBcIkdldFVzZXJcIlxuICAgICAgfCBcIkdldFVzZXJCeUVtYWlsXCJcbiAgICAgIHwgXCJHZXRVc2VyQnlPaWRjXCJcbiAgICAgIHwgXCJVcGRhdGVNZW1iZXJzaGlwXCJcbiAgICAgIHwgXCJSZXNldE1lbWJlck1mYVwiXG4gICAgICB8IFwiQ29tcGxldGVSZXNldE1lbWJlck1mYVwiXG4gICAgICB8IFwiQ3JlYXRlUm9sZVwiXG4gICAgICB8IFwiQXR0ZXN0Um9sZVwiXG4gICAgICB8IFwiR2V0Um9sZVwiXG4gICAgICB8IFwiTGlzdFRva2VuS2V5c1wiXG4gICAgICB8IFwiTGlzdFJvbGVzXCJcbiAgICAgIHwgXCJHZXRSb2xlS2V5XCJcbiAgICAgIHwgXCJMaXN0Um9sZUtleXNcIlxuICAgICAgfCBcIkxpc3RSb2xlVXNlcnNcIlxuICAgICAgfCBcIlVwZGF0ZVJvbGVcIlxuICAgICAgfCBcIkRlbGV0ZVJvbGVcIlxuICAgICAgfCBcIkNvbmZpZ3VyZUVtYWlsXCJcbiAgICAgIHwgXCJHZXRFbWFpbENvbmZpZ1wiXG4gICAgICB8IFwiRGVsZXRlRW1haWxDb25maWdcIlxuICAgICAgfCBcIkxpc3RIaXN0b3JpY2FsUm9sZVR4XCJcbiAgICAgIHwgXCJDcmVhdGVQb2xpY3lcIlxuICAgICAgfCBcIkdldFBvbGljeVwiXG4gICAgICB8IFwiTGlzdFBvbGljaWVzXCJcbiAgICAgIHwgXCJEZWxldGVQb2xpY3lcIlxuICAgICAgfCBcIlVwZGF0ZVBvbGljeVwiXG4gICAgICB8IFwiSW52b2tlUG9saWN5XCJcbiAgICAgIHwgXCJHZXRQb2xpY3lMb2dzXCJcbiAgICAgIHwgXCJVcGxvYWRXYXNtUG9saWN5XCJcbiAgICAgIHwgXCJHZXRQb2xpY3lTZWNyZXRzXCJcbiAgICAgIHwgXCJVcGRhdGVQb2xpY3lTZWNyZXRzXCJcbiAgICAgIHwgXCJTZXRQb2xpY3lTZWNyZXRcIlxuICAgICAgfCBcIkRlbGV0ZVBvbGljeVNlY3JldFwiXG4gICAgICB8IFwiQ3JlYXRlUG9saWN5SW1wb3J0S2V5XCJcbiAgICAgIHwgXCJHZXRQb2xpY3lCdWNrZXRcIlxuICAgICAgfCBcIkxpc3RQb2xpY3lCdWNrZXRzXCJcbiAgICAgIHwgXCJVcGRhdGVQb2xpY3lCdWNrZXRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnREZWxldGVcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRMaXN0XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0SW5pdFwiXG4gICAgICB8IFwiVXNlckV4cG9ydENvbXBsZXRlXCJcbiAgICAgIHwgXCJBZGRVc2VyVG9Sb2xlXCJcbiAgICAgIHwgXCJSZW1vdmVVc2VyRnJvbVJvbGVcIlxuICAgICAgfCBcIk1mYUFwcHJvdmVDc1wiXG4gICAgICB8IFwiTWZhUmVqZWN0Q3NcIlxuICAgICAgfCBcIk1mYUdldFwiXG4gICAgICB8IFwiTWZhTGlzdFwiXG4gICAgICB8IFwiQWRkS2V5c1RvUm9sZVwiXG4gICAgICB8IFwiUmVtb3ZlS2V5RnJvbVJvbGVcIlxuICAgICAgfCBcIkNyZWF0ZVRva2VuXCJcbiAgICAgIHwgXCJDcmVhdGVTZXNzaW9uXCJcbiAgICAgIHwgXCJSZXZva2VTZXNzaW9uXCJcbiAgICAgIHwgXCJSZXZva2VDdXJyZW50U2Vzc2lvblwiXG4gICAgICB8IFwiUmV2b2tlU2Vzc2lvbnNcIlxuICAgICAgfCBcIkxpc3RTZXNzaW9uc1wiXG4gICAgICB8IFwiR2V0U2Vzc2lvblwiXG4gICAgICB8IFwiU2lnbmVyU2Vzc2lvblJlZnJlc2hcIlxuICAgICAgfCBcIk1mYUFwcHJvdmVUb3RwXCJcbiAgICAgIHwgXCJNZmFSZWplY3RUb3RwXCJcbiAgICAgIHwgXCJNZmFGaWRvSW5pdFwiXG4gICAgICB8IFwiTWZhQXBwcm92ZUZpZG9Db21wbGV0ZVwiXG4gICAgICB8IFwiTWZhUmVqZWN0Rmlkb0NvbXBsZXRlXCJcbiAgICAgIHwgXCJNZmFFbWFpbEluaXRcIlxuICAgICAgfCBcIk1mYUVtYWlsQ29tcGxldGVcIlxuICAgICAgfCBcIkN1YmUzc2lnbmVySGVhcnRiZWF0XCJcbiAgICAgIHwgXCJDcmVhdGVDb250YWN0XCJcbiAgICAgIHwgXCJHZXRDb250YWN0XCJcbiAgICAgIHwgXCJMaXN0Q29udGFjdHNcIlxuICAgICAgfCBcIkRlbGV0ZUNvbnRhY3RcIlxuICAgICAgfCBcIlVwZGF0ZUNvbnRhY3RcIlxuICAgICAgfCBcIkxvb2t1cENvbnRhY3RzQnlBZGRyZXNzXCJcbiAgICAgIHwgXCJRdWVyeU1ldHJpY3NcIlxuICAgICAgfCBcIlF1ZXJ5QXVkaXRMb2dcIlxuICAgICAgfCBcIkNvdW50c1wiXG4gICAgICB8IFwiQ3JlYXRlS2V5XCJcbiAgICAgIHwgXCJJbXBvcnRLZXlcIlxuICAgICAgfCBcIkNyZWF0ZUtleUltcG9ydEtleVwiXG4gICAgICB8IFwiRGVyaXZlS2V5XCJcbiAgICAgIHwgXCJEZWxldGVLZXlcIlxuICAgICAgfCBcIkF2YVNpZ25cIlxuICAgICAgfCBcIkF2YVNlcmlhbGl6ZWRUeFNpZ25cIlxuICAgICAgfCBcIkJhYnlsb25SZWdpc3RyYXRpb25cIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nXCJcbiAgICAgIHwgXCJCYWJ5bG9uQ292U2lnblwiXG4gICAgICB8IFwiQmluYW5jZVNpZ25cIlxuICAgICAgfCBcIkJsb2JTaWduXCJcbiAgICAgIHwgXCJCdGNNZXNzYWdlU2lnblwiXG4gICAgICB8IFwiQnRjU2lnblwiXG4gICAgICB8IFwiRGlmZmllSGVsbG1hbkV4Y2hhbmdlXCJcbiAgICAgIHwgXCJQc2J0U2lnblwiXG4gICAgICB8IFwiUHNidExlZ2FjeUlucHV0U2lnblwiXG4gICAgICB8IFwiUHNidFNlZ3dpdElucHV0U2lnblwiXG4gICAgICB8IFwiUHNidFRhcHJvb3RJbnB1dFNpZ25cIlxuICAgICAgfCBcIlRhcHJvb3RTaWduXCJcbiAgICAgIHwgXCJFaXA3MTJTaWduXCJcbiAgICAgIHwgXCJFaXAxOTFTaWduXCJcbiAgICAgIHwgXCJFdGgxU2lnblwiXG4gICAgICB8IFwiRXRoMlNpZ25cIlxuICAgICAgfCBcIlNvbGFuYVNpZ25cIlxuICAgICAgfCBcIlN1aVNpZ25cIlxuICAgICAgfCBcIlRlbmRlcm1pbnRTaWduXCJcbiAgICAgIHwgXCJTdGFrZVwiXG4gICAgICB8IFwiVW5zdGFrZVwiXG4gICAgICB8IFwiUGFzc2tleUF1dGhJbml0XCJcbiAgICAgIHwgXCJQYXNza2V5QXV0aENvbXBsZXRlXCJcbiAgICAgIHwgXCJPaWRjQXV0aFwiXG4gICAgICB8IFwiT2F1dGgyVHdpdHRlclwiXG4gICAgICB8IFwiT0F1dGgyVG9rZW5SZWZyZXNoXCJcbiAgICAgIHwgXCJFbWFpbE90cEF1dGhcIlxuICAgICAgfCBcIlNpd2VJbml0XCJcbiAgICAgIHwgXCJTaXdlQ29tcGxldGVcIlxuICAgICAgfCBcIlRlbGVncmFtQXV0aFwiXG4gICAgICB8IFwiQ3JlYXRlT2lkY1VzZXJcIlxuICAgICAgfCBcIkRlbGV0ZU9pZGNVc2VyXCJcbiAgICAgIHwgXCJEZWxldGVVc2VyXCJcbiAgICAgIHwgXCJDcmVhdGVFb3RzTm9uY2VzXCJcbiAgICAgIHwgXCJFb3RzU2lnblwiXG4gICAgICB8IFwiQXV0aE1pZ3JhdGlvbklkZW50aXR5QWRkXCJcbiAgICAgIHwgXCJBdXRoTWlncmF0aW9uSWRlbnRpdHlSZW1vdmVcIlxuICAgICAgfCBcIkF1dGhNaWdyYXRpb25Vc2VyVXBkYXRlXCJcbiAgICAgIHwgXCJLZXlDcmVhdGVkXCJcbiAgICAgIHwgXCJLZXlJbXBvcnRlZFwiXG4gICAgICB8IFwiSW52aXRhdGlvbkFjY2VwdFwiXG4gICAgICB8IFwiSWRwQXV0aGVudGljYXRlXCJcbiAgICAgIHwgXCJJZHBQYXNzd29yZFJlc2V0UmVxdWVzdFwiXG4gICAgICB8IFwiSWRwUGFzc3dvcmRSZXNldENvbmZpcm1cIlxuICAgICAgfCBcIlJwY0FwaVwiXG4gICAgICB8IFwiUnBjQ3JlYXRlVHJhbnNhY3Rpb25cIlxuICAgICAgfCBcIlJwY0dldFRyYW5zYWN0aW9uXCJcbiAgICAgIHwgXCJScGNMaXN0VHJhbnNhY3Rpb25zXCJcbiAgICAgIHwgXCJScGNSZXRyeVRyYW5zYWN0aW9uXCJcbiAgICAgIHwgXCJScGNCaW5hbmNlXCJcbiAgICAgIHwgXCJDdXN0b21DaGFpblJwY0NhbGxcIlxuICAgICAgfCBcIkVzcGxvcmFBcGlDYWxsXCJcbiAgICAgIHwgXCJTZW50cnlBcGlDYWxsXCJcbiAgICAgIHwgXCJTZW50cnlBcGlDYWxsUHVibGljXCJcbiAgICAgIHwgXCJNbWlKd2tTZXRcIlxuICAgICAgfCBcIkF0dGVzdGF0aW9uSndrU2V0XCJcbiAgICAgIHwgXCJVc2VyT3Jnc1wiXG4gICAgICB8IFwiUHVibGljT3JnSW5mb1wiXG4gICAgICB8IFwiRW1haWxNeU9yZ3NcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZW52ZWxvcGUgZm9yIGFsbCBCaW5hbmNlIFJQQyBtZXRob2RzLiAqL1xuICAgIEJpbmFuY2VBY2NvdW50SW5mb1BhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NvdW50SW5mb1JlcXVlc3RcIl0gJiB7XG4gICAgICBkcnlSdW4/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VEcnlSdW5Nb2RlXCJdIHwgbnVsbDtcbiAgICAgIGtleUlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGZsb2F0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgXCJyZWNlaXZlIHdpbmRvd1wiLCBpLmUuLCBmb3IgaG93IGxvbmcgdGhlIHJlcXVlc3Qgc3RheXMgdmFsaWQuXG4gICAgICAgKiBNYXkgb25seSBiZSBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzLCB3aXRoIHVwIHRvIHRocmVlIGRlY2ltYWwgcGxhY2VzIG9mIHByZWNpc2lvbi5cbiAgICAgICAqIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIDEwMDAwLiBNdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gNjAwMDAuXG4gICAgICAgKi9cbiAgICAgIHJlY3ZXaW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgQmluYW5jZUFwaVByb3BlcnRpZXNQYXRjaDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgQmluYW5jZS1pc3N1ZWQgQVBJIGtleSBzdHJpbmcuIEVuY3J5cHRlZCBzZXJ2ZXItc2lkZSBiZWZvcmUgc3RvcmFnZS4gKi9cbiAgICAgIGFwaV9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbWFpbCBhZGRyZXNzIG9mIHRoZSBCaW5hbmNlIChtYXN0ZXIgb3Igc3ViKSBhY2NvdW50IHRoaXMga2V5IGF1dGhlbnRpY2F0ZXMgYXMuICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhpcyBjb3JyZXNwb25kcyB0byBhIG1hc3RlciAoYXMgb3Bwb3NlZCB0byBhIHN1YikgYWNjb3VudCBvbiBCaW5hbmNlLiAqL1xuICAgICAgaXNfbWFzdGVyPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFyYml0cmFyeSBsYWJlbC4gVXNlZnVsIGZvciBzdG9yaW5nIHRoZSBjb3JyZXNwb25kaW5nIEFQSSBrZXkgbGFiZWwgb24gdGhlIEJpbmFuY2Ugc2lkZS4gKi9cbiAgICAgIGxhYmVsPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBlbnZlbG9wZSBmb3IgYWxsIEJpbmFuY2UgUlBDIG1ldGhvZHMuICovXG4gICAgQmluYW5jZURlcG9zaXRQYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFJlcXVlc3RcIl0gJiB7XG4gICAgICBkcnlSdW4/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VEcnlSdW5Nb2RlXCJdIHwgbnVsbDtcbiAgICAgIGtleUlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGZsb2F0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgXCJyZWNlaXZlIHdpbmRvd1wiLCBpLmUuLCBmb3IgaG93IGxvbmcgdGhlIHJlcXVlc3Qgc3RheXMgdmFsaWQuXG4gICAgICAgKiBNYXkgb25seSBiZSBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzLCB3aXRoIHVwIHRvIHRocmVlIGRlY2ltYWwgcGxhY2VzIG9mIHByZWNpc2lvbi5cbiAgICAgICAqIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIDEwMDAwLiBNdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gNjAwMDAuXG4gICAgICAgKi9cbiAgICAgIHJlY3ZXaW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgQmluYW5jZURyeVJ1bkFyZ3M6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIEJpbmFuY2UgQVBJIG1ldGhvZCB0aGF0IHdvdWxkIGhhdmUgYmVlbiB1c2VkICovXG4gICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIEJpbmFuY2UgQVBJIHVybCBtZXRob2QgdGhhdCB3b3VsZCBoYXZlIGJlZW4gY2FsbGVkICovXG4gICAgICB1cmw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEaWZmZXJlbnQgXCJkcnkgcnVuXCIgbW9kZXMgZm9yIGV4ZWN1dGluZyBCaW5hbmNlIHJlcXVlc3RzLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQmluYW5jZURyeVJ1bk1vZGU6IFwiTk9fU0lHTlwiIHwgXCJOT19TVUJNSVRcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQmluYW5jZS1mYW1pbHkgUlBDIG1ldGhvZHMuIEVhY2ggdmFyaWFudCBhdXRoZW50aWNhdGVzIGFzIHRoZVxuICAgICAqIFtgS2V5VHlwZTo6RWQyNTUxOUJpbmFuY2VBcGlgXSBrZXkgaW4gaXRzIGBwYXJhbXMua2V5X2lkYC5cbiAgICAgKi9cbiAgICBCaW5hbmNlUnBjOlxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2JpbmFuY2VTdWJUb01hc3RlclwiO1xuICAgICAgICAgIHBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlU3ViVG9NYXN0ZXJQYXJhbXNcIl07XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1ldGhvZDogXCJjc19iaW5hbmNlU3ViVG9TdWJcIjtcbiAgICAgICAgICBwYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZVN1YlRvU3ViUGFyYW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtZXRob2Q6IFwiY3NfYmluYW5jZVVuaXZlcnNhbFRyYW5zZmVyXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VVbml2ZXJzYWxUcmFuc2ZlclBhcmFtc1wiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2JpbmFuY2VTdWJBY2NvdW50QXNzZXRzXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VTdWJBY2NvdW50QXNzZXRzUGFyYW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtZXRob2Q6IFwiY3NfYmluYW5jZUFjY291bnRJbmZvXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VBY2NvdW50SW5mb1BhcmFtc1wiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2JpbmFuY2VTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5XCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5UGFyYW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtZXRob2Q6IFwiY3NfYmluYW5jZVVuaXZlcnNhbFRyYW5zZmVySGlzdG9yeVwiO1xuICAgICAgICAgIHBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlVW5pdmVyc2FsVHJhbnNmZXJIaXN0b3J5UGFyYW1zXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtZXRob2Q6IFwiY3NfYmluYW5jZVdpdGhkcmF3XCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VXaXRoZHJhd1BhcmFtc1wiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2JpbmFuY2VXaXRoZHJhd0hpc3RvcnlcIjtcbiAgICAgICAgICBwYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZVdpdGhkcmF3SGlzdG9yeVBhcmFtc1wiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2JpbmFuY2VEZXBvc2l0XCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VEZXBvc2l0UGFyYW1zXCJdO1xuICAgICAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgYnkgdGhlIHR5cGVkIGBiaW5hbmNlX3NpZ25gIGVuZHBvaW50LiAqL1xuICAgIEJpbmFuY2VTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZnVsbCBzaWduZWQgcXVlcnkgc3RyaW5nLCByZWFkeSB0byBiZSBzdWJtaXR0ZWQgdG8gQmluYW5jZS5cbiAgICAgICAqIEVuY29kZWQgYXMgYDx1cmxlbmNvZGVkIHBhcmFtcz4mcmVjdldpbmRvdz08bXM+JnRpbWVzdGFtcD08bXM+JnNpZ25hdHVyZT08dXJsZW5jb2RlZCBiYXNlNjQgc2lnPmAuXG4gICAgICAgKi9cbiAgICAgIHNpZ25lZF9xdWVyeTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGVudmVsb3BlIGZvciBhbGwgQmluYW5jZSBSUEMgbWV0aG9kcy4gKi9cbiAgICBCaW5hbmNlU3ViQWNjb3VudEFzc2V0c1BhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdWJBY2NvdW50QXNzZXRzUmVxdWVzdFwiXSAmIHtcbiAgICAgIGRyeVJ1bj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZURyeVJ1bk1vZGVcIl0gfCBudWxsO1xuICAgICAga2V5SWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogZmxvYXRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBcInJlY2VpdmUgd2luZG93XCIsIGkuZS4sIGZvciBob3cgbG9uZyB0aGUgcmVxdWVzdCBzdGF5cyB2YWxpZC5cbiAgICAgICAqIE1heSBvbmx5IGJlIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMsIHdpdGggdXAgdG8gdGhyZWUgZGVjaW1hbCBwbGFjZXMgb2YgcHJlY2lzaW9uLlxuICAgICAgICogSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gMTAwMDAuIE11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiA2MDAwMC5cbiAgICAgICAqL1xuICAgICAgcmVjdldpbmRvdz86IG51bWJlciB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZW52ZWxvcGUgZm9yIGFsbCBCaW5hbmNlIFJQQyBtZXRob2RzLiAqL1xuICAgIEJpbmFuY2VTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5UGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1YkFjY291bnRUcmFuc2Zlckhpc3RvcnlSZXF1ZXN0XCJdICYge1xuICAgICAgZHJ5UnVuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlRHJ5UnVuTW9kZVwiXSB8IG51bGw7XG4gICAgICBrZXlJZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBmbG9hdFxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIFwicmVjZWl2ZSB3aW5kb3dcIiwgaS5lLiwgZm9yIGhvdyBsb25nIHRoZSByZXF1ZXN0IHN0YXlzIHZhbGlkLlxuICAgICAgICogTWF5IG9ubHkgYmUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcywgd2l0aCB1cCB0byB0aHJlZSBkZWNpbWFsIHBsYWNlcyBvZiBwcmVjaXNpb24uXG4gICAgICAgKiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byAxMDAwMC4gTXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDYwMDAwLlxuICAgICAgICovXG4gICAgICByZWN2V2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBlbnZlbG9wZSBmb3IgYWxsIEJpbmFuY2UgUlBDIG1ldGhvZHMuICovXG4gICAgQmluYW5jZVN1YlRvTWFzdGVyUGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1YlRvTWFzdGVyUmVxdWVzdFwiXSAmIHtcbiAgICAgIGRyeVJ1bj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZURyeVJ1bk1vZGVcIl0gfCBudWxsO1xuICAgICAga2V5SWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogZmxvYXRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBcInJlY2VpdmUgd2luZG93XCIsIGkuZS4sIGZvciBob3cgbG9uZyB0aGUgcmVxdWVzdCBzdGF5cyB2YWxpZC5cbiAgICAgICAqIE1heSBvbmx5IGJlIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMsIHdpdGggdXAgdG8gdGhyZWUgZGVjaW1hbCBwbGFjZXMgb2YgcHJlY2lzaW9uLlxuICAgICAgICogSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gMTAwMDAuIE11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiA2MDAwMC5cbiAgICAgICAqL1xuICAgICAgcmVjdldpbmRvdz86IG51bWJlciB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZW52ZWxvcGUgZm9yIGFsbCBCaW5hbmNlIFJQQyBtZXRob2RzLiAqL1xuICAgIEJpbmFuY2VTdWJUb1N1YlBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdWJUb1N1YlJlcXVlc3RcIl0gJiB7XG4gICAgICBkcnlSdW4/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VEcnlSdW5Nb2RlXCJdIHwgbnVsbDtcbiAgICAgIGtleUlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGZsb2F0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgXCJyZWNlaXZlIHdpbmRvd1wiLCBpLmUuLCBmb3IgaG93IGxvbmcgdGhlIHJlcXVlc3Qgc3RheXMgdmFsaWQuXG4gICAgICAgKiBNYXkgb25seSBiZSBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzLCB3aXRoIHVwIHRvIHRocmVlIGRlY2ltYWwgcGxhY2VzIG9mIHByZWNpc2lvbi5cbiAgICAgICAqIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIDEwMDAwLiBNdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gNjAwMDAuXG4gICAgICAgKi9cbiAgICAgIHJlY3ZXaW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGVudmVsb3BlIGZvciBhbGwgQmluYW5jZSBSUEMgbWV0aG9kcy4gKi9cbiAgICBCaW5hbmNlVW5pdmVyc2FsVHJhbnNmZXJIaXN0b3J5UGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuaXZlcnNhbFRyYW5zZmVySGlzdG9yeVJlcXVlc3RcIl0gJiB7XG4gICAgICBkcnlSdW4/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpbmFuY2VEcnlSdW5Nb2RlXCJdIHwgbnVsbDtcbiAgICAgIGtleUlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGZsb2F0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgXCJyZWNlaXZlIHdpbmRvd1wiLCBpLmUuLCBmb3IgaG93IGxvbmcgdGhlIHJlcXVlc3Qgc3RheXMgdmFsaWQuXG4gICAgICAgKiBNYXkgb25seSBiZSBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzLCB3aXRoIHVwIHRvIHRocmVlIGRlY2ltYWwgcGxhY2VzIG9mIHByZWNpc2lvbi5cbiAgICAgICAqIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIDEwMDAwLiBNdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gNjAwMDAuXG4gICAgICAgKi9cbiAgICAgIHJlY3ZXaW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGVudmVsb3BlIGZvciBhbGwgQmluYW5jZSBSUEMgbWV0aG9kcy4gKi9cbiAgICBCaW5hbmNlVW5pdmVyc2FsVHJhbnNmZXJQYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5pdmVyc2FsVHJhbnNmZXJSZXF1ZXN0XCJdICYge1xuICAgICAgZHJ5UnVuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlRHJ5UnVuTW9kZVwiXSB8IG51bGw7XG4gICAgICBrZXlJZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBmbG9hdFxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIFwicmVjZWl2ZSB3aW5kb3dcIiwgaS5lLiwgZm9yIGhvdyBsb25nIHRoZSByZXF1ZXN0IHN0YXlzIHZhbGlkLlxuICAgICAgICogTWF5IG9ubHkgYmUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcywgd2l0aCB1cCB0byB0aHJlZSBkZWNpbWFsIHBsYWNlcyBvZiBwcmVjaXNpb24uXG4gICAgICAgKiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byAxMDAwMC4gTXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDYwMDAwLlxuICAgICAgICovXG4gICAgICByZWN2V2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBlbnZlbG9wZSBmb3IgYWxsIEJpbmFuY2UgUlBDIG1ldGhvZHMuICovXG4gICAgQmluYW5jZVdpdGhkcmF3SGlzdG9yeVBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJXaXRoZHJhd0hpc3RvcnlSZXF1ZXN0XCJdICYge1xuICAgICAgZHJ5UnVuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlRHJ5UnVuTW9kZVwiXSB8IG51bGw7XG4gICAgICBrZXlJZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBmbG9hdFxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIFwicmVjZWl2ZSB3aW5kb3dcIiwgaS5lLiwgZm9yIGhvdyBsb25nIHRoZSByZXF1ZXN0IHN0YXlzIHZhbGlkLlxuICAgICAgICogTWF5IG9ubHkgYmUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcywgd2l0aCB1cCB0byB0aHJlZSBkZWNpbWFsIHBsYWNlcyBvZiBwcmVjaXNpb24uXG4gICAgICAgKiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byAxMDAwMC4gTXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDYwMDAwLlxuICAgICAgICovXG4gICAgICByZWN2V2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBlbnZlbG9wZSBmb3IgYWxsIEJpbmFuY2UgUlBDIG1ldGhvZHMuICovXG4gICAgQmluYW5jZVdpdGhkcmF3UGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldpdGhkcmF3UmVxdWVzdFwiXSAmIHtcbiAgICAgIGRyeVJ1bj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZURyeVJ1bk1vZGVcIl0gfCBudWxsO1xuICAgICAga2V5SWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogZmxvYXRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBcInJlY2VpdmUgd2luZG93XCIsIGkuZS4sIGZvciBob3cgbG9uZyB0aGUgcmVxdWVzdCBzdGF5cyB2YWxpZC5cbiAgICAgICAqIE1heSBvbmx5IGJlIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMsIHdpdGggdXAgdG8gdGhyZWUgZGVjaW1hbCBwbGFjZXMgb2YgcHJlY2lzaW9uLlxuICAgICAgICogSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gMTAwMDAuIE11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiA2MDAwMC5cbiAgICAgICAqL1xuICAgICAgcmVjdldpbmRvdz86IG51bWJlciB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgYml0Y29pbiBhZGRyZXNzIGFuZCBpdHMgbmV0d29yay4gKi9cbiAgICBCaXRjb2luQWRkcmVzc0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBiaXRjb2luIGFkZHJlc3MuXG4gICAgICAgKiBAZXhhbXBsZSBiYzFwdWMwcThqaHgza25jMnN0bGZobDM1bmphODludmttcXI0YzVlMmxkeXVxMm1jY2tocjNtc2F2ajk5alxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBjaGFpbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNDaGFpblwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwibWVzc2FnZV9iYXNlNjRcIjogXCJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYb3hNak0wTlRZS1wiXG4gICAgICogfVxuICAgICAqL1xuICAgIEJsb2JTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBiYXNlNjQgc3RyaW5nIGNvbXByaXNpbmcgYSBTRUMxLWVuY29kZWQgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gICAgICAgKiBUaGlzIGZpZWxkIGNhbiBiZSB1c2VkICpvbmx5KiB3aXRoIFNjaG5vcnIga2V5cy5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIHByZXNlbnQsIHRoZSByZXNwb25zZSB3aWxsIGJlIGEgU2Nobm9yciBhZGFwdG9yIHNpZ25hdHVyZVxuICAgICAgICogaW4gdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgQmxvY2tzdHJlYW0gZm9yIHVzZSBpbiBsaWJzZWNwMjU2azEtemtwLiBTZWVcbiAgICAgICAqIDxodHRwczovL2dpdGh1Yi5jb20vWmhlUGFuZy9QeXRob25fU3BlY2lmaWNhdGlvbl9mb3JfU2Nobm9ycl9BZGFwdG9yLz5cbiAgICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAgICogQGV4YW1wbGUgQXJueTRXb0hETkJWWFljeW5oTmw5L3k3SnR0SjJyazBDQ1JmTFI3dDNhRGdcbiAgICAgICAqL1xuICAgICAgYWRhcHRvcl9waz86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBkb21haW4gc2VwYXJhdGlvbiB0YWcgZm9yIHVzZSAqb25seSogd2l0aCBCTFMgc2lnbmluZyByZXF1ZXN0cy5cbiAgICAgICAqIFRoaXMgZmllbGQgbXVzdCBub3QgYmUgc3VwcGxpZWQgZm9yIHJlcXVlc3RzIGludm9sdmluZyBub24tQkxTIGtleSB0eXBlcy5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBwcmVzZW50IG9yIG51bGwsIHRoZSBkb21haW4gc2VwYXJhdGlvbiB0YWcgc3BlY2lmaWVkIGluXG4gICAgICAgKiB0aGUgSUVURiBCTFMgU2lnbmF0dXJlcyBkcmFmdCB2ZXJzaW9ucyA0IGFuZCA1LCBzZWN0aW9uIDQuMi4zIChtaW5pbWFsIHB1YmtleVxuICAgICAgICogc2l6ZSB2YXJpYW50KSBpcyB1c2VkLlxuICAgICAgICpcbiAgICAgICAqIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIG5vbi1lbXB0eSBieXRlXG4gICAgICAgKiB2ZWN0b3IuIFdoZW4gdXNpbmcgYSBjdXN0b20gdGFnLCBSRkM5MzgwIChTZWN0aW9uIDMuMSkgcmVjb21tZW5kcyBhIGxlbmd0aCBvZlxuICAgICAgICogYXQgbGVhc3QgMTYgYnl0ZXMuXG4gICAgICAgKiBAZXhhbXBsZSBFYmJMdkN4STdnYW43MWlJU0RzZnI0NmV0T3Y2MDZRa0dHRFA1UHBWbDVRPVxuICAgICAgICovXG4gICAgICBibHNfZHN0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBibG9iIHRvIHNpZ24sIGVuY29kZWQgYXMgYSBiYXNlNjQgc3RyaW5nLlxuICAgICAgICpcbiAgICAgICAqIE5vdGUgdGhhdCBjZXJ0YWluIHNpZ25pbmcga2V5cyBpbXBvc2UgYWRkaXRpb25hbCByZXF1aXJlbWVudHMgb24gdGhlIGNvbnRlbnRzIG9mXG4gICAgICAgKiB0aGUgbWVzc2FnZS4gRm9yIGV4YW1wbGUsIFNlY3AyNTZrMSBrZXlzIHJlcXVpcmUgdGhhdCB0aGUgbWVzc2FnZSBpcyAzMiBieXRlcyBsb25nLlxuICAgICAgICovXG4gICAgICBtZXNzYWdlX2Jhc2U2NDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgdHdlYWsgdmFsdWUgZm9yIHVzZSBvbmx5IHdpdGggKHNvbWUpIHNlY3AyNTZrMSBrZXkgdHlwZXMuXG4gICAgICAgKiBUaGlzIGZpZWxkIG11c3Qgbm90IGJlIHN1cHBsaWVkIGZvciByZXF1ZXN0cyBpbnZvbHZpbmcgYW55IG90aGVyIGtleSB0eXBlLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoaXMgZmllbGQgaXMgbm90IHByZXNlbnQgb3IgbnVsbCwgbm8gdHdlYWsgaXMgYXBwbGllZC4gT3RoZXJ3aXNlLCB0aGlzIGZpZWxkXG4gICAgICAgKiBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZiBleGFjdGx5IDMyIGJ5dGVzLiBTZWUgdGhlXG4gICAgICAgKiBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFNlZ3dpdCB0d2Vha2luZyBwcm9jZWR1cmUuXG4gICAgICAgKiBAZXhhbXBsZSBGNDFIQXkycTVHbjhsYUYyQ3VNc1piUkFRVG1EKzRPYjNWVU1aN1RCR0s0PVxuICAgICAgICovXG4gICAgICBzZWd3aXRfdHdlYWs/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgdHdlYWsgdmFsdWUgZm9yIHVzZSAqb25seSogd2l0aCBUYXByb290IGtleXMuIFRoaXMgZmllbGQgbXVzdCBub3RcbiAgICAgICAqIGJlIHN1cHBsaWVkIGZvciByZXF1ZXN0cyBpbnZvbHZpbmcgYW55IG90aGVyIGtleSB0eXBlLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoaXMgZmllbGQgaXMgbm90IHByZXNlbnQgb3IgbnVsbCwgbm8gdHdlYWsgaXMgYXBwbGllZC4gSWYgdGhlIGZpZWxkIGlzIGFuXG4gICAgICAgKiBlbXB0eSBzdHJpbmcsIHRoZSBrZXkgaXMgdHdlYWtlZCB3aXRoIGFuIHVuc3BlbmRhYmxlIHNjcmlwdCBwYXRoIHBlciBCSVAwMzQxLlxuICAgICAgICogT3RoZXJ3aXNlLCB0aGlzIGZpZWxkIG11c3QgY29udGFpbiBhIDMyLWJ5dGUsIGJhc2UtNjQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGVcbiAgICAgICAqIE1lcmtsZSByb290IHdpdGggd2hpY2ggdG8gdHdlYWsgdGhlIGtleSBiZWZvcmUgc2lnbmluZy5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIHRhcHJvb3RfdHdlYWs/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBCVEMgY2hhaW5zLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQnRjQ2hhaW46IFwibWFpbm5ldFwiIHwgXCJzaWduZXRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIExlYWYgaGFzaCBhbmQgY29kZSwgYXMgcGVyIEJJUDM0MSBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3J1c3QtYml0Y29pbi9ydXN0LWJpdGNvaW4vYmxvYi80NjQyMDIxMDlkMmIyYzk2ZTliNDg2NzQ2MWJmZmU0MjBkYmQ4MTc3L2JpdGNvaW4vc3JjL2NyeXB0by9zaWdoYXNoLnJzI0w2OTEgKi9cbiAgICBCdGNMZWFmSGFzaENvZGVTZXBhcmF0b3I6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvZGUgc2VwYXJhdG9yXG4gICAgICAgKi9cbiAgICAgIGNvZGVfc2VwYXJhdG9yOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRhcHJvb3QtdGFnZ2VkIGhhc2ggd2l0aCB0YWcgXCJUYXBMZWFmXCIuICovXG4gICAgICBsZWFmX2hhc2g6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGF0YSB0byBzaWduICovXG4gICAgQnRjTWVzc2FnZVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1lc3NhZ2UgdG8gc2lnbiBhcyBhIGhleC1lbmNvZGVkIGJ5dGUgc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgMHhkZWFkYmVlZjEzYzBmZmVlXG4gICAgICAgKi9cbiAgICAgIGRhdGE6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRm9yIHNlZ3dpdCwgc2lnbiB0aGUgbWVzc2FnZSBhcyBwMnNoLXAyd3BraCBpbnN0ZWFkIG9mIHAyd3BraCAqL1xuICAgICAgaXNfcDJzaD86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEJUQyBtZXNzYWdlIHNpZ25pbmcgcmVzcG9uc2UgKi9cbiAgICBCdGNNZXNzYWdlU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYmFzZTY0LWVuY29kZWQgc2lnbmF0dXJlIGluIEJJUDEzNyBmb3JtYXQuICovXG4gICAgICBzaWc6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEJ0Y1NpZ2hhc2hUeXBlOlxuICAgICAgfCBcIkFsbFwiXG4gICAgICB8IFwiTm9uZVwiXG4gICAgICB8IFwiU2luZ2xlXCJcbiAgICAgIHwgXCJBbGxQbHVzQW55b25lQ2FuUGF5XCJcbiAgICAgIHwgXCJOb25lUGx1c0FueW9uZUNhblBheVwiXG4gICAgICB8IFwiU2luZ2xlUGx1c0FueW9uZUNhblBheVwiO1xuICAgIEJ0Y1NpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIHNpZ19raW5kOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ25hdHVyZUtpbmRcIl07XG4gICAgICB0eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNUeFwiXTtcbiAgICB9O1xuICAgIEJ0Y1NpZ25hdHVyZUtpbmQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2VncmVnYXRlZCBXaXRuZXNzICovXG4gICAgICBTZWd3aXQ6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2FjdGlvbiBpbnB1dCBpbmRleFxuICAgICAgICAgKiBAZXhhbXBsZSAwXG4gICAgICAgICAqL1xuICAgICAgICBpbnB1dF9pbmRleDogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFNjcmlwdFxuICAgICAgICAgKiBAZXhhbXBsZSAweDc2YTkxNDc5MDkxOTcyMTg2YzQ0OWViMWRlZDIyYjc4ZTQwZDAwOWJkZjAwODk4OGFjXG4gICAgICAgICAqL1xuICAgICAgICBzY3JpcHRfY29kZTogc3RyaW5nO1xuICAgICAgICBzaWdoYXNoX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQnRjU2lnaGFzaFR5cGVcIl07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgdHdlYWsgdG8gYXBwbHkgdG8gdGhlIGtleSBiZWZvcmUgc2lnbmluZy5cbiAgICAgICAgICpcbiAgICAgICAgICogV2hlbiBzdXBwbGllZCwgdGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZlxuICAgICAgICAgKiBleGFjdGx5IDMyIGJ5dGVzLCB3aGljaCBhcmUgdXNlZCB0byBjb21wdXRlIHRoZSB0d2Vha2VkIHB1YmxpYyBrZXkuIFNlZSB0aGVcbiAgICAgICAgICogQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBTZWd3aXQgdHdlYWtpbmcgcHJvY2VkdXJlLlxuICAgICAgICAgKiBAZXhhbXBsZSBGNDFIQXkycTVHbjhsYUYyQ3VNc1piUkFRVG1EKzRPYjNWVU1aN1RCR0s0PVxuICAgICAgICAgKi9cbiAgICAgICAgdHdlYWs/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRvdGFsIGFtb3VudCBvZiB0aGUgaW5wdXQgKGluIHNhdG9zaGlzKS5cbiAgICAgICAgICogQGV4YW1wbGUgMTAwMDAwMFxuICAgICAgICAgKi9cbiAgICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImlucHV0XCI6IFtcbiAgICAgKiAgICAge1xuICAgICAqICAgICAgIFwicHJldmlvdXNfb3V0cHV0XCI6IFwiNzc1NDFhZWIzYzRkYWM5MjYwYjY4Zjc0ZjQ0Yzk3MzA4MWE5ZDRjYjJlYmU4MDM4YjJkNzBmYWEyMDFiNmJkYjoxXCIsXG4gICAgICogICAgICAgXCJzY3JpcHRfc2lnXCI6IFwiXCIsXG4gICAgICogICAgICAgXCJzZXF1ZW5jZVwiOiA0Mjk0OTY3Mjk0LFxuICAgICAqICAgICAgIFwid2l0bmVzc1wiOiBbXVxuICAgICAqICAgICB9XG4gICAgICogICBdLFxuICAgICAqICAgXCJsb2NrX3RpbWVcIjogMTE3MCxcbiAgICAgKiAgIFwib3V0cHV0XCI6IFtcbiAgICAgKiAgICAge1xuICAgICAqICAgICAgIFwic2NyaXB0X3B1YmtleVwiOiBcIjc2YTkxNGE0NTdiNjg0ZDdmMGQ1MzlhNDZhNDViYmMwNDNmMzViNTlkMGQ5NjM4OGFjXCIsXG4gICAgICogICAgICAgXCJ2YWx1ZVwiOiAxOTk5OTY2MDBcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAge1xuICAgICAqICAgICAgIFwic2NyaXB0X3B1YmtleVwiOiBcIjc2YTkxNGZkMjcwYjFlZTZhYmNhZWE5N2ZlYTdhZDA0MDJlOGJkOGFkNmQ3N2M4OGFjXCIsXG4gICAgICogICAgICAgXCJ2YWx1ZVwiOiA4MDAwMDAwMDBcbiAgICAgKiAgICAgfVxuICAgICAqICAgXSxcbiAgICAgKiAgIFwidmVyc2lvblwiOiAxXG4gICAgICogfVxuICAgICAqL1xuICAgIEJ0Y1R4OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgQnRjVHhPdXQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNjcmlwdCB3aGljaCBtdXN0IGJlIHNhdGlzZmllZCBmb3IgdGhlIG91dHB1dCB0byBiZSBzcGVudC4gKi9cbiAgICAgIHNjcmlwdF9wdWJrZXk6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0LCBpbiBzYXRvc2hpcy5cbiAgICAgICAqL1xuICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYWNjZXNzLWNvbnRyb2xsZWQgYWN0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gYSBidWNrZXRcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEJ1Y2tldEFjdGlvbjpcbiAgICAgIHwgXCJyZWFkOmtleTp2YWx1ZVwiXG4gICAgICB8IFwicmVhZDprZXk6ZXhpc3RzXCJcbiAgICAgIHwgXCJ1cGRhdGU6a2V5OnZhbHVlXCJcbiAgICAgIHwgXCJkZWxldGU6a2V5OnZhbHVlXCJcbiAgICAgIHwgXCJzY2FuOmtleXNcIlxuICAgICAgfCBcInVwZGF0ZTpidWNrZXQ6b3duZXJcIlxuICAgICAgfCBcInVwZGF0ZTpidWNrZXQ6YWNsXCJcbiAgICAgIHwgXCJ1cGRhdGU6YnVja2V0Om1ldGFkYXRhXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHBvbGljeSBLViBzdG9yZSBidWNrZXQuICovXG4gICAgQnVja2V0SW5mbzogKHtcbiAgICAgIGNyZWF0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgKi9cbiAgICAgIHZlcnNpb24/OiBudW1iZXI7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoZSBidWNrZXQuICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcmJpdHJhcnkgdXNlci1kZWZpbmVkIG1ldGFkYXRhLiAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgb3duZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgfSkgJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBidWNrZXQuICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3ViLWVudGl0eSBvZiBvcmcgd2hlcmUgcGVyLWJ1Y2tldCBtZXRhZGF0YSAobGlrZSBBQ0wpIGlzIHN0b3JlZC5cbiAgICAgKiBUaGUgW0lkXSBvZiBhIFtCdWNrZXRNZXRhXSBtdXN0IGJlIHRoZSBidWNrZXQgbmFtZS5cbiAgICAgKi9cbiAgICBCdWNrZXRNZXRhOiB7XG4gICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgIGxhc3RfbW9kaWZpZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGlzIG9iamVjdFxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MtY29udHJvbCBlbnRyaWVzIGZvciB0aGUgYnVja2V0LiAqL1xuICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXJiaXRyYXJ5IHVzZXItZGVmaW5lZCBtZXRhZGF0YS4gKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIG93bmVyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgIH07XG4gICAgQ2FuY2VsSW52aXRhdGlvblJlcXVlc3Q6IHtcbiAgICAgIGVtYWlsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1cHBvcnRlZCBDYW50b24gZW52aXJvbm1lbnRzLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQ2FudG9uRW52aXJvbm1lbnQ6IFwibWFpbm5ldFwiIHwgXCJkZXZuZXRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgQ2FudG9uIHBhcnR5LiAqL1xuICAgIENhbnRvblBhcnR5SW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBDYW50b24gcGFydHkuXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZTo6MTIyMGYyZmUyOTg2NmZkNmEwMDA5ZWNjOGE2NGNjZGMwOWYxOTU4YmQwZjgwMTE2NmJhYWVlNDY5ZDEyNTFiMmViNzJcbiAgICAgICAqL1xuICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgY2hhaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2FudG9uRW52aXJvbm1lbnRcIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlc2NyaWJlcyBob3cgdG8gZGVyaXZlIGEgV2ViQXV0aG4gY2hhbGxlbmdlIHZhbHVlLiAqL1xuICAgIENoYWxsZW5nZVBpZWNlczoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgVVRGOCBKU09OLiBUaGUgZGF0YSBpbiB0aGF0IEpTT04gaXMgZW5kcG9pbnQgc3BlY2lmaWMsIGFuZCBkZXNjcmliZXMgd2hhdCB0aGlzIEZJRE8gY2hhbGxlbmdlIHdpbGwgYmUgdXNlZCBmb3IuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBjYW4gdXNlIGBwcmVpbWFnZWAgYWxvbmcgd2l0aCBgcmFuZG9tX3NlZWRgIHRvIHJlY29uc3RydWN0IHRoZSBjaGFsbGVuZ2UgbGlrZSBzbzpcbiAgICAgICAqXG4gICAgICAgKiBgY2hhbGxlbmdlID0gSE1BQy1TSEEyNTYoa2V5PXJhbmRvbV9zZWVkLCBtZXNzYWdlPXByZWltYWdlKWBcbiAgICAgICAqL1xuICAgICAgcHJlaW1hZ2U6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSByYW5kb20gc2VlZCB0aGF0IHByZXZlbnRzIHJlcGxheSBhdHRhY2tzICovXG4gICAgICByYW5kb21fc2VlZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDbGllbnQgaW5mb3JtYXRpb24gcmVwcmVzZW50aW5nIHRoZSBuYXR1cmUgb2YgZnJvbnQtZW5kIGluIFtgQ2xpZW50U2Vzc2lvbk1ldGFkYXRhYF0gYW5kIHJlZmxlY3RlZCBpbiBbYFNlc3Npb25NZXRhZGF0YWBdLiAqL1xuICAgIENsaWVudFByb2ZpbGU6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFnZW50L1Byb2R1Y3QgbmFtZVxuICAgICAgICogQGV4YW1wbGUgTW96aWxsYSBGaXJlZm94XG4gICAgICAgKi9cbiAgICAgIGFnZW50Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb2YgdGhlIGVuZ2luZVxuICAgICAgICogQGV4YW1wbGUgR2Vja29cbiAgICAgICAqL1xuICAgICAgZW5naW5lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFnZW50L3Byb2R1Y3QgdmVyc2lvblxuICAgICAgICogQGV4YW1wbGUgNDEuMlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGNsaWVudC5cbiAgICAgKiBUaGlzIHN0cnVjdCB3b3JrcyBpbiB0YW5kZW0gd2l0aCBpdHMgc2VydmVyLXNpZGUgY291bnRlcnBhcnQgW2BTZXNzaW9uRGF0YWBdLlxuICAgICAqL1xuICAgIENsaWVudFNlc3Npb25JbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRvIHVzZSBmb3IgYXV0aG9yaXphdGlvbi4gKi9cbiAgICAgIGF1dGhfdG9rZW46IHN0cmluZztcbiAgICAgIGF1dGhfdG9rZW5fZXhwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFcG9jaCBhdCB3aGljaCB0aGUgdG9rZW4gd2FzIGxhc3QgcmVmcmVzaGVkXG4gICAgICAgKi9cbiAgICAgIGVwb2NoOiBudW1iZXI7XG4gICAgICBlcG9jaF90b2tlbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCMzJcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRvIHVzZSBmb3IgcmVmcmVzaGluZyB0aGUgYChhdXRoLCByZWZyZXNoKWAgdG9rZW4gcGFpciAqL1xuICAgICAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xuICAgICAgcmVmcmVzaF90b2tlbl9leHA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRCAqL1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBdHRyaWJ1dGVzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQgKi9cbiAgICBDbGllbnRTZXNzaW9uTWV0YWRhdGE6IHtcbiAgICAgIGNsaWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50UHJvZmlsZVwiXTtcbiAgICAgIG9zX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9zSW5mb1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29tbWlzc2lvbiByYXRlcyBhcyBkZWNpbWFsIHN0cmluZ3MgKGUuZy4gYFwiMC4wMDEwMDAwMFwiYCkuICovXG4gICAgQ29tbWlzc2lvblJhdGVzOiB7XG4gICAgICBidXllcjogc3RyaW5nO1xuICAgICAgbWFrZXI6IHN0cmluZztcbiAgICAgIHNlbGxlcjogc3RyaW5nO1xuICAgICAgdGFrZXI6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBGaWVsZHMgdGhhdCBhcmUgY29tbW9uIHRvIGRpZmZlcmVudCB0eXBlcyBvZiByZXNvdXJjZXMgc3VjaCBhcyBrZXlzLCByb2xlcywgZXRjLlxuICAgICAqIEluY2x1ZGVzIHZlcnNpb25pbmcgZmllbGRzIHBsdXMgbWV0YWRhdGEsIGVkaXQgcG9saWN5LCBldGMuXG4gICAgICovXG4gICAgQ29tbW9uRmllbGRzOiB7XG4gICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgIGxhc3RfbW9kaWZpZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGlzIG9iamVjdFxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgIH0gJiB7XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXItZGVmaW5lZCBtZXRhZGF0YS4gV2hlbiByZW5kZXJpbmcgKGUuZy4sIGluIHRoZSBicm93c2VyKSB5b3Ugc2hvdWxkIHRyZWF0XG4gICAgICAgKiBpdCBhcyB1bnRydXN0ZWQgdXNlciBkYXRhIChhbmQgYXZvaWQgaW5qZWN0aW5nIG1ldGFkYXRhIGludG8gSFRNTCBkaXJlY3RseSkgaWZcbiAgICAgICAqIHVudHJ1c3RlZCB1c2VycyBjYW4gY3JlYXRlL3VwZGF0ZSBrZXlzIChvciB0aGVpciBtZXRhZGF0YSkuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9O1xuICAgIENvbXBsZXRlTWZhUmVzZXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcmVzZXQgdG9rZW4gZW1haWxlZCB0byB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG51bWJlciBvZiB1c2VycyBhbmQga2V5cyBpbiBhbiBvcmcsIG9yZ2FuaXplZCBieSB1c2VyIHJvbGUgYW5kIGtleSB0eXBlICovXG4gICAgQ29tcHV0ZUNvdW50c1Jlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhIGBLZXlUeXBlYCB0byB0aGUgYW1vdW50IG9mIGtleXMgd2l0aCB0aGF0IHR5cGUgaW4gdGhlIG9yZy5cbiAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAqICAgXCJTZWNwQnRjXCI6IDMsXG4gICAgICAgKiAgIFwiU2VjcEV0aEFkZHJcIjogMVxuICAgICAgICogfVxuICAgICAgICovXG4gICAgICBrZXlzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgIH07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhIGBNZW1iZXJSb2xlYCB0byB0aGUgYW1vdW50IG9mIG51bWJlciBvZiB1c2VycyB3aXRoIHRoYXQgcm9sZSBpbiB0aGUgb3JnLlxuICAgICAgICogQGV4YW1wbGUge1xuICAgICAgICogICBcIk1lbWJlclwiOiAxMCxcbiAgICAgICAqICAgXCJPd25lclwiOiAxXG4gICAgICAgKiB9XG4gICAgICAgKi9cbiAgICAgIHVzZXJzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgIH07XG4gICAgfTtcbiAgICBDb25maWd1cmVFbWFpbFJlcXVlc3Q6IHtcbiAgICAgIGF1dGg6IHtcbiAgICAgICAgc210cDogc3RyaW5nO1xuICAgICAgfTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFkZHJlc3MgdGhhdCBlbWFpbHMgd2lsbCBiZSBzZW50IGZyb20gKi9cbiAgICAgIHNlbmRlcjogc3RyaW5nO1xuICAgICAgdGVtcGxhdGU/OiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gSFRNTCB0ZW1wbGF0ZSB0byB1c2UgZm9yIHRoZSBib2R5LiAqL1xuICAgICAgICBib2R5X3RlbXBsYXRlOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN1YmplY3QgbGluZSB0ZW1wbGF0ZSAqL1xuICAgICAgICBzdWJqZWN0X3RlbXBsYXRlOiBzdHJpbmc7XG4gICAgICB9IHwgbnVsbDtcbiAgICB9O1xuICAgIENvbmZpZ3VyZWRNZmE6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0eXBlOiBcInRvdHBcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVVUlEIG9mIHRoZSBkZXZpY2UgdHlwZSAqL1xuICAgICAgICAgIGFhZ3VpZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRpb24gZGF0ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGNyZWF0ZWRfYXQ6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhpcyBrZXkgd2FzIHJlcXVlc3RlZCB0byBiZSBkaXNjb3ZlcmFibGUuICovXG4gICAgICAgICAgZGlzY292ZXJhYmxlOiBib29sZWFuO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgY3JlZGVudGlhbCBpZCAqL1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBMYXN0IHVzZWQgZGF0ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfdXNlZF9hdDogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGdpdmVuIHRvIHRoZSBrZXkgKi9cbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgdHlwZTogXCJmaWRvXCI7XG4gICAgICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQ29uZmxpY3RFcnJvckNvZGU6XG4gICAgICB8IFwiQ29uY3VycmVudFJlcXVlc3REaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJDb25jdXJyZW50TG9ja0NyZWF0aW9uXCJcbiAgICAgIHwgXCJDb25jdXJyZW50VHJhbnNhY3Rpb25TdWJtaXNzaW9uXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIGNvbnRhY3QgaW4gdGhlIG9yZy4gKi9cbiAgICBDb250YWN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIExhYmVscyB0byBjYXRlZ29yaXplIHRoaXMgY29udGFjdC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBsYWJlbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RMYWJlbFwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5hbWUgZm9yIHRoZSBjb250YWN0LiBNdXN0IGJlIGEgdW5pcXVlIG5hbWUgYW1vbmcgY29udGFjdHMgaW4gdGhlXG4gICAgICAgKiBvcmcuIFRoZSBuYW1lIG11c3QgY29uc2lzdCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgc3BhY2VzLCBgLmAgYW5kIGAtYCxcbiAgICAgICAqIGFuZCBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gNTAgY2hhcmFjdGVycy5cbiAgICAgICAqIEBleGFtcGxlIFNhdG9zaGkgTmFrYW1vdG9cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgb3duZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIGEgY29udGFjdC4gKi9cbiAgICBDb250YWN0QWRkcmVzc0RhdGE6XG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJpdGNvaW5BZGRyZXNzSW5mb1wiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBuZXR3b3JrOiBcIkJpdGNvaW5cIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtQWRkcmVzc0luZm9cIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbmV0d29yazogXCJFdm1cIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3VpQWRkcmVzc0luZm9cIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbmV0d29yazogXCJTdWlcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU29sYW5hQWRkcmVzc0luZm9cIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbmV0d29yazogXCJTb2xhbmFcIjtcbiAgICAgICAgfSlcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2FudG9uUGFydHlJbmZvXCJdICYge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG5ldHdvcms6IFwiQ2FudG9uXCI7XG4gICAgICAgIH0pO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBDb250YWN0LiAqL1xuICAgIENvbnRhY3RJbmZvUmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdFwiXSAmIHtcbiAgICAgIGFkZHJlc3NlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRyZXNzTWFwXCJdO1xuICAgICAgaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTGFiZWxzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gYSBjb250YWN0LlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQ29udGFjdExhYmVsOiBcImN1YmlzdDplcmMyMF90b2tlblwiIHwgXCJjdWJpc3Q6c3BsX3Rva2VuXCI7XG4gICAgQ3JlYXRlQW5kVXBkYXRlS2V5UHJvcGVydGllczoge1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2V0IHRoaXMga2V5J3MgbWV0YWRhdGEuIElmIHRoaXMgdmFsdWUgaXMgYG51bGxgLCB0aGUgbWV0YWRhdGEgaXMgZXJhc2VkLiBJZiB0aGUgZmllbGQgaXNcbiAgICAgICAqIG1pc3NpbmcsIHRoZSBtZXRhZGF0YSByZW1haW5zIHVuY2hhbmdlZC5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3BlY2lmeSBhIHVzZXIgb3RoZXIgdGhhbiB0aGVtc2VsdmVzIHRvIGJlIHRoZSAocG90ZW50aWFsbHkgbmV3KSBvd25lciBvZiB0aGUga2V5LlxuICAgICAgICogVGhlIHNwZWNpZmllZCBvd25lciBtdXN0IGJlIGFuIGV4aXN0aW5nIHVzZXIgd2hvIGlzIGEgbWVtYmVyIG9mIHRoZSBzYW1lIG9yZy5cbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNldCB0aGlzIGtleSdzIHBvbGljaWVzLiBGb3IgYW4gZXhpc3Rpbmcga2V5LCB0aGlzIG92ZXJ3cml0ZXMgYWxsIGl0cyBwb2xpY2llcy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCIsXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IHVua25vd25bXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlIGEgQ29udGFjdC4gKi9cbiAgICBDcmVhdGVDb250YWN0UmVxdWVzdDoge1xuICAgICAgYWRkcmVzc2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRyZXNzTWFwXCJdO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbGFiZWxzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBjb250YWN0LlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcImN1YmlzdDplcmMyMF90b2tlblwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGxhYmVscz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdExhYmVsXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXItZGVmaW5lZCBtZXRhZGF0YSBhYm91dCB0aGUgY29udGFjdC4gKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIGZvciB0aGUgY29udGFjdC4gTXVzdCBiZSBhIHVuaXF1ZSBuYW1lIGFtb25nIGNvbnRhY3RzIGluIHRoZVxuICAgICAgICogb3JnLiBOYW1lIG11c3QgY29uc2lzdCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgc3BhY2VzLCBgLmAgYW5kIGAtYCxcbiAgICAgICAqIGFuZCBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gNTAgY2hhcmFjdGVycy5cbiAgICAgICAqIEBleGFtcGxlIFNhdG9zaGkgTmFrYW1vdG9cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBhbiBFVk0gdHJhbnNhY3Rpb24uICovXG4gICAgQ3JlYXRlRXZtVHJhbnNhY3Rpb25SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUV2bVRyYW5zZmVyUmVxdWVzdFwiXSAmIHtcbiAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgdHlwZTogXCJUcmFuc2ZlclwiO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBhbiBFVk0gdHJhbnNmZXIuICovXG4gICAgQ3JlYXRlRXZtVHJhbnNmZXJSZXF1ZXN0OiB7XG4gICAgICB0b2tlbjogXCJDcmVhdGVFdm1UcmFuc2ZlclJlcXVlc3RcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bVRva2VuXCJdLCBcInRva2VuXCI+ICZcbiAgICAgIGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtVHhDdXN0b21pemF0aW9uXCJdICYge1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEVWTSBjaGFpbiBpZCB0aGlzIHRyYW5zYWN0aW9uIGlzIGZvci5cbiAgICAgICAgICovXG4gICAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFkZHJlc3MgdGhhdCB0aGUgYW1vdW50IHdpbGwgYmUgdHJhbnNmZXJyZWQgZnJvbS5cbiAgICAgICAgICpcbiAgICAgICAgICogTXVzdCBtYXRjaCB0aGUgbWF0ZXJpYWwgaWQgb2YgYSBrZXkgdGhlIHNlc3Npb24gY2FuIGFjY2Vzcy5cbiAgICAgICAgICovXG4gICAgICAgIGZyb206IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYWRkcmVzcyB0aGF0IHRoZSBhbW91bnQgd2lsbCBiZSB0cmFuc2ZlcnJlZCB0by4gKi9cbiAgICAgICAgdG86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYW1vdW50IGJlaW5nIHRyYW5zZmVycmVkLCBhcyBhIGhleCB2YWx1ZS5cbiAgICAgICAgICpcbiAgICAgICAgICogVGhpcyB2YWx1ZSBzaG91bGQgYmUgaW4gV0VJIGZvciBuYXRpdmUgdHJhbnNmZXJzLCBhbmQgaW4gdGhlIHRva2VuJ3MgZGVub21pbmF0aW9uXG4gICAgICAgICAqIGZvciBFUkMtMjAgdHJhbnNmZXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgdmFsdWU6IHN0cmluZztcbiAgICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gYXR0ZXN0YXRpb24gZG9jdW1lbnQgZnJvbSBhIHNlY3VyZSBlbmNsYXZlLCBpbmNsdWRpbmcgYW5cbiAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAqL1xuICAgICAgZW5jbGF2ZV9hdHRlc3RhdGlvbjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gUlNBLVBTUy1TSEEyNTYgc2lnbmF0dXJlIG9uIHRoZSBwdWJsaWMga2V5IGFuZCBlbmNyeXB0ZWRcbiAgICAgICAqIHNlY3JldHMgYXR0ZXN0aW5nIHRvIHRoZWlyIGdlbmVyYXRpb24gaW5zaWRlIGEgc2VjdXJlIGVuY2xhdmUuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDcmVhdGVLZXlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUFuZFVwZGF0ZUtleVByb3BlcnRpZXNcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXNcbiAgICAgICAqIEBleGFtcGxlIDVcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIGtleXMgdG8gY3JlYXRlXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgIH07XG4gICAgQ3JlYXRlS2V5UmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm8gYWJvdXQgdGhlIGNyZWF0ZWQga2V5cyAqL1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgfTtcbiAgICBDcmVhdGVPcmdSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdG8gZW5hYmxlIG1ldHJpY3MgZm9yIHRoZSBuZXcgb3JnYW5pemF0aW9uICovXG4gICAgICBtZXRyaWNzX2VuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGh1bWFuIHJlYWRhYmxlIG5hbWUgb2YgdGhlIG5ldyBvcmdhbml6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIE15IENvb2wgT3JnXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gW2NyZWF0ZV9pbXBvcnRfa2V5XSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQga2V5IGFuZCBlbmNsYXZlXG4gICAgICogYXR0ZXN0YXRpb25zLlxuICAgICAqL1xuICAgIENyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIGF0dGVzdGF0aW9uIGRvY3VtZW50IGZyb20gYSBzZWN1cmUgZW5jbGF2ZSwgaW5jbHVkaW5nIGFuXG4gICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfYXR0ZXN0YXRpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgKiBzZWNyZXRzIGF0dGVzdGluZyB0byB0aGVpciBnZW5lcmF0aW9uIGluc2lkZSBhIHNlY3VyZSBlbmNsYXZlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGZvciBjcmVhdGluZyBhIG5hbWVkIHBvbGljeSAqL1xuICAgIENyZWF0ZVBvbGljeVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFjY2Vzcy1jb250cm9sIGVudHJpZXMgZGVmaW5pbmcgaG93IHRoZSBwb2xpY3kgY2FuIGJlIGFjY2Vzc2VkLCBtb2RpZmllZCxcbiAgICAgICAqIGF0dGFjaGVkIGFuZCBleGVjdXRlZC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYWN0aW9uXCI6IFwiYXR0YWNoXCIsXG4gICAgICAgKiAgICAgXCJyZXNvdXJjZXNcIjogW1xuICAgICAgICogICAgICAge1xuICAgICAgICogICAgICAgICBcImtleV9pZFwiOiBcIipcIixcbiAgICAgICAqICAgICAgICAgXCJyb2xlX2lkXCI6IFwiUm9sZSNlNDI3YzI4YS05YzViLTQ5Y2MtYTI1Ny04NzhhZWE1OGEyMmNcIlxuICAgICAgICogICAgICAgfVxuICAgICAgICogICAgIF0sXG4gICAgICAgKiAgICAgXCJzdWJqZWN0c1wiOiBcIipcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJhY3Rpb25cIjogXCJzaWduXCIsXG4gICAgICAgKiAgICAgXCJzdWJqZWN0c1wiOiBcIlJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXCJcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgbmFtZS5cbiAgICAgICAqIE11c3QgYmUgdW5pcXVlIGFtb25nIHRoZSBuYW1lZCBwb2xpY2llcyBpbiB0aGlzIG9yZy4gRHVwbGljYXRlIHBvbGljeSBuYW1lc1xuICAgICAgICogd2lsbCBiZSByZWplY3RlZC5cbiAgICAgICAqIEBleGFtcGxlIG15X3BvbGljeVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBwb2xpY3lfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBydWxlcy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcnVsZXM6IHVua25vd25bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgY3JlYXRlIHJvbGUgcmVxdWVzdCBib2R5ICovXG4gICAgQ3JlYXRlUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ld2x5IGNyZWF0ZWQgcm9sZSBpbmZvcm1hdGlvbiAqL1xuICAgIENyZWF0ZVJvbGVSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZVxuICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAqL1xuICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQ3JlYXRlU2Vzc2lvblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBCeSBkZWZhdWx0LCB0aGUgcmVxdWVzdGVkIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWVzIGFyZSB0cnVuY2F0ZWQgdG8gYmUgYXQgbW9zdCByZXF1ZXN0b3Inc1xuICAgICAgICAgKiBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lLCByZXNwZWN0aXZlbHkuIFRvIGV4dGVuZCB0aGUgcmVxdWVzdGVkIGxpZmV0aW1lcyBwYXN0IHRoZVxuICAgICAgICAgKiByZXF1ZXN0b3Incywgc2V0IHRoaXMgcHJvcGVydHkgdG8gYHRydWVgIChpbiB3aGljaCBjYXNlIE1GQSB3aWxsIGJlIHJlcXVpcmVkKS5cbiAgICAgICAgICovXG4gICAgICAgIGV4dGVuZF9saWZldGltZXM/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHNlc3Npb24ncyBwdXJwb3NlXG4gICAgICAgICAqIEBleGFtcGxlIE1hbmFnZSBrZXlzIG9uIHNlcnZlciBmb28uYmFyXG4gICAgICAgICAqL1xuICAgICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgd2hhdCBjYXBhYmlsaXRpZXMgdGhpcyBzZXNzaW9uIHdpbGwgaGF2ZS5cbiAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgKiAgIFwibWFuYWdlOmtleToqXCJcbiAgICAgICAgICogXVxuICAgICAgICAgKi9cbiAgICAgICAgc2NvcGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlXCJdW107XG4gICAgICB9O1xuICAgIENyZWF0ZVRva2VuUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdICZcbiAgICAgIGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbk1ldGFkYXRhXCJdICYge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHB1cnBvc2Ugb2YgdGhlIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBWYWxpZGF0b3IgU2lnbmluZ1xuICAgICAgICAgKi9cbiAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuIEJ5IGRlZmF1bHQsIGl0IGhhcyBhbGxcbiAgICAgICAgICogc2lnbmluZyBjYXBhYmlsaXRpZXMsIGkuZS4sIGp1c3QgdGhlICdzaWduOionIHNjb3BlLlxuICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAqICAgXCJzaWduOipcIlxuICAgICAgICAgKiBdXG4gICAgICAgICAqL1xuICAgICAgICBzY29wZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlXCJdW10gfCBudWxsO1xuICAgICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIHRoZSBbYGNzX2NyZWF0ZVRyYW5zYWN0aW9uYF0oUnBjTWV0aG9kOjpDcmVhdGVUcmFuc2FjdGlvbikgbWV0aG9kLiAqL1xuICAgIENyZWF0ZVRyYW5zYWN0aW9uUmVxdWVzdDoge1xuICAgICAgdHlwZTogXCJDcmVhdGVUcmFuc2FjdGlvblJlcXVlc3RcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUV2bVRyYW5zYWN0aW9uUmVxdWVzdFwiXSwgXCJ0eXBlXCI+ICYge1xuICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgY2hhaW46IFwiRXZtXCI7XG4gICAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbiBleHRlbmRlZCBmb3JtIG9mIGBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zYCB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGRlcml2ZSB0aGUgV2ViQXV0aG4gY2hhbGxlbmdlXG4gICAgICogZnJvbSBhIHN0cnVjdHVyZWQgcHJlaW1hZ2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgd2VidWF0aG4gc2lnbmF0dXJlIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGEgc3BlY2lmaWMgcHVycG9zZVxuICAgICAqL1xuICAgIENyZWF0aW9uT3B0aW9uc1dpdGhIYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29yZSBSUEMgbWV0aG9kcyAodHJhbnNhY3Rpb24gQ1JVRCkuICovXG4gICAgQ3NScGM6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2NyZWF0ZVRyYW5zYWN0aW9uXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVRyYW5zYWN0aW9uUmVxdWVzdFwiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1ldGhvZDogXCJjc19yZXRyeVRyYW5zYWN0aW9uXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJldHJ5VHJhbnNhY3Rpb25SZXF1ZXN0XCJdO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgbWV0aG9kOiBcImNzX2dldFRyYW5zYWN0aW9uXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkdldFRyYW5zYWN0aW9uUmVxdWVzdFwiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1ldGhvZDogXCJjc19saXN0VHJhbnNhY3Rpb25zXCI7XG4gICAgICAgICAgcGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxpc3RUcmFuc2FjdGlvbnNSZXF1ZXN0XCJdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgQ3ViZVNpZ25lclVzZXJJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgIGNvbmZpZ3VyZWRfbWZhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZpZ3VyZWRNZmFcIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2V0IG9uY2UgdGhlIHVzZXIgc3VjY2Vzc2Z1bGx5IGxvZ3MgaW50byBDdWJlU2lnbmVyICovXG4gICAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaHVtYW4gbmFtZSBmb3IgdGhlIHVzZXIgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyJ3MgdXNlciBpZGVudGlmaWVyICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEN1c3RvbSBjaGFpbiBSUEMgcmVxdWVzdCAqL1xuICAgIEN1c3RvbUNoYWluUnBjUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIGJvZHkgKi9cbiAgICAgIGJvZHk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgY2hhaW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5TZWxlY3RvclwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCByZWxhdGl2ZSBwYXRoICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDdXN0b21DaGFpblJwY1Jlc3BvbnNlOiB1bmtub3duO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGNoYWluIHNlbGVjdG9yICovXG4gICAgQ3VzdG9tQ2hhaW5TZWxlY3Rvcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFVk0gY2hhaW4gKi9cbiAgICAgIEV2bToge1xuICAgICAgICAvKiogQGV4YW1wbGUgMHgwMSAqL1xuICAgICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnJ3MgY3VzdG9tIGNoYWlucy4gKi9cbiAgICBDdXN0b21DaGFpbnNEYXRhOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEN1c3RvbSBFVk0gY2hhaW5zLiAqL1xuICAgICAgZXZtOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bUN1c3RvbUNoYWluXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYEdFVCAvc2FwaS92MS9jYXBpdGFsL2RlcG9zaXQvYWRkcmVzc2AuXG4gICAgICpcbiAgICAgKiBGZXRjaGVzIHRoZSBkZXBvc2l0IGFkZHJlc3MgZm9yIGBjb2luYCBvbiB0aGUgYWNjb3VudCB0aGF0IHRoZSBzaWduaW5nIGtleVxuICAgICAqIGF1dGhlbnRpY2F0ZXMgYXMuIE9wdGlvbmFsbHkgbmFycm93cyB0aGUgYWRkcmVzcyB0byBhIHNwZWNpZmljIGBuZXR3b3JrYC5cbiAgICAgKi9cbiAgICBEZXBvc2l0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWlyZWQgb25seSB3aGVuIGBuZXR3b3JrYCBpcyBgXCJMSUdIVE5JTkdcImA6IHRoZSBkZXBvc2l0IGFtb3VudCB0aGF0XG4gICAgICAgKiB0aGUgcmV0dXJuZWQgaW52b2ljZSBzaG91bGQgZW5jb2RlLCBhcyBhIGRlY2ltYWwgc3RyaW5nLlxuICAgICAgICovXG4gICAgICBhbW91bnQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYXNzZXQgc3ltYm9sIHdob3NlIGRlcG9zaXQgYWRkcmVzcyB0byBmZXRjaCAoZS5nLiBgXCJVU0RUXCJgLCBgXCJCVENcImApLiAqL1xuICAgICAgY29pbjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTmV0d29yayBpZGVudGlmaWVyIChlLmcuIGBcIkJTQ1wiYCwgYFwiRVRIXCJgKS4gSWYgb21pdHRlZCwgQmluYW5jZSByZXR1cm5zXG4gICAgICAgKiB0aGUgYWRkcmVzcyBvbiB0aGUgYXNzZXQncyBkZWZhdWx0IG5ldHdvcmsuXG4gICAgICAgKi9cbiAgICAgIG5ldHdvcms/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSByZXR1cm5lZCBieSBgY3NfYmluYW5jZURlcG9zaXRgLiAqL1xuICAgIERlcG9zaXRSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXBvc2l0IGFkZHJlc3MuICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFzc2V0IHN5bWJvbCAoZWNob2VzIFtgRGVwb3NpdFJlcXVlc3Q6OmNvaW5gXSkuICovXG4gICAgICBjb2luOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTZWNvbmRhcnkgYWRkcmVzcyBpZGVudGlmaWVyIHJlcXVpcmVkIGJ5IHNvbWUgYXNzZXRzIChlLmcuIG1lbW8gZm9yXG4gICAgICAgKiBYUlAsIHRhZyBmb3IgWExNKS4gRW1wdHkgc3RyaW5nIHdoZW4gdGhlIGFzc2V0IGRvZXMgbm90IHVzZSBvbmUuXG4gICAgICAgKi9cbiAgICAgIHRhZzogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCbG9ja2NoYWluIGV4cGxvcmVyIFVSTCBmb3IgYGFkZHJlc3NgLiAqL1xuICAgICAgdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcHJvZHVjZWQgYnkgYSBzdWNjZXNzZnVsIGRlcG9zaXRcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDUsXG4gICAgICogICBcImRlcG9zaXRfdHhuXCI6IHtcbiAgICAgKiAgICAgXCJkYXRhXCI6IFwiMHguLi5cIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxYmMxNmQ2NzRlYzgwMDAwMFwiXG4gICAgICogICB9LFxuICAgICAqICAgXCJuZXdfdmFsaWRhdG9yX3BrXCI6IFwiOTcwMGZiYjhjOTA2OTQyNDQyYzJhNWIzYWQ3NDk4ZjI3YWVkZGEyNTM3ODZhNmZiYWE4ZmVmNDdmYjdhZjIzNGU1MGNmMmNjZTgxNWE1NTMwODc5OTJhZTU2NWQ0OGRhXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRGVwb3NpdFR4bjoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gSUQgZm9yIHdoaWNoIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLiBJbmNsdWRlcyBvbmx5IGB0b2AsIGB2YWx1ZWAsIGFuZCBgZGF0YWAgZmllbGRzLiAqL1xuICAgICAgZGVwb3NpdF90eG46IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIGNvbXByZXNzZWQgZm9ybSBvZiB0aGUgbmV3IHZhbGlkYXRvciBCTFMgcHVibGljIGtleSAqL1xuICAgICAgbmV3X3ZhbGlkYXRvcl9wazogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGRlcG9zaXQgdG8gcGVyZm9ybVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRGVwb3NpdFR5cGU6IFwiQ2Fub25pY2FsXCIgfCBcIldyYXBwZXJcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gZGVyaXZlIGtleXMgZm9yIG9uZSB0eXBlIGZyb20gYSBzcGVjaWZpZWQgbW5lbW9uaWMuICovXG4gICAgRGVyaXZlS2V5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVBbmRVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvZiBkZXJpdmF0aW9uIHBhdGhzIGZvciB3aGljaCB0byBkZXJpdmUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwibS80NCcvNjAnLzAnLzAvMFwiLFxuICAgICAgICogICBcIm0vNDQnLzkwMDAnLzAnLzAvMFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlICh0aGUgZGVmYXVsdCksIG5vdGhpbmcgaXMgcmV0dXJuZWQgd2hlbiBhIGRlcml2ZWQga2V5IGFscmVhZHlcbiAgICAgICAqIGV4aXN0cy4gV2hlbiB0cnVlLCByZXR1cm5zIHRoZSBLZXlJbmZvIHN0cnVjdCBmb3Iga2V5cyB0aGF0IGFscmVhZHkgZXhpc3RcbiAgICAgICAqIGlmIGNhbGxlciBpcyBhbGxvd2VkIHRvIGxpc3QgdGhhdCBrZXkuXG4gICAgICAgKi9cbiAgICAgIGlkZW1wb3RlbnQ/OiBib29sZWFuO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1hdGVyaWFsLWlkIG9mIHRoZSBtbmVtb25pYyB0byB1c2UgZm9yIGRlcml2YXRpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDlmMDdiZTgyZDkzNGZjYjVkMGY3NWRkMjRjMmRmZWE4YTg1YTRkMGMyODlkNTg4MjhiMzUzN2ZhZTI0ZDMyYjhcbiAgICAgICAqL1xuICAgICAgbW5lbW9uaWNfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBkZXJpdmUga2V5cyBmb3IgbXVsdGlwbGUgdHlwZXMgZnJvbSBhIHNwZWNpZmllZCBtbmVtb25pYy4gKi9cbiAgICBEZXJpdmVLZXlzUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVBbmRVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSAodGhlIGRlZmF1bHQpLCBub3RoaW5nIGlzIHJldHVybmVkIHdoZW4gYSBkZXJpdmVkIGtleSBhbHJlYWR5XG4gICAgICAgKiBleGlzdHMuIFdoZW4gdHJ1ZSwgcmV0dXJucyB0aGUgS2V5SW5mbyBzdHJ1Y3QgZm9yIGtleXMgdGhhdCBhbHJlYWR5IGV4aXN0XG4gICAgICAgKiBpZiBjYWxsZXIgaXMgYWxsb3dlZCB0byBsaXN0IHRoYXQga2V5LlxuICAgICAgICovXG4gICAgICBpZGVtcG90ZW50PzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEtleSB0eXBlcyBhbmQgY29ycmVzcG9uZGluZyBwYXRocyBmb3IgZGVyaXZhdGlvbiwgcGx1cyBvcHRpb25hbFxuICAgICAgICogcG9saWNpZXMgdG8gaW5jbHVkZSBmb3Igc3BlY2lmaWMga2V5cy4gSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lmeVxuICAgICAgICogYSBwb2xpY3kgdGhhdCBkb2VzIG5vdCBhcHBseSB0byB0aGUgY29ycmVzcG9uZGluZyBrZXkgdHlwZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiZGVyaXZhdGlvbl9wYXRoXCI6IFwibS80NCcvNjAnLzAnLzAvMFwiLFxuICAgICAgICogICAgIFwia2V5X3R5cGVcIjogXCJTZWNwRXRoQWRkclwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcImRlcml2YXRpb25fcGF0aFwiOiBcIm0vMTEnLzIyJy8zM1wiLFxuICAgICAgICogICAgIFwia2V5X3R5cGVcIjogXCJUYXByb290QnRjXCIsXG4gICAgICAgKiAgICAgXCJwb2xpY3lcIjogW1xuICAgICAgICogICAgICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAga2V5X3R5cGVzX2FuZF9kZXJpdmF0aW9uX3BhdGhzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVBbmREZXJpdmF0aW9uUGF0aFwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF0ZXJpYWwtaWQgb2YgdGhlIG1uZW1vbmljIHRvIHVzZSBmb3IgZGVyaXZhdGlvbi4gSWYgdW5zcGVjaWZpZWQsXG4gICAgICAgKiBhIG5ldyBtbmVtb25pYyBpcyBmaXJzdCBjcmVhdGVkLlxuICAgICAgICogQGV4YW1wbGUgMHg5ZjA3YmU4MmQ5MzRmY2I1ZDBmNzVkZDI0YzJkZmVhOGE4NWE0ZDBjMjg5ZDU4ODI4YjM1MzdmYWUyNGQzMmI4XG4gICAgICAgKi9cbiAgICAgIG1uZW1vbmljX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIERpZmZpZUhlbGxtYW5SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzZXQgb2Ygc2VyaWFsaXplZCBlbGxpcHRpYyBjdXJ2ZSBwb2ludHMgZnJvbSB3aGljaCB0byBjb21wdXRlIHNoYXJlZCBzZWNyZXRzLlxuICAgICAgICogVGhlIHNlcmlhbGl6YXRpb24gZm9ybWF0IG9mIHRoZXNlIHBvaW50cyBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTsgc2VlIHRoZSBDdWJlU2lnbmVyXG4gICAgICAgKiBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAgICovXG4gICAgICBwb2ludHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dCBjb21wcmVzc2lvbikuXG4gICAgICAgKlxuICAgICAgICogSWYgcHJvdmlkZWQsIHRoZSByZXNwb25zZSB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGlzIHB1YmxpYyBrZXkgdXNpbmcgUkZDOTE4MFxuICAgICAgICogSFBLRS1ESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIHdpdGggQUVTLTI1Ni1HQ00gYXMgdGhlIHN5bW1ldHJpYyBjaXBoZXIuXG4gICAgICAgKlxuICAgICAgICogSWYgbm8gcHVibGljIGtleSBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHRzIHdpbGwgYmUgcmV0dXJuZWQgdW5lbmNyeXB0ZWQuIEluIHRoaXNcbiAgICAgICAqIGNhc2UsIHRoZSBpbnB1dCBwb2ludHMgc2hvdWxkIGJlIG1hc2tlZCB3aXRoIGEgcmFuZG9tIHNjYWxhciB0byBhdm9pZCBsZWFraW5nIHRoZVxuICAgICAgICogc2hhcmVkIHNlY3JldCBpbiB0aGUgcmVzcG9uc2U7IHRoZSByZXN1bHRzIGNhbiBiZSB1bm1hc2tlZCB2aWEgcG9pbnQgbXVsdGlwbGljYXRpb25cbiAgICAgICAqIHdpdGggdGhlIGludmVyc2Ugb2YgdGhlIG1hc2tpbmcgc2NhbGFyLlxuICAgICAgICogQGV4YW1wbGUgQWtwTFQvM2RYQXBKelhTZHVhUFE3YXB5VDBBREJ3cWt0MWVzL2FUMGlXV2ZcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgYSBEaWZmaWUgSGVsbG1hbiBrZXkgZXhjaGFuZ2UgKi9cbiAgICBEaWZmaWVIZWxsbWFuUmVzcG9uc2U6IChcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3VsdGluZyBwb2ludHMgYXMgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmdzIGluIGEga2V5LXR5cGUtLWRlcGVuZGVudCBmb3JtYXQuICovXG4gICAgICAgICAgcG9pbnRzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZV90eXBlOiBcIm1hc2tlZFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBjaXBoZXJ0ZXh0IGNvbnRhaW5pbmcgdGhlIHJlc3VsdGluZyBwb2ludHMuIFRoZSBlbmNsb3NlZCBwbGFpbnRleHQgaXMgYSBzZXF1ZW5jZVxuICAgICAgICAgICAqIG9mIGJhc2U2NC1lbmNvZGVkIGJ5dGUgc3RyaW5ncyBpbiBhIGtleS10eXBlLS1kZXBlbmRlbnQgZm9ybWF0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuY3J5cHRlZF9zaGFyZWRfc2VjcmV0czogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBpbiBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZV90eXBlOiBcImVuY3J5cHRlZFwiO1xuICAgICAgICB9XG4gICAgKSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgcG9saWN5IHdoaWNoIGdvdmVybnMgd2hlbiBhbmQgd2hvIGlzIGFsbG93ZWQgdG8gdXBkYXRlIHRoZSBlbnRpdHkgdGhpcyBwb2xpY3kgaXNcbiAgICAgKiBhdHRhY2hlZCB0byAoZS5nLiwgYSByb2xlIG9yIGEga2V5KS5cbiAgICAgKlxuICAgICAqIFdoZW4gYXR0YWNoZWQgdG8gYSByb2xlLCBieSBkZWZhdWx0LCB0aGlzIHBvbGljeSBhcHBsaWVzIHRvIHJvbGUgZGVsZXRpb24gYW5kIGFsbFxuICAgICAqIHJvbGUgdXBkYXRlcyAoaW5jbHVkaW5nIGFkZGluZy9yZW1vdmluZyBrZXlzIGFuZCB1c2Vycyk7IGluIHRlcm1zIG9mIHNjb3BlcyxcbiAgICAgKiBpdCBhcHBsaWVzIHRvIGBtYW5hZ2U6cm9sZTp1cGRhdGU6KmAgYW5kIGBtYW5hZ2U6cm9sZTpkZWxldGVgLlxuICAgICAqXG4gICAgICogV2hlbiBhdHRhY2hlZCB0byBhIGtleSwgYnkgZGVmYXVsdCwgdGhpcyBwb2xpY3kgYXBwbGllcyB0byBrZXkgZGVsZXRpb24sIGFsbFxuICAgICAqIGtleSB1cGRhdGVzLCBhbmQgYWRkaW5nL3JlbW92aW5nIHRoYXQga2V5IHRvL2Zyb20gYSByb2xlOyBpbiB0ZXJtcyBvZiBzY29wZXMsXG4gICAgICogaXQgYXBwbGllcyB0byBgbWFuYWdlOmtleTp1cGRhdGU6KmAsIGBtYW5hZ2U6a2V5OmRlbGV0ZWAsIGBtYW5hZ2U6cm9sZTp1cGRhdGU6a2V5OipgLlxuICAgICAqXG4gICAgICogVGhpcyBkZWZhdWx0IGNhbiBiZSBjaGFuZ2VkIGJ5IHNldHRpbmcgdGhlIGBhcHBsaWVzX3RvX3Njb3Blc2AgcHJvcGVydHkuXG4gICAgICovXG4gICAgRWRpdFBvbGljeToge1xuICAgICAgYXBwbGllc190b19zY29wZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNjb3BlU2V0XCJdO1xuICAgICAgbWZhPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgdGltZV9sb2NrX3VudGlsPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIEVpcDE5MVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVJUC0xOTEgZGF0YSB0byBzaWduIGFzIGhleC1lbmNvZGVkIGJ5dGVzLlxuICAgICAgICogQGV4YW1wbGUgMHhkZWFkYmVlZjEzYzBmZmVlXG4gICAgICAgKi9cbiAgICAgIGRhdGE6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBzZWNyZXQga2V5IGJlZm9yZSBzaWduaW5nLlxuICAgICAgICogVGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZiBleGFjdGx5IDMyIGJ5dGVzLlxuICAgICAgICogU2VlIHRoZSBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHR3ZWFraW5nIHByb2NlZHVyZS5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIHR3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogMTMzNyxcbiAgICAgKiAgIFwidHlwZWRfZGF0YVwiOiB7XG4gICAgICogICAgIFwiZG9tYWluXCI6IHtcbiAgICAgKiAgICAgICBcImNoYWluSWRcIjogMTMzNyxcbiAgICAgKiAgICAgICBcIm5hbWVcIjogXCJFdGhlciBNYWlsXCIsXG4gICAgICogICAgICAgXCJzYWx0XCI6IFwiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXG4gICAgICogICAgICAgXCJ2ZXJpZnlpbmdDb250cmFjdFwiOiBcIjB4Q2NDQ2NjY2NDQ0NDY0NDQ0NDQ2NDY0NjY0NjQ0NDY0NjY2NjY2NjQ1wiLFxuICAgICAqICAgICAgIFwidmVyc2lvblwiOiBcIjFcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcIm1lc3NhZ2VcIjoge1xuICAgICAqICAgICAgIFwiY29udGVudHNcIjogXCJIZWxsbywgQm9iIVwiLFxuICAgICAqICAgICAgIFwiZnJvbVwiOiB7XG4gICAgICogICAgICAgICBcIm5hbWVcIjogXCJDb3dcIixcbiAgICAgKiAgICAgICAgIFwid2FsbGV0c1wiOiBbXG4gICAgICogICAgICAgICAgIFwiMHhDRDJhM2Q5RjkzOEUxM0NEOTQ3RWMwNUFiQzdGRTczNERmOEREODI2XCIsXG4gICAgICogICAgICAgICAgIFwiMHhEZWFEYmVlZmRFQWRiZWVmZEVhZGJFRUZkZWFkYmVFRmRFYURiZWVGXCJcbiAgICAgKiAgICAgICAgIF1cbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwidG9cIjoge1xuICAgICAqICAgICAgICAgXCJuYW1lXCI6IFwiQm9iXCIsXG4gICAgICogICAgICAgICBcIndhbGxldHNcIjogW1xuICAgICAqICAgICAgICAgICBcIjB4YkJiQkJCQmJiQkJCYmJiQmJiQmJiYmJCQmJCYmJiYkJiQmJiQkJiQlwiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCZGFCZWE1N0IwQkRBQmVBNTdiMGJkQUJFQTU3YjBCRGFiRWE1N1wiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCMGIwYjBiMGIwQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICogICAgICAgICBdXG4gICAgICogICAgICAgfVxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcInByaW1hcnlUeXBlXCI6IFwiTWFpbFwiLFxuICAgICAqICAgICBcInR5cGVzXCI6IHtcbiAgICAgKiAgICAgICBcIkVJUDcxMkRvbWFpblwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInZlcnNpb25cIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcImNoYWluSWRcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwidWludDI1NlwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ2ZXJpZnlpbmdDb250cmFjdFwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInNhbHRcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiYnl0ZXMzMlwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIkdyb3VwXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibWVtYmVyc1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25bXVwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIk1haWxcIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJmcm9tXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvblwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ0b1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25cIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwiY29udGVudHNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiUGVyc29uXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwid2FsbGV0c1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzW11cIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF1cbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFaXA3MTJTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4taWQgdG8gd2hpY2ggdGhpcyB0eXBlZCBkYXRhIHdpbGwgYmUgc2VudFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgdHdlYWsgdmFsdWUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHNlY3JldCBrZXkgYmVmb3JlIHNpZ25pbmcuXG4gICAgICAgKiBUaGlzIGZpZWxkIG11c3QgY29udGFpbiBhIGJhc2UtNjQgc3RyaW5nIGVuY29kaW5nIGEgdmVjdG9yIG9mIGV4YWN0bHkgMzIgYnl0ZXMuXG4gICAgICAgKiBTZWUgdGhlIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgdHdlYWtpbmcgcHJvY2VkdXJlLlxuICAgICAgICogQGV4YW1wbGUgRjQxSEF5MnE1R244bGFGMkN1TXNaYlJBUVRtRCs0T2IzVlVNWjdUQkdLND1cbiAgICAgICAqL1xuICAgICAgdHdlYWs/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdHlwZWRfZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZERhdGFcIl07XG4gICAgfTtcbiAgICBFbWFpbDogc3RyaW5nO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gYW5zd2VyIHRvIHRoZSBjaGFsbGVuZ2UgcmV0dXJuZWQgYnkgdGhlIGBtZmFfZW1haWxfaW5pdGAgZW5kcG9pbnQuICovXG4gICAgRW1haWxPdHBBbnN3ZXI6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEZ1bGwgSldUIHRva2VuLCBjb25zdHJ1Y3RlZCBieSBjb25jYXRlbmF0aW5nIHRoZSBcInBhcnRpYWwgdG9rZW5cIlxuICAgICAgICogKGkuZS4sIGB7aGVhZGVyfS57cGF5bG9hZH0uYCkgcmV0dXJuZWQgYnkgdGhlIGBtYWlsX2VtYWlsX2luaXRgIGVuZHBvaW50XG4gICAgICAgKiBhbmQgdGhlIHNpZ25hdHVyZSBzZW50IHRvIHRoZSB1c2VyJ3MgZW1haWwuXG4gICAgICAgKi9cbiAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXF1ZXN0IHVzZXJzIHNlbmQgdG8gaW5pdGlhdGUgZW1haWwgT1RQICovXG4gICAgRW1haWxPdHBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCB3aGljaCB3aWxsIHJlY2VpdmUgdGhlIE9UUCAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXNwb25zZSB0byBhbiBlbWFpbCBPVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIFRoaXMgcmVzcG9uc2UgY29udGFpbnMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlLlxuICAgICAqIFRoZSBzaWduYXR1cmUgaXMgc2VudCB0byB0aGUgZW5kLXVzZXIgaW4gYW4gZW1haWwuXG4gICAgICogVGhlIHRva2VuIGNhbiBiZSByZWNvbnN0cnVjdGVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGBwYXJ0aWFsX3Rva2VuYCB3aXRoIHRoZSBzaWduYXR1cmUuXG4gICAgICovXG4gICAgRW1haWxPdHBSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gd2l0aG91dCB0aGUgc2lnbmF0dXJlLlxuICAgICAgICogKFRoZSBzaWduYXR1cmUsIHdoaWNoIGlzIGFjdHVhbGx5IGEgTUFDLCBpcyBzZW50IHRvIHRoZSBlbmQtdXNlciBpbiBhbiBlbWFpbClcbiAgICAgICAqL1xuICAgICAgcGFydGlhbF90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNjcmliZXMgZW1haWwgcHJlZmVyZW5jZXMgYXQgYW4gT3JnIGxldmVsIC0gd2hhdCBlbWFpbHMgdG8gc2VuZCBhbmQgb3B0aW9ucyBhc3NvY2lhdGVkICovXG4gICAgRW1haWxQcmVmZXJlbmNlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdBbGVydHNQcmVmc1wiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgdHJ1ZSwgc2VuZCBub3RpZmljYXRpb25zIG9uIGV2ZXJ5IGxvZ2luICovXG4gICAgICBsb2dpbl9ub3RpZmljYXRpb25zPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiB0cnVlLCBzZW5kIG5vdGlmaWNhdGlvbnMgd2hlbiBsb2dnaW5nIGluIGZyb20gYSBuZXcgZGV2aWNlLlxuICAgICAgICogbmV3X2RldmljZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbG9naW5fbm90aWZpY2F0aW9ucy4gRS5nLiwgZW1haWwgZm9yXG4gICAgICAgKiBuZXdfZGV2aWNlIGlzIHNlbnQgaW5zdGVhZCBvZiBhIGdlbmVyYWwgbG9naW4gbm90aWZpY2F0aW9uIGVtYWlsIHdoZW4gYVxuICAgICAgICogbmV3IGRldmljZSBpcyBkZXRlY3RlZFxuICAgICAgICovXG4gICAgICBuZXdfZGV2aWNlPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHRydWUsIHNlbmQgZW1haWwgbm90aWZpY2F0aW9ucyBmb3IgbWZhIGFwcHJvdmFscyAqL1xuICAgICAgcGVuZGluZ19hcHByb3ZhbHM/OiBib29sZWFuIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byByZXNldCB2ZXJpZmllZCBlbWFpbC4gKi9cbiAgICBFbWFpbFJlc2V0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGlzIGVtYWlsIHNob3VsZCBiZSB1c2FibGUgZm9yIGVtYWlsIE9UUCBsb2dpbi4gVGhlIHJlcXVlc3RcbiAgICAgICAqIHdpbGwgZmFpbCBpZiB0aGlzIGZpZWxkIGlzIHNldCB0byBgdHJ1ZWAsIGFuZCB0aGUgb3JnIGRvZXMgbm90IGhhdmVcbiAgICAgICAqIGVtYWlsIE9UUCBlbmFibGVkLiBEZWZhdWx0OiBgZmFsc2VgXG4gICAgICAgKi9cbiAgICAgIGFsbG93X290cF9sb2dpbj86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgdG8gcmVnaXN0ZXIgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlZmF1bHQgbnVsbCAqL1xuICAgIEVtcHR5OiB1bmtub3duO1xuICAgIEVtcHR5SW1wbDoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBjcmVhdGUgYSBzZXQgb2YgRU9UUyBub25jZXMgZm9yIGEgc3BlY2lmaWVkIGNoYWluLWlkLCBzdGFydGluZ1xuICAgICAqIGF0IGEgc3BlY2lmaWVkIGJsb2NrIGhlaWdodC5cbiAgICAgKi9cbiAgICBFb3RzQ3JlYXRlTm9uY2VSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZCBmb3Igd2hpY2ggdGhlIG5vbmNlcyB3aWxsIGJlIHVzZWQsIGFzIGEgaGV4IHN0cmluZ1xuICAgICAgICogQGV4YW1wbGUgMHgxMTIyMzM0NFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG51bWJlciBvZiBub25jZXMgdG8gZ2VuZXJhdGVcbiAgICAgICAqIEBleGFtcGxlIDE2XG4gICAgICAgKi9cbiAgICAgIG51bTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0aW5nIGJsb2NrIGhlaWdodCBvZiB0aGUgZ2VuZXJhdGVkIG5vbmNlcyAocXVvdGVkIGRlY2ltYWwgdTY0KVxuICAgICAgICogQGV4YW1wbGUgMzEzMzdcbiAgICAgICAqL1xuICAgICAgc3RhcnRfaGVpZ2h0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGdlbmVyYXRlZCB3aGVuIGNyZWF0aW5nIEVPVFMgbm9uY2VzICovXG4gICAgRW90c0NyZWF0ZU5vbmNlUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZ2VuZXJhdGVkIG5vbmNlcyBhcyBhbiBhcnJheSBvZiAweC1wcmVmaXhlZCBoZXggc3RyaW5nc1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIjB4YjM5M2JmMzllNzFhMTZkNzg0ODUzZDU4MjU1YTI5NjIyMmE5OWZkM2M4N2FhN2NhMjA2YzUyMzBjMTg4ZjFjN1wiLFxuICAgICAgICogICBcIjB4ZTAxOTM2NTg0YjRmMGMwZTk3ZjBkMzAxOGM0ZjlkYjJiZjdkZTQxMzk1YzY0MDNhNDhmZDBkZmYwZWY3YjQwZFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG5vbmNlczogc3RyaW5nW107XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgZm9yIGFuIEVPVFMgc2lnbmF0dXJlIG9uIGEgc3BlY2lmaWVkIG1lc3NhZ2UsIGNoYWluLWlkLCBibG9jay1oZWlnaHQgdHJpcGxlICovXG4gICAgRW90c1NpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBibG9jayBoZWlnaHQgZm9yIHRoZSBzaWduYXR1cmUgKHF1b3RlZCBkZWNpbWFsIHU2NClcbiAgICAgICAqIEBleGFtcGxlIDEyMzQ1NlxuICAgICAgICovXG4gICAgICBibG9ja19oZWlnaHQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZCBmb3IgdGhlIHNpZ25hdHVyZVxuICAgICAgICogQGV4YW1wbGUgMHgxMTIyMzM0NFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG1lc3NhZ2UgdG8gc2lnblxuICAgICAgICogQGV4YW1wbGUgMHg1YTI2ODhmYWVhMDlkNDJiOTI3MGZkYjhkZTZmZmY2ZjE5MjI0M2E5MTBiYTY2MzI5MDczZTEyZTBkMDA0NmEyXG4gICAgICAgKi9cbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFcG9jaCBpcyBhIHF1b3RlZCBgdWludDY0YC5cbiAgICAgKiBAZXhhbXBsZSAyNTZcbiAgICAgKi9cbiAgICBFcG9jaDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZVRpbWUgbWVhc3VyZWQgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLlxuICAgICAqIEEgd3JhcHBlciB0eXBlIGZvciBzZXJpYWxpemF0aW9uIHRoYXQgZW5jb2RlcyBhIFtgU3lzdGVtVGltZWBdIGFzIGEgW2B1NjRgXVxuICAgICAqIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgW2BTeXN0ZW1UaW1lOjpVTklYX0VQT0NIYF0uXG4gICAgICovXG4gICAgRXBvY2hEYXRlVGltZTogbnVtYmVyO1xuICAgIEVycm9yT2JqOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb2RlXG4gICAgICAgKi9cbiAgICAgIGNvZGU6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZGF0YSAqL1xuICAgICAgZGF0YT86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE1lc3NhZ2UgKi9cbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN0cnVjdHVyZSBvZiBFcnJvclJlc3BvbnNlIG11c3QgbWF0Y2ggdGhlIHJlc3BvbnNlIHRlbXBsYXRlIHRoYXQgQVdTIHVzZXMgKi9cbiAgICBFcnJvclJlc3BvbnNlOiB7XG4gICAgICBhY2NlcHRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRWYWx1ZVwiXSB8IG51bGw7XG4gICAgICBlcnJvcl9jb2RlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lckVycm9yQ29kZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSAqL1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlIChpbmNsdWRlZCBpbiBzaWduZXIgcmVzcG9uc2VzLCB3aGVuIHJlcXVlc3RlZCkgKi9cbiAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCByZXF1ZXN0IGlkZW50aWZpZXIgKi9cbiAgICAgIHJlcXVlc3RfaWQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVzcGxvcmEgcmVxdWVzdCAqL1xuICAgIEVzcGxvcmFSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgYm9keSAqL1xuICAgICAgYm9keT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgbWV0aG9kICovXG4gICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgbmV0d29yazogXCJtYWlubmV0XCIgfCBcInRlc3RuZXRcIiB8IFwic2lnbmV0XCI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcmVsYXRpdmUgcGF0aCAod2hpY2ggY29tZXMgYWZ0ZXIgJy97bmV0d29ya30vYXBpLycpICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICBFc3Bsb3JhUmVzcG9uc2U6IHVua25vd247XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVWTSB0cmFuc2FjdGlvbiBzaWduaW5nIHJlcXVlc3QuXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJjaGFpbl9pZFwiOiA0MzExMyxcbiAgICAgKiAgIFwidHhcIjoge1xuICAgICAqICAgICBcImNoYWluX2lkXCI6IFwiMHhhODY5XCIsXG4gICAgICogICAgIFwiZ2FzXCI6IFwiMHg2MWE4MFwiLFxuICAgICAqICAgICBcIm1heEZlZVBlckdhc1wiOiBcIjB4OTUwMkY5MDBcIixcbiAgICAgKiAgICAgXCJtYXhQcmlvcml0eUZlZVBlckdhc1wiOiBcIjB4NTBcIixcbiAgICAgKiAgICAgXCJub25jZVwiOiBcIjB4YlwiLFxuICAgICAqICAgICBcInRvXCI6IFwiMHhmMDBiYTEyZjAwMDAwMDAwYjQxMjEyMDAwMDBmMDBjMGZmZWVmMDBkXCIsXG4gICAgICogICAgIFwidHlwZVwiOiBcIjB4MlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxMDAwMDAwMDAwMFwiXG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqL1xuICAgIEV0aDFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQgdG8gc2V0IGluIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi5cbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIHR3ZWFrIHZhbHVlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBzZWNyZXQga2V5IGJlZm9yZSBzaWduaW5nLlxuICAgICAgICogVGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyBhIHZlY3RvciBvZiBleGFjdGx5IDMyIGJ5dGVzLlxuICAgICAgICogU2VlIHRoZSBDdWJlU2lnbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHR3ZWFraW5nIHByb2NlZHVyZS5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIHR3ZWFrPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHR4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRyYW5zYWN0aW9uXCJdO1xuICAgIH07XG4gICAgRXRoMVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAqIEBleGFtcGxlIDB4MjI4OTUxMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjAxZDU4NjU2YjBlMjJhYWE2OGZkYzY5MmRiNDE5NzkwOThjMzg4NmVkMzMwMTVkNzQ2N2RlOTIxMTYwOWNkYWMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDhiMGMyOTAwMzI0ZDNmZjlhZGZiYTdmZGZlNWFmM2Y5YjJjZGJlZWY3YjI4MDQzN2JiZjFiMWM1OWEwOTNkNjE1YWZlM2U1ZGZlZDk2MjJiNTQwY2RkOWI0OWIzYzVhZDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5MDExYWRiY2MzYmM5YzAzMDdiYjA3ZjM3ZGRhMWExYTljNjlkMmUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwOTAzZGI4NTI1Njc0YjhlNzkwNGY5YjdkN2Q5ZWM1NWEwYTQyZDMzY2Y1OGJlMjU0NjliMGMyMWJiYjZkMDYxNzJiYzViYjVmZDFhZWQ4ZTRmMzU5MzY5Njg5NTgxMTZiMDYxOTU1M2MyY2IxYzUyZTczMjMwNzRjNmY4ZWIzZDVhNzA3NGZjNjU4MDE0OGRmOTA3ODM3ZmEzYjE2NGFkN2ZiYzIyODhkYWQxZThhNWIwMjEwOTViNTdjOGEzNmQ0XG4gICAgICAgKi9cbiAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiZXRoMl9zaWduX3JlcXVlc3RcIjoge1xuICAgICAqICAgICBcImFnZ3JlZ2F0aW9uX3Nsb3RcIjoge1xuICAgICAqICAgICAgIFwic2xvdFwiOiBcIjM2XCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJmb3JrX2luZm9cIjoge1xuICAgICAqICAgICAgIFwiZm9ya1wiOiB7XG4gICAgICogICAgICAgICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4NDI0MjQyNDJcIixcbiAgICAgKiAgICAgICAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICAgICAgICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDQyNDI0MjQyXCJcbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwiZ2VuZXNpc192YWxpZGF0b3JzX3Jvb3RcIjogXCIweDlkMTNkNjEyMTJjMDY3ZTAyY2U4ZTYwOGE3MDA3ZTJjM2IwMjU3MWU5ZTZmMjdmZjQ1ZGZhOTFiZjI3Yzg3MGJcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcInNpZ25pbmdSb290XCI6IFwiMHg5YzU3ZTc3YzQ5NjU3Mjc1NDJiOTMzN2RmNjc1NmY5NDg0NjRiY2EzODU5YmVhNmVkM2MwZWM2NjAwZDg5ODJhXCIsXG4gICAgICogICAgIFwidHlwZVwiOiBcIkFHR1JFR0FUSU9OX1NMT1RcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwibmV0d29ya1wiOiBcIm1haW5uZXRcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFdGgyU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHByb2R1Y2UgYSB2YWxpZCBzaWduYXR1cmUsIGp1c3QgZXZhbHVhdGUgYXR0YWNoZWQgcG9saWNpZXMuICovXG4gICAgICBkcnlfcnVuPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3Vic2V0IG9mIHRoZSBXZWIzU2lnbmVyIEV0aDIgQkxTIHNpZ25pbmcgcmVxdWVzdCB3aG9zZSBzY2hlbWEgaXMgZGVmaW5lZFxuICAgICAgICogW2hlcmVdKGh0dHBzOi8vY29uc2Vuc3lzLmdpdGh1Yi5pby93ZWIzc2lnbmVyL3dlYjNzaWduZXItZXRoMi5odG1sI3RhZy9TaWduaW5nL29wZXJhdGlvbi9FVEgyX1NJR04pLlxuICAgICAgICogV2UgaGFuZGxlIGRlcG9zaXRzIGFuZCB2b2x1bnRhcnkgZXhpdHMgc2VwYXJhdGVseS5cbiAgICAgICAqL1xuICAgICAgZXRoMl9zaWduX3JlcXVlc3Q6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIG5ldHdvcms6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV0d29ya1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRhdGlvbiBvZiBhbiBldmVudC4gVGhpcyB0eXBlIGlzIHVzZWQgdG8gc2VyaWFsaXplIGV2ZW50cyB0byBDbG91ZFdhdGNoIExvZ3MgYW5kIHRvXG4gICAgICogZGVzZXJpYWxpemUgdGhlbSB3aGVuIGFuYWx5emluZyB0aGUgbG9ncy5cbiAgICAgKi9cbiAgICBFdmVudDoge1xuICAgICAgZXZlbnQ6IFwiRXZlbnRcIjtcbiAgICB9ICYgT21pdDxjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2ZW50RGF0YVwiXSwgXCJldmVudFwiPiAmIHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVbmlxdWUgaWRlbnRpZmllciBvZiBhbiBldmVudC4gKi9cbiAgICAgICAgZXZlbnRfaWQ/OiBzdHJpbmc7XG4gICAgICAgIG9yZzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgb3JpZ2luIGhlYWRlciBvZiB0aGUgcmVxdWVzdCB0aGF0IHRyaWdnZXJlZCB0aGlzIGV2ZW50ICovXG4gICAgICAgIG9yaWdpbj86IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJlcXVlc3QgdGhhdCB0cmlnZ2VyZWQgdGhpcyBldmVudCAqL1xuICAgICAgICByZXF1ZXN0X2lkPzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRpbWVzdGFtcCBvZiB0aGUgZXZlbnQgKGluIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVW5peCBFcG9jaClcbiAgICAgICAgICovXG4gICAgICAgIHV0Y190aW1lc3RhbXA6IG51bWJlcjtcbiAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERhdGEgYXNzb2NpYXRlZCB3aXRoIGFuIGV2ZW50LiBEZXBlbmRpbmcgb24gdGhlIGV2ZW50IHR5cGUgKGkuZS4sIGJpbGxpbmcgb3Igb3JnIGV2ZW50KSxcbiAgICAgKiBkaWZmZXJlbnQgZmllbGRzIGFyZSB1c2VkLlxuICAgICAqL1xuICAgIEV2ZW50RGF0YTpcbiAgICAgIHwgKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmlsbGluZ0FyZ3NcIl0gJiB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgZXZlbnQ6IFwiY3ViaXN0OjpiaWxsaW5nXCI7XG4gICAgICAgIH0pXG4gICAgICB8IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50QXJnc1wiXSAmIHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBldmVudDogXCJjdWJpc3Q6Om9yZ19ldmVudFwiO1xuICAgICAgICB9KTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIEVWTSBhZGRyZXNzIGFuZCBpdHMgY2hhaW4uICovXG4gICAgRXZtQWRkcmVzc0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBFVk0gYWRkcmVzcy5cbiAgICAgICAqIEBleGFtcGxlIDB4NTJmNmMwYjMwNmU2Njg5M2MwNDE0YWJiNzA5NTFjNGRhYzE1YTk2OVxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgRVZNIGNoYWluIHRoaXMgYWRkcmVzcyBiZWxvbmdzIHRvICoqYXMgYSBoZXggc3RyaW5nKiouIFRoZSBzdHJpbmdcbiAgICAgICAqIG11c3Qgc3RhcnQgd2l0aCBcIjB4XCIgYW5kIGhhdmUgYW4gZXZlbiBsZW5ndGguIElmIHRoZSBjaGFpbiBpcyBvbWl0dGVkLFxuICAgICAgICogdGhlIGFkZHJlc3MgaXMgYWxsb3dlZCB0byBiZSB1c2VkIG9uIGFueSBFVk0gY2hhaW4sIGFuZCBpcyByZWZlcnJlZCB0b1xuICAgICAgICogYXMgYSBnbG9iYWwgRVZNIGFkZHJlc3MuXG4gICAgICAgKiBAZXhhbXBsZSAweDAxXG4gICAgICAgKi9cbiAgICAgIGNoYWluPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBjdXJyZW5jeSB1c2VkIG9uIGFuIEVWTSBjaGFpbi4gKi9cbiAgICBFdm1DdXJyZW5jeUluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBjdXJyZW5jeSB1c2VzLlxuICAgICAgICogQGV4YW1wbGUgMThcbiAgICAgICAqL1xuICAgICAgZGVjaW1hbHM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBmdWxsIG5hbWUgb2YgdGhlIGN1cnJlbmN5LlxuICAgICAgICogQGV4YW1wbGUgRXRoZXJcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN5bWJvbCBmb3IgdGhlIGN1cnJlbmN5LCB0eXBpY2FsbHkgYSB0aHJlZSBsZXR0ZXIgc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgRVRIXG4gICAgICAgKi9cbiAgICAgIHN5bWJvbDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIGN1c3RvbSBFVk0gY2hhaW4uICovXG4gICAgRXZtQ3VzdG9tQ2hhaW46IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBpZC4gRW5mb3JjZWQgdG8gYmUgdW5pcXVlIGFtb25nIGFsbCBjdXN0b20gRVZNIGNoYWlucyBpbiB0aGUgb3JnYW5pemF0aW9uLiBJdCBtdXN0IGJlIGEgaGV4IHN0cmluZyAoc3RhcnRpbmcgd2l0aCBcIjB4XCIpIHdpdGggZXZlbiBsZW5ndGguXG4gICAgICAgKiBAZXhhbXBsZSAweDAxXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgY2hhaW4uXG4gICAgICAgKiBAZXhhbXBsZSBFdGhlcmV1bSBNYWlubmV0XG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG5hdGl2ZV9jdXJyZW5jeTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1DdXJyZW5jeUluZm9cIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgVVJMIG9mIHRoZSBSUEMgcHJvdmlkZXIgZm9yIHRoaXMgY2hhaW4uXG4gICAgICAgKiBAZXhhbXBsZSBodHRwczovL2V0aGVyZXVtLXJwYy5wdWJsaWNub2RlLmNvbVxuICAgICAgICovXG4gICAgICBycGNfdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIEVWTSB0b2tlbi4gKi9cbiAgICBFdm1Ub2tlbjpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHRva2VuOiBcIk5hdGl2ZVwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0b2tlbjogXCJFcmMyMFwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIEVSQy0yMCB0b2tlbiBhZGRyZXNzLiAqL1xuICAgICAgICAgIHRva2VuX2FkZHJlc3M6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVWTS1zcGVjaWZpYyB0cmFuc2FjdGlvbiBkZXRhaWxzLiAqL1xuICAgIEV2bVRyYW5zYWN0aW9uRGV0YWlsczoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEVWTSBjaGFpbiBpZCBmb3IgdGhlIGNoYWluIHRoZSB0cmFuc2FjdGlvbiBpcyBzdWJtaXR0ZWQgdG8uXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gaGFzaCwgYXMgc3VibWl0dGVkIHRvIHRoZSBjaGFpbi5cbiAgICAgICAqXG4gICAgICAgKiBDYW4gYmUgdW5kZWZpbmVkIGlmIHRoZSB0cmFuc2FjdGlvbiBoYXNuJ3QgYmVlbiBzaWduZWQgb3Igc3VibWl0dGVkIHlldC5cbiAgICAgICAqL1xuICAgICAgaGFzaD86IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzaWduYXR1cmUgZm9yIHRoZSB0cmFuc2FjdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBDYW4gYmUgdW5kZWZpbmVkIGlmIHRoZSB0cmFuc2FjdGlvbiBoYXNuJ3QgYmVlbiBzaWduZWQgeWV0LCBvciBmYWlsZWQgdG8gYmUgc2lnbmVkLlxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gaXRzZWxmLiAqL1xuICAgICAgdHg6IHVua25vd247XG4gICAgfTtcbiAgICBFdm1UeENtcDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVG8gcHJldmVudCByZXBsYXkgYXR0YWNrcywgYW55IGdpdmVuIE1GQSByZWNlaXB0IGlzIG5vcm1hbGx5IGFsbG93ZWQgdG8gYmUgdXNlZCBvbmx5IG9uY2UuXG4gICAgICAgKlxuICAgICAgICogSW4gdGhpcyBjYXNlLCBob3dldmVyLCBiZWNhdXNlIEVWTSB0cmFuc2FjdGlvbnMgYWxyZWFkeSBoYXZlIGEgcmVwbGF5IHByZXZlbnRpb24gbWVjaGFuaXNtXG4gICAgICAgKiAobmFtZWx5IHRoZSAnbm9uY2UnIHByb3BlcnR5KSwgd2UgYWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIGdyYWNlIHBlcmlvZCAoaW4gc2Vjb25kcykgdG9cbiAgICAgICAqIGluZGljYXRlIGhvdyBsb25nIGFuIE1GQSByZWNlaXB0IHNob3VsZCByZW1haW4gdmFsaWQgYWZ0ZXIgaXRzIGZpcnN0IHVzZS5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlIHRoYXQgd2UgYWxsb3cgYm90aCAnZ3JhY2UnIGFuZCAnaWdub3JlX25vbmNlJyB0byBiZSBzZXQgYmVjYXVzZSBvbmNlIGFuIE1GQSByZXF1ZXN0XG4gICAgICAgKiBlbnRlcnMgaXRzIGdyYWNlIHBlcmlvZCB3ZSB1bmNvbmRpdGlvbmFsbHkgc2V0IGl0cyAnaWdub3JlX25vbmNlJyBwcm9wZXJ0eSB0byAnZmFsc2UnIHRvXG4gICAgICAgKiBlbnN1cmUgdGhhdCBhbnkgc3Vic2VxdWVudCByZXF1ZXN0cyB0aGF0IGNsYWltIHRoZSBzYW1lIHJlY2VpcHQgbXVzdCBzaWduIGZvciB0aGUgc2FtZVxuICAgICAgICogbm9uY2UgYXMgdGhlIHJlcXVlc3Qgd2Ugc2lnbmVkIG9yaWdpbmFsbHkgd2l0aCB0aGF0IHJlY2VpcHQuXG4gICAgICAgKlxuICAgICAgICogQWxzbyBub3RlIHRoYXQgdGhlIGdyYWNlIHBlcmlvZCBjYW5ub3QgZXh0ZW5kIHRoZSBsaWZldGltZSBvZiBhbiBNRkEgcmVxdWVzdCBiZXlvbmQgaXRzXG4gICAgICAgKiBvcmlnaW5hbCBleHBpcmF0aW9uIGRhdGUuXG4gICAgICAgKlxuICAgICAgICogVGhlIGdyYWNlIHBlcmlvZCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMzAgZGF5cy5cbiAgICAgICAqL1xuICAgICAgZ3JhY2U/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSAnZ2FzJyBwcm9wZXJ0eSBvZiB0aGUgRVZNIHRyYW5zYWN0aW9uIGlzIGFsbG93ZWQgdG8gYmUgZGlmZmVyZW50LiAqL1xuICAgICAgaWdub3JlX2dhcz86IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlICdub25jZScgcHJvcGVydHkgb2YgdGhlIEVWTSB0cmFuc2FjdGlvbiBpcyBhbGxvd2VkIHRvIGJlIGRpZmZlcmVudC4gKi9cbiAgICAgIGlnbm9yZV9ub25jZT86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGZpZWxkcyB1c2VkIHRvIGN1c3RvbWl6ZSBFVk0gdHJhbnNhY3Rpb25zLiAqL1xuICAgIEV2bVR4Q3VzdG9taXphdGlvbjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZ2FzIGxpbWl0LlxuICAgICAgICpcbiAgICAgICAqIElmIG5vdCBzcGVjaWZpZWQsIGVzdGltYXRlZCBnYXMgaXMgdXNlZC5cbiAgICAgICAqL1xuICAgICAgZ2FzX2xpbWl0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1heCBmZWUgZm9yIHRoZSB0cmFuc2FjdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBlc3RpbWF0ZWQgZmVlcyBhcmUgdXNlZC5cbiAgICAgICAqL1xuICAgICAgbWF4X2ZlZV9wZXJfZ2FzPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1heCBwcmlvcml0eSBmZWUgZm9yIHRoZSB0cmFuc2FjdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBlc3RpbWF0ZWQgZmVlcyBhcmUgdXNlZC5cbiAgICAgICAqL1xuICAgICAgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG5vbmNlLlxuICAgICAgICpcbiAgICAgICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBuZXh0IGF2YWlsYWJsZSBub25jZSBpcyB1c2VkLlxuICAgICAgICovXG4gICAgICBub25jZT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBFdm1UeERlcG9zaXRFcnJvckNvZGU6XG4gICAgICB8IFwiRXZtVHhEZXBvc2l0UmVjZWl2ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0RW1wdHlEYXRhXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRFbXB0eUNoYWluSWRcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEVtcHR5UmVjZWl2ZXJcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFVuZXhwZWN0ZWRWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZERhdGFMZW5ndGhcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdE5vQWJpXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXROb0RlcG9zaXRGdW5jdGlvblwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZEZ1bmN0aW9uTmFtZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFZhbGlkYXRvcktleVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0SW52YWxpZFZhbGlkYXRvcktleVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0TWlzc2luZ0RlcG9zaXRBcmdcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFdyb25nRGVwb3NpdEFyZ1R5cGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdFZhbGlkYXRvcktleU5vdEluUm9sZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFdpdGhkcmF3YWxDcmVkZW50aWFsc1wiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5yZXNvbHZlZFJvbGVcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEludmFsaWREZXBvc2l0RW5jb2RpbmdcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNvdXJjZSBvZiBhIHBvbGljeSBleGVjdXRpb24sIGkuZS4gdGhlIHJlYXNvbiBpdCB3YXMgZXhlY3V0ZWQuXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBFeGVjdXRpb25Tb3VyY2U6IFwiU2lnblJlcXVlc3RcIiB8IFwiVXNlckludm9jYXRpb25cIjtcbiAgICAvKipcbiAgICAgKiBFeHBsaWNpdFNjb3BlXG4gICAgICogQGRlc2NyaXB0aW9uIEV4cGxpY2l0bHkgbmFtZWQgc2NvcGVzIGZvciBhY2Nlc3NpbmcgQ3ViZVNpZ25lciBBUElzXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBFeHBsaWNpdFNjb3BlOlxuICAgICAgfCBcInNpZ246KlwiXG4gICAgICB8IFwic2lnbjphdmFcIlxuICAgICAgfCBcInNpZ246YmluYW5jZToqXCJcbiAgICAgIHwgXCJzaWduOmJpbmFuY2U6c3ViVG9NYXN0ZXJcIlxuICAgICAgfCBcInNpZ246YmluYW5jZTpzdWJUb1N1YlwiXG4gICAgICB8IFwic2lnbjpiaW5hbmNlOnVuaXZlcnNhbFRyYW5zZmVyXCJcbiAgICAgIHwgXCJzaWduOmJpbmFuY2U6c3ViQWNjb3VudEFzc2V0c1wiXG4gICAgICB8IFwic2lnbjpiaW5hbmNlOmFjY291bnRJbmZvXCJcbiAgICAgIHwgXCJzaWduOmJpbmFuY2U6c3ViQWNjb3VudFRyYW5zZmVySGlzdG9yeVwiXG4gICAgICB8IFwic2lnbjpiaW5hbmNlOnVuaXZlcnNhbFRyYW5zZmVySGlzdG9yeVwiXG4gICAgICB8IFwic2lnbjpiaW5hbmNlOndpdGhkcmF3XCJcbiAgICAgIHwgXCJzaWduOmJpbmFuY2U6d2l0aGRyYXdIaXN0b3J5XCJcbiAgICAgIHwgXCJzaWduOmJpbmFuY2U6ZGVwb3NpdFwiXG4gICAgICB8IFwic2lnbjpibG9iXCJcbiAgICAgIHwgXCJzaWduOmRpZmZpZUhlbGxtYW5cIlxuICAgICAgfCBcInNpZ246YnRjOipcIlxuICAgICAgfCBcInNpZ246YnRjOnNlZ3dpdFwiXG4gICAgICB8IFwic2lnbjpidGM6dGFwcm9vdFwiXG4gICAgICB8IFwic2lnbjpidGM6cHNidDoqXCJcbiAgICAgIHwgXCJzaWduOmJ0Yzpwc2J0OmRvZ2VcIlxuICAgICAgfCBcInNpZ246YnRjOnBzYnQ6bGVnYWN5XCJcbiAgICAgIHwgXCJzaWduOmJ0Yzpwc2J0OnNlZ3dpdFwiXG4gICAgICB8IFwic2lnbjpidGM6cHNidDp0YXByb290XCJcbiAgICAgIHwgXCJzaWduOmJ0Yzpwc2J0Omx0Y1NlZ3dpdFwiXG4gICAgICB8IFwic2lnbjpidGM6bWVzc2FnZToqXCJcbiAgICAgIHwgXCJzaWduOmJ0YzptZXNzYWdlOnNlZ3dpdFwiXG4gICAgICB8IFwic2lnbjpidGM6bWVzc2FnZTpsZWdhY3lcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjoqXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246ZW90czoqXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246ZW90czpub25jZXNcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjplb3RzOnNpZ25cIlxuICAgICAgfCBcInNpZ246YmFieWxvbjpzdGFraW5nOipcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjpzdGFraW5nOmRlcG9zaXRcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjpzdGFraW5nOnVuYm9uZFwiXG4gICAgICB8IFwic2lnbjpiYWJ5bG9uOnN0YWtpbmc6d2l0aGRyYXdcIlxuICAgICAgfCBcInNpZ246YmFieWxvbjpzdGFraW5nOnNsYXNoXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246cmVnaXN0cmF0aW9uXCJcbiAgICAgIHwgXCJzaWduOmJhYnlsb246Y292ZW5hbnRcIlxuICAgICAgfCBcInNpZ246ZXZtOipcIlxuICAgICAgfCBcInNpZ246ZXZtOnR4XCJcbiAgICAgIHwgXCJzaWduOmV2bTplaXAxOTFcIlxuICAgICAgfCBcInNpZ246ZXZtOmVpcDcxMlwiXG4gICAgICB8IFwic2lnbjpldGgyOipcIlxuICAgICAgfCBcInNpZ246ZXRoMjp2YWxpZGF0ZVwiXG4gICAgICB8IFwic2lnbjpldGgyOnN0YWtlXCJcbiAgICAgIHwgXCJzaWduOmV0aDI6dW5zdGFrZVwiXG4gICAgICB8IFwic2lnbjpzb2xhbmFcIlxuICAgICAgfCBcInNpZ246c3VpXCJcbiAgICAgIHwgXCJzaWduOnRlbmRlcm1pbnRcIlxuICAgICAgfCBcInNpZ246bW1pXCJcbiAgICAgIHwgXCJtYW5hZ2U6KlwiXG4gICAgICB8IFwibWFuYWdlOnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6ZW1haWw6KlwiXG4gICAgICB8IFwibWFuYWdlOmVtYWlsOmdldFwiXG4gICAgICB8IFwibWFuYWdlOmVtYWlsOnVwZGF0ZVwiXG4gICAgICB8IFwibWFuYWdlOmVtYWlsOmRlbGV0ZVwiXG4gICAgICB8IFwibWFuYWdlOm1mYToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dm90ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnZvdGU6Y3NcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dm90ZTplbWFpbFwiXG4gICAgICB8IFwibWFuYWdlOm1mYTp2b3RlOmZpZG9cIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dm90ZTp0b3RwXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnJlZ2lzdGVyOipcIlxuICAgICAgfCBcIm1hbmFnZTptZmE6cmVnaXN0ZXI6Zmlkb1wiXG4gICAgICB8IFwibWFuYWdlOm1mYTpyZWdpc3Rlcjp0b3RwXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnJlZ2lzdGVyOmVtYWlsXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnVucmVnaXN0ZXI6KlwiXG4gICAgICB8IFwibWFuYWdlOm1mYTp1bnJlZ2lzdGVyOmZpZG9cIlxuICAgICAgfCBcIm1hbmFnZTptZmE6dW5yZWdpc3Rlcjp0b3RwXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnZlcmlmeToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6bWZhOnZlcmlmeTp0b3RwXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OipcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OmF0dGVzdFwiXG4gICAgICB8IFwibWFuYWdlOmtleTpsaXN0Um9sZXNcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOmtleTpoaXN0b3J5OnR4Omxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6Y3JlYXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OmltcG9ydFwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6KlwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6b3duZXJcIlxuICAgICAgfCBcIm1hbmFnZTprZXk6dXBkYXRlOnBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6ZW5hYmxlZFwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6cmVnaW9uXCJcbiAgICAgIHwgXCJtYW5hZ2U6a2V5OnVwZGF0ZTptZXRhZGF0YVwiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6cHJvcGVydGllc1wiXG4gICAgICB8IFwibWFuYWdlOmtleTp1cGRhdGU6ZWRpdFBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOmtleTpkZWxldGVcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6KlwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5Omxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6ZGVsZXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp1cGRhdGU6bmFtZVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp1cGRhdGU6YWNsXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnVwZGF0ZTptZXRhZGF0YVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTp1cGRhdGU6cnVsZVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTppbnZva2VcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6d2FzbToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5Ondhc206dXBsb2FkXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6KlwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOmdldFwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOnVwZGF0ZToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OnNlY3JldHM6dXBkYXRlOnZhbHVlc1wiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpzZWNyZXRzOnVwZGF0ZTphY2xcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6c2VjcmV0czp1cGRhdGU6ZWRpdFBvbGljeVwiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpidWNrZXRzOipcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6YnVja2V0czpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6YnVja2V0czpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OmJ1Y2tldHM6dXBkYXRlOipcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6YnVja2V0czp1cGRhdGU6b3duZXJcIlxuICAgICAgfCBcIm1hbmFnZTpwb2xpY3k6YnVja2V0czp1cGRhdGU6YWNsXCJcbiAgICAgIHwgXCJtYW5hZ2U6cG9saWN5OmJ1Y2tldHM6dXBkYXRlOm1ldGFkYXRhXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6Y3JlYXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0Omxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OmRlbGV0ZVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOipcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZTpuYW1lXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6YWRkcmVzc2VzXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDp1cGRhdGU6b3duZXJcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZTpsYWJlbHNcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0OnVwZGF0ZTptZXRhZGF0YVwiXG4gICAgICB8IFwibWFuYWdlOmNvbnRhY3Q6dXBkYXRlOmVkaXRQb2xpY3lcIlxuICAgICAgfCBcIm1hbmFnZTpjb250YWN0Omxvb2t1cDoqXCJcbiAgICAgIHwgXCJtYW5hZ2U6Y29udGFjdDpsb29rdXA6YWRkcmVzc1wiXG4gICAgICB8IFwibWFuYWdlOnBvbGljeTpjcmVhdGVJbXBvcnRLZXlcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOipcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpjcmVhdGVcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmRlbGV0ZVwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6Z2V0OipcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmF0dGVzdFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6Z2V0OmtleXNcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmdldDprZXlzOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOmdldDprZXlzOmdldFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6Z2V0OnVzZXJzXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6KlwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOmVuYWJsZWRcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTpwb2xpY3lcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6YWN0aW9uc1wiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOmtleToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTp1cGRhdGU6a2V5OmFkZFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOmtleTpyZW1vdmVcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTp1c2VyOipcIlxuICAgICAgfCBcIm1hbmFnZTpyb2xlOnVwZGF0ZTp1c2VyOmFkZFwiXG4gICAgICB8IFwibWFuYWdlOnJvbGU6dXBkYXRlOnVzZXI6cmVtb3ZlXCJcbiAgICAgIHwgXCJtYW5hZ2U6cm9sZTpoaXN0b3J5OnR4Omxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6aWRlbnRpdHk6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eTp2ZXJpZnlcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eTphZGRcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eTpyZW1vdmVcIlxuICAgICAgfCBcIm1hbmFnZTppZGVudGl0eTpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOipcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6Y3JlYXRlXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOm1ldHJpY3M6cXVlcnlcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6YXVkaXQ6cXVlcnlcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6cmVhZG9ubHlcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6YWRkVXNlclwiXG4gICAgICB8IFwibWFuYWdlOm9yZzppbnZpdGVVc2VyXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmludml0ZUFsaWVuXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmludml0YXRpb246bGlzdFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzppbnZpdGF0aW9uOmNhbmNlbFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGVNZW1iZXJzaGlwOipcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlTWVtYmVyc2hpcDpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGVNZW1iZXJzaGlwOm1lbWJlclwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGVNZW1iZXJzaGlwOmFsaWVuXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmxpc3RVc2Vyc1wiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1c2VyOmdldFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzpkZWxldGVVc2VyOipcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6ZGVsZXRlVXNlcjpvd25lclwiXG4gICAgICB8IFwibWFuYWdlOm9yZzpkZWxldGVVc2VyOm1lbWJlclwiXG4gICAgICB8IFwibWFuYWdlOm9yZzpkZWxldGVVc2VyOmFsaWVuXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOmdldFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6KlwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6ZW5hYmxlZFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6cG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpzaWduUG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpleHBvcnRcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOnRvdHBGYWlsdXJlTGltaXRcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOm5vdGlmaWNhdGlvbkVuZHBvaW50c1wiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6ZGVmYXVsdEludml0ZUtpbmRcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOmlkcENvbmZpZ3VyYXRpb25cIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOnBhc3NrZXlDb25maWd1cmF0aW9uXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTplbWFpbFByZWZlcmVuY2VzXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpoaXN0b3JpY2FsRGF0YVwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6cmVxdWlyZVNjb3BlQ2VpbGluZ1wiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6YWxpZW5Mb2dpblJlcXVpcmVtZW50XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTptZW1iZXJMb2dpblJlcXVpcmVtZW50XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTprZXlFeHBvcnRSZXF1aXJlbWVudFwiXG4gICAgICB8IFwibWFuYWdlOm9yZzp1cGRhdGU6YWxsb3dlZE1mYVR5cGVzXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpwb2xpY3lFbmdpbmVDb25mXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTpjdXN0b21DaGFpbnNcIlxuICAgICAgfCBcIm1hbmFnZTpvcmc6dXBkYXRlOmV4dFByb3BzXCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVwZGF0ZTplZGl0UG9saWN5XCJcbiAgICAgIHwgXCJtYW5hZ2U6b3JnOnVzZXI6cmVzZXRNZmFcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOipcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6c2Vzc2lvbjpnZXRcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTpzZXNzaW9uOmNyZWF0ZVwiXG4gICAgICB8IFwibWFuYWdlOnNlc3Npb246ZXh0ZW5kXCJcbiAgICAgIHwgXCJtYW5hZ2U6c2Vzc2lvbjpyZXZva2VcIlxuICAgICAgfCBcIm1hbmFnZTpleHBvcnQ6KlwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDpyZWFkb25seVwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDpvcmc6KlwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDpvcmc6Z2V0XCJcbiAgICAgIHwgXCJtYW5hZ2U6ZXhwb3J0OnVzZXI6KlwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDp1c2VyOmRlbGV0ZVwiXG4gICAgICB8IFwibWFuYWdlOmV4cG9ydDp1c2VyOmxpc3RcIlxuICAgICAgfCBcIm1hbmFnZTphdXRoTWlncmF0aW9uOipcIlxuICAgICAgfCBcIm1hbmFnZTphdXRoTWlncmF0aW9uOmlkZW50aXR5OmFkZFwiXG4gICAgICB8IFwibWFuYWdlOmF1dGhNaWdyYXRpb246aWRlbnRpdHk6cmVtb3ZlXCJcbiAgICAgIHwgXCJtYW5hZ2U6YXV0aE1pZ3JhdGlvbjp1c2VyOnVwZGF0ZVwiXG4gICAgICB8IFwibWFuYWdlOm1taToqXCJcbiAgICAgIHwgXCJtYW5hZ2U6bW1pOnJlYWRvbmx5XCJcbiAgICAgIHwgXCJtYW5hZ2U6bW1pOmdldFwiXG4gICAgICB8IFwibWFuYWdlOm1taTpsaXN0XCJcbiAgICAgIHwgXCJtYW5hZ2U6bW1pOnJlamVjdFwiXG4gICAgICB8IFwibWFuYWdlOm1taTpkZWxldGVcIlxuICAgICAgfCBcImV4cG9ydDoqXCJcbiAgICAgIHwgXCJleHBvcnQ6dXNlcjoqXCJcbiAgICAgIHwgXCJleHBvcnQ6dXNlcjppbml0XCJcbiAgICAgIHwgXCJleHBvcnQ6dXNlcjpjb21wbGV0ZVwiXG4gICAgICB8IFwibW1pOipcIlxuICAgICAgfCBcIm9yZ0FjY2VzczoqXCJcbiAgICAgIHwgXCJvcmdBY2Nlc3M6Y2hpbGQ6KlwiXG4gICAgICB8IFwicnBjOipcIlxuICAgICAgfCBcInJwYzpjcmVhdGVUcmFuc2FjdGlvbjoqXCJcbiAgICAgIHwgXCJycGM6Y3JlYXRlVHJhbnNhY3Rpb246ZXZtXCJcbiAgICAgIHwgXCJycGM6cmV0cnlUcmFuc2FjdGlvblwiXG4gICAgICB8IFwicnBjOmdldFRyYW5zYWN0aW9uXCJcbiAgICAgIHwgXCJycGM6bGlzdFRyYW5zYWN0aW9uc1wiXG4gICAgICB8IFwicnBjOmJpbmFuY2VcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIHNwZWNpZmllcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBmZWVgIGZpZWxkIGluIEJhYnlsb25cbiAgICAgKiBzdGFraW5nIHJlcXVlc3RzLiBJZiBgc2F0c2AsIHRoZSBmaWVsZCBpcyBpbnRwcmV0ZWQgYXMgYSBmaXhlZCB2YWx1ZVxuICAgICAqIGluIHNhdHMuIElmIGBzYXRzX3ByX3ZiYCwgdGhlIGZpZWxkIGlzIGludGVycHJldGVkIGFzIGEgcmF0ZSBhbmQgdGhlXG4gICAgICogZmVlIGlzIGNvbXB1dGVkIGJ5IGVzdGltYXRpbmcgdGhlIHdlaWdodCBvZiB0aGUgb3V0cHV0IHRyYW5zYWN0aW9uLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRmVlVHlwZTogXCJzYXRzXCIgfCBcInNhdHNfcGVyX2t3dVwiIHwgXCJzYXRzX3Blcl92YlwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIEZpZG9Bc3NlcnRBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZTogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlY2xhcmVzIGludGVudCB0byByZWdpc3RlciBhIG5ldyBGSURPIGtleSAqL1xuICAgIEZpZG9DcmVhdGVSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhpcyBrZXkgY2FuIGJlIHVzZWQgZm9yIHBhc3N3b3JkbGVzcyBsb2dpbiAqL1xuICAgICAgZGlzY292ZXJhYmxlPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG5ldyBmaWRvIGNyZWRlbnRpYWxcbiAgICAgICAqIEBleGFtcGxlIFdvcmsgWXViaWtleVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIHJlcXVlc3QgdGhlIHVuaXF1ZSBhdXRoZW50aWNhdG9yIGRldmljZSBtYW51ZmFjdHVyZXIgaWRlbnRpZmllci5cbiAgICAgICAqIFRoaXMgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgdG8gcmVuZGVyIHRoZSBtYW51ZmFjdHVyZXIgbmFtZSAoZS5nLiwgXCJZdWJpS2V5XCIsXG4gICAgICAgKiBvciBcIkdvb2dsZSBQYXNzd29yZCBNYW5hZ2VyXCIsIG9yIFwiMVBhc3N3b3JkXCIsIGV0Yy4pLiBXaGVuIHJlcXVlc3RlZCwgc29tZSB1c2VyXG4gICAgICAgKiBhZ2VudHMgKGUuZy4sIEZpcmVmb3gpIHdpbGwgYXNrIHRoZSB1c2VyIHRvIGFncmVlIG9yIGRpc2FncmVlLCB3aGVyZWFzIHNvbWVcbiAgICAgICAqIChlLmcuLCBDaHJvbWUpIHdpbGwgc2lsZW50bHkgYWdyZWUuXG4gICAgICAgKi9cbiAgICAgIHJlcXVlc3RfZGV2aWNlX2lkZW50aWZpZXI/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgRm9yYmlkZGVuRXJyb3JDb2RlOlxuICAgICAgfCBcIkFsaWVuS2V5Q3JlYXRlXCJcbiAgICAgIHwgXCJDYW5ub3RBc3N1bWVJZGVudGl0eVwiXG4gICAgICB8IFwiU2VudHJ5RGlzYWxsb3dlZFwiXG4gICAgICB8IFwiUGFzc2tleUxvZ2luRGlzYWJsZWRcIlxuICAgICAgfCBcIlBhc3NrZXlOb3RSZWdpc3RlcmVkXCJcbiAgICAgIHwgXCJDYW5ub3RDcmVhdGVPcmdcIlxuICAgICAgfCBcIldyb25nTWZhRW1haWxPdHBKd3RcIlxuICAgICAgfCBcIk9yZ0ZsYWdOb3RTZXRcIlxuICAgICAgfCBcIkZpZG9SZXF1aXJlZFRvUmVtb3ZlVG90cFwiXG4gICAgICB8IFwiT2lkY0lkZW50aXR5TGltaXRSZWFjaGVkXCJcbiAgICAgIHwgXCJPaWRjU2NvcGVDZWlsaW5nTWlzc2luZ1wiXG4gICAgICB8IFwiT2lkY0lzc3Vlck5vdEFsbG93ZWRGb3JNZW1iZXJSb2xlXCJcbiAgICAgIHwgXCJPaWRjTm9NZW1iZXJSb2xlc0FsbG93ZWRcIlxuICAgICAgfCBcIkVtYWlsT3RwTm90Q29uZmlndXJlZFwiXG4gICAgICB8IFwiTWZhQ2hhbGxlbmdlRXhwaXJlZFwiXG4gICAgICB8IFwiQ2hhaW5JZE5vdEFsbG93ZWRcIlxuICAgICAgfCBcIkludmFsaWRPcmdcIlxuICAgICAgfCBcIk9yZ0lkTWlzbWF0Y2hcIlxuICAgICAgfCBcIlNlc3Npb25Gb3JXcm9uZ09yZ1wiXG4gICAgICB8IFwiU2VsZkRlbGV0ZVwiXG4gICAgICB8IFwiU2VsZkRpc2FibGVcIlxuICAgICAgfCBcIkludmFsaWRPcmdNZW1iZXJzaGlwUm9sZUNoYW5nZVwiXG4gICAgICB8IFwiVXNlckRpc2FibGVkXCJcbiAgICAgIHwgXCJPcmdEaXNhYmxlZFwiXG4gICAgICB8IFwiT3JnTm90Rm91bmRcIlxuICAgICAgfCBcIk9yZ1dpdGhvdXRPd25lclwiXG4gICAgICB8IFwiT3JwaGFuZWRVc2VyXCJcbiAgICAgIHwgXCJPaWRjVXNlck5vdEZvdW5kXCJcbiAgICAgIHwgXCJVc2VyTm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJOb3RPcmdPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEtleU93bmVyXCJcbiAgICAgIHwgXCJJbnZhbGlkUm9sZVwiXG4gICAgICB8IFwiRGlzYWJsZWRSb2xlXCJcbiAgICAgIHwgXCJLZXlEaXNhYmxlZFwiXG4gICAgICB8IFwiS2V5Tm90SW5Sb2xlXCJcbiAgICAgIHwgXCJDb250YWN0Tm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0Tm90SW5PcmdcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0SW52YWxpZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydERpc2FibGVkXCJcbiAgICAgIHwgXCJVc2VyTm90T3JpZ2luYWxLZXlPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEluUm9sZVwiXG4gICAgICB8IFwiTXVzdEJlRnVsbE1lbWJlclwiXG4gICAgICB8IFwiU2Vzc2lvbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25DaGFuZ2VkXCJcbiAgICAgIHwgXCJTZXNzaW9uUmV2b2tlZFwiXG4gICAgICB8IFwiRXhwZWN0ZWRVc2VyU2Vzc2lvblwiXG4gICAgICB8IFwiU2Vzc2lvblJvbGVDaGFuZ2VkXCJcbiAgICAgIHwgXCJTY29wZWROYW1lTm90Rm91bmRcIlxuICAgICAgfCBcIlNlc3Npb25JbnZhbGlkRXBvY2hUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkludmFsaWRSZWZyZXNoVG9rZW5cIlxuICAgICAgfCBcIlNlc3Npb25SZWZyZXNoVG9rZW5FeHBpcmVkXCJcbiAgICAgIHwgXCJJbnZhbGlkQXV0aEhlYWRlclwiXG4gICAgICB8IFwiU2Vzc2lvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJJbnZhbGlkQXJuXCJcbiAgICAgIHwgXCJTZXNzaW9uSW52YWxpZEF1dGhUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvbkF1dGhUb2tlbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25Qb3NzaWJseVN0b2xlblRva2VuXCJcbiAgICAgIHwgXCJNZmFEaXNhbGxvd2VkSWRlbnRpdHlcIlxuICAgICAgfCBcIk1mYURpc2FsbG93ZWRBcHByb3ZlclwiXG4gICAgICB8IFwiTWZhVHlwZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk1mYU5vdEFwcHJvdmVkWWV0XCJcbiAgICAgIHwgXCJNZmFDb25maXJtYXRpb25Db2RlTWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYUh0dHBSZXF1ZXN0TWlzbWF0Y2hcIlxuICAgICAgfCBcIk1mYVJlbW92ZUJlbG93TWluXCJcbiAgICAgIHwgXCJNZmFPcmdSZXF1aXJlbWVudE5vdE1ldFwiXG4gICAgICB8IFwiTWZhUmVnaXN0cmF0aW9uRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiVG90cEFscmVhZHlDb25maWd1cmVkXCJcbiAgICAgIHwgXCJUb3RwQ29uZmlndXJhdGlvbkNoYW5nZWRcIlxuICAgICAgfCBcIk1mYVRvdHBCYWRDb25maWd1cmF0aW9uXCJcbiAgICAgIHwgXCJNZmFUb3RwQmFkQ29kZVwiXG4gICAgICB8IFwiTWZhVG90cFJhdGVMaW1pdFwiXG4gICAgICB8IFwiSW1wcm9wZXJTZXNzaW9uU2NvcGVcIlxuICAgICAgfCBcIkZ1bGxTZXNzaW9uUmVxdWlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25XaXRob3V0QW55U2NvcGVVbmRlclwiXG4gICAgICB8IFwiVXNlclJvbGVVbnByaXZpbGVnZWRcIlxuICAgICAgfCBcIk1lbWJlclJvbGVGb3JiaWRkZW5cIlxuICAgICAgfCBcIk1mYU5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIlJlbW92ZUxhc3RPaWRjSWRlbnRpdHlcIlxuICAgICAgfCBcIk9wZXJhdGlvbk5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk9yZ0V4cG9ydFJldHJpZXZhbERpc2FibGVkXCJcbiAgICAgIHwgXCJDaGFuZ2luZ0tleUV4cG9ydFJlcXVpcmVtZW50SXNEaXNhYmxlZFwiXG4gICAgICB8IFwiQXV0b0FkZEJsc0tleVRvUHJvdGVjdGVkUm9sZVwiXG4gICAgICB8IFwiVXNlck5vdFBvbGljeU93bmVyXCJcbiAgICAgIHwgXCJVc2VyTm90Q29udGFjdE93bmVyXCJcbiAgICAgIHwgXCJVc2VyTm90QnVja2V0T3duZXJcIlxuICAgICAgfCBcIkxlZ2FjeVNlc3Npb25DYW5ub3RIYXZlU2NvcGVDZWlsaW5nXCJcbiAgICAgIHwgXCJSb2xlSW5QYXJlbnRPcmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJSZW1vdmVLZXlGcm9tUm9sZVVzZXJOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJTaXdlQ2hhbGxlbmdlRXhwaXJlZFwiXG4gICAgICB8IFwiU2l3ZU1lc3NhZ2VOb3RWYWxpZFwiXG4gICAgICB8IFwiU2l3ZU1lc3NhZ2VJbnZhbGlkU2lnbmF0dXJlXCJcbiAgICAgIHwgXCJBY2xcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3BlY2lmaWVzIGEgZm9yayBvZiB0aGUgYEJlYWNvbkNoYWluYCwgdG8gcHJldmVudCByZXBsYXkgYXR0YWNrcy5cbiAgICAgKiBUaGUgc2NoZW1hIG9mIGBGb3JrYCBpcyBkZWZpbmVkIGluIHRoZSBbQmVhY29uIGNoYWluXG4gICAgICogc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI2ZvcmspLlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY3VycmVudF92ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiLFxuICAgICAqICAgXCJlcG9jaFwiOiBcIjBcIixcbiAgICAgKiAgIFwicHJldmlvdXNfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBGb3JrOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IGZvcmsgdmVyc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIDB4NDM0MzQzNDNcbiAgICAgICAqL1xuICAgICAgY3VycmVudF92ZXJzaW9uOiBzdHJpbmc7XG4gICAgICBlcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFByZXZpb3VzIGZvcmsgdmVyc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIDB4NDI0MjQyNDJcbiAgICAgICAqL1xuICAgICAgcHJldmlvdXNfdmVyc2lvbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgZGF0YSBhcyBkZWZpbmVkIGluIHRoZSBbQmVhY29uIEFQSVxuICAgICAqIHNwZWNdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL2dldEdlbmVzaXMpLlxuICAgICAqIFlvdSBjYW4gZ2V0IHRoZSBnZW5lc2lzIGRhdGEgZnJvbSB0aGUgQmVhY29uIG5vZGUncyBgL2V0aC92MS9iZWFjb24vZ2VuZXNpc2AgZW5kLXBvaW50LlxuICAgICAqIFRoaXMgc3RydWN0IGRlZmluaXRpb24gaXMgb3JpZ2luYWxseSBmcm9tIGxpZ2h0aG91c2UncyBldGgyLlxuICAgICAqL1xuICAgIEdlbmVzaXNEYXRhOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIGZvcmsgdmVyc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIDB4NDI0MjQyNDJcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc19mb3JrX3ZlcnNpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgdGltZVxuICAgICAgICogQGV4YW1wbGUgMTY3OTMyNjQ0OVxuICAgICAgICovXG4gICAgICBnZW5lc2lzX3RpbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEdlbmVzaXMgdmFsaWRhdG9ycyByb290LlxuICAgICAgICogQGV4YW1wbGUgMHgyNzBkNDNlNzRjZTM0MGRlNGJjYTJiMTkzNmJlY2EwZjRmNTQwOGQ5ZTc4YWVjNDg1MDkyMGJhZjY1OWQ1YjY5XG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfdmFsaWRhdG9yc19yb290OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBzZW5kZXIgY29uZmlndXJhdGlvbiAod2l0aG91dCBzZW5zaXRpdmUgYXV0aCBkZXRhaWxzKSAqL1xuICAgIEdldEVtYWlsQ29uZmlnUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFkZHJlc3MgdGhhdCBlbWFpbHMgYXJlIHNlbnQgZnJvbSAqL1xuICAgICAgc2VuZGVyOiBzdHJpbmc7XG4gICAgICB0ZW1wbGF0ZT86IHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBIVE1MIHRlbXBsYXRlIHRvIHVzZSBmb3IgdGhlIGJvZHkuICovXG4gICAgICAgIGJvZHlfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3ViamVjdCBsaW5lIHRlbXBsYXRlICovXG4gICAgICAgIHN1YmplY3RfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgIH0gfCBudWxsO1xuICAgIH07XG4gICAgR2V0S2V5c0luT3JnUmVxdWVzdDoge1xuICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciB0aGUgW2Bjc19nZXRUcmFuc2FjdGlvbmBdKFJwY01ldGhvZDo6R2V0VHJhbnNhY3Rpb24pIG1ldGhvZC4gKi9cbiAgICBHZXRUcmFuc2FjdGlvblJlcXVlc3Q6IHtcbiAgICAgIGlkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgIH07XG4gICAgR2V0VXNlckJ5RW1haWxSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHlwaWNhbGx5LCB0aGlzIGFycmF5IGlzIGVpdGhlciBlbXB0eSAoaWYgbm8gdXNlciB3aXRoIGEgZ2l2ZW4gZW1haWwgd2FzIGZvdW5kKVxuICAgICAgICogb3IgY29udGFpbnMgYSBzaW5nbGUgZWxlbWVudCwgaS5lLiwgdGhlIHVzZXIgd2l0aCBhIGdpdmVuIGVtYWlsLlxuICAgICAgICovXG4gICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5PcmdJbmZvV2l0aElkZW50aXR5XCJdW107XG4gICAgfTtcbiAgICBHZXRVc2VyQnlPaWRjUmVzcG9uc2U6IHtcbiAgICAgIHVzZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ0luZm9XaXRoSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTdGF0cyBwZXJ0YWluaW5nIHRoZSB0aGUgc2VuZGVyIGBjdWJlM3NpZ25lcmAgaW5zdGFuY2UgKi9cbiAgICBIZWFydGJlYXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgY3VycmVudGx5IGFjdGl2ZSAocmVjZWl2ZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBiZWluZyBwcm9jZXNzZWQgeWV0KVxuICAgICAgICovXG4gICAgICBjdXJyZW50X251bV9yZXF1ZXN0c19hY3RpdmU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIGJ5IGN1YmUzc2lnbmVyXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfbnVtX3JlcXVlc3RzX3Byb2Nlc3Npbmc6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHJlY29yZCBtZXRyaWMgZGF0YSBmcm9tIHRoaXMgaGVhcnRiZWF0ICovXG4gICAgICBpZ25vcmU/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIG5ldyByZXF1ZXN0cyBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0czogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIHRoYXQgZmFpbGVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3JlcXVlc3RzX2ZhaWxlZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIHdlcmUgcmV0cmllZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0c19yZXRyaWVkOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmV0cmllcyBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXRyaWVzOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgdGltZXMgYXV0aCB0b2tlbiB3YXMgcmVmcmVzaGVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3Rva2VuX3JlZnJlc2hlcz86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiB0aW1lcyBhdXRoIHRva2VuIHJlZnJlc2ggZmFpbGVkIGR1cmluZyB0aGlzIGhlYXJ0YmVhdCBwZXJpb2RcbiAgICAgICAqL1xuICAgICAgbnVtX3Rva2VuX3JlZnJlc2hlc19mYWlsZWQ/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoZSBwcm94eSBzZW5kaW5nIHRoZSBoZWFydCBiZWF0IHJlcXVlc3RcbiAgICAgICAqXG4gICAgICAgKiBUT0RPOiBNYWtlIG5vbi1vcHRpb25hbCBvbmNlIHdlIGRvIG5vdCBzdXBwb3J0IHByb3hpZXMgd2l0aG91dCB2ZXJzaW9uIGluZm9ybWF0aW9uXG4gICAgICAgKi9cbiAgICAgIHByb3h5X3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGdvdmVybmluZyB3aGV0aGVyIGFuZCBob3cgdG8gc2F2ZSBoaXN0b3JpY2FsIGRhdGEuICovXG4gICAgSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uOiB7XG4gICAgICB0eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIaXN0b3JpY2FsVHhDb25maWd1cmF0aW9uXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlY2VudGx5IHNpZ25lZCB0cmFuc2FjdGlvbiB0aGF0IHdlIHN0b3JlIGluIHRoZSBEQi4gKi9cbiAgICBIaXN0b3JpY2FsVHg6IHtcbiAgICAgIGRhdGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgaGlzdG9yaWNhbF90eF9vcmdfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICBrZXlfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICBtZmFfc3RhdHVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl0gfCBudWxsO1xuICAgICAgb3BlcmF0aW9uOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl07XG4gICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcmlnaW5hbCByZXF1ZXN0IGlkICovXG4gICAgICByZXF1ZXN0X2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3BlcmF0aW9uLXNwZWNpZmljIHJlc3VsdCAqL1xuICAgICAgcmVzdWx0OiB1bmtub3duO1xuICAgICAgcm9sZV9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgdXNlcl9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGdvdmVybmluZyB3aGV0aGVyIGFuZCBob3cgdG8gc2F2ZSBoaXN0b3JpY2FsIHRyYW5zYWN0aW9ucy4gKi9cbiAgICBIaXN0b3JpY2FsVHhDb25maWd1cmF0aW9uOiB7XG4gICAgICBsaWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBDYXB0dXJlcyBhbGwgdGhlIHJlbGV2YW50IGluZm8gKGluY2x1ZGluZyB0aGUgcmVxdWVzdCBib2R5KSBhYm91dCByZXF1ZXN0cyB0aGF0IHJlcXVpcmUgTUZBLlxuICAgICAqIFdlIHVzZSB0aGlzIHRvIHZlcmlmeSB0aGF0IHdoZW4gYSByZXF1ZXN0IGlzIHJlc3VtZWQgKGFmdGVyIG9idGFpbmluZyBuZWNlc3NhcnkgTUZBIGFwcHJvdmFscylcbiAgICAgKiBpdCBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGl0IG9yaWdpbmFsbHkgd2FzLlxuICAgICAqL1xuICAgIEh0dHBSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcmVxdWVzdCBib2R5ICovXG4gICAgICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIG1ldGhvZCBvZiB0aGUgcmVxdWVzdCAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcGF0aCBvZiB0aGUgcmVxdWVzdCwgZXhjbHVkaW5nIHRoZSBob3N0ICovXG4gICAgICBwYXRoOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEhvdyB0byBjb21wYXJlIEhUVFAgcmVxdWVzdHMgd2hlbiB2ZXJpZnlpbmcgTUZBIHJlY2VpcHQgKHNlZSBbTWZhUmVxdWVzdDo6dmVyaWZ5X3JlcXVlc3RdKSAqL1xuICAgIEh0dHBSZXF1ZXN0Q21wOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgXCJFcVwiLFxuICAgICAgICB7XG4gICAgICAgICAgRXZtVHg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtVHhDbXBcIl07XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBTb2xhbmFUeDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFUeENtcFwiXTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIElkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbGlua2VkIE9JREMgaWRlbnRpdHkgaW5jbHVkaW5nIHVuaXF1ZSBpZGVudGlmaWVycyBhbmQgdXNlciBpbmZvXG4gICAgICogKGUuZy4sIGVtYWlsKVxuICAgICAqL1xuICAgIElkZW50aXR5SW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gJlxuICAgICAgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjVXNlckluZm9cIl0gJlxuICAgICAgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgYXVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdWRcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBpZGVudGl0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VybmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIGN1YmlzdGRldlxuICAgICAgICovXG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdXNlcl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdWJlU2lnbmVyVXNlckluZm9cIl0gfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcHJvb2YgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIElEUCBjb25maWd1cmF0aW9uICovXG4gICAgSWRwQ29uZmlnOiB7XG4gICAgICB0aHJvdHRsZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVGhyb3R0bGVDb25maWdcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbmFibGUgZm9yIGNlcnRhaW4gdXNlciByb2xlcyAqL1xuICAgICAgdXNlcnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXSB8IG51bGw7XG4gICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUFuZFVwZGF0ZUtleVByb3BlcnRpZXNcIl0gJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSAodGhlIGRlZmF1bHQpLCBub3RoaW5nIGlzIHJldHVybmVkIHdoZW4gYW4gaW1wb3J0ZWQga2V5IGFscmVhZHlcbiAgICAgICAgICogZXhpc3RzLiBXaGVuIHRydWUsIHJldHVybnMgdGhlIEtleUluZm8gc3RydWN0IGZvciBrZXlzIHRoYXQgYWxyZWFkeSBleGlzdFxuICAgICAgICAgKiBpZiBjYWxsZXIgaXMgYWxsb3dlZCB0byBsaXN0IHRoYXQga2V5LlxuICAgICAgICAgKi9cbiAgICAgICAgaWRlbXBvdGVudD86IGJvb2xlYW47XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzZXQgb2YgZW5jcnlwdGVkIGtleXMgdG8gYmUgaW1wb3J0ZWQgKi9cbiAgICAgICAga2V5X21hdGVyaWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RNYXRlcmlhbFwiXVtdO1xuICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0TWF0ZXJpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjbGllbnQncyBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQsIFNFQzEtZW5jb2RlZCBQMzg0IHB1YmxpYyBrZXkuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW5jcnlwdGVkIGtleWluZyBtYXRlcmlhbCB0byBiZSBpbXBvcnRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBjaXBoZXJ0ZXh0LlxuICAgICAgICovXG4gICAgICBpa21fZW5jOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHNhbHQgdmFsdWUgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5LlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkIGJ5dGUgc3RyaW5nLlxuICAgICAgICovXG4gICAgICBzYWx0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBJbnRlcm5hbEVycm9yQ29kZTpcbiAgICAgIHwgXCJOb01hdGVyaWFsSWRcIlxuICAgICAgfCBcIkludmFsaWRBdWRpdExvZ0VudHJ5XCJcbiAgICAgIHwgXCJVbmV4cGVjdGVkQ2hlY2tlclJ1bGVcIlxuICAgICAgfCBcIlVucmVzb2x2ZWRQb2xpY3lSZWZlcmVuY2VcIlxuICAgICAgfCBcIlVuZXhwZWN0ZWRBY2xBY3Rpb25cIlxuICAgICAgfCBcIkZpZG9LZXlBc3NvY2lhdGVkV2l0aE11bHRpcGxlVXNlcnNcIlxuICAgICAgfCBcIkNsYWltc1BhcnNlRXJyb3JcIlxuICAgICAgfCBcIkludmFsaWRUaHJvdHRsZUlkXCJcbiAgICAgIHwgXCJJbnZhbGlkRW1haWxBZGRyZXNzXCJcbiAgICAgIHwgXCJFbWFpbFRlbXBsYXRlUmVuZGVyXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlIZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJPaWRjSWRlbnRpdHlQYXJzZUVycm9yXCJcbiAgICAgIHwgXCJTeXN0ZW1UaW1lRXJyb3JcIlxuICAgICAgfCBcIlBhc3N3b3JkSGFzaFBhcnNlRXJyb3JcIlxuICAgICAgfCBcIlNlbmRNYWlsRXJyb3JcIlxuICAgICAgfCBcIlJlcXdlc3RFcnJvclwiXG4gICAgICB8IFwiRW1haWxDb25zdHJ1Y3Rpb25FcnJvclwiXG4gICAgICB8IFwiVHNXcml0ZUVycm9yXCJcbiAgICAgIHwgXCJUc1F1ZXJ5RXJyb3JcIlxuICAgICAgfCBcIkRiUXVlcnlFcnJvclwiXG4gICAgICB8IFwiRGJHZXRFcnJvclwiXG4gICAgICB8IFwiRGJEZWxldGVFcnJvclwiXG4gICAgICB8IFwiRGJQdXRFcnJvclwiXG4gICAgICB8IFwiRGJVcGRhdGVFcnJvclwiXG4gICAgICB8IFwiU2VyZGVFcnJvclwiXG4gICAgICB8IFwiVGVzdEFuZFNldEVycm9yXCJcbiAgICAgIHwgXCJEYkdldEl0ZW1zRXJyb3JcIlxuICAgICAgfCBcIkRiV3JpdGVFcnJvclwiXG4gICAgICB8IFwiQ3ViaXN0U2lnbmVyRXJyb3JcIlxuICAgICAgfCBcIkN3TGlzdE1ldHJpY3NFcnJvclwiXG4gICAgICB8IFwiQ3dQdXRNZXRyaWNEYXRhRXJyb3JcIlxuICAgICAgfCBcIkdldEF3c1NlY3JldEVycm9yXCJcbiAgICAgIHwgXCJTZWNyZXROb3RGb3VuZFwiXG4gICAgICB8IFwiS21zR2VuZXJhdGVSYW5kb21FcnJvclwiXG4gICAgICB8IFwiTWFsZm9ybWVkVG90cEJ5dGVzXCJcbiAgICAgIHwgXCJLbXNHZW5lcmF0ZVJhbmRvbU5vUmVzcG9uc2VFcnJvclwiXG4gICAgICB8IFwiQ3JlYXRlS2V5RXJyb3JcIlxuICAgICAgfCBcIlBhcnNlRGVyaXZhdGlvblBhdGhFcnJvclwiXG4gICAgICB8IFwiU3BsaXRTaWduZXJFcnJvclwiXG4gICAgICB8IFwiQ3JlYXRlSW1wb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIkNyZWF0ZUVvdHNOb25jZXNFcnJvclwiXG4gICAgICB8IFwiRW90c1NpZ25FcnJvclwiXG4gICAgICB8IFwiQmFieWxvbkNvdlNpZ25FcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0RlbGV0ZVVzZXJFcnJvclwiXG4gICAgICB8IFwiQ29nbml0b0xpc3RVc2Vyc0Vycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvR2V0VXNlckVycm9yXCJcbiAgICAgIHwgXCJNaXNzaW5nVXNlckVtYWlsXCJcbiAgICAgIHwgXCJDb2duaXRvUmVzZW5kVXNlckludml0YXRpb25cIlxuICAgICAgfCBcIkNvZ25pdG9TZXRVc2VyUGFzc3dvcmRFcnJvclwiXG4gICAgICB8IFwiR2VuZXJpY0ludGVybmFsRXJyb3JcIlxuICAgICAgfCBcIkFzc3VtZVJvbGVXaXRob3V0RXZpZGVuY2VcIlxuICAgICAgfCBcIk9pZGNBdXRoV2l0aG91dE9yZ1wiXG4gICAgICB8IFwiTWlzc2luZ0tleU1ldGFkYXRhXCJcbiAgICAgIHwgXCJLbXNFbmFibGVLZXlFcnJvclwiXG4gICAgICB8IFwiS21zRGlzYWJsZUtleUVycm9yXCJcbiAgICAgIHwgXCJMYW1iZGFJbnZva2VFcnJvclwiXG4gICAgICB8IFwiTGFtYmRhTm9SZXNwb25zZUVycm9yXCJcbiAgICAgIHwgXCJMYW1iZGFGYWlsdXJlXCJcbiAgICAgIHwgXCJMYW1iZGFVbnBhcnNhYmxlUmVzcG9uc2VcIlxuICAgICAgfCBcIlNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJEZXNlcmlhbGl6ZUVuY3J5cHRlZEV4cG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJSZUVuY3J5cHRVc2VyRXhwb3J0XCJcbiAgICAgIHwgXCJTM1VwbG9hZEVycm9yXCJcbiAgICAgIHwgXCJTM0Rvd25sb2FkRXJyb3JcIlxuICAgICAgfCBcIlMzQ29weUVycm9yXCJcbiAgICAgIHwgXCJTM0xpc3RPYmplY3RzRXJyb3JcIlxuICAgICAgfCBcIlMzRGVsZXRlT2JqZWN0c0Vycm9yXCJcbiAgICAgIHwgXCJTM0J1aWxkRXJyb3JcIlxuICAgICAgfCBcIlMzUHJlc2lnbmVkVXJsRXJyb3JcIlxuICAgICAgfCBcIk1hbmFnZWRTdGF0ZU1pc3NpbmdcIlxuICAgICAgfCBcIkludGVybmFsSGVhZGVyTWlzc2luZ1wiXG4gICAgICB8IFwiSW52YWxpZEludGVybmFsSGVhZGVyVmFsdWVcIlxuICAgICAgfCBcIlJlcXVlc3RMb2NhbFN0YXRlQWxyZWFkeVNldFwiXG4gICAgICB8IFwiT2lkY09yZ01pc21hdGNoXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVySW52YWxpZEp3a1wiXG4gICAgICB8IFwiSW52YWxpZFBrRm9yTWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiU2Vnd2l0VHdlYWtGYWlsZWRcIlxuICAgICAgfCBcIlVuY2hlY2tlZE9yZ1wiXG4gICAgICB8IFwiU2Vzc2lvbk9yZ0lkTWlzc2luZ1wiXG4gICAgICB8IFwiQXZhU2lnbkNyZWRzTWlzc2luZ1wiXG4gICAgICB8IFwiQXZhU2lnblNpZ25hdHVyZU1pc3NpbmdcIlxuICAgICAgfCBcIkV4cGVjdGVkUm9sZVNlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRUaGlyZFBhcnR5SWRlbnRpdHlcIlxuICAgICAgfCBcIkNvZ25pdG9HZXRVc2VyXCJcbiAgICAgIHwgXCJTbnNTdWJzY3JpYmVFcnJvclwiXG4gICAgICB8IFwiU25zVW5zdWJzY3JpYmVFcnJvclwiXG4gICAgICB8IFwiU25zR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0Vycm9yXCJcbiAgICAgIHwgXCJTbnNTdWJzY3JpcHRpb25BdHRyaWJ1dGVzTWlzc2luZ1wiXG4gICAgICB8IFwiU25zU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0Vycm9yXCJcbiAgICAgIHwgXCJTbnNQdWJsaXNoQmF0Y2hFcnJvclwiXG4gICAgICB8IFwiSW5jb25zaXN0ZW50TXVsdGlWYWx1ZVRlc3RBbmRTZXRcIlxuICAgICAgfCBcIk1hdGVyaWFsSWRFcnJvclwiXG4gICAgICB8IFwiSW52YWxpZEJ0Y0FkZHJlc3NcIlxuICAgICAgfCBcIkhpc3RvcmljYWxUeEJvZHlNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkT3BlcmF0aW9uXCJcbiAgICAgIHwgXCJQYXJlbnRPcmdOb3RGb3VuZFwiXG4gICAgICB8IFwiT3JnUGFyZW50TG9vcFwiXG4gICAgICB8IFwiUmVzb2x2ZWRQYXJlbnRPcmdXaXRoTm9TY29wZUNlaWxpbmdcIlxuICAgICAgfCBcIkludmFsaWRVcGxvYWRPYmplY3RJZFwiXG4gICAgICB8IFwiUG9saWN5RW5naW5lTm90Rm91bmRcIlxuICAgICAgfCBcIlBvbGljeUVuZ2luZUVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lTZWNyZXRzRW5jcnlwdGlvbkVycm9yXCJcbiAgICAgIHwgXCJDcmVhdGVQb2xpY3lJbXBvcnRLZXlFcnJvclwiXG4gICAgICB8IFwiSW52YWxpZEFsaWFzXCJcbiAgICAgIHwgXCJFbXB0eVVwZGF0ZU1vZGlmaWVkT2JqZWN0XCJcbiAgICAgIHwgXCJFbXB0eVVwZGF0ZU1vZGlmaWVkQWN0aW9uc1wiXG4gICAgICB8IFwiRGJDb250YWN0QWRkcmVzc2VzSW52YWxpZFwiXG4gICAgICB8IFwiSW52YWxpZEV2bVNpZ2VkUmxwXCJcbiAgICAgIHwgXCJJbnZhbGlkRXJjMjBEYXRhXCJcbiAgICAgIHwgXCJJbnZhbGlkUnBjVXJsXCI7XG4gICAgSW52aXRhdGlvbkFjY2VwdFJlcXVlc3Q6IHtcbiAgICAgIGF1dGg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aFNvdXJjZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW52aXRhdGlvbiB0b2tlbiAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBwZW5kaW5nIGludml0YXRpb24gKi9cbiAgICBJbnZpdGF0aW9uSW5mbzoge1xuICAgICAgY3JlYXRlZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYWRkcmVzcyB0aGUgaW52aXRhdGlvbiB3YXMgc2VudCB0byAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIGV4cGlyYXRpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGludml0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGludml0ZWQgdXNlcidzIG5hbWUgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHJvbGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmRpY2F0ZXMgdGhlIGF1dGggc291cmNlcyBhbGxvd2VkIHRvIGFuIGludml0ZWQgdXNlclxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgSW52aXRlS2luZDogXCJDb2duaXRvXCIgfCBcIklkcEFuZFNzb1wiIHwgXCJTc29cIjtcbiAgICBJbnZpdGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIGFkZHJlc3NcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGFjbWUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICBpbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGxvZ2luIE1GQSBwb2xpY3kgKi9cbiAgICAgIG1mYV9wb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGZ1bGwgbmFtZVxuICAgICAgICogQGV4YW1wbGUgQWxpY2UgV29uZGVybGFuZFxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICByb2xlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNraXAgc2VuZGluZyBhbiBpbnZpdGF0aW9uIGVtYWlsIHRvIHRoaXMgdXNlciBpZiB0cnVlLlxuICAgICAgICpcbiAgICAgICAqIE5PVEU6IHRoaXMgZmllbGQgaXMgZm9yIGludGVybmFsIHRlc3RpbmcgdXNlIE9OTFkuIElmIHlvdSBkbyBub3RcbiAgICAgICAqIHNlbmQgYW4gaW52aXRhdGlvbiBlbWFpbCAoYW5kIHRoZSBpbnZpdGUga2luZCBpcyBub3QgU1NPKSwgdGhlIHVzZXIgd2lsbCBuZXZlciBiZSBhYmxlIHRvIGxvZyBpbi5cbiAgICAgICAqIEBleGFtcGxlIGZhbHNlXG4gICAgICAgKi9cbiAgICAgIHNraXBfZW1haWw/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgY29udGFpbmluZyB0aGUgZGF0YSB0aGF0IGEgV2FzbSBwb2xpY3kgc2hvdWxkIGJlIGludm9rZWQgd2l0aC4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBLZXkgSUQuIElmIGRlZmluZWQsIHRoZSBwb2xpY3kgd2lsbCBiZSBpbnZva2VkIGFzIGlmIGl0IGlzIHNpZ25pbmdcbiAgICAgICAqIHRoZSBtZXNzYWdlIHdpdGggdGhpcyBrZXkuXG4gICAgICAgKi9cbiAgICAgIGtleV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBcInJlcXVlc3QgYm9keVwiIHRoYXQgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIHBvbGljeS4gKi9cbiAgICAgIHJlcXVlc3Q/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcHRpb25hbCBSb2xlIElELiBJZiBgTm9uZWAsIHRoZSBwb2xpY3kgd2lsbCBiZSBpbnZva2VkIGZyb20gdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uLiAqL1xuICAgICAgcm9sZV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBXYXNtIHBvbGljeS4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXNwb25zZToge1xuICAgICAgcmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiV2FzbVBvbGljeVJlc3BvbnNlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZGVycmAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgKi9cbiAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZG91dGAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgKi9cbiAgICAgIHN0ZG91dDogc3RyaW5nO1xuICAgIH07XG4gICAgSnJwY1Jlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIFtgS2V5UGFja2FnZWBdIHNlcmlhbGl6ZWQgaW50byBhIGZvcm1hdCB0aGF0IGdpdmVzIGEgdGlkaWVyIEpTT05cbiAgICAgKiByZXByZXNlbnRhdGlvbiBzdWl0YWJsZSBmb3IgZW5jcnlwdGlvbiBpbiB0aGUgdXNlci1leHBvcnQgZmxvdy5cbiAgICAgKlxuICAgICAqIFdlIGNvbnN0cnVjdCB2YWx1ZXMgb2YgdGhpcyB0eXBlIHJhdGhlciB0aGFuIGNvbnN0cnVjdGluZyBgc2VyZGVfanNvbjo6VmFsdWVgc1xuICAgICAqIGRpcmVjdGx5IHdpdGggYGpzb24hKClgIGJlY2F1c2UgdGhpcyBhbGxvd3MgdXMgdG8gemVyb2l6ZSB2YWx1ZXMgb24gZHJvcCwgd2hpY2hcbiAgICAgKiBkb2Vzbid0IHdvcmsgd2l0aCBgc2VyZGVfanNvbjo6VmFsdWVgLlxuICAgICAqXG4gICAgICogRXhhbXBsZXMgb2Ygc2VyaWFsaXplZCBtYXRlcmlhbDpcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6RW5nbGlzaE1uZW1vbmljYDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogRGVyaXZhdGlvblBhdGgsIEtleVBhY2thZ2UsIE1uZW1vbmljLCBNbmVtb25pY1BhY2thZ2UsIFNlY3AyNTZrMVBrZyxcbiAgICAgKiB9O1xuICAgICAqIHVzZSBzZXJkZV9qc29uOjpqc29uO1xuICAgICAqXG4gICAgICogY29uc3QgTU5FTU9OSUM6ICZzdHIgPSBcImRlcG9zaXQgZmlzY2FsIGJyYWluIHN3YXJtIHN1cnJvdW5kIGNvdXNpbiBob3JuIGdsYXJlIGZpeCBsb3ZlIHJlbmRlciBiZWxpZXZlIGd1aWRlIHNodWZmbGUgc3RlbSBjcmFtIGJyb2Njb2xpIHJlc2VtYmxlIGJlYWNoIGFydGVmYWN0IGxhbmd1YWdlIGdpZnQgamFyIHBlcm1pdFwiO1xuICAgICAqIGNvbnN0IERFUl9QQVRIOiAmc3RyID0gXCJtLzQ0Jy82MCcvMCcvMC8wXCI7XG4gICAgICogY29uc3QgS0VZX1RZUEU6ICZzdHIgPSBcImVjZHNhOnNlY3AyNTZrMVwiO1xuICAgICAqXG4gICAgICogbGV0IG1uZSA9IE1uZW1vbmljOjp0cnlfZnJvbShNTkVNT05JQykuZXhwZWN0KFwiZ29vZCBtbmVtb25pY1wiKTtcbiAgICAgKiBsZXQgZGVycCA9IERlcml2YXRpb25QYXRoOjp0cnlfZnJvbShERVJfUEFUSCkuZXhwZWN0KFwiZ29vZCBkZXIgcGF0aFwiKTtcbiAgICAgKiBsZXQgbW5lX3BrZyA9IE1uZW1vbmljUGFja2FnZTo6bmV3KG1uZSwgXCJcIiwgZGVycCk7XG4gICAgICogbGV0IGtleV9wa2cgPSBLZXlQYWNrYWdlOjo8U2VjcDI1NmsxUGtnPjo6RW5nbGlzaE1uZW1vbmljKG1uZV9wa2cpO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcImVuZ2xpc2hfbW5lbW9uaWNcIixcbiAgICAgKiBcIm1uZW1vbmljXCI6IE1ORU1PTklDLFxuICAgICAqIFwicGFzc3dvcmRcIjogXCJcIixcbiAgICAgKiBcImRlcml2YXRpb25fcGF0aFwiOiBERVJfUEFUSCxcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGFzc2VydF9lcSEoXG4gICAgICogc2VyZGVfanNvbjo6dG9fdmFsdWUoJmpzb25fcGtnKS5leHBlY3QoXCJqc29uIHNlcmlhbGl6YXRpb25cIiksXG4gICAgICoganNvbl9leHBlY3QsXG4gICAgICogKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6UmF3U2VjcmV0YDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogZ2V0X3JhbmRvbV9ieXRlX2FycmF5LCBoZXhfZW5jb2RlLCBLZXlQYWNrYWdlLCBSbmdDb3JlLCBTZWNwMjU2azFQa2csXG4gICAgICogfTtcbiAgICAgKiB1c2Ugc2VyZGVfanNvbjo6anNvbjtcbiAgICAgKlxuICAgICAqIGNvbnN0IEtFWV9UWVBFOiAmc3RyID0gXCJlY2RzYTpzZWNwMjU2azFcIjtcbiAgICAgKlxuICAgICAqIC8vIHJhbmRvbSAzMi1ieXRlIHNlY3JldFxuICAgICAqIGxldCBzazogW3U4OyAzMl0gPSAqZ2V0X3JhbmRvbV9ieXRlX2FycmF5KCk7XG4gICAgICpcbiAgICAgKiBsZXQga2V5X3BrZyA9IEtleVBhY2thZ2U6OjxTZWNwMjU2azFQa2c+OjpTZWNyZXQoc2spO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcInJhd19zZWNyZXRcIixcbiAgICAgKiBcInNlY3JldFwiOiBoZXhfZW5jb2RlKCZzayksXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3NlcnRfZXEhKFxuICAgICAqIHNlcmRlX2pzb246OnRvX3ZhbHVlKCZqc29uX3BrZykuZXhwZWN0KFwianNvbiBzZXJpYWxpemF0aW9uXCIpLFxuICAgICAqIGpzb25fZXhwZWN0LFxuICAgICAqICk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgSnNvbktleVBhY2thZ2U6IChcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwicmF3X3NlY3JldFwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIG9mIHRoZSByYXcgc2VjcmV0ICovXG4gICAgICAgICAgc2VjcmV0OiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwiZW5nbGlzaF9tbmVtb25pY1wiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljICovXG4gICAgICAgICAgbW5lbW9uaWM6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwYXNzd29yZCAod2hpY2ggbWF5IGJlIGVtcHR5KSAqL1xuICAgICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICApICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiBrZXkgdGhpcyBwYWNrYWdlIHJlcHJlc2VudHMgKi9cbiAgICAgIGtleV90eXBlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0b3AtbGV2ZWwgSlNPTi1SUEMgcmVxdWVzdCB0eXBlLiAqL1xuICAgIEpzb25ScGNSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJwY01ldGhvZFwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBJRCAqL1xuICAgICAgaWQ/OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEpTT04tUlBDIHZlcnNpb24uICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBSUEMgQVBJJ3MgcmVzcG9uc2UuICovXG4gICAgSnNvblJwY1Jlc3BvbnNlOiB7XG4gICAgICBlcnJvcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JPYmpcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJRCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIHJlcXVlc3QuICovXG4gICAgICBpZD86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIENvbnN0YW50IFwiMi4wXCIuICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3VsdCwgaWYgc3VjY2Vzcy4gKi9cbiAgICAgIHJlc3VsdD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVmFsaWQgYHJlc3VsdGAgZnJvbSB0aGUgSlNPTi1SUEMgQVBJLiAqL1xuICAgIEpzb25ScGNSZXN1bHQ6XG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHJhbnNhY3Rpb25JbmZvXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGlzdFRyYW5zYWN0aW9uc1BhZ2luYXRlZFJlc3BvbnNlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3ViQWNjb3VudFRyYW5zZmVyUmVzcG9uc2VcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbml2ZXJzYWxUcmFuc2ZlclJlc3BvbnNlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3ViQWNjb3VudEFzc2V0c1Jlc3BvbnNlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjb3VudEluZm9SZXNwb25zZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1YkFjY291bnRUcmFuc2Zlckhpc3RvcnlSZXNwb25zZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuaXZlcnNhbFRyYW5zZmVySGlzdG9yeVJlc3BvbnNlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiV2l0aGRyYXdSZXNwb25zZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldpdGhkcmF3SGlzdG9yeVJlc3BvbnNlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFJlc3BvbnNlXCJdO1xuICAgIEp3a1NldFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXlzIGluY2x1ZGVkIGluIHRoaXMgc2V0ICovXG4gICAgICBrZXlzOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICB9O1xuICAgIEtleUF0dGVzdGF0aW9uQ2xhaW1zOiB7XG4gICAgICBleHA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIGlhdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAga2V5X2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgcmVxdWVzdGVkLCB0aGUgcm9sZXMgdGhlIGtleSBpcyBjdXJyZW50bHkgaW4uICovXG4gICAgICBrZXlfcm9sZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXSB8IG51bGw7XG4gICAgfTtcbiAgICBLZXlDb3VudERpbWVuc2lvbnM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGtleSB0eXBlICovXG4gICAgICBrZXlfdHlwZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbWV0cmljcyBtdXN0IGluY2x1ZGUgJ29yZ19pZCcgYXMgYSBkaW1lbnNpb24uICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZGVyaXZhdGlvbiBwYXRoIHVzZWQgdG8gZGVyaXZlIHRoaXMga2V5ICovXG4gICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgd3JhcHBlZCBrZXktaW1wb3J0IGtleSAqL1xuICAgIEtleUltcG9ydEtleToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgZGtfZW5jOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIHRpbWVzdGFtcCBleHByZXNzZWQgYXMgc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC5cbiAgICAgICAqL1xuICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHRvIHdoaWNoIGFuIGltcG9ydGVkIGtleSBzaG91bGQgYmUgZW5jcnlwdGVkLlxuICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgc2tfZW5jOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJblJvbGVJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgSURcbiAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICBrZXlfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSB0aGlzIGtleSBpcyB1c2VkIG9uIGJlaGFsZiBvZiB0aGlzIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjogXCJDYW5vbmljYWxcIlxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJvbGUgSURcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29tbW9uRmllbGRzXCJdICYge1xuICAgICAgZGVyaXZhdGlvbl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlEZXJpdmF0aW9uSW5mb1wiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGtleSBpcyBlbmFibGVkIChvbmx5IGVuYWJsZWQga2V5cyBtYXkgYmUgdXNlZCBmb3Igc2lnbmluZykgKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleTogXCJLZXkjXCIgZm9sbG93ZWQgYnkgYSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0b1xuICAgICAgICogdGhlIHR5cGUgb2Yga2V5IChzdWNoIGFzIGEgcHVibGljIGtleSBmb3IgQkxTIG9yIGFuIGV0aGVyZXVtIGFkZHJlc3MgZm9yIFNlY3ApXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2Yga2V5LCBzdWNoIGFzIGEgcHVibGljIGtleSBvciBhbiBldGhlcmV1bSBhZGRyZXNzXG4gICAgICAgKiBAZXhhbXBsZSAweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAgbWF0ZXJpYWxfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE93bmVyIG9mIHRoZSBrZXlcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBLZXkgcG9saWN5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k6IHVua25vd25bXTtcbiAgICAgIHByb3BlcnRpZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVByb3BlcnRpZXNQYXRjaFwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBrZXkgcHJvdmVuYW5jZS4gKi9cbiAgICAgIHByb3ZlbmFuY2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQsIHNlcmlhbGl6ZWQgcHVibGljIGtleS4gVGhlIGZvcm1hdCB1c2VkIGRlcGVuZHMgb24gdGhlIGtleSB0eXBlOlxuICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAqIC0gQkxTIGtleXMgdXNlIDQ4LWJ5dGUgY29tcHJlc3NlZCBCTFMxMi0zODEgKFpDYXNoKSBmb3JtYXQ7XG4gICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcHVycG9zZSBmb3Igd2hpY2ggdGhlIGtleSBjYW4gYmUgdXNlZCAoZS5nLiwgY2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzKVxuICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gYWZmaW5pdHkgZm9yIHRoaXMga2V5ICovXG4gICAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIHdoZW4gcmVxdWVzdGluZyBhIGtleSBhdHRlc3RhdGlvbi4gKi9cbiAgICBLZXlJbmZvSnd0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBLZXlJbmZvYCBzdHJ1Y3R1cmUuICovXG4gICAgICBqd3Q6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluZm9zOiB7XG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDbGllbnQtc2lkZSB3aXJlIHBheWxvYWQgZm9yIFtgS2V5UHJvcGVydGllc2BdLiBVc2VkIGluIGJvdGggZGlyZWN0aW9uczpcbiAgICAgKlxuICAgICAqIC0gKipPbiB3cml0ZSoqOiBhICpwYXRjaCosIGkuZS4sIGZvciBlYWNoIGZpZWxkLCBtaXNzaW5nIG1lYW5zIFwibGVhdmUgYWxvbmVcIixcbiAgICAgKiBgbnVsbGAgbWVhbnMgXCJjbGVhclwiLCBhbmQgYSB2YWx1ZSBtZWFucyBcInNldFwiLiBTZWNyZXQgZmllbGRzIGFycml2ZSBpbiB0aGVcbiAgICAgKiBjbGVhciBhbmQgYXJlIGVuY3J5cHRlZCBzZXJ2ZXItc2lkZSBiZWZvcmUgcGVyc2lzdGluZy5cbiAgICAgKiAtICoqT24gcmVhZCoqOiBlYWNoIGZpZWxkIGlzIG9taXR0ZWQgd2hlbiB0aGUgc3RvcmVkIHByb3BlcnR5IGlzIHVuc2V0OyBzZWNyZXRcbiAgICAgKiBmaWVsZHMgYXJlIGVtaXR0ZWQgd2l0aCB0aGUgcmVkYWN0ZWQgbWFya2VyIChlLmcuIFwiW1JFREFDVEVEXVwiKS5cbiAgICAgKi9cbiAgICBLZXlQcm9wZXJ0aWVzUGF0Y2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZUFwaVByb3BlcnRpZXNQYXRjaFwiXSAmIHtcbiAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAga2luZDogXCJCaW5hbmNlQXBpXCI7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBLZXlUeXBlOlxuICAgICAgfCBcIlNlY3BFdGhBZGRyXCJcbiAgICAgIHwgXCJTZWNwQnRjXCJcbiAgICAgIHwgXCJTZWNwQnRjVGVzdFwiXG4gICAgICB8IFwiU2VjcEJ0Y0xlZ2FjeVwiXG4gICAgICB8IFwiU2VjcEJ0Y0xlZ2FjeVRlc3RcIlxuICAgICAgfCBcIlNlY3BBdmFBZGRyXCJcbiAgICAgIHwgXCJTZWNwQXZhVGVzdEFkZHJcIlxuICAgICAgfCBcIkJsc1B1YlwiXG4gICAgICB8IFwiQmxzSW5hY3RpdmVcIlxuICAgICAgfCBcIkJsc0F2YUljbVwiXG4gICAgICB8IFwiRWQyNTUxOVNvbGFuYUFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlTdWlBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5QXB0b3NBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5Q2FyZGFub0FkZHJWa1wiXG4gICAgICB8IFwiRWQyNTUxOVN0ZWxsYXJBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5U3Vic3RyYXRlQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOUNhbnRvbkFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlCaW5hbmNlQXBpXCJcbiAgICAgIHwgXCJNbmVtb25pY1wiXG4gICAgICB8IFwiU3RhcmtcIlxuICAgICAgfCBcIkJhYnlsb25Fb3RzXCJcbiAgICAgIHwgXCJCYWJ5bG9uQ292XCJcbiAgICAgIHwgXCJUYXByb290QnRjXCJcbiAgICAgIHwgXCJUYXByb290QnRjVGVzdFwiXG4gICAgICB8IFwiU2VjcENvc21vc0FkZHJcIlxuICAgICAgfCBcIlAyNTZDb3Ntb3NBZGRyXCJcbiAgICAgIHwgXCJQMjU2T250b2xvZ3lBZGRyXCJcbiAgICAgIHwgXCJQMjU2TmVvM0FkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlUZW5kZXJtaW50QWRkclwiXG4gICAgICB8IFwiU2VjcFRyb25BZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5VG9uQWRkclwiXG4gICAgICB8IFwiU2VjcERvZ2VBZGRyXCJcbiAgICAgIHwgXCJTZWNwRG9nZVRlc3RBZGRyXCJcbiAgICAgIHwgXCJTZWNwS2FzcGFBZGRyXCJcbiAgICAgIHwgXCJTZWNwS2FzcGFUZXN0QWRkclwiXG4gICAgICB8IFwiU2Nobm9yckthc3BhQWRkclwiXG4gICAgICB8IFwiU2Nobm9yckthc3BhVGVzdEFkZHJcIlxuICAgICAgfCBcIlNlY3BMdGNcIlxuICAgICAgfCBcIlNlY3BMdGNUZXN0XCJcbiAgICAgIHwgXCJTZWNwWHJwQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOVhycEFkZHJcIlxuICAgICAgfCBcIkJhYnlKdWJqdWJcIjtcbiAgICBLZXlUeXBlQW5kRGVyaXZhdGlvblBhdGg6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIExpc3Qgb2YgZGVyaXZhdGlvbiBwYXRocyBmb3Igd2hpY2ggdG8gZGVyaXZlLlxuICAgICAgICogQGV4YW1wbGUgbS80NCcvNjAnLzAnLzAvMFxuICAgICAgICovXG4gICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZztcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY2llcyB0byBhcHBseSB0byB0aGlzIGtleS4gSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lmeSBhIHBvbGljeVxuICAgICAgICogdGhhdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGBrZXlfdHlwZWAuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiB1bmtub3duW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGVuY3J5cHRlZCBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gYnl0ZXMuXG4gICAgICpcbiAgICAgKiBXZSBzZXJpYWxpemUgdGhpcyBpbnRvIGEgYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIGFuZCByZXR1cm4gdG8gdGhlIHVzZXJcbiAgICAgKiBzbyB0aGF0IHRoZXkgY2FuIHBhc3MgdGhpcyBiYWNrIHRvIHVzIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgKi9cbiAgICBMYXN0RXZhbEtleTogc3RyaW5nO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhpcmQtcGFydHkgaWRlbnRpdGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIncyBhY2NvdW50ICovXG4gICAgTGlzdElkZW50aXRpZXNSZXNwb25zZToge1xuICAgICAgaWRlbnRpdGllczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gTGlzdCBvZiBwZW5kaW5nIGludml0YXRpb25zICovXG4gICAgTGlzdEludml0YXRpb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUGVuZGluZyBpbnZpdGF0aW9ucyAqL1xuICAgICAgaW52aXRhdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRhdGlvbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgKi9cbiAgICAgIG1mYV9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNTUkgcmVxdWVzdHMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLiAqL1xuICAgIExpc3RQZW5kaW5nTWVzc2FnZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBtZXNzYWdlcyBmb3IgYSB1c2VyLiAqL1xuICAgICAgcGVuZGluZ19tZXNzYWdlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQZW5kaW5nTWVzc2FnZUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgTGlzdFRyYW5zYWN0aW9uc1BhZ2luYXRlZFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiB0cmFuc2FjdGlvbiBpbmZvcy4gKi9cbiAgICAgIHRyYW5zYWN0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgdGhlIFtgY3NfbGlzdFRyYW5zYWN0aW9uc2BdKFJwY01ldGhvZDo6TGlzdFRyYW5zYWN0aW9ucykgbWV0aG9kLiAqL1xuICAgIExpc3RUcmFuc2FjdGlvbnNSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhZ2VcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyIG9yIHJvbGUgaWQuXG4gICAgICAgKlxuICAgICAgICogSWYgZGVmaW5lZCwgdGhlIHJlc3BvbnNlIGlzIGZpbHRlcmVkIHRvIHRyYW5zYWN0aW9ucyBjcmVhdGVkIGJ5IHRoZSBnaXZlbiBpZC5cbiAgICAgICAqL1xuICAgICAgb3duZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gW2Bjc19saXN0VHJhbnNhY3Rpb25zYF0oc3VwZXI6OnJlcXVlc3Q6OkNzUnBjOjpMaXN0VHJhbnNhY3Rpb25zKSAqL1xuICAgIExpc3RUcmFuc2FjdGlvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgdHJhbnNhY3Rpb24gaW5mb3MuICovXG4gICAgICB0cmFuc2FjdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHJhbnNhY3Rpb25JbmZvXCJdW107XG4gICAgfTtcbiAgICBMb2dpblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luUmVxdWVzdFwiXTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIHdoZXRoZXIgYSB1c2VyIGluIGFuIG9yZyBpcyBhbiBPd25lciBvciBqdXN0IGEgcmVndWxhciBtZW1iZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1lbWJlclJvbGU6IFwiQWxpZW5cIiB8IFwiTWVtYmVyXCIgfCBcIk93bmVyXCI7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgTWVtYmVyc2hpcFN0YXR1czogXCJlbmFibGVkXCIgfCBcImRpc2FibGVkXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgbWV0cmljIHRvIGNvbXB1dGUgKi9cbiAgICBNZXRyaWNOYW1lOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY0Rpc2NyaW1pbmFudHNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUc1F1ZXJ5TmFtZVwiXTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImFsbG93ZWRfYXBwcm92ZXJzXCI6IFtcbiAgICAgKiAgICAgXCJVc2VyI2ZhYmMzZjg4LTA0ZTAtNDcxYi05NjU3LTBhZTEyYTNjZDczZVwiLFxuICAgICAqICAgICBcIlVzZXIjZDc5NmMzNjktOTk3NC00NzNiLWFiOWUtZTRhMjQxOGQyZDA3XCJcbiAgICAgKiAgIF0sXG4gICAgICogICBcImNvdW50XCI6IDIsXG4gICAgICogICBcImxpZmV0aW1lXCI6IDkwMFxuICAgICAqIH1cbiAgICAgKi9cbiAgICBNZmFQb2xpY3k6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGFyZSBhbGxvd2VkIHRvIGFwcHJvdmUuIElmIGVtcHR5IGF0IGNyZWF0aW9uIHRpbWUsIGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgdXNlci4gKi9cbiAgICAgIGFsbG93ZWRfYXBwcm92ZXJzPzogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbG93ZWQgYXBwcm92YWwgdHlwZXMuIFdoZW4gb21pdHRlZCwgZGVmYXVsdHMgdG8gYW55LiAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl1bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSB1c2VycyB0byByZXF1aXJlIHRvIGFwcHJvdmUgKGRlZmF1bHRzIHRvIDEpLlxuICAgICAgICovXG4gICAgICBjb3VudD86IG51bWJlcjtcbiAgICAgIGxpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgYXV0aCBmYWN0b3JzIHRvIHJlcXVpcmUgcGVyIHVzZXIgKGRlZmF1bHRzIHRvIDEpLlxuICAgICAgICovXG4gICAgICBudW1fYXV0aF9mYWN0b3JzPzogbnVtYmVyO1xuICAgICAgcmVxdWVzdF9jb21wYXJlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RDbXBcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyIG9wZXJhdGlvbnMgdG8gd2hpY2ggdGhpcyBwb2xpY3kgc2hvdWxkIGFwcGx5LlxuICAgICAgICogV2hlbiBvbWl0dGVkLCBhcHBsaWVzIHRvIGFsbCBvcGVyYXRpb25zLlxuICAgICAgICovXG4gICAgICByZXN0cmljdGVkX29wZXJhdGlvbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl1bXSB8IG51bGw7XG4gICAgICB0aW1lX2RlbGF5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1GQS1wcm90ZWN0ZWQgYWN0aW9ucyB3aG9zZSBNRkEgcmVxdWlyZW1lbnRzIGFyZSBjb25maWd1cmFibGUgYnkgb3JnIG93bmVycy5cbiAgICAgKlxuICAgICAqIFNwZWNpZnlpbmcgdGhlICdDdWJlU2lnbmVyJyBNRkEgdHlwZSBpcyBuZXZlciBhbGxvd2VkIGZvciBhbnkgb2YgdGhlc2UgYWN0aW9ucy5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1mYVByb3RlY3RlZEFjdGlvbjpcbiAgICAgIHwgXCJEZWZhdWx0XCJcbiAgICAgIHwgXCJSZWdpc3Rlck1mYVwiXG4gICAgICB8IFwiTG9naW5cIlxuICAgICAgfCBcIkV4dGVuZFNlc3Npb25cIlxuICAgICAgfCBcIkFkZElkZW50aXR5XCJcbiAgICAgIHwgXCJLZXlFeHBvcnRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJldHVybmVkIGFzIGEgcmVzcG9uc2UgZnJvbSBtdWx0aXBsZSByb3V0ZXMgKGUuZy4sICdnZXQgbWZhJywgJ2FwcHJvdmUgbWZhJywgJ2FwcHJvdmUgdG90cCcpLiAqL1xuICAgIE1mYVJlcXVlc3RJbmZvOiB7XG4gICAgICBjcmVhdGVkX2F0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2Vzc2lvbiBpZGVudGl0eSAodXNlciBvciByb2xlKSB0aGF0IGNyZWF0ZWQgdGhpcyByZXF1ZXN0LiAqL1xuICAgICAgY3JlYXRlZF9ieTogc3RyaW5nO1xuICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcHByb3ZhbCByZXF1ZXN0IElELiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIG5vdF92YWxpZF91bnRpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1GQSBwb2xpY3kgcHJvdmVuYW5jZVxuICAgICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgcHJvdmVuYW5jZTogXCJPcmdcIiB8IFwiS2V5XCIgfCBcIktleUluUm9sZVwiIHwgXCJSb2xlXCIgfCBcIlVzZXJcIiB8IFwiRWRpdFBvbGljeVwiO1xuICAgICAgcmVjZWlwdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVjZWlwdFwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gdGhpcyBNRkEgcmVxdWVzdCB3YXMgY3JlYXRlZCBpbi4gIEl0IGNhbiBvbmx5IGJlIHJlZGVlbWVkIGZyb20gdGhlIHNhbWUgcmVnaW9uLiAqL1xuICAgICAgcmVnaW9uPzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCBjb250YWlucyB0aGUgSURzIG9mIGFsbCBNRkEgcmVxdWVzdHMgKGluY2x1ZGluZyB0aGlzIG9uZSEpIHRoYXRcbiAgICAgICAqIHdlcmUgZ2VuZXJhdGVkIGF0IG9uY2UgZm9yIHRoZSBzYW1lIEN1YmVTaWduZXIgb3BlcmF0aW9uLlxuICAgICAgICpcbiAgICAgICAqIElmIG5vdCBzZXQsIGl0IG1lYW5zIHRoYXQgdGhpcyB3YXMgdGhlIGxvbmUgTUZBIHJlcXVlc3QgZ2VuZXJhdGVkIGZvciBgcmVxdWVzdGAuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBpcyB1c2VmdWwgc28gdGhhdCBhIGNsaWVudCBjYW4gZGlzY292ZXIgYWxsIHRoZSBNRkFzIHdob3NlIHJlY2VpcHRzIG11c3RcbiAgICAgICAqIGJlIHN1Ym1pdHRlZCB0b2dldGhlciB0byBjYXJyeSBvdXQgdGhlIG9yaWdpbmFsIEN1YmVTaWduZXIgb3BlcmF0aW9uLlxuICAgICAgICovXG4gICAgICByZWxhdGVkX2lkcz86IHN0cmluZ1tdO1xuICAgICAgcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIdHRwUmVxdWVzdFwiXTtcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl07XG4gICAgfTtcbiAgICBNZmFSZXF1aXJlZEFyZ3M6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWx3YXlzIHNldCB0byBmaXJzdCBNRkEgaWQgZnJvbSBgU2VsZjo6aWRzYCAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gTm9uLWVtcHR5IE1GQSByZXF1ZXN0IElEcyAqL1xuICAgICAgaWRzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnYW5pemF0aW9uIGlkICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZSAoaW5jbHVkZWQgaW4gc2lnbmVyIHJlc3BvbnNlcywgd2hlbiByZXF1ZXN0ZWQpICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgIHNlc3Npb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9yZy13aWRlIE1GQSByZXF1aXJlbWVudHMuICovXG4gICAgTWZhUmVxdWlyZW1lbnRzOiB7XG4gICAgICBhbGllbl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl07XG4gICAgICBhbGxvd2VkX21mYV90eXBlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWxsb3dlZE1mYU1hcFwiXTtcbiAgICAgIGtleV9leHBvcnRfcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdO1xuICAgICAgbWVtYmVyX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIE1mYVJlc2V0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyIHlvdSB3YW50IHRvIHJlc2V0IE1GQSBmb3JcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZvcm1hdDogJ0N1YmVTaWduZXInIHwgJ0ZpZG8nIHwgYEZpZG9LZXkjJHtzdHJpbmd9YCB8ICdUb3RwJyB8ICdFbWFpbE90cCcgfCBgRW1haWxPdHAjJHtudW1iZXJ9YFxuICAgICAqIEBkZXNjcmlwdGlvbiBEaWZmZXJlbnQgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHByb3ZlIGFuIE1GQSByZXF1ZXN0XG4gICAgICovXG4gICAgTWZhVHlwZTogc3RyaW5nO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIE1mYVZvdGU6IFwiYXBwcm92ZVwiIHwgXCJyZWplY3RcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGluZGl2aWR1YWwgaXRlbSBpbiBhIE1pZ3JhdGVJZGVudGl0eVJlcXVlc3QgKi9cbiAgICBNaWdyYXRlSWRlbnRpdHlJdGVtOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNJZGVudGl0eVwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyIHlvdSB3YW50IHRvIG9wZXJhdGUgb24gKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IHRvIGFkZCBvciByZW1vdmUgYW4gT0lEQyBpZGVudGl0aWVzIGZvciBhbiBleGlzdGluZyB1c2VyICovXG4gICAgTWlncmF0ZUlkZW50aXR5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNaWdyYXRlSWRlbnRpdHlJdGVtXCJdW107XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gdXBkYXRlIGFuIGV4aXN0aW5nIHVzZXIuICovXG4gICAgTWlncmF0ZVVwZGF0ZVVzZXJJdGVtOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgdXNlciB5b3Ugd2FudCB0byBvcGVyYXRlIG9uICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPdmVycmlkZSB1c2VyJ3MgdmVyaWZpZWQgZW1haWwgaW4gdGhpcyBvcmcuIFVzZSBhbiBlbXB0eSBzdHJpbmcgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHVzZXInc1xuICAgICAgICogdmVyaWZpZWQgZW1haWwgc2hvdWxkIGJlIGNsZWFyZWQgKGFuZCBmYWxsYmFjayB0byB0aGVpciBkaXNwbGF5IGVtYWlsKS5cbiAgICAgICAqL1xuICAgICAgdmVyaWZpZWRfZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgTWlncmF0ZVVwZGF0ZVVzZXJzUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNaWdyYXRlVXBkYXRlVXNlckl0ZW1cIl1bXTtcbiAgICBNbWlNZXRhZGF0YToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDaGFpbiBJRCAobm90IHJlcXVpcmVkIHdoZW4gc2lnbmluZyBhIHBlcnNvbmFsIG1lc3NhZ2UgKEVJUC0xOTEpKSAqL1xuICAgICAgY2hhaW5JZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHRoZSBjdXN0b2RpYW4gc2hvdWxkIHB1Ymxpc2ggdGhlIHRyYW5zYWN0aW9uICovXG4gICAgICBjdXN0b2RpYW5QdWJsaXNoZXNUcmFuc2FjdGlvbj86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIG5vdGUgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zYWN0aW9uIHdoaWNoIGNhbiBiZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgKi9cbiAgICAgIG5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgd2ViIHBhZ2UvZGFwcCB3aGVyZSB0aGUgdHJhbnNhY3Rpb24gb3JpZ2luYXRlZCAqL1xuICAgICAgb3JpZ2luVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcidzIHByZWZlcnJlZCBSUEMgVVJMLCBhbmQgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBSUEMgVVJMIGZvciB0aGUgbmV0d29yayBjb3JyZXNwb25kaW5nIHRvIHRoZSBDaGFpbiBJRCAqL1xuICAgICAgcnBjVXJsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGNhdGVnb3J5IG9mIHRyYW5zYWN0aW9uLCBhcyBiZXN0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSB3YWxsZXQgKi9cbiAgICAgIHRyYW5zYWN0aW9uQ2F0ZWdvcnk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgTW1pUmVqZWN0UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCByZWFzb24gZm9yIHJlamVjdGluZy4gKi9cbiAgICAgIHJlYXNvbj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBNbWlTdGF0dXM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2hvcnQgdGV4dCB0byBkaXNwbGF5IHRvIHRoZSB1c2VyICovXG4gICAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBzaWduZWQgbWVzc2FnZSBoYXMgZmluaXNoZWQsIGUuZy4gaXQgaXMgY29tcGxldGVkLCBmYWlsZWQgb3IgY2FuY2VsbGVkICovXG4gICAgICBmaW5pc2hlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlYXNvbiBmb3IgdGhlIHNpZ25lZCBtZXNzYWdlIHN0YXR1cyAqL1xuICAgICAgcmVhc29uPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgc2lnbmVkICovXG4gICAgICBzaWduZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHRyYW5zYWN0aW9uIHdhcyBzdWJtaXR0ZWQgdG8gdGhlIGJsb2NrY2hhaW4gKi9cbiAgICAgIHN1Ym1pdHRlZD86IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHRyYW5zYWN0aW9uIHdhcyBzdWNjZXNzZnVsLCBpLmUuIGl0IHdhcyBpbmNsdWRlZCBpbiBhIGJsb2NrIGFuZCBub3QgcmV2ZXJ0ZWQgKi9cbiAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc2lnbmVkIG1lc3NhZ2UgKi9cbiAgICBNc2dTaWduYXR1cmU6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc3RydWN0IHJlcHJlc2VudGluZyB0aGUgcGVuZGluZyBtZXNzYWdlIHN0YXR1cyAqL1xuICAgIE1zZ1N0YXR1czpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJQZW5kaW5nXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBzaWduZWQgbWVzc2FnZSAqL1xuICAgICAgICAgIHNpZzoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmF0dXJlICovXG4gICAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHN0YXR1czogXCJTaWduZWRcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgc3RhdHVzOiBcIlJlamVjdGVkXCI7XG4gICAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE5ldHdvcmsgbmFtZSAoJ21haW5uZXQnLCAnaG9sZXNreScpXG4gICAgICogQGV4YW1wbGUgaG9sZXNreVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgTmV0d29yazogXCJtYWlubmV0XCIgfCBcImhvbGVza3lcIiB8IFwiaG9vZGlcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbmV3IHNlc3Npb24sIHJldHVybmVkIGZyb20gbXVsdGlwbGUgZW5kcG9pbnRzIChlLmcuLCBsb2dpbiwgcmVmcmVzaCwgZXRjLikuICovXG4gICAgTmV3U2Vzc2lvblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGV4cGlyYXRpb24gKGluIHNlY29uZHMgc2luY2UgVU5JWCBlcG9jaCksIGJleW9uZCB3aGljaCBpdCBjYW5ub3QgYmUgcmVmcmVzaGVkLlxuICAgICAgICogQGV4YW1wbGUgMTcwMTg3OTY0MFxuICAgICAgICovXG4gICAgICBleHBpcmF0aW9uPzogbnVtYmVyO1xuICAgICAgb3JnX2lkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVmcmVzaCB0aGlzIHNlc3Npb24uICovXG4gICAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgICBzZXNzaW9uX2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbkluZm9cIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOZXcgdG9rZW4gdG8gYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24uIFJlcXVlc3RzIHRvIHNpZ25pbmcgZW5kcG9pbnRzXG4gICAgICAgKiBzaG91bGQgaW5jbHVkZSB0aGlzIHZhbHVlIGluIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyLlxuICAgICAgICovXG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEZvcm1hdDogYmluYXJ5ICovXG4gICAgTm9uY2VWYWx1ZTogc3RyaW5nO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIE5vdEZvdW5kRXJyb3JDb2RlOlxuICAgICAgfCBcIlVyaVNlZ21lbnRNaXNzaW5nXCJcbiAgICAgIHwgXCJVcmlTZWdtZW50SW52YWxpZFwiXG4gICAgICB8IFwiVG90cE5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIkZpZG9LZXlOb3RGb3VuZFwiXG4gICAgICB8IFwiRmlkb0NoYWxsZW5nZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJUb3RwQ2hhbGxlbmdlTm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0Tm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRDaXBoZXJ0ZXh0Tm90Rm91bmRcIlxuICAgICAgfCBcIk9yZ0V4cG9ydENpcGhlcnRleHROb3RGb3VuZFwiXG4gICAgICB8IFwiVXBsb2FkT2JqZWN0Tm90Rm91bmRcIlxuICAgICAgfCBcIlBvbGljeVNlY3JldE5vdEZvdW5kXCJcbiAgICAgIHwgXCJCdWNrZXRNZXRhTm90Rm91bmRcIlxuICAgICAgfCBcIlRpbWVzdHJlYW1EaXNhYmxlZFwiXG4gICAgICB8IFwiQ3VzdG9tQ2hhaW5Ob3RGb3VuZFwiXG4gICAgICB8IFwiSW52aXRhdGlvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJUcmFuc2FjdGlvbk5vdEZvdW5kXCJcbiAgICAgIHwgXCJFbWFpbENvbmZpZ05vdEZvdW5kXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY29uZmlndXJhdGlvbiBhbmQgc3RhdHVzIG9mIGEgbm90aWZpY2F0aW9uIGVuZHBvaW50ICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRTdWJzY3JpcHRpb25cIl0gJiB7XG4gICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3Vic2NyaXB0aW9uU3RhdHVzXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY29uZmlndXJhdGlvbiBmb3IgYW4gb3JnIGV2ZW50IGVuZHBvaW50ICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICBmaWx0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ0V2ZW50RmlsdGVyXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVUkwgb2YgdGhlIGVuZHBvaW50ICovXG4gICAgICB1cmw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBub3RpZmljYXRpb24gZW5kcG9pbnQgc3Vic2NyaXB0aW9uICovXG4gICAgTm90aWZpY2F0aW9uRW5kcG9pbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIEFSTiBvZiB0aGUgc3Vic2NyaXB0aW9uICovXG4gICAgICBhcm46IHN0cmluZztcbiAgICAgIGNvbmZpZzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlIE9JREMgdG9rZW4gKi9cbiAgICBPaWRjQ2xhaW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNVc2VySW5mb1wiXSAmXG4gICAgICBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNJZGVudGl0eVwiXSAmIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdWRpZW5jZShzKSB0aGF0IHRoaXMgSUQgVG9rZW4gaXMgaW50ZW5kZWQgZm9yLiBJdCBNVVNUIGNvbnRhaW4gdGhlXG4gICAgICAgICAqIE9BdXRoIDIuMCBjbGllbnRfaWQgb2YgdGhlIFJlbHlpbmcgUGFydHkgYXMgYW4gYXVkaWVuY2UgdmFsdWUuIEl0IE1BWVxuICAgICAgICAgKiBhbHNvIGNvbnRhaW4gaWRlbnRpZmllcnMgZm9yIG90aGVyIGF1ZGllbmNlcy5cbiAgICAgICAgICogVGhpcyB2YWx1ZSBpcyBvcGFxdWUgYWNjb3JkaW5nIHRvIHRoZSBPSURDIHNwZWMsIGJ1dCBmb3IgZXhhbXBsZSBHb29nbGVcbiAgICAgICAgICogYXVkaWVuY2VzIGxvb2sgbGlrZSBgMTIzNDk4NzgxOTIwMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbWBcbiAgICAgICAgICogQGV4YW1wbGUgMTIzNDk4NzgxOTIwMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbVxuICAgICAgICAgKi9cbiAgICAgICAgYXVkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgcmVzdHJpY3Rpb24gb24gdGhlIHNldCBvZiBzY29wZXMgYWxsb3dlZCB3aXRoIHRoaXMgdG9rZW4gKi9cbiAgICAgICAgY3ViZXNpZ25lcl9zY29wZV9jZWlsaW5nPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBnbG9iYWxseSB1bmlxdWUgT0lEQy1hdXRob3JpemVkIHVzZXIgYnkgZXhwcmVzc2luZyB0aGUgZnVsbCBcInBhdGhcIiB0byBhIHVzZXIuIFRoYXQgaXM6XG4gICAgICpcbiAgICAgKiAoaXNzKSAgICAgICAoc3ViKVxuICAgICAqIElzc3VlciAtPiBTdWJyZXNvdXJjZVxuICAgICAqL1xuICAgIE9pZGNJZGVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJvb3QtbGV2ZWwgaXNzdWVyIHdobyBhZG1pbmlzdHJhdGVzIHRoaXMgdXNlci4gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICogSXNzdWVyIElkZW50aWZpZXIgZm9yIHRoZSBJc3N1ZXIgb2YgdGhlIHJlc3BvbnNlLiBUaGUgaXNzXG4gICAgICAgKiB2YWx1ZSBpcyBhIGNhc2Ugc2Vuc2l0aXZlIFVSTCB1c2luZyB0aGUgaHR0cHMgc2NoZW1lIHRoYXQgY29udGFpbnNcbiAgICAgICAqIHNjaGVtZSwgaG9zdCwgYW5kIG9wdGlvbmFsbHksIHBvcnQgbnVtYmVyIGFuZCBwYXRoIGNvbXBvbmVudHMgYW5kXG4gICAgICAgKiBubyBxdWVyeSBvciBmcmFnbWVudCBjb21wb25lbnRzLlxuICAgICAgICogQGV4YW1wbGUgaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGlzczogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICpcbiAgICAgICAqIEEgbG9jYWxseSB1bmlxdWUgYW5kIG5ldmVyIHJlYXNzaWduZWQgaWRlbnRpZmllciB3aXRoaW4gdGhlIElzc3VlciBmb3JcbiAgICAgICAqIHRoZSBFbmQtVXNlciwgd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgY29uc3VtZWQgYnkgdGhlIENsaWVudCwgZS5nLixcbiAgICAgICAqIDI0NDAwMzIwIG9yIEFJdE9hd213dFd3Y1QwazUxQmF5ZXdOdnV0ckpVcXN2bDZxczdBNC4gSXQgTVVTVCBOT1QgZXhjZWVkXG4gICAgICAgKiAyNTUgQVNDSUkgY2hhcmFjdGVycyBpbiBsZW5ndGguIFRoZSBzdWIgdmFsdWUgaXMgYSBjYXNlIHNlbnNpdGl2ZVxuICAgICAgICogc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgMTA3NjkxNTAzNTAwMDYxNTA3MTUxMTMwODIzNjdcbiAgICAgICAqL1xuICAgICAgc3ViOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGFuIGV4cGxpY2l0bHkgY29uZmlndXJlZCAoYWxsb3dsaXN0ZWQpIE9wZW5JRCBwcm92aWRlciBmb3IgYW4gb3JnICovXG4gICAgT2lkY0lzc3VlckluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW50ZW5kZWQgYXVkaWVuY2VzIChjbGllbnQgSURzKSAqL1xuICAgICAgYXVkaWVuY2VzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSXNzdWVyIFVSTCAqL1xuICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGlzc3VlciBuaWNrbmFtZSAqL1xuICAgICAgbmlja25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByb2xlcyBhbGxvd2VkIHRvIHVzZSB0aGlzIElEUCAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdO1xuICAgIH07XG4gICAgT2lkY0xvZ2luRGltZW5zaW9uczoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyBpc3N1ZXIgKHByb3ZpZGVyKSAqL1xuICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtZXRyaWNzIG11c3QgaW5jbHVkZSAnb3JnX2lkJyBhcyBhIGRpbWVuc2lvbi4gKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPSURDIGxvZ2luIHJlcXVlc3QgKi9cbiAgICBPaWRjTG9naW5SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUgc2Vzc2lvbiAqL1xuICAgICAgcHVycG9zZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcInNpZ246KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3BlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgdG9rZW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdO1xuICAgIH07XG4gICAgT2lkY1VzZXJJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgKiBAZXhhbXBsZSB1c2VyQGVtYWlsLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBuYW1lIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgZHJpbFxuICAgICAgICovXG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFsbCBkaWZmZXJlbnQga2luZHMgb2Ygc2Vuc2l0aXZlIG9wZXJhdGlvbnNcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE9wZXJhdGlvbktpbmQ6XG4gICAgICB8IFwiQXZhU2lnblwiXG4gICAgICB8IFwiQXZhQ2hhaW5UeFNpZ25cIlxuICAgICAgfCBcIkJhYnlsb25Db3ZTaWduXCJcbiAgICAgIHwgXCJCYWJ5bG9uUmVnaXN0cmF0aW9uXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ1wiXG4gICAgICB8IFwiQmluYW5jZVNpZ25cIlxuICAgICAgfCBcIkJsb2JTaWduXCJcbiAgICAgIHwgXCJCdGNNZXNzYWdlU2lnblwiXG4gICAgICB8IFwiQnRjU2lnblwiXG4gICAgICB8IFwiRGlmZmllSGVsbG1hblwiXG4gICAgICB8IFwiUHNidFNpZ25cIlxuICAgICAgfCBcIlRhcHJvb3RTaWduXCJcbiAgICAgIHwgXCJFaXAxOTFTaWduXCJcbiAgICAgIHwgXCJFaXA3MTJTaWduXCJcbiAgICAgIHwgXCJFb3RzTm9uY2VzXCJcbiAgICAgIHwgXCJFb3RzU2lnblwiXG4gICAgICB8IFwiRXRoMVNpZ25cIlxuICAgICAgfCBcIkV0aDJTaWduXCJcbiAgICAgIHwgXCJFdGgyU3Rha2VcIlxuICAgICAgfCBcIkV0aDJVbnN0YWtlXCJcbiAgICAgIHwgXCJTb2xhbmFTaWduXCJcbiAgICAgIHwgXCJTdWlTaWduXCJcbiAgICAgIHwgXCJUZW5kZXJtaW50U2lnblwiXG4gICAgICB8IFwiUm9sZVVwZGF0ZVwiO1xuICAgIE9yZ0FsZXJ0c1ByZWZzOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFJlY2lwaWVudCB1c2VycyBmb3Igb3JnLWxldmVsIGFsZXJ0cyAqL1xuICAgICAgYWxlcnRfcmVjaXBpZW50cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl1bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9yZy1sZXZlbCBhbGVydHMgdG8gc2VuZCBlbWFpbHMgZm9yICovXG4gICAgICBzdWJzY3JpYmVkX2FsZXJ0cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWxlcnRLaW5kXCJdW10gfCBudWxsO1xuICAgIH07XG4gICAgT3JnRGF0YToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBvcmdcbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjMuLi5cbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAqL1xuICAgICAgb3JnX25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgT3JnRXZlbnRBcmdzOiB7XG4gICAgICBvcmdfZXZlbnQ6IFwiT3JnRXZlbnRBcmdzXCI7XG4gICAgfSAmIE9taXQ8Y29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERhdGFcIl0sIFwib3JnX2V2ZW50XCI+ICYge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZGVudGl0eSB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgKi9cbiAgICAgICAgdHJpZ2dlcmVkX2J5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3JnLWxldmVsIGV2ZW50cyB0aGF0IHdlIG5vdGlmeSBvdXIgY3VzdG9tZXJzIGFib3V0ICovXG4gICAgT3JnRXZlbnREYXRhOlxuICAgICAgfCB7XG4gICAgICAgICAgYmlsbGluZ19ldmVudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaWxsaW5nRXZlbnRcIl07XG4gICAgICAgICAga2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIkJpbGxpbmdcIjtcbiAgICAgICAgICByb2xlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgICAgdXNlcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBkdXJhdGlvbiBvZiB0aGUgcmVxdWVzdCBpbiBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBkdXJhdGlvbl9tczogbnVtYmVyO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgKi9cbiAgICAgICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgICAgICBvcGVyYXRpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmlsbGluZ0V2ZW50XCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJSZXNwb25zZVwiO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEhUVFAgcmVzcG9uc2Ugc3RhdHVzXG4gICAgICAgICAgICovXG4gICAgICAgICAgc3RhdHVzOiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSFRUUCByZXF1ZXN0IHBhdGggKyBxdWVyeSBwYXJhbWV0ZXJzICovXG4gICAgICAgICAgdXJpOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIG1lbWJlcnNoaXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiT2lkY0F1dGhcIjtcbiAgICAgICAgICBwdXJwb3NlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICBzY29wZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2NvcGVcIl1bXTtcbiAgICAgICAgICB1c2VyX2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0NsYWltc1wiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWF0ZXJpYWwgaWQgKGFkZHJlc3MpIG9mIHRoZSBrZXkgdXNlZCBmb3Igc2lnbmluZyAqL1xuICAgICAgICAgIGtleV9tYXRlcmlhbF9pZDogc3RyaW5nO1xuICAgICAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAgICAgb3BlcmF0aW9uOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlNpZ25lZFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBjaGFpbl9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICBrZXlfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIkJhYnlsb25Fb3RzQ29uY3VycmVudFNpZ25pbmdcIjtcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIHByZXZfYmxvY2tfaGVpZ2h0OiBudW1iZXI7XG4gICAgICAgICAgcHJldl9zaWduaW5nX2hhc2g6IHN0cmluZztcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIHJlcV9ibG9ja19oZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgICByZXFfc2lnbmluZ19oYXNoOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGF0dGVzdGF0aW9uOiB7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoYXNoIHRoYXQgd2FzIHNpZ25lZCAqL1xuICAgICAgICAgICAgc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYXR0ZXN0YXRpb24uZGF0YS5zb3VyY2UuZXBvY2ggb2YgdGhlIHNpZ25lZCBhdHRlc3RhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzb3VyY2VfZXBvY2g6IG51bWJlcjtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhdHRlc3RhdGlvbi5kYXRhLnRhcmdldC5lcG9jaCBvZiB0aGUgc2lnbmVkIGF0dGVzdGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRhcmdldF9lcG9jaDogbnVtYmVyO1xuICAgICAgICAgIH07XG4gICAgICAgICAga2V5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIG1hdGVyaWFsX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhhc2ggdGhhdCB3YXMgc2lnbmVkICovXG4gICAgICAgICAgICBzaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzbG90IG51bWJlciBvZiB0aGUgYmxvY2sgdGhhdCB3YXMgc2lnbmVkXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNsb3Q6IG51bWJlcjtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGtleTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICBtYXRlcmlhbF9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGVuZm9yY2VkOiBib29sZWFuO1xuICAgICAgICAgIGxhc3Rfc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICBsYXN0X3Nsb3Q6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkludmFsaWRCbG9ja1Byb3Bvc2VyU2xvdFRvb0xvd1wiO1xuICAgICAgICAgIHNpZ25pbmdfcm9vdDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgc2xvdDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBlbmZvcmNlZDogYm9vbGVhbjtcbiAgICAgICAgICBsYXN0X3NpZ25pbmdfcm9vdDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgbGFzdF90YXJnZXRfZXBvY2g6IG51bWJlcjtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMkludmFsaWRBdHRlc3RhdGlvblNvdXJjZUVwb2NoVG9vTG93XCI7XG4gICAgICAgICAgc2lnbmluZ19yb290OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEZvcm1hdDogaW50NjQgKi9cbiAgICAgICAgICBzb3VyY2VfZXBvY2g6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgZW5mb3JjZWQ6IGJvb2xlYW47XG4gICAgICAgICAgbGFzdF9zaWduaW5nX3Jvb3Q6IHN0cmluZztcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIGxhc3RfdGFyZ2V0X2Vwb2NoOiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIkV0aDJJbnZhbGlkQXR0ZXN0YXRpb25UYXJnZXRFcG9jaFRvb0xvd1wiO1xuICAgICAgICAgIHNpZ25pbmdfcm9vdDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDY0ICovXG4gICAgICAgICAgdGFyZ2V0X2Vwb2NoOiBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDMyICovXG4gICAgICAgICAgZGFpbHlfdW5zdGFrZV9jb3VudDogbnVtYmVyO1xuICAgICAgICAgIGtleV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiRXRoMlVuc3Rha2VcIjtcbiAgICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgICAgIHZhbGlkYXRvcl9pbmRleDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBkYXRlOiB1bmtub3duO1xuICAgICAgICAgIC8qKiBGb3JtYXQ6IGludDMyICovXG4gICAgICAgICAgbWF4OiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIkV0aDJFeGNlZWRlZE1heFVuc3Rha2VcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgaWRzICovXG4gICAgICAgICAga2V5X2lkczogc3RyaW5nW107XG4gICAgICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiS2V5Q3JlYXRlZFwiO1xuICAgICAgICAgIG93bmVyX2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBhcHByb3ZlZF93aXRoX21mYV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl07XG4gICAgICAgICAgbWZhX3JlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIk1mYUFwcHJvdmVkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIG1mYV9yZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJNZmFSZWplY3RlZFwiO1xuICAgICAgICAgIHJlamVjdGVkX2J5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIHJlamVjdGVkX21mYV9pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgICAgIHJlamVjdGVkX3dpdGhfbWZhX3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgY2hhbmdlZF9ieTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgcG9saWN5ICovXG4gICAgICAgICAgbmV3X3BvbGljeTogdW5rbm93bltdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJQb2xpY3lDaGFuZ2VkXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQ2hhaW4gaWQgKi9cbiAgICAgICAgICBjaGFpbl9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IHJlcXVlc3QgKi9cbiAgICAgICAgICBjdXJyZW50X3N0YXRlOiB1bmtub3duO1xuICAgICAgICAgIGtleV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzdGF0ZSBvZiB0aGUgbGFzdCBzaWduZWQgbWVzc2FnZSAqL1xuICAgICAgICAgIGxhc3Rfc3RhdGU6IHVua25vd247XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlRlbmRlcm1pbnRDb25jdXJyZW50U2lnbmluZ1wiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBpbnZpdGVkIHVzZXIgKi9cbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJJbnZpdGF0aW9uQ3JlYXRlZFwiO1xuICAgICAgICAgIHJvbGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYWRkcmVzcyB3aG9zZSBpbnZpdGF0aW9uIHdhcyBjYW5jZWxlZCAqL1xuICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIkludml0YXRpb25DYW5jZWxlZFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBrZXlfaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgb3JnX2V2ZW50OiBcIlVzZXJFeHBvcnRJbml0XCI7XG4gICAgICAgICAgdmFsaWRfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAga2V5X2lkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG9yZ19ldmVudDogXCJVc2VyRXhwb3J0Q29tcGxldGVcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgZXJyb3IgZnJvbSB0aGUgcG9saWN5IGVuZ2luZSAod2hlbiByZXNwb25zZSBpcyBlcXVhbCB0byAnRXJyb3InKSAqL1xuICAgICAgICAgIGVycm9yPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICBrZXlfaWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBvcmdfZXZlbnQ6IFwiV2FzbVBvbGljeUV4ZWN1dGVkXCI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBQb2xpY3kgbmFtZSBvciBpZCAqL1xuICAgICAgICAgIHBvbGljeTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gUG9saWN5IGhhc2ggKi9cbiAgICAgICAgICBwb2xpY3lfaGFzaDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlYXNvbiBmb3IgdGhlIGRlbmlhbCAod2hlbiByZXNwb25zZSBpcyBlcXVhbCB0byAnRGVueScpICovXG4gICAgICAgICAgcmVhc29uPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXV0by1nZW5lcmF0ZWQgZGlzY3JpbWluYW50IGVudW0gdmFyaWFudHNcbiAgICAgICAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJlc3BvbnNlOiBcIkFsbG93XCIgfCBcIkRlbnlcIiB8IFwiRXJyb3JcIjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNvdXJjZSBvZiBhIHBvbGljeSBleGVjdXRpb24sIGkuZS4gdGhlIHJlYXNvbiBpdCB3YXMgZXhlY3V0ZWQuXG4gICAgICAgICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzb3VyY2U6IFwiU2lnblJlcXVlc3RcIiB8IFwiVXNlckludm9jYXRpb25cIjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFBvbGljeSBlcnJvciBvdXRwdXQgKi9cbiAgICAgICAgICBzdGRlcnI6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFBvbGljeSBzdGFuZGFyZCBvdXRwdXQgKi9cbiAgICAgICAgICBzdGRvdXQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXV0by1nZW5lcmF0ZWQgZGlzY3JpbWluYW50IGVudW0gdmFyaWFudHNcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE9yZ0V2ZW50RGlzY3JpbWluYW50czpcbiAgICAgIHwgXCJCaWxsaW5nXCJcbiAgICAgIHwgXCJSZXNwb25zZVwiXG4gICAgICB8IFwiT2lkY0F1dGhcIlxuICAgICAgfCBcIlNpZ25lZFwiXG4gICAgICB8IFwiQmFieWxvbkVvdHNDb25jdXJyZW50U2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCJcbiAgICAgIHwgXCJFdGgySW52YWxpZEJsb2NrUHJvcG9zZXJTbG90VG9vTG93XCJcbiAgICAgIHwgXCJFdGgySW52YWxpZEF0dGVzdGF0aW9uU291cmNlRXBvY2hUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJJbnZhbGlkQXR0ZXN0YXRpb25UYXJnZXRFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMlVuc3Rha2VcIlxuICAgICAgfCBcIkV0aDJFeGNlZWRlZE1heFVuc3Rha2VcIlxuICAgICAgfCBcIktleUNyZWF0ZWRcIlxuICAgICAgfCBcIk1mYUFwcHJvdmVkXCJcbiAgICAgIHwgXCJNZmFSZWplY3RlZFwiXG4gICAgICB8IFwiUG9saWN5Q2hhbmdlZFwiXG4gICAgICB8IFwiVGVuZGVybWludENvbmN1cnJlbnRTaWduaW5nXCJcbiAgICAgIHwgXCJJbnZpdGF0aW9uQ3JlYXRlZFwiXG4gICAgICB8IFwiSW52aXRhdGlvbkNhbmNlbGVkXCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0SW5pdFwiXG4gICAgICB8IFwiVXNlckV4cG9ydENvbXBsZXRlXCJcbiAgICAgIHwgXCJXYXNtUG9saWN5RXhlY3V0ZWRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEZpbHRlciBmb3Igb3JnIGV2ZW50cyAqL1xuICAgIE9yZ0V2ZW50RmlsdGVyOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgXCJBbGxcIixcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWNjZXB0cyBhbGwgb3JnIGV2ZW50cyBvdGhlciB0aGFuIHRoZSBvbmVzIGxpc3RlZCAqL1xuICAgICAgICAgIEFsbEV4Y2VwdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdFdmVudERpc2NyaW1pbmFudHNcIl1bXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT25seSBhY2NlcHRzIG9yZyBldmVudHMgdGhhdCBhcmUgb25lIG9mIHRoZSBsaXN0ZWQgZXZlbnRzICovXG4gICAgICAgICAgT25lT2Y6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnRXZlbnREaXNjcmltaW5hbnRzXCJdW107XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9yZy1leHBvcnQgY2lwaGVydGV4dCByZXRyaWV2ZWQgdmlhIHRoZSBvcmctZXhwb3J0IEFQSS4gKi9cbiAgICBPcmdFeHBvcnRSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGJhc2U2NC1lbmNvZGVkIGV4cG9ydCBjaXBoZXJ0ZXh0LiAqL1xuICAgICAgY2lwaGVydGV4dDogc3RyaW5nO1xuICAgIH07XG4gICAgT3JnSW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1aXJlbWVudHNcIl0gJlxuICAgICAgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAgIGFjY2Vzc19tb2RlbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2Nlc3NNb2RlbFwiXTtcbiAgICAgICAgY3VzdG9tX2NoYWlucz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5zRGF0YVwiXSB8IG51bGw7XG4gICAgICAgIGRlZmF1bHRfaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl07XG4gICAgICAgIGVtYWlsX3ByZWZlcmVuY2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFByZWZlcmVuY2VzXCJdO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZW4gZmFsc2UsIGFsbCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgaW52b2x2aW5nIGtleXMgaW4gdGhpcyBvcmcgYXJlIGRpc2FibGVkLiAqL1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBleHRfZGF0YT86XG4gICAgICAgICAgfCAoe1xuICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUGVyIGFsaWVuIHVzZXIga2V5IGNvdW50IHRocmVzaG9sZCwgd2hpY2gsIG9uY2UgZXhjZWVkZWQsIGRpc2FsbG93cyBmdXJ0aGVyIGtleSBjcmVhdGlvbiBieSBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAgICAgICAgICAgICAqIEluIG90aGVyIHdvcmRzLCBvcmcgYWRtaW5zIGNhbiBzdGlsbCBhc3NpZ24gdW5saW1pdGVkIG51bWJlciBvZiBrZXlzIHRvIHRoZWlyIGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgICB9ICYge1xuICAgICAgICAgICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgICAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPilcbiAgICAgICAgICB8IG51bGw7XG4gICAgICAgIGhpc3RvcmljYWxfZGF0YV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIaXN0b3JpY2FsRGF0YUNvbmZpZ3VyYXRpb25cIl07XG4gICAgICAgIGlkcF9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZHBDb25maWdcIl07XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZDogdGhpcyBmaWVsZCBzaG91bGQgYmUgaWdub3JlZC4gKi9cbiAgICAgICAga2V5X2ltcG9ydF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyB1bml2ZXJzYWxseSB1bmlxdWUga2V5LXdyYXBwaW5nLWtleSBpZGVudGlmaWVyLlxuICAgICAgICAgKiBUaGlzIHZhbHVlIGlzIHJlcXVpcmVkIHdoZW4gc2V0dGluZyB1cCBrZXkgZXhwb3J0LlxuICAgICAgICAgKiBAZXhhbXBsZSBtcmstZmNlMDk1MjVlODE1ODdkMjM1MjBmMTFlMDdlMmU5ZDlcbiAgICAgICAgICovXG4gICAgICAgIGt3a19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIERhdGUvdGltZSAoaW4gVVRDKSB3aGVuIGxhc3QgJ3Vuc3Rha2UnIHdhcyBwZXJmb3JtZWQuIFVuaXggZXBvY2ggaWYgbm9uZS5cbiAgICAgICAgICogQGV4YW1wbGUgVE9ET1xuICAgICAgICAgKi9cbiAgICAgICAgbGFzdF91bnN0YWtlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSAndW5zdGFrZScgY2FsbHMgaGFwcGVuZWQgb24gdGhlIGRheSB3aGVuIGBsYXN0X3Vuc3Rha2VgIHdhcyBwZXJmb3JtZWQuXG4gICAgICAgICAqL1xuICAgICAgICBsYXN0X3Vuc3Rha2VfZGF5X2NvdW50OiBudW1iZXI7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciBtZXRyaWNzIGFyZSBjb2xsZWN0ZWQgZm9yIHRoaXMgb3JnICovXG4gICAgICAgIG1ldHJpY3NfZW5hYmxlZD86IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmdcbiAgICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAgICovXG4gICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBub3RpZmljYXRpb24gZW5kcG9pbnRzLCB3aGljaCBhcmUgSFRUUFMgVVJMcyBhcmUgbm90aWZpZWQgYWJvdXQgYVxuICAgICAgICAgKiBjb25maWd1cmFibGUgc2V0IG9mIGV2ZW50cyBpbiBhbiBvcmdhbml6YXRpb24uIEZvciBlYWNoIGV2ZW50LCBDdWJlU2lnbmVyIHNlbmRzIGEgUE9TVFxuICAgICAgICAgKiByZXF1ZXN0IHdpdGggYSBKU09OLWZvcm1hdHRlZCBib2R5IHRoYXQgY29udGFpbnMgdGhlIGV2ZW50IGRldGFpbHMuXG4gICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICogICB7XG4gICAgICAgICAqICAgICBcImFyblwiOiBcImFybjphd3M6c25zOnVzLWVhc3QtMTowMTIzNDU2Nzg5MDE6T3JnRXZlbnRzVG9waWM6MTIzNDU2NzgtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxXCIsXG4gICAgICAgICAqICAgICBcImNvbmZpZ1wiOiB7XG4gICAgICAgICAqICAgICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDFcIlxuICAgICAgICAgKiAgICAgfSxcbiAgICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiQ29uZmlybWVkXCJcbiAgICAgICAgICogICB9LFxuICAgICAgICAgKiAgIHtcbiAgICAgICAgICogICAgIFwiYXJuXCI6IFwiYXJuOmF3czpzbnM6dXMtZWFzdC0xOjAxMjM0NTY3ODkwMTpPcmdFdmVudHNUb3BpYzoxMjM0NTY3OC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDJcIixcbiAgICAgICAgICogICAgIFwiY29uZmlnXCI6IHtcbiAgICAgICAgICogICAgICAgXCJmaWx0ZXJcIjoge1xuICAgICAgICAgKiAgICAgICAgIFwiT25lT2ZcIjogW1xuICAgICAgICAgKiAgICAgICAgICAgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiLFxuICAgICAgICAgKiAgICAgICAgICAgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICAgICAqICAgICAgICAgXVxuICAgICAgICAgKiAgICAgICB9LFxuICAgICAgICAgKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQyXCJcbiAgICAgICAgICogICAgIH0sXG4gICAgICAgICAqICAgICBcInN0YXR1c1wiOiBcIlBlbmRpbmdcIlxuICAgICAgICAgKiAgIH1cbiAgICAgICAgICogXVxuICAgICAgICAgKi9cbiAgICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRcIl1bXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgcGFzc2tleV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQYXNza2V5Q29uZmlnXCJdO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE9yZy13aWRlIHBvbGljaWVzIHRoYXQgYXJlIGNoZWNrZWQgYmVmb3JlIGEga2V5IGlzIHVzZWQgZm9yIHNpZ25pbmdcbiAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgKiAgIHtcbiAgICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAgICogICB9XG4gICAgICAgICAqIF1cbiAgICAgICAgICovXG4gICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICBwb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb25cIl07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gR2xvYmFsIHNpZ24gcG9saWN5IHRoYXQgYXBwbGllcyB0byBldmVyeSBzaWduIG9wZXJhdGlvbiAoZXZlcnkga2V5LCBldmVyeSByb2xlKSBpbiB0aGUgb3JnXG4gICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICogICB7XG4gICAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAgICAgKiAgIH1cbiAgICAgICAgICogXVxuICAgICAgICAgKi9cbiAgICAgICAgc2lnbl9wb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCBUT1RQIGZhaWx1cmUgbGltaXQsIGkuZS4sIHRoZSBudW1iZXJcbiAgICAgICAgICogb2YgdGltZXMgYSB1c2VyIGNhbiBwcm92aWRlIGFuIGluY29ycmVjdCBUT1RQIGNvZGUgYmVmb3JlIGJlaW5nIHJhdGUgbGltaXRlZC5cbiAgICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICAgKi9cbiAgICAgICAgdG90cF9mYWlsdXJlX2xpbWl0OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgZGVsYXksIGkuZS4sIHRoZSBtaW5pbXVtXG4gICAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAgICogaXQgbWF5IGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWUgaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2VcbiAgICAgICAgICogb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfZXhwb3J0X2RlbGF5OiBudW1iZXI7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB1c2VyIGV4cG9ydCBpcyBkaXNhYmxlZCAqL1xuICAgICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50XG4gICAgICAgICAqIG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiB0aGUgdXNlci1leHBvcnQgZGVsYXkgaXMgY29tcGxldGVkIGFuZCB3aGVuXG4gICAgICAgICAqIHRoZSB1c2VyIGV4cG9ydCByZXF1ZXN0IGhhcyBleHBpcmVkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWVcbiAgICAgICAgICogaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2Ugb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdzogbnVtYmVyO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIG9mZmljaWFsIHdlYmFwcCBvcmlnaW4gaXMgYXV0b21hdGljYWxseSBhbGxvd2VkICovXG4gICAgICAgIHdlYmFwcF9lbmFibGVkPzogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTdXBwb3J0ZWQgb3JnIG1ldHJpY3MuICovXG4gICAgT3JnTWV0cmljOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIEJpbGxpbmdFdmVudDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaWxsaW5nRGltZW5zaW9uc1wiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIE9pZGNMb2dpbkV2ZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNMb2dpbkRpbWVuc2lvbnNcIl07XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBTaWduRXZlbnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbkRpbWVuc2lvbnNcIl07XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBVc2VyQ291bnQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckNvdW50RGltZW5zaW9uc1wiXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIEtleUNvdW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUNvdW50RGltZW5zaW9uc1wiXTtcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIE9yZ01ldHJpY0RhdGE6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRhdGEgcG9pbnRzLCBvbmUgZm9yIGVhY2ggdGltZSBwZXJpb2QgKHRpbWUgcGVyaW9kcyBmb3Igd2hpY2ggdGhlIHZhbHVlIGlzIDAgYXJlIG9taXR0ZWQpLiAqL1xuICAgICAgZGF0YToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICB9O1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXV0by1nZW5lcmF0ZWQgZGlzY3JpbWluYW50IGVudW0gdmFyaWFudHNcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE9yZ01ldHJpY0Rpc2NyaW1pbmFudHM6XG4gICAgICB8IFwiQmlsbGluZ0V2ZW50XCJcbiAgICAgIHwgXCJPaWRjTG9naW5FdmVudFwiXG4gICAgICB8IFwiU2lnbkV2ZW50XCJcbiAgICAgIHwgXCJVc2VyQ291bnRcIlxuICAgICAgfCBcIktleUNvdW50XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEF2YWlsYWJsZSBzdGF0aXN0aWNzIHRvIGNvbXB1dGVcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE9yZ01ldHJpY1N0YXQ6IFwiU3VtXCIgfCBcIkF2ZXJhZ2VcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9TIGluZm9ybWF0aW9uIHNldCBpbiBbYENsaWVudFNlc3Npb25NZXRhZGF0YWBdIGFuZCByZWZsZWN0ZWQgaW4gW2BTZXNzaW9uTWV0YWRhdGFgXSAqL1xuICAgIE9zSW5mbzoge1xuICAgICAgLyoqIEBleGFtcGxlIGFybTY0ICovXG4gICAgICBhcmNoaXRlY3R1cmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBleGFtcGxlIE1hYyBPUyAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGV4YW1wbGUgMTQuNS4wICovXG4gICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZXhhbXBsZSA2NC1iaXQgKi9cbiAgICAgIHdvcmRfc2l6ZT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJvY2tldCBxdWVyeSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBwYWdlIGZyb20gd2hpY2ggdG8gc3RhcnQgYSBwYWdpbmF0ZWQgcXVlcnkuXG4gICAgICpcbiAgICAgKiBNVVNUIGJlIG5hbWVkIGA8cGFnZT5gIGluIHJvY2tldCB1cmwgc3BlYyBzbyB0aGF0ICdzZXJkZShyZW5hbWUgPSBcInBhZ2UuKlwiKScgYmVsb3cgY29udGludWVzIHRvIHdvcmtcbiAgICAgKi9cbiAgICBQYWdlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgKi9cbiAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAqL1xuICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRBdWRpdExvZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEF1ZGl0IGxvZyBlbnRyaWVzICovXG4gICAgICBlbnRyaWVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1ZGl0TG9nRW50cnlcIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHVzZXJzIGluIHRoZSBvcmcgKi9cbiAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ0luZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdEJ1Y2tldHNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYnVja2V0cyBpbiB0aGUgb3JnYW5pemF0aW9uLiAqL1xuICAgICAgYnVja2V0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdWNrZXRJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RDb250YWN0c1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiBjb250YWN0cyBpbiB0aGUgb3JnYW5pemF0aW9uLCBtYXRjaGluZyBhbnkgcHJvdmlkZWQgcXVlcmllcy4gKi9cbiAgICAgIGNvbnRhY3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RJbmZvUmVzcG9uc2VcIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdEhpc3RvcmljYWxUeFJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhpc3RvcmljYWwgdHJhbnNhY3Rpb25zIHNpZ25lZCB3aXRoIHRoZSByZXF1ZXN0ZWQga2V5LCBzb3J0ZWQgZnJvbSBtb3N0IHRvIGxlYXN0IHJlY2VudC4gKi9cbiAgICAgIHR4czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIaXN0b3JpY2FsVHhcIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdEludml0YXRpb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gUGVuZGluZyBpbnZpdGF0aW9ucyAqL1xuICAgICAgaW52aXRhdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRhdGlvbkluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdEtleVJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIHRoZSBrZXkgaXMgaW4gKi9cbiAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZToge1xuICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RQb2xpY2llc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPcmcncyBuYW1lZCBwb2xpY2llcy4gKi9cbiAgICAgIHBvbGljaWVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFJvbGVLZXlzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIGtleXMgaW4gYSByb2xlICovXG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCB1c2VycyBpbiBhIHJvbGUgKi9cbiAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24uICovXG4gICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRQb2xpY3lMb2dzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBleGVjdXRpb24gbG9ncyAqL1xuICAgICAgbG9nczoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICB9W107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZFF1ZXJ5TWV0cmljc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFkdmlzb3J5IG1lc3NhZ2VzIChlLmcuLCBpZiBtYXggbnVtYmVyIG9mIHJlc3VsdHMgaXMgcmVhY2hlZCkuICovXG4gICAgICBtZXNzYWdlcz86IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBlcmlvZCBmb3Igd2hpY2ggdGhlIHN0YXRpc3RpYyBpcyBjb21wdXRlZCwgaWYgYW55IChub3QgYWxsIG1ldHJpY3Mgc3VwcG9ydCBzcGxpdHRpbmcgdGhlIHJlcXVlc3RlZCB0aW1lIHJhbmdlIGludG8gYmlucykuXG4gICAgICAgKiBJZiBzZXQsIGVxdWFscyB0byB0aGUgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCByb3VuZGVkIHVwIHRvIHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIDYwLlxuICAgICAgICovXG4gICAgICBwZXJpb2Q/OiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbWUgbWV0cmljcyBjYW4gb3B0aW9uYWxseSByZXR1cm4gdGhlIHJhdyBkYXRhLCB3aGVuIHJlcXVlc3RlZC4gKi9cbiAgICAgIHJhd19kYXRhOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgIH1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQ29tcHV0ZWQgZGF0YSBwb2ludHMuICovXG4gICAgICByZXN1bHRzOiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRhdGEgcG9pbnRzLCBvbmUgZm9yIGVhY2ggdGltZSBwZXJpb2QgKHRpbWUgcGVyaW9kcyBmb3Igd2hpY2ggdGhlIHZhbHVlIGlzIDAgYXJlIG9taXR0ZWQpLiAqL1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgICB9O1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtZXRyaWMgZGltZW5zaW9ucy4gKi9cbiAgICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH1bXTtcbiAgICAgIHN0YXQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY1N0YXRcIl0gfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlOiB7XG4gICAgICBleHBvcnRfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgUGFzc2tleUFzc2VydEFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIFBhc3NrZXlBc3NlcnRDaGFsbGVuZ2U6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9yZy1sZXZlbCBwYXNza2V5IGNvbmZpZ3VyYXRpb24gKi9cbiAgICBQYXNza2V5Q29uZmlnOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVuYWJsZSBwYXNza2V5IGxvZ2luIGZvciBjZXJ0YWluIHVzZXIgcm9sZXMgKGRpc2FibGVkIGZvciBldmVyeW9uZSBieSBkZWZhdWx0KSAqL1xuICAgICAgdXNlcnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXTtcbiAgICB9O1xuICAgIFBhc3N3b3JkUmVzZXRDb25maXJtUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHBhc3N3b3JkIHRvIHNldC4gKi9cbiAgICAgIG5ld19wYXNzd29yZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSW52aXRhdGlvbiB0b2tlbiwgY29uc3RydWN0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGUgXCJwYXJ0aWFsIHRva2VuXCJcbiAgICAgICAqIChpLmUuLCBge2hlYWRlcn0ue3BheWxvYWR9LmApIHJldHVybmVkIGJ5IHRoZSBgaWRwX3Bhc3N3b3JkX3Jlc2V0X3JlcXVlc3RgIGVuZHBvaW50XG4gICAgICAgKiBhbmQgdGhlIHNpZ25hdHVyZSBzZW50IHRvIHRoZSB1c2VyJ3MgZW1haWwuXG4gICAgICAgKi9cbiAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXF1ZXN0IGJvZHkgZm9yIHRoZSBpZHAgcGFzc3dvcmQgcmVzZXQgZW5kcG9pbnQgKi9cbiAgICBQYXNzd29yZFJlc2V0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIHVzZXIgcmVxdWVzdGluZyB0byByZXNldCB0aGVpciBwYXNzd29yZFxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRXh0ZW5kZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gZXhpc3RpbmcgTU1JIHJlcXVlc3QuICovXG4gICAgUGVuZGluZ01lc3NhZ2VJbmZvOiB7XG4gICAgICBtZXRhZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNbWlNZXRhZGF0YVwiXTtcbiAgICAgIHNpZ25lZE1lc3NhZ2U/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lZE1lc3NhZ2VcIl0gfCBudWxsO1xuICAgICAgdHJhbnNhY3Rpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRyYW5zYWN0aW9uQW5kU3RhdHVzXCJdIHwgbnVsbDtcbiAgICB9ICYge1xuICAgICAgY3JlYXRlZF9hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHBlbmRpbmcgbWVzc2FnZSAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkZW50aXR5IChhIHVzZXIgb3IgYSByb2xlIGlkKSB3aGljaCBjcmVhdGVkIHRoaXMgbWVzc2FnZS4gKi9cbiAgICAgIGlkZW50aXR5OiBzdHJpbmc7XG4gICAgICBtZXNzYWdlX2VpcDE5MT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIGFkZHJlc3MsIGhleC1lbmNvZGVkLCB3aXRoIGxlYWRpbmcgJzB4J1xuICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICovXG4gICAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCAoaW5jbHVkaW5nIGEgJzB4JyBwcmVmaXgpIG1lc3NhZ2UgdG8gc2lnbi4gKi9cbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBtZXNzYWdlX2VpcDcxMj86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIGFkZHJlc3MsIGhleC1lbmNvZGVkLCB3aXRoIGxlYWRpbmcgJzB4J1xuICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICovXG4gICAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgICAgZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZERhdGFcIl07XG4gICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICB2ZXJzaW9uOiBcInYzXCIgfCBcInY0XCI7XG4gICAgICB9IHwgbnVsbDtcbiAgICAgIG1lc3NhZ2VfdHg/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkVHJhbnNhY3Rpb25cIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCBhbiBleGlzdGluZyBNTUkgbWVzc2FnZSwgaW5jbHVkaW5nIHRoZSBzaWduYXR1cmUuICovXG4gICAgUGVuZGluZ01lc3NhZ2VTaWduUmVzcG9uc2U6ICh7XG4gICAgICBtZXRhZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNbWlNZXRhZGF0YVwiXTtcbiAgICAgIHNpZ25lZE1lc3NhZ2U/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lZE1lc3NhZ2VcIl0gfCBudWxsO1xuICAgICAgdHJhbnNhY3Rpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRyYW5zYWN0aW9uQW5kU3RhdHVzXCJdIHwgbnVsbDtcbiAgICB9ICYge1xuICAgICAgY3JlYXRlZF9hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHBlbmRpbmcgbWVzc2FnZSAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkZW50aXR5IChhIHVzZXIgb3IgYSByb2xlIGlkKSB3aGljaCBjcmVhdGVkIHRoaXMgbWVzc2FnZS4gKi9cbiAgICAgIGlkZW50aXR5OiBzdHJpbmc7XG4gICAgICBtZXNzYWdlX2VpcDE5MT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIGFkZHJlc3MsIGhleC1lbmNvZGVkLCB3aXRoIGxlYWRpbmcgJzB4J1xuICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICovXG4gICAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCAoaW5jbHVkaW5nIGEgJzB4JyBwcmVmaXgpIG1lc3NhZ2UgdG8gc2lnbi4gKi9cbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgfSB8IG51bGw7XG4gICAgICBtZXNzYWdlX2VpcDcxMj86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIGFkZHJlc3MsIGhleC1lbmNvZGVkLCB3aXRoIGxlYWRpbmcgJzB4J1xuICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICovXG4gICAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgICAgZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZERhdGFcIl07XG4gICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICB2ZXJzaW9uOiBcInYzXCIgfCBcInY0XCI7XG4gICAgICB9IHwgbnVsbDtcbiAgICAgIG1lc3NhZ2VfdHg/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkVHJhbnNhY3Rpb25cIl0gfCBudWxsO1xuICAgIH0pICZcbiAgICAgIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sbGVkIGFjdGlvbnMgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIG9uIGEgbmFtZWQgcG9saWN5LlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUG9saWN5QWN0aW9uOlxuICAgICAgfCBcInJlYWQ6KlwiXG4gICAgICB8IFwicmVhZFwiXG4gICAgICB8IFwicmVhZDpwb2xpY3lcIlxuICAgICAgfCBcInJlYWQ6bG9nc1wiXG4gICAgICB8IFwidXBkYXRlOipcIlxuICAgICAgfCBcInVwZGF0ZVwiXG4gICAgICB8IFwidXBkYXRlOm5hbWVcIlxuICAgICAgfCBcInVwZGF0ZTpydWxlc1wiXG4gICAgICB8IFwidXBkYXRlOm1ldGFkYXRhXCJcbiAgICAgIHwgXCJ1cGRhdGU6ZWRpdFBvbGljeVwiXG4gICAgICB8IFwidXBkYXRlOm93bmVyXCJcbiAgICAgIHwgXCJ1cGRhdGU6YWNsXCJcbiAgICAgIHwgXCJkZWxldGVcIlxuICAgICAgfCBcImF0dGFjaFwiXG4gICAgICB8IFwic2lnblwiXG4gICAgICB8IFwiaW52b2tlXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgZm9yIGF0dGFjaGluZyBhIG5hbWVkIHBvbGljeSB0byBhIGtleSwgcm9sZSwgb3Iga2V5IGluIHJvbGUuICovXG4gICAgUG9saWN5QXR0YWNoZWRUb0lkOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSBpbiB0aGUgcm9sZSB0aGUgcG9saWN5IHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgcm9sZSB0aGUga2V5IGlzIGluLlxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5IHRoZSBwb2xpY3kgc2hvdWxkIGJlIGF0dGFjaGVkIHRvLlxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHJvbGUgdGhlIHBvbGljeSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gICAgICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBvcmcgdGhlIHBvbGljeSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gICAgICAgICAgICogQGV4YW1wbGUgT3JnI2IwMTU2YWJkLTUzYmQtNDA0My04ZTU1LTU3ZjdhZjk1MTJkNVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIE9yZy1sZXZlbCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHdvcmtpbmdzIG9mIHRoZSBQb2xpY3kgRW5naW5lLiAqL1xuICAgIFBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb246IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93ZWQgZG9tYWlucyBmb3IgSFRUUCByZXF1ZXN0c1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcImN1YmlzdC5kZXY6NDQzXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgYWxsb3dlZF9odHRwX2F1dGhvcml0aWVzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1heGltdW0gbnVtYmVyIG9mIHBvbGljeSBzZWNyZXRzIGZvciB0aGUgT3JnLiAqL1xuICAgICAgb3JnX3NlY3JldHNfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgUG9saWN5RXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1UeERlcG9zaXRFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUG9saWN5RXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJJbmFwcGxpY2FibGVcIlxuICAgICAgfCBcIlN1aVR4UmVjZWl2ZXJzRGlzYWxsb3dlZFRyYW5zYWN0aW9uS2luZFwiXG4gICAgICB8IFwiU3VpVHhSZWNlaXZlcnNEaXNhbGxvd2VkVHJhbnNmZXJBZGRyZXNzXCJcbiAgICAgIHwgXCJTdWlUeFJlY2VpdmVyc0Rpc2FsbG93ZWRDb21tYW5kXCJcbiAgICAgIHwgXCJCdGNUeERpc2FsbG93ZWRPdXRwdXRzXCJcbiAgICAgIHwgXCJCdGNTaWduYXR1cmVFeGNlZWRlZFZhbHVlXCJcbiAgICAgIHwgXCJCdGNWYWx1ZU92ZXJmbG93XCJcbiAgICAgIHwgXCJCdGNTaWdoYXNoVHlwZURpc2FsbG93ZWRcIlxuICAgICAgfCBcIkV2bVR4UmVjZWl2ZXJNaXNtYXRjaFwiXG4gICAgICB8IFwiRXZtVHhDaGFpbklkTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4U2VuZGVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4RXhjZWVkZWRWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhFeGNlZWRlZEdhc0Nvc3RcIlxuICAgICAgfCBcIkV2bVR4R2FzQ29zdFVuZGVmaW5lZFwiXG4gICAgICB8IFwiRXZtRGF0YURpc2FsbG93ZWRcIlxuICAgICAgfCBcIkVyYzIwRGF0YUludmFsaWRcIlxuICAgICAgfCBcIkV2bUNvbnRyYWN0QWRkcmVzc1VuZGVmaW5lZFwiXG4gICAgICB8IFwiRXZtQ29udHJhY3RDaGFpbklkVW5kZWZpbmVkXCJcbiAgICAgIHwgXCJFdm1EYXRhTm90RGVmaW5lZFwiXG4gICAgICB8IFwiRXZtRGF0YUludmFsaWRcIlxuICAgICAgfCBcIkV2bUNvbnRyYWN0Tm90SW5BbGxvd2xpc3RcIlxuICAgICAgfCBcIkVyYzIwRXhjZWVkZWRUcmFuc2ZlckxpbWl0XCJcbiAgICAgIHwgXCJFcmMyMFJlY2VpdmVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkVyYzIwRXhjZWVkZWRBcHByb3ZlTGltaXRcIlxuICAgICAgfCBcIkVyYzIwU3BlbmRlck1pc21hdGNoXCJcbiAgICAgIHwgXCJFdm1GdW5jdGlvbk5vdEluQWxsb3dsaXN0XCJcbiAgICAgIHwgXCJFdm1GdW5jdGlvbkNhbGxJbnZhbGlkXCJcbiAgICAgIHwgXCJFdm1GdW5jdGlvbkNhbGxEaXNhbGxvd2VkQXJnXCJcbiAgICAgIHwgXCJQb2xpY3lEaXNqdW5jdGlvbkVycm9yXCJcbiAgICAgIHwgXCJQb2xpY3lOZWdhdGlvbkVycm9yXCJcbiAgICAgIHwgXCJFdGgyRXhjZWVkZWRNYXhVbnN0YWtlXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudFVuc3Rha2luZ1wiXG4gICAgICB8IFwiTm90SW5JcHY0QWxsb3dsaXN0XCJcbiAgICAgIHwgXCJOb3RJbk9yaWdpbkFsbG93bGlzdFwiXG4gICAgICB8IFwiTm90SW5PcGVyYXRpb25BbGxvd2xpc3RcIlxuICAgICAgfCBcIkludmFsaWRTb3VyY2VJcFwiXG4gICAgICB8IFwiUmF3U2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIkRpZmZpZUhlbGxtYW5FeGNoYW5nZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIkVpcDcxMlNpZ25pbmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJPaWRjU291cmNlTm90QWxsb3dlZFwiXG4gICAgICB8IFwiTm9PaWRjQXV0aFNvdXJjZXNEZWZpbmVkXCJcbiAgICAgIHwgXCJBZGRLZXlUb1JvbGVEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJLZXlzQWxyZWFkeUluUm9sZVwiXG4gICAgICB8IFwiS2V5SW5NdWx0aXBsZVJvbGVzXCJcbiAgICAgIHwgXCJLZXlBY2Nlc3NFcnJvclwiXG4gICAgICB8IFwiUmVxdWlyZVJvbGVTZXNzaW9uS2V5QWNjZXNzRXJyb3JcIlxuICAgICAgfCBcIkJ0Y01lc3NhZ2VTaWduaW5nTm90QWxsb3dlZFwiXG4gICAgICB8IFwiRWlwMTkxU2lnbmluZ05vdEFsbG93ZWRcIlxuICAgICAgfCBcIlRhcHJvb3RTaWduaW5nRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiU2Vnd2l0U2lnbmluZ0Rpc2FsbG93ZWRcIlxuICAgICAgfCBcIlBzYnRTaWduaW5nRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdEaXNhbGxvd2VkXCJcbiAgICAgIHwgXCJUaW1lTG9ja2VkXCJcbiAgICAgIHwgXCJCYWJ5bG9uU3Rha2luZ05ldHdvcmtcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nUGFyYW1zVmVyc2lvblwiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdFeHBsaWNpdFBhcmFtc1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdTdGFrZXJQa1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdGaW5hbGl0eVByb3ZpZGVyUGtcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nTG9ja1RpbWVcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nVmFsdWVcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nQ2hhbmdlQWRkcmVzc1wiXG4gICAgICB8IFwiQmFieWxvblN0YWtpbmdGZWVcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nV2l0aGRyYXdhbEFkZHJlc3NcIlxuICAgICAgfCBcIkJhYnlsb25TdGFraW5nQmJuQWRkcmVzc1wiXG4gICAgICB8IFwiU29sYW5hSW5zdHJ1Y3Rpb25Db3VudExvd1wiXG4gICAgICB8IFwiU29sYW5hSW5zdHJ1Y3Rpb25Db3VudEhpZ2hcIlxuICAgICAgfCBcIlNvbGFuYU5vdEluSW5zdHJ1Y3Rpb25BbGxvd2xpc3RcIlxuICAgICAgfCBcIlNvbGFuYUluc3RydWN0aW9uTWlzbWF0Y2hcIlxuICAgICAgfCBcIldhc21Qb2xpY2llc0Rpc2FibGVkXCJcbiAgICAgIHwgXCJXYXNtUG9saWN5RGVuaWVkXCJcbiAgICAgIHwgXCJXYXNtUG9saWN5RmFpbGVkXCJcbiAgICAgIHwgXCJXZWJob29rUG9saWNpZXNEaXNhYmxlZFwiXG4gICAgICB8IFwiRGVuaWVkQnlXZWJob29rXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcG9saWN5LiAqL1xuICAgIFBvbGljeUluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoZSBwb2xpY3kuICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgZW50aXRpZXMgKGtleXMsIHJvbGVzLCBldGMuKSB0aGUgcG9saWN5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICAgICAgYXR0YWNoZWRfdG86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5QXR0YWNoZWRUb0lkXCJdW107XG4gICAgICBjcmVhdGVkOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhIGZvciB0aGUgbmFtZWQgcG9saWN5LiAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LiAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgb3duZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgaWQgKi9cbiAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgICAgcG9saWN5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5VHlwZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBydWxlLiAqL1xuICAgICAgcnVsZXM6IHVua25vd25bXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgcnVsZSdzIHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb246IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IGZvciBxdWVyeWluZyBXYXNtIHBvbGljeSBsb2dzLiAqL1xuICAgIFBvbGljeUxvZ3NSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFbmQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvICdub3cnLlxuICAgICAgICovXG4gICAgICBlbmRfdGltZT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFydCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gMjQgaG91cnMgYWdvLlxuICAgICAgICovXG4gICAgICBzdGFydF90aW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kgdG8gZ2V0IHRoZSBsb2dzIGZvci5cbiAgICAgICAqIElmIG9taXR0ZWQsIGFsbCBwb2xpY3kgbG9ncyBhcmUgcmV0cmlldmVkLlxuICAgICAgICovXG4gICAgICB2ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3lSZXN1bHRSZXNwb25zZSBpcyBhIHdyYXBwZXIgb24gUG9saWN5UmVzdWx0IHdpdGggdHdvIGltcG9ydGFudFxuICAgICAqIHByb3BlcnRpZXM6XG4gICAgICogKiBkZXJpdmVzIE9rVG9Mb2dSZXNwb25zZSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgcm9ja2V0IGhhbmRsZXIuXG4gICAgICogKiBkZXJpdmVzIFRvU2NoZW1hIGFuZCBUb1Jlc3BvbnNlLCB3aXRoIHRoZSBgdmFsYCBmaWVsZCB3aXRoIHZhbHVlX3R5cGVcbiAgICAgKiBPYmplY3QsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBwcm92aWRlIGFsbCBvZiB0aGUgT3BlbkFQSSB0eXBlXG4gICAgICogZGVzY3JpcHRpb25zIG9mIGEgUG9saWN5UmVzdWx0LlxuICAgICAqXG4gICAgICogVGhlIFBvbGljeVJlc3VsdCBpbmNsdWRlcyBlbnVtcyBhbmQgb3RoZXIgc3RhbmRhcmQgdHlwZXMgKGUuZy5cbiAgICAgKiBzdGQ6OnRpbWU6OkludGVydmFsKSB3aGljaCBhcmUgbm9udHJpdmlhbCB0byByZXByZXNlbnQgaW4gT3BlbkFQSS4gU2luY2VcbiAgICAgKiB0aGlzIGVuZHBvaW50IGlzIGp1c3QgZm9yIHRlc3RpbmcsIHdlIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IGhvdyBhY2N1cmF0ZVxuICAgICAqIHRoZSBzY2hlbWEgaXMsIGFuZCBjYW4gbGVhbiBvbiBzZXJkZV9qc29uIHdoZW4gZGVjb2RpbmcgdGhpcyByZXNwb25zZSB0byBhXG4gICAgICogUG9saWN5UmVzdWx0IGluIGEgY2xpZW50LiBOb3RlIHRoYXQgdGhlcmUgaXMgYSBidWcgaW4gdXRvaXBhIHdoZXJlIHRoZVxuICAgICAqIHZhbHVlX3R5cGUgYW5ub3RhdGlvbiB3aWxsIG5vdCB3b3JrIGZvciBhIHR1cGxlLXN0cnVjdCwgb25seSBhIHN0cnVjdCB3aXRoXG4gICAgICogZmllbGRzLlxuICAgICAqL1xuICAgIFBvbGljeVJlc3VsdFJlc3BvbnNlOiB7XG4gICAgICB2YWw6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzdHJ1Y3QgY29udGFpbmluZyBhbGwgbm9uLXNlY3JldCBpbmZvcm1hdGlvbiBhYm91dCBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICBQb2xpY3lTZWNyZXRzSW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXByZWNhdGVkXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5hbWVzIG9mIHRoZSBzZWNyZXRzLlxuICAgICAgICovXG4gICAgICBuYW1lczogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICAgIHNlY3JldHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2VjcmV0SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGEgW05hbWVkUG9saWN5XS5cbiAgICAgKlxuICAgICAqIFRoZSB0eXBlIG9mIGEgcG9saWN5IGlzIHNldCBhdCBjcmVhdGlvbiB0aW1lLCBhbmQgaXMgdXNlZCB0byBvZmZlciBndWFyYW50ZWVzXG4gICAgICogYWJvdXQgdGhlIGN1cnJlbnQgYW5kIGFsbCBmdXR1cmUgdmVyc2lvbnMgb2YgYSBbTmFtZWRQb2xpY3ldLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUG9saWN5VHlwZTogXCJLZXlcIiB8IFwiUm9sZVwiIHwgXCJXYXNtXCI7XG4gICAgUHJlY29uZGl0aW9uRXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZWNvbmRpdGlvbkVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUHJlY29uZGl0aW9uRXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJGYWlsT25NZmFSZXF1aXJlZFwiXG4gICAgICB8IFwiS2V5UmVnaW9uTG9ja2VkXCJcbiAgICAgIHwgXCJLZXlSZWdpb25DaGFuZ2VkUmVjZW50bHlcIlxuICAgICAgfCBcIk1mYVJlZ2lvbkxvY2tlZFwiXG4gICAgICB8IFwiRXRoMlByb3Bvc2VyU2xvdFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkF0dGVzdGF0aW9uU291cmNlRXBvY2hUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJBdHRlc3RhdGlvblRhcmdldEVwb2NoVG9vTG93XCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMkNvbmN1cnJlbnRBdHRlc3RhdGlvblNpZ25pbmdcIlxuICAgICAgfCBcIkV0aDJNdWx0aURlcG9zaXRUb05vbkdlbmVyYXRlZEtleVwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFVua25vd25Jbml0aWFsRGVwb3NpdFwiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFdpdGhkcmF3YWxBZGRyZXNzTWlzbWF0Y2hcIlxuICAgICAgfCBcIkNvbmN1cnJlbnRTaWduaW5nV2hlblRpbWVMaW1pdFBvbGljeUlzRGVmaW5lZFwiXG4gICAgICB8IFwiQmFieWxvbkVvdHNDb25jdXJyZW50U2lnbmluZ1wiXG4gICAgICB8IFwiVGVuZGVybWludFN0YXRlRXJyb3JcIlxuICAgICAgfCBcIlRlbmRlcm1pbnRDb25jdXJyZW50U2lnbmluZ1wiXG4gICAgICB8IFwiTWZhQXBwcm92YWxzTm90WWV0VmFsaWRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIENvbnRhaW5zIG91dHB1dHMgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zLiAqL1xuICAgIFByZXZPdXRwdXRzOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBgT25lYCB2YXJpYW50IGFsbG93cyBwcm92aXNpb24gb2YgdGhlIHNpbmdsZSBwcmV2aW91cyBvdXRwdXQgbmVlZGVkLiBJdCdzIHVzZWZ1bCxcbiAgICAgICAgICAgKiBmb3IgZXhhbXBsZSwgd2hlbiBtb2RpZmllciBgU0lHSEFTSF9BTllPTkVDQU5QQVlgIGlzIHByb3ZpZGVkLCBvbmx5IHByZXZpb3VzIG91dHB1dFxuICAgICAgICAgICAqIG9mIHRoZSBjdXJyZW50IGlucHV0IGlzIG5lZWRlZC4gVGhlIGZpcnN0IGBpbmRleGAgYXJndW1lbnQgaXMgdGhlIGlucHV0IGluZGV4XG4gICAgICAgICAgICogdGhpcyBvdXRwdXQgaXMgcmVmZXJyaW5nIHRvLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIE9uZToge1xuICAgICAgICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICAgICAgICAgIHR4X291dDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNUeE91dFwiXTtcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gYFNJR0hBU0hfQU5ZT05FQ0FOUEFZYCBpcyBub3QgcHJvdmlkZWQsIG9yIHdoZW4gdGhlIGNhbGxlciBpcyBnaXZpbmcgYWxsXG4gICAgICAgICAgICogcHJldmlvdXMgb3V0cHV0cyBzbyB0aGUgc2FtZSB2YXJpYWJsZSBjYW4gYmUgdXNlZCBmb3IgbXVsdGlwbGUgaW5wdXRzLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIEFsbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNUeE91dFwiXVtdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gc2lnbiBhIFBTQlQgKi9cbiAgICBQc2J0U2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHByb2R1Y2UgYSB2YWxpZCBzaWduYXR1cmUsIGp1c3QgZXZhbHVhdGUgYXR0YWNoZWQgcG9saWNpZXMuICovXG4gICAgICBkcnlfcnVuPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBoZXgtc2VyaWFsaXplZCBQU0JUICh2ZXJzaW9uIDApLCB3aXRoIG9yIHdpdGhvdXQgbGVhZGluZyAweCBwcmVmaXguXG4gICAgICAgKiBUaGlzIFBTQlQgbXVzdCBjb250YWluIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMgYW5kIG91dHB1dHMsIHBsdXMgYWxsXG4gICAgICAgKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gc2lnbiAoZS5nLiwgdGFwcm9vdCBwYXRoIGFuZCBsZWFmIGluZm9ybWF0aW9uKS5cbiAgICAgICAqL1xuICAgICAgcHNidDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiB0cnVlLCB1bmNvbmRpdGlvbmFsbHkgc2lnbiBldmVyeSBpbnB1dCB0byB0aGUgUFNCVCBjb250cm9sbGVkIGJ5IGEgc2NyaXB0XG4gICAgICAgKiBzcGVuZC4gT3RoZXJ3aXNlIChmYWxzZSwgdGhlIGRlZmF1bHQpLCB0aGlzIGVuZHBvaW50IHVzZXMgYSBoZXVyaXN0aWMgdG8gZGVjaWRlXG4gICAgICAgKiB3aGV0aGVyIHRoZSBzY3JpcHQgY29udHJvbGxpbmcgYSBnaXZlbiBVVFhPIHJlcXVpcmVzIGEgc2lnbmF0dXJlIGZyb20gdGhpcyBrZXkuXG4gICAgICAgKi9cbiAgICAgIHNpZ25fYWxsX3NjcmlwdHM/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0byBhIFBTQlQgc2lnbmluZyByZXF1ZXN0ICovXG4gICAgUHNidFNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBQU0JUIGluIHN0YW5kYXJkIGhleCBzZXJpYWxpemF0aW9uLCB3aXRob3V0IGxlYWRpbmcgXCIweFwiLlxuICAgICAgICogQGV4YW1wbGUgNzA3MzYyNzRmZjAxMDA1ZS4uLlxuICAgICAgICovXG4gICAgICBwc2J0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSB3aXJlLWVuY29kYWJsZSBmb3JtIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIGludGVyZmFjZVxuICAgICAqIENsaWVudHMgbWF5IG5lZWQgdG8gbWFudWFsbHkgZW5jb2RlIGludG8gdGhpcyBmb3JtYXQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2VydmVyXG4gICAgICpcbiAgICAgKiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbCBpbnRlcmZhY2UgaW5oZXJpdHMgZnJvbSBDcmVkZW50aWFsXG4gICAgICogW0NSRURFTlRJQUwtTUFOQUdFTUVOVC0xXSwgYW5kIGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIHRoYXQgYXJlIHJldHVybmVkIHRvXG4gICAgICogdGhlIGNhbGxlciB3aGVuIGEgbmV3IGNyZWRlbnRpYWwgaXMgY3JlYXRlZCwgb3IgYSBuZXcgYXNzZXJ0aW9uIGlzXG4gICAgICogcmVxdWVzdGVkLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLXBrY3JlZGVudGlhbFxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgcmVzdWx0cyBvZiBwcm9jZXNzaW5nIGNsaWVudCBleHRlbnNpb25zXG4gICAgICAgKiByZXF1ZXN0ZWQgYnkgdGhlIFJlbHlpbmcgUGFydHkgdXBvbiB0aGUgUmVseWluZyBQYXJ0eSdzIGludm9jYXRpb24gb2ZcbiAgICAgICAqIGVpdGhlciBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgb3IgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCgpLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbC1jbGllbnRleHRlbnNpb25zcmVzdWx0cy1zbG90XG4gICAgICAgKlxuICAgICAgICogSU1QTEVNRU5UQVRJT04gTk9URTogVGhlIHR5cGUgZm9yIHRoaXMgZmllbGQgY29tZXMgZnJvbSB0aGUgdHlwZSBvZiBnZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgd2hpY2ggYXMgdGhlIGZvbGxvd2luZyBkb2M6XG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcGVyYXRpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgW1tjbGllbnRFeHRlbnNpb25zUmVzdWx0c11dLCB3aGljaCBpcyBhIG1hcCBjb250YWluaW5nIGV4dGVuc2lvbiBpZGVudGlmaWVyIOKGkiBjbGllbnQgZXh0ZW5zaW9uIG91dHB1dCBlbnRyaWVzIHByb2R1Y2VkIGJ5IHRoZSBleHRlbnNpb27igJlzIGNsaWVudCBleHRlbnNpb24gcHJvY2Vzc2luZy5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNyZWYtZm9yLWRvbS1wdWJsaWNrZXljcmVkZW50aWFsLWdldGNsaWVudGV4dGVuc2lvbnJlc3VsdHNcbiAgICAgICAqL1xuICAgICAgY2xpZW50RXh0ZW5zaW9uUmVzdWx0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgY3JlZGVudGlhbCBJRCwgY2hvc2VuIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNyZWRlbnRpYWwgSUQgaXMgdXNlZCB0byBsb29rIHVwIGNyZWRlbnRpYWxzIGZvciB1c2UsXG4gICAgICAgKiBhbmQgaXMgdGhlcmVmb3JlIGV4cGVjdGVkIHRvIGJlIGdsb2JhbGx5IHVuaXF1ZSB3aXRoIGhpZ2ggcHJvYmFiaWxpdHlcbiAgICAgICAqIGFjcm9zcyBhbGwgY3JlZGVudGlhbHMgb2YgdGhlIHNhbWUgdHlwZSwgYWNyb3NzIGFsbCBhdXRoZW50aWNhdG9ycy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWwtaWRlbnRpZmllci1zbG90XG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIHJlc3BvbmQgdG8gUmVseWluZyBQYXJ0eSByZXF1ZXN0cyBieSByZXR1cm5pbmcgYW4gb2JqZWN0IGRlcml2ZWQgZnJvbSB0aGUgQXV0aGVudGljYXRvclJlc3BvbnNlIGludGVyZmFjZSAqL1xuICAgICAgcmVzcG9uc2U6XG4gICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZVwiXVxuICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyBwdWJsaWMga2V5IGNyZWRlbnRpYWxcbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOiB7XG4gICAgICBhdHRlc3RhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZVwiXTtcbiAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBhIGNoYWxsZW5nZSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZVxuICAgICAgICogbmV3bHkgY3JlYXRlZCBjcmVkZW50aWFs4oCZcyBhdHRlc3RhdGlvbiBvYmplY3QuIFNlZSB0aGUgwqfigK8xMy40LjNcbiAgICAgICAqIENyeXB0b2dyYXBoaWMgQ2hhbGxlbmdlcyBzZWN1cml0eSBjb25zaWRlcmF0aW9uLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1jaGFsbGVuZ2VcbiAgICAgICAqL1xuICAgICAgY2hhbGxlbmdlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IFJlbHlpbmcgUGFydGllcyB0aGF0IHdpc2ggdG8gbGltaXRcbiAgICAgICAqIHRoZSBjcmVhdGlvbiBvZiBtdWx0aXBsZSBjcmVkZW50aWFscyBmb3IgdGhlIHNhbWUgYWNjb3VudCBvbiBhIHNpbmdsZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNsaWVudCBpcyByZXF1ZXN0ZWQgdG8gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBuZXdcbiAgICAgICAqIGNyZWRlbnRpYWwgd291bGQgYmUgY3JlYXRlZCBvbiBhbiBhdXRoZW50aWNhdG9yIHRoYXQgYWxzbyBjb250YWlucyBvbmVcbiAgICAgICAqIG9mIHRoZSBjcmVkZW50aWFscyBlbnVtZXJhdGVkIGluIHRoaXMgcGFyYW1ldGVyLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1leGNsdWRlY3JlZGVudGlhbHNcbiAgICAgICAqL1xuICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHJlcXVlc3RpbmcgYWRkaXRpb25hbFxuICAgICAgICogcHJvY2Vzc2luZyBieSB0aGUgY2xpZW50IGFuZCBhdXRoZW50aWNhdG9yLiBGb3IgZXhhbXBsZSwgdGhlIGNhbGxlciBtYXlcbiAgICAgICAqIHJlcXVlc3QgdGhhdCBvbmx5IGF1dGhlbnRpY2F0b3JzIHdpdGggY2VydGFpbiBjYXBhYmlsaXRpZXMgYmUgdXNlZCB0b1xuICAgICAgICogY3JlYXRlIHRoZSBjcmVkZW50aWFsLCBvciB0aGF0IHBhcnRpY3VsYXIgaW5mb3JtYXRpb24gYmUgcmV0dXJuZWQgaW4gdGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QuIFNvbWUgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBpbiDCp+KArzkgV2ViQXV0aG5cbiAgICAgICAqIEV4dGVuc2lvbnM7IGNvbnN1bHQgdGhlIElBTkEgXCJXZWJBdXRobiBFeHRlbnNpb24gSWRlbnRpZmllcnNcIiByZWdpc3RyeVxuICAgICAgICogW0lBTkEtV2ViQXV0aG4tUmVnaXN0cmllc10gZXN0YWJsaXNoZWQgYnkgW1JGQzg4MDldIGZvciBhbiB1cC10by1kYXRlXG4gICAgICAgKiBsaXN0IG9mIHJlZ2lzdGVyZWQgV2ViQXV0aG4gRXh0ZW5zaW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtZXh0ZW5zaW9uc1xuICAgICAgICovXG4gICAgICBleHRlbnNpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlc2lyZWQgcHJvcGVydGllcyBvZiB0aGVcbiAgICAgICAqIGNyZWRlbnRpYWwgdG8gYmUgY3JlYXRlZC4gVGhlIHNlcXVlbmNlIGlzIG9yZGVyZWQgZnJvbSBtb3N0IHByZWZlcnJlZCB0b1xuICAgICAgICogbGVhc3QgcHJlZmVycmVkLiBUaGUgY2xpZW50IG1ha2VzIGEgYmVzdC1lZmZvcnQgdG8gY3JlYXRlIHRoZSBtb3N0XG4gICAgICAgKiBwcmVmZXJyZWQgY3JlZGVudGlhbCB0aGF0IGl0IGNhbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtcHVia2V5Y3JlZHBhcmFtc1xuICAgICAgICovXG4gICAgICBwdWJLZXlDcmVkUGFyYW1zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzXCJdW107XG4gICAgICBycDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHlcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBzcGVjaWZpZXMgYSB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRoYXQgdGhlIGNhbGxlciBpc1xuICAgICAgICogd2lsbGluZyB0byB3YWl0IGZvciB0aGUgY2FsbCB0byBjb21wbGV0ZS4gVGhpcyBpcyB0cmVhdGVkIGFzIGEgaGludCwgYW5kXG4gICAgICAgKiBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy10aW1lb3V0XG4gICAgICAgKi9cbiAgICAgIHRpbWVvdXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgdXNlcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGRpY3Rpb25hcnkgY29udGFpbnMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc3BlY2lmaWVkIGJ5IGEgY2FsbGVyIHdoZW5cbiAgICAgKiByZWZlcnJpbmcgdG8gYSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgYXMgYW4gaW5wdXQgcGFyYW1ldGVyIHRvIHRoZSBjcmVhdGUoKVxuICAgICAqIG9yIGdldCgpIG1ldGhvZHMuIEl0IG1pcnJvcnMgdGhlIGZpZWxkcyBvZiB0aGUgUHVibGljS2V5Q3JlZGVudGlhbCBvYmplY3RcbiAgICAgKiByZXR1cm5lZCBieSB0aGUgbGF0dGVyIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1jcmVkZW50aWFsLWRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgdGhlIGNyZWRlbnRpYWwgSUQgb2YgdGhlIHB1YmxpYyBrZXkgY3JlZGVudGlhbCB0aGUgY2FsbGVyIGlzIHJlZmVycmluZyB0by5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxkZXNjcmlwdG9yLWlkXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBjb250YWlucyBhIGhpbnQgYXMgdG8gaG93IHRoZSBjbGllbnQgbWlnaHRcbiAgICAgICAqIGNvbW11bmljYXRlIHdpdGggdGhlIG1hbmFnaW5nIGF1dGhlbnRpY2F0b3Igb2YgdGhlIHB1YmxpYyBrZXkgY3JlZGVudGlhbFxuICAgICAgICogdGhlIGNhbGxlciBpcyByZWZlcnJpbmcgdG8uIFRoZSB2YWx1ZXMgU0hPVUxEIGJlIG1lbWJlcnMgb2ZcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgYnV0IGNsaWVudCBwbGF0Zm9ybXMgTVVTVCBpZ25vcmUgdW5rbm93biB2YWx1ZXMuXG4gICAgICAgKlxuICAgICAgICogVGhlIGdldFRyYW5zcG9ydHMoKSBvcGVyYXRpb24gY2FuIHByb3ZpZGUgc3VpdGFibGUgdmFsdWVzIGZvciB0aGlzXG4gICAgICAgKiBtZW1iZXIuIFdoZW4gcmVnaXN0ZXJpbmcgYSBuZXcgY3JlZGVudGlhbCwgdGhlIFJlbHlpbmcgUGFydHkgU0hPVUxEXG4gICAgICAgKiBzdG9yZSB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBnZXRUcmFuc3BvcnRzKCkuIFdoZW4gY3JlYXRpbmcgYVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgZm9yIHRoYXQgY3JlZGVudGlhbCwgdGhlIFJlbHlpbmcgUGFydHlcbiAgICAgICAqIFNIT1VMRCByZXRyaWV2ZSB0aGF0IHN0b3JlZCB2YWx1ZSBhbmQgc2V0IGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGVcbiAgICAgICAqIHRyYW5zcG9ydHMgbWVtYmVyLlxuICAgICAgICovXG4gICAgICB0cmFuc3BvcnRzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yVHJhbnNwb3J0XCJdW10gfCBudWxsO1xuICAgICAgdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVHlwZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHdoZW4gY3JlYXRpbmcgYSBuZXdcbiAgICAgKiBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVyczoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgc3BlY2lmaWVzIHRoZSBjcnlwdG9ncmFwaGljIHNpZ25hdHVyZSBhbGdvcml0aG0gd2l0aCB3aGljaFxuICAgICAgICogdGhlIG5ld2x5IGdlbmVyYXRlZCBjcmVkZW50aWFsIHdpbGwgYmUgdXNlZCwgYW5kIHRodXMgYWxzbyB0aGUgdHlwZSBvZlxuICAgICAgICogYXN5bW1ldHJpYyBrZXkgcGFpciB0byBiZSBnZW5lcmF0ZWQsIGUuZy4sIFJTQSBvciBFbGxpcHRpYyBDdXJ2ZS5cbiAgICAgICAqL1xuICAgICAgYWxnOiBudW1iZXI7XG4gICAgICB0eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zYCBkaWN0aW9uYXJ5IHN1cHBsaWVzIGdldCgpIHdpdGggdGhlXG4gICAgICogZGF0YSBpdCBuZWVkcyB0byBnZW5lcmF0ZSBhbiBhc3NlcnRpb24uIEl0cyBjaGFsbGVuZ2UgbWVtYmVyIE1VU1QgYmVcbiAgICAgKiBwcmVzZW50LCB3aGlsZSBpdHMgb3RoZXIgbWVtYmVycyBhcmUgT1BUSU9OQUwuXG4gICAgICpcbiAgICAgKiBUaGlzIHN0cnVjdCBpcyBhbHNvIHVzZWQgYXMgcGFydCBvZiB0aGUgdmVyaWZpY2F0aW9uIHByb2NlZHVyZSBmb3IgYXNzZXJ0aW9uc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgY29udGFpbnMgYSBsaXN0IG9mIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXG4gICAgICAgKiBvYmplY3RzIHJlcHJlc2VudGluZyBwdWJsaWMga2V5IGNyZWRlbnRpYWxzIGFjY2VwdGFibGUgdG8gdGhlIGNhbGxlciwgaW5cbiAgICAgICAqIGRlc2NlbmRpbmcgb3JkZXIgb2YgdGhlIGNhbGxlcuKAmXMgcHJlZmVyZW5jZSAodGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAqIGlzIHRoZSBtb3N0IHByZWZlcnJlZCBjcmVkZW50aWFsLCBhbmQgc28gb24gZG93biB0aGUgbGlzdCkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtYWxsb3djcmVkZW50aWFsc1xuICAgICAgICovXG4gICAgICBhbGxvd0NyZWRlbnRpYWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgcmVwcmVzZW50cyBhIGNoYWxsZW5nZSB0aGF0IHRoZSBzZWxlY3RlZCBhdXRoZW50aWNhdG9yXG4gICAgICAgKiBzaWducywgYWxvbmcgd2l0aCBvdGhlciBkYXRhLCB3aGVuIHByb2R1Y2luZyBhbiBhdXRoZW50aWNhdGlvblxuICAgICAgICogYXNzZXJ0aW9uLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLWNoYWxsZW5nZVxuICAgICAgICovXG4gICAgICBjaGFsbGVuZ2U6IHN0cmluZztcbiAgICAgIGV4dGVuc2lvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBzcGVjaWZpZXMgdGhlIHJlbHlpbmcgcGFydHkgaWRlbnRpZmllciBjbGFpbWVkIGJ5XG4gICAgICAgKiB0aGUgY2FsbGVyLiBJZiBvbWl0dGVkLCBpdHMgdmFsdWUgd2lsbCBiZSB0aGUgQ3JlZGVudGlhbHNDb250YWluZXJcbiAgICAgICAqIG9iamVjdOKAmXMgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0J3Mgb3JpZ2luJ3MgZWZmZWN0aXZlIGRvbWFpbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1ycGlkXG4gICAgICAgKi9cbiAgICAgIHJwSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgc3BlY2lmaWVzIGEgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0aGF0IHRoZSBjYWxsZXJcbiAgICAgICAqIGlzIHdpbGxpbmcgdG8gd2FpdCBmb3IgdGhlIGNhbGwgdG8gY29tcGxldGUuIFRoZSB2YWx1ZSBpcyB0cmVhdGVkIGFzIGFcbiAgICAgICAqIGhpbnQsIGFuZCBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyVmVyaWZpY2F0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiBSZWx5aW5nIFBhcnR5IGF0dHJpYnV0ZXMgd2hlbiBjcmVhdGluZyBhIG5ldyBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktcnAtY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBSZWx5aW5nIFBhcnR5IGVudGl0eSwgd2hpY2ggc2V0cyB0aGUgUlAgSUQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscnBlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1wYWxhdGFibGUgbmFtZSBmb3IgdGhlIGVudGl0eS4gSXRzIGZ1bmN0aW9uIGRlcGVuZHMgb24gd2hhdCB0aGVcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxFbnRpdHkgcmVwcmVzZW50czogV2hlbiBpbmhlcml0ZWQgYnlcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZSBpZGVudGlmaWVyIGZvciB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHksIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuIEZvciBleGFtcGxlLCBcIkFDTUVcbiAgICAgICAqIENvcnBvcmF0aW9uXCIsIFwiV29uZGVyZnVsIFdpZGdldHMsIEluYy5cIiBvciBcItCe0JDQniDQn9GA0LjQvNC10YDRgtC10YVcIi5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBuYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb24gZGVmaW5lcyB0aGUgdmFsaWQgY3JlZGVudGlhbCB0eXBlcy4gSXQgaXMgYW4gZXh0ZW5zaW9uXG4gICAgICogcG9pbnQ7IHZhbHVlcyBjYW4gYmUgYWRkZWQgdG8gaXQgaW4gdGhlIGZ1dHVyZSwgYXMgbW9yZSBjcmVkZW50aWFsIHR5cGVzIGFyZVxuICAgICAqIGRlZmluZWQuIFRoZSB2YWx1ZXMgb2YgdGhpcyBlbnVtZXJhdGlvbiBhcmUgdXNlZCBmb3IgdmVyc2lvbmluZyB0aGVcbiAgICAgKiBBdXRoZW50aWNhdGlvbiBBc3NlcnRpb24gYW5kIGF0dGVzdGF0aW9uIHN0cnVjdHVyZXMgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mXG4gICAgICogdGhlIGF1dGhlbnRpY2F0b3IuICBDdXJyZW50bHkgb25lIGNyZWRlbnRpYWwgdHlwZSBpcyBkZWZpbmVkLCBuYW1lbHlcbiAgICAgKiBcInB1YmxpYy1rZXlcIi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLXB1YmxpY2tleWNyZWRlbnRpYWx0eXBlXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTogXCJwdWJsaWMta2V5XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiB1c2VyIGFjY291bnQgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWwuXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcGFsYXRhYmxlIG5hbWUgZm9yIHRoZSB1c2VyIGFjY291bnQsIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuXG4gICAgICAgKiBGb3IgZXhhbXBsZSwgXCJBbGV4IE3DvGxsZXJcIiBvciBcIueUsOS4reWAq1wiLiBUaGUgUmVseWluZyBQYXJ0eSBTSE9VTEQgbGV0IHRoZVxuICAgICAgICogdXNlciBjaG9vc2UgdGhpcywgYW5kIFNIT1VMRCBOT1QgcmVzdHJpY3QgdGhlIGNob2ljZSBtb3JlIHRoYW5cbiAgICAgICAqIG5lY2Vzc2FyeS5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBkaXNwbGF5TmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0b1xuICAgICAgICogdGhlIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuMyBvZlxuICAgICAgICogW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgb24gZGlzcGxheU5hbWUncyB2YWx1ZSBwcmlvciB0byBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIgb3IgaW5jbHVkaW5nIHRoZSB2YWx1ZSBhcyBhIHBhcmFtZXRlciBvZiB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogV2hlbiBjbGllbnRzLCBjbGllbnQgcGxhdGZvcm1zLCBvciBhdXRoZW50aWNhdG9ycyBkaXNwbGF5IGFcbiAgICAgICAqIGRpc3BsYXlOYW1lJ3MgdmFsdWUsIHRoZXkgc2hvdWxkIGFsd2F5cyB1c2UgVUkgZWxlbWVudHMgdG8gcHJvdmlkZSBhXG4gICAgICAgKiBjbGVhciBib3VuZGFyeSBhcm91bmQgdGhlIGRpc3BsYXllZCB2YWx1ZSwgYW5kIG5vdCBhbGxvdyBvdmVyZmxvdyBpbnRvXG4gICAgICAgKiBvdGhlciBlbGVtZW50cyBbY3NzLW92ZXJmbG93LTNdLlxuICAgICAgICpcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JzIE1VU1QgYWNjZXB0IGFuZCBzdG9yZSBhIDY0LWJ5dGUgbWluaW11bSBsZW5ndGggZm9yIGFcbiAgICAgICAqIGRpc3BsYXlOYW1lIG1lbWJlcuKAmXMgdmFsdWUuIEF1dGhlbnRpY2F0b3JzIE1BWSB0cnVuY2F0ZSBhIGRpc3BsYXlOYW1lXG4gICAgICAgKiBtZW1iZXLigJlzIHZhbHVlIHNvIHRoYXQgaXQgZml0cyB3aXRoaW4gNjQgYnl0ZXMuIFNlZSDCp+KArzYuNC4xIFN0cmluZ1xuICAgICAgICogVHJ1bmNhdGlvbiBhYm91dCB0cnVuY2F0aW9uIGFuZCBvdGhlciBjb25zaWRlcmF0aW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWx1c2VyZW50aXR5LWRpc3BsYXluYW1lXG4gICAgICAgKi9cbiAgICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBoYW5kbGUgb2YgdGhlIHVzZXIgYWNjb3VudCBlbnRpdHkuIEEgdXNlciBoYW5kbGUgaXMgYW4gb3BhcXVlXG4gICAgICAgKiBieXRlIHNlcXVlbmNlIHdpdGggYSBtYXhpbXVtIHNpemUgb2YgNjQgYnl0ZXMsIGFuZCBpcyBub3QgbWVhbnQgdG8gYmVcbiAgICAgICAqIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUbyBlbnN1cmUgc2VjdXJlIG9wZXJhdGlvbiwgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gZGVjaXNpb25zXG4gICAgICAgKiBNVVNUIGJlIG1hZGUgb24gdGhlIGJhc2lzIG9mIHRoaXMgaWQgbWVtYmVyLCBub3QgdGhlIGRpc3BsYXlOYW1lIG5vclxuICAgICAgICogbmFtZSBtZW1iZXJzLiBTZWUgU2VjdGlvbiA2LjEgb2YgW1JGQzgyNjZdLlxuICAgICAgICpcbiAgICAgICAqIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBjb250YWluIHBlcnNvbmFsbHkgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb25cbiAgICAgICAqIGFib3V0IHRoZSB1c2VyLCBzdWNoIGFzIGEgdXNlcm5hbWUgb3IgZS1tYWlsIGFkZHJlc3M7IHNlZSDCp+KArzE0LjYuMSBVc2VyXG4gICAgICAgKiBIYW5kbGUgQ29udGVudHMgZm9yIGRldGFpbHMuIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBiZSBlbXB0eSwgdGhvdWdoXG4gICAgICAgKiBpdCBNQVkgYmUgbnVsbC5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlOiB0aGUgdXNlciBoYW5kbGUgb3VnaHQgbm90IGJlIGEgY29uc3RhbnQgdmFsdWUgYWNyb3NzIGRpZmZlcmVudFxuICAgICAgICogYWNjb3VudHMsIGV2ZW4gZm9yIG5vbi1kaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMsIGJlY2F1c2Ugc29tZVxuICAgICAgICogYXV0aGVudGljYXRvcnMgYWx3YXlzIGNyZWF0ZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFRodXMgYSBjb25zdGFudFxuICAgICAgICogdXNlciBoYW5kbGUgd291bGQgcHJldmVudCBhIHVzZXIgZnJvbSB1c2luZyBzdWNoIGFuIGF1dGhlbnRpY2F0b3Igd2l0aFxuICAgICAgICogbW9yZSB0aGFuIG9uZSBhY2NvdW50IGF0IHRoZSBSZWx5aW5nIFBhcnR5LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gaW5oZXJpdGVkIGJ5IFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5LCBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZVxuICAgICAgICogaWRlbnRpZmllciBmb3IgYSB1c2VyIGFjY291bnQuIEl0IGlzIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXksIGkuZS4sXG4gICAgICAgKiBhaWRpbmcgdGhlIHVzZXIgaW4gZGV0ZXJtaW5pbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB1c2VyIGFjY291bnRzIHdpdGhcbiAgICAgICAqIHNpbWlsYXIgZGlzcGxheU5hbWVzLiBGb3IgZXhhbXBsZSwgXCJhbGV4bVwiLCBcImFsZXgubXVlbGxlckBleGFtcGxlLmNvbVwiXG4gICAgICAgKiBvciBcIisxNDI1NTU1MTIzNFwiLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBSZWx5aW5nIFBhcnR5IE1BWSBsZXQgdGhlIHVzZXIgY2hvb3NlIHRoaXMgdmFsdWUuIFRoZSBSZWx5aW5nIFBhcnR5XG4gICAgICAgKiBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XVxuICAgICAgICogZm9yIHRoZSBVc2VybmFtZUNhc2VQcmVzZXJ2ZWQgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIElkZW50aWZpZXJDbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCB3aGVuIHNldHRpbmcgbmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XSBmb3IgdGhlIFVzZXJuYW1lQ2FzZVByZXNlcnZlZCBQcm9maWxlIG9mIHRoZSBQUkVDSVMgSWRlbnRpZmllckNsYXNzIFtSRkM4MjY0XSwgb24gbmFtZSdzIHZhbHVlIHByaW9yIHRvIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZSB1c2VyIG9yIGluY2x1ZGluZyB0aGUgdmFsdWUgYXMgYSBwYXJhbWV0ZXIgb2YgdGhlIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUHVibGljIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICBQdWJsaWNPcmdJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEV4cGxpY2l0bHkgY29uZmlndXJlZCAoYWxsb3dsaXN0ZWQpIE9wZW5JRCBwcm92aWRlcnMgZm9yIGFuIG9yZyAqL1xuICAgICAgb2lkY19pc3N1ZXJzOiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW50ZW5kZWQgYXVkaWVuY2VzIChjbGllbnQgSURzKSAqL1xuICAgICAgICBhdWRpZW5jZXM6IHN0cmluZ1tdO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIElzc3VlciBVUkwgKi9cbiAgICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaXNzdWVyIG5pY2tuYW1lICovXG4gICAgICAgIG5pY2tuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByb2xlcyBhbGxvd2VkIHRvIHVzZSB0aGlzIElEUCAqL1xuICAgICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdW107XG4gICAgICB9W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmcgaWRlbnRpZmllclxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciBsb2dnaW5nIGluIHdpdGgganVzdCBhIHBhc3NrZXkgaXMgYWxsb3dlZCAqL1xuICAgICAgcGFzc2tleV9sb2dpbl9lbmFibGVkOiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUHVycG9zZTpcbiAgICAgIHwgXCJvdHBcIlxuICAgICAgfCBcIm1mYV9yZXNldFwiXG4gICAgICB8IFwib3RwX21mYVwiXG4gICAgICB8IFwiYWxpZW5fcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgfCBcIm1lbWJlcl9wYXNzd29yZF9yZXNldFwiXG4gICAgICB8IFwiYWxpZW5faW52aXRlXCJcbiAgICAgIHwgXCJtZW1iZXJfaW52aXRlXCJcbiAgICAgIHwgXCJ3ZWxjb21lXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVxdWVzdCB0eXBlIGZvciBxdWVyeWluZyBtZXRyaWNzLiAqL1xuICAgIFF1ZXJ5TWV0cmljc1JlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEVuZCB0aW1lIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gJ25vdycuXG4gICAgICAgKi9cbiAgICAgIGVuZF90aW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBncmFudWxhcml0eSwgaW4gc2Vjb25kcywgb2YgdGhlIHJldHVybmVkIGRhdGEgcG9pbnRzLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgdmFsdWUgaXMgYXV0b21hdGljYWxseSByb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUgb2YgMzYwMCAoaS5lLiwgMSBob3VyKS5cbiAgICAgICAqIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBkdXJhdGlvbiBiZXR3ZWVuIGBlbmRfdGltZWAgYW5kIGBzdGFydF90aW1lYC5cbiAgICAgICAqIE11c3QgYmUgbm8gbGVzcyB0aGFuIDEgaG91ciAoMzYwMCBzZWNvbmRzKSBmb3IgXCJldmVudFwiIG1ldHJpY3MsIGFuZCAxIGRheVxuICAgICAgICogKDg2NDAwIHNlY29uZHMpIGZvciBcImNvdW50XCIgbWV0cmljcy4gQWxzbywgdGhpcyBwZXJpb2QgbXVzdCBub3RcbiAgICAgICAqIGRpdmlkZSB0aGUgYGVuZF90aW1lIC0gc3RhcnRfdGltZWAgcGVyaW9kIGludG8gbW9yZSB0aGFuIDEwMCBkYXRhIHBvaW50cy5cbiAgICAgICAqL1xuICAgICAgcGVyaW9kPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJldHVybiB0aGUgcmF3IGRhdGEgaW5zdGVhZCBvZiBjb21wdXRpbmcgdGhlIG1ldHJpYyB2YWx1ZXNcbiAgICAgICAqIChub3Qgc3VwcG9ydGVkIGJ5IGFsbCBtZXRyaWNzKS5cbiAgICAgICAqL1xuICAgICAgcmF3X2RhdGE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3RhcnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guXG4gICAgICAgKi9cbiAgICAgIHN0YXJ0X3RpbWU6IG51bWJlcjtcbiAgICB9ICYge1xuICAgICAgbWV0cmljX25hbWU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWV0cmljTmFtZVwiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1ldHJpYyBkYXRhIHBvaW50cy4gKi9cbiAgICBRdWVyeU1ldHJpY3NSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBZHZpc29yeSBtZXNzYWdlcyAoZS5nLiwgaWYgbWF4IG51bWJlciBvZiByZXN1bHRzIGlzIHJlYWNoZWQpLiAqL1xuICAgICAgbWVzc2FnZXM/OiBzdHJpbmdbXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwZXJpb2QgZm9yIHdoaWNoIHRoZSBzdGF0aXN0aWMgaXMgY29tcHV0ZWQsIGlmIGFueSAobm90IGFsbCBtZXRyaWNzIHN1cHBvcnQgc3BsaXR0aW5nIHRoZSByZXF1ZXN0ZWQgdGltZSByYW5nZSBpbnRvIGJpbnMpLlxuICAgICAgICogSWYgc2V0LCBlcXVhbHMgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHJlcXVlc3Qgcm91bmRlZCB1cCB0byB0aGUgY2xvc2VzdCBtdWx0aXBsZSBvZiA2MC5cbiAgICAgICAqL1xuICAgICAgcGVyaW9kPzogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTb21lIG1ldHJpY3MgY2FuIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSByYXcgZGF0YSwgd2hlbiByZXF1ZXN0ZWQuICovXG4gICAgICByYXdfZGF0YToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICB9W107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIENvbXB1dGVkIGRhdGEgcG9pbnRzLiAqL1xuICAgICAgcmVzdWx0czoge1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkYXRhIHBvaW50cywgb25lIGZvciBlYWNoIHRpbWUgcGVyaW9kICh0aW1lIHBlcmlvZHMgZm9yIHdoaWNoIHRoZSB2YWx1ZSBpcyAwIGFyZSBvbWl0dGVkKS4gKi9cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9W107XG4gICAgICBzdGF0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdNZXRyaWNTdGF0XCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFJhdGNoZXRDb25maWc6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsaWZldGltZSAoaW4gc2Vjb25kcykgb2YgYXV0aCB0b2tlbnMgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICAgICAqIEF1dGggdG9rZW5zIGNhbiBiZSByZWZyZXNoZWQgKHJlbmV3ZWQpIHVzaW5nIGEgdmFsaWQgKHVuZXhwaXJlZClcbiAgICAgICAqIHJlZnJlc2ggdG9rZW4sIGJ1dCBub3QgYmV5b25kIHRoZSBzZXNzaW9uIGxpZmV0aW1lLlxuICAgICAgICogQGRlZmF1bHQgMzAwXG4gICAgICAgKiBAZXhhbXBsZSAzNjAwXG4gICAgICAgKi9cbiAgICAgIGF1dGhfbGlmZXRpbWU/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYW1vdW50IG9mIHRpbWUgKGluIHNlY29uZHMpIHRoYXQgYW4gYXV0aCB0b2tlbiBmb3IgdGhpcyBzZXNzaW9uIHJlbWFpbnNcbiAgICAgICAqIHZhbGlkIGFmdGVyIGl0IGhhcyBiZWVuIHJlZnJlc2hlZCBhbmQgYSBuZXcgYXV0aCB0b2tlbiBoYXMgYmVlbiBpc3N1ZWQuIFRoaXNcbiAgICAgICAqIGhlbHBzIHRvIGFkZHJlc3MgY29uY3VycmVuY3kgaGF6YXJkcywgZm9yIGV4YW1wbGUsIGlmIG9uZSB0aHJlYWQgbWFrZXMgcmVxdWVzdHNcbiAgICAgICAqIHdpdGggYXV0aCB0b2tlbiB3aGlsZSBhbm90aGVyIHJlZnJlc2hlcyBpdC5cbiAgICAgICAqIEBkZWZhdWx0IDMwXG4gICAgICAgKiBAZXhhbXBsZSAzMFxuICAgICAgICovXG4gICAgICBncmFjZV9saWZldGltZT86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBsaWZldGltZSAoaW4gc2Vjb25kcykgb2YgcmVmcmVzaCB0b2tlbnMgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICAgICAqIElmIHRoaXMgdmFsdWUgaXMgc2hvcnRlciB0aGFuIHRoZSBzZXNzaW9uIGxpZmV0aW1lLCBpbmFjdGl2ZSBzZXNzaW9uc1xuICAgICAgICogd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNlIHRoZSBhdXRoIGFuZCByZWZyZXNoIHRva2VucyBoYXZlIGJvdGggZXhwaXJlZC5cbiAgICAgICAqIEBkZWZhdWx0IDg2NDAwXG4gICAgICAgKiBAZXhhbXBsZSA0MzIwMFxuICAgICAgICovXG4gICAgICByZWZyZXNoX2xpZmV0aW1lPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGxpZmV0aW1lIChpbiBzZWNvbmRzKSBvZiB0aGUgc2Vzc2lvbi5cbiAgICAgICAqIFRoZSBzZXNzaW9uIGNhbm5vdCBiZSBleHRlbmRlZCBiZXlvbmQgaXRzIG9yaWdpbmFsIGxpZmV0aW1lLlxuICAgICAgICogQGRlZmF1bHQgMzE1MzYwMDBcbiAgICAgICAqIEBleGFtcGxlIDg2NDAwXG4gICAgICAgKi9cbiAgICAgIHNlc3Npb25fbGlmZXRpbWU/OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlY2VpcHQgdGhhdCBhbiBNRkEgcmVxdWVzdCB3YXMgYXBwcm92ZWQuICovXG4gICAgUmVjZWlwdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybWF0aW9uIGNvZGUgdGhlIHVzZXIgbmVlZHMgdG8gcHJlc2VudCB3aGVuIHJlc3VtaW5nIHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuICAgICAgICogQGV4YW1wbGUgYmExZDc1ZGQtZDk5OS00YzFiLTk0NGQtMjVjMjU0NDBjOGFmXG4gICAgICAgKi9cbiAgICAgIGNvbmZpcm1hdGlvbjogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGxvZ2dlZC1pbiB1c2VyIHdob3NlIGFjdGlvbiBjcmVhdGVkIHRoaXMgYXBwcm92YWwuICovXG4gICAgICBmaW5hbF9hcHByb3Zlcjogc3RyaW5nO1xuICAgICAgdGltZXN0YW1wOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBSZWZyZXNoR3JhbnRUeXBlOiBcInJlZnJlc2hfdG9rZW5cIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEpTT04tUlBDIHJlcXVlc3Qgb2JqZWN0ICovXG4gICAgUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IElEICovXG4gICAgICBpZD86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEpTT04tUlBDIHZlcnNpb24uICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE5hbWUgb2YgdGhlIG1ldGhvZCB0byBiZSBpbnZva2VkLiAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlciB2YWx1ZXMgb2YgdGhlIHJlcXVlc3QuICovXG4gICAgICBwYXJhbXM/OiB1bmtub3duO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc2AgdGhhdCBhbGxvd3MgY2xpZW50cyB0byBkZXJpdmUgdGhlIFdlYkF1dGhuIGNoYWxsZW5nZVxuICAgICAqIGZyb20gYSBzdHJ1Y3R1cmVkIHByZWltYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHdlYnVhdGhuIHNpZ25hdHVyZSBjYW4gb25seSBiZSB1c2VkIGZvciBhIHNwZWNpZmljIHB1cnBvc2VcbiAgICAgKi9cbiAgICBSZXF1ZXN0T3B0aW9uc1dpdGhIYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSB0aGUgUmVseWluZyBQYXJ0eSdzIHJlcXVpcmVtZW50cyBmb3JcbiAgICAgKiBjbGllbnQtc2lkZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMgKGZvcm1lcmx5IGtub3duIGFzIHJlc2lkZW50IGNyZWRlbnRpYWxzXG4gICAgICogb3IgcmVzaWRlbnQga2V5cyk6XG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1yZXNpZGVudGtleXJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBSZXNpZGVudEtleVJlcXVpcmVtZW50OiBcImRpc2NvdXJhZ2VkXCIgfCBcInByZWZlcnJlZFwiIHwgXCJyZXF1aXJlZFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSlNPTi1SUEMgcmVzcG9uc2Ugb2JqZWN0ICovXG4gICAgUmVzcG9uc2U6IHtcbiAgICAgIGVycm9yPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvck9ialwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIElEIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgcmVxdWVzdCAqL1xuICAgICAgaWQ/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDb25zdGFudCBcIjIuMFwiICovXG4gICAgICBqc29ucnBjOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3VsdCwgaWYgc3VjY2VzcyAqL1xuICAgICAgcmVzdWx0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhY3Rpb25zIHRvIHNldHMgb2YgbWVtYmVyc2hpcCByb2xlcyAqL1xuICAgIFJlc3RyaWN0ZWRBY3Rpb25zTWFwOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgdGhlIFtgY3NfcmV0cnlUcmFuc2FjdGlvbmBdKFJwY01ldGhvZDo6UmV0cnlUcmFuc2FjdGlvbikgbWV0aG9kLiAqL1xuICAgIFJldHJ5VHJhbnNhY3Rpb25SZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV2bVR4Q3VzdG9taXphdGlvblwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIGlkLiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IG9mIHJvbGUgYWN0aW9ucyB0aGF0IGNhbiBiZSByZXN0cmljdGVkIHRvIGEgc2V0IG9mIG1lbWJlciByb2xlc1xuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUm9sZUFjdGlvbjogXCJDcmVhdGVUb2tlblwiIHwgXCJHZXRLZXlcIjtcbiAgICBSb2xlQXR0ZXN0YXRpb25DbGFpbXM6IHtcbiAgICAgIGV4cDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgaWF0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBxdWVyeTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlQXR0ZXN0YXRpb25RdWVyeVwiXTtcbiAgICAgIHJvbGVfaW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlSW5mb1wiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBrZXlzIGN1cnJlbnRseSBpbiB0aGlzIHJvbGUuICovXG4gICAgICByb2xlX2tleXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRHMgb2YgdGhlIHVzZXJzIHdobyBhcmUgY3VycmVudGx5IGluIHRoaXMgcm9sZS4gKi9cbiAgICAgIHJvbGVfdXNlcnM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgUm9sZUF0dGVzdGF0aW9uUXVlcnk6IHtcbiAgICAgIGtleV9maWx0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgIHZlcmJvc2l0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUF0dGVzdGF0aW9uVmVyYm9zaXR5XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB3aGljaCByb2xlIHByb3BlcnRpZXMgdG8gaW5jbHVkZSBpbiBhbiBhdHRlc3RhdGlvblxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUm9sZUF0dGVzdGF0aW9uVmVyYm9zaXR5OiBcIlN1bW1hcnlcIiB8IFwiV2l0aEtleXNcIiB8IFwiRnVsbFwiO1xuICAgIFJvbGVJbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHJvbGUgaXMgZW5hYmxlZFxuICAgICAgICogQGV4YW1wbGUgdHJ1ZVxuICAgICAgICovXG4gICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgQ3ViZVNpZ25lciBJRHMgb2YgYXQgbW9zdCAxMDAga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhpcyByb2xlLiAqL1xuICAgICAga2V5cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBpcyBhIG1lbWJlciBvZiB0aGUgcm9sZS4gVGhpcyBpcyBhbHdheXMgdHJ1ZSxcbiAgICAgICAqIGV4Y2VwdCBmb3Igb3duZXJzIHdobyBjYW4gc2VlIHJvbGVzIHRoZXkgYXJlIG5vdCBtZW1iZXJzIG9mLlxuICAgICAgICovXG4gICAgICBtZW1iZXI6IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFBvbGljeSB0aGF0IGlzIGNoZWNrZWQgd2hlbmV2ZXIgYSBrZXkgaXMgYWNjZXNzZWQgZm9yIHNpZ25pbmcgdmlhIHRoaXMgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICByZXN0cmljdGVkX2FjdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVzdHJpY3RlZEFjdGlvbnNNYXBcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgKi9cbiAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZC4gVGhlIGxpc3Qgb2YgYXQgbW9zdCAxMDAgdXNlcnMgd2l0aCBhY2Nlc3MgdG8gdGhlIHJvbGUuICovXG4gICAgICB1c2Vycz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgd2hlbiByZXF1ZXN0aW5nIGEgcm9sZSBhdHRlc3RhdGlvbi4gKi9cbiAgICBSb2xlSW5mb0p3dDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIEpTT04gV2ViIFRva2VuIHdob3NlIGNsYWltcyBjb250YWluIHRoZSBgUm9sZUluZm9gIHN0cnVjdHVyZS4gKi9cbiAgICAgIGp3dDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBSUEMgQVBJIG1ldGhvZCBhbmQgbWF0Y2hpbmcgcGFyYW1ldGVycy5cbiAgICAgKlxuICAgICAqIFRvcC1sZXZlbCBkaXNwYXRjaC4gV2lyZSBmb3JtYXQgaXMgcHJlc2VydmVkIGJ5IGAjW3NlcmRlKHVudGFnZ2VkKV1gOiBlYWNoXG4gICAgICogaW5ib3VuZCByZXF1ZXN0IGlzIG1hdGNoZWQgYWdhaW5zdCBvbmUgb2YgdGhlIGludGVybmFsbHktdGFnZ2VkIGlubmVyIGVudW1zXG4gICAgICogKFtgQ3NScGNgXSBmb3IgdGhlIGNvcmUgbWV0aG9kcywgW2BCaW5hbmNlUnBjYF0gZm9yIHRoZSBCaW5hbmNlIGZhbWlseSkuXG4gICAgICovXG4gICAgUnBjTWV0aG9kOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNzUnBjXCJdIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCaW5hbmNlUnBjXCJdO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHNjb3BlcyBmb3IgYWNjZXNzaW5nIEN1YmVTaWduZXIgQVBJcyAqL1xuICAgIFNjb3BlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV4cGxpY2l0U2NvcGVcIl0gfCBzdHJpbmc7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHNldCBvZiBzY29wZXMuICovXG4gICAgU2NvcGVTZXQ6IE9uZU9mPFxuICAgICAgW1xuICAgICAgICBcIkFsbFwiLFxuICAgICAgICB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgc2NvcGVzIGV4Y2VwdCB0aGVzZSAoaW5jbHVkaW5nIHRob3NlIHRyYW5zaXRpdmVseSBpbXBsaWVkKS4gKi9cbiAgICAgICAgICBBbGxFeGNlcHQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2NvcGVcIl1bXTtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG9mIHRoZXNlIHNjb3BlcyAoaW5jbHVkaW5nIHRob3NlIHRyYW5zaXRpdmVseSBpbXBsaWVkKS4gKi9cbiAgICAgICAgICBBbGxPZjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBNRkEgYXBwcm92YWxzIHJlcXVpcmVkIGZvciBhIGdpdmVuIG9wZXJhdGlvblxuICAgICAqIChlLmcuIGxvZ2luKS4gQ2FuIGJlIHVzZWQgdG8gcHJvZHVjZSBhIGNvbmNyZXRlIHBvbGljeSBmb3IgYSBnaXZlbiB1c2VyXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBTZWNvbmRGYWN0b3JSZXF1aXJlbWVudDogXCJub25lXCIgfCBcImlmX3JlZ2lzdGVyZWRcIiB8IFwicmVxdWlyZWRcIjtcbiAgICAvKipcbiAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICogQGRlc2NyaXB0aW9uIER1cmF0aW9uIG1lYXN1cmVkIGluIHNlY29uZHNcbiAgICAgKiBBIHdyYXBwZXIgdHlwZSBmb3Igc2VyaWFsaXphdGlvbiB0aGF0IGVuY29kZXMgYSBgRHVyYXRpb25gIGFzIGEgYHU2NGAgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2Ygc2Vjb25kcy5cbiAgICAgKi9cbiAgICBTZWNvbmRzOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogU2VjcmV0QWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MtY29udHJvbGxlZCBhY3Rpb25zIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiBhbiBpbmRpdmlkdWFsIHBvbGljeSBzZWNyZXQuXG4gICAgICogQGV4YW1wbGUgcmVhZDpzZWNyZXRcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFNlY3JldEFjdGlvbjpcbiAgICAgIHwgXCJyZWFkOipcIlxuICAgICAgfCBcInJlYWQ6aW5mb1wiXG4gICAgICB8IFwicmVhZDpzZWNyZXRcIlxuICAgICAgfCBcInVwZGF0ZToqXCJcbiAgICAgIHwgXCJ1cGRhdGU6c2VjcmV0XCJcbiAgICAgIHwgXCJ1cGRhdGU6YWNsXCJcbiAgICAgIHwgXCJkZWxldGVcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgc2VjcmV0LiAqL1xuICAgIFNlY3JldEluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoaXMgc2VjcmV0LiAqL1xuICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5hbWUgb2YgdGhlIHNlY3JldC4gKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIG9mIGEgcG9saWN5IHNlY3JldC4gKi9cbiAgICBTZWNyZXRWYWx1ZTogT25lT2Y8XG4gICAgICBbXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2xpZW50J3MgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5LlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCwgU0VDMS1lbmNvZGVkIFAzODQgcHVibGljIGtleS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjbGllbnRfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW5jcnlwdGVkIHNlY3JldCB2YWx1ZS5cbiAgICAgICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQgY2lwaGVydGV4dC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNyeXB0ZWRfdmFsdWU6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBzYWx0IHZhbHVlIHVzZWQgdG8gZGVyaXZlIGEgc2hhcmVkIGtleSBmb3IgQUVTLUdDTS5cbiAgICAgICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmcuXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2FsdDogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgU2Vzc2lvbkluZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbk1ldGFkYXRhXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRpb24gZGF0ZSAoaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoKVxuICAgICAgICovXG4gICAgICBjcmVhdGVkX2F0OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIGRhdGUgKGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaClcbiAgICAgICAqL1xuICAgICAgZXhwOiBudW1iZXI7XG4gICAgICBsYXN0X3VzZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldoZXJlQW5kV2hlblwiXSB8IG51bGw7XG4gICAgICBsaWZldGltZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJhdGNoZXRDb25maWdcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2Vzc2lvblxuICAgICAgICogQGV4YW1wbGUgT0lEQyBsb2dpbiBzZXNzaW9uXG4gICAgICAgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIExpc3RzIHVzZXIgcGVybWlzc2lvbiBhbmQgYWNjZXNzIGZvciB0aGUgc2Vzc2lvblxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcInNpZ246KlwiLFxuICAgICAgICogICBcIm1hbmFnZTptZmE6dm90ZTpjc1wiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3Blcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2NvcGVcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHNlc3Npb24sIGJ1dCBjYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC5cbiAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAqL1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbGxlY3Rpb24gb2YgYXR0cmlidXRlcyByZWxhdGVkIHRvIGEgU2Vzc2lvbi5cbiAgICAgKiBUaGlzIGlzIHRoZSBiYWNrZW5kIHZhcmlhbnQgb2YgW2BDbGllbnRTZXNzaW9uTWV0YWRhdGFgXSBhbmQgd29ya3MgaW4gdGFuZGVtIHdpdGggaXRzIGZyb250ZW5kIGNvdW50ZXJwYXJ0LlxuICAgICAqL1xuICAgIFNlc3Npb25NZXRhZGF0YToge1xuICAgICAgY2xpZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRQcm9maWxlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyIHdobyBjcmVhdGVkIHRoZSBzZXNzaW9uLlxuICAgICAgICogQGV4YW1wbGUgVXNlciNlZjQxMzZkZC1kMjJmLTQ1YmMtYTY1Yy0xMmI0YmFhNzI5ZDRcbiAgICAgICAqL1xuICAgICAgY3JlYXRlZF9ieT86IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT1MgU3RyaW5nIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgc2VlIG9zX2luZm8gaW5zdGVhZC4gKi9cbiAgICAgIG9zPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIG9zX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9zSW5mb1wiXTtcbiAgICAgIHNvdXJjZV9pcD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU291cmNlSXBcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBVc2VyIGFnZW50IHRoYXQgY3JlYXRlZCB0aGUgc2Vzc2lvbi5cbiAgICAgICAqIEBleGFtcGxlIE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIHgueTsgcnY6NDIuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC80Mi4wXG4gICAgICAgKi9cbiAgICAgIHVzZXJfYWdlbnQ/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgZnJvbSBhbnkgb3BlcmF0aW9uIG9wZXJhdGluZyBvbiBtdWx0aXBsZSBzZXNzaW9ucyAqL1xuICAgIFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IGZvciBzZXR0aW5nIGFuIE9yZy1sZXZlbCBwb2xpY3kgc2VjcmV0LlxuICAgICAqXG4gICAgICogRWl0aGVyIGB2YWx1ZWAgb3IgYGFjbGAgbXVzdCBiZSBwcm92aWRlZC5cbiAgICAgKi9cbiAgICBTZXRQb2xpY3lTZWNyZXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2VjcmV0J3MgYWNjZXNzLWNvbnRyb2wgZW50cmllcy5cbiAgICAgICAqIENhbiBiZSBgTm9uZWAgaWYgdGhlIHJlcXVlc3QgaXMgY3JlYXRpbmcgYSBzZWNyZXQgd2l0aG91dCBBQ0wgb3IgdXBkYXRpbmcgYW5cbiAgICAgICAqIGV4aXN0aW5nIHNlY3JldCdzIHZhbHVlLlxuICAgICAgICovXG4gICAgICBhY2w/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgaW1wb3J0X2tleT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdIHwgbnVsbDtcbiAgICAgIHZhbHVlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNyZXRWYWx1ZVwiXSB8IG51bGw7XG4gICAgfTtcbiAgICBTaWduRGltZW5zaW9uczoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbiBvcGVyYXRpb24gKi9cbiAgICAgIG9wZXJhdGlvbjogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbWV0cmljcyBtdXN0IGluY2x1ZGUgJ29yZ19pZCcgYXMgYSBkaW1lbnNpb24uICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIFNpZ25EcnlSdW5BcmdzOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgTUZBIGlzIHJlcXVpcmVkICovXG4gICAgICBtZmFfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZSwgaWYgcmVxdWVzdGVkICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9O1xuICAgIFNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHJlc3VsdGluZyBzaWduYXR1cmUuICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFNpZ25hdHVyZVZlcnNpb246IFwiZWlwXzcxMl92M1wiIHwgXCJlaXBfNzEyX3Y0XCIgfCBcInBlcnNvbmFsX3NpZ25cIjtcbiAgICBTaWduZWRNZXNzYWdlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYWRkcmVzcyBvZiB0aGUgc2lnbmVyLCB3aXRoIGxlYWRpbmcgJzB4J1xuICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgKi9cbiAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSByZXF1ZXN0IHJlY29yZC4gKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzaWduYXR1cmUsIGhleCBlbmNvZGVkLCB3aXRoIGxlYWRpbmcgJzB4JyAqL1xuICAgICAgc2lnbmF0dXJlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHNpZ25hdHVyZVZlcnNpb246IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmF0dXJlVmVyc2lvblwiXTtcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNbWlTdGF0dXNcIl07XG4gICAgfTtcbiAgICBTaWduZXJFcnJvckNvZGU6XG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVyRXJyb3JPd25Db2Rlc1wiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkVmFsdWVDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFkUmVxdWVzdEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJhZEdhdGV3YXlFcnJvckNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RGb3VuZEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZvcmJpZGRlbkVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuYXV0aG9yaXplZEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZWNvbmRpdGlvbkVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRpbWVvdXRFcnJvckNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb25mbGljdEVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludGVybmFsRXJyb3JDb2RlXCJdO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFNpZ25lckVycm9yT3duQ29kZXM6XG4gICAgICB8IFwiUHJlQ29tcHV0ZWRcIlxuICAgICAgfCBcIlN0YXR1c0NvZGVXaXRoTWVzc2FnZVwiXG4gICAgICB8IFwiSnJwY0Vycm9yXCJcbiAgICAgIHwgXCJVbmhhbmRsZWRFcnJvclwiXG4gICAgICB8IFwiUHJveHlTdGFydEVycm9yXCJcbiAgICAgIHwgXCJFbmNsYXZlRXJyb3JcIlxuICAgICAgfCBcIlBvbGljeUVycm9yV2l0aEV2YWxUcmVlXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbnN3ZXIgdG8gYSBTaWduLWluIHdpdGggRXRoZXJldW0gY2hhbGxlbmdlLiAqL1xuICAgIFNpd2VDb21wbGV0ZVJlcXVlc3Q6IHtcbiAgICAgIGNoYWxsZW5nZV9pZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIEVJUC0xOTEgc2lnbmF0dXJlIG9mIHRoZSBtZXNzYWdlIHJldHVybmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIFBPU1QgKCdpbml0JykgZW5kcG9pbnQgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXR1cm5lZCB1cG9uIGEgc3VjY2Vzc2Z1bCBTSVdFIGF1dGhlbnRpY2F0aW9uLiAqL1xuICAgIFNpd2VDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHRva2VuIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVzZXIgd2l0aCB0aGUgcmVxdWVzdGVkIFNJV0UgaWRlbnRpdHkuICovXG4gICAgICBpZF90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgdGhlIHJlcXVlc3QgdG8gc2lnbiBpbiB3aXRoIGV0aGVyZXVtLiBUaGUgcmVzcG9uc2Ugd2lsbFxuICAgICAqIGNvbnRhaW4gYSBTSVdFIG1lc3NhZ2UgdGhhdCB0aGUgY2xpZW50IGhhcyB0byBzaWduIGFuZCBzdWJtaXQgdmlhIHRoZVxuICAgICAqIGNvcnJlc3BvbmRpbmcgUEFUQ0ggZW5kcG9pbnQgd2l0aGluIDUgbWludXRlcy5cbiAgICAgKi9cbiAgICBTaXdlSW5pdFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIEV0aGVyZXVtIGFkZHJlc3MgcGVyZm9ybWluZyB0aGUgc2lnbmluZyBjb25mb3JtYW50IHRvIGNhcGl0YWxpemF0aW9uIGVuY29kZWQgY2hlY2tzdW0gc3BlY2lmaWVkIGluIEVJUC01NS4gKi9cbiAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIFJGQyAzOTg2IGF1dGhvcml0eSB0aGF0IGlzIHJlcXVlc3RpbmcgdGhlIHNpZ25pbmcuICovXG4gICAgICBkb21haW46IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElTTyA4NjAxIGRhdGV0aW1lIHN0cmluZyB0aGF0LCBpZiBwcmVzZW50LCBpbmRpY2F0ZXMgd2hlbiB0aGUgc2lnbmVkIGF1dGhlbnRpY2F0aW9uIG1lc3NhZ2UgaXMgbm8gbG9uZ2VyIHZhbGlkLiAqL1xuICAgICAgZXhwaXJhdGlvbl90aW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElTTyA4NjAxIGRhdGV0aW1lIHN0cmluZyB0aGF0LCBpZiBwcmVzZW50LCBpbmRpY2F0ZXMgd2hlbiB0aGUgc2lnbmVkIGF1dGhlbnRpY2F0aW9uIG1lc3NhZ2Ugd2lsbCBiZWNvbWUgdmFsaWQuICovXG4gICAgICBub3RfYmVmb3JlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzeXN0ZW0tc3BlY2lmaWMgaWRlbnRpZmllciB0aGF0IG1heSBiZSB1c2VkIHRvIHVuaXF1ZWx5IHJlZmVyIHRvIHRoZSBzaWduLWluIHJlcXVlc3QuICovXG4gICAgICByZXF1ZXN0X2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBsaXN0IG9mIGluZm9ybWF0aW9uIG9yIHJlZmVyZW5jZXMgdG8gaW5mb3JtYXRpb24gdGhlIHVzZXIgd2lzaGVzIHRvIGhhdmUgcmVzb2x2ZWQgYXMgcGFydCBvZiBhdXRoZW50aWNhdGlvbiBieSB0aGUgcmVseWluZyBwYXJ0eS4gVGhleSBhcmUgZXhwcmVzc2VkIGFzIFJGQyAzOTg2IFVSSXMgc2VwYXJhdGVkIGJ5IFwiXFxuLSBcIiB3aGVyZSBcXG4gaXMgdGhlIGJ5dGUgMHgwYS4gKi9cbiAgICAgIHJlc291cmNlcz86IHN0cmluZ1tdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIEFTQ0lJIGFzc2VydGlvbiB0aGF0IHRoZSB1c2VyIHdpbGwgc2lnbiwgYW5kIGl0IG11c3Qgbm90IGNvbnRhaW4gJ1xcbicgKHRoZSBieXRlIDB4MGEpLiAqL1xuICAgICAgc3RhdGVtZW50Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gUkZDIDM5ODYgVVJJIHJlZmVycmluZyB0byB0aGUgcmVzb3VyY2UgdGhhdCBpcyB0aGUgc3ViamVjdCBvZiB0aGUgc2lnbmluZyAoYXMgaW4gdGhlIHN1YmplY3Qgb2YgYSBjbGFpbSkuICovXG4gICAgICB1cmk6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIGNoYWxsZW5nZSByZXR1cm5lZCBpbiByZXNwb25zZSB0byBhIFNpZ24tSW4gd2l0aCBFdGhlcmV1bSByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQ29udGFpbnMgYSBtZXNzYWdlIHRoYXQgdGhlIGNsaWVudCBtdXN0IHNpZ24gZm9sbG93aW5nIEVJUC0xOTFcbiAgICAgKiB3aXRoIHRoZSByZXF1ZXN0ZWQga2V5IGluIG9yZGVyIHRvIGNvbXBsZXRlIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqXG4gICAgICogVGhlIGNsaWVudCBoYXMgdW50aWwgdGhlIG1lc3NhZ2UgZXhwaXJlcyAoYnV0IG5vIG1vcmUgdGhhbiA1IG1pbnV0ZXMpIHRvIGNvbXBsZXRlIHRoZSBjaGFsbGVuZ2UuXG4gICAgICovXG4gICAgU2l3ZUluaXRSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSAodG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdCB3aGVuIGNhbGxpbmcgdGhlIFBBVENIICgnY29tcGxldGUnKSBlbmRwb2ludCkgKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWVzc2FnZSB0byBzaWduIGZvbGxvd2luZyB0aGUgRUlQLTE5MSBzdGFuZGFyZC4gKi9cbiAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBTb2xhbmEgYWRkcmVzcyBhbmQgdGhlIGNsdXN0ZXIgaXQgaXMgb24uICovXG4gICAgU29sYW5hQWRkcmVzc0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTb2xhbmEgYWRkcmVzcy5cbiAgICAgICAqIEBleGFtcGxlIEVQdzRMc053Q1lDWVhhY2UxQkt2d0xjZDdvZVp6UmlZR3VHRTV6ZlB2b1B5XG4gICAgICAgKi9cbiAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgIGNsdXN0ZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU29sYW5hQ2x1c3RlclwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdXBwb3J0ZWQgU29sYW5hIGNsdXN0ZXJzLlxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgU29sYW5hQ2x1c3RlcjogXCJtYWlubmV0XCIgfCBcImRldm5ldFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTb2xhbmEgc2lnbmluZyByZXF1ZXN0XG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJtZXNzYWdlX2Jhc2U2NFwiOiBcIkFRQUJBOE9LVnpMRWpzdHN0TjR4WHIzOWtMS0hUOGQ1OGVRWTFRRXM2TWVYd0VGQnJ4VEFsVUxYMXRyb0xiV3h1QVhRcWdiUW9mR2k2ejhmSmk3S0FBSWY3WU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKSzB0bjM5azI4cytYODZXNDdFdmJSUktuWUJWUThRL2wybTFFYmZUNyt2QVFJQ0FBRU1BZ0FBQUdRQUFBQUFBQUFBXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgU29sYW5hU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHByb2R1Y2UgYSB2YWxpZCBzaWduYXR1cmUsIGp1c3QgZXZhbHVhdGUgYXR0YWNoZWQgcG9saWNpZXMuICovXG4gICAgICBkcnlfcnVuPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTb2xhbmEgYmFzZTY0LWVuY29kZWQgc2VyaWFsaXplZCBNZXNzYWdlICovXG4gICAgICBtZXNzYWdlX2Jhc2U2NDogc3RyaW5nO1xuICAgIH07XG4gICAgU29sYW5hVHhDbXA6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgJ3JlY2VudF9ibG9ja2hhc2gnIHByb3BlcnR5IG9mIHRoZSBTb2xhbmEgdHJhbnNhY3Rpb24gaXMgYWxsb3dlZCB0byBiZSBkaWZmZXJlbnQuICovXG4gICAgICBpZ25vcmVfYmxvY2toYXNoPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIFNvdXJjZUlwOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBjYWxsZXIuICovXG4gICAgICBzb3VyY2VfaXA6IHN0cmluZztcbiAgICB9O1xuICAgIFN0YWtlUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gb24gd2hpY2ggd2Ugd2lsbCBkZXBvc2l0XG4gICAgICAgKiBAZXhhbXBsZSA1XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICBkZXBvc2l0X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBzdGFraW5nIGFtb3VudCBpbiBHV0VJLlxuICAgICAgICogSWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdHMgdG8gMzJfMDAwXzAwMF8wMDAgKDMyIEVUSCkuXG4gICAgICAgKiBNdXN0IGJlIGJldHdlZW4gMSBFVEggYW5kIDMyIEVUSC5cbiAgICAgICAqIE11c3Qgbm90IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gJ2RlcG9zaXRfdHlwZScgaXMgXCJXcmFwcGVyXCIuXG4gICAgICAgKi9cbiAgICAgIHN0YWtpbmdfYW1vdW50X2d3ZWk/OiBudW1iZXI7XG4gICAgICB1bnNhZmVfY29uZj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5zYWZlQ29uZlwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIEJMUyBwdWJsaWMga2V5IHRvIHVzZSwgb3IgYE5vbmVgIHRvIGdlbmVyYXRlIGEgZnJlc2ggb25lLlxuICAgICAgICogQGV4YW1wbGUgMHhhOTlhNzZlZDc3OTZmN2JlMjJkNWI3ZTg1ZGVlYjdjNTY3N2U4OGU1MTFlMGIzMzc2MThmOGM0ZWI2MTM0OWI0YmYyZDE1M2Y2NDlmN2I1MzM1OWZlOGI5NGEzOGU0NGNcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXRoZXJldW0gYWRkcmVzcyB0byB3aGljaCB3aXRoZHJhd24gZnVuZHMgZ29cbiAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICB3aXRoZHJhd2FsX2FkZHI6IHN0cmluZztcbiAgICB9O1xuICAgIFN0YWtlUmVzcG9uc2U6ICh7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgZGVwb3NpdF90eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHhuXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbGlkYXRvciBrZXkgaWQgKFwiS2V5Iy4uLlwiKVxuICAgICAgICogQGV4YW1wbGUgS2V5I2RiMTczMWY4LTM2NTktNDVjMC04ODViLWUxMWUxZjViN2JlMlxuICAgICAgICovXG4gICAgICBjcmVhdGVkX3ZhbGlkYXRvcl9rZXlfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIFN0YXR1czoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVc2VycyB3aG8gYXJlIGFsbG93ZWQgdG8gYXBwcm92ZS4gTXVzdCBiZSBub24tZW1wdHkuICovXG4gICAgICBhbGxvd2VkX2FwcHJvdmVyczogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbG93ZWQgYXBwcm92YWwgdHlwZXMuIFdoZW4gb21pdHRlZCwgZGVmYXVsdHMgdG8gYW55LiAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl1bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXJzIHdobyBoYXZlIGFscmVhZHkgYXBwcm92ZWQgKi9cbiAgICAgIGFwcHJvdmVkX2J5OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFwcHJvdmFsSW5mb1wiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSB1c2VycyBtdXN0IGFwcHJvdmVcbiAgICAgICAqL1xuICAgICAgY291bnQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55IGF1dGggZmFjdG9ycyB0byByZXF1aXJlIHBlciB1c2VyXG4gICAgICAgKi9cbiAgICAgIG51bV9hdXRoX2ZhY3RvcnM6IG51bWJlcjtcbiAgICAgIHJlcXVlc3RfY29tcGFyZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0Q21wXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgc2luZ2xlIGFzc2V0IGJhbGFuY2UgZW50cnkgcmV0dXJuZWQgYnkgW2BTdWJBY2NvdW50QXNzZXRzUmVzcG9uc2VgXS5cbiAgICAgKlxuICAgICAqIEFsbCBiYWxhbmNlIGZpZWxkcyBhcmUgZGVjaW1hbCBzdHJpbmdzIChCaW5hbmNlIHByZXNlcnZlcyBwcmVjaXNpb24gYnkgbm90XG4gICAgICogY29udmVydGluZyB0byBmbG9hdHMpLlxuICAgICAqL1xuICAgIFN1YkFjY291bnRBc3NldDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBc3NldCBzeW1ib2wgKGUuZy4gYFwiVVNEVFwiYCwgYFwiQlRDXCJgKS4gKi9cbiAgICAgIGFzc2V0OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEF2YWlsYWJsZSBiYWxhbmNlLiAqL1xuICAgICAgZnJlZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYWxhbmNlIGZyb3plbiBieSBCaW5hbmNlIChlLmcuIGR1ZSB0byBjb21wbGlhbmNlIGhvbGRzKS4gKi9cbiAgICAgIGZyZWV6ZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYWxhbmNlIGxvY2tlZCBpbiBvcGVuIG9yZGVycy4gKi9cbiAgICAgIGxvY2tlZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYWxhbmNlIGN1cnJlbnRseSBiZWluZyB3aXRoZHJhd24uICovXG4gICAgICB3aXRoZHJhd2luZzogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIGBHRVQgL3NhcGkvdjQvc3ViLWFjY291bnQvYXNzZXRzYC5cbiAgICAgKlxuICAgICAqIFF1ZXJpZXMgdGhlIHNwb3Qtd2FsbGV0IGJhbGFuY2VzIG9mIGEgc2luZ2xlIHN1Yi1hY2NvdW50LiBNdXN0IGJlIGNhbGxlZCBieVxuICAgICAqIGEgbWFzdGVyLWFjY291bnQgY3JlZGVudGlhbC5cbiAgICAgKi9cbiAgICBTdWJBY2NvdW50QXNzZXRzUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbWFpbCBhZGRyZXNzIG9mIHRoZSBzdWItYWNjb3VudCB3aG9zZSBiYWxhbmNlcyB0byBmZXRjaC4gKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIGJ5IGBjc19iaW5hbmNlU3ViQWNjb3VudEFzc2V0c2AuICovXG4gICAgU3ViQWNjb3VudEFzc2V0c1Jlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPbmUgZW50cnkgcGVyIGFzc2V0IGhlbGQgaW4gdGhlIHN1Yi1hY2NvdW50J3Mgc3BvdCB3YWxsZXQuIEJpbmFuY2VcbiAgICAgICAqIG9taXRzIGFzc2V0cyB3aXRoIGFsbC16ZXJvIGJhbGFuY2VzLlxuICAgICAgICovXG4gICAgICBiYWxhbmNlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdWJBY2NvdW50QXNzZXRcIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT25lIHRyYW5zZmVyIGVudHJ5IGluIFtgU3ViQWNjb3VudFRyYW5zZmVySGlzdG9yeVJlc3BvbnNlYF0uICovXG4gICAgU3ViQWNjb3VudFRyYW5zZmVySGlzdG9yeUVudHJ5OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFzc2V0IHN5bWJvbCAoZS5nLiBgXCJVU0RUXCJgKS4gKi9cbiAgICAgIGFzc2V0OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEVtYWlsIG9mIHRoZSBjb3VudGVycGFydHkgYWNjb3VudCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgdHJhbnNmZXIuICovXG4gICAgICBjb3VudGVyUGFydHk6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVtYWlsIG9mIHRoZSBhY2NvdW50IHRoaXMgZW50cnkncyBBUEkga2V5IGF1dGhlbnRpY2F0ZXMgYXMuIEJpbmFuY2VcbiAgICAgICAqIHJldHVybnMgdGhpcyBvbiBlYWNoIHJvdyBldmVuIHRob3VnaCBpdCBpcyB0aGUgc2FtZSBmb3IgdGhlIHdob2xlIHBhZ2UuXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXYWxsZXQgdHlwZSBkZWJpdGVkIG9uIHRoZSBzb3VyY2Ugc2lkZSAoZS5nLiBgXCJTUE9UXCJgLFxuICAgICAgICogYFwiVVNEVF9GVVRVUkVcImApLiBMZWZ0IGFzIGBTdHJpbmdgIGZvciBmb3J3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAgICAgKi9cbiAgICAgIGZyb21BY2NvdW50VHlwZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbW91bnQgdHJhbnNmZXJyZWQsIGFzIGEgZGVjaW1hbCBzdHJpbmcuICovXG4gICAgICBxdHk6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zZmVyIHN0YXR1czogYFwiUFJPQ0VTU1wiYCwgYFwiU1VDQ0VTU1wiYCwgb3IgYFwiRkFJTFVSRVwiYC4gTGVmdCBhc1xuICAgICAgICogYFN0cmluZ2AgZm9yIGZvcndhcmQgY29tcGF0aWJpbGl0eS5cbiAgICAgICAqL1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaW1lIG9mIHRoZSB0cmFuc2ZlciAobXMgc2luY2UgZXBvY2gpLlxuICAgICAgICovXG4gICAgICB0aW1lOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdhbGxldCB0eXBlIGNyZWRpdGVkIG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlLiAqL1xuICAgICAgdG9BY2NvdW50VHlwZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNmZXIgaWQuIE1hdGNoZXMgdGhlIGB0eG5JZGAgcmV0dXJuZWQgYnkgdGhlIG9yaWdpbmFsXG4gICAgICAgKiBbYFN1YkFjY291bnRUcmFuc2ZlclJlc3BvbnNlYF0uXG4gICAgICAgKi9cbiAgICAgIHRyYW5JZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gYDFgID0gdHJhbnNmZXIgaW4sIGAyYCA9IHRyYW5zZmVyIG91dC5cbiAgICAgICAqL1xuICAgICAgdHlwZTogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIGBHRVQgL3NhcGkvdjEvc3ViLWFjY291bnQvdHJhbnNmZXIvc3ViVXNlckhpc3RvcnlgLlxuICAgICAqXG4gICAgICogTGlzdHMgdGhlIHRyYW5zZmVyIGhpc3Rvcnkgb2YgdGhlIGNhbGxpbmcgc3ViLWFjY291bnQuIENvdmVycyBib3RoXG4gICAgICogc3ViLXRvLW1hc3RlciBhbmQgc3ViLXRvLXN1YiB0cmFuc2ZlcnMuIEFsbCBmaWx0ZXJzIGFyZSBvcHRpb25hbDsgaWZcbiAgICAgKiBgc3RhcnRfdGltZWAvYGVuZF90aW1lYCBhcmUgb21pdHRlZCwgQmluYW5jZSByZXR1cm5zIHRoZSBtb3N0IHJlY2VudCAzMFxuICAgICAqIGRheXMuIElmIGByI3R5cGVgIGlzIG9taXR0ZWQsIEJpbmFuY2UgZGVmYXVsdHMgdG8gYFRyYW5zZmVyT3V0YCAoYDJgKS5cbiAgICAgKi9cbiAgICBTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBGaWx0ZXIgdG8gYSBzcGVjaWZpYyBhc3NldCAoZS5nLiBgXCJVU0RUXCJgKS4gKi9cbiAgICAgIGFzc2V0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFdpbmRvdyBlbmQgKG1zIHNpbmNlIGVwb2NoKS5cbiAgICAgICAqL1xuICAgICAgZW5kVGltZT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQYWdlIHNpemUgKEJpbmFuY2UgZGVmYXVsdDogNTAwKS5cbiAgICAgICAqL1xuICAgICAgbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgYHRydWVgLCBpbmNsdWRlIGZhaWxlZCB0cmFuc2ZlcnMgaW4gdGhlIHJlc3BvbnNlLiBCaW5hbmNlIGRlZmF1bHRzXG4gICAgICAgKiB0byBgZmFsc2VgLlxuICAgICAgICovXG4gICAgICByZXR1cm5GYWlsSGlzdG9yeT86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2luZG93IHN0YXJ0IChtcyBzaW5jZSBlcG9jaCkuXG4gICAgICAgKi9cbiAgICAgIHN0YXJ0VGltZT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBEaXJlY3Rpb24gZmlsdGVyIChgMWAgPSB0cmFuc2ZlciBpbiwgYDJgID0gdHJhbnNmZXIgb3V0KS5cbiAgICAgICAqL1xuICAgICAgdHlwZT86IG51bWJlciB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgYnkgYGNzX2JpbmFuY2VTdWJBY2NvdW50VHJhbnNmZXJIaXN0b3J5YC5cbiAgICAgKlxuICAgICAqIEJpbmFuY2UgcmV0dXJucyBhIHRvcC1sZXZlbCBKU09OIGFycmF5OyB0aGlzIG5ld3R5cGUgcHJlc2VydmVzIHRoYXQgd2lyZVxuICAgICAqIGZvcm1hdCB3aGlsZSBnaXZpbmcgdGhlIHJlc3BvbnNlIGEgbmFtZWQgdHlwZSBpbiB0aGUgT3BlbkFQSSBzY2hlbWEuXG4gICAgICovXG4gICAgU3ViQWNjb3VudFRyYW5zZmVySGlzdG9yeVJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN1YkFjY291bnRUcmFuc2Zlckhpc3RvcnlFbnRyeVwiXVtdO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgYnkgYGNzX2JpbmFuY2VTdWJUb01hc3RlcmAgYW5kIGBjc19iaW5hbmNlU3ViVG9TdWJgLiAqL1xuICAgIFN1YkFjY291bnRUcmFuc2ZlclJlc3BvbnNlOiB7XG4gICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgdHhuSWQ6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBgUE9TVCAvc2FwaS92MS9zdWItYWNjb3VudC90cmFuc2Zlci9zdWJUb01hc3RlcmAuXG4gICAgICpcbiAgICAgKiBUcmFuc2ZlcnMgYW4gYXNzZXQgZnJvbSB0aGUgY2FsbGVyJ3Mgc3ViLWFjY291bnQgdG8gdGhlIG1hc3RlciBhY2NvdW50LlxuICAgICAqL1xuICAgIFN1YlRvTWFzdGVyUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGFtb3VudCBiZWluZyB0cmFuc2ZlcnJlZCwgZm9ybWF0dGVkIGFzIGEgZGVjaW1hbCBzdHJpbmcgKGUuZy4gYFwiMC4xXCJgKS5cbiAgICAgICAqIFNlbnQgdmVyYmF0aW06IEJpbmFuY2UgaXMgc3RyaWN0IGFib3V0IGRlY2ltYWwgZm9ybWF0dGluZy5cbiAgICAgICAqL1xuICAgICAgYW1vdW50OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhc3NldCBzeW1ib2wgYmVpbmcgdHJhbnNmZXJyZWQgKGUuZy4gYFwiVVNEVFwiYCwgYFwiQlRDXCJgKS4gKi9cbiAgICAgIGFzc2V0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYFBPU1QgL3NhcGkvdjEvc3ViLWFjY291bnQvdHJhbnNmZXIvc3ViVG9TdWJgLlxuICAgICAqXG4gICAgICogVHJhbnNmZXJzIGFuIGFzc2V0IGZyb20gdGhlIGNhbGxlcidzIHN1Yi1hY2NvdW50IHRvIGFub3RoZXIgc3ViLWFjY291bnRcbiAgICAgKiB1bmRlciB0aGUgc2FtZSBtYXN0ZXIgYWNjb3VudC5cbiAgICAgKi9cbiAgICBTdWJUb1N1YlJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFtb3VudCBiZWluZyB0cmFuc2ZlcnJlZCwgYXMgYSBkZWNpbWFsIHN0cmluZyAoZS5nLiBgXCIwLjFcImApLiAqL1xuICAgICAgYW1vdW50OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhc3NldCBzeW1ib2wgYmVpbmcgdHJhbnNmZXJyZWQgKGUuZy4gYFwiVVNEVFwiYCkuICovXG4gICAgICBhc3NldDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRW1haWwgYWRkcmVzcyBvZiB0aGUgZGVzdGluYXRpb24gc3ViLWFjY291bnQuIE11c3QgYmUgYSBzdWItYWNjb3VudCBvZlxuICAgICAgICogdGhlIHNhbWUgbWFzdGVyLlxuICAgICAgICovXG4gICAgICB0b0VtYWlsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXR1cyBvZiBhIHN1YnNjcmlwdGlvblxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgU3Vic2NyaXB0aW9uU3RhdHVzOiBcIkNvbmZpcm1lZFwiIHwgXCJQZW5kaW5nXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIFN1aSBhZGRyZXNzIGFuZCBpdHMgY2hhaW4uICovXG4gICAgU3VpQWRkcmVzc0luZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTdWkgYWRkcmVzcy5cbiAgICAgICAqIEBleGFtcGxlIDB4NGU4NzEyZTM4YjA5YjU0NjdjMTBmZGM0MGZhNzg2NWE2NTU2Mzk4M2VlYjc0YjI0NmRmOTgxZTYxYTY2Yjk4ZFxuICAgICAgICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICBjaGFpbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdWlDaGFpblwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdXBwb3J0ZWQgU3VpIGNoYWlucy5cbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFN1aUNoYWluOiBcIm1haW5uZXRcIiB8IFwiZGV2bmV0XCIgfCBcInRlc3RuZXRcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gc2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uICovXG4gICAgU3VpU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHByb2R1Y2UgYSB2YWxpZCBzaWduYXR1cmUsIGp1c3QgZXZhbHVhdGUgYXR0YWNoZWQgcG9saWNpZXMuICovXG4gICAgICBkcnlfcnVuPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kaW5nIG9mIGEgQkNTLXNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgICAgICpcbiAgICAgICAqIFdoZW4gdXNpbmcgdGhlIFNVSSBUeXBlU2NyaXB0IFNESywgdGhlc2UgYnl0ZXNcbiAgICAgICAqIGFyZSByZXR1cm5lZCBieSB0aGUgYFRyYW5zYWN0aW9uLmJ1aWxkKClgIG1ldGhvZC5cbiAgICAgICAqL1xuICAgICAgdHg6IHN0cmluZztcbiAgICB9O1xuICAgIFRhcHJvb3RTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEbyBub3QgcHJvZHVjZSBhIHZhbGlkIHNpZ25hdHVyZSwganVzdCBldmFsdWF0ZSBhdHRhY2hlZCBwb2xpY2llcy4gKi9cbiAgICAgIGRyeV9ydW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSwgZXhwbGFpbmluZ1xuICAgICAgICogdGhlIG91dGNvbWUgKGkuZS4sIHBlcm1pdHRlZCB2cy4gZGVuaWVkIHZzLiBNRkEgcmVxdWlyZWQpIG9mIHRoZSBzaWduIHJlcXVlc3QuXG4gICAgICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBNRkEgaXMgcmVxdWlyZWQsIGZhaWwgdGhlIHJlcXVlc3QgaW5zdGVhZCBvZiByZXR1cm5pbmcgMjAyIGFuZCBjcmVhdGluZ1xuICAgICAgICogcGVuZGluZyBNRkEgcmVxdWVzdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGZhaWxfb25fbWZhPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG1ldGFkYXRhLiBQYXNzaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXMgbWV0YWRhdGEgY2FuIGJlIHVzZWQgdG8gbWFrZSByZXZpZXdpbmdcbiAgICAgICAqIG9mIHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFuZC9vciBoaXN0b3JpY2FsIGtleSB0cmFuc2FjdGlvbnMgbW9yZSB0cmFuc3BhcmVudC4gSXQgY2FuIGFsc28gYmUgdXNlZCBlLmcuLCB0byBjYXJyeSBhZGRpdGlvbmFsIGRhdGEgdG8gV2ViSG9vayBwb2xpY2llcy5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgIH0gJiB7XG4gICAgICBzaWdfa2luZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUYXByb290U2lnbmF0dXJlS2luZFwiXTtcbiAgICAgIHR4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1R4XCJdO1xuICAgIH07XG4gICAgVGFwcm9vdFNpZ25hdHVyZUtpbmQ6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgYW5uZXgsIGFzIHBlciBCSVAzNDEgKi9cbiAgICAgIGFubmV4Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uIGlucHV0IGluZGV4XG4gICAgICAgKiBAZXhhbXBsZSAwXG4gICAgICAgKi9cbiAgICAgIGlucHV0X2luZGV4OiBudW1iZXI7XG4gICAgICBsZWFmX2hhc2hfY29kZV9zZXBhcmF0b3I/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y0xlYWZIYXNoQ29kZVNlcGFyYXRvclwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBwcmVzZW50IG9yIG51bGwsIG5vIHR3ZWFrIGlzIGFwcGxpZWQuIElmIHRoZSBmaWVsZCBpcyBhblxuICAgICAgICogZW1wdHkgc3RyaW5nLCB0aGUga2V5IGlzIHR3ZWFrZWQgd2l0aCBhbiB1bnNwZW5kYWJsZSBzY3JpcHQgcGF0aCBwZXIgQklQMDM0MS5cbiAgICAgICAqIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBtdXN0IGNvbnRhaW4gYSBiYXNlLTY0IHN0cmluZyBlbmNvZGluZyAzMiBieXRlcyB0aGF0XG4gICAgICAgKiByZXByZXNlbnQgdGhlIE1lcmtsZSByb290IHdpdGggd2hpY2ggdG8gdHdlYWsgdGhlIGtleSBiZWZvcmUgc2lnbmluZy5cbiAgICAgICAqIEBleGFtcGxlIEY0MUhBeTJxNUduOGxhRjJDdU1zWmJSQVFUbUQrNE9iM1ZVTVo3VEJHSzQ9XG4gICAgICAgKi9cbiAgICAgIG1lcmtsZV9yb290Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHByZXZvdXRzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZXZPdXRwdXRzXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGFzaCB0eXBlIG9mIGFuIGlucHV0J3Mgc2lnbmF0dXJlLCBlbmNvZGVkIGluIHRoZSBsYXN0IGJ5dGUgb2YgdGhlIHNpZ25hdHVyZS5cbiAgICAgICAqIFBvc3NpYmxlIHZhbHVlczpcbiAgICAgICAqIC0gU0lHSEFTSF9BTExcbiAgICAgICAqIC0gU0lHSEFTSF9BTEx8U0lHSEFTSF9BTllPTkVDQU5QQVlcbiAgICAgICAqIC0gU0lHSEFTSF9ERUZBVUxUXG4gICAgICAgKiAtIFNJR0hBU0hfTk9ORVxuICAgICAgICogLSBTSUdIQVNIX05PTkV8U0lHSEFTSF9BTllPTkVDQU5QQVlcbiAgICAgICAqIC0gU0lHSEFTSF9TSU5HTEVcbiAgICAgICAqIC0gU0lHSEFTSF9TSU5HTEV8U0lHSEFTSF9BTllPTkVDQU5QQVlcbiAgICAgICAqIEBleGFtcGxlIFNJR0hBU0hfQUxMXG4gICAgICAgKi9cbiAgICAgIHNpZ2hhc2hfdHlwZTogc3RyaW5nO1xuICAgIH07XG4gICAgVGVsZWdyYW1BdXRoUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdGVsZWdyYW0gYm90IElEICovXG4gICAgICBib3RfaWQ6IHN0cmluZztcbiAgICAgIGVudmlyb25tZW50OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRlbGVncmFtRW52aXJvbm1lbnRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0ZWxlZ3JhbSB3ZWJhcHAgZGF0YSAoZm91bmQgaW4gdGhlIGB0Z1dlYkFwcERhdGFgIHBhcmFtZXRlciBlbmNvZGVkIGluIHRoZSBoYXNoIHNlY3Rpb24gb2YgdGhlIFVSTCkgKi9cbiAgICAgIHRnX3dlYl9hcHBfZGF0YTogc3RyaW5nO1xuICAgIH07XG4gICAgVGVsZWdyYW1BdXRoUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGlzIHRlbGVncmFtIHVzZXIgKi9cbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGVsZWdyYW0gaGFzIHR3byBlbnZpcm9ubWVudHM6IHByb2R1Y3Rpb24gYW5kIHRlc3RcbiAgICAgKiBFYWNoIG9uZSBoYXMgYW4gYXNzb2NpYXRlZCBwdWJsaWMga2V5IGZvciB2ZXJpZnlpbmcgc2lnbmF0dXJlcyxcbiAgICAgKiBhbmQgd2UgYXNzaWduIGVhY2ggb25lIGEgdW5pcXVlIE9JREMgaXNzdWVyXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBUZWxlZ3JhbUVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIiB8IFwidGVzdFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlcXVlc3QgZm9yIHVzaW5nIHRoZSBUZW5kZXJtaW50IHNpZ24gZW5kcG9pbnQuICovXG4gICAgVGVuZGVybWludFNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCBwcm9kdWNlIGEgdmFsaWQgc2lnbmF0dXJlLCBqdXN0IGV2YWx1YXRlIGF0dGFjaGVkIHBvbGljaWVzLiAqL1xuICAgICAgZHJ5X3J1bj86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLCBleHBsYWluaW5nXG4gICAgICAgKiB0aGUgb3V0Y29tZSAoaS5lLiwgcGVybWl0dGVkIHZzLiBkZW5pZWQgdnMuIE1GQSByZXF1aXJlZCkgb2YgdGhlIHNpZ24gcmVxdWVzdC5cbiAgICAgICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBleHBsYWluPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIE1GQSBpcyByZXF1aXJlZCwgZmFpbCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIHJldHVybmluZyAyMDIgYW5kIGNyZWF0aW5nXG4gICAgICAgKiBwZW5kaW5nIE1GQSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAqL1xuICAgICAgZmFpbF9vbl9tZmE/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbWV0YWRhdGEuIFBhc3NpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBtYWtlIHJldmlld2luZ1xuICAgICAgICogb2YgcGVuZGluZyBNRkEgcmVxdWVzdHMgYW5kL29yIGhpc3RvcmljYWwga2V5IHRyYW5zYWN0aW9ucyBtb3JlIHRyYW5zcGFyZW50LiBJdCBjYW4gYWxzbyBiZSB1c2VkIGUuZy4sIHRvIGNhcnJ5IGFkZGl0aW9uYWwgZGF0YSB0byBXZWJIb29rIHBvbGljaWVzLlxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIG9mIHRoZSBwcm90b2J1Zi1lbmNvZGVkIG1lc3NhZ2UgdG8gc2lnbiBhcyBhIEJBU0U2NCBzdHJpbmcuICovXG4gICAgICBtZXNzYWdlX2Jhc2U2NDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgYSB0aHJvdHRsZSB3aGljaCBsaW1pdHMgdGhlIG51bWJlciBvZiBlbnRpdGllcyB3aXRoaW4gYSBnaXZlbiB0aW1lIHdpbmRvdyAqL1xuICAgIFRocm90dGxlQ29uZmlnOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbnVtYmVyIG9mIGVudGl0aWVzIGFsbG93ZWQgd2l0aGluIHRoZSB3aW5kb3dcbiAgICAgICAqL1xuICAgICAgdGhyZXNob2xkOiBudW1iZXI7XG4gICAgICB3aW5kb3c6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFRpbWVvdXRFcnJvckNvZGU6IFwiUG9saWN5RW5naW5lVGltZW91dFwiIHwgXCJXYXNtUG9saWN5RXhlY3V0aW9uVGltZW91dFwiO1xuICAgIFRva2VuUmVxdWVzdDoge1xuICAgICAgZ3JhbnRfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWZyZXNoR3JhbnRUeXBlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVmcmVzaCB0b2tlbiBpc3N1ZWQgdG8gdGhlIGNsaWVudC4gKi9cbiAgICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPQXV0aDIgc3RhbmRhcmQgVG9rZW4gUmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY3NDkjc2VjdGlvbi00LjIuMlxuICAgICAqL1xuICAgIFRva2VuUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2VzcyB0b2tlbiBpc3N1ZWQgYnkgdGhlIGF1dGhvcml6YXRpb24gc2VydmVyLiAqL1xuICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gICAgICBleHBpcmVzX2luOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIE9JREMgdG9rZW4gaXNzdWVkIGJ5IEN1YmlzdCwgY29udGFpbmluZyB1c2VyIGluZm9ybWF0aW9uICovXG4gICAgICBpZF90b2tlbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWZyZXNoIHRva2VuIGlzc3VlZCBieSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIuICovXG4gICAgICByZWZyZXNoX3Rva2VuPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzc3VlZC4gVmFsdWUgaXMgY2FzZSBpbnNlbnNpdGl2ZS4gKi9cbiAgICAgIHRva2VuX3R5cGU6IHN0cmluZztcbiAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICBUb3RwQXBwcm92ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVE9UUCB2ZXJpZmljYXRpb24gY29kZSAqL1xuICAgICAgY29kZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIFRPVFAgY2hhbGxlbmdlICovXG4gICAgVG90cENoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgY3VycmVudCBUT1RQIGNvZGUgKi9cbiAgICAgIGNvZGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVG90cEluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgVE9UUCBjaGFsbGVuZ2UuXG4gICAgICAgKiBAZXhhbXBsZSBUb3RwQ2hhbGxlbmdlIzc4OTJlYmJhLTU2M2UtNDg1Yi1iYjdkLWUyNjI2NzM2MzI4NlxuICAgICAgICovXG4gICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBUT1RQIHVybCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCB0byBpbml0aWFsaXplIFRPVFAuXG4gICAgICAgKiBAZXhhbXBsZSBvdHBhdXRoOi8vdG90cC9DdWJpc3Q6YWxpY2UtJTQwZXhhbXBsZS5jb20/c2VjcmV0PURBSEY3S0NPVFFXU09NSzRYRkVNTkhYTzRKNDMzT0Q3Jmlzc3Vlcj1DdWJpc3RcbiAgICAgICAqL1xuICAgICAgdG90cF91cmw6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byByZXNldCBUT1RQLiAqL1xuICAgIFRvdHBSZXNldFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5hbWUgb2YgdGhlIGlzc3VlcjsgZGVmYXVsdHMgdG8gXCJDdWJpc3RcIi4gKi9cbiAgICAgIGlzc3Vlcj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBUcmFuc2FjdGlvbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdO1xuICAgIFRyYW5zYWN0aW9uQW5kU3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlR5cGVkVHJhbnNhY3Rpb25cIl0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoYXNoIG9mIHRoZSB0cmFuc2FjdGlvbiB0aGF0IHdhcyBzaWduZWQgKi9cbiAgICAgIGhhc2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJlcXVlc3QgcmVjb3JkLiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5vbmNlIChjb21wdXRlZCByaWdodCBiZWZvcmUgc2lnbmluZykgKi9cbiAgICAgIG5vbmNlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSAqL1xuICAgICAgc2lnbmVkUmF3VHJhbnNhY3Rpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taVN0YXR1c1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2hhaW4tc3BlY2lmaWMgdHJhbnNhY3Rpb24gZGV0YWlscy4gKi9cbiAgICBUcmFuc2FjdGlvbkRldGFpbHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXZtVHJhbnNhY3Rpb25EZXRhaWxzXCJdICYge1xuICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICBjaGFpbjogXCJFdm1cIjtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYW4gZXhpc3RpbmcgdHJhbnNhY3Rpb24gY3JlYXRlZCBieSB0aGUgUlBDIEFQSS4gKi9cbiAgICBUcmFuc2FjdGlvbkluZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHJhbnNhY3Rpb25cIl0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiBpZC4gKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3VwcG9ydGVkIHF1ZXJpZXNcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFRzUXVlcnlOYW1lOlxuICAgICAgfCBcIkFjdGl2ZUtleXNcIlxuICAgICAgfCBcIkFjdGl2ZVVzZXJzXCJcbiAgICAgIHwgXCJVbmlxdWVTaWduSW5zXCJcbiAgICAgIHwgXCJVc2VyQ291bnRcIlxuICAgICAgfCBcIkxhdGVzdFVzZXJDb3VudFwiXG4gICAgICB8IFwiS2V5Q291bnRcIlxuICAgICAgfCBcIkxhdGVzdEtleUNvdW50XCJcbiAgICAgIHwgXCJCaWxsaW5nRXZlbnRzXCJcbiAgICAgIHwgXCJPaWRjTG9naW5zXCJcbiAgICAgIHwgXCJTaWduRXZlbnRzXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHNpZ25lZCB0cmFuc2FjdGlvbiAqL1xuICAgIFR4U2lnbmF0dXJlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEtlY2NhayAyNTYgSGFzaCBvZiB0aGUgUkxQIGVuY29kaW5nIG9mIHRoZSB0cmFuc2FjdGlvbiAqL1xuICAgICAgaGFzaDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbm9uY2UgKGVpdGhlciBwcm92aWRlZCBleHBsaWNpdGx5IG9yIGNvbXB1dGVkIHJpZ2h0IGJlZm9yZSBzaWduaW5nKSAqL1xuICAgICAgbm9uY2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzaWduZWQgcmF3IHRyYW5zYWN0aW9uXG4gICAgICAgKiBAZXhhbXBsZSAweGRiMzNiMDNjMmI4MTAzZTJhOGMzNjFkM2I0ZjVhYmM2N2Y5NmM2OTIxZGY2ZTE1MWQ1MzA4N2E1ZTEyYjFlNGZcbiAgICAgICAqL1xuICAgICAgc2lnbmVkX3R4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgc3RydWN0IHJlcHJlc2VudGluZyB0aGUgcGVuZGluZyBtZXNzYWdlIHN0YXR1cyAqL1xuICAgIFR4U3RhdHVzOlxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgc3RhdHVzOiBcIlBlbmRpbmdcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHNpZ25lZCB0cmFuc2FjdGlvbiAqL1xuICAgICAgICAgIHNpZzoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBLZWNjYWsgMjU2IEhhc2ggb2YgdGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gKi9cbiAgICAgICAgICAgIGhhc2g6IHN0cmluZztcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5vbmNlIChlaXRoZXIgcHJvdmlkZWQgZXhwbGljaXRseSBvciBjb21wdXRlZCByaWdodCBiZWZvcmUgc2lnbmluZykgKi9cbiAgICAgICAgICAgIG5vbmNlOiBzdHJpbmc7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmVkIHJhdyB0cmFuc2FjdGlvblxuICAgICAgICAgICAgICogQGV4YW1wbGUgMHhkYjMzYjAzYzJiODEwM2UyYThjMzYxZDNiNGY1YWJjNjdmOTZjNjkyMWRmNmUxNTFkNTMwODdhNWUxMmIxZTRmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNpZ25lZF90eDogc3RyaW5nO1xuICAgICAgICAgIH07XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgc3RhdHVzOiBcIlNpZ25lZFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICByZWFzb246IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBzdGF0dXM6IFwiUmVqZWN0ZWRcIjtcbiAgICAgICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyB0aGUgW0VJUC03MTJdKGh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtNzEyKSB0eXBlZCBkYXRhIG9iamVjdC5cbiAgICAgKlxuICAgICAqIFR5cGVkIGRhdGEgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHR5cGUgaW5mb3JtYXRpb24sIGRvbWFpbiBzZXBhcmF0b3IgcGFyYW1ldGVycyBhbmQgdGhlXG4gICAgICogbWVzc2FnZSBvYmplY3QuXG4gICAgICovXG4gICAgVHlwZWREYXRhOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHRoZSBbRUlQLTcxMl0oaHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC03MTIpIEVJUDcxMkRvbWFpbiBvYmplY3QuXG4gICAgICAgKlxuICAgICAgICogRUlQNzEyRG9tYWluIGlzIGEgSlNPTiBvYmplY3Qgd2l0aCBvbmUgb3IgbW9yZSBvZiB0aGUgYmVsb3cgZmllbGRzLiBQcm90b2NvbCBkZXNpZ25lcnMgb25seSBuZWVkIHRvIGluY2x1ZGUgdGhlIGZpZWxkcyB0aGF0IG1ha2Ugc2Vuc2UgZm9yIHRoZWlyIHNpZ25pbmcgZG9tYWluLlxuICAgICAgICovXG4gICAgICBkb21haW46IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgRUlQLTE1NSBjaGFpbiBpZC4gVGhlIHVzZXItYWdlbnQgc2hvdWxkIHJlZnVzZSBzaWduaW5nIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZVxuICAgICAgICAgKiBjdXJyZW50bHkgYWN0aXZlIGNoYWluLlxuICAgICAgICAgKiBAZXhhbXBsZSAweDFcbiAgICAgICAgICovXG4gICAgICAgIGNoYWluSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyIHJlYWRhYmxlIG5hbWUgb2Ygc2lnbmluZyBkb21haW4sIGkuZS4sIHRoZSBuYW1lIG9mIHRoZSBEQXBwIG9yIHRoZSBwcm90b2NvbC5cbiAgICAgICAgICogQGV4YW1wbGUgRXRoZXIgTWFpbFxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBkaXNhbWJpZ3VhdGluZyBzYWx0IGZvciB0aGUgcHJvdG9jb2wuIFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBkb21haW4gc2VwYXJhdG9yIG9mIGxhc3QgcmVzb3J0LiBDYW4gYmUgZWl0aGVyIGEgaGV4LWVuY29kZWQgc3RyaW5nIG9yIGJ5dGUgYXJyYXkgKi9cbiAgICAgICAgc2FsdD86IHN0cmluZyB8IG51bWJlcltdO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0aGF0IHdpbGwgdmVyaWZ5IHRoZSBzaWduYXR1cmUuXG4gICAgICAgICAqIEBleGFtcGxlIDB4Q2NDQ2NjY2NDQ0NDY0NDQ0NDQ2NDY0NjY0NjQ0NDY0NjY2NjY2NjQ1xuICAgICAgICAgKi9cbiAgICAgICAgdmVyaWZ5aW5nQ29udHJhY3Q/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50IG1ham9yIHZlcnNpb24gb2YgdGhlIHNpZ25pbmcgZG9tYWluLiBTaWduYXR1cmVzIGZyb20gZGlmZmVyZW50IHZlcnNpb25zIGFyZSBub3RcbiAgICAgICAgICogY29tcGF0aWJsZS5cbiAgICAgICAgICogQGV4YW1wbGUgMVxuICAgICAgICAgKi9cbiAgICAgICAgdmVyc2lvbj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWVzc2FnZSB0byBiZSBzaWduZWQuICovXG4gICAgICBtZXNzYWdlOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICB9O1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZS4gKi9cbiAgICAgIHByaW1hcnlUeXBlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjdXN0b20gdHlwZXMgdXNlZCBieSB0aGlzIG1lc3NhZ2UuICovXG4gICAgICB0eXBlczoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIG5hbWUgKi9cbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIHR5cGUgKi9cbiAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIH1bXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVJUC0yNzE4IHR5cGVkIHRyYW5zYWN0aW9uLCBpbmNsdWRpbmcgRUlQLTE1NTkgdHJhbnNhY3Rpb25zIChgeyBcInR5cGVcIjogXCIweDAyXCIgLi4uIH1gKSwgYW5kIGxlZ2FjeSB0cmFuc2FjdGlvbnMgKGB7IFwidHlwZVwiOiBcIjB4MDBcIiAuLi4gfWApLiBBbGwgdmFsdWVzIGluIHRoZSB0cmFuc2FjdGlvbiBhcmUgZXhwZWN0ZWQgdG8gYmUgKDB4LXByZWZpeGVkIG9yIG5vdCkgaGV4IHN0cmluZ3Mgb3IgYnl0ZSBhcnJheXMuICovXG4gICAgVHlwZWRUcmFuc2FjdGlvbjogT25lT2Y8XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgwMSAqL1xuICAgICAgICAgIGRhdGE/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4NGNmMThhOGE2YTFmZmU3N2ZlYzYwMGRhMmI5MGVjMzViYTA1MGIwNyAqL1xuICAgICAgICAgIGZyb20/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MSAqL1xuICAgICAgICAgIGdhcz86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgxICovXG4gICAgICAgICAgZ2FzUHJpY2U/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MSAqL1xuICAgICAgICAgIG5vbmNlPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDA2OGJkNTI5NDI2ZjRmMjdlMjQ4YmFmMzZlNDU1OGU0NDA3MzhmYmIgKi9cbiAgICAgICAgICB0bz86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgwMCAqL1xuICAgICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgxICovXG4gICAgICAgICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiYWRkcmVzc1wiOiBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgICAqICAgICBcInN0b3JhZ2VLZXlzXCI6IFtcbiAgICAgICAgICAgKiAgICAgICBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICAgICAgICogICAgIF1cbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgYWNjZXNzTGlzdD86IHtcbiAgICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgKi9cbiAgICAgICAgICAgIGFkZHJlc3M/OiBzdHJpbmc7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgICAqICAgXCIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAgICAgICAgICogXVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdG9yYWdlS2V5cz86IHN0cmluZ1tdO1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHgwMSAqL1xuICAgICAgICAgIGRhdGE/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4NGNmMThhOGE3YTFmZmU3N2ZlYzYwMGRhMmI5MGVjMzViYTA1MGIwNyAqL1xuICAgICAgICAgIGZyb20/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4NjFhODAgKi9cbiAgICAgICAgICBnYXM/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4OTUwMmY5MDAgKi9cbiAgICAgICAgICBtYXhGZWVQZXJHYXM/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4OTUwMmY5MDAgKi9cbiAgICAgICAgICBtYXhQcmlvcml0eUZlZVBlckdhcz86IHN0cmluZztcbiAgICAgICAgICAvKiogQGV4YW1wbGUgMHhiICovXG4gICAgICAgICAgbm9uY2U/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIDB4MDY4YmQ1Mzk0MjZmNGYyN2UyNDhiYWYzNmU0NTU4ZTQ0MDczOGZiYiAqL1xuICAgICAgICAgIHRvPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDAyICovXG4gICAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSAweDEgKi9cbiAgICAgICAgICB2YWx1ZT86IHN0cmluZztcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA+O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIFVuYXV0aG9yaXplZEVycm9yQ29kZTpcbiAgICAgIHwgXCJBdXRob3JpemF0aW9uSGVhZGVyTWlzc2luZ1wiXG4gICAgICB8IFwiRW5kcG9pbnRSZXF1aXJlc1VzZXJTZXNzaW9uXCJcbiAgICAgIHwgXCJSZWZyZXNoVG9rZW5NaXNzaW5nXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPbmUgdHJhbnNmZXIgZW50cnkgaW4gW2BVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlSZXNwb25zZWBdLiAqL1xuICAgIFVuaXZlcnNhbFRyYW5zZmVySGlzdG9yeUVudHJ5OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFtb3VudCB0cmFuc2ZlcnJlZCwgYXMgYSBkZWNpbWFsIHN0cmluZy4gKi9cbiAgICAgIGFtb3VudDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBc3NldCBzeW1ib2wuICovXG4gICAgICBhc3NldDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDbGllbnQtc3VwcGxpZWQgdHJhbnNmZXIgaWQsIGlmIG9uZSB3YXMgc2V0IG9uIHRoZSBvcmlnaW5hbCB0cmFuc2Zlci4gKi9cbiAgICAgIGNsaWVudFRyYW5JZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaW1lIG9mIHRoZSB0cmFuc2ZlciAobXMgc2luY2UgZXBvY2gpLlxuICAgICAgICovXG4gICAgICBjcmVhdGVUaW1lU3RhbXA6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdhbGxldCB0eXBlIGRlYml0ZWQgb24gdGhlIHNvdXJjZSBzaWRlLiBMZWZ0IGFzIGBTdHJpbmdgIGZvciBmb3J3YXJkXG4gICAgICAgKiBjb21wYXRpYmlsaXR5LlxuICAgICAgICovXG4gICAgICBmcm9tQWNjb3VudFR5cGU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU291cmNlIHN1Yi1hY2NvdW50IGVtYWlsOyBhYnNlbnQgd2hlbiB0aGUgc291cmNlIGlzIHRoZSBtYXN0ZXIuICovXG4gICAgICBmcm9tRW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUcmFuc2ZlciBzdGF0dXMgKGUuZy4gYFwiU1VDQ0VTU1wiYCkuICovXG4gICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2FsbGV0IHR5cGUgY3JlZGl0ZWQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUuICovXG4gICAgICB0b0FjY291bnRUeXBlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlc3RpbmF0aW9uIHN1Yi1hY2NvdW50IGVtYWlsOyBhYnNlbnQgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgbWFzdGVyLiAqL1xuICAgICAgdG9FbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUcmFuc2ZlciBpZC4gTWF0Y2hlcyB0aGUgYHRyYW5JZGAgcmV0dXJuZWQgYnkgdGhlIG9yaWdpbmFsXG4gICAgICAgKiBbYFVuaXZlcnNhbFRyYW5zZmVyUmVzcG9uc2VgXS5cbiAgICAgICAqL1xuICAgICAgdHJhbklkOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYEdFVCAvc2FwaS92MS9zdWItYWNjb3VudC91bml2ZXJzYWxUcmFuc2ZlcmAuXG4gICAgICpcbiAgICAgKiBMaXN0cyB1bml2ZXJzYWwgdHJhbnNmZXJzIGluaXRpYXRlZCBieSB0aGUgbWFzdGVyIGFjY291bnQuIEFsbCBmaWx0ZXJzXG4gICAgICogYXJlIG9wdGlvbmFsOyBpZiBgc3RhcnRfdGltZWAvYGVuZF90aW1lYCBhcmUgb21pdHRlZCwgQmluYW5jZSByZXR1cm5zIHRoZVxuICAgICAqIG1vc3QgcmVjZW50IDMwIGRheXMuIEJpbmFuY2UgZG9lcyBub3Qgc3VwcG9ydCBmaWx0ZXJpbmcgYnkgYHRyYW5faWRgXG4gICAgICogZGlyZWN0bHkg4oCUIHVzZSBgY2xpZW50X3RyYW5faWRgIGlmIHlvdSBzZXQgb25lIHdoZW4gaW5pdGlhdGluZyB0aGVcbiAgICAgKiB0cmFuc2Zlciwgb3IgcGFnZSB0aHJvdWdoIHRoZSByZXN1bHQgYW5kIG1hdGNoIHRoZSBgdHJhbklkYCBjbGllbnQtc2lkZS5cbiAgICAgKi9cbiAgICBVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEZpbHRlciBieSBjbGllbnQtc3VwcGxpZWQgdHJhbnNmZXIgaWQuICovXG4gICAgICBjbGllbnRUcmFuSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2luZG93IGVuZCAobXMgc2luY2UgZXBvY2gpLlxuICAgICAgICovXG4gICAgICBlbmRUaW1lPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdGVyIHRvIHRyYW5zZmVycyBvcmlnaW5hdGluZyBmcm9tIHRoaXMgc3ViLWFjY291bnQgZW1haWwuICovXG4gICAgICBmcm9tRW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUGFnZSBzaXplIChCaW5hbmNlIGRlZmF1bHQ6IDUwMCwgbWF4OiA1MDApLlxuICAgICAgICovXG4gICAgICBsaW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiAxLWJhc2VkIHBhZ2UgbnVtYmVyIChCaW5hbmNlIGRlZmF1bHQ6IDEpLlxuICAgICAgICovXG4gICAgICBwYWdlPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFdpbmRvdyBzdGFydCAobXMgc2luY2UgZXBvY2gpLlxuICAgICAgICovXG4gICAgICBzdGFydFRpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBGaWx0ZXIgdG8gdHJhbnNmZXJzIGRlc3RpbmVkIGZvciB0aGlzIHN1Yi1hY2NvdW50IGVtYWlsLiAqL1xuICAgICAgdG9FbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIGJ5IGBjc19iaW5hbmNlVW5pdmVyc2FsVHJhbnNmZXJIaXN0b3J5YC4gKi9cbiAgICBVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUcmFuc2ZlcnMgaW4gdGhlIGN1cnJlbnQgcGFnZS4gKi9cbiAgICAgIHJlc3VsdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlFbnRyeVwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVG90YWwgbnVtYmVyIG9mIHRyYW5zZmVycyBtYXRjaGluZyB0aGUgZmlsdGVycyBhY3Jvc3MgYWxsIHBhZ2VzLlxuICAgICAgICovXG4gICAgICB0b3RhbENvdW50OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYFBPU1QgL3NhcGkvdjEvc3ViLWFjY291bnQvdW5pdmVyc2FsVHJhbnNmZXJgLlxuICAgICAqXG4gICAgICogVHJhbnNmZXJzIGFuIGFzc2V0IGJldHdlZW4gYW55IHR3byBhY2NvdW50cyAobWFzdGVyIHRvL2Zyb20gc3ViLCBvciBzdWJcbiAgICAgKiB0by9mcm9tIHN1YikgYW5kIGJldHdlZW4gYW55IHR3byB3YWxsZXQgdHlwZXMgKHNwb3QsIGZ1dHVyZXMsIG1hcmdpbiwgZXRjKS5cbiAgICAgKiBUaGUgc2lnbmluZyBjcmVkZW50aWFsICh0aGUgQVBJIGtleSArIEVkMjU1MTkga2V5IHBhaXIpIG11c3QgYmVsb25nIHRvIHRoZVxuICAgICAqIG1hc3RlciBhY2NvdW50LlxuICAgICAqL1xuICAgIFVuaXZlcnNhbFRyYW5zZmVyUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYW1vdW50IGJlaW5nIHRyYW5zZmVycmVkLCBhcyBhIGRlY2ltYWwgc3RyaW5nLiAqL1xuICAgICAgYW1vdW50OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhc3NldCBzeW1ib2wgYmVpbmcgdHJhbnNmZXJyZWQgKGUuZy4gYFwiVVNEVFwiYCkuICovXG4gICAgICBhc3NldDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgY2xpZW50LXN1cHBsaWVkIHRyYW5zZmVyIGlkLiBJZiBzZXQsIEJpbmFuY2UgZWNob2VzIGl0IGJhY2tcbiAgICAgICAqIG9uIFtgVW5pdmVyc2FsVHJhbnNmZXJSZXNwb25zZTo6Y2xpZW50X3RyYW5faWRgXSBhbmQgbGV0cyBpdCBiZSB1c2VkXG4gICAgICAgKiBhcyBhIGZpbHRlciBvblxuICAgICAgICogW2BVbml2ZXJzYWxUcmFuc2Zlckhpc3RvcnlSZXF1ZXN0OjpjbGllbnRfdHJhbl9pZGBdLlxuICAgICAgICovXG4gICAgICBjbGllbnRUcmFuSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgZnJvbUFjY291bnRUeXBlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NvdW50VHlwZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU291cmNlIHN1Yi1hY2NvdW50IGVtYWlsLiBJZiBgTm9uZWAsIHRoZSBzb3VyY2UgaXMgdGhlIG1hc3RlciBhY2NvdW50LiAqL1xuICAgICAgZnJvbUVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHRvQWNjb3VudFR5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY291bnRUeXBlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXN0aW5hdGlvbiBzdWItYWNjb3VudCBlbWFpbC4gSWYgYE5vbmVgLCB0aGUgZGVzdGluYXRpb24gaXMgdGhlIG1hc3RlciBhY2NvdW50LiAqL1xuICAgICAgdG9FbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIGJ5IGBjc19iaW5hbmNlVW5pdmVyc2FsVHJhbnNmZXJgLiAqL1xuICAgIFVuaXZlcnNhbFRyYW5zZmVyUmVzcG9uc2U6IHtcbiAgICAgIGNsaWVudFRyYW5JZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogRm9ybWF0OiBpbnQ2NCAqL1xuICAgICAgdHJhbklkOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbnMgdGhhdCBzaG91bGQgYmUgc2V0IG9ubHkgZm9yIGxvY2FsIGRldm5ldCB0ZXN0aW5nLiAqL1xuICAgIFVuc2FmZUNvbmY6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBhZGRyZXNzIG9mIHRoZSBkZXBvc2l0IGNvbnRyYWN0LiBJZiBvbWl0dGVkLCBpbmZlcnJlZCBmcm9tIGBjaGFpbl9pZGBcbiAgICAgICAqIEBleGFtcGxlIDB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlxuICAgICAgICovXG4gICAgICBkZXBvc2l0X2NvbnRyYWN0X2FkZHI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIDQtYnl0ZSBmb3JrIHZlcnNpb25cbiAgICAgICAqIEBleGFtcGxlIDB4MDAwMDEwMjBcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc19mb3JrX3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgVW5zdGFrZVJlcXVlc3Q6IHtcbiAgICAgIGVwb2NoPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXSB8IG51bGw7XG4gICAgICBmb3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZvcmtcIl07XG4gICAgICBnZW5lc2lzX2RhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiR2VuZXNpc0RhdGFcIl07XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ldHdvcmtcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3IgaW5kZXggKGB1aW50NjRgKSB0byBleGl0LiBZb3UgY2FuIGdldCB0aGUgdmFsaWRhdG9yIGluZGV4IGZyb20gdGhlIEJlYWNvbiBub2RlJ3NcbiAgICAgICAqIGAvZXRoL3YxL2JlYWNvbi9zdGF0ZXMvaGVhZC92YWxpZGF0b3JzL3twdWJrZXl9YCBlbmQtcG9pbnQuIFRoaXMgZW5kIHBvaW50IHJldHVybnMgYW5cbiAgICAgICAqIG9iamVjdCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZGF0b3IgKHdob3NlIHB1YmxpYyBrZXkgaXMgYHtwdWJrZXl9YCksXG4gICAgICAgKiBpbmNsdWRpbmcgdGhlIHZhbGlkYXRvciBpbmRleC4gVGhlIHNjaGVtYSBvZiB0aGlzIGVuZC1wb2ludCBpcyBkZWZpbmVkXG4gICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vZ2V0U3RhdGVWYWxpZGF0b3IpLlxuICAgICAgICogQGV4YW1wbGUgMzEzMzdcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2luZGV4OiBzdHJpbmc7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG8gbm90IHByb2R1Y2UgYSB2YWxpZCBzaWduYXR1cmUsIGp1c3QgZXZhbHVhdGUgYXR0YWNoZWQgcG9saWNpZXMuICovXG4gICAgICBkcnlfcnVuPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzcG9uc2UsIGV4cGxhaW5pbmdcbiAgICAgICAqIHRoZSBvdXRjb21lIChpLmUuLCBwZXJtaXR0ZWQgdnMuIGRlbmllZCB2cy4gTUZBIHJlcXVpcmVkKSBvZiB0aGUgc2lnbiByZXF1ZXN0LlxuICAgICAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgKi9cbiAgICAgIGV4cGxhaW4/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgTUZBIGlzIHJlcXVpcmVkLCBmYWlsIHRoZSByZXF1ZXN0IGluc3RlYWQgb2YgcmV0dXJuaW5nIDIwMiBhbmQgY3JlYXRpbmdcbiAgICAgICAqIHBlbmRpbmcgTUZBIHJlcXVlc3QuIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgICAgICovXG4gICAgICBmYWlsX29uX21mYT86IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gUGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFzIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIG1ha2UgcmV2aWV3aW5nXG4gICAgICAgKiBvZiBwZW5kaW5nIE1GQSByZXF1ZXN0cyBhbmQvb3IgaGlzdG9yaWNhbCBrZXkgdHJhbnNhY3Rpb25zIG1vcmUgdHJhbnNwYXJlbnQuIEl0IGNhbiBhbHNvIGJlIHVzZWQgZS5nLiwgdG8gY2FycnkgYWRkaXRpb25hbCBkYXRhIHRvIFdlYkhvb2sgcG9saWNpZXMuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXNwb25zZSB0byBzaWduIGFuIGV0aDIgdW5zdGFrZSByZXF1ZXN0LiAqL1xuICAgIFVuc3Rha2VSZXNwb25zZToge1xuICAgICAgbWVzc2FnZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWb2x1bnRhcnlFeGl0XCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQkxTIHNpZ25hdHVyZS5cbiAgICAgICAqIEBleGFtcGxlIDB4OTEwYzdjZDUzN2VkOTFjYzhjNGE4MmYzY2JkODMyZTliZThjMjRhMjJlOWM4NmRmNDc5ZjdjZTQyMDI1ZWE2YTA5NjE5YjQxOGI2NjZhMDYwZTI2MGQyYWFlMzFiOGU1MGU5ZDA1Y2EzNDQyYzdlZWQzYjUwN2U1MjA3ZTE0Njc0Mjc1ZjY4YzJiYTg0YzRiZjZiOGRkMzY0YTMwNGFjYWM4Y2ZhYjM2ODFlMjUxNGI0NDAwZjkyNDJiYzYxMTY0XG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byB1cGRhdGUgYSBidWNrZXQuICovXG4gICAgVXBkYXRlQnVja2V0UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBY2Nlc3MtY29udHJvbCBlbnRyaWVzIGRlZmluaW5nIGhvdyB0aGUgYnVja2V0IGNhbiBiZSBhY2Nlc3NlZC4gKi9cbiAgICAgIGFjbD86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0aW5nIG9ubHkgc3VjY2VlZHMgaWYgdGhlIGN1cnJlbnQgdmVyc2lvbiBtYXRjaGVzIHRoaXMgdmFsdWUuXG4gICAgICAgKi9cbiAgICAgIGV4cGVjdGVkX3ZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBtZXRhZGF0YS4gKi9cbiAgICAgIG1ldGFkYXRhPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSB0aGUgb3duZXIgb2YgdGhlIGJ1Y2tldFxuICAgICAgICogQGV4YW1wbGUgVXNlciMwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcbiAgICAgICAqL1xuICAgICAgb3duZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHVwZGF0ZSBhIENvbnRhY3QuICovXG4gICAgVXBkYXRlQ29udGFjdFJlcXVlc3Q6IHtcbiAgICAgIGFkZHJlc3Nlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkcmVzc01hcFwiXSB8IG51bGw7XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG5ldyBzZXQgb2YgbGFiZWxzIGZvciB0aGUgY29udGFjdC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJjdWJpc3Q6ZXJjMjBfdG9rZW5cIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBsYWJlbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RMYWJlbFwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBuZXcgdmFsdWUgZm9yIHRoZSBvcHRpb25hbCB1c2VyLWRlZmluZWQgbWV0YWRhdGEgYWJvdXQgdGhlIGNvbnRhY3QuICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG5ldyBuYW1lIGZvciB0aGUgY29udGFjdC4gTXVzdCBiZSBhIHVuaXF1ZSBuYW1lIGFtb25nIGNvbnRhY3RzIGluIHRoZVxuICAgICAgICogb3JnLiBOYW1lIG11c3QgY29uc2lzdCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgc3BhY2VzLCBgLmAgYW5kIGAtYCxcbiAgICAgICAqIGFuZCBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gNTAgY2hhcmFjdGVycy5cbiAgICAgICAqIEBleGFtcGxlIFNhdG9zaGkgTmFrYW1vdG9cbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICBvd25lcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgIH07XG4gICAgVXBkYXRlS2V5UmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVBbmRVcGRhdGVLZXlQcm9wZXJ0aWVzXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGVzIHRoZSBrZXkncyBgZW5hYmxlZGAgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAqIE9uY2UgZGlzYWJsZWQsIGEga2V5IGNhbm5vdCBiZSB1c2VkIGZvciBzaWduaW5nLlxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHBhdGNoIHRoZSBrZXkncyBzdHJ1Y3R1cmVkIFtgS2V5UHJvcGVydGllc2BdLiBUaGUgcGF0Y2gncyB2YXJpYW50IG11c3RcbiAgICAgICAqIG1hdGNoIHRoZSBrZXkncyBbYEtleVR5cGVgXSAoZS5nLiBgQmluYW5jZUFwaWAgcHJvcGVydGllcyBhcmUgb25seSBhbGxvd2VkIG9uXG4gICAgICAgKiBgRWQyNTUxOUJpbmFuY2VBcGlgIGtleXMpLiBFYWNoIGZpZWxkIGluIHRoZSBwYXRjaCBpcyBpbmRlcGVuZGVudDogbWlzc2luZ1xuICAgICAgICogbWVhbnMgbGVhdmUgYWxvbmUsIEpTT04gYG51bGxgIGNsZWFycywgYSB2YWx1ZSBzZXRzLiBTZW5kaW5nIEpTT04gYG51bGxgIGZvclxuICAgICAgICogdGhlIHdob2xlIGZpZWxkIGNsZWFycyBhbGwgcHJvcGVydGllcyBvbiB0aGUga2V5LlxuICAgICAgICovXG4gICAgICBwcm9wZXJ0aWVzPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgY2hhbmdlIHRoZSBrZXkncyByZWdpb24gYWZmaW5pdHkgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIGlzIGEgcmVnaW9uLWxvY2tlZCBvcGVyYXRpb24sIGkuZS4sIGl0IGNhbiBvbmx5IGJlIHBlcmZvcm1lZFxuICAgICAgICogZnJvbSB0aGUgcmVnaW9uIG1hdGNoaW5nIHRoZSBrZXkncyBjdXJyZW50IHJlZ2lvbiBhZmZpbml0eVxuICAgICAgICovXG4gICAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0aW5nIHRoZSBtZXRhZGF0YSBvbmx5IHN1Y2NlZWRzIGlmIHRoZSB2ZXJzaW9uIG1hdGNoZXMgdGhpcyB2YWx1ZS5cbiAgICAgICAqL1xuICAgICAgdmVyc2lvbj86IG51bWJlciB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBvbGljeSBFbmdpbmUgY29uZmlndXJhdGlvbnMuICovXG4gICAgVXBkYXRlT3JnUG9saWN5RW5naW5lQ29uZmlnczoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWxsb3dlZCBkb21haW5zIGZvciBIVFRQIHJlcXVlc3RzXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiY3ViaXN0LmRldjo0NDNcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBhbGxvd2VkX2h0dHBfYXV0aG9yaXRpZXM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgVXBkYXRlT3JnUmVxdWVzdDoge1xuICAgICAgYWxpZW5fbG9naW5fcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1GQSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQgZm9yIGltcGxpY2l0bHkgc2VjdXJpdHktc2Vuc2l0aXZlXG4gICAgICAgKiBvcGVyYXRpb25zIChsaWtlIGxvZ2dpbmcgaW4sIGFkZGluZyBhbiBNRkEgZmFjdG9yLCBleHBvcnRpbmcga2V5cywgZXRjLikuXG4gICAgICAgKiBAZXhhbXBsZSB7XG4gICAgICAgKiAgIFwiRGVmYXVsdFwiOiBbXG4gICAgICAgKiAgICAgXCJGaWRvXCIsXG4gICAgICAgKiAgICAgXCJUb3RwXCIsXG4gICAgICAgKiAgICAgXCJFbWFpbE90cFwiXG4gICAgICAgKiAgIF0sXG4gICAgICAgKiAgIFwiS2V5RXhwb3J0XCI6IFtcbiAgICAgICAqICAgICBcIkZpZG9cIlxuICAgICAgICogICBdXG4gICAgICAgKiB9XG4gICAgICAgKi9cbiAgICAgIGFsbG93ZWRfbWZhX3R5cGVzPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl1bXTtcbiAgICAgIH0gfCBudWxsO1xuICAgICAgY3VzdG9tX2NoYWlucz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5zRGF0YVwiXSB8IG51bGw7XG4gICAgICBkZWZhdWx0X2ludml0ZV9raW5kPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbnZpdGVLaW5kXCJdIHwgbnVsbDtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIGVtYWlsX3ByZWZlcmVuY2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFByZWZlcmVuY2VzXCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBgZW5hYmxlZGAgZmllbGQgdG8gdGhpcyB2YWx1ZS4gKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIGV4dF9wcm9wcz86XG4gICAgICAgIHwgKHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFBlciBhbGllbiB1c2VyIGtleSBjb3VudCB0aHJlc2hvbGQsIHdoaWNoLCBvbmNlIGV4Y2VlZGVkLCBkaXNhbGxvd3MgZnVydGhlciBrZXkgY3JlYXRpb24gYnkgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAgICAgICAgICAgKiBJbiBvdGhlciB3b3Jkcywgb3JnIGFkbWlucyBjYW4gc3RpbGwgYXNzaWduIHVubGltaXRlZCBudW1iZXIgb2Yga2V5cyB0byB0aGVpciBhbGllbiB1c2Vycy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgfSAmIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRpbmcgd2lsbCBzdWNjZWVkIGlmIHRoZSBjdXJyZW50IHZlcnNpb24gbWF0Y2hlcyB0aGlzIHZhbHVlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZlcnNpb24/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIH0pXG4gICAgICAgIHwgbnVsbDtcbiAgICAgIGhpc3RvcmljYWxfZGF0YV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIaXN0b3JpY2FsRGF0YUNvbmZpZ3VyYXRpb25cIl0gfCBudWxsO1xuICAgICAgaWRwX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkcENvbmZpZ1wiXSB8IG51bGw7XG4gICAgICBrZXlfZXhwb3J0X3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICBtZW1iZXJfbG9naW5fcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3Mgbm90aWZpY2F0aW9uIGVuZHBvaW50cy4gTm90aWZpY2F0aW9uIGVuZHBvaW50cyBhcmUgZXhwZWN0ZWQgdG8gYmVcbiAgICAgICAqIEhUVFBTIFVSTHMsIHdoaWNoIGFjY2VwdCBQT1NUIHJlcXVlc3RzLiBUaGUgYm9keSBvZiB0aGUgcmVxdWVzdHMgc2VudCB0byB0aGVzZSBlbmRwb2ludHMgYXJlXG4gICAgICAgKiBhcmUgZm9ybWF0dGVkIGluIEpTT04gYW5kIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgICAgKlxuICAgICAgICogYGBganNvblxuICAgICAgICoge1xuICAgICAgICogXCJvcmdcIjogXCIuLi5cIixcbiAgICAgICAqIFwidXRjX3RpbWVzdGFtcFwiOiBcIi4uLlwiLFxuICAgICAgICogXCJvcmdfZXZlbnRcIjogXCIuLi5cIixcbiAgICAgICAqIC4uLlxuICAgICAgICogfVxuICAgICAgICogYGBgXG4gICAgICAgKlxuICAgICAgICogYG9yZ2AgaXMgdGhlIG9yZyBpZCwgYHV0Y190aW1lc3RhbXBgIGlzIHRoZSBVVEMgdGltZXN0YW1wIG9mIHRoZSBldmVudCBpbiBtaWxsaXNlY29uZHMsIGFuZFxuICAgICAgICogYG9yZ19ldmVudGAgaXMgYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHR5cGUgb2YgZXZlbnQgdGhhdCBoYXMgb2NjdXJyZWQuIFRoZSByZXN0IG9mIHRoZVxuICAgICAgICogZmllbGRzIHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBldmVudC5cbiAgICAgICAqXG4gICAgICAgKiBFbmRwb2ludHMgY2FuIG9wdGlvbmFsbHkgaW5jbHVkZSBmaWx0ZXJzIHRvIGN1c3RvbWl6ZSB0aGUgb3JnIGV2ZW50cyB0aGF0IHRoZXkgYXJlIG5vdGlmaWVkXG4gICAgICAgKiBhYm91dC4gQ3VycmVudGx5LCB0aGUgb25seSBzdXBwb3J0ZWQgZmlsdGVyIHR5cGUgaXMgYE9uZU9mYCwgd2hpY2ggZXhwZWN0cyBhIGxpc3Qgb2Ygb3JnXG4gICAgICAgKiBldmVudCB0eXBlcyB0byBzZW5kIHRvIHRoZSBlbmRwb2ludC4gSWYgbm8gZmlsdGVyIGlzIGNvbmZpZ3VyZWQsIHRoZSBzeXN0ZW0gc2VuZHMgYWxsIG9yZ1xuICAgICAgICogZXZlbnRzIHRvIHRoZSBlbmRwb2ludC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwidXJsOlwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQxXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiZmlsdGVyXCI6IHtcbiAgICAgICAqICAgICAgIFwiT25lT2ZcIjogW1xuICAgICAgICogICAgICAgICBcIkV0aDJDb25jdXJyZW50QXR0ZXN0YXRpb25TaWduaW5nXCIsXG4gICAgICAgKiAgICAgICAgIFwiRXRoMkNvbmN1cnJlbnRCbG9ja1NpZ25pbmdcIlxuICAgICAgICogICAgICAgXVxuICAgICAgICogICAgIH0sXG4gICAgICAgKiAgICAgXCJ1cmw6XCI6IFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDJcIlxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG5vdGlmaWNhdGlvbl9lbmRwb2ludHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdGlmaWNhdGlvbkVuZHBvaW50Q29uZmlndXJhdGlvblwiXVtdIHwgbnVsbDtcbiAgICAgIHBhc3NrZXlfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGFzc2tleUNvbmZpZ1wiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHBvbGljaWVzIChvbGQgcG9saWNpZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiEpLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJPcmlnaW5BbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCJodHRwczovL2V4YW1wbGUuY29tXCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiMTAuMS4yLjMvOFwiLFxuICAgICAgICogICAgICAgXCIxNjkuMjU0LjE3LjEvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICBwb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZU9yZ1BvbGljeUVuZ2luZUNvbmZpZ3NcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCBhbGwgdXNlciBsb2dpbnMgd2lsbCByZXF1aXJlIHRoZSBjbGFpbSBgY3ViZXNpZ25lcl9zY29wZV9jZWlsaW5nYCB0byBiZSBwcmVzZW50IGluXG4gICAgICAgKiB0aGUgdXNlcidzIHRva2VuLiBUaGlzIGNsYWltIGlzIGFuIGFycmF5IG9mIHNjb3BlcyAoZS5nLiBgWyBcIm1hbmFnZTprZXlzOmxpc3RcIiwgXCJzaWduOmV2bTp0eFwiIF1gKSxcbiAgICAgICAqIHdoaWNoIGRlZmluZSBhIG1heGltdW0gc2V0IG9mIHNjb3BlcyB0aGUgdXNlciBtYXkgcmVxdWVzdC4gSWYgdGhlIHVzZXIncyB0b2tlbiBkb2VzIG5vdCBjb250YWluXG4gICAgICAgKiB0aGlzIGNsYWltLCB0aGUgbG9naW4gd2lsbCBiZSByZWplY3RlZC5cbiAgICAgICAqXG4gICAgICAgKiBPd25lcnMgb2YgdGhlIG9yZyBhcmUgZXhlbXB0IGZyb20gdGhpcyByZXF1aXJlbWVudC5cbiAgICAgICAqL1xuICAgICAgcmVxdWlyZV9zY29wZV9jZWlsaW5nPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHNpZ24gcnVsZSAob2xkIHNpZ24gcnVsZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiEpLlxuICAgICAgICogT25seSBcImRlbnlcIi1zdHlsZSBydWxlcyBtYXkgYmUgc2V0LlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeFJlY2VpdmVyXCI6IFtcbiAgICAgICAqICAgICAgIFwiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2lnbl9wb2xpY3k/OiB1bmtub3duW10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBUT1RQIGZhaWx1cmUgbGltaXQuIEFmdGVyIHRoaXMgbWFueSBmYWlsdXJlcyxcbiAgICAgICAqIHRoZSB1c2VyIGlzIHJhdGUgbGltaXRlZCB1bnRpbCB0aGUgbmV4dCAzMC1zZWNvbmQgVE9UUCB3aW5kb3cuXG4gICAgICAgKi9cbiAgICAgIHRvdHBfZmFpbHVyZV9saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHVzZXItZXhwb3J0IGRlbGF5LCBpLmUuLCB0aGUgYW1vdW50IG9mIHRpbWVcbiAgICAgICAqIChpbiBzZWNvbmRzKSBiZXR3ZWVuIGEgdXNlcidzIGluaXRpYXRpbmcgYW4gZXhwb3J0IGFuZCB0aGUgdGltZSB3aGVuXG4gICAgICAgKiBleHBvcnQgaXMgYWxsb3dlZC4gRm9yIHNlY3VyaXR5LCB0aGlzIGRlbGF5IGNhbm5vdCBiZSBzZXQgdG8gbGVzcyB0aGFuXG4gICAgICAgKiAxNzI4MDAsIGkuZS4sIDIgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHR1cm4gdGhpcyBvcmcncyB1c2VyIGV4cG9ydCBvZmYgKGJ5IHBhc3NpbmcgYHRydWVgKSBvciBvbiAoYnkgcGFzc2luZyBgZmFsc2VgKS4gKi9cbiAgICAgIHVzZXJfZXhwb3J0X2Rpc2FibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHVzZXItZXhwb3J0IHdpbmRvdywgaS5lLiwgdGhlIGFtb3VudCBvZiB0aW1lXG4gICAgICAgKiAoaW4gc2Vjb25kcykgdGhhdCBleHBvcnQgaXMgYWxsb3dlZCBhZnRlciB0aGUgdXNlci1leHBvcnQgZGVsYXkuIEFmdGVyXG4gICAgICAgKiB0aGlzIGFtb3VudCBvZiB0aW1lLCB0aGUgZXhwb3J0IGlzIGNhbmNlbGVkIGFuZCBtdXN0IGJlIHJlLWluaXRpYXRlZC5cbiAgICAgICAqIEZvciBzZWN1cml0eSwgdGhpcyB3aW5kb3cgY2Fubm90IGJlIHNldCB0byBncmVhdGVyIHRoYW4gMjU5MjAwLCBpLmUuLFxuICAgICAgICogMyBkYXlzLlxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF93aW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgVXBkYXRlT3JnUmVzcG9uc2U6IHtcbiAgICAgIGFsaWVuX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNRkEgdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSB1c2VkIGZvciBpbXBsaWNpdGx5IHNlY3VyaXR5LXNlbnNpdGl2ZVxuICAgICAgICogb3BlcmF0aW9ucyAobGlrZSBsb2dnaW5nIGluLCBhZGRpbmcgYW4gTUZBIGZhY3RvciwgZXhwb3J0aW5nIGtleXMsIGV0Yy4pLlxuICAgICAgICovXG4gICAgICBhbGxvd2VkX21mYV90eXBlcz86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdW107XG4gICAgICB9IHwgbnVsbDtcbiAgICAgIGN1c3RvbV9jaGFpbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1c3RvbUNoYWluc0RhdGFcIl0gfCBudWxsO1xuICAgICAgZGVmYXVsdF9pbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXSB8IG51bGw7XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXSB8IG51bGw7XG4gICAgICBlbWFpbF9wcmVmZXJlbmNlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxQcmVmZXJlbmNlc1wiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgZXh0X2RhdGE/OlxuICAgICAgICB8ICh7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFRoaXMgc2V0dGluZyBpcyBjaGVja2VkIG9ubHkgd2hlbiBhbiBhbGllbiB1c2VyIHJlcXVlc3RzIHRvIGNyZWF0ZSBvciBpbXBvcnQgYSBuZXcga2V5LlxuICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFsaWVuX2tleV9jb3VudF90aHJlc2hvbGQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAgIGxhc3RfbW9kaWZpZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGlzIG9iamVjdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgICAgICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4pXG4gICAgICAgIHwgbnVsbDtcbiAgICAgIGhpc3RvcmljYWxfZGF0YV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIaXN0b3JpY2FsRGF0YUNvbmZpZ3VyYXRpb25cIl0gfCBudWxsO1xuICAgICAgaWRwX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkcENvbmZpZ1wiXSB8IG51bGw7XG4gICAgICBrZXlfZXhwb3J0X3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICBtZW1iZXJfbG9naW5fcmVxdWlyZW1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZEZhY3RvclJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZyAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgbm90aWZpY2F0aW9uIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnRcIlxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG5vdGlmaWNhdGlvbl9lbmRwb2ludHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdGlmaWNhdGlvbkVuZHBvaW50Q29uZmlndXJhdGlvblwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgcGFzc2tleV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQYXNza2V5Q29uZmlnXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2Ygb3JnLXdpZGUgcG9saWNpZXNcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICAgIHBvbGljeV9lbmdpbmVfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5RW5naW5lQ29uZmlndXJhdGlvblwiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgcmVxdWlyZV9zY29wZV9jZWlsaW5nICovXG4gICAgICByZXF1aXJlX3Njb3BlX2NlaWxpbmc/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlIG9yZy13aWRlIHNpZ24gcnVsZXNcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2lnbl9wb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBUT1RQIGZhaWx1cmUgbGltaXRcbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRpc2FibGVkICovXG4gICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyBvcmcgdmVyc2lvblxuICAgICAgICovXG4gICAgICB2ZXJzaW9uOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgYm9keSBmb3IgdXBkYXRpbmcgYSBuYW1lZCBwb2xpY3kuICovXG4gICAgVXBkYXRlUG9saWN5UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTmV3IEFjY2Vzcy1jb250cm9sIGVudHJpZXMuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcImFjdGlvblwiOiBcImF0dGFjaFwiLFxuICAgICAgICogICAgIFwicmVzb3VyY2VzXCI6IFtcbiAgICAgICAqICAgICAgIHtcbiAgICAgICAqICAgICAgICAgXCJrZXlfaWRcIjogXCIqXCIsXG4gICAgICAgKiAgICAgICAgIFwicm9sZV9pZFwiOiBcIlJvbGUjZTQyN2MyOGEtOWM1Yi00OWNjLWEyNTctODc4YWVhNThhMjJjXCJcbiAgICAgICAqICAgICAgIH1cbiAgICAgICAqICAgICBdLFxuICAgICAgICogICAgIFwic3ViamVjdHNcIjogXCIqXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiYWN0aW9uXCI6IFwic2lnblwiLFxuICAgICAgICogICAgIFwic3ViamVjdHNcIjogXCJSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1wiXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBuZXcgbWV0YWRhdGEuICovXG4gICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgbmV3IG5hbWUgZm9yIHRoZSBwb2xpY3kuICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBuZXcgb3duZXIgZm9yIHRoZSBwb2xpY3kuICovXG4gICAgICBvd25lcj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE5ldyBwb2xpY3kgcnVsZXMuICovXG4gICAgICBydWxlcz86IHVua25vd25bXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCBmb3IgdXBkYXRpbmcgT3JnLWxldmVsIHBvbGljeSBzZWNyZXRzICovXG4gICAgVXBkYXRlUG9saWN5U2VjcmV0c1JlcXVlc3Q6IHtcbiAgICAgIGVkaXRfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFZGl0UG9saWN5XCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZVJvbGVSZXF1ZXN0OiB7XG4gICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZXMgdGhlIHJvbGUncyBgZW5hYmxlZGAgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAqIE9uY2UgZGlzYWJsZWQsIGEgcm9sZSBjYW5ub3QgYmUgdXNlZDsgYW5kIGl0J3MgdG9rZW5zIGNhbm5vdCBiZSB1c2VkIGZvciBzaWduaW5nLlxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIHJvbGUncyBrZXkgcG9saWNpZXMgKG9sZCBwb2xpY2llcyB3aWxsIGJlIG92ZXJ3cml0dGVuISkuXG4gICAgICAgKiBPbmx5IFwiZGVueVwiIHN0eWxlIHBvbGljaWVzIG1heSBiZSBzZXQuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiMTIzLjQ1Ni43OC45LzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgcm9sZSdzIHNldHRpbmdzIGZvciByZXN0cmljdGluZyB3aGljaCBtZW1iZXIgcm9sZXMgYXJlIGFsbG93ZWQgdG9cbiAgICAgICAqIHBlcmZvcm0gYWN0aW9ucyBvbiB0aGlzIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSB7XG4gICAgICAgKiAgIFwiQ3JlYXRlVG9rZW5cIjogW1xuICAgICAgICogICAgIFwiT3duZXJcIlxuICAgICAgICogICBdXG4gICAgICAgKiB9XG4gICAgICAgKi9cbiAgICAgIHJlc3RyaWN0ZWRfYWN0aW9ucz86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdW107XG4gICAgICB9IHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byB1cGRhdGUgYW4gZXhpc3RpbmcgdXNlciAqL1xuICAgIFVwZGF0ZVVzZXJNZW1iZXJzaGlwUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbmFibGUgb3IgZGlzYWJsZSB1c2VyICovXG4gICAgICBkaXNhYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgcm9sZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGb3JtYXQ6IGJpbmFyeVxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBvYmplY3QgZm9yIGFuIFtVcGxvYWRSZXF1ZXN0XS5cbiAgICAgKi9cbiAgICBVcGxvYWRPYmplY3RIYXNoOiBzdHJpbmc7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IGZvciB1cGxvYWRpbmcgYSB3YXNtIHBvbGljeSAqL1xuICAgIFVwbG9hZFdhc21Qb2xpY3lSZXF1ZXN0OiB7XG4gICAgICBoYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwbG9hZE9iamVjdEhhc2hcIl07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBhIHJlcXVlc3QgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5ICovXG4gICAgVXBsb2FkV2FzbVBvbGljeVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgc2lnbmVkIFVSTCBmb3IgdXBsb2FkaW5nIHRoZSByZXF1ZXN0ZWQgd2FzbSBwb2xpY3kuICovXG4gICAgICBzaWduZWRfdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICBVc2VyQ291bnREaW1lbnNpb25zOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXIncyBtZW1iZXJzaGlwIGluIHRoZSBvcmcgKi9cbiAgICAgIG1lbWJlcnNoaXA6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG1ldHJpY3MgbXVzdCBpbmNsdWRlICdvcmdfaWQnIGFzIGEgZGltZW5zaW9uLiAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byBjb21wbGV0ZSBhIHVzZXIgZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXkgdG8gYmUgZXhwb3J0ZWQuIFRoZSBrZXktaWQgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBvbmUgaW5cbiAgICAgICAqIHRoZSBzcGVjaWZpZWQgZXhwb3J0IHJlcXVlc3QsIGFuZCB0aGUgY2FsbGVyIG11c3Qgb3duIHRoaXMga2V5LlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBOSVNUIFAtMjU2IHB1YmxpYyBrZXkgKGJhc2U2NC1lbmNvZGVkIFNFQzEgd2l0aCBvciB3aXRob3V0IGNvbXByZXNzaW9uKVxuICAgICAgICogdG8gd2hpY2ggdGhlIGV4cG9ydCB3aWxsIGJlIGVuY3J5cHRlZC4gSWYgYSBwdWJsaWMga2V5IHdhcyBwcm92aWRlZCB3aGVuXG4gICAgICAgKiBgdXNlcl9leHBvcnRfaW5pdGAgd2FzIGNhbGxlZCwgdGhpcyBrZXkgbXVzdCBtYXRjaCB0aGF0IG9uZS5cbiAgICAgICAqIEBleGFtcGxlIEFrcExULzNkWEFwSnpYU2R1YVBRN2FweVQwQURCd3FrdDFlcy9hVDBpV1dmXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gZW5jcnlwdGVkIHVzZXItZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBleHBvcnRlZCBrZXkgbWF0ZXJpYWwsIGVuY3J5cHRlZCB3aXRoIEFFUy0yNTYtR0NNIHVuZGVyIGEga2V5XG4gICAgICAgKiBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXkgc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QgdmlhIEhQS0UgKFJGQzkxODApXG4gICAgICAgKiB3aXRoIERIS0VNKFAtMjU2LCBIS0RGLVNIQTI1NikgYW5kIGJhc2U2NCBlbmNvZGVkLlxuICAgICAgICovXG4gICAgICBlbmNyeXB0ZWRfa2V5X21hdGVyaWFsOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBhcyBiYXNlNjQtZW5jb2RlZFxuICAgICAgICogdW5jb21wcmVzc2VkIFNFQzEgc2VyaWFsaXphdGlvbi5cbiAgICAgICAqL1xuICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgdG8gd2hpY2ggdGhpcyBrZXkgYmVsb25ncy4gKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IHRvIGluaXRpYXRlIGEgdXNlciBleHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5IHRvIGJlIGV4cG9ydGVkLiBUaGlzIGtleSBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjYWxsZXIuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dFxuICAgICAgICogY29tcHJlc3Npb24pIHRvIHdoaWNoIHRoZSBleHBvcnQgd2lsbCBiZSBlbmNyeXB0ZWQuIElmIHByb3ZpZGVkLCB0aGlzXG4gICAgICAgKiBwdWJsaWMga2V5IE1VU1QgYmUgdGhlIG9uZSB1c2VkIHRvIGVuY3J5cHQgdGhlIGV4cG9ydCBvbmNlIHRoZSBkZWxheSBoYXNcbiAgICAgICAqIGV4cGlyZWQuIE90aGVyd2lzZSwgdGhlIHVzZXIgY2FuIHByb3ZpZGUgYW55IHB1YmxpYyBrZXkgd2hlbiBjb21wbGV0aW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IHJlcXVlc3QgcG9zdCBkZWxheS5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIG9wdGlvbiBtYXkgcHJvdmlkZSBleHRyYSBzZWN1cml0eSB3aGVuIHRoZSB1c2VyIGhhcyBhIHNlY3VyZSBoYXJkd2FyZVxuICAgICAgICogZGV2aWNlIChlLmcuLCBhIHBob25lJ3Mgc2VjdXJlIGVsZW1lbnQgb3IgYSBZdWJpS2V5KSBpbiB3aGljaCBhIE5JU1QgUC0yNTZcbiAgICAgICAqIHNlY3JldCBrZXkgY2FuIGJlIGdlbmVyYXRlZC4gUHJvdmlkaW5nIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBrZXkgaGVyZVxuICAgICAgICogZW5zdXJlcyB0aGF0IG9ubHkgdGhhdCBzcGVjaWZpYyBkZXZpY2Ugd2lsbCBiZSBjYXBhYmxlIG9mIGRlY3J5cHRpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgY2lwaGVydGV4dC5cbiAgICAgICAqXG4gICAgICAgKiBJZiBubyBzZWN1cmUgaGFyZHdhcmUgZGV2aWNlIGlzIGF2YWlsYWJsZSB0byBzdG9yZSB0aGUgc2VjcmV0IGtleSwgdGhpc1xuICAgICAgICogb3B0aW9uIFNIT1VMRCBOT1QgYmUgdXNlZCBiZWNhdXNlIG9mIHRoZSByaXNrIG9mIHNlY3JldCBrZXkgdGhlZnQgZHVyaW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGRlbGF5IHBlcmlvZC5cbiAgICAgICAqIEBleGFtcGxlIEFrcExULzNkWEFwSnpYU2R1YVBRN2FweVQwQURCd3FrdDFlcy9hVDBpV1dmXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gYSBzdWNjZXNzZnVsIHVzZXItZXhwb3J0IGluaXQgcmVxdWVzdCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydFJlcXVlc3RcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIGJlaW5nIHJlcXVlc3RlZC5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBlbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdCBhcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiAqL1xuICAgIFVzZXJFeHBvcnRSZXF1ZXN0OiB7XG4gICAgICBleHBfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmctaWQgaW4gd2hpY2ggdGhlIGtleSBpcyBob3VzZWQuXG4gICAgICAgKiBAZXhhbXBsZSBPcmcjZjM2MWVkNmItNWQxOS00Y2NmLWE0ZDUtZWJhOTM1ZGMwYjkwXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNIQS0yNTYgaGFzaCBvZiB0aGUgcHVibGljIGtleSBwcm92aWRlZCBhdCBleHBvcnQgaW5pdGlhdGlvbixcbiAgICAgICAqIGlmIGFueS4gSWYgYSBrZXkgd2FzIHByb3ZpZGVkLCBvbmx5IHRoYXQga2V5IGNhbiBiZSB1c2VkIHRvIGNvbXBsZXRlXG4gICAgICAgKiB0aGUgZXhwb3J0IHByb2NlZHVyZS4gT3RoZXJ3aXNlLCBhbnkga2V5IGNhbiBiZSB1c2VkLlxuICAgICAgICpcbiAgICAgICAqIElNUE9SVEFOVDogaWYgYSBwdWJsaWMga2V5IGlzIHN1cHBsaWVkIGF0IGV4cG9ydCBpbml0aWF0aW9uLCBpdCBpc1xuICAgICAgICogU1RST05HTFkgUkVDT01NRU5ERUQgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBzZWNyZXQga2V5IGJlIHN0b3JlZCBpblxuICAgICAgICogYSBzZWN1cmUgaGFyZHdhcmUgZGV2aWNlLCBlLmcuLCBhIFl1YmlLZXkgb3IgYSBwaG9uZSdzIHNlY3VyZSBlbGVtZW50LlxuICAgICAgICogSWYgbm8gc3VjaCBoYXJkd2FyZSBpcyBhdmFpbGFibGUsIHN1cHBseWluZyBhIHB1YmxpYyBrZXkgYXQgZXhwb3J0XG4gICAgICAgKiBpbml0aWF0aW9uIGlzIFNUUk9OR0xZIERJU0NPVVJBR0VEIGJlY2F1c2Ugb2YgdGhlIHJpc2sgb2YgdGhlZnQgZHVyaW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGRlbGF5IHBlcmlvZC5cbiAgICAgICAqXG4gICAgICAgKiAoU2VlIGFsc28gdGhlIGNvbW1lbnQgaW4gdGhlIGBwdWJsaWNfa2V5YCBmaWVsZCBvZiBgVXNlckluaXRSZXF1ZXN0YC4pXG4gICAgICAgKiBAZXhhbXBsZSBkZjQ1N2E5OGQ1NTM4NTQwZjU0ZDEzMTZiNTk3YTBmMzliOGQ5NmY0ODhmMTBhMmUzMWE5NTVjMTQ2ZmRmMWQzXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXlfaGFzaD86IHN0cmluZyB8IG51bGw7XG4gICAgICB2YWxpZF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gICAgVXNlckluT3JnSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBlbWFpbCAob3B0aW9uYWwpXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHVzZXIgaGFzIGV2ZXIgc3VjY2Vzc2Z1bGx5IGxvZ2dlZCBpbiAqL1xuICAgICAgaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAgICAgbWVtYmVyc2hpcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyIG5hbWUuICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJzaGlwU3RhdHVzXCJdO1xuICAgICAgdmVyaWZpZWRfZW1haWw/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlZlcmlmaWVkRW1haWxcIl0gfCBudWxsO1xuICAgIH07XG4gICAgVXNlckluT3JnSW5mb1dpdGhJZGVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBlbWFpbCAob3B0aW9uYWwpXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHVzZXIgaGFzIGV2ZXIgc3VjY2Vzc2Z1bGx5IGxvZ2dlZCBpbiAqL1xuICAgICAgaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAgICAgbWVtYmVyc2hpcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyIG5hbWUuICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJzaGlwU3RhdHVzXCJdO1xuICAgICAgdmVyaWZpZWRfZW1haWw/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlZlcmlmaWVkRW1haWxcIl0gfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHRoaXJkLXBhcnR5IGlkZW50aXRpZXMgdmlhIHdoaWNoIHRoZSB1c2VyIHdhcyBmb3VuZCAqL1xuICAgICAgaWRlbnRpdGllcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRlbnRpdHlJbmZvXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSB1c2VyJ3MgbWVtYmVyc2hpcCBpbiBhbiBvcmdhbml6YXRpb25cbiAgICAgKiAod2l0aG91dCBpbmNsdWRpbmcgYW55IGluZm8gYWJvdXQgdGhlIHVzZXIpXG4gICAgICovXG4gICAgVXNlckluT3JnTWVtYmVyc2hpcDoge1xuICAgICAgbWVtYmVyc2hpcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3JnYW5pemF0aW9uIGlkXG4gICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlcnNoaXBTdGF0dXNcIl07XG4gICAgfTtcbiAgICBVc2VySW5Sb2xlSW5mbzoge1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgIG1mYTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb25maWd1cmVkTWZhXCJdW107XG4gICAgICBtZmFfcG9saWN5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbmFtZVxuICAgICAgICogQGV4YW1wbGUgQWxpY2VcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXByZWNhdGVkXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWxsIG9yZ2FuaXphdGlvbnMgdGhlIHVzZXIgYmVsb25ncyB0by4gRGVwcmVjYXRlZCBpbiBmYXZvciBvZiAnb3JncycuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZHM6IHN0cmluZ1tdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgb3JnYW5pemF0aW9ucyB0aGUgdXNlciBiZWxvbmdzIHRvLCBpbmNsdWRpbmcgdGhlIG1lbWJlcnNoaXAgcm9sZSBpbiBlYWNoLiAqL1xuICAgICAgb3JnczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5PcmdNZW1iZXJzaGlwXCJdW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgdmVyaWZpZWRfZW1haWw/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlZlcmlmaWVkRW1haWxcIl0gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gdGhlIHVzZXIvb3JncyBlbmRwb2ludCAqL1xuICAgIFVzZXJPcmdzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygb3JncyB0aGlzIHVzZXIgaXMgYSBtZW1iZXIgb2YgKi9cbiAgICAgIG9yZ3M6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT3JnRGF0YVwiXVtdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgV2ViQXV0aG4gUmVseWluZyBQYXJ0eSBtYXkgcmVxdWlyZSB1c2VyIHZlcmlmaWNhdGlvbiBmb3Igc29tZSBvZiBpdHNcbiAgICAgKiBvcGVyYXRpb25zIGJ1dCBub3QgZm9yIG90aGVycywgYW5kIG1heSB1c2UgdGhpcyB0eXBlIHRvIGV4cHJlc3MgaXRzIG5lZWRzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW0tdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6IFwicmVxdWlyZWRcIiB8IFwiZGlzY291cmFnZWRcIiB8IFwicHJlZmVycmVkXCI7XG4gICAgVmVyaWZpZWRFbWFpbDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFbWFpbCBhZGRyZXNzICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTGFzdCB0aW1lIHRoaXMgcmVjb3JkIHdhcyB1cGRhdGVkIChpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2gpXG4gICAgICAgKi9cbiAgICAgIHVwZGF0ZWRfYXQ6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbiBleGl0IHZvbHVudGFyaWx5IHN1Ym1pdHRlZCBhIHZhbGlkYXRvciB3aG8gd2lzaGVzIHRvIHdpdGhkcmF3LlxuICAgICAqIFRoZSBzY2hlbWEgZm9yIHRoaXMgbWVzc2FnZSBpcyBkZWZpbmVkXG4gICAgICogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNzaWduZWR2b2x1bnRhcnlleGl0KS5cbiAgICAgKi9cbiAgICBWb2x1bnRhcnlFeGl0OiB7XG4gICAgICBlcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEluZGV4IG9mIHRoZSBleGl0aW5nIHZhbGlkYXRvci5cbiAgICAgICAqIEBleGFtcGxlIDI1NlxuICAgICAgICovXG4gICAgICB2YWxpZGF0b3JfaW5kZXg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIGZyb20gaW52b2tpbmcgYSBXYXNtIHBvbGljeS4gKi9cbiAgICBXYXNtUG9saWN5UmVzcG9uc2U6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICByZXNwb25zZTogXCJBbGxvd1wiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWFzb24gZm9yIHRoZSBkZW5pYWwuICovXG4gICAgICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgcmVzcG9uc2U6IFwiRGVueVwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlcnJvciBmcm9tIHRoZSBQb2xpY3kgRW5naW5lLiAqL1xuICAgICAgICAgIGVycm9yOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgcmVzcG9uc2U6IFwiRXJyb3JcIjtcbiAgICAgICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgd2FzbSBwb2xpY3kgcnVsZSB0aGF0IGNhbiBiZSBleGVjdXRlZCBpbiB0aGUgd2FzbSBlbmdpbmUuICovXG4gICAgV2FzbVJ1bGU6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIFNIQS0yNTYgaGFzaCBvZiBhIHdhc20gcG9saWN5IHRoYXQgY2FuIGJlIHVzZWQgdG8gbG9vayBpdCB1cCBpbiB0aGUgcG9saWN5IHN0b3JlLiAqL1xuICAgICAgaGFzaDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSWQgb2YgdGhlIHBvbGljeSB0aGlzIHdhc20gcnVsZSBiZWxvbmdzIHRvLiAqL1xuICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQWxsb3dlZCB3ZWJob29rIG1ldGhvZHNcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFdlYmhvb2tNZXRob2Q6IFwiR0VUXCIgfCBcIlBPU1RcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBheWxvYWQgdGhhdCBpcyBzZW50IHRvIHRoZSB3ZWJob29rLlxuICAgICAqXG4gICAgICogVGhlIHdlYmhvb2sgc2hvdWxkIHJlc3BvbmQgd2l0aCBIVFRQIHN0YXR1cyBjb2RlIDIwMCBpZiB0aGUgb3BlcmF0aW9uIGlzIHBlcm1pdHRlZC5cbiAgICAgKlxuICAgICAqIEFsbCBub24tMjAwIHN0YXR1cyBjb2RlcyBpbXBseSB0aGF0IHRoZSBvcGVyYXRpb24gaXMgZGVuaWVkOyBhbnkgcmVzcG9uc2UgYm9keSByZXR1cm5lZFxuICAgICAqIGJ5IHRoZSB3ZWJob29rIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGVycm9yIHJlc3BvbnNlIHNlbnQgYmFjayB0byB0aGUgY2xpZW50LlxuICAgICAqL1xuICAgIFdlYmhvb2tQYXlsb2FkOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhZGRyZXNzIChtYXRlcmlhbCBpZCkgb2YgdGhlIGtleSB1c2VkIHRvIHNpZ24gdGhlIHJlcXVlc3QgKi9cbiAgICAgIGtleV9hZGRyZXNzOiBzdHJpbmc7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgb3BlcmF0aW9uOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9wZXJhdGlvbktpbmRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwYXlsb2FkIChpZiBhbnkpIG9mIHRoZSBzaWduIG9wZXJhdGlvbiAqL1xuICAgICAgcmVxdWVzdD86IHVua25vd247XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIHRoZSBbRGVueTo6V2ViaG9va10gcG9saWN5LiAqL1xuICAgIFdlYmhvb2tQb2xpY3lQYXJhbXM6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgSFRUUCBoZWFkZXJzIHRvIHNldCAqL1xuICAgICAgaGVhZGVycz86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgfTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgSFRUUCBtZXRob2QgdG8gdXNlLiBEZWZhdWx0cyB0byBQT1NULiAqL1xuICAgICAgbWV0aG9kPzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ3ViZVNpZ25lciBvcGVyYXRpb25zIHRvIHdoaWNoIHRoaXMgcG9saWN5IHNob3VsZCBhcHBseS5cbiAgICAgICAqIFdoZW4gb21pdHRlZCwgYXBwbGllcyB0byBhbGwgb3BlcmF0aW9ucy5cbiAgICAgICAqL1xuICAgICAgcmVzdHJpY3RlZF9vcGVyYXRpb25zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcGVyYXRpb25LaW5kXCJdW10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gUmVxdWVzdCBleGVjdXRpb24gdGltZW91dCBpbiBzZWNvbmRzOyBtdXN0IG5vdCBleGNlZWQgNSBzZWNvbmRzLlxuICAgICAgICovXG4gICAgICB0aW1lb3V0PzogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXJsIG9mIHRoZSB3ZWJob29rICovXG4gICAgICB1cmw6IHN0cmluZztcbiAgICB9O1xuICAgIFdoZXJlQW5kV2hlbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb3VyY2VJcFwiXSAmIHtcbiAgICAgIHRpbWU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT25lIHdpdGhkcmF3YWwgZW50cnkgaW4gW2BXaXRoZHJhd0hpc3RvcnlSZXNwb25zZWBdLiAqL1xuICAgIFdpdGhkcmF3SGlzdG9yeUVudHJ5OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlc3RpbmF0aW9uIGFkZHJlc3MuICovXG4gICAgICBhZGRyZXNzOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdpdGhkcmF3YWwgYW1vdW50LCBhcyBhIGRlY2ltYWwgc3RyaW5nLiAqL1xuICAgICAgYW1vdW50OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaW1lIHRoZSB3aXRoZHJhd2FsIHdhcyByZXF1ZXN0ZWQgKEJpbmFuY2UgcmV0dXJucyBhIFVUQyBzdHJpbmcsXG4gICAgICAgKiBlLmcuIGBcIjIwMTktMDktMjQgMTI6NDM6NDVcImApLlxuICAgICAgICovXG4gICAgICBhcHBseVRpbWU6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXNzZXQgc3ltYm9sIChlLmcuIGBcIlVTRFRcImAsIGBcIkJUQ1wiYCkuICovXG4gICAgICBjb2luOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaW1lIHRoZSB3aXRoZHJhd2FsIGNvbXBsZXRlZCAoVVRDIHN0cmluZyksIHByZXNlbnQgb25jZVxuICAgICAgICogYHN0YXR1cyA9PSA2YC5cbiAgICAgICAqL1xuICAgICAgY29tcGxldGVUaW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBvbi1jaGFpbiBjb25maXJtYXRpb25zLlxuICAgICAgICovXG4gICAgICBjb25maXJtTm8/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQmluYW5jZS1hc3NpZ25lZCB3aXRoZHJhd2FsIGlkLiBNYXRjaGVzIHRoZSBgaWRgIHJldHVybmVkIGJ5XG4gICAgICAgKiBbYFdpdGhkcmF3UmVzcG9uc2VgXS5cbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRmFpbHVyZSByZWFzb24gd2hlbiB0aGUgd2l0aGRyYXdhbCB3YXMgcmVqZWN0ZWQuICovXG4gICAgICBpbmZvPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmxvY2tjaGFpbiBuZXR3b3JrIGlkZW50aWZpZXIgKGUuZy4gYFwiQlNDXCJgLCBgXCJFVEhcImApLiAqL1xuICAgICAgbmV0d29yaz86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaXRoZHJhd2FsIHN0YXR1cy4gQmluYW5jZSB2YWx1ZXM6IGAwYCA9IEVtYWlsIFNlbnQsXG4gICAgICAgKiBgMmAgPSBBd2FpdGluZyBBcHByb3ZhbCwgYDNgID0gUmVqZWN0ZWQsIGA0YCA9IFByb2Nlc3NpbmcsXG4gICAgICAgKiBgNmAgPSBDb21wbGV0ZWQuIExlZnQgYXMgYHU4YCBmb3IgZm9yd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgICAgICovXG4gICAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gTmV0d29yayBmZWUgY2hhcmdlZCBmb3IgdGhlIHdpdGhkcmF3YWwsIGFzIGEgZGVjaW1hbCBzdHJpbmcuICovXG4gICAgICB0cmFuc2FjdGlvbkZlZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gYDBgID0gZXh0ZXJuYWwgdHJhbnNmZXIsIGAxYCA9IGludGVybmFsIChCaW5hbmNl4oaUQmluYW5jZSkgdHJhbnNmZXIuXG4gICAgICAgKi9cbiAgICAgIHRyYW5zZmVyVHlwZTogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT24tY2hhaW4gdHJhbnNhY3Rpb24gaGFzaCwgb25jZSBCaW5hbmNlIGhhcyBicm9hZGNhc3QgdGhlIHdpdGhkcmF3YWwuXG4gICAgICAgKiBNYXkgYmUgZW1wdHkgdW50aWwgdGhlbi5cbiAgICAgICAqL1xuICAgICAgdHhJZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTb3VyY2Ugd2FsbGV0OiBgMGAgPSBzcG90IHdhbGxldCwgYDFgID0gZnVuZGluZyB3YWxsZXQuXG4gICAgICAgKi9cbiAgICAgIHdhbGxldFR5cGU6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENsaWVudC1zdXBwbGllZCB3aXRoZHJhd2FsIGlkLCBpZiBvbmUgd2FzIHNldCBvbiB0aGUgb3JpZ2luYWxcbiAgICAgICAqIHdpdGhkcmF3YWwgY2FsbC5cbiAgICAgICAqL1xuICAgICAgd2l0aGRyYXdPcmRlcklkPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBgR0VUIC9zYXBpL3YxL2NhcGl0YWwvd2l0aGRyYXcvaGlzdG9yeWAuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBtYXN0ZXIgYWNjb3VudCdzIHdpdGhkcmF3YWwgaGlzdG9yeS4gQWxsIGZpbHRlcnMgYXJlXG4gICAgICogb3B0aW9uYWw7IGlmIGBzdGFydF90aW1lYC9gZW5kX3RpbWVgIGFyZSBvbWl0dGVkLCBCaW5hbmNlIHJldHVybnMgdGhlXG4gICAgICogbW9zdCByZWNlbnQgOTAgZGF5cy4gVXNlIGBpZF9saXN0YCB0byBsb29rIHVwIHNwZWNpZmljIHdpdGhkcmF3YWxzIGJ5XG4gICAgICogdGhlIGBpZGAgcmV0dXJuZWQgZnJvbSBbYEJpbmFuY2VScGM6OldpdGhkcmF3YF0sIG9yIGB3aXRoZHJhd19vcmRlcl9pZGBcbiAgICAgKiB0byBsb29rIG9uZSB1cCBieSBpdHMgY2xpZW50LXN1cHBsaWVkIGlkLlxuICAgICAqL1xuICAgIFdpdGhkcmF3SGlzdG9yeVJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdGVyIHRvIGEgc3BlY2lmaWMgYXNzZXQgKGUuZy4gYFwiVVNEVFwiYCkuICovXG4gICAgICBjb2luPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFdpbmRvdyBlbmQgKG1zIHNpbmNlIGVwb2NoKS5cbiAgICAgICAqL1xuICAgICAgZW5kVGltZT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBCaW5hbmNlLWFzc2lnbmVkIHdpdGhkcmF3YWwgaWRzICh0aGUgYGlkYFxuICAgICAgICogZmllbGQgb2YgW2BXaXRoZHJhd1Jlc3BvbnNlYF0pLiBVcCB0byA0NSBpZHMgcGVyIHF1ZXJ5LCBwZXIgQmluYW5jZS5cbiAgICAgICAqL1xuICAgICAgaWRMaXN0Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFBhZ2Ugc2l6ZSAoQmluYW5jZSBkZWZhdWx0IGFuZCBtYXg6IDEwMDApLlxuICAgICAgICovXG4gICAgICBsaW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQYWdpbmF0aW9uIG9mZnNldC5cbiAgICAgICAqL1xuICAgICAgb2Zmc2V0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFdpbmRvdyBzdGFydCAobXMgc2luY2UgZXBvY2gpLlxuICAgICAgICovXG4gICAgICBzdGFydFRpbWU/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IHdpdGhkcmF3YWwgc3RhdHVzLiBCaW5hbmNlIHZhbHVlczpcbiAgICAgICAqIGAwYCA9IEVtYWlsIFNlbnQsIGAyYCA9IEF3YWl0aW5nIEFwcHJvdmFsLCBgM2AgPSBSZWplY3RlZCxcbiAgICAgICAqIGA0YCA9IFByb2Nlc3NpbmcsIGA2YCA9IENvbXBsZXRlZC4gTGVmdCBhcyBgdThgIGZvciBmb3J3YXJkXG4gICAgICAgKiBjb21wYXRpYmlsaXR5LlxuICAgICAgICovXG4gICAgICBzdGF0dXM/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IHRoZSBjbGllbnQtc3VwcGxpZWQgd2l0aGRyYXdhbCBpZCBvcmlnaW5hbGx5IHBhc3NlZCB0b1xuICAgICAgICogW2BXaXRoZHJhd1JlcXVlc3Q6OndpdGhkcmF3X29yZGVyX2lkYF0uXG4gICAgICAgKi9cbiAgICAgIHdpdGhkcmF3T3JkZXJJZD86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgYnkgYGNzX2JpbmFuY2VXaXRoZHJhd0hpc3RvcnlgLlxuICAgICAqXG4gICAgICogQmluYW5jZSByZXR1cm5zIGEgdG9wLWxldmVsIEpTT04gYXJyYXk7IHRoaXMgbmV3dHlwZSBwcmVzZXJ2ZXMgdGhhdCB3aXJlXG4gICAgICogZm9ybWF0IHdoaWxlIGdpdmluZyB0aGUgcmVzcG9uc2UgYSBuYW1lZCB0eXBlIGluIHRoZSBPcGVuQVBJIHNjaGVtYS5cbiAgICAgKi9cbiAgICBXaXRoZHJhd0hpc3RvcnlSZXNwb25zZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJXaXRoZHJhd0hpc3RvcnlFbnRyeVwiXVtdO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBgUE9TVCAvc2FwaS92MS9jYXBpdGFsL3dpdGhkcmF3L2FwcGx5YC5cbiAgICAgKlxuICAgICAqIFN1Ym1pdHMgYSB3aXRoZHJhd2FsIG9mIGBhbW91bnRgIG9mIGBjb2luYCB0byB0aGUgZ2l2ZW4gZXh0ZXJuYWwgYGFkZHJlc3NgLlxuICAgICAqIFRoZSBzaWduaW5nIGtleSdzIGFjY291bnQgbXVzdCBoYXZlIHdpdGhkcmF3YWwgcGVybWlzc2lvbnMgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBXaXRoZHJhd1JlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzdGluYXRpb24gYWRkcmVzcy4gKi9cbiAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNlY29uZGFyeSBhZGRyZXNzIGlkZW50aWZpZXIgcmVxdWlyZWQgYnkgc29tZSBhc3NldHMgKGUuZy4gbWVtbyBmb3JcbiAgICAgICAqIFhSUCwgdGFnIGZvciBYTE0pLlxuICAgICAgICovXG4gICAgICBhZGRyZXNzVGFnPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBhbW91bnQgYmVpbmcgd2l0aGRyYXduLCBmb3JtYXR0ZWQgYXMgYSBkZWNpbWFsIHN0cmluZyAoZS5nLiBgXCIwLjFcImApLlxuICAgICAgICogU2VudCB2ZXJiYXRpbTogQmluYW5jZSBpcyBzdHJpY3QgYWJvdXQgZGVjaW1hbCBmb3JtYXR0aW5nLlxuICAgICAgICovXG4gICAgICBhbW91bnQ6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFzc2V0IHN5bWJvbCBiZWluZyB3aXRoZHJhd24gKGUuZy4gYFwiVVNEVFwiYCwgYFwiQlRDXCJgKS4gKi9cbiAgICAgIGNvaW46IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSB3aXRoZHJhd2FsLiAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOZXR3b3JrIGlkZW50aWZpZXIgKGUuZy4gYFwiQlNDXCJgLCBgXCJFVEhcImApLiBJZiBvbWl0dGVkLCBCaW5hbmNlIHBpY2tzXG4gICAgICAgKiB0aGUgZGVmYXVsdCBuZXR3b3JrIGZvciB0aGUgYXNzZXQuXG4gICAgICAgKi9cbiAgICAgIG5ldHdvcms/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgYHRydWVgLCB0aGUgd2l0aGRyYXdhbCBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgZGVzdGluYXRpb24gYW1vdW50O1xuICAgICAgICogaWYgYGZhbHNlYCAoQmluYW5jZSBkZWZhdWx0KSwgaXQgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgYWNjb3VudCBiYWxhbmNlXG4gICAgICAgKiBpbiBhZGRpdGlvbiB0byBgYW1vdW50YC5cbiAgICAgICAqL1xuICAgICAgdHJhbnNhY3Rpb25GZWVGbGFnPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTb3VyY2Ugd2FsbGV0OiBgMGAgPSBzcG90IHdhbGxldCAoZGVmYXVsdCksIGAxYCA9IGZ1bmRpbmcgd2FsbGV0LlxuICAgICAgICovXG4gICAgICB3YWxsZXRUeXBlPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENsaWVudC1zdXBwbGllZCB3aXRoZHJhd2FsIGlkLCByZXR1cm5lZCBieSBCaW5hbmNlIGFzIGB3aXRoZHJhd09yZGVySWRgXG4gICAgICAgKiBpbiBzdWJzZXF1ZW50IHdpdGhkcmF3YWwtaGlzdG9yeSBxdWVyaWVzLlxuICAgICAgICovXG4gICAgICB3aXRoZHJhd09yZGVySWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSByZXR1cm5lZCBieSBgY3NfYmluYW5jZVdpdGhkcmF3YC4gKi9cbiAgICBXaXRoZHJhd1Jlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBCaW5hbmNlLWFzc2lnbmVkIHdpdGhkcmF3YWwgaWQuIFVzZWQgdG8gbG9vayB0aGUgcmVxdWVzdCB1cCBsYXRlciB2aWFcbiAgICAgICAqIHRoZSB3aXRoZHJhd2FsLWhpc3RvcnkgZW5kcG9pbnQuXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgcmVzcG9uc2VzOiB7XG4gICAgQWRkVGhpcmRQYXJ0eVVzZXJSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZiAqL1xuICAgICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byB0aGUgaWRwIGF1dGhlbnRpY2F0ZSBlbmRwb2ludCAqL1xuICAgIEF1dGhlbnRpY2F0aW9uUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIE9JREMgdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBhdXRoZW50aWNhdGUgd2l0aCBDdWJlU2lnbmVyICovXG4gICAgICAgICAgaWRfdG9rZW46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBCYWJ5bG9uQ292U2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2gtdW5ib25kaW5nIHRyYW5zYWN0aW9uIHNpZ25hdHVyZXMgYXMgYW4gYXJyYXkgb2YgaGV4IHN0cmluZ3Mgd2l0aCBubyAweCBwcmVmaXhcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICBcIjAyZTIxYTdiMDUxOTUzOWVmNjcwZjc5ZDFjMjVhNTRmOTBiMGM2ZDlmZGI1NmE3ZGU4MTNmYjIwNzAzMzAzMmZmZmFkOGFhYWZlYjFiNzdkZDllYThmMTdkYWRjZjI5NzY5NmJiZjVhNDEzMzI5MmYzNTE1Yjg2YmI5YzJkNzhkOWNcIlxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzbGFzaF91bmJvbmRpbmdfdHJhbnNhY3Rpb25zX3NpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2hpbmcgdHJhbnNhY3Rpb24gc2lnbmF0dXJlcyBhcyBhbiBhcnJheSBvZiBoZXggc3RyaW5ncyB3aXRoIG5vIDB4IHByZWZpeFxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiMDMwNzVlY2E5ZDE3NmQxNjA1ZDZjMDk2YzExMWU5YTRmOGQ4NzM5YWM5NzA4YzFkZjNlZDUxNjEwNmU3YWIxMzg3YTM5MjRhNjY1MmFjZjJlMzUyNDM1OTczMWNhMWZiYjMzOGEzYWZiMWE2N2Y2ZWExOWMyMDdiNmZmNDY2YTVhZFwiLFxuICAgICAgICAgICAqICAgXCIwMjIyMjQ0OTNmNGNmZmFkNWI4NDA3NmRiMzJkZDhjNDlhMjhmZjQ4YWY0ZTE5ZTJiY2M5OTUzZmY4MDM0N2JhNmU4MzQzY2Y3YTQ0ZTc0YTk2ZmY3MWVhNTlhMDNiNDAxNjZlODViMGQxMzU1OTU0ZTA0YTQ0MjdkYzhkNjM3ZmYwXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2xhc2hpbmdfdHJhbnNhY3Rpb25zX3NpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc2lnbmF0dXJlIHRoYXQgYWxsb3dzIGV4cGFuZGluZyBhIHN0YWtlIGJ5IHNwZW5kaW5nIHRoZSBjdXJyZW50IGFjdGl2ZVxuICAgICAgICAgICAqIHN0YWtlIHRyYW5zYWN0aW9uIGludG8gYSBuZXcgc3Rha2luZyB0cmFuc2FjdGlvbi4gQSB2YWx1ZSBpcyBwcmVzZW50IGlmZiB0aGVcbiAgICAgICAgICAgKiBjb3JyZXNwb25kaW5nIHJlcXVlc3QgaW5jbHVkZWQgYSBgc3Rha2VfZXhwYW5zaW9uYCB2YWx1ZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBiNTczZTMxODgwM2ZkN2FlZTFiZTViNmIxOGQ0OTZjYzYwZWNjNTI0MjlkYmQ0NzdhODc5MjE3YzNlZDI2YTc5NWNiNGY0ZTg4MGFhZmYzYTZhZDY2MzM1ZTU0MDRmYTUxY2FlYjQ5NjRmMGM5Zjc1NjI3Mzc4NjRlM2JkZTViY1xuICAgICAgICAgICAqL1xuICAgICAgICAgIHN0YWtlX2V4cGFuc2lvbl90cmFuc2FjdGlvbl9zaWduYXR1cmU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdW5ib25kaW5nIHRyYW5zYWN0aW9uIHNpZ25hdHVyZSBhcyBoZXggc3RyaW5nIHdpdGggbm8gMHggcHJlZml4XG4gICAgICAgICAgICogQGV4YW1wbGUgYjU3M2UzMTg4MDNmZDdhZWUxYmU1YjZiMThkNDk2Y2M2MGVjYzUyNDI5ZGJkNDc3YTg3OTIxN2MzZWQyNmE3OTVjYjRmNGU4ODBhYWZmM2E2YWQ2NjMzNWU1NDA0ZmE1MWNhZWI0OTY0ZjBjOWY3NTYyNzM3ODY0ZTNiZGU1YmNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1bmJvbmRpbmdfdHJhbnNhY3Rpb25fc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQmFieWxvblJlZ2lzdHJhdGlvblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgQmFieWxvbiBhZGRyZXNzIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBzdGFraW5nIHJld2FyZHMgZm9yIHRoaXMgZGVwb3NpdC5cbiAgICAgICAgICAgKlxuICAgICAgICAgICAqIFRoaXMgdmFsdWUgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBgYmJuX2FkZHJgIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCxcbiAgICAgICAgICAgKiBidXQgaXQgd2lsbCBhbHdheXMgaGF2ZSBhIGBiYm5gIGh1bWFuLXJlYWRhYmxlIHBhcnQuXG4gICAgICAgICAgICogQGV4YW1wbGUgYmJuMW41YW5tYzBra3JoNzB5ank3ZjZmMzk5Yzc0eWQwOXhsNXRlZmZtXG4gICAgICAgICAgICovXG4gICAgICAgICAgYmJuX2FkZHI6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gUFNCVC4gVGhpcyBQU0JUIGluY2x1ZGVzIHNpZ25hdHVyZXMgb24gYW55XG4gICAgICAgICAgICogaW5wdXRzIGNvbnRyb2xsZWQgYnkgdGhlIHN0YWtlciB0YXByb290IGtleSBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZGVwb3NpdDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gZmVlIGluIHNhdHMuXG4gICAgICAgICAgICogQGV4YW1wbGUgMTMzN1xuICAgICAgICAgICAqL1xuICAgICAgICAgIGRlcG9zaXRfZmVlOiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwcm9vZiBvZiBwb3NzZXNzaW9uLCBpLmUuLCBhIEJJUDMyMiBzaWduYXR1cmUgb24gdGhlIHN0YWtlcidzXG4gICAgICAgICAgICogQmFieWxvbiBhZGRyZXNzIHNpZ25lZCBieSB0aGUgc3Rha2VyIHRhcHJvb3Qga2V5LiBUaGlzIGlzIGEgQml0Y29pblxuICAgICAgICAgICAqIHdpdG5lc3Mgc3RhY2sgaW4gQml0Y29pbiBjb25zZW5zdXMgaGV4IGVuY29kaW5nLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvcDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNsYXNoLWRlcG9zaXQgdHJhbnNhY3Rpb24gaW4gQml0Y29pbiBjb25zZW5zdXMgaGV4IGVuY29kaW5nLiAqL1xuICAgICAgICAgIHNsYXNoX2RlcG9zaXQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YWtlciB0YXByb290IGtleSdzIHNpZ25hdHVyZSBvbiB0aGUgc2xhc2gtZGVwb3NpdCB0cmFuc2FjdGlvbi5cbiAgICAgICAgICAgKiBUaGlzIGlzIGEgQklQMzQwIHNpZ25hdHVyZSBpbiBoZXggZm9ybWF0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNsYXNoX2RlcG9zaXRfc2lnOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc2xhc2gtdW5ib25kIHRyYW5zYWN0aW9uIGluIEJpdGNvaW4gY29uc2Vuc3VzIGhleCBlbmNvZGluZy4gKi9cbiAgICAgICAgICBzbGFzaF91bmJvbmQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YWtlciB0YXByb290IGtleSdzIHNpZ25hdHVyZSBvbiB0aGUgc2xhc2gtdW5ib25kIHRyYW5zYWN0aW9uLlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBCSVAzNDAgc2lnbmF0dXJlIGluIGhleCBmb3JtYXQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2xhc2hfdW5ib25kX3NpZzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlICh1bnNpZ25lZCkgdW5ib25kaW5nIHRyYW5zYWN0aW9uIGluIEJpdGNvaW4gY29uc2Vuc3VzIGhleCBlbmNvZGluZy4gKi9cbiAgICAgICAgICB1bmJvbmQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBCYWJ5bG9uU3Rha2luZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIGZlZSBpbiBzYXRzXG4gICAgICAgICAgICogQGV4YW1wbGUgMTMzN1xuICAgICAgICAgICAqL1xuICAgICAgICAgIGZlZTogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgUFNCVCBpbiBlaXRoZXIgaGV4IG9yIGJhc2U2NCBzZXJpYWxpemF0aW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgNzA3MzYyNzRmZjAxMDA1ZS4uLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBzYnQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIGJ5IHRoZSB0eXBlZCBgYmluYW5jZV9zaWduYCBlbmRwb2ludC4gKi9cbiAgICBCaW5hbmNlU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZnVsbCBzaWduZWQgcXVlcnkgc3RyaW5nLCByZWFkeSB0byBiZSBzdWJtaXR0ZWQgdG8gQmluYW5jZS5cbiAgICAgICAgICAgKiBFbmNvZGVkIGFzIGA8dXJsZW5jb2RlZCBwYXJhbXM+JnJlY3ZXaW5kb3c9PG1zPiZ0aW1lc3RhbXA9PG1zPiZzaWduYXR1cmU9PHVybGVuY29kZWQgYmFzZTY0IHNpZz5gLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25lZF9xdWVyeTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQlRDIG1lc3NhZ2Ugc2lnbmluZyByZXNwb25zZSAqL1xuICAgIEJ0Y01lc3NhZ2VTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYmFzZTY0LWVuY29kZWQgc2lnbmF0dXJlIGluIEJJUDEzNyBmb3JtYXQuICovXG4gICAgICAgICAgc2lnOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIHBvbGljeSBLViBzdG9yZSBidWNrZXQuICovXG4gICAgQnVja2V0SW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKHtcbiAgICAgICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICBsYXN0X21vZGlmaWVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFZlcnNpb24gb2YgdGhpcyBvYmplY3RcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGFjY2Vzcy1jb250cm9sIGVudHJpZXMgZm9yIHRoZSBidWNrZXQuICovXG4gICAgICAgICAgYWNsPzogdW5rbm93bltdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFyYml0cmFyeSB1c2VyLWRlZmluZWQgbWV0YWRhdGEuICovXG4gICAgICAgICAgbWV0YWRhdGE/OiB1bmtub3duO1xuICAgICAgICAgIG93bmVyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBidWNrZXQuICovXG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG51bWJlciBvZiB1c2VycyBhbmQga2V5cyBpbiBhbiBvcmcsIG9yZ2FuaXplZCBieSB1c2VyIHJvbGUgYW5kIGtleSB0eXBlICovXG4gICAgQ29tcHV0ZUNvdW50c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgbWFwIG9mIGEgYEtleVR5cGVgIHRvIHRoZSBhbW91bnQgb2Yga2V5cyB3aXRoIHRoYXQgdHlwZSBpbiB0aGUgb3JnLlxuICAgICAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAgICAgKiAgIFwiU2VjcEJ0Y1wiOiAzLFxuICAgICAgICAgICAqICAgXCJTZWNwRXRoQWRkclwiOiAxXG4gICAgICAgICAgICogfVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleXM6IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IG51bWJlcjtcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIG1hcCBvZiBhIGBNZW1iZXJSb2xlYCB0byB0aGUgYW1vdW50IG9mIG51bWJlciBvZiB1c2VycyB3aXRoIHRoYXQgcm9sZSBpbiB0aGUgb3JnLlxuICAgICAgICAgICAqIEBleGFtcGxlIHtcbiAgICAgICAgICAgKiAgIFwiTWVtYmVyXCI6IDEwLFxuICAgICAgICAgICAqICAgXCJPd25lclwiOiAxXG4gICAgICAgICAgICogfVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJzOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgQ29udGFjdC4gKi9cbiAgICBDb250YWN0SW5mb1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbnRhY3RcIl0gJiB7XG4gICAgICAgICAgYWRkcmVzc2VzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZHJlc3NNYXBcIl07XG4gICAgICAgICAgaWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mbyBhYm91dCB0aGUgY3JlYXRlZCBrZXlzICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBbY3JlYXRlX2ltcG9ydF9rZXldIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBrZXkgYW5kIGVuY2xhdmVcbiAgICAgKiBhdHRlc3RhdGlvbnMuXG4gICAgICovXG4gICAgQ3JlYXRlUG9saWN5SW1wb3J0S2V5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ld2x5IGNyZWF0ZWQgcm9sZSBpbmZvcm1hdGlvbiAqL1xuICAgIENyZWF0ZVJvbGVSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlLlxuICAgICAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBuZXdseSBjcmVhdGVkIHJvbGVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHRvIFtDdXN0b21DaGFpblJwY1JlcXVlc3RdICovXG4gICAgQ3VzdG9tQ2hhaW5ScGNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogdW5rbm93bjtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgYSBEaWZmaWUgSGVsbG1hbiBrZXkgZXhjaGFuZ2UgKi9cbiAgICBEaWZmaWVIZWxsbWFuUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzdWx0aW5nIHBvaW50cyBhcyBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZ3MgaW4gYSBrZXktdHlwZS0tZGVwZW5kZW50IGZvcm1hdC4gKi9cbiAgICAgICAgICAgICAgcG9pbnRzOiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgICAgIHJlc3BvbnNlX3R5cGU6IFwibWFza2VkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCB7XG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBjaXBoZXJ0ZXh0IGNvbnRhaW5pbmcgdGhlIHJlc3VsdGluZyBwb2ludHMuIFRoZSBlbmNsb3NlZCBwbGFpbnRleHQgaXMgYSBzZXF1ZW5jZVxuICAgICAgICAgICAgICAgKiBvZiBiYXNlNjQtZW5jb2RlZCBieXRlIHN0cmluZ3MgaW4gYSBrZXktdHlwZS0tZGVwZW5kZW50IGZvcm1hdC5cbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIGVuY3J5cHRlZF9zaGFyZWRfc2VjcmV0czogc3RyaW5nO1xuICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIGZvciBIUEtFIGtleSBkZXJpdmF0aW9uIGluIGJhc2U2NC1lbmNvZGVkXG4gICAgICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBlcGhlbWVyYWxfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICAgICAgcmVzcG9uc2VfdHlwZTogXCJlbmNyeXB0ZWRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBIVFRQIHJlc3BvbnNlIHRvIGFuIGVtYWlsIE9UUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogVGhpcyByZXNwb25zZSBjb250YWlucyBhbiBPSURDIHRva2VuIHdpdGhvdXQgYSBzaWduYXR1cmUuXG4gICAgICogVGhlIHNpZ25hdHVyZSBpcyBzZW50IHRvIHRoZSBlbmQtdXNlciBpbiBhbiBlbWFpbC5cbiAgICAgKiBUaGUgdG9rZW4gY2FuIGJlIHJlY29uc3RydWN0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGUgYHBhcnRpYWxfdG9rZW5gIHdpdGggdGhlIHNpZ25hdHVyZS5cbiAgICAgKi9cbiAgICBFbWFpbE90cFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHRva2VuIHdpdGhvdXQgdGhlIHNpZ25hdHVyZS5cbiAgICAgICAgICAgKiAoVGhlIHNpZ25hdHVyZSwgd2hpY2ggaXMgYWN0dWFsbHkgYSBNQUMsIGlzIHNlbnQgdG8gdGhlIGVuZC11c2VyIGluIGFuIGVtYWlsKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBhcnRpYWxfdG9rZW46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIGdlbmVyYXRlZCB3aGVuIGNyZWF0aW5nIEVPVFMgbm9uY2VzICovXG4gICAgRW90c0NyZWF0ZU5vbmNlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBnZW5lcmF0ZWQgbm9uY2VzIGFzIGFuIGFycmF5IG9mIDB4LXByZWZpeGVkIGhleCBzdHJpbmdzXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCIweGIzOTNiZjM5ZTcxYTE2ZDc4NDg1M2Q1ODI1NWEyOTYyMjJhOTlmZDNjODdhYTdjYTIwNmM1MjMwYzE4OGYxYzdcIixcbiAgICAgICAgICAgKiAgIFwiMHhlMDE5MzY1ODRiNGYwYzBlOTdmMGQzMDE4YzRmOWRiMmJmN2RlNDEzOTVjNjQwM2E0OGZkMGRmZjBlZjdiNDBkXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgbm9uY2VzOiBzdHJpbmdbXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHRvIFtFc3Bsb3JhUmVxdWVzdF0gKi9cbiAgICBFc3Bsb3JhUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHVua25vd247XG4gICAgICB9O1xuICAgIH07XG4gICAgRXRoMVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgUkxQIGVuY29kaW5nIG9mIHRoZSB0cmFuc2FjdGlvbiBhbmQgaXRzIHNpZ25hdHVyZVxuICAgICAgICAgICAqIEBleGFtcGxlIDB4MjI4OTUxMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMjAxZDU4NjU2YjBlMjJhYWE2OGZkYzY5MmRiNDE5NzkwOThjMzg4NmVkMzMwMTVkNzQ2N2RlOTIxMTYwOWNkYWMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDhiMGMyOTAwMzI0ZDNmZjlhZGZiYTdmZGZlNWFmM2Y5YjJjZGJlZWY3YjI4MDQzN2JiZjFiMWM1OWEwOTNkNjE1YWZlM2U1ZGZlZDk2MjJiNTQwY2RkOWI0OWIzYzVhZDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5MDExYWRiY2MzYmM5YzAzMDdiYjA3ZjM3ZGRhMWExYTljNjlkMmUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwOTAzZGI4NTI1Njc0YjhlNzkwNGY5YjdkN2Q5ZWM1NWEwYTQyZDMzY2Y1OGJlMjU0NjliMGMyMWJiYjZkMDYxNzJiYzViYjVmZDFhZWQ4ZTRmMzU5MzY5Njg5NTgxMTZiMDYxOTU1M2MyY2IxYzUyZTczMjMwNzRjNmY4ZWIzZDVhNzA3NGZjNjU4MDE0OGRmOTA3ODM3ZmEzYjE2NGFkN2ZiYzIyODhkYWQxZThhNWIwMjEwOTViNTdjOGEzNmQ0XG4gICAgICAgICAgICovXG4gICAgICAgICAgcmxwX3NpZ25lZF90eDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEZpZG9Bc3NlcnRDaGFsbGVuZ2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICAgICAgfSkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbiAgICAgICAgfSkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIHNlbmRlciBjb25maWd1cmF0aW9uICh3aXRob3V0IHNlbnNpdGl2ZSBhdXRoIGRldGFpbHMpICovXG4gICAgR2V0RW1haWxDb25maWdSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFkZHJlc3MgdGhhdCBlbWFpbHMgYXJlIHNlbnQgZnJvbSAqL1xuICAgICAgICAgIHNlbmRlcjogc3RyaW5nO1xuICAgICAgICAgIHRlbXBsYXRlPzoge1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBIVE1MIHRlbXBsYXRlIHRvIHVzZSBmb3IgdGhlIGJvZHkuICovXG4gICAgICAgICAgICBib2R5X3RlbXBsYXRlOiBzdHJpbmc7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzdWJqZWN0IGxpbmUgdGVtcGxhdGUgKi9cbiAgICAgICAgICAgIHN1YmplY3RfdGVtcGxhdGU6IHN0cmluZztcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBHZXRVc2VyQnlFbWFpbFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFR5cGljYWxseSwgdGhpcyBhcnJheSBpcyBlaXRoZXIgZW1wdHkgKGlmIG5vIHVzZXIgd2l0aCBhIGdpdmVuIGVtYWlsIHdhcyBmb3VuZClcbiAgICAgICAgICAgKiBvciBjb250YWlucyBhIHNpbmdsZSBlbGVtZW50LCBpLmUuLCB0aGUgdXNlciB3aXRoIGEgZ2l2ZW4gZW1haWwuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluT3JnSW5mb1dpdGhJZGVudGl0eVwiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEdldFVzZXJCeU9pZGNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHVzZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ0luZm9XaXRoSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGF1ZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICAgICAqIEBleGFtcGxlIHVzZXJAZW1haWwuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGlkZW50aXR5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjSWRlbnRpdHlcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcm5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgY3ViaXN0ZGV2XG4gICAgICAgICAgICovXG4gICAgICAgICAgcHJlZmVycmVkX3VzZXJuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICB1c2VyX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1YmVTaWduZXJVc2VySW5mb1wiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgdGhlIHByb29mICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBXYXNtIHBvbGljeS4gKi9cbiAgICBJbnZva2VQb2xpY3lSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldhc21Qb2xpY3lSZXNwb25zZVwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJ5dGVzIHdyaXR0ZW4gdG8gYHN0ZGVycmAsIGVuY29kZWQgYXMgYSBoZXgtc3RyaW5nLlxuICAgICAgICAgICAqIEluIG1vc3QgY2FzZXMsIHRoZXNlIGJ5dGVzIGNvcnJlc3BvbmQgdG8gYSBVVEYtOC1lbmNvZGVkIGBTdHJpbmdgLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHN0ZGVycjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYnl0ZXMgd3JpdHRlbiB0byBgc3Rkb3V0YCwgZW5jb2RlZCBhcyBhIGhleC1zdHJpbmcuXG4gICAgICAgICAgICogSW4gbW9zdCBjYXNlcywgdGhlc2UgYnl0ZXMgY29ycmVzcG9uZCB0byBhIFVURi04LWVuY29kZWQgYFN0cmluZ2AuXG4gICAgICAgICAgICovXG4gICAgICAgICAgc3Rkb3V0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgSnJwY1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlc3BvbnNlXCJdICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIFJQQyBBUEkncyByZXNwb25zZS4gKi9cbiAgICBKc29uUnBjUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBlcnJvcj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JPYmpcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSUQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0LiAqL1xuICAgICAgICAgIGlkPzogdW5rbm93bjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIENvbnN0YW50IFwiMi4wXCIuICovXG4gICAgICAgICAganNvbnJwYzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzdWx0LCBpZiBzdWNjZXNzLiAqL1xuICAgICAgICAgIHJlc3VsdD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgS2V5IHNldCBkZXNjcmliaW5nIHRoZSBrZXkgdXNlZCB0byBzaWduIEpTT04gV2ViIFRva2VucyAqL1xuICAgIEp3a1NldFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUga2V5cyBpbmNsdWRlZCBpbiB0aGlzIHNldCAqL1xuICAgICAgICAgIGtleXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSB3cmFwcGVkIGtleS1pbXBvcnQga2V5ICovXG4gICAgS2V5SW1wb3J0S2V5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdG8gd2hpY2ggYW4gaW1wb3J0ZWQga2V5IHNob3VsZCBiZSBlbmNyeXB0ZWQuXG4gICAgICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluUm9sZUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IElEXG4gICAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIGtleV9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgdGhpcyBrZXkgaXMgdXNlZCBvbiBiZWhhbGYgb2YgdGhpcyByb2xlXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICAgICAqICAgfSxcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICAgICAqICAgICAgIFwia2luZFwiOiBcIkNhbm9uaWNhbFwiXG4gICAgICAgICAgICogICAgIH1cbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFJvbGUgSURcbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1xuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBLZXlJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbW1vbkZpZWxkc1wiXSAmIHtcbiAgICAgICAgICBkZXJpdmF0aW9uX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleURlcml2YXRpb25JbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGtleSBpcyBlbmFibGVkIChvbmx5IGVuYWJsZWQga2V5cyBtYXkgYmUgdXNlZCBmb3Igc2lnbmluZykgKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleTogXCJLZXkjXCIgZm9sbG93ZWQgYnkgYSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0b1xuICAgICAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE93bmVyIG9mIHRoZSBrZXlcbiAgICAgICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICAgICAqL1xuICAgICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEtleSBwb2xpY3lcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAgICAgKiAgICAgfVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k6IHVua25vd25bXTtcbiAgICAgICAgICBwcm9wZXJ0aWVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlQcm9wZXJ0aWVzUGF0Y2hcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGtleSBwcm92ZW5hbmNlLiAqL1xuICAgICAgICAgIHByb3ZlbmFuY2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCwgc2VyaWFsaXplZCBwdWJsaWMga2V5LiBUaGUgZm9ybWF0IHVzZWQgZGVwZW5kcyBvbiB0aGUga2V5IHR5cGU6XG4gICAgICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBTdGFyayBrZXlzIHVzZSAzMy1ieXRlIGNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBCTFMga2V5cyB1c2UgNDgtYnl0ZSBjb21wcmVzc2VkIEJMUzEyLTM4MSAoWkNhc2gpIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDA0ZDI2ODhiNmJjMmNlN2Y5ODc5YjllNzQ1ZjNjNGRjMTc3OTA4YzVjZWYwYzFiNjRjZmYxOWFlN2ZmMjdkZWU2MjNjNjRmZTlkOWMzMjVjN2ZiYmM3NDhiYmQ1ZjYwN2NlMTRkZDgzZTI4ZWJiYmI3ZDNlN2YyZmZiNzBhNzk0MzFcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwdXJwb3NlIGZvciB3aGljaCB0aGUga2V5IGNhbiBiZSB1c2VkIChlLmcuLCBjaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXMpXG4gICAgICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWdpb24gYWZmaW5pdHkgZm9yIHRoaXMga2V5ICovXG4gICAgICAgICAgcmVnaW9uPzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgcmV0dXJuZWQgd2hlbiByZXF1ZXN0aW5nIGEga2V5IGF0dGVzdGF0aW9uLiAqL1xuICAgIEtleUluZm9Kd3Q6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBLZXlJbmZvYCBzdHJ1Y3R1cmUuICovXG4gICAgICAgICAgand0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgS2V5SW5mb3M6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoaXJkLXBhcnR5IGlkZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyJ3MgYWNjb3VudCAqL1xuICAgIExpc3RJZGVudGl0aWVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBpZGVudGl0aWVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkZW50aXR5SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzICovXG4gICAgICAgICAgbWZhX3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNTUkgcmVxdWVzdHMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLiAqL1xuICAgIExpc3RQZW5kaW5nTWVzc2FnZXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgbWVzc2FnZXMgZm9yIGEgdXNlci4gKi9cbiAgICAgICAgICBwZW5kaW5nX21lc3NhZ2VzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBlbmRpbmdNZXNzYWdlSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmV0dXJuZWQgYXMgYSByZXNwb25zZSBmcm9tIG11bHRpcGxlIHJvdXRlcyAoZS5nLiwgJ2dldCBtZmEnLCAnYXBwcm92ZSBtZmEnLCAnYXBwcm92ZSB0b3RwJykuICovXG4gICAgTWZhUmVxdWVzdEluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBjcmVhdGVkX2F0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHNlc3Npb24gaWRlbnRpdHkgKHVzZXIgb3Igcm9sZSkgdGhhdCBjcmVhdGVkIHRoaXMgcmVxdWVzdC4gKi9cbiAgICAgICAgICBjcmVhdGVkX2J5OiBzdHJpbmc7XG4gICAgICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXBwcm92YWwgcmVxdWVzdCBJRC4gKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIG5vdF92YWxpZF91bnRpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gTUZBIHBvbGljeSBwcm92ZW5hbmNlXG4gICAgICAgICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwcm92ZW5hbmNlOiBcIk9yZ1wiIHwgXCJLZXlcIiB8IFwiS2V5SW5Sb2xlXCIgfCBcIlJvbGVcIiB8IFwiVXNlclwiIHwgXCJFZGl0UG9saWN5XCI7XG4gICAgICAgICAgcmVjZWlwdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVjZWlwdFwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVnaW9uIHRoaXMgTUZBIHJlcXVlc3Qgd2FzIGNyZWF0ZWQgaW4uICBJdCBjYW4gb25seSBiZSByZWRlZW1lZCBmcm9tIHRoZSBzYW1lIHJlZ2lvbi4gKi9cbiAgICAgICAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgY29udGFpbnMgdGhlIElEcyBvZiBhbGwgTUZBIHJlcXVlc3RzIChpbmNsdWRpbmcgdGhpcyBvbmUhKSB0aGF0XG4gICAgICAgICAgICogd2VyZSBnZW5lcmF0ZWQgYXQgb25jZSBmb3IgdGhlIHNhbWUgQ3ViZVNpZ25lciBvcGVyYXRpb24uXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBJZiBub3Qgc2V0LCBpdCBtZWFucyB0aGF0IHRoaXMgd2FzIHRoZSBsb25lIE1GQSByZXF1ZXN0IGdlbmVyYXRlZCBmb3IgYHJlcXVlc3RgLlxuICAgICAgICAgICAqXG4gICAgICAgICAgICogVGhpcyBpcyB1c2VmdWwgc28gdGhhdCBhIGNsaWVudCBjYW4gZGlzY292ZXIgYWxsIHRoZSBNRkFzIHdob3NlIHJlY2VpcHRzIG11c3RcbiAgICAgICAgICAgKiBiZSBzdWJtaXR0ZWQgdG9nZXRoZXIgdG8gY2Fycnkgb3V0IHRoZSBvcmlnaW5hbCBDdWJlU2lnbmVyIG9wZXJhdGlvbi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICByZWxhdGVkX2lkcz86IHN0cmluZ1tdO1xuICAgICAgICAgIHJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RcIl07XG4gICAgICAgICAgc3RhdHVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YXR1c1wiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIGFib3V0IGEgbmV3IHNlc3Npb24sIHJldHVybmVkIGZyb20gbXVsdGlwbGUgZW5kcG9pbnRzIChlLmcuLCBsb2dpbiwgcmVmcmVzaCwgZXRjLikuICovXG4gICAgTmV3U2Vzc2lvblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGV4cGlyYXRpb24gKGluIHNlY29uZHMgc2luY2UgVU5JWCBlcG9jaCksIGJleW9uZCB3aGljaCBpdCBjYW5ub3QgYmUgcmVmcmVzaGVkLlxuICAgICAgICAgICAqIEBleGFtcGxlIDE3MDE4Nzk2NDBcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBleHBpcmF0aW9uPzogbnVtYmVyO1xuICAgICAgICAgIG9yZ19pZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byByZWZyZXNoIHRoaXMgc2Vzc2lvbi4gKi9cbiAgICAgICAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgICAgICAgc2Vzc2lvbl9pbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25JbmZvXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBOZXcgdG9rZW4gdG8gYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24uIFJlcXVlc3RzIHRvIHNpZ25pbmcgZW5kcG9pbnRzXG4gICAgICAgICAgICogc2hvdWxkIGluY2x1ZGUgdGhpcyB2YWx1ZSBpbiB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b2tlbjogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3JnLWV4cG9ydCBjaXBoZXJ0ZXh0IHJldHJpZXZlZCB2aWEgdGhlIG9yZy1leHBvcnQgQVBJLiAqL1xuICAgIE9yZ0V4cG9ydFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGJhc2U2NC1lbmNvZGVkIGV4cG9ydCBjaXBoZXJ0ZXh0LiAqL1xuICAgICAgICAgIGNpcGhlcnRleHQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBPcmdJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVpcmVtZW50c1wiXSAmXG4gICAgICAgICAgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAgICAgICBhY2Nlc3NfbW9kZWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXNzTW9kZWxcIl07XG4gICAgICAgICAgICBjdXN0b21fY2hhaW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdXN0b21DaGFpbnNEYXRhXCJdIHwgbnVsbDtcbiAgICAgICAgICAgIGRlZmF1bHRfaW52aXRlX2tpbmQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZUtpbmRcIl07XG4gICAgICAgICAgICBlbWFpbF9wcmVmZXJlbmNlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxQcmVmZXJlbmNlc1wiXTtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSwgYWxsIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBpbnZvbHZpbmcga2V5cyBpbiB0aGlzIG9yZyBhcmUgZGlzYWJsZWQuICovXG4gICAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgICAgZXh0X2RhdGE/OlxuICAgICAgICAgICAgICB8ICh7XG4gICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAqIFRoaXMgc2V0dGluZyBpcyBjaGVja2VkIG9ubHkgd2hlbiBhbiBhbGllbiB1c2VyIHJlcXVlc3RzIHRvIGNyZWF0ZSBvciBpbXBvcnQgYSBuZXcga2V5LlxuICAgICAgICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgIGFsaWVuX2tleV9jb3VudF90aHJlc2hvbGQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICAgICAgICBjcmVhdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdIHwgbnVsbDtcbiAgICAgICAgICAgICAgICAgIGxhc3RfbW9kaWZpZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl0gfCBudWxsO1xuICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGlzIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgICAgICAgICAgICAgIH0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4pXG4gICAgICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgICAgIGhpc3RvcmljYWxfZGF0YV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIaXN0b3JpY2FsRGF0YUNvbmZpZ3VyYXRpb25cIl07XG4gICAgICAgICAgICBpZHBfY29uZmlndXJhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRwQ29uZmlnXCJdO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkOiB0aGlzIGZpZWxkIHNob3VsZCBiZSBpZ25vcmVkLiAqL1xuICAgICAgICAgICAga2V5X2ltcG9ydF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIHVuaXZlcnNhbGx5IHVuaXF1ZSBrZXktd3JhcHBpbmcta2V5IGlkZW50aWZpZXIuXG4gICAgICAgICAgICAgKiBUaGlzIHZhbHVlIGlzIHJlcXVpcmVkIHdoZW4gc2V0dGluZyB1cCBrZXkgZXhwb3J0LlxuICAgICAgICAgICAgICogQGV4YW1wbGUgbXJrLWZjZTA5NTI1ZTgxNTg3ZDIzNTIwZjExZTA3ZTJlOWQ5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGt3a19pZDogc3RyaW5nO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRGF0ZS90aW1lIChpbiBVVEMpIHdoZW4gbGFzdCAndW5zdGFrZScgd2FzIHBlcmZvcm1lZC4gVW5peCBlcG9jaCBpZiBub25lLlxuICAgICAgICAgICAgICogQGV4YW1wbGUgVE9ET1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsYXN0X3Vuc3Rha2U6IHN0cmluZztcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55ICd1bnN0YWtlJyBjYWxscyBoYXBwZW5lZCBvbiB0aGUgZGF5IHdoZW4gYGxhc3RfdW5zdGFrZWAgd2FzIHBlcmZvcm1lZC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGFzdF91bnN0YWtlX2RheV9jb3VudDogbnVtYmVyO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG1ldHJpY3MgYXJlIGNvbGxlY3RlZCBmb3IgdGhpcyBvcmcgKi9cbiAgICAgICAgICAgIG1ldHJpY3NfZW5hYmxlZD86IGJvb2xlYW47XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3Mgbm90aWZpY2F0aW9uIGVuZHBvaW50cywgd2hpY2ggYXJlIEhUVFBTIFVSTHMgYXJlIG5vdGlmaWVkIGFib3V0IGFcbiAgICAgICAgICAgICAqIGNvbmZpZ3VyYWJsZSBzZXQgb2YgZXZlbnRzIGluIGFuIG9yZ2FuaXphdGlvbi4gRm9yIGVhY2ggZXZlbnQsIEN1YmVTaWduZXIgc2VuZHMgYSBQT1NUXG4gICAgICAgICAgICAgKiByZXF1ZXN0IHdpdGggYSBKU09OLWZvcm1hdHRlZCBib2R5IHRoYXQgY29udGFpbnMgdGhlIGV2ZW50IGRldGFpbHMuXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgICAqICAgICBcImFyblwiOiBcImFybjphd3M6c25zOnVzLWVhc3QtMTowMTIzNDU2Nzg5MDE6T3JnRXZlbnRzVG9waWM6MTIzNDU2NzgtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxXCIsXG4gICAgICAgICAgICAgKiAgICAgXCJjb25maWdcIjoge1xuICAgICAgICAgICAgICogICAgICAgXCJ1cmxcIjogXCJodHRwczovL2V4YW1wbGUuY29tL2VuZHBvaW50MVwiXG4gICAgICAgICAgICAgKiAgICAgfSxcbiAgICAgICAgICAgICAqICAgICBcInN0YXR1c1wiOiBcIkNvbmZpcm1lZFwiXG4gICAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgICAqICAgICBcImFyblwiOiBcImFybjphd3M6c25zOnVzLWVhc3QtMTowMTIzNDU2Nzg5MDE6T3JnRXZlbnRzVG9waWM6MTIzNDU2NzgtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAyXCIsXG4gICAgICAgICAgICAgKiAgICAgXCJjb25maWdcIjoge1xuICAgICAgICAgICAgICogICAgICAgXCJmaWx0ZXJcIjoge1xuICAgICAgICAgICAgICogICAgICAgICBcIk9uZU9mXCI6IFtcbiAgICAgICAgICAgICAqICAgICAgICAgICBcIkV0aDJDb25jdXJyZW50QXR0ZXN0YXRpb25TaWduaW5nXCIsXG4gICAgICAgICAgICAgKiAgICAgICAgICAgXCJFdGgyQ29uY3VycmVudEJsb2NrU2lnbmluZ1wiXG4gICAgICAgICAgICAgKiAgICAgICAgIF1cbiAgICAgICAgICAgICAqICAgICAgIH0sXG4gICAgICAgICAgICAgKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnQyXCJcbiAgICAgICAgICAgICAqICAgICB9LFxuICAgICAgICAgICAgICogICAgIFwic3RhdHVzXCI6IFwiUGVuZGluZ1wiXG4gICAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgICAqIF1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbm90aWZpY2F0aW9uX2VuZHBvaW50cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTm90aWZpY2F0aW9uRW5kcG9pbnRcIl1bXTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAgICAgcGFzc2tleV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQYXNza2V5Q29uZmlnXCJdO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgcG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgYSBrZXkgaXMgdXNlZCBmb3Igc2lnbmluZ1xuICAgICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAgICogICB7XG4gICAgICAgICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICAgICAgICogICB9XG4gICAgICAgICAgICAgKiBdXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgICAgcG9saWN5X2VuZ2luZV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFbmdpbmVDb25maWd1cmF0aW9uXCJdO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gR2xvYmFsIHNpZ24gcG9saWN5IHRoYXQgYXBwbGllcyB0byBldmVyeSBzaWduIG9wZXJhdGlvbiAoZXZlcnkga2V5LCBldmVyeSByb2xlKSBpbiB0aGUgb3JnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAgICAgICAgICogICB9XG4gICAgICAgICAgICAgKiBdXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNpZ25fcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgVE9UUCBmYWlsdXJlIGxpbWl0LCBpLmUuLCB0aGUgbnVtYmVyXG4gICAgICAgICAgICAgKiBvZiB0aW1lcyBhIHVzZXIgY2FuIHByb3ZpZGUgYW4gaW5jb3JyZWN0IFRPVFAgY29kZSBiZWZvcmUgYmVpbmcgcmF0ZSBsaW1pdGVkLlxuICAgICAgICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ6IG51bWJlcjtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIG1pbmltdW1cbiAgICAgICAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAgICAgICAqIGl0IG1heSBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlIGlzIG1lYW5pbmdsZXNzIGZvciBvcmdhbml6YXRpb25zIHRoYXQgdXNlXG4gICAgICAgICAgICAgKiBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB1c2VyX2V4cG9ydF9kZWxheTogbnVtYmVyO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHVzZXIgZXhwb3J0IGlzIGRpc2FibGVkICovXG4gICAgICAgICAgICB1c2VyX2V4cG9ydF9kaXNhYmxlZD86IGJvb2xlYW47XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50XG4gICAgICAgICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICAgICAgICogdGhlIHVzZXIgZXhwb3J0IHJlcXVlc3QgaGFzIGV4cGlyZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZVxuICAgICAgICAgICAgICogaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2Ugb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdXNlcl9leHBvcnRfd2luZG93OiBudW1iZXI7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIG9mZmljaWFsIHdlYmFwcCBvcmlnaW4gaXMgYXV0b21hdGljYWxseSBhbGxvd2VkICovXG4gICAgICAgICAgICB3ZWJhcHBfZW5hYmxlZD86IGJvb2xlYW47XG4gICAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRBdWRpdExvZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBdWRpdCBsb2cgZW50cmllcyAqL1xuICAgICAgICAgIGVudHJpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXVkaXRMb2dFbnRyeVwiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRHZXRVc2Vyc0luT3JnUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHVzZXJzIGluIHRoZSBvcmcgKi9cbiAgICAgICAgICB1c2VyczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VySW5PcmdJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RCdWNrZXRzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBidWNrZXRzIGluIHRoZSBvcmdhbml6YXRpb24uICovXG4gICAgICAgICAgYnVja2V0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdWNrZXRJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RDb250YWN0c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgY29udGFjdHMgaW4gdGhlIG9yZ2FuaXphdGlvbiwgbWF0Y2hpbmcgYW55IHByb3ZpZGVkIHF1ZXJpZXMuICovXG4gICAgICAgICAgY29udGFjdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdEluZm9SZXNwb25zZVwiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0SGlzdG9yaWNhbFR4UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEhpc3RvcmljYWwgdHJhbnNhY3Rpb25zIHNpZ25lZCB3aXRoIHRoZSByZXF1ZXN0ZWQga2V5LCBzb3J0ZWQgZnJvbSBtb3N0IHRvIGxlYXN0IHJlY2VudC4gKi9cbiAgICAgICAgICB0eHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbFR4XCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RJbnZpdGF0aW9uc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBQZW5kaW5nIGludml0YXRpb25zICovXG4gICAgICAgICAgaW52aXRhdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRhdGlvbkluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdEtleVJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyB0aGUga2V5IGlzIGluICovXG4gICAgICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RQb2xpY2llc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT3JnJ3MgbmFtZWQgcG9saWNpZXMuICovXG4gICAgICAgICAgcG9saWNpZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5SW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIGtleXMgaW4gYSByb2xlICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHVzZXJzIGluIGEgcm9sZSAqL1xuICAgICAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgICAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFBvbGljeUxvZ3NSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBleGVjdXRpb24gbG9ncyAqL1xuICAgICAgICAgIGxvZ3M6IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgICB9W107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFF1ZXJ5TWV0cmljc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBZHZpc29yeSBtZXNzYWdlcyAoZS5nLiwgaWYgbWF4IG51bWJlciBvZiByZXN1bHRzIGlzIHJlYWNoZWQpLiAqL1xuICAgICAgICAgIG1lc3NhZ2VzPzogc3RyaW5nW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcGVyaW9kIGZvciB3aGljaCB0aGUgc3RhdGlzdGljIGlzIGNvbXB1dGVkLCBpZiBhbnkgKG5vdCBhbGwgbWV0cmljcyBzdXBwb3J0IHNwbGl0dGluZyB0aGUgcmVxdWVzdGVkIHRpbWUgcmFuZ2UgaW50byBiaW5zKS5cbiAgICAgICAgICAgKiBJZiBzZXQsIGVxdWFscyB0byB0aGUgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCByb3VuZGVkIHVwIHRvIHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIDYwLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBlcmlvZD86IG51bWJlcjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFNvbWUgbWV0cmljcyBjYW4gb3B0aW9uYWxseSByZXR1cm4gdGhlIHJhdyBkYXRhLCB3aGVuIHJlcXVlc3RlZC4gKi9cbiAgICAgICAgICByYXdfZGF0YToge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIENvbXB1dGVkIGRhdGEgcG9pbnRzLiAqL1xuICAgICAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRhdGEgcG9pbnRzLCBvbmUgZm9yIGVhY2ggdGltZSBwZXJpb2QgKHRpbWUgcGVyaW9kcyBmb3Igd2hpY2ggdGhlIHZhbHVlIGlzIDAgYXJlIG9taXR0ZWQpLiAqL1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBba2V5OiBzdHJpbmddOiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWV0cmljIGRpbWVuc2lvbnMuICovXG4gICAgICAgICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVtdO1xuICAgICAgICAgIHN0YXQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9yZ01ldHJpY1N0YXRcIl0gfCBudWxsO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFVzZXJFeHBvcnRMaXN0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBleHBvcnRfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNcIl07XG4gICAgICAgIH0pICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IGFuIGV4aXN0aW5nIE1NSSByZXF1ZXN0LiAqL1xuICAgIFBlbmRpbmdNZXNzYWdlSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIG1ldGFkYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1taU1ldGFkYXRhXCJdO1xuICAgICAgICAgIHNpZ25lZE1lc3NhZ2U/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNpZ25lZE1lc3NhZ2VcIl0gfCBudWxsO1xuICAgICAgICAgIHRyYW5zYWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUcmFuc2FjdGlvbkFuZFN0YXR1c1wiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgY3JlYXRlZF9hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcGVuZGluZyBtZXNzYWdlICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZGVudGl0eSAoYSB1c2VyIG9yIGEgcm9sZSBpZCkgd2hpY2ggY3JlYXRlZCB0aGlzIG1lc3NhZ2UuICovXG4gICAgICAgICAgaWRlbnRpdHk6IHN0cmluZztcbiAgICAgICAgICBtZXNzYWdlX2VpcDE5MT86IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCAoaW5jbHVkaW5nIGEgJzB4JyBwcmVmaXgpIG1lc3NhZ2UgdG8gc2lnbi4gKi9cbiAgICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgICBtZXNzYWdlX2VpcDcxMj86IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEZyb20gYWRkcmVzcywgaGV4LWVuY29kZWQsIHdpdGggbGVhZGluZyAnMHgnXG4gICAgICAgICAgICAgKiBAZXhhbXBsZSAweDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICAgICAgZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZERhdGFcIl07XG4gICAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICAgIHZlcnNpb246IFwidjNcIiB8IFwidjRcIjtcbiAgICAgICAgICB9IHwgbnVsbDtcbiAgICAgICAgICBtZXNzYWdlX3R4PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUeXBlZFRyYW5zYWN0aW9uXCJdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IGFuIGV4aXN0aW5nIE1NSSBtZXNzYWdlLCBpbmNsdWRpbmcgdGhlIHNpZ25hdHVyZS4gKi9cbiAgICBQZW5kaW5nTWVzc2FnZVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKHtcbiAgICAgICAgICBtZXRhZGF0YTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNbWlNZXRhZGF0YVwiXTtcbiAgICAgICAgICBzaWduZWRNZXNzYWdlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZWRNZXNzYWdlXCJdIHwgbnVsbDtcbiAgICAgICAgICB0cmFuc2FjdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHJhbnNhY3Rpb25BbmRTdGF0dXNcIl0gfCBudWxsO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIGNyZWF0ZWRfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICBleHBpcmVzX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHBlbmRpbmcgbWVzc2FnZSAqL1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWRlbnRpdHkgKGEgdXNlciBvciBhIHJvbGUgaWQpIHdoaWNoIGNyZWF0ZWQgdGhpcyBtZXNzYWdlLiAqL1xuICAgICAgICAgIGlkZW50aXR5OiBzdHJpbmc7XG4gICAgICAgICAgbWVzc2FnZV9laXAxOTE/OiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIGFkZHJlc3MsIGhleC1lbmNvZGVkLCB3aXRoIGxlYWRpbmcgJzB4J1xuICAgICAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgKGluY2x1ZGluZyBhICcweCcgcHJlZml4KSBtZXNzYWdlIHRvIHNpZ24uICovXG4gICAgICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAgICAgfSB8IG51bGw7XG4gICAgICAgICAgbWVzc2FnZV9laXA3MTI/OiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIGFkZHJlc3MsIGhleC1lbmNvZGVkLCB3aXRoIGxlYWRpbmcgJzB4J1xuICAgICAgICAgICAgICogQGV4YW1wbGUgMHgwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICAgICAgICAgIGRhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWREYXRhXCJdO1xuICAgICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgICB2ZXJzaW9uOiBcInYzXCIgfCBcInY0XCI7XG4gICAgICAgICAgfSB8IG51bGw7XG4gICAgICAgICAgbWVzc2FnZV90eD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVHlwZWRUcmFuc2FjdGlvblwiXSB8IG51bGw7XG4gICAgICAgIH0pICZcbiAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHN0cnVjdCBjb250YWluaW5nIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcG9saWN5LiAqL1xuICAgIFBvbGljeUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MtY29udHJvbCBlbnRyaWVzIGZvciB0aGUgcG9saWN5LiAqL1xuICAgICAgICAgIGFjbD86IHVua25vd25bXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2YgZW50aXRpZXMgKGtleXMsIHJvbGVzLCBldGMuKSB0aGUgcG9saWN5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICAgICAgICAgIGF0dGFjaGVkX3RvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUF0dGFjaGVkVG9JZFwiXVtdO1xuICAgICAgICAgIGNyZWF0ZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICBlZGl0X3BvbGljeT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWRpdFBvbGljeVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXItZGVmaW5lZCBtZXRhZGF0YSBmb3IgdGhlIG5hbWVkIHBvbGljeS4gKi9cbiAgICAgICAgICBtZXRhZGF0YT86IHVua25vd247XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LiAqL1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICBvd25lcjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgaWQgKi9cbiAgICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgICAgICBwb2xpY3lfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lUeXBlXCJdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSBydWxlLiAqL1xuICAgICAgICAgIHJ1bGVzOiB1bmtub3duW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IHJ1bGUncyB2ZXJzaW9uLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHZlcnNpb246IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5UmVzdWx0UmVzcG9uc2UgaXMgYSB3cmFwcGVyIG9uIFBvbGljeVJlc3VsdCB3aXRoIHR3byBpbXBvcnRhbnRcbiAgICAgKiBwcm9wZXJ0aWVzOlxuICAgICAqICogZGVyaXZlcyBPa1RvTG9nUmVzcG9uc2UsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIHJvY2tldCBoYW5kbGVyLlxuICAgICAqICogZGVyaXZlcyBUb1NjaGVtYSBhbmQgVG9SZXNwb25zZSwgd2l0aCB0aGUgYHZhbGAgZmllbGQgd2l0aCB2YWx1ZV90eXBlXG4gICAgICogT2JqZWN0LCBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcHJvdmlkZSBhbGwgb2YgdGhlIE9wZW5BUEkgdHlwZVxuICAgICAqIGRlc2NyaXB0aW9ucyBvZiBhIFBvbGljeVJlc3VsdC5cbiAgICAgKlxuICAgICAqIFRoZSBQb2xpY3lSZXN1bHQgaW5jbHVkZXMgZW51bXMgYW5kIG90aGVyIHN0YW5kYXJkIHR5cGVzIChlLmcuXG4gICAgICogc3RkOjp0aW1lOjpJbnRlcnZhbCkgd2hpY2ggYXJlIG5vbnRyaXZpYWwgdG8gcmVwcmVzZW50IGluIE9wZW5BUEkuIFNpbmNlXG4gICAgICogdGhpcyBlbmRwb2ludCBpcyBqdXN0IGZvciB0ZXN0aW5nLCB3ZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCBob3cgYWNjdXJhdGVcbiAgICAgKiB0aGUgc2NoZW1hIGlzLCBhbmQgY2FuIGxlYW4gb24gc2VyZGVfanNvbiB3aGVuIGRlY29kaW5nIHRoaXMgcmVzcG9uc2UgdG8gYVxuICAgICAqIFBvbGljeVJlc3VsdCBpbiBhIGNsaWVudC4gTm90ZSB0aGF0IHRoZXJlIGlzIGEgYnVnIGluIHV0b2lwYSB3aGVyZSB0aGVcbiAgICAgKiB2YWx1ZV90eXBlIGFubm90YXRpb24gd2lsbCBub3Qgd29yayBmb3IgYSB0dXBsZS1zdHJ1Y3QsIG9ubHkgYSBzdHJ1Y3Qgd2l0aFxuICAgICAqIGZpZWxkcy5cbiAgICAgKi9cbiAgICBQb2xpY3lSZXN1bHRSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHZhbDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzdHJ1Y3QgY29udGFpbmluZyBhbGwgbm9uLXNlY3JldCBpbmZvcm1hdGlvbiBhYm91dCBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICBQb2xpY3lTZWNyZXRzSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlcHJlY2F0ZWRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5hbWVzIG9mIHRoZSBzZWNyZXRzLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWVzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwb2xpY3kgc2VjcmV0cy4gKi9cbiAgICAgICAgICBzZWNyZXRzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY3JldEluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHRvIGEgUFNCVCBzaWduaW5nIHJlcXVlc3QgKi9cbiAgICBQc2J0U2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY3kgZXZhbHVhdGlvbiB0cmVlLiAqL1xuICAgICAgICAgIHBvbGljeV9ldmFsX3RyZWU/OiB1bmtub3duO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgUFNCVCBpbiBzdGFuZGFyZCBoZXggc2VyaWFsaXphdGlvbiwgd2l0aG91dCBsZWFkaW5nIFwiMHhcIi5cbiAgICAgICAgICAgKiBAZXhhbXBsZSA3MDczNjI3NGZmMDEwMDVlLi4uXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHNidDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUHVibGljIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICBQdWJsaWNPcmdJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFeHBsaWNpdGx5IGNvbmZpZ3VyZWQgKGFsbG93bGlzdGVkKSBPcGVuSUQgcHJvdmlkZXJzIGZvciBhbiBvcmcgKi9cbiAgICAgICAgICBvaWRjX2lzc3VlcnM6IHtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSW50ZW5kZWQgYXVkaWVuY2VzIChjbGllbnQgSURzKSAqL1xuICAgICAgICAgICAgYXVkaWVuY2VzOiBzdHJpbmdbXTtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gSXNzdWVyIFVSTCAqL1xuICAgICAgICAgICAgaXNzdWVyOiBzdHJpbmc7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGlzc3VlciBuaWNrbmFtZSAqL1xuICAgICAgICAgICAgbmlja25hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciByb2xlcyBhbGxvd2VkIHRvIHVzZSB0aGlzIElEUCAqL1xuICAgICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXVtdO1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3JnIGlkZW50aWZpZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIGxvZ2dpbmcgaW4gd2l0aCBqdXN0IGEgcGFzc2tleSBpcyBhbGxvd2VkICovXG4gICAgICAgICAgcGFzc2tleV9sb2dpbl9lbmFibGVkOiBib29sZWFuO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1ldHJpYyBkYXRhIHBvaW50cy4gKi9cbiAgICBRdWVyeU1ldHJpY3NSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWR2aXNvcnkgbWVzc2FnZXMgKGUuZy4sIGlmIG1heCBudW1iZXIgb2YgcmVzdWx0cyBpcyByZWFjaGVkKS4gKi9cbiAgICAgICAgICBtZXNzYWdlcz86IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBlcmlvZCBmb3Igd2hpY2ggdGhlIHN0YXRpc3RpYyBpcyBjb21wdXRlZCwgaWYgYW55IChub3QgYWxsIG1ldHJpY3Mgc3VwcG9ydCBzcGxpdHRpbmcgdGhlIHJlcXVlc3RlZCB0aW1lIHJhbmdlIGludG8gYmlucykuXG4gICAgICAgICAgICogSWYgc2V0LCBlcXVhbHMgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHJlcXVlc3Qgcm91bmRlZCB1cCB0byB0aGUgY2xvc2VzdCBtdWx0aXBsZSBvZiA2MC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwZXJpb2Q/OiBudW1iZXI7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTb21lIG1ldHJpY3MgY2FuIG9wdGlvbmFsbHkgcmV0dXJuIHRoZSByYXcgZGF0YSwgd2hlbiByZXF1ZXN0ZWQuICovXG4gICAgICAgICAgcmF3X2RhdGE6IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgICB9W107XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDb21wdXRlZCBkYXRhIHBvaW50cy4gKi9cbiAgICAgICAgICByZXN1bHRzOiB7XG4gICAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkYXRhIHBvaW50cywgb25lIGZvciBlYWNoIHRpbWUgcGVyaW9kICh0aW1lIHBlcmlvZHMgZm9yIHdoaWNoIHRoZSB2YWx1ZSBpcyAwIGFyZSBvbWl0dGVkKS4gKi9cbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogbnVtYmVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1ldHJpYyBkaW1lbnNpb25zLiAqL1xuICAgICAgICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1bXTtcbiAgICAgICAgICBzdGF0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdNZXRyaWNTdGF0XCJdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBSb2xlSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb21tb25GaWVsZHNcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIHJvbGUgaXMgZW5hYmxlZFxuICAgICAgICAgICAqIEBleGFtcGxlIHRydWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZC4gVGhlIEN1YmVTaWduZXIgSURzIG9mIGF0IG1vc3QgMTAwIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcm9sZS4gKi9cbiAgICAgICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaXMgYSBtZW1iZXIgb2YgdGhlIHJvbGUuIFRoaXMgaXMgYWx3YXlzIHRydWUsXG4gICAgICAgICAgICogZXhjZXB0IGZvciBvd25lcnMgd2hvIGNhbiBzZWUgcm9sZXMgdGhleSBhcmUgbm90IG1lbWJlcnMgb2YuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbWVtYmVyOiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIHJlc3RyaWN0ZWRfYWN0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXN0cmljdGVkQWN0aW9uc01hcFwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSByb2xlXG4gICAgICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgbGlzdCBvZiBhdCBtb3N0IDEwMCB1c2VycyB3aXRoIGFjY2VzcyB0byB0aGUgcm9sZS4gKi9cbiAgICAgICAgICB1c2Vycz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHJldHVybmVkIHdoZW4gcmVxdWVzdGluZyBhIHJvbGUgYXR0ZXN0YXRpb24uICovXG4gICAgUm9sZUluZm9Kd3Q6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgSlNPTiBXZWIgVG9rZW4gd2hvc2UgY2xhaW1zIGNvbnRhaW4gdGhlIGBSb2xlSW5mb2Agc3RydWN0dXJlLiAqL1xuICAgICAgICAgIGp3dDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNlc3Npb25JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25NZXRhZGF0YVwiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIENyZWF0aW9uIGRhdGUgKGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaClcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjcmVhdGVkX2F0OiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBFeHBpcmF0aW9uIGRhdGUgKGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaClcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBleHA6IG51bWJlcjtcbiAgICAgICAgICBsYXN0X3VzZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIldoZXJlQW5kV2hlblwiXSB8IG51bGw7XG4gICAgICAgICAgbGlmZXRpbWVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2Vzc2lvblxuICAgICAgICAgICAqIEBleGFtcGxlIE9JREMgbG9naW4gc2Vzc2lvblxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gTGlzdHMgdXNlciBwZXJtaXNzaW9uIGFuZCBhY2Nlc3MgZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCJzaWduOipcIixcbiAgICAgICAgICAgKiAgIFwibWFuYWdlOm1mYTp2b3RlOmNzXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2NvcGVzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTY29wZVwiXVtdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVbmlxdWVseSBpZGVudGlmaWVzIHRoZSBzZXNzaW9uLCBidXQgY2Fubm90IGJlIHVzZWQgZm9yIGF1dGguXG4gICAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCByZXN1bHRpbmcgc2lnbmF0dXJlLiAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmV0dXJuZWQgdXBvbiBhIHN1Y2Nlc3NmdWwgU0lXRSBhdXRoZW50aWNhdGlvbi4gKi9cbiAgICBTaXdlQ29tcGxldGVSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGUgdXNlciB3aXRoIHRoZSByZXF1ZXN0ZWQgU0lXRSBpZGVudGl0eS4gKi9cbiAgICAgICAgICBpZF90b2tlbjogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIGNoYWxsZW5nZSByZXR1cm5lZCBpbiByZXNwb25zZSB0byBhIFNpZ24tSW4gd2l0aCBFdGhlcmV1bSByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQ29udGFpbnMgYSBtZXNzYWdlIHRoYXQgdGhlIGNsaWVudCBtdXN0IHNpZ24gZm9sbG93aW5nIEVJUC0xOTFcbiAgICAgKiB3aXRoIHRoZSByZXF1ZXN0ZWQga2V5IGluIG9yZGVyIHRvIGNvbXBsZXRlIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqXG4gICAgICogVGhlIGNsaWVudCBoYXMgdW50aWwgdGhlIG1lc3NhZ2UgZXhwaXJlcyAoYnV0IG5vIG1vcmUgdGhhbiA1IG1pbnV0ZXMpIHRvIGNvbXBsZXRlIHRoZSBjaGFsbGVuZ2UuXG4gICAgICovXG4gICAgU2l3ZUluaXRSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgKHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3Qgd2hlbiBjYWxsaW5nIHRoZSBQQVRDSCAoJ2NvbXBsZXRlJykgZW5kcG9pbnQpICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbWVzc2FnZSB0byBzaWduIGZvbGxvd2luZyB0aGUgRUlQLTE5MSBzdGFuZGFyZC4gKi9cbiAgICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgU3Rha2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHBvbGljeSBldmFsdWF0aW9uIHRyZWUuICovXG4gICAgICAgICAgcG9saWN5X2V2YWxfdHJlZT86IHVua25vd247XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgZGVwb3NpdF90eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHhuXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbGlkYXRvciBrZXkgaWQgKFwiS2V5Iy4uLlwiKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSNkYjE3MzFmOC0zNjU5LTQ1YzAtODg1Yi1lMTFlMWY1YjdiZTJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjcmVhdGVkX3ZhbGlkYXRvcl9rZXlfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBUZWxlZ3JhbUF1dGhSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIE9JREMgdG9rZW4gY29ycmVzcG9uZGluZyB0byB0aGlzIHRlbGVncmFtIHVzZXIgKi9cbiAgICAgICAgICBpZF90b2tlbjogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPQXV0aDIgc3RhbmRhcmQgVG9rZW4gUmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY3NDkjc2VjdGlvbi00LjIuMlxuICAgICAqL1xuICAgIFRva2VuUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MgdG9rZW4gaXNzdWVkIGJ5IHRoZSBhdXRob3JpemF0aW9uIHNlcnZlci4gKi9cbiAgICAgICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZztcbiAgICAgICAgICBleHBpcmVzX2luOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBPSURDIHRva2VuIGlzc3VlZCBieSBDdWJpc3QsIGNvbnRhaW5pbmcgdXNlciBpbmZvcm1hdGlvbiAqL1xuICAgICAgICAgIGlkX3Rva2VuPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZWZyZXNoIHRva2VuIGlzc3VlZCBieSB0aGUgYXV0aG9yaXphdGlvbiBzZXJ2ZXIuICovXG4gICAgICAgICAgcmVmcmVzaF90b2tlbj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiB0aGUgdG9rZW4gaXNzdWVkLiBWYWx1ZSBpcyBjYXNlIGluc2Vuc2l0aXZlLiAqL1xuICAgICAgICAgIHRva2VuX3R5cGU6IHN0cmluZztcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgICAgICB9ICYgUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFRvdHBJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgVE9UUCBjaGFsbGVuZ2UuXG4gICAgICAgICAgICogQGV4YW1wbGUgVG90cENoYWxsZW5nZSM3ODkyZWJiYS01NjNlLTQ4NWItYmI3ZC1lMjYyNjczNjMyODZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFN0YW5kYXJkIFRPVFAgdXJsIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIGluaXRpYWxpemUgVE9UUC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBvdHBhdXRoOi8vdG90cC9DdWJpc3Q6YWxpY2UtJTQwZXhhbXBsZS5jb20/c2VjcmV0PURBSEY3S0NPVFFXU09NSzRYRkVNTkhYTzRKNDMzT0Q3Jmlzc3Vlcj1DdWJpc3RcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX3VybDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXNwb25zZSB0byBzaWduIGFuIGV0aDIgdW5zdGFrZSByZXF1ZXN0LiAqL1xuICAgIFVuc3Rha2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIG1lc3NhZ2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVm9sdW50YXJ5RXhpdFwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQkxTIHNpZ25hdHVyZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDkxMGM3Y2Q1MzdlZDkxY2M4YzRhODJmM2NiZDgzMmU5YmU4YzI0YTIyZTljODZkZjQ3OWY3Y2U0MjAyNWVhNmEwOTYxOWI0MThiNjY2YTA2MGUyNjBkMmFhZTMxYjhlNTBlOWQwNWNhMzQ0MmM3ZWVkM2I1MDdlNTIwN2UxNDY3NDI3NWY2OGMyYmE4NGM0YmY2YjhkZDM2NGEzMDRhY2FjOGNmYWIzNjgxZTI1MTRiNDQwMGY5MjQyYmM2MTE2NFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWN5IGV2YWx1YXRpb24gdHJlZS4gKi9cbiAgICAgICAgICBwb2xpY3lfZXZhbF90cmVlPzogdW5rbm93bjtcbiAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIH07XG4gICAgfTtcbiAgICBVcGRhdGVPcmdSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGFsaWVuX2xvZ2luX3JlcXVpcmVtZW50PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRGYWN0b3JSZXF1aXJlbWVudFwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE1GQSB0eXBlcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQgZm9yIGltcGxpY2l0bHkgc2VjdXJpdHktc2Vuc2l0aXZlXG4gICAgICAgICAgICogb3BlcmF0aW9ucyAobGlrZSBsb2dnaW5nIGluLCBhZGRpbmcgYW4gTUZBIGZhY3RvciwgZXhwb3J0aW5nIGtleXMsIGV0Yy4pLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGFsbG93ZWRfbWZhX3R5cGVzPzoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFUeXBlXCJdW107XG4gICAgICAgICAgfSB8IG51bGw7XG4gICAgICAgICAgY3VzdG9tX2NoYWlucz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5zRGF0YVwiXSB8IG51bGw7XG4gICAgICAgICAgZGVmYXVsdF9pbnZpdGVfa2luZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlS2luZFwiXSB8IG51bGw7XG4gICAgICAgICAgZWRpdF9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVkaXRQb2xpY3lcIl0gfCBudWxsO1xuICAgICAgICAgIGVtYWlsX3ByZWZlcmVuY2VzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbFByZWZlcmVuY2VzXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSAqL1xuICAgICAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgICAgICBleHRfZGF0YT86XG4gICAgICAgICAgICB8ICh7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQZXIgYWxpZW4gdXNlciBrZXkgY291bnQgdGhyZXNob2xkLCB3aGljaCwgb25jZSBleGNlZWRlZCwgZGlzYWxsb3dzIGZ1cnRoZXIga2V5IGNyZWF0aW9uIGJ5IGFsaWVuIHVzZXJzLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAgICAgICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIG9yZyBhZG1pbnMgY2FuIHN0aWxsIGFzc2lnbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGtleXMgdG8gdGhlaXIgYWxpZW4gdXNlcnMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgICAgIH0gJiB7XG4gICAgICAgICAgICAgICAgY3JlYXRlZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgbGFzdF9tb2RpZmllZD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXSB8IG51bGw7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBWZXJzaW9uIG9mIHRoaXMgb2JqZWN0XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICAgICAgICAgICAgfSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPilcbiAgICAgICAgICAgIHwgbnVsbDtcbiAgICAgICAgICBoaXN0b3JpY2FsX2RhdGFfY29uZmlndXJhdGlvbj86XG4gICAgICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSGlzdG9yaWNhbERhdGFDb25maWd1cmF0aW9uXCJdXG4gICAgICAgICAgICB8IG51bGw7XG4gICAgICAgICAgaWRwX2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkcENvbmZpZ1wiXSB8IG51bGw7XG4gICAgICAgICAga2V5X2V4cG9ydF9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgICAgIG1lbWJlcl9sb2dpbl9yZXF1aXJlbWVudD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kRmFjdG9yUmVxdWlyZW1lbnRcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgbm90aWZpY2F0aW9uIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcInVybFwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vZW5kcG9pbnRcIlxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBub3RpZmljYXRpb25fZW5kcG9pbnRzPzpcbiAgICAgICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb25cIl1bXVxuICAgICAgICAgICAgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgICBwYXNza2V5X2NvbmZpZ3VyYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlDb25maWdcIl0gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCJodHRwczovL2V4YW1wbGUuY29tXCJcbiAgICAgICAgICAgKiAgICAgXVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAgICAgcG9saWN5X2VuZ2luZV9jb25maWd1cmF0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFbmdpbmVDb25maWd1cmF0aW9uXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgcmVxdWlyZV9zY29wZV9jZWlsaW5nICovXG4gICAgICAgICAgcmVxdWlyZV9zY29wZV9jZWlsaW5nPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlIG9yZy13aWRlIHNpZ24gcnVsZXNcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25fcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgVE9UUCBmYWlsdXJlIGxpbWl0XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF9kZWxheT86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRpc2FibGVkICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfZGlzYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgd2luZG93XG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyBvcmcgdmVyc2lvblxuICAgICAgICAgICAqL1xuICAgICAgICAgIHZlcnNpb246IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSB0byBhIHJlcXVlc3QgZm9yIHVwbG9hZGluZyBhIHdhc20gcG9saWN5ICovXG4gICAgVXBsb2FkV2FzbVBvbGljeVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHNpZ25lZCBVUkwgZm9yIHVwbG9hZGluZyB0aGUgcmVxdWVzdGVkIHdhc20gcG9saWN5LiAqL1xuICAgICAgICAgIHNpZ25lZF91cmw6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGVuY3J5cHRlZCB1c2VyLWV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBleHBvcnRlZCBrZXkgbWF0ZXJpYWwsIGVuY3J5cHRlZCB3aXRoIEFFUy0yNTYtR0NNIHVuZGVyIGEga2V5XG4gICAgICAgICAgICogZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0IHZpYSBIUEtFIChSRkM5MTgwKVxuICAgICAgICAgICAqIHdpdGggREhLRU0oUC0yNTYsIEhLREYtU0hBMjU2KSBhbmQgYmFzZTY0IGVuY29kZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jcnlwdGVkX2tleV9tYXRlcmlhbDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBhcyBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHRvIHdoaWNoIHRoaXMga2V5IGJlbG9uZ3MuICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgc3VjY2Vzc2Z1bCB1c2VyLWV4cG9ydCBpbml0IHJlcXVlc3QgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRSZXF1ZXN0XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIGJlaW5nIHJlcXVlc3RlZC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXNlckluT3JnSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGVtYWlsIChvcHRpb25hbClcbiAgICAgICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgdXNlciBoYXMgZXZlciBzdWNjZXNzZnVsbHkgbG9nZ2VkIGluICovXG4gICAgICAgICAgaW5pdGlhbGl6ZWQ/OiBib29sZWFuO1xuICAgICAgICAgIG1lbWJlcnNoaXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHVzZXIgbmFtZS4gKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyc2hpcFN0YXR1c1wiXTtcbiAgICAgICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgZW1haWxcbiAgICAgICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgICAgIG1mYV9wb2xpY3k/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVBvbGljeVwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIG5hbWVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXByZWNhdGVkXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG8uIERlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgJ29yZ3MnLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVwiXG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZHM6IHN0cmluZ1tdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG9yZ2FuaXphdGlvbnMgdGhlIHVzZXIgYmVsb25ncyB0bywgaW5jbHVkaW5nIHRoZSBtZW1iZXJzaGlwIHJvbGUgaW4gZWFjaC4gKi9cbiAgICAgICAgICBvcmdzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJbk9yZ01lbWJlcnNoaXBcIl1bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgICAgICB2ZXJpZmllZF9lbWFpbD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVmVyaWZpZWRFbWFpbFwiXSB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gdGhlIHVzZXIvb3JncyBlbmRwb2ludCAqL1xuICAgIFVzZXJPcmdzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIG9yZ3MgdGhpcyB1c2VyIGlzIGEgbWVtYmVyIG9mICovXG4gICAgICAgICAgb3JnczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPcmdEYXRhXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHBhcmFtZXRlcnM6IG5ldmVyO1xuICByZXF1ZXN0Qm9kaWVzOiBuZXZlcjtcbiAgaGVhZGVyczogbmV2ZXI7XG4gIHBhdGhJdGVtczogbmV2ZXI7XG59XG5cbmV4cG9ydCB0eXBlICRkZWZzID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgdHlwZSBleHRlcm5hbCA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IGludGVyZmFjZSBvcGVyYXRpb25zIHtcbiAgLyoqXG4gICAqIFVzZXIgSW5mb1xuICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKlxuICAgKiBQUkVGRVIgYEdFVCAvdjAvb3Jncy97b3JnX2lkfS91c2VyL21lYFxuICAgKi9cbiAgYWJvdXRNZUxlZ2FjeToge1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgKiBAZGVzY3JpcHRpb24gSldLUyBlbmRwb2ludCBmb3IgdGhlIGF0dGVzdGF0aW9uIGtleVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5IHVzZWQgdG8gc2lnbiBLZXkgaW5mbyBhdHRlc3RhdGlvbnMuXG4gICAqL1xuICBhdHRlc3RhdGlvbkp3a1NldDoge1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSndrU2V0UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBhY2Nlc3NpYmxlIG9yZ2FuaXphdGlvbnMuXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFjY2Vzc2libGUgb3JnYW5pemF0aW9ucy5cbiAgICpcbiAgICogVW5hdXRoZW50aWNhdGVkIGVuZHBvaW50IGZvciByZXRyaWV2aW5nIGFsbCBvcmdhbml6YXRpb25zIGFjY2Vzc2libGUgdG8gYSB1c2VyLlxuICAgKiBUaGlzIGluZm9ybWF0aW9uIGlzIGVtYWlsZWQgdG8gdGhlIHByb3ZpZGVkIGVtYWlsIGFkZHJlc3MuXG4gICAqL1xuICBlbWFpbF9teV9vcmdzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgb2YgdGhlIHVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAgICovXG4gICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogKElOVEVSTkFMKSBTZW50cnkgQVBJIFByb3h5XG4gICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIFNlbnRyeSBBUEkgUHJveHlcbiAgICovXG4gIHNlbnRyeUFwaUNhbGxQdWJsaWM6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcInRleHQvcGxhaW5cIjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEpXS1MgZW5kcG9pbnQgZm9yIE1NSVxuICAgKiBAZGVzY3JpcHRpb24gSldLUyBlbmRwb2ludCBmb3IgTU1JXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBzaWduIEpTT04gV2ViIFRva2VucyBmb3IgTU1JLlxuICAgKi9cbiAgbW1pSndrU2V0OiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJKd2tTZXRSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBNTUkgSlNPTi1SUEMgZW5kcG9pbnRcbiAgICogQGRlc2NyaXB0aW9uIE1NSSBKU09OLVJQQyBlbmRwb2ludFxuICAgKlxuICAgKiBIYW5kbGVyIGZvciBhbGwgW01NSSBKU09OLVJQQ10oaHR0cHM6Ly9kb2NzLm1ldGFtYXNrLWluc3RpdHV0aW9uYWwuaW8vY3VzdG9kaWFuLWludGVncmF0aW9uL2ludGVncmF0aW9uLWRvY3MvYXBpL21ldGhvZHMpXG4gICAqIHJlcXVlc3RzLlxuICAgKi9cbiAgbW1pOiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkpycGNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBUb2tlbiByZWZyZXNoIGVuZHBvaW50LCBjb21wbGlhbnQgd2l0aCBPQXV0aC5cbiAgICogQGRlc2NyaXB0aW9uIFRva2VuIHJlZnJlc2ggZW5kcG9pbnQsIGNvbXBsaWFudCB3aXRoIE9BdXRoLlxuICAgKlxuICAgKiBUaGUgYm9keSBjb250ZW50IHR5cGUgY2FuIGJlIGVpdGhlciAnYXBwbGljYXRpb24vanNvbicgb3IgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcuXG4gICAqL1xuICBvYXV0aDJUb2tlblJlZnJlc2g6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb2tlblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBPcmdcbiAgICogQGRlc2NyaXB0aW9uIEdldCBPcmdcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIGdldE9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIE9yZ1xuICAgKlxuICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICovXG4gIHVwZGF0ZU9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVPcmdSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXBkYXRlT3JnUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUXVlcnkgdGhlIGF1ZGl0IGxvZy5cbiAgICogQGRlc2NyaXB0aW9uIFF1ZXJ5IHRoZSBhdWRpdCBsb2cuXG4gICAqL1xuICBxdWVyeUF1ZGl0TG9nOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1ZGl0TG9nUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZEF1ZGl0TG9nUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICogQGRlc2NyaXB0aW9uIEFzc29jaWF0ZSBhbiBPSURDIGlkZW50aXR5IHdpdGggYW4gYXJiaXRyYXJ5IHVzZXIgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAqL1xuICBhdXRoTWlncmF0aW9uSWRlbnRpdHlBZGQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWlncmF0ZUlkZW50aXR5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEaXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSBhbiBhcmJpdHJhcnkgdXNlciBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICogQGRlc2NyaXB0aW9uIERpc3NvY2lhdGUgYW4gT0lEQyBpZGVudGl0eSBmcm9tIGFuIGFyYml0cmFyeSB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKi9cbiAgYXV0aE1pZ3JhdGlvbklkZW50aXR5UmVtb3ZlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1pZ3JhdGVJZGVudGl0eVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIGV4aXN0aW5nIHVzZXJzJyBwcm9maWxlcy4gQ3VycmVudGx5IHN1cHBvcnRzIG9ubHkgKHJlKXNldHRpbmcgZW1haWxzLlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIGV4aXN0aW5nIHVzZXJzJyBwcm9maWxlcy4gQ3VycmVudGx5IHN1cHBvcnRzIG9ubHkgKHJlKXNldHRpbmcgZW1haWxzLlxuICAgKi9cbiAgYXV0aE1pZ3JhdGlvblVzZXJVcGRhdGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWlncmF0ZVVwZGF0ZVVzZXJzUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIGEgc2VyaWFsaXplZCBBdmFsYW5jaGUgQy9YL1AtQ2hhaW4gTWVzc2FnZVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgQXZhbGFuY2hlIEMvWC9QLUNoYWluIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BFdGggKEMtQ2hhaW4gbWVzc2FnZXMpIG9yXG4gICAqIFNlY3BBdmEgKFgtIGFuZCBQLUNoYWluIG1lc3NhZ2VzKSBrZXkuIEN1cnJlbnRseSBzaWduaW5nIEMtQ2hhaW4gbWVzc2FnZXNcbiAgICogd2l0aCBTZWNwRXRoIGtleSBtdXN0IGFsc28gYmUgZXhwbGljaXRseSBhbGxvd2VkIHZpYSBgQWxsb3dSYXdCbG9iU2lnbmluZ2BcbiAgICogcG9saWN5LlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGF2YVNlcmlhbGl6ZWRUeFNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXZhbGFuY2hlIGNoYWluXG4gICAgICAgICAqIEBleGFtcGxlIFBcbiAgICAgICAgICovXG4gICAgICAgIGF2YV9jaGFpbjogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEF2YWxhbmNoZSBhZGRyZXNzIGluIGJlY2gzMiBvciBFVEggZm9ybWF0XG4gICAgICAgICAqIEBleGFtcGxlIDB4QjMxZjY2QUEzQzFlNzg1MzYzRjA4NzVBMUI3NEUyN2I4NUZENjZjN1xuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXZhU2VyaWFsaXplZFR4U2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gSlNPTi1lbmNvZGVkIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYW4gQXZhbGFuY2hlIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIFNlY3BBdmEga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGF2YVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQXZhbGFuY2hlIGJlY2gzMiBhZGRyZXNzIGZvcm1hdCB3aXRob3V0IHRoZSBjaGFpbiBwcmVmaXhcbiAgICAgICAgICogQGV4YW1wbGUgYXZheDFhbTR3NmhmcnZtaDNha2R1emtqdGhydGd0cWFmYWxjZTZhbjhjclxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXZhU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQmFieWxvbiBDb3ZlbmFudCBDb21taXR0ZWUgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCYWJ5bG9uIENvdmVuYW50IENvbW1pdHRlZSBSZXF1ZXN0XG4gICAqXG4gICAqIFNpZ25zIHRyYW5zYWN0aW9ucyByZWxldmFudCB0byBhIEJhYnlsb24gY292ZW5hbnQgY29tbWl0dGVlIHNpZ25lcixcbiAgICogaS5lLiwgU2Nobm9yciBhbmQgYWRhcHRvciBzaWduYXR1cmVzIGZvciB0aGUgdW5ib25kaW5nLCBzbGFzaGluZywgYW5kXG4gICAqIHNsYXNoLXVuYm9uZGluZyBvdXRwdXRzIG9mIGEgQmFieWxvbiBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYmFieWxvbkNvdlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gaGV4LWVuY29kZWQgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDAzZTM4MTA2ZGQ3NjY1NmJjNjhkMDI4OThlZGUxYTkxMWRmOGM3OTNlNDZhYzRlYjM3ZDI2YzI2NmFhZTVkMmE1YVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFieWxvbkNvdlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQmFieWxvbkNvdlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEVPVFMgbm9uY2VzXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgRU9UUyBub25jZXNcbiAgICpcbiAgICogR2VuZXJhdGVzIGEgc2V0IG9mIEJhYnlsb24gRU9UUyBub25jZXMgZm9yIGEgc3BlY2lmaWVkIGNoYWluLWlkLCBzdGFydGluZyBhdCBhXG4gICAqIHNwZWNpZmllZCBibG9jayBoZWlnaHQuXG4gICAqL1xuICBjcmVhdGVFb3RzTm9uY2VzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHB1YmxpYyBrZXkgb2YgdGhlIEVPVFMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDU3ZjBmMjRjZmIwNmMzYzM1ODc0YmJkMWY1OWI1NzE4MGE1YTlkN2UxZjY5MjkyODA4MzljODMwZjVjMTQ3ZlxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW90c0NyZWF0ZU5vbmNlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVvdHNDcmVhdGVOb25jZVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBFT1RTIHNpZ25hdHVyZVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIGFuIEVPVFMgc2lnbmF0dXJlXG4gICAqXG4gICAqIEdlbmVyYXRlcyBhbiBFT1RTIHNpZ25hdHVyZSBmb3IgdGhlIHNwZWNpZmllZCBjaGFpbi1pZCwgYmxvY2sgaGVpZ2h0LCBhbmQgbWVzc2FnZS5cbiAgICovXG4gIGVvdHNTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHB1YmxpYyBrZXkgb2YgdGhlIEVPVFMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDU3ZjBmMjRjZmIwNmMzYzM1ODc0YmJkMWY1OWI1NzE4MGE1YTlkN2UxZjY5MjkyODA4MzljODMwZjVjMTQ3ZlxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW90c1NpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJhYnlsb24gU3Rha2luZyBSZWdpc3RyYXRpb25cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBTdGFraW5nIFJlZ2lzdHJhdGlvblxuICAgKlxuICAgKiBDcmVhdGVzIGFuZCBzaWducyB0aGUgZGF0YSBuZWVkZWQgdG8gcmVnaXN0ZXIgYSBQaGFzZS0yIG9yIFBoYXNlLTNcbiAgICogQmFieWxvbiBzdGFrZS4gVGhpcyBpbmNsdWRlcyB0aGUgZGVwb3NpdCBhbmQgdW5ib25kaW5nIHRyYW5zYWN0aW9ucyxcbiAgICogdHdvIHNsYXNoaW5nIHRyYW5zYWN0aW9ucywgdGhlIHNsYXNoaW5nIHNpZ25hdHVyZXMsIGFuZCB0aGUgcHJvb2Ygb2ZcbiAgICogcG9zc2Vzc2lvbi5cbiAgICpcbiAgICogTm90ZSB0aGF0IGl0IGlzIGFsc28gcG9zc2libGUgdG8gZ2VuZXJhdGUgdGhpcyByZWdpc3RyYXRpb24gZGF0YSBieVxuICAgKiBtYWtpbmcgZm91ciBjYWxscyB0byB0aGUgQmFieWxvbiBzdGFraW5nIEFQSSwgcGx1cyBvbmUgY2FsbCB0byB0aGVcbiAgICogUFNCVCBzaWduaW5nIEFQSSB0byBnZW5lcmF0ZSB0aGUgQklQLTMyMiBwcm9vZiBvZiBwb3NzZXNzaW9uLiBUaGVcbiAgICogcmVnaXN0cmF0aW9uIEFQSSBnZW5lcmF0ZXMgdGhlIHNhbWUgZGF0YSBidXQgaXMgZWFzaWVyIHRvIHVzZS5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgVGFwcm9vdCBrZXkuIElmIHlvdXJcbiAgICogZGVwb3NpdCB0cmFuc2FjdGlvbiBzcGVuZHMgVVRYT3MgdGhhdCBhcmUgY29udHJvbGxlZCBieSBvdGhlciBrZXlzLFxuICAgKiB5b3UgY2FuIHN1Ym1pdCB0aGUgJ2RlcG9zaXQnIFBTQlQgdG8gdGhlIFBTQlQgc2lnbmluZyBBUEkgb25lIG9yIG1vcmVcbiAgICogdGltZXMgdG8gZ2VuZXJhdGUgdGhlIHJlcXVpcmVkIHNpZ25hdHVyZXMuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBjb25zdWx0IHRoZVxuICAgKiBbQmFieWxvbiBkb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmxhYnMtaW8vYmFieWxvbi9ibG9iL3JlbGVhc2UvdjEueC9kb2NzL3JlZ2lzdGVyLWJpdGNvaW4tc3Rha2UubWQpLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIGJhYnlsb25SZWdpc3RyYXRpb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyIGVuY29kaW5nIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIHRiMXBlNGZneW44N3B3a3UyeGRwdGMyZHRhZXF6eXg4d3g4OWNxYTZ5bnR1OHRkNDlmbHB0NXdxNWs2aGF1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uUmVnaXN0cmF0aW9uUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJhYnlsb25SZWdpc3RyYXRpb25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBCYWJ5bG9uIFN0YWtpbmcgVHJhbnNhY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQmFieWxvbiBTdGFraW5nIFRyYW5zYWN0aW9uXG4gICAqXG4gICAqIENyZWF0ZXMgYW5kIHNpZ25zIHRyYW5zYWN0aW9ucyByZWxhdGVkIHRvIEJhYnlsb24gc3Rha2luZyAoaS5lLixcbiAgICogZGVwb3NpdCwgZWFybHkgdW5ib25kLCB3aXRoZHJhd2FsKS4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIFByZS1TaWduZWRcbiAgICogQml0Y29pbiBUcmFuc2FjdGlvbiAoUFNCVCksIGFzIGRlZmluZWQgaW4gQklQLTE3NCwgd2hpY2ggbWF0Y2hlcyB0aGVcbiAgICogZm9ybWF0IHVzZWQgaW4gbW9zdCBCYWJ5bG9uIHRvb2xpbmcuXG4gICAqXG4gICAqIFRoZSAnZGVwb3NpdCcgYWN0aW9uIGNhbiBiZSB1c2VkIHdpdGggZWl0aGVyIFNlZ3dpdCAoaS5lLiwgU2VjcEJ0Yy9TZWNwQnRjVGVzdClcbiAgICogb3IgVGFwcm9vdCAoaS5lLiwgVGFwcm9vdEJ0Yy9UYXByb290QnRjVGVzdCkga2V5cy4gVGhlIHJlbWFpbmluZyBhY3Rpb25zIGNhbiBiZVxuICAgKiB1c2VkIG9ubHkgd2l0aCBUYXByb290IGtleXMuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYmFieWxvblN0YWtpbmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyIGVuY29kaW5nIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIHRiMXBlNGZneW44N3B3a3UyeGRwdGMyZHRhZXF6eXg4d3g4OWNxYTZ5bnR1OHRkNDlmbHB0NXdxNWs2aGF1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCYWJ5bG9uU3Rha2luZ1Jlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIGEgQml0Y29pbiBtZXNzYWdlLlxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIEJpdGNvaW4gbWVzc2FnZS5cbiAgICpcbiAgICogU2lnbnMgYSBtZXNzYWdlIHVzaW5nIEJJUDEzNyBtZXNzYWdlIHNpZ25pbmcgd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqL1xuICBidGNNZXNzYWdlU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBZGRyZXNzIG9mIGEgU2Vnd2l0IG9yIExlZ2FjeSBiaXRjb2luIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBiYzFxM3IzNXU0dGg3OGgwNmQ2NG13bXAzdnB1OHFtenlhMDVwcThmd2xcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y01lc3NhZ2VTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJ0Y01lc3NhZ2VTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gYSBQYXJ0aWFsbHkgU2lnbmVkIEJpdGNvaW4gVHJhbnNhY3Rpb24gKFBTQlQpXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgUGFydGlhbGx5IFNpZ25lZCBCaXRjb2luIFRyYW5zYWN0aW9uIChQU0JUKVxuICAgKlxuICAgKiBTaWducyBhbGwgaW5wdXRzIG9mIHRoZSBzdXBwbGllZCBQU0JUIHYwIChCSVAtMTc0KSB0aGF0IHBlcnRhaW4gdG8gdGhlXG4gICAqICdwdWJrZXknIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIFRhcHJvb3Qgb3IgYVxuICAgKiBTZWd3aXQga2V5LiBGb3IgU2Vnd2l0IGtleXMsIEN1YmVTaWduZXItc3BlY2lmaWMgZGV0ZXJtaW5pc3RpYyB0d2Vha2luZ1xuICAgKiBjYW4gYmUgYXBwbGllZCB0byAncHVia2V5JyBiZWZvcmUgc2lnbmluZywgb24gYSBwZXItaW5wdXQgYmFzaXMuIChTZWUgdGhlXG4gICAqIEN1YmVTaWduZXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBTZWd3aXQgdHdlYWtpbmcuKVxuICAgKlxuICAgKiBXaGVuIGNhbGxpbmcgd2l0aCBhIHNlZ3dpdCBrZXkgdGhlIHJlcXVpcmVkIHNjb3BlIGlzICdzaWduOmJ0Yzpwc2J0OnNlZ3dpdCcuXG4gICAqIEZvciBhIHRhcHJvb3Qga2V5LCB0aGUgc2NvcGUgaXMgJ3NpZ246YnRjOnBzYnQ6dGFwcm9vdCcuIEVpdGhlciB0eXBlIG9mIGtleVxuICAgKiBjYW4gYmUgdXNlZCB3aXRoIHRoZSAnc2lnbjpidGM6cHNidCcgc2NvcGUuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgcHNidFNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gYmVjaDMyKG0pLWVuY29kZWQgc2Vnd2l0IG9yIHRhcHJvb3QgYWRkcmVzc1xuICAgICAgICAgKiBAZXhhbXBsZSBiYzFwMndzbGRlejVtdWQyeWFtMjlxMjJ3Z2ZoOTQzOXNwZ2R1dmN0ODNrM3BtNTBmY3hhNWRwczU5aDR6NVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHNidFNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUHNidFNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBCaXRjb2luIFNlZ3dpdCBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCaXRjb2luIFNlZ3dpdCBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhIEJpdGNvaW4gU2Vnd2l0IHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYnRjU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzItZW5jb2RlZCBzZWd3aXQgYWRkcmVzc1xuICAgICAgICAgKiBAZXhhbXBsZSBiYzFxNXA1cWthZTc3bHk4MGtyNHB5Znl0ZHFtN3JmMDhkZGhkZWpsOWdcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJpdGNvaW4gVGFwcm9vdCBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCaXRjb2luIFRhcHJvb3QgVHJhbnNhY3Rpb25cbiAgICpcbiAgICogU2lnbnMgYSBCaXRjb2luIFRhcHJvb3QgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBidGNUYXByb290U2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzJtLWVuY29kZWQgdGFwcm9vdCBhZGRyZXNzXG4gICAgICAgICAqIEBleGFtcGxlIGJjMXAyd3NsZGV6NW11ZDJ5YW0yOXEyMndnZmg5NDM5c3BnZHV2Y3Q4M2szcG01MGZjeGE1ZHBzNTloNHo1XG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUYXByb290U2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgQ29udGFjdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgQ29udGFjdHNcbiAgICpcbiAgICogTGlzdCBhbGwgY29udGFjdHMgaW4gdGhlIG9yZy5cbiAgICogQW55IG9yZyBtZW1iZXIgaXMgYWxsb3dlZCB0byBsaXN0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnLlxuICAgKlxuICAgKiAjIyBTZWFyY2ggQ29uZGl0aW9uXG4gICAqIFRoZSBzZWFyY2ggY29uZGl0aW9uIGlzIG9wdGlvbmFsLlxuICAgKlxuICAgKiAtIElmIHRoZSBzZWFyY2ggY29uZGl0aW9uIHN0YXJ0cyB3aXRoIFwibGFiZWw6Li4uXCIsIHRoaXMgbGlzdCB3aWxsIG9ubHkgaG9sZCBjb250YWN0cyB3aXRoXG4gICAqIHRoZSBsYWJlbCBwcm92aWRlZCBhZnRlciB0aGUgXCI6XCIuIEZvciBleGFtcGxlLCBcImxhYmVsOmN1YmlzdDplcmMyMF90b2tlblwiIHdvdWxkIHJldHVybiBjb250YWN0cyB0aGF0XG4gICAqIGhvbGQgdGhlIGxhYmVsIFwiY3ViaXN0OmVyYzIwX3Rva2VuXCIuXG4gICAqXG4gICAqIC0gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBjb250YWN0cyB3aG8gaGF2ZSBhbiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGgsIG9yXG4gICAqIGVxdWFsaW5nLCB0aGUgZ2l2ZW4gc2VhcmNoIHN0cmluZy4gRm9yIGV4YW1wbGUsIFwiMHhlZVwiIHdvdWxkIHJldHVybiBhbGwgY29udGFjdHMgaG9sZGluZyBhblxuICAgKiBhZGRyZXNzIHN0YXJ0aW5nIHdpdGggXCIweGVlXCIuIFRoZSBzZWFyY2ggaXMgY2FzZS1pbnNlbnNpdGl2ZS5cbiAgICpcbiAgICogSWYgYSBzZWFyY2ggdGVybSBpcyBkZWZpbmVkLCB3ZSBkbyBub3QgZ3VhcmFudGVlXG4gICAqIHRoZSBudW1iZXIgb2YgcmVzdWx0cyBpbiBhIHBhZ2UuIFRoZSBiZWhhdmlvciBvZiB0aGlzIHBhcmFtZXRlciBtYXkgY2hhbmdlXG4gICAqIGluIHRoZSBmdXR1cmUgKGZvciBleGFtcGxlLCBtYWtpbmcgcmVzdWx0cyBtb3JlIHN0cmljdGx5IHBhZ2luYXRlZCBvclxuICAgKiBwZXJmb3JtaW5nIGEgZnV6enkgc2VhcmNoIHJhdGhlciB0aGFuIGEgcHJlZml4IHNlYXJjaCkuXG4gICAqL1xuICBsaXN0Q29udGFjdHM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFaXRoZXIgJ2xhYmVsOi4uLicsIHdoaWNoIGxpc3RzIGNvbnRhY3RzIHdpdGggdGhlIGxhYmVsIHByb3ZpZGVkIGFmdGVyIHRoZSAnOicuIE9yLCBhbiBlbnRpcmUgYWRkcmVzcywgb3IgcHJlZml4IG9mIGFuIGFkZHJlc3MsIHRoYXQgcmV0dXJuZWQgY29udGFjdHMgbXVzdCBoYXZlLiBXaGVuIHNlYXJjaGluZyBieSBhZGRyZXNzLCBpdCBtdXN0IGJlIGF0IGxlYXN0IDMgY2hhcmFjdGVycy4gKi9cbiAgICAgICAgc2VhcmNoPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Q29udGFjdHNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgQ29udGFjdFxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIENvbnRhY3RcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBjb250YWN0IGluIHRoZSBvcmdhbml6YXRpb24td2lkZSBhZGRyZXNzIGJvb2suIFRoZVxuICAgKiB1c2VyIG1ha2luZyB0aGUgcmVxdWVzdCBpcyB0aGUgb3duZXIgb2YgdGhlIGNvbnRhY3QsIGdpdmluZyB0aGVtIGVkaXQgYWNjZXNzXG4gICAqIHRvIHRoZSBjb250YWN0IGFsb25nIHdpdGggdGhlIG9yZyBvd25lcnMuXG4gICAqL1xuICBjcmVhdGVDb250YWN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZUNvbnRhY3RSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ29udGFjdEluZm9SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMb29rdXAgQ29udGFjdHMgYnkgQWRkcmVzc1xuICAgKiBAZGVzY3JpcHRpb24gTG9va3VwIENvbnRhY3RzIGJ5IEFkZHJlc3NcbiAgICpcbiAgICogUmV0dXJucyBhbGwgY29udGFjdHMgaW4gdGhlIG9yZyB0aGF0IGhhdmUgdGhlIGdpdmVuIGFkZHJlc3MuXG4gICAqXG4gICAqIFdoZW4gcXVlcnlpbmcgd2l0aCBhbiBFVk0gYWRkcmVzcyB3aXRob3V0IGEgY2hhaW4sIHRoaXMgZW5kcG9pbnQgcmV0dXJuc1xuICAgKiBjb250YWN0cyB3aXRoIHRoYXQgYWRkcmVzcyBvbiAqYW55KiBjaGFpbiwgaW5jbHVkaW5nIHRob3NlIHdpdGhvdXQgYSBjaGFpblxuICAgKiBkZWZpbmVkLlxuICAgKi9cbiAgbG9va3VwQ29udGFjdHNCeUFkZHJlc3M6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29udGFjdEFkZHJlc3NEYXRhXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdENvbnRhY3RzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IENvbnRhY3RcbiAgICogQGRlc2NyaXB0aW9uIEdldCBDb250YWN0XG4gICAqXG4gICAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgb2YgYSBDb250YWN0LlxuICAgKi9cbiAgZ2V0Q29udGFjdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBDb250YWN0XG4gICAgICAgICAqIEBleGFtcGxlIENvbnRhY3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBjb250YWN0X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDb250YWN0SW5mb1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBDb250YWN0XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgQ29udGFjdFxuICAgKlxuICAgKiBEZWxldGUgYSBjb250YWN0LCBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgKlxuICAgKiBPbmx5IHRoZSBjb250YWN0IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBjb250YWN0cy5cbiAgICogQWRkaXRpb25hbGx5LCB0aGUgY29udGFjdCdzIGVkaXQgcG9saWN5IChpZiBzZXQpIG11c3QgcGVybWl0IHRoZSBkZWxldGlvbi5cbiAgICovXG4gIGRlbGV0ZUNvbnRhY3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgQ29udGFjdFxuICAgICAgICAgKiBAZXhhbXBsZSBDb250YWN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgY29udGFjdF9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBDb250YWN0XG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgQ29udGFjdFxuICAgKlxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGNvbnRhY3QgaW4gdGhlIG9yZ2FuaXphdGlvbi13aWRlIGFkZHJlc3MgYm9vay4gT25seVxuICAgKiB0aGUgY29udGFjdCBvd25lciBvciBhbiBvcmcgb3duZXIgY2FuIHVwZGF0ZSBjb250YWN0cy5cbiAgICpcbiAgICogKlVwZGF0ZXMgd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIHZhbHVlIG9mIHRoZSBmaWVsZC4qXG4gICAqL1xuICB1cGRhdGVDb250YWN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIENvbnRhY3RcbiAgICAgICAgICogQGV4YW1wbGUgQ29udGFjdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGNvbnRhY3RfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVDb250YWN0UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNvbnRhY3RJbmZvUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IGN1cnJlbnQgY291bnRzIG9mIHVzZXJzIGFuZCBrZXlzIHdpdGhpbiBhbiBvcmcuXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgY3VycmVudCBjb3VudHMgb2YgdXNlcnMgYW5kIGtleXMgd2l0aGluIGFuIG9yZy5cbiAgICovXG4gIGNvdW50czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNvbXB1dGVDb3VudHNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICpcbiAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgKiBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljLlxuICAgKi9cbiAgZGVyaXZlS2V5TGVnYWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcml2ZUtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZXJpdmUgS2V5IEZyb20gTmV3IE9yIEV4aXN0aW5nIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICogQGRlc2NyaXB0aW9uIERlcml2ZSBLZXkgRnJvbSBOZXcgT3IgRXhpc3RpbmcgTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKlxuICAgKiBVc2VzIGVpdGhlciBhIG5ldyBvciBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljIHRvIGRlcml2ZSBrZXlzIG9mXG4gICAqIG9uZSBvciBtb3JlIHNwZWNpZmllZCB0eXBlcyB2aWEgc3BlY2lmaWVkIGRlcml2YXRpb24gcGF0aHMuXG4gICAqL1xuICBkZXJpdmVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVyaXZlS2V5c1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wdXRlIERpZmZpZSBIZWxsbWFuIHNoYXJlZCBzZWNyZXRcbiAgICogQGRlc2NyaXB0aW9uIENvbXB1dGUgRGlmZmllIEhlbGxtYW4gc2hhcmVkIHNlY3JldFxuICAgKlxuICAgKiBGb3IgYSBzZXQgb2YgZWxsaXB0aWMgY3VydmUgcG9pbnRzIChQXzEsIC4uLiwgUF9pKSwgY29tcHV0ZXMgdGhlIERpZmZpZSBIZWxsbWFuXG4gICAqIHNoYXJlZCBzZWNyZXQgKFFfMSwgLi4uLCBRaSkgPSAoc2sgKiBQXzEsIC4uLiBzayAqIFBfaSksIGZvciBzayB0aGUgc2VjcmV0IGtleS5cbiAgICogUG9pbnRzIGFyZSBzcGVjaWZpZWQgaW4gYSBjdXJ2ZS1kZXBlbmRlbnQgZm9ybWF0LiBTZWUgQ3ViZVNpZ25lciBkb2N1bWVudGF0aW9uXG4gICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAqXG4gICAqIFRoZSB1c2VyIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYSBOSVNUIFAtMjU2IHB1YmxpYyBrZXksIGluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdFxuICAgKiB3aWxsIGJlIGVuY3J5cHRlZCB0byB0aGUgcHVibGljIGtleSB1c2luZyBSRkM5MTgwIEhQS0UoUC0yNTYsIEhLREYtU0hBMjU2KSB3aXRoXG4gICAqIEFFUy0yNTYtR0NNIGFzIHRoZSBzeW1tZXRyaWMgY2lwaGVyLiBJbiB0aGlzIGNhc2UsIHRoZSByZXN1bHRpbmcgY2lwaGVydGV4dCB3aWxsXG4gICAqIGNvbnRhaW4gYSBzZXJpYWxpemVkIEpTT04gYmxvYiBjb250YWluaW5nIHRoZSB2ZWN0b3Igb2Ygc2hhcmVkIHNlY3JldHMgaW4gdGhlIHNhbWVcbiAgICogb3JkZXIgdGhleSB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgdGhlIHVzZXIgZG9lcyBub3Qgc3BlY2lmeSBhIHB1YmxpYyBrZXksIHRoZSByZXN1bHRpbmcgc2hhcmVkIHNlY3JldHMgd2lsbCBiZVxuICAgKiByZXR1cm5lZCB1bmVuY3J5cHRlZC4gSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBzYW1wbGUgYSByYW5kb20gdmFsdWUgclxuICAgKiBtb2R1bG8gdGhlIGdyb3VwIG9yZGVyIGFuZCBtYXNrIHRoZSByZXF1ZXN0ZWQgcG9pbnRzIGFzIChyICogUF8xLCAuLi4sIHIgKiBQX2kpLlxuICAgKiBUaGUgcmVzdWx0IHdpbGwgYmUgKHIgKiBzayAqIFBfMSwgLi4uLCByICogc2sgKiBQX2kpLCB3aGljaCBjYW4gYmUgdW5tYXNrZWQgYnlcbiAgICogZmlyc3QgY29tcHV0aW5nIHJeLTEsIHRoZSBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIHIgbW9kdWxvIHRoZSBncm91cCBvcmRlcixcbiAgICogdGhlbiBjb21wdXRpbmcgYSBzY2FsYXIgbXVsdGlwbGljYXRpb24gb2YgZWFjaCByZXR1cm5lZCBwb2ludCB3aXRoIHJeLTEuXG4gICAqXG4gICAqIFRoZXJlIGlzIGxpdHRsZSBwcmFjdGljYWwgc2VjdXJpdHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBhcHByb2FjaGVzLiBUaGVcbiAgICogY2xpZW50IGlzIGZyZWUgdG8gY2hvb3NlIHRoZSBvbmUgdGhhdCBpcyBlYXNpZXIgZnJvbSBhbiBpbXBsZW1lbnRhdGlvbiBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIGRpZmZpZUhlbGxtYW5FeGNoYW5nZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGlmZmllSGVsbG1hblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJEaWZmaWVIZWxsbWFuUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBFbWFpbCBUZW1wbGF0ZVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IEVtYWlsIFRlbXBsYXRlXG4gICAqXG4gICAqIFJldHVybnMgdGhlIGVtYWlsIHRlbXBsYXRlIGZvciBhIGdpdmVuIHB1cnBvc2UuXG4gICAqL1xuICBnZXRFbWFpbENvbmZpZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGljaCBlbWFpbCBjb25maWd1cmF0aW9uIHRvIGdldCAqL1xuICAgICAgICBwdXJwb3NlOlxuICAgICAgICAgIHwgXCJvdHBcIlxuICAgICAgICAgIHwgXCJtZmFfcmVzZXRcIlxuICAgICAgICAgIHwgXCJvdHBfbWZhXCJcbiAgICAgICAgICB8IFwiYWxpZW5fcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgICAgIHwgXCJtZW1iZXJfcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgICAgIHwgXCJhbGllbl9pbnZpdGVcIlxuICAgICAgICAgIHwgXCJtZW1iZXJfaW52aXRlXCJcbiAgICAgICAgICB8IFwid2VsY29tZVwiO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiR2V0RW1haWxDb25maWdSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb25maWd1cmUgRW1haWwgVGVtcGxhdGVcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZSBFbWFpbCBUZW1wbGF0ZVxuICAgKi9cbiAgY29uZmlndXJlRW1haWw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hpY2ggZW1haWwgdG8gY29uZmlndXJlICovXG4gICAgICAgIHB1cnBvc2U6XG4gICAgICAgICAgfCBcIm90cFwiXG4gICAgICAgICAgfCBcIm1mYV9yZXNldFwiXG4gICAgICAgICAgfCBcIm90cF9tZmFcIlxuICAgICAgICAgIHwgXCJhbGllbl9wYXNzd29yZF9yZXNldFwiXG4gICAgICAgICAgfCBcIm1lbWJlcl9wYXNzd29yZF9yZXNldFwiXG4gICAgICAgICAgfCBcImFsaWVuX2ludml0ZVwiXG4gICAgICAgICAgfCBcIm1lbWJlcl9pbnZpdGVcIlxuICAgICAgICAgIHwgXCJ3ZWxjb21lXCI7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlRW1haWxSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBFbWFpbCBUZW1wbGF0ZVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEVtYWlsIFRlbXBsYXRlXG4gICAqL1xuICBkZWxldGVFbWFpbENvbmZpZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGljaCBlbWFpbCBjb25maWd1cmF0aW9uIHRvIGRlbGV0ZSAqL1xuICAgICAgICBwdXJwb3NlOlxuICAgICAgICAgIHwgXCJvdHBcIlxuICAgICAgICAgIHwgXCJtZmFfcmVzZXRcIlxuICAgICAgICAgIHwgXCJvdHBfbWZhXCJcbiAgICAgICAgICB8IFwiYWxpZW5fcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgICAgIHwgXCJtZW1iZXJfcGFzc3dvcmRfcmVzZXRcIlxuICAgICAgICAgIHwgXCJhbGllbl9pbnZpdGVcIlxuICAgICAgICAgIHwgXCJtZW1iZXJfaW52aXRlXCJcbiAgICAgICAgICB8IFwid2VsY29tZVwiO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC0xOTEgRGF0YVxuICAgKlxuICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgRUlQLTE5MSBwZXJzb25hbF9zaWduIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKi9cbiAgZWlwMTkxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyBvZiB0aGUgU2VjcDI1NmsxIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVpcDE5MVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICpcbiAgICogU2lnbnMgdHlwZWQgZGF0YSBhY2NvcmRpbmcgdG8gRUlQLTcxMiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICovXG4gIGVpcDcxMlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgRVZNIGFkZHJlc3Mgb2YgdGhlIFNlY3AyNTZrMSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFaXA3MTJTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IGFuIE9yZy1FeHBvcnQgQ2lwaGVydGV4dFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGFuIE9yZy1FeHBvcnQgQ2lwaGVydGV4dFxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBleHBvcnQgY2lwaGVydGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIGtleS1pZC5cbiAgICogSW4gb3JkZXIgdG8gdXNlIHRoaXMgQVBJLCB5b3UgbXVzdCBiZSBhbiBvcmcgb3duZXIgYW5kIHlvdXIgb3JnIG11c3RcbiAgICogYmUgY29uZmlndXJlZCBmb3Igb3JnIGV4cG9ydCBhbmQgZm9yIEFQSS1iYXNlZCBleHBvcnQgZGVsaXZlcnkuXG4gICAqL1xuICBnZXRPcmdFeHBvcnQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiT3JnRXhwb3J0UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBhc3NvY2lhdGVkIE9JREMgaWRlbnRpdGllcyB3aXRoIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IGFzc29jaWF0ZWQgT0lEQyBpZGVudGl0aWVzIHdpdGggdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGxpc3RPaWRjSWRlbnRpdGllczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkxpc3RJZGVudGl0aWVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRlIGFuIE9JREMgaWRlbnRpdHkgd2l0aCB0aGUgY3VycmVudCB1c2VyIGluIG9yZyA8c2Vzc2lvbi5vcmc+LlxuICAgKlxuICAgKiBBbGllbiB1c2VycyBhcmUgYWxsb3dlZCB0byBjYWxsIHRoaXMgZW5kcG9pbnQsIGJ1dCBmb3IgdGhlbSBNRkEgaXMgcmVxdWlyZWRcbiAgICogKHVubGVzcyB0aGV5IGFyZSByZWdpc3RlcmluZyBhbiBlbWFpbC1vdHAgaWRlbnRpdHkgbWF0Y2hpbmcgdGhlaXIgY3VycmVudCBlbWFpbCk7XG4gICAqIGFkZGl0aW9uYWxseSwgbGltaXRzIG1heSBhcHBseSB0byBob3cgbWFueSBpZGVudGl0aWVzIHRoYXQgbWF5IHJlZ2lzdGVyLlxuICAgKi9cbiAgYWRkT2lkY0lkZW50aXR5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZElkZW50aXR5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIGFuIE9JREMgaWRlbnRpdHkgZnJvbSB0aGUgY3VycmVudCB1c2VyJ3MgYWNjb3VudCBpbiBvcmcgPHNlc3Npb24ub3JnPi5cbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhbiBPSURDIGlkZW50aXR5IGZyb20gdGhlIGN1cnJlbnQgdXNlcidzIGFjY291bnQgaW4gb3JnIDxzZXNzaW9uLm9yZz4uXG4gICAqL1xuICByZW1vdmVPaWRjSWRlbnRpdHk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAqXG4gICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgYVxuICAgKiB2YWxpZCBDdWJlU2lnbmVyIHNlc3Npb24uXG4gICAqXG4gICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2VcbiAgICogdG8gYW5vdGhlciBzZXJ2aWNlIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICovXG4gIGNyZWF0ZVByb29mQ3ViZVNpZ25lcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAqXG4gICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIG1ldCB0aGVcbiAgICogYXV0aGVudGljYXRpb24gcmVxdWlyZW1lbnRzIChhbGxvd2VkIGlzc3VlcnMgJiBhdWRpZW5jZXMpIGZvciBDdWJlU2lnbmVyXG4gICAqIHdpdGhvdXQgbGVha2luZyB0aGVpciBjcmVkZW50aWFscy5cbiAgICpcbiAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZSB0byBhbm90aGVyIHNlcnZpY2VcbiAgICogd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgKi9cbiAgY3JlYXRlUHJvb2ZPaWRjOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgKlxuICAgKiBBbGxvd3MgYSB0aGlyZC1wYXJ0eSB0byB2YWxpZGF0ZSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogV2hlbiBhIHRoaXJkLXBhcnR5IGlzIHByb3ZpZGVkIGFuIFtJZGVudGl0eVByb29mXSBvYmplY3QsIHRoZXkgbXVzdCBjaGVjayBpdHNcbiAgICogdmVyYWNpdHkgYnkgY2FsbGluZyB0aGlzIGVuZHBvaW50XG4gICAqL1xuICB2ZXJpZnlQcm9vZjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGVcbiAgICogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0ZVxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGV4Y2hhbmdlcyBhbiBlbWFpbCAmIHBhc3N3b3JkIGZvciBhbiBPSURDIHRva2VuXG4gICAqL1xuICBpZHBBdXRoZW50aWNhdGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRpb25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQXV0aGVudGljYXRpb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXF1ZXN0IFBhc3N3b3JkIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IFBhc3N3b3JkIFJlc2V0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgZ2VuZXJhdGVzIGFuIE9JREMgdG9rZW4gd2l0aG91dCBhIHNpZ25hdHVyZSAob2YgdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS5gKSxcbiAgICogYW5kIHNlbmRzIHRoZSBzaWduYXR1cmUgdG8gdGhlIHVzZXIncyBlbWFpbC4gQ2xpZW50IGFwcGxpY2F0aW9ucyBjYW4gcmVjb25zdHJ1Y3QgdGhlIHRva2VuXG4gICAqIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGB7aGVhZGVyfS57cGF5bG9hZH0uYCB3aXRoIHRoZSBzaWduYXR1cmUsIHByb2R1Y2luZyBhIHZhbGlkIE9JREMgdG9rZW4gb2ZcbiAgICogdGhlIGZvcm0gYHtoZWFkZXJ9LntwYXlsb2FkfS57c2lnbmF0dXJlfWAuIFRoZSB0b2tlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlclxuICAgKiB3aGVuIHBlcmZvcm1pbmcgdGhlIGBpZHBfcGFzc3dvcmRfcmVzZXRfY29uZmlybWAgcmVxdWVzdC5cbiAgICovXG4gIGlkcFBhc3N3b3JkUmVzZXRSZXF1ZXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3N3b3JkUmVzZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1haWxPdHBSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb25maXJtIFBhc3N3b3JkIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBDb25maXJtIFBhc3N3b3JkIFJlc2V0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgYWxsb3dzIElEUCB1c2VycyB0byByZXNldCB0aGVpciBwYXNzd29yZFxuICAgKiB1c2luZyBhIHRva2VuIHRoZXkgaGF2ZSByZWNlaXZlZCBpbiB0aGVpciBlbWFpbC5cbiAgICovXG4gIGlkcFBhc3N3b3JkUmVzZXRDb25maXJtOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3N3b3JkUmVzZXRDb25maXJtUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgKlxuICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgKi9cbiAgY3JlYXRlS2V5SW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW1wb3J0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gSW1wb3J0IEtleVxuICAgKlxuICAgKiBTZWN1cmVseSBpbXBvcnRzIGFuIGV4aXN0aW5nIGtleSB1c2luZyBhIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGtleS1pbXBvcnQga2V5LlxuICAgKi9cbiAgaW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBQdWJsaWMgT3JnIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFB1YmxpYyBPcmcgSW5mb1xuICAgKlxuICAgKiBVbmF1dGhlbnRpY2F0ZWQgZW5kcG9pbnQgdGhhdCByZXR1cm5zIHB1YmxpY2x5LWF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24uXG4gICAqL1xuICBwdWJsaWNfb3JnX2luZm86IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQdWJsaWNPcmdJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIChJTlRFUk5BTCkgQ3VzdG9tIGNoYWluIFJQQyBwcm94eVxuICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBDdXN0b20gY2hhaW4gUlBDIHByb3h5XG4gICAqL1xuICBjdXN0b21DaGFpblJwY0NhbGw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3VzdG9tQ2hhaW5ScGNSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3VzdG9tQ2hhaW5ScGNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAqIEBkZXNjcmlwdGlvbiAoSU5URVJOQUwpIEVzcGxvcmEgQVBJIFByb3h5XG4gICAqL1xuICBlc3Bsb3JhQXBpQ2FsbDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFc3Bsb3JhUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVzcGxvcmFSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiAoSU5URVJOQUwpIEF1dGhlbnRpY2F0ZWQgU2VudHJ5IEFQSSBQcm94eVxuICAgKiBAZGVzY3JpcHRpb24gKElOVEVSTkFMKSBBdXRoZW50aWNhdGVkIFNlbnRyeSBBUEkgUHJveHlcbiAgICovXG4gIHNlbnRyeUFwaUNhbGw6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJ0ZXh0L3BsYWluXCI6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBY2NlcHQgYW4gaW52aXRhdGlvblxuICAgKiBAZGVzY3JpcHRpb24gQWNjZXB0IGFuIGludml0YXRpb25cbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBhbGxvd3MgaWRwIHVzZXJzIHRvIHJlZ2lzdGVyIHVzaW5nIGEgdG9rZW4gdGhleSBoYXZlIHJlY2VpdmVkIGluIHRoZWlyIGVtYWlsXG4gICAqL1xuICBpbnZpdGF0aW9uQWNjZXB0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0YXRpb25BY2NlcHRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHBlbmRpbmcgaW52aXRhdGlvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgcGVuZGluZyBpbnZpdGF0aW9uc1xuICAgKlxuICAgKiBSZXR1cm5zIGFsbCBwZW5kaW5nIChub3QgeWV0IGFjY2VwdGVkKSBpbnZpdGF0aW9ucyBmb3IgdGhlIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIGxpc3RJbnZpdGF0aW9uczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RJbnZpdGF0aW9uc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENhbmNlbCBhIHBlbmRpbmcgaW52aXRhdGlvblxuICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VsIGEgcGVuZGluZyBpbnZpdGF0aW9uXG4gICAqXG4gICAqIFJlbW92ZXMgYSBwZW5kaW5nIGludml0YXRpb24gZnJvbSB0aGUgb3JnYW5pemF0aW9uLiBJZiBubyBwZW5kaW5nIGludml0YXRpb25cbiAgICogZXhpc3RzIGZvciB0aGUgZ2l2ZW4gZW1haWwgYWRkcmVzcywgYSBub3QtZm91bmQgZXJyb3IgaXMgcmV0dXJuZWQuXG4gICAqL1xuICBjYW5jZWxJbnZpdGF0aW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNhbmNlbEludml0YXRpb25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEludml0ZSBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgaW4gYW4gZXhpc3Rpbmcgb3JnIGFuZCBzZW5kcyB0aGF0IHVzZXIgYW4gaW52aXRlIGVtYWlsLlxuICAgKi9cbiAgaW52aXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleXNcbiAgICpcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBhY2Nlc3NpYmxlIGtleXMgaW4gYSBnaXZlbiBvcmcgKHRvIG9yZyBvd25lciwgYWxsIG9yZyBrZXlzXG4gICAqIGFyZSBhY2Nlc3NpYmxlOyB0byBtZW1iZXJzLCBvbmx5IHRoZWlyIG93biBrZXlzIGFyZSBhY2Nlc3NpYmxlKS5cbiAgICpcbiAgICogSWYgYSBzZWFyY2ggY29uZGl0aW9uIGlzLCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBvbmx5IHRoZSBrZXlzIHdob3NlIGVpdGhlclxuICAgKiBtYXRlcmlhbCBJRCBvciBtZXRhZGF0YSBjb250YWluIHRoZSBzZWFyY2ggY29uZGl0aW9uIHN0cmluZy5cbiAgICpcbiAgICogTk9URSB0aGF0IGlmIHBhZ2luYXRpb24gaXMgdXNlZCBhbmQgYSBwYWdlIGxpbWl0IGlzIHNldCwgdGhlIHJldHVybmVkIHJlc3VsdFxuICAgKiBzZXQgbWF5IGNvbnRhaW4gZWl0aGVyIEZFV0VSIG9yIE1PUkUgZWxlbWVudHMgdGhhbiB0aGUgcmVxdWVzdGVkIHBhZ2UgbGltaXQuXG4gICAqL1xuICBsaXN0S2V5c0luT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IGtleSB0eXBlXG4gICAgICAgICAqIEBleGFtcGxlIFNlY3BFdGhBZGRyXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfdHlwZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gRmlsdGVyIGJ5IGtleSBvd25lclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzUyNjljNTc5LWI0ZjktNDYyMC05ZTkwLWU0NmE1YTBmZmI0ZFxuICAgICAgICAgKi9cbiAgICAgICAga2V5X293bmVyPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJZFwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2VhcmNoIGtleSBtZXRhZGF0YVxuICAgICAgICAgKiBAZXhhbXBsZSBzb21lIHZhbHVlXG4gICAgICAgICAqL1xuICAgICAgICBzZWFyY2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleVxuICAgKlxuICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICovXG4gIGNyZWF0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgKi9cbiAgZ2V0S2V5SW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgS2V5XG4gICAqXG4gICAqIERlbGV0ZXMgYSBrZXkgc3BlY2lmaWVkIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogT25seSB0aGUga2V5IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBrZXlzLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIGRlbGV0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBLZXlcbiAgICpcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgYSBrZXkuICBUaGUgdXNlciBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUga2V5IG9yXG4gICAqIG9yZ2FuaXphdGlvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKlxuICAgKiBGb3IgZWFjaCByZXF1ZXN0ZWQgdXBkYXRlLCB0aGUgc2Vzc2lvbiBtdXN0IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgJ21hbmFnZTprZXk6dXBkYXRlOl8nIHNjb3BlO1xuICAgKiBpZiBubyB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHRoZSBzZXNzaW9uIG11c3QgaGF2ZSAnbWFuYWdlOmtleTpnZXQnLlxuICAgKi9cbiAgdXBkYXRlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXR0ZXN0IHRvIEtleSBQcm9wZXJ0aWVzXG4gICAqIEBkZXNjcmlwdGlvbiBBdHRlc3QgdG8gS2V5IFByb3BlcnRpZXNcbiAgICpcbiAgICogVGhlIHJlc3BvbnNlIGlzIGEgSldUIHdob3NlIGNsYWltcyBhcmUgdGhlIGtleSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgYXR0ZXN0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIGluY2x1ZGVfcm9sZXM/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb0p3dFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IEtleSBSb2xlc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBLZXkgUm9sZXNcbiAgICpcbiAgICogR2V0IGFsbCByb2xlcyB0aGUga2V5IGlzIGluXG4gICAqL1xuICBsaXN0S2V5Um9sZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdEtleVJvbGVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBIaXN0b3JpY2FsIFRyYW5zYWN0aW9uc1xuICAgKlxuICAgKiBSZXR1cm5zIGEgc29ydGVkLCBwYWdpbmF0ZWQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgc2lnbmVkIGJ5IGEgZ2l2ZW4ga2V5LFxuICAgKiBvcmRlcmVkIGZyb20gbW9zdCByZWNlbnQgZmlyc3QuXG4gICAqL1xuICBsaXN0SGlzdG9yaWNhbEtleVR4OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RIaXN0b3JpY2FsVHhSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgS2V5IGJ5IE1hdGVyaWFsIElEXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5IGJ5IE1hdGVyaWFsIElEXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHByb3BlcnRpZXMgb2YgYSBrZXkuXG4gICAqL1xuICBnZXRLZXlCeU1hdGVyaWFsSWQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVHlwZSBvZiB0aGUga2V5IHRvIGxvb2sgdXAgKi9cbiAgICAgICAga2V5X3R5cGU6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNYXRlcmlhbCBJRCBvZiB0aGUga2V5IHRvIGxvb2sgdXAgKi9cbiAgICAgICAgbWF0ZXJpYWxfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUXVlcnkgb3JnIG1ldHJpY3MuXG4gICAqIEBkZXNjcmlwdGlvbiBRdWVyeSBvcmcgbWV0cmljcy5cbiAgICpcbiAgICogTWV0cmljcyBzdW1tYXJpemUgdXNhZ2UgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBDdWJlU2lnbmVyIG9yZ2FuaXphdGlvbiBvdmVyIHRpbWUuIEZvciBleGFtcGxlLFxuICAgKiB5b3UgY2FuIGNhbGwgdGhpcyBlbmRwb2ludCBmaW5kIG91dDpcbiAgICpcbiAgICogLSB0aGUgYXZlcmFnZSBudW1iZXIgb2Yga2V5cyBvdmVyIHRoZSBsYXN0IG1vbnRoLFxuICAgKiAtIHRoZSBhdmVyYWdlIG51bWJlciBtb250aGx5IHVzZXJzIG92ZXIgdGhlIGxhc3QgeWVhcixcbiAgICogLSB0aGUgdG90YWwgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBzaWduZWQgbGFzdCB3ZWVrLFxuICAgKiAtIGhvdyB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBBUEkgcmVxdWVzdHMgd2FzIHRyZW5kaW5nIGRheS1ieS1kYXkgb3ZlciB0aGUgbGFzdCB3ZWVrL21vbnRoL3llYXIsIGV0Yy5cbiAgICpcbiAgICogRWFjaCBtZXRyaWMga2luZCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBkaW1lbnNpb25zLCB0byBmdXJ0aGVyIHNwZWNpZnkgdGhlIG9yZyBwcm9wZXJ0eSBpdCBkZXNjcmliZXMuXG4gICAqIEZvciBleGFtcGxlLCB0aGUgYFVzZXJDb3VudGAgbWV0cmljcyBoYXZlIGEgbWVtYmVyc2hpcCBkaW1lbnNpb25zIHRvIHNwZWNpZnkgdGhlIGtpbmQgb2YgdXNlciBtZW1iZXJzaGlwXG4gICAqIGluIHRoZSBvcmdhbml6YXRpb24gKFwiT3duZXJcIiB2cy4gXCJNZW1iZXJcIiB2cy4gXCJBbGllblwiKS5cbiAgICovXG4gIHF1ZXJ5TWV0cmljczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJRdWVyeU1ldHJpY3NSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkUXVlcnlNZXRyaWNzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzIHRoYXQgYXJlIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbixcbiAgICogaS5lLiwgdGhvc2UgY3JlYXRlZCBieSB0aGUgY3VycmVudCBzZXNzaW9uIGlkZW50aXR5IHBsdXMgdGhvc2UgaW4gd2hpY2ggdGhlIGN1cnJlbnQgdXNlclxuICAgKiBpcyBsaXN0ZWQgYXMgYW4gYXBwcm92ZXJcbiAgICovXG4gIG1mYUxpc3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJMaXN0TWZhUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAqXG4gICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgKi9cbiAgbWZhR2V0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBvciBSZWplY3QgTUZBIFJlcXVlc3RcbiAgICpcbiAgICogQXBwcm92ZSBvciByZWplY3QgcmVxdWVzdCBhZnRlciBsb2dnaW5nIGluIHdpdGggQ3ViZVNpZ25lci5cbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIHRoZSBjdXJyZW50bHktbG9nZ2VkIHVzZXIgYXMgYW4gYXBwcm92ZXJcbiAgICogb2YgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IG9mIHRoZSBbU3RhdHVzOjpSZXF1aXJlZEFwcHJvdmVyc10ga2luZC4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZlxuICAgKiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG9cbiAgICogcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVDczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICBtZmFfdm90ZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVm90ZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhbiBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYW4gRW1haWwgT1RQIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICpcbiAgICogSW5pdGlhdGVzIHRoZSBhcHByb3ZhbC9yZWplY3Rpb24gcHJvY2VzcyBvZiBhbiBNRkEgUmVxdWVzdCB1c2luZyBFbWFpbCBPVFAuXG4gICAqL1xuICBtZmFFbWFpbEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1haWxPdHBSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSBhIEVtYWlsIE9UUCBNRkEgQXBwcm92YWwvUmVqZWN0aW9uLlxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBFbWFpbCBPVFAgTUZBIEFwcHJvdmFsL1JlamVjdGlvbi5cbiAgICpcbiAgICogVGhlIHJlcXVlc3Qgc2hvdWxkIGNvbnRhaW4gdGhlIGZ1bGwgSldUIG9idGFpbmVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlXG4gICAqIHBhcnRpYWwgdG9rZW4gcmV0dXJuZWQgYnkgdGhlIGBtZmFfZW1haWxfaW5pdGAgZW5kcG9pbnQgYW5kIHRoZSBzaWduYXR1cmVcbiAgICogZW1haWxlZCB0byB0aGUgdXNlciBpc3N1aW5nIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAqIHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0byByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKi9cbiAgbWZhVm90ZUVtYWlsQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbWFpbE90cEFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKlxuICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsL3JlamVjdGlvbiBwcm9jZXNzIG9mIGFuIE1GQSBSZXF1ZXN0IHVzaW5nIEZJRE8uXG4gICAqL1xuICBtZmFGaWRvSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0Fzc2VydENoYWxsZW5nZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICogSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkO1xuICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVGaWRvQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9Bc3NlcnRBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnQgdXNlciBhcyBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnlcbiAgICogcHJvdmlkaW5nIFRPVFAgY29kZS4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzXG4gICAqIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHBlbmRpbmcgTU1JIHJlcXVlc3RzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IHBlbmRpbmcgTU1JIHJlcXVlc3RzXG4gICAqXG4gICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhbGwgcGVuZGluZyBNTUkgbWVzc2FnZXMgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCBzZXNzaW9uIGlkZW50aXR5LCBpLmUuLFxuICAgKiAtIGEgcm9sZSBzZXNzaW9uIGNhbiBhY2Nlc3Mgb25seSB0aGUgbWVzc2FnZXMgY3JlYXRlZCBieSB0aGF0IHJvbGVcbiAgICogLSBhIHVzZXIgc2Vzc2lvbiBjYW4gYWNjZXNzIHRoZSBtZXNzYWdlcyBjcmVhdGVkIGJ5IGVpdGhlciB0aGF0IHVzZXIgb3IgYW55IHJvbGUgd2hpY2ggdGhlIHVzZXIgaXMgYSBtZW1iZXIgb2ZcbiAgICovXG4gIG1taU1lc3NhZ2VMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdFBlbmRpbmdNZXNzYWdlc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBhbiBNTUkgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGFuIE1NSSByZXF1ZXN0XG4gICAqXG4gICAqIFJldHJpZXZlcyBhIHBlbmRpbmcgTU1JIHJlcXVlc3QgYnkgaXRzIElELlxuICAgKi9cbiAgbW1pTWVzc2FnZUdldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFBlbmRpbmdNZXNzYWdlXG4gICAgICAgICAqIEBleGFtcGxlIFBlbmRpbmdNZXNzYWdlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbXNnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQZW5kaW5nTWVzc2FnZUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIGFuIE1NSSByZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gTU1JIHJlcXVlc3RcbiAgICpcbiAgICogUmVqZWN0cyBhbiBleGlzdGluZyBNTUkgcmVxdWVzdCBhbmQgdGhlbiBkZWxldGVzIGl0IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgbW1pTWVzc2FnZURlbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFBlbmRpbmdNZXNzYWdlXG4gICAgICAgICAqIEBleGFtcGxlIFBlbmRpbmdNZXNzYWdlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbXNnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVqZWN0IGFuIE1NSSByZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBSZWplY3QgYW4gTU1JIHJlcXVlc3RcbiAgICpcbiAgICogUmVqZWN0cyBhIHBlbmRpbmcgTU1JIHJlcXVlc3QuIFRoZSByZWNvcmQgb2YgdGhlIE1NSSByZXF1ZXN0IGlzIGtlcHQgaW5cbiAgICogdGhlIGRhdGFiYXNlIHVudGlsIGl0IGV4cGlyZXMgb3IgaXMgZXhwbGljaXRseSBkZWxldGVkLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSB1cGRhdGVkIHJlcXVlc3QgaW5mb3JtYXRpb24uXG4gICAqL1xuICBtbWlNZXNzYWdlUmVqZWN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUGVuZGluZ01lc3NhZ2VcbiAgICAgICAgICogQGV4YW1wbGUgUGVuZGluZ01lc3NhZ2UjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtc2dfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTW1pUmVqZWN0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQZW5kaW5nTWVzc2FnZUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZSBhbmQgc2lnbiBhbiBNTUkgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBhbmQgc2lnbiBhbiBNTUkgcmVxdWVzdFxuICAgKlxuICAgKiBTaWducyBhIHBlbmRpbmcgcmVxdWVzdCB0aGF0IHdhcyBnZW5lcmF0ZWQgdGhyb3VnaCB0aGUgTU1JIEpTT04gUlBDIGVuZHBvaW50LlxuICAgKiBUaGUgc2lnbmF0dXJlIGlzIHN0b3JlZCB3aXRoIHRoZSBwZW5kaW5nIG1lc3NhZ2UgYW5kIHRoZSB1cGRhdGVkIHJlcXVlc3QgaW5mbyBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogVGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JnYW5pemF0aW9uIHRoaXMgaXMgY2FsbGVkIGZyb20sXG4gICAqIGFuZCB0aGUgdXNlciBzaG91bGQgYmUgdGhlIG93bmVyIG9mIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2UncyBrZXkuXG4gICAqL1xuICBtbWlNZXNzYWdlU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFBlbmRpbmdNZXNzYWdlXG4gICAgICAgICAqIEBleGFtcGxlIFBlbmRpbmdNZXNzYWdlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbXNnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUGVuZGluZ01lc3NhZ2VJbmZvXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGVuZGluZ01lc3NhZ2VTaWduUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAqIEBkZXNjcmlwdGlvbiBNaW50IGFuIE9JREMgSUQgdG9rZW4gZm9yIFR3aXR0ZXJcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBhY3RzIGlkZW50aWNhbGx5IHRvIFR3aXR0ZXIncyBbYG9hdXRoMi90b2tlbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLnR3aXR0ZXIuY29tL2VuL2RvY3MvYXV0aGVudGljYXRpb24vYXBpLXJlZmVyZW5jZS90b2tlbikgZW5kcG9pbnQsXG4gICAqIGJ1dCBleHRlbmRzIHRoZSBvdXRwdXQgd2l0aCBhbiBgaWRfdG9rZW5gLlxuICAgKlxuICAgKiBUaGlzIGBpZF90b2tlbmAgY2FuIHRoZW4gYmUgdXNlZCB3aXRoIGFueSBDdWJlU2lnbmVyIGVuZHBvaW50IHRoYXQgcmVxdWlyZXMgYW4gT0lEQyB0b2tlbi5cbiAgICpcbiAgICogPiBbIUlNUE9SVEFOVF1cbiAgICogPiBUaGlzIGVuZHBvaW50IHdpbGwgZmFpbCB1bmxlc3MgdGhlIG9yZyBpcyBjb25maWd1cmVkIHRvIGFsbG93IHRoZSBpc3N1ZXIgYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90d2l0dGVyYCBhbmQgY2xpZW50IElEIGJlaW5nIHVzZWQgZm9yIFR3aXR0ZXIuXG4gICAqL1xuICBvYXV0aDJUd2l0dGVyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG9rZW5SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMb2dpbiB3aXRoIE9JRENcbiAgICogQGRlc2NyaXB0aW9uIExvZ2luIHdpdGggT0lEQ1xuICAgKlxuICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBzaWduZXIgc2Vzc2lvbi5cbiAgICpcbiAgICogTUZBIGlzIHJlcXVpcmVkIHdoZW46XG4gICAqIC0gYW4gTUZBIHBvbGljeSBpcyBleHBsaWNpdGx5IGF0dGFjaGVkIHRvIHRoZSB1c2VyIGxvZ2dpbmcgaW5cbiAgICogKGUuZy4sIGFuIG9yZyBvd25lciBjYW4gZG8gdGhhdCBhdCB1c2VyIGNyZWF0aW9uIHRpbWUgdG8gcmVxdWlyZSBjZXJ0YWluIGtpbmQgb2YgTUZBKVxuICAgKiAtIHRoZSB1c2VyIGhhcyBhdCBsZWFzdCAxIE1GQSBmYWN0b3IgY29uZmlndXJlZFxuICAgKi9cbiAgb2lkY0F1dGg6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0xvZ2luUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgbG9naW4gdmlhIGVtYWlsIHRva2VuXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBsb2dpbiB2aWEgZW1haWwgdG9rZW5cbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBnZW5lcmF0ZXMgYW4gT0lEQyB0b2tlbiB3aXRob3V0IGEgc2lnbmF0dXJlIChvZiB0aGUgZm9ybSBgaGVhZGVyLnBheWxvYWQuYCksIGFuZCBzZW5kcyB0aGUgc2lnbmF0dXJlIHRvIHRoZSB1c2VyJ3MgZW1haWwuXG4gICAqIENsaWVudCBhcHBsaWNhdGlvbnMgY2FuIHJlY29uc3RydWN0IHRoZSB0b2tlbiBieSBjb25jYXRlbmF0aW5nIHRoZSBgcGFydGlhbF90b2tlbmAgd2l0aCB0aGUgc2lnbmF0dXJlLCBwcm9kdWNpbmcgYSB2YWxpZCBPSURDIHRva2VuIG9mIHRoZSBmb3JtIGBoZWFkZXIucGF5bG9hZC5zaWduYXR1cmVgXG4gICAqIFRoZSB0b2tlbiBjYW4gdGhlbiBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlci5cbiAgICpcbiAgICogPiBbIUlNUE9SVEFOVF1cbiAgICogPiBGb3IgdGhpcyBlbmRwb2ludCB0byBzdWNjZWVkLCB0aGUgb3JnIG11c3QgYmUgY29uZmlndXJlZCB0bzpcbiAgICogPiAxLiBBbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvZW1haWwtb3RwYCBhbmQgY2xpZW50IElEIGJlaW5nIHRoZSBPcmcgSURcbiAgICogPiAyLiBIYXZlIGFuIGVtYWlsIHNlbmRlciBjb25maWd1cmVkIGZvciBPVFBzXG4gICAqL1xuICBlbWFpbE90cEF1dGg6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxPdHBSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1haWxPdHBSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKS5cbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpLlxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGdlbmVyYXRlcyBhIGNoYWxsZW5nZSB3aGljaCBjYW4gYmUgYW5zd2VyZWQgKHZpYSB0aGUgY29ycmVzcG9uZGluZyBQQVRDSCBlbmRwb2ludClcbiAgICogdG8gb2J0YWluIGFuIE9JREMgdG9rZW4uIFRoZSBPSURDIHRva2VuIGNhbiB0aGVuIGJlIGV4Y2hhbmdlZCBmb3IgYSB1c2VyIHNlc3Npb24gdmlhIHRoZSBzdGFuZGFyZFxuICAgKiBPSURDIGF1dGggcm91dGUuXG4gICAqXG4gICAqID4gWyFJTVBPUlRBTlRdXG4gICAqID4gRm9yIHRoaXMgZW5kcG9pbnQgdG8gc3VjY2VlZCwgdGhlIG9yZyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG86XG4gICAqID4gQWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3Npd2VgIHdpdGggdGhlIE9yZyBJRCBhcyB0aGUgY2xpZW50IElEXG4gICAqL1xuICBzaXdlSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaXdlSW5pdFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaXdlSW5pdFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIGxvZ2luIHZpYSBTaWduLWluIFdpdGggRXRoZXJldW0gKFNJV0UpXG4gICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZSBsb2dpbiB2aWEgU2lnbi1pbiBXaXRoIEV0aGVyZXVtIChTSVdFKVxuICAgKlxuICAgKiBJZiB0aGUgY2hhbGxlbmdlIChpc3N1ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgUE9TVCBlbmRwb2ludCkgaXMgYW5zd2VyZWQgY29ycmVjdGx5LCB0aGlzIGVuZHBvaW50XG4gICAqIGdlbmVyYXRlcyBhbiBPSURDIHRva2VuIHRoYXQgY2FuIHRoZW4gYmUgZXhjaGFuZ2VkIGZvciBhIHVzZXIgc2Vzc2lvbiB2aWEgdGhlIHN0YW5kYXJkIE9JREMgYXV0aCByb3V0ZS5cbiAgICpcbiAgICogPiBbIUlNUE9SVEFOVF1cbiAgICogPiBGb3IgdGhpcyBlbmRwb2ludCB0byBzdWNjZWVkLCB0aGUgb3JnIG11c3QgYmUgY29uZmlndXJlZCB0bzpcbiAgICogPiBBbGxvdyB0aGUgaXNzdWVyIGBodHRwczovL3NoaW0ub2F1dGgyLmN1YmlzdC5kZXYvc2l3ZWAgd2l0aCB0aGUgT3JnIElEIGFzIHRoZSBjbGllbnQgSURcbiAgICovXG4gIHNpd2VDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaXdlQ29tcGxldGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2l3ZUNvbXBsZXRlUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWxsb3dzIGEgdXNlciB0byBhdXRoZW50aWNhdGUgd2l0aCB0aGUgdGVsZWdyYW0gQVBJIHVzaW5nIHRoZSB0Z1dlYkFwcERhdGEgdmFsdWVcbiAgICogQGRlc2NyaXB0aW9uIEFsbG93cyBhIHVzZXIgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIHRlbGVncmFtIEFQSSB1c2luZyB0aGUgdGdXZWJBcHBEYXRhIHZhbHVlXG4gICAqIFRoZSB0b2tlbiBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKiAtIFRoZSBgc3ViYCBmaWVsZCBpcyB0aGUgdGVsZWdyYW0gdXNlciBJRFxuICAgKiAtIFRoZSBgaXNzYCBmaWVsZCBkZXBlbmRzIG9uIHRoZSBjaG9zZW4gZW52aXJvbm1lbnQ6XG4gICAqIC0gYGh0dHBzOi8vc2hpbS5vYXV0aDIuY3ViaXN0LmRldi90ZWxlZ3JhbS9wcm9kdWN0aW9uYCBmb3IgdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcbiAgICogLSBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3RlbGVncmFtL3Rlc3RgIGZvciB0aGUgdGVzdCBlbnZpcm9ubWVudFxuICAgKiAtIFRoZSBgYXVkYCBmaWVsZCBpcyB0aGUgcHJvdmlkZWQgdGVsZWdyYW0gYm90IElEXG4gICAqIC0gVGhlIGBleHBgIGZpZWxkIGlzIGRlcml2ZWQgZnJvbSB0aGUgYGF1dGhfZGF0ZWAgZmllbGQgaW4gdGhlIHRlbGVncmFtIGRhdGFcbiAgICpcbiAgICogRmFpbHMgaWYgdGhlIHRlbGVncmFtIGRhdGEgaXMgaW52YWxpZCBvciB0aGUgc2lnbmF0dXJlIGlzIGludmFsaWRcbiAgICovXG4gIHRlbGVncmFtQXV0aDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUZWxlZ3JhbUF1dGhSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVGVsZWdyYW1BdXRoUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIE9yZ1xuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IG9yZ2FuaXphdGlvbi4gVGhlIG5ldyBvcmcgaXMgYSBjaGlsZCBvZiB0aGVcbiAgICogY3VycmVudCBvcmcgYW5kIGluaGVyaXRzIGl0cyBrZXktZXhwb3J0IHBvbGljeS4gVGhlIG5ldyBvcmdcbiAgICogaXMgY3JlYXRlZCB3aXRoIG9uZSBvd25lciwgdGhlIGNhbGxlciBvZiB0aGlzIEFQSS5cbiAgICovXG4gIGNyZWF0ZU9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVPcmdSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiT3JnSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFBvbGljaWVzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBvbGljaWVzXG4gICAqXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIHBvbGljaWVzIGluIHRoZSBPcmcuXG4gICAqL1xuICBsaXN0UG9saWNpZXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3B0aW9uYWwgdHlwZSBvZiBwb2xpY2llcyB0byByZXR1cm5cbiAgICAgICAgICogQGV4YW1wbGUgS2V5XG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfdHlwZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUG9saWN5VHlwZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFBvbGljaWVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFBvbGljeVxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IG5hbWVkIHBvbGljeSBpbiB0aGUgb3JnYW5pemF0aW9uLiBUaGUgdXNlciBtYWtpbmcgdGhlIHJlcXVlc3QgaXMgdGhlXG4gICAqIG93bmVyIG9mIHRoZSBwb2xpY3ksIGdpdmluZyB0aGVtIGVkaXQgYWNjZXNzIHRvIHRoZSBwb2xpY3kgYWxvbmcgd2l0aCB0aGUgb3JnIG93bmVycy5cbiAgICovXG4gIGNyZWF0ZVBvbGljeToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVQb2xpY3lSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUG9saWN5XG4gICAqXG4gICAqIERlbGV0ZSB0aGUgbmFtZWQgcG9saWN5IHdpdGggdGhlIGdpdmVuIG5hbWUgb3IgaWQuXG4gICAqL1xuICBkZWxldGVQb2xpY3k6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBOYW1lZFBvbGljeVxuICAgICAgICAgKiBAZXhhbXBsZSBOYW1lZFBvbGljeSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHBvbGljeV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgUG9saWN5XG4gICAqXG4gICAqIFVwZGF0ZXMgdGhlIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgKi9cbiAgdXBkYXRlUG9saWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTmFtZWRQb2xpY3lcbiAgICAgICAgICogQGV4YW1wbGUgTmFtZWRQb2xpY3kjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVQb2xpY3lSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5SW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFBvbGljeSBMb2dzXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUG9saWN5IExvZ3NcbiAgICpcbiAgICogUmV0dXJucyB0aGUgbG9ncyBmb3IgdGhlIGdpdmVuIHBvbGljeSwgd2l0aGluIHRoZSBnaXZlbiB0aW1lZnJhbWUuXG4gICAqL1xuICBnZXRQb2xpY3lMb2dzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTmFtZWRQb2xpY3lcbiAgICAgICAgICogQGV4YW1wbGUgTmFtZWRQb2xpY3kjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lMb2dzUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZFBvbGljeUxvZ3NSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgUG9saWN5XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUG9saWN5XG4gICAqXG4gICAqIFJldHVybnMgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIG9yIGxhdGVzdCBvZiBhIG5hbWVkIHBvbGljeSB3aXRoIHRoZSBnaXZlbiBuYW1lIG9yIGlkLlxuICAgKi9cbiAgZ2V0UG9saWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTmFtZWRQb2xpY3lcbiAgICAgICAgICogQGV4YW1wbGUgTmFtZWRQb2xpY3kjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBwb2xpY3lfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcG9saWN5IHZlcnNpb24sIGVpdGhlciAnbGF0ZXN0JyBvciAndjxudW1iZXI+Jy5cbiAgICAgICAgICogQGV4YW1wbGUgbGF0ZXN0XG4gICAgICAgICAqL1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQb2xpY3lJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEludm9rZSBQb2xpY3lcbiAgICogQGRlc2NyaXB0aW9uIEludm9rZSBQb2xpY3lcbiAgICpcbiAgICogSW52b2tlcyB0aGUgW05hbWVkUG9saWN5XSB3aXRoIHRoZSBnaXZlbiBJRCB3aXRoIHRoZSBnaXZlbiByZXF1ZXN0IGluZm9ybWF0aW9uLlxuICAgKiBJdCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgV2FzbSBwb2xpY2llcy5cbiAgICovXG4gIGludm9rZVBvbGljeToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE5hbWVkUG9saWN5XG4gICAgICAgICAqIEBleGFtcGxlIE5hbWVkUG9saWN5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcG9saWN5X2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHBvbGljeSB2ZXJzaW9uLCBlaXRoZXIgJ2xhdGVzdCcgb3IgJ3Y8bnVtYmVyPicuXG4gICAgICAgICAqIEBleGFtcGxlIGxhdGVzdFxuICAgICAgICAgKi9cbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludm9rZVBvbGljeVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJJbnZva2VQb2xpY3lSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IEJ1Y2tldHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgQnVja2V0c1xuICAgKlxuICAgKiBMaXN0IGF2YWlsYWJsZSBtZXRhIGluZm9ybWF0aW9uIGFib3V0IGFsbCBwb2xpY3kgS1Ygc3RvcmUgYnVja2V0cyBpbiB0aGUgb3JnLlxuICAgKi9cbiAgbGlzdFBvbGljeUJ1Y2tldHM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0QnVja2V0c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBCdWNrZXRcbiAgICogQGRlc2NyaXB0aW9uIEdldCBCdWNrZXRcbiAgICpcbiAgICogUmV0dXJucyB0aGUgbWV0YSBpbmZvcm1hdGlvbiBvZiBhIHBvbGljeSBLViBzdG9yZSBidWNrZXQuXG4gICAqL1xuICBnZXRQb2xpY3lCdWNrZXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIGJ1Y2tldF9uYW1lOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCdWNrZXRJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBCdWNrZXRcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBCdWNrZXRcbiAgICpcbiAgICogVXBkYXRlcyBtZXRhIGluZm9ybWF0aW9uIGZvciBhbiBleGlzdGluZyBwb2xpY3kgS1Ygc3RvcmUgYnVja2V0LlxuICAgKi9cbiAgdXBkYXRlUG9saWN5QnVja2V0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICBidWNrZXRfbmFtZTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZUJ1Y2tldFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJCdWNrZXRJbmZvXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgUG9saWN5IEltcG9ydCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBQb2xpY3kgSW1wb3J0IEtleVxuICAgKlxuICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3IgZW5jcnlwdGluZyBkYXRhIHJlbGF0ZWQgdG8gV2FzbVxuICAgKiBwb2xpY2llcyAoZS5nLiwgcG9saWN5IHNlY3JldHMpLlxuICAgKi9cbiAgY3JlYXRlUG9saWN5SW1wb3J0S2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlUG9saWN5SW1wb3J0S2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IHRoZSBvcmctd2lkZSBwb2xpY3kgc2VjcmV0cy5cbiAgICogQGRlc2NyaXB0aW9uIEdldCB0aGUgb3JnLXdpZGUgcG9saWN5IHNlY3JldHMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGlzIG9ubHkgcmV0dXJucyB0aGUga2V5cyBmb3IgdGhlIHNlY3JldHMsIG9taXR0aW5nIHRoZSB2YWx1ZXMuXG4gICAqIFRoZSB2YWx1ZXMgYXJlIHNlY3JldCBhbmQgYXJlIG5vdCBhY2Nlc3NpYmxlIG91dHNpZGUgV2FzbSBwb2xpY3kgZXhlY3V0aW9uLlxuICAgKi9cbiAgZ2V0UG9saWN5U2VjcmV0czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBvbGljeVNlY3JldHNJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBvcmctbGV2ZWwgcG9saWN5IHNlY3JldHNcbiAgICpcbiAgICogVGhlIHByb3ZpZGVkIHNlY3JldHMgd2lsbCByZXBsYWNlIGFueSBleGlzdGluZyBvcmctbGV2ZWwgc2VjcmV0cy5cbiAgICogSXQgZmFpbHMgaWYgdGhlIHNlY3JldHMgd2VyZW4ndCBwcmV2aW91c2x5IGNyZWF0ZWQuXG4gICAqXG4gICAqIE11c3QgYmUgcGVybWl0dGVkIGJ5IHRoZSBwb2xpY3kgc2VjcmV0J3MgZWRpdCBwb2xpY3kgaWYgc2V0LCBhbmQgdGhlIG9yZydzIGVkaXQgcG9saWN5IG90aGVyd2lzZS5cbiAgICovXG4gIHVwZGF0ZVBvbGljeVNlY3JldHM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlUG9saWN5U2VjcmV0c1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQb2xpY3lTZWNyZXRzSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIG9yIG92ZXJ3cml0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldC5cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBvciBvdmVyd3JpdGUgYW4gb3JnLWxldmVsIHBvbGljeSBzZWNyZXQuXG4gICAqIE11c3QgYmUgcGVybWl0dGVkIGJ5IHRoZSBwb2xpY3kgc2VjcmV0J3MgZWRpdCBwb2xpY3kgaWYgc2V0LCBhbmQgdGhlIG9yZydzIGVkaXQgcG9saWN5IG90aGVyd2lzZS5cbiAgICovXG4gIHNldFBvbGljeVNlY3JldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgc2VjcmV0X25hbWU6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXRQb2xpY3lTZWNyZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5U2VjcmV0c0luZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldC5cbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBvcmctbGV2ZWwgcG9saWN5IHNlY3JldC5cbiAgICogTXVzdCBiZSBwZXJtaXR0ZWQgYnkgdGhlIHBvbGljeSBzZWNyZXQncyBlZGl0IHBvbGljeSBpZiBzZXQsIGFuZCB0aGUgb3JnJ3MgZWRpdCBwb2xpY3kgb3RoZXJ3aXNlLlxuICAgKi9cbiAgZGVsZXRlUG9saWN5U2VjcmV0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICBzZWNyZXRfbmFtZTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUG9saWN5U2VjcmV0c0luZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwbG9hZCBXYXNtIFBvbGljeVxuICAgKiBAZGVzY3JpcHRpb24gVXBsb2FkIFdhc20gUG9saWN5XG4gICAqXG4gICAqIFJldHVybnMgYSBzaWduZWQgVVJMIGZvciB1cGxvYWRpbmcgYSB3YXNtIHBvbGljeSB0byBDdWJlU2lnbmVyLiBUaGUgcG9saWN5IHdpbGwgYmVcbiAgICogZGVsZXRlZCBpZiBub3QgYXR0YWNoZWQgdG8gYSBbTmFtZWRQb2xpY3ldIHNvb24gYWZ0ZXIgdGhlIHVwbG9hZCBoYXMgYmVlbiBjb21wbGV0ZWQuXG4gICAqL1xuICB1cGxvYWRXYXNtUG9saWN5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwbG9hZFdhc21Qb2xpY3lSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXBsb2FkV2FzbVBvbGljeVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZXNcbiAgICpcbiAgICogUmV0cmlldmVzIGFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzLlxuICAgKi9cbiAgbGlzdFJvbGVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRG9uJ3QgaW5jbHVkZSBrZXlzIGFuZCB1c2VycyBmb3IgZWFjaCByb2xlICovXG4gICAgICAgIHN1bW1hcml6ZT86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUm9sZVxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLiBVbmxlc3MgdGhlIGxvZ2dlZC1pbiB1c2VyXG4gICAqIGlzIHRoZSBvd25lciwgdGhleSBhcmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbmV3bHkgY3JlYXRlZCByb2xlLlxuICAgKi9cbiAgY3JlYXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHJlcXVlc3QgYm9keSB0byBzZXQgdGhlIHJvbGUgbmFtZSAqL1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVSb2xlUmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVSb2xlUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIEdldCBSb2xlXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uXG4gICAqL1xuICBnZXRSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIHN1bW1hcml6ZT86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJvbGVJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUm9sZVxuICAgKlxuICAgKiBEZWxldGVzIGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uXG4gICAqXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgKi9cbiAgZGVsZXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBSb2xlXG4gICAqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYSByb2xlICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOmVuYWJsZWAgc2NvcGUpLlxuICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5YCBzY29wZSkuXG4gICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBlZGl0IHBvbGljaWVzICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOmVkaXRQb2xpY3lgIHNjb3BlKS5cbiAgICpcbiAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIHVwZGF0ZVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlUm9sZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSb2xlSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWRkIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBLZXlzXG4gICAqXG4gICAqIEFkZHMgYSBsaXN0IG9mIGV4aXN0aW5nIGtleXMgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICpcbiAgICogVGhlIGtleSBvd25lciBpcyBhbGxvd2VkIHRvIGFkZCB0aGVpciBrZXkgdG8gYW55IHJvbGUgdGhhdCB0aGV5IGFyZSBpbi5cbiAgICpcbiAgICogSW4gXCJvcmcgY3VzdG9keVwiIG1vZGVsIG9ubHksIG9yZyBvd25lcnMgYXJlIGFsbG93ZWQgdG8gYWRkIGFueSBrZXkgdG8gYW55IHJvbGUuXG4gICAqXG4gICAqIEluIGFsbCBjYXNlczogdGhlIHJvbGUncyBlZGl0IHBvbGljeSwgYXMgd2VsbCBhcyB0aGUgZWRpdCBwb2xpY3kgb2YgZWFjaCBvZiB0aGUga2V5cywgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICpcbiAgICogRWFjaCByZXF1ZXN0IHRvIHRoaXMgZW5kcG9pbnQgY2FuIGFkZCwgYXQgbWF4aW11bSwgMzIga2V5cy5cbiAgICovXG4gIGFkZEtleXNUb1JvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkS2V5c1RvUm9sZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgVXNlclxuICAgKlxuICAgKiBBZGRzIGFuIGV4aXN0aW5nIHVzZXIgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICpcbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgKiBBZGRpdGlvbmFsbHksIHRoZSByb2xlJ3MgZWRpdCBwb2xpY3kgKGlmIHNldCkgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIGFkZFVzZXJUb1JvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBdHRlc3QgdG8gUm9sZSBQcm9wZXJ0aWVzXG4gICAqIEBkZXNjcmlwdGlvbiBBdHRlc3QgdG8gUm9sZSBQcm9wZXJ0aWVzXG4gICAqXG4gICAqIFRoZSByZXNwb25zZSBpcyBhIEpXVCB3aG9zZSBjbGFpbXMgYXJlIHRoZSByZXF1ZXN0ZWQgcm9sZSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgYXR0ZXN0Um9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFJvbGUgcHJvcGVydGllcyB0byBpbmNsdWRlIGluIGFuIGF0dGVzdGF0aW9uLiBEZWZhdWx0cyB0byBiYXNpYyByb2xlXG4gICAgICAgICAqIHByb3BlcnRpZXMsIGluY2x1ZGluZyBhc3NvY2lhdGVkIHVzZXJzLCBidXQgZXhjbHVkaW5nIGFzc29jaWF0ZWQga2V5cy5cbiAgICAgICAgICovXG4gICAgICAgIHZlcmJvc2l0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUF0dGVzdGF0aW9uVmVyYm9zaXR5XCJdO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEFzc29jaWF0ZWQga2V5cyBmaWx0ZXIsIGkuZS4sIHdoZW4gc3BlY2lmaWVkLCBvdXQgYWxsIG90aGVyIGFzc29jaWF0ZWRcbiAgICAgICAgICoga2V5cyBhcmUgZmlsdGVyZWQgb3V0LiBEZWZhdWx0cyB0byBpbmNsdWRpbmcgYWxsIGFzc29jaWF0ZWQga2V5cy5cbiAgICAgICAgICovXG4gICAgICAgIGtleV9maWx0ZXI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSb2xlSW5mb0p3dFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFJvbGUgS2V5c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIEtleXNcbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwga2V5cyBpbiBhIHJvbGUuXG4gICAqL1xuICBsaXN0Um9sZUtleXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgYSBLZXkgaW4gUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGEgS2V5IGluIFJvbGVcbiAgICpcbiAgICogUmV0dXJucyB0aGUga2V5LWluLXJvbGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4ga2V5IGFuZCByb2xlLiBJZiBgZGV0YWlsc2AgaXMgc2V0IHRvIGB0cnVlYCxcbiAgICogdGhpcyBlbmRwb2ludCByZXR1cm5zIGRldGFpbGVkIGtleSBpbmZvcm1hdGlvbi5cbiAgICovXG4gIGdldFJvbGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIGluY2x1ZGUgZGV0YWlsZWQga2V5IGluZm9ybWF0aW9uXG4gICAgICAgICAqIEBleGFtcGxlIHRydWVcbiAgICAgICAgICovXG4gICAgICAgIGRldGFpbHM/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgS2V5XG4gICAqXG4gICAqIFJlbW92ZXMgYSBnaXZlbiBrZXkgZnJvbSBhIHJvbGUuXG4gICAqXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3JnIG93bmVycyBjYW4gcmVtb3ZlIGtleXMgZnJvbSBhIHJvbGUuXG4gICAqIEFkZGl0aW9uYWxseSwgYm90aCB0aGUgcm9sZSdzIGFuZCB0aGUga2V5J3MgZWRpdCBwb2xpY3kgbXVzdCBwZXJtaXQgdGhlIHVwZGF0ZS5cbiAgICovXG4gIHJlbW92ZUtleUZyb21Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFRva2VuXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgVG9rZW5cbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBhY2Nlc3MgdG9rZW4gZm9yIGEgZ2l2ZW4gcm9sZSAodG8gYmUgdXNlZCBhcyBcIkFQSSBLZXlcIiBmb3IgYWxsIHNpZ25pbmcgYWN0aW9ucykuXG4gICAqIFRoZSBgcmVzdHJpY3RlZF9hY3Rpb25zYCBmaWVsZCBvbiB0aGUgW1JvbGVdIGRldGVybWluZXMgdGhlIG1lbWJlcnNoaXAgcm9sZSB0aGF0IGlzIHJlcXVpcmVkIHRvXG4gICAqIGNyZWF0ZSB0b2tlbnMuXG4gICAqL1xuICBjcmVhdGVSb2xlVG9rZW46IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlVG9rZW5SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgSGlzdG9yaWNhbCBUcmFuc2FjdGlvbnNcbiAgICpcbiAgICogUmV0dXJucyBhIHNvcnRlZCwgcGFnaW5hdGVkIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIHNpZ25lZCBieSB0aGUgZ2l2ZW4gcm9sZSxcbiAgICogb3JkZXJlZCBmcm9tIG1vc3QgcmVjZW50IGZpcnN0LlxuICAgKi9cbiAgbGlzdEhpc3RvcmljYWxSb2xlVHg6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0SGlzdG9yaWNhbFR4UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlIFVzZXJzLlxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIFVzZXJzLlxuICAgKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB1c2VycyB3aG8gaGF2ZSBhY2Nlc3MgdG8gYSByb2xlLlxuICAgKi9cbiAgbGlzdFJvbGVVc2Vyczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIFVzZXJcbiAgICpcbiAgICogUmVtb3ZlcyBhbiBleGlzdGluZyB1c2VyIGZyb20gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICpcbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvcmcgb3duZXJzIGNhbiByZW1vdmUgdXNlcnMgZnJvbSBhIHJvbGUuXG4gICAqIEFkZGl0aW9uYWxseSwgdGhlIHJvbGUncyBlZGl0IHBvbGljeSAoaWYgc2V0KSBtdXN0IHBlcm1pdCB0aGUgdXBkYXRlLlxuICAgKi9cbiAgcmVtb3ZlVXNlckZyb21Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSGlnaC1sZXZlbCBSUEMgZW5kcG9pbnQuXG4gICAqIEBkZXNjcmlwdGlvbiBIaWdoLWxldmVsIFJQQyBlbmRwb2ludC5cbiAgICovXG4gIHJwY0FwaToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJKc29uUnBjUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkpzb25ScGNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHNlc3Npb25zXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IHNlc3Npb25zXG4gICAqXG4gICAqIElmIG5vIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLCBhbGwgYWN0aXZlIHNlc3Npb25zIGZvciB0aGUgY3VycmVudCB1c2VyIGFyZSByZXR1cm5lZC5cbiAgICpcbiAgICogSWYgYSBgcm9sZWAgcXVlcnkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCBhbGwgYWN0aXZlIHNlc3Npb25zIGZvciB0aGUgc2VsZWN0ZWQgcm9sZSBhcmUgcmV0dXJuZWRcbiAgICogKGFzc2VydGluZyBmaXJzdCB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaGFzIHBlcm1pc3Npb25zIHRvIHJlYWQgc2Vzc2lvbnMgZm9yIHRoYXQgcm9sZSkuXG4gICAqL1xuICBsaXN0U2Vzc2lvbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIG5hbWUgb3IgSUQgb2YgYSByb2xlIHRvIG9wZXJhdGUgb24uXG4gICAgICAgICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgdXNlcmAuXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUgSUQgb2YgYSB1c2VyIHRvIG9wZXJhdGUgb24uXG4gICAgICAgICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgcm9sZWAuXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgdXNlciBzZXNzaW9uLCBzaWxlbnRseSB0cnVuY2F0aW5nIHJlcXVlc3RlZCBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lcyB0byBiZSBhdFxuICAgKiBtb3N0IHJlcXVlc3RvcidzIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWUsIHJlc3BlY3RpdmVseS4gVG8gZXh0ZW5kIHRoZSByZXF1ZXN0ZWQgbGlmZXRpbWVzIHBhc3RcbiAgICogdGhlIHJlcXVlc3RvcidzLCBzZXQgdGhlIGBleHRlbmRfbGlmZXRpbWVzYCBmbGFnIGluIHRoZSByZXF1ZXN0IGJvZHkgKGluIHdoaWNoIGNhc2UgTUZBIHdpbGxcbiAgICogYmUgcmVxdWlyZWQpLlxuICAgKi9cbiAgY3JlYXRlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVTZXNzaW9uUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgQUxMIGV4aXN0aW5nIHVzZXIgb3Igcm9sZSBzZXNzaW9uKHMpXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgZXhpc3Rpbmcgc2Vzc2lvbnMsIHByZXZlbnRpbmcgdGhlbSBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkLlxuICAgKlxuICAgKiBJZiBubyBxdWVyeSBwYXJhbXMgYXJlIHByb3ZpZGVkLCAqKkFMTCoqIHNlc3Npb25zIGZvciB0aGUgKipDVVJSRU5UIFVTRVIqKiBhcmUgcmV2b2tlZFxuICAgKiAodG8gcmV2b2tlIGp1c3QgdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uLCB1c2UgYERFTEVURSAvdjAvb3JnLzxvcmdfaWQ+L3Nlc3Npb24vc2VsZmApXG4gICAqXG4gICAqIElmIGEgYHJvbGVgIHF1ZXJ5IHBhcmFtZXRlciBpcyBwcm92aWRlZCwgKipBTEwqKiBzZXNzaW9uIGZvciAqKlRIQVQgUk9MRSoqIGFyZSByZXZva2VkXG4gICAqIChpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9ucyB0byByZXZva2Ugc2Vzc2lvbnMgZm9yIHRoZSByb2xlKS5cbiAgICovXG4gIHJldm9rZVNlc3Npb25zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBuYW1lIG9yIElEIG9mIGEgcm9sZSB0byBvcGVyYXRlIG9uLlxuICAgICAgICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYHVzZXJgLlxuICAgICAgICAgKiBAZXhhbXBsZSBteS1yb2xlXG4gICAgICAgICAqL1xuICAgICAgICByb2xlPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIElEIG9mIGEgdXNlciB0byBvcGVyYXRlIG9uLlxuICAgICAgICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYHJvbGVgLlxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcj86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAqL1xuICByZXZva2VDdXJyZW50U2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgKiBAZGVzY3JpcHRpb24gR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICovXG4gIGdldFNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIGdldCBvciAnc2VsZicgZm9yIGN1cnJlbnQgc2Vzc2lvblxuICAgICAgICAgKiBAZXhhbXBsZSAxYzBkODUzZC1jMTVmLTQyZGMtYTgyYy05ODc0ZTU4OWJjNzVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25JbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBhIHNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBhIHNlc3Npb25cbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBhbiBleGlzdGluZyBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICovXG4gIHJldm9rZVNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIHJldm9rZVxuICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTZXNzaW9uSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAqXG4gICAqIFNpZ25zIGEgU29sYW5hIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBzb2xhbmFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBiYXNlNTgtZW5jb2RlZCBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDg2WlJQc3pCcDVFb1BqN3dSM2JIbjd3bkFaNWlZZnBhc1JjN0RLRlBUVWFaXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTb2xhbmFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBhIHNlcmlhbGl6ZWQgU1VJIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIHN1aVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgU1VJIGtleSBhZGRyZXNzXG4gICAgICAgICAqIEBleGFtcGxlIDB4ZGQ2OGQzNWE3NzhkYjFlMzEyM2M5NTBlNWRiNTM2MTMzM2Y1NzczM2E3NzQ4NmE3MDRkZDhjOTk0ZDk2NzYxZFxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3VpU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gYSB0ZW5kZXJtaW50IG1lc3NhZ2UuXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIGEgdGVuZGVybWludCBtZXNzYWdlLlxuICAgKlxuICAgKiBTaWducyB0aGUgZ2l2ZW4gYmFzZS02NCBlbmNvZGVkIHZvdGUgb3IgcHJvcG9zYWwgd2l0aCB0aGUgZ2l2ZW4gdGVuZGVybWludCBrZXkuXG4gICAqL1xuICB0ZW5kZXJtaW50U2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgcHVibGljIGtleSB3aXRoIDB4IHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSAweDdkOGQzNDRlNmU1MzE1MTY5MmZhNzhhMDk4NjMwNzk5OTQ2YWQ0ZDZhMDI3YWU2YmNkN2E3OGRjNzgyODE2NTBcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRlbmRlcm1pbnRTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqXG4gICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IGEgdXNlciBvciByb2xlIHNlc3Npb24gY2FuIGFjY2Vzcy5cbiAgICovXG4gIGxpc3RUb2tlbktleXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvc1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVc2VyIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGFib3V0TWU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VySW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqL1xuICB1c2VyUmVzZXRFbWFpbEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1haWxSZXNldFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbWFpbE90cFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIGEgUmVzZXQgVmVyaWZpZWQgRW1haWwgRmxvd1xuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBSZXNldCBWZXJpZmllZCBFbWFpbCBGbG93XG4gICAqL1xuICB1c2VyUmVzZXRFbWFpbENvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtYWlsT3RwQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICovXG4gIHVzZXJFeHBvcnRMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSB1c2VyLWlkIHdob3NlIHVzZXItZXhwb3J0IHJlcXVlc3RzIHRvIGxpc3QuIERlZmF1bHRzIHRvIHRoZVxuICAgICAgICAgKiBjdXJyZW50IHVzZXIuICBPbmx5IHRoZSBvcmcgb3duZXIgbWF5IGxpc3QgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUga2V5LWlkIGZvciB3aGljaCB0byBsaXN0IGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIHN0YXJ0cyBhIGRlbGF5ICh3aG9zZSBsZW5ndGggaXMgZGV0ZXJtaW5lZCBieSBPcmctd2lkZSBzZXR0aW5ncylcbiAgICogYmVmb3JlIGV4cG9ydCBjYW4gYmUgY29tcGxldGVkLCBhbmQgcmV0dXJucyBhIHRpY2tldCB0aGF0IGNhbiBiZSB1c2VkXG4gICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAqXG4gICAqIE9ubHkgb25lIHVzZXItZXhwb3J0IHJlcXVlc3QgY2FuIGJlIGFjdGl2ZSBmb3IgYSBnaXZlbiBrZXkuIElmIHRoZXJlXG4gICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICogY3JlYXRlIGEgbmV3IHJlcXVlc3QsIGZpcnN0IGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICAgKi9cbiAgdXNlckV4cG9ydEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqL1xuICB1c2VyRXhwb3J0RGVsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIHdob3NlIGV4cG9ydCByZXF1ZXN0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHdobyBvd25zIHRoaXMgcmVxdWVzdC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgICAgICogT25seSB0aGUgb3JnIG93bmVyIG1heSBkZWxldGUgdXNlci1leHBvcnQgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICogdGhlIGB1c2VyX2V4cG9ydF9pbml0YCBBUEksIGFuZCBvbmx5IHdpdGhpbiB0aGUgc3Vic2VxdWVudCBleHBvcnQgd2luZG93XG4gICAqIChpLmUuLCBhZnRlciB0aGUgZXhwb3J0IGRlbGF5IGhhcyBwYXNzZWQgYW5kIGJlZm9yZSB0aGUgcmVxdWVzdCBoYXMgZXhwaXJlZCkuXG4gICAqXG4gICAqIFRvIGNoZWNrIG9uIHRoZSBzdGF0dXMgb2YgYW4gZXhwb3J0IHJlcXVlc3QsIHNlZSB0aGUgYHVzZXJfZXhwb3J0X2xpc3RgIEFQSS5cbiAgICovXG4gIHVzZXJFeHBvcnRDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0Q29tcGxldGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5LlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXkuXG4gICAqXG4gICAqIElmIGEgZGlzY292ZXJhYmxlIGtleSBpcyByZXF1ZXN0ZWQsIHVzZXIgdmVyaWZpY2F0aW9uIChQSU4pIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleS5cbiAgICovXG4gIHVzZXJSZWdpc3RlckZpZG9Jbml0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHVzZXJSZWdpc3RlckZpZG9Db21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBGSURPIGtleVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEZJRE8ga2V5XG4gICAqXG4gICAqIERlbGV0ZXMgYSBGSURPIGtleSBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgdGhlIGtleSBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyRGVsZXRlRmlkbzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIEZpZG9LZXlcbiAgICAgICAgICogQGV4YW1wbGUgRmlkb0tleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGZpZG9faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBUT1RQXG4gICAqXG4gICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyRGVsZXRlVG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cENoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAqL1xuICB1c2VyVmVyaWZ5VG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIElmIGEgcXVlcnkgaXMgZGVmaW5lZCwgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gb25seSB0aGUgdXNlcnMgd2hvc2UgbmFtZSBvclxuICAgKiBlbWFpbCBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcuIE5PVEUgdGhhdCBpZiBwYWdpbmF0aW9uIGlzIHVzZWQgYW5kIGEgcGFnZVxuICAgKiBsaW1pdCBpcyBzZXQsIHRoZSByZXR1cm5lZCByZXN1bHQgc2V0IG1heSBjb250YWluIEZFV0VSIGVsZW1lbnRzIHRoYW4gdGhlXG4gICAqIHJlcXVlc3RlZCBwYWdlIGxpbWl0LlxuICAgKi9cbiAgbGlzdFVzZXJzSW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHF1ZXJ5IHN0cmluZy4gSWYgZGVmaW5lZCwgYWxsIHJldHVybmVkIHVzZXJzIHdpbGwgY29udGFpbiB0aGlzIHN0cmluZyBpbiB0aGVpciBuYW1lIG9yIGVtYWlsLiAqL1xuICAgICAgICBxPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRHZXRVc2Vyc0luT3JnUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICovXG4gIGNyZWF0ZU9pZGNVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZFRoaXJkUGFydHlVc2VyUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IHVzZXIgYnkgZW1haWwuXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBlbWFpbC5cbiAgICpcbiAgICogVGhlIHNlYXJjaCBpbmNsdWRlcyBhbGwgdXNlcnMgYW5kIHRoZWlyIHRoaXJkLXBhcnR5IGlkZW50aXRpZXMuXG4gICAqL1xuICBnZXRVc2VySW5PcmdCeUVtYWlsOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBlbWFpbCBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIuICovXG4gICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJHZXRVc2VyQnlFbWFpbFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgKi9cbiAgZGVsZXRlT2lkY1VzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT2lkY0lkZW50aXR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBhIHVzZXIgYnkgdGhlaXIgT0lEQyBpZGVudGl0eVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IGEgdXNlciBieSB0aGVpciBPSURDIGlkZW50aXR5XG4gICAqXG4gICAqIFJldHJpZXZlcyBhIHVzZXIgaW4gdGhlIG9yZ2FuaXphdGlvbiBieSB0aGVpciBPSURDIGlzc3VlciBhbmQgc3ViamVjdC5cbiAgICovXG4gIGdldFVzZXJJbk9yZ0J5T2lkYzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgT0lEQyBpc3N1ZXIuICovXG4gICAgICAgIGlzczogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBPSURDIHN1YmplY3QuICovXG4gICAgICAgIHN1Yjogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiR2V0VXNlckJ5T2lkY1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIE1GQSByZXNldCBmb3IgdXNlclxuICAgKi9cbiAgcmVzZXRNZW1iZXJNZmE6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVzZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIE1GQSByZXNldCBmb3IgdXNlclxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgTUZBIHJlc2V0IGZvciB1c2VyXG4gICAqL1xuICBjb21wbGV0ZVJlc2V0TWVtYmVyTWZhOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbXBsZXRlTWZhUmVzZXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCB1c2VyIGJ5IGlkXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgdXNlciBieSBpZFxuICAgKi9cbiAgZ2V0VXNlckluT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVtb3ZlIGEgdXNlciBmcm9tIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBhIHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqL1xuICBkZWxldGVVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgYSB1c2VyJ3MgbWVtYmVyc2hpcCBpbiB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgYSB1c2VyJ3MgbWVtYmVyc2hpcCBpbiB0aGUgb3JnXG4gICAqXG4gICAqIEVuYWJsZS9kaXNhYmxlIGFub3RoZXIgdXNlciBpbiB0aGUgb3JnLCBvciBjaGFuZ2UgdGhlaXIgbWVtYmVyc2hpcCByb2xlLlxuICAgKi9cbiAgdXBkYXRlVXNlck1lbWJlcnNoaXA6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgVXNlclxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZVVzZXJNZW1iZXJzaGlwUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVzZXJJbk9yZ0luZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBMb2dpbiB3aXRoIFBhc3NrZXlcbiAgICpcbiAgICogVGhlIHJlc3BvbnNlIGNvbnRhaW5zIGEgRklETyBjaGFsbGVuZ2UgdGhhdCB0aGUgY2xpZW50IG11c3QgYW5zd2VyIHdpdGggYW55IG9mIHRoZWlyXG4gICAqIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFscy4gIFRoZSBhbnN3ZXIgc2hvdWxkIGJlIHN1Ym1pdHRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIFBBVENIIHJlcXVlc3QuXG4gICAqL1xuICBwYXNza2V5QXV0aEluaXQ6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMb2dpblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIExvZ2luIHdpdGggUGFzc2tleVxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgTG9naW4gd2l0aCBQYXNza2V5XG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IHNob3VsZCBjb250YWluIGFuIGFuc3dlciB0byB0aGUgY2hhbGxlbmdlIGlzc3VlZCBieSB0aGUgY29ycmVzcG9uZGluZyBQT1NUIHJlcXVlc3QuXG4gICAqIFRoZSBjaGFsbGVuZ2UgbWF5IGJlIGFuc3dlcmVkIHdpdGggYW55IG9mIHRoZSB1c2VyJ3MgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzOyBpZiB0aGUgY3JlZGVudGlhbFxuICAgKiBpbmNsdWRlZCBpbiB0aGUgYW5zd2VyIGlzIHJlZ2lzdGVyZWQgd2l0aCBhIHVzZXIgYW5kIGFuIG9yZ2FuaXphdGlvbiwgdGhlIHJlc3BvbnNlIHdpbGwgY29udGFpblxuICAgKiBhIEN1YmVTaWduZXIgc2Vzc2lvbiAod2l0aCB0aGUgcGFyYW1ldGVycyBzdXBwbGllZCBpbiB0aGUgcHJldmlvdXMgUE9TVCByZXF1ZXN0KSBmb3IgdGhhdCB1c2VyXG4gICAqIGluIHRoYXQgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgcGFzc2tleUF1dGhDb21wbGV0ZToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBhc3NrZXlBc3NlcnRBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb2AgaW5zdGVhZC5cbiAgICpcbiAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICovXG4gIHJlZ2lzdGVyRmlkb0luaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUEFUQ0ggL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG9gIGluc3RlYWQuXG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZWdpc3RlckZpZG9Db21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogREVQUkVDQVRFRC4gVXNlIGBQT1NUIC92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAqXG4gICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlc2V0VG90cEluaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUEFUQ0ggL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHBgIGluc3RlYWQuXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZXNldFRvdHBDb21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVmVyaWZ5IFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAqXG4gICAqIERFUFJFQ0FURUQuIFVzZSBgUE9TVCAvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cC92ZXJpZnlgIGluc3RlYWQuXG4gICAqXG4gICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgKi9cbiAgdmVyaWZ5VG90cExlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYWxsIHRoZSBvcmdzIHRoZSB1c2VyIGlzIGEgcGFydCBvZlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCB0aGUgb3JncyB0aGUgdXNlciBpcyBhIHBhcnQgb2ZcbiAgICovXG4gIHVzZXJPcmdzOiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VyT3Jnc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQmluYW5jZSBSUEMgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBCaW5hbmNlIFJQQyBSZXF1ZXN0XG4gICAqXG4gICAqIFNpZ25zIGEgdHlwZWQgW2BCaW5hbmNlUnBjYF0gcmVxdWVzdCB3aXRoIHRoZSBbYEtleVR5cGU6OkVkMjU1MTlCaW5hbmNlQXBpYF1cbiAgICoga2V5IGlkZW50aWZpZWQgYnkgYG1hdGVyaWFsX2lkYC4gVGhlIHNpZ25lciBVUkwtZW5jb2RlcyB0aGUgaW5uZXIgcmVxdWVzdCxcbiAgICogYXBwZW5kcyBCaW5hbmNlJ3MgYHJlY3ZXaW5kb3dgIGFuZCBgdGltZXN0YW1wYCBwYXJhbWV0ZXJzLCBzaWducyB0aGVcbiAgICogcmVzdWx0aW5nIHF1ZXJ5LCBhbmQgcmV0dXJucyB0aGUgZnVsbCBxdWVyeSBzdHJpbmcgcmVhZHkgdG8gYmUgc3VibWl0dGVkXG4gICAqIHRvIEJpbmFuY2UuXG4gICAqL1xuICBiaW5hbmNlU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNYXRlcmlhbCBpZCBvZiB0aGUgRWQyNTUxOUJpbmFuY2VBcGkga2V5ICovXG4gICAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmluYW5jZVJwY1wiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJpbmFuY2VTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gUmF3IEJsb2JcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gUmF3IEJsb2JcbiAgICpcbiAgICogU2lnbnMgYW4gYXJiaXRyYXJ5IGJsb2Igd2l0aCBhIGdpdmVuIGtleS5cbiAgICpcbiAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgKlxuICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICpcbiAgICogLSBCTFMgc2lnbmF0dXJlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGUgYmxvYi1zaWduIGVuZHBvaW50LlxuICAgKi9cbiAgYmxvYlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJsb2JTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVjb3JkIGhlYXJ0YmVhdFxuICAgKiBAZGVzY3JpcHRpb24gUmVjb3JkIGhlYXJ0YmVhdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGlzIGNhbGxlZCBieSB0aGUgY3ViZTNzaWduZXIgcHJveHkgdG8gcmVjb3JkIHZhcmlvdXMgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICAgKi9cbiAgY3ViZTNzaWduZXJIZWFydGJlYXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhlYXJ0YmVhdFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhbiBFdGhlcmV1bSAoYW5kIG90aGVyIEVWTSkgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqIFJldHVybnMgYW4gUkxQLWVuY29kZWQgdHJhbnNhY3Rpb24gd2l0aCBFSVAtMTU1IHNpZ25hdHVyZS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBldGhlcmV1bSBhZGRyZXNzIG9mIHRoZSBzZWNwIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV0aDFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkV0aDFTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICpcbiAgICogU2lnbnMgYW4gZXRoMiB2YWxpZGF0b3IgcmVxdWVzdCB3aXRoIGEgZ2l2ZW4gQkxTIGtleS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgyU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgKEJMUykgcHVibGljIGtleSB3aXRoIDB4IHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSAweDk3MDBmYmI4YzkwNjk0MjQ0MmMyYTViM2FkNzQ5OGYyN2FlZGRhMjUzNzg2YTZmYmFhOGZlZjQ3ZmI3YWYyMzRlNTBjZjJjY2U4MTVhNTUzMDg3OTkyYWU1NjVkNDhkYVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXRoMlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgKlxuICAgKiBTaWducyBhIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2l0aCBhIGB2YWxpZGF0b3Jfa2V5YC4gSWYgYHZhbGlkYXRvcl9rZXlgIGlzIHNldCB0byBhIHByZWdlbmVyYXRlZCBrZXksIHdlIHVzZSB0aGVcbiAgICogcHJvdmlkZWQgdmFsaWRhdG9yIGtleS4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhIG5ldyBCTFMga2V5LlxuICAgKlxuICAgKiBXaGVuIHVzaW5nIGEgcHJlZ2VuZXJhdGVkIGtleSwgdGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlXG4gICAqIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBzdGFrZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGFrZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTdGFrZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICpcbiAgICogSGFuZGxlIHVuc3Rha2luZyByZXF1ZXN0LCBwcm9kdWNpbmcgYSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZVxuICAgKiB0aGF0IGNhbiBiZSBwb3N0ZWQgZGlyZWN0bHkgdG8gdGhlIEJlYWNvbiBjaGFpbi5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICB1bnN0YWtlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHZhbGlkYXRvciAoQkxTKSBwdWJsaWMga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4YTk5YTc2ZWQ3Nzk2ZjdiZTIyZDViN2U4NWRlZWI3YzU2NzdlODhlNTExZTBiMzM3NjE4ZjhjNGViNjEzNDliNGJmMmQxNTNmNjQ5ZjdiNTMzNTlmZThiOTRhMzhlNDRjXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbnN0YWtlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVuc3Rha2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgKi9cbiAgc2lnbmVyU2Vzc2lvblJlZnJlc2g6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIG9yZ2FuaXphdGlvbiBvd25pbmcgdGhlIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoRGF0YVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXX0=