@mnaoumov/typescript-dev-toolkit 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/dist/lib/cjs/build.cjs +2 -24
  2. package/dist/lib/cjs/build.d.cts +1 -1
  3. package/dist/lib/cjs/bundlers/esbuild-impl/change-extension-plugin.cjs +2 -24
  4. package/dist/lib/cjs/bundlers/esbuild-impl/change-extension-plugin.d.cts +1 -1
  5. package/dist/lib/cjs/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +1 -56
  6. package/dist/lib/cjs/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.cts +1 -1
  7. package/dist/lib/cjs/bundlers/esbuild-impl/fix-esm-plugin.cjs +4 -25
  8. package/dist/lib/cjs/bundlers/esbuild-impl/fix-esm-plugin.d.cts +1 -1
  9. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +6 -61
  10. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -1
  11. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +129 -27
  12. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +4 -2
  13. package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +3 -25
  14. package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +1 -1
  15. package/dist/lib/cjs/bundlers/index.cjs +2 -57
  16. package/dist/lib/cjs/bundlers/index.d.cts +1 -1
  17. package/dist/lib/cjs/check-project-types.cjs +3 -25
  18. package/dist/lib/cjs/check-project-types.d.cts +1 -1
  19. package/dist/lib/cjs/cli-utils.cjs +3 -25
  20. package/dist/lib/cjs/cli-utils.d.cts +1 -1
  21. package/dist/lib/cjs/code-generator.cjs +1 -56
  22. package/dist/lib/cjs/code-generator.d.cts +1 -1
  23. package/dist/lib/cjs/commitlint-config.cjs +2 -24
  24. package/dist/lib/cjs/commitlint-config.d.cts +1 -1
  25. package/dist/lib/cjs/commitlint-forbidden-patterns.cjs +1 -56
  26. package/dist/lib/cjs/commitlint-forbidden-patterns.d.cts +1 -1
  27. package/dist/lib/cjs/commitlint-spellcheck-header.cjs +1 -56
  28. package/dist/lib/cjs/commitlint-spellcheck-header.d.cts +1 -1
  29. package/dist/lib/cjs/env-toggle.cjs +3 -25
  30. package/dist/lib/cjs/env-toggle.d.cts +1 -1
  31. package/dist/lib/cjs/exec.cjs +3 -25
  32. package/dist/lib/cjs/exec.d.cts +2 -1
  33. package/dist/lib/cjs/forbidden-patterns.cjs +3 -25
  34. package/dist/lib/cjs/forbidden-patterns.d.cts +1 -1
  35. package/dist/lib/cjs/formatters/dprint.cjs +2 -24
  36. package/dist/lib/cjs/formatters/dprint.d.cts +1 -1
  37. package/dist/lib/cjs/formatters/index.cjs +2 -57
  38. package/dist/lib/cjs/formatters/index.d.cts +1 -1
  39. package/dist/lib/cjs/fs.cjs +2 -24
  40. package/dist/lib/cjs/fs.d.cts +2 -1
  41. package/dist/lib/cjs/gate.cjs +1 -56
  42. package/dist/lib/cjs/gate.d.cts +1 -1
  43. package/dist/lib/cjs/git.cjs +1 -56
  44. package/dist/lib/cjs/git.d.cts +1 -1
  45. package/dist/lib/cjs/index.cjs +31 -86
  46. package/dist/lib/cjs/json.cjs +2 -24
  47. package/dist/lib/cjs/json.d.cts +1 -1
  48. package/dist/lib/cjs/library-build.cjs +101 -35
  49. package/dist/lib/cjs/library-build.d.cts +12 -2
  50. package/dist/lib/cjs/library-references.d.cts +2 -0
  51. package/dist/lib/cjs/linters/cspell-content.cjs +2 -24
  52. package/dist/lib/cjs/linters/cspell-content.d.cts +1 -1
  53. package/dist/lib/cjs/linters/cspell.cjs +1 -56
  54. package/dist/lib/cjs/linters/cspell.d.cts +1 -1
  55. package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.cjs +1 -56
  56. package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.d.cts +1 -1
  57. package/dist/lib/cjs/linters/eslint-config.cjs +8 -30
  58. package/dist/lib/cjs/linters/eslint-config.d.cts +1 -1
  59. package/dist/lib/cjs/linters/eslint-no-restricted-syntax.cjs +1 -56
  60. package/dist/lib/cjs/linters/eslint-no-restricted-syntax.d.cts +1 -1
  61. package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +1 -56
  62. package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.d.cts +1 -1
  63. package/dist/lib/cjs/linters/eslint-rules/index.cjs +13 -68
  64. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +1 -1
  65. package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +2 -24
  66. package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +1 -1
  67. package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.cjs +2 -24
  68. package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.d.cts +1 -1
  69. package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.cjs +2 -24
  70. package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.d.cts +1 -1
  71. package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.cjs +2 -24
  72. package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.d.cts +1 -1
  73. package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.cjs +1 -56
  74. package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.d.cts +1 -1
  75. package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.cjs +1 -56
  76. package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.d.cts +1 -1
  77. package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.cjs +2 -24
  78. package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.d.cts +1 -1
  79. package/dist/lib/cjs/linters/eslint-rules/require-method-template.cjs +2 -24
  80. package/dist/lib/cjs/linters/eslint-rules/require-method-template.d.cts +1 -1
  81. package/dist/lib/cjs/linters/eslint-rules/require-super-call.cjs +2 -24
  82. package/dist/lib/cjs/linters/eslint-rules/require-super-call.d.cts +1 -1
  83. package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.cjs +1 -56
  84. package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.d.cts +1 -1
  85. package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.cjs +2 -24
  86. package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.d.cts +1 -1
  87. package/dist/lib/cjs/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +1 -1
  88. package/dist/lib/cjs/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.cts +1 -1
  89. package/dist/lib/cjs/linters/eslint.cjs +78 -26
  90. package/dist/lib/cjs/linters/eslint.d.cts +40 -1
  91. package/dist/lib/cjs/linters/index.cjs +15 -70
  92. package/dist/lib/cjs/linters/index.d.cts +1 -1
  93. package/dist/lib/cjs/linters/lint-ignores.cjs +2 -24
  94. package/dist/lib/cjs/linters/lint-ignores.d.cts +1 -1
  95. package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +3 -25
  96. package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +1 -1
  97. package/dist/lib/cjs/linters/markdownlint-content.cjs +2 -24
  98. package/dist/lib/cjs/linters/markdownlint-content.d.cts +1 -1
  99. package/dist/lib/cjs/linters/markdownlint-ignores.cjs +1 -56
  100. package/dist/lib/cjs/linters/markdownlint-ignores.d.cts +1 -1
  101. package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +2 -57
  102. package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +1 -1
  103. package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.cjs +1 -56
  104. package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.d.cts +1 -1
  105. package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1 -1
  106. package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2.d.cts +1 -1
  107. package/dist/lib/cjs/linters/markdownlint.cjs +2 -24
  108. package/dist/lib/cjs/linters/markdownlint.d.cts +1 -1
  109. package/dist/lib/cjs/linters/over-exposure.cjs +2 -24
  110. package/dist/lib/cjs/linters/over-exposure.d.cts +1 -1
  111. package/dist/lib/cjs/nano-staged-config.cjs +2 -57
  112. package/dist/lib/cjs/nano-staged-config.d.cts +1 -1
  113. package/dist/lib/cjs/npm-publish.cjs +1 -56
  114. package/dist/lib/cjs/npm-publish.d.cts +1 -1
  115. package/dist/lib/cjs/npm-run.cjs +2 -24
  116. package/dist/lib/cjs/npm-run.d.cts +1 -1
  117. package/dist/lib/cjs/npm.cjs +2 -24
  118. package/dist/lib/cjs/npm.d.cts +1 -1
  119. package/dist/lib/cjs/package-lock-integrity.cjs +1 -56
  120. package/dist/lib/cjs/package-lock-integrity.d.cts +1 -1
  121. package/dist/lib/cjs/package-manager.cjs +3 -25
  122. package/dist/lib/cjs/package-manager.d.cts +1 -1
  123. package/dist/lib/cjs/released-issues.cjs +2 -24
  124. package/dist/lib/cjs/released-issues.d.cts +1 -1
  125. package/dist/lib/cjs/repo-paths.cjs +1 -56
  126. package/dist/lib/cjs/repo-paths.d.cts +1 -1
  127. package/dist/lib/cjs/root.cjs +2 -24
  128. package/dist/lib/cjs/root.d.cts +1 -1
  129. package/dist/lib/cjs/test-runners/index.cjs +3 -58
  130. package/dist/lib/cjs/test-runners/index.d.cts +1 -1
  131. package/dist/lib/cjs/test-runners/vitest-config.cjs +1 -56
  132. package/dist/lib/cjs/test-runners/vitest-config.d.cts +1 -1
  133. package/dist/lib/cjs/test-runners/vitest.cjs +1 -56
  134. package/dist/lib/cjs/test-runners/vitest.d.cts +1 -1
  135. package/dist/lib/cjs/validate-declarations.cjs +2 -24
  136. package/dist/lib/cjs/validate-declarations.d.cts +1 -1
  137. package/dist/lib/cjs/version.cjs +2 -24
  138. package/dist/lib/cjs/version.d.cts +2 -1
  139. package/dist/lib/esm/build.d.mts +1 -1
  140. package/dist/lib/esm/build.mjs +2 -11
  141. package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.d.mts +1 -1
  142. package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.mjs +2 -11
  143. package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.mts +1 -1
  144. package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +1 -43
  145. package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.d.mts +1 -1
  146. package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.mjs +4 -12
  147. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -1
  148. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +1 -43
  149. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +4 -2
  150. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +154 -14
  151. package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +1 -1
  152. package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +2 -11
  153. package/dist/lib/esm/bundlers/index.d.mts +1 -1
  154. package/dist/lib/esm/bundlers/index.mjs +1 -43
  155. package/dist/lib/esm/check-project-types.d.mts +1 -1
  156. package/dist/lib/esm/check-project-types.mjs +2 -11
  157. package/dist/lib/esm/cli-utils.d.mts +1 -1
  158. package/dist/lib/esm/cli-utils.mjs +2 -11
  159. package/dist/lib/esm/code-generator.d.mts +1 -1
  160. package/dist/lib/esm/code-generator.mjs +1 -43
  161. package/dist/lib/esm/commitlint-config.d.mts +1 -1
  162. package/dist/lib/esm/commitlint-config.mjs +2 -11
  163. package/dist/lib/esm/commitlint-forbidden-patterns.d.mts +1 -1
  164. package/dist/lib/esm/commitlint-forbidden-patterns.mjs +1 -43
  165. package/dist/lib/esm/commitlint-spellcheck-header.d.mts +1 -1
  166. package/dist/lib/esm/commitlint-spellcheck-header.mjs +1 -43
  167. package/dist/lib/esm/env-toggle.d.mts +1 -1
  168. package/dist/lib/esm/env-toggle.mjs +2 -11
  169. package/dist/lib/esm/exec.d.mts +2 -1
  170. package/dist/lib/esm/exec.mjs +2 -11
  171. package/dist/lib/esm/forbidden-patterns.d.mts +1 -1
  172. package/dist/lib/esm/forbidden-patterns.mjs +2 -11
  173. package/dist/lib/esm/formatters/dprint.d.mts +1 -1
  174. package/dist/lib/esm/formatters/dprint.mjs +2 -11
  175. package/dist/lib/esm/formatters/index.d.mts +1 -1
  176. package/dist/lib/esm/formatters/index.mjs +1 -43
  177. package/dist/lib/esm/fs.d.mts +2 -1
  178. package/dist/lib/esm/fs.mjs +2 -11
  179. package/dist/lib/esm/gate.d.mts +1 -1
  180. package/dist/lib/esm/gate.mjs +1 -43
  181. package/dist/lib/esm/git.d.mts +1 -1
  182. package/dist/lib/esm/git.mjs +1 -43
  183. package/dist/lib/esm/index.mjs +1 -43
  184. package/dist/lib/esm/json.d.mts +1 -1
  185. package/dist/lib/esm/json.mjs +2 -11
  186. package/dist/lib/esm/library-build.d.mts +12 -2
  187. package/dist/lib/esm/library-build.mjs +110 -22
  188. package/dist/lib/esm/library-references.d.mts +2 -0
  189. package/dist/lib/esm/linters/cspell-content.d.mts +1 -1
  190. package/dist/lib/esm/linters/cspell-content.mjs +2 -11
  191. package/dist/lib/esm/linters/cspell.d.mts +1 -1
  192. package/dist/lib/esm/linters/cspell.mjs +1 -43
  193. package/dist/lib/esm/linters/eslint-agnostic-core-boundary.d.mts +1 -1
  194. package/dist/lib/esm/linters/eslint-agnostic-core-boundary.mjs +1 -43
  195. package/dist/lib/esm/linters/eslint-config.d.mts +1 -1
  196. package/dist/lib/esm/linters/eslint-config.mjs +2 -11
  197. package/dist/lib/esm/linters/eslint-no-restricted-syntax.d.mts +1 -1
  198. package/dist/lib/esm/linters/eslint-no-restricted-syntax.mjs +1 -43
  199. package/dist/lib/esm/linters/eslint-rules/in-house-plugin.d.mts +1 -1
  200. package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +1 -43
  201. package/dist/lib/esm/linters/eslint-rules/index.d.mts +1 -1
  202. package/dist/lib/esm/linters/eslint-rules/index.mjs +1 -43
  203. package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +1 -1
  204. package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +2 -11
  205. package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.d.mts +1 -1
  206. package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.mjs +2 -11
  207. package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.d.mts +1 -1
  208. package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.mjs +2 -11
  209. package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.d.mts +1 -1
  210. package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.mjs +2 -11
  211. package/dist/lib/esm/linters/eslint-rules/params-options-name-match.d.mts +1 -1
  212. package/dist/lib/esm/linters/eslint-rules/params-options-name-match.mjs +1 -43
  213. package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.d.mts +1 -1
  214. package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.mjs +1 -43
  215. package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.d.mts +1 -1
  216. package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.mjs +2 -11
  217. package/dist/lib/esm/linters/eslint-rules/require-method-template.d.mts +1 -1
  218. package/dist/lib/esm/linters/eslint-rules/require-method-template.mjs +2 -11
  219. package/dist/lib/esm/linters/eslint-rules/require-super-call.d.mts +1 -1
  220. package/dist/lib/esm/linters/eslint-rules/require-super-call.mjs +2 -11
  221. package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.d.mts +1 -1
  222. package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.mjs +1 -43
  223. package/dist/lib/esm/linters/eslint-rules/ts-estree-node.d.mts +1 -1
  224. package/dist/lib/esm/linters/eslint-rules/ts-estree-node.mjs +2 -11
  225. package/dist/lib/esm/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +1 -1
  226. package/dist/lib/esm/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.mts +1 -1
  227. package/dist/lib/esm/linters/eslint.d.mts +40 -1
  228. package/dist/lib/esm/linters/eslint.mjs +75 -13
  229. package/dist/lib/esm/linters/index.d.mts +1 -1
  230. package/dist/lib/esm/linters/index.mjs +1 -43
  231. package/dist/lib/esm/linters/lint-ignores.d.mts +1 -1
  232. package/dist/lib/esm/linters/lint-ignores.mjs +2 -11
  233. package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +1 -1
  234. package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +2 -11
  235. package/dist/lib/esm/linters/markdownlint-content.d.mts +1 -1
  236. package/dist/lib/esm/linters/markdownlint-content.mjs +2 -11
  237. package/dist/lib/esm/linters/markdownlint-ignores.d.mts +1 -1
  238. package/dist/lib/esm/linters/markdownlint-ignores.mjs +1 -43
  239. package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +1 -1
  240. package/dist/lib/esm/linters/markdownlint-rules/index.mjs +1 -43
  241. package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.d.mts +1 -1
  242. package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.mjs +1 -43
  243. package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1 -1
  244. package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2.d.mts +1 -1
  245. package/dist/lib/esm/linters/markdownlint.d.mts +1 -1
  246. package/dist/lib/esm/linters/markdownlint.mjs +2 -11
  247. package/dist/lib/esm/linters/over-exposure.d.mts +1 -1
  248. package/dist/lib/esm/linters/over-exposure.mjs +2 -11
  249. package/dist/lib/esm/nano-staged-config.d.mts +1 -1
  250. package/dist/lib/esm/nano-staged-config.mjs +1 -43
  251. package/dist/lib/esm/npm-publish.d.mts +1 -1
  252. package/dist/lib/esm/npm-publish.mjs +1 -43
  253. package/dist/lib/esm/npm-run.d.mts +1 -1
  254. package/dist/lib/esm/npm-run.mjs +2 -11
  255. package/dist/lib/esm/npm.d.mts +1 -1
  256. package/dist/lib/esm/npm.mjs +2 -11
  257. package/dist/lib/esm/package-lock-integrity.d.mts +1 -1
  258. package/dist/lib/esm/package-lock-integrity.mjs +1 -43
  259. package/dist/lib/esm/package-manager.d.mts +1 -1
  260. package/dist/lib/esm/package-manager.mjs +2 -11
  261. package/dist/lib/esm/released-issues.d.mts +1 -1
  262. package/dist/lib/esm/released-issues.mjs +2 -11
  263. package/dist/lib/esm/repo-paths.d.mts +1 -1
  264. package/dist/lib/esm/repo-paths.mjs +1 -43
  265. package/dist/lib/esm/root.d.mts +1 -1
  266. package/dist/lib/esm/root.mjs +2 -11
  267. package/dist/lib/esm/test-runners/index.d.mts +1 -1
  268. package/dist/lib/esm/test-runners/index.mjs +1 -43
  269. package/dist/lib/esm/test-runners/vitest-config.d.mts +1 -1
  270. package/dist/lib/esm/test-runners/vitest-config.mjs +1 -43
  271. package/dist/lib/esm/test-runners/vitest.d.mts +1 -1
  272. package/dist/lib/esm/test-runners/vitest.mjs +1 -43
  273. package/dist/lib/esm/validate-declarations.d.mts +1 -1
  274. package/dist/lib/esm/validate-declarations.mjs +2 -11
  275. package/dist/lib/esm/version.d.mts +2 -1
  276. package/dist/lib/esm/version.mjs +2 -11
  277. package/package.json +1 -1
@@ -2,13 +2,7 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -39,23 +33,7 @@ function ensureBrowserProcess() {
39
33
  existingProcessRecord['browser'] = true;
40
34
  }
41
35
 
42
- function keepName($unknown) {
43
- return $unknown;
44
- }
45
-
46
- (function initCjs() {
47
- const globalThisRecord = globalThis;
48
- ensureDisposeSymbols();
49
- globalThisRecord['__name'] ??= keepName;
50
- globalThisRecord['__extractDefault'] ??= extractDefault;
51
-
52
- ensureBrowserProcess();
53
-
54
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
55
- function extractDefault(module) {
56
- return module && module.__esModule && 'default' in module ? module.default : module;
57
- }
58
- })();
36
+ ensureBrowserProcess();
59
37
  })();
60
38
 
61
39
  "use strict";
@@ -96,19 +74,19 @@ __export(eslint_config_exports, {
96
74
  getTypeScriptEslintConfigs: () => getTypeScriptEslintConfigs
97
75
  });
98
76
  module.exports = __toCommonJS(eslint_config_exports);
99
- var import_configs = __toESM(__extractDefault(require('@eslint-community/eslint-plugin-eslint-comments/configs')), 1);
77
+ var import_configs = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('@eslint-community/eslint-plugin-eslint-comments/configs')), 1);
100
78
  var import_config_helpers = require('@eslint/config-helpers');
101
- var import_js = __toESM(__extractDefault(require('@eslint/js')), 1);
79
+ var import_js = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('@eslint/js')), 1);
102
80
  var import_path = require('@mnaoumov/typescript-lib/path');
103
- var import_eslint_plugin = __toESM(__extractDefault(require('@stylistic/eslint-plugin')), 1);
81
+ var import_eslint_plugin = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('@stylistic/eslint-plugin')), 1);
104
82
  var import_eslint_import_resolver_typescript = require('eslint-import-resolver-typescript');
105
83
  var import_eslint_plugin_import_x = require('eslint-plugin-import-x');
106
- var import_eslint_plugin_n = __toESM(__extractDefault(require('eslint-plugin-n')), 1);
84
+ var import_eslint_plugin_n = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('eslint-plugin-n')), 1);
107
85
  var import_eslint_plugin_perfectionist = require('eslint-plugin-perfectionist');
108
- var import_eslint_plugin_unicorn = __toESM(__extractDefault(require('eslint-plugin-unicorn')), 1);
86
+ var import_eslint_plugin_unicorn = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('eslint-plugin-unicorn')), 1);
109
87
  var import_config = require('eslint/config');
110
88
  var import_node_fs = require('node:fs');
111
- var import_typescript_eslint = __toESM(__extractDefault(require('typescript-eslint')), 1);
89
+ var import_typescript_eslint = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('typescript-eslint')), 1);
112
90
  var import_repo_paths = require('../repo-paths.cjs');
113
91
  var import_root = require('../root.cjs');
114
92
  var import_eslint_no_restricted_syntax = require('./eslint-no-restricted-syntax.cjs');
@@ -1065,4 +1043,4 @@ function getUnicornConfigs(context) {
1065
1043
  getGlobalIgnoreConfigs,
1066
1044
  getTypeScriptEslintConfigs
1067
1045
  });
1068
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBnZW5lcmljIGhhbGYgb2YgdGhlIHNoYXJlZCBFU0xpbnQgY29uZmlndXJhdGlvbiwgZm9yIGFueSBUeXBlU2NyaXB0IHByb2plY3QuXG4gKlxuICogSXQgaW50ZWdyYXRlcyBFU0xpbnQncyBvd24gcmVjb21tZW5kZWQgcnVsZXMsIGB0eXBlc2NyaXB0LWVzbGludGAsIGBAc3R5bGlzdGljL2VzbGludC1wbHVnaW5gLFxuICogYGVzbGludC1wbHVnaW4taW1wb3J0LXhgIHdpdGggaXRzIFR5cGVTY3JpcHQgcmVzb2x2ZXIsIGBlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3RgLCBgZXNsaW50LXBsdWdpbi11bmljb3JuYCxcbiAqIGBlc2xpbnQtcGx1Z2luLW5gIGFuZCB0aGUgZ2VuZXJpYyBpbi1ob3VzZSBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgKHRoZSBPYnNpZGlhbiBwbHVnaW4gb25lIGxpdmVzIGluXG4gKiBgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0YCkgYnVpbGRzIG9uIHtAbGluayBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc30gYW5kIGFkZHMgb25seSB3aGF0IGlzIHNwZWNpZmljIHRvIGl0LlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWNsYXJhdGl2ZSBFU0xpbnQgcnVsZS9wbHVnaW4gY29uZmlndXJhdGlvbjsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyBFU0xpbnQsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEVTTGludCxcbiAgTGludGVyXG59IGZyb20gJ2VzbGludCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gV2UgZGlzYWJsZWQgbWFnaWMgbnVtYmVycyBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYWxsIG92ZXIgdGhlIGNvbmZpZ3MuICovXG5pbXBvcnQgY29tbWVudHNDb25maWdzIGZyb20gJ0Blc2xpbnQtY29tbXVuaXR5L2VzbGludC1wbHVnaW4tZXNsaW50LWNvbW1lbnRzL2NvbmZpZ3MnO1xuaW1wb3J0IHsgaW5jbHVkZUlnbm9yZUZpbGUgfSBmcm9tICdAZXNsaW50L2NvbmZpZy1oZWxwZXJzJztcbmltcG9ydCBlc2xpbnQgZnJvbSAnQGVzbGludC9qcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgc3R5bGlzdGljIGZyb20gJ0BzdHlsaXN0aWMvZXNsaW50LXBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIgfSBmcm9tICdlc2xpbnQtaW1wb3J0LXJlc29sdmVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZmxhdENvbmZpZ3MgYXMgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzIH0gZnJvbSAnZXNsaW50LXBsdWdpbi1pbXBvcnQteCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IG5vZGVQbHVnaW4gZnJvbSAnZXNsaW50LXBsdWdpbi1uJztcbmltcG9ydCB7IGNvbmZpZ3MgYXMgcGVyZmVjdGlvbmlzdENvbmZpZ3MgfSBmcm9tICdlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBpbmRleGAgaXMgdG9vIGNvbmZ1c2luZy5cbmltcG9ydCB1bmljb3JuIGZyb20gJ2VzbGludC1wbHVnaW4tdW5pY29ybic7XG5pbXBvcnQge1xuICBkZWZpbmVDb25maWcsXG4gIGdsb2JhbElnbm9yZXNcbn0gZnJvbSAnZXNsaW50L2NvbmZpZyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IHRzZXNsaW50IGZyb20gJ3R5cGVzY3JpcHQtZXNsaW50JztcblxuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBnZXRSb290Rm9sZGVyIH0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQgeyBub1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cmllcyB9IGZyb20gJy4vZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzJztcbmltcG9ydCB7XG4gIElOX0hPVVNFX0VTTElOVF9QTFVHSU5fTkFNRSxcbiAgaW5Ib3VzZUVzbGludFBsdWdpblxufSBmcm9tICcuL2VzbGludC1ydWxlcy9pbi1ob3VzZS1wbHVnaW4udHMnO1xuaW1wb3J0IHsgQ0xBVURFX1dPUktUUkVFU19JR05PUkVfR0xPQiB9IGZyb20gJy4vbGludC1pZ25vcmVzLnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUVzbGludENvbmZpZ3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBidWlsZHMgY3VzdG9tIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICogQHJldHVybnMgVGhlIGN1c3RvbSBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Db25maWdzPzogKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpID0+IExpbnRlci5Db25maWdbXTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGVkaXRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdENvbnRleHQ/OiAoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIG9sZGVzdCBOb2RlIHZlcnNpb24gc2hpcHBlZCBzb3VyY2UgaGFzIHRvIHJ1biBvbiwgYXMgYSBzZW12ZXIgcmFuZ2U6IGEgbGlicmFyeSB0aGF0IGFsc28gcnVucyBpbnNpZGUgYW5cbiAgICogb2xkZXIgcnVudGltZSB0aGFuIGl0cyBvd24gdG9vbGluZyAoYW4gT2JzaWRpYW4gcmVuZGVyZXIsIHNheSkgbmFtZXMgdGhhdCBydW50aW1lJ3MgTm9kZSBoZXJlLiBXaGVuIG9taXR0ZWQsXG4gICAqIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gcmVnaXN0ZXJlZCB1bmRlciB0aGUgaW4taG91c2UgbmFtZXNwYWNlLiBBIHByb2plY3QtdHlwZSBsYXllciB0aGF0IGFkZHMgaW4taG91c2UgcnVsZXMgb2YgaXRzIG93blxuICAgKiBwYXNzZXMgT05FIHBsdWdpbiBjYXJyeWluZyB0aGUgZ2VuZXJpYyBydWxlcyBhbmQgaXRzIG93biwgYmVjYXVzZSBFU0xpbnQgcmVmdXNlcyB0d28gcGx1Z2lucyB1bmRlciBvbmUgbmFtZXNwYWNlLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgcGx1Z2luIGNhcnJ5aW5nIHRoZSBnZW5lcmljIHJ1bGVzIGFsb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5Ib3VzZVBsdWdpbj86IEVTTGludC5QbHVnaW47XG5cbiAgLyoqXG4gICAqIFRoZSBvbGRlc3QgTm9kZSB2ZXJzaW9uIHNoaXBwZWQgc291cmNlIGhhcyB0byBydW4gb24sIGFzIGEgc2VtdmVyIHJhbmdlLiBXaGVuIG9taXR0ZWQsIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzXG4gICAqIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdldEluSG91c2VQbHVnaW5Db25maWdzUGFyYW1zIHtcbiAgcmVhZG9ubHkgY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dDtcbiAgcmVhZG9ubHkgaW5Ib3VzZVBsdWdpbjogRVNMaW50LlBsdWdpbjtcbn1cblxuaW50ZXJmYWNlIEdldE5vZGVDb21wYXRDb25maWdzUGFyYW1zIHtcbiAgcmVhZG9ubHkgY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dDtcbiAgcmVhZG9ubHkgbWluaW11bU5vZGVWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZm9yIGRlZmluaW5nIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVzbGludENvbmZpZ0NvbnRleHQge1xuICAvKipcbiAgICogVGhlIHJvb3QgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb290Q29uZmlnRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JpcHQgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXJzIGhvbGRpbmcgdGhlIHByb2plY3QncyBzb3VyY2VzLCBieSBkZWZhdWx0IGBzcmNgIGFsb25lLiBBIHdvcmtzcGFjZSB3aG9zZSBwYWNrYWdlcyBlYWNoIGhhdmUgdGhlaXIgb3duXG4gICAqIGBzcmNgIGFkZHMgdGhlbSBoZXJlLCBzbyB0aGUgcnVsZXMga2V5ZWQgb24gYSBmaWxlJ3MgbmFtZSBpbnNpZGUgYSBzb3VyY2UgZm9sZGVyIHJlYWNoIHRob3NlIHBhY2thZ2VzIHRvby5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2VGb2xkZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdGVzdCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBhbGwgZmlsZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhbGwgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgYWxsRmlsZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy50ZXN0RmlsZXMsIC4uLnRoaXMuc2NyaXB0RmlsZXMsIC4uLnRoaXMucm9vdENvbmZpZ0ZpbGVzLCAuLi50aGlzLnNvdXJjZUZpbGVzXTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbnRleHQgb2YgYSBwcm9qZWN0IGxhaWQgb3V0IHRoZSBjb252ZW50aW9uYWwgd2F5OiBzb3VyY2VzIHVuZGVyIGBzcmNgLCBzY3JpcHRzIHVuZGVyIGBzY3JpcHRzYCwgdGVzdHNcbiAqIGJlc2lkZSB0aGUgc291cmNlcyBvciB1bmRlciBgX190ZXN0c19fYCwgYW5kIHRoZSBjb21taXRsaW50LCBFU0xpbnQgYW5kIFZpdGVzdCBjb25maWd1cmF0aW9ucyBhdCB0aGUgcm9vdC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk6IEVzbGludENvbmZpZ0NvbnRleHQge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEVzbGludENvbmZpZ0NvbnRleHQoKTtcbiAgY29udGV4dC5zb3VyY2VGb2xkZXJzLnB1c2goUmVwb1BhdGhzLlNyYyk7XG4gIGNvbnRleHQucm9vdENvbmZpZ0ZpbGVzLnB1c2goXG4gICAgUmVwb1BhdGhzLkNvbW1pdGxpbnRDb25maWdUcyxcbiAgICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzLFxuICAgIFJlcG9QYXRocy5WaXRlc3RDb25maWdUc1xuICApO1xuICBjb250ZXh0LnNjcmlwdEZpbGVzLnB1c2goXG4gICAgam9pbihSZXBvUGF0aHMuU2NyaXB0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcylcbiAgKTtcbiAgY29udGV4dC5zb3VyY2VGaWxlcy5wdXNoKFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuU3JjLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRzeClcbiAgKTtcbiAgY29udGV4dC50ZXN0RmlsZXMucHVzaChcbiAgICBqb2luKFJlcG9QYXRocy5UZXN0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuTW9ja3MsIFJlcG9QYXRocy5BbnlQYXRoLCBSZXBvUGF0aHMuQW55VHMpLFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUZXN0VHMpLFxuICAgIC8qXG4gICAgICogQSBidWlsZC1zY3JpcHQgdGVzdCBpcyBhIFRFU1QsIGFuZCB0aGlzIGNvbnZlbnRpb24gcHV0cyBpdCBpbiBhIGAqLnRlc3QudHNgIHVuZGVyIGBzY3JpcHRzL2AgLS0gYmVzaWRlIHRoZVxuICAgICAqIHNjcmlwdCBpdCBjb3ZlcnMgcmF0aGVyIHRoYW4gdW5kZXIgYHNyYy9gLiBXaXRob3V0IHRoaXMgZ2xvYiBpdCBtYXRjaGVkIGBzY3JpcHRGaWxlc2AgYWxvbmUsIHNvIGV2ZXJ5IHJlbGF4YXRpb25cbiAgICAgKiB0aGF0IGtleXMgb24gYGNvbnRleHQudGVzdEZpbGVzYCBtaXNzZWQgaXQ6IGBuby1tYWdpYy1udW1iZXJzYCBmaXJlZCBvbiBhIHN1aXRlIHdob3NlIHdob2xlIHN1YmplY3QgaXMgcmVjb3JkZWRcbiAgICAgKiBudW1iZXJzLCBhbmQgYHVuaWNvcm4vY29uc2lzdGVudC1mdW5jdGlvbi1zY29waW5nYCBvbiB0aGUgcGVyLXN1aXRlIGZpeHR1cmUgZmFjdG9yaWVzIHRoZSBibG9jayBhdCB0aGUgYm90dG9tXG4gICAgICogb2YgYGdldFVuaWNvcm5Db25maWdzYCBzYXlzIHRlc3RzIGV4aXN0IHRvIGFsbG93LlxuICAgICAqXG4gICAgICogVGhlIGZpbGUgbm93IG1hdGNoZXMgQk9USCBsaXN0cywgYW5kIHRoYXQgaXMgZGVsaWJlcmF0ZSByYXRoZXIgdGhhbiBhbiBvdmVybGFwIHRvIHJlc29sdmU6IGV2ZXJ5dGhpbmcgc2NvcGVkIHRvXG4gICAgICogYGNvbnRleHQuc2NyaXB0RmlsZXNgIG9ubHkgdHVybnMgcnVsZXMgT0ZGIChgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXNgLCBgdW5pY29ybi9uby1wcm9jZXNzLWV4aXRgKSwgYm90aCBvZlxuICAgICAqIHdoaWNoIGEgc2NyaXB0IHRlc3Qgd2FudHMgYXMgbXVjaCBhcyB0aGUgc2NyaXB0IGRvZXMsIHNvIHRoZSB0d28gc2V0cyBjb21wb3NlIGluc3RlYWQgb2YgY29tcGV0aW5nLiBLZWVwIGl0IHRoYXRcbiAgICAgKiB3YXkgLS0gYSBydWxlIHR1cm5lZCBPTiBmb3IgYHNjcmlwdEZpbGVzYCB3b3VsZCBsYW5kIG9uIHRoZXNlIGZpbGVzIHRvbywgYW5kIGZsYXQtY29uZmlnIG9yZGVyLCBub3QgaW50ZW50LFxuICAgICAqIHdvdWxkIGRlY2lkZSB3aGljaCBzaWRlIHdvbi5cbiAgICAgKi9cbiAgICBqb2luKFJlcG9QYXRocy5TY3JpcHRzLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRlc3RUcylcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbnMgb2YgYSBnZW5lcmljIFR5cGVTY3JpcHQgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBkZWZpbmluZyBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lRXNsaW50Q29uZmlncyhvcHRpb25zOiBEZWZpbmVFc2xpbnRDb25maWdzT3B0aW9ucyA9IHt9KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk7XG4gIG9wdGlvbnMuZWRpdENvbnRleHQ/Lihjb250ZXh0KTtcbiAgY29uc3QgY3VzdG9tQ29uZmlncyA9IG9wdGlvbnMuY3VzdG9tQ29uZmlncz8uKGNvbnRleHQpID8/IFtdO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpLFxuICAgIC4uLmdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICAuLi4ob3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW1Ob2RlVmVyc2lvbjogb3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gfSlcbiAgICB9KSxcbiAgICAuLi5jdXN0b21Db25maWdzXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb25zIG9mIEVTTGludCdzIG93biBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgcmVhZHMgaXQgdG8gbGVhcm4gd2hpY2ggY29yZSBydWxlcyB0aGlzXG4gKiBjb25maWd1cmF0aW9uIHNldHMgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIEVTTGludCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW2VzbGludC5jb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnYWNjZXNzb3ItcGFpcnMnOiAnZXJyb3InLFxuICAgICAgICAnYXJyYXktY2FsbGJhY2stcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NhbWVsY2FzZSc6ICdlcnJvcicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIHJlcG9ydHMgcGVyIGNvbW1lbnQgVE9LRU4sIHNvIGV2ZXJ5IGNvbnRpbnVhdGlvbiBsaW5lIG9mIGEgd3JhcHBlZCBgLy9gIGNvbW1lbnQgaXMgaXRzIG93biB0b2tlblxuICAgICAgICAgKiB0aGF0IHdvdWxkIGhhdmUgdG8gc3RhcnQgd2l0aCBhIGNhcGl0YWwgXHUyMDE0IHdoaWNoIGlzIGhvdyBwcm9zZSBlbmRzIHVwIHdpdGggY2FwaXRhbHMgbWlkLXNlbnRlbmNlLlxuICAgICAgICAgKiBgaWdub3JlQ29uc2VjdXRpdmVDb21tZW50c2AgZXhlbXB0cyBhIGxpbmUgY29tbWVudCB0aGF0IGRpcmVjdGx5IGZvbGxvd3MgYW5vdGhlciBvbmUsIHdoaWNoIGlzIGV4YWN0bHkgdGhlXG4gICAgICAgICAqIHNoYXBlIG9mIGEgd3JhcHBlZCBibG9jaywgd2hpbGUgc3RpbGwgaG9sZGluZyBpdHMgRklSU1QgbGluZSB0byBhIGNhcGl0YWwuIEJsb2NrIGNvbW1lbnRzIG5lZWQgbm8gc3VjaFxuICAgICAgICAgKiBvcHRpb246IGEgYmxvY2sgY29tbWVudCBpcyBhIHNpbmdsZSB0b2tlbiBob3dldmVyIG1hbnkgbGluZXMgaXQgc3BhbnMuXG4gICAgICAgICAqIGBpZ25vcmVQYXR0ZXJuYCBjb3ZlcnMgdGhlIGhhbGYgdGhhdCBsZWF2ZXMgYmVoaW5kOiBhIGNvbW1lbnQgd2hvc2UgRklSU1Qgd29yZCBpcyBhIGNhbWVsQ2FzZSBpZGVudGlmaWVyIGlzXG4gICAgICAgICAqIGV4ZW1wdCwgc28gYSBjb21tZW50IHRoYXQgb3BlbnMgYnkgbmFtaW5nIGEgc3ltYm9sIGtlZXBzIHRoZSBuYW1lIGEgcmVhZGVyIGNhbiBncmVwIGluc3RlYWQgb2YgYSBQYXNjYWxDYXNlXG4gICAgICAgICAqIG9uZSB0aGF0IGV4aXN0cyBub3doZXJlLiBUaGUgcnVsZSBhbmNob3JzIHRoZSBwYXR0ZXJuIGF0IHRoZSBzdGFydCBvZiB0aGUgY29tbWVudCBhbmQgYFthLXpBLVowLTldYCBtYXRjaGVzXG4gICAgICAgICAqIG5vIHdoaXRlc3BhY2UsIHNvIGl0IGNhbiBvbmx5IGV2ZXIgbWF0Y2ggdGhhdCBmaXJzdCB3b3JkIFx1MjAxNCBvcmRpbmFyeSBsb3dlcmNhc2UgcHJvc2Ugc3RheXMgcmVwb3J0ZWQuIEJvdGhcbiAgICAgICAgICogb3B0aW9uIGJhZ3MgbmVlZCBpdCwgYW5kIGBibG9ja2Aga2VlcHMgaXRzIGB2OGAgZXhlbXB0aW9uIGJ5IGFsdGVybmF0aW9uIHJhdGhlciB0aGFuIGxvc2luZyBpdC5cbiAgICAgICAgICovXG4gICAgICAgICdjYXBpdGFsaXplZC1jb21tZW50cyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdhbHdheXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsb2NrOiB7IGlnbm9yZVBhdHRlcm46ICd2OHxbYS16XVthLXpBLVowLTldKltBLVpdJyB9LFxuICAgICAgICAgICAgbGluZTogeyBpZ25vcmVDb25zZWN1dGl2ZUNvbW1lbnRzOiB0cnVlLCBpZ25vcmVQYXR0ZXJuOiAnW2Etel1bYS16QS1aMC05XSpbQS1aXScgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2NvbXBsZXhpdHknOiAnZXJyb3InLFxuICAgICAgICAnY29uc2lzdGVudC10aGlzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2N1cmx5JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZSc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LWNhc2UtbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LXBhcmFtLWxhc3QnOiAnZXJyb3InLFxuICAgICAgICAnZXFlcWVxJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZS1tYXRjaGluZyc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnZGVjbGFyYXRpb24nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93QXJyb3dGdW5jdGlvbnM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnZ3JvdXBlZC1hY2Nlc3Nvci1wYWlycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdnZXRCZWZvcmVTZXQnXG4gICAgICAgIF0sXG4gICAgICAgICdndWFyZC1mb3ItaW4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tYWxlcnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tYXJyYXktY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tYml0d2lzZSc6ICdlcnJvcicsXG4gICAgICAgICduby1jYWxsZXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tY29uc29sZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWNvbnN0cnVjdG9yLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICduby1kaXYtcmVnZXgnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZWxzZS1yZXR1cm4nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd0Vsc2VJZjogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1lbXB0eS1mdW5jdGlvbic6ICdlcnJvcicsXG4gICAgICAgICduby1leHRlbmQtbmF0aXZlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dHJhLWJpbmQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtbGFiZWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW1wbGljaXQtY29lcmNpb24nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICAnISEnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWlubmVyLWRlY2xhcmF0aW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbC12YXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbGFiZWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmUtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmVseS1pZic6ICdlcnJvcicsXG4gICAgICAgICduby1sb29wLWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbWFnaWMtbnVtYmVycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldGVjdE9iamVjdHM6IHRydWUsXG4gICAgICAgICAgICBlbmZvcmNlQ29uc3Q6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmU6IFtcbiAgICAgICAgICAgICAgLTEsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1tdWx0aS1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbXVsdGktc3RyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lZ2F0ZWQtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lc3RlZC10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICduby1vYmplY3QtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tb2N0YWwtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXJlc3RyaWN0ZWQtc3ludGF4JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgLi4ubm9SZXN0cmljdGVkU3ludGF4UnVsZUVudHJpZXNcbiAgICAgICAgXSxcbiAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2NyaXB0LXVybCc6ICdlcnJvcicsXG4gICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNoYWRvdyc6ICdlcnJvcicsXG4gICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubmVlZGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbmNhdCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAnb3BlcmF0b3ItYXNzaWdubWVudCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbmFtZWQtY2FwdHVyZS1ncm91cCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LWhhcy1vd24nOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3JhZGl4JzogJ2Vycm9yJyxcbiAgICAgICAgJ3JlcXVpcmUtYXRvbWljLXVwZGF0ZXMnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAndW5pY29kZS1ib20nOiAnZXJyb3InLFxuICAgICAgICAndmFycy1vbi10b3AnOiAnZXJyb3InLFxuICAgICAgICAneW9kYSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduby1tYWdpYy1udW1iZXJzJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKipcbiAqIFRoZSBnbG9iYWwgaWdub3JlczogZXZlcnl0aGluZyBgLmdpdGlnbm9yZWAgbmFtZXMsIHBsdXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLmdldEdpdElnbm9yZUNvbmZpZ3MoKSxcbiAgICAvKlxuICAgICAqIE9uIHRvcCBvZiBgLmdpdGlnbm9yZWAsIG5vdCBpbnN0ZWFkIG9mIGl0OiBnaXQgZXhjbHVkZXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIgdGhyb3VnaFxuICAgICAqIGAuZ2l0L2luZm8vZXhjbHVkZWAsIHdoaWNoIGBpbmNsdWRlSWdub3JlRmlsZWAgYWJvdmUgZG9lcyBub3QgcmVhZC4gU2VlIGBsaW50LWlnbm9yZXMudHNgLlxuICAgICAqL1xuICAgIGdsb2JhbElnbm9yZXMoW0NMQVVERV9XT1JLVFJFRVNfSUdOT1JFX0dMT0JdLCAnb2JzaWRpYW4tZGV2LXV0aWxzL2NsYXVkZS13b3JrdHJlZXMnKVxuICApO1xufVxuXG4vKipcbiAqIFRoZSBnZW5lcmljIGxheWVycyBvZiB0aGUgc2hhcmVkIGNvbmZpZ3VyYXRpb24sIHdpdGhvdXQgdGhlIGdsb2JhbCBpZ25vcmVzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzKHBhcmFtczogR2V0VHlwZVNjcmlwdEVzbGludENvbmZpZ3NQYXJhbXMpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCB7IGNvbnRleHQgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhcbiAgICAuLi5nZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRUc2VzbGludENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0U3R5bGlzdGljQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRQZXJmZWN0aW9uaXN0Q29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRVbmljb3JuQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRFc2xpbnRJbXBvcnRSZXNvbHZlclR5cGVzY3JpcHRDb25maWdzKCksXG4gICAgLi4uZ2V0RXNsaW50Q29tbWVudHNDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldEluSG91c2VQbHVnaW5Db25maWdzKHsgY29udGV4dCwgaW5Ib3VzZVBsdWdpbjogcGFyYW1zLmluSG91c2VQbHVnaW4gPz8gaW5Ib3VzZUVzbGludFBsdWdpbiB9KSxcbiAgICAuLi5nZXROb2RlQ29tcGF0Q29uZmlncyh7IGNvbnRleHQsIG1pbmltdW1Ob2RlVmVyc2lvbjogcGFyYW1zLm1pbmltdW1Ob2RlVmVyc2lvbiB9KVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRFc2xpbnRDb21tZW50c0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgcmVjb21tZW5kZWRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICBleHRlbmRzOiBbY29tbWVudHNDb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQGVzbGludC1jb21tdW5pdHkvZXNsaW50LWNvbW1lbnRzL3JlcXVpcmUtZGVzY3JpcHRpb24nOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAnaW1wb3J0LXgvcmVzb2x2ZXItbmV4dCc6IFtcbiAgICAgICAgICBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIoe1xuICAgICAgICAgICAgYWx3YXlzVHJ5VHlwZXM6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0R2l0SWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBnaXRpZ25vcmVQYXRoID0gam9pbihnZXRSb290Rm9sZGVyKCkgPz8gJycsICcuZ2l0aWdub3JlJyk7XG4gIHJldHVybiBleGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpID8gW2luY2x1ZGVJZ25vcmVGaWxlKGdpdGlnbm9yZVBhdGgpXSA6IFtdO1xufVxuXG5mdW5jdGlvbiBnZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy50eXBlc2NyaXB0LFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MuZXJyb3JzLFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3Mud2FybmluZ3NcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L2NvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvZXh0ZW5zaW9ucyc6IFsnZXJyb3InLCAnaWdub3JlUGFja2FnZXMnXSxcbiAgICAgICAgJ2ltcG9ydC14L2ZpcnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L2ltcG9ydHMtZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbmV3bGluZS1hZnRlci1pbXBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYWJzb2x1dGUtcGF0aCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWNvbW1vbmpzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWN5Y2xlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlcHJlY2F0ZWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1keW5hbWljLXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1tdXRhYmxlLWV4cG9ydHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lc3BhY2UnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVsYXRpdmUtcGFja2FnZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVzdHJpY3RlZC1wYXRocyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1zZWxmLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby11bmFzc2lnbmVkLWltcG9ydCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICcqKi8qLmNzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNhc3MnLFxuICAgICAgICAgICAgICAnKiovKi5zY3NzJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVudXNlZC1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdpbXBvcnQteC9uby11c2VsZXNzLXBhdGgtc2VnbWVudHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8td2VicGFjay1sb2FkZXItc3ludGF4JzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc2NyaXB0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQSB0ZXN0IHJ1bnMgdW5kZXIgdGhlIHRlc3QgcnVubmVyIGluIE5vZGUgYW5kIGlzIG5ldmVyIGJ1bmRsZWQgaW50byBhbnl0aGluZyB0aGF0IHNoaXBzLlxuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnJvb3RDb25maWdGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5Ib3VzZVBsdWdpbkNvbmZpZ3MocGFyYW1zOiBHZXRJbkhvdXNlUGx1Z2luQ29uZmlnc1BhcmFtcyk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBwYXJhbXMuY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICBbSU5fSE9VU0VfRVNMSU5UX1BMVUdJTl9OQU1FXTogcGFyYW1zLmluSG91c2VQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL25vLWFzeW5jLWNhbGxiYWNrLXRvLXVuc2FmZS1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAvKlxuICAgICAgICAgKiBNZWFzdXJlZCBvdmVyIDMyIHBsdWdpbnMgYnVpbHQgb24gdGhpcyBjb25maWcgYmVmb3JlIGl0IHdhcyB0dXJuZWQgb24gKDIwMjYtMDktMjQpOiAyOSBoYWQgbm8gZmluZGluZyxcbiAgICAgICAgICogdGhlIG90aGVyIHRocmVlIGhhZCA4IGJldHdlZW4gdGhlbSwgZXZlcnkgb25lIGEgZ2VudWluZWx5IGRlYWQgbGluay5cbiAgICAgICAgICovXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbm8tdW5yZXNvbHZlZC1qc2RvYy1saW5rJzogJ2Vycm9yJyxcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscy9uby11bnVzZWQtcGFyYW1zLW1lbWJlcnMnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2gnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL3ByZWZlci1ub29wLWFzeW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscy9yZWFkb25seS1wYXJhbXMtb3B0aW9ucy1yZXN1bHQtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvcmVxdWlyZS1tZXRob2QtdGVtcGxhdGUnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL3JlcXVpcmUtc3VwZXItY2FsbCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZUNvbXBhdENvbmZpZ3MocGFyYW1zOiBHZXROb2RlQ29tcGF0Q29uZmlnc1BhcmFtcyk6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IHsgY29udGV4dCwgbWluaW11bU5vZGVWZXJzaW9uIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZlcnNpb25PcHRpb25zID0gbWluaW11bU5vZGVWZXJzaW9uID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdmVyc2lvbjogbWluaW11bU5vZGVWZXJzaW9uIH07XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc291cmNlRmlsZXMsXG4gICAgICBpZ25vcmVzOiBbXG4gICAgICAgIC4uLmNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgICAvLyBEZXYtb25seSB0b29saW5nIChidWlsZCwgbGludCwgdmVyc2lvbikgcnVucyB2aWEgYGppdGlgIGluIHRoZSBkZXZlbG9wZXIncyBOb2RlIGVudmlyb25tZW50IGFuZCBuZXZlciBzaGlwcywgc28gdGhlIHNoaXBwZWQgc291cmNlJ3MgTm9kZSBmbG9vciBkb2VzIG5vdCBhcHBseSB0byBpdC5cbiAgICAgICAgLi4uY29udGV4dC5zY3JpcHRGaWxlc1xuICAgICAgXSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgbjogbm9kZVBsdWdpblxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL2VzLWJ1aWx0aW5zJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgdmVyc2lvbk9wdGlvbnNcbiAgICAgICAgXSxcbiAgICAgICAgJ24vbm8tdW5zdXBwb3J0ZWQtZmVhdHVyZXMvbm9kZS1idWlsdGlucyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGBCbG9iYCBhbmQgYEZpbGVgIGFyZSBET00gd2ViIGdsb2JhbHMgcHJlc2VudCBpbiBldmVyeSBzdXBwb3J0ZWQgYnJvd3NlciBlbmdpbmUsIGJ1dCB0aGUgcnVsZSBhbHNvIGtub3dzIHRoZW0gYXMgTm9kZSdzIGV4cGVyaW1lbnRhbCBidWlsdGlucyBhbmQgY2Fubm90IHRlbGwgd2hpY2ggaXMgbWVhbnQuIElnbm9yZSB0aGVtIGdsb2JhbGx5OyBnZW51aW5lbHkgbmV3ZXIgQVBJcyAoZS5nLiBgQWJvcnRTaWduYWwuYW55YCkgc3RheSBmbGFnZ2VkLlxuICAgICAgICAgICAgaWdub3JlczogW1xuICAgICAgICAgICAgICAnQmxvYicsXG4gICAgICAgICAgICAgICdGaWxlJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC4uLnZlcnNpb25PcHRpb25zXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW3tcbiAgICBleHRlbmRzOiBbcGVyZmVjdGlvbmlzdENvbmZpZ3NbJ3JlY29tbWVuZGVkLWFscGhhYmV0aWNhbCddXSxcbiAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpXG4gIH1dKTtcbn1cblxuZnVuY3Rpb24gZ2V0U3R5bGlzdGljQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBzdHlsaXN0aWMuY29uZmlncy5yZWNvbW1lbmRlZCxcbiAgICAgICAgc3R5bGlzdGljLmNvbmZpZ3MuY3VzdG9taXplKHtcbiAgICAgICAgICBhcnJvd1BhcmVuczogdHJ1ZSxcbiAgICAgICAgICBicmFjZVN0eWxlOiAnMXRicycsXG4gICAgICAgICAgY29tbWFEYW5nbGU6ICduZXZlcicsXG4gICAgICAgICAgc2VtaTogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQHN0eWxpc3RpYy9nZW5lcmF0b3Itc3Rhci1zcGFjaW5nJzogJ29mZicsXG4gICAgICAgICdAc3R5bGlzdGljL2luZGVudCc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9pbmRlbnQtYmluYXJ5LW9wcyc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9qc3gtb25lLWV4cHJlc3Npb24tcGVyLWxpbmUnOiAnb2ZmJyxcbiAgICAgICAgJ0BzdHlsaXN0aWMvbm8tZXh0cmEtc2VtaSc6ICdlcnJvcicsXG4gICAgICAgICdAc3R5bGlzdGljL29iamVjdC1jdXJseS1uZXdsaW5lJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgRXhwb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9vcGVyYXRvci1saW5lYnJlYWsnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnYmVmb3JlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgJz0nOiAnYWZ0ZXInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9xdW90ZXMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnc2luZ2xlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd1RlbXBsYXRlTGl0ZXJhbHM6ICduZXZlcidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRUc2VzbGludENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGV4dGVuZHM6IFtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHJpY3RUeXBlQ2hlY2tlZCxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHlsaXN0aWNUeXBlQ2hlY2tlZFxuICAgICAgXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgIGVjbWFGZWF0dXJlczoge1xuICAgICAgICAgICAganN4OiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9qZWN0U2VydmljZTogdHJ1ZSxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgdHNjb25maWdSb290RGlyYCBpcyBhIGB0eXBlc2NyaXB0LWVzbGludGAgcGFyc2VyIG9wdGlvbi5cbiAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGdldFJvb3RGb2xkZXIoKSA/PyAnJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbWVtYmVyLWFjY2Vzc2liaWxpdHknOiAnZXJyb3InLFxuICAgICAgICAvLyBUaGUgcnVsZSdzIG93biBgcHJvcGVydHlgIGRlZmF1bHQsIHNwZWxsZWQgYXMgYSBiYXJlIHNldmVyaXR5IHNvIGl0IHN0YXlzIHRoZSBydWxlJ3MgZGVmYXVsdCByYXRoZXIgdGhhbiBhIGNvcHkgb2YgaXQuXG4gICAgICAgIC8vIERvIE5PVCBwYXNzIGAnbWV0aG9kJ2AgZm9yIHRpZGluZXNzOiB0aGUgbWV0aG9kIGZvcm0ga2VlcHMgcGFyYW1ldGVycyBiaXZhcmlhbnQsIGRyb3BzIGByZWFkb25seWAgKHRoZSBydWxlJ3Mgb3duIGZpeGVyXG4gICAgICAgIC8vIG1lc3NhZ2Ugc2F5cyBzbyksIGFuZCBtYWtlcyBgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kYCBmaXJlIG9uIGV2ZXJ5IGZvcndhcmRlZCBiYWcgbWVtYmVyLCB3aGljaCBpcyB3aGF0IHRoZVxuICAgICAgICAvLyBgdGhpczogdm9pZGAgYm9pbGVycGxhdGUgdXNlZCB0byBwYXkgZm9yLiBEbyBOT1QgZGVsZXRlIHRoZSBsaW5lIGVpdGhlciAtIHRoZSBydWxlIGlzIGluIG5vIHByZXNldCwgc28gdGhhdCB0dXJucyBpdCBvZmYuXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbWV0aG9kLXNpZ25hdHVyZS1zdHlsZSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXMnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGNoZWNrVGhlbmFibGVzOiB0cnVlXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd0FzVGhpc1BhcmFtZXRlcjogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd2VkTmFtZXM6IFtcbiAgICAgICAgICAgICd0aGF0J1xuICAgICAgICAgIF1cbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgYXJnc2AgaXMgYW4gRVNMaW50IHJ1bGUgb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICBhcmdzOiAnYWxsJyxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBhcmdzSWdub3JlUGF0dGVybmAgaXMgYSBgdHlwZXNjcmlwdC1lc2xpbnRgIHJ1bGUgb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICBhcmdzSWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGNhdWdodEVycm9yczogJ2FsbCcsXG4gICAgICAgICAgICBjYXVnaHRFcnJvcnNJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgZGVzdHJ1Y3R1cmVkQXJyYXlJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgaWdub3JlUmVzdFNpYmxpbmdzOiB0cnVlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHZhcnNJZ25vcmVQYXR0ZXJuYCBpcyBhIGB0eXBlc2NyaXB0LWVzbGludGAgcnVsZSBvcHRpb24gbmFtZS5cbiAgICAgICAgICAgIHZhcnNJZ25vcmVQYXR0ZXJuOiAnXl8nXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1yZWFkb25seSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd1ByaXZhdGVDbGFzc1Byb3BlcnR5QWNjZXNzOiB0cnVlLFxuICAgICAgICAgIGFsbG93UHJvdGVjdGVkQ2xhc3NQcm9wZXJ0eUFjY2VzczogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICByZWFjdDoge1xuICAgICAgICAgIHZlcnNpb246ICdkZXRlY3QnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRVbmljb3JuQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW3VuaWNvcm4uY29uZmlncy5yZWNvbW1lbmRlZF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlc2UgZW50cmllcyBhcmUgbm90IGFiYnJldmlhdGlvbnMgdG8gYmUgZXhwYW5kZWQgXHUyMDE0IHRoZXkgYXJlIGVzdGFibGlzaGVkIHZvY2FidWxhcnkgaGVyZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQnJhbmQ6IGBkZXZgLCBgbGliYCwgYHV0aWxgL2B1dGlsc2Agc3BlbGwgdGhlIHByb2R1Y3QncyBvd24gbmFtZS4gTGVmdCBvbiwgdGhlIHJ1bGUgcmV3cml0ZXNcbiAgICAgICAgICogYFJlcG9QYXRoc2AgdG8gYE9ic2lkaWFuRGV2ZWxvcG1lbnRVdGlsaXRpZXNSZXBvUGF0aHNgIGFuZCBgZ2V0TGliRGVidWdnZXJgIHRvXG4gICAgICAgICAqIGBnZXRMaWJyYXJ5RGVidWdnZXJgLCByZW5hbWluZyBleHBvcnRlZCBBUEkgYWZ0ZXIgdGhlIHBhY2thZ2UgaXQgYmVsb25ncyB0by5cbiAgICAgICAgICpcbiAgICAgICAgICogQ29udmVudGlvbjogYHBhcmFtc2AgaXMgdGhlIHBhcmFtZXRlci1iYWcgY29udmVudGlvbiwgZW5mb3JjZWQgYnlcbiAgICAgICAgICogYG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoYCwgd2hpY2ggcmVxdWlyZXMgYmFnIHR5cGVzIHRvIGJlIG5hbWVkXG4gICAgICAgICAqIGA8T3duZXI+UGFyYW1zYCAvIGA8T3duZXI+T3B0aW9uc2AuIEV4cGFuZGluZyBpdCB0byBgUGFyYW1ldGVyc2Agd291bGQgcHV0IHRoZSB0d28gcnVsZXMgaW4gZGlyZWN0XG4gICAgICAgICAqIGNvbnRyYWRpY3Rpb24gYW5kIGJyZWFrIDMwMCsgZXhwb3J0ZWQgdHlwZSBuYW1lcy5cbiAgICAgICAgICpcbiAgICAgICAgICogUmVzZXJ2ZWQgd29yZHM6IGEgYmFyZSBgYXJnc2AsIGBmbmAsIGBzdHJgLCBgbW9kYCBvciBgZXZ0YCBleHBhbmRzIHRvIGFuIGlkZW50aWZpZXIgdGhhdCBpcyBhbHJlYWR5XG4gICAgICAgICAqIHRha2VuLCBzbyB0aGUgcnVsZSBzdWdnZXN0cyBgJGFyZ3VtZW50c2AsIGAkZnVuY3Rpb25gLCBhbmQgc28gb24uIFNwZWxsIHRob3NlIGAkYXJndW1lbnRzYCAvXG4gICAgICAgICAqIGAkZnVuY3Rpb25gIGluc3RlYWQgXHUyMDE0IGEgYCRgIHByZWZpeCByZWFkcyBiZXR0ZXIgdGhhbiBhIHRyYWlsaW5nIHVuZGVyc2NvcmUuIFRoaXMgaXMgZGVsaWJlcmF0ZWx5IE5PVFxuICAgICAgICAgKiBjb25maWd1cmVkIGFzIGEgY3VzdG9tIHJlcGxhY2VtZW50OiB1bmljb3JuIHN1YnN0aXR1dGVzIGF0IHRoZSB3b3JkIGxldmVsIGluc2lkZSBjb21wb3VuZCBuYW1lcywgc29cbiAgICAgICAgICogcmVkaXJlY3RpbmcgdGhlIHdob2xlIGVudHJ5IHR1cm5zIGBhc3luY0ZuYCBpbnRvIGBhc3luYyRmdW5jdGlvbmAuIENvbXBvdW5kcyB3YW50IHRoZSBwbGFpbiBleHBhbnNpb25cbiAgICAgICAgICogKGBhc3luY0Z1bmN0aW9uYCk7IG9ubHkgdGhlIGJhcmUsIGdlbnVpbmVseS1jb2xsaWRpbmcgaWRlbnRpZmllcnMgdGFrZSB0aGUgYCRgIGZvcm0uXG4gICAgICAgICAqXG4gICAgICAgICAqIERvbWFpbiB3b3JkczogYGRvY2AvYGRvY3NgLCBgZW52YCwgYGRpc3RgIGFuZCBgc3JjYCBhcmUgdGhlIGNsZWFyZXIgc3BlbGxpbmcgaW4gdGhpcyBjb2RlYmFzZS5cbiAgICAgICAgICogRXhwYW5kaW5nIGBkb2NgIGFsc28gcGlja3MgdGhlIHdyb25nIHdvcmQgXHUyMDE0IHRoZSBgYXBpLWRvYy0qYCBtb2R1bGVzIGdlbmVyYXRlIEFQSSAqZG9jdW1lbnRhdGlvbiosIG5vdFxuICAgICAgICAgKiBkb2N1bWVudHMuIGBzcmNgIGFkZGl0aW9uYWxseSBjb3JydXB0cyBjb2RlOiB0aGUgZml4ZXIgcmVuYW1lcyB0aGUgYFNyY2AgbWVtYmVyIG9mIHRoZSBleHBvcnRlZFxuICAgICAgICAgKiBgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHNgIC8gYFJlcG9QYXRoc2AgZW51bXMgd2hpbGUgbGVhdmluZyBldmVyeSBgLlNyY2AgcmVmZXJlbmNlXG4gICAgICAgICAqIGRhbmdsaW5nLCBiZWNhdXNlIGBjaGVja1Byb3BlcnRpZXNgIGV4ZW1wdHMgcHJvcGVydHkgYWNjZXNzZXMgYnV0IG5vdCB0aGUgZGVjbGFyYXRpb25zIHRoZXkgcG9pbnQgYXQuXG4gICAgICAgICAqXG4gICAgICAgICAqIERpc2FibGluZyB0aGUgcmVwbGFjZW1lbnQgZW50cmllcyBwcm90ZWN0cyB0aGVzZSBwZXJtYW5lbnRseTsgYW4gYGFsbG93TGlzdGAgd291bGQgaW5zdGVhZCBuZWVkIGV2ZXJ5XG4gICAgICAgICAqIGFmZmVjdGVkIGlkZW50aWZpZXIgZW51bWVyYXRlZCBieSBoYW5kIGFuZCByZS1lbnVtZXJhdGVkIGZvciBldmVyeSBuZXcgb25lLlxuICAgICAgICAgKlxuICAgICAgICAgKiBOT1RFOiB0aGlzIHJ1bGUncyBhdXRvZml4IGlzIE5PVCByZWZlcmVuY2UtYXdhcmUgZm9yIGRlY2xhcmF0aW9ucyB0aGF0IHBhcnRpY2lwYXRlIGluIGEgY29udHJhY3QgXHUyMDE0XG4gICAgICAgICAqIGVudW0gbWVtYmVycywgaW50ZXJmYWNlIG1lbWJlcnMsIGFuZCBUeXBlU2NyaXB0IHBhcmFtZXRlciBwcm9wZXJ0aWVzIChgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seVxuICAgICAgICAgKiBlbDogSFRNTEVsZW1lbnQpYCkgYXJlIHJlbmFtZWQgd2hpbGUgYHRoaXMuZWxgIGFuZCBgRW51bS5NZW1iZXJgIHJlZmVyZW5jZXMgYXJlIGxlZnQgZGFuZ2xpbmcuIEFwcGx5XG4gICAgICAgICAqIGl0cyByZXBvcnRzIGJ5IGhhbmQ7IG5ldmVyIHJ1biBgLS1maXhgIG92ZXIgaXQuXG4gICAgICAgICAqL1xuICAgICAgICAvKlxuICAgICAgICAgKiBBIGdvb2QgcnVsZSwgYnV0IGl0cyBkZWZhdWx0IHByZWZpeGVzIGZvcmNlIHVuZ3JhbW1hdGljYWwgbmFtZXM6IGBtZW1iZXJQYWdlRXhpc3RzYCB3b3VsZCBiZWNvbWVcbiAgICAgICAgICogYGlzTWVtYmVyUGFnZUV4aXN0c2AgcmF0aGVyIHRoYW4gYGRvZXNNZW1iZXJQYWdlRXhpc3RgLiBUaGVzZSBlbnRyaWVzIEVYVEVORCB0aGUgZGVmYXVsdHMgKGBpc2AsXG4gICAgICAgICAqIGBoYXNgLCBgY2FuYCwgYHNob3VsZGAsIC4uLikgcmF0aGVyIHRoYW4gcmVwbGFjaW5nIHRoZW0sIHNvIGEgYm9vbGVhbiB3aXRoIG5vIGJvb2xlYW4tcmVhZGluZyBwcmVmaXhcbiAgICAgICAgICogYXQgYWxsIGlzIHN0aWxsIHJlamVjdGVkIC0tIHRoZSBydWxlIGp1c3Qgc3RvcHMgaW5zaXN0aW5nIHRoZSBwcmVmaXggY29tZSBmcm9tIGEgc2hvcnRlciBsaXN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGUgbGlzdCBpcyBiaWRpcmVjdGlvbmFsOiBhZGRpbmcgYSBwcmVmaXggYWxzbyBhc3NlcnRzIHRoYXQgZXZlcnl0aGluZyBuYW1lZCB3aXRoIGl0IElTIGEgYm9vbGVhbi5cbiAgICAgICAgICogYGNoZWNrYCBlYXJucyBpdHMgcGxhY2Ugb24gYm90aCBjb3VudHMsIHNpbmNlIHRoZSBoYW5kZnVsIG9mIG5vbi1ib29sZWFuIGBjaGVjaypgIG5hbWVzIGl0IHN1cmZhY2VkXG4gICAgICAgICAqIHdlcmUgZ2VudWluZWx5IG1pcy1uYW1lZCAodm9pZCBmdW5jdGlvbnMgdGhhdCB0aHJvdywgYSBwcm9iZSByZXR1cm5pbmcgYW4gSFRUUCBzdGF0dXMpLiBgdGVzdGAgd2FzXG4gICAgICAgICAqIG1lYXN1cmVkIGFuZCByZWplY3RlZDogaXQgd291bGQgdmFsaWRhdGUgZml2ZSBgdGVzdCpgIGxpbmsgcHJlZGljYXRlcyB0aGF0IHJlYWQgYmV0dGVyIGFzIGBpcypgXG4gICAgICAgICAqIGFueXdheSwgYXQgdGhlIGNvc3Qgb2YgcmVuYW1pbmcgU0NSRUFNSU5HX0NBU0UgdGVzdCBmaXh0dXJlcyBhbmQgdGhlIGB0ZXN0Q292ZXJhZ2VgL2B0ZXN0V2F0Y2hgXG4gICAgICAgICAqIHJ1bm5lcnMgdGhhdCBkZWxpYmVyYXRlbHkgbWlycm9yIHRoZSBgdGVzdDpjb3ZlcmFnZWAvYHRlc3Q6d2F0Y2hgIG5wbSBzY3JpcHRzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vY29uc2lzdGVudC1ib29sZWFuLW5hbWUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXhlczoge1xuICAgICAgICAgICAgICBhbGxvd3M6IHRydWUsXG4gICAgICAgICAgICAgIGNoZWNrOiB0cnVlLFxuICAgICAgICAgICAgICBjb250YWluczogdHJ1ZSxcbiAgICAgICAgICAgICAgZG9lczogdHJ1ZSxcbiAgICAgICAgICAgICAgaW5jbHVkZXM6IHRydWUsXG4gICAgICAgICAgICAgIG11c3Q6IHRydWUsXG4gICAgICAgICAgICAgIG5lZWRzOiB0cnVlLFxuICAgICAgICAgICAgICBzdXBwb3J0czogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVW5zYXRpc2ZpYWJsZSBhbG9uZ3NpZGUgYHBlcmZlY3Rpb25pc3Qvc29ydC1jbGFzc2VzYCwgd2hpY2ggaXMgY29uZmlndXJlZCBoZXJlIGFzIGEgcGxhaW5cbiAgICAgICAgICogYWxwaGFiZXRpY2FsIHNvcnQuIFRoaXMgcnVsZSB3YW50cyBhIGNhdGVnb3J5IG9yZGVyIChhbGwgZmllbGRzLCB0aGVuIHRoZSBjb25zdHJ1Y3RvciwgdGhlbiBhbGxcbiAgICAgICAgICogbWV0aG9kcyksIHNvIHRoZSBleHRyZW1lbHkgY29tbW9uIGBwcml2YXRlIF94YCBmaWVsZCBwYWlyZWQgd2l0aCBhIGBwdWJsaWMgZ2V0IHgoKWAgYWNjZXNzb3IgaXNcbiAgICAgICAgICogcmVqZWN0ZWQgYnkgd2hpY2hldmVyIHJ1bGUgbG9zZXM6IGFscGhhYmV0aWNhbGx5IHRoZSBhY2Nlc3NvciBwcmVjZWRlcyB0aGUgZmllbGQsIGJ5IGNhdGVnb3J5IHRoZVxuICAgICAgICAgKiBmaWVsZCBwcmVjZWRlcyB0aGUgYWNjZXNzb3IuIFVubGlrZSBgcHJlZmVyLWdsb2JhbC10aGlzYCB0aGUgY2xhc2ggcHJvZHVjZXMgbm9cbiAgICAgICAgICogYEVTTGludENpcmN1bGFyRml4ZXNXYXJuaW5nYCwgb25seSBiZWNhdXNlIHRoaXMgcnVsZSBzaGlwcyBubyBmaXhlciAtLSBib3RoIHJ1bGVzIGFyZSBgZXJyb3JgLCBzbyBub1xuICAgICAgICAgKiBhcnJhbmdlbWVudCBvZiBtZW1iZXJzIHNhdGlzZmllcyB0aGVtIGJvdGguIFRoZSBhbHBoYWJldGljYWwgc29ydCBpcyB0aGUgb25lIGFscmVhZHkgcm9sbGVkIG91dFxuICAgICAgICAgKiBhY3Jvc3MgdGhlIHBsdWdpbnMgY29uc3VtaW5nIHRoaXMgY29uZmlnLCBzbyBpdCBrZWVwcyBwcmVjZWRlbmNlLiBSZS1lbmFibGluZyB0aGlzIHJ1bGUgd291bGQgbWVhblxuICAgICAgICAgKiBnaXZpbmcgYHBlcmZlY3Rpb25pc3Qvc29ydC1jbGFzc2VzYCBhIG1hdGNoaW5nIGBncm91cHNgIG9wdGlvbiBhbmQgcmVvcmRlcmluZyBldmVyeSBjbGFzcy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2NvbnNpc3RlbnQtY2xhc3MtbWVtYmVyLW9yZGVyJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEV2ZXJ5IHJlcG9ydCBpcyBgbmV3IEVycm9yKCkuc3RhY2tgLCB3aGljaCBjYXB0dXJlcyBhIHN0YWNrIHRyYWNlIGFuZCBuZXZlciBzdXJmYWNlcyBpdHMgbWVzc2FnZS5cbiAgICAgICAgICogVGhlIHJ1bGUgY2Fubm90IHRlbGwgdGhhdCBmcm9tIGFuIGVycm9yIHRoYXQgaXMgYWN0dWFsbHkgdGhyb3duIGF0IGEgdXNlci5cbiAgICAgICAgICpcbiAgICAgICAgICogTm8gYmFyZSBgbmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycylgIGlzIGxlZnQgZm9yIGl0IHRvIGNhdGNoOiBldmVyeSBzaXRlIG5vdyBidWlsZHMgaXRzIGFnZ3JlZ2F0ZVxuICAgICAgICAgKiB0aHJvdWdoIGBjcmVhdGVBZ2dyZWdhdGVFcnJvcmAsIHdoaWNoIGdpdmVzIGl0IGEgbWVzc2FnZSB0aGF0IG5hbWVzIHRoZSBmYWlsdXJlLiBBbiBlbXB0eSBvbmUgaXNcbiAgICAgICAgICogbG9zc3kgaW4gYSB3YXkgdGhhdCBvbmx5IHNob3dzIHVwIG91dHNpZGUgdGhpcyBsaWJyYXJ5IFx1MjAxNCBgZXJyb3JUb1N0cmluZ2Agd2Fsa3MgYGVycm9yc2AgYW5kIHByaW50c1xuICAgICAgICAgKiB0aGUgd2hvbGUgdHJlZSwgd2hpbGUgZXZlcnl0aGluZyByZWFkaW5nIGBtZXNzYWdlYCBzZWVzIGFuIGVtcHR5IHNlbnRlbmNlLiBUaGUgaGVscGVyIGxpdmVzIGluIGl0c1xuICAgICAgICAgKiBvd24gbGVhZiBgYWdncmVnYXRlLWVycm9yLnRzYCByYXRoZXIgdGhhbiBpbiBgZXJyb3IudHNgIHByZWNpc2VseSBzbyB0aGF0IGBkaXNwb3NhYmxlLnRzYCBjYW4gcmVhY2hcbiAgICAgICAgICogaXQsIHdoaWNoIGl0IGNvdWxkIG5vdCB3aGlsZSB0aGUgb25seSBjb3B5IHNhdCBpbiBhIG1vZHVsZSBpbXBvcnRpbmcgaXQgYmFjay5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2Vycm9yLW1lc3NhZ2UnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIGRlZmF1bHQgc3R5bGUgZm9yIGBub2RlOnBhdGhgIGlzIGEgZGVmYXVsdCBpbXBvcnQsIGJ1dCB0aGlzIGNvZGViYXNlIGltcG9ydHMgaXRzIG1lbWJlcnMgYnkgbmFtZVxuICAgICAgICAgKiB0aHJvdWdob3V0LCBjb25zaXN0ZW50bHkgd2l0aCBldmVyeSBvdGhlciBgbm9kZTpgIG1vZHVsZSBpdCB1c2VzLiBDb25maWd1cmUgdGhlIHJ1bGUgdG8gZW5mb3JjZSB0aGVcbiAgICAgICAgICogc3R5bGUgYWN0dWFsbHkgaW4gdXNlIHJhdGhlciB0aGFuIGFubm90YXRlIDE3IHNpdGVzIHRoYXQgYXJlIG5vdCBnb2luZyB0byBjaGFuZ2UuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9pbXBvcnQtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdHlsZXM6IHtcbiAgICAgICAgICAgICAgLy8gS2V5ZWQgYnkgdGhlIFVOUFJFRklYRUQgbW9kdWxlIG5hbWU6IHRoZSBydWxlJ3Mgb3duIHRhYmxlIHVzZXMgYHBhdGhgLCBzbyBhIGBub2RlOnBhdGhgIGtleSBuZXZlciBtYXRjaGVzLlxuICAgICAgICAgICAgICBwYXRoOiB7XG4gICAgICAgICAgICAgICAgbmFtZWQ6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUgY291bnRzIGNvbnN0cnVjdG9yIGNhbGxzIGFuZCBjb3VudHMgdGhyb3VnaCBhcnJheSBhbmQgb2JqZWN0IGxpdGVyYWxzLCBzbyBpdHMgZGVmYXVsdCBvZiAzXG4gICAgICAgICAqIHJlcG9ydHMgb3JkaW5hcnkgY29tcG9zaXRpb246IGBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2Jvb20nKSlgIGluc2lkZSBhbiBhc3NlcnRpb24sIGEgdGVzdCBmaXh0dXJlXG4gICAgICAgICAqIGJ1aWx0IGFzIGBjcmVhdGVUeXBlSW5mbyh7IG1ldGhvZHM6IFtjcmVhdGVNZW1iZXJJbmZvKHsgLi4uIH0pXSB9KWAsIGB0aGlzLmFkZENoaWxkKG5ldyBDKHRoaXMuYXBwKSlgXG4gICAgICAgICAqIGluc2lkZSBhIHBhcmFtcyBiYWcuIFJhaXNpbmcgdGhlIGxpbWl0IGJ5IG9uZSBjbGVhcnMgZXZlcnkgcmVwb3J0IGhlcmUgd2hpbGUgc3RpbGwgY2F0Y2hpbmcgdGhlXG4gICAgICAgICAqIGdlbnVpbmVseSB1bnJlYWRhYmxlIG5lc3RpbmcgdGhlIHJ1bGUgaXMgZm9yLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbWF4LW5lc3RlZC1jYWxscyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1heDogNFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ3VuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICogUHJvcGVydHkgYW5kIG1lbWJlciBuYW1lcyBhcmUgY2hlY2tlZCB0b28sIHNvIGFuIGFiYnJldmlhdGlvbiBjYW5ub3Qgc3Vydml2ZSBieSBsaXZpbmcgb24gYW5cbiAgICAgICAgICAgICAqIG9iamVjdCByYXRoZXIgdGhhbiBpbiBhIHZhcmlhYmxlLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFRoZSBydWxlIGlzIHB1cmVseSBzeW50YWN0aWM6IGl0IGNhbm5vdCB0ZWxsIGEgbWVtYmVyIHdlIGRlY2xhcmUgZnJvbSBvbmUgYmVsb25naW5nIHRvIGFcbiAgICAgICAgICAgICAqIGRlcGVuZGVuY3ksIGFuZCBpdCBvZmZlcnMgbm8gYXV0b2ZpeCBmb3IgcHJvcGVydGllcyAobWVhc3VyZWQ6IDY4MSBoaXRzLCAwIHdpdGggYSBmaXhlcikuIFNpdGVzXG4gICAgICAgICAgICAgKiBuYW1pbmcgYSBmb3JlaWduIG1lbWJlciAtLSBgRG9tRWxlbWVudEluZm8uYXR0cmAsIGBFdmFsSW5PYnNpZGlhblBhcmFtcy5mbmAsIGFuZCB0aGUgbGlrZSAtLSBhcmVcbiAgICAgICAgICAgICAqIHRoZXJlZm9yZSBpbXBvc3NpYmxlIHRvIHNhdGlzZnkgYW5kIGNhcnJ5IGFuIGlubGluZSBkaXNhYmxlLCBzbyBldmVyeXRoaW5nIHN0aWxsIHJlcG9ydGVkIGlzIG91cnNcbiAgICAgICAgICAgICAqIHRvIHJlbmFtZS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBXaGVuIHJlbmFtaW5nIHRoZSByZXN0LCBub3RlIHRoYXQgYHRzY2AgYWxvbmUgaXMgTk9UIGEgc3VmZmljaWVudCBnYXRlOiBvYmplY3QtbGl0ZXJhbCBrZXlzIGluXG4gICAgICAgICAgICAgKiBsb29zZWx5IHR5cGVkIHBvc2l0aW9ucyAoYGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoW3sgYmF0Y2hlZEFyZ3VtZW50czogLi4uIH1dKWApIGFyZSBub3QgY29udGV4dHVhbGx5XG4gICAgICAgICAgICAgKiB0eXBlZCwgc28gYSByZW5hbWUgbGVhdmVzIHRoZW0gYmVoaW5kIGFuZCBicmVha3MgdGhlIHN1aXRlIHdoZXJlIHRoZSB0eXBlIGNoZWNrZXIgc2VlcyBub3RoaW5nLlxuICAgICAgICAgICAgICogUmVuYW1lIGluIHNtYWxsIGJhdGNoZXMgd2l0aCB0aGUgZnVsbCB0ZXN0IHJ1biBpbiB0aGUgbG9vcC5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGUgZGlzYWJsZWQgcmVwbGFjZW1lbnRzIGJlbG93IGFyZSBlc3RhYmxpc2hlZCB2b2NhYnVsYXJ5IHJhdGhlciB0aGFuIGFiYnJldmlhdGlvbnMgdG8gYmVcbiAgICAgICAgICAgICAqIGV4cGFuZGVkLiBgZWxgIGlzIGV4ZW1wdCBiZWNhdXNlIE9ic2lkaWFuIG5hbWVzIGV2ZXJ5IGVsZW1lbnQgbWVtYmVyIHRoYXQgd2F5IC0tIGBjb250YWluZXJFbGAsXG4gICAgICAgICAgICAgKiBgY29udGVudEVsYCwgYGlucHV0RWxgLCBgc2VsZWN0RWxgIC0tIHNvIGV4cGFuZGluZyBvdXJzIHRvIGAqRWxlbWVudGAgd291bGQgbGVhdmUgb3VyIGNvbXBvbmVudHNcbiAgICAgICAgICAgICAqIHJlYWRpbmcgaW5jb25zaXN0ZW50bHkgYmVzaWRlIHRoZSBPYnNpZGlhbiBvbmVzIHRoZXkgc2l0IG5leHQgdG8uIERpc2FibGluZyB0aGUgcmVwbGFjZW1lbnQgYWxzb1xuICAgICAgICAgICAgICogY292ZXJzIGNvbXBvdW5kIG5hbWVzLCB3aGljaCBpcyA3MiBzaXRlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBlYWNoIG5lZWQgYW4gaW5saW5lIGRpc2FibGUuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogYHJlZmAgaXMgZXhlbXB0IGZvciB0aGUgc2FtZSByZWFzb246IGBBc3luY0V2ZW50UmVmYCBpcyB0aGUgYXN5bmMgY291bnRlcnBhcnQgb2YgT2JzaWRpYW4nc1xuICAgICAgICAgICAgICogYEV2ZW50UmVmYCwgaGFuZGVkIHRvIHRoZSBzYW1lIGBvZmZyZWZgIC8gYHJlZ2lzdGVyRXZlbnRgIHNoYXBlcywgc28gdGhlIHR3byBuYW1lcyBoYXZlIHRvIG1hdGNoXG4gICAgICAgICAgICAgKiB0byByZWFkIGFzIGEgcGFpci5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2hlY2tQcm9wZXJ0aWVzOiB0cnVlLFxuICAgICAgICAgICAgcmVwbGFjZW1lbnRzOiB7XG4gICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAqIGBhdHRyYCAvIGBhdHRyc2AgYXJlIE9ic2lkaWFuJ3Mgb3duOiBgY3JlYXRlRWwoJ2EnLCB7IGF0dHI6IHsgLi4uIH0gfSlgIHRha2VzIHRoZW0gYnkgdGhvc2VcbiAgICAgICAgICAgICAgICogbmFtZXMgb24gYERvbUVsZW1lbnRJbmZvYCwgc28gb3VycyBoYXZlIHRvIG1hdGNoIHRvIGJlIHBhc3NlZCB0aHJvdWdoLiBgcHJvcHNgIGlzIHRoZVxuICAgICAgICAgICAgICAgKiB1bml2ZXJzYWwgY29tcG9uZW50IHZvY2FidWxhcnksIGV4ZW1wdCBmb3IgdGhlIHNhbWUgcmVhc29uIGBwYXJhbXNgIGlzLlxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgYXR0cjogZmFsc2UsXG4gICAgICAgICAgICAgIGF0dHJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgZGV2OiBmYWxzZSxcbiAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICogRXZlcnkgYGRpcmAgaGVyZSBpcyBhIGZpbGVzeXN0ZW0gZGlyZWN0b3J5LCBuZXZlciBhIGRpcmVjdGlvbiwgc28gdGhlIHJ1bGUgaXMgbmFycm93ZWQgdG8gdGhlXG4gICAgICAgICAgICAgICAqIG9uZSBleHBhbnNpb24gcmF0aGVyIHRoYW4gbGVmdCBvZmZlcmluZyBhIGNob2ljZSBpdCBjYW5ub3QgbWFrZS5cbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIFRoaXMgaXMgdGhlIHJ1bGUncyBvd24gcmVwbGFjZW1lbnQga2V5LCB3aGljaCBoYXMgdG8gYmUgc3BlbGxlZCB0aGUgd2F5IHRoZSBydWxlIHJlYWRzIGl0LlxuICAgICAgICAgICAgICBkaXI6IHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRpcmVjdG9yeTogdHJ1ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgZG9jOiBmYWxzZSxcbiAgICAgICAgICAgICAgZG9jczogZmFsc2UsXG4gICAgICAgICAgICAgIGVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgZW52OiBmYWxzZSxcbiAgICAgICAgICAgICAgbGliOiBmYWxzZSxcbiAgICAgICAgICAgICAgcGFyYW1zOiBmYWxzZSxcbiAgICAgICAgICAgICAgcHJvcHM6IGZhbHNlLFxuICAgICAgICAgICAgICByZWY6IGZhbHNlLFxuICAgICAgICAgICAgICByZWZzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc3JjOiBmYWxzZSxcbiAgICAgICAgICAgICAgdXRpbDogZmFsc2UsXG4gICAgICAgICAgICAgIHV0aWxzOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIG5leHQgc2l4IHJ1bGVzIGFsbCBzdWdnZXN0IGFuIEFQSSBuZXdlciB0aGFuIHRoaXMgcHJvamVjdCdzIGBsaWJgIChgRVMyMDIyYCksIHNvIGZvbGxvd2luZyBhbnkgb2ZcbiAgICAgICAgICogdGhlbSBmYWlscyB0byBjb21waWxlLiBUaGUgT2JzaWRpYW4gcGx1Z2luIGxheWVyIHRha2VzIHRoZSBmbG9vciBmcm9tIHRoZSBvbGRlc3QgT2JzaWRpYW4gaW5zdGFsbGVyIHRoYXRcbiAgICAgICAgICogY2FuIHN0aWxsIHJ1biBjdXJyZW50IE9ic2lkaWFuLCB3aGljaCByZWNvcmRzIGBlY21hU2NyaXB0VmVyc2lvbjogXCJFUzIwMjJcImAuIEVhY2ggaXMgb2ZmIGF0IHRoZSBjb25maWdcbiAgICAgICAgICogbGV2ZWwgcmF0aGVyIHRoYW4gYW5ub3RhdGVkIHBlciBzaXRlLCBiZWNhdXNlIG5vbmUgY2FuIGV2ZXIgYmUgc2F0aXNmaWVkIHdoaWxlIHRoYXQgZmxvb3IgaG9sZHMuIFJldmlzaXRcbiAgICAgICAgICogdGhlbSB0b2dldGhlciBpZiB0aGUgZmxvb3IgbW92ZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIGBBcnJheSN0b1JldmVyc2VkYCBhbmQgYEFycmF5I3RvU29ydGVkYCBhcmUgRVMyMDIzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tYXJyYXktcmV2ZXJzZSc6ICdvZmYnLFxuICAgICAgICAndW5pY29ybi9uby1hcnJheS1zb3J0JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIGBjb250aW51ZWAgaW5zaWRlIGEgbmVzdGVkIGxvb3AgaXMgb3JkaW5hcnksIHJlYWRhYmxlIGNvbnRyb2wgZmxvdyBoZXJlLiBUaGUgcnVsZSdzIHJlbWVkeSBpcyB0b1xuICAgICAgICAgKiBleHRyYWN0IGV2ZXJ5IHN1Y2ggbG9vcCBpbnRvIGl0cyBvd24gZnVuY3Rpb24sIHdoaWNoIHNwcmVhZHMgb25lIGNvaGVyZW50IHRyYXZlcnNhbCBhY3Jvc3MgdHdvXG4gICAgICAgICAqIGRlY2xhcmF0aW9ucyB3aXRob3V0IG1ha2luZyBhbnl0aGluZyBjbGVhcmVyLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tYnJlYWstaW4tbmVzdGVkLWxvb3AnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUgY2Fubm90IHNlZSB0aHJvdWdoIGEgaG9pc3RlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbiwgc28gaXQgdHJlYXRzIGEgYmluZGluZyB0aGF0IGEgbmVzdGVkXG4gICAgICAgICAqIGZ1bmN0aW9uIGFscmVhZHkgcmVhZCBhcyB1bnVzZWQgYmVmb3JlIHRoZSBleGl0LiBJbiBgcnVuV2l0aFRpbWVvdXRgIHRoYXQgaXMgYGxldCBpc0NvbXBsZXRlZGAsIHdoaWNoXG4gICAgICAgICAqIGBydW4oKWAgYW5kIGBpbm5lclRpbWVvdXQoKWAgYm90aCB0b3VjaCB3aGlsZSB0aGUgYFByb21pc2UucmFjZWAgYWJvdmUgdGhlIGV4aXQgaXMgc3RpbGwgcnVubmluZyAtLVxuICAgICAgICAgKiBtb3ZpbmcgdGhlIGRlY2xhcmF0aW9uIHBhc3QgdGhlIGV4aXQsIGFzIHRoZSBydWxlIGFza3MsIHdvdWxkIGxlYXZlIHRob3NlIHJlYWRzIGluIHRoZSB0ZW1wb3JhbCBkZWFkXG4gICAgICAgICAqIHpvbmUuIEl0cyBvd24gZml4ZXIgZGVjbGluZXMgYWxsIDE1IHNpdGVzIGZvciB0aGUgc2FtZSByZWFzb24gaXQgY2Fubm90IHByb3ZlIHRoZW0gc2FmZSwgc28gZm9sbG93aW5nXG4gICAgICAgICAqIHRoZSBydWxlIGlzIGVudGlyZWx5IG1hbnVhbC4gV2hhdCBpcyBsZWZ0IGFmdGVyIHRoYXQgaXMgcGxhY2VtZW50IHN0eWxlOiB0aGUgcmVtYWluaW5nIHJlcG9ydHMgYXJlXG4gICAgICAgICAqIG5hbWVkIGNvbnN0YW50cyBhbmQgZGVyaXZlZCBwYXRocyBkZWxpYmVyYXRlbHkgZ3JvdXBlZCBhdCB0aGUgdG9wIG9mIGEgZnVuY3Rpb24sIGFuZCBwdXNoaW5nIGVhY2ggb25lXG4gICAgICAgICAqIGJlbG93IHRoZSBmaXJzdCBndWFyZCBzcGxpdHMgYSBjb2hlc2l2ZSBibG9jayB0byBubyBiZW5lZml0LiBUaGUgdGhyZWUgc2l0ZXMgd2hlcmUgZGVmZXJyaW5nIHNraXBwZWRcbiAgICAgICAgICogcmVhbCB3b3JrIChhIHNlY29uZCBgY29tcHV0ZU5lZWRlZEV4cG9zdXJlYCB3YWxrLCBhIGB0b0pzb25gIHNlcmlhbGl6YXRpb24sIGFuIGBlbnN1cmVMZkVuZGluZ3NgIHBhc3MpXG4gICAgICAgICAqIHdlcmUgYXBwbGllZCBieSBoYW5kIGluc3RlYWQuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1kZWNsYXJhdGlvbnMtYmVmb3JlLWVhcmx5LWV4aXQnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogQXNzaWduaW5nIG9udG8gdGhlIGdsb2JhbCBvYmplY3QgaXMgaG93IHRoaXMgbGlicmFyeSBpbnN0YWxscyBhbmQgcmVzdG9yZXMgdGVzdCBkb3VibGVzLCBhbmQgaG93IGFcbiAgICAgICAgICogZmV3IE9ic2lkaWFuLXJ1bnRpbWUgZ2xvYmFscyBhcmUgcmVhY2hlZCBhdCBhbGwuIFRoZSBydWxlIGNhbm5vdCBzZXBhcmF0ZSB0aGF0IGZyb20gYW4gYWNjaWRlbnRhbFxuICAgICAgICAgKiBnbG9iYWwgd3JpdGUsIGFuZCBpdCBoYXMgbm8gZml4ZXIuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1nbG9iYWwtb2JqZWN0LXByb3BlcnR5LWFzc2lnbm1lbnQnOiAnb2ZmJyxcbiAgICAgICAgLy8gYG51bGxgIGlzIGxvYWQtYmVhcmluZyBoZXJlOiBhbiBvcHRpb25hbCBjb2xsYWJvcmF0b3IgaXMgbW9kZWxsZWQgYXMgYSByZXF1aXJlZCBgbnVsbCB8IFhgIGZpZWxkIHJhdGhlciB0aGFuIGFuIG9wdGlvbmFsIGBYYCwgc28gYG51bGxgIGFuZCBgdW5kZWZpbmVkYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZS5cbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUncyBsaXN0IG9mIHN0YW5kYXJkIGBTeW1ib2xgIHByb3BlcnRpZXMgcHJlZGF0ZXMgZXhwbGljaXQgcmVzb3VyY2UgbWFuYWdlbWVudCwgc28gaXQgcmVwb3J0c1xuICAgICAgICAgKiBgU3ltYm9sLmRpc3Bvc2VgIGFuZCBgU3ltYm9sLmFzeW5jRGlzcG9zZWAgYXMgbm9uLXN0YW5kYXJkLiBCb3RoIGFyZSBwYXJ0IG9mIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXNcbiAgICAgICAgICogbGlicmFyeSBpcyBidWlsdCBvbiAtLSAxMTQgZmlsZXMgaGVyZSB1c2UgYHVzaW5nYCBkZWNsYXJhdGlvbnMsIGFuZCB0aGUgZGlzcG9zYWJsZSB0eXBlcyBhcmUgYVxuICAgICAgICAgKiBwdWJsaWMgcGFydCBvZiBpdHMgc3VyZmFjZSAtLSBzbyBhbGwgNTkgcmVwb3J0cyBhcmUgdGhlIHJ1bGUgYmVpbmcgb3V0IG9mIGRhdGUgcmF0aGVyIHRoYW4gYSBmaW5kaW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tbm9uc3RhbmRhcmQtYnVpbHRpbi1wcm9wZXJ0aWVzJzogJ29mZicsXG4gICAgICAgICd1bmljb3JuL25vLW51bGwnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVHlwZVNjcmlwdCdzIGV4cGxpY2l0IGB0aGlzYCBwYXJhbWV0ZXIgKGBmdW5jdGlvbiBnZXQodGhpczogSG9sZGVyKSB7IHJldHVybiB0aGlzLnZhbHVlOyB9YCkgbWFrZXNcbiAgICAgICAgICogYHRoaXNgIG91dHNpZGUgYSBjbGFzcyBib3RoIGxlZ2FsIGFuZCB0eXBlLWNoZWNrZWQsIGJ1dCB0aGUgcnVsZSBpcyBzeW50YWN0aWMgYW5kIGZsYWdzIGl0IGlkZW50aWNhbGx5XG4gICAgICAgICAqIHRvIGEgZ2VudWluZWx5IHVuYm91bmQgYHRoaXNgLiBJdCBoYXMgbm8gb3B0aW9ucyAoYHNjaGVtYTogW11gKSBhbmQgbm8gZml4ZXIsIHNvIHRoZXJlIGlzIG5vIHdheSB0b1xuICAgICAgICAgKiBzZXBhcmF0ZSB0aGUgaWRpb20gZnJvbSB0aGUgYnVnIGl0IHRhcmdldHMuIE1vc3QgaGl0cyBoZXJlIHdlcmUgdHlwZWQgYHRoaXNgIHBhcmFtZXRlcnMgYW5kIHRlc3RzIHRoYXRcbiAgICAgICAgICogZGVsaWJlcmF0ZWx5IGFzc2VydCBgdGhpc2AgYmluZGluZy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLXRoaXMtb3V0c2lkZS1vZi1jbGFzcyc6ICdvZmYnLFxuICAgICAgICAvLyBTYW1lIGNhbGwgYXMgaXRzIG9iamVjdCBjb3VudGVycGFydCBhYm92ZTogdGhlIGRlc3RydWN0dXJpbmcgZGVwdGggZmxhZ2dlZCBoZXJlIGlzIGRlbGliZXJhdGUgYW5kIHJlYWRzIHdlbGwuXG4gICAgICAgICd1bmljb3JuL25vLXVucmVhZGFibGUtYXJyYXktZGVzdHJ1Y3R1cmluZyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgcmVwb3J0cyBhcmUgYWxsIGBmb3IgKGNvbnN0IGZpbGUgb2YgYXdhaXQgcmVhZGRpclBvc2l4KC4uLikpYCwgd2hpY2ggcmVhZHMgZXhhY3RseSBhcyBpbnRlbmRlZC5cbiAgICAgICAgICogSG9pc3RpbmcgdGhlIGF3YWl0ZWQgY2FsbCBpbnRvIGEgdmFyaWFibGUgbmFtZWQgYWZ0ZXIgdGhlIGxvb3AncyBvd24gaXRlcmFibGUgYWRkcyBhIGxpbmUgYW5kIGEgbmFtZVxuICAgICAgICAgKiB3aXRob3V0IGFkZGluZyBpbmZvcm1hdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLXVucmVhZGFibGUtZm9yLW9mLWV4cHJlc3Npb24nOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIG5lc3RlZCBkZXN0cnVjdHVyaW5nIHRoaXMgZmxhZ3MgaXMgZGVsaWJlcmF0ZSBoZXJlIGFuZCByZWFkcyB3ZWxsOiBwdWxsaW5nIGEgbWVtYmVyIG91dCBvZiBhXG4gICAgICAgICAqIHBhcmFtcyBiYWcgaW4gb25lIHN0ZXAgc3RhdGVzIHdoZXJlIHRoZSB2YWx1ZSBjb21lcyBmcm9tLCB3aGljaCBhIHNlY29uZCBpbnRlcm1lZGlhdGUgYmluZGluZyBvbmx5XG4gICAgICAgICAqIG9ic2N1cmVzLiBUaGUgcnVsZSB0YWtlcyBubyBvcHRpb25zLCBzbyB0aGVyZSBpcyBubyB3YXkgdG8ga2VlcCB0aGUgZGVwdGggbGltaXQgaXQgaXMgcmVhbGx5IGFmdGVyXG4gICAgICAgICAqIHdoaWxlIGFsbG93aW5nIHRoZSBzaGFwZSBpbiB1c2UuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby11bnJlYWRhYmxlLW9iamVjdC1kZXN0cnVjdHVyaW5nJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIGBjaGVja0FyZ3VtZW50c2Agc3RyaXBzIGB1bmRlZmluZWRgIGFyZ3VtZW50cywgd2hpY2ggc2hpZnRzIHRoZSByZW1haW5pbmcgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50b1xuICAgICAgICAgKiB0aGUgd3Jvbmcgc2xvdHM7IGBjaGVja0Fycm93RnVuY3Rpb25Cb2R5YCByZW1vdmVzIGByZXR1cm4gdW5kZWZpbmVkO2AgZnJvbSBhcnJvdyBib2RpZXMgd2hvc2Ugb3RoZXJcbiAgICAgICAgICogYnJhbmNoZXMgZG8gcmV0dXJuIGEgdmFsdWUsIHdoaWNoIHZpb2xhdGVzIHRoZSBgbm9JbXBsaWNpdFJldHVybnNgIHNldHRpbmcgdGhpcyBwcm9qZWN0IGNvbXBpbGVzIHdpdGguXG4gICAgICAgICAqIFRoZSBydWxlJ3MgcmVtYWluaW5nIGNhc2VzIChhIGJhcmUgYHVuZGVmaW5lZGAgaW5pdGlhbGl6ZXIsIGByZXR1cm4gdW5kZWZpbmVkO2AgaW4gYSB2b2lkIGZ1bmN0aW9uKVxuICAgICAgICAgKiBhcmUgc3RpbGwgd29ydGggaGF2aW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tdXNlbGVzcy11bmRlZmluZWQnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjaGVja0FyZ3VtZW50czogZmFsc2UsXG4gICAgICAgICAgICBjaGVja0Fycm93RnVuY3Rpb25Cb2R5OiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gYEFycmF5LmZyb21Bc3luY2AgaXMgRVMyMDI0LiBTZWUgdGhlIEVTMjAyMiBmbG9vciBub3RlIGFib3ZlLlxuICAgICAgICAndW5pY29ybi9wcmVmZXItYXJyYXktZnJvbS1hc3luYyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBFdmVyeSBoaXQgaGVyZSBpcyBhIHByb21pc2UgZGVsaWJlcmF0ZWx5IE5PVCBhd2FpdGVkLCBhbmQgYGF3YWl0YCB3b3VsZCBjaGFuZ2Ugd2hhdCB0aGUgY29kZSBkb2VzLlxuICAgICAgICAgKiBgcmVzdWx0LmNhdGNoKHRocm93RGVsYXllZClgIGluIGBhc3luYy1ldmVudHMudHNgIGlzIHRoZSBmaXJlLWFuZC1mb3JnZXQgZXJyb3IgcGF0aCB0aGUgbW9kdWxlIGlzXG4gICAgICAgICAqIGJ1aWx0IG9uOyB0aGUgcmVzdCBob2xkIGFuIHVucmVzb2x2ZWQgcHJvbWlzZSBhbmQgYXNzZXJ0IHRoZSBjYWxsYmFjayBoYXMgbm90IGZpcmVkIHlldCwgc28gYXdhaXRpbmdcbiAgICAgICAgICogd291bGQgaGFuZyB0aGUgdGVzdCBvciBpbnZlcnQgd2hhdCBpdCBwcm92ZXMuIFRoZSBydWxlIGNhbm5vdCB0ZWxsIGEgZm9yZ290dGVuIGBhd2FpdGAgZnJvbSBhblxuICAgICAgICAgKiBpbnRlbnRpb25hbCBvbmUsIGFuZCB0aGlzIGNvZGViYXNlIHNjaGVkdWxlcyBmaXJlLWFuZC1mb3JnZXQgd29yayBhcyBhIGNvcmUgcGF0dGVybi5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1hd2FpdCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBBbGwgdGhyZWUgcmVwb3J0cyByZWFkIEhUTUwgb3V0IChgY29uc3QgaHRtbCA9IGVsLmlubmVySFRNTGApLCBuZXZlciB3cml0ZSBpdCwgYW5kIGZvciBhIHJlYWRcbiAgICAgICAgICogYGdldEhUTUwoKWAgcmV0dXJucyB0aGUgc2FtZSBzdHJpbmcuIFdoYXQgaXQgYWRkcyBpcyBzaGFkb3ctcm9vdCBzZXJpYWxpemF0aW9uIG9wdGlvbnMgdGhhdCBub3RoaW5nXG4gICAgICAgICAqIGhlcmUgYXNrcyBmb3IsIGluIGV4Y2hhbmdlIGZvciBhIG11Y2ggbmV3ZXIgcGxhdGZvcm0gZmxvb3IgdGhhbiBgaW5uZXJIVE1MYCAtLSBhIGJhZCB0cmFkZSBmb3IgYVxuICAgICAgICAgKiBsaWJyYXJ5IHRoYXQgaGFzIHRvIHJ1biBvbiB3aGF0ZXZlciBDaHJvbWl1bSB0aGUgaW5zdGFsbGVkIE9ic2lkaWFuIHNoaXBzLiBUaGUgcnVsZSdzIG90aGVyIGhhbGYsXG4gICAgICAgICAqIHJld3JpdGluZyB3cml0ZXMgdG8gdGhlIHNhbml0aXppbmcgYHNldEhUTUwoKWAsIHdvdWxkIGJlIHdvcnRoIGhhdmluZzsgaXQganVzdCBuZXZlciBmaXJlcyBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWRvbS1ub2RlLWh0bWwtbWV0aG9kcyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBJdGVyYXRvciBoZWxwZXJzIChgSXRlcmF0b3Ijc29tZWAgYW5kIGZyaWVuZHMpIGFyZSBFUzIwMjUsIHNvIHRoaXMgYmVsb25ncyB3aXRoIGBuby1hcnJheS1yZXZlcnNlYCBhbmRcbiAgICAgICAgICogYG5vLWFycmF5LXNvcnRgIGFib3ZlOiB0aGUgc2FtZSBFUzIwMjIgZmxvb3IgcnVsZXMgaXQgb3V0LCBhbmQgdGhlIHNhbWUgbm90ZSBhcHBsaWVzIC0tIHJldmlzaXQgdGhlbVxuICAgICAgICAgKiB0b2dldGhlciBpZiB0aGF0IGZsb29yIG1vdmVzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWl0ZXJhdG9yLWhlbHBlcnMnOiAnb2ZmJyxcbiAgICAgICAgLy8gYEl0ZXJhdG9yI3RvQXJyYXlgIGlzIEVTMjAyNS4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWl0ZXJhdG9yLXRvLWFycmF5JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBzdWdnZXN0ZWQgcmVwbGFjZW1lbnQgaXMgYE1hdGgudHJ1bmMoTnVtYmVyKHgpKWAsIHdoaWNoIGlzIGxvbmdlciB0aGFuIGBwYXJzZUludCh4LCAxMClgIGFuZCBub1xuICAgICAgICAgKiBjbGVhcmVyLCBhbmQgaXQgaXMgbm90IHRoZSBzYW1lIGZ1bmN0aW9uOiBgcGFyc2VJbnRgIHN0b3BzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBjYW5ub3QgYmUgcGFydFxuICAgICAgICAgKiBvZiB0aGUgbnVtYmVyLCBzbyBgJzEyYWJjJ2AgcGFyc2VzIHRvIDEyIHdoZXJlIGBOdW1iZXJgIHlpZWxkcyBgTmFOYC4gVHdvIG9mIHRoZSByZXBvcnRzIHJlYWQgdXNlclxuICAgICAgICAgKiBpbnB1dCB0aHJvdWdoIHRoYXQgZGlmZmVyZW5jZSAtLSB0aGUgcGFnZS1qdW1wIGJveCBpbiB0aGUgRGF0YXZpZXcgaGVscGVyLCBhbmRcbiAgICAgICAgICogYE51bWJlckNvbXBvbmVudC52YWx1ZUZyb21TdHJpbmdgLCB3aG9zZSBsZW5pZW50IHBhcnNlIGlzIHBhcnQgb2YgYSBwdWJsaXNoZWQgY29tcG9uZW50J3MgYmVoYXZpb3IuXG4gICAgICAgICAqIFRoZSByZXN0IHBhcnNlIG1hY2hpbmUtZ2VuZXJhdGVkIHN0cmluZ3MsIHdoZXJlIHRoZSB0d28gYWdyZWUgYnV0IHRoZSBzaG9ydGVyIHNwZWxsaW5nIHN0aWxsIHdpbnMuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItbnVtYmVyLWNvZXJjaW9uJzogJ29mZicsXG4gICAgICAgIC8vIGBQcm9taXNlLndpdGhSZXNvbHZlcnNgIGlzIEVTMjAyNC4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXByb21pc2Utd2l0aC1yZXNvbHZlcnMnOiAnb2ZmJyxcbiAgICAgICAgLy8gYFNldCN1bmlvbmAgYW5kIGZyaWVuZHMgYXJlIEVTMjAyNS4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXNldC1tZXRob2RzJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIHJhbmtzIG9wZXJhbmRzIGJ5IHN5bnRhY3RpYyBzaGFwZSwgbm90IGNvc3QsIHNvIGV2ZXJ5IHJlcG9ydCBoZXJlIHN3YXBzIG9uZSBwcm9wZXJ0eSByZWFkXG4gICAgICAgICAqIGFoZWFkIG9mIGFub3RoZXIgYW5kIGJ1eXMgbm90aGluZy4gSXRzIG93biBtZXNzYWdlIGNvbmNlZGVzIGl0IGNhbm5vdCBjaGVjayB0aGUgcGFydCB0aGF0IG1hdHRlcnMgLS1cbiAgICAgICAgICogXCJhZnRlciB2ZXJpZnlpbmcgc2hvcnQtY2lyY3VpdCBiZWhhdmlvclwiIC0tIGFuZCBvbmUgcmVwb3J0IHNpdHMgZGlyZWN0bHkgdW5kZXIgYSBjb21tZW50IHJlY29yZGluZ1xuICAgICAgICAgKiB0aGF0IHRoZSBvcGVyYW5kcyBjaGFuZ2UgaW5zaWRlIGEgYHJlbmFtZWAgZXZlbnQgaGFuZGxlciwgd2hpY2ggaXMgd2hlcmUgb3JkZXIgc3RvcHMgYmVpbmcgZnJlZS5cbiAgICAgICAgICogVGhlIGN1cnJlbnQgb3JkZXJzIGFsc28gY2FycnkgaW50ZW50OiBhIG51bGwgZ3VhcmQgYmVmb3JlIHRoZSB1c2UgaXQgZ3VhcmRzLCBhbmQgdGhlIGNvbmRpdGlvbiBiZWluZ1xuICAgICAgICAgKiByZXBvcnRlZCBiZWZvcmUgdGhlIHN0YXRlIGl0IGNvbnRyYWRpY3RzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXNpbXBsZS1jb25kaXRpb24tZmlyc3QnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogYFVSTC5jYW5QYXJzZWAgcmVxdWlyZXMgTm9kZSAxOC4xNywgd2VsbCBhYm92ZSB0aGUgTm9kZSAxNi4xNi4wIGZsb29yIHRoYXQgc2hpcHBlZCBzb3VyY2UgdGFyZ2V0c1xuICAgICAgICAgKiAoc2VlIHRoZSBPYnNpZGlhbiBwbHVnaW4gbGF5ZXIncyBgbWluaW11bU5vZGVWZXJzaW9uYCkuIFRoZSBydWxlIGNhbiB0aGVyZWZvcmUgbmV2ZXIgYmUgc2F0aXNmaWVkIHRoZXJlLCBzbyBpdCBpcyBvZmYgYXQgdGhlXG4gICAgICAgICAqIGNvbmZpZyBsZXZlbCByYXRoZXIgdGhhbiBhbm5vdGF0ZWQgYXQgZWFjaCBjYWxsIHNpdGUuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItdXJsLWNhbi1wYXJzZSc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBFdmVyeSBhcnJheSByZXBvcnRlZCBoZXJlIGhvbGRzIHN0cmluZ3MsIHdoZXJlIHRoZSBkZWZhdWx0IHNvcnQgaXMgYWxyZWFkeSB3ZWxsIGRlZmluZWQgYW5kIGNvcnJlY3QuXG4gICAgICAgICAqIEFkZGluZyB0aGUgY29tcGFyYXRvciB0aGUgcnVsZSBhc2tzIGZvciB3b3VsZCBtZWFuIGNob29zaW5nIGJldHdlZW4gY29kZS11bml0IGFuZCBsb2NhbGUgb3JkZXJpbmcsXG4gICAgICAgICAqIHNvIGZvbGxvd2luZyBpdCB3b3VsZCBDSEFOR0UgdGhlIHNvcnQgcmF0aGVyIHRoYW4gZG9jdW1lbnQgaXQuIFRoZSBydWxlIGVhcm5zIGl0cyBwbGFjZSBvbiBudW1lcmljXG4gICAgICAgICAqIGFycmF5czsgaXQgZG9lcyBub3QgaGF2ZSBhbnkgaGVyZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3JlcXVpcmUtYXJyYXktc29ydC1jb21wYXJlJzogJ29mZicsXG4gICAgICAgIC8vIFRoZSBjb2RlYmFzZSBhbHJlYWR5IHNwZWxscyBlbmNvZGluZ3MgdGhlIHdheSB0aGUgRW5jb2RpbmcgU3RhbmRhcmQgZG9lcyAoYHV0Zi04YCksIHdoaWNoIGlzIGFsc28gd2hhdCBgVGV4dERlY29kZXJgIHJlcG9ydHMuIEtlZXAgdGhlIHJ1bGUgZW5mb3JjaW5nIGNvbnNpc3RlbmN5LCBqdXN0IGluIHRoZSBkaXJlY3Rpb24gYWxyZWFkeSBpbiB1c2UuXG4gICAgICAgICd1bmljb3JuL3RleHQtZW5jb2RpbmctaWRlbnRpZmllci1jYXNlJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgd2l0aERhc2g6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEJ1aWxkL2xpbnQvdmVyc2lvbiBzY3JpcHRzIGFyZSBDTEkgZW50cnkgcG9pbnRzLCB3aGVyZSBleGl0aW5nIHdpdGggYSBzdGF0dXMgY29kZSBpcyB0aGUgaW50ZXJmYWNlLlxuICAgICAgZmlsZXM6IGNvbnRleHQuc2NyaXB0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAndW5pY29ybi9uby1wcm9jZXNzLWV4aXQnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLypcbiAgICAgICAqIEEgbW9kdWxlLWxldmVsIGZpeHR1cmUgYXNzaWduZWQgZnJvbSBgYmVmb3JlRWFjaGAgaXMgdGhlIHN0YW5kYXJkIHRlc3Qgc2hhcGU6XG4gICAgICAgKlxuICAgICAgICogICBsZXQgYXBwOiBBcHA7XG4gICAgICAgKiAgIGJlZm9yZUVhY2goKCkgPT4geyBhcHAgPSBBcHAuY3JlYXRlQ29uZmlndXJlZF9fKCk7IH0pO1xuICAgICAgICpcbiAgICAgICAqIFRoZSBydWxlIGlzIHJpZ2h0IGFib3V0IHByb2R1Y3Rpb24gY29kZSAtLSBtb2R1bGUgc3RhdGUgcmVhc3NpZ25lZCBmcm9tIGluc2lkZSBhIGZ1bmN0aW9uIGlzIHdvcnRoXG4gICAgICAgKiBmbGFnZ2luZywgYW5kIHRoZSBmaXggaXMgdG8gaG9sZCBpdCBpbiBhIGBjb25zdGAgb2JqZWN0IGluc3RlYWQuIEluIHRlc3RzIHRoYXQgd291bGQgcmVwbGFjZSBldmVyeVxuICAgICAgICogYGFwcGAgd2l0aCBgU1RBVEUuYXBwYCBhbmQgbWFrZSBlYWNoIGZpbGUgcmVhZCB3b3JzZSBmb3Igbm8gZ2Fpbiwgc2luY2UgdGhlIGZpeHR1cmUgaXMgcmVzZXQgcGVyIHRlc3RcbiAgICAgICAqIGJ5IGRlc2lnbi4gU2NvcGVkIG9mZiBoZXJlIHJhdGhlciB0aGFuIGRpc2FibGVkIG91dHJpZ2h0LCBzbyBwcm9kdWN0aW9uIGNvZGUga2VlcHMgdGhlIGNoZWNrLlxuICAgICAgICovXG4gICAgICBmaWxlczogY29udGV4dC50ZXN0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAvKlxuICAgICAgICAgKiBUd28gc2hhcGVzIGhlcmUgY2Fubm90IGZvbGxvdyB0aGUgYWR2aWNlLiBBIGhlbHBlciBkZWZpbmVkIGluc2lkZSBhbiBgZXZhbEluT2JzaWRpYW5gIGNhbGxiYWNrXG4gICAgICAgICAqIGNhbm5vdCBiZSBob2lzdGVkIGF0IGFsbDogdGhlIGNhbGxiYWNrIGlzIHNlcmlhbGl6ZWQgd2l0aCBgdG9TdHJpbmcoKWAgYW5kIHJ1bnMgaW5zaWRlIE9ic2lkaWFuLCBzb1xuICAgICAgICAgKiBhbnl0aGluZyBsZWZ0IGJlaGluZCBpbiB0aGUgbW9kdWxlIHNjb3BlIGlzIHNpbXBseSBub3QgdGhlcmUuIEFuZCBhIHBlci1zdWl0ZSBmYWN0b3J5XG4gICAgICAgICAqIChgY3JlYXRlQ29tcG9uZW50YCwgYGNyZWF0ZU1vY2tQbHVnaW5gKSBpcyBkZWxpYmVyYXRlbHkgbG9jYWwsIGtlZXBpbmcgZWFjaCBzdWl0ZSdzIGZpeHR1cmUgbmV4dCB0b1xuICAgICAgICAgKiB0aGUgYXNzZXJ0aW9ucyB0aGF0IHJlYWQgaXQuIFByb2R1Y3Rpb24gY29kZSBrZWVwcyB0aGUgY2hlY2suXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9jb25zaXN0ZW50LWZ1bmN0aW9uLXNjb3BpbmcnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogQSB0ZXN0IGJpbmRpbmcgaXMgbmFtZWQgYWZ0ZXIgdGhlIHRoaW5nIGl0IGNhcHR1cmVzLCBub3QgYWZ0ZXIgd2hhdCBpdCBkb2VzOiBgY3JlYXRlRWxlbWVudFNweWBcbiAgICAgICAgICogaG9sZHMgdGhlIHNweSBvbiBgY3JlYXRlRWxlbWVudGAsIGFuZCBgY3JlYXRlUHJvZ3JhbU9wdGlvbnNgIGhvbGRzIHRoZSBvcHRpb25zIGBjcmVhdGVQcm9ncmFtYCB3YXNcbiAgICAgICAgICogY2FsbGVkIHdpdGguIFRoZSB2ZXJiIGJlbG9uZ3MgdG8gdGhlIG5hbWUgYmVpbmcgcmVmZXJlbmNlZCwgc28gdGhlIHJ1bGUgcmVhZHMgaXQgYXMgYSBmdW5jdGlvbiBuYW1lXG4gICAgICAgICAqIHRoYXQgaXMgbm90IGEgZnVuY3Rpb24uIExlZnQgb24gZm9yIHByb2R1Y3Rpb24gY29kZSwgd2hlcmUgdGhlIGNvbXBsYWludCBpcyB0aGUgcmlnaHQgb25lLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tbm9uLWZ1bmN0aW9uLXZlcmItcHJlZml4JzogJ29mZicsXG4gICAgICAgICd1bmljb3JuL25vLXRvcC1sZXZlbC1hc3NpZ25tZW50LWluLWZ1bmN0aW9uJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKiBlc2xpbnQtZW5hYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gV2UgZGlzYWJsZWQgbWFnaWMgbnVtYmVycyBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYWxsIG92ZXIgdGhlIGNvbmZpZ3MuICovXG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQkEscUJBQTRCO0FBQzVCLDRCQUFrQztBQUNsQyxnQkFBbUI7QUFDbkIsa0JBQXFCO0FBRXJCLDJCQUFzQjtBQUN0QiwrQ0FBK0M7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QSxNQUVFLE9BQU8sUUFBUTtBQUFBLE1BQ2YsT0FBTztBQUFBLFFBQ0wsMkJBQTJCO0FBQUEsTUFDN0I7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQVlFLE9BQU8sUUFBUTtBQUFBLE1BQ2YsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFRTCx1Q0FBdUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU92Qyx1Q0FBdUM7QUFBQSxRQUN2QywrQ0FBK0M7QUFBQSxNQUNqRDtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsiZXNsaW50IiwgImNvbW1lbnRzQ29uZmlncyIsICJlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MiLCAibm9kZVBsdWdpbiIsICJwZXJmZWN0aW9uaXN0Q29uZmlncyIsICJzdHlsaXN0aWMiLCAidHNlc2xpbnQiLCAidW5pY29ybiJdCn0K
1046
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBnZW5lcmljIGhhbGYgb2YgdGhlIHNoYXJlZCBFU0xpbnQgY29uZmlndXJhdGlvbiwgZm9yIGFueSBUeXBlU2NyaXB0IHByb2plY3QuXG4gKlxuICogSXQgaW50ZWdyYXRlcyBFU0xpbnQncyBvd24gcmVjb21tZW5kZWQgcnVsZXMsIGB0eXBlc2NyaXB0LWVzbGludGAsIGBAc3R5bGlzdGljL2VzbGludC1wbHVnaW5gLFxuICogYGVzbGludC1wbHVnaW4taW1wb3J0LXhgIHdpdGggaXRzIFR5cGVTY3JpcHQgcmVzb2x2ZXIsIGBlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3RgLCBgZXNsaW50LXBsdWdpbi11bmljb3JuYCxcbiAqIGBlc2xpbnQtcGx1Z2luLW5gIGFuZCB0aGUgZ2VuZXJpYyBpbi1ob3VzZSBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgKHRoZSBPYnNpZGlhbiBwbHVnaW4gb25lIGxpdmVzIGluXG4gKiBgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0YCkgYnVpbGRzIG9uIHtAbGluayBnZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc30gYW5kIGFkZHMgb25seSB3aGF0IGlzIHNwZWNpZmljIHRvIGl0LlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWNsYXJhdGl2ZSBFU0xpbnQgcnVsZS9wbHVnaW4gY29uZmlndXJhdGlvbjsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyBFU0xpbnQsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEVTTGludCxcbiAgTGludGVyXG59IGZyb20gJ2VzbGludCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gV2UgZGlzYWJsZWQgbWFnaWMgbnVtYmVycyBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYWxsIG92ZXIgdGhlIGNvbmZpZ3MuICovXG5pbXBvcnQgY29tbWVudHNDb25maWdzIGZyb20gJ0Blc2xpbnQtY29tbXVuaXR5L2VzbGludC1wbHVnaW4tZXNsaW50LWNvbW1lbnRzL2NvbmZpZ3MnO1xuaW1wb3J0IHsgaW5jbHVkZUlnbm9yZUZpbGUgfSBmcm9tICdAZXNsaW50L2NvbmZpZy1oZWxwZXJzJztcbmltcG9ydCBlc2xpbnQgZnJvbSAnQGVzbGludC9qcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgc3R5bGlzdGljIGZyb20gJ0BzdHlsaXN0aWMvZXNsaW50LXBsdWdpbic7XG5pbXBvcnQgeyBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIgfSBmcm9tICdlc2xpbnQtaW1wb3J0LXJlc29sdmVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZmxhdENvbmZpZ3MgYXMgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzIH0gZnJvbSAnZXNsaW50LXBsdWdpbi1pbXBvcnQteCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IG5vZGVQbHVnaW4gZnJvbSAnZXNsaW50LXBsdWdpbi1uJztcbmltcG9ydCB7IGNvbmZpZ3MgYXMgcGVyZmVjdGlvbmlzdENvbmZpZ3MgfSBmcm9tICdlc2xpbnQtcGx1Z2luLXBlcmZlY3Rpb25pc3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBpbmRleGAgaXMgdG9vIGNvbmZ1c2luZy5cbmltcG9ydCB1bmljb3JuIGZyb20gJ2VzbGludC1wbHVnaW4tdW5pY29ybic7XG5pbXBvcnQge1xuICBkZWZpbmVDb25maWcsXG4gIGdsb2JhbElnbm9yZXNcbn0gZnJvbSAnZXNsaW50L2NvbmZpZyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHQgLS0gVGhlIGRlZmF1bHQgZXhwb3J0IG5hbWUgYF9kZWZhdWx0YCBpcyB0b28gY29uZnVzaW5nLlxuaW1wb3J0IHRzZXNsaW50IGZyb20gJ3R5cGVzY3JpcHQtZXNsaW50JztcblxuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBnZXRSb290Rm9sZGVyIH0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQgeyBub1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cmllcyB9IGZyb20gJy4vZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzJztcbmltcG9ydCB7XG4gIElOX0hPVVNFX0VTTElOVF9QTFVHSU5fTkFNRSxcbiAgaW5Ib3VzZUVzbGludFBsdWdpblxufSBmcm9tICcuL2VzbGludC1ydWxlcy9pbi1ob3VzZS1wbHVnaW4udHMnO1xuaW1wb3J0IHsgQ0xBVURFX1dPUktUUkVFU19JR05PUkVfR0xPQiB9IGZyb20gJy4vbGludC1pZ25vcmVzLnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUVzbGludENvbmZpZ3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBidWlsZHMgY3VzdG9tIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICogQHJldHVybnMgVGhlIGN1c3RvbSBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Db25maWdzPzogKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpID0+IExpbnRlci5Db25maWdbXTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGVkaXRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdENvbnRleHQ/OiAoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIG9sZGVzdCBOb2RlIHZlcnNpb24gc2hpcHBlZCBzb3VyY2UgaGFzIHRvIHJ1biBvbiwgYXMgYSBzZW12ZXIgcmFuZ2U6IGEgbGlicmFyeSB0aGF0IGFsc28gcnVucyBpbnNpZGUgYW5cbiAgICogb2xkZXIgcnVudGltZSB0aGFuIGl0cyBvd24gdG9vbGluZyAoYW4gT2JzaWRpYW4gcmVuZGVyZXIsIHNheSkgbmFtZXMgdGhhdCBydW50aW1lJ3MgTm9kZSBoZXJlLiBXaGVuIG9taXR0ZWQsXG4gICAqIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlnc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gcmVnaXN0ZXJlZCB1bmRlciB0aGUgaW4taG91c2UgbmFtZXNwYWNlLiBBIHByb2plY3QtdHlwZSBsYXllciB0aGF0IGFkZHMgaW4taG91c2UgcnVsZXMgb2YgaXRzIG93blxuICAgKiBwYXNzZXMgT05FIHBsdWdpbiBjYXJyeWluZyB0aGUgZ2VuZXJpYyBydWxlcyBhbmQgaXRzIG93biwgYmVjYXVzZSBFU0xpbnQgcmVmdXNlcyB0d28gcGx1Z2lucyB1bmRlciBvbmUgbmFtZXNwYWNlLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgcGx1Z2luIGNhcnJ5aW5nIHRoZSBnZW5lcmljIHJ1bGVzIGFsb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5Ib3VzZVBsdWdpbj86IEVTTGludC5QbHVnaW47XG5cbiAgLyoqXG4gICAqIFRoZSBvbGRlc3QgTm9kZSB2ZXJzaW9uIHNoaXBwZWQgc291cmNlIGhhcyB0byBydW4gb24sIGFzIGEgc2VtdmVyIHJhbmdlLiBXaGVuIG9taXR0ZWQsIGBlc2xpbnQtcGx1Z2luLW5gIHJlYWRzXG4gICAqIHRoZSBgZW5naW5lc2AgZmllbGQgb2YgdGhlIHByb2plY3QncyBgcGFja2FnZS5qc29uYC5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Ob2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdldEluSG91c2VQbHVnaW5Db25maWdzUGFyYW1zIHtcbiAgcmVhZG9ubHkgY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dDtcbiAgcmVhZG9ubHkgaW5Ib3VzZVBsdWdpbjogRVNMaW50LlBsdWdpbjtcbn1cblxuaW50ZXJmYWNlIEdldE5vZGVDb21wYXRDb25maWdzUGFyYW1zIHtcbiAgcmVhZG9ubHkgY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dDtcbiAgcmVhZG9ubHkgbWluaW11bU5vZGVWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZm9yIGRlZmluaW5nIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVzbGludENvbmZpZ0NvbnRleHQge1xuICAvKipcbiAgICogVGhlIHJvb3QgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb290Q29uZmlnRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JpcHQgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2NyaXB0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXJzIGhvbGRpbmcgdGhlIHByb2plY3QncyBzb3VyY2VzLCBieSBkZWZhdWx0IGBzcmNgIGFsb25lLiBBIHdvcmtzcGFjZSB3aG9zZSBwYWNrYWdlcyBlYWNoIGhhdmUgdGhlaXIgb3duXG4gICAqIGBzcmNgIGFkZHMgdGhlbSBoZXJlLCBzbyB0aGUgcnVsZXMga2V5ZWQgb24gYSBmaWxlJ3MgbmFtZSBpbnNpZGUgYSBzb3VyY2UgZm9sZGVyIHJlYWNoIHRob3NlIHBhY2thZ2VzIHRvby5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2VGb2xkZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdGVzdCBmaWxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBhbGwgZmlsZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhbGwgZmlsZXMuXG4gICAqL1xuICBwdWJsaWMgYWxsRmlsZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4udGhpcy50ZXN0RmlsZXMsIC4uLnRoaXMuc2NyaXB0RmlsZXMsIC4uLnRoaXMucm9vdENvbmZpZ0ZpbGVzLCAuLi50aGlzLnNvdXJjZUZpbGVzXTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbnRleHQgb2YgYSBwcm9qZWN0IGxhaWQgb3V0IHRoZSBjb252ZW50aW9uYWwgd2F5OiBzb3VyY2VzIHVuZGVyIGBzcmNgLCBzY3JpcHRzIHVuZGVyIGBzY3JpcHRzYCwgdGVzdHNcbiAqIGJlc2lkZSB0aGUgc291cmNlcyBvciB1bmRlciBgX190ZXN0c19fYCwgYW5kIHRoZSBjb21taXRsaW50LCBFU0xpbnQgYW5kIFZpdGVzdCBjb25maWd1cmF0aW9ucyBhdCB0aGUgcm9vdC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk6IEVzbGludENvbmZpZ0NvbnRleHQge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IEVzbGludENvbmZpZ0NvbnRleHQoKTtcbiAgY29udGV4dC5zb3VyY2VGb2xkZXJzLnB1c2goUmVwb1BhdGhzLlNyYyk7XG4gIGNvbnRleHQucm9vdENvbmZpZ0ZpbGVzLnB1c2goXG4gICAgUmVwb1BhdGhzLkNvbW1pdGxpbnRDb25maWdUcyxcbiAgICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzLFxuICAgIFJlcG9QYXRocy5WaXRlc3RDb25maWdUc1xuICApO1xuICBjb250ZXh0LnNjcmlwdEZpbGVzLnB1c2goXG4gICAgam9pbihSZXBvUGF0aHMuU2NyaXB0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcylcbiAgKTtcbiAgY29udGV4dC5zb3VyY2VGaWxlcy5wdXNoKFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuU3JjLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRzeClcbiAgKTtcbiAgY29udGV4dC50ZXN0RmlsZXMucHVzaChcbiAgICBqb2luKFJlcG9QYXRocy5UZXN0cywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUcyksXG4gICAgam9pbihSZXBvUGF0aHMuTW9ja3MsIFJlcG9QYXRocy5BbnlQYXRoLCBSZXBvUGF0aHMuQW55VHMpLFxuICAgIGpvaW4oUmVwb1BhdGhzLlNyYywgUmVwb1BhdGhzLkFueVBhdGgsIFJlcG9QYXRocy5BbnlUZXN0VHMpLFxuICAgIC8qXG4gICAgICogQSBidWlsZC1zY3JpcHQgdGVzdCBpcyBhIFRFU1QsIGFuZCB0aGlzIGNvbnZlbnRpb24gcHV0cyBpdCBpbiBhIGAqLnRlc3QudHNgIHVuZGVyIGBzY3JpcHRzL2AgLS0gYmVzaWRlIHRoZVxuICAgICAqIHNjcmlwdCBpdCBjb3ZlcnMgcmF0aGVyIHRoYW4gdW5kZXIgYHNyYy9gLiBXaXRob3V0IHRoaXMgZ2xvYiBpdCBtYXRjaGVkIGBzY3JpcHRGaWxlc2AgYWxvbmUsIHNvIGV2ZXJ5IHJlbGF4YXRpb25cbiAgICAgKiB0aGF0IGtleXMgb24gYGNvbnRleHQudGVzdEZpbGVzYCBtaXNzZWQgaXQ6IGBuby1tYWdpYy1udW1iZXJzYCBmaXJlZCBvbiBhIHN1aXRlIHdob3NlIHdob2xlIHN1YmplY3QgaXMgcmVjb3JkZWRcbiAgICAgKiBudW1iZXJzLCBhbmQgYHVuaWNvcm4vY29uc2lzdGVudC1mdW5jdGlvbi1zY29waW5nYCBvbiB0aGUgcGVyLXN1aXRlIGZpeHR1cmUgZmFjdG9yaWVzIHRoZSBibG9jayBhdCB0aGUgYm90dG9tXG4gICAgICogb2YgYGdldFVuaWNvcm5Db25maWdzYCBzYXlzIHRlc3RzIGV4aXN0IHRvIGFsbG93LlxuICAgICAqXG4gICAgICogVGhlIGZpbGUgbm93IG1hdGNoZXMgQk9USCBsaXN0cywgYW5kIHRoYXQgaXMgZGVsaWJlcmF0ZSByYXRoZXIgdGhhbiBhbiBvdmVybGFwIHRvIHJlc29sdmU6IGV2ZXJ5dGhpbmcgc2NvcGVkIHRvXG4gICAgICogYGNvbnRleHQuc2NyaXB0RmlsZXNgIG9ubHkgdHVybnMgcnVsZXMgT0ZGIChgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXNgLCBgdW5pY29ybi9uby1wcm9jZXNzLWV4aXRgKSwgYm90aCBvZlxuICAgICAqIHdoaWNoIGEgc2NyaXB0IHRlc3Qgd2FudHMgYXMgbXVjaCBhcyB0aGUgc2NyaXB0IGRvZXMsIHNvIHRoZSB0d28gc2V0cyBjb21wb3NlIGluc3RlYWQgb2YgY29tcGV0aW5nLiBLZWVwIGl0IHRoYXRcbiAgICAgKiB3YXkgLS0gYSBydWxlIHR1cm5lZCBPTiBmb3IgYHNjcmlwdEZpbGVzYCB3b3VsZCBsYW5kIG9uIHRoZXNlIGZpbGVzIHRvbywgYW5kIGZsYXQtY29uZmlnIG9yZGVyLCBub3QgaW50ZW50LFxuICAgICAqIHdvdWxkIGRlY2lkZSB3aGljaCBzaWRlIHdvbi5cbiAgICAgKi9cbiAgICBqb2luKFJlcG9QYXRocy5TY3JpcHRzLCBSZXBvUGF0aHMuQW55UGF0aCwgUmVwb1BhdGhzLkFueVRlc3RUcylcbiAgKTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbnMgb2YgYSBnZW5lcmljIFR5cGVTY3JpcHQgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBkZWZpbmluZyBFU0xpbnQgY29uZmlndXJhdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lRXNsaW50Q29uZmlncyhvcHRpb25zOiBEZWZpbmVFc2xpbnRDb25maWdzT3B0aW9ucyA9IHt9KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZURlZmF1bHRFc2xpbnRDb25maWdDb250ZXh0KCk7XG4gIG9wdGlvbnMuZWRpdENvbnRleHQ/Lihjb250ZXh0KTtcbiAgY29uc3QgY3VzdG9tQ29uZmlncyA9IG9wdGlvbnMuY3VzdG9tQ29uZmlncz8uKGNvbnRleHQpID8/IFtdO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoXG4gICAgLi4uZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpLFxuICAgIC4uLmdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICAuLi4ob3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW1Ob2RlVmVyc2lvbjogb3B0aW9ucy5taW5pbXVtTm9kZVZlcnNpb24gfSlcbiAgICB9KSxcbiAgICAuLi5jdXN0b21Db25maWdzXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb25zIG9mIEVTTGludCdzIG93biBydWxlcy4gQSBwcm9qZWN0LXR5cGUgbGF5ZXIgcmVhZHMgaXQgdG8gbGVhcm4gd2hpY2ggY29yZSBydWxlcyB0aGlzXG4gKiBjb25maWd1cmF0aW9uIHNldHMgaXRzZWxmLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIEVTTGludCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW2VzbGludC5jb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnYWNjZXNzb3ItcGFpcnMnOiAnZXJyb3InLFxuICAgICAgICAnYXJyYXktY2FsbGJhY2stcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NhbWVsY2FzZSc6ICdlcnJvcicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIHJlcG9ydHMgcGVyIGNvbW1lbnQgVE9LRU4sIHNvIGV2ZXJ5IGNvbnRpbnVhdGlvbiBsaW5lIG9mIGEgd3JhcHBlZCBgLy9gIGNvbW1lbnQgaXMgaXRzIG93biB0b2tlblxuICAgICAgICAgKiB0aGF0IHdvdWxkIGhhdmUgdG8gc3RhcnQgd2l0aCBhIGNhcGl0YWwg4oCUIHdoaWNoIGlzIGhvdyBwcm9zZSBlbmRzIHVwIHdpdGggY2FwaXRhbHMgbWlkLXNlbnRlbmNlLlxuICAgICAgICAgKiBgaWdub3JlQ29uc2VjdXRpdmVDb21tZW50c2AgZXhlbXB0cyBhIGxpbmUgY29tbWVudCB0aGF0IGRpcmVjdGx5IGZvbGxvd3MgYW5vdGhlciBvbmUsIHdoaWNoIGlzIGV4YWN0bHkgdGhlXG4gICAgICAgICAqIHNoYXBlIG9mIGEgd3JhcHBlZCBibG9jaywgd2hpbGUgc3RpbGwgaG9sZGluZyBpdHMgRklSU1QgbGluZSB0byBhIGNhcGl0YWwuIEJsb2NrIGNvbW1lbnRzIG5lZWQgbm8gc3VjaFxuICAgICAgICAgKiBvcHRpb246IGEgYmxvY2sgY29tbWVudCBpcyBhIHNpbmdsZSB0b2tlbiBob3dldmVyIG1hbnkgbGluZXMgaXQgc3BhbnMuXG4gICAgICAgICAqIGBpZ25vcmVQYXR0ZXJuYCBjb3ZlcnMgdGhlIGhhbGYgdGhhdCBsZWF2ZXMgYmVoaW5kOiBhIGNvbW1lbnQgd2hvc2UgRklSU1Qgd29yZCBpcyBhIGNhbWVsQ2FzZSBpZGVudGlmaWVyIGlzXG4gICAgICAgICAqIGV4ZW1wdCwgc28gYSBjb21tZW50IHRoYXQgb3BlbnMgYnkgbmFtaW5nIGEgc3ltYm9sIGtlZXBzIHRoZSBuYW1lIGEgcmVhZGVyIGNhbiBncmVwIGluc3RlYWQgb2YgYSBQYXNjYWxDYXNlXG4gICAgICAgICAqIG9uZSB0aGF0IGV4aXN0cyBub3doZXJlLiBUaGUgcnVsZSBhbmNob3JzIHRoZSBwYXR0ZXJuIGF0IHRoZSBzdGFydCBvZiB0aGUgY29tbWVudCBhbmQgYFthLXpBLVowLTldYCBtYXRjaGVzXG4gICAgICAgICAqIG5vIHdoaXRlc3BhY2UsIHNvIGl0IGNhbiBvbmx5IGV2ZXIgbWF0Y2ggdGhhdCBmaXJzdCB3b3JkIOKAlCBvcmRpbmFyeSBsb3dlcmNhc2UgcHJvc2Ugc3RheXMgcmVwb3J0ZWQuIEJvdGhcbiAgICAgICAgICogb3B0aW9uIGJhZ3MgbmVlZCBpdCwgYW5kIGBibG9ja2Aga2VlcHMgaXRzIGB2OGAgZXhlbXB0aW9uIGJ5IGFsdGVybmF0aW9uIHJhdGhlciB0aGFuIGxvc2luZyBpdC5cbiAgICAgICAgICovXG4gICAgICAgICdjYXBpdGFsaXplZC1jb21tZW50cyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdhbHdheXMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsb2NrOiB7IGlnbm9yZVBhdHRlcm46ICd2OHxbYS16XVthLXpBLVowLTldKltBLVpdJyB9LFxuICAgICAgICAgICAgbGluZTogeyBpZ25vcmVDb25zZWN1dGl2ZUNvbW1lbnRzOiB0cnVlLCBpZ25vcmVQYXR0ZXJuOiAnW2Etel1bYS16QS1aMC05XSpbQS1aXScgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2NvbXBsZXhpdHknOiAnZXJyb3InLFxuICAgICAgICAnY29uc2lzdGVudC10aGlzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2N1cmx5JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZSc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LWNhc2UtbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LXBhcmFtLWxhc3QnOiAnZXJyb3InLFxuICAgICAgICAnZXFlcWVxJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZS1tYXRjaGluZyc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnZGVjbGFyYXRpb24nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93QXJyb3dGdW5jdGlvbnM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnZ3JvdXBlZC1hY2Nlc3Nvci1wYWlycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdnZXRCZWZvcmVTZXQnXG4gICAgICAgIF0sXG4gICAgICAgICdndWFyZC1mb3ItaW4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tYWxlcnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tYXJyYXktY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tYml0d2lzZSc6ICdlcnJvcicsXG4gICAgICAgICduby1jYWxsZXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tY29uc29sZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWNvbnN0cnVjdG9yLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICduby1kaXYtcmVnZXgnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZWxzZS1yZXR1cm4nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd0Vsc2VJZjogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1lbXB0eS1mdW5jdGlvbic6ICdlcnJvcicsXG4gICAgICAgICduby1leHRlbmQtbmF0aXZlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dHJhLWJpbmQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtbGFiZWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW1wbGljaXQtY29lcmNpb24nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICAnISEnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWlubmVyLWRlY2xhcmF0aW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbC12YXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbGFiZWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmUtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmVseS1pZic6ICdlcnJvcicsXG4gICAgICAgICduby1sb29wLWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbWFnaWMtbnVtYmVycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldGVjdE9iamVjdHM6IHRydWUsXG4gICAgICAgICAgICBlbmZvcmNlQ29uc3Q6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmU6IFtcbiAgICAgICAgICAgICAgLTEsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1tdWx0aS1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbXVsdGktc3RyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lZ2F0ZWQtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lc3RlZC10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICduby1vYmplY3QtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tb2N0YWwtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXJlc3RyaWN0ZWQtc3ludGF4JzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgLi4ubm9SZXN0cmljdGVkU3ludGF4UnVsZUVudHJpZXNcbiAgICAgICAgXSxcbiAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2NyaXB0LXVybCc6ICdlcnJvcicsXG4gICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNoYWRvdyc6ICdlcnJvcicsXG4gICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubmVlZGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbmNhdCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAnb3BlcmF0b3ItYXNzaWdubWVudCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbmFtZWQtY2FwdHVyZS1ncm91cCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LWhhcy1vd24nOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3JhZGl4JzogJ2Vycm9yJyxcbiAgICAgICAgJ3JlcXVpcmUtYXRvbWljLXVwZGF0ZXMnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAndW5pY29kZS1ib20nOiAnZXJyb3InLFxuICAgICAgICAndmFycy1vbi10b3AnOiAnZXJyb3InLFxuICAgICAgICAneW9kYSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduby1tYWdpYy1udW1iZXJzJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKipcbiAqIFRoZSBnbG9iYWwgaWdub3JlczogZXZlcnl0aGluZyBgLmdpdGlnbm9yZWAgbmFtZXMsIHBsdXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmFsSWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLmdldEdpdElnbm9yZUNvbmZpZ3MoKSxcbiAgICAvKlxuICAgICAqIE9uIHRvcCBvZiBgLmdpdGlnbm9yZWAsIG5vdCBpbnN0ZWFkIG9mIGl0OiBnaXQgZXhjbHVkZXMgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIgdGhyb3VnaFxuICAgICAqIGAuZ2l0L2luZm8vZXhjbHVkZWAsIHdoaWNoIGBpbmNsdWRlSWdub3JlRmlsZWAgYWJvdmUgZG9lcyBub3QgcmVhZC4gU2VlIGBsaW50LWlnbm9yZXMudHNgLlxuICAgICAqL1xuICAgIGdsb2JhbElnbm9yZXMoW0NMQVVERV9XT1JLVFJFRVNfSUdOT1JFX0dMT0JdLCAnb2JzaWRpYW4tZGV2LXV0aWxzL2NsYXVkZS13b3JrdHJlZXMnKVxuICApO1xufVxuXG4vKipcbiAqIFRoZSBnZW5lcmljIGxheWVycyBvZiB0aGUgc2hhcmVkIGNvbmZpZ3VyYXRpb24sIHdpdGhvdXQgdGhlIGdsb2JhbCBpZ25vcmVzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzKHBhcmFtczogR2V0VHlwZVNjcmlwdEVzbGludENvbmZpZ3NQYXJhbXMpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCB7IGNvbnRleHQgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhcbiAgICAuLi5nZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRUc2VzbGludENvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0U3R5bGlzdGljQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRQZXJmZWN0aW9uaXN0Q29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRVbmljb3JuQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRFc2xpbnRJbXBvcnRSZXNvbHZlclR5cGVzY3JpcHRDb25maWdzKCksXG4gICAgLi4uZ2V0RXNsaW50Q29tbWVudHNDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldEluSG91c2VQbHVnaW5Db25maWdzKHsgY29udGV4dCwgaW5Ib3VzZVBsdWdpbjogcGFyYW1zLmluSG91c2VQbHVnaW4gPz8gaW5Ib3VzZUVzbGludFBsdWdpbiB9KSxcbiAgICAuLi5nZXROb2RlQ29tcGF0Q29uZmlncyh7IGNvbnRleHQsIG1pbmltdW1Ob2RlVmVyc2lvbjogcGFyYW1zLm1pbmltdW1Ob2RlVmVyc2lvbiB9KVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRFc2xpbnRDb21tZW50c0NvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlciAtLSBUaGUgZGVmYXVsdCBleHBvcnQgbmFtZSBgcmVjb21tZW5kZWRgIGlzIHRvbyBjb25mdXNpbmcuXG4gICAgICBleHRlbmRzOiBbY29tbWVudHNDb25maWdzLnJlY29tbWVuZGVkXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQGVzbGludC1jb21tdW5pdHkvZXNsaW50LWNvbW1lbnRzL3JlcXVpcmUtZGVzY3JpcHRpb24nOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXNsaW50SW1wb3J0UmVzb2x2ZXJUeXBlc2NyaXB0Q29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAnaW1wb3J0LXgvcmVzb2x2ZXItbmV4dCc6IFtcbiAgICAgICAgICBjcmVhdGVUeXBlU2NyaXB0SW1wb3J0UmVzb2x2ZXIoe1xuICAgICAgICAgICAgYWx3YXlzVHJ5VHlwZXM6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0R2l0SWdub3JlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBnaXRpZ25vcmVQYXRoID0gam9pbihnZXRSb290Rm9sZGVyKCkgPz8gJycsICcuZ2l0aWdub3JlJyk7XG4gIHJldHVybiBleGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpID8gW2luY2x1ZGVJZ25vcmVGaWxlKGdpdGlnbm9yZVBhdGgpXSA6IFtdO1xufVxuXG5mdW5jdGlvbiBnZXRJbXBvcnRYQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgICAgIGVzbGludFBsdWdpbkltcG9ydFhGbGF0Q29uZmlncy50eXBlc2NyaXB0LFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MuZXJyb3JzLFxuICAgICAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3Mud2FybmluZ3NcbiAgICAgIF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L2NvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvZXh0ZW5zaW9ucyc6IFsnZXJyb3InLCAnaWdub3JlUGFja2FnZXMnXSxcbiAgICAgICAgJ2ltcG9ydC14L2ZpcnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L2ltcG9ydHMtZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbmV3bGluZS1hZnRlci1pbXBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYWJzb2x1dGUtcGF0aCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWNvbW1vbmpzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWN5Y2xlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlcHJlY2F0ZWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1keW5hbWljLXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1tdXRhYmxlLWV4cG9ydHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lc3BhY2UnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVsYXRpdmUtcGFja2FnZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVzdHJpY3RlZC1wYXRocyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1zZWxmLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby11bmFzc2lnbmVkLWltcG9ydCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICcqKi8qLmNzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNhc3MnLFxuICAgICAgICAgICAgICAnKiovKi5zY3NzJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVudXNlZC1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdpbXBvcnQteC9uby11c2VsZXNzLXBhdGgtc2VnbWVudHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8td2VicGFjay1sb2FkZXItc3ludGF4JzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc2NyaXB0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQSB0ZXN0IHJ1bnMgdW5kZXIgdGhlIHRlc3QgcnVubmVyIGluIE5vZGUgYW5kIGlzIG5ldmVyIGJ1bmRsZWQgaW50byBhbnl0aGluZyB0aGF0IHNoaXBzLlxuICAgICAgZmlsZXM6IGNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnJvb3RDb25maWdGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5Ib3VzZVBsdWdpbkNvbmZpZ3MocGFyYW1zOiBHZXRJbkhvdXNlUGx1Z2luQ29uZmlnc1BhcmFtcyk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGZpbGVzOiBwYXJhbXMuY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICBbSU5fSE9VU0VfRVNMSU5UX1BMVUdJTl9OQU1FXTogcGFyYW1zLmluSG91c2VQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL25vLWFzeW5jLWNhbGxiYWNrLXRvLXVuc2FmZS1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAvKlxuICAgICAgICAgKiBNZWFzdXJlZCBvdmVyIDMyIHBsdWdpbnMgYnVpbHQgb24gdGhpcyBjb25maWcgYmVmb3JlIGl0IHdhcyB0dXJuZWQgb24gKDIwMjYtMDktMjQpOiAyOSBoYWQgbm8gZmluZGluZyxcbiAgICAgICAgICogdGhlIG90aGVyIHRocmVlIGhhZCA4IGJldHdlZW4gdGhlbSwgZXZlcnkgb25lIGEgZ2VudWluZWx5IGRlYWQgbGluay5cbiAgICAgICAgICovXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbm8tdW5yZXNvbHZlZC1qc2RvYy1saW5rJzogJ2Vycm9yJyxcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscy9uby11bnVzZWQtcGFyYW1zLW1lbWJlcnMnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL25vLXVzZWQtdW5kZXJzY29yZS12YXJpYWJsZXMnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2gnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL3ByZWZlci1ub29wLWFzeW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscy9yZWFkb25seS1wYXJhbXMtb3B0aW9ucy1yZXN1bHQtbWVtYmVycyc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvcmVxdWlyZS1tZXRob2QtdGVtcGxhdGUnOiAnZXJyb3InLFxuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL3JlcXVpcmUtc3VwZXItY2FsbCc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZUNvbXBhdENvbmZpZ3MocGFyYW1zOiBHZXROb2RlQ29tcGF0Q29uZmlnc1BhcmFtcyk6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IHsgY29udGV4dCwgbWluaW11bU5vZGVWZXJzaW9uIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZlcnNpb25PcHRpb25zID0gbWluaW11bU5vZGVWZXJzaW9uID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdmVyc2lvbjogbWluaW11bU5vZGVWZXJzaW9uIH07XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuc291cmNlRmlsZXMsXG4gICAgICBpZ25vcmVzOiBbXG4gICAgICAgIC4uLmNvbnRleHQudGVzdEZpbGVzLFxuICAgICAgICAvLyBEZXYtb25seSB0b29saW5nIChidWlsZCwgbGludCwgdmVyc2lvbikgcnVucyB2aWEgYGppdGlgIGluIHRoZSBkZXZlbG9wZXIncyBOb2RlIGVudmlyb25tZW50IGFuZCBuZXZlciBzaGlwcywgc28gdGhlIHNoaXBwZWQgc291cmNlJ3MgTm9kZSBmbG9vciBkb2VzIG5vdCBhcHBseSB0byBpdC5cbiAgICAgICAgLi4uY29udGV4dC5zY3JpcHRGaWxlc1xuICAgICAgXSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgbjogbm9kZVBsdWdpblxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICduL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL2VzLWJ1aWx0aW5zJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgdmVyc2lvbk9wdGlvbnNcbiAgICAgICAgXSxcbiAgICAgICAgJ24vbm8tdW5zdXBwb3J0ZWQtZmVhdHVyZXMvbm9kZS1idWlsdGlucyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIGBCbG9iYCBhbmQgYEZpbGVgIGFyZSBET00gd2ViIGdsb2JhbHMgcHJlc2VudCBpbiBldmVyeSBzdXBwb3J0ZWQgYnJvd3NlciBlbmdpbmUsIGJ1dCB0aGUgcnVsZSBhbHNvIGtub3dzIHRoZW0gYXMgTm9kZSdzIGV4cGVyaW1lbnRhbCBidWlsdGlucyBhbmQgY2Fubm90IHRlbGwgd2hpY2ggaXMgbWVhbnQuIElnbm9yZSB0aGVtIGdsb2JhbGx5OyBnZW51aW5lbHkgbmV3ZXIgQVBJcyAoZS5nLiBgQWJvcnRTaWduYWwuYW55YCkgc3RheSBmbGFnZ2VkLlxuICAgICAgICAgICAgaWdub3JlczogW1xuICAgICAgICAgICAgICAnQmxvYicsXG4gICAgICAgICAgICAgICdGaWxlJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC4uLnZlcnNpb25PcHRpb25zXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGVyZmVjdGlvbmlzdENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW3tcbiAgICBleHRlbmRzOiBbcGVyZmVjdGlvbmlzdENvbmZpZ3NbJ3JlY29tbWVuZGVkLWFscGhhYmV0aWNhbCddXSxcbiAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpXG4gIH1dKTtcbn1cblxuZnVuY3Rpb24gZ2V0U3R5bGlzdGljQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBzdHlsaXN0aWMuY29uZmlncy5yZWNvbW1lbmRlZCxcbiAgICAgICAgc3R5bGlzdGljLmNvbmZpZ3MuY3VzdG9taXplKHtcbiAgICAgICAgICBhcnJvd1BhcmVuczogdHJ1ZSxcbiAgICAgICAgICBicmFjZVN0eWxlOiAnMXRicycsXG4gICAgICAgICAgY29tbWFEYW5nbGU6ICduZXZlcicsXG4gICAgICAgICAgc2VtaTogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBydWxlczoge1xuICAgICAgICAnQHN0eWxpc3RpYy9nZW5lcmF0b3Itc3Rhci1zcGFjaW5nJzogJ29mZicsXG4gICAgICAgICdAc3R5bGlzdGljL2luZGVudCc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9pbmRlbnQtYmluYXJ5LW9wcyc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9qc3gtb25lLWV4cHJlc3Npb24tcGVyLWxpbmUnOiAnb2ZmJyxcbiAgICAgICAgJ0BzdHlsaXN0aWMvbm8tZXh0cmEtc2VtaSc6ICdlcnJvcicsXG4gICAgICAgICdAc3R5bGlzdGljL29iamVjdC1jdXJseS1uZXdsaW5lJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgRXhwb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9vcGVyYXRvci1saW5lYnJlYWsnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnYmVmb3JlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgJz0nOiAnYWZ0ZXInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9xdW90ZXMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnc2luZ2xlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd1RlbXBsYXRlTGl0ZXJhbHM6ICduZXZlcidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRUc2VzbGludENvbmZpZ3MoY29udGV4dDogRXNsaW50Q29uZmlnQ29udGV4dCk6IExpbnRlci5Db25maWdbXSB7XG4gIHJldHVybiBkZWZpbmVDb25maWcoW1xuICAgIHtcbiAgICAgIGV4dGVuZHM6IFtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHJpY3RUeXBlQ2hlY2tlZCxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyIC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBfZGVmYXVsdGAgaXMgdG9vIGNvbmZ1c2luZy5cbiAgICAgICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHlsaXN0aWNUeXBlQ2hlY2tlZFxuICAgICAgXSxcbiAgICAgIGZpbGVzOiBjb250ZXh0LmFsbEZpbGVzKCksXG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgIGVjbWFGZWF0dXJlczoge1xuICAgICAgICAgICAganN4OiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9qZWN0U2VydmljZTogdHJ1ZSxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgdHNjb25maWdSb290RGlyYCBpcyBhIGB0eXBlc2NyaXB0LWVzbGludGAgcGFyc2VyIG9wdGlvbi5cbiAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGdldFJvb3RGb2xkZXIoKSA/PyAnJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbWVtYmVyLWFjY2Vzc2liaWxpdHknOiAnZXJyb3InLFxuICAgICAgICAvLyBUaGUgcnVsZSdzIG93biBgcHJvcGVydHlgIGRlZmF1bHQsIHNwZWxsZWQgYXMgYSBiYXJlIHNldmVyaXR5IHNvIGl0IHN0YXlzIHRoZSBydWxlJ3MgZGVmYXVsdCByYXRoZXIgdGhhbiBhIGNvcHkgb2YgaXQuXG4gICAgICAgIC8vIERvIE5PVCBwYXNzIGAnbWV0aG9kJ2AgZm9yIHRpZGluZXNzOiB0aGUgbWV0aG9kIGZvcm0ga2VlcHMgcGFyYW1ldGVycyBiaXZhcmlhbnQsIGRyb3BzIGByZWFkb25seWAgKHRoZSBydWxlJ3Mgb3duIGZpeGVyXG4gICAgICAgIC8vIG1lc3NhZ2Ugc2F5cyBzbyksIGFuZCBtYWtlcyBgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kYCBmaXJlIG9uIGV2ZXJ5IGZvcndhcmRlZCBiYWcgbWVtYmVyLCB3aGljaCBpcyB3aGF0IHRoZVxuICAgICAgICAvLyBgdGhpczogdm9pZGAgYm9pbGVycGxhdGUgdXNlZCB0byBwYXkgZm9yLiBEbyBOT1QgZGVsZXRlIHRoZSBsaW5lIGVpdGhlciAtIHRoZSBydWxlIGlzIGluIG5vIHByZXNldCwgc28gdGhhdCB0dXJucyBpdCBvZmYuXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbWV0aG9kLXNpZ25hdHVyZS1zdHlsZSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXMnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGNoZWNrVGhlbmFibGVzOiB0cnVlXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd0FzVGhpc1BhcmFtZXRlcjogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd2VkTmFtZXM6IFtcbiAgICAgICAgICAgICd0aGF0J1xuICAgICAgICAgIF1cbiAgICAgICAgfV0sXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgYXJnc2AgaXMgYW4gRVNMaW50IHJ1bGUgb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICBhcmdzOiAnYWxsJyxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBhcmdzSWdub3JlUGF0dGVybmAgaXMgYSBgdHlwZXNjcmlwdC1lc2xpbnRgIHJ1bGUgb3B0aW9uIG5hbWUuXG4gICAgICAgICAgICBhcmdzSWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGNhdWdodEVycm9yczogJ2FsbCcsXG4gICAgICAgICAgICBjYXVnaHRFcnJvcnNJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgZGVzdHJ1Y3R1cmVkQXJyYXlJZ25vcmVQYXR0ZXJuOiAnXl8nLFxuICAgICAgICAgICAgaWdub3JlUmVzdFNpYmxpbmdzOiB0cnVlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHZhcnNJZ25vcmVQYXR0ZXJuYCBpcyBhIGB0eXBlc2NyaXB0LWVzbGludGAgcnVsZSBvcHRpb24gbmFtZS5cbiAgICAgICAgICAgIHZhcnNJZ25vcmVQYXR0ZXJuOiAnXl8nXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1yZWFkb25seSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uJzogWydlcnJvcicsIHtcbiAgICAgICAgICBhbGxvd1ByaXZhdGVDbGFzc1Byb3BlcnR5QWNjZXNzOiB0cnVlLFxuICAgICAgICAgIGFsbG93UHJvdGVjdGVkQ2xhc3NQcm9wZXJ0eUFjY2VzczogdHJ1ZVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCc6ICdvZmYnXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICByZWFjdDoge1xuICAgICAgICAgIHZlcnNpb246ICdkZXRlY3QnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRVbmljb3JuQ29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW3VuaWNvcm4uY29uZmlncy5yZWNvbW1lbmRlZF0sXG4gICAgICBmaWxlczogY29udGV4dC5hbGxGaWxlcygpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlc2UgZW50cmllcyBhcmUgbm90IGFiYnJldmlhdGlvbnMgdG8gYmUgZXhwYW5kZWQg4oCUIHRoZXkgYXJlIGVzdGFibGlzaGVkIHZvY2FidWxhcnkgaGVyZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQnJhbmQ6IGBkZXZgLCBgbGliYCwgYHV0aWxgL2B1dGlsc2Agc3BlbGwgdGhlIHByb2R1Y3QncyBvd24gbmFtZS4gTGVmdCBvbiwgdGhlIHJ1bGUgcmV3cml0ZXNcbiAgICAgICAgICogYFJlcG9QYXRoc2AgdG8gYE9ic2lkaWFuRGV2ZWxvcG1lbnRVdGlsaXRpZXNSZXBvUGF0aHNgIGFuZCBgZ2V0TGliRGVidWdnZXJgIHRvXG4gICAgICAgICAqIGBnZXRMaWJyYXJ5RGVidWdnZXJgLCByZW5hbWluZyBleHBvcnRlZCBBUEkgYWZ0ZXIgdGhlIHBhY2thZ2UgaXQgYmVsb25ncyB0by5cbiAgICAgICAgICpcbiAgICAgICAgICogQ29udmVudGlvbjogYHBhcmFtc2AgaXMgdGhlIHBhcmFtZXRlci1iYWcgY29udmVudGlvbiwgZW5mb3JjZWQgYnlcbiAgICAgICAgICogYG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoYCwgd2hpY2ggcmVxdWlyZXMgYmFnIHR5cGVzIHRvIGJlIG5hbWVkXG4gICAgICAgICAqIGA8T3duZXI+UGFyYW1zYCAvIGA8T3duZXI+T3B0aW9uc2AuIEV4cGFuZGluZyBpdCB0byBgUGFyYW1ldGVyc2Agd291bGQgcHV0IHRoZSB0d28gcnVsZXMgaW4gZGlyZWN0XG4gICAgICAgICAqIGNvbnRyYWRpY3Rpb24gYW5kIGJyZWFrIDMwMCsgZXhwb3J0ZWQgdHlwZSBuYW1lcy5cbiAgICAgICAgICpcbiAgICAgICAgICogUmVzZXJ2ZWQgd29yZHM6IGEgYmFyZSBgYXJnc2AsIGBmbmAsIGBzdHJgLCBgbW9kYCBvciBgZXZ0YCBleHBhbmRzIHRvIGFuIGlkZW50aWZpZXIgdGhhdCBpcyBhbHJlYWR5XG4gICAgICAgICAqIHRha2VuLCBzbyB0aGUgcnVsZSBzdWdnZXN0cyBgJGFyZ3VtZW50c2AsIGAkZnVuY3Rpb25gLCBhbmQgc28gb24uIFNwZWxsIHRob3NlIGAkYXJndW1lbnRzYCAvXG4gICAgICAgICAqIGAkZnVuY3Rpb25gIGluc3RlYWQg4oCUIGEgYCRgIHByZWZpeCByZWFkcyBiZXR0ZXIgdGhhbiBhIHRyYWlsaW5nIHVuZGVyc2NvcmUuIFRoaXMgaXMgZGVsaWJlcmF0ZWx5IE5PVFxuICAgICAgICAgKiBjb25maWd1cmVkIGFzIGEgY3VzdG9tIHJlcGxhY2VtZW50OiB1bmljb3JuIHN1YnN0aXR1dGVzIGF0IHRoZSB3b3JkIGxldmVsIGluc2lkZSBjb21wb3VuZCBuYW1lcywgc29cbiAgICAgICAgICogcmVkaXJlY3RpbmcgdGhlIHdob2xlIGVudHJ5IHR1cm5zIGBhc3luY0ZuYCBpbnRvIGBhc3luYyRmdW5jdGlvbmAuIENvbXBvdW5kcyB3YW50IHRoZSBwbGFpbiBleHBhbnNpb25cbiAgICAgICAgICogKGBhc3luY0Z1bmN0aW9uYCk7IG9ubHkgdGhlIGJhcmUsIGdlbnVpbmVseS1jb2xsaWRpbmcgaWRlbnRpZmllcnMgdGFrZSB0aGUgYCRgIGZvcm0uXG4gICAgICAgICAqXG4gICAgICAgICAqIERvbWFpbiB3b3JkczogYGRvY2AvYGRvY3NgLCBgZW52YCwgYGRpc3RgIGFuZCBgc3JjYCBhcmUgdGhlIGNsZWFyZXIgc3BlbGxpbmcgaW4gdGhpcyBjb2RlYmFzZS5cbiAgICAgICAgICogRXhwYW5kaW5nIGBkb2NgIGFsc28gcGlja3MgdGhlIHdyb25nIHdvcmQg4oCUIHRoZSBgYXBpLWRvYy0qYCBtb2R1bGVzIGdlbmVyYXRlIEFQSSAqZG9jdW1lbnRhdGlvbiosIG5vdFxuICAgICAgICAgKiBkb2N1bWVudHMuIGBzcmNgIGFkZGl0aW9uYWxseSBjb3JydXB0cyBjb2RlOiB0aGUgZml4ZXIgcmVuYW1lcyB0aGUgYFNyY2AgbWVtYmVyIG9mIHRoZSBleHBvcnRlZFxuICAgICAgICAgKiBgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHNgIC8gYFJlcG9QYXRoc2AgZW51bXMgd2hpbGUgbGVhdmluZyBldmVyeSBgLlNyY2AgcmVmZXJlbmNlXG4gICAgICAgICAqIGRhbmdsaW5nLCBiZWNhdXNlIGBjaGVja1Byb3BlcnRpZXNgIGV4ZW1wdHMgcHJvcGVydHkgYWNjZXNzZXMgYnV0IG5vdCB0aGUgZGVjbGFyYXRpb25zIHRoZXkgcG9pbnQgYXQuXG4gICAgICAgICAqXG4gICAgICAgICAqIERpc2FibGluZyB0aGUgcmVwbGFjZW1lbnQgZW50cmllcyBwcm90ZWN0cyB0aGVzZSBwZXJtYW5lbnRseTsgYW4gYGFsbG93TGlzdGAgd291bGQgaW5zdGVhZCBuZWVkIGV2ZXJ5XG4gICAgICAgICAqIGFmZmVjdGVkIGlkZW50aWZpZXIgZW51bWVyYXRlZCBieSBoYW5kIGFuZCByZS1lbnVtZXJhdGVkIGZvciBldmVyeSBuZXcgb25lLlxuICAgICAgICAgKlxuICAgICAgICAgKiBOT1RFOiB0aGlzIHJ1bGUncyBhdXRvZml4IGlzIE5PVCByZWZlcmVuY2UtYXdhcmUgZm9yIGRlY2xhcmF0aW9ucyB0aGF0IHBhcnRpY2lwYXRlIGluIGEgY29udHJhY3Qg4oCUXG4gICAgICAgICAqIGVudW0gbWVtYmVycywgaW50ZXJmYWNlIG1lbWJlcnMsIGFuZCBUeXBlU2NyaXB0IHBhcmFtZXRlciBwcm9wZXJ0aWVzIChgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seVxuICAgICAgICAgKiBlbDogSFRNTEVsZW1lbnQpYCkgYXJlIHJlbmFtZWQgd2hpbGUgYHRoaXMuZWxgIGFuZCBgRW51bS5NZW1iZXJgIHJlZmVyZW5jZXMgYXJlIGxlZnQgZGFuZ2xpbmcuIEFwcGx5XG4gICAgICAgICAqIGl0cyByZXBvcnRzIGJ5IGhhbmQ7IG5ldmVyIHJ1biBgLS1maXhgIG92ZXIgaXQuXG4gICAgICAgICAqL1xuICAgICAgICAvKlxuICAgICAgICAgKiBBIGdvb2QgcnVsZSwgYnV0IGl0cyBkZWZhdWx0IHByZWZpeGVzIGZvcmNlIHVuZ3JhbW1hdGljYWwgbmFtZXM6IGBtZW1iZXJQYWdlRXhpc3RzYCB3b3VsZCBiZWNvbWVcbiAgICAgICAgICogYGlzTWVtYmVyUGFnZUV4aXN0c2AgcmF0aGVyIHRoYW4gYGRvZXNNZW1iZXJQYWdlRXhpc3RgLiBUaGVzZSBlbnRyaWVzIEVYVEVORCB0aGUgZGVmYXVsdHMgKGBpc2AsXG4gICAgICAgICAqIGBoYXNgLCBgY2FuYCwgYHNob3VsZGAsIC4uLikgcmF0aGVyIHRoYW4gcmVwbGFjaW5nIHRoZW0sIHNvIGEgYm9vbGVhbiB3aXRoIG5vIGJvb2xlYW4tcmVhZGluZyBwcmVmaXhcbiAgICAgICAgICogYXQgYWxsIGlzIHN0aWxsIHJlamVjdGVkIC0tIHRoZSBydWxlIGp1c3Qgc3RvcHMgaW5zaXN0aW5nIHRoZSBwcmVmaXggY29tZSBmcm9tIGEgc2hvcnRlciBsaXN0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGUgbGlzdCBpcyBiaWRpcmVjdGlvbmFsOiBhZGRpbmcgYSBwcmVmaXggYWxzbyBhc3NlcnRzIHRoYXQgZXZlcnl0aGluZyBuYW1lZCB3aXRoIGl0IElTIGEgYm9vbGVhbi5cbiAgICAgICAgICogYGNoZWNrYCBlYXJucyBpdHMgcGxhY2Ugb24gYm90aCBjb3VudHMsIHNpbmNlIHRoZSBoYW5kZnVsIG9mIG5vbi1ib29sZWFuIGBjaGVjaypgIG5hbWVzIGl0IHN1cmZhY2VkXG4gICAgICAgICAqIHdlcmUgZ2VudWluZWx5IG1pcy1uYW1lZCAodm9pZCBmdW5jdGlvbnMgdGhhdCB0aHJvdywgYSBwcm9iZSByZXR1cm5pbmcgYW4gSFRUUCBzdGF0dXMpLiBgdGVzdGAgd2FzXG4gICAgICAgICAqIG1lYXN1cmVkIGFuZCByZWplY3RlZDogaXQgd291bGQgdmFsaWRhdGUgZml2ZSBgdGVzdCpgIGxpbmsgcHJlZGljYXRlcyB0aGF0IHJlYWQgYmV0dGVyIGFzIGBpcypgXG4gICAgICAgICAqIGFueXdheSwgYXQgdGhlIGNvc3Qgb2YgcmVuYW1pbmcgU0NSRUFNSU5HX0NBU0UgdGVzdCBmaXh0dXJlcyBhbmQgdGhlIGB0ZXN0Q292ZXJhZ2VgL2B0ZXN0V2F0Y2hgXG4gICAgICAgICAqIHJ1bm5lcnMgdGhhdCBkZWxpYmVyYXRlbHkgbWlycm9yIHRoZSBgdGVzdDpjb3ZlcmFnZWAvYHRlc3Q6d2F0Y2hgIG5wbSBzY3JpcHRzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vY29uc2lzdGVudC1ib29sZWFuLW5hbWUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXhlczoge1xuICAgICAgICAgICAgICBhbGxvd3M6IHRydWUsXG4gICAgICAgICAgICAgIGNoZWNrOiB0cnVlLFxuICAgICAgICAgICAgICBjb250YWluczogdHJ1ZSxcbiAgICAgICAgICAgICAgZG9lczogdHJ1ZSxcbiAgICAgICAgICAgICAgaW5jbHVkZXM6IHRydWUsXG4gICAgICAgICAgICAgIG11c3Q6IHRydWUsXG4gICAgICAgICAgICAgIG5lZWRzOiB0cnVlLFxuICAgICAgICAgICAgICBzdXBwb3J0czogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVW5zYXRpc2ZpYWJsZSBhbG9uZ3NpZGUgYHBlcmZlY3Rpb25pc3Qvc29ydC1jbGFzc2VzYCwgd2hpY2ggaXMgY29uZmlndXJlZCBoZXJlIGFzIGEgcGxhaW5cbiAgICAgICAgICogYWxwaGFiZXRpY2FsIHNvcnQuIFRoaXMgcnVsZSB3YW50cyBhIGNhdGVnb3J5IG9yZGVyIChhbGwgZmllbGRzLCB0aGVuIHRoZSBjb25zdHJ1Y3RvciwgdGhlbiBhbGxcbiAgICAgICAgICogbWV0aG9kcyksIHNvIHRoZSBleHRyZW1lbHkgY29tbW9uIGBwcml2YXRlIF94YCBmaWVsZCBwYWlyZWQgd2l0aCBhIGBwdWJsaWMgZ2V0IHgoKWAgYWNjZXNzb3IgaXNcbiAgICAgICAgICogcmVqZWN0ZWQgYnkgd2hpY2hldmVyIHJ1bGUgbG9zZXM6IGFscGhhYmV0aWNhbGx5IHRoZSBhY2Nlc3NvciBwcmVjZWRlcyB0aGUgZmllbGQsIGJ5IGNhdGVnb3J5IHRoZVxuICAgICAgICAgKiBmaWVsZCBwcmVjZWRlcyB0aGUgYWNjZXNzb3IuIFVubGlrZSBgcHJlZmVyLWdsb2JhbC10aGlzYCB0aGUgY2xhc2ggcHJvZHVjZXMgbm9cbiAgICAgICAgICogYEVTTGludENpcmN1bGFyRml4ZXNXYXJuaW5nYCwgb25seSBiZWNhdXNlIHRoaXMgcnVsZSBzaGlwcyBubyBmaXhlciAtLSBib3RoIHJ1bGVzIGFyZSBgZXJyb3JgLCBzbyBub1xuICAgICAgICAgKiBhcnJhbmdlbWVudCBvZiBtZW1iZXJzIHNhdGlzZmllcyB0aGVtIGJvdGguIFRoZSBhbHBoYWJldGljYWwgc29ydCBpcyB0aGUgb25lIGFscmVhZHkgcm9sbGVkIG91dFxuICAgICAgICAgKiBhY3Jvc3MgdGhlIHBsdWdpbnMgY29uc3VtaW5nIHRoaXMgY29uZmlnLCBzbyBpdCBrZWVwcyBwcmVjZWRlbmNlLiBSZS1lbmFibGluZyB0aGlzIHJ1bGUgd291bGQgbWVhblxuICAgICAgICAgKiBnaXZpbmcgYHBlcmZlY3Rpb25pc3Qvc29ydC1jbGFzc2VzYCBhIG1hdGNoaW5nIGBncm91cHNgIG9wdGlvbiBhbmQgcmVvcmRlcmluZyBldmVyeSBjbGFzcy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2NvbnNpc3RlbnQtY2xhc3MtbWVtYmVyLW9yZGVyJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIEV2ZXJ5IHJlcG9ydCBpcyBgbmV3IEVycm9yKCkuc3RhY2tgLCB3aGljaCBjYXB0dXJlcyBhIHN0YWNrIHRyYWNlIGFuZCBuZXZlciBzdXJmYWNlcyBpdHMgbWVzc2FnZS5cbiAgICAgICAgICogVGhlIHJ1bGUgY2Fubm90IHRlbGwgdGhhdCBmcm9tIGFuIGVycm9yIHRoYXQgaXMgYWN0dWFsbHkgdGhyb3duIGF0IGEgdXNlci5cbiAgICAgICAgICpcbiAgICAgICAgICogTm8gYmFyZSBgbmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycylgIGlzIGxlZnQgZm9yIGl0IHRvIGNhdGNoOiBldmVyeSBzaXRlIG5vdyBidWlsZHMgaXRzIGFnZ3JlZ2F0ZVxuICAgICAgICAgKiB0aHJvdWdoIGBjcmVhdGVBZ2dyZWdhdGVFcnJvcmAsIHdoaWNoIGdpdmVzIGl0IGEgbWVzc2FnZSB0aGF0IG5hbWVzIHRoZSBmYWlsdXJlLiBBbiBlbXB0eSBvbmUgaXNcbiAgICAgICAgICogbG9zc3kgaW4gYSB3YXkgdGhhdCBvbmx5IHNob3dzIHVwIG91dHNpZGUgdGhpcyBsaWJyYXJ5IOKAlCBgZXJyb3JUb1N0cmluZ2Agd2Fsa3MgYGVycm9yc2AgYW5kIHByaW50c1xuICAgICAgICAgKiB0aGUgd2hvbGUgdHJlZSwgd2hpbGUgZXZlcnl0aGluZyByZWFkaW5nIGBtZXNzYWdlYCBzZWVzIGFuIGVtcHR5IHNlbnRlbmNlLiBUaGUgaGVscGVyIGxpdmVzIGluIGl0c1xuICAgICAgICAgKiBvd24gbGVhZiBgYWdncmVnYXRlLWVycm9yLnRzYCByYXRoZXIgdGhhbiBpbiBgZXJyb3IudHNgIHByZWNpc2VseSBzbyB0aGF0IGBkaXNwb3NhYmxlLnRzYCBjYW4gcmVhY2hcbiAgICAgICAgICogaXQsIHdoaWNoIGl0IGNvdWxkIG5vdCB3aGlsZSB0aGUgb25seSBjb3B5IHNhdCBpbiBhIG1vZHVsZSBpbXBvcnRpbmcgaXQgYmFjay5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL2Vycm9yLW1lc3NhZ2UnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIGRlZmF1bHQgc3R5bGUgZm9yIGBub2RlOnBhdGhgIGlzIGEgZGVmYXVsdCBpbXBvcnQsIGJ1dCB0aGlzIGNvZGViYXNlIGltcG9ydHMgaXRzIG1lbWJlcnMgYnkgbmFtZVxuICAgICAgICAgKiB0aHJvdWdob3V0LCBjb25zaXN0ZW50bHkgd2l0aCBldmVyeSBvdGhlciBgbm9kZTpgIG1vZHVsZSBpdCB1c2VzLiBDb25maWd1cmUgdGhlIHJ1bGUgdG8gZW5mb3JjZSB0aGVcbiAgICAgICAgICogc3R5bGUgYWN0dWFsbHkgaW4gdXNlIHJhdGhlciB0aGFuIGFubm90YXRlIDE3IHNpdGVzIHRoYXQgYXJlIG5vdCBnb2luZyB0byBjaGFuZ2UuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9pbXBvcnQtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdHlsZXM6IHtcbiAgICAgICAgICAgICAgLy8gS2V5ZWQgYnkgdGhlIFVOUFJFRklYRUQgbW9kdWxlIG5hbWU6IHRoZSBydWxlJ3Mgb3duIHRhYmxlIHVzZXMgYHBhdGhgLCBzbyBhIGBub2RlOnBhdGhgIGtleSBuZXZlciBtYXRjaGVzLlxuICAgICAgICAgICAgICBwYXRoOiB7XG4gICAgICAgICAgICAgICAgbmFtZWQ6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUgY291bnRzIGNvbnN0cnVjdG9yIGNhbGxzIGFuZCBjb3VudHMgdGhyb3VnaCBhcnJheSBhbmQgb2JqZWN0IGxpdGVyYWxzLCBzbyBpdHMgZGVmYXVsdCBvZiAzXG4gICAgICAgICAqIHJlcG9ydHMgb3JkaW5hcnkgY29tcG9zaXRpb246IGBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2Jvb20nKSlgIGluc2lkZSBhbiBhc3NlcnRpb24sIGEgdGVzdCBmaXh0dXJlXG4gICAgICAgICAqIGJ1aWx0IGFzIGBjcmVhdGVUeXBlSW5mbyh7IG1ldGhvZHM6IFtjcmVhdGVNZW1iZXJJbmZvKHsgLi4uIH0pXSB9KWAsIGB0aGlzLmFkZENoaWxkKG5ldyBDKHRoaXMuYXBwKSlgXG4gICAgICAgICAqIGluc2lkZSBhIHBhcmFtcyBiYWcuIFJhaXNpbmcgdGhlIGxpbWl0IGJ5IG9uZSBjbGVhcnMgZXZlcnkgcmVwb3J0IGhlcmUgd2hpbGUgc3RpbGwgY2F0Y2hpbmcgdGhlXG4gICAgICAgICAqIGdlbnVpbmVseSB1bnJlYWRhYmxlIG5lc3RpbmcgdGhlIHJ1bGUgaXMgZm9yLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbWF4LW5lc3RlZC1jYWxscyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1heDogNFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ3VuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICogUHJvcGVydHkgYW5kIG1lbWJlciBuYW1lcyBhcmUgY2hlY2tlZCB0b28sIHNvIGFuIGFiYnJldmlhdGlvbiBjYW5ub3Qgc3Vydml2ZSBieSBsaXZpbmcgb24gYW5cbiAgICAgICAgICAgICAqIG9iamVjdCByYXRoZXIgdGhhbiBpbiBhIHZhcmlhYmxlLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFRoZSBydWxlIGlzIHB1cmVseSBzeW50YWN0aWM6IGl0IGNhbm5vdCB0ZWxsIGEgbWVtYmVyIHdlIGRlY2xhcmUgZnJvbSBvbmUgYmVsb25naW5nIHRvIGFcbiAgICAgICAgICAgICAqIGRlcGVuZGVuY3ksIGFuZCBpdCBvZmZlcnMgbm8gYXV0b2ZpeCBmb3IgcHJvcGVydGllcyAobWVhc3VyZWQ6IDY4MSBoaXRzLCAwIHdpdGggYSBmaXhlcikuIFNpdGVzXG4gICAgICAgICAgICAgKiBuYW1pbmcgYSBmb3JlaWduIG1lbWJlciAtLSBgRG9tRWxlbWVudEluZm8uYXR0cmAsIGBFdmFsSW5PYnNpZGlhblBhcmFtcy5mbmAsIGFuZCB0aGUgbGlrZSAtLSBhcmVcbiAgICAgICAgICAgICAqIHRoZXJlZm9yZSBpbXBvc3NpYmxlIHRvIHNhdGlzZnkgYW5kIGNhcnJ5IGFuIGlubGluZSBkaXNhYmxlLCBzbyBldmVyeXRoaW5nIHN0aWxsIHJlcG9ydGVkIGlzIG91cnNcbiAgICAgICAgICAgICAqIHRvIHJlbmFtZS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBXaGVuIHJlbmFtaW5nIHRoZSByZXN0LCBub3RlIHRoYXQgYHRzY2AgYWxvbmUgaXMgTk9UIGEgc3VmZmljaWVudCBnYXRlOiBvYmplY3QtbGl0ZXJhbCBrZXlzIGluXG4gICAgICAgICAgICAgKiBsb29zZWx5IHR5cGVkIHBvc2l0aW9ucyAoYGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoW3sgYmF0Y2hlZEFyZ3VtZW50czogLi4uIH1dKWApIGFyZSBub3QgY29udGV4dHVhbGx5XG4gICAgICAgICAgICAgKiB0eXBlZCwgc28gYSByZW5hbWUgbGVhdmVzIHRoZW0gYmVoaW5kIGFuZCBicmVha3MgdGhlIHN1aXRlIHdoZXJlIHRoZSB0eXBlIGNoZWNrZXIgc2VlcyBub3RoaW5nLlxuICAgICAgICAgICAgICogUmVuYW1lIGluIHNtYWxsIGJhdGNoZXMgd2l0aCB0aGUgZnVsbCB0ZXN0IHJ1biBpbiB0aGUgbG9vcC5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUaGUgZGlzYWJsZWQgcmVwbGFjZW1lbnRzIGJlbG93IGFyZSBlc3RhYmxpc2hlZCB2b2NhYnVsYXJ5IHJhdGhlciB0aGFuIGFiYnJldmlhdGlvbnMgdG8gYmVcbiAgICAgICAgICAgICAqIGV4cGFuZGVkLiBgZWxgIGlzIGV4ZW1wdCBiZWNhdXNlIE9ic2lkaWFuIG5hbWVzIGV2ZXJ5IGVsZW1lbnQgbWVtYmVyIHRoYXQgd2F5IC0tIGBjb250YWluZXJFbGAsXG4gICAgICAgICAgICAgKiBgY29udGVudEVsYCwgYGlucHV0RWxgLCBgc2VsZWN0RWxgIC0tIHNvIGV4cGFuZGluZyBvdXJzIHRvIGAqRWxlbWVudGAgd291bGQgbGVhdmUgb3VyIGNvbXBvbmVudHNcbiAgICAgICAgICAgICAqIHJlYWRpbmcgaW5jb25zaXN0ZW50bHkgYmVzaWRlIHRoZSBPYnNpZGlhbiBvbmVzIHRoZXkgc2l0IG5leHQgdG8uIERpc2FibGluZyB0aGUgcmVwbGFjZW1lbnQgYWxzb1xuICAgICAgICAgICAgICogY292ZXJzIGNvbXBvdW5kIG5hbWVzLCB3aGljaCBpcyA3MiBzaXRlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBlYWNoIG5lZWQgYW4gaW5saW5lIGRpc2FibGUuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogYHJlZmAgaXMgZXhlbXB0IGZvciB0aGUgc2FtZSByZWFzb246IGBBc3luY0V2ZW50UmVmYCBpcyB0aGUgYXN5bmMgY291bnRlcnBhcnQgb2YgT2JzaWRpYW4nc1xuICAgICAgICAgICAgICogYEV2ZW50UmVmYCwgaGFuZGVkIHRvIHRoZSBzYW1lIGBvZmZyZWZgIC8gYHJlZ2lzdGVyRXZlbnRgIHNoYXBlcywgc28gdGhlIHR3byBuYW1lcyBoYXZlIHRvIG1hdGNoXG4gICAgICAgICAgICAgKiB0byByZWFkIGFzIGEgcGFpci5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2hlY2tQcm9wZXJ0aWVzOiB0cnVlLFxuICAgICAgICAgICAgcmVwbGFjZW1lbnRzOiB7XG4gICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAqIGBhdHRyYCAvIGBhdHRyc2AgYXJlIE9ic2lkaWFuJ3Mgb3duOiBgY3JlYXRlRWwoJ2EnLCB7IGF0dHI6IHsgLi4uIH0gfSlgIHRha2VzIHRoZW0gYnkgdGhvc2VcbiAgICAgICAgICAgICAgICogbmFtZXMgb24gYERvbUVsZW1lbnRJbmZvYCwgc28gb3VycyBoYXZlIHRvIG1hdGNoIHRvIGJlIHBhc3NlZCB0aHJvdWdoLiBgcHJvcHNgIGlzIHRoZVxuICAgICAgICAgICAgICAgKiB1bml2ZXJzYWwgY29tcG9uZW50IHZvY2FidWxhcnksIGV4ZW1wdCBmb3IgdGhlIHNhbWUgcmVhc29uIGBwYXJhbXNgIGlzLlxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgYXR0cjogZmFsc2UsXG4gICAgICAgICAgICAgIGF0dHJzOiBmYWxzZSxcbiAgICAgICAgICAgICAgZGV2OiBmYWxzZSxcbiAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICogRXZlcnkgYGRpcmAgaGVyZSBpcyBhIGZpbGVzeXN0ZW0gZGlyZWN0b3J5LCBuZXZlciBhIGRpcmVjdGlvbiwgc28gdGhlIHJ1bGUgaXMgbmFycm93ZWQgdG8gdGhlXG4gICAgICAgICAgICAgICAqIG9uZSBleHBhbnNpb24gcmF0aGVyIHRoYW4gbGVmdCBvZmZlcmluZyBhIGNob2ljZSBpdCBjYW5ub3QgbWFrZS5cbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIFRoaXMgaXMgdGhlIHJ1bGUncyBvd24gcmVwbGFjZW1lbnQga2V5LCB3aGljaCBoYXMgdG8gYmUgc3BlbGxlZCB0aGUgd2F5IHRoZSBydWxlIHJlYWRzIGl0LlxuICAgICAgICAgICAgICBkaXI6IHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRpcmVjdG9yeTogdHJ1ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgZG9jOiBmYWxzZSxcbiAgICAgICAgICAgICAgZG9jczogZmFsc2UsXG4gICAgICAgICAgICAgIGVsOiBmYWxzZSxcbiAgICAgICAgICAgICAgZW52OiBmYWxzZSxcbiAgICAgICAgICAgICAgbGliOiBmYWxzZSxcbiAgICAgICAgICAgICAgcGFyYW1zOiBmYWxzZSxcbiAgICAgICAgICAgICAgcHJvcHM6IGZhbHNlLFxuICAgICAgICAgICAgICByZWY6IGZhbHNlLFxuICAgICAgICAgICAgICByZWZzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc3JjOiBmYWxzZSxcbiAgICAgICAgICAgICAgdXRpbDogZmFsc2UsXG4gICAgICAgICAgICAgIHV0aWxzOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIG5leHQgc2l4IHJ1bGVzIGFsbCBzdWdnZXN0IGFuIEFQSSBuZXdlciB0aGFuIHRoaXMgcHJvamVjdCdzIGBsaWJgIChgRVMyMDIyYCksIHNvIGZvbGxvd2luZyBhbnkgb2ZcbiAgICAgICAgICogdGhlbSBmYWlscyB0byBjb21waWxlLiBUaGUgT2JzaWRpYW4gcGx1Z2luIGxheWVyIHRha2VzIHRoZSBmbG9vciBmcm9tIHRoZSBvbGRlc3QgT2JzaWRpYW4gaW5zdGFsbGVyIHRoYXRcbiAgICAgICAgICogY2FuIHN0aWxsIHJ1biBjdXJyZW50IE9ic2lkaWFuLCB3aGljaCByZWNvcmRzIGBlY21hU2NyaXB0VmVyc2lvbjogXCJFUzIwMjJcImAuIEVhY2ggaXMgb2ZmIGF0IHRoZSBjb25maWdcbiAgICAgICAgICogbGV2ZWwgcmF0aGVyIHRoYW4gYW5ub3RhdGVkIHBlciBzaXRlLCBiZWNhdXNlIG5vbmUgY2FuIGV2ZXIgYmUgc2F0aXNmaWVkIHdoaWxlIHRoYXQgZmxvb3IgaG9sZHMuIFJldmlzaXRcbiAgICAgICAgICogdGhlbSB0b2dldGhlciBpZiB0aGUgZmxvb3IgbW92ZXMuXG4gICAgICAgICAqXG4gICAgICAgICAqIGBBcnJheSN0b1JldmVyc2VkYCBhbmQgYEFycmF5I3RvU29ydGVkYCBhcmUgRVMyMDIzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tYXJyYXktcmV2ZXJzZSc6ICdvZmYnLFxuICAgICAgICAndW5pY29ybi9uby1hcnJheS1zb3J0JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIGBjb250aW51ZWAgaW5zaWRlIGEgbmVzdGVkIGxvb3AgaXMgb3JkaW5hcnksIHJlYWRhYmxlIGNvbnRyb2wgZmxvdyBoZXJlLiBUaGUgcnVsZSdzIHJlbWVkeSBpcyB0b1xuICAgICAgICAgKiBleHRyYWN0IGV2ZXJ5IHN1Y2ggbG9vcCBpbnRvIGl0cyBvd24gZnVuY3Rpb24sIHdoaWNoIHNwcmVhZHMgb25lIGNvaGVyZW50IHRyYXZlcnNhbCBhY3Jvc3MgdHdvXG4gICAgICAgICAqIGRlY2xhcmF0aW9ucyB3aXRob3V0IG1ha2luZyBhbnl0aGluZyBjbGVhcmVyLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tYnJlYWstaW4tbmVzdGVkLWxvb3AnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUgY2Fubm90IHNlZSB0aHJvdWdoIGEgaG9pc3RlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbiwgc28gaXQgdHJlYXRzIGEgYmluZGluZyB0aGF0IGEgbmVzdGVkXG4gICAgICAgICAqIGZ1bmN0aW9uIGFscmVhZHkgcmVhZCBhcyB1bnVzZWQgYmVmb3JlIHRoZSBleGl0LiBJbiBgcnVuV2l0aFRpbWVvdXRgIHRoYXQgaXMgYGxldCBpc0NvbXBsZXRlZGAsIHdoaWNoXG4gICAgICAgICAqIGBydW4oKWAgYW5kIGBpbm5lclRpbWVvdXQoKWAgYm90aCB0b3VjaCB3aGlsZSB0aGUgYFByb21pc2UucmFjZWAgYWJvdmUgdGhlIGV4aXQgaXMgc3RpbGwgcnVubmluZyAtLVxuICAgICAgICAgKiBtb3ZpbmcgdGhlIGRlY2xhcmF0aW9uIHBhc3QgdGhlIGV4aXQsIGFzIHRoZSBydWxlIGFza3MsIHdvdWxkIGxlYXZlIHRob3NlIHJlYWRzIGluIHRoZSB0ZW1wb3JhbCBkZWFkXG4gICAgICAgICAqIHpvbmUuIEl0cyBvd24gZml4ZXIgZGVjbGluZXMgYWxsIDE1IHNpdGVzIGZvciB0aGUgc2FtZSByZWFzb24gaXQgY2Fubm90IHByb3ZlIHRoZW0gc2FmZSwgc28gZm9sbG93aW5nXG4gICAgICAgICAqIHRoZSBydWxlIGlzIGVudGlyZWx5IG1hbnVhbC4gV2hhdCBpcyBsZWZ0IGFmdGVyIHRoYXQgaXMgcGxhY2VtZW50IHN0eWxlOiB0aGUgcmVtYWluaW5nIHJlcG9ydHMgYXJlXG4gICAgICAgICAqIG5hbWVkIGNvbnN0YW50cyBhbmQgZGVyaXZlZCBwYXRocyBkZWxpYmVyYXRlbHkgZ3JvdXBlZCBhdCB0aGUgdG9wIG9mIGEgZnVuY3Rpb24sIGFuZCBwdXNoaW5nIGVhY2ggb25lXG4gICAgICAgICAqIGJlbG93IHRoZSBmaXJzdCBndWFyZCBzcGxpdHMgYSBjb2hlc2l2ZSBibG9jayB0byBubyBiZW5lZml0LiBUaGUgdGhyZWUgc2l0ZXMgd2hlcmUgZGVmZXJyaW5nIHNraXBwZWRcbiAgICAgICAgICogcmVhbCB3b3JrIChhIHNlY29uZCBgY29tcHV0ZU5lZWRlZEV4cG9zdXJlYCB3YWxrLCBhIGB0b0pzb25gIHNlcmlhbGl6YXRpb24sIGFuIGBlbnN1cmVMZkVuZGluZ3NgIHBhc3MpXG4gICAgICAgICAqIHdlcmUgYXBwbGllZCBieSBoYW5kIGluc3RlYWQuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1kZWNsYXJhdGlvbnMtYmVmb3JlLWVhcmx5LWV4aXQnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogQXNzaWduaW5nIG9udG8gdGhlIGdsb2JhbCBvYmplY3QgaXMgaG93IHRoaXMgbGlicmFyeSBpbnN0YWxscyBhbmQgcmVzdG9yZXMgdGVzdCBkb3VibGVzLCBhbmQgaG93IGFcbiAgICAgICAgICogZmV3IE9ic2lkaWFuLXJ1bnRpbWUgZ2xvYmFscyBhcmUgcmVhY2hlZCBhdCBhbGwuIFRoZSBydWxlIGNhbm5vdCBzZXBhcmF0ZSB0aGF0IGZyb20gYW4gYWNjaWRlbnRhbFxuICAgICAgICAgKiBnbG9iYWwgd3JpdGUsIGFuZCBpdCBoYXMgbm8gZml4ZXIuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby1nbG9iYWwtb2JqZWN0LXByb3BlcnR5LWFzc2lnbm1lbnQnOiAnb2ZmJyxcbiAgICAgICAgLy8gYG51bGxgIGlzIGxvYWQtYmVhcmluZyBoZXJlOiBhbiBvcHRpb25hbCBjb2xsYWJvcmF0b3IgaXMgbW9kZWxsZWQgYXMgYSByZXF1aXJlZCBgbnVsbCB8IFhgIGZpZWxkIHJhdGhlciB0aGFuIGFuIG9wdGlvbmFsIGBYYCwgc28gYG51bGxgIGFuZCBgdW5kZWZpbmVkYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZS5cbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHJ1bGUncyBsaXN0IG9mIHN0YW5kYXJkIGBTeW1ib2xgIHByb3BlcnRpZXMgcHJlZGF0ZXMgZXhwbGljaXQgcmVzb3VyY2UgbWFuYWdlbWVudCwgc28gaXQgcmVwb3J0c1xuICAgICAgICAgKiBgU3ltYm9sLmRpc3Bvc2VgIGFuZCBgU3ltYm9sLmFzeW5jRGlzcG9zZWAgYXMgbm9uLXN0YW5kYXJkLiBCb3RoIGFyZSBwYXJ0IG9mIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXNcbiAgICAgICAgICogbGlicmFyeSBpcyBidWlsdCBvbiAtLSAxMTQgZmlsZXMgaGVyZSB1c2UgYHVzaW5nYCBkZWNsYXJhdGlvbnMsIGFuZCB0aGUgZGlzcG9zYWJsZSB0eXBlcyBhcmUgYVxuICAgICAgICAgKiBwdWJsaWMgcGFydCBvZiBpdHMgc3VyZmFjZSAtLSBzbyBhbGwgNTkgcmVwb3J0cyBhcmUgdGhlIHJ1bGUgYmVpbmcgb3V0IG9mIGRhdGUgcmF0aGVyIHRoYW4gYSBmaW5kaW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tbm9uc3RhbmRhcmQtYnVpbHRpbi1wcm9wZXJ0aWVzJzogJ29mZicsXG4gICAgICAgICd1bmljb3JuL25vLW51bGwnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVHlwZVNjcmlwdCdzIGV4cGxpY2l0IGB0aGlzYCBwYXJhbWV0ZXIgKGBmdW5jdGlvbiBnZXQodGhpczogSG9sZGVyKSB7IHJldHVybiB0aGlzLnZhbHVlOyB9YCkgbWFrZXNcbiAgICAgICAgICogYHRoaXNgIG91dHNpZGUgYSBjbGFzcyBib3RoIGxlZ2FsIGFuZCB0eXBlLWNoZWNrZWQsIGJ1dCB0aGUgcnVsZSBpcyBzeW50YWN0aWMgYW5kIGZsYWdzIGl0IGlkZW50aWNhbGx5XG4gICAgICAgICAqIHRvIGEgZ2VudWluZWx5IHVuYm91bmQgYHRoaXNgLiBJdCBoYXMgbm8gb3B0aW9ucyAoYHNjaGVtYTogW11gKSBhbmQgbm8gZml4ZXIsIHNvIHRoZXJlIGlzIG5vIHdheSB0b1xuICAgICAgICAgKiBzZXBhcmF0ZSB0aGUgaWRpb20gZnJvbSB0aGUgYnVnIGl0IHRhcmdldHMuIE1vc3QgaGl0cyBoZXJlIHdlcmUgdHlwZWQgYHRoaXNgIHBhcmFtZXRlcnMgYW5kIHRlc3RzIHRoYXRcbiAgICAgICAgICogZGVsaWJlcmF0ZWx5IGFzc2VydCBgdGhpc2AgYmluZGluZy5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLXRoaXMtb3V0c2lkZS1vZi1jbGFzcyc6ICdvZmYnLFxuICAgICAgICAvLyBTYW1lIGNhbGwgYXMgaXRzIG9iamVjdCBjb3VudGVycGFydCBhYm92ZTogdGhlIGRlc3RydWN0dXJpbmcgZGVwdGggZmxhZ2dlZCBoZXJlIGlzIGRlbGliZXJhdGUgYW5kIHJlYWRzIHdlbGwuXG4gICAgICAgICd1bmljb3JuL25vLXVucmVhZGFibGUtYXJyYXktZGVzdHJ1Y3R1cmluZyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBUaGUgcmVwb3J0cyBhcmUgYWxsIGBmb3IgKGNvbnN0IGZpbGUgb2YgYXdhaXQgcmVhZGRpclBvc2l4KC4uLikpYCwgd2hpY2ggcmVhZHMgZXhhY3RseSBhcyBpbnRlbmRlZC5cbiAgICAgICAgICogSG9pc3RpbmcgdGhlIGF3YWl0ZWQgY2FsbCBpbnRvIGEgdmFyaWFibGUgbmFtZWQgYWZ0ZXIgdGhlIGxvb3AncyBvd24gaXRlcmFibGUgYWRkcyBhIGxpbmUgYW5kIGEgbmFtZVxuICAgICAgICAgKiB3aXRob3V0IGFkZGluZyBpbmZvcm1hdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL25vLXVucmVhZGFibGUtZm9yLW9mLWV4cHJlc3Npb24nOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIG5lc3RlZCBkZXN0cnVjdHVyaW5nIHRoaXMgZmxhZ3MgaXMgZGVsaWJlcmF0ZSBoZXJlIGFuZCByZWFkcyB3ZWxsOiBwdWxsaW5nIGEgbWVtYmVyIG91dCBvZiBhXG4gICAgICAgICAqIHBhcmFtcyBiYWcgaW4gb25lIHN0ZXAgc3RhdGVzIHdoZXJlIHRoZSB2YWx1ZSBjb21lcyBmcm9tLCB3aGljaCBhIHNlY29uZCBpbnRlcm1lZGlhdGUgYmluZGluZyBvbmx5XG4gICAgICAgICAqIG9ic2N1cmVzLiBUaGUgcnVsZSB0YWtlcyBubyBvcHRpb25zLCBzbyB0aGVyZSBpcyBubyB3YXkgdG8ga2VlcCB0aGUgZGVwdGggbGltaXQgaXQgaXMgcmVhbGx5IGFmdGVyXG4gICAgICAgICAqIHdoaWxlIGFsbG93aW5nIHRoZSBzaGFwZSBpbiB1c2UuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9uby11bnJlYWRhYmxlLW9iamVjdC1kZXN0cnVjdHVyaW5nJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIGBjaGVja0FyZ3VtZW50c2Agc3RyaXBzIGB1bmRlZmluZWRgIGFyZ3VtZW50cywgd2hpY2ggc2hpZnRzIHRoZSByZW1haW5pbmcgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50b1xuICAgICAgICAgKiB0aGUgd3Jvbmcgc2xvdHM7IGBjaGVja0Fycm93RnVuY3Rpb25Cb2R5YCByZW1vdmVzIGByZXR1cm4gdW5kZWZpbmVkO2AgZnJvbSBhcnJvdyBib2RpZXMgd2hvc2Ugb3RoZXJcbiAgICAgICAgICogYnJhbmNoZXMgZG8gcmV0dXJuIGEgdmFsdWUsIHdoaWNoIHZpb2xhdGVzIHRoZSBgbm9JbXBsaWNpdFJldHVybnNgIHNldHRpbmcgdGhpcyBwcm9qZWN0IGNvbXBpbGVzIHdpdGguXG4gICAgICAgICAqIFRoZSBydWxlJ3MgcmVtYWluaW5nIGNhc2VzIChhIGJhcmUgYHVuZGVmaW5lZGAgaW5pdGlhbGl6ZXIsIGByZXR1cm4gdW5kZWZpbmVkO2AgaW4gYSB2b2lkIGZ1bmN0aW9uKVxuICAgICAgICAgKiBhcmUgc3RpbGwgd29ydGggaGF2aW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tdXNlbGVzcy11bmRlZmluZWQnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjaGVja0FyZ3VtZW50czogZmFsc2UsXG4gICAgICAgICAgICBjaGVja0Fycm93RnVuY3Rpb25Cb2R5OiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgLy8gYEFycmF5LmZyb21Bc3luY2AgaXMgRVMyMDI0LiBTZWUgdGhlIEVTMjAyMiBmbG9vciBub3RlIGFib3ZlLlxuICAgICAgICAndW5pY29ybi9wcmVmZXItYXJyYXktZnJvbS1hc3luYyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBFdmVyeSBoaXQgaGVyZSBpcyBhIHByb21pc2UgZGVsaWJlcmF0ZWx5IE5PVCBhd2FpdGVkLCBhbmQgYGF3YWl0YCB3b3VsZCBjaGFuZ2Ugd2hhdCB0aGUgY29kZSBkb2VzLlxuICAgICAgICAgKiBgcmVzdWx0LmNhdGNoKHRocm93RGVsYXllZClgIGluIGBhc3luYy1ldmVudHMudHNgIGlzIHRoZSBmaXJlLWFuZC1mb3JnZXQgZXJyb3IgcGF0aCB0aGUgbW9kdWxlIGlzXG4gICAgICAgICAqIGJ1aWx0IG9uOyB0aGUgcmVzdCBob2xkIGFuIHVucmVzb2x2ZWQgcHJvbWlzZSBhbmQgYXNzZXJ0IHRoZSBjYWxsYmFjayBoYXMgbm90IGZpcmVkIHlldCwgc28gYXdhaXRpbmdcbiAgICAgICAgICogd291bGQgaGFuZyB0aGUgdGVzdCBvciBpbnZlcnQgd2hhdCBpdCBwcm92ZXMuIFRoZSBydWxlIGNhbm5vdCB0ZWxsIGEgZm9yZ290dGVuIGBhd2FpdGAgZnJvbSBhblxuICAgICAgICAgKiBpbnRlbnRpb25hbCBvbmUsIGFuZCB0aGlzIGNvZGViYXNlIHNjaGVkdWxlcyBmaXJlLWFuZC1mb3JnZXQgd29yayBhcyBhIGNvcmUgcGF0dGVybi5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3ByZWZlci1hd2FpdCc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBBbGwgdGhyZWUgcmVwb3J0cyByZWFkIEhUTUwgb3V0IChgY29uc3QgaHRtbCA9IGVsLmlubmVySFRNTGApLCBuZXZlciB3cml0ZSBpdCwgYW5kIGZvciBhIHJlYWRcbiAgICAgICAgICogYGdldEhUTUwoKWAgcmV0dXJucyB0aGUgc2FtZSBzdHJpbmcuIFdoYXQgaXQgYWRkcyBpcyBzaGFkb3ctcm9vdCBzZXJpYWxpemF0aW9uIG9wdGlvbnMgdGhhdCBub3RoaW5nXG4gICAgICAgICAqIGhlcmUgYXNrcyBmb3IsIGluIGV4Y2hhbmdlIGZvciBhIG11Y2ggbmV3ZXIgcGxhdGZvcm0gZmxvb3IgdGhhbiBgaW5uZXJIVE1MYCAtLSBhIGJhZCB0cmFkZSBmb3IgYVxuICAgICAgICAgKiBsaWJyYXJ5IHRoYXQgaGFzIHRvIHJ1biBvbiB3aGF0ZXZlciBDaHJvbWl1bSB0aGUgaW5zdGFsbGVkIE9ic2lkaWFuIHNoaXBzLiBUaGUgcnVsZSdzIG90aGVyIGhhbGYsXG4gICAgICAgICAqIHJld3JpdGluZyB3cml0ZXMgdG8gdGhlIHNhbml0aXppbmcgYHNldEhUTUwoKWAsIHdvdWxkIGJlIHdvcnRoIGhhdmluZzsgaXQganVzdCBuZXZlciBmaXJlcyBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWRvbS1ub2RlLWh0bWwtbWV0aG9kcyc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBJdGVyYXRvciBoZWxwZXJzIChgSXRlcmF0b3Ijc29tZWAgYW5kIGZyaWVuZHMpIGFyZSBFUzIwMjUsIHNvIHRoaXMgYmVsb25ncyB3aXRoIGBuby1hcnJheS1yZXZlcnNlYCBhbmRcbiAgICAgICAgICogYG5vLWFycmF5LXNvcnRgIGFib3ZlOiB0aGUgc2FtZSBFUzIwMjIgZmxvb3IgcnVsZXMgaXQgb3V0LCBhbmQgdGhlIHNhbWUgbm90ZSBhcHBsaWVzIC0tIHJldmlzaXQgdGhlbVxuICAgICAgICAgKiB0b2dldGhlciBpZiB0aGF0IGZsb29yIG1vdmVzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWl0ZXJhdG9yLWhlbHBlcnMnOiAnb2ZmJyxcbiAgICAgICAgLy8gYEl0ZXJhdG9yI3RvQXJyYXlgIGlzIEVTMjAyNS4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLWl0ZXJhdG9yLXRvLWFycmF5JzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBzdWdnZXN0ZWQgcmVwbGFjZW1lbnQgaXMgYE1hdGgudHJ1bmMoTnVtYmVyKHgpKWAsIHdoaWNoIGlzIGxvbmdlciB0aGFuIGBwYXJzZUludCh4LCAxMClgIGFuZCBub1xuICAgICAgICAgKiBjbGVhcmVyLCBhbmQgaXQgaXMgbm90IHRoZSBzYW1lIGZ1bmN0aW9uOiBgcGFyc2VJbnRgIHN0b3BzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgdGhhdCBjYW5ub3QgYmUgcGFydFxuICAgICAgICAgKiBvZiB0aGUgbnVtYmVyLCBzbyBgJzEyYWJjJ2AgcGFyc2VzIHRvIDEyIHdoZXJlIGBOdW1iZXJgIHlpZWxkcyBgTmFOYC4gVHdvIG9mIHRoZSByZXBvcnRzIHJlYWQgdXNlclxuICAgICAgICAgKiBpbnB1dCB0aHJvdWdoIHRoYXQgZGlmZmVyZW5jZSAtLSB0aGUgcGFnZS1qdW1wIGJveCBpbiB0aGUgRGF0YXZpZXcgaGVscGVyLCBhbmRcbiAgICAgICAgICogYE51bWJlckNvbXBvbmVudC52YWx1ZUZyb21TdHJpbmdgLCB3aG9zZSBsZW5pZW50IHBhcnNlIGlzIHBhcnQgb2YgYSBwdWJsaXNoZWQgY29tcG9uZW50J3MgYmVoYXZpb3IuXG4gICAgICAgICAqIFRoZSByZXN0IHBhcnNlIG1hY2hpbmUtZ2VuZXJhdGVkIHN0cmluZ3MsIHdoZXJlIHRoZSB0d28gYWdyZWUgYnV0IHRoZSBzaG9ydGVyIHNwZWxsaW5nIHN0aWxsIHdpbnMuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItbnVtYmVyLWNvZXJjaW9uJzogJ29mZicsXG4gICAgICAgIC8vIGBQcm9taXNlLndpdGhSZXNvbHZlcnNgIGlzIEVTMjAyNC4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXByb21pc2Utd2l0aC1yZXNvbHZlcnMnOiAnb2ZmJyxcbiAgICAgICAgLy8gYFNldCN1bmlvbmAgYW5kIGZyaWVuZHMgYXJlIEVTMjAyNS4gU2VlIHRoZSBFUzIwMjIgZmxvb3Igbm90ZSBhYm92ZS5cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXNldC1tZXRob2RzJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIFRoZSBydWxlIHJhbmtzIG9wZXJhbmRzIGJ5IHN5bnRhY3RpYyBzaGFwZSwgbm90IGNvc3QsIHNvIGV2ZXJ5IHJlcG9ydCBoZXJlIHN3YXBzIG9uZSBwcm9wZXJ0eSByZWFkXG4gICAgICAgICAqIGFoZWFkIG9mIGFub3RoZXIgYW5kIGJ1eXMgbm90aGluZy4gSXRzIG93biBtZXNzYWdlIGNvbmNlZGVzIGl0IGNhbm5vdCBjaGVjayB0aGUgcGFydCB0aGF0IG1hdHRlcnMgLS1cbiAgICAgICAgICogXCJhZnRlciB2ZXJpZnlpbmcgc2hvcnQtY2lyY3VpdCBiZWhhdmlvclwiIC0tIGFuZCBvbmUgcmVwb3J0IHNpdHMgZGlyZWN0bHkgdW5kZXIgYSBjb21tZW50IHJlY29yZGluZ1xuICAgICAgICAgKiB0aGF0IHRoZSBvcGVyYW5kcyBjaGFuZ2UgaW5zaWRlIGEgYHJlbmFtZWAgZXZlbnQgaGFuZGxlciwgd2hpY2ggaXMgd2hlcmUgb3JkZXIgc3RvcHMgYmVpbmcgZnJlZS5cbiAgICAgICAgICogVGhlIGN1cnJlbnQgb3JkZXJzIGFsc28gY2FycnkgaW50ZW50OiBhIG51bGwgZ3VhcmQgYmVmb3JlIHRoZSB1c2UgaXQgZ3VhcmRzLCBhbmQgdGhlIGNvbmRpdGlvbiBiZWluZ1xuICAgICAgICAgKiByZXBvcnRlZCBiZWZvcmUgdGhlIHN0YXRlIGl0IGNvbnRyYWRpY3RzLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vcHJlZmVyLXNpbXBsZS1jb25kaXRpb24tZmlyc3QnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogYFVSTC5jYW5QYXJzZWAgcmVxdWlyZXMgTm9kZSAxOC4xNywgd2VsbCBhYm92ZSB0aGUgTm9kZSAxNi4xNi4wIGZsb29yIHRoYXQgc2hpcHBlZCBzb3VyY2UgdGFyZ2V0c1xuICAgICAgICAgKiAoc2VlIHRoZSBPYnNpZGlhbiBwbHVnaW4gbGF5ZXIncyBgbWluaW11bU5vZGVWZXJzaW9uYCkuIFRoZSBydWxlIGNhbiB0aGVyZWZvcmUgbmV2ZXIgYmUgc2F0aXNmaWVkIHRoZXJlLCBzbyBpdCBpcyBvZmYgYXQgdGhlXG4gICAgICAgICAqIGNvbmZpZyBsZXZlbCByYXRoZXIgdGhhbiBhbm5vdGF0ZWQgYXQgZWFjaCBjYWxsIHNpdGUuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItdXJsLWNhbi1wYXJzZSc6ICdvZmYnLFxuICAgICAgICAvKlxuICAgICAgICAgKiBFdmVyeSBhcnJheSByZXBvcnRlZCBoZXJlIGhvbGRzIHN0cmluZ3MsIHdoZXJlIHRoZSBkZWZhdWx0IHNvcnQgaXMgYWxyZWFkeSB3ZWxsIGRlZmluZWQgYW5kIGNvcnJlY3QuXG4gICAgICAgICAqIEFkZGluZyB0aGUgY29tcGFyYXRvciB0aGUgcnVsZSBhc2tzIGZvciB3b3VsZCBtZWFuIGNob29zaW5nIGJldHdlZW4gY29kZS11bml0IGFuZCBsb2NhbGUgb3JkZXJpbmcsXG4gICAgICAgICAqIHNvIGZvbGxvd2luZyBpdCB3b3VsZCBDSEFOR0UgdGhlIHNvcnQgcmF0aGVyIHRoYW4gZG9jdW1lbnQgaXQuIFRoZSBydWxlIGVhcm5zIGl0cyBwbGFjZSBvbiBudW1lcmljXG4gICAgICAgICAqIGFycmF5czsgaXQgZG9lcyBub3QgaGF2ZSBhbnkgaGVyZS5cbiAgICAgICAgICovXG4gICAgICAgICd1bmljb3JuL3JlcXVpcmUtYXJyYXktc29ydC1jb21wYXJlJzogJ29mZicsXG4gICAgICAgIC8vIFRoZSBjb2RlYmFzZSBhbHJlYWR5IHNwZWxscyBlbmNvZGluZ3MgdGhlIHdheSB0aGUgRW5jb2RpbmcgU3RhbmRhcmQgZG9lcyAoYHV0Zi04YCksIHdoaWNoIGlzIGFsc28gd2hhdCBgVGV4dERlY29kZXJgIHJlcG9ydHMuIEtlZXAgdGhlIHJ1bGUgZW5mb3JjaW5nIGNvbnNpc3RlbmN5LCBqdXN0IGluIHRoZSBkaXJlY3Rpb24gYWxyZWFkeSBpbiB1c2UuXG4gICAgICAgICd1bmljb3JuL3RleHQtZW5jb2RpbmctaWRlbnRpZmllci1jYXNlJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgd2l0aERhc2g6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEJ1aWxkL2xpbnQvdmVyc2lvbiBzY3JpcHRzIGFyZSBDTEkgZW50cnkgcG9pbnRzLCB3aGVyZSBleGl0aW5nIHdpdGggYSBzdGF0dXMgY29kZSBpcyB0aGUgaW50ZXJmYWNlLlxuICAgICAgZmlsZXM6IGNvbnRleHQuc2NyaXB0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAndW5pY29ybi9uby1wcm9jZXNzLWV4aXQnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLypcbiAgICAgICAqIEEgbW9kdWxlLWxldmVsIGZpeHR1cmUgYXNzaWduZWQgZnJvbSBgYmVmb3JlRWFjaGAgaXMgdGhlIHN0YW5kYXJkIHRlc3Qgc2hhcGU6XG4gICAgICAgKlxuICAgICAgICogICBsZXQgYXBwOiBBcHA7XG4gICAgICAgKiAgIGJlZm9yZUVhY2goKCkgPT4geyBhcHAgPSBBcHAuY3JlYXRlQ29uZmlndXJlZF9fKCk7IH0pO1xuICAgICAgICpcbiAgICAgICAqIFRoZSBydWxlIGlzIHJpZ2h0IGFib3V0IHByb2R1Y3Rpb24gY29kZSAtLSBtb2R1bGUgc3RhdGUgcmVhc3NpZ25lZCBmcm9tIGluc2lkZSBhIGZ1bmN0aW9uIGlzIHdvcnRoXG4gICAgICAgKiBmbGFnZ2luZywgYW5kIHRoZSBmaXggaXMgdG8gaG9sZCBpdCBpbiBhIGBjb25zdGAgb2JqZWN0IGluc3RlYWQuIEluIHRlc3RzIHRoYXQgd291bGQgcmVwbGFjZSBldmVyeVxuICAgICAgICogYGFwcGAgd2l0aCBgU1RBVEUuYXBwYCBhbmQgbWFrZSBlYWNoIGZpbGUgcmVhZCB3b3JzZSBmb3Igbm8gZ2Fpbiwgc2luY2UgdGhlIGZpeHR1cmUgaXMgcmVzZXQgcGVyIHRlc3RcbiAgICAgICAqIGJ5IGRlc2lnbi4gU2NvcGVkIG9mZiBoZXJlIHJhdGhlciB0aGFuIGRpc2FibGVkIG91dHJpZ2h0LCBzbyBwcm9kdWN0aW9uIGNvZGUga2VlcHMgdGhlIGNoZWNrLlxuICAgICAgICovXG4gICAgICBmaWxlczogY29udGV4dC50ZXN0RmlsZXMsXG4gICAgICBydWxlczoge1xuICAgICAgICAvKlxuICAgICAgICAgKiBUd28gc2hhcGVzIGhlcmUgY2Fubm90IGZvbGxvdyB0aGUgYWR2aWNlLiBBIGhlbHBlciBkZWZpbmVkIGluc2lkZSBhbiBgZXZhbEluT2JzaWRpYW5gIGNhbGxiYWNrXG4gICAgICAgICAqIGNhbm5vdCBiZSBob2lzdGVkIGF0IGFsbDogdGhlIGNhbGxiYWNrIGlzIHNlcmlhbGl6ZWQgd2l0aCBgdG9TdHJpbmcoKWAgYW5kIHJ1bnMgaW5zaWRlIE9ic2lkaWFuLCBzb1xuICAgICAgICAgKiBhbnl0aGluZyBsZWZ0IGJlaGluZCBpbiB0aGUgbW9kdWxlIHNjb3BlIGlzIHNpbXBseSBub3QgdGhlcmUuIEFuZCBhIHBlci1zdWl0ZSBmYWN0b3J5XG4gICAgICAgICAqIChgY3JlYXRlQ29tcG9uZW50YCwgYGNyZWF0ZU1vY2tQbHVnaW5gKSBpcyBkZWxpYmVyYXRlbHkgbG9jYWwsIGtlZXBpbmcgZWFjaCBzdWl0ZSdzIGZpeHR1cmUgbmV4dCB0b1xuICAgICAgICAgKiB0aGUgYXNzZXJ0aW9ucyB0aGF0IHJlYWQgaXQuIFByb2R1Y3Rpb24gY29kZSBrZWVwcyB0aGUgY2hlY2suXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9jb25zaXN0ZW50LWZ1bmN0aW9uLXNjb3BpbmcnOiAnb2ZmJyxcbiAgICAgICAgLypcbiAgICAgICAgICogQSB0ZXN0IGJpbmRpbmcgaXMgbmFtZWQgYWZ0ZXIgdGhlIHRoaW5nIGl0IGNhcHR1cmVzLCBub3QgYWZ0ZXIgd2hhdCBpdCBkb2VzOiBgY3JlYXRlRWxlbWVudFNweWBcbiAgICAgICAgICogaG9sZHMgdGhlIHNweSBvbiBgY3JlYXRlRWxlbWVudGAsIGFuZCBgY3JlYXRlUHJvZ3JhbU9wdGlvbnNgIGhvbGRzIHRoZSBvcHRpb25zIGBjcmVhdGVQcm9ncmFtYCB3YXNcbiAgICAgICAgICogY2FsbGVkIHdpdGguIFRoZSB2ZXJiIGJlbG9uZ3MgdG8gdGhlIG5hbWUgYmVpbmcgcmVmZXJlbmNlZCwgc28gdGhlIHJ1bGUgcmVhZHMgaXQgYXMgYSBmdW5jdGlvbiBuYW1lXG4gICAgICAgICAqIHRoYXQgaXMgbm90IGEgZnVuY3Rpb24uIExlZnQgb24gZm9yIHByb2R1Y3Rpb24gY29kZSwgd2hlcmUgdGhlIGNvbXBsYWludCBpcyB0aGUgcmlnaHQgb25lLlxuICAgICAgICAgKi9cbiAgICAgICAgJ3VuaWNvcm4vbm8tbm9uLWZ1bmN0aW9uLXZlcmItcHJlZml4JzogJ29mZicsXG4gICAgICAgICd1bmljb3JuL25vLXRvcC1sZXZlbC1hc3NpZ25tZW50LWluLWZ1bmN0aW9uJzogJ29mZidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKiBlc2xpbnQtZW5hYmxlIG5vLW1hZ2ljLW51bWJlcnMgLS0gV2UgZGlzYWJsZWQgbWFnaWMgbnVtYmVycyBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYWxsIG92ZXIgdGhlIGNvbmZpZ3MuICovXG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBLHFCQUE0QjtBQUM1Qiw0QkFBa0M7QUFDbEMsZ0JBQW1CO0FBQ25CLGtCQUFxQjtBQUVyQiwyQkFBc0I7QUFDdEIsK0NBQStDO0FBQy9DLG9DQUE4RDtBQUU5RCw2QkFBdUI7QUFDdkIseUNBQWdEO0FBRWhELG1DQUFvQjtBQUNwQixv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QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVFuQixvQ0FBb0M7QUFBQTtBQUFBLFFBRXBDLDZDQUE2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU03QywyQ0FBMkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQU8zQyw4Q0FBOEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUTlDLGdDQUFnQztBQUFBLFVBQzlCO0FBQUEsVUFDQTtBQUFBLFlBQ0UsZ0JBQWdCO0FBQUEsWUFDaEIsd0JBQXdCO0FBQUEsVUFDMUI7QUFBQSxRQUNGO0FBQUE7QUFBQSxRQUVBLG1DQUFtQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFRbkMsd0JBQXdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVF4Qix3Q0FBd0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFNeEMsbUNBQW1DO0FBQUE7QUFBQSxRQUVuQyxvQ0FBb0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFTcEMsa0NBQWtDO0FBQUE7QUFBQSxRQUVsQyx5Q0FBeUM7QUFBQTtBQUFBLFFBRXpDLDhCQUE4QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQVM5Qix5Q0FBeUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFNekMsZ0NBQWdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFPaEMsc0NBQXNDO0FBQUE7QUFBQSxRQUV0Qyx5Q0FBeUM7QUFBQSxVQUN2QztBQUFBLFVBQ0E7QUFBQSxZQUNFLFVBQVU7QUFBQSxVQUNaO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBO0FBQUEsTUFFRSxPQUFPLFFBQVE7QUFBQSxNQUNmLE9BQU87QUFBQSxRQUNMLDJCQUEyQjtBQUFBLE1BQzdCO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFZRSxPQUFPLFFBQVE7QUFBQSxNQUNmLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUUwsdUNBQXVDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFPdkMsdUNBQXVDO0FBQUEsUUFDdkMsK0NBQStDO0FBQUEsTUFDakQ7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwibmFtZXMiOlsiZXNsaW50IiwiY29tbWVudHNDb25maWdzIiwiZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzIiwibm9kZVBsdWdpbiIsInBlcmZlY3Rpb25pc3RDb25maWdzIiwic3R5bGlzdGljIiwidHNlc2xpbnQiLCJ1bmljb3JuIl19
@@ -1,4 +1,4 @@
1
- /// <reference path="../index.d.cts" />
1
+ /// <reference path="../library-references.d.cts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -3,61 +3,6 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
- function ensureBrowserProcess() {
13
- const browserProcess = {
14
- browser: true,
15
- cwd() {
16
- return '/';
17
- },
18
- env: {},
19
- platform: 'android'
20
- };
21
-
22
- const existingProcess = globalThis.process;
23
-
24
- if (!existingProcess) {
25
- globalThis.process = browserProcess;
26
- return;
27
- }
28
-
29
- if (existingProcess.versions?.node) {
30
- return;
31
- }
32
-
33
- const existingProcessRecord = existingProcess;
34
-
35
- for (const [key, value] of Object.entries(browserProcess)) {
36
- existingProcessRecord[key] ??= value;
37
- }
38
-
39
- existingProcessRecord['browser'] = true;
40
- }
41
-
42
- function keepName($unknown) {
43
- return $unknown;
44
- }
45
-
46
- (function initCjs() {
47
- const globalThisRecord = globalThis;
48
- ensureDisposeSymbols();
49
- globalThisRecord['__name'] ??= keepName;
50
- globalThisRecord['__extractDefault'] ??= extractDefault;
51
-
52
- ensureBrowserProcess();
53
-
54
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
55
- function extractDefault(module) {
56
- return module && module.__esModule && 'default' in module ? module.default : module;
57
- }
58
- })();
59
- })();
60
-
61
6
  "use strict";
62
7
  var __defProp = Object.defineProperty;
63
8
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -127,4 +72,4 @@ const noRestrictedSyntaxRuleEntries = [
127
72
  0 && (module.exports = {
128
73
  noRestrictedSyntaxRuleEntries
129
74
  });
130
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogYG5vLXJlc3RyaWN0ZWQtc3ludGF4YCBydWxlIGVudHJpZXMgZm9yIHRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZy5cbiAqXG4gKiBFeHBvcnRlZCBhcyBhIHN0YW5kYWxvbmUgY29uc3RhbnQgc28gZWFjaCBzZWxlY3RvciBjYW4gYmUgdW5pdC10ZXN0ZWRcbiAqIGluZGVwZW5kZW50bHkgb2YgdGhlIGxhcmdlciBkZWNsYXJhdGl2ZSBjb25maWcuXG4gKi9cblxuLyoqXG4gKiBBIHNpbmdsZSBgbm8tcmVzdHJpY3RlZC1zeW50YXhgIGVudHJ5IHBhaXJpbmcgYW4gRVNMaW50IEFTVCBzZWxlY3RvciB3aXRoIGFcbiAqIGh1bWFuLXJlYWRhYmxlIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIHBhdHRlcm4gaXMgYmFubmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vUmVzdHJpY3RlZFN5bnRheFJ1bGVFbnRyeSB7XG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBtZXNzYWdlIHNob3duIHdoZW4gdGhlIHNlbGVjdG9yIG1hdGNoZXMuXG4gICAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVTTGludCBBU1Qgc2VsZWN0b3IgaWRlbnRpZnlpbmcgdGhlIGJhbm5lZCBwYXR0ZXJuLlxuICAgKi9cbiAgc2VsZWN0b3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN0cmljdGVkLXN5bnRheCBlbnRyaWVzIGVuZm9yY2VkIGJ5IHRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZy5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vUmVzdHJpY3RlZFN5bnRheFJ1bGVFbnRyaWVzOiByZWFkb25seSBOb1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cnlbXSA9IFtcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9ucyAoISkuIEluaXRpYWxpemUgdGhlIGZpZWxkIG9yIG1ha2UgaXQgb3B0aW9uYWwuJyxcbiAgICBzZWxlY3RvcjogJ1Byb3BlcnR5RGVmaW5pdGlvbltkZWZpbml0ZT10cnVlXSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzLiBEZWZpbmUgYSBuYW1lZCBpbnRlcmZhY2Ugb3IgYHR5cGVgIGFsaWFzIGluc3RlYWQuJyxcbiAgICBzZWxlY3RvcjogJ1RTVHlwZUxpdGVyYWw6bm90KFRTVHlwZUFsaWFzRGVjbGFyYXRpb24gPiBUU1R5cGVMaXRlcmFsKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgbWFwcGVkIHR5cGVzLiBEZWZpbmUgYSBuYW1lZCBgdHlwZWAgYWxpYXMgaW5zdGVhZC4nLFxuICAgIHNlbGVjdG9yOiAnVFNNYXBwZWRUeXBlOm5vdChUU1R5cGVBbGlhc0RlY2xhcmF0aW9uID4gVFNNYXBwZWRUeXBlKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRvdWJsZSB0eXBlIGFzc2VydGlvbnMgKGFzIFggYXMgWSkuJyxcbiAgICBzZWxlY3RvcjogJ1RTQXNFeHByZXNzaW9uID4gVFNBc0V4cHJlc3Npb24nXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBgYXMgbmV2ZXJgLiBJdCBzaWxlbnRseSBzYXRpc2ZpZXMgdHlwZSBjb25zdHJhaW50cyBieSBjbGFpbWluZyBcInRoaXMgdmFsdWUgaXMgb2YgZXZlcnkgdHlwZVwiIFx1MjAxNCBhbG1vc3QgYWx3YXlzIG1hc2tzIGEgcmVhbCB0eXBlIG1pc21hdGNoLiBGaXggdGhlIHVuZGVybHlpbmcgdHlwZXMgaW5zdGVhZC4nLFxuICAgIHNlbGVjdG9yOiAnVFNBc0V4cHJlc3Npb24gPiBUU05ldmVyS2V5d29yZCdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGA8bmV2ZXI+YCB0eXBlIGFzc2VydGlvbnMuIFNhbWUgcmVhc29uaW5nIGFzIGBhcyBuZXZlcmAuJyxcbiAgICBzZWxlY3RvcjogJ1RTVHlwZUFzc2VydGlvbiA+IFRTTmV2ZXJLZXl3b3JkJ1xuICB9LFxuICB7XG4gICAgbWVzc2FnZTogJ0RvIG5vdCB1c2UgXyBwcmVmaXggb24gbWV0aG9kcyBvciBmdW5jdGlvbnMuIFRoZSBfIHByZWZpeCBpcyBmb3IgdW51c2VkIHBhcmFtZXRlcnMgb25seS4nLFxuICAgIHNlbGVjdG9yOiAnTWV0aG9kRGVmaW5pdGlvbltrZXkubmFtZT0vXl8vXTpub3QoW292ZXJyaWRlPXRydWVdKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIF8gcHJlZml4IG9uIG1ldGhvZHMgb3IgZnVuY3Rpb25zLiBUaGUgXyBwcmVmaXggaXMgZm9yIHVudXNlZCBwYXJhbWV0ZXJzIG9ubHkuJyxcbiAgICBzZWxlY3RvcjogJ0Z1bmN0aW9uRGVjbGFyYXRpb25baWQubmFtZT0vXl8vXSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgcmVuYW1lIGltcG9ydHMgd2l0aCBcIk1vY2tcIiBpbiB0aGUgYWxpYXMuIE1vY2sgY2xhc3NlcyBhcmUgdGhlIGNhbm9uaWNhbCB0eXBlcyBcdTIwMTQgdXNlIHRoZSBvcmlnaW5hbCBuYW1lLicsXG4gICAgc2VsZWN0b3I6ICdJbXBvcnRTcGVjaWZpZXJbbG9jYWwubmFtZT0vTW9jay9dOm5vdChbaW1wb3J0ZWQubmFtZT0vTW9jay9dKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGBkZWNsYXJlYCBvbiBjbGFzcyBwcm9wZXJ0aWVzLiBJbml0aWFsaXplIHRoZSBwcm9wZXJ0eSBvciB1c2UgYSByZWd1bGFyIHR5cGUgYW5ub3RhdGlvbi4nLFxuICAgIHNlbGVjdG9yOiAnUHJvcGVydHlEZWZpbml0aW9uW2RlY2xhcmU9dHJ1ZV0nXG4gIH1cbl07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNEJPLE1BQU0sZ0NBQXdFO0FBQUEsRUFDbkY7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
75
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogYG5vLXJlc3RyaWN0ZWQtc3ludGF4YCBydWxlIGVudHJpZXMgZm9yIHRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZy5cbiAqXG4gKiBFeHBvcnRlZCBhcyBhIHN0YW5kYWxvbmUgY29uc3RhbnQgc28gZWFjaCBzZWxlY3RvciBjYW4gYmUgdW5pdC10ZXN0ZWRcbiAqIGluZGVwZW5kZW50bHkgb2YgdGhlIGxhcmdlciBkZWNsYXJhdGl2ZSBjb25maWcuXG4gKi9cblxuLyoqXG4gKiBBIHNpbmdsZSBgbm8tcmVzdHJpY3RlZC1zeW50YXhgIGVudHJ5IHBhaXJpbmcgYW4gRVNMaW50IEFTVCBzZWxlY3RvciB3aXRoIGFcbiAqIGh1bWFuLXJlYWRhYmxlIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIHBhdHRlcm4gaXMgYmFubmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vUmVzdHJpY3RlZFN5bnRheFJ1bGVFbnRyeSB7XG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBtZXNzYWdlIHNob3duIHdoZW4gdGhlIHNlbGVjdG9yIG1hdGNoZXMuXG4gICAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVTTGludCBBU1Qgc2VsZWN0b3IgaWRlbnRpZnlpbmcgdGhlIGJhbm5lZCBwYXR0ZXJuLlxuICAgKi9cbiAgc2VsZWN0b3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN0cmljdGVkLXN5bnRheCBlbnRyaWVzIGVuZm9yY2VkIGJ5IHRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZy5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vUmVzdHJpY3RlZFN5bnRheFJ1bGVFbnRyaWVzOiByZWFkb25seSBOb1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cnlbXSA9IFtcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9ucyAoISkuIEluaXRpYWxpemUgdGhlIGZpZWxkIG9yIG1ha2UgaXQgb3B0aW9uYWwuJyxcbiAgICBzZWxlY3RvcjogJ1Byb3BlcnR5RGVmaW5pdGlvbltkZWZpbml0ZT10cnVlXSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgb2JqZWN0IHR5cGVzLiBEZWZpbmUgYSBuYW1lZCBpbnRlcmZhY2Ugb3IgYHR5cGVgIGFsaWFzIGluc3RlYWQuJyxcbiAgICBzZWxlY3RvcjogJ1RTVHlwZUxpdGVyYWw6bm90KFRTVHlwZUFsaWFzRGVjbGFyYXRpb24gPiBUU1R5cGVMaXRlcmFsKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGFub255bW91cyBpbmxpbmUgbWFwcGVkIHR5cGVzLiBEZWZpbmUgYSBuYW1lZCBgdHlwZWAgYWxpYXMgaW5zdGVhZC4nLFxuICAgIHNlbGVjdG9yOiAnVFNNYXBwZWRUeXBlOm5vdChUU1R5cGVBbGlhc0RlY2xhcmF0aW9uID4gVFNNYXBwZWRUeXBlKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGRvdWJsZSB0eXBlIGFzc2VydGlvbnMgKGFzIFggYXMgWSkuJyxcbiAgICBzZWxlY3RvcjogJ1RTQXNFeHByZXNzaW9uID4gVFNBc0V4cHJlc3Npb24nXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBgYXMgbmV2ZXJgLiBJdCBzaWxlbnRseSBzYXRpc2ZpZXMgdHlwZSBjb25zdHJhaW50cyBieSBjbGFpbWluZyBcInRoaXMgdmFsdWUgaXMgb2YgZXZlcnkgdHlwZVwiIFx1MjAxNCBhbG1vc3QgYWx3YXlzIG1hc2tzIGEgcmVhbCB0eXBlIG1pc21hdGNoLiBGaXggdGhlIHVuZGVybHlpbmcgdHlwZXMgaW5zdGVhZC4nLFxuICAgIHNlbGVjdG9yOiAnVFNBc0V4cHJlc3Npb24gPiBUU05ldmVyS2V5d29yZCdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGA8bmV2ZXI+YCB0eXBlIGFzc2VydGlvbnMuIFNhbWUgcmVhc29uaW5nIGFzIGBhcyBuZXZlcmAuJyxcbiAgICBzZWxlY3RvcjogJ1RTVHlwZUFzc2VydGlvbiA+IFRTTmV2ZXJLZXl3b3JkJ1xuICB9LFxuICB7XG4gICAgbWVzc2FnZTogJ0RvIG5vdCB1c2UgXyBwcmVmaXggb24gbWV0aG9kcyBvciBmdW5jdGlvbnMuIFRoZSBfIHByZWZpeCBpcyBmb3IgdW51c2VkIHBhcmFtZXRlcnMgb25seS4nLFxuICAgIHNlbGVjdG9yOiAnTWV0aG9kRGVmaW5pdGlvbltrZXkubmFtZT0vXl8vXTpub3QoW292ZXJyaWRlPXRydWVdKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIF8gcHJlZml4IG9uIG1ldGhvZHMgb3IgZnVuY3Rpb25zLiBUaGUgXyBwcmVmaXggaXMgZm9yIHVudXNlZCBwYXJhbWV0ZXJzIG9ubHkuJyxcbiAgICBzZWxlY3RvcjogJ0Z1bmN0aW9uRGVjbGFyYXRpb25baWQubmFtZT0vXl8vXSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgcmVuYW1lIGltcG9ydHMgd2l0aCBcIk1vY2tcIiBpbiB0aGUgYWxpYXMuIE1vY2sgY2xhc3NlcyBhcmUgdGhlIGNhbm9uaWNhbCB0eXBlcyBcdTIwMTQgdXNlIHRoZSBvcmlnaW5hbCBuYW1lLicsXG4gICAgc2VsZWN0b3I6ICdJbXBvcnRTcGVjaWZpZXJbbG9jYWwubmFtZT0vTW9jay9dOm5vdChbaW1wb3J0ZWQubmFtZT0vTW9jay9dKSdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIGBkZWNsYXJlYCBvbiBjbGFzcyBwcm9wZXJ0aWVzLiBJbml0aWFsaXplIHRoZSBwcm9wZXJ0eSBvciB1c2UgYSByZWd1bGFyIHR5cGUgYW5ub3RhdGlvbi4nLFxuICAgIHNlbGVjdG9yOiAnUHJvcGVydHlEZWZpbml0aW9uW2RlY2xhcmU9dHJ1ZV0nXG4gIH1cbl07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0Qk8sTUFBTSxnQ0FBd0U7QUFBQSxFQUNuRjtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,4 +1,4 @@
1
- /// <reference path="../index.d.cts" />
1
+ /// <reference path="../library-references.d.cts" />
2
2
  /**
3
3
  * @file
4
4
  *