testcafe 2.3.1 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/LICENSE +1 -1
  3. package/README.md +40 -46
  4. package/bin/testcafe-with-v8-flag-filter.js +10 -16
  5. package/lib/api/exportable-lib/index.js +1 -11
  6. package/lib/api/structure/test.js +4 -11
  7. package/lib/api/test-controller/execution-context.js +4 -2
  8. package/lib/api/test-controller/index.js +8 -10
  9. package/lib/api/test-run-tracker.js +1 -1
  10. package/lib/assertions/executor.js +2 -11
  11. package/lib/browser/connection/gateway/index.js +272 -0
  12. package/lib/browser/connection/gateway/status.js +10 -0
  13. package/lib/browser/connection/index.js +60 -47
  14. package/lib/browser/connection/service-routes.js +4 -2
  15. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +3 -2
  16. package/lib/browser/provider/built-in/dedicated/chrome/index.js +48 -23
  17. package/lib/browser/provider/built-in/dedicated/edge/index.js +4 -1
  18. package/lib/browser/provider/index.js +13 -4
  19. package/lib/browser/provider/plugin-host.js +7 -1
  20. package/lib/cli/argument-parser/index.js +10 -16
  21. package/lib/cli/cli.js +4 -13
  22. package/lib/cli/remotes-wizard.js +2 -1
  23. package/lib/cli/utils/should-move-option-to-end.js +17 -0
  24. package/lib/client/automation/deps/hammerhead.js +24 -0
  25. package/lib/client/automation/deps/testcafe-core.js +24 -0
  26. package/lib/client/automation/index.js +567 -187
  27. package/lib/client/automation/index.min.js +1 -1
  28. package/lib/client/automation/playback/press/get-key-info.js +44 -0
  29. package/lib/client/automation/playback/press/utils.js +142 -0
  30. package/lib/client/automation/utils/get-key-code.js +15 -0
  31. package/lib/client/automation/utils/get-key-identifier.js +14 -0
  32. package/lib/client/automation/utils/is-letter.js +7 -0
  33. package/lib/client/automation/utils/key-identifier-maps.js +93 -0
  34. package/lib/client/browser/idle-page/index.html.mustache +2 -2
  35. package/lib/client/browser/idle-page/index.js +24 -11
  36. package/lib/client/core/index.js +67 -13
  37. package/lib/client/core/index.min.js +1 -1
  38. package/lib/client/core/utils/array.js +77 -0
  39. package/lib/client/core/utils/dom.js +459 -0
  40. package/lib/client/core/utils/send-request-to-frame.js +22 -0
  41. package/lib/client/core/utils/style.js +102 -0
  42. package/lib/client/core/utils/values/boundary-values.js +41 -0
  43. package/lib/client/driver/index.js +270 -242
  44. package/lib/client/driver/index.min.js +1 -1
  45. package/lib/client/test-run/iframe.js.mustache +6 -6
  46. package/lib/client/test-run/index.js.mustache +37 -33
  47. package/lib/client/ui/index.js +3238 -54
  48. package/lib/client/ui/index.min.js +1 -1
  49. package/lib/client/ui/sprite.svg +15 -0
  50. package/lib/client/ui/styles.css +184 -41
  51. package/lib/compiler/babel/load-libs.js +6 -6
  52. package/lib/compiler/compilers.js +7 -7
  53. package/lib/compiler/index.js +6 -6
  54. package/lib/compiler/interfaces.js +1 -1
  55. package/lib/compiler/test-file/add-export-api.js +3 -3
  56. package/lib/compiler/test-file/api-based.js +8 -37
  57. package/lib/compiler/test-file/formats/es-next/compiler.js +5 -5
  58. package/lib/compiler/test-file/formats/typescript/compiler.js +9 -9
  59. package/lib/compiler/test-file/get-exportable-lib-path.js +3 -3
  60. package/lib/configuration/configuration-base.js +9 -6
  61. package/lib/configuration/default-values.js +3 -3
  62. package/lib/configuration/formats.js +9 -5
  63. package/lib/configuration/interfaces.js +1 -1
  64. package/lib/configuration/option-names.js +3 -4
  65. package/lib/configuration/run-option-names.js +2 -2
  66. package/lib/configuration/testcafe-configuration.js +41 -24
  67. package/lib/configuration/types.js +1 -1
  68. package/lib/configuration/utils.js +32 -0
  69. package/lib/custom-client-scripts/client-script.js +2 -2
  70. package/lib/custom-client-scripts/get-code.js +3 -3
  71. package/lib/custom-client-scripts/routing.js +10 -12
  72. package/lib/errors/runtime/templates.js +3 -2
  73. package/lib/errors/test-run/templates.js +4 -1
  74. package/lib/errors/types.js +3 -1
  75. package/lib/index.js +6 -31
  76. package/lib/live/bootstrapper.js +3 -3
  77. package/lib/live/test-runner.js +9 -7
  78. package/lib/native-automation/add-custom-debug-formatters.js +23 -0
  79. package/lib/native-automation/api-base.js +27 -0
  80. package/lib/native-automation/client/event-descriptor.js +118 -0
  81. package/lib/native-automation/client/input.js +46 -0
  82. package/lib/native-automation/client/key-press/utils.js +31 -0
  83. package/lib/native-automation/client/types.js +11 -0
  84. package/lib/native-automation/client/utils.js +54 -0
  85. package/lib/native-automation/cookie-provider.js +115 -0
  86. package/lib/native-automation/empty-page-markup.js +11 -0
  87. package/lib/native-automation/error-route.js +7 -0
  88. package/lib/native-automation/errors.js +20 -0
  89. package/lib/native-automation/index.js +53 -0
  90. package/lib/native-automation/request-hooks/event-factory/frame-navigated-event-based.js +40 -0
  91. package/lib/native-automation/request-hooks/event-factory/request-paused-event-based.js +94 -0
  92. package/lib/native-automation/request-hooks/event-provider.js +55 -0
  93. package/lib/native-automation/request-hooks/pipeline-context.js +11 -0
  94. package/lib/{proxyless → native-automation}/request-pipeline/constants.js +1 -1
  95. package/lib/native-automation/request-pipeline/context-info.js +58 -0
  96. package/lib/native-automation/request-pipeline/index.js +329 -0
  97. package/lib/native-automation/request-pipeline/resendAuthRequest.js +23 -0
  98. package/lib/native-automation/request-pipeline/safe-api.js +66 -0
  99. package/lib/native-automation/request-pipeline/special-handlers.js +76 -0
  100. package/lib/native-automation/request-pipeline/test-run-bridge.js +45 -0
  101. package/lib/native-automation/resource-injector.js +175 -0
  102. package/lib/native-automation/session-storage/index.js +43 -0
  103. package/lib/native-automation/storages-provider.js +17 -0
  104. package/lib/native-automation/types.js +12 -0
  105. package/lib/native-automation/utils/cdp.js +71 -0
  106. package/lib/native-automation/utils/convert.js +11 -0
  107. package/lib/native-automation/utils/get-active-client.js +8 -0
  108. package/lib/native-automation/utils/headers.js +30 -0
  109. package/lib/native-automation/utils/string.js +32 -0
  110. package/lib/reporter/index.js +52 -4
  111. package/lib/reporter/interfaces.js +1 -1
  112. package/lib/reporter/plugin-host.js +44 -4
  113. package/lib/reporter/plugin-methods.js +2 -1
  114. package/lib/reporter/report-data-log.js +25 -0
  115. package/lib/role/role.js +4 -39
  116. package/lib/runner/bootstrapper.js +40 -15
  117. package/lib/runner/browser-job.js +4 -5
  118. package/lib/runner/fixture-hook-controller.js +1 -7
  119. package/lib/runner/index.js +87 -94
  120. package/lib/runner/interfaces.js +1 -1
  121. package/lib/runner/task/index.js +2 -32
  122. package/lib/runner/test-run-controller.js +46 -4
  123. package/lib/shared/errors/index.js +8 -2
  124. package/lib/shared/utils/is-file-protocol.js +2 -2
  125. package/lib/test-run/bookmark.js +5 -23
  126. package/lib/test-run/commands/actions.js +16 -4
  127. package/lib/test-run/commands/service.js +2 -3
  128. package/lib/test-run/commands/type.js +2 -1
  129. package/lib/test-run/commands/utils.js +4 -2
  130. package/lib/test-run/cookies/base.js +4 -1
  131. package/lib/test-run/cookies/factory.js +4 -4
  132. package/lib/test-run/cookies/provider.js +9 -2
  133. package/lib/test-run/execute-js-expression/index.js +4 -2
  134. package/lib/test-run/index.js +35 -151
  135. package/lib/test-run/request/create-request-options.js +37 -24
  136. package/lib/test-run/request/send.js +2 -3
  137. package/lib/test-run/role-provider.js +5 -5
  138. package/lib/test-run/session-controller.js +5 -5
  139. package/lib/test-run/storages/factory.js +4 -4
  140. package/lib/testcafe.js +17 -18
  141. package/lib/utils/check-is-vm.js +58 -0
  142. package/lib/utils/debug-loggers.js +9 -7
  143. package/lib/utils/get-browser.js +5 -2
  144. package/lib/utils/get-options/boolean-or-object-option.js +18 -0
  145. package/lib/utils/get-options/quarantine.js +10 -13
  146. package/lib/utils/get-options/skip-js-errors.js +12 -16
  147. package/lib/utils/parse-user-agent.js +20 -13
  148. package/lib/utils/string.js +1 -1
  149. package/package.json +14 -11
  150. package/ts-defs/index.d.ts +12 -2
  151. package/ts-defs/selectors.d.ts +8 -1
  152. package/ts-defs/testcafe-scripts.d.ts +8 -1
  153. package/lib/browser/connection/gateway.js +0 -205
  154. package/lib/compiler/test-file/test-file-temp-variable-name.js +0 -6
  155. package/lib/dashboard/config-storage.js +0 -26
  156. package/lib/dashboard/connector.js +0 -84
  157. package/lib/dashboard/documentation-url.js +0 -6
  158. package/lib/dashboard/formatting.js +0 -26
  159. package/lib/dashboard/get-dashboard-url.js +0 -10
  160. package/lib/dashboard/get-default-project-link.js +0 -23
  161. package/lib/dashboard/get-env-options.js +0 -26
  162. package/lib/dashboard/index.js +0 -145
  163. package/lib/dashboard/interfaces.js +0 -3
  164. package/lib/dashboard/messages.js +0 -21
  165. package/lib/proxyless/add-custom-debug-formatters.js +0 -22
  166. package/lib/proxyless/api-base.js +0 -25
  167. package/lib/proxyless/client/event-simulator.js +0 -40
  168. package/lib/proxyless/client/types.js +0 -11
  169. package/lib/proxyless/client/utils.js +0 -24
  170. package/lib/proxyless/cookie-provider.js +0 -87
  171. package/lib/proxyless/default-setup-options.js +0 -9
  172. package/lib/proxyless/empty-page-markup.js +0 -11
  173. package/lib/proxyless/error-route.js +0 -7
  174. package/lib/proxyless/index.js +0 -53
  175. package/lib/proxyless/request-hooks/event-factory/frame-navigated-event-based.js +0 -40
  176. package/lib/proxyless/request-hooks/event-factory/request-paused-event-based.js +0 -95
  177. package/lib/proxyless/request-hooks/event-provider.js +0 -52
  178. package/lib/proxyless/request-hooks/pipeline-context.js +0 -11
  179. package/lib/proxyless/request-pipeline/context-info.js +0 -55
  180. package/lib/proxyless/request-pipeline/index.js +0 -230
  181. package/lib/proxyless/request-pipeline/resendAuthRequest.js +0 -23
  182. package/lib/proxyless/request-pipeline/safe-api.js +0 -62
  183. package/lib/proxyless/request-pipeline/special-handlers.js +0 -73
  184. package/lib/proxyless/request-pipeline/test-run-bridge.js +0 -45
  185. package/lib/proxyless/resource-injector.js +0 -162
  186. package/lib/proxyless/session-storage/index.js +0 -39
  187. package/lib/proxyless/storages-provider.js +0 -17
  188. package/lib/proxyless/types.js +0 -10
  189. package/lib/proxyless/utils/cdp.js +0 -66
  190. package/lib/proxyless/utils/get-active-client.js +0 -8
  191. package/lib/proxyless/utils/headers.js +0 -30
  192. package/lib/proxyless/utils/string.js +0 -32
  193. package/lib/services/compiler/esm-runtime-holder-name.js +0 -6
  194. package/lib/services/compiler/host.js +0 -370
  195. package/lib/services/compiler/interfaces.js +0 -3
  196. package/lib/services/compiler/io.js +0 -10
  197. package/lib/services/compiler/protocol.js +0 -17
  198. package/lib/services/compiler/service-loader.js +0 -18
  199. package/lib/services/compiler/service.js +0 -361
  200. package/lib/services/compiler/test-run-proxy.js +0 -156
  201. package/lib/services/interfaces.js +0 -3
  202. package/lib/services/process-title.js +0 -10
  203. package/lib/services/serialization/prepare-options.js +0 -23
  204. package/lib/services/serialization/replicator/create-replicator.js +0 -58
  205. package/lib/services/serialization/replicator/interfaces.js +0 -3
  206. package/lib/services/serialization/replicator/transforms/base-transform.js +0 -16
  207. package/lib/services/serialization/replicator/transforms/browser-console-messages-transform.js +0 -23
  208. package/lib/services/serialization/replicator/transforms/callsite-record-transform.js +0 -24
  209. package/lib/services/serialization/replicator/transforms/command-base-trasform/assertion-command-constructors.js +0 -28
  210. package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +0 -66
  211. package/lib/services/serialization/replicator/transforms/command-base-trasform/index.js +0 -49
  212. package/lib/services/serialization/replicator/transforms/command-base-trasform/types.js +0 -3
  213. package/lib/services/serialization/replicator/transforms/configure-response-event-option-transform.js +0 -21
  214. package/lib/services/serialization/replicator/transforms/custom-error-transform.js +0 -29
  215. package/lib/services/serialization/replicator/transforms/function-marker-transform/index.js +0 -21
  216. package/lib/services/serialization/replicator/transforms/function-marker-transform/marker.js +0 -9
  217. package/lib/services/serialization/replicator/transforms/promise-marker-transform/index.js +0 -21
  218. package/lib/services/serialization/replicator/transforms/promise-marker-transform/marker.js +0 -9
  219. package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js +0 -22
  220. package/lib/services/serialization/replicator/transforms/re-executable-promise-transform/index.js +0 -22
  221. package/lib/services/serialization/replicator/transforms/re-executable-promise-transform/marker.js +0 -6
  222. package/lib/services/serialization/replicator/transforms/request-filter-rule-transform.js +0 -23
  223. package/lib/services/serialization/replicator/transforms/request-hook-event-data-transform.js +0 -41
  224. package/lib/services/serialization/replicator/transforms/response-mock-transform.js +0 -23
  225. package/lib/services/serialization/replicator/transforms/role-transform.js +0 -21
  226. package/lib/services/serialization/replicator/transforms/testcafe-error-list-transform.js +0 -23
  227. package/lib/services/serialization/replicator/transforms/url-transform.js +0 -23
  228. package/lib/services/serialization/test-structure.js +0 -91
  229. package/lib/services/utils/ipc/interfaces.js +0 -29
  230. package/lib/services/utils/ipc/io.js +0 -109
  231. package/lib/services/utils/ipc/message.js +0 -84
  232. package/lib/services/utils/ipc/packet.js +0 -57
  233. package/lib/services/utils/ipc/proxy.js +0 -94
  234. package/lib/services/utils/ipc/transport.js +0 -65
  235. package/lib/services/utils/method-should-not-be-called-error.js +0 -10
@@ -128,7 +128,8 @@ exports.default = {
128
128
  [types_1.RUNTIME_ERRORS.invalidCommandInJsonCompiler]: `TestCafe terminated the test run. The "{path}" file contains an unknown Chrome User Flow action "{action}". Remove the action to continue. Refer to the following article for the definitive list of supported Chrome User Flow actions: https://testcafe.io/documentation/403998/guides/experimental-capabilities/chrome-replay-support#supported-replay-actions`,
129
129
  [types_1.RUNTIME_ERRORS.invalidCustomActionsOptionType]: `The value of the customActions option does not belong to type Object. Refer to the following article for custom action setup instructions: ${DOCUMENTATION_LINKS.CUSTOM_ACTIONS}`,
130
130
  [types_1.RUNTIME_ERRORS.invalidCustomActionType]: `TestCafe cannot parse the "{actionName}" action, because the action definition is invalid. Format the definition in accordance with the custom actions guide: ${DOCUMENTATION_LINKS.CUSTOM_ACTIONS}`,
131
- [types_1.RUNTIME_ERRORS.cannotImportESMInCommonsJS]: 'Cannot import the {esModule} ECMAScript module from {targetFile}. Use a dynamic import() statement or enable the --experimental-esm CLI flag.',
131
+ [types_1.RUNTIME_ERRORS.cannotImportESMInCommonsJS]: 'Cannot import the {esModule} ECMAScript module from {targetFile}. Use a dynamic import() statement or enable the --esm CLI flag.',
132
+ [types_1.RUNTIME_ERRORS.setNativeAutomationForUnsupportedBrowsers]: 'The "{browser}" do not support the Native Automation mode. Remove the "native automation" option to continue.',
132
133
  };
133
134
  module.exports = exports.default;
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9ycy9ydW50aW1lL3RlbXBsYXRlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsZ0VBQWdFO0FBQ2hFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsZ0VBQWdFOzs7OztBQUVoRSxvQ0FBMEM7QUFDMUMsdUZBQThFO0FBQzlFLCtDQUFpRTtBQUNqRSxpR0FBZ0s7QUFFaEssTUFBTSxtQkFBbUIsR0FBRztJQUN4QixxQkFBcUIsRUFBRSxpR0FBaUc7SUFDeEgsZUFBZSxFQUFRLDhFQUE4RTtJQUNyRyxhQUFhLEVBQVUseUZBQXlGO0lBQ2hILGNBQWMsRUFBUyxxRkFBcUY7Q0FDL0csQ0FBQztBQUVGLGtCQUFlO0lBQ1gsQ0FBQyxzQkFBYyxDQUFDLG1DQUFtQyxDQUFDLEVBQUcseUVBQXlFO0lBQ2hJLENBQUMsc0JBQWMsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLHVGQUF1RjtJQUM5SSxDQUFDLHNCQUFjLENBQUMsbUJBQW1CLENBQUMsRUFBbUIseUlBQXlJO0lBQ2hNLENBQUMsc0JBQWMsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLDhFQUE4RTtJQUNySSxDQUFDLHNCQUFjLENBQUMsbUNBQW1DLENBQUMsRUFBRyxpREFBaUQ7SUFDeEcsQ0FBQyxzQkFBYyxDQUFDLGdDQUFnQyxDQUFDLEVBQU0sbURBQW1EO0lBQzFHLENBQUMsc0JBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFxQiwwR0FBMEc7SUFDakssQ0FBQyxzQkFBYyxDQUFDLHVCQUF1QixDQUFDLEVBQWUsb0RBQW9EO0lBQzNHLENBQUMsc0JBQWMsQ0FBQyxhQUFhLENBQUMsRUFBeUIsbUNBQW1DO0lBQzFGLENBQUMsc0JBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFxQixpRUFBaUU7UUFDakUsZ0NBQWdDO1FBQ2hDLGtCQUFrQjtRQUNsQixrREFBa0Q7UUFDbEQsOERBQThELG1CQUFtQixDQUFD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SUFBSSxDQUFDLCtFQUFpRCxDQUFDLENBQUMsR0FBRztJQUMxUSxDQUFDLHNCQUFjLENBQUMsNEJBQTRCLENBQUMsRUFBb0IsbVdBQW1XO0lBQ3BhLENBQUMsc0JBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFrQiw4SUFBK0ksbUJBQW1CLENBQUMsY0FBZSxFQUFFO0lBQ3JQLENBQUMsc0JBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUF5QixpS0FBa0ssbUJBQW1CLENBQUMsY0FBZSxFQUFFO0lBQ3hRLENBQUMsc0JBQWMsQ0FBQywwQkFBMEIsQ0FBQyxFQUFzQiwrSUFBK0k7Q0FDbk4sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IHRoaXMgZmlsZSBpcyB1c2VkIGJ5IGJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlci5cbi8vIERvIG5vdCB1c2UgYW55IGJyb3dzZXIgb3Igbm9kZS1zcGVjaWZpYyBBUEkhXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uRXJyb3JIaW50IGZyb20gJy4uLy4uL2Jyb3dzZXIvY29ubmVjdGlvbi9lcnJvci1oaW50cyc7XG5pbXBvcnQgeyBnZXRDb25jYXRlbmF0ZWRWYWx1ZXNTdHJpbmcgfSBmcm9tICcuLi8uLi91dGlscy9zdHJpbmcnO1xuaW1wb3J0IHsgU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTLCBTS0lQX0pTX0VSUk9SU19DQUxMQkFDS19XSVRIX09QVElPTlNfT1BUSU9OX05BTUVTIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9za2lwLWpzLWVycm9ycy1vcHRpb24tbmFtZXMnO1xuXG5jb25zdCBET0NVTUVOVEFUSU9OX0xJTktTID0ge1xuICAgIFRFU1RfU09VUkNFX1BBUkFNRVRFUjogJ2h0dHBzOi8vdGVzdGNhZmUuaW8vZG9jdW1lbnRhdGlvbi80MDI2MzkvcmVmZXJlbmNlL2NvbW1hbmQtbGluZS1pbnRlcmZhY2UjZmlsZS1wYXRoZ2xvYi1wYXR0ZXJuJyxcbiAgICBGSUxURVJfU0VUVElOR1M6ICAgICAgICdodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDAyNjM4L3JlZmVyZW5jZS9jb25maWd1cmF0aW9uLWZpbGUjZmlsdGVyJyxcbiAgICBIRUFETEVTU19NT0RFOiAgICAgICAgICdodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDAyODI4L2d1aWRlcy9jb25jZXB0cy9icm93c2VycyN0ZXN0LWluLWhlYWRsZXNzLW1vZGUnLFxuICAgIENVU1RPTV9BQ1RJT05TOiAgICAgICAgJ2h0dHBzOi8vdGVzdGNhZmUuaW8vZG9jdW1lbnRhdGlvbi80MDQxNTAvZ3VpZGVzL2FkdmFuY2VkLWd1aWRlcy9jdXN0b20tdGVzdC1hY3Rpb25zJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90Q3JlYXRlTXVsdGlwbGVMaXZlTW9kZVJ1bm5lcnNdOiAgJ0Nhbm5vdCBsYXVuY2ggbXVsdGlwbGUgbGl2ZSBtb2RlIGluc3RhbmNlcyBvZiB0aGUgVGVzdENhZmUgdGVzdCBydW5uZXIuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90UnVuTGl2ZU1vZGVSdW5uZXJNdWx0aXBsZVRpbWVzXTogJ0Nhbm5vdCBsYXVuY2ggdGhlIHNhbWUgbGl2ZSBtb2RlIGluc3RhbmNlIG9mIHRoZSBUZXN0Q2FmZSB0ZXN0IHJ1bm5lciBtdWx0aXBsZSB0aW1lcy4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5icm93c2VyRGlzY29ubmVjdGVkXTogICAgICAgICAgICAgICAgICAnVGhlIHt1c2VyQWdlbnR9IGJyb3dzZXIgZGlzY29ubmVjdGVkLiBJZiB5b3UgZGlkIG5vdCBjbG9zZSB0aGUgYnJvd3NlciB5b3Vyc2VsZiwgYnJvd3NlciBwZXJmb3JtYW5jZSBvciBuZXR3b3JrIGlzc3VlcyBtYXkgYmUgYXQgZmF1bHQuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90UnVuQWdhaW5zdERpc2Nvbm5lY3RlZEJyb3dzZXJzXTogJ1RoZSBmb2xsb3dpbmcgYnJvd3NlcnMgZGlzY29ubmVjdGVkOiB7dXNlckFnZW50c30uIENhbm5vdCBydW4gZnVydGhlciB0ZXN0cy4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy50ZXN0UnVuUmVxdWVzdEluRGlzY29ubmVjdGVkQnJvd3Nlcl06ICAnXCJ7YnJvd3Nlcn1cIiBkaXNjb25uZWN0ZWQgZHVyaW5nIHRlc3QgZXhlY3V0aW9uLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdEVzdGFibGlzaEJyb3dzZXJDb25uZWN0aW9uXTogICAgICdDYW5ub3QgZXN0YWJsaXNoIG9uZSBvciBtb3JlIGJyb3dzZXIgY29ubmVjdGlvbnMuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90RmluZEJyb3dzZXJdOiAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBmaW5kIHRoZSBicm93c2VyLiBcInticm93c2VyfVwiIGlzIG5laXRoZXIgYSBrbm93biBicm93c2VyIGFsaWFzLCBub3IgYSBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgZmlsZS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5icm93c2VyUHJvdmlkZXJOb3RGb3VuZF06ICAgICAgICAgICAgICAnQ2Fubm90IGZpbmQgdGhlIFwie3Byb3ZpZGVyTmFtZX1cIiBicm93c2VyIHByb3ZpZGVyLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmJyb3dzZXJOb3RTZXRdOiAgICAgICAgICAgICAgICAgICAgICAgICdZb3UgaGF2ZSBub3Qgc3BlY2lmaWVkIGEgYnJvd3Nlci4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy50ZXN0RmlsZXNOb3RGb3VuZF06ICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IGZpbmQgdGVzdCBmaWxlcyBhdCB0aGUgZm9sbG93aW5nIGxvY2F0aW9uOiBcIntjd2R9XCIuXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDaGVjayBwYXR0ZXJucyBmb3IgZXJyb3JzOlxcblxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne3NvdXJjZUxpc3R9XFxuXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvciBsYXVuY2ggVGVzdENhZmUgZnJvbSBhIGRpZmZlcmVudCBkaXJlY3RvcnkuXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc3BlY2lmeSB0ZXN0IGxvY2F0aW9ucywgc2VlICR7RE9DVU1FTlRBVElPTl9MSU5LUy5URVNUX1NPVVJDRV9QQVJBTUVURVJ9LmAsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMubm9UZXN0c1RvUnVuXTogXCJTb3VyY2UgZmlsZXMgZG8gbm90IGNvbnRhaW4gdmFsaWQgJ2ZpeHR1cmUnIGFuZCAndGVzdCcgZGVjbGFyYXRpb25zLlwiLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLm5vVGVzdHNUb1J1bkR1ZUZpbHRlcmluZ106ICdObyB0ZXN0cyBtYXRjaCB5b3VyIGZpbHRlci5cXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFNlZSAke0RPQ1VNRU5UQVRJT05fTElOS1MuRklMVEVSX1NFVFRJTkdTfS5gLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRSZXBvcnRlckZvckFsaWFzXTogICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBcIntuYW1lfVwiIHJlcG9ydGVyIGRvZXMgbm90IGV4aXN0LiBDaGVjayB0aGUgcmVwb3J0ZXIgcGFyYW1ldGVyIGZvciBlcnJvcnMuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMubXVsdGlwbGVTYW1lU3RyZWFtUmVwb3J0ZXJzXTogICAgICAgICAgICAgICAgICAgICAgICAnUmVwb3J0ZXJzIGNhbm5vdCBzaGFyZSBvdXRwdXQgc3RyZWFtcy4gVGhlIGZvbGxvd2luZyByZXBvcnRlcnMgaW50ZXJmZXJlIHdpdGggb25lIGFub3RoZXI6IFwie3JlcG9ydGVyc31cIi4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5vcHRpb25WYWx1ZUlzTm90VmFsaWRSZWdFeHBdOiAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgXCJ7b3B0aW9uTmFtZX1cIiBvcHRpb24gZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbi4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5vcHRpb25WYWx1ZUlzTm90VmFsaWRLZXlWYWx1ZV06ICAgICAgICAgICAgICAgICAgICAgICdUaGUgXCJ7b3B0aW9uTmFtZX1cIiBvcHRpb24gZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIGtleS12YWx1ZSBwYWlyLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmludmFsaWRRdWFyYW50aW5lT3B0aW9uXTogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBcIntvcHRpb25OYW1lfVwiIG9wdGlvbiBkb2VzIG5vdCBleGlzdC4gU3BlY2lmeSBcImF0dGVtcHRMaW1pdFwiIGFuZCBcInN1Y2Nlc3NUaHJlc2hvbGRcIiB0byBjb25maWd1cmUgcXVhcmFudGluZSBtb2RlLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmludmFsaWRRdWFyYW50aW5lUGFyYW1ldGVyc1JhdGlvXTogICAgICAgICAgICAgICAgICAgJ1RoZSB2YWx1ZSBvZiBcImF0dGVtcHRMaW1pdFwiICh7YXR0ZW1wdExpbWl0fSkgc2hvdWxkIGJlIGdyZWF0ZXIgdGhlbiB0aGUgdmFsdWUgb2YgXCJzdWNjZXNzVGhyZXNob2xkXCIgKHtzdWNjZXNzVGhyZXNob2xkfSkuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZEF0dGVtcHRMaW1pdFZhbHVlXTogICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIFwie2F0dGVtcHRMaW1pdH1cIiBwYXJhbWV0ZXIgb25seSBhY2NlcHRzIHZhbHVlcyBvZiB7TUlOX0FUVEVNUFRfTElNSVR9IGFuZCB1cC4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkU3VjY2Vzc1RocmVzaG9sZFZhbHVlXTogICAgICAgICAgICAgICAgICAgICAgICdUaGUgXCJ7c3VjY2Vzc1RocmVzaG9sZH1cIiBwYXJhbWV0ZXIgb25seSBhY2NlcHRzIHZhbHVlcyBvZiB7TUlOX1NVQ0NFU1NfVEhSRVNIT0xEfSBhbmQgdXAuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZFNwZWVkVmFsdWVdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3BlZWQgc2hvdWxkIGJlIGEgbnVtYmVyIGJldHdlZW4gMC4wMSBhbmQgMS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkQ29uY3VycmVuY3lGYWN0b3JdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgY29uY3VycmVuY3kgZmFjdG9yIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdERpdmlkZVJlbW90ZXNDb3VudEJ5Q29uY3VycmVuY3ldOiAgICAgICAgICAgICAgJ1RoZSBudW1iZXIgb2YgcmVtb3RlIGJyb3dzZXJzIHNob3VsZCBiZSBkaXZpc2libGUgYnkgdGhlIGNvbmN1cnJlbmN5IGZhY3Rvci4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RTZXRDb25jdXJyZW5jeVdpdGhDRFBQb3J0XTogICAgICAgICAgICAgICAgICAgICdUaGUgdmFsdWUgb2YgdGhlIFwiY29uY3VycmVuY3lcIiBvcHRpb24gaW5jbHVkZXMgdGhlIENEUCBwb3J0LicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnBvcnRzT3B0aW9uUmVxdWlyZXNUd29OdW1iZXJzXTogICAgICAgICAgICAgICAgICAgICAgJ1RoZSBcIi0tcG9ydHNcIiBhcmd1bWVudCBhY2NlcHRzIHR3byB2YWx1ZXMgYXQgYSB0aW1lLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnBvcnRJc05vdEZyZWVdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BvcnQge3BvcnROdW19IGlzIG9jY3VwaWVkIGJ5IGFub3RoZXIgcHJvY2Vzcy4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkSG9zdG5hbWVdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcmVzb2x2ZSBob3N0bmFtZSBcIntob3N0bmFtZX1cIi4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RGaW5kU3BlY2lmaWVkVGVzdFNvdXJjZV06ICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgZmluZCBhIHRlc3QgZmlsZSBhdCBcIntwYXRofVwiLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNsaWVudEZ1bmN0aW9uQ29kZUlzTm90QUZ1bmN0aW9uXTogICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBpbml0aWFsaXplIGEgQ2xpZW50RnVuY3Rpb24gYmVjYXVzZSB7I2luc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IGlzIHt0eXBlfSwgYW5kIG5vdCBhIGZ1bmN0aW9uLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnNlbGVjdG9ySW5pdGlhbGl6ZWRXaXRoV3JvbmdUeXBlXTogICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBpbml0aWFsaXplIGEgU2VsZWN0b3IgYmVjYXVzZSB7I2luc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IGlzIHt0eXBlfSwgYW5kIG5vdCBvbmUgb2YgdGhlIGZvbGxvd2luZzogYSBDU1Mgc2VsZWN0b3Igc3RyaW5nLCBhIFNlbGVjdG9yIG9iamVjdCwgYSBub2RlIHNuYXBzaG90LCBhIGZ1bmN0aW9uLCBvciBhIFByb21pc2UgcmV0dXJuZWQgYnkgYSBTZWxlY3Rvci4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jbGllbnRGdW5jdGlvbkNhbm5vdFJlc29sdmVUZXN0UnVuXTogICAgICAgICAgICAgICAgIFwieyNpbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBjYW5ub3QgaW1wbGljaXRseSByZXNvbHZlIHRoZSB0ZXN0IHJ1biBpbiBjb250ZXh0IG9mIHdoaWNoIGl0IHNob3VsZCBiZSBleGVjdXRlZC4gSWYgeW91IG5lZWQgdG8gY2FsbCB7I2luc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IGZyb20gdGhlIE5vZGUuanMgQVBJIGNhbGxiYWNrLCBwYXNzIHRoZSB0ZXN0IGNvbnRyb2xsZXIgbWFudWFsbHkgdmlhIHsjaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZX0ncyBgLndpdGgoeyBib3VuZFRlc3RSdW46IHQgfSlgIG1ldGhvZCBmaXJzdC4gTm90ZSB0aGF0IHlvdSBjYW5ub3QgZXhlY3V0ZSB7I2luc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IG91dHNpZGUgdGhlIHRlc3QgY29kZS5cIixcbiAgICBbUlVOVElNRV9FUlJPUlMucmVxdWVzdENhbm5vdFJlc29sdmVUZXN0UnVuXTogICAgICAgICAgICAgICAgICAgICAgICBcIidyZXF1ZXN0JyBjYW5ub3QgaW1wbGljaXRseSByZXNvbHZlIHRoZSB0ZXN0IHJ1biBpbiBjb250ZXh0IG9mIHdoaWNoIGl0IHNob3VsZCBiZSBleGVjdXRlZC4gTm90ZSB0aGF0IHlvdSBjYW5ub3QgZXhlY3V0ZSAncmVxdWVzdCcgaW4gdGhlIGV4cGVyaW1lbnRhbCBkZWJ1ZyBtb2RlLlwiLFxuICAgIFtSVU5USU1FX0VSUk9SUy5yZWdlbmVyYXRvckluQ2xpZW50RnVuY3Rpb25Db2RlXTogICAgICAgICAgICAgICAgICAgIGB7I2luc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IGNvZGUsIGFyZ3VtZW50cyBvciBkZXBlbmRlbmNpZXMgY2Fubm90IGNvbnRhaW4gZ2VuZXJhdG9ycyBvciBcImFzeW5jL2F3YWl0XCIgc3ludGF4ICh1c2UgUHJvbWlzZXMgaW5zdGVhZCkuYCxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZENsaWVudEZ1bmN0aW9uVGVzdFJ1bkJpbmRpbmddOiAgICAgICAgICAgICAgICAnQ2Fubm90IHJlc29sdmUgdGhlIFwiYm91bmRUZXN0UnVuXCIgb3B0aW9uIGJlY2F1c2UgaXRzIHZhbHVlIGlzIG5vdCBhIHRlc3QgY29udHJvbGxlci4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkVmFsdWVUeXBlXTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7c210aGd9ICh7YWN0dWFsfSkgaXMgbm90IG9mIGV4cGVjdGVkIHR5cGUgKHt0eXBlfSkuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMudW5zdXBwb3J0ZWRVcmxQcm90b2NvbF06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCB7d2hhdH06IFwie3VybH1cIi4gVGVzdENhZmUgY2Fubm90IGV4ZWN1dGUgdGhlIHRlc3QgYmVjYXVzZSB0aGUge3doYXR9IGluY2x1ZGVzIHRoZSB7cHJvdG9jb2x9IHByb3RvY29sLiBUZXN0Q2FmZSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHByb3RvY29sczogaHR0cDovLywgaHR0cHM6Ly8gYW5kIGZpbGU6Ly8uJyxcbiAgICBbUlVOVElNRV9FUlJPUlMudGVzdENvbnRyb2xsZXJQcm94eUNhbm5vdFJlc29sdmVUZXN0UnVuXTogICAgICAgICAgICBgQ2Fubm90IGltcGxpY2l0bHkgcmVzb2x2ZSB0aGUgdGVzdCBydW4gaW4gdGhlIGNvbnRleHQgb2Ygd2hpY2ggdGhlIHRlc3QgY29udHJvbGxlciBhY3Rpb24gc2hvdWxkIGJlIGV4ZWN1dGVkLiBVc2UgdGVzdCBmdW5jdGlvbidzICd0JyBhcmd1bWVudCBpbnN0ZWFkLmAsXG4gICAgW1JVTlRJTUVfRVJST1JTLnRpbWVMaW1pdGVkUHJvbWlzZVRpbWVvdXRFeHBpcmVkXTogICAgICAgICAgICAgICAgICAgJ0EgUHJvbWlzZSB0aW1lZCBvdXQuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90U2V0VmlkZW9PcHRpb25zV2l0aG91dEJhc2VWaWRlb1BhdGhTcGVjaWZpZWRdOiAnWW91IGNhbm5vdCBtYW5hZ2UgYWR2YW5jZWQgdmlkZW8gcGFyYW1ldGVycyB3aGVuIHRoZSB2aWRlbyByZWNvcmRpbmcgY2FwYWJpbGl0eSBpcyBvZmYuIFNwZWNpZnkgdGhlIHJvb3Qgc3RvcmFnZSBmb2xkZXIgZm9yIHZpZGVvIGNvbnRlbnQgdG8gZW5hYmxlIHZpZGVvIHJlY29yZGluZy4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5tdWx0aXBsZUFQSU1ldGhvZENhbGxGb3JiaWRkZW5dOiAgICAgICAgICAgICAgICAgICAgICdZb3UgY2Fubm90IGNhbGwgdGhlIFwie21ldGhvZE5hbWV9XCIgbWV0aG9kIG1vcmUgdGhhbiBvbmNlLiBTcGVjaWZ5IGFuIGFycmF5IG9mIHBhcmFtZXRlcnMgaW5zdGVhZC4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkUmVwb3J0ZXJPdXRwdXRdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3BlY2lmeSBhIGZpbGUgbmFtZSBvciBhIHdyaXRhYmxlIHN0cmVhbSBhcyB0aGUgcmVwb3J0ZXIncyBvdXRwdXQgdGFyZ2V0LlwiLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RSZWFkU1NMQ2VydEZpbGVdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVbmFibGUgdG8gcmVhZCB0aGUgZmlsZSByZWZlcmVuY2VkIGJ5IHRoZSBcIntvcHRpb259XCIgc3NsIG9wdGlvbiAoXCJ7cGF0aH1cIikuIEVycm9yIGRldGFpbHM6XFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7ZXJyfScsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90UHJlcGFyZVRlc3RzRHVlVG9FcnJvcl06ICdDYW5ub3QgcHJlcGFyZSB0ZXN0cyBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcjpcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7ZXJyTWVzc2FnZX0nLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdFBhcnNlUmF3RmlsZV06ICdDYW5ub3QgcGFyc2UgYSByYXcgdGVzdCBmaWxlIGF0IFwie3BhdGh9XCIgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3I6XFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tlcnJNZXNzYWdlfScsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMudGVzdGVkQXBwRmFpbGVkV2l0aEVycm9yXTogJ1RoZSB3ZWIgYXBwbGljYXRpb24gZmFpbGVkIHdpdGggdGhlIGZvbGxvd2luZyBlcnJvcjpcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne2Vyck1lc3NhZ2V9JyxcblxuICAgIFtSVU5USU1FX0VSUk9SUy51bmFibGVUb09wZW5Ccm93c2VyXTogJ1VuYWJsZSB0byBvcGVuIHRoZSBcInthbGlhc31cIiBicm93c2VyIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yOlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tlcnJNZXNzYWdlfScsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMucmVxdWVzdEhvb2tDb25maWd1cmVBUElFcnJvcl06ICdBdHRlbXB0IHRvIGNvbmZpZ3VyZSBhIHJlcXVlc3QgaG9vayByZXN1bHRlZCBpbiB0aGUgZm9sbG93aW5nIGVycm9yOlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tyZXF1ZXN0SG9va05hbWV9OiB7ZXJyTXNnfScsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMuZm9yYmlkZGVuQ2hhcmF0ZXJzSW5TY3JlZW5zaG90UGF0aF06ICdUaGVyZSBhcmUgZm9yYmlkZGVuIGNoYXJhY3RlcnMgaW4gdGhlIFwie3NjcmVlbnNob3RQYXRofVwiIHtzY3JlZW5zaG90UGF0aFR5cGV9OlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyB7Zm9yYmlkZGVuQ2hhcnNEZXNjcmlwdGlvbn0nLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRGRk1QRUddOiAnVGVzdENhZmUgY2Fubm90IHJlY29yZCB2aWRlb3MgYmVjYXVzZSBpdCBjYW5ub3QgbG9jYXRlIHRoZSBGRm1wZWcgZXhlY3V0YWJsZS4gVHJ5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHNvbHV0aW9uczpcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqIGFkZCB0aGUgcGF0aCBvZiB0aGUgRkZtcGVnIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgdG8gdGhlIFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUsXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKiBzcGVjaWZ5IHRoZSBwYXRoIG9mIHRoZSBGRm1wZWcgZXhlY3V0YWJsZSBpbiB0aGUgRkZNUEVHX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIGZmbXBlZ1BhdGggb3B0aW9uLFxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyogaW5zdGFsbCB0aGUgQGZmbXBlZy1pbnN0YWxsZXIvZmZtcGVnIG5wbSBwYWNrYWdlLicsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90RmluZFR5cGVzY3JpcHRDb25maWd1cmF0aW9uRmlsZV06ICAgICAgICAgICAgJ1wie2ZpbGVQYXRofVwiIGlzIG5vdCBhIHZhbGlkIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNsaWVudFNjcmlwdEluaXRpYWxpemVySXNOb3RTcGVjaWZpZWRdOiAgICAgICAgICAgICdJbml0aWFsaXplIHlvdXIgY2xpZW50IHNjcmlwdCB3aXRoIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBhIEphdmFTY3JpcHQgc2NyaXB0LCBhIEphdmFTY3JpcHQgZmlsZSBwYXRoLCBvciB0aGUgbmFtZSBvZiBhIEphdmFTY3JpcHQgbW9kdWxlLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNsaWVudFNjcmlwdEJhc2VQYXRoSXNOb3RTcGVjaWZpZWRdOiAgICAgICAgICAgICAgICdTcGVjaWZ5IHRoZSBiYXNlIHBhdGggZm9yIHRoZSBjbGllbnQgc2NyaXB0IGZpbGUuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2xpZW50U2NyaXB0SW5pdGlhbGl6ZXJNdWx0aXBsZUNvbnRlbnRTb3VyY2VzXTogICAgJ0NsaWVudCBzY3JpcHRzIGNhbiBvbmx5IGhhdmUgb25lIGluaXRpYWxpemVyOiBKYXZhU2NyaXB0IGNvZGUsIGEgSmF2YVNjcmlwdCBmaWxlIHBhdGgsIG9yIHRoZSBuYW1lIG9mIGEgSmF2YVNjcmlwdCBtb2R1bGUuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90TG9hZENsaWVudFNjcmlwdEZyb21QYXRoXTogICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBsb2FkIGEgY2xpZW50IHNjcmlwdCBmcm9tIHtwYXRofS5cXG57ZXJyb3JNZXNzYWdlfScsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNsaWVudFNjcmlwdE1vZHVsZUVudHJ5UG9pbnRQYXRoQ2FsY3VsYXRpb25FcnJvcl06ICdBIGNsaWVudCBzY3JpcHQgdHJpZWQgdG8gbG9hZCBhIEphdmFTY3JpcHQgbW9kdWxlIHRoYXQgVGVzdENhZmUgY2Fubm90IGxvY2F0ZTpcXG5cXG57ZXJyb3JNZXNzYWdlfS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5tZXRob2RJc05vdEF2YWlsYWJsZUZvckFuSVBDSG9zdF06ICAgICAgICAgICAgICAgICAnVGhpcyBtZXRob2QgY2Fubm90IGJlIGNhbGxlZCBvbiBhIHNlcnZpY2UgaG9zdC4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy50b29MYXJnZUlQQ1BheWxvYWRdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIHNwZWNpZmllZCBwYXlsb2FkIGlzIHRvbyBsYXJnZSB0byBmb3JtIGFuIElQQyBwYWNrZXQuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMubWFsZm9ybWVkSVBDTWVzc2FnZV06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBwcm9jZXNzIGEgbWFsZm9ybWVkIElQQyBtZXNzYWdlLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnVuZXhwZWN0ZWRJUENIZWFkUGFja2V0XTogICAgICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgY3JlYXRlIGFuIElQQyBtZXNzYWdlIGR1ZSB0byBhbiB1bmV4cGVjdGVkIElQQyBoZWFkIHBhY2tldC4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy51bmV4cGVjdGVkSVBDQm9keVBhY2tldF06ICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IGNyZWF0ZSBhbiBJUEMgbWVzc2FnZSBkdWUgdG8gYW4gdW5leHBlY3RlZCBJUEMgYm9keSBwYWNrZXQuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMudW5leHBlY3RlZElQQ1RhaWxQYWNrZXRdOiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBjcmVhdGUgYW4gSVBDIG1lc3NhZ2UgZHVlIHRvIGFuIHVuZXhwZWN0ZWQgSVBDIHRhaWwgcGFja2V0LicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdFJ1bkxvY2FsTm9uSGVhZGxlc3NCcm93c2VyV2l0aG91dERpc3BsYXldOlxuICAgICAgICAnWW91ciBMaW51eCB2ZXJzaW9uIGRvZXMgbm90IGhhdmUgYSBncmFwaGljIHN1YnN5c3RlbSB0byBydW4ge2Jyb3dzZXJBbGlhc30gd2l0aCBhIEdVSS4gJyArXG4gICAgICAgICdZb3UgY2FuIGxhdW5jaCB0aGUgYnJvd3NlciBpbiBoZWFkbGVzcyBtb2RlLiAnICtcbiAgICAgICAgJ0lmIHlvdSB1c2UgYSBwb3J0YWJsZSBicm93c2VyIGV4ZWN1dGFibGUsICcgK1xuICAgICAgICBcInNwZWNpZnkgdGhlIGJyb3dzZXIgYWxpYXMgYmVmb3JlIHRoZSBwYXRoIGluc3RlYWQgb2YgdGhlICdwYXRoJyBwcmVmaXguIFwiICtcbiAgICAgICAgYEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgJHtET0NVTUVOVEFUSU9OX0xJTktTLkhFQURMRVNTX01PREV9YCxcblxuICAgIFtSVU5USU1FX0VSUk9SUy51bmNhdWdodEVycm9ySW5SZXBvcnRlcl06ICAgICAgICAgICAnVGhlIFwie21ldGhvZE5hbWV9XCIgbWV0aG9kIG9mIHRoZSBcIntyZXBvcnRlck5hbWV9XCIgcmVwb3J0ZXIgcHJvZHVjZWQgYW4gdW5jYXVnaHQgZXJyb3IuIEVycm9yIGRldGFpbHM6XFxue29yaWdpbmFsRXJyb3J9JyxcbiAgICBbUlVOVElNRV9FUlJPUlMucm9sZUluaXRpYWxpemVkV2l0aFJlbGF0aXZlVXJsXTogICAgJ1lvdSBjYW5ub3Qgc3BlY2lmeSByZWxhdGl2ZSBsb2dpbiBwYWdlIFVSTHMgaW4gdGhlIFJvbGUgY29uc3RydWN0b3IuIFVzZSBhbiBhYnNvbHV0ZSBVUkwuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMudHlwZVNjcmlwdENvbXBpbGVyTG9hZGluZ0Vycm9yXTogICAgJ0Nhbm5vdCBsb2FkIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyLlxcbntvcmlnaW5FcnJvck1lc3NhZ2V9LicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdEN1c3RvbWl6ZVNwZWNpZmllZENvbXBpbGVyc106ICdZb3UgY2Fubm90IHNwZWNpZnkgb3B0aW9ucyBmb3IgdGhlIHtub25jdXN0b21pemFibGVDb21waWxlckxpc3R9IGNvbXBpbGVye3N1ZmZpeH0uJyxcblxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RFbmFibGVSZXRyeVRlc3RQYWdlc09wdGlvbl06XG4gICAgICAgICdDYW5ub3QgZW5hYmxlIHRoZSBcXCdyZXRyeVRlc3RQYWdlc1xcJyBvcHRpb24uIEFwcGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHR3byBzb2x1dGlvbnM6XFxuJyArXG4gICAgICAgICctLSBzZXQgXFwnbG9jYWxob3N0XFwnIGFzIHRoZSB2YWx1ZSBvZiB0aGUgXFwnaG9zdG5hbWVcXCcgb3B0aW9uXFxuJyArXG4gICAgICAgICctLSBydW4gVGVzdENhZmUgb3ZlciBIVFRQU1xcbicsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMuYnJvd3NlckNvbm5lY3Rpb25FcnJvcl06ICAgICAgICAgICAgICAgJ3tvcmlnaW5FcnJvck1lc3NhZ2V9XFxue251bU9mTm90T3BlbmVkQ29ubmVjdGlvbn0gb2Yge251bU9mQWxsQ29ubmVjdGlvbnN9IGJyb3dzZXIgY29ubmVjdGlvbnMgaGF2ZSBub3QgYmVlbiBlc3RhYmxpc2hlZDpcXG57bGlzdE9mTm90T3BlbmVkQ29ubmVjdGlvbnN9XFxuXFxuSGludHM6XFxue2xpc3RPZkhpbnRzfScsXG4gICAgW0Jyb3dzZXJDb25uZWN0aW9uRXJyb3JIaW50LlRvb0hpZ2hDb25jdXJyZW5jeUZhY3Rvcl06ICdUaGUgaG9zdCBtYWNoaW5lIG1heSBub3QgYmUgcG93ZXJmdWwgZW5vdWdoIHRvIGhhbmRsZSB0aGUgc3BlY2lmaWVkIGNvbmN1cnJlbmN5IGZhY3RvciAoe2NvbmN1cnJlbmN5RmFjdG9yfSkuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVHJ5IHRvIGRlY3JlYXNlIHRoZSBjb25jdXJyZW5jeSBmYWN0b3Igb3IgYWxsb2NhdGUgbW9yZSBjb21wdXRpbmcgcmVzb3VyY2VzIHRvIHRoZSBob3N0IG1hY2hpbmUuJyxcbiAgICBbQnJvd3NlckNvbm5lY3Rpb25FcnJvckhpbnQuVXNlQnJvd3NlckluaXRPcHRpb25dOiAgICAgICAgICAgICAgICdJbmNyZWFzZSB0aGUgdmFsdWUgb2YgdGhlIFwiYnJvd3NlckluaXRUaW1lb3V0XCIgb3B0aW9uIGlmIGl0IGlzIHRvbyBsb3cgKGN1cnJlbnRseToge2Jyb3dzZXJJbml0VGltZW91dE1zZ30pLiBUaGlzIG9wdGlvbiBkZXRlcm1pbmVzIGhvdyBsb25nIFRlc3RDYWZlIHdhaXRzIGZvciBicm93c2VycyB0byBiZSByZWFkeS4nLFxuICAgIFtCcm93c2VyQ29ubmVjdGlvbkVycm9ySGludC5SZXN0RXJyb3JDYXVzZXNdOiAgICAgICAgICAgICAgICAgICAgJ1RoZSBlcnJvciBjYW4gYWxzbyBiZSBjYXVzZWQgYnkgbmV0d29yayBpc3N1ZXMgb3IgcmVtb3RlIGRldmljZSBmYWlsdXJlLiBNYWtlIHN1cmUgdGhhdCB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbiBpcyBzdGFibGUgYW5kIHlvdSBjYW4gcmVhY2ggdGhlIHJlbW90ZSBkZXZpY2UuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90RmluZFRlc3RjYWZlQ29uZmlndXJhdGlvbkZpbGVdOiAgICAgICAgICAgICdDYW5ub3QgbG9jYXRlIGEgVGVzdENhZmUgY29uZmlndXJhdGlvbiBmaWxlIGF0IHtmaWxlUGF0aH0uIEVpdGhlciB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgb3IgdGhlIHBhdGggaXMgaW52YWxpZC4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5kYXNoYm9hcmRUb2tlbkluSlNPTl06ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luc2VjdXJlIHRva2VuIGRlY2xhcmF0aW9uOiBjYW5ub3QgZGVjbGFyZSBhIERhc2hib2FyZCB0b2tlbiBpbiBhIEpTT04gY29uZmlndXJhdGlvbiBmaWxlLiBVc2UgYSBKYXZhU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgZGVjbGFyZSBhIERhc2hib2FyZCB0b2tlbiB3aXRoIG9uZSBvZiB0aGUgZm9sbG93aW5nOiB0aGUgQ0xJLCB0aGUgVGVzdCBSdW5uZXIgQVBJLCB0aGUgVEVTVENBRkVfREFTSEJPQVJEX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnJlbGF0aXZlQmFzZVVybF06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIHZhbHVlIG9mIHRoZSBiYXNlVXJsIGFyZ3VtZW50IGNhbm5vdCBiZSByZWxhdGl2ZTogXCJ7YmFzZVVybH1cIicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnJlcXVlc3RVcmxJbnZhbGlkVmFsdWVFcnJvcl06ICAgICAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHVybCBpc25cXCd0IHZhbGlkICh7YWN0dWFsVmFsdWV9KS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5yZXF1ZXN0UnVudGltZUVycm9yXTogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSByZXF1ZXN0IHdhcyBpbnRlcnJ1cHRlZCBieSBhbiBlcnJvcjpcXG57bWVzc2FnZX0nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdFByb3BlcnR5XTogICAgICAgYFRoZSBcIntvcHRpb25OYW1lfVwiIG9wdGlvbiBkb2VzIG5vdCBleGlzdC4gVXNlIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyB0byBjb25maWd1cmUgc2tpcEpzRXJyb3JzOiAke2dldENvbmNhdGVuYXRlZFZhbHVlc1N0cmluZyhPYmplY3Qua2V5cyhTS0lQX0pTX0VSUk9SU19PUFRJT05TX09CSkVDVF9PUFRJT05fTkFNRVMpKX0uYCxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNQcm9wZXJ0eV06IGBUaGUgXCJ7b3B0aW9uTmFtZX1cIiBvcHRpb24gZG9lcyBub3QgZXhpc3QuIFVzZSB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29uZmlndXJlIHNraXBKc0Vycm9ycyBjYWxsYmFjazogJHtnZXRDb25jYXRlbmF0ZWRWYWx1ZXNTdHJpbmcoT2JqZWN0LmtleXMoU0tJUF9KU19FUlJPUlNfQ0FMTEJBQ0tfV0lUSF9PUFRJT05TX09QVElPTl9OQU1FUykpfS5gLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkQ29tbWFuZEluSnNvbkNvbXBpbGVyXTogICAgICAgICAgICAgICAgICAgYFRlc3RDYWZlIHRlcm1pbmF0ZWQgdGhlIHRlc3QgcnVuLiBUaGUgXCJ7cGF0aH1cIiBmaWxlIGNvbnRhaW5zIGFuIHVua25vd24gQ2hyb21lIFVzZXIgRmxvdyBhY3Rpb24gXCJ7YWN0aW9ufVwiLiBSZW1vdmUgdGhlIGFjdGlvbiB0byBjb250aW51ZS4gUmVmZXIgdG8gdGhlIGZvbGxvd2luZyBhcnRpY2xlIGZvciB0aGUgZGVmaW5pdGl2ZSBsaXN0IG9mIHN1cHBvcnRlZCBDaHJvbWUgVXNlciBGbG93IGFjdGlvbnM6IGh0dHBzOi8vdGVzdGNhZmUuaW8vZG9jdW1lbnRhdGlvbi80MDM5OTgvZ3VpZGVzL2V4cGVyaW1lbnRhbC1jYXBhYmlsaXRpZXMvY2hyb21lLXJlcGxheS1zdXBwb3J0I3N1cHBvcnRlZC1yZXBsYXktYWN0aW9uc2AsXG4gICAgW1JVTlRJTUVfRVJST1JTLmludmFsaWRDdXN0b21BY3Rpb25zT3B0aW9uVHlwZV06ICAgICAgICAgICAgICAgICBgVGhlIHZhbHVlIG9mIHRoZSBjdXN0b21BY3Rpb25zIG9wdGlvbiBkb2VzIG5vdCBiZWxvbmcgdG8gdHlwZSBPYmplY3QuIFJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZSBmb3IgY3VzdG9tIGFjdGlvbiBzZXR1cCBpbnN0cnVjdGlvbnM6ICR7IERPQ1VNRU5UQVRJT05fTElOS1MuQ1VTVE9NX0FDVElPTlMgfWAsXG4gICAgW1JVTlRJTUVfRVJST1JTLmludmFsaWRDdXN0b21BY3Rpb25UeXBlXTogICAgICAgICAgICAgICAgICAgICAgICBgVGVzdENhZmUgY2Fubm90IHBhcnNlIHRoZSBcInthY3Rpb25OYW1lfVwiIGFjdGlvbiwgYmVjYXVzZSB0aGUgYWN0aW9uIGRlZmluaXRpb24gaXMgaW52YWxpZC4gRm9ybWF0IHRoZSBkZWZpbml0aW9uIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY3VzdG9tIGFjdGlvbnMgZ3VpZGU6ICR7IERPQ1VNRU5UQVRJT05fTElOS1MuQ1VTVE9NX0FDVElPTlMgfWAsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdEltcG9ydEVTTUluQ29tbW9uc0pTXTogICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IGltcG9ydCB0aGUge2VzTW9kdWxlfSBFQ01BU2NyaXB0IG1vZHVsZSBmcm9tIHt0YXJnZXRGaWxlfS4gVXNlIGEgZHluYW1pYyBpbXBvcnQoKSBzdGF0ZW1lbnQgb3IgZW5hYmxlIHRoZSAtLWV4cGVyaW1lbnRhbC1lc20gQ0xJIGZsYWcuJyxcbn07XG4iXX0=
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9ycy9ydW50aW1lL3RlbXBsYXRlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsZ0VBQWdFO0FBQ2hFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsZ0VBQWdFOzs7OztBQUVoRSxvQ0FBMEM7QUFDMUMsdUZBQThFO0FBQzlFLCtDQUFpRTtBQUNqRSxpR0FBZ0s7QUFFaEssTUFBTSxtQkFBbUIsR0FBRztJQUN4QixxQkFBcUIsRUFBRSxpR0FBaUc7SUFDeEgsZUFBZSxFQUFRLDhFQUE4RTtJQUNyRyxhQUFhLEVBQVUseUZBQXlGO0lBQ2hILGNBQWMsRUFBUyxxRkFBcUY7Q0FDL0csQ0FBQztBQUVGLGtCQUFlO0lBQ1gsQ0FBQyxzQkFBYyxDQUFDLG1DQUFtQyxDQUFDLEVBQUcseUVBQXlFO0lBQ2hJLENBQUMsc0JBQWMsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLHVGQUF1RjtJQUM5SSxDQUFDLHNCQUFjLENBQUMsbUJBQW1CLENBQUMsRUFBbUIseUlBQXlJO0lBQ2hNLENBQUMsc0JBQWMsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLDhFQUE4RTtJQUNySSxDQUFDLHNCQUFjLENBQUMsbUNBQW1DLENBQUMsRUFBRyxpREFBaUQ7SUFDeEcsQ0FBQyxzQkFBYyxDQUFDLGdDQUFnQyxDQUFDLEVBQU0sbURBQW1EO0lBQzFHLENBQUMsc0JBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFxQiwwR0FBMEc7SUFDakssQ0FBQyxzQkFBYyxDQUFDLHVCQUF1QixDQUFDLEVBQWUsb0RBQW9EO0lBQzNHLENBQUMsc0JBQWMsQ0FBQyxhQUFhLENBQUMsRUFBeUIsbUNBQW1DO0lBQzFGLENBQUMsc0JBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFxQixpRUFBaUU7UUFDakUsZ0NBQWdDO1FBQ2hDLGtCQUFrQjtRQUNsQixrREFBa0Q7UUFDbEQsOERBQThELG1CQUFtQixDQUFD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SUFBSSxDQUFDLCtFQUFpRCxDQUFDLENBQUMsR0FBRztJQUMxUSxDQUFDLHNCQUFjLENBQUMsNEJBQTRCLENBQUMsRUFBb0IsbVdBQW1XO0lBQ3BhLENBQUMsc0JBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFrQiw4SUFBK0ksbUJBQW1CLENBQUMsY0FBZSxFQUFFO0lBQ3JQLENBQUMsc0JBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUF5QixpS0FBa0ssbUJBQW1CLENBQUMsY0FBZSxFQUFFO0lBQ3hRLENBQUMsc0JBQWMsQ0FBQywwQkFBMEIsQ0FBQyxFQUFzQixrSUFBa0k7SUFDbk0sQ0FBQyxzQkFBYyxDQUFDLHlDQUF5QyxDQUFDLEVBQU8sK0dBQStHO0NBQ25MLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBXQVJOSU5HOiB0aGlzIGZpbGUgaXMgdXNlZCBieSBib3RoIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIuXG4vLyBEbyBub3QgdXNlIGFueSBicm93c2VyIG9yIG5vZGUtc3BlY2lmaWMgQVBJIVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbkVycm9ySGludCBmcm9tICcuLi8uLi9icm93c2VyL2Nvbm5lY3Rpb24vZXJyb3ItaGludHMnO1xuaW1wb3J0IHsgZ2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nJztcbmltcG9ydCB7IFNLSVBfSlNfRVJST1JTX09QVElPTlNfT0JKRUNUX09QVElPTl9OQU1FUywgU0tJUF9KU19FUlJPUlNfQ0FMTEJBQ0tfV0lUSF9PUFRJT05TX09QVElPTl9OQU1FUyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vc2tpcC1qcy1lcnJvcnMtb3B0aW9uLW5hbWVzJztcblxuY29uc3QgRE9DVU1FTlRBVElPTl9MSU5LUyA9IHtcbiAgICBURVNUX1NPVVJDRV9QQVJBTUVURVI6ICdodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDAyNjM5L3JlZmVyZW5jZS9jb21tYW5kLWxpbmUtaW50ZXJmYWNlI2ZpbGUtcGF0aGdsb2ItcGF0dGVybicsXG4gICAgRklMVEVSX1NFVFRJTkdTOiAgICAgICAnaHR0cHM6Ly90ZXN0Y2FmZS5pby9kb2N1bWVudGF0aW9uLzQwMjYzOC9yZWZlcmVuY2UvY29uZmlndXJhdGlvbi1maWxlI2ZpbHRlcicsXG4gICAgSEVBRExFU1NfTU9ERTogICAgICAgICAnaHR0cHM6Ly90ZXN0Y2FmZS5pby9kb2N1bWVudGF0aW9uLzQwMjgyOC9ndWlkZXMvY29uY2VwdHMvYnJvd3NlcnMjdGVzdC1pbi1oZWFkbGVzcy1tb2RlJyxcbiAgICBDVVNUT01fQUNUSU9OUzogICAgICAgICdodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDA0MTUwL2d1aWRlcy9hZHZhbmNlZC1ndWlkZXMvY3VzdG9tLXRlc3QtYWN0aW9ucycsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdENyZWF0ZU11bHRpcGxlTGl2ZU1vZGVSdW5uZXJzXTogICdDYW5ub3QgbGF1bmNoIG11bHRpcGxlIGxpdmUgbW9kZSBpbnN0YW5jZXMgb2YgdGhlIFRlc3RDYWZlIHRlc3QgcnVubmVyLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdFJ1bkxpdmVNb2RlUnVubmVyTXVsdGlwbGVUaW1lc106ICdDYW5ub3QgbGF1bmNoIHRoZSBzYW1lIGxpdmUgbW9kZSBpbnN0YW5jZSBvZiB0aGUgVGVzdENhZmUgdGVzdCBydW5uZXIgbXVsdGlwbGUgdGltZXMuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuYnJvd3NlckRpc2Nvbm5lY3RlZF06ICAgICAgICAgICAgICAgICAgJ1RoZSB7dXNlckFnZW50fSBicm93c2VyIGRpc2Nvbm5lY3RlZC4gSWYgeW91IGRpZCBub3QgY2xvc2UgdGhlIGJyb3dzZXIgeW91cnNlbGYsIGJyb3dzZXIgcGVyZm9ybWFuY2Ugb3IgbmV0d29yayBpc3N1ZXMgbWF5IGJlIGF0IGZhdWx0LicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdFJ1bkFnYWluc3REaXNjb25uZWN0ZWRCcm93c2Vyc106ICdUaGUgZm9sbG93aW5nIGJyb3dzZXJzIGRpc2Nvbm5lY3RlZDoge3VzZXJBZ2VudHN9LiBDYW5ub3QgcnVuIGZ1cnRoZXIgdGVzdHMuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMudGVzdFJ1blJlcXVlc3RJbkRpc2Nvbm5lY3RlZEJyb3dzZXJdOiAgJ1wie2Jyb3dzZXJ9XCIgZGlzY29ubmVjdGVkIGR1cmluZyB0ZXN0IGV4ZWN1dGlvbi4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RFc3RhYmxpc2hCcm93c2VyQ29ubmVjdGlvbl06ICAgICAnQ2Fubm90IGVzdGFibGlzaCBvbmUgb3IgbW9yZSBicm93c2VyIGNvbm5lY3Rpb25zLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRCcm93c2VyXTogICAgICAgICAgICAgICAgICAgICdDYW5ub3QgZmluZCB0aGUgYnJvd3Nlci4gXCJ7YnJvd3Nlcn1cIiBpcyBuZWl0aGVyIGEga25vd24gYnJvd3NlciBhbGlhcywgbm9yIGEgcGF0aCB0byBhbiBleGVjdXRhYmxlIGZpbGUuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuYnJvd3NlclByb3ZpZGVyTm90Rm91bmRdOiAgICAgICAgICAgICAgJ0Nhbm5vdCBmaW5kIHRoZSBcIntwcm92aWRlck5hbWV9XCIgYnJvd3NlciBwcm92aWRlci4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5icm93c2VyTm90U2V0XTogICAgICAgICAgICAgICAgICAgICAgICAnWW91IGhhdmUgbm90IHNwZWNpZmllZCBhIGJyb3dzZXIuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMudGVzdEZpbGVzTm90Rm91bmRdOiAgICAgICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIHRlc3QgZmlsZXMgYXQgdGhlIGZvbGxvd2luZyBsb2NhdGlvbjogXCJ7Y3dkfVwiLlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2hlY2sgcGF0dGVybnMgZm9yIGVycm9yczpcXG5cXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tzb3VyY2VMaXN0fVxcblxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3IgbGF1bmNoIFRlc3RDYWZlIGZyb20gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNwZWNpZnkgdGVzdCBsb2NhdGlvbnMsIHNlZSAke0RPQ1VNRU5UQVRJT05fTElOS1MuVEVTVF9TT1VSQ0VfUEFSQU1FVEVSfS5gLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLm5vVGVzdHNUb1J1bl06IFwiU291cmNlIGZpbGVzIGRvIG5vdCBjb250YWluIHZhbGlkICdmaXh0dXJlJyBhbmQgJ3Rlc3QnIGRlY2xhcmF0aW9ucy5cIixcblxuICAgIFtSVU5USU1FX0VSUk9SUy5ub1Rlc3RzVG9SdW5EdWVGaWx0ZXJpbmddOiAnTm8gdGVzdHMgbWF0Y2ggeW91ciBmaWx0ZXIuXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBTZWUgJHtET0NVTUVOVEFUSU9OX0xJTktTLkZJTFRFUl9TRVRUSU5HU30uYCxcblxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RGaW5kUmVwb3J0ZXJGb3JBbGlhc106ICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgXCJ7bmFtZX1cIiByZXBvcnRlciBkb2VzIG5vdCBleGlzdC4gQ2hlY2sgdGhlIHJlcG9ydGVyIHBhcmFtZXRlciBmb3IgZXJyb3JzLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLm11bHRpcGxlU2FtZVN0cmVhbVJlcG9ydGVyc106ICAgICAgICAgICAgICAgICAgICAgICAgJ1JlcG9ydGVycyBjYW5ub3Qgc2hhcmUgb3V0cHV0IHN0cmVhbXMuIFRoZSBmb2xsb3dpbmcgcmVwb3J0ZXJzIGludGVyZmVyZSB3aXRoIG9uZSBhbm90aGVyOiBcIntyZXBvcnRlcnN9XCIuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMub3B0aW9uVmFsdWVJc05vdFZhbGlkUmVnRXhwXTogICAgICAgICAgICAgICAgICAgICAgICAnVGhlIFwie29wdGlvbk5hbWV9XCIgb3B0aW9uIGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24uJyxcbiAgICBbUlVOVElNRV9FUlJPUlMub3B0aW9uVmFsdWVJc05vdFZhbGlkS2V5VmFsdWVdOiAgICAgICAgICAgICAgICAgICAgICAnVGhlIFwie29wdGlvbk5hbWV9XCIgb3B0aW9uIGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBrZXktdmFsdWUgcGFpci4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkUXVhcmFudGluZU9wdGlvbl06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgXCJ7b3B0aW9uTmFtZX1cIiBvcHRpb24gZG9lcyBub3QgZXhpc3QuIFNwZWNpZnkgXCJhdHRlbXB0TGltaXRcIiBhbmQgXCJzdWNjZXNzVGhyZXNob2xkXCIgdG8gY29uZmlndXJlIHF1YXJhbnRpbmUgbW9kZS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkUXVhcmFudGluZVBhcmFtZXRlcnNSYXRpb106ICAgICAgICAgICAgICAgICAgICdUaGUgdmFsdWUgb2YgXCJhdHRlbXB0TGltaXRcIiAoe2F0dGVtcHRMaW1pdH0pIHNob3VsZCBiZSBncmVhdGVyIHRoZW4gdGhlIHZhbHVlIG9mIFwic3VjY2Vzc1RocmVzaG9sZFwiICh7c3VjY2Vzc1RocmVzaG9sZH0pLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmludmFsaWRBdHRlbXB0TGltaXRWYWx1ZV06ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBcInthdHRlbXB0TGltaXR9XCIgcGFyYW1ldGVyIG9ubHkgYWNjZXB0cyB2YWx1ZXMgb2Yge01JTl9BVFRFTVBUX0xJTUlUfSBhbmQgdXAuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZFN1Y2Nlc3NUaHJlc2hvbGRWYWx1ZV06ICAgICAgICAgICAgICAgICAgICAgICAnVGhlIFwie3N1Y2Nlc3NUaHJlc2hvbGR9XCIgcGFyYW1ldGVyIG9ubHkgYWNjZXB0cyB2YWx1ZXMgb2Yge01JTl9TVUNDRVNTX1RIUkVTSE9MRH0gYW5kIHVwLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmludmFsaWRTcGVlZFZhbHVlXTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NwZWVkIHNob3VsZCBiZSBhIG51bWJlciBiZXR3ZWVuIDAuMDEgYW5kIDEuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZENvbmN1cnJlbmN5RmFjdG9yXTogICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGNvbmN1cnJlbmN5IGZhY3RvciBzaG91bGQgYmUgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3REaXZpZGVSZW1vdGVzQ291bnRCeUNvbmN1cnJlbmN5XTogICAgICAgICAgICAgICdUaGUgbnVtYmVyIG9mIHJlbW90ZSBicm93c2VycyBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IHRoZSBjb25jdXJyZW5jeSBmYWN0b3IuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90U2V0Q29uY3VycmVuY3lXaXRoQ0RQUG9ydF06ICAgICAgICAgICAgICAgICAgICAnVGhlIHZhbHVlIG9mIHRoZSBcImNvbmN1cnJlbmN5XCIgb3B0aW9uIGluY2x1ZGVzIHRoZSBDRFAgcG9ydC4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5wb3J0c09wdGlvblJlcXVpcmVzVHdvTnVtYmVyc106ICAgICAgICAgICAgICAgICAgICAgICdUaGUgXCItLXBvcnRzXCIgYXJndW1lbnQgYWNjZXB0cyB0d28gdmFsdWVzIGF0IGEgdGltZS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5wb3J0SXNOb3RGcmVlXTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQb3J0IHtwb3J0TnVtfSBpcyBvY2N1cGllZCBieSBhbm90aGVyIHByb2Nlc3MuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZEhvc3RuYW1lXTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHJlc29sdmUgaG9zdG5hbWUgXCJ7aG9zdG5hbWV9XCIuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90RmluZFNwZWNpZmllZFRlc3RTb3VyY2VdOiAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IGZpbmQgYSB0ZXN0IGZpbGUgYXQgXCJ7cGF0aH1cIi4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jbGllbnRGdW5jdGlvbkNvZGVJc05vdEFGdW5jdGlvbl06ICAgICAgICAgICAgICAgICAgICdDYW5ub3QgaW5pdGlhbGl6ZSBhIENsaWVudEZ1bmN0aW9uIGJlY2F1c2UgeyNpbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBpcyB7dHlwZX0sIGFuZCBub3QgYSBmdW5jdGlvbi4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5zZWxlY3RvckluaXRpYWxpemVkV2l0aFdyb25nVHlwZV06ICAgICAgICAgICAgICAgICAgICdDYW5ub3QgaW5pdGlhbGl6ZSBhIFNlbGVjdG9yIGJlY2F1c2UgeyNpbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBpcyB7dHlwZX0sIGFuZCBub3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IGEgQ1NTIHNlbGVjdG9yIHN0cmluZywgYSBTZWxlY3RvciBvYmplY3QsIGEgbm9kZSBzbmFwc2hvdCwgYSBmdW5jdGlvbiwgb3IgYSBQcm9taXNlIHJldHVybmVkIGJ5IGEgU2VsZWN0b3IuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuY2xpZW50RnVuY3Rpb25DYW5ub3RSZXNvbHZlVGVzdFJ1bl06ICAgICAgICAgICAgICAgICBcInsjaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZX0gY2Fubm90IGltcGxpY2l0bHkgcmVzb2x2ZSB0aGUgdGVzdCBydW4gaW4gY29udGV4dCBvZiB3aGljaCBpdCBzaG91bGQgYmUgZXhlY3V0ZWQuIElmIHlvdSBuZWVkIHRvIGNhbGwgeyNpbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBmcm9tIHRoZSBOb2RlLmpzIEFQSSBjYWxsYmFjaywgcGFzcyB0aGUgdGVzdCBjb250cm9sbGVyIG1hbnVhbGx5IHZpYSB7I2luc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9J3MgYC53aXRoKHsgYm91bmRUZXN0UnVuOiB0IH0pYCBtZXRob2QgZmlyc3QuIE5vdGUgdGhhdCB5b3UgY2Fubm90IGV4ZWN1dGUgeyNpbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBvdXRzaWRlIHRoZSB0ZXN0IGNvZGUuXCIsXG4gICAgW1JVTlRJTUVfRVJST1JTLnJlcXVlc3RDYW5ub3RSZXNvbHZlVGVzdFJ1bl06ICAgICAgICAgICAgICAgICAgICAgICAgXCIncmVxdWVzdCcgY2Fubm90IGltcGxpY2l0bHkgcmVzb2x2ZSB0aGUgdGVzdCBydW4gaW4gY29udGV4dCBvZiB3aGljaCBpdCBzaG91bGQgYmUgZXhlY3V0ZWQuIE5vdGUgdGhhdCB5b3UgY2Fubm90IGV4ZWN1dGUgJ3JlcXVlc3QnIGluIHRoZSBleHBlcmltZW50YWwgZGVidWcgbW9kZS5cIixcbiAgICBbUlVOVElNRV9FUlJPUlMucmVnZW5lcmF0b3JJbkNsaWVudEZ1bmN0aW9uQ29kZV06ICAgICAgICAgICAgICAgICAgICBgeyNpbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBjb2RlLCBhcmd1bWVudHMgb3IgZGVwZW5kZW5jaWVzIGNhbm5vdCBjb250YWluIGdlbmVyYXRvcnMgb3IgXCJhc3luYy9hd2FpdFwiIHN5bnRheCAodXNlIFByb21pc2VzIGluc3RlYWQpLmAsXG4gICAgW1JVTlRJTUVfRVJST1JTLmludmFsaWRDbGllbnRGdW5jdGlvblRlc3RSdW5CaW5kaW5nXTogICAgICAgICAgICAgICAgJ0Nhbm5vdCByZXNvbHZlIHRoZSBcImJvdW5kVGVzdFJ1blwiIG9wdGlvbiBiZWNhdXNlIGl0cyB2YWx1ZSBpcyBub3QgYSB0ZXN0IGNvbnRyb2xsZXIuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZFZhbHVlVHlwZV06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne3NtdGhnfSAoe2FjdHVhbH0pIGlzIG5vdCBvZiBleHBlY3RlZCB0eXBlICh7dHlwZX0pLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnVuc3VwcG9ydGVkVXJsUHJvdG9jb2xdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQge3doYXR9OiBcInt1cmx9XCIuIFRlc3RDYWZlIGNhbm5vdCBleGVjdXRlIHRoZSB0ZXN0IGJlY2F1c2UgdGhlIHt3aGF0fSBpbmNsdWRlcyB0aGUge3Byb3RvY29sfSBwcm90b2NvbC4gVGVzdENhZmUgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBwcm90b2NvbHM6IGh0dHA6Ly8sIGh0dHBzOi8vIGFuZCBmaWxlOi8vLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnRlc3RDb250cm9sbGVyUHJveHlDYW5ub3RSZXNvbHZlVGVzdFJ1bl06ICAgICAgICAgICAgYENhbm5vdCBpbXBsaWNpdGx5IHJlc29sdmUgdGhlIHRlc3QgcnVuIGluIHRoZSBjb250ZXh0IG9mIHdoaWNoIHRoZSB0ZXN0IGNvbnRyb2xsZXIgYWN0aW9uIHNob3VsZCBiZSBleGVjdXRlZC4gVXNlIHRlc3QgZnVuY3Rpb24ncyAndCcgYXJndW1lbnQgaW5zdGVhZC5gLFxuICAgIFtSVU5USU1FX0VSUk9SUy50aW1lTGltaXRlZFByb21pc2VUaW1lb3V0RXhwaXJlZF06ICAgICAgICAgICAgICAgICAgICdBIFByb21pc2UgdGltZWQgb3V0LicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdFNldFZpZGVvT3B0aW9uc1dpdGhvdXRCYXNlVmlkZW9QYXRoU3BlY2lmaWVkXTogJ1lvdSBjYW5ub3QgbWFuYWdlIGFkdmFuY2VkIHZpZGVvIHBhcmFtZXRlcnMgd2hlbiB0aGUgdmlkZW8gcmVjb3JkaW5nIGNhcGFiaWxpdHkgaXMgb2ZmLiBTcGVjaWZ5IHRoZSByb290IHN0b3JhZ2UgZm9sZGVyIGZvciB2aWRlbyBjb250ZW50IHRvIGVuYWJsZSB2aWRlbyByZWNvcmRpbmcuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMubXVsdGlwbGVBUElNZXRob2RDYWxsRm9yYmlkZGVuXTogICAgICAgICAgICAgICAgICAgICAnWW91IGNhbm5vdCBjYWxsIHRoZSBcInttZXRob2ROYW1lfVwiIG1ldGhvZCBtb3JlIHRoYW4gb25jZS4gU3BlY2lmeSBhbiBhcnJheSBvZiBwYXJhbWV0ZXJzIGluc3RlYWQuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZFJlcG9ydGVyT3V0cHV0XTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlNwZWNpZnkgYSBmaWxlIG5hbWUgb3IgYSB3cml0YWJsZSBzdHJlYW0gYXMgdGhlIHJlcG9ydGVyJ3Mgb3V0cHV0IHRhcmdldC5cIixcbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90UmVhZFNTTENlcnRGaWxlXTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVW5hYmxlIHRvIHJlYWQgdGhlIGZpbGUgcmVmZXJlbmNlZCBieSB0aGUgXCJ7b3B0aW9ufVwiIHNzbCBvcHRpb24gKFwie3BhdGh9XCIpLiBFcnJvciBkZXRhaWxzOlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne2Vycn0nLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdFByZXBhcmVUZXN0c0R1ZVRvRXJyb3JdOiAnQ2Fubm90IHByZXBhcmUgdGVzdHMgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3I6XFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne2Vyck1lc3NhZ2V9JyxcblxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RQYXJzZVJhd0ZpbGVdOiAnQ2Fubm90IHBhcnNlIGEgcmF3IHRlc3QgZmlsZSBhdCBcIntwYXRofVwiIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yOlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7ZXJyTWVzc2FnZX0nLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLnRlc3RlZEFwcEZhaWxlZFdpdGhFcnJvcl06ICdUaGUgd2ViIGFwcGxpY2F0aW9uIGZhaWxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgZXJyb3I6XFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tlcnJNZXNzYWdlfScsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMudW5hYmxlVG9PcGVuQnJvd3Nlcl06ICdVbmFibGUgdG8gb3BlbiB0aGUgXCJ7YWxpYXN9XCIgYnJvd3NlciBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcjpcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7ZXJyTWVzc2FnZX0nLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLnJlcXVlc3RIb29rQ29uZmlndXJlQVBJRXJyb3JdOiAnQXR0ZW1wdCB0byBjb25maWd1cmUgYSByZXF1ZXN0IGhvb2sgcmVzdWx0ZWQgaW4gdGhlIGZvbGxvd2luZyBlcnJvcjpcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7cmVxdWVzdEhvb2tOYW1lfToge2Vyck1zZ30nLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLmZvcmJpZGRlbkNoYXJhdGVyc0luU2NyZWVuc2hvdFBhdGhdOiAnVGhlcmUgYXJlIGZvcmJpZGRlbiBjaGFyYWN0ZXJzIGluIHRoZSBcIntzY3JlZW5zaG90UGF0aH1cIiB7c2NyZWVuc2hvdFBhdGhUeXBlfTpcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcge2ZvcmJpZGRlbkNoYXJzRGVzY3JpcHRpb259JyxcblxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RGaW5kRkZNUEVHXTogJ1Rlc3RDYWZlIGNhbm5vdCByZWNvcmQgdmlkZW9zIGJlY2F1c2UgaXQgY2Fubm90IGxvY2F0ZSB0aGUgRkZtcGVnIGV4ZWN1dGFibGUuIFRyeSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzb2x1dGlvbnM6XFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKiBhZGQgdGhlIHBhdGggb2YgdGhlIEZGbXBlZyBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHRvIHRoZSBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLFxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyogc3BlY2lmeSB0aGUgcGF0aCBvZiB0aGUgRkZtcGVnIGV4ZWN1dGFibGUgaW4gdGhlIEZGTVBFR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSBmZm1wZWdQYXRoIG9wdGlvbixcXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqIGluc3RhbGwgdGhlIEBmZm1wZWctaW5zdGFsbGVyL2ZmbXBlZyBucG0gcGFja2FnZS4nLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRUeXBlc2NyaXB0Q29uZmlndXJhdGlvbkZpbGVdOiAgICAgICAgICAgICdcIntmaWxlUGF0aH1cIiBpcyBub3QgYSB2YWxpZCBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jbGllbnRTY3JpcHRJbml0aWFsaXplcklzTm90U3BlY2lmaWVkXTogICAgICAgICAgICAnSW5pdGlhbGl6ZSB5b3VyIGNsaWVudCBzY3JpcHQgd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZzogYSBKYXZhU2NyaXB0IHNjcmlwdCwgYSBKYXZhU2NyaXB0IGZpbGUgcGF0aCwgb3IgdGhlIG5hbWUgb2YgYSBKYXZhU2NyaXB0IG1vZHVsZS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jbGllbnRTY3JpcHRCYXNlUGF0aElzTm90U3BlY2lmaWVkXTogICAgICAgICAgICAgICAnU3BlY2lmeSB0aGUgYmFzZSBwYXRoIGZvciB0aGUgY2xpZW50IHNjcmlwdCBmaWxlLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNsaWVudFNjcmlwdEluaXRpYWxpemVyTXVsdGlwbGVDb250ZW50U291cmNlc106ICAgICdDbGllbnQgc2NyaXB0cyBjYW4gb25seSBoYXZlIG9uZSBpbml0aWFsaXplcjogSmF2YVNjcmlwdCBjb2RlLCBhIEphdmFTY3JpcHQgZmlsZSBwYXRoLCBvciB0aGUgbmFtZSBvZiBhIEphdmFTY3JpcHQgbW9kdWxlLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdExvYWRDbGllbnRTY3JpcHRGcm9tUGF0aF06ICAgICAgICAgICAgICAgICAgICdDYW5ub3QgbG9hZCBhIGNsaWVudCBzY3JpcHQgZnJvbSB7cGF0aH0uXFxue2Vycm9yTWVzc2FnZX0nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jbGllbnRTY3JpcHRNb2R1bGVFbnRyeVBvaW50UGF0aENhbGN1bGF0aW9uRXJyb3JdOiAnQSBjbGllbnQgc2NyaXB0IHRyaWVkIHRvIGxvYWQgYSBKYXZhU2NyaXB0IG1vZHVsZSB0aGF0IFRlc3RDYWZlIGNhbm5vdCBsb2NhdGU6XFxuXFxue2Vycm9yTWVzc2FnZX0uJyxcbiAgICBbUlVOVElNRV9FUlJPUlMubWV0aG9kSXNOb3RBdmFpbGFibGVGb3JBbklQQ0hvc3RdOiAgICAgICAgICAgICAgICAgJ1RoaXMgbWV0aG9kIGNhbm5vdCBiZSBjYWxsZWQgb24gYSBzZXJ2aWNlIGhvc3QuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMudG9vTGFyZ2VJUENQYXlsb2FkXTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBzcGVjaWZpZWQgcGF5bG9hZCBpcyB0b28gbGFyZ2UgdG8gZm9ybSBhbiBJUEMgcGFja2V0LicsXG4gICAgW1JVTlRJTUVfRVJST1JTLm1hbGZvcm1lZElQQ01lc3NhZ2VdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcHJvY2VzcyBhIG1hbGZvcm1lZCBJUEMgbWVzc2FnZS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy51bmV4cGVjdGVkSVBDSGVhZFBhY2tldF06ICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IGNyZWF0ZSBhbiBJUEMgbWVzc2FnZSBkdWUgdG8gYW4gdW5leHBlY3RlZCBJUEMgaGVhZCBwYWNrZXQuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMudW5leHBlY3RlZElQQ0JvZHlQYWNrZXRdOiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBjcmVhdGUgYW4gSVBDIG1lc3NhZ2UgZHVlIHRvIGFuIHVuZXhwZWN0ZWQgSVBDIGJvZHkgcGFja2V0LicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnVuZXhwZWN0ZWRJUENUYWlsUGFja2V0XTogICAgICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgY3JlYXRlIGFuIElQQyBtZXNzYWdlIGR1ZSB0byBhbiB1bmV4cGVjdGVkIElQQyB0YWlsIHBhY2tldC4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RSdW5Mb2NhbE5vbkhlYWRsZXNzQnJvd3NlcldpdGhvdXREaXNwbGF5XTpcbiAgICAgICAgJ1lvdXIgTGludXggdmVyc2lvbiBkb2VzIG5vdCBoYXZlIGEgZ3JhcGhpYyBzdWJzeXN0ZW0gdG8gcnVuIHticm93c2VyQWxpYXN9IHdpdGggYSBHVUkuICcgK1xuICAgICAgICAnWW91IGNhbiBsYXVuY2ggdGhlIGJyb3dzZXIgaW4gaGVhZGxlc3MgbW9kZS4gJyArXG4gICAgICAgICdJZiB5b3UgdXNlIGEgcG9ydGFibGUgYnJvd3NlciBleGVjdXRhYmxlLCAnICtcbiAgICAgICAgXCJzcGVjaWZ5IHRoZSBicm93c2VyIGFsaWFzIGJlZm9yZSB0aGUgcGF0aCBpbnN0ZWFkIG9mIHRoZSAncGF0aCcgcHJlZml4LiBcIiArXG4gICAgICAgIGBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlICR7RE9DVU1FTlRBVElPTl9MSU5LUy5IRUFETEVTU19NT0RFfWAsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMudW5jYXVnaHRFcnJvckluUmVwb3J0ZXJdOiAgICAgICAgICAgJ1RoZSBcInttZXRob2ROYW1lfVwiIG1ldGhvZCBvZiB0aGUgXCJ7cmVwb3J0ZXJOYW1lfVwiIHJlcG9ydGVyIHByb2R1Y2VkIGFuIHVuY2F1Z2h0IGVycm9yLiBFcnJvciBkZXRhaWxzOlxcbntvcmlnaW5hbEVycm9yfScsXG4gICAgW1JVTlRJTUVfRVJST1JTLnJvbGVJbml0aWFsaXplZFdpdGhSZWxhdGl2ZVVybF06ICAgICdZb3UgY2Fubm90IHNwZWNpZnkgcmVsYXRpdmUgbG9naW4gcGFnZSBVUkxzIGluIHRoZSBSb2xlIGNvbnN0cnVjdG9yLiBVc2UgYW4gYWJzb2x1dGUgVVJMLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLnR5cGVTY3JpcHRDb21waWxlckxvYWRpbmdFcnJvcl06ICAgICdDYW5ub3QgbG9hZCB0aGUgVHlwZVNjcmlwdCBjb21waWxlci5cXG57b3JpZ2luRXJyb3JNZXNzYWdlfS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RDdXN0b21pemVTcGVjaWZpZWRDb21waWxlcnNdOiAnWW91IGNhbm5vdCBzcGVjaWZ5IG9wdGlvbnMgZm9yIHRoZSB7bm9uY3VzdG9taXphYmxlQ29tcGlsZXJMaXN0fSBjb21waWxlcntzdWZmaXh9LicsXG5cbiAgICBbUlVOVElNRV9FUlJPUlMuY2Fubm90RW5hYmxlUmV0cnlUZXN0UGFnZXNPcHRpb25dOlxuICAgICAgICAnQ2Fubm90IGVuYWJsZSB0aGUgXFwncmV0cnlUZXN0UGFnZXNcXCcgb3B0aW9uLiBBcHBseSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0d28gc29sdXRpb25zOlxcbicgK1xuICAgICAgICAnLS0gc2V0IFxcJ2xvY2FsaG9zdFxcJyBhcyB0aGUgdmFsdWUgb2YgdGhlIFxcJ2hvc3RuYW1lXFwnIG9wdGlvblxcbicgK1xuICAgICAgICAnLS0gcnVuIFRlc3RDYWZlIG92ZXIgSFRUUFNcXG4nLFxuXG4gICAgW1JVTlRJTUVfRVJST1JTLmJyb3dzZXJDb25uZWN0aW9uRXJyb3JdOiAgICAgICAgICAgICAgICd7b3JpZ2luRXJyb3JNZXNzYWdlfVxcbntudW1PZk5vdE9wZW5lZENvbm5lY3Rpb259IG9mIHtudW1PZkFsbENvbm5lY3Rpb25zfSBicm93c2VyIGNvbm5lY3Rpb25zIGhhdmUgbm90IGJlZW4gZXN0YWJsaXNoZWQ6XFxue2xpc3RPZk5vdE9wZW5lZENvbm5lY3Rpb25zfVxcblxcbkhpbnRzOlxcbntsaXN0T2ZIaW50c30nLFxuICAgIFtCcm93c2VyQ29ubmVjdGlvbkVycm9ySGludC5Ub29IaWdoQ29uY3VycmVuY3lGYWN0b3JdOiAnVGhlIGhvc3QgbWFjaGluZSBtYXkgbm90IGJlIHBvd2VyZnVsIGVub3VnaCB0byBoYW5kbGUgdGhlIHNwZWNpZmllZCBjb25jdXJyZW5jeSBmYWN0b3IgKHtjb25jdXJyZW5jeUZhY3Rvcn0pLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RyeSB0byBkZWNyZWFzZSB0aGUgY29uY3VycmVuY3kgZmFjdG9yIG9yIGFsbG9jYXRlIG1vcmUgY29tcHV0aW5nIHJlc291cmNlcyB0byB0aGUgaG9zdCBtYWNoaW5lLicsXG4gICAgW0Jyb3dzZXJDb25uZWN0aW9uRXJyb3JIaW50LlVzZUJyb3dzZXJJbml0T3B0aW9uXTogICAgICAgICAgICAgICAnSW5jcmVhc2UgdGhlIHZhbHVlIG9mIHRoZSBcImJyb3dzZXJJbml0VGltZW91dFwiIG9wdGlvbiBpZiBpdCBpcyB0b28gbG93IChjdXJyZW50bHk6IHticm93c2VySW5pdFRpbWVvdXRNc2d9KS4gVGhpcyBvcHRpb24gZGV0ZXJtaW5lcyBob3cgbG9uZyBUZXN0Q2FmZSB3YWl0cyBmb3IgYnJvd3NlcnMgdG8gYmUgcmVhZHkuJyxcbiAgICBbQnJvd3NlckNvbm5lY3Rpb25FcnJvckhpbnQuUmVzdEVycm9yQ2F1c2VzXTogICAgICAgICAgICAgICAgICAgICdUaGUgZXJyb3IgY2FuIGFsc28gYmUgY2F1c2VkIGJ5IG5ldHdvcmsgaXNzdWVzIG9yIHJlbW90ZSBkZXZpY2UgZmFpbHVyZS4gTWFrZSBzdXJlIHRoYXQgeW91ciBuZXR3b3JrIGNvbm5lY3Rpb24gaXMgc3RhYmxlIGFuZCB5b3UgY2FuIHJlYWNoIHRoZSByZW1vdGUgZGV2aWNlLicsXG4gICAgW1JVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRUZXN0Y2FmZUNvbmZpZ3VyYXRpb25GaWxlXTogICAgICAgICAgICAnQ2Fubm90IGxvY2F0ZSBhIFRlc3RDYWZlIGNvbmZpZ3VyYXRpb24gZmlsZSBhdCB7ZmlsZVBhdGh9LiBFaXRoZXIgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIG9yIHRoZSBwYXRoIGlzIGludmFsaWQuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuZGFzaGJvYXJkVG9rZW5JbkpTT05dOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbnNlY3VyZSB0b2tlbiBkZWNsYXJhdGlvbjogY2Fubm90IGRlY2xhcmUgYSBEYXNoYm9hcmQgdG9rZW4gaW4gYSBKU09OIGNvbmZpZ3VyYXRpb24gZmlsZS4gVXNlIGEgSmF2YVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUsIG9yIGRlY2xhcmUgYSBEYXNoYm9hcmQgdG9rZW4gd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZzogdGhlIENMSSwgdGhlIFRlc3QgUnVubmVyIEFQSSwgdGhlIFRFU1RDQUZFX0RBU0hCT0FSRF9UT0tFTiBlbnZpcm9ubWVudCB2YXJpYWJsZS4nLFxuICAgIFtSVU5USU1FX0VSUk9SUy5yZWxhdGl2ZUJhc2VVcmxdOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSB2YWx1ZSBvZiB0aGUgYmFzZVVybCBhcmd1bWVudCBjYW5ub3QgYmUgcmVsYXRpdmU6IFwie2Jhc2VVcmx9XCInLFxuICAgIFtSVU5USU1FX0VSUk9SUy5yZXF1ZXN0VXJsSW52YWxpZFZhbHVlRXJyb3JdOiAgICAgICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCB1cmwgaXNuXFwndCB2YWxpZCAoe2FjdHVhbFZhbHVlfSkuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMucmVxdWVzdFJ1bnRpbWVFcnJvcl06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgcmVxdWVzdCB3YXMgaW50ZXJydXB0ZWQgYnkgYW4gZXJyb3I6XFxue21lc3NhZ2V9JyxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3RQcm9wZXJ0eV06ICAgICAgIGBUaGUgXCJ7b3B0aW9uTmFtZX1cIiBvcHRpb24gZG9lcyBub3QgZXhpc3QuIFVzZSB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29uZmlndXJlIHNraXBKc0Vycm9yczogJHtnZXRDb25jYXRlbmF0ZWRWYWx1ZXNTdHJpbmcoT2JqZWN0LmtleXMoU0tJUF9KU19FUlJPUlNfT1BUSU9OU19PQkpFQ1RfT1BUSU9OX05BTUVTKSl9LmAsXG4gICAgW1JVTlRJTUVfRVJST1JTLmludmFsaWRTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zUHJvcGVydHldOiBgVGhlIFwie29wdGlvbk5hbWV9XCIgb3B0aW9uIGRvZXMgbm90IGV4aXN0LiBVc2UgdGhlIGZvbGxvd2luZyBvcHRpb25zIHRvIGNvbmZpZ3VyZSBza2lwSnNFcnJvcnMgY2FsbGJhY2s6ICR7Z2V0Q29uY2F0ZW5hdGVkVmFsdWVzU3RyaW5nKE9iamVjdC5rZXlzKFNLSVBfSlNfRVJST1JTX0NBTExCQUNLX1dJVEhfT1BUSU9OU19PUFRJT05fTkFNRVMpKX0uYCxcbiAgICBbUlVOVElNRV9FUlJPUlMuaW52YWxpZENvbW1hbmRJbkpzb25Db21waWxlcl06ICAgICAgICAgICAgICAgICAgIGBUZXN0Q2FmZSB0ZXJtaW5hdGVkIHRoZSB0ZXN0IHJ1bi4gVGhlIFwie3BhdGh9XCIgZmlsZSBjb250YWlucyBhbiB1bmtub3duIENocm9tZSBVc2VyIEZsb3cgYWN0aW9uIFwie2FjdGlvbn1cIi4gUmVtb3ZlIHRoZSBhY3Rpb24gdG8gY29udGludWUuIFJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZSBmb3IgdGhlIGRlZmluaXRpdmUgbGlzdCBvZiBzdXBwb3J0ZWQgQ2hyb21lIFVzZXIgRmxvdyBhY3Rpb25zOiBodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDAzOTk4L2d1aWRlcy9leHBlcmltZW50YWwtY2FwYWJpbGl0aWVzL2Nocm9tZS1yZXBsYXktc3VwcG9ydCNzdXBwb3J0ZWQtcmVwbGF5LWFjdGlvbnNgLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkQ3VzdG9tQWN0aW9uc09wdGlvblR5cGVdOiAgICAgICAgICAgICAgICAgYFRoZSB2YWx1ZSBvZiB0aGUgY3VzdG9tQWN0aW9ucyBvcHRpb24gZG9lcyBub3QgYmVsb25nIHRvIHR5cGUgT2JqZWN0LiBSZWZlciB0byB0aGUgZm9sbG93aW5nIGFydGljbGUgZm9yIGN1c3RvbSBhY3Rpb24gc2V0dXAgaW5zdHJ1Y3Rpb25zOiAkeyBET0NVTUVOVEFUSU9OX0xJTktTLkNVU1RPTV9BQ1RJT05TIH1gLFxuICAgIFtSVU5USU1FX0VSUk9SUy5pbnZhbGlkQ3VzdG9tQWN0aW9uVHlwZV06ICAgICAgICAgICAgICAgICAgICAgICAgYFRlc3RDYWZlIGNhbm5vdCBwYXJzZSB0aGUgXCJ7YWN0aW9uTmFtZX1cIiBhY3Rpb24sIGJlY2F1c2UgdGhlIGFjdGlvbiBkZWZpbml0aW9uIGlzIGludmFsaWQuIEZvcm1hdCB0aGUgZGVmaW5pdGlvbiBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGN1c3RvbSBhY3Rpb25zIGd1aWRlOiAkeyBET0NVTUVOVEFUSU9OX0xJTktTLkNVU1RPTV9BQ1RJT05TIH1gLFxuICAgIFtSVU5USU1FX0VSUk9SUy5jYW5ub3RJbXBvcnRFU01JbkNvbW1vbnNKU106ICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBpbXBvcnQgdGhlIHtlc01vZHVsZX0gRUNNQVNjcmlwdCBtb2R1bGUgZnJvbSB7dGFyZ2V0RmlsZX0uIFVzZSBhIGR5bmFtaWMgaW1wb3J0KCkgc3RhdGVtZW50IG9yIGVuYWJsZSB0aGUgLS1lc20gQ0xJIGZsYWcuJyxcbiAgICBbUlVOVElNRV9FUlJPUlMuc2V0TmF0aXZlQXV0b21hdGlvbkZvclVuc3VwcG9ydGVkQnJvd3NlcnNdOiAgICAgICdUaGUgXCJ7YnJvd3Nlcn1cIiBkbyBub3Qgc3VwcG9ydCB0aGUgTmF0aXZlIEF1dG9tYXRpb24gbW9kZS4gUmVtb3ZlIHRoZSBcIm5hdGl2ZSBhdXRvbWF0aW9uXCIgb3B0aW9uIHRvIGNvbnRpbnVlLicsXG59O1xuIl19
@@ -315,6 +315,9 @@ exports.default = {
315
315
  [types_1.TEST_RUN_ERRORS.multipleWindowsModeIsNotSupportedInRemoteBrowserError]: err => `
316
316
  Multi-window mode is supported only in locally-installed Chrome, Chromium, Edge 84+ and Firefox. Run tests in these browsers to use the "${err.methodName}" method.
317
317
  `,
318
+ [types_1.TEST_RUN_ERRORS.multipleWindowsModeIsNotSupportedInNativeAutomationError]: () => `
319
+ The Native Automation mode does not support the use of multiple browser windows. Remove the "native automation" option to continue.
320
+ `,
318
321
  [types_1.TEST_RUN_ERRORS.cannotCloseWindowWithoutParent]: () => `
319
322
  Cannot close the window because it does not have a parent. The parent window was closed or you are attempting to close the root browser window where tests were launched.
320
323
  `,
@@ -362,4 +365,4 @@ exports.default = {
362
365
  `,
363
366
  };
364
367
  module.exports = exports.default;
365
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9ycy90ZXN0LXJ1bi90ZW1wbGF0ZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBOEM7QUFDOUMsb0NBQTJDO0FBQzNDLG1DQU9pQjtBQUNqQiwrQ0FBaUU7QUFHakUsTUFBTSxjQUFjLEdBQUc7SUFDbkIsY0FBYyxFQUFPLDBFQUEwRTtJQUMvRixtQkFBbUIsRUFBRSwrREFBK0Q7SUFDcEYsYUFBYSxFQUFRLDRFQUE0RTtJQUNqRyxtQkFBbUIsRUFBRSxtRkFBbUY7Q0FDM0csQ0FBQztBQUVGLGtCQUFlO0lBQ1gsQ0FBQyx1QkFBZSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztlQUN4QyxHQUFHLENBQUMsVUFBVSxxREFBcUQsR0FBRyxDQUFDLFdBQVc7S0FDNUY7SUFFRCxDQUFDLHVCQUFlLENBQUMsZ0NBQWdDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2VBQ2hELEdBQUcsQ0FBQyxVQUFVLDZEQUE2RCxHQUFHLENBQUMsV0FBVztLQUNwRztJQUVELENBQUMsdUJBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7ZUFDeEMsR0FBRyxDQUFDLFVBQVUsMERBQTBELEdBQUcsQ0FBQyxXQUFXO0tBQ2pHO0lBRUQsQ0FBQyx1QkFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztlQUN0QyxHQUFHLENBQUMsVUFBVSxzRUFBc0UsR0FBRyxDQUFDLFdBQVc7S0FDN0c7SUFFRCxDQUFDLHVCQUFlLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztxQ0FDUCxJQUFBLGlCQUFTLEVBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQzs7cUVBRWMsSUFBQSxpQkFBUyxFQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQzs7O1VBR3hH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LFVBQVU7S0FDOUg7SUFFRCxDQUFDLHVCQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2VBQ3RDLEdBQUcsQ0FBQyxZQUFZLCtEQUErRCxHQUFHLENBQUMsV0FBVztLQUN4RztJQUVELENBQUMsdUJBQWUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0VBQ00sR0FBRyxDQUFDLFlBQVksOENBQThDLEdBQUcsQ0FBQyxXQUFXLFdBQVcsR0FBRyxDQUFDLFlBQVk7S0FDdks7SUFFRCxDQUFDLHVCQUFlLENBQUMseUJBQXlCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUM1QixHQUFHLENBQUMsVUFBVSxpREFBaUQsR0FBRyxDQUFDLFdBQVcsV0FBVyxHQUFHLENBQUMsVUFBVTtLQUM5SDtJQUVELENBQUMsdUJBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7ZUFDaEQsR0FBRyxDQUFDLFVBQVUsa0NBQWtDLEdBQUcsQ0FBQyxZQUFZOztlQUVoRSxHQUFHLENBQUMsVUFBVTtVQUNuQixJQUFBLG9DQUEyQixFQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUM7S0FDaEU7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXNjYXBlIGFzIGVzY2FwZUh0bWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgVEVTVF9SVU5fRVJST1JTIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgICByZW5kZXJGb3JiaWRkZW5DaGFyc0xpc3QsXG4gICAgcmVuZGVyRGlmZixcbiAgICBmb3JtYXRTZWxlY3RvckNhbGxzdGFjayxcbiAgICBmb3JtYXRVcmwsXG4gICAgcmVwbGFjZUxlYWRpbmdTcGFjZXNXaXRoTmJzcCxcbiAgICBmb3JtYXRFeHByZXNzaW9uTWVzc2FnZSxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZXRDb25jYXRlbmF0ZWRWYWx1ZXNTdHJpbmcgfSBmcm9tICcuLi8uLi91dGlscy9zdHJpbmcnO1xuXG5cbmNvbnN0IEVYVEVSTkFMX0xJTktTID0ge1xuICAgIGNyZWF0ZU5ld0lzc3VlOiAgICAgICdodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy90ZXN0Y2FmZS9pc3N1ZXMvbmV3P3RlbXBsYXRlPWJ1Zy1yZXBvcnQubWQnLFxuICAgIHRyb3VibGVzaG9vdE5ldHdvcms6ICdodHRwczovL2dvLmRldmV4cHJlc3MuY29tL1Rlc3RDYWZlX0ZBUV9BUmVxdWVzdEhhc0ZhaWxlZC5hc3B4JyxcbiAgICB2aWV3cG9ydFNpemVzOiAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL0RldkV4cHJlc3MvZGV2aWNlLXNwZWNzL2Jsb2IvbWFzdGVyL3ZpZXdwb3J0LXNpemVzLmpzb24nLFxuICAgIHNraXBKc0Vycm9yc1JlY2lwZXM6ICdodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDA0MDM4L3JlY2lwZXMvZGVidWdnaW5nL3NraXAtamF2YXNjcmlwdC1lcnJvcnMnLFxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uSW50ZWdlck9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgYW4gaW50ZWdlciwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uUG9zaXRpdmVJbnRlZ2VyT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBpcyBleHBlY3RlZCB0byBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkJvb2xlYW5PcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGEgYm9vbGVhbiB2YWx1ZSwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU3BlZWRPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyIGJldHdlZW4gMC4wMSBhbmQgMSwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMucGFnZUxvYWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEZhaWxlZCB0byBsb2FkIHRoZSBwYWdlIGF0ICR7Zm9ybWF0VXJsKGVyci51cmwpfS5cbiAgICAgICAgSW5jcmVhc2UgdGhlIHZhbHVlIG9mIHRoZSBcInBhZ2VSZXF1ZXN0VGltZW91dFwiIHZhcmlhYmxlLCBlbmFibGUgdGhlIFwicmV0cnlUZXN0UGFnZXNcIiBvcHRpb24sIG9yIHVzZSBxdWFyYW50aW5lIG1vZGUgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgdGhpcyB0ZXN0LlxuICAgICAgICBZb3UgY2FuIGZpbmQgdHJvdWJsZXNob290aW5nIGluZm9ybWF0aW9uIGZvciB0aGlzIGlzc3VlIGF0ICR7Zm9ybWF0VXJsKEVYVEVSTkFMX0xJTktTLnRyb3VibGVzaG9vdE5ldHdvcmspfS5cblxuICAgICAgICBFcnJvciBkZXRhaWxzOlxuICAgICAgICAke2Vyci5lcnJNc2d9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvck9uUGFnZV06IGVyciA9PiBgXG4gICAgICAgIEEgSmF2YVNjcmlwdCBlcnJvciBvY2N1cnJlZCBvbiAke2Zvcm1hdFVybChlcnIucGFnZURlc3RVcmwpfS5cbiAgICAgICAgUmVwZWF0IHRlc3QgYWN0aW9ucyBpbiB0aGUgYnJvd3NlciBhbmQgY2hlY2sgdGhlIGNvbnNvbGUgZm9yIGVycm9ycy5cbiAgICAgICAgRW5hYmxlIHRoZSDigJxza2lwSnNFcnJvcnPigJ0gb3B0aW9uIHRvIGlnbm9yZSBKYXZhU2NyaXB0IGVycm9ycyBkdXJpbmcgdGVzdCBleGVjdXRpb24uIExlYXJuIG1vcmU6ICR7Zm9ybWF0VXJsKEVYVEVSTkFMX0xJTktTLnNraXBKc0Vycm9yc1JlY2lwZXMpfVxuICAgICAgICBJZiB0aGUgd2Vic2l0ZSBvbmx5IHRocm93cyB0aGlzIGVycm9yIHdoZW4geW91IHRlc3QgaXQgd2l0aCBUZXN0Q2FmZSwgcGxlYXNlIGNyZWF0ZSBhIG5ldyBpc3N1ZSBhdDpcbiAgICAgICAgJHtmb3JtYXRVcmwoRVhURVJOQUxfTElOS1MuY3JlYXRlTmV3SXNzdWUpfS5cblxuICAgICAgICBKYXZhU2NyaXB0IGVycm9yIGRldGFpbHM6XG4gICAgICAgICR7cmVwbGFjZUxlYWRpbmdTcGFjZXNXaXRoTmJzcChlc2NhcGVIdG1sKGVyci5lcnJTdGFjaykpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJblRlc3RDb2RlXTogZXJyID0+IGBcbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLm5hdGl2ZURpYWxvZ05vdEhhbmRsZWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEEgbmF0aXZlICR7ZXJyLmRpYWxvZ1R5cGV9IGRpYWxvZyB3YXMgaW52b2tlZCBvbiBwYWdlICR7Zm9ybWF0VXJsKGVyci5wYWdlVXJsKX0sIGJ1dCBubyBoYW5kbGVyIHdhcyBzZXQgZm9yIGl0LiBVc2UgdGhlIFwic2V0TmF0aXZlRGlhbG9nSGFuZGxlclwiIGZ1bmN0aW9uIHRvIGludHJvZHVjZSBhIGhhbmRsZXIgZnVuY3Rpb24gZm9yIG5hdGl2ZSBkaWFsb2dzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJbk5hdGl2ZURpYWxvZ0hhbmRsZXJdOiBlcnIgPT4gYFxuICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCBpbiB0aGUgbmF0aXZlIGRpYWxvZyBoYW5kbGVyIGNhbGxlZCBmb3IgYSBuYXRpdmUgJHtlcnIuZGlhbG9nVHlwZX0gZGlhbG9nIG9uIHBhZ2UgJHtmb3JtYXRVcmwoZXJyLnBhZ2VVcmwpfTpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuc2V0VGVzdFNwZWVkQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFNwZWVkIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyIGJldHdlZW4gMC4wMSBhbmQgMSwgYnV0ICR7ZXJyLmFjdHVhbFZhbHVlfSB3YXMgcGFzc2VkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnNldE5hdGl2ZURpYWxvZ0hhbmRsZXJDb2RlV3JvbmdUeXBlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgbmF0aXZlIGRpYWxvZyBoYW5kbGVyIGlzIGV4cGVjdGVkIHRvIGJlIGEgZnVuY3Rpb24sIENsaWVudEZ1bmN0aW9uIG9yIG51bGwsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVHlwZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvckluQ2xpZW50RnVuY3Rpb25Db2RlXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgaW4gJHtlcnIuaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZX0gY29kZTpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvckluQ3VzdG9tRE9NUHJvcGVydHlDb2RlXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiB0cnlpbmcgdG8gY2FsY3VsYXRlIGEgY3VzdG9tIFNlbGVjdG9yIHByb3BlcnR5IFwiJHtlcnIucHJvcGVydHl9XCI6XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNsaWVudEZ1bmN0aW9uRXhlY3V0aW9uSW50ZXJydXB0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICAke2Vyci5pbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBleGVjdXRpb24gd2FzIGludGVycnVwdGVkIGJ5IHBhZ2UgdW5sb2FkLiBUaGlzIHByb2JsZW0gbWF5IGFwcGVhciBpZiB5b3UgdHJpZ2dlciBwYWdlIG5hdmlnYXRpb24gZnJvbSAke2Vyci5pbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBjb2RlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0Tm9uRXJyb3JPYmplY3RJblRlc3RDb2RlXTogZXJyID0+IGBcbiAgICAgICAgVW5jYXVnaHQgJHtlcnIub2JqVHlwZX0gXCIke2VzY2FwZUh0bWwoZXJyLm9ialN0cil9XCIgd2FzIHRocm93bi4gVGhyb3cgRXJyb3IgaW5zdGVhZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uXTogZXJyID0+IGBcbiAgICAgICAgVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEV4Y2VwdGlvbl06IGVyciA9PiBgXG4gICAgICAgIFVuY2F1Z2h0IGV4Y2VwdGlvbjpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uT3B0aW9uc1R5cGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEFjdGlvbiBvcHRpb25zIGlzIGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgbnVsbCBvciB1bmRlZmluZWQgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxUeXBlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TdHJpbmdBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZywgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQm9vbGVhbkFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBib29sZWFuIHZhbHVlLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25OdWxsYWJsZVN0cmluZ0FyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBudWxsIG9yIGEgc3RyaW5nLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TdHJpbmdPclN0cmluZ0FycmF5QXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmcgYXJyYXksIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblN0cmluZ0FycmF5RWxlbWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgRWxlbWVudHMgb2YgdGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGFyZSBleHBlY3RlZCB0byBiZSBub24tZW1wdHkgc3RyaW5ncywgYnV0IHRoZSBlbGVtZW50IGF0IGluZGV4ICR7ZXJyLmVsZW1lbnRJbmRleH0gd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25SZXF1aXJlZENvb2tpZUFyZ3VtZW50c106ICgpID0+IGBcbiAgICAgICAgVGhlIG1hbmRhdG9yeSBcImNvb2tpZXNcIiBhcmd1bWVudCBpcyBtaXNzaW5nLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkNvb2tpZUFyZ3VtZW50RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCJjb29raWVzXCIgYXJndW1lbnQgZG9lcyBub3QgYmVsb25nIHRvIGFuIGFjY2VwdGFibGUgZGF0YSB0eXBlOiBPYmplY3QsIFN0cmluZywgb3IgQXJyYXkgb2Ygb2JqZWN0cyBvciBzdHJpbmdzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkNvb2tpZUFyZ3VtZW50c0Vycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIGNvb2tpZSBudW1iZXIgJHtlcnIuaW5kZXggKyAxfSAoJHtlcnIuYWN0dWFsVmFsdWV9KSBkb2VzIG5vdCBiZWxvbmcgdG8gYW4gYWNjZXB0YWJsZSBkYXRhIHR5cGU6IE9iamVjdCBvciBTdHJpbmcuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uVXJsQ29va2llQXJndW1lbnRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ291bGQgbm90IHBhcnNlIHRoZSB1cmwgcGFyYW1ldGVyLiBDaGVjayB0aGUgdmFsdWUgZm9yIGZvcm1hdHRpbmcgZXJyb3JzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblVybHNDb29raWVBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQ291bGQgbm90IHBhcnNlIHVybCBudW1iZXIgJHtlcnIuaW5kZXggKyAxfSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gQ2hlY2sgdGhlIHZhbHVlIGZvciBmb3JtYXR0aW5nIGVycm9ycy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25JbnRlZ2VyQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Sb2xlQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIFJvbGUgaW5zdGFuY2UsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkZ1bmN0aW9uQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIGZ1bmN0aW9uLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Qb3NpdGl2ZUludGVnZXJBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudE5vdEZvdW5kRXJyb3JdOiAoZXJyLCB2aWV3cG9ydFdpZHRoKSA9PiBgXG4gICAgICAgIFRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgZG9lcyBub3QgbWF0Y2ggYW55IGVsZW1lbnQgaW4gdGhlIERPTSB0cmVlLlxuXG4gICAgICAgICR7Zm9ybWF0U2VsZWN0b3JDYWxsc3RhY2soZXJyLmFwaUZuQ2hhaW4sIGVyci5hcGlGbkluZGV4LCB2aWV3cG9ydFdpZHRoKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50SXNJbnZpc2libGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIucmVhc29uKSB8fCAnVGhlIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgaXMgbm90IHZpc2libGUuJ31cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50SXNOb3RUYXJnZXRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgaXMgY292ZXJlZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TZWxlY3Rvck1hdGNoZXNXcm9uZ05vZGVUeXBlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgc3BlY2lmaWVkIHNlbGVjdG9yIGlzIGV4cGVjdGVkIHRvIG1hdGNoIGEgRE9NIGVsZW1lbnQsIGJ1dCBpdCBtYXRjaGVzIGEgJHtlcnIubm9kZURlc2NyaXB0aW9ufSBub2RlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkFkZGl0aW9uYWxFbGVtZW50Tm90Rm91bmRFcnJvcl06IChlcnIsIHZpZXdwb3J0V2lkdGgpID0+IGBcbiAgICAgICAgVGhlIHNwZWNpZmllZCBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBkb2VzIG5vdCBtYXRjaCBhbnkgZWxlbWVudCBpbiB0aGUgRE9NIHRyZWUuXG5cbiAgICAgICAgJHtmb3JtYXRTZWxlY3RvckNhbGxzdGFjayhlcnIuYXBpRm5DaGFpbiwgZXJyLmFwaUZuSW5kZXgsIHZpZXdwb3J0V2lkdGgpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkFkZGl0aW9uYWxFbGVtZW50SXNJbnZpc2libGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIucmVhc29uKSB8fCBgVGhlIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgaXMgbm90IHZpc2libGUuYH1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25BZGRpdGlvbmFsU2VsZWN0b3JNYXRjaGVzV3JvbmdOb2RlVHlwZUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHNwZWNpZmllZCBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBpcyBleHBlY3RlZCB0byBtYXRjaCBhIERPTSBlbGVtZW50LCBidXQgaXQgbWF0Y2hlcyBhICR7ZXJyLm5vZGVEZXNjcmlwdGlvbn0gbm9kZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50Tm9uRWRpdGFibGVFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGFjdGlvbiBlbGVtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGVkaXRhYmxlIChhbiBpbnB1dCwgdGV4dGFyZWEgb3IgZWxlbWVudCB3aXRoIHRoZSBjb250ZW50RWRpdGFibGUgYXR0cmlidXRlKS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50Tm9uQ29udGVudEVkaXRhYmxlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBpcyBleHBlY3RlZCB0byBoYXZlIHRoZSBjb250ZW50RWRpdGFibGUgYXR0cmlidXRlIGVuYWJsZWQgb3IgdGhlIGVudGlyZSBkb2N1bWVudCBzaG91bGQgYmUgaW4gZGVzaWduIG1vZGUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uUm9vdENvbnRhaW5lck5vdEZvdW5kRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENvbnRlbnQgYmV0d2VlbiB0aGUgYWN0aW9uIGVsZW1lbnRzIGNhbm5vdCBiZSBzZWxlY3RlZCBiZWNhdXNlIHRoZSByb290IGNvbnRhaW5lciBmb3IgdGhlIHNlbGVjdGlvbiByYW5nZSBjYW5ub3QgYmUgZm91bmQsIGkuZS4gdGhlc2UgZWxlbWVudHMgZG8gbm90IGhhdmUgYSBjb21tb24gYW5jZXN0b3Igd2l0aCB0aGUgY29udGVudEVkaXRhYmxlIGF0dHJpYnV0ZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50SXNOb3RGaWxlSW5wdXRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIHNwZWNpZmllZCBzZWxlY3RvciBkb2VzIG5vdCBtYXRjaCBhIGZpbGUgaW5wdXQgZWxlbWVudC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25DYW5ub3RGaW5kRmlsZVRvVXBsb2FkRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBDYW5ub3QgZmluZCB0aGUgZm9sbG93aW5nIGZpbGUocykgdG8gdXBsb2FkOlxuICAgICAgICAke2Vyci5maWxlUGF0aHMubWFwKHBhdGggPT4gZXNjYXBlSHRtbChwYXRoKSkuam9pbignXFxuJyl9XG5cbiAgICAgICAgVGhlIGZvbGxvd2luZyBsb2NhdGlvbnMgd2VyZSBzY2FubmVkIGZvciB0aGUgbWlzc2luZyB1cGxvYWQgZmlsZXM6XG4gICAgICAgICR7ZXJyLnNjYW5uZWRGaWxlUGF0aHMubWFwKHBhdGggPT4gZXNjYXBlSHRtbChwYXRoKSkuam9pbignXFxuJyl9XG5cbiAgICAgICAgRW5zdXJlIHRoZXNlIGZpbGVzIGV4aXN0IG9yIGNoYW5nZSB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudE5vdFRleHRBcmVhRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBhY3Rpb24gZWxlbWVudCBpcyBleHBlY3RlZCB0byBiZSBhICZsdDt0ZXh0YXJlYSZndDsuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudE5vdElmcmFtZUVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgYWN0aW9uIGVsZW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gJmx0O2lmcmFtZSZndC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25JbmNvcnJlY3RLZXlzRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgY29udGFpbnMgYW4gaW5jb3JyZWN0IGtleSBvciBrZXkgY29tYmluYXRpb24uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uVW5zdXBwb3J0ZWREZXZpY2VUeXBlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgc3BlY2lmaWVzIGFuIHVuc3VwcG9ydGVkIFwiJHtlcnIuYWN0dWFsVmFsdWV9XCIgZGV2aWNlLiBGb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBkZXZpY2VzLCByZWZlciB0byAke2Zvcm1hdFVybChFWFRFUk5BTF9MSU5LUy52aWV3cG9ydFNpemVzKX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uSW52YWxpZFNjcm9sbFRhcmdldEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVW5hYmxlIHRvIHNjcm9sbCB0byB0aGUgc3BlY2lmaWVkIHBvaW50IGJlY2F1c2UgYSBwb2ludCB3aXRoIHRoZSBzcGVjaWZpZWQgJHtlcnIucHJvcGVydGllc30gaXMgbm90IGxvY2F0ZWQgaW5zaWRlIHRoZSBlbGVtZW50J3MgY3JvcHBpbmcgcmVnaW9uLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbklmcmFtZUlzTm90TG9hZGVkRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENvbnRlbnQgb2YgdGhlIGlmcmFtZSB0byB3aGljaCB5b3UgYXJlIHN3aXRjaGluZyBkaWQgbm90IGxvYWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY3VycmVudElmcmFtZUlzTm90TG9hZGVkRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENvbnRlbnQgb2YgdGhlIGlmcmFtZSBpbiB3aGljaCB0aGUgdGVzdCBpcyBjdXJyZW50bHkgb3BlcmF0aW5nIGRpZCBub3QgbG9hZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jdXJyZW50SWZyYW1lTm90Rm91bmRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGlmcmFtZSBpbiB3aGljaCB0aGUgdGVzdCBpcyBjdXJyZW50bHkgb3BlcmF0aW5nIGRvZXMgbm90IGV4aXN0IGFueW1vcmUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY3VycmVudElmcmFtZUlzSW52aXNpYmxlRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBpZnJhbWUgaW4gd2hpY2ggdGhlIHRlc3QgaXMgY3VycmVudGx5IG9wZXJhdGluZyBpcyBub3QgdmlzaWJsZSBhbnltb3JlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLm1pc3NpbmdBd2FpdEVycm9yXTogKCkgPT4gYFxuICAgICAgICBBIGNhbGwgdG8gYW4gYXN5bmMgZnVuY3Rpb24gaXMgbm90IGF3YWl0ZWQuIFVzZSB0aGUgXCJhd2FpdFwiIGtleXdvcmQgYmVmb3JlIGFjdGlvbnMsIGFzc2VydGlvbnMgb3IgY2hhaW5zIG9mIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhleSBydW4gaW4gdGhlIHJpZ2h0IHNlcXVlbmNlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmV4dGVybmFsQXNzZXJ0aW9uTGlicmFyeUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuXG4gICAgICAgICR7cmVuZGVyRGlmZihlcnIuZGlmZil9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuZG9tTm9kZUNsaWVudEZ1bmN0aW9uUmVzdWx0RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICR7ZXJyLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IGNhbm5vdCByZXR1cm4gRE9NIGVsZW1lbnRzLiBVc2UgU2VsZWN0b3IgZnVuY3Rpb25zIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuaW52YWxpZFNlbGVjdG9yUmVzdWx0RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIEZ1bmN0aW9uIHRoYXQgc3BlY2lmaWVzIGEgc2VsZWN0b3IgY2FuIG9ubHkgcmV0dXJuIGEgRE9NIG5vZGUsIGFuIGFycmF5IG9mIG5vZGVzLCBOb2RlTGlzdCwgSFRNTENvbGxlY3Rpb24sIG51bGwgb3IgdW5kZWZpbmVkLiBVc2UgQ2xpZW50RnVuY3Rpb24gdG8gcmV0dXJuIG90aGVyIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TZWxlY3RvckVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQWN0aW9uIFwiJHtlcnIuc2VsZWN0b3JOYW1lfVwiIGFyZ3VtZW50IGVycm9yOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jYW5ub3RPYnRhaW5JbmZvRm9yRWxlbWVudFNwZWNpZmllZEJ5U2VsZWN0b3JFcnJvcl06IChlcnIsIHZpZXdwb3J0V2lkdGgpID0+IGBcbiAgICAgICAgQ2Fubm90IG9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbm9kZSBiZWNhdXNlIHRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgZG9lcyBub3QgbWF0Y2ggYW55IG5vZGUgaW4gdGhlIERPTSB0cmVlLlxuXG4gICAgICAgICR7Zm9ybWF0U2VsZWN0b3JDYWxsc3RhY2soZXJyLmFwaUZuQ2hhaW4sIGVyci5hcGlGbkluZGV4LCB2aWV3cG9ydFdpZHRoKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy53aW5kb3dEaW1lbnNpb25zT3ZlcmZsb3dFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVW5hYmxlIHRvIHJlc2l6ZSB0aGUgd2luZG93IGJlY2F1c2UgdGhlIHNwZWNpZmllZCBzaXplIGV4Y2VlZHMgdGhlIHNjcmVlbiBzaXplLiBPbiBtYWNPUywgYSB3aW5kb3cgY2Fubm90IGJlIGxhcmdlciB0aGFuIHRoZSBzY3JlZW4uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuZm9yYmlkZGVuQ2hhcmFjdGVyc0luU2NyZWVuc2hvdFBhdGhFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZXJlIGFyZSBmb3JiaWRkZW4gY2hhcmFjdGVycyBpbiB0aGUgXCIke2Vyci5zY3JlZW5zaG90UGF0aH1cIiBzY3JlZW5zaG90IHBhdGg6XG4gICAgICAgICR7cmVuZGVyRm9yYmlkZGVuQ2hhcnNMaXN0KGVyci5mb3JiaWRkZW5DaGFyc0xpc3QpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmludmFsaWRFbGVtZW50U2NyZWVuc2hvdERpbWVuc2lvbnNFcnJvcl06IGVyciA9PiBgXG4gICAgICAgICBVbmFibGUgdG8gY2FwdHVyZSBhbiBlbGVtZW50IGltYWdlIGJlY2F1c2UgdGhlIHJlc3VsdGluZyBpbWFnZSAke2Vyci5kaW1lbnNpb25zfSAke2Vyci52ZXJifSB6ZXJvIG9yIG5lZ2F0aXZlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnJvbGVTd2l0Y2hJblJvbGVJbml0aWFsaXplckVycm9yXTogKCkgPT4gYFxuICAgICAgICBSb2xlIGNhbm5vdCBiZSBzd2l0Y2hlZCB3aGlsZSBhbm90aGVyIHJvbGUgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYXNzZXJ0aW9uRXhlY3V0YWJsZUFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBDYW5ub3QgZXZhbHVhdGUgdGhlIFwiJHtlcnIuYWN0dWFsVmFsdWV9XCIgZXhwcmVzc2lvbiBpbiB0aGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgcGFyYW1ldGVyIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBlcnJvcjpcblxuICAgICAgICAke2Vyci5lcnJNc2d9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYXNzZXJ0aW9uV2l0aG91dE1ldGhvZENhbGxFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQW4gYXNzZXJ0aW9uIG1ldGhvZCBpcyBub3Qgc3BlY2lmaWVkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFzc2VydGlvblVuYXdhaXRlZFByb21pc2VFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQXR0ZW1wdGVkIHRvIHJ1biBhc3NlcnRpb25zIG9uIGEgUHJvbWlzZSBvYmplY3QuIERpZCB5b3UgZm9yZ2V0IHRvIGF3YWl0IGl0PyBJZiBub3QsIHBhc3MgXCJ7IGFsbG93VW5hd2FpdGVkUHJvbWlzZTogdHJ1ZSB9XCIgdG8gdGhlIGFzc2VydGlvbiBvcHRpb25zLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnJlcXVlc3RIb29rTm90SW1wbGVtZW50ZWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFlvdSBzaG91bGQgaW1wbGVtZW50IHRoZSBcIiR7ZXJyLm1ldGhvZE5hbWV9XCIgbWV0aG9kIGluIHRoZSBcIiR7ZXJyLmhvb2tDbGFzc05hbWV9XCIgY2xhc3MuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMucmVxdWVzdEhvb2tVbmhhbmRsZWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEFuIHVuaGFuZGxlZCBlcnJvciBvY2N1cnJlZCBpbiB0aGUgXCIke2Vyci5tZXRob2ROYW1lfVwiIG1ldGhvZCBvZiB0aGUgXCIke2Vyci5ob29rQ2xhc3NOYW1lfVwiIGNsYXNzOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9ySW5DdXN0b21DbGllbnRTY3JpcHRDb2RlXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgaW4gYSBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgdGVzdGVkIHBhZ2U6XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJbkN1c3RvbUNsaWVudFNjcmlwdENvZGVMb2FkZWRGcm9tTW9kdWxlXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgaW4gdGhlICcke2Vyci5tb2R1bGVOYW1lfScgbW9kdWxlIGluamVjdGVkIGludG8gdGhlIHRlc3RlZCBwYWdlLiBNYWtlIHN1cmUgdGhhdCB0aGlzIG1vZHVsZSBjYW4gYmUgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIgZW52aXJvbm1lbnQuXG5cbiAgICAgICAgRXJyb3IgZGV0YWlsczpcbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJbkN1c3RvbVNjcmlwdF06IGVyciA9PiBgXG4gICAgICAgIEFuIHVuaGFuZGxlZCBlcnJvciBvY2N1cnJlZCBpbiB0aGUgY3VzdG9tIHNjcmlwdDpcblxuICAgICAgICBFcnJvciBkZXRhaWxzOiAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG5cbiAgICAgICAgJHtmb3JtYXRFeHByZXNzaW9uTWVzc2FnZShlcnIuZXhwcmVzc2lvbiwgZXJyLmxpbmUsIGVyci5jb2x1bW4pfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNoaWxkV2luZG93SXNOb3RMb2FkZWRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIHBhZ2UgaW4gdGhlIGNoaWxkIHdpbmRvdyBpcyBub3QgbG9hZGVkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNoaWxkV2luZG93Tm90Rm91bmRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGNoaWxkIHdpbmRvdyBpcyBub3QgZm91bmQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2Fubm90U3dpdGNoVG9XaW5kb3dFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ2Fubm90IHN3aXRjaCB0byB0aGUgd2luZG93LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNsb3NlQ2hpbGRXaW5kb3dFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgY2xvc2luZyBjaGlsZCB3aW5kb3dzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNoaWxkV2luZG93Q2xvc2VkQmVmb3JlU3dpdGNoaW5nRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBjaGlsZCB3aW5kb3cgd2FzIGNsb3NlZCBiZWZvcmUgVGVzdENhZmUgY291bGQgc3dpdGNoIHRvIGl0LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNhbm5vdENsb3NlV2luZG93V2l0aENoaWxkcmVuRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENhbm5vdCBjbG9zZSBhIHdpbmRvdyB0aGF0IGhhcyBhbiBvcGVuIGNoaWxkIHdpbmRvdy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy50YXJnZXRXaW5kb3dOb3RGb3VuZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBDYW5ub3QgZmluZCB0aGUgd2luZG93IHNwZWNpZmllZCBpbiB0aGUgYWN0aW9uIHBhcmFtZXRlcnMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMucGFyZW50V2luZG93Tm90Rm91bmRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ2Fubm90IGZpbmQgdGhlIHBhcmVudCB3aW5kb3cuIE1ha2Ugc3VyZSB0aGF0IHRoZSB0ZXN0ZWQgd2luZG93IHdhcyBvcGVuZWQgZnJvbSBhbm90aGVyIHdpbmRvdy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5wcmV2aW91c1dpbmRvd05vdEZvdW5kRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENhbm5vdCBmaW5kIHRoZSBwcmV2aW91cyB3aW5kb3cuIE1ha2Ugc3VyZSB0aGF0IHRoZSBwcmV2aW91cyB3aW5kb3cgaXMgb3BlbmVkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnN3aXRjaFRvV2luZG93UHJlZGljYXRlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCBpbnNpZGUgdGhlIFwic3dpdGNoVG9XaW5kb3dcIiBhcmd1bWVudCBmdW5jdGlvbi5cblxuICAgICAgICBFcnJvciBkZXRhaWxzOlxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMubXVsdGlwbGVXaW5kb3dzTW9kZUlzRGlzYWJsZWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIE11bHRpLXdpbmRvdyBtb2RlIGlzIGRpc2FibGVkLiBUbyB1c2UgdGhlIFwiJHtlcnIubWV0aG9kTmFtZX1cIiBtZXRob2QsIHJlbW92ZSB0aGUgXCJkaXNhYmxlTXVsdGlwbGVXaW5kb3dzXCIgb3B0aW9uLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLm11bHRpcGxlV2luZG93c01vZGVJc05vdFN1cHBvcnRlZEluUmVtb3RlQnJvd3NlckVycm9yXTogZXJyID0+IGBcbiAgICAgICAgTXVsdGktd2luZG93IG1vZGUgaXMgc3VwcG9ydGVkIG9ubHkgaW4gbG9jYWxseS1pbnN0YWxsZWQgQ2hyb21lLCBDaHJvbWl1bSwgRWRnZSA4NCsgYW5kIEZpcmVmb3guIFJ1biB0ZXN0cyBpbiB0aGVzZSBicm93c2VycyB0byB1c2UgdGhlIFwiJHtlcnIubWV0aG9kTmFtZX1cIiBtZXRob2QuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2Fubm90Q2xvc2VXaW5kb3dXaXRob3V0UGFyZW50XTogKCkgPT4gYFxuICAgICAgICBDYW5ub3QgY2xvc2UgdGhlIHdpbmRvdyBiZWNhdXNlIGl0IGRvZXMgbm90IGhhdmUgYSBwYXJlbnQuIFRoZSBwYXJlbnQgd2luZG93IHdhcyBjbG9zZWQgb3IgeW91IGFyZSBhdHRlbXB0aW5nIHRvIGNsb3NlIHRoZSByb290IGJyb3dzZXIgd2luZG93IHdoZXJlIHRlc3RzIHdlcmUgbGF1bmNoZWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2Fubm90UmVzdG9yZUNoaWxkV2luZG93RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIEZhaWxlZCB0byByZXN0b3JlIGNvbm5lY3Rpb24gdG8gd2luZG93IHdpdGhpbiB0aGUgYWxsb2NhdGVkIHRpbWVvdXQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuZXhlY3V0aW9uVGltZW91dEV4Y2VlZGVkXTogZXJyID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2Vyci5zY29wZX0gdGltZW91dCBvZiAke2Vyci50aW1lb3V0fW1zIGV4Y2VlZGVkLmA7XG4gICAgfSxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU3RyaW5nT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBTdHJpbmcgdHlwZSB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU3RyaW5nT3JSZWdleE9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgU3RyaW5nIG9yIFJlZ2V4IHR5cGUgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkRhdGVPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIERhdGUgdHlwZSB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uTnVtYmVyT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBOdW1iZXIgdHlwZSB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uVXJsT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBzdHJpbmcgb3IgVVJMIHR5cGVzIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25VcmxTZWFyY2hQYXJhbXNPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIG9iamVjdCBvciBVUkxTZWFyY2hQYXJhbXMgdHlwZXMgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbk9iamVjdE9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgb2JqZWN0IHR5cGVzIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25VcmxBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGFuIFVSTCBvciBhIHN0cmluZywgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU2tpcEpzRXJyb3JzQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIENhbm5vdCBleGVjdXRlIHRoZSBza2lwSnNFcnJvcnMgbWV0aG9kLiBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgZGF0YSB0eXBlczogQm9vbGVhbiwgT2JqZWN0LCBGdW5jdGlvbi5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25GdW5jdGlvbk9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgZnVuY3Rpb24gdHlwZXMgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkludmFsaWRPYmplY3RQcm9wZXJ0eUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIub2JqZWN0TmFtZX1cIiBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgXCIke2Vyci5wcm9wZXJ0eU5hbWV9XCIgcHJvcGVydHkuXG4gICAgICAgIFRvIHByb2NlZWQsIHJlbW92ZSBpbnZhbGlkIG9wdGlvbnMgZnJvbSB5b3VyIGNvZGUgb3IgY2hlY2sgeW91ciB0ZXN0IGZvciBzcGVsbGluZyBlcnJvcnMuXG4gICAgICAgIFRoZSBcIiR7ZXJyLm9iamVjdE5hbWV9XCIgb2JqZWN0IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uczpcbiAgICAgICAgJHtnZXRDb25jYXRlbmF0ZWRWYWx1ZXNTdHJpbmcoZXJyLmF2YWlsYWJsZVByb3BlcnRpZXMsICcsXFxuJyl9LlxuICAgIGAsXG59O1xuIl19
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9ycy90ZXN0LXJ1bi90ZW1wbGF0ZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBOEM7QUFDOUMsb0NBQTJDO0FBQzNDLG1DQU9pQjtBQUNqQiwrQ0FBaUU7QUFHakUsTUFBTSxjQUFjLEdBQUc7SUFDbkIsY0FBYyxFQUFPLDBFQUEwRTtJQUMvRixtQkFBbUIsRUFBRSwrREFBK0Q7SUFDcEYsYUFBYSxFQUFRLDRFQUE0RTtJQUNqRyxtQkFBbUIsRUFBRSxtRkFBbUY7Q0FDM0csQ0FBQztBQUVGLGtCQUFlO0lBQ1gsQ0FBQyx1QkFBZSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztlQUN4QyxHQUFHLENBQUMsVUFBVSxxREFBcUQsR0FBRyxDQUFDLFdBQVc7S0FDNUY7SUFFRCxDQUFDLHVCQUFlLENBQUMsZ0NBQWdDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2VBQ2hELEdBQUcsQ0FBQyxVQUFVLDZEQUE2RCxHQUFHLENBQUMsV0FBVztLQUNwRztJQUVELENBQUMsdUJBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7ZUFDeEMsR0FBRyxDQUFDLFVBQVUsMERBQTBELEdBQUcsQ0FBQyxXQUFXO0tBQ2pHO0lBRUQsQ0FBQyx1QkFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztlQUN0QyxHQUFHLENBQUMsVUFBVSxzRUFBc0UsR0FBRyxDQUFDLFdBQVc7S0FDN0c7SUFFRCxDQUFDLHVCQUFlLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztxQ0FDUCxJQUFBLGlCQUFTLEVBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQzs7cUVBRWMsSUFBQSxpQkFBUyxFQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQzs7O1VBR3hH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Qzs0QkFDMUIsR0FBRyxDQUFDLFVBQVUsaURBQWlELEdBQUcsQ0FBQyxXQUFXLFdBQVcsR0FBRyxDQUFDLFVBQVU7S0FDOUg7SUFFRCxDQUFDLHVCQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2VBQ3RDLEdBQUcsQ0FBQyxZQUFZLCtEQUErRCxHQUFHLENBQUMsV0FBVztLQUN4RztJQUVELENBQUMsdUJBQWUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0VBQ00sR0FBRyxDQUFDLFlBQVksOENBQThDLEdBQUcsQ0FBQyxXQUFXLFdBQVcsR0FBRyxDQUFDLFlBQVk7S0FDdks7SUFFRCxDQUFDLHVCQUFlLENBQUMseUJBQXlCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUM1QixHQUFHLENBQUMsVUFBVSxpREFBaUQsR0FBRyxDQUFDLFdBQVcsV0FBVyxHQUFHLENBQUMsVUFBVTtLQUM5SDtJQUVELENBQUMsdUJBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7ZUFDaEQsR0FBRyxDQUFDLFVBQVUsa0NBQWtDLEdBQUcsQ0FBQyxZQUFZOztlQUVoRSxHQUFHLENBQUMsVUFBVTtVQUNuQixJQUFBLG9DQUEyQixFQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUM7S0FDaEU7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXNjYXBlIGFzIGVzY2FwZUh0bWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgVEVTVF9SVU5fRVJST1JTIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgICByZW5kZXJGb3JiaWRkZW5DaGFyc0xpc3QsXG4gICAgcmVuZGVyRGlmZixcbiAgICBmb3JtYXRTZWxlY3RvckNhbGxzdGFjayxcbiAgICBmb3JtYXRVcmwsXG4gICAgcmVwbGFjZUxlYWRpbmdTcGFjZXNXaXRoTmJzcCxcbiAgICBmb3JtYXRFeHByZXNzaW9uTWVzc2FnZSxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZXRDb25jYXRlbmF0ZWRWYWx1ZXNTdHJpbmcgfSBmcm9tICcuLi8uLi91dGlscy9zdHJpbmcnO1xuXG5cbmNvbnN0IEVYVEVSTkFMX0xJTktTID0ge1xuICAgIGNyZWF0ZU5ld0lzc3VlOiAgICAgICdodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy90ZXN0Y2FmZS9pc3N1ZXMvbmV3P3RlbXBsYXRlPWJ1Zy1yZXBvcnQubWQnLFxuICAgIHRyb3VibGVzaG9vdE5ldHdvcms6ICdodHRwczovL2dvLmRldmV4cHJlc3MuY29tL1Rlc3RDYWZlX0ZBUV9BUmVxdWVzdEhhc0ZhaWxlZC5hc3B4JyxcbiAgICB2aWV3cG9ydFNpemVzOiAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL0RldkV4cHJlc3MvZGV2aWNlLXNwZWNzL2Jsb2IvbWFzdGVyL3ZpZXdwb3J0LXNpemVzLmpzb24nLFxuICAgIHNraXBKc0Vycm9yc1JlY2lwZXM6ICdodHRwczovL3Rlc3RjYWZlLmlvL2RvY3VtZW50YXRpb24vNDA0MDM4L3JlY2lwZXMvZGVidWdnaW5nL3NraXAtamF2YXNjcmlwdC1lcnJvcnMnLFxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uSW50ZWdlck9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgYW4gaW50ZWdlciwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uUG9zaXRpdmVJbnRlZ2VyT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBpcyBleHBlY3RlZCB0byBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkJvb2xlYW5PcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGEgYm9vbGVhbiB2YWx1ZSwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uU3BlZWRPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyIGJldHdlZW4gMC4wMSBhbmQgMSwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMucGFnZUxvYWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEZhaWxlZCB0byBsb2FkIHRoZSBwYWdlIGF0ICR7Zm9ybWF0VXJsKGVyci51cmwpfS5cbiAgICAgICAgSW5jcmVhc2UgdGhlIHZhbHVlIG9mIHRoZSBcInBhZ2VSZXF1ZXN0VGltZW91dFwiIHZhcmlhYmxlLCBlbmFibGUgdGhlIFwicmV0cnlUZXN0UGFnZXNcIiBvcHRpb24sIG9yIHVzZSBxdWFyYW50aW5lIG1vZGUgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgdGhpcyB0ZXN0LlxuICAgICAgICBZb3UgY2FuIGZpbmQgdHJvdWJsZXNob290aW5nIGluZm9ybWF0aW9uIGZvciB0aGlzIGlzc3VlIGF0ICR7Zm9ybWF0VXJsKEVYVEVSTkFMX0xJTktTLnRyb3VibGVzaG9vdE5ldHdvcmspfS5cblxuICAgICAgICBFcnJvciBkZXRhaWxzOlxuICAgICAgICAke2Vyci5lcnJNc2d9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvck9uUGFnZV06IGVyciA9PiBgXG4gICAgICAgIEEgSmF2YVNjcmlwdCBlcnJvciBvY2N1cnJlZCBvbiAke2Zvcm1hdFVybChlcnIucGFnZURlc3RVcmwpfS5cbiAgICAgICAgUmVwZWF0IHRlc3QgYWN0aW9ucyBpbiB0aGUgYnJvd3NlciBhbmQgY2hlY2sgdGhlIGNvbnNvbGUgZm9yIGVycm9ycy5cbiAgICAgICAgRW5hYmxlIHRoZSDigJxza2lwSnNFcnJvcnPigJ0gb3B0aW9uIHRvIGlnbm9yZSBKYXZhU2NyaXB0IGVycm9ycyBkdXJpbmcgdGVzdCBleGVjdXRpb24uIExlYXJuIG1vcmU6ICR7Zm9ybWF0VXJsKEVYVEVSTkFMX0xJTktTLnNraXBKc0Vycm9yc1JlY2lwZXMpfVxuICAgICAgICBJZiB0aGUgd2Vic2l0ZSBvbmx5IHRocm93cyB0aGlzIGVycm9yIHdoZW4geW91IHRlc3QgaXQgd2l0aCBUZXN0Q2FmZSwgcGxlYXNlIGNyZWF0ZSBhIG5ldyBpc3N1ZSBhdDpcbiAgICAgICAgJHtmb3JtYXRVcmwoRVhURVJOQUxfTElOS1MuY3JlYXRlTmV3SXNzdWUpfS5cblxuICAgICAgICBKYXZhU2NyaXB0IGVycm9yIGRldGFpbHM6XG4gICAgICAgICR7cmVwbGFjZUxlYWRpbmdTcGFjZXNXaXRoTmJzcChlc2NhcGVIdG1sKGVyci5lcnJTdGFjaykpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJblRlc3RDb2RlXTogZXJyID0+IGBcbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLm5hdGl2ZURpYWxvZ05vdEhhbmRsZWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEEgbmF0aXZlICR7ZXJyLmRpYWxvZ1R5cGV9IGRpYWxvZyB3YXMgaW52b2tlZCBvbiBwYWdlICR7Zm9ybWF0VXJsKGVyci5wYWdlVXJsKX0sIGJ1dCBubyBoYW5kbGVyIHdhcyBzZXQgZm9yIGl0LiBVc2UgdGhlIFwic2V0TmF0aXZlRGlhbG9nSGFuZGxlclwiIGZ1bmN0aW9uIHRvIGludHJvZHVjZSBhIGhhbmRsZXIgZnVuY3Rpb24gZm9yIG5hdGl2ZSBkaWFsb2dzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJbk5hdGl2ZURpYWxvZ0hhbmRsZXJdOiBlcnIgPT4gYFxuICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCBpbiB0aGUgbmF0aXZlIGRpYWxvZyBoYW5kbGVyIGNhbGxlZCBmb3IgYSBuYXRpdmUgJHtlcnIuZGlhbG9nVHlwZX0gZGlhbG9nIG9uIHBhZ2UgJHtmb3JtYXRVcmwoZXJyLnBhZ2VVcmwpfTpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuc2V0VGVzdFNwZWVkQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFNwZWVkIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyIGJldHdlZW4gMC4wMSBhbmQgMSwgYnV0ICR7ZXJyLmFjdHVhbFZhbHVlfSB3YXMgcGFzc2VkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnNldE5hdGl2ZURpYWxvZ0hhbmRsZXJDb2RlV3JvbmdUeXBlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgbmF0aXZlIGRpYWxvZyBoYW5kbGVyIGlzIGV4cGVjdGVkIHRvIGJlIGEgZnVuY3Rpb24sIENsaWVudEZ1bmN0aW9uIG9yIG51bGwsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVHlwZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvckluQ2xpZW50RnVuY3Rpb25Db2RlXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgaW4gJHtlcnIuaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZX0gY29kZTpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMudW5jYXVnaHRFcnJvckluQ3VzdG9tRE9NUHJvcGVydHlDb2RlXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiB0cnlpbmcgdG8gY2FsY3VsYXRlIGEgY3VzdG9tIFNlbGVjdG9yIHByb3BlcnR5IFwiJHtlcnIucHJvcGVydHl9XCI6XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNsaWVudEZ1bmN0aW9uRXhlY3V0aW9uSW50ZXJydXB0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICAke2Vyci5pbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBleGVjdXRpb24gd2FzIGludGVycnVwdGVkIGJ5IHBhZ2UgdW5sb2FkLiBUaGlzIHByb2JsZW0gbWF5IGFwcGVhciBpZiB5b3UgdHJpZ2dlciBwYWdlIG5hdmlnYXRpb24gZnJvbSAke2Vyci5pbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lfSBjb2RlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0Tm9uRXJyb3JPYmplY3RJblRlc3RDb2RlXTogZXJyID0+IGBcbiAgICAgICAgVW5jYXVnaHQgJHtlcnIub2JqVHlwZX0gXCIke2VzY2FwZUh0bWwoZXJyLm9ialN0cil9XCIgd2FzIHRocm93bi4gVGhyb3cgRXJyb3IgaW5zdGVhZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uXTogZXJyID0+IGBcbiAgICAgICAgVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEV4Y2VwdGlvbl06IGVyciA9PiBgXG4gICAgICAgIFVuY2F1Z2h0IGV4Y2VwdGlvbjpcblxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uT3B0aW9uc1R5cGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEFjdGlvbiBvcHRpb25zIGlzIGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgbnVsbCBvciB1bmRlZmluZWQgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxUeXBlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TdHJpbmdBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZywgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uQm9vbGVhbkFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBib29sZWFuIHZhbHVlLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25OdWxsYWJsZVN0cmluZ0FyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBudWxsIG9yIGEgc3RyaW5nLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TdHJpbmdPclN0cmluZ0FycmF5QXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmcgYXJyYXksIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblN0cmluZ0FycmF5RWxlbWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgRWxlbWVudHMgb2YgdGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGFyZSBleHBlY3RlZCB0byBiZSBub24tZW1wdHkgc3RyaW5ncywgYnV0IHRoZSBlbGVtZW50IGF0IGluZGV4ICR7ZXJyLmVsZW1lbnRJbmRleH0gd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25SZXF1aXJlZENvb2tpZUFyZ3VtZW50c106ICgpID0+IGBcbiAgICAgICAgVGhlIG1hbmRhdG9yeSBcImNvb2tpZXNcIiBhcmd1bWVudCBpcyBtaXNzaW5nLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkNvb2tpZUFyZ3VtZW50RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCJjb29raWVzXCIgYXJndW1lbnQgZG9lcyBub3QgYmVsb25nIHRvIGFuIGFjY2VwdGFibGUgZGF0YSB0eXBlOiBPYmplY3QsIFN0cmluZywgb3IgQXJyYXkgb2Ygb2JqZWN0cyBvciBzdHJpbmdzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkNvb2tpZUFyZ3VtZW50c0Vycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIGNvb2tpZSBudW1iZXIgJHtlcnIuaW5kZXggKyAxfSAoJHtlcnIuYWN0dWFsVmFsdWV9KSBkb2VzIG5vdCBiZWxvbmcgdG8gYW4gYWNjZXB0YWJsZSBkYXRhIHR5cGU6IE9iamVjdCBvciBTdHJpbmcuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uVXJsQ29va2llQXJndW1lbnRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ291bGQgbm90IHBhcnNlIHRoZSB1cmwgcGFyYW1ldGVyLiBDaGVjayB0aGUgdmFsdWUgZm9yIGZvcm1hdHRpbmcgZXJyb3JzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblVybHNDb29raWVBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQ291bGQgbm90IHBhcnNlIHVybCBudW1iZXIgJHtlcnIuaW5kZXggKyAxfSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gQ2hlY2sgdGhlIHZhbHVlIGZvciBmb3JtYXR0aW5nIGVycm9ycy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25JbnRlZ2VyQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Sb2xlQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIFJvbGUgaW5zdGFuY2UsIGJ1dCBpdCB3YXMgJHtlcnIuYWN0dWFsVmFsdWV9LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkZ1bmN0aW9uQXJndW1lbnRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIGZ1bmN0aW9uLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Qb3NpdGl2ZUludGVnZXJBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIFwiJHtlcnIuYXJndW1lbnROYW1lfVwiIGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgYnV0IGl0IHdhcyAke2Vyci5hY3R1YWxWYWx1ZX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudE5vdEZvdW5kRXJyb3JdOiAoZXJyLCB2aWV3cG9ydFdpZHRoKSA9PiBgXG4gICAgICAgIFRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgZG9lcyBub3QgbWF0Y2ggYW55IGVsZW1lbnQgaW4gdGhlIERPTSB0cmVlLlxuXG4gICAgICAgICR7Zm9ybWF0U2VsZWN0b3JDYWxsc3RhY2soZXJyLmFwaUZuQ2hhaW4sIGVyci5hcGlGbkluZGV4LCB2aWV3cG9ydFdpZHRoKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50SXNJbnZpc2libGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIucmVhc29uKSB8fCAnVGhlIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgaXMgbm90IHZpc2libGUuJ31cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50SXNOb3RUYXJnZXRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgaXMgY292ZXJlZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TZWxlY3Rvck1hdGNoZXNXcm9uZ05vZGVUeXBlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgc3BlY2lmaWVkIHNlbGVjdG9yIGlzIGV4cGVjdGVkIHRvIG1hdGNoIGEgRE9NIGVsZW1lbnQsIGJ1dCBpdCBtYXRjaGVzIGEgJHtlcnIubm9kZURlc2NyaXB0aW9ufSBub2RlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkFkZGl0aW9uYWxFbGVtZW50Tm90Rm91bmRFcnJvcl06IChlcnIsIHZpZXdwb3J0V2lkdGgpID0+IGBcbiAgICAgICAgVGhlIHNwZWNpZmllZCBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBkb2VzIG5vdCBtYXRjaCBhbnkgZWxlbWVudCBpbiB0aGUgRE9NIHRyZWUuXG5cbiAgICAgICAgJHtmb3JtYXRTZWxlY3RvckNhbGxzdGFjayhlcnIuYXBpRm5DaGFpbiwgZXJyLmFwaUZuSW5kZXgsIHZpZXdwb3J0V2lkdGgpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkFkZGl0aW9uYWxFbGVtZW50SXNJbnZpc2libGVFcnJvcl06IGVyciA9PiBgXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIucmVhc29uKSB8fCBgVGhlIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgaXMgbm90IHZpc2libGUuYH1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25BZGRpdGlvbmFsU2VsZWN0b3JNYXRjaGVzV3JvbmdOb2RlVHlwZUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHNwZWNpZmllZCBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBpcyBleHBlY3RlZCB0byBtYXRjaCBhIERPTSBlbGVtZW50LCBidXQgaXQgbWF0Y2hlcyBhICR7ZXJyLm5vZGVEZXNjcmlwdGlvbn0gbm9kZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50Tm9uRWRpdGFibGVFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGFjdGlvbiBlbGVtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGVkaXRhYmxlIChhbiBpbnB1dCwgdGV4dGFyZWEgb3IgZWxlbWVudCB3aXRoIHRoZSBjb250ZW50RWRpdGFibGUgYXR0cmlidXRlKS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50Tm9uQ29udGVudEVkaXRhYmxlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBcIiR7ZXJyLmFyZ3VtZW50TmFtZX1cIiBpcyBleHBlY3RlZCB0byBoYXZlIHRoZSBjb250ZW50RWRpdGFibGUgYXR0cmlidXRlIGVuYWJsZWQgb3IgdGhlIGVudGlyZSBkb2N1bWVudCBzaG91bGQgYmUgaW4gZGVzaWduIG1vZGUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uUm9vdENvbnRhaW5lck5vdEZvdW5kRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENvbnRlbnQgYmV0d2VlbiB0aGUgYWN0aW9uIGVsZW1lbnRzIGNhbm5vdCBiZSBzZWxlY3RlZCBiZWNhdXNlIHRoZSByb290IGNvbnRhaW5lciBmb3IgdGhlIHNlbGVjdGlvbiByYW5nZSBjYW5ub3QgYmUgZm91bmQsIGkuZS4gdGhlc2UgZWxlbWVudHMgZG8gbm90IGhhdmUgYSBjb21tb24gYW5jZXN0b3Igd2l0aCB0aGUgY29udGVudEVkaXRhYmxlIGF0dHJpYnV0ZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50SXNOb3RGaWxlSW5wdXRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIHNwZWNpZmllZCBzZWxlY3RvciBkb2VzIG5vdCBtYXRjaCBhIGZpbGUgaW5wdXQgZWxlbWVudC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25DYW5ub3RGaW5kRmlsZVRvVXBsb2FkRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBDYW5ub3QgZmluZCB0aGUgZm9sbG93aW5nIGZpbGUocykgdG8gdXBsb2FkOlxuICAgICAgICAke2Vyci5maWxlUGF0aHMubWFwKHBhdGggPT4gZXNjYXBlSHRtbChwYXRoKSkuam9pbignXFxuJyl9XG5cbiAgICAgICAgVGhlIGZvbGxvd2luZyBsb2NhdGlvbnMgd2VyZSBzY2FubmVkIGZvciB0aGUgbWlzc2luZyB1cGxvYWQgZmlsZXM6XG4gICAgICAgICR7ZXJyLnNjYW5uZWRGaWxlUGF0aHMubWFwKHBhdGggPT4gZXNjYXBlSHRtbChwYXRoKSkuam9pbignXFxuJyl9XG5cbiAgICAgICAgRW5zdXJlIHRoZXNlIGZpbGVzIGV4aXN0IG9yIGNoYW5nZSB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudE5vdFRleHRBcmVhRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBhY3Rpb24gZWxlbWVudCBpcyBleHBlY3RlZCB0byBiZSBhICZsdDt0ZXh0YXJlYSZndDsuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRWxlbWVudE5vdElmcmFtZUVycm9yXTogKCkgPT4gYFxuICAgICAgICBUaGUgYWN0aW9uIGVsZW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gJmx0O2lmcmFtZSZndC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25JbmNvcnJlY3RLZXlzRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgY29udGFpbnMgYW4gaW5jb3JyZWN0IGtleSBvciBrZXkgY29tYmluYXRpb24uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uVW5zdXBwb3J0ZWREZXZpY2VUeXBlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgc3BlY2lmaWVzIGFuIHVuc3VwcG9ydGVkIFwiJHtlcnIuYWN0dWFsVmFsdWV9XCIgZGV2aWNlLiBGb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBkZXZpY2VzLCByZWZlciB0byAke2Zvcm1hdFVybChFWFRFUk5BTF9MSU5LUy52aWV3cG9ydFNpemVzKX0uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uSW52YWxpZFNjcm9sbFRhcmdldEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVW5hYmxlIHRvIHNjcm9sbCB0byB0aGUgc3BlY2lmaWVkIHBvaW50IGJlY2F1c2UgYSBwb2ludCB3aXRoIHRoZSBzcGVjaWZpZWQgJHtlcnIucHJvcGVydGllc30gaXMgbm90IGxvY2F0ZWQgaW5zaWRlIHRoZSBlbGVtZW50J3MgY3JvcHBpbmcgcmVnaW9uLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbklmcmFtZUlzTm90TG9hZGVkRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENvbnRlbnQgb2YgdGhlIGlmcmFtZSB0byB3aGljaCB5b3UgYXJlIHN3aXRjaGluZyBkaWQgbm90IGxvYWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY3VycmVudElmcmFtZUlzTm90TG9hZGVkRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENvbnRlbnQgb2YgdGhlIGlmcmFtZSBpbiB3aGljaCB0aGUgdGVzdCBpcyBjdXJyZW50bHkgb3BlcmF0aW5nIGRpZCBub3QgbG9hZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jdXJyZW50SWZyYW1lTm90Rm91bmRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGlmcmFtZSBpbiB3aGljaCB0aGUgdGVzdCBpcyBjdXJyZW50bHkgb3BlcmF0aW5nIGRvZXMgbm90IGV4aXN0IGFueW1vcmUuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY3VycmVudElmcmFtZUlzSW52aXNpYmxlRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBpZnJhbWUgaW4gd2hpY2ggdGhlIHRlc3QgaXMgY3VycmVudGx5IG9wZXJhdGluZyBpcyBub3QgdmlzaWJsZSBhbnltb3JlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLm1pc3NpbmdBd2FpdEVycm9yXTogKCkgPT4gYFxuICAgICAgICBBIGNhbGwgdG8gYW4gYXN5bmMgZnVuY3Rpb24gaXMgbm90IGF3YWl0ZWQuIFVzZSB0aGUgXCJhd2FpdFwiIGtleXdvcmQgYmVmb3JlIGFjdGlvbnMsIGFzc2VydGlvbnMgb3IgY2hhaW5zIG9mIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhleSBydW4gaW4gdGhlIHJpZ2h0IHNlcXVlbmNlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmV4dGVybmFsQXNzZXJ0aW9uTGlicmFyeUVycm9yXTogZXJyID0+IGBcbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuXG4gICAgICAgICR7cmVuZGVyRGlmZihlcnIuZGlmZil9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuZG9tTm9kZUNsaWVudEZ1bmN0aW9uUmVzdWx0RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICR7ZXJyLmluc3RhbnRpYXRpb25DYWxsc2l0ZU5hbWV9IGNhbm5vdCByZXR1cm4gRE9NIGVsZW1lbnRzLiBVc2UgU2VsZWN0b3IgZnVuY3Rpb25zIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuaW52YWxpZFNlbGVjdG9yUmVzdWx0RXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIEZ1bmN0aW9uIHRoYXQgc3BlY2lmaWVzIGEgc2VsZWN0b3IgY2FuIG9ubHkgcmV0dXJuIGEgRE9NIG5vZGUsIGFuIGFycmF5IG9mIG5vZGVzLCBOb2RlTGlzdCwgSFRNTENvbGxlY3Rpb24sIG51bGwgb3IgdW5kZWZpbmVkLiBVc2UgQ2xpZW50RnVuY3Rpb24gdG8gcmV0dXJuIG90aGVyIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TZWxlY3RvckVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQWN0aW9uIFwiJHtlcnIuc2VsZWN0b3JOYW1lfVwiIGFyZ3VtZW50IGVycm9yOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jYW5ub3RPYnRhaW5JbmZvRm9yRWxlbWVudFNwZWNpZmllZEJ5U2VsZWN0b3JFcnJvcl06IChlcnIsIHZpZXdwb3J0V2lkdGgpID0+IGBcbiAgICAgICAgQ2Fubm90IG9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbm9kZSBiZWNhdXNlIHRoZSBzcGVjaWZpZWQgc2VsZWN0b3IgZG9lcyBub3QgbWF0Y2ggYW55IG5vZGUgaW4gdGhlIERPTSB0cmVlLlxuXG4gICAgICAgICR7Zm9ybWF0U2VsZWN0b3JDYWxsc3RhY2soZXJyLmFwaUZuQ2hhaW4sIGVyci5hcGlGbkluZGV4LCB2aWV3cG9ydFdpZHRoKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy53aW5kb3dEaW1lbnNpb25zT3ZlcmZsb3dFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVW5hYmxlIHRvIHJlc2l6ZSB0aGUgd2luZG93IGJlY2F1c2UgdGhlIHNwZWNpZmllZCBzaXplIGV4Y2VlZHMgdGhlIHNjcmVlbiBzaXplLiBPbiBtYWNPUywgYSB3aW5kb3cgY2Fubm90IGJlIGxhcmdlciB0aGFuIHRoZSBzY3JlZW4uXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuZm9yYmlkZGVuQ2hhcmFjdGVyc0luU2NyZWVuc2hvdFBhdGhFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZXJlIGFyZSBmb3JiaWRkZW4gY2hhcmFjdGVycyBpbiB0aGUgXCIke2Vyci5zY3JlZW5zaG90UGF0aH1cIiBzY3JlZW5zaG90IHBhdGg6XG4gICAgICAgICR7cmVuZGVyRm9yYmlkZGVuQ2hhcnNMaXN0KGVyci5mb3JiaWRkZW5DaGFyc0xpc3QpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmludmFsaWRFbGVtZW50U2NyZWVuc2hvdERpbWVuc2lvbnNFcnJvcl06IGVyciA9PiBgXG4gICAgICAgICBVbmFibGUgdG8gY2FwdHVyZSBhbiBlbGVtZW50IGltYWdlIGJlY2F1c2UgdGhlIHJlc3VsdGluZyBpbWFnZSAke2Vyci5kaW1lbnNpb25zfSAke2Vyci52ZXJifSB6ZXJvIG9yIG5lZ2F0aXZlLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnJvbGVTd2l0Y2hJblJvbGVJbml0aWFsaXplckVycm9yXTogKCkgPT4gYFxuICAgICAgICBSb2xlIGNhbm5vdCBiZSBzd2l0Y2hlZCB3aGlsZSBhbm90aGVyIHJvbGUgaXMgYmVpbmcgaW5pdGlhbGl6ZWQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYXNzZXJ0aW9uRXhlY3V0YWJsZUFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBDYW5ub3QgZXZhbHVhdGUgdGhlIFwiJHtlcnIuYWN0dWFsVmFsdWV9XCIgZXhwcmVzc2lvbiBpbiB0aGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgcGFyYW1ldGVyIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBlcnJvcjpcblxuICAgICAgICAke2Vyci5lcnJNc2d9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYXNzZXJ0aW9uV2l0aG91dE1ldGhvZENhbGxFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQW4gYXNzZXJ0aW9uIG1ldGhvZCBpcyBub3Qgc3BlY2lmaWVkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFzc2VydGlvblVuYXdhaXRlZFByb21pc2VFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQXR0ZW1wdGVkIHRvIHJ1biBhc3NlcnRpb25zIG9uIGEgUHJvbWlzZSBvYmplY3QuIERpZCB5b3UgZm9yZ2V0IHRvIGF3YWl0IGl0PyBJZiBub3QsIHBhc3MgXCJ7IGFsbG93VW5hd2FpdGVkUHJvbWlzZTogdHJ1ZSB9XCIgdG8gdGhlIGFzc2VydGlvbiBvcHRpb25zLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnJlcXVlc3RIb29rTm90SW1wbGVtZW50ZWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFlvdSBzaG91bGQgaW1wbGVtZW50IHRoZSBcIiR7ZXJyLm1ldGhvZE5hbWV9XCIgbWV0aG9kIGluIHRoZSBcIiR7ZXJyLmhvb2tDbGFzc05hbWV9XCIgY2xhc3MuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMucmVxdWVzdEhvb2tVbmhhbmRsZWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIEFuIHVuaGFuZGxlZCBlcnJvciBvY2N1cnJlZCBpbiB0aGUgXCIke2Vyci5tZXRob2ROYW1lfVwiIG1ldGhvZCBvZiB0aGUgXCIke2Vyci5ob29rQ2xhc3NOYW1lfVwiIGNsYXNzOlxuXG4gICAgICAgICR7ZXNjYXBlSHRtbChlcnIuZXJyTXNnKX1cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy51bmNhdWdodEVycm9ySW5DdXN0b21DbGllbnRTY3JpcHRDb2RlXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgaW4gYSBzY3JpcHQgaW5qZWN0ZWQgaW50byB0aGUgdGVzdGVkIHBhZ2U6XG5cbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJbkN1c3RvbUNsaWVudFNjcmlwdENvZGVMb2FkZWRGcm9tTW9kdWxlXTogZXJyID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgaW4gdGhlICcke2Vyci5tb2R1bGVOYW1lfScgbW9kdWxlIGluamVjdGVkIGludG8gdGhlIHRlc3RlZCBwYWdlLiBNYWtlIHN1cmUgdGhhdCB0aGlzIG1vZHVsZSBjYW4gYmUgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIgZW52aXJvbm1lbnQuXG5cbiAgICAgICAgRXJyb3IgZGV0YWlsczpcbiAgICAgICAgJHtlc2NhcGVIdG1sKGVyci5lcnJNc2cpfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnVuY2F1Z2h0RXJyb3JJbkN1c3RvbVNjcmlwdF06IGVyciA9PiBgXG4gICAgICAgIEFuIHVuaGFuZGxlZCBlcnJvciBvY2N1cnJlZCBpbiB0aGUgY3VzdG9tIHNjcmlwdDpcblxuICAgICAgICBFcnJvciBkZXRhaWxzOiAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG5cbiAgICAgICAgJHtmb3JtYXRFeHByZXNzaW9uTWVzc2FnZShlcnIuZXhwcmVzc2lvbiwgZXJyLmxpbmUsIGVyci5jb2x1bW4pfVxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNoaWxkV2luZG93SXNOb3RMb2FkZWRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIHBhZ2UgaW4gdGhlIGNoaWxkIHdpbmRvdyBpcyBub3QgbG9hZGVkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNoaWxkV2luZG93Tm90Rm91bmRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgVGhlIGNoaWxkIHdpbmRvdyBpcyBub3QgZm91bmQuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuY2Fubm90U3dpdGNoVG9XaW5kb3dFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ2Fubm90IHN3aXRjaCB0byB0aGUgd2luZG93LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNsb3NlQ2hpbGRXaW5kb3dFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgY2xvc2luZyBjaGlsZCB3aW5kb3dzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNoaWxkV2luZG93Q2xvc2VkQmVmb3JlU3dpdGNoaW5nRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBjaGlsZCB3aW5kb3cgd2FzIGNsb3NlZCBiZWZvcmUgVGVzdENhZmUgY291bGQgc3dpdGNoIHRvIGl0LlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmNhbm5vdENsb3NlV2luZG93V2l0aENoaWxkcmVuRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENhbm5vdCBjbG9zZSBhIHdpbmRvdyB0aGF0IGhhcyBhbiBvcGVuIGNoaWxkIHdpbmRvdy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy50YXJnZXRXaW5kb3dOb3RGb3VuZEVycm9yXTogKCkgPT4gYFxuICAgICAgICBDYW5ub3QgZmluZCB0aGUgd2luZG93IHNwZWNpZmllZCBpbiB0aGUgYWN0aW9uIHBhcmFtZXRlcnMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMucGFyZW50V2luZG93Tm90Rm91bmRFcnJvcl06ICgpID0+IGBcbiAgICAgICAgQ2Fubm90IGZpbmQgdGhlIHBhcmVudCB3aW5kb3cuIE1ha2Ugc3VyZSB0aGF0IHRoZSB0ZXN0ZWQgd2luZG93IHdhcyBvcGVuZWQgZnJvbSBhbm90aGVyIHdpbmRvdy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5wcmV2aW91c1dpbmRvd05vdEZvdW5kRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIENhbm5vdCBmaW5kIHRoZSBwcmV2aW91cyB3aW5kb3cuIE1ha2Ugc3VyZSB0aGF0IHRoZSBwcmV2aW91cyB3aW5kb3cgaXMgb3BlbmVkLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLnN3aXRjaFRvV2luZG93UHJlZGljYXRlRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBBbiBlcnJvciBvY2N1cnJlZCBpbnNpZGUgdGhlIFwic3dpdGNoVG9XaW5kb3dcIiBhcmd1bWVudCBmdW5jdGlvbi5cblxuICAgICAgICBFcnJvciBkZXRhaWxzOlxuICAgICAgICAke2VzY2FwZUh0bWwoZXJyLmVyck1zZyl9XG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMubXVsdGlwbGVXaW5kb3dzTW9kZUlzRGlzYWJsZWRFcnJvcl06IGVyciA9PiBgXG4gICAgICAgIE11bHRpLXdpbmRvdyBtb2RlIGlzIGRpc2FibGVkLiBUbyB1c2UgdGhlIFwiJHtlcnIubWV0aG9kTmFtZX1cIiBtZXRob2QsIHJlbW92ZSB0aGUgXCJkaXNhYmxlTXVsdGlwbGVXaW5kb3dzXCIgb3B0aW9uLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLm11bHRpcGxlV2luZG93c01vZGVJc05vdFN1cHBvcnRlZEluUmVtb3RlQnJvd3NlckVycm9yXTogZXJyID0+IGBcbiAgICAgICAgTXVsdGktd2luZG93IG1vZGUgaXMgc3VwcG9ydGVkIG9ubHkgaW4gbG9jYWxseS1pbnN0YWxsZWQgQ2hyb21lLCBDaHJvbWl1bSwgRWRnZSA4NCsgYW5kIEZpcmVmb3guIFJ1biB0ZXN0cyBpbiB0aGVzZSBicm93c2VycyB0byB1c2UgdGhlIFwiJHtlcnIubWV0aG9kTmFtZX1cIiBtZXRob2QuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMubXVsdGlwbGVXaW5kb3dzTW9kZUlzTm90U3VwcG9ydGVkSW5OYXRpdmVBdXRvbWF0aW9uRXJyb3JdOiAoKSA9PiBgXG4gICAgICAgIFRoZSBOYXRpdmUgQXV0b21hdGlvbiBtb2RlIGRvZXMgbm90IHN1cHBvcnQgdGhlIHVzZSBvZiBtdWx0aXBsZSBicm93c2VyIHdpbmRvd3MuIFJlbW92ZSB0aGUgXCJuYXRpdmUgYXV0b21hdGlvblwiIG9wdGlvbiB0byBjb250aW51ZS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jYW5ub3RDbG9zZVdpbmRvd1dpdGhvdXRQYXJlbnRdOiAoKSA9PiBgXG4gICAgICAgIENhbm5vdCBjbG9zZSB0aGUgd2luZG93IGJlY2F1c2UgaXQgZG9lcyBub3QgaGF2ZSBhIHBhcmVudC4gVGhlIHBhcmVudCB3aW5kb3cgd2FzIGNsb3NlZCBvciB5b3UgYXJlIGF0dGVtcHRpbmcgdG8gY2xvc2UgdGhlIHJvb3QgYnJvd3NlciB3aW5kb3cgd2hlcmUgdGVzdHMgd2VyZSBsYXVuY2hlZC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5jYW5ub3RSZXN0b3JlQ2hpbGRXaW5kb3dFcnJvcl06ICgpID0+IGBcbiAgICAgICAgRmFpbGVkIHRvIHJlc3RvcmUgY29ubmVjdGlvbiB0byB3aW5kb3cgd2l0aGluIHRoZSBhbGxvY2F0ZWQgdGltZW91dC5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5leGVjdXRpb25UaW1lb3V0RXhjZWVkZWRdOiBlcnIgPT4ge1xuICAgICAgICByZXR1cm4gYCR7ZXJyLnNjb3BlfSB0aW1lb3V0IG9mICR7ZXJyLnRpbWVvdXR9bXMgZXhjZWVkZWQuYDtcbiAgICB9LFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TdHJpbmdPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIFN0cmluZyB0eXBlIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25TdHJpbmdPclJlZ2V4T3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBTdHJpbmcgb3IgUmVnZXggdHlwZSB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uRGF0ZU9wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgRGF0ZSB0eXBlIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25OdW1iZXJPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIE51bWJlciB0eXBlIHZhbHVlcy5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25VcmxPcHRpb25FcnJvcl06IGVyciA9PiBgXG4gICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBiZWxvbmdzIHRvIGFuIHVuc3VwcG9ydGVkIGRhdGEgdHlwZSAoJHtlcnIuYWN0dWFsVmFsdWV9KS4gVGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gb25seSBhY2NlcHRzIHN0cmluZyBvciBVUkwgdHlwZXMgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblVybFNlYXJjaFBhcmFtc09wdGlvbkVycm9yXTogZXJyID0+IGBcbiAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIGJlbG9uZ3MgdG8gYW4gdW5zdXBwb3J0ZWQgZGF0YSB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5vcHRpb25OYW1lfVwiIG9wdGlvbiBvbmx5IGFjY2VwdHMgb2JqZWN0IG9yIFVSTFNlYXJjaFBhcmFtcyB0eXBlcyB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uT2JqZWN0T3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBvYmplY3QgdHlwZXMgdmFsdWVzLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvblVybEFyZ3VtZW50RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gVVJMIG9yIGEgc3RyaW5nLCBidXQgaXQgd2FzICR7ZXJyLmFjdHVhbFZhbHVlfS5cbiAgICBgLFxuXG4gICAgW1RFU1RfUlVOX0VSUk9SUy5hY3Rpb25Ta2lwSnNFcnJvcnNBcmd1bWVudEVycm9yXTogZXJyID0+IGBcbiAgICAgICAgQ2Fubm90IGV4ZWN1dGUgdGhlIHNraXBKc0Vycm9ycyBtZXRob2QuIFRoZSB2YWx1ZSBvZiB0aGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgYXJndW1lbnQgYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCB0eXBlICgke2Vyci5hY3R1YWxWYWx1ZX0pLiBUaGUgXCIke2Vyci5hcmd1bWVudE5hbWV9XCIgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBkYXRhIHR5cGVzOiBCb29sZWFuLCBPYmplY3QsIEZ1bmN0aW9uLlxuICAgIGAsXG5cbiAgICBbVEVTVF9SVU5fRVJST1JTLmFjdGlvbkZ1bmN0aW9uT3B0aW9uRXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiJHtlcnIub3B0aW9uTmFtZX1cIiBvcHRpb24gYmVsb25ncyB0byBhbiB1bnN1cHBvcnRlZCBkYXRhIHR5cGUgKCR7ZXJyLmFjdHVhbFZhbHVlfSkuIFRoZSBcIiR7ZXJyLm9wdGlvbk5hbWV9XCIgb3B0aW9uIG9ubHkgYWNjZXB0cyBmdW5jdGlvbiB0eXBlcyB2YWx1ZXMuXG4gICAgYCxcblxuICAgIFtURVNUX1JVTl9FUlJPUlMuYWN0aW9uSW52YWxpZE9iamVjdFByb3BlcnR5RXJyb3JdOiBlcnIgPT4gYFxuICAgICAgICBUaGUgXCIke2Vyci5vYmplY3ROYW1lfVwiIG9iamVjdCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBcIiR7ZXJyLnByb3BlcnR5TmFtZX1cIiBwcm9wZXJ0eS5cbiAgICAgICAgVG8gcHJvY2VlZCwgcmVtb3ZlIGludmFsaWQgb3B0aW9ucyBmcm9tIHlvdXIgY29kZSBvciBjaGVjayB5b3VyIHRlc3QgZm9yIHNwZWxsaW5nIGVycm9ycy5cbiAgICAgICAgVGhlIFwiJHtlcnIub2JqZWN0TmFtZX1cIiBvYmplY3Qgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBvcHRpb25zOlxuICAgICAgICAke2dldENvbmNhdGVuYXRlZFZhbHVlc1N0cmluZyhlcnIuYXZhaWxhYmxlUHJvcGVydGllcywgJyxcXG4nKX0uXG4gICAgYCxcbn07XG4iXX0=
@@ -104,6 +104,7 @@ exports.TEST_RUN_ERRORS = {
104
104
  actionFunctionOptionError: 'E99',
105
105
  actionInvalidObjectPropertyError: 'E100',
106
106
  actionElementIsNotTargetError: 'E101',
107
+ multipleWindowsModeIsNotSupportedInNativeAutomationError: 'E102',
107
108
  };
108
109
  exports.RUNTIME_ERRORS = {
109
110
  cannotCreateMultipleLiveModeRunners: 'E1000',
@@ -186,5 +187,6 @@ exports.RUNTIME_ERRORS = {
186
187
  invalidCustomActionsOptionType: 'E1079',
187
188
  invalidCustomActionType: 'E1080',
188
189
  cannotImportESMInCommonsJS: 'E1081',
190
+ setNativeAutomationForUnsupportedBrowsers: 'E1082',
189
191
  };
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3JzL3R5cGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxnRUFBZ0U7QUFDaEUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxnRUFBZ0U7OztBQUVuRCxRQUFBLGVBQWUsR0FBRztJQUMzQixtQkFBbUIsRUFBb0MsSUFBSTtJQUMzRCx1QkFBdUIsRUFBZ0MsSUFBSTtJQUMzRCxnQ0FBZ0MsRUFBdUIsSUFBSTtJQUMzRCxpQ0FBaUMsRUFBc0IsSUFBSTtJQUMzRCxvQ0FBb0MsRUFBbUIsSUFBSTtJQUMzRCx5QkFBeUIsRUFBOEIsSUFBSTtJQUMzRCxpQkFBaUIsRUFBc0MsSUFBSTtJQUMzRCxpQkFBaUIsRUFBc0MsSUFBSTtJQUMzRCx3QkFBd0IsRUFBK0IsSUFBSTtJQUMzRCxnQ0FBZ0MsRUFBdUIsS0FBSztJQUM1RCx3QkFBd0IsRUFBK0IsS0FBSztJQUM1RCxzQkFBc0IsRUFBaUMsS0FBSztJQUM1RCxzQkFBc0IsRUFBaUMsS0FBSztJQUM1RCwwQkFBMEIsRUFBNkIsS0FBSztJQUM1RCx5QkFBeUIsRUFBOEIsS0FBSztJQUM1RCxpQ0FBaUMsRUFBc0IsS0FBSztJQUM1RCxzQ0FBc0MsRUFBaUIsS0FBSztJQUM1RCw2QkFBNkIsRUFBMEIsS0FBSztJQUM1RCwwQkFBMEIsRUFBNkIsS0FBSztJQUM1RCx1QkFBdUIsRUFBZ0MsS0FBSztJQUM1RCxrQ0FBa0MsRUFBcUIsS0FBSztJQUM1RCxtQkFBbUIsRUFBb0MsS0FBSztJQUM1RCwwQkFBMEIsRUFBNkIsS0FBSztJQUM1RCw2QkFBNkIsRUFBMEIsS0FBSztJQUM1RCx1Q0FBdUMsRUFBZ0IsS0FBSztJQUM1RCxvQ0FBb0MsRUFBbUIsS0FBSztJQUM1RCx1Q0FBdUMsRUFBZ0IsS0FBSztJQUM1RCxpREFBaUQsRUFBTSxLQUFLO0lBQzVELDZCQUE2QixFQUEwQixLQUFLO0lBQzVELDZCQUE2QixFQUEwQixL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LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBXQVJOSU5HOiB0aGlzIGZpbGUgaXMgdXNlZCBieSBib3RoIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIuXG4vLyBEbyBub3QgdXNlIGFueSBicm93c2VyIG9yIG5vZGUtc3BlY2lmaWMgQVBJIVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgVEVTVF9SVU5fRVJST1JTID0ge1xuICAgIHVuY2F1Z2h0RXJyb3JPblBhZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTEnLFxuICAgIHVuY2F1Z2h0RXJyb3JJblRlc3RDb2RlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTInLFxuICAgIHVuY2F1Z2h0Tm9uRXJyb3JPYmplY3RJblRlc3RDb2RlOiAgICAgICAgICAgICAgICAgICAgICAnRTMnLFxuICAgIHVuY2F1Z2h0RXJyb3JJbkNsaWVudEZ1bmN0aW9uQ29kZTogICAgICAgICAgICAgICAgICAgICAnRTQnLFxuICAgIHVuY2F1Z2h0RXJyb3JJbkN1c3RvbURPTVByb3BlcnR5Q29kZTogICAgICAgICAgICAgICAgICAnRTUnLFxuICAgIHVuaGFuZGxlZFByb21pc2VSZWplY3Rpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTYnLFxuICAgIHVuY2F1Z2h0RXhjZXB0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTcnLFxuICAgIG1pc3NpbmdBd2FpdEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTgnLFxuICAgIGFjdGlvbkludGVnZXJPcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTknLFxuICAgIGFjdGlvblBvc2l0aXZlSW50ZWdlck9wdGlvbkVycm9yOiAgICAgICAgICAgICAgICAgICAgICAnRTEwJyxcbiAgICBhY3Rpb25Cb29sZWFuT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMScsXG4gICAgYWN0aW9uU3BlZWRPcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTInLFxuICAgIGFjdGlvbk9wdGlvbnNUeXBlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTE0JyxcbiAgICBhY3Rpb25Cb29sZWFuQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxNScsXG4gICAgYWN0aW9uU3RyaW5nQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTYnLFxuICAgIGFjdGlvbk51bGxhYmxlU3RyaW5nQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAnRTE3JyxcbiAgICBhY3Rpb25TdHJpbmdPclN0cmluZ0FycmF5QXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgJ0UxOCcsXG4gICAgYWN0aW9uU3RyaW5nQXJyYXlFbGVtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFMTknLFxuICAgIGFjdGlvbkludGVnZXJBcmd1bWVudEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTIwJyxcbiAgICBhY3Rpb25Sb2xlQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UyMScsXG4gICAgYWN0aW9uUG9zaXRpdmVJbnRlZ2VyQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICdFMjInLFxuICAgIGFjdGlvblNlbGVjdG9yRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTIzJyxcbiAgICBhY3Rpb25FbGVtZW50Tm90Rm91bmRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UyNCcsXG4gICAgYWN0aW9uRWxlbWVudElzSW52aXNpYmxlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFMjYnLFxuICAgIGFjdGlvblNlbGVjdG9yTWF0Y2hlc1dyb25nTm9kZVR5cGVFcnJvcjogICAgICAgICAgICAgICAnRTI3JyxcbiAgICBhY3Rpb25BZGRpdGlvbmFsRWxlbWVudE5vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgJ0UyOCcsXG4gICAgYWN0aW9uQWRkaXRpb25hbEVsZW1lbnRJc0ludmlzaWJsZUVycm9yOiAgICAgICAgICAgICAgICdFMjknLFxuICAgIGFjdGlvbkFkZGl0aW9uYWxTZWxlY3Rvck1hdGNoZXNXcm9uZ05vZGVUeXBlRXJyb3I6ICAgICAnRTMwJyxcbiAgICBhY3Rpb25FbGVtZW50Tm9uRWRpdGFibGVFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgJ0UzMScsXG4gICAgYWN0aW9uRWxlbWVudE5vdFRleHRBcmVhRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFMzInLFxuICAgIGFjdGlvbkVsZW1lbnROb25Db250ZW50RWRpdGFibGVFcnJvcjogICAgICAgICAgICAgICAgICAnRTMzJyxcbiAgICBhY3Rpb25FbGVtZW50SXNOb3RGaWxlSW5wdXRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgJ0UzNCcsXG4gICAgYWN0aW9uUm9vdENvbnRhaW5lck5vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICdFMzUnLFxuICAgIGFjdGlvbkluY29ycmVjdEtleXNFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTM2JyxcbiAgICBhY3Rpb25DYW5ub3RGaW5kRmlsZVRvVXBsb2FkRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgJ0UzNycsXG4gICAgYWN0aW9uVW5zdXBwb3J0ZWREZXZpY2VUeXBlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICdFMzgnLFxuICAgIGFjdGlvbklmcmFtZUlzTm90TG9hZGVkRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAnRTM5JyxcbiAgICBhY3Rpb25FbGVtZW50Tm90SWZyYW1lRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U0MCcsXG4gICAgYWN0aW9uSW52YWxpZFNjcm9sbFRhcmdldEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICdFNDEnLFxuICAgIGN1cnJlbnRJZnJhbWVJc05vdExvYWRlZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTQyJyxcbiAgICBjdXJyZW50SWZyYW1lTm90Rm91bmRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U0MycsXG4gICAgY3VycmVudElmcmFtZUlzSW52aXNpYmxlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFNDQnLFxuICAgIG5hdGl2ZURpYWxvZ05vdEhhbmRsZWRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAnRTQ1JyxcbiAgICB1bmNhdWdodEVycm9ySW5OYXRpdmVEaWFsb2dIYW5kbGVyOiAgICAgICAgICAgICAgICAgICAgJ0U0NicsXG4gICAgc2V0VGVzdFNwZWVkQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNDcnLFxuICAgIHNldE5hdGl2ZURpYWxvZ0hhbmRsZXJDb2RlV3JvbmdUeXBlRXJyb3I6ICAgICAgICAgICAgICAnRTQ4JyxcbiAgICBjbGllbnRGdW5jdGlvbkV4ZWN1dGlvbkludGVycnVwdGlvbkVycm9yOiAgICAgICAgICAgICAgJ0U0OScsXG4gICAgZG9tTm9kZUNsaWVudEZ1bmN0aW9uUmVzdWx0RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICdFNTAnLFxuICAgIGludmFsaWRTZWxlY3RvclJlc3VsdEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTUxJyxcbiAgICBjYW5ub3RPYnRhaW5JbmZvRm9yRWxlbWVudFNwZWNpZmllZEJ5U2VsZWN0b3JFcnJvcjogICAgJ0U1MicsXG4gICAgZXh0ZXJuYWxBc3NlcnRpb25MaWJyYXJ5RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFNTMnLFxuICAgIHBhZ2VMb2FkRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTU0JyxcbiAgICB3aW5kb3dEaW1lbnNpb25zT3ZlcmZsb3dFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgJ0U1NScsXG4gICAgZm9yYmlkZGVuQ2hhcmFjdGVyc0luU2NyZWVuc2hvdFBhdGhFcnJvcjogICAgICAgICAgICAgICdFNTYnLFxuICAgIGludmFsaWRFbGVtZW50U2NyZWVuc2hvdERpbWVuc2lvbnNFcnJvcjogICAgICAgICAgICAgICAnRTU3JyxcbiAgICByb2xlU3dpdGNoSW5Sb2xlSW5pdGlhbGl6ZXJFcnJvcjogICAgICAgICAgICAgICAgICAgICAgJ0U1OCcsXG4gICAgYXNzZXJ0aW9uRXhlY3V0YWJsZUFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICdFNTknLFxuICAgIGFzc2VydGlvbldpdGhvdXRNZXRob2RDYWxsRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAnRTYwJyxcbiAgICBhc3NlcnRpb25VbmF3YWl0ZWRQcm9taXNlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgJ0U2MScsXG4gICAgcmVxdWVzdEhvb2tOb3RJbXBsZW1lbnRlZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICdFNjInLFxuICAgIHJlcXVlc3RIb29rVW5oYW5kbGVkRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTYzJyxcbiAgICB1bmNhdWdodEVycm9ySW5DdXN0b21DbGllbnRTY3JpcHRDb2RlOiAgICAgICAgICAgICAgICAgJ0U2NCcsXG4gICAgdW5jYXVnaHRFcnJvckluQ3VzdG9tQ2xpZW50U2NyaXB0Q29kZUxvYWRlZEZyb21Nb2R1bGU6ICdFNjUnLFxuICAgIHVuY2F1Z2h0RXJyb3JJbkN1c3RvbVNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAnRTY2JyxcbiAgICB1bmNhdWdodFRlc3RDYWZlRXJyb3JJbkN1c3RvbVNjcmlwdDogICAgICAgICAgICAgICAgICAgJ0U2NycsXG4gICAgY2hpbGRXaW5kb3dJc05vdExvYWRlZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNjgnLFxuICAgIGNoaWxkV2luZG93Tm90Rm91bmRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTY5JyxcbiAgICBjYW5ub3RTd2l0Y2hUb1dpbmRvd0Vycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U3MCcsXG4gICAgY2xvc2VDaGlsZFdpbmRvd0Vycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNzEnLFxuICAgIGNoaWxkV2luZG93Q2xvc2VkQmVmb3JlU3dpdGNoaW5nRXJyb3I6ICAgICAgICAgICAgICAgICAnRTcyJyxcbiAgICBjYW5ub3RDbG9zZVdpbmRvd1dpdGhDaGlsZHJlbkVycm9yOiAgICAgICAgICAgICAgICAgICAgJ0U3MycsXG4gICAgdGFyZ2V0V2luZG93Tm90Rm91bmRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNzQnLFxuICAgIHBhcmVudFdpbmRvd05vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTc2JyxcbiAgICBwcmV2aW91c1dpbmRvd05vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U3NycsXG4gICAgc3dpdGNoVG9XaW5kb3dQcmVkaWNhdGVFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICdFNzgnLFxuICAgIGFjdGlvbkZ1bmN0aW9uQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAnRTc5JyxcbiAgICBtdWx0aXBsZVdpbmRvd3NNb2RlSXNEaXNhYmxlZEVycm9yOiAgICAgICAgICAgICAgICAgICAgJ0U4MCcsXG4gICAgbXVsdGlwbGVXaW5kb3dzTW9kZUlzTm90U3VwcG9ydGVkSW5SZW1vdGVCcm93c2VyRXJyb3I6ICdFODEnLFxuICAgIGNhbm5vdENsb3NlV2luZG93V2l0aG91dFBhcmVudDogICAgICAgICAgICAgICAgICAgICAgICAnRTgyJyxcbiAgICBjYW5ub3RSZXN0b3JlQ2hpbGRXaW5kb3dFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgJ0U4MycsXG4gICAgZXhlY3V0aW9uVGltZW91dEV4Y2VlZGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFODQnLFxuICAgIGFjdGlvblJlcXVpcmVkQ29va2llQXJndW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTg1JyxcbiAgICBhY3Rpb25Db29raWVBcmd1bWVudEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U4NicsXG4gICAgYWN0aW9uQ29va2llQXJndW1lbnRzRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFODcnLFxuICAgIGFjdGlvblVybENvb2tpZUFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAnRTg4JyxcbiAgICBhY3Rpb25VcmxzQ29va2llQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgJ0U4OScsXG4gICAgYWN0aW9uU3RyaW5nT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFOTAnLFxuICAgIGFjdGlvbkRhdGVPcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTkxJyxcbiAgICBhY3Rpb25OdW1iZXJPcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U5MicsXG4gICAgYWN0aW9uVXJsT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFOTMnLFxuICAgIGFjdGlvblVybFNlYXJjaFBhcmFtc09wdGlvbkVycm9yOiAgICAgICAgICAgICAgICAgICAgICAnRTk0JyxcbiAgICBhY3Rpb25PYmplY3RPcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U5NScsXG4gICAgYWN0aW9uVXJsQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFOTYnLFxuICAgIGFjdGlvblN0cmluZ09yUmVnZXhPcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAnRTk3JyxcbiAgICBhY3Rpb25Ta2lwSnNFcnJvcnNBcmd1bWVudEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgJ0U5OCcsXG4gICAgYWN0aW9uRnVuY3Rpb25PcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFOTknLFxuICAgIGFjdGlvbkludmFsaWRPYmplY3RQcm9wZXJ0eUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAnRTEwMCcsXG4gICAgYWN0aW9uRWxlbWVudElzTm90VGFyZ2V0RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFMTAxJyxcbn07XG5cbmV4cG9ydCBjb25zdCBSVU5USU1FX0VSUk9SUyA9IHtcbiAgICBjYW5ub3RDcmVhdGVNdWx0aXBsZUxpdmVNb2RlUnVubmVyczogICAgICAgICAgICAgICAgJ0UxMDAwJyxcbiAgICBjYW5ub3RSdW5MaXZlTW9kZVJ1bm5lck11bHRpcGxlVGltZXM6ICAgICAgICAgICAgICAgJ0UxMDAxJyxcbiAgICBicm93c2VyRGlzY29ubmVjdGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDAyJyxcbiAgICBjYW5ub3RSdW5BZ2FpbnN0RGlzY29ubmVjdGVkQnJvd3NlcnM6ICAgICAgICAgICAgICAgJ0UxMDAzJyxcbiAgICBjYW5ub3RFc3RhYmxpc2hCcm93c2VyQ29ubmVjdGlvbjogICAgICAgICAgICAgICAgICAgJ0UxMDA0JyxcbiAgICBjYW5ub3RGaW5kQnJvd3NlcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA1JyxcbiAgICBicm93c2VyUHJvdmlkZXJOb3RGb3VuZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA2JyxcbiAgICBicm93c2VyTm90U2V0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA3JyxcbiAgICB0ZXN0RmlsZXNOb3RGb3VuZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA4JyxcbiAgICBub1Rlc3RzVG9SdW46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA5JyxcbiAgICBjYW5ub3RGaW5kUmVwb3J0ZXJGb3JBbGlhczogICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDEwJyxcbiAgICBtdWx0aXBsZVNhbWVTdHJlYW1SZXBvcnRlcnM6ICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDExJyxcbiAgICBvcHRpb25WYWx1ZUlzTm90VmFsaWRSZWdFeHA6ICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDEyJyxcbiAgICBvcHRpb25WYWx1ZUlzTm90VmFsaWRLZXlWYWx1ZTogICAgICAgICAgICAgICAgICAgICAgJ0UxMDEzJyxcbiAgICBpbnZhbGlkU3BlZWRWYWx1ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDE0JyxcbiAgICBpbnZhbGlkQ29uY3VycmVuY3lGYWN0b3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDE1JyxcbiAgICBjYW5ub3REaXZpZGVSZW1vdGVzQ291bnRCeUNvbmN1cnJlbmN5OiAgICAgICAgICAgICAgJ0UxMDE2JyxcbiAgICBwb3J0c09wdGlvblJlcXVpcmVzVHdvTnVtYmVyczogICAgICAgICAgICAgICAgICAgICAgJ0UxMDE3JyxcbiAgICBwb3J0SXNOb3RGcmVlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDE4JyxcbiAgICBpbnZhbGlkSG9zdG5hbWU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDE5JyxcbiAgICBjYW5ub3RGaW5kU3BlY2lmaWVkVGVzdFNvdXJjZTogICAgICAgICAgICAgICAgICAgICAgJ0UxMDIwJyxcbiAgICBjbGllbnRGdW5jdGlvbkNvZGVJc05vdEFGdW5jdGlvbjogICAgICAgICAgICAgICAgICAgJ0UxMDIxJyxcbiAgICBzZWxlY3RvckluaXRpYWxpemVkV2l0aFdyb25nVHlwZTogICAgICAgICAgICAgICAgICAgJ0UxMDIyJyxcbiAgICBjbGllbnRGdW5jdGlvbkNhbm5vdFJlc29sdmVUZXN0UnVuOiAgICAgICAgICAgICAgICAgJ0UxMDIzJyxcbiAgICByZWdlbmVyYXRvckluQ2xpZW50RnVuY3Rpb25Db2RlOiAgICAgICAgICAgICAgICAgICAgJ0UxMDI0JyxcbiAgICBpbnZhbGlkQ2xpZW50RnVuY3Rpb25UZXN0UnVuQmluZGluZzogICAgICAgICAgICAgICAgJ0UxMDI1JyxcbiAgICBpbnZhbGlkVmFsdWVUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDI2JyxcbiAgICB1bnN1cHBvcnRlZFVybFByb3RvY29sOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDI3JyxcbiAgICB0ZXN0Q29udHJvbGxlclByb3h5Q2Fubm90UmVzb2x2ZVRlc3RSdW46ICAgICAgICAgICAgJ0UxMDI4JyxcbiAgICB0aW1lTGltaXRlZFByb21pc2VUaW1lb3V0RXhwaXJlZDogICAgICAgICAgICAgICAgICAgJ0UxMDI5JyxcbiAgICBub1Rlc3RzVG9SdW5EdWVGaWx0ZXJpbmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDMwJyxcbiAgICBjYW5ub3RTZXRWaWRlb09wdGlvbnNXaXRob3V0QmFzZVZpZGVvUGF0aFNwZWNpZmllZDogJ0UxMDMxJyxcbiAgICBtdWx0aXBsZUFQSU1ldGhvZENhbGxGb3JiaWRkZW46ICAgICAgICAgICAgICAgICAgICAgJ0UxMDMyJyxcbiAgICBpbnZhbGlkUmVwb3J0ZXJPdXRwdXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDMzJyxcbiAgICBjYW5ub3RSZWFkU1NMQ2VydEZpbGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM0JyxcbiAgICBjYW5ub3RQcmVwYXJlVGVzdHNEdWVUb0Vycm9yOiAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM1JyxcbiAgICBjYW5ub3RQYXJzZVJhd0ZpbGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM2JyxcbiAgICB0ZXN0ZWRBcHBGYWlsZWRXaXRoRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM3JyxcbiAgICB1bmFibGVUb09wZW5Ccm93c2VyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM4JyxcbiAgICByZXF1ZXN0SG9va0NvbmZpZ3VyZUFQSUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM5JyxcbiAgICBmb3JiaWRkZW5DaGFyYXRlcnNJblNjcmVlbnNob3RQYXRoOiAgICAgICAgICAgICAgICAgJ0UxMDQwJyxcbiAgICBjYW5ub3RGaW5kRkZNUEVHOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDQxJyxcbiAgICBjb21wb3NpdGVBcmd1bWVudHNFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDQyJyxcbiAgICBjYW5ub3RGaW5kVHlwZXNjcmlwdENvbmZpZ3VyYXRpb25GaWxlOiAgICAgICAgICAgICAgJ0UxMDQzJyxcbiAgICBjbGllbnRTY3JpcHRJbml0aWFsaXplcklzTm90U3BlY2lmaWVkOiAgICAgICAgICAgICAgJ0UxMDQ0JyxcbiAgICBjbGllbnRTY3JpcHRCYXNlUGF0aElzTm90U3BlY2lmaWVkOiAgICAgICAgICAgICAgICAgJ0UxMDQ1JyxcbiAgICBjbGllbnRTY3JpcHRJbml0aWFsaXplck11bHRpcGxlQ29udGVudFNvdXJjZXM6ICAgICAgJ0UxMDQ2JyxcbiAgICBjYW5ub3RMb2FkQ2xpZW50U2NyaXB0RnJvbVBhdGg6ICAgICAgICAgICAgICAgICAgICAgJ0UxMDQ3JyxcbiAgICBjbGllbnRTY3JpcHRNb2R1bGVFbnRyeVBvaW50UGF0aENhbGN1bGF0aW9uRXJyb3I6ICAgJ0UxMDQ4JyxcbiAgICBtZXRob2RJc05vdEF2YWlsYWJsZUZvckFuSVBDSG9zdDogICAgICAgICAgICAgICAgICAgJ0UxMDQ5JyxcbiAgICB0b29MYXJnZUlQQ1BheWxvYWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDUwJyxcbiAgICBtYWxmb3JtZWRJUENNZXNzYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDUxJyxcbiAgICB1bmV4cGVjdGVkSVBDSGVhZFBhY2tldDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDUyJyxcbiAgICB1bmV4cGVjdGVkSVBDQm9keVBhY2tldDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDUzJyxcbiAgICB1bmV4cGVjdGVkSVBDVGFpbFBhY2tldDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDU0JyxcbiAgICBjYW5ub3RSdW5Mb2NhbE5vbkhlYWRsZXNzQnJvd3NlcldpdGhvdXREaXNwbGF5OiAgICAgJ0UxMDU3JyxcbiAgICB1bmNhdWdodEVycm9ySW5SZXBvcnRlcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDU4JyxcbiAgICByb2xlSW5pdGlhbGl6ZWRXaXRoUmVsYXRpdmVVcmw6ICAgICAgICAgICAgICAgICAgICAgJ0UxMDU5JyxcbiAgICB0eXBlU2NyaXB0Q29tcGlsZXJMb2FkaW5nRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgJ0UxMDYwJyxcbiAgICBjYW5ub3RDdXN0b21pemVTcGVjaWZpZWRDb21waWxlcnM6ICAgICAgICAgICAgICAgICAgJ0UxMDYxJyxcbiAgICBjYW5ub3RFbmFibGVSZXRyeVRlc3RQYWdlc09wdGlvbjogICAgICAgICAgICAgICAgICAgJ0UxMDYyJyxcbiAgICBicm93c2VyQ29ubmVjdGlvbkVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDYzJyxcbiAgICB0ZXN0UnVuUmVxdWVzdEluRGlzY29ubmVjdGVkQnJvd3NlcjogICAgICAgICAgICAgICAgJ0UxMDY0JyxcbiAgICBpbnZhbGlkUXVhcmFudGluZU9wdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDY1JyxcbiAgICBpbnZhbGlkUXVhcmFudGluZVBhcmFtZXRlcnNSYXRpbzogICAgICAgICAgICAgICAgICAgJ0UxMDY2JyxcbiAgICBpbnZhbGlkQXR0ZW1wdExpbWl0VmFsdWU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDY3JyxcbiAgICBpbnZhbGlkU3VjY2Vzc1RocmVzaG9sZFZhbHVlOiAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDY4JyxcbiAgICBjYW5ub3RTZXRDb25jdXJyZW5jeVdpdGhDRFBQb3J0OiAgICAgICAgICAgICAgICAgICAgJ0UxMDY5JyxcbiAgICBjYW5ub3RGaW5kVGVzdGNhZmVDb25maWd1cmF0aW9uRmlsZTogICAgICAgICAgICAgICAgJ0UxMDcwJyxcbiAgICBkYXNoYm9hcmRUb2tlbkluSlNPTjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDcxJyxcbiAgICByZXF1ZXN0VXJsSW52YWxpZFZhbHVlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDcyJyxcbiAgICByZXF1ZXN0UnVudGltZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDczJyxcbiAgICByZXF1ZXN0Q2Fubm90UmVzb2x2ZVRlc3RSdW46ICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDc0JyxcbiAgICByZWxhdGl2ZUJhc2VVcmw6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDc1JyxcbiAgICBpbnZhbGlkU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdFByb3BlcnR5OiAgICAgICAgICAgJ0UxMDc2JyxcbiAgICBpbnZhbGlkU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc1Byb3BlcnR5OiAgICAgJ0UxMDc3JyxcbiAgICBpbnZhbGlkQ29tbWFuZEluSnNvbkNvbXBpbGVyOiAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDc4JyxcbiAgICBpbnZhbGlkQ3VzdG9tQWN0aW9uc09wdGlvblR5cGU6ICAgICAgICAgICAgICAgICAgICAgJ0UxMDc5JyxcbiAgICBpbnZhbGlkQ3VzdG9tQWN0aW9uVHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDgwJyxcbiAgICBjYW5ub3RJbXBvcnRFU01JbkNvbW1vbnNKUzogICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDgxJyxcbn07XG4iXX0=
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3JzL3R5cGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxnRUFBZ0U7QUFDaEUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxnRUFBZ0U7OztBQUVuRCxRQUFBLGVBQWUsR0FBRztJQUMzQixtQkFBbUIsRUFBdUMsSUFBSTtJQUM5RCx1QkFBdUIsRUFBbUMsSUFBSTtJQUM5RCxnQ0FBZ0MsRUFBMEIsSUFBSTtJQUM5RCxpQ0FBaUMsRUFBeUIsSUFBSTtJQUM5RCxvQ0FBb0MsRUFBc0IsSUFBSTtJQUM5RCx5QkFBeUIsRUFBaUMsSUFBSTtJQUM5RCxpQkFBaUIsRUFBeUMsSUFBSTtJQUM5RCxpQkFBaUIsRUFBeUMsSUFBSTtJQUM5RCx3QkFBd0IsRUFBa0MsSUFBSTtJQUM5RCxnQ0FBZ0MsRUFBMEIsS0FBSztJQUMvRCx3QkFBd0IsRUFBa0MsS0FBSztJQUMvRCxzQkFBc0IsRUFBb0MsS0FBSztJQUMvRCxzQkFBc0IsRUFBb0MsS0FBSztJQUMvRCwwQkFBMEIsRUFBZ0MsS0FBSztJQUMvRCx5QkFBeUIsRUFBaUMsS0FBSztJQUMvRCxpQ0FBaUMsRUFBeUIsS0FBSztJQUMvRCxzQ0FBc0MsRUFBb0IsS0FBSztJQUMvRCw2QkFBNkIsRUFBNkIsS0FBSztJQUMvRCwwQkFBMEIsRUFBZ0MsS0FBSztJQUMvRCx1QkFBdUIsRUFBbUMsS0FBSztJQUMvRCxrQ0FBa0MsRUFBd0IsS0FBSztJQUMvRCxtQkFBbUIsRUFBdUMsS0FBSztJQUMvRCwwQkFBMEIsRUFBZ0MsS0FBSztJQUMvRCw2QkFBNkIsRUFBNkIsS0FBSztJQUMvRCx1Q0FBdUMsRUFBbUIsS0FBSztJQUMvRCxvQ0FBb0MsRUFBc0IsS0FBSztJQUMvRCx1Q0FBdUMsRUFBbUIsS0FBSztJQUMvRCxpREFBaUQsRUFBUyxLQUFLO0lBQy9ELDZCQUE2QixFQUE2QixLQUFLO0lBQy9ELDZCQUE2QixFQUE2QixL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QVcsT0FBTztDQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gV0FSTklORzogdGhpcyBmaWxlIGlzIHVzZWQgYnkgYm90aCB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLlxuLy8gRG8gbm90IHVzZSBhbnkgYnJvd3NlciBvciBub2RlLXNwZWNpZmljIEFQSSFcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFRFU1RfUlVOX0VSUk9SUyA9IHtcbiAgICB1bmNhdWdodEVycm9yT25QYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxJyxcbiAgICB1bmNhdWdodEVycm9ySW5UZXN0Q29kZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UyJyxcbiAgICB1bmNhdWdodE5vbkVycm9yT2JqZWN0SW5UZXN0Q29kZTogICAgICAgICAgICAgICAgICAgICAgICAgJ0UzJyxcbiAgICB1bmNhdWdodEVycm9ySW5DbGllbnRGdW5jdGlvbkNvZGU6ICAgICAgICAgICAgICAgICAgICAgICAgJ0U0JyxcbiAgICB1bmNhdWdodEVycm9ySW5DdXN0b21ET01Qcm9wZXJ0eUNvZGU6ICAgICAgICAgICAgICAgICAgICAgJ0U1JyxcbiAgICB1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U2JyxcbiAgICB1bmNhdWdodEV4Y2VwdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U3JyxcbiAgICBtaXNzaW5nQXdhaXRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U4JyxcbiAgICBhY3Rpb25JbnRlZ2VyT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U5JyxcbiAgICBhY3Rpb25Qb3NpdGl2ZUludGVnZXJPcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMCcsXG4gICAgYWN0aW9uQm9vbGVhbk9wdGlvbkVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTEnLFxuICAgIGFjdGlvblNwZWVkT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTEyJyxcbiAgICBhY3Rpb25PcHRpb25zVHlwZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxNCcsXG4gICAgYWN0aW9uQm9vbGVhbkFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMTUnLFxuICAgIGFjdGlvblN0cmluZ0FyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTE2JyxcbiAgICBhY3Rpb25OdWxsYWJsZVN0cmluZ0FyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgJ0UxNycsXG4gICAgYWN0aW9uU3RyaW5nT3JTdHJpbmdBcnJheUFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICdFMTgnLFxuICAgIGFjdGlvblN0cmluZ0FycmF5RWxlbWVudEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTE5JyxcbiAgICBhY3Rpb25JbnRlZ2VyQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UyMCcsXG4gICAgYWN0aW9uUm9sZUFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMjEnLFxuICAgIGFjdGlvblBvc2l0aXZlSW50ZWdlckFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAnRTIyJyxcbiAgICBhY3Rpb25TZWxlY3RvckVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UyMycsXG4gICAgYWN0aW9uRWxlbWVudE5vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMjQnLFxuICAgIGFjdGlvbkVsZW1lbnRJc0ludmlzaWJsZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTI2JyxcbiAgICBhY3Rpb25TZWxlY3Rvck1hdGNoZXNXcm9uZ05vZGVUeXBlRXJyb3I6ICAgICAgICAgICAgICAgICAgJ0UyNycsXG4gICAgYWN0aW9uQWRkaXRpb25hbEVsZW1lbnROb3RGb3VuZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICdFMjgnLFxuICAgIGFjdGlvbkFkZGl0aW9uYWxFbGVtZW50SXNJbnZpc2libGVFcnJvcjogICAgICAgICAgICAgICAgICAnRTI5JyxcbiAgICBhY3Rpb25BZGRpdGlvbmFsU2VsZWN0b3JNYXRjaGVzV3JvbmdOb2RlVHlwZUVycm9yOiAgICAgICAgJ0UzMCcsXG4gICAgYWN0aW9uRWxlbWVudE5vbkVkaXRhYmxlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFMzEnLFxuICAgIGFjdGlvbkVsZW1lbnROb3RUZXh0QXJlYUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTMyJyxcbiAgICBhY3Rpb25FbGVtZW50Tm9uQ29udGVudEVkaXRhYmxlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgJ0UzMycsXG4gICAgYWN0aW9uRWxlbWVudElzTm90RmlsZUlucHV0RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFMzQnLFxuICAgIGFjdGlvblJvb3RDb250YWluZXJOb3RGb3VuZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTM1JyxcbiAgICBhY3Rpb25JbmNvcnJlY3RLZXlzRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UzNicsXG4gICAgYWN0aW9uQ2Fubm90RmluZEZpbGVUb1VwbG9hZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICdFMzcnLFxuICAgIGFjdGlvblVuc3VwcG9ydGVkRGV2aWNlVHlwZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTM4JyxcbiAgICBhY3Rpb25JZnJhbWVJc05vdExvYWRlZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UzOScsXG4gICAgYWN0aW9uRWxlbWVudE5vdElmcmFtZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNDAnLFxuICAgIGFjdGlvbkludmFsaWRTY3JvbGxUYXJnZXRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAnRTQxJyxcbiAgICBjdXJyZW50SWZyYW1lSXNOb3RMb2FkZWRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U0MicsXG4gICAgY3VycmVudElmcmFtZU5vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNDMnLFxuICAgIGN1cnJlbnRJZnJhbWVJc0ludmlzaWJsZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTQ0JyxcbiAgICBuYXRpdmVEaWFsb2dOb3RIYW5kbGVkRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U0NScsXG4gICAgdW5jYXVnaHRFcnJvckluTmF0aXZlRGlhbG9nSGFuZGxlcjogICAgICAgICAgICAgICAgICAgICAgICdFNDYnLFxuICAgIHNldFRlc3RTcGVlZEFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTQ3JyxcbiAgICBzZXROYXRpdmVEaWFsb2dIYW5kbGVyQ29kZVdyb25nVHlwZUVycm9yOiAgICAgICAgICAgICAgICAgJ0U0OCcsXG4gICAgY2xpZW50RnVuY3Rpb25FeGVjdXRpb25JbnRlcnJ1cHRpb25FcnJvcjogICAgICAgICAgICAgICAgICdFNDknLFxuICAgIGRvbU5vZGVDbGllbnRGdW5jdGlvblJlc3VsdEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTUwJyxcbiAgICBpbnZhbGlkU2VsZWN0b3JSZXN1bHRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U1MScsXG4gICAgY2Fubm90T2J0YWluSW5mb0ZvckVsZW1lbnRTcGVjaWZpZWRCeVNlbGVjdG9yRXJyb3I6ICAgICAgICdFNTInLFxuICAgIGV4dGVybmFsQXNzZXJ0aW9uTGlicmFyeUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTUzJyxcbiAgICBwYWdlTG9hZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U1NCcsXG4gICAgd2luZG93RGltZW5zaW9uc092ZXJmbG93RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNTUnLFxuICAgIGZvcmJpZGRlbkNoYXJhY3RlcnNJblNjcmVlbnNob3RQYXRoRXJyb3I6ICAgICAgICAgICAgICAgICAnRTU2JyxcbiAgICBpbnZhbGlkRWxlbWVudFNjcmVlbnNob3REaW1lbnNpb25zRXJyb3I6ICAgICAgICAgICAgICAgICAgJ0U1NycsXG4gICAgcm9sZVN3aXRjaEluUm9sZUluaXRpYWxpemVyRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICdFNTgnLFxuICAgIGFzc2VydGlvbkV4ZWN1dGFibGVBcmd1bWVudEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnRTU5JyxcbiAgICBhc3NlcnRpb25XaXRob3V0TWV0aG9kQ2FsbEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U2MCcsXG4gICAgYXNzZXJ0aW9uVW5hd2FpdGVkUHJvbWlzZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNjEnLFxuICAgIHJlcXVlc3RIb29rTm90SW1wbGVtZW50ZWRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAnRTYyJyxcbiAgICByZXF1ZXN0SG9va1VuaGFuZGxlZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U2MycsXG4gICAgdW5jYXVnaHRFcnJvckluQ3VzdG9tQ2xpZW50U2NyaXB0Q29kZTogICAgICAgICAgICAgICAgICAgICdFNjQnLFxuICAgIHVuY2F1Z2h0RXJyb3JJbkN1c3RvbUNsaWVudFNjcmlwdENvZGVMb2FkZWRGcm9tTW9kdWxlOiAgICAnRTY1JyxcbiAgICB1bmNhdWdodEVycm9ySW5DdXN0b21TY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U2NicsXG4gICAgdW5jYXVnaHRUZXN0Q2FmZUVycm9ySW5DdXN0b21TY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICdFNjcnLFxuICAgIGNoaWxkV2luZG93SXNOb3RMb2FkZWRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTY4JyxcbiAgICBjaGlsZFdpbmRvd05vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U2OScsXG4gICAgY2Fubm90U3dpdGNoVG9XaW5kb3dFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNzAnLFxuICAgIGNsb3NlQ2hpbGRXaW5kb3dFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTcxJyxcbiAgICBjaGlsZFdpbmRvd0Nsb3NlZEJlZm9yZVN3aXRjaGluZ0Vycm9yOiAgICAgICAgICAgICAgICAgICAgJ0U3MicsXG4gICAgY2Fubm90Q2xvc2VXaW5kb3dXaXRoQ2hpbGRyZW5FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICdFNzMnLFxuICAgIHRhcmdldFdpbmRvd05vdEZvdW5kRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTc0JyxcbiAgICBwYXJlbnRXaW5kb3dOb3RGb3VuZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U3NicsXG4gICAgcHJldmlvdXNXaW5kb3dOb3RGb3VuZEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFNzcnLFxuICAgIHN3aXRjaFRvV2luZG93UHJlZGljYXRlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTc4JyxcbiAgICBhY3Rpb25GdW5jdGlvbkFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U3OScsXG4gICAgbXVsdGlwbGVXaW5kb3dzTW9kZUlzRGlzYWJsZWRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICdFODAnLFxuICAgIG11bHRpcGxlV2luZG93c01vZGVJc05vdFN1cHBvcnRlZEluUmVtb3RlQnJvd3NlckVycm9yOiAgICAnRTgxJyxcbiAgICBjYW5ub3RDbG9zZVdpbmRvd1dpdGhvdXRQYXJlbnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U4MicsXG4gICAgY2Fubm90UmVzdG9yZUNoaWxkV2luZG93RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFODMnLFxuICAgIGV4ZWN1dGlvblRpbWVvdXRFeGNlZWRlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTg0JyxcbiAgICBhY3Rpb25SZXF1aXJlZENvb2tpZUFyZ3VtZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U4NScsXG4gICAgYWN0aW9uQ29va2llQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFODYnLFxuICAgIGFjdGlvbkNvb2tpZUFyZ3VtZW50c0Vycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTg3JyxcbiAgICBhY3Rpb25VcmxDb29raWVBcmd1bWVudEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U4OCcsXG4gICAgYWN0aW9uVXJsc0Nvb2tpZUFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFODknLFxuICAgIGFjdGlvblN0cmluZ09wdGlvbkVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTkwJyxcbiAgICBhY3Rpb25EYXRlT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U5MScsXG4gICAgYWN0aW9uTnVtYmVyT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFOTInLFxuICAgIGFjdGlvblVybE9wdGlvbkVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTkzJyxcbiAgICBhY3Rpb25VcmxTZWFyY2hQYXJhbXNPcHRpb25FcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgJ0U5NCcsXG4gICAgYWN0aW9uT2JqZWN0T3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFOTUnLFxuICAgIGFjdGlvblVybEFyZ3VtZW50RXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTk2JyxcbiAgICBhY3Rpb25TdHJpbmdPclJlZ2V4T3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0U5NycsXG4gICAgYWN0aW9uU2tpcEpzRXJyb3JzQXJndW1lbnRFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICdFOTgnLFxuICAgIGFjdGlvbkZ1bmN0aW9uT3B0aW9uRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTk5JyxcbiAgICBhY3Rpb25JbnZhbGlkT2JqZWN0UHJvcGVydHlFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDAnLFxuICAgIGFjdGlvbkVsZW1lbnRJc05vdFRhcmdldEVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRTEwMScsXG4gICAgbXVsdGlwbGVXaW5kb3dzTW9kZUlzTm90U3VwcG9ydGVkSW5OYXRpdmVBdXRvbWF0aW9uRXJyb3I6ICdFMTAyJyxcbn07XG5cbmV4cG9ydCBjb25zdCBSVU5USU1FX0VSUk9SUyA9IHtcbiAgICBjYW5ub3RDcmVhdGVNdWx0aXBsZUxpdmVNb2RlUnVubmVyczogICAgICAgICAgICAgICAgJ0UxMDAwJyxcbiAgICBjYW5ub3RSdW5MaXZlTW9kZVJ1bm5lck11bHRpcGxlVGltZXM6ICAgICAgICAgICAgICAgJ0UxMDAxJyxcbiAgICBicm93c2VyRGlzY29ubmVjdGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDAyJyxcbiAgICBjYW5ub3RSdW5BZ2FpbnN0RGlzY29ubmVjdGVkQnJvd3NlcnM6ICAgICAgICAgICAgICAgJ0UxMDAzJyxcbiAgICBjYW5ub3RFc3RhYmxpc2hCcm93c2VyQ29ubmVjdGlvbjogICAgICAgICAgICAgICAgICAgJ0UxMDA0JyxcbiAgICBjYW5ub3RGaW5kQnJvd3NlcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA1JyxcbiAgICBicm93c2VyUHJvdmlkZXJOb3RGb3VuZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA2JyxcbiAgICBicm93c2VyTm90U2V0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA3JyxcbiAgICB0ZXN0RmlsZXNOb3RGb3VuZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA4JyxcbiAgICBub1Rlc3RzVG9SdW46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDA5JyxcbiAgICBjYW5ub3RGaW5kUmVwb3J0ZXJGb3JBbGlhczogICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDEwJyxcbiAgICBtdWx0aXBsZVNhbWVTdHJlYW1SZXBvcnRlcnM6ICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDExJyxcbiAgICBvcHRpb25WYWx1ZUlzTm90VmFsaWRSZWdFeHA6ICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDEyJyxcbiAgICBvcHRpb25WYWx1ZUlzTm90VmFsaWRLZXlWYWx1ZTogICAgICAgICAgICAgICAgICAgICAgJ0UxMDEzJyxcbiAgICBpbnZhbGlkU3BlZWRWYWx1ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDE0JyxcbiAgICBpbnZhbGlkQ29uY3VycmVuY3lGYWN0b3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDE1JyxcbiAgICBjYW5ub3REaXZpZGVSZW1vdGVzQ291bnRCeUNvbmN1cnJlbmN5OiAgICAgICAgICAgICAgJ0UxMDE2JyxcbiAgICBwb3J0c09wdGlvblJlcXVpcmVzVHdvTnVtYmVyczogICAgICAgICAgICAgICAgICAgICAgJ0UxMDE3JyxcbiAgICBwb3J0SXNOb3RGcmVlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDE4JyxcbiAgICBpbnZhbGlkSG9zdG5hbWU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDE5JyxcbiAgICBjYW5ub3RGaW5kU3BlY2lmaWVkVGVzdFNvdXJjZTogICAgICAgICAgICAgICAgICAgICAgJ0UxMDIwJyxcbiAgICBjbGllbnRGdW5jdGlvbkNvZGVJc05vdEFGdW5jdGlvbjogICAgICAgICAgICAgICAgICAgJ0UxMDIxJyxcbiAgICBzZWxlY3RvckluaXRpYWxpemVkV2l0aFdyb25nVHlwZTogICAgICAgICAgICAgICAgICAgJ0UxMDIyJyxcbiAgICBjbGllbnRGdW5jdGlvbkNhbm5vdFJlc29sdmVUZXN0UnVuOiAgICAgICAgICAgICAgICAgJ0UxMDIzJyxcbiAgICByZWdlbmVyYXRvckluQ2xpZW50RnVuY3Rpb25Db2RlOiAgICAgICAgICAgICAgICAgICAgJ0UxMDI0JyxcbiAgICBpbnZhbGlkQ2xpZW50RnVuY3Rpb25UZXN0UnVuQmluZGluZzogICAgICAgICAgICAgICAgJ0UxMDI1JyxcbiAgICBpbnZhbGlkVmFsdWVUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDI2JyxcbiAgICB1bnN1cHBvcnRlZFVybFByb3RvY29sOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDI3JyxcbiAgICB0ZXN0Q29udHJvbGxlclByb3h5Q2Fubm90UmVzb2x2ZVRlc3RSdW46ICAgICAgICAgICAgJ0UxMDI4JyxcbiAgICB0aW1lTGltaXRlZFByb21pc2VUaW1lb3V0RXhwaXJlZDogICAgICAgICAgICAgICAgICAgJ0UxMDI5JyxcbiAgICBub1Rlc3RzVG9SdW5EdWVGaWx0ZXJpbmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDMwJyxcbiAgICBjYW5ub3RTZXRWaWRlb09wdGlvbnNXaXRob3V0QmFzZVZpZGVvUGF0aFNwZWNpZmllZDogJ0UxMDMxJyxcbiAgICBtdWx0aXBsZUFQSU1ldGhvZENhbGxGb3JiaWRkZW46ICAgICAgICAgICAgICAgICAgICAgJ0UxMDMyJyxcbiAgICBpbnZhbGlkUmVwb3J0ZXJPdXRwdXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDMzJyxcbiAgICBjYW5ub3RSZWFkU1NMQ2VydEZpbGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM0JyxcbiAgICBjYW5ub3RQcmVwYXJlVGVzdHNEdWVUb0Vycm9yOiAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM1JyxcbiAgICBjYW5ub3RQYXJzZVJhd0ZpbGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM2JyxcbiAgICB0ZXN0ZWRBcHBGYWlsZWRXaXRoRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM3JyxcbiAgICB1bmFibGVUb09wZW5Ccm93c2VyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM4JyxcbiAgICByZXF1ZXN0SG9va0NvbmZpZ3VyZUFQSUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDM5JyxcbiAgICBmb3JiaWRkZW5DaGFyYXRlcnNJblNjcmVlbnNob3RQYXRoOiAgICAgICAgICAgICAgICAgJ0UxMDQwJyxcbiAgICBjYW5ub3RGaW5kRkZNUEVHOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDQxJyxcbiAgICBjb21wb3NpdGVBcmd1bWVudHNFcnJvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDQyJyxcbiAgICBjYW5ub3RGaW5kVHlwZXNjcmlwdENvbmZpZ3VyYXRpb25GaWxlOiAgICAgICAgICAgICAgJ0UxMDQzJyxcbiAgICBjbGllbnRTY3JpcHRJbml0aWFsaXplcklzTm90U3BlY2lmaWVkOiAgICAgICAgICAgICAgJ0UxMDQ0JyxcbiAgICBjbGllbnRTY3JpcHRCYXNlUGF0aElzTm90U3BlY2lmaWVkOiAgICAgICAgICAgICAgICAgJ0UxMDQ1JyxcbiAgICBjbGllbnRTY3JpcHRJbml0aWFsaXplck11bHRpcGxlQ29udGVudFNvdXJjZXM6ICAgICAgJ0UxMDQ2JyxcbiAgICBjYW5ub3RMb2FkQ2xpZW50U2NyaXB0RnJvbVBhdGg6ICAgICAgICAgICAgICAgICAgICAgJ0UxMDQ3JyxcbiAgICBjbGllbnRTY3JpcHRNb2R1bGVFbnRyeVBvaW50UGF0aENhbGN1bGF0aW9uRXJyb3I6ICAgJ0UxMDQ4JyxcbiAgICBtZXRob2RJc05vdEF2YWlsYWJsZUZvckFuSVBDSG9zdDogICAgICAgICAgICAgICAgICAgJ0UxMDQ5JyxcbiAgICB0b29MYXJnZUlQQ1BheWxvYWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDUwJyxcbiAgICBtYWxmb3JtZWRJUENNZXNzYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDUxJyxcbiAgICB1bmV4cGVjdGVkSVBDSGVhZFBhY2tldDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDUyJyxcbiAgICB1bmV4cGVjdGVkSVBDQm9keVBhY2tldDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDUzJyxcbiAgICB1bmV4cGVjdGVkSVBDVGFpbFBhY2tldDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDU0JyxcbiAgICBjYW5ub3RSdW5Mb2NhbE5vbkhlYWRsZXNzQnJvd3NlcldpdGhvdXREaXNwbGF5OiAgICAgJ0UxMDU3JyxcbiAgICB1bmNhdWdodEVycm9ySW5SZXBvcnRlcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDU4JyxcbiAgICByb2xlSW5pdGlhbGl6ZWRXaXRoUmVsYXRpdmVVcmw6ICAgICAgICAgICAgICAgICAgICAgJ0UxMDU5JyxcbiAgICB0eXBlU2NyaXB0Q29tcGlsZXJMb2FkaW5nRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgJ0UxMDYwJyxcbiAgICBjYW5ub3RDdXN0b21pemVTcGVjaWZpZWRDb21waWxlcnM6ICAgICAgICAgICAgICAgICAgJ0UxMDYxJyxcbiAgICBjYW5ub3RFbmFibGVSZXRyeVRlc3RQYWdlc09wdGlvbjogICAgICAgICAgICAgICAgICAgJ0UxMDYyJyxcbiAgICBicm93c2VyQ29ubmVjdGlvbkVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDYzJyxcbiAgICB0ZXN0UnVuUmVxdWVzdEluRGlzY29ubmVjdGVkQnJvd3NlcjogICAgICAgICAgICAgICAgJ0UxMDY0JyxcbiAgICBpbnZhbGlkUXVhcmFudGluZU9wdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDY1JyxcbiAgICBpbnZhbGlkUXVhcmFudGluZVBhcmFtZXRlcnNSYXRpbzogICAgICAgICAgICAgICAgICAgJ0UxMDY2JyxcbiAgICBpbnZhbGlkQXR0ZW1wdExpbWl0VmFsdWU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDY3JyxcbiAgICBpbnZhbGlkU3VjY2Vzc1RocmVzaG9sZFZhbHVlOiAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDY4JyxcbiAgICBjYW5ub3RTZXRDb25jdXJyZW5jeVdpdGhDRFBQb3J0OiAgICAgICAgICAgICAgICAgICAgJ0UxMDY5JyxcbiAgICBjYW5ub3RGaW5kVGVzdGNhZmVDb25maWd1cmF0aW9uRmlsZTogICAgICAgICAgICAgICAgJ0UxMDcwJyxcbiAgICBkYXNoYm9hcmRUb2tlbkluSlNPTjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDcxJyxcbiAgICByZXF1ZXN0VXJsSW52YWxpZFZhbHVlRXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDcyJyxcbiAgICByZXF1ZXN0UnVudGltZUVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDczJyxcbiAgICByZXF1ZXN0Q2Fubm90UmVzb2x2ZVRlc3RSdW46ICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDc0JyxcbiAgICByZWxhdGl2ZUJhc2VVcmw6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDc1JyxcbiAgICBpbnZhbGlkU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdFByb3BlcnR5OiAgICAgICAgICAgJ0UxMDc2JyxcbiAgICBpbnZhbGlkU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc1Byb3BlcnR5OiAgICAgJ0UxMDc3JyxcbiAgICBpbnZhbGlkQ29tbWFuZEluSnNvbkNvbXBpbGVyOiAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDc4JyxcbiAgICBpbnZhbGlkQ3VzdG9tQWN0aW9uc09wdGlvblR5cGU6ICAgICAgICAgICAgICAgICAgICAgJ0UxMDc5JyxcbiAgICBpbnZhbGlkQ3VzdG9tQWN0aW9uVHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDgwJyxcbiAgICBjYW5ub3RJbXBvcnRFU01JbkNvbW1vbnNKUzogICAgICAgICAgICAgICAgICAgICAgICAgJ0UxMDgxJyxcbiAgICBzZXROYXRpdmVBdXRvbWF0aW9uRm9yVW5zdXBwb3J0ZWRCcm93c2VyczogICAgICAgICAgJ0UxMDgyJyxcbn07XG4iXX0=
package/lib/index.js CHANGED
@@ -3,39 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const runtime_1 = require("./errors/runtime");
7
- const types_1 = require("./errors/types");
8
6
  const embedding_utils_1 = __importDefault(require("./embedding-utils"));
9
7
  const exportable_lib_1 = __importDefault(require("./api/exportable-lib"));
10
8
  const testcafe_configuration_1 = __importDefault(require("./configuration/testcafe-configuration"));
11
9
  const option_names_1 = __importDefault(require("./configuration/option-names"));
12
- const process_title_1 = __importDefault(require("./services/process-title"));
13
10
  const user_variables_1 = __importDefault(require("./api/user-variables"));
11
+ const utils_1 = require("./configuration/utils");
14
12
  const lazyRequire = require('import-lazy')(require);
15
13
  const TestCafe = lazyRequire('./testcafe');
16
- const endpointUtils = lazyRequire('endpoint-utils');
17
14
  const setupExitHook = lazyRequire('async-exit-hook');
18
- // Validations
19
- async function getValidHostname(hostname) {
20
- if (hostname) {
21
- const valid = await endpointUtils.isMyHostname(hostname);
22
- if (!valid)
23
- throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.invalidHostname, hostname);
24
- }
25
- else
26
- hostname = endpointUtils.getIPAddress();
27
- return hostname;
28
- }
29
- async function getValidPort(port) {
30
- if (port) {
31
- const isFree = await endpointUtils.isFreePort(port);
32
- if (!isFree)
33
- throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.portIsNotFree, port);
34
- }
35
- else
36
- port = await endpointUtils.getFreePort();
37
- return port;
38
- }
39
15
  // API
40
16
  async function getConfiguration(args) {
41
17
  var _a;
@@ -47,7 +23,7 @@ async function getConfiguration(args) {
47
23
  else {
48
24
  // NOTE: Positional arguments support is left only for backward compatibility.
49
25
  // It should be removed in future TestCafe versions.
50
- // All new APIs should be enabled trough the configuration object in the upper clause.
26
+ // All new APIs should be enabled through the configuration object in the upper clause.
51
27
  // Please do not add new APIs here.
52
28
  const [hostname, port1, port2, ssl, developmentMode, retryTestPages, cache, configFile] = args;
53
29
  configuration = new testcafe_configuration_1.default(configFile);
@@ -65,12 +41,11 @@ async function getConfiguration(args) {
65
41
  }
66
42
  // API
67
43
  async function createTestCafe(...args) {
68
- process.title = process_title_1.default.main;
69
44
  const configuration = await getConfiguration(args);
70
45
  const [hostname, port1, port2] = await Promise.all([
71
- getValidHostname(configuration.getOption(option_names_1.default.hostname)),
72
- getValidPort(configuration.getOption(option_names_1.default.port1)),
73
- getValidPort(configuration.getOption(option_names_1.default.port2)),
46
+ (0, utils_1.getValidHostname)(configuration.getOption(option_names_1.default.hostname)),
47
+ (0, utils_1.getValidPort)(configuration.getOption(option_names_1.default.port1)),
48
+ (0, utils_1.getValidPort)(configuration.getOption(option_names_1.default.port2)),
74
49
  ]);
75
50
  const userVariablesOption = configuration.getOption(option_names_1.default.userVariables);
76
51
  if (userVariablesOption)
@@ -88,4 +63,4 @@ Object.keys(exportable_lib_1.default).forEach(key => {
88
63
  });
89
64
  exports.default = createTestCafe;
90
65
  module.exports = exports.default;
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBZ0Q7QUFDaEQsMENBQWdEO0FBQ2hELHdFQUErQztBQUMvQywwRUFBaUQ7QUFDakQsb0dBQTJFO0FBQzNFLGdGQUF3RDtBQUN4RCw2RUFBb0Q7QUFDcEQsMEVBQWlEO0FBRWpELE1BQU0sV0FBVyxHQUFLLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0RCxNQUFNLFFBQVEsR0FBUSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDaEQsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDcEQsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFckQsY0FBYztBQUNkLEtBQUssVUFBVSxnQkFBZ0IsQ0FBRSxRQUFRO0lBQ3JDLElBQUksUUFBUSxFQUFFO1FBQ1YsTUFBTSxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxLQUFLO1lBQ04sTUFBTSxJQUFJLHNCQUFZLENBQUMsc0JBQWMsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDeEU7O1FBRUcsUUFBUSxHQUFHLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUU1QyxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBRUQsS0FBSyxVQUFVLFlBQVksQ0FBRSxJQUFJO0lBQzdCLElBQUksSUFBSSxFQUFFO1FBQ04sTUFBTSxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxNQUFNO1lBQ1AsTUFBTSxJQUFJLHNCQUFZLENBQUMsc0JBQWMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDbEU7O1FB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QUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IGVtYmVkZGluZ1V0aWxzIGZyb20gJy4vZW1iZWRkaW5nLXV0aWxzJztcbmltcG9ydCBleHBvcnRhYmxlTGliIGZyb20gJy4vYXBpL2V4cG9ydGFibGUtbGliJztcbmltcG9ydCBUZXN0Q2FmZUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9jb25maWd1cmF0aW9uL3Rlc3RjYWZlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE9QVElPTl9OQU1FUyBmcm9tICcuL2NvbmZpZ3VyYXRpb24vb3B0aW9uLW5hbWVzJztcbmltcG9ydCBQcm9jZXNzVGl0bGUgZnJvbSAnLi9zZXJ2aWNlcy9wcm9jZXNzLXRpdGxlJztcbmltcG9ydCB1c2VyVmFyaWFibGVzIGZyb20gJy4vYXBpL3VzZXItdmFyaWFibGVzJztcblxuY29uc3QgbGF6eVJlcXVpcmUgICA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCBUZXN0Q2FmZSAgICAgID0gbGF6eVJlcXVpcmUoJy4vdGVzdGNhZmUnKTtcbmNvbnN0IGVuZHBvaW50VXRpbHMgPSBsYXp5UmVxdWlyZSgnZW5kcG9pbnQtdXRpbHMnKTtcbmNvbnN0IHNldHVwRXhpdEhvb2sgPSBsYXp5UmVxdWlyZSgnYXN5bmMtZXhpdC1ob29rJyk7XG5cbi8vIFZhbGlkYXRpb25zXG5hc3luYyBmdW5jdGlvbiBnZXRWYWxpZEhvc3RuYW1lIChob3N0bmFtZSkge1xuICAgIGlmIChob3N0bmFtZSkge1xuICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IGVuZHBvaW50VXRpbHMuaXNNeUhvc3RuYW1lKGhvc3RuYW1lKTtcblxuICAgICAgICBpZiAoIXZhbGlkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5pbnZhbGlkSG9zdG5hbWUsIGhvc3RuYW1lKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICBob3N0bmFtZSA9IGVuZHBvaW50VXRpbHMuZ2V0SVBBZGRyZXNzKCk7XG5cbiAgICByZXR1cm4gaG9zdG5hbWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFZhbGlkUG9ydCAocG9ydCkge1xuICAgIGlmIChwb3J0KSB7XG4gICAgICAgIGNvbnN0IGlzRnJlZSA9IGF3YWl0IGVuZHBvaW50VXRpbHMuaXNGcmVlUG9ydChwb3J0KTtcblxuICAgICAgICBpZiAoIWlzRnJlZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMucG9ydElzTm90RnJlZSwgcG9ydCk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgcG9ydCA9IGF3YWl0IGVuZHBvaW50VXRpbHMuZ2V0RnJlZVBvcnQoKTtcblxuICAgIHJldHVybiBwb3J0O1xufVxuXG4vLyBBUElcbmFzeW5jIGZ1bmN0aW9uIGdldENvbmZpZ3VyYXRpb24gKGFyZ3MpIHtcbiAgICBsZXQgY29uZmlndXJhdGlvbjtcblxuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgYXJnc1swXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uZmlndXJhdGlvbiA9IG5ldyBUZXN0Q2FmZUNvbmZpZ3VyYXRpb24oYXJnc1swXT8uY29uZmlnRmlsZSk7XG5cbiAgICAgICAgYXdhaXQgY29uZmlndXJhdGlvbi5pbml0KGFyZ3NbMF0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gTk9URTogUG9zaXRpb25hbCBhcmd1bWVudHMgc3VwcG9ydCBpcyBsZWZ0IG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAgICAgIC8vIEl0IHNob3VsZCBiZSByZW1vdmVkIGluIGZ1dHVyZSBUZXN0Q2FmZSB2ZXJzaW9ucy5cbiAgICAgICAgLy8gQWxsIG5ldyBBUElzIHNob3VsZCBiZSBlbmFibGVkIHRyb3VnaCB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgaW4gdGhlIHVwcGVyIGNsYXVzZS5cbiAgICAgICAgLy8gUGxlYXNlIGRvIG5vdCBhZGQgbmV3IEFQSXMgaGVyZS5cbiAgICAgICAgY29uc3QgW2hvc3RuYW1lLCBwb3J0MSwgcG9ydDIsIHNzbCwgZGV2ZWxvcG1lbnRNb2RlLCByZXRyeVRlc3RQYWdlcywgY2FjaGUsIGNvbmZpZ0ZpbGVdID0gYXJncztcblxuICAgICAgICBjb25maWd1cmF0aW9uID0gbmV3IFRlc3RDYWZlQ29uZmlndXJhdGlvbihjb25maWdGaWxlKTtcblxuICAgICAgICBhd2FpdCBjb25maWd1cmF0aW9uLmluaXQoe1xuICAgICAgICAgICAgaG9zdG5hbWUsXG4gICAgICAgICAgICBwb3J0MSxcbiAgICAgICAgICAgIHBvcnQyLFxuICAgICAgICAgICAgc3NsLFxuICAgICAgICAgICAgZGV2ZWxvcG1lbnRNb2RlLFxuICAgICAgICAgICAgcmV0cnlUZXN0UGFnZXMsXG4gICAgICAgICAgICBjYWNoZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG59XG5cbi8vIEFQSVxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVzdENhZmUgKC4uLmFyZ3MpIHtcbiAgICBwcm9jZXNzLnRpdGxlID0gUHJvY2Vzc1RpdGxlLm1haW47XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgZ2V0Q29uZmlndXJhdGlvbihhcmdzKTtcblxuICAgIGNvbnN0IFtob3N0bmFtZSwgcG9ydDEsIHBvcnQyXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgZ2V0VmFsaWRIb3N0bmFtZShjb25maWd1cmF0aW9uLmdldE9wdGlvbihPUFRJT05fTkFNRVMuaG9zdG5hbWUpKSxcbiAgICAgICAgZ2V0VmFsaWRQb3J0KGNvbmZpZ3VyYXRpb24uZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5wb3J0MSkpLFxuICAgICAgICBnZXRWYWxpZFBvcnQoY29uZmlndXJhdGlvbi5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnBvcnQyKSksXG4gICAgXSk7XG5cbiAgICBjb25zdCB1c2VyVmFyaWFibGVzT3B0aW9uID0gY29uZmlndXJhdGlvbi5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnVzZXJWYXJpYWJsZXMpO1xuXG4gICAgaWYgKHVzZXJWYXJpYWJsZXNPcHRpb24pXG4gICAgICAgIHVzZXJWYXJpYWJsZXMudmFsdWUgPSB1c2VyVmFyaWFibGVzT3B0aW9uO1xuXG4gICAgY29uZmlndXJhdGlvbi5tZXJnZU9wdGlvbnMoeyBob3N0bmFtZSwgcG9ydDEsIHBvcnQyIH0pO1xuXG4gICAgY29uc3QgdGVzdGNhZmUgPSBuZXcgVGVzdENhZmUoY29uZmlndXJhdGlvbik7XG5cbiAgICBzZXR1cEV4aXRIb29rKGNiID0+IHRlc3RjYWZlLmNsb3NlKCkudGhlbihjYikpO1xuXG4gICAgcmV0dXJuIHRlc3RjYWZlO1xufVxuXG4vLyBFbWJlZGRpbmcgdXRpbHNcbmNyZWF0ZVRlc3RDYWZlLmVtYmVkZGluZ1V0aWxzID0gZW1iZWRkaW5nVXRpbHM7XG5cbi8vIENvbW1vbiBBUElcbk9iamVjdC5rZXlzKGV4cG9ydGFibGVMaWIpLmZvckVhY2goa2V5ID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlVGVzdENhZmUsIGtleSwgeyBnZXQ6ICgpID0+IGV4cG9ydGFibGVMaWJba2V5XSB9KTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVUZXN0Q2FmZTtcbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFBK0M7QUFDL0MsMEVBQWlEO0FBQ2pELG9HQUEyRTtBQUMzRSxnRkFBd0Q7QUFDeEQsMEVBQWlEO0FBQ2pELGlEQUF1RTtBQUV2RSxNQUFNLFdBQVcsR0FBSyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEQsTUFBTSxRQUFRLEdBQVEsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2hELE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRXJELE1BQU07QUFDTixLQUFLLFVBQVUsZ0JBQWdCLENBQUUsSUFBSTs7SUFDakMsSUFBSSxhQUFhLENBQUM7SUFFbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDbEQsYUFBYSxHQUFHLElBQUksZ0NBQXFCLENBQUMsTUFBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyQztTQUNJO1FBQ0QsOEVBQThFO1FBQzlFLG9EQUFvRDtRQUNwRCx1RkFBdUY7UUFDdkYsbUNBQW1DO1FBQ25DLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBRS9GLGFBQWEsR0FBRyxJQUFJLGdDQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXRELE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQztZQUNyQixRQUFRO1lBQ1IsS0FBSztZQUNMLEtBQUs7WUFDTCxHQUFHO1lBQ0gsZUFBZTtZQUNmLGNBQWM7WUFDZCxLQUFLO1NBQ1IsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLGFBQWEsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTTtBQUNOLEtBQUssVUFBVSxjQUFjLENBQUUsR0FBRyxJQUFJO0lBQ2xDLE1BQU0sYUFBYSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbkQsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQy9DLElBQUEsd0JBQWdCLEVBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxzQkFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLElBQUEsb0JBQVksRUFBQyxhQUFhLENBQUMsU0FBUyxDQUFDLHNCQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsSUFBQSxvQkFBWSxFQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsc0JBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM1RCxDQUFDLENBQUM7SUFFSCxNQUFNLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsc0JBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVoRixJQUFJLG1CQUFtQjtRQUNuQix3QkFBYSxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQztJQUU5QyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRXZELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTdDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUvQyxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBRUQsa0JBQWtCO0FBQ2xCLGNBQWMsQ0FBQyxjQUFjLEdBQUcseUJBQWMsQ0FBQztBQUUvQyxhQUFhO0FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ3JDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyx3QkFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRixDQUFDLENBQUMsQ0FBQztBQUVILGtCQUFlLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlbWJlZGRpbmdVdGlscyBmcm9tICcuL2VtYmVkZGluZy11dGlscyc7XG5pbXBvcnQgZXhwb3J0YWJsZUxpYiBmcm9tICcuL2FwaS9leHBvcnRhYmxlLWxpYic7XG5pbXBvcnQgVGVzdENhZmVDb25maWd1cmF0aW9uIGZyb20gJy4vY29uZmlndXJhdGlvbi90ZXN0Y2FmZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCBPUFRJT05fTkFNRVMgZnJvbSAnLi9jb25maWd1cmF0aW9uL29wdGlvbi1uYW1lcyc7XG5pbXBvcnQgdXNlclZhcmlhYmxlcyBmcm9tICcuL2FwaS91c2VyLXZhcmlhYmxlcyc7XG5pbXBvcnQgeyBnZXRWYWxpZEhvc3RuYW1lLCBnZXRWYWxpZFBvcnQgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24vdXRpbHMnO1xuXG5jb25zdCBsYXp5UmVxdWlyZSAgID0gcmVxdWlyZSgnaW1wb3J0LWxhenknKShyZXF1aXJlKTtcbmNvbnN0IFRlc3RDYWZlICAgICAgPSBsYXp5UmVxdWlyZSgnLi90ZXN0Y2FmZScpO1xuY29uc3Qgc2V0dXBFeGl0SG9vayA9IGxhenlSZXF1aXJlKCdhc3luYy1leGl0LWhvb2snKTtcblxuLy8gQVBJXG5hc3luYyBmdW5jdGlvbiBnZXRDb25maWd1cmF0aW9uIChhcmdzKSB7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb247XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGFyZ3NbMF0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24gPSBuZXcgVGVzdENhZmVDb25maWd1cmF0aW9uKGFyZ3NbMF0/LmNvbmZpZ0ZpbGUpO1xuXG4gICAgICAgIGF3YWl0IGNvbmZpZ3VyYXRpb24uaW5pdChhcmdzWzBdKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIE5PVEU6IFBvc2l0aW9uYWwgYXJndW1lbnRzIHN1cHBvcnQgaXMgbGVmdCBvbmx5IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgICAgICAvLyBJdCBzaG91bGQgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgVGVzdENhZmUgdmVyc2lvbnMuXG4gICAgICAgIC8vIEFsbCBuZXcgQVBJcyBzaG91bGQgYmUgZW5hYmxlZCB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBpbiB0aGUgdXBwZXIgY2xhdXNlLlxuICAgICAgICAvLyBQbGVhc2UgZG8gbm90IGFkZCBuZXcgQVBJcyBoZXJlLlxuICAgICAgICBjb25zdCBbaG9zdG5hbWUsIHBvcnQxLCBwb3J0Miwgc3NsLCBkZXZlbG9wbWVudE1vZGUsIHJldHJ5VGVzdFBhZ2VzLCBjYWNoZSwgY29uZmlnRmlsZV0gPSBhcmdzO1xuXG4gICAgICAgIGNvbmZpZ3VyYXRpb24gPSBuZXcgVGVzdENhZmVDb25maWd1cmF0aW9uKGNvbmZpZ0ZpbGUpO1xuXG4gICAgICAgIGF3YWl0IGNvbmZpZ3VyYXRpb24uaW5pdCh7XG4gICAgICAgICAgICBob3N0bmFtZSxcbiAgICAgICAgICAgIHBvcnQxLFxuICAgICAgICAgICAgcG9ydDIsXG4gICAgICAgICAgICBzc2wsXG4gICAgICAgICAgICBkZXZlbG9wbWVudE1vZGUsXG4gICAgICAgICAgICByZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgICAgIGNhY2hlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbn1cblxuLy8gQVBJXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVUZXN0Q2FmZSAoLi4uYXJncykge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBnZXRDb25maWd1cmF0aW9uKGFyZ3MpO1xuXG4gICAgY29uc3QgW2hvc3RuYW1lLCBwb3J0MSwgcG9ydDJdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBnZXRWYWxpZEhvc3RuYW1lKGNvbmZpZ3VyYXRpb24uZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5ob3N0bmFtZSkpLFxuICAgICAgICBnZXRWYWxpZFBvcnQoY29uZmlndXJhdGlvbi5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnBvcnQxKSksXG4gICAgICAgIGdldFZhbGlkUG9ydChjb25maWd1cmF0aW9uLmdldE9wdGlvbihPUFRJT05fTkFNRVMucG9ydDIpKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHVzZXJWYXJpYWJsZXNPcHRpb24gPSBjb25maWd1cmF0aW9uLmdldE9wdGlvbihPUFRJT05fTkFNRVMudXNlclZhcmlhYmxlcyk7XG5cbiAgICBpZiAodXNlclZhcmlhYmxlc09wdGlvbilcbiAgICAgICAgdXNlclZhcmlhYmxlcy52YWx1ZSA9IHVzZXJWYXJpYWJsZXNPcHRpb247XG5cbiAgICBjb25maWd1cmF0aW9uLm1lcmdlT3B0aW9ucyh7IGhvc3RuYW1lLCBwb3J0MSwgcG9ydDIgfSk7XG5cbiAgICBjb25zdCB0ZXN0Y2FmZSA9IG5ldyBUZXN0Q2FmZShjb25maWd1cmF0aW9uKTtcblxuICAgIHNldHVwRXhpdEhvb2soY2IgPT4gdGVzdGNhZmUuY2xvc2UoKS50aGVuKGNiKSk7XG5cbiAgICByZXR1cm4gdGVzdGNhZmU7XG59XG5cbi8vIEVtYmVkZGluZyB1dGlsc1xuY3JlYXRlVGVzdENhZmUuZW1iZWRkaW5nVXRpbHMgPSBlbWJlZGRpbmdVdGlscztcblxuLy8gQ29tbW9uIEFQSVxuT2JqZWN0LmtleXMoZXhwb3J0YWJsZUxpYikuZm9yRWFjaChrZXkgPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVUZXN0Q2FmZSwga2V5LCB7IGdldDogKCkgPT4gZXhwb3J0YWJsZUxpYltrZXldIH0pO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVRlc3RDYWZlO1xuIl19