@decaf-ts/utils 0.10.3 → 0.11.1-0.experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/README.md +1 -1
  2. package/dist/utils.cjs +2561 -2
  3. package/dist/utils.js +2602 -2
  4. package/lib/assets/slogans.cjs +1 -1
  5. package/lib/bin/build-scripts.cjs +1 -1
  6. package/lib/bin/tag-release.cjs +1 -1
  7. package/lib/cli/command.cjs +1 -1
  8. package/lib/cli/commands/build-scripts.cjs +74 -14
  9. package/lib/cli/commands/build-scripts.d.ts +62 -2
  10. package/lib/cli/commands/index.cjs +1 -1
  11. package/lib/cli/commands/tag-release.cjs +1 -1
  12. package/lib/cli/constants.cjs +1 -1
  13. package/lib/cli/index.cjs +1 -1
  14. package/lib/cli/types.cjs +1 -1
  15. package/lib/esm/assets/slogans.js +1 -1
  16. package/lib/esm/bin/build-scripts.js +1 -1
  17. package/lib/esm/bin/tag-release.js +1 -1
  18. package/lib/esm/cli/command.js +1 -1
  19. package/lib/esm/cli/commands/build-scripts.d.ts +62 -2
  20. package/lib/esm/cli/commands/build-scripts.js +74 -14
  21. package/lib/esm/cli/commands/index.js +1 -1
  22. package/lib/esm/cli/commands/tag-release.js +1 -1
  23. package/lib/esm/cli/constants.js +1 -1
  24. package/lib/esm/cli/index.js +1 -1
  25. package/lib/esm/cli/types.js +1 -1
  26. package/lib/esm/index.d.ts +1 -1
  27. package/lib/esm/index.js +2 -2
  28. package/lib/esm/input/index.js +1 -1
  29. package/lib/esm/input/input.js +1 -1
  30. package/lib/esm/input/types.js +1 -1
  31. package/lib/esm/output/common.js +1 -1
  32. package/lib/esm/output/index.js +1 -1
  33. package/lib/esm/tests/Consumer.d.ts +106 -0
  34. package/lib/esm/tests/Consumer.js +79 -1
  35. package/lib/esm/tests/ProducerChildProcess.js +1 -1
  36. package/lib/esm/tests/TestReporter.d.ts +3 -0
  37. package/lib/esm/tests/TestReporter.js +20 -2
  38. package/lib/esm/tests/index.d.ts +3 -1
  39. package/lib/esm/tests/index.js +4 -2
  40. package/lib/esm/tests/jestPerformanceRunner.d.ts +7 -0
  41. package/lib/esm/tests/jestPerformanceRunner.js +15 -0
  42. package/lib/esm/tests/utils.d.ts +5 -0
  43. package/lib/esm/tests/utils.js +33 -0
  44. package/lib/esm/utils/constants.js +1 -1
  45. package/lib/esm/utils/fs.d.ts +1 -1
  46. package/lib/esm/utils/fs.js +76 -29
  47. package/lib/esm/utils/http.js +1 -1
  48. package/lib/esm/utils/index.d.ts +1 -0
  49. package/lib/esm/utils/index.js +2 -1
  50. package/lib/esm/utils/md.js +1 -1
  51. package/lib/esm/utils/performanceRunner.d.ts +126 -0
  52. package/lib/esm/utils/performanceRunner.js +344 -0
  53. package/lib/esm/utils/timeout.js +1 -1
  54. package/lib/esm/utils/types.js +1 -1
  55. package/lib/esm/utils/utils.js +1 -1
  56. package/lib/esm/writers/OutputWriter.js +1 -1
  57. package/lib/esm/writers/RegexpOutputWriter.js +1 -1
  58. package/lib/esm/writers/StandardOutputWriter.js +11 -4
  59. package/lib/esm/writers/index.js +1 -1
  60. package/lib/esm/writers/types.js +1 -1
  61. package/lib/index.cjs +2 -2
  62. package/lib/index.d.ts +1 -1
  63. package/lib/input/index.cjs +1 -1
  64. package/lib/input/input.cjs +1 -1
  65. package/lib/input/types.cjs +1 -1
  66. package/lib/output/common.cjs +1 -1
  67. package/lib/output/index.cjs +1 -1
  68. package/lib/tests/Consumer.cjs +79 -1
  69. package/lib/tests/Consumer.d.ts +106 -0
  70. package/lib/tests/ProducerChildProcess.cjs +1 -1
  71. package/lib/tests/TestReporter.cjs +20 -2
  72. package/lib/tests/TestReporter.d.ts +3 -0
  73. package/lib/tests/index.cjs +4 -2
  74. package/lib/tests/index.d.ts +3 -1
  75. package/lib/tests/jestPerformanceRunner.cjs +19 -0
  76. package/lib/tests/jestPerformanceRunner.d.ts +7 -0
  77. package/lib/tests/utils.cjs +36 -0
  78. package/lib/tests/utils.d.ts +5 -0
  79. package/lib/utils/constants.cjs +1 -1
  80. package/lib/utils/fs.cjs +76 -29
  81. package/lib/utils/fs.d.ts +1 -1
  82. package/lib/utils/http.cjs +1 -1
  83. package/lib/utils/index.cjs +2 -1
  84. package/lib/utils/index.d.ts +1 -0
  85. package/lib/utils/md.cjs +1 -1
  86. package/lib/utils/performanceRunner.cjs +384 -0
  87. package/lib/utils/performanceRunner.d.ts +126 -0
  88. package/lib/utils/timeout.cjs +1 -1
  89. package/lib/utils/types.cjs +1 -1
  90. package/lib/utils/utils.cjs +1 -1
  91. package/lib/writers/OutputWriter.cjs +1 -1
  92. package/lib/writers/RegexpOutputWriter.cjs +1 -1
  93. package/lib/writers/StandardOutputWriter.cjs +11 -4
  94. package/lib/writers/index.cjs +1 -1
  95. package/lib/writers/types.cjs +1 -1
  96. package/package.json +17 -10
  97. package/workdocs/assets/slogans.json +802 -0
  98. package/dist/utils.cjs.map +0 -1
  99. package/dist/utils.js.map +0 -1
  100. package/lib/assets/slogans.js.map +0 -1
  101. package/lib/bin/build-scripts.js.map +0 -1
  102. package/lib/bin/tag-release.js.map +0 -1
  103. package/lib/cli/command.js.map +0 -1
  104. package/lib/cli/commands/build-scripts.js.map +0 -1
  105. package/lib/cli/commands/index.js.map +0 -1
  106. package/lib/cli/commands/tag-release.js.map +0 -1
  107. package/lib/cli/constants.js.map +0 -1
  108. package/lib/cli/index.js.map +0 -1
  109. package/lib/cli/types.js.map +0 -1
  110. package/lib/esm/assets/slogans.js.map +0 -1
  111. package/lib/esm/bin/build-scripts.js.map +0 -1
  112. package/lib/esm/bin/tag-release.js.map +0 -1
  113. package/lib/esm/cli/command.js.map +0 -1
  114. package/lib/esm/cli/commands/build-scripts.js.map +0 -1
  115. package/lib/esm/cli/commands/index.js.map +0 -1
  116. package/lib/esm/cli/commands/tag-release.js.map +0 -1
  117. package/lib/esm/cli/constants.js.map +0 -1
  118. package/lib/esm/cli/index.js.map +0 -1
  119. package/lib/esm/cli/types.js.map +0 -1
  120. package/lib/esm/index.js.map +0 -1
  121. package/lib/esm/input/index.js.map +0 -1
  122. package/lib/esm/input/input.js.map +0 -1
  123. package/lib/esm/input/types.js.map +0 -1
  124. package/lib/esm/output/common.js.map +0 -1
  125. package/lib/esm/output/index.js.map +0 -1
  126. package/lib/esm/tests/Consumer.js.map +0 -1
  127. package/lib/esm/tests/ProducerChildProcess.js.map +0 -1
  128. package/lib/esm/tests/TestReporter.js.map +0 -1
  129. package/lib/esm/tests/index.js.map +0 -1
  130. package/lib/esm/utils/constants.js.map +0 -1
  131. package/lib/esm/utils/fs.js.map +0 -1
  132. package/lib/esm/utils/http.js.map +0 -1
  133. package/lib/esm/utils/index.js.map +0 -1
  134. package/lib/esm/utils/md.js.map +0 -1
  135. package/lib/esm/utils/tests.d.ts +0 -1
  136. package/lib/esm/utils/tests.js +0 -2
  137. package/lib/esm/utils/tests.js.map +0 -1
  138. package/lib/esm/utils/timeout.js.map +0 -1
  139. package/lib/esm/utils/types.js.map +0 -1
  140. package/lib/esm/utils/utils.js.map +0 -1
  141. package/lib/esm/writers/OutputWriter.js.map +0 -1
  142. package/lib/esm/writers/RegexpOutputWriter.js.map +0 -1
  143. package/lib/esm/writers/StandardOutputWriter.js.map +0 -1
  144. package/lib/esm/writers/index.js.map +0 -1
  145. package/lib/esm/writers/types.js.map +0 -1
  146. package/lib/index.js.map +0 -1
  147. package/lib/input/index.js.map +0 -1
  148. package/lib/input/input.js.map +0 -1
  149. package/lib/input/types.js.map +0 -1
  150. package/lib/output/common.js.map +0 -1
  151. package/lib/output/index.js.map +0 -1
  152. package/lib/tests/Consumer.js.map +0 -1
  153. package/lib/tests/ProducerChildProcess.js.map +0 -1
  154. package/lib/tests/TestReporter.js.map +0 -1
  155. package/lib/tests/index.js.map +0 -1
  156. package/lib/utils/constants.js.map +0 -1
  157. package/lib/utils/fs.js.map +0 -1
  158. package/lib/utils/http.js.map +0 -1
  159. package/lib/utils/index.js.map +0 -1
  160. package/lib/utils/md.js.map +0 -1
  161. package/lib/utils/tests.cjs +0 -18
  162. package/lib/utils/tests.d.ts +0 -1
  163. package/lib/utils/tests.js.map +0 -1
  164. package/lib/utils/timeout.js.map +0 -1
  165. package/lib/utils/types.js.map +0 -1
  166. package/lib/utils/utils.js.map +0 -1
  167. package/lib/writers/OutputWriter.js.map +0 -1
  168. package/lib/writers/RegexpOutputWriter.js.map +0 -1
  169. package/lib/writers/StandardOutputWriter.js.map +0 -1
  170. package/lib/writers/index.js.map +0 -1
  171. package/lib/writers/types.js.map +0 -1
@@ -818,4 +818,4 @@ exports.slogans = [
818
818
  Tags: "DID, Self-Sovereign, Playful",
819
819
  },
820
820
  ];
821
- //# sourceMappingURL=slogans.js.map
821
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvZ2Fucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3NldHMvc2xvZ2Fucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7O0FBRUg7Ozs7OztHQU1HO0FBQ1UsUUFBQSxPQUFPLEdBQUc7SUFDckI7UUFDRSxNQUFNLEVBQUUseUNBQXlDO1FBQ2pELElBQUksRUFBRSwyQkFBMkI7S0FDbEM7SUFDRDtRQUNFLE1BQU0sRUFBRSwyQ0FBMkM7UUFDbkQsSUFBSSxFQUFFLHlCQUF5QjtLQUNoQztJQUNEO1FBQ0UsTUFBTSxFQUFFLG9DQUFvQztRQUM1QyxJQUFJLEVBQUUsMEJBQTBCO0tBQ2pDO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsaUNBQWlDO1FBQ3pDLElBQUksRUFBRSx5QkFBeUI7S0FDaEM7SUFDRDtRQUNFLE1BQU0sRUFBRSwrQkFBK0I7UUFDdkMsSUFBSSxFQUFFLHNCQUFzQjtLQUM3QjtJQUNEO1FBQ0UsTUFBTSxFQUFFLGtDQUFrQztRQUMxQyxJQUFJLEVBQUUsMEJBQTBCO0tBQ2pDO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsMkJBQTJCO1FBQ25DLElBQUksRUFBRSxvQkFBb0I7S0FDM0I7SUFDRDtRQUNFLE1BQU0sRUFBRSwyQkFBMkI7UUFDbkMsSUFBSSxFQUFFLHdCQUF3QjtLQUMvQjtJQUNEO1FBQ0UsTUFBTSxFQUFFLG1DQUFtQztRQUMzQyxJQUFJLEVBQUUseUJBQXlCO0tBQ2hDO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsZ0NBQWdDO1FBQ3hDLElBQUksRUFBRSwwQkFBMEI7S0FDakM7SUFDRDtRQUNFLE1BQU0sRUFBRSx5Q0FBeUM7UUFDakQsSUFBSSxFQUFFLDJCQUEyQjtLQUNsQztJQUNEO1FBQ0UsTUFBTSxFQUFFLGdEQUFnRDtRQUN4RCxJQUFJLEVBQUUseUJBQXlCO0tBQ2hDO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsb0NBQW9DO1FBQzVDLElBQUksRUFBRSwwQkFBMEI7S0FDakM7SUFD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c0I7S0FDN0I7SUFDRDtRQUNFLE1BQU0sRUFBRSxtREFBbUQ7UUFDM0QsSUFBSSxFQUFFLDhCQUE4QjtLQUNyQztJQUNEO1FBQ0UsTUFBTSxFQUFFLCtCQUErQjtRQUN2QyxJQUFJLEVBQUUseUJBQXlCO0tBQ2hDO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsbUVBQW1FO1FBQzNFLElBQUksRUFBRSw4QkFBOEI7S0FDckM7SUFDRDtRQUNFLE1BQU0sRUFBRSxpREFBaUQ7UUFDekQsSUFBSSxFQUFFLHlCQUF5QjtLQUNoQztJQUNEO1FBQ0UsTUFBTSxFQUFFLCtDQUErQztRQUN2RCxJQUFJLEVBQUUsb0NBQW9DO0tBQzNDO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsb0NBQW9DO1FBQzVDLElBQUksRUFBRSx3QkFBd0I7S0FDL0I7SUFDRDtRQUNFLE1BQU0sRUFBRSw0Q0FBNEM7UUFDcEQsSUFBSSxFQUFFLDhCQUE4QjtLQUNyQztJQUNEO1FBQ0UsTUFBTSxFQUFFLDBEQUEwRDtRQUNsRSxJQUFJLEVBQUUsNEJBQTRCO0tBQ25DO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsNENBQTRDO1FBQ3BELElBQUksRUFBRSxnQ0FBZ0M7S0FDdkM7SUFDRDtRQUNFLE1BQU0sRUFBRSxnREFBZ0Q7UUFDeEQsSUFBSSxFQUFFLDhCQUE4QjtLQUNyQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBEZWZpbml0aW9uIG9mIGEgc2xvZ2FuIGl0ZW0uXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgc2luZ2xlIHNsb2dhbiBlbnRyeSB3aXRoIHRleHQgYW5kIHRhZ3MuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTbG9nYW5JdGVtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gU2xvZ2FuIC0gVGhlIHNsb2dhbiB0ZXh0LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFRhZ3MgLSBDb21tYS1zZXBhcmF0ZWQgdGFncyBkZXNjcmliaW5nIHRoZSBzbG9nYW4uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTGlzdCBvZiBhdmFpbGFibGUgc2xvZ2FucyBmb3IgYmFubmVycyBhbmQgbWVzc2FnZXMuXG4gKiBAc3VtbWFyeSBJbW11dGFibGUgYXJyYXkgb2Ygc2xvZ2FuIGVudHJpZXMgdXNlZCBieSB7QGxpbmsgZ2V0U2xvZ2FufSBhbmQgYmFubmVyIHJlbmRlcmluZy5cbiAqIEB0eXBlIHtTbG9nYW5JdGVtW119XG4gKiBAY29uc3Qgc2xvZ2Fuc1xuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5leHBvcnQgY29uc3Qgc2xvZ2FucyA9IFtcbiAge1xuICAgIFNsb2dhbjogXCJObyBjYWZmZWluZSwgbm8gY2hhb3MuIEp1c3QgY2xlYW4gY29kZS5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENhbG0sIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJGdWxsIGZsYXZvciwgbm8gaml0dGVycy4gVGhhdCdzIERlY2FmLVRTLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2hlZXJmdWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJDaGlsbCBmdWxsc3RhY2suIFBvd2VyZWQgYnkgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBGdW4sIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJEZWNhZi1UUzogQnJld2VkIGZvciBjYWxtIGNvZGUuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBCcmFuZGluZ1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlNtb290aCBhcyB5b3VyIG1vcm5pbmcgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDaGlsbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkFsbCB0aGUga2ljaywgbm9uZSBvZiB0aGUgY3Jhc2guXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBFbmVyZ2V0aWNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTaXAgYmFjayBhbmQgc2hpcCBmYXN0ZXIuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBGdW5cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJLZWVwIGNhbG0gYW5kIGNvZGUgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBQbGF5ZnVsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQ29kZSB3aXRob3V0IHRoZSBjYWZmZWluZSBzaGFrZXMuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBIdW1vcm91c1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIllvdXIgZnVsbHN0YWNrLCBkZWNhZmZlaW5hdGVkLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgVGVjaG5pY2FsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiTm8gY2FmZmVpbmUsIG5vIGNoYW9zLiBKdXN0IGNsZWFuIGNvZGUuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDYWxtLCBUZWNoXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRnVsbCBmbGF2b3IsIG5vIGppdHRlcnMuIFRoYXRcXHUyMDE5cyBEZWNhZi1UUy5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENoZWVyZnVsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQ2hpbGwgZnVsbHN0YWNrLiBQb3dlcmVkIGJ5IERlY2FmLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgRnVuLCBUZWNoXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRGVjYWYtVFM6IEJyZXdlZCBmb3IgY2FsbSBjb2RlLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQnJhbmRpbmdcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTbW9vdGggYXMgeW91ciBtb3JuaW5nIERlY2FmLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2hpbGxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJBbGwgdGhlIGtpY2ssIG5vbmUgb2YgdGhlIGNyYXNoLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgRW5lcmdldGljXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiU2lwIGJhY2sgYW5kIHNoaXAgZmFzdGVyLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgRnVuXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiS2VlcCBjYWxtIGFuZCBjb2RlIERlY2FmLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgUGxheWZ1bFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkNvZGUgd2l0aG91dCB0aGUgY2FmZmVpbmUgc2hha2VzLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgSHVtb3JvdXNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJZb3VyIGZ1bGxzdGFjaywgZGVjYWZmZWluYXRlZC5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIFRlY2huaWNhbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIk5vIGNhZmZlaW5lLCBubyBjaGFvcy4gSnVzdCBjbGVhbiBjb2RlLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2FsbSwgVGVjaFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkZ1bGwgZmxhdm9yLCBubyBqaXR0ZXJzLiBUaGF0XFx1MjAxOXMgRGVjYWYtVFMuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDaGVlcmZ1bFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkNoaWxsIGZ1bGxzdGFjay4gUG93ZXJlZCBieSBEZWNhZi5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEZ1biwgVGVjaFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkRlY2FmLVRTOiBCcmV3ZWQgZm9yIGNhbG0gY29kZS5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEJyYW5kaW5nXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiU21vb3RoIGFzIHlvdXIgbW9ybmluZyBEZWNhZi5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENoaWxsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQWxsIHRoZSBraWNrLCBub25lIG9mIHRoZSBjcmFzaC5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEVuZXJnZXRpY1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlNpcCBiYWNrIGFuZCBzaGlwIGZhc3Rlci5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEZ1blwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIktlZXAgY2FsbSBhbmQgY29kZSBEZWNhZi5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIFBsYXlmdWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJDb2RlIHdpdGhvdXQgdGhlIGNhZmZlaW5lIHNoYWtlcy5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEh1bW9yb3VzXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiWW91ciBmdWxsc3RhY2ssIGRlY2FmZmVpbmF0ZWQuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBUZWNobmljYWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJObyBjYWZmZWluZSwgbm8gY2hhb3MuIEp1c3QgY2xlYW4gY29kZS5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENhbG0sIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJGdWxsIGZsYXZvciwgbm8gaml0dGVycy4gVGhhdFxcdTIwMTlzIERlY2FmLVRTLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2hlZXJmdWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJDaGlsbCBmdWxsc3RhY2suIFBvd2VyZWQgYnkgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBGdW4sIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJEZWNhZi1UUzogQnJld2VkIGZvciBjYWxtIGNvZGUuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBCcmFuZGluZ1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlNtb290aCBhcyB5b3VyIG1vcm5pbmcgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDaGlsbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkFsbCB0aGUga2ljaywgbm9uZSBvZiB0aGUgY3Jhc2guXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBFbmVyZ2V0aWNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTaXAgYmFjayBhbmQgc2hpcCBmYXN0ZXIuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBGdW5cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJLZWVwIGNhbG0gYW5kIGNvZGUgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBQbGF5ZnVsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQ29kZSB3aXRob3V0IHRoZSBjYWZmZWluZSBzaGFrZXMuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBIdW1vcm91c1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIllvdXIgZnVsbHN0YWNrLCBkZWNhZmZlaW5hdGVkLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgVGVjaG5pY2FsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiTm8gY2FmZmVpbmUsIG5vIGNoYW9zLiBKdXN0IGNsZWFuIGNvZGUuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDYWxtLCBUZWNoXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRnVsbCBmbGF2b3IsIG5vIGppdHRlcnMuIFRoYXRcXHUyMDE5cyBEZWNhZi1UUy5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENoZWVyZnVsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQ2hpbGwgZnVsbHN0YWNrLiBQb3dlcmVkIGJ5IERlY2FmLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgRnVuLCBUZWNoXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRGVjYWYtVFM6IEJyZXdlZCBmb3IgY2FsbSBjb2RlLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQnJhbmRpbmdcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTbW9vdGggYXMgeW91ciBtb3JuaW5nIERlY2FmLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2hpbGxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJBbGwgdGhlIGtpY2ssIG5vbmUgb2YgdGhlIGNyYXNoLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgRW5lcmdldGljXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiU2lwIGJhY2sgYW5kIHNoaXAgZmFzdGVyLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgRnVuXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiS2VlcCBjYWxtIGFuZCBjb2RlIERlY2FmLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgUGxheWZ1bFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkNvZGUgd2l0aG91dCB0aGUgY2FmZmVpbmUgc2hha2VzLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgSHVtb3JvdXNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJZb3VyIGZ1bGxzdGFjaywgZGVjYWZmZWluYXRlZC5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIFRlY2huaWNhbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIk5vIGNhZmZlaW5lLCBubyBjaGFvcy4gSnVzdCBjbGVhbiBjb2RlLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2FsbSwgVGVjaFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkZ1bGwgZmxhdm9yLCBubyBqaXR0ZXJzLiBUaGF0XFx1MjAxOXMgRGVjYWYtVFMuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDaGVlcmZ1bFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkNoaWxsIGZ1bGxzdGFjay4gUG93ZXJlZCBieSBEZWNhZi5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEZ1biwgVGVjaFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkRlY2FmLVRTOiBCcmV3ZWQgZm9yIGNhbG0gY29kZS5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEJyYW5kaW5nXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiU21vb3RoIGFzIHlvdXIgbW9ybmluZyBEZWNhZi5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENoaWxsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQWxsIHRoZSBraWNrLCBub25lIG9mIHRoZSBjcmFzaC5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEVuZXJnZXRpY1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlNpcCBiYWNrIGFuZCBzaGlwIGZhc3Rlci5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEZ1blwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIktlZXAgY2FsbSBhbmQgY29kZSBEZWNhZi5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIFBsYXlmdWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJDb2RlIHdpdGhvdXQgdGhlIGNhZmZlaW5lIHNoYWtlcy5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEh1bW9yb3VzXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiWW91ciBmdWxsc3RhY2ssIGRlY2FmZmVpbmF0ZWQuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBUZWNobmljYWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJObyBjYWZmZWluZSwgbm8gY2hhb3MuIEp1c3QgY2xlYW4gY29kZS5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENhbG0sIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJGdWxsIGZsYXZvciwgbm8gaml0dGVycy4gVGhhdFxcdTIwMTlzIERlY2FmLVRTLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2hlZXJmdWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJDaGlsbCBmdWxsc3RhY2suIFBvd2VyZWQgYnkgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBGdW4sIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJEZWNhZi1UUzogQnJld2VkIGZvciBjYWxtIGNvZGUuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBCcmFuZGluZ1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlNtb290aCBhcyB5b3VyIG1vcm5pbmcgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDaGlsbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkFsbCB0aGUga2ljaywgbm9uZSBvZiB0aGUgY3Jhc2guXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBFbmVyZ2V0aWNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTaXAgYmFjayBhbmQgc2hpcCBmYXN0ZXIuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBGdW5cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJLZWVwIGNhbG0gYW5kIGNvZGUgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBQbGF5ZnVsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQ29kZSB3aXRob3V0IHRoZSBjYWZmZWluZSBzaGFrZXMuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBIdW1vcm91c1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIllvdXIgZnVsbHN0YWNrLCBkZWNhZmZlaW5hdGVkLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgVGVjaG5pY2FsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiTm8gY2FmZmVpbmUsIG5vIGNoYW9zLiBKdXN0IGNsZWFuIGNvZGUuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDYWxtLCBUZWNoXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRnVsbCBmbGF2b3IsIG5vIGppdHRlcnMuIFRoYXRcXHUyMDE5cyBEZWNhZi1UUy5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENoZWVyZnVsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQ2hpbGwgZnVsbHN0YWNrLiBQb3dlcmVkIGJ5IERlY2FmLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgRnVuLCBUZWNoXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRGVjYWYtVFM6IEJyZXdlZCBmb3IgY2FsbSBjb2RlLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQnJhbmRpbmdcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTbW9vdGggYXMgeW91ciBtb3JuaW5nIERlY2FmLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2hpbGxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJBbGwgdGhlIGtpY2ssIG5vbmUgb2YgdGhlIGNyYXNoLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgRW5lcmdldGljXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiU2lwIGJhY2sgYW5kIHNoaXAgZmFzdGVyLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgRnVuXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiS2VlcCBjYWxtIGFuZCBjb2RlIERlY2FmLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgUGxheWZ1bFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkNvZGUgd2l0aG91dCB0aGUgY2FmZmVpbmUgc2hha2VzLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgSHVtb3JvdXNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJZb3VyIGZ1bGxzdGFjaywgZGVjYWZmZWluYXRlZC5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIFRlY2huaWNhbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIk5vIGNhZmZlaW5lLCBubyBjaGFvcy4gSnVzdCBjbGVhbiBjb2RlLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2FsbSwgVGVjaFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkZ1bGwgZmxhdm9yLCBubyBqaXR0ZXJzLiBUaGF0XFx1MjAxOXMgRGVjYWYtVFMuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDaGVlcmZ1bFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkNoaWxsIGZ1bGxzdGFjay4gUG93ZXJlZCBieSBEZWNhZi5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEZ1biwgVGVjaFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkRlY2FmLVRTOiBCcmV3ZWQgZm9yIGNhbG0gY29kZS5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEJyYW5kaW5nXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiU21vb3RoIGFzIHlvdXIgbW9ybmluZyBEZWNhZi5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENoaWxsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQWxsIHRoZSBraWNrLCBub25lIG9mIHRoZSBjcmFzaC5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEVuZXJnZXRpY1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlNpcCBiYWNrIGFuZCBzaGlwIGZhc3Rlci5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEZ1blwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIktlZXAgY2FsbSBhbmQgY29kZSBEZWNhZi5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIFBsYXlmdWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJDb2RlIHdpdGhvdXQgdGhlIGNhZmZlaW5lIHNoYWtlcy5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIEh1bW9yb3VzXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiWW91ciBmdWxsc3RhY2ssIGRlY2FmZmVpbmF0ZWQuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBUZWNobmljYWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJObyBjYWZmZWluZSwgbm8gY2hhb3MuIEp1c3QgY2xlYW4gY29kZS5cIixcbiAgICBUYWdzOiBcIkNvZmZlZS10aGVtZWQsIENhbG0sIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJGdWxsIGZsYXZvciwgbm8gaml0dGVycy4gVGhhdFxcdTIwMTlzIERlY2FmLVRTLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgQ2hlZXJmdWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJDaGlsbCBmdWxsc3RhY2suIFBvd2VyZWQgYnkgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBGdW4sIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJEZWNhZi1UUzogQnJld2VkIGZvciBjYWxtIGNvZGUuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBCcmFuZGluZ1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlNtb290aCBhcyB5b3VyIG1vcm5pbmcgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBDaGlsbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkFsbCB0aGUga2ljaywgbm9uZSBvZiB0aGUgY3Jhc2guXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBFbmVyZ2V0aWNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTaXAgYmFjayBhbmQgc2hpcCBmYXN0ZXIuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBGdW5cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJLZWVwIGNhbG0gYW5kIGNvZGUgRGVjYWYuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBQbGF5ZnVsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQ29kZSB3aXRob3V0IHRoZSBjYWZmZWluZSBzaGFrZXMuXCIsXG4gICAgVGFnczogXCJDb2ZmZWUtdGhlbWVkLCBIdW1vcm91c1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIllvdXIgZnVsbHN0YWNrLCBkZWNhZmZlaW5hdGVkLlwiLFxuICAgIFRhZ3M6IFwiQ29mZmVlLXRoZW1lZCwgVGVjaG5pY2FsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRGVjYWYtVFM6IFdoZXJlIHNtYXJ0IGNvbnRyYWN0cyBtZWV0IHNtYXJ0IGludGVyZmFjZXMuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBTbWFydCBDb250cmFjdHMsIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTaGlwIGRBcHBzIHdpdGhvdXQgdGhlIHN0cmVzcy5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIENoZWVyZnVsLCBEZXZlbG9wZXJcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJObyBDUlVELCBubyBwcm9ibGVtIFxcdTIwMTQgRGVjYWYgeW91ciBkYXRhLlwiLFxuICAgIFRhZ3M6IFwiRGF0YSwgTm8tQ1JVRCwgQ2hpbGxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJGcm9tIERJRCB0byBVSSwgd2l0aG91dCBicmVha2luZyBhIHN3ZWF0LlwiLFxuICAgIFRhZ3M6IFwiRElELCBTU0ksIFVJLCBDYWxtXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRGVjYWYtVFM6IFlvdXIgZnJvbnRlbmQgYWxyZWFkeSB1bmRlcnN0YW5kcyB5b3VyIHNtYXJ0IGNvbnRyYWN0LlwiLFxuICAgIFRhZ3M6IFwiU21hcnQgQ29udHJhY3RzLCBEWCwgTWFnaWNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTZWxmLXNvdmVyZWlnbiBieSBkZXNpZ24uIFByb2R1Y3RpdmUgYnkgZGVmYXVsdC5cIixcbiAgICBUYWdzOiBcIlNTSSwgRGV2ZWxvcGVyLCBDYWxtXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQnVpbGQgb25jZS4gRGVwbG95IGV2ZXJ5d2hlcmUuIERlY2VudHJhbGl6ZWQgYW5kIGRlbGlnaHRmdWwuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBNdWx0aS1wbGF0Zm9ybSwgSGFwcHlcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJEYXRhIHRoYXQgZGVmaW5lcyBpdHMgb3duIGRlc3RpbnkuXCIsXG4gICAgVGFnczogXCJTU0ksIERhdGEtZHJpdmVuLCBFbXBvd2VybWVudFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkdvb2RieWUgQ1JVRCwgaGVsbG8gaW50ZW50LWJhc2VkIGludGVyZmFjZXMuXCIsXG4gICAgVGFnczogXCJOby1DUlVELCBVSSwgVGVjaG5pY2FsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiVGhlIHNtb290aGVzdCBwYXRoIGZyb20gRElEIHRvIGRvbmUuXCIsXG4gICAgVGFnczogXCJESUQsIFdvcmtmbG93LCBDaGlsbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkJlY2F1c2UgeW91ciBkQXBwIGRlc2VydmVzIG1vcmUgdGhhbiBib2lsZXJwbGF0ZS5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIERldlgsIEVmZmljaWVuY3lcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJPd24geW91ciBkYXRhLiBPd24geW91ciBmbG93LlwiLFxuICAgIFRhZ3M6IFwiU1NJLCBDb250cm9sLCBPd25lcnNoaXBcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJXcml0ZSBsb2dpYyBsaWtlIGl0IGJlbG9uZ3Mgd2l0aCB0aGUgZGF0YSBcXHUyMDE0IGJlY2F1c2UgaXQgZG9lcy5cIixcbiAgICBUYWdzOiBcIkRhdGEgTG9naWMsIERldmVsb3BlciwgU21hcnRcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJGcm9tIHNtYXJ0IGNvbnRyYWN0cyB0byBzbWFydGVyIGZyb250ZW5kcy5cIixcbiAgICBUYWdzOiBcIlNtYXJ0IENvbnRyYWN0cywgVUksIERYXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiTm8gY2FmZmVpbmUuIE5vIENSVUQuIEp1c3QgdGhlIGZ1dHVyZS5cIixcbiAgICBUYWdzOiBcIk5vLUNSVUQsIENvZmZlZS10aGVtZWQsIEZ1dHVyaXN0aWNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJUaGUgZnV0dXJlIG9mIHdlYjMgVVggaXMgRGVjYWYuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBVWCwgVmlzaW9uXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQ29kZSB3aXRoIGNvbmZpZGVuY2UuIEdvdmVybiB3aXRoIGNsYXJpdHkuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBHb3Zlcm5hbmNlLCBDYWxtXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiSW50ZXJmYWNlcyB0aGF0IG9iZXkgdGhlIGRhdGEsIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZC5cIixcbiAgICBUYWdzOiBcIlVJLCBEYXRhIExvZ2ljLCBTZWxmLWF3YXJlXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQnJldyBidXNpbmVzcyBsb2dpYyByaWdodCBpbnRvIHlvdXIgYnl0ZXMuXCIsXG4gICAgVGFnczogXCJEYXRhIExvZ2ljLCBDb2ZmZWUtdGhlbWVkLCBGdW5cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJESURzIGRvbmUgZGlmZmVyZW50bHkgXFx1MjAxNCBhbmQgZGVsaWdodGZ1bGx5LlwiLFxuICAgIFRhZ3M6IFwiRElELCBTZWxmLVNvdmVyZWlnbiwgUGxheWZ1bFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkRlY2FmLVRTLVRTOiBXaGVyZSBibG9ja2NoYWluIGNvbnRyYWN0cyBtZWV0IHNtYXJ0IGludGVyZmFjZXMuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBTbWFydCBDb250cmFjdHMsIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTaGlwIGRBcHBzIHdpdGhvdXQgdGhlIHN0cmVzcy5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIENoZWVyZnVsLCBEZXZlbG9wZXJcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJObyBib2lsZXJwbGF0ZSwgbm8gcHJvYmxlbSBcXHUyMDE0IERlY2FmLVRTIHlvdXIgZGF0YS5cIixcbiAgICBUYWdzOiBcIkRhdGEsIE5vLUNSVUQsIENoaWxsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRnJvbSBESUQgdG8gVUksIHdpdGhvdXQgYnJlYWtpbmcgYSBzd2VhdC5cIixcbiAgICBUYWdzOiBcIkRJRCwgU1NJLCBVSSwgQ2FsbVwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOlxuICAgICAgXCJEZWNhZi1UUy1UUzogWW91ciBmcm9udGVuZCBhbHJlYWR5IHVuZGVyc3RhbmRzIHlvdXIgYmxvY2tjaGFpbiBjb250cmFjdC5cIixcbiAgICBUYWdzOiBcIlNtYXJ0IENvbnRyYWN0cywgRFgsIE1hZ2ljXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiU2VsZi1zb3ZlcmVpZ24gYnkgZGVzaWduLiBQcm9kdWN0aXZlIGJ5IGRlZmF1bHQuXCIsXG4gICAgVGFnczogXCJTU0ksIERldmVsb3BlciwgQ2FsbVwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkJ1aWxkIG9uY2UuIERlcGxveSBldmVyeXdoZXJlLiBEZWNlbnRyYWxpemVkIGFuZCBkZWxpZ2h0ZnVsLlwiLFxuICAgIFRhZ3M6IFwiQmxvY2tjaGFpbiwgTXVsdGktcGxhdGZvcm0sIEhhcHB5XCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRGF0YSB0aGF0IGRlZmluZXMgaXRzIG93biBkZXN0aW55LlwiLFxuICAgIFRhZ3M6IFwiU1NJLCBEYXRhLWRyaXZlbiwgRW1wb3dlcm1lbnRcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJHb29kYnllIGJvaWxlcnBsYXRlLCBoZWxsbyBpbnRlbnQtYmFzZWQgaW50ZXJmYWNlcy5cIixcbiAgICBUYWdzOiBcIk5vLUNSVUQsIFVJLCBUZWNobmljYWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJUaGUgc21vb3RoZXN0IHBhdGggZnJvbSBESUQgdG8gZG9uZS5cIixcbiAgICBUYWdzOiBcIkRJRCwgV29ya2Zsb3csIENoaWxsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQmVjYXVzZSB5b3VyIGRBcHAgZGVzZXJ2ZXMgbW9yZSB0aGFuIGJvaWxlcnBsYXRlLlwiLFxuICAgIFRhZ3M6IFwiQmxvY2tjaGFpbiwgRGV2WCwgRWZmaWNpZW5jeVwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIk93biB5b3VyIGRhdGEuIE93biB5b3VyIGZsb3cuXCIsXG4gICAgVGFnczogXCJTU0ksIENvbnRyb2wsIE93bmVyc2hpcFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIldyaXRlIGxvZ2ljIGxpa2UgaXQgYmVsb25ncyB3aXRoIHRoZSBkYXRhIFxcdTIwMTQgYmVjYXVzZSBpdCBkb2VzLlwiLFxuICAgIFRhZ3M6IFwiRGF0YSBMb2dpYywgRGV2ZWxvcGVyLCBTbWFydFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkZyb20gYmxvY2tjaGFpbiBjb250cmFjdHMgdG8gc21hcnRlciBmcm9udGVuZHMuXCIsXG4gICAgVGFnczogXCJTbWFydCBDb250cmFjdHMsIFVJLCBEWFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIk5vIGNhZmZlaW5lLiBObyBib2lsZXJwbGF0ZS4gSnVzdCB0aGUgZnV0dXJlLlwiLFxuICAgIFRhZ3M6IFwiTm8tQ1JVRCwgQ29mZmVlLXRoZW1lZCwgRnV0dXJpc3RpY1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlRoZSBmdXR1cmUgb2Ygd2ViMyBVWCBpcyBEZWNhZi1UUy5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIFVYLCBWaXNpb25cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJDb2RlIHdpdGggY29uZmlkZW5jZS4gR292ZXJuIHdpdGggY2xhcml0eS5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIEdvdmVybmFuY2UsIENhbG1cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJJbnRlcmZhY2VzIHRoYXQgb2JleSB0aGUgZGF0YSwgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kLlwiLFxuICAgIFRhZ3M6IFwiVUksIERhdGEgTG9naWMsIFNlbGYtYXdhcmVcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJCcmV3IGJ1c2luZXNzIGxvZ2ljIHJpZ2h0IGludG8geW91ciBieXRlcy5cIixcbiAgICBUYWdzOiBcIkRhdGEgTG9naWMsIENvZmZlZS10aGVtZWQsIEZ1blwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkRJRHMgZG9uZSBkaWZmZXJlbnRseSBcXHUyMDE0IGFuZCBkZWxpZ2h0ZnVsbHkuXCIsXG4gICAgVGFnczogXCJESUQsIFNlbGYtU292ZXJlaWduLCBQbGF5ZnVsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRGVjYWYtVFMtVFM6IFdoZXJlIGJsb2NrY2hhaW4gY29udHJhY3RzIG1lZXQgc21hcnQgaW50ZXJmYWNlcy5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIFNtYXJ0IENvbnRyYWN0cywgVGVjaFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlNoaXAgZEFwcHMgd2l0aG91dCB0aGUgc3RyZXNzLlwiLFxuICAgIFRhZ3M6IFwiQmxvY2tjaGFpbiwgQ2hlZXJmdWwsIERldmVsb3BlclwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIk5vIGJvaWxlcnBsYXRlLCBubyBwcm9ibGVtIFxcdTIwMTQgRGVjYWYtVFMgeW91ciBkYXRhLlwiLFxuICAgIFRhZ3M6IFwiRGF0YSwgTm8tQ1JVRCwgQ2hpbGxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJGcm9tIERJRCB0byBVSSwgd2l0aG91dCBicmVha2luZyBhIHN3ZWF0LlwiLFxuICAgIFRhZ3M6IFwiRElELCBTU0ksIFVJLCBDYWxtXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46XG4gICAgICBcIkRlY2FmLVRTLVRTOiBZb3VyIGZyb250ZW5kIGFscmVhZHkgdW5kZXJzdGFuZHMgeW91ciBibG9ja2NoYWluIGNvbnRyYWN0LlwiLFxuICAgIFRhZ3M6IFwiU21hcnQgQ29udHJhY3RzLCBEWCwgTWFnaWNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTZWxmLXNvdmVyZWlnbiBieSBkZXNpZ24uIFByb2R1Y3RpdmUgYnkgZGVmYXVsdC5cIixcbiAgICBUYWdzOiBcIlNTSSwgRGV2ZWxvcGVyLCBDYWxtXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQnVpbGQgb25jZS4gRGVwbG95IGV2ZXJ5d2hlcmUuIERlY2VudHJhbGl6ZWQgYW5kIGRlbGlnaHRmdWwuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBNdWx0aS1wbGF0Zm9ybSwgSGFwcHlcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJEYXRhIHRoYXQgZGVmaW5lcyBpdHMgb3duIGRlc3RpbnkuXCIsXG4gICAgVGFnczogXCJTU0ksIERhdGEtZHJpdmVuLCBFbXBvd2VybWVudFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkdvb2RieWUgYm9pbGVycGxhdGUsIGhlbGxvIGludGVudC1iYXNlZCBpbnRlcmZhY2VzLlwiLFxuICAgIFRhZ3M6IFwiTm8tQ1JVRCwgVUksIFRlY2huaWNhbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlRoZSBzbW9vdGhlc3QgcGF0aCBmcm9tIERJRCB0byBkb25lLlwiLFxuICAgIFRhZ3M6IFwiRElELCBXb3JrZmxvdywgQ2hpbGxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJCZWNhdXNlIHlvdXIgZEFwcCBkZXNlcnZlcyBtb3JlIHRoYW4gYm9pbGVycGxhdGUuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBEZXZYLCBFZmZpY2llbmN5XCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiT3duIHlvdXIgZGF0YS4gT3duIHlvdXIgZmxvdy5cIixcbiAgICBUYWdzOiBcIlNTSSwgQ29udHJvbCwgT3duZXJzaGlwXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiV3JpdGUgbG9naWMgbGlrZSBpdCBiZWxvbmdzIHdpdGggdGhlIGRhdGEgXFx1MjAxNCBiZWNhdXNlIGl0IGRvZXMuXCIsXG4gICAgVGFnczogXCJEYXRhIExvZ2ljLCBEZXZlbG9wZXIsIFNtYXJ0XCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRnJvbSBibG9ja2NoYWluIGNvbnRyYWN0cyB0byBzbWFydGVyIGZyb250ZW5kcy5cIixcbiAgICBUYWdzOiBcIlNtYXJ0IENvbnRyYWN0cywgVUksIERYXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiTm8gY2FmZmVpbmUuIE5vIGJvaWxlcnBsYXRlLiBKdXN0IHRoZSBmdXR1cmUuXCIsXG4gICAgVGFnczogXCJOby1DUlVELCBDb2ZmZWUtdGhlbWVkLCBGdXR1cmlzdGljXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiVGhlIGZ1dHVyZSBvZiB3ZWIzIFVYIGlzIERlY2FmLVRTLlwiLFxuICAgIFRhZ3M6IFwiQmxvY2tjaGFpbiwgVVgsIFZpc2lvblwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkNvZGUgd2l0aCBjb25maWRlbmNlLiBHb3Zlcm4gd2l0aCBjbGFyaXR5LlwiLFxuICAgIFRhZ3M6IFwiQmxvY2tjaGFpbiwgR292ZXJuYW5jZSwgQ2FsbVwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkludGVyZmFjZXMgdGhhdCBvYmV5IHRoZSBkYXRhLCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQuXCIsXG4gICAgVGFnczogXCJVSSwgRGF0YSBMb2dpYywgU2VsZi1hd2FyZVwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkJyZXcgYnVzaW5lc3MgbG9naWMgcmlnaHQgaW50byB5b3VyIGJ5dGVzLlwiLFxuICAgIFRhZ3M6IFwiRGF0YSBMb2dpYywgQ29mZmVlLXRoZW1lZCwgRnVuXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRElEcyBkb25lIGRpZmZlcmVudGx5IFxcdTIwMTQgYW5kIGRlbGlnaHRmdWxseS5cIixcbiAgICBUYWdzOiBcIkRJRCwgU2VsZi1Tb3ZlcmVpZ24sIFBsYXlmdWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJEZWNhZi1UUy1UUzogV2hlcmUgYmxvY2tjaGFpbiBjb250cmFjdHMgbWVldCBzbWFydCBpbnRlcmZhY2VzLlwiLFxuICAgIFRhZ3M6IFwiQmxvY2tjaGFpbiwgU21hcnQgQ29udHJhY3RzLCBUZWNoXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiU2hpcCBkQXBwcyB3aXRob3V0IHRoZSBzdHJlc3MuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBDaGVlcmZ1bCwgRGV2ZWxvcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiTm8gYm9pbGVycGxhdGUsIG5vIHByb2JsZW0gXFx1MjAxNCBEZWNhZi1UUyB5b3VyIGRhdGEuXCIsXG4gICAgVGFnczogXCJEYXRhLCBOby1DUlVELCBDaGlsbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkZyb20gRElEIHRvIFVJLCB3aXRob3V0IGJyZWFraW5nIGEgc3dlYXQuXCIsXG4gICAgVGFnczogXCJESUQsIFNTSSwgVUksIENhbG1cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjpcbiAgICAgIFwiRGVjYWYtVFMtVFM6IFlvdXIgZnJvbnRlbmQgYWxyZWFkeSB1bmRlcnN0YW5kcyB5b3VyIGJsb2NrY2hhaW4gY29udHJhY3QuXCIsXG4gICAgVGFnczogXCJTbWFydCBDb250cmFjdHMsIERYLCBNYWdpY1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlNlbGYtc292ZXJlaWduIGJ5IGRlc2lnbi4gUHJvZHVjdGl2ZSBieSBkZWZhdWx0LlwiLFxuICAgIFRhZ3M6IFwiU1NJLCBEZXZlbG9wZXIsIENhbG1cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJCdWlsZCBvbmNlLiBEZXBsb3kgZXZlcnl3aGVyZS4gRGVjZW50cmFsaXplZCBhbmQgZGVsaWdodGZ1bC5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIE11bHRpLXBsYXRmb3JtLCBIYXBweVwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkRhdGEgdGhhdCBkZWZpbmVzIGl0cyBvd24gZGVzdGlueS5cIixcbiAgICBUYWdzOiBcIlNTSSwgRGF0YS1kcml2ZW4sIEVtcG93ZXJtZW50XCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiR29vZGJ5ZSBib2lsZXJwbGF0ZSwgaGVsbG8gaW50ZW50LWJhc2VkIGludGVyZmFjZXMuXCIsXG4gICAgVGFnczogXCJOby1DUlVELCBVSSwgVGVjaG5pY2FsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiVGhlIHNtb290aGVzdCBwYXRoIGZyb20gRElEIHRvIGRvbmUuXCIsXG4gICAgVGFnczogXCJESUQsIFdvcmtmbG93LCBDaGlsbFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkJlY2F1c2UgeW91ciBkQXBwIGRlc2VydmVzIG1vcmUgdGhhbiBib2lsZXJwbGF0ZS5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIERldlgsIEVmZmljaWVuY3lcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJPd24geW91ciBkYXRhLiBPd24geW91ciBmbG93LlwiLFxuICAgIFRhZ3M6IFwiU1NJLCBDb250cm9sLCBPd25lcnNoaXBcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJXcml0ZSBsb2dpYyBsaWtlIGl0IGJlbG9uZ3Mgd2l0aCB0aGUgZGF0YSBcXHUyMDE0IGJlY2F1c2UgaXQgZG9lcy5cIixcbiAgICBUYWdzOiBcIkRhdGEgTG9naWMsIERldmVsb3BlciwgU21hcnRcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJGcm9tIGJsb2NrY2hhaW4gY29udHJhY3RzIHRvIHNtYXJ0ZXIgZnJvbnRlbmRzLlwiLFxuICAgIFRhZ3M6IFwiU21hcnQgQ29udHJhY3RzLCBVSSwgRFhcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJObyBjYWZmZWluZS4gTm8gYm9pbGVycGxhdGUuIEp1c3QgdGhlIGZ1dHVyZS5cIixcbiAgICBUYWdzOiBcIk5vLUNSVUQsIENvZmZlZS10aGVtZWQsIEZ1dHVyaXN0aWNcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJUaGUgZnV0dXJlIG9mIHdlYjMgVVggaXMgRGVjYWYtVFMuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBVWCwgVmlzaW9uXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQ29kZSB3aXRoIGNvbmZpZGVuY2UuIEdvdmVybiB3aXRoIGNsYXJpdHkuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBHb3Zlcm5hbmNlLCBDYWxtXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiSW50ZXJmYWNlcyB0aGF0IG9iZXkgdGhlIGRhdGEsIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZC5cIixcbiAgICBUYWdzOiBcIlVJLCBEYXRhIExvZ2ljLCBTZWxmLWF3YXJlXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQnJldyBidXNpbmVzcyBsb2dpYyByaWdodCBpbnRvIHlvdXIgYnl0ZXMuXCIsXG4gICAgVGFnczogXCJEYXRhIExvZ2ljLCBDb2ZmZWUtdGhlbWVkLCBGdW5cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJESURzIGRvbmUgZGlmZmVyZW50bHkgXFx1MjAxNCBhbmQgZGVsaWdodGZ1bGx5LlwiLFxuICAgIFRhZ3M6IFwiRElELCBTZWxmLVNvdmVyZWlnbiwgUGxheWZ1bFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkRlY2FmLVRTLVRTOiBXaGVyZSBibG9ja2NoYWluIGNvbnRyYWN0cyBtZWV0IHNtYXJ0IGludGVyZmFjZXMuXCIsXG4gICAgVGFnczogXCJCbG9ja2NoYWluLCBTbWFydCBDb250cmFjdHMsIFRlY2hcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJTaGlwIGRBcHBzIHdpdGhvdXQgdGhlIHN0cmVzcy5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIENoZWVyZnVsLCBEZXZlbG9wZXJcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJObyBib2lsZXJwbGF0ZSwgbm8gcHJvYmxlbSBcXHUyMDE0IERlY2FmLVRTIHlvdXIgZGF0YS5cIixcbiAgICBUYWdzOiBcIkRhdGEsIE5vLUNSVUQsIENoaWxsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRnJvbSBESUQgdG8gVUksIHdpdGhvdXQgYnJlYWtpbmcgYSBzd2VhdC5cIixcbiAgICBUYWdzOiBcIkRJRCwgU1NJLCBVSSwgQ2FsbVwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOlxuICAgICAgXCJEZWNhZi1UUy1UUzogWW91ciBmcm9udGVuZCBhbHJlYWR5IHVuZGVyc3RhbmRzIHlvdXIgYmxvY2tjaGFpbiBjb250cmFjdC5cIixcbiAgICBUYWdzOiBcIlNtYXJ0IENvbnRyYWN0cywgRFgsIE1hZ2ljXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiU2VsZi1zb3ZlcmVpZ24gYnkgZGVzaWduLiBQcm9kdWN0aXZlIGJ5IGRlZmF1bHQuXCIsXG4gICAgVGFnczogXCJTU0ksIERldmVsb3BlciwgQ2FsbVwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkJ1aWxkIG9uY2UuIERlcGxveSBldmVyeXdoZXJlLiBEZWNlbnRyYWxpemVkIGFuZCBkZWxpZ2h0ZnVsLlwiLFxuICAgIFRhZ3M6IFwiQmxvY2tjaGFpbiwgTXVsdGktcGxhdGZvcm0sIEhhcHB5XCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiRGF0YSB0aGF0IGRlZmluZXMgaXRzIG93biBkZXN0aW55LlwiLFxuICAgIFRhZ3M6IFwiU1NJLCBEYXRhLWRyaXZlbiwgRW1wb3dlcm1lbnRcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJHb29kYnllIGJvaWxlcnBsYXRlLCBoZWxsbyBpbnRlbnQtYmFzZWQgaW50ZXJmYWNlcy5cIixcbiAgICBUYWdzOiBcIk5vLUNSVUQsIFVJLCBUZWNobmljYWxcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJUaGUgc21vb3RoZXN0IHBhdGggZnJvbSBESUQgdG8gZG9uZS5cIixcbiAgICBUYWdzOiBcIkRJRCwgV29ya2Zsb3csIENoaWxsXCIsXG4gIH0sXG4gIHtcbiAgICBTbG9nYW46IFwiQmVjYXVzZSB5b3VyIGRBcHAgZGVzZXJ2ZXMgbW9yZSB0aGFuIGJvaWxlcnBsYXRlLlwiLFxuICAgIFRhZ3M6IFwiQmxvY2tjaGFpbiwgRGV2WCwgRWZmaWNpZW5jeVwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIk93biB5b3VyIGRhdGEuIE93biB5b3VyIGZsb3cuXCIsXG4gICAgVGFnczogXCJTU0ksIENvbnRyb2wsIE93bmVyc2hpcFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIldyaXRlIGxvZ2ljIGxpa2UgaXQgYmVsb25ncyB3aXRoIHRoZSBkYXRhIFxcdTIwMTQgYmVjYXVzZSBpdCBkb2VzLlwiLFxuICAgIFRhZ3M6IFwiRGF0YSBMb2dpYywgRGV2ZWxvcGVyLCBTbWFydFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkZyb20gYmxvY2tjaGFpbiBjb250cmFjdHMgdG8gc21hcnRlciBmcm9udGVuZHMuXCIsXG4gICAgVGFnczogXCJTbWFydCBDb250cmFjdHMsIFVJLCBEWFwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIk5vIGNhZmZlaW5lLiBObyBib2lsZXJwbGF0ZS4gSnVzdCB0aGUgZnV0dXJlLlwiLFxuICAgIFRhZ3M6IFwiTm8tQ1JVRCwgQ29mZmVlLXRoZW1lZCwgRnV0dXJpc3RpY1wiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIlRoZSBmdXR1cmUgb2Ygd2ViMyBVWCBpcyBEZWNhZi1UUy5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIFVYLCBWaXNpb25cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJDb2RlIHdpdGggY29uZmlkZW5jZS4gR292ZXJuIHdpdGggY2xhcml0eS5cIixcbiAgICBUYWdzOiBcIkJsb2NrY2hhaW4sIEdvdmVybmFuY2UsIENhbG1cIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJJbnRlcmZhY2VzIHRoYXQgb2JleSB0aGUgZGF0YSwgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kLlwiLFxuICAgIFRhZ3M6IFwiVUksIERhdGEgTG9naWMsIFNlbGYtYXdhcmVcIixcbiAgfSxcbiAge1xuICAgIFNsb2dhbjogXCJCcmV3IGJ1c2luZXNzIGxvZ2ljIHJpZ2h0IGludG8geW91ciBieXRlcy5cIixcbiAgICBUYWdzOiBcIkRhdGEgTG9naWMsIENvZmZlZS10aGVtZWQsIEZ1blwiLFxuICB9LFxuICB7XG4gICAgU2xvZ2FuOiBcIkRJRHMgZG9uZSBkaWZmZXJlbnRseSBcXHUyMDE0IGFuZCBkZWxpZ2h0ZnVsbHkuXCIsXG4gICAgVGFnczogXCJESUQsIFNlbGYtU292ZXJlaWduLCBQbGF5ZnVsXCIsXG4gIH0sXG5dO1xuIl19
@@ -18,4 +18,4 @@ new commands_1.BuildScripts()
18
18
  }
19
19
  process.exit(1);
20
20
  });
21
- //# sourceMappingURL=build-scripts.js.map
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vYnVpbGQtc2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUEwQjtBQUMxQiwwREFBK0M7QUFFL0MsSUFBSSx1QkFBWSxFQUFFO0tBQ2YsT0FBTyxFQUFFO0tBQ1QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ2hFLEtBQUssQ0FBQyxDQUFDLENBQVUsRUFBRSxFQUFFO0lBQ3BCLElBQUksQ0FBQztRQUNILElBQUksQ0FBRSxDQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEIsdUJBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsV0FBVztRQUVYLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuaW1wb3J0IHsgQnVpbGRTY3JpcHRzIH0gZnJvbSBcIi4uL2NsaS9jb21tYW5kc1wiO1xuXG5uZXcgQnVpbGRTY3JpcHRzKClcbiAgLmV4ZWN1dGUoKVxuICAudGhlbigoKSA9PiBCdWlsZFNjcmlwdHMubG9nLmluZm8oXCJTY3JpcHRzIGJ1aWx0IHN1Y2Nlc3NmdWxseS5cIikpXG4gIC5jYXRjaCgoZTogdW5rbm93bikgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIShlIGFzIGFueSk/LmxvZ2dlZCkge1xuICAgICAgICBCdWlsZFNjcmlwdHMubG9nLmVycm9yKGBFcnJvciBidWlsZGluZyBzY3JpcHRzOiAke2V9YCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBmYWxsYmFja1xuXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH0pO1xuIl19
@@ -10,4 +10,4 @@ new commands_1.ReleaseScript()
10
10
  commands_1.ReleaseScript.log.error(`Error preparing release: ${e}`);
11
11
  process.exit(1);
12
12
  });
13
- //# sourceMappingURL=tag-release.js.map
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLXJlbGVhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL3RhZy1yZWxlYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMEJBQTBCO0FBQzFCLDBEQUFnRDtBQUVoRCxJQUFJLHdCQUFhLEVBQUU7S0FDaEIsT0FBTyxFQUFFO0tBQ1QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ2pFLEtBQUssQ0FBQyxDQUFDLENBQVUsRUFBRSxFQUFFO0lBQ3BCLHdCQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbmltcG9ydCB7IFJlbGVhc2VTY3JpcHQgfSBmcm9tIFwiLi4vY2xpL2NvbW1hbmRzXCI7XG5cbm5ldyBSZWxlYXNlU2NyaXB0KClcbiAgLmV4ZWN1dGUoKVxuICAudGhlbigoKSA9PiBSZWxlYXNlU2NyaXB0LmxvZy5pbmZvKFwiUmVsZWFzZSBwdXNoZWQgc3VjY2Vzc2Z1bGx5XCIpKVxuICAuY2F0Y2goKGU6IHVua25vd24pID0+IHtcbiAgICBSZWxlYXNlU2NyaXB0LmxvZy5lcnJvcihgRXJyb3IgcHJlcGFyaW5nIHJlbGVhc2U6ICR7ZX1gKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH0pO1xuIl19
@@ -137,4 +137,4 @@ class Command extends logging_1.LoggedClass {
137
137
  }
138
138
  }
139
139
  exports.Command = Command;
140
- //# sourceMappingURL=command.js.map
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxnREFBMkM7QUFDM0MsK0NBQTBFO0FBQzFFLDBDQUFpRTtBQUNqRSxtREFBK0M7QUFDL0MsK0NBTTJCO0FBRTNCOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQXNCLE9BQWMsU0FBUSxxQkFBVztJQVFyRCxZQUNZLElBQVksRUFDWixTQUE0QixFQUFrQyxFQUM5RCxlQUF5QixFQUFFO1FBRXJDLEtBQUssRUFBRSxDQUFDO1FBSkUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFdBQU0sR0FBTixNQUFNLENBQXdEO1FBQzlELGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBR3JDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO2dCQUNwQyxRQUFRLEVBQUUsS0FBSztnQkFDZixLQUFLLEVBQUUsaUJBQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQzthQUNqQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUN6QixFQUFFLEVBQ0YsaUNBQXFCLEVBQ3JCLE1BQU0sQ0FDYyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBQ08sS0FBSyxDQUFDLGlCQUFpQjtRQUMvQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUEsb0JBQWUsR0FBRSxDQUFDO1FBQ3BELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUN6QixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FDN0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUFFLE9BQU87SUFDOUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDZEQUE2RDtJQUNuRCxJQUFJLENBQUMsSUFBcUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FDbEIsaUVBQWlFLENBQ2xFLENBQUM7SUFDSixDQUFDO0lBZUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0ErQkc7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sSUFBSSxHQUFvQixpQkFBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsTUFBTSxHQUFHLEdBQUcsMkJBQWlCLENBQUMsVUFBVSxDQUFDLGdDQUFvQixDQUFDLENBQUMsVUFBVSxDQUN2RSxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7UUFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFFdEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sSUFBQSxzQkFBaUIsR0FBRSxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLE1BQU07WUFDUixJQUFBLG9CQUFXLEVBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsb0JBQVcsRUFBRTtnQkFDeEIsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLEtBQUssRUFBRSxLQUFLO2dCQUNaLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FDSCxDQUFDO1FBRUosSUFBSSxNQUFNLENBQUM7UUFDWCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFVLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7UUFFRCxPQUFPLE1BQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUEzSkQsMEJBMkpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VBcmdzUmVzdWx0IH0gZnJvbSBcIi4uL2lucHV0L3R5cGVzXCI7XG5pbXBvcnQgeyBDb21tYW5kT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBVc2VySW5wdXQgfSBmcm9tIFwiLi4vaW5wdXQvaW5wdXRcIjtcbmltcG9ydCB7IERlZmF1bHRDb21tYW5kT3B0aW9ucywgRGVmYXVsdENvbW1hbmRWYWx1ZXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldERlcGVuZGVuY2llcywgZ2V0UGFja2FnZVZlcnNpb24gfSBmcm9tIFwiLi4vdXRpbHMvZnNcIjtcbmltcG9ydCB7IHByaW50QmFubmVyIH0gZnJvbSBcIi4uL291dHB1dC9jb21tb25cIjtcbmltcG9ydCB7XG4gIExvZ2dlZENsYXNzLFxuICBMb2dnZWRFbnZpcm9ubWVudCxcbiAgTG9nZ2VyLFxuICBMb2dnaW5nLFxuICBMb2dnaW5nQ29uZmlnLFxufSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcblxuLyoqXG4gKiBAY2xhc3MgQ29tbWFuZFxuICogQGFic3RyYWN0XG4gKiBAdGVtcGxhdGUgSSAtIFRoZSB0eXBlIG9mIGlucHV0IG9wdGlvbnMgZm9yIHRoZSBjb21tYW5kLlxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICogQGRlc2NyaXB0aW9uIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbW1hbmQgaW1wbGVtZW50YXRpb24uXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhIHN0cnVjdHVyZSBmb3IgY3JlYXRpbmcgY29tbWFuZC1saW5lIGludGVyZmFjZSBjb21tYW5kcyB3aXRoIGlucHV0IGhhbmRsaW5nLCBsb2dnaW5nLCBhbmQgZXhlY3V0aW9uIGZsb3cuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAqIEBwYXJhbSB7Q29tbWFuZE9wdGlvbnM8ST59IFtpbnB1dHNdIC0gVGhlIGlucHV0IG9wdGlvbnMgZm9yIHRoZSBjb21tYW5kLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gW3JlcXVpcmVtZW50c10gLSBUaGUgbGlzdCBvZiByZXF1aXJlZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBjb21tYW5kLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tbWFuZDxJLCBSPiBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgLyoqXG4gICAqIEBzdGF0aWNcbiAgICogQGRlc2NyaXB0aW9uIFN0YXRpYyBsb2dnZXIgZm9yIHRoZSBDb21tYW5kIGNsYXNzLlxuICAgKiBAdHlwZSB7TG9nZ2VyfVxuICAgKi9cbiAgc3RhdGljIGxvZzogTG9nZ2VyO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBpbnB1dHM6IENvbW1hbmRPcHRpb25zPEk+ID0ge30gYXMgdW5rbm93biBhcyBDb21tYW5kT3B0aW9uczxJPixcbiAgICBwcm90ZWN0ZWQgcmVxdWlyZW1lbnRzOiBzdHJpbmdbXSA9IFtdXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFDb21tYW5kLmxvZykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbW1hbmQsIFwibG9nXCIsIHtcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogTG9nZ2luZy5mb3IoQ29tbWFuZC5uYW1lKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmlucHV0cyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIERlZmF1bHRDb21tYW5kT3B0aW9ucyxcbiAgICAgIGlucHV0c1xuICAgICkgYXMgQ29tbWFuZE9wdGlvbnM8ST47XG4gIH1cblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKiBAYXN5bmNcbiAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhbGwgcmVxdWlyZWQgZGVwZW5kZW5jaWVzIGFyZSBwcmVzZW50LlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIGFuZCBjb21wYXJlcyBpdCBhZ2FpbnN0IHRoZSByZXF1aXJlZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBjb21tYW5kLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2hlY2sgaXMgY29tcGxldGUuXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENvbW1hbmRcbiAgICogICBwYXJ0aWNpcGFudCBnZXREZXBlbmRlbmNpZXNcbiAgICogICBwYXJ0aWNpcGFudCBTZXRcbiAgICogICBDb21tYW5kLT4+Z2V0RGVwZW5kZW5jaWVzOiBDYWxsXG4gICAqICAgZ2V0RGVwZW5kZW5jaWVzLS0+PkNvbW1hbmQ6IFJldHVybiB7cHJvZCwgZGV2LCBwZWVyfVxuICAgKiAgIENvbW1hbmQtPj5TZXQ6IENyZWF0ZSBTZXQgZnJvbSBwcm9kLCBkZXYsIHBlZXJcbiAgICogICBTZXQtLT4+Q29tbWFuZDogUmV0dXJuIHVuaXF1ZSBkZXBlbmRlbmNpZXNcbiAgICogICBDb21tYW5kLT4+Q29tbWFuZDogQ29tcGFyZSBhZ2FpbnN0IHJlcXVpcmVtZW50c1xuICAgKiAgIGFsdCBNaXNzaW5nIGRlcGVuZGVuY2llc1xuICAgKiAgICAgQ29tbWFuZC0+PkNvbW1hbmQ6IEFkZCB0byBtaXNzaW5nIGxpc3RcbiAgICogICBlbmRcbiAgICogICBOb3RlIG92ZXIgQ29tbWFuZDogSWYgbWlzc2luZy5sZW5ndGggPiAwLCBoYW5kbGUgbWlzc2luZyBkZXBlbmRlbmNpZXNcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBjaGVja1JlcXVpcmVtZW50cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IHByb2QsIGRldiwgcGVlciB9ID0gYXdhaXQgZ2V0RGVwZW5kZW5jaWVzKCk7XG4gICAgY29uc3QgbWlzc2luZyA9IFtdO1xuICAgIGNvbnN0IGZ1bGxMaXN0ID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoWy4uLnByb2QsIC4uLmRldiwgLi4ucGVlcl0pLnZhbHVlcygpXG4gICAgKS5tYXAoKGQpID0+IGQubmFtZSk7XG4gICAgZm9yIChjb25zdCBkZXAgb2YgdGhpcy5yZXF1aXJlbWVudHMpXG4gICAgICBpZiAoIWZ1bGxMaXN0LmluY2x1ZGVzKGRlcCkpIG1pc3NpbmcucHVzaChkZXApO1xuXG4gICAgaWYgKCFtaXNzaW5nLmxlbmd0aCkgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGhlbHAgaW5mb3JtYXRpb24gZm9yIHRoZSBjb21tYW5kLlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBzaG91bGQgYmUgb3ZlcnJpZGRlbiBpbiBkZXJpdmVkIGNsYXNzZXMgdG8gcHJvdmlkZSBzcGVjaWZpYyBoZWxwIGluZm9ybWF0aW9uLlxuICAgKiBAcGFyYW0ge1BhcnNlQXJnc1Jlc3VsdH0gYXJncyAtIFRoZSBwYXJzZWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHByb3RlY3RlZCBoZWxwKGFyZ3M6IFBhcnNlQXJnc1Jlc3VsdCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmxvZy5pbmZvKFxuICAgICAgYFRoaXMgaXMgaGVscC4gSSdtIG5vIHVzZSBiZWNhdXNlIEkgc2hvdWxkIGhhdmUgYmVlbiBvdmVycmlkZGVuLmBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGFic3RyYWN0XG4gICAqIEBkZXNjcmlwdGlvbiBSdW5zIHRoZSBjb21tYW5kIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIGRlcml2ZWQgY2xhc3NlcyB0byBkZWZpbmUgdGhlIGNvbW1hbmQncyBiZWhhdmlvci5cbiAgICogQHBhcmFtIHtQYXJzZUFyZ3NSZXN1bHR9IGFuc3dlcnMgLSBUaGUgcGFyc2VkIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFIgfCBzdHJpbmcgfCB2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgY29tbWFuZCdzIHJlc3VsdC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBydW48Uj4oXG4gICAgYW5zd2VyczogTG9nZ2luZ0NvbmZpZyAmXG4gICAgICB0eXBlb2YgRGVmYXVsdENvbW1hbmRWYWx1ZXMgJiB7IFtrIGluIGtleW9mIEldOiB1bmtub3duIH1cbiAgKTogUHJvbWlzZTxSIHwgc3RyaW5nIHwgdm9pZD47XG5cbiAgLyoqXG4gICAqIEBhc3luY1xuICAgKiBAZGVzY3JpcHRpb24gRXhlY3V0ZXMgdGhlIGNvbW1hbmQuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGhhbmRsZXMgdGhlIG92ZXJhbGwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGNvbW1hbmQsIGluY2x1ZGluZyBwYXJzaW5nIGFyZ3VtZW50cyxcbiAgICogc2V0dGluZyB1cCBsb2dnaW5nLCBjaGVja2luZyBmb3IgdmVyc2lvbiBvciBoZWxwIHJlcXVlc3RzLCBhbmQgcnVubmluZyB0aGUgY29tbWFuZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8UiB8IHN0cmluZyB8IHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBjb21tYW5kJ3MgcmVzdWx0LlxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDb21tYW5kXG4gICAqICAgcGFydGljaXBhbnQgVXNlcklucHV0XG4gICAqICAgcGFydGljaXBhbnQgTG9nZ2luZ1xuICAgKiAgIHBhcnRpY2lwYW50IGdldFBhY2thZ2VWZXJzaW9uXG4gICAqICAgcGFydGljaXBhbnQgcHJpbnRCYW5uZXJcbiAgICogICBDb21tYW5kLT4+VXNlcklucHV0OiBwYXJzZUFyZ3MoaW5wdXRzKVxuICAgKiAgIFVzZXJJbnB1dC0tPj5Db21tYW5kOiBSZXR1cm4gUGFyc2VBcmdzUmVzdWx0XG4gICAqICAgQ29tbWFuZC0+PkNvbW1hbmQ6IFByb2Nlc3Mgb3B0aW9uc1xuICAgKiAgIENvbW1hbmQtPj5Mb2dnaW5nOiBzZXRDb25maWcob3B0aW9ucylcbiAgICogICBhbHQgdmVyc2lvbiByZXF1ZXN0ZWRcbiAgICogICAgIENvbW1hbmQtPj5nZXRQYWNrYWdlVmVyc2lvbjogQ2FsbFxuICAgKiAgICAgZ2V0UGFja2FnZVZlcnNpb24tLT4+Q29tbWFuZDogUmV0dXJuIHZlcnNpb25cbiAgICogICBlbHNlIGhlbHAgcmVxdWVzdGVkXG4gICAqICAgICBDb21tYW5kLT4+Q29tbWFuZDogaGVscChhcmdzKVxuICAgKiAgIGVsc2UgYmFubmVyIHJlcXVlc3RlZFxuICAgKiAgICAgQ29tbWFuZC0+PnByaW50QmFubmVyOiBDYWxsXG4gICAqICAgZW5kXG4gICAqICAgQ29tbWFuZC0+PkNvbW1hbmQ6IHJ1bihhcmdzKVxuICAgKiAgIGFsdCBlcnJvciBvY2N1cnNcbiAgICogICAgIENvbW1hbmQtPj5Db21tYW5kOiBMb2cgZXJyb3JcbiAgICogICBlbmRcbiAgICogICBDb21tYW5kLS0+PkNvbW1hbmQ6IFJldHVybiByZXN1bHRcbiAgICovXG4gIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTxSIHwgc3RyaW5nIHwgdm9pZD4ge1xuICAgIGNvbnN0IGFyZ3M6IFBhcnNlQXJnc1Jlc3VsdCA9IFVzZXJJbnB1dC5wYXJzZUFyZ3ModGhpcy5pbnB1dHMpO1xuICAgIGNvbnN0IGVudiA9IExvZ2dlZEVudmlyb25tZW50LmFjY3VtdWxhdGUoRGVmYXVsdENvbW1hbmRWYWx1ZXMpLmFjY3VtdWxhdGUoXG4gICAgICBhcmdzLnZhbHVlc1xuICAgICk7XG4gICAgY29uc3QgeyB2ZXJzaW9uLCBoZWxwLCBiYW5uZXIgfSA9IGVudjtcblxuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICByZXR1cm4gZ2V0UGFja2FnZVZlcnNpb24oKTtcbiAgICB9XG5cbiAgICBpZiAoaGVscCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGVscChhcmdzKTtcbiAgICB9XG5cbiAgICBpZiAoYmFubmVyKVxuICAgICAgcHJpbnRCYW5uZXIoXG4gICAgICAgIHRoaXMubG9nLmZvcihwcmludEJhbm5lciwge1xuICAgICAgICAgIHRpbWVzdGFtcDogZmFsc2UsXG4gICAgICAgICAgc3R5bGU6IGZhbHNlLFxuICAgICAgICAgIGNvbnRleHQ6IGZhbHNlLFxuICAgICAgICAgIGxvZ0xldmVsOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICBsZXQgcmVzdWx0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhdGNoXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMucnVuKGVudiBhcyBhbnkpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBSO1xuICB9XG59XG4iXX0=
@@ -150,6 +150,10 @@ const options = {
150
150
  type: "boolean",
151
151
  default: false,
152
152
  },
153
+ entry: {
154
+ type: "string",
155
+ default: "./src/index.ts",
156
+ },
153
157
  banner: {
154
158
  type: "boolean",
155
159
  default: false,
@@ -233,6 +237,14 @@ const cjs2Transformer = (ext = ".cjs") => {
233
237
  };
234
238
  };
235
239
  };
240
+ /**
241
+ * @description A command-line script for building and bundling TypeScript projects.
242
+ * @summary This class provides a comprehensive build script that handles TypeScript compilation,
243
+ * bundling with Rollup, and documentation generation. It supports different build modes
244
+ * (development, production), module formats (CJS, ESM), and can be extended with custom
245
+ * configurations.
246
+ * @class BuildScripts
247
+ */
236
248
  class BuildScripts extends command_1.Command {
237
249
  constructor() {
238
250
  super("BuildScripts", Object.assign({}, constants_1.DefaultCommandOptions, options));
@@ -244,6 +256,12 @@ class BuildScripts extends command_1.Command {
244
256
  this.replacements[VERSION_STRING] = this.pkgVersion;
245
257
  this.replacements[PACKAGE_STRING] = name;
246
258
  }
259
+ /**
260
+ * @description Patches files with version and package name.
261
+ * @summary This method reads all files in a directory, finds placeholders for version
262
+ * and package name, and replaces them with the actual values from package.json.
263
+ * @param {string} p - The path to the directory containing the files to patch.
264
+ */
247
265
  patchFiles(p) {
248
266
  const log = this.log.for(this.patchFiles);
249
267
  const { name, version } = (0, utils_1.getPackage)();
@@ -430,6 +448,12 @@ class BuildScripts extends command_1.Command {
430
448
  }
431
449
  }
432
450
  }
451
+ /**
452
+ * @description Copies assets to the build output directory.
453
+ * @summary This method checks for the existence of an 'assets' directory in the source
454
+ * and copies it to the appropriate build output directory (lib or dist).
455
+ * @param {Modes} mode - The build mode (CJS or ESM).
456
+ */
433
457
  copyAssets(mode) {
434
458
  const log = this.log.for(this.copyAssets);
435
459
  let hasAssets = false;
@@ -443,7 +467,20 @@ class BuildScripts extends command_1.Command {
443
467
  if (hasAssets)
444
468
  (0, utils_1.copyFile)("./src/assets", `./${mode === Modes.CJS ? "lib" : "dist"}/assets`);
445
469
  }
446
- async bundle(mode, isDev, isLib, entryFile = "src/index.ts", nameOverride = this.pkgName, externalsArg, includeArg = [
470
+ /**
471
+ * @description Bundles the project using Rollup.
472
+ * @summary This method configures and runs Rollup to bundle the project. It handles
473
+ * different module formats, development and production builds, and external dependencies.
474
+ * @param {Modes} mode - The module format (CJS or ESM).
475
+ * @param {boolean} isDev - Whether it's a development build.
476
+ * @param {boolean} isLib - Whether it's a library build.
477
+ * @param {string} [entryFile="src/index.ts"] - The entry file for the bundle.
478
+ * @param {string} [nameOverride=this.pkgName] - The name of the output bundle.
479
+ * @param {string|string[]} [externalsArg] - A list of external dependencies.
480
+ * @param {string|string[]} [includeArg] - A list of dependencies to include.
481
+ * @returns {Promise<void>}
482
+ */
483
+ async bundle(mode, isDev, isLib, entryFile = "./src/index.ts", nameOverride = this.pkgName, externalsArg, includeArg = [
447
484
  "prompts",
448
485
  "styled-string-builder",
449
486
  "typed-object-accumulator",
@@ -620,7 +657,7 @@ class BuildScripts extends command_1.Command {
620
657
  throw new Error(`Failed to bundle: ${e}`);
621
658
  }
622
659
  }
623
- async buildByEnv(isDev, mode = BuildMode.ALL, includesArg, externalsArg) {
660
+ async buildByEnv(entryFile = "./src/index.ts", isDev, mode = BuildMode.ALL, includesArg, externalsArg) {
624
661
  // note: includes and externals will be passed through from run() into this method by callers
625
662
  try {
626
663
  (0, utils_1.deletePath)("lib");
@@ -636,27 +673,50 @@ class BuildScripts extends command_1.Command {
636
673
  catch (e) {
637
674
  // do nothing
638
675
  }
639
- fs_1.default.mkdirSync("lib");
640
- fs_1.default.mkdirSync("dist");
641
676
  if ([BuildMode.ALL, BuildMode.BUILD].includes(mode)) {
677
+ fs_1.default.mkdirSync("lib");
642
678
  await this.build(isDev, Modes.ESM);
643
679
  await this.build(isDev, Modes.CJS);
644
680
  this.patchFiles("lib");
645
681
  }
646
682
  if ([BuildMode.ALL, BuildMode.BUNDLE].includes(mode)) {
647
- await this.bundle(Modes.ESM, isDev, false, "src/index.ts", this.pkgName, externalsArg, includesArg);
648
- await this.bundle(Modes.CJS, isDev, false, "src/index.ts", this.pkgName, externalsArg, includesArg);
683
+ fs_1.default.mkdirSync("dist");
684
+ await this.bundle(Modes.ESM, isDev, false, entryFile || "./src/index.ts", this.pkgName, externalsArg, includesArg);
685
+ await this.bundle(Modes.CJS, isDev, false, entryFile || "./src/index.ts", this.pkgName, externalsArg, includesArg);
649
686
  this.patchFiles("dist");
650
687
  }
651
688
  this.copyAssets(Modes.CJS);
652
689
  this.copyAssets(Modes.ESM);
653
690
  }
654
- async buildDev(mode = BuildMode.ALL, includesArg, externalsArg) {
655
- return this.buildByEnv(true, mode, includesArg, externalsArg);
691
+ /**
692
+ * @description Builds the project for development.
693
+ * @summary This method runs the build process with development-specific configurations.
694
+ * @param {BuildMode} [mode=BuildMode.ALL] - The build mode (build, bundle, or all).
695
+ * @param {string|string[]} [includesArg] - A list of dependencies to include.
696
+ * @param {string|string[]} [externalsArg] - A list of external dependencies.
697
+ * @returns {Promise<void>}
698
+ */
699
+ async buildDev(entryFile = "./src/index.ts", mode = BuildMode.ALL, includesArg, externalsArg) {
700
+ return this.buildByEnv(entryFile, true, mode, includesArg, externalsArg);
656
701
  }
657
- async buildProd(mode = BuildMode.ALL, includesArg, externalsArg) {
658
- return this.buildByEnv(false, mode, includesArg, externalsArg);
702
+ /**
703
+ * @description Builds the project for production.
704
+ * @summary This method runs the build process with production-specific configurations,
705
+ * including minification and other optimizations.
706
+ * @param {BuildMode} [mode=BuildMode.ALL] - The build mode (build, bundle, or all).
707
+ * @param {string|string[]} [includesArg] - A list of dependencies to include.
708
+ * @param {string|string[]} [externalsArg] - A list of external dependencies.
709
+ * @returns {Promise<void>}
710
+ */
711
+ async buildProd(entryFile = "./src/index.ts", mode = BuildMode.ALL, includesArg, externalsArg) {
712
+ return this.buildByEnv(entryFile, false, mode, includesArg, externalsArg);
659
713
  }
714
+ /**
715
+ * @description Generates the project documentation.
716
+ * @summary This method uses JSDoc and other tools to generate HTML documentation for the project.
717
+ * It also patches the README.md file with version and package size information.
718
+ * @returns {Promise<void>}
719
+ */
660
720
  async buildDocs() {
661
721
  await (0, utils_1.runCommand)(`npm install better-docs taffydb`).promise;
662
722
  await (0, utils_1.runCommand)(`npx markdown-include ./workdocs/readme-md.json`).promise;
@@ -706,12 +766,12 @@ class BuildScripts extends command_1.Command {
706
766
  }
707
767
  }
708
768
  async run(answers) {
709
- const { dev, prod, docs, buildMode, includes, externals } = answers;
769
+ const { dev, prod, docs, buildMode, includes, externals, entry } = answers;
710
770
  if (dev) {
711
- return await this.buildDev(buildMode, includes, externals);
771
+ return await this.buildDev(entry || "./src/index.ts", buildMode, includes, externals);
712
772
  }
713
773
  if (prod) {
714
- return await this.buildProd(buildMode, includes, externals);
774
+ return await this.buildProd(entry || "./src/index.ts", buildMode, includes, externals);
715
775
  }
716
776
  if (docs) {
717
777
  return await this.buildDocs();
@@ -719,4 +779,4 @@ class BuildScripts extends command_1.Command {
719
779
  }
720
780
  }
721
781
  exports.BuildScripts = BuildScripts;
722
- //# sourceMappingURL=build-scripts.js.map
782
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvYnVpbGQtc2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QkEsOEJBUUM7QUFFRCwwQ0FXQztBQUVELHdEQWdDQztBQXJGRCw4Q0FBcUM7QUFFckMsa0RBQTJFO0FBQzNFLG1EQVVxQjtBQUNyQiw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLG1DQUEwRTtBQUMxRSxrRkFBbUQ7QUFDbkQsOEVBQStDO0FBQy9DLHFFQUEwRDtBQUMxRCxzRUFBdUM7QUFDdkMsbUNBQXdDO0FBQ3hDLCtDQUE0RDtBQUs1RCwrQ0FBaUM7QUFDakMsMkNBQTRFO0FBRTVFLFNBQWdCLFNBQVMsQ0FBQyxLQUF5QjtJQUNqRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELE9BQU8sR0FBRyxLQUFLLEVBQUU7U0FDZCxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDcEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsSUFBWTtJQUMxQyxtRUFBbUU7SUFDbkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsTUFBTSxLQUFL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LENBQUM7UUFDRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdnJCRCxvQ0F1ckJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCIuLi9jb21tYW5kXCI7XG5pbXBvcnQgeyBDb21tYW5kT3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgRGVmYXVsdENvbW1hbmRPcHRpb25zLCBEZWZhdWx0Q29tbWFuZFZhbHVlcyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGNvcHlGaWxlLFxuICBkZWxldGVQYXRoLFxuICBnZXRBbGxGaWxlcyxcbiAgZ2V0UGFja2FnZSxcbiAgcGF0Y2hGaWxlLFxuICByZW5hbWVGaWxlLFxuICBydW5Db21tYW5kLFxuICBnZXRGaWxlU2l6ZVppcHBlZCxcbiAgbGlzdE5vZGVNb2R1bGVzUGFja2FnZXMsXG59IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IElucHV0T3B0aW9ucywgT3V0cHV0T3B0aW9ucywgcm9sbHVwLCBSb2xsdXBCdWlsZCB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCB0eXBlc2NyaXB0IGZyb20gXCJAcm9sbHVwL3BsdWdpbi10eXBlc2NyaXB0XCI7XG5pbXBvcnQgY29tbW9uanMgZnJvbSBcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCI7XG5pbXBvcnQgeyBub2RlUmVzb2x2ZSB9IGZyb20gXCJAcm9sbHVwL3BsdWdpbi1ub2RlLXJlc29sdmVcIjtcbmltcG9ydCBqc29uIGZyb20gXCJAcm9sbHVwL3BsdWdpbi1qc29uXCI7XG5pbXBvcnQgeyBidWlsdGluTW9kdWxlcyB9IGZyb20gXCJtb2R1bGVcIjtcbmltcG9ydCB7IExvZ2dpbmdDb25maWcsIExvZ0xldmVsIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbi8vIGRlY2xhcmUgb3B0aW9uYWwgdGVyc2VyIG1vZHVsZSB0byBzYXRpc2Z5IFR5cGVTY3JpcHQgd2hlbiB0eXBlcyBhcmVuJ3QgaW5zdGFsbGVkXG5kZWNsYXJlIG1vZHVsZSBcIkByb2xsdXAvcGx1Z2luLXRlcnNlclwiO1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgRGlhZ25vc3RpYywgRW1pdFJlc3VsdCwgTW9kdWxlS2luZCwgU291cmNlRmlsZSB9IGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpc3QoaW5wdXQ/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgaWYgKCFpbnB1dCkgcmV0dXJuIFtdO1xuICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpXG4gICAgcmV0dXJuIGlucHV0Lm1hcCgoaSkgPT4gYCR7aX1gLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4gYCR7aW5wdXR9YFxuICAgIC5zcGxpdChcIixcIilcbiAgICAubWFwKChwKSA9PiBwLnRyaW0oKSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja2FnZVRvR2xvYmFsKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlbW92ZSBzY29wZSBhbmQgc3BsaXQgYnkgbm9uLWFscGhhbnVtZXJpYyBjaGFycywgdGhlbiBjYW1lbENhc2VcbiAgY29uc3Qgd2l0aG91dFNjb3BlID0gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpO1xuICBjb25zdCBwYXJ0cyA9IHdpdGhvdXRTY29wZS5zcGxpdCgvWy9cXC1fLl0rLykuZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4gcGFydHNcbiAgICAubWFwKChwLCBpKSA9PlxuICAgICAgaSA9PT0gMFxuICAgICAgICA/IHAucmVwbGFjZSgvW15hLXpBLVowLTldL2csIFwiXCIpXG4gICAgICAgIDogYCR7cC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke3Auc2xpY2UoMSl9YFxuICAgIClcbiAgICAuam9pbihcIlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VEZXBlbmRlbmNpZXMoKTogc3RyaW5nW10ge1xuICAvLyBUcnkgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZmlyc3RcbiAgbGV0IHBrZzogYW55O1xuICB0cnkge1xuICAgIHBrZyA9IGdldFBhY2thZ2UocHJvY2Vzcy5jd2QoKSkgYXMgYW55O1xuICB9IGNhdGNoIHtcbiAgICBwa2cgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBJZiBubyBkZXBlbmRlbmNpZXMgZm91bmQgaW4gY3dkLCB0cnkgdGhlIHBhY2thZ2UgbmV4dCB0byB0aGlzIHNvdXJjZSBmaWxlIChmYWxsYmFjayBmb3IgdGVzdHMpXG4gIHRyeSB7XG4gICAgY29uc3QgaGFzRGVwcyA9XG4gICAgICBwa2cgJiZcbiAgICAgIChPYmplY3Qua2V5cyhwa2cuZGVwZW5kZW5jaWVzIHx8IHt9KS5sZW5ndGggPiAwIHx8XG4gICAgICAgIE9iamVjdC5rZXlzKHBrZy5kZXZEZXBlbmRlbmNpZXMgfHwge30pLmxlbmd0aCA+IDAgfHxcbiAgICAgICAgT2JqZWN0LmtleXMocGtnLnBlZXJEZXBlbmRlbmNpZXMgfHwge30pLmxlbmd0aCA+IDApO1xuICAgIGlmICghaGFzRGVwcykge1xuICAgICAgY29uc3QgZmFsbGJhY2tEaXIgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcIi4uLy4uLy4uXCIpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGtnID0gZ2V0UGFja2FnZShmYWxsYmFja0RpcikgYXMgYW55O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGlnbm9yZSBhbmQga2VlcCBwa2cgYXMtaXNcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIGlnbm9yZVxuICB9XG5cbiAgY29uc3QgZGVwcyA9IE9iamVjdC5rZXlzKChwa2cgJiYgcGtnLmRlcGVuZGVuY2llcykgfHwge30pO1xuICBjb25zdCBwZWVyID0gT2JqZWN0LmtleXMoKHBrZyAmJiBwa2cucGVlckRlcGVuZGVuY2llcykgfHwge30pO1xuICBjb25zdCBkZXYgPSBPYmplY3Qua2V5cygocGtnICYmIHBrZy5kZXZEZXBlbmRlbmNpZXMpIHx8IHt9KTtcbiAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChbLi4uZGVwcywgLi4ucGVlciwgLi4uZGV2XSkpO1xufVxuXG5jb25zdCBWRVJTSU9OX1NUUklORyA9IFwiIyNWRVJTSU9OIyNcIjtcbmNvbnN0IFBBQ0tBR0VfU1RSSU5HID0gXCIjI1BBQ0tBR0UjI1wiO1xuY29uc3QgUEFDS0FHRV9TSVpFX1NUUklORyA9IFwiIyNQQUNLQUdFX1NJWkUjI1wiO1xuXG5lbnVtIE1vZGVzIHtcbiAgQ0pTID0gXCJjb21tb25qc1wiLFxuICBFU00gPSBcImVzMjAyMlwiLFxufVxuXG5lbnVtIEJ1aWxkTW9kZSB7XG4gIEJVSUxEID0gXCJidWlsZFwiLFxuICBCVU5ETEUgPSBcImJ1bmRsZVwiLFxuICBBTEwgPSBcImFsbFwiLFxufVxuXG5jb25zdCBvcHRpb25zID0ge1xuICBwcm9kOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGRldjoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBidWlsZE1vZGU6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIGRlZmF1bHQ6IEJ1aWxkTW9kZS5BTEwsXG4gIH0sXG4gIGluY2x1ZGVzOiB7XG4gICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICBkZWZhdWx0OiBcIlwiLFxuICB9LFxuICBleHRlcm5hbHM6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIGRlZmF1bHQ6IFwiXCIsXG4gIH0sXG4gIGRvY3M6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgY29tbWFuZHM6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZW50cnk6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIGRlZmF1bHQ6IFwiLi9zcmMvaW5kZXgudHNcIixcbiAgfSxcbiAgYmFubmVyOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xuXG5jb25zdCBjanMyVHJhbnNmb3JtZXIgPSAoZXh0ID0gXCIuY2pzXCIpID0+IHtcbiAgY29uc3QgbG9nID0gQnVpbGRTY3JpcHRzLmxvZy5mb3IoY2pzMlRyYW5zZm9ybWVyKTtcbiAgY29uc3QgcmVzb2x1dGlvbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICByZXR1cm4gKHRyYW5zZm9ybWF0aW9uQ29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0KSA9PiB7XG4gICAgcmV0dXJuIChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VEaXIgPSBwYXRoLmRpcm5hbWUoc291cmNlRmlsZS5maWxlTmFtZSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVQYXRoKGltcG9ydFBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjYWNoZUtleSA9IEpTT04uc3RyaW5naWZ5KFtzb3VyY2VEaXIsIGltcG9ydFBhdGhdKTtcbiAgICAgICAgY29uc3QgY2FjaGVkVmFsdWUgPSByZXNvbHV0aW9uQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgaWYgKGNhY2hlZFZhbHVlICE9IG51bGwpIHJldHVybiBjYWNoZWRWYWx1ZTtcblxuICAgICAgICBsZXQgcmVzb2x2ZWRQYXRoID0gaW1wb3J0UGF0aDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXNvbHZlZFBhdGggPSBwYXRoLnJlc29sdmUoc291cmNlRGlyLCByZXNvbHZlZFBhdGggKyBcIi50c1wiKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXNvbHZlIHBhdGggJHtpbXBvcnRQYXRofTogJHtlcnJvcn1gKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc3RhdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzdGF0ID0gZnMuc3RhdFN5bmMocmVzb2x2ZWRQYXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsb2cudmVyYm9zZShcbiAgICAgICAgICAgICAgYFRlc3RpbmcgZXhpc3RlbmNlIG9mIHBhdGggJHtyZXNvbHZlZFBhdGh9IGFzIGEgZm9sZGVyIGRlZmF1bHRpbmcgdG8gaW5kZXggZmlsZWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzdGF0ID0gZnMuc3RhdFN5bmMocmVzb2x2ZWRQYXRoLnJlcGxhY2UoL1xcLnRzJC9nbSwgXCJcIikpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUyOiB1bmtub3duKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBGYWlsZWQgdG8gcmVzb2x2ZSBwYXRoICR7aW1wb3J0UGF0aH06ICR7ZX0sICR7ZTJ9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICByZXNvbHZlZFBhdGggPSByZXNvbHZlZFBhdGgucmVwbGFjZSgvXFwudHMkL2dtLCBcIi9pbmRleC50c1wiKTtcblxuICAgICAgICBpZiAocGF0aC5pc0Fic29sdXRlKHJlc29sdmVkUGF0aCkpIHtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPVxuICAgICAgICAgICAgKC9cXC50c3g/JC8uZXhlYyhwYXRoLmJhc2VuYW1lKHJlc29sdmVkUGF0aCkpIHx8IFtdKVswXSB8fCB2b2lkIDA7XG5cbiAgICAgICAgICByZXNvbHZlZFBhdGggPVxuICAgICAgICAgICAgXCIuL1wiICtcbiAgICAgICAgICAgIHBhdGgucmVsYXRpdmUoXG4gICAgICAgICAgICAgIHNvdXJjZURpcixcbiAgICAgICAgICAgICAgcGF0aC5yZXNvbHZlKFxuICAgICAgICAgICAgICAgIHBhdGguZGlybmFtZShyZXNvbHZlZFBhdGgpLFxuICAgICAgICAgICAgICAgIHBhdGguYmFzZW5hbWUocmVzb2x2ZWRQYXRoLCBleHRlbnNpb24pICsgZXh0XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHV0aW9uQ2FjaGUuc2V0KGNhY2hlS2V5LCByZXNvbHZlZFBhdGgpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWRQYXRoO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHRzLlZpc2l0UmVzdWx0PHRzLk5vZGU+IHtcbiAgICAgICAgaWYgKHNob3VsZE11dGF0ZU1vZHVsZVNwZWNpZmllcihub2RlKSkge1xuICAgICAgICAgIGlmICh0cy5pc0ltcG9ydERlY2xhcmF0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlUGF0aChub2RlLm1vZHVsZVNwZWNpZmllci50ZXh0KTtcbiAgICAgICAgICAgIGNvbnN0IG5ld01vZHVsZVNwZWNpZmllciA9XG4gICAgICAgICAgICAgIHRyYW5zZm9ybWF0aW9uQ29udGV4dC5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwocmVzb2x2ZWRQYXRoKTtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1hdGlvbkNvbnRleHQuZmFjdG9yeS51cGRhdGVJbXBvcnREZWNsYXJhdGlvbihcbiAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgbm9kZS5tb2RpZmllcnMsXG4gICAgICAgICAgICAgIG5vZGUuaW1wb3J0Q2xhdXNlLFxuICAgICAgICAgICAgICBuZXdNb2R1bGVTcGVjaWZpZXIsXG4gICAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRzLmlzRXhwb3J0RGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHJlc29sdmVQYXRoKG5vZGUubW9kdWxlU3BlY2lmaWVyLnRleHQpO1xuICAgICAgICAgICAgY29uc3QgbmV3TW9kdWxlU3BlY2lmaWVyID1cbiAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25Db250ZXh0LmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChyZXNvbHZlZFBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWF0aW9uQ29udGV4dC5mYWN0b3J5LnVwZGF0ZUV4cG9ydERlY2xhcmF0aW9uKFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICBub2RlLm1vZGlmaWVycyxcbiAgICAgICAgICAgICAgbm9kZS5pc1R5cGVPbmx5LFxuICAgICAgICAgICAgICBub2RlLmV4cG9ydENsYXVzZSxcbiAgICAgICAgICAgICAgbmV3TW9kdWxlU3BlY2lmaWVyLFxuICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRzLnZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSwgdHJhbnNmb3JtYXRpb25Db250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gc2hvdWxkTXV0YXRlTW9kdWxlU3BlY2lmaWVyKG5vZGU6IHRzLk5vZGUpOiBub2RlIGlzIChcbiAgICAgICAgfCB0cy5JbXBvcnREZWNsYXJhdGlvblxuICAgICAgICB8IHRzLkV4cG9ydERlY2xhcmF0aW9uXG4gICAgICApICYge1xuICAgICAgICBtb2R1bGVTcGVjaWZpZXI6IHRzLlN0cmluZ0xpdGVyYWw7XG4gICAgICB9IHtcbiAgICAgICAgaWYgKCF0cy5pc0ltcG9ydERlY2xhcmF0aW9uKG5vZGUpICYmICF0cy5pc0V4cG9ydERlY2xhcmF0aW9uKG5vZGUpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICBpZiAobm9kZS5tb2R1bGVTcGVjaWZpZXIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBvbmx5IHdoZW4gbW9kdWxlIHNwZWNpZmllciBpcyB2YWxpZFxuICAgICAgICBpZiAoIXRzLmlzU3RyaW5nTGl0ZXJhbChub2RlLm1vZHVsZVNwZWNpZmllcikpIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gb25seSB3aGVuIHBhdGggaXMgcmVsYXRpdmVcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFub2RlLm1vZHVsZVNwZWNpZmllci50ZXh0LnN0YXJ0c1dpdGgoXCIuL1wiKSAmJlxuICAgICAgICAgICFub2RlLm1vZHVsZVNwZWNpZmllci50ZXh0LnN0YXJ0c1dpdGgoXCIuLi9cIilcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gb25seSB3aGVuIG1vZHVsZSBzcGVjaWZpZXIgaGFzIG5vIGV4dGVuc2lvblxuICAgICAgICBpZiAocGF0aC5leHRuYW1lKG5vZGUubW9kdWxlU3BlY2lmaWVyLnRleHQpICE9PSBcIlwiKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHMudmlzaXROb2RlKHNvdXJjZUZpbGUsIHZpc2l0Tm9kZSkgYXMgU291cmNlRmlsZTtcbiAgICB9O1xuICB9O1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQSBjb21tYW5kLWxpbmUgc2NyaXB0IGZvciBidWlsZGluZyBhbmQgYnVuZGxpbmcgVHlwZVNjcmlwdCBwcm9qZWN0cy5cbiAqIEBzdW1tYXJ5IFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIGJ1aWxkIHNjcmlwdCB0aGF0IGhhbmRsZXMgVHlwZVNjcmlwdCBjb21waWxhdGlvbixcbiAqIGJ1bmRsaW5nIHdpdGggUm9sbHVwLCBhbmQgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLiBJdCBzdXBwb3J0cyBkaWZmZXJlbnQgYnVpbGQgbW9kZXNcbiAqIChkZXZlbG9wbWVudCwgcHJvZHVjdGlvbiksIG1vZHVsZSBmb3JtYXRzIChDSlMsIEVTTSksIGFuZCBjYW4gYmUgZXh0ZW5kZWQgd2l0aCBjdXN0b21cbiAqIGNvbmZpZ3VyYXRpb25zLlxuICogQGNsYXNzIEJ1aWxkU2NyaXB0c1xuICovXG5leHBvcnQgY2xhc3MgQnVpbGRTY3JpcHRzIGV4dGVuZHMgQ29tbWFuZDxcbiAgQ29tbWFuZE9wdGlvbnM8dHlwZW9mIG9wdGlvbnM+LFxuICB2b2lkXG4+IHtcbiAgcHJpdmF0ZSByZXBsYWNlbWVudHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSBwa2dWZXJzaW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGtnTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFxuICAgICAgXCJCdWlsZFNjcmlwdHNcIixcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRDb21tYW5kT3B0aW9ucywgb3B0aW9ucykgYXMgQ29tbWFuZE9wdGlvbnM8XG4gICAgICAgIHR5cGVvZiBvcHRpb25zXG4gICAgICA+XG4gICAgKTtcbiAgICBjb25zdCBwa2cgPSBnZXRQYWNrYWdlKCkgYXMgeyBuYW1lOiBzdHJpbmc7IHZlcnNpb246IHN0cmluZyB9O1xuICAgIGNvbnN0IHsgbmFtZSwgdmVyc2lvbiB9ID0gcGtnO1xuICAgIHRoaXMucGtnTmFtZSA9IG5hbWUuaW5jbHVkZXMoXCJAXCIpID8gbmFtZS5zcGxpdChcIi9cIilbMV0gOiBuYW1lO1xuICAgIHRoaXMucGtnVmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy5yZXBsYWNlbWVudHNbVkVSU0lPTl9TVFJJTkddID0gdGhpcy5wa2dWZXJzaW9uO1xuICAgIHRoaXMucmVwbGFjZW1lbnRzW1BBQ0tBR0VfU1RSSU5HXSA9IG5hbWU7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhdGNoZXMgZmlsZXMgd2l0aCB2ZXJzaW9uIGFuZCBwYWNrYWdlIG5hbWUuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIHJlYWRzIGFsbCBmaWxlcyBpbiBhIGRpcmVjdG9yeSwgZmluZHMgcGxhY2Vob2xkZXJzIGZvciB2ZXJzaW9uXG4gICAqIGFuZCBwYWNrYWdlIG5hbWUsIGFuZCByZXBsYWNlcyB0aGVtIHdpdGggdGhlIGFjdHVhbCB2YWx1ZXMgZnJvbSBwYWNrYWdlLmpzb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwIC0gVGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBmaWxlcyB0byBwYXRjaC5cbiAgICovXG4gIHBhdGNoRmlsZXMocDogc3RyaW5nKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMucGF0Y2hGaWxlcyk7XG4gICAgY29uc3QgeyBuYW1lLCB2ZXJzaW9uIH0gPSBnZXRQYWNrYWdlKCkgYXMgYW55O1xuICAgIGxvZy5pbmZvKGBQYXRjaGluZyAke25hbWV9ICR7dmVyc2lvbn0gbW9kdWxlIGluICR7cH0uLi5gKTtcbiAgICBjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMocCk7XG4gICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSlcbiAgICAgIGZzLnJlYWRkaXJTeW5jKHAsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICAgIC5maWx0ZXIoKHApID0+IHAuaXNGaWxlKCkpXG4gICAgICAgIC5mb3JFYWNoKChmaWxlKSA9PlxuICAgICAgICAgIHBhdGNoRmlsZShcbiAgICAgICAgICAgIHBhdGguam9pbihmaWxlLnBhcmVudFBhdGgsIGZpbGUubmFtZSksXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLnJlcGxhY2VtZW50cykucmVkdWNlKFxuICAgICAgICAgICAgICAoYWNjOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgVkVSU0lPTl9TVFJJTkc6XG4gICAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZyhcIkZvdW5kIFZFUlNJT04gc3RyaW5nIHRvIHJlcGxhY2VcIik7XG4gICAgICAgICAgICAgICAgICAgIGFjY1tgVkVSU0lPTiA9IFwiJHtWRVJTSU9OX1NUUklOR31cIjtgXSA9XG4gICAgICAgICAgICAgICAgICAgICAgYFZFUlNJT04gPSBcIiR7dmFsfVwiO2A7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBQQUNLQUdFX1NUUklORzpcbiAgICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKFwiRm91bmQgUEFDS0FHRV9OQU1FIHN0cmluZyB0byByZXBsYWNlXCIpO1xuICAgICAgICAgICAgICAgICAgICBhY2NbYFBBQ0tBR0VfTkFNRSA9IFwiJHtQQUNLQUdFX1NUUklOR31cIjtgXSA9XG4gICAgICAgICAgICAgICAgICAgICAgYFBBQ0tBR0VfTkFNRSA9IFwiJHt2YWx9XCI7YDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBhY2Nba2V5XSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge31cbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgbG9nLnZlcmJvc2UoYE1vZHVsZSAke25hbWV9ICR7dmVyc2lvbn0gcGF0Y2hlZCBpbiAke3B9Li4uYCk7XG4gIH1cblxuICBwcml2YXRlIHJlcG9ydERpYWdub3N0aWNzKFxuICAgIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW10sXG4gICAgbG9nTGV2ZWw6IExvZ0xldmVsXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgbXNnID0gdGhpcy5mb3JtYXREaWFnbm9zdGljcyhkaWFnbm9zdGljcyk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9nW2xvZ0xldmVsXShtc2cpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGdldCBsb2dnZXIgZm9yICR7bG9nTGV2ZWx9YCk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gbXNnO1xuICB9XG5cbiAgLy8gRm9ybWF0IGRpYWdub3N0aWNzIGludG8gYSBzaW5nbGUgc3RyaW5nIGZvciB0aHJvd2luZyBvciBsb2dnaW5nXG4gIHByaXZhdGUgZm9ybWF0RGlhZ25vc3RpY3MoZGlhZ25vc3RpY3M6IERpYWdub3N0aWNbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRpYWdub3N0aWNzXG4gICAgICAubWFwKChkaWFnbm9zdGljKSA9PiB7XG4gICAgICAgIGxldCBtZXNzYWdlID0gXCJcIjtcbiAgICAgICAgaWYgKGRpYWdub3N0aWMuZmlsZSAmJiBkaWFnbm9zdGljLnN0YXJ0KSB7XG4gICAgICAgICAgY29uc3QgeyBsaW5lLCBjaGFyYWN0ZXIgfSA9XG4gICAgICAgICAgICBkaWFnbm9zdGljLmZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZGlhZ25vc3RpYy5zdGFydCk7XG4gICAgICAgICAgbWVzc2FnZSArPSBgJHtkaWFnbm9zdGljLmZpbGUuZmlsZU5hbWV9ICgke2xpbmUgKyAxfSwke2NoYXJhY3RlciArIDF9KWA7XG4gICAgICAgIH1cbiAgICAgICAgbWVzc2FnZSArPVxuICAgICAgICAgIFwiOiBcIiArIHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoZGlhZ25vc3RpYy5tZXNzYWdlVGV4dCwgXCJcXG5cIik7XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgfSlcbiAgICAgIC5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkQ29uZmlnRmlsZShjb25maWdGaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgLy8gUmVhZCBjb25maWcgZmlsZVxuICAgIGNvbnN0IGNvbmZpZ0ZpbGVUZXh0ID0gZnMucmVhZEZpbGVTeW5jKGNvbmZpZ0ZpbGVOYW1lKS50b1N0cmluZygpO1xuXG4gICAgLy8gUGFyc2UgSlNPTiwgYWZ0ZXIgcmVtb3ZpbmcgY29tbWVudHMuIEp1c3QgZmFuY2llciBKU09OLnBhcnNlXG4gICAgY29uc3QgcmVzdWx0ID0gdHMucGFyc2VDb25maWdGaWxlVGV4dFRvSnNvbihjb25maWdGaWxlTmFtZSwgY29uZmlnRmlsZVRleHQpO1xuICAgIGNvbnN0IGNvbmZpZ09iamVjdCA9IHJlc3VsdC5jb25maWc7XG4gICAgaWYgKCFjb25maWdPYmplY3QpIHtcbiAgICAgIHRoaXMucmVwb3J0RGlhZ25vc3RpY3MoW3Jlc3VsdC5lcnJvciFdLCBMb2dMZXZlbC5lcnJvcik7XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCBjb25maWcgaW5mcm9tYXRpb25cbiAgICBjb25zdCBjb25maWdQYXJzZVJlc3VsdCA9IHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KFxuICAgICAgY29uZmlnT2JqZWN0LFxuICAgICAgdHMuc3lzLFxuICAgICAgcGF0aC5kaXJuYW1lKGNvbmZpZ0ZpbGVOYW1lKVxuICAgICk7XG4gICAgaWYgKGNvbmZpZ1BhcnNlUmVzdWx0LmVycm9ycy5sZW5ndGggPiAwKVxuICAgICAgdGhpcy5yZXBvcnREaWFnbm9zdGljcyhjb25maWdQYXJzZVJlc3VsdC5lcnJvcnMsIExvZ0xldmVsLmVycm9yKTtcblxuICAgIHJldHVybiBjb25maWdQYXJzZVJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZXZhbERpYWdub3N0aWNzKGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW10pIHtcbiAgICBpZiAoZGlhZ25vc3RpY3MgJiYgZGlhZ25vc3RpY3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZXJyb3JzID0gZGlhZ25vc3RpY3MuZmlsdGVyKFxuICAgICAgICAoZCkgPT4gZC5jYXRlZ29yeSA9PT0gdHMuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yXG4gICAgICApO1xuICAgICAgY29uc3Qgd2FybmluZ3MgPSBkaWFnbm9zdGljcy5maWx0ZXIoXG4gICAgICAgIChkKSA9PiBkLmNhdGVnb3J5ID09PSB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuV2FybmluZ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gZGlhZ25vc3RpY3MuZmlsdGVyKFxuICAgICAgICAoZCkgPT4gZC5jYXRlZ29yeSA9PT0gdHMuRGlhZ25vc3RpY0NhdGVnb3J5LlN1Z2dlc3Rpb25cbiAgICAgICk7XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IGRpYWdub3N0aWNzLmZpbHRlcihcbiAgICAgICAgKGQpID0+IGQuY2F0ZWdvcnkgPT09IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlXG4gICAgICApO1xuICAgICAgLy8gTG9nIGRpYWdub3N0aWNzIHRvIGNvbnNvbGVcblxuICAgICAgaWYgKHdhcm5pbmdzLmxlbmd0aCkgdGhpcy5yZXBvcnREaWFnbm9zdGljcyh3YXJuaW5ncywgTG9nTGV2ZWwud2Fybik7XG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnJlcG9ydERpYWdub3N0aWNzKGRpYWdub3N0aWNzIGFzIERpYWdub3N0aWNbXSwgTG9nTGV2ZWwuZXJyb3IpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFR5cGVTY3JpcHQgcmVwb3J0ZWQgJHtkaWFnbm9zdGljcy5sZW5ndGh9IGRpYWdub3N0aWMocykgZHVyaW5nIGNoZWNrOyBhYm9ydGluZy5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc3VnZ2VzdGlvbnMubGVuZ3RoKVxuICAgICAgICB0aGlzLnJlcG9ydERpYWdub3N0aWNzKHN1Z2dlc3Rpb25zLCBMb2dMZXZlbC5pbmZvKTtcbiAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGgpIHRoaXMucmVwb3J0RGlhZ25vc3RpY3MobWVzc2FnZXMsIExvZ0xldmVsLmluZm8pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJlQ2hlY2tEaWFnbm9zdGljcyhwcm9ncmFtOiB0cy5Qcm9ncmFtKSB7XG4gICAgY29uc3QgZGlhZ25vc3RpY3MgPSB0cy5nZXRQcmVFbWl0RGlhZ25vc3RpY3MocHJvZ3JhbSk7XG4gICAgdGhpcy5ldmFsRGlhZ25vc3RpY3MoZGlhZ25vc3RpY3MgYXMgYW55KTtcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIFR5cGVTY3JpcHQgcHJvZ3JhbSBmb3IgdGhlIGN1cnJlbnQgdHNjb25maWcgYW5kIGZhaWwgaWYgdGhlcmUgYXJlIGFueSBlcnJvciBkaWFnbm9zdGljcy5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja1RzRGlhZ25vc3RpY3MoXG4gICAgaXNEZXY6IGJvb2xlYW4sXG4gICAgbW9kZTogTW9kZXMsXG4gICAgYnVuZGxlID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuY2hlY2tUc0RpYWdub3N0aWNzKTtcbiAgICBsZXQgdHNDb25maWc7XG4gICAgdHJ5IHtcbiAgICAgIHRzQ29uZmlnID0gdGhpcy5yZWFkQ29uZmlnRmlsZShcIi4vdHNjb25maWcuanNvblwiKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSB0c2NvbmZpZy5qc29uOiAke2V9YCk7XG4gICAgfVxuXG4gICAgaWYgKGJ1bmRsZSkge1xuICAgICAgdHNDb25maWcub3B0aW9ucy5tb2R1bGUgPSBNb2R1bGVLaW5kLkFNRDtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMub3V0RGlyID0gXCJkaXN0XCI7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLmlzb2xhdGVkTW9kdWxlcyA9IGZhbHNlO1xuICAgICAgdHNDb25maWcub3B0aW9ucy5vdXRGaWxlID0gdGhpcy5wa2dOYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLm91dERpciA9IGBsaWIke21vZGUgPT09IE1vZGVzLkVTTSA/IFwiL2VzbVwiIDogXCJcIn1gO1xuICAgICAgdHNDb25maWcub3B0aW9ucy5tb2R1bGUgPVxuICAgICAgICBtb2RlID09PSBNb2Rlcy5FU00gPyBNb2R1bGVLaW5kLkVTMjAyMiA6IE1vZHVsZUtpbmQuQ29tbW9uSlM7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIFR5cGVTY3JpcHQgZW1pdHMgaW5saW5lIHNvdXJjZSBtYXBzIGZvciBib3RoIGRldiBhbmQgcHJvZCAoYnVuZGxlcnMgd2lsbCBjb250cm9sIGV4dGVybmFsIG1hcHMpXG4gICAgLy8gS2VlcCBjb21tZW50cyBpbiBUUyBlbWl0IGJ5IGRlZmF1bHQ7IGJ1bmRsaW5nL21pbmlmaWNhdGlvbiB3aWxsIGhhbmRsZSByZW1vdmFsIHdoZXJlIHJlcXVlc3RlZC5cbiAgICAvLyBFbWl0IGV4dGVybmFsIHNvdXJjZSBtYXBzIGZyb20gVHlwZVNjcmlwdCBzbyBlZGl0b3JzL2RlYnVnZ2VycyBjYW4gZmluZCB0aGVtLlxuICAgIC8vIFR1cm4gb2ZmIGlubGluZSBtYXBzL3NvdXJjZXMgc28gYnVuZGxlcnMgKFJvbGx1cCkgY2FuIGNvbnRyb2wgd2hldGhlciBtYXBzIGFyZSBpbmxpbmVkIG9yIHdyaXR0ZW4gZXh0ZXJuYWxseS5cbiAgICB0c0NvbmZpZy5vcHRpb25zLmlubGluZVNvdXJjZU1hcCA9IGZhbHNlO1xuICAgIHRzQ29uZmlnLm9wdGlvbnMuaW5saW5lU291cmNlcyA9IGZhbHNlO1xuICAgIHRzQ29uZmlnLm9wdGlvbnMuc291cmNlTWFwID0gdHJ1ZTtcblxuICAgIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKHRzQ29uZmlnLmZpbGVOYW1lcywgdHNDb25maWcub3B0aW9ucyk7XG4gICAgdGhpcy5wcmVDaGVja0RpYWdub3N0aWNzKHByb2dyYW0pO1xuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYFR5cGVTY3JpcHQgY2hlY2tzIHBhc3NlZCAoJHtidW5kbGUgPyBcImJ1bmRsZVwiIDogXCJub3JtYWxcIn0gbW9kZSkuYFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkVHMoaXNEZXY6IGJvb2xlYW4sIG1vZGU6IE1vZGVzLCBidW5kbGUgPSBmYWxzZSkge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmJ1aWxkVHMpO1xuICAgIGxvZy5pbmZvKFxuICAgICAgYEJ1aWxkaW5nICR7dGhpcy5wa2dOYW1lfSAke3RoaXMucGtnVmVyc2lvbn0gbW9kdWxlICgke21vZGV9KSBpbiAke2lzRGV2ID8gXCJkZXZcIiA6IFwicHJvZFwifSBtb2RlLi4uYFxuICAgICk7XG4gICAgbGV0IHRzQ29uZmlnO1xuICAgIHRyeSB7XG4gICAgICB0c0NvbmZpZyA9IHRoaXMucmVhZENvbmZpZ0ZpbGUoXCIuL3RzY29uZmlnLmpzb25cIik7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgdHNjb25maWcuanNvbjogJHtlfWApO1xuICAgIH1cblxuICAgIGlmIChidW5kbGUpIHtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMubW9kdWxlID0gTW9kdWxlS2luZC5BTUQ7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLm91dERpciA9IFwiZGlzdFwiO1xuICAgICAgdHNDb25maWcub3B0aW9ucy5pc29sYXRlZE1vZHVsZXMgPSBmYWxzZTtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMub3V0RmlsZSA9IHRoaXMucGtnTmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHNDb25maWcub3B0aW9ucy5vdXREaXIgPSBgbGliJHttb2RlID09PSBNb2Rlcy5FU00gPyBcIi9lc21cIiA6IFwiXCJ9YDtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMubW9kdWxlID1cbiAgICAgICAgbW9kZSA9PT0gTW9kZXMuRVNNID8gTW9kdWxlS2luZC5FUzIwMjIgOiBNb2R1bGVLaW5kLkNvbW1vbkpTO1xuICAgIH1cblxuICAgIC8vIEFsd2F5cyBlbWl0IGlubGluZSBzb3VyY2UgbWFwcyBmcm9tIHRzYyAoYnVuZGxlciB3aWxsIGVtaXQgZXh0ZXJuYWwgbWFwcyBmb3IgcHJvZHVjdGlvbiBidW5kbGVzKS5cbiAgICAvLyBGb3IgZGV2IGJ1aWxkcyB3ZSB3YW50IFR5cGVTY3JpcHQgdG8gZW1pdCBpbmxpbmUgc291cmNlIG1hcHMgc28gbm8gc2VwYXJhdGUgLm1hcCBmaWxlcyBhcmUgcHJvZHVjZWQuXG4gICAgLy8gRm9yIHByb2R1Y3Rpb24gd2UgZW1pdCBleHRlcm5hbCBzb3VyY2UgbWFwcyBzbyB0aGUgYnVuZGxlciBjYW4gZnVydGhlciB0cmFuc2Zvcm0gYW5kIGVtaXQgdGhlbS5cbiAgICBpZiAoaXNEZXYpIHtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMuaW5saW5lU291cmNlTWFwID0gdHJ1ZTtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMuaW5saW5lU291cmNlcyA9IHRydWU7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLnNvdXJjZU1hcCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLmlubGluZVNvdXJjZU1hcCA9IGZhbHNlO1xuICAgICAgdHNDb25maWcub3B0aW9ucy5pbmxpbmVTb3VyY2VzID0gZmFsc2U7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLnNvdXJjZU1hcCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gRm9yIHByb2R1Y3Rpb24gYnVpbGRzIHdlIHN0aWxsIGtlZXAgVHlwZVNjcmlwdCBjb21tZW50cyAocmVtb3ZlQ29tbWVudHM9ZmFsc2UgaW4gdHNjb25maWcpXG4gICAgLy8gQnVuZGxlci90ZXJzZXIgd2lsbCBzdHJpcCBjb21tZW50cyBmb3IgcHJvZHVjdGlvbiBidW5kbGVzIGFzIHJlcXVlc3RlZC5cblxuICAgIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKHRzQ29uZmlnLmZpbGVOYW1lcywgdHNDb25maWcub3B0aW9ucyk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1hdGlvbnM6IHsgYmVmb3JlPzogYW55W10gfSA9IHt9O1xuICAgIGlmIChtb2RlID09PSBNb2Rlcy5DSlMpIHtcbiAgICAgIHRyYW5zZm9ybWF0aW9ucy5iZWZvcmUgPSBbY2pzMlRyYW5zZm9ybWVyKFwiLmNqc1wiKV07XG4gICAgfSBlbHNlIGlmIChtb2RlID09PSBNb2Rlcy5FU00pIHtcbiAgICAgIHRyYW5zZm9ybWF0aW9ucy5iZWZvcmUgPSBbY2pzMlRyYW5zZm9ybWVyKFwiLmpzXCIpXTtcbiAgICB9XG5cbiAgICBjb25zdCBlbWl0UmVzdWx0OiBFbWl0UmVzdWx0ID0gcHJvZ3JhbS5lbWl0KFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdHJhbnNmb3JtYXRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGFsbERpYWdub3N0aWNzID0gdHNcbiAgICAgIC5nZXRQcmVFbWl0RGlhZ25vc3RpY3MocHJvZ3JhbSlcbiAgICAgIC5jb25jYXQoZW1pdFJlc3VsdC5kaWFnbm9zdGljcyk7XG5cbiAgICB0aGlzLmV2YWxEaWFnbm9zdGljcyhhbGxEaWFnbm9zdGljcyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkKGlzRGV2OiBib29sZWFuLCBtb2RlOiBNb2RlcywgYnVuZGxlID0gZmFsc2UpIHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5idWlsZCk7XG4gICAgYXdhaXQgdGhpcy5idWlsZFRzKGlzRGV2LCBtb2RlLCBidW5kbGUpO1xuXG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgTW9kdWxlICR7dGhpcy5wa2dOYW1lfSAke3RoaXMucGtnVmVyc2lvbn0gKCR7bW9kZX0pIGJ1aWx0IGluICR7aXNEZXYgPyBcImRldlwiIDogXCJwcm9kXCJ9IG1vZGUuLi5gXG4gICAgKTtcbiAgICBpZiAobW9kZSA9PT0gTW9kZXMuQ0pTICYmICFidW5kbGUpIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gZ2V0QWxsRmlsZXMoXG4gICAgICAgIFwibGliXCIsXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLmVuZHNXaXRoKFwiLmpzXCIpICYmICFmaWxlLmluY2x1ZGVzKFwiL2VzbS9cIilcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBsb2cudmVyYm9zZShgUGF0Y2hpbmcgJHtmaWxlfSdzIGNqcyBpbXBvcnRzLi4uYCk7XG4gICAgICAgIGNvbnN0IGYgPSBmaWxlLnJlcGxhY2UoXCIuanNcIiwgXCIuY2pzXCIpO1xuICAgICAgICBhd2FpdCByZW5hbWVGaWxlKGZpbGUsIGYpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29waWVzIGFzc2V0cyB0byB0aGUgYnVpbGQgb3V0cHV0IGRpcmVjdG9yeS5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgY2hlY2tzIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuICdhc3NldHMnIGRpcmVjdG9yeSBpbiB0aGUgc291cmNlXG4gICAqIGFuZCBjb3BpZXMgaXQgdG8gdGhlIGFwcHJvcHJpYXRlIGJ1aWxkIG91dHB1dCBkaXJlY3RvcnkgKGxpYiBvciBkaXN0KS5cbiAgICogQHBhcmFtIHtNb2Rlc30gbW9kZSAtIFRoZSBidWlsZCBtb2RlIChDSlMgb3IgRVNNKS5cbiAgICovXG4gIGNvcHlBc3NldHMobW9kZTogTW9kZXMpIHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5jb3B5QXNzZXRzKTtcbiAgICBsZXQgaGFzQXNzZXRzID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGhhc0Fzc2V0cyA9IGZzLnN0YXRTeW5jKFwiLi9zcmMvYXNzZXRzXCIpLmlzRGlyZWN0b3J5KCk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgcmV0dXJuIGxvZy52ZXJib3NlKGBObyBhc3NldHMgZm91bmQgaW4gLi9zcmMvYXNzZXRzIHRvIGNvcHlgKTtcbiAgICB9XG4gICAgaWYgKGhhc0Fzc2V0cylcbiAgICAgIGNvcHlGaWxlKFxuICAgICAgICBcIi4vc3JjL2Fzc2V0c1wiLFxuICAgICAgICBgLi8ke21vZGUgPT09IE1vZGVzLkNKUyA/IFwibGliXCIgOiBcImRpc3RcIn0vYXNzZXRzYFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQnVuZGxlcyB0aGUgcHJvamVjdCB1c2luZyBSb2xsdXAuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgYW5kIHJ1bnMgUm9sbHVwIHRvIGJ1bmRsZSB0aGUgcHJvamVjdC4gSXQgaGFuZGxlc1xuICAgKiBkaWZmZXJlbnQgbW9kdWxlIGZvcm1hdHMsIGRldmVsb3BtZW50IGFuZCBwcm9kdWN0aW9uIGJ1aWxkcywgYW5kIGV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiAgICogQHBhcmFtIHtNb2Rlc30gbW9kZSAtIFRoZSBtb2R1bGUgZm9ybWF0IChDSlMgb3IgRVNNKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBpc0RldiAtIFdoZXRoZXIgaXQncyBhIGRldmVsb3BtZW50IGJ1aWxkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTGliIC0gV2hldGhlciBpdCdzIGEgbGlicmFyeSBidWlsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlbnRyeUZpbGU9XCJzcmMvaW5kZXgudHNcIl0gLSBUaGUgZW50cnkgZmlsZSBmb3IgdGhlIGJ1bmRsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lT3ZlcnJpZGU9dGhpcy5wa2dOYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBvdXRwdXQgYnVuZGxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW2V4dGVybmFsc0FyZ10gLSBBIGxpc3Qgb2YgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW2luY2x1ZGVBcmddIC0gQSBsaXN0IG9mIGRlcGVuZGVuY2llcyB0byBpbmNsdWRlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGJ1bmRsZShcbiAgICBtb2RlOiBNb2RlcyxcbiAgICBpc0RldjogYm9vbGVhbixcbiAgICBpc0xpYjogYm9vbGVhbixcbiAgICBlbnRyeUZpbGU6IHN0cmluZyA9IFwiLi9zcmMvaW5kZXgudHNcIixcbiAgICBuYW1lT3ZlcnJpZGU6IHN0cmluZyA9IHRoaXMucGtnTmFtZSxcbiAgICBleHRlcm5hbHNBcmc/OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBpbmNsdWRlQXJnOiBzdHJpbmcgfCBzdHJpbmdbXSA9IFtcbiAgICAgIFwicHJvbXB0c1wiLFxuICAgICAgXCJzdHlsZWQtc3RyaW5nLWJ1aWxkZXJcIixcbiAgICAgIFwidHlwZWQtb2JqZWN0LWFjY3VtdWxhdG9yXCIsXG4gICAgICBcIkBkZWNhZi10cy9sb2dnaW5nXCIsXG4gICAgXVxuICApIHtcbiAgICAvLyBSdW4gYSBUeXBlU2NyaXB0LW9ubHkgZGlhZ25vc3RpYyBjaGVjayBmb3IgdGhlIGJ1bmRsaW5nIGNvbmZpZ3VyYXRpb24gYW5kIGZhaWwgZmFzdCBvbiBhbnkgZXJyb3JzLlxuICAgIGF3YWl0IHRoaXMuY2hlY2tUc0RpYWdub3N0aWNzKGlzRGV2LCBtb2RlLCB0cnVlKTtcbiAgICBjb25zdCBpc0VzbSA9IG1vZGUgPT09IE1vZGVzLkVTTTtcbiAgICBjb25zdCBwa2dOYW1lID0gdGhpcy5wa2dOYW1lO1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nO1xuXG4gICAgLy8gbm9ybWFsaXplIGluY2x1ZGUgYW5kIGV4dGVybmFsc1xuICAgIGNvbnN0IGluY2x1ZGUgPSBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChbLi4uKHBhcnNlTGlzdChpbmNsdWRlQXJnKSBhcyBzdHJpbmdbXSldKVxuICAgICk7XG4gICAgbGV0IGV4dGVybmFsc0xpc3QgPSBwYXJzZUxpc3QoZXh0ZXJuYWxzQXJnKTtcbiAgICBpZiAoZXh0ZXJuYWxzTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIGlmIG5vIGV4dGVybmFscyBzcGVjaWZpZWQsIGxpc3QgdG9wLWxldmVsIHBhY2thZ2VzIGluIG5vZGVfbW9kdWxlcyAoZXhwYW5kIHNjb3BlcylcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4dGVybmFsc0xpc3QgPSBsaXN0Tm9kZU1vZHVsZXNQYWNrYWdlcyhcbiAgICAgICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJub2RlX21vZHVsZXNcIilcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBmYWxsYmFjayB0byBwYWNrYWdlLmpzb24gZGVwZW5kZW5jaWVzIGlmIGxpc3RpbmcgZmFpbHMgb3IgeWllbGRzIG5vdGhpbmdcbiAgICAgIH1cbiAgICAgIGlmICghZXh0ZXJuYWxzTGlzdCB8fCBleHRlcm5hbHNMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBleHRlcm5hbHNMaXN0ID0gZ2V0UGFja2FnZURlcGVuZGVuY2llcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGV4dCA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFtcbiAgICAgICAgLy8gYnVpbHRpbnMgYW5kIGFsd2F5cyBleHRlcm5hbCBydW50aW1lIGRlcHNcbiAgICAgICAgLi4uKGZ1bmN0aW9uIGJ1aWx0aW5MaXN0KCk6IHN0cmluZ1tdIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShidWlsdGluTW9kdWxlcykgPyBidWlsdGluTW9kdWxlcyA6IFtdXG4gICAgICAgICAgICApIGFzIHN0cmluZ1tdO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gZmFsbGJhY2sgdG8gYSByZWFzb25hYmxlIHN1YnNldCBpZiBgYnVpbHRpbk1vZHVsZXNgIGlzIHVuYXZhaWxhYmxlXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBcImZzXCIsXG4gICAgICAgICAgICAgIFwicGF0aFwiLFxuICAgICAgICAgICAgICBcInByb2Nlc3NcIixcbiAgICAgICAgICAgICAgXCJjaGlsZF9wcm9jZXNzXCIsXG4gICAgICAgICAgICAgIFwidXRpbFwiLFxuICAgICAgICAgICAgICBcImh0dHBzXCIsXG4gICAgICAgICAgICAgIFwiaHR0cFwiLFxuICAgICAgICAgICAgICBcIm9zXCIsXG4gICAgICAgICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgICAgICAgIFwiY3J5cHRvXCIsXG4gICAgICAgICAgICAgIFwiemxpYlwiLFxuICAgICAgICAgICAgICBcIm5ldFwiLFxuICAgICAgICAgICAgICBcInRsc1wiLFxuICAgICAgICAgICAgICBcInVybFwiLFxuICAgICAgICAgICAgICBcInF1ZXJ5c3RyaW5nXCIsXG4gICAgICAgICAgICAgIFwiYXNzZXJ0XCIsXG4gICAgICAgICAgICAgIFwiZXZlbnRzXCIsXG4gICAgICAgICAgICAgIFwidHR5XCIsXG4gICAgICAgICAgICAgIFwiZG5zXCIsXG4gICAgICAgICAgICAgIFwicXVlcnlzdHJpbmdcIixcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9KSgpLFxuICAgICAgICAuLi5leHRlcm5hbHNMaXN0LFxuICAgICAgXSlcbiAgICApO1xuXG4gICAgLy8gRm9yIHBsdWdpbi10eXBlc2NyaXB0IHdlIHdhbnQgaXQgdG8gZW1pdCBzb3VyY2UgbWFwcyAobm90IGlubGluZSkgc28gUm9sbHVwIGNhblxuICAgIC8vIGRlY2lkZSB3aGV0aGVyIHRvIGlubGluZSBvciBlbWl0IGV4dGVybmFsIGZpbGVzLiBUaGUgUm9sbHVwIG91dHB1dC5zb3VyY2VtYXBcbiAgICAvLyBjb250cm9scyBmaW5hbCBtYXAgcGxhY2VtZW50LiBEbyBOT1Qgc2V0IGEgbm9uLXN0YW5kYXJkIGBzb3VyY2VtYXBgIGZpZWxkIG9uXG4gICAgLy8gdGhlIHJvbGx1cCBpbnB1dCBvcHRpb25zIChSb2xsdXAgd2lsbCByZWplY3QgaXQpLlxuICAgIGNvbnN0IHJvbGx1cFNvdXJjZU1hcE91dHB1dDogZmFsc2UgfCB0cnVlIHwgXCJpbmxpbmVcIiB8IFwiaGlkZGVuXCIgPSBpc0RldlxuICAgICAgPyBcImlubGluZVwiXG4gICAgICA6IHRydWU7XG5cbiAgICBjb25zdCBwbHVnaW5zID0gW1xuICAgICAgdHlwZXNjcmlwdCh7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIG1vZHVsZTogXCJlc25leHRcIixcbiAgICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgICAgb3V0RGlyOiBpc0xpYiA/IFwiYmluXCIgOiBcImRpc3RcIixcbiAgICAgICAgICAvLyBGb3IgZGV2IGJ1bmRsZXMgZW1pdCBpbmxpbmUgc291cmNlIG1hcHMgKG5vIHNlcGFyYXRlIC5tYXAgZmlsZXMpLlxuICAgICAgICAgIC8vIEZvciBwcm9kIGJ1bmRsZXMgZW1pdCBleHRlcm5hbCBtYXBzIHNvIFJvbGx1cCBjYW4gd3JpdGUgdGhlbSB0byBkaXNrLlxuICAgICAgICAgIHNvdXJjZU1hcDogaXNEZXYgPyBmYWxzZSA6IHRydWUsXG4gICAgICAgICAgaW5saW5lU291cmNlTWFwOiBpc0RldiA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICBpbmxpbmVTb3VyY2VzOiBpc0RldiA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5jbHVkZTogW1wic3JjLyoqLyoudHNcIl0sXG4gICAgICAgIGV4Y2x1ZGU6IFtcIm5vZGVfbW9kdWxlc1wiLCBcIioqLyouc3BlYy50c1wiXSxcbiAgICAgICAgdHNjb25maWc6IFwiLi90c2NvbmZpZy5qc29uXCIsXG4gICAgICB9KSxcbiAgICAgIGpzb24oKSxcbiAgICBdO1xuXG4gICAgaWYgKGlzTGliKSB7XG4gICAgICBwbHVnaW5zLnB1c2goXG4gICAgICAgIGNvbW1vbmpzKHtcbiAgICAgICAgICBpbmNsdWRlOiBbXSxcbiAgICAgICAgICBleGNsdWRlOiBleHRlcm5hbHNMaXN0LFxuICAgICAgICB9KSxcbiAgICAgICAgbm9kZVJlc29sdmUoe1xuICAgICAgICAgIHJlc29sdmVPbmx5OiBpbmNsdWRlLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBwcm9kdWN0aW9uIG1pbmlmaWNhdGlvbjogYWRkIHRlcnNlciBsYXN0IHNvIGl0IHNlZXMgcHJpb3Igc291cmNlIG1hcHNcbiAgICB0cnkge1xuICAgICAgY29uc3QgdGVyc2VyTW9kOiBhbnkgPSBhd2FpdCBpbXBvcnQoXCJAcm9sbHVwL3BsdWdpbi10ZXJzZXJcIik7XG4gICAgICBjb25zdCB0ZXJzZXJGbiA9XG4gICAgICAgICh0ZXJzZXJNb2QgJiYgdGVyc2VyTW9kLnRlcnNlcikgfHwgdGVyc2VyTW9kLmRlZmF1bHQgfHwgdGVyc2VyTW9kO1xuXG4gICAgICBjb25zdCB0ZXJzZXJPcHRpb25zRGV2OiBhbnkgPSB7XG4gICAgICAgIHBhcnNlOiB7IGVjbWE6IDIwMjAgfSxcbiAgICAgICAgY29tcHJlc3M6IGZhbHNlLFxuICAgICAgICBtYW5nbGU6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IHtcbiAgICAgICAgICBjb21tZW50czogZmFsc2UsXG4gICAgICAgICAgYmVhdXRpZnk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0ZXJzZXJPcHRpb25zUHJvZDogYW55ID0ge1xuICAgICAgICBwYXJzZTogeyBlY21hOiAyMDIwIH0sXG4gICAgICAgIGNvbXByZXNzOiB7XG4gICAgICAgICAgZWNtYTogMjAyMCxcbiAgICAgICAgICBwYXNzZXM6IDUsXG4gICAgICAgICAgZHJvcF9jb25zb2xlOiB0cnVlLFxuICAgICAgICAgIGRyb3BfZGVidWdnZXI6IHRydWUsXG4gICAgICAgICAgdG9wbGV2ZWw6IHRydWUsXG4gICAgICAgICAgbW9kdWxlOiBpc0VzbSxcbiAgICAgICAgICB1bnNhZmU6IHRydWUsXG4gICAgICAgICAgdW5zYWZlX2Fycm93czogdHJ1ZSxcbiAgICAgICAgICB1bnNhZmVfY29tcHM6IHRydWUsXG4gICAgICAgICAgY29sbGFwc2VfdmFyczogdHJ1ZSxcbiAgICAgICAgICByZWR1Y2VfZnVuY3M6IHRydWUsXG4gICAgICAgICAgcmVkdWNlX3ZhcnM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG1hbmdsZToge1xuICAgICAgICAgIHRvcGxldmVsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBmb3JtYXQ6IHtcbiAgICAgICAgICBjb21tZW50czogZmFsc2UsXG4gICAgICAgICAgYXNjaWlfb25seTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9wbGV2ZWw6IHRydWUsXG4gICAgICB9O1xuXG4gICAgICBwbHVnaW5zLnB1c2godGVyc2VyRm4oaXNEZXYgPyB0ZXJzZXJPcHRpb25zRGV2IDogdGVyc2VyT3B0aW9uc1Byb2QpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGlmIHRlcnNlciBpc24ndCBhdmFpbGFibGUsIGlnbm9yZVxuICAgIH1cblxuICAgIGNvbnN0IGlucHV0OiBJbnB1dE9wdGlvbnMgPSB7XG4gICAgICBpbnB1dDogZW50cnlGaWxlLFxuICAgICAgcGx1Z2luczogcGx1Z2lucyxcbiAgICAgIGV4dGVybmFsOiBleHQsXG4gICAgICBvbndhcm46IHVuZGVmaW5lZCxcbiAgICAgIC8vIGVuYWJsZSB0cmVlLXNoYWtpbmcgZm9yIHByb2R1Y3Rpb24gYnVuZGxlc1xuICAgICAgdHJlZXNoYWtlOiAhaXNEZXYsXG4gICAgfSBhcyBhbnk7XG5cbiAgICAvLyBwcmVwYXJlIG91dHB1dCBnbG9iYWxzIG1hcHBpbmcgZm9yIGV4dGVybmFsc1xuICAgIGNvbnN0IGdsb2JhbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAvLyBpbmNsdWRlIGFsbCBleHRlcm5hbHMgYW5kIGJ1aWx0aW5zIChleHQpIHNvIFJvbGx1cCB3b24ndCBndWVzcyBuYW1lcyBmb3IgYnVpbHRpbnNcbiAgICBleHQuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgZ2xvYmFsc1tlXSA9IHBhY2thZ2VUb0dsb2JhbChlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG91dHB1dHM6IE91dHB1dE9wdGlvbnNbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgZmlsZTogYCR7aXNMaWIgPyBcImJpbi9cIiA6IFwiZGlzdC9cIn0ke25hbWVPdmVycmlkZSA/IG5hbWVPdmVycmlkZSA6IGAuYnVuZGxlLiR7IWlzRGV2ID8gXCJtaW5cIiA6IFwiXCJ9YH0ke2lzRXNtID8gXCIuanNcIiA6IFwiLmNqc1wifWAsXG4gICAgICAgIGZvcm1hdDogaXNMaWIgPyBcImNqc1wiIDogaXNFc20gPyBcImVzbVwiIDogXCJ1bWRcIixcbiAgICAgICAgbmFtZTogcGtnTmFtZSxcbiAgICAgICAgZXNNb2R1bGU6IGlzRXNtLFxuICAgICAgICAvLyBvdXRwdXQgc291cmNlbWFwOiBpbmxpbmUgZm9yIGRldiwgZXh0ZXJuYWwgZm9yIHByb2RcbiAgICAgICAgc291cmNlbWFwOiByb2xsdXBTb3VyY2VNYXBPdXRwdXQsXG4gICAgICAgIGdsb2JhbHM6IGdsb2JhbHMsXG4gICAgICAgIGV4cG9ydHM6IFwiYXV0b1wiLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJ1bmRsZSA9IGF3YWl0IHJvbGx1cChpbnB1dCBhcyBhbnkpO1xuICAgICAgLy8gb25seSBsb2cgd2F0Y2hGaWxlcyBhdCB2ZXJib3NlIGxldmVsIHRvIGF2b2lkIG5vaXN5IGNvbnNvbGUgb3V0cHV0XG4gICAgICBsb2cudmVyYm9zZShidW5kbGUud2F0Y2hGaWxlcyk7XG4gICAgICBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZU91dHB1dHMoYnVuZGxlOiBSb2xsdXBCdWlsZCkge1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dE9wdGlvbnMgb2Ygb3V0cHV0cykge1xuICAgICAgICAgIGF3YWl0IGJ1bmRsZS53cml0ZShvdXRwdXRPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBnZW5lcmF0ZU91dHB1dHMoYnVuZGxlKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBidW5kbGU6ICR7ZX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkQnlFbnYoXG4gICAgZW50cnlGaWxlOiBzdHJpbmcgPSBcIi4vc3JjL2luZGV4LnRzXCIsXG4gICAgaXNEZXY6IGJvb2xlYW4sXG4gICAgbW9kZTogQnVpbGRNb2RlID0gQnVpbGRNb2RlLkFMTCxcbiAgICBpbmNsdWRlc0FyZz86IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIGV4dGVybmFsc0FyZz86IHN0cmluZyB8IHN0cmluZ1tdXG4gICkge1xuICAgIC8vIG5vdGU6IGluY2x1ZGVzIGFuZCBleHRlcm5hbHMgd2lsbCBiZSBwYXNzZWQgdGhyb3VnaCBmcm9tIHJ1bigpIGludG8gdGhpcyBtZXRob2QgYnkgY2FsbGVyc1xuICAgIHRyeSB7XG4gICAgICBkZWxldGVQYXRoKFwibGliXCIpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGRlbGV0ZVBhdGgoXCJkaXN0XCIpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG5cbiAgICBpZiAoW0J1aWxkTW9kZS5BTEwsIEJ1aWxkTW9kZS5CVUlMRF0uaW5jbHVkZXMobW9kZSkpIHtcbiAgICAgIGZzLm1rZGlyU3luYyhcImxpYlwiKTtcbiAgICAgIGF3YWl0IHRoaXMuYnVpbGQoaXNEZXYsIE1vZGVzLkVTTSk7XG4gICAgICBhd2FpdCB0aGlzLmJ1aWxkKGlzRGV2LCBNb2Rlcy5DSlMpO1xuICAgICAgdGhpcy5wYXRjaEZpbGVzKFwibGliXCIpO1xuICAgIH1cblxuICAgIGlmIChbQnVpbGRNb2RlLkFMTCwgQnVpbGRNb2RlLkJVTkRMRV0uaW5jbHVkZXMobW9kZSkpIHtcbiAgICAgIGZzLm1rZGlyU3luYyhcImRpc3RcIik7XG4gICAgICBhd2FpdCB0aGlzLmJ1bmRsZShcbiAgICAgICAgTW9kZXMuRVNNLFxuICAgICAgICBpc0RldixcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGVudHJ5RmlsZSB8fCBcIi4vc3JjL2luZGV4LnRzXCIsXG4gICAgICAgIHRoaXMucGtnTmFtZSxcbiAgICAgICAgZXh0ZXJuYWxzQXJnLFxuICAgICAgICBpbmNsdWRlc0FyZ1xuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuYnVuZGxlKFxuICAgICAgICBNb2Rlcy5DSlMsXG4gICAgICAgIGlzRGV2LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZW50cnlGaWxlIHx8IFwiLi9zcmMvaW5kZXgudHNcIixcbiAgICAgICAgdGhpcy5wa2dOYW1lLFxuICAgICAgICBleHRlcm5hbHNBcmcsXG4gICAgICAgIGluY2x1ZGVzQXJnXG4gICAgICApO1xuICAgICAgdGhpcy5wYXRjaEZpbGVzKFwiZGlzdFwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvcHlBc3NldHMoTW9kZXMuQ0pTKTtcbiAgICB0aGlzLmNvcHlBc3NldHMoTW9kZXMuRVNNKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQnVpbGRzIHRoZSBwcm9qZWN0IGZvciBkZXZlbG9wbWVudC5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgcnVucyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIGRldmVsb3BtZW50LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAcGFyYW0ge0J1aWxkTW9kZX0gW21vZGU9QnVpbGRNb2RlLkFMTF0gLSBUaGUgYnVpbGQgbW9kZSAoYnVpbGQsIGJ1bmRsZSwgb3IgYWxsKS5cbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFtpbmNsdWRlc0FyZ10gLSBBIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIHRvIGluY2x1ZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbZXh0ZXJuYWxzQXJnXSAtIEEgbGlzdCBvZiBleHRlcm5hbCBkZXBlbmRlbmNpZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgYnVpbGREZXYoXG4gICAgZW50cnlGaWxlOiBzdHJpbmcgPSBcIi4vc3JjL2luZGV4LnRzXCIsXG4gICAgbW9kZTogQnVpbGRNb2RlID0gQnVpbGRNb2RlLkFMTCxcbiAgICBpbmNsdWRlc0FyZz86IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIGV4dGVybmFsc0FyZz86IHN0cmluZyB8IHN0cmluZ1tdXG4gICkge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkQnlFbnYoZW50cnlGaWxlLCB0cnVlLCBtb2RlLCBpbmNsdWRlc0FyZywgZXh0ZXJuYWxzQXJnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQnVpbGRzIHRoZSBwcm9qZWN0IGZvciBwcm9kdWN0aW9uLlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBydW5zIHRoZSBidWlsZCBwcm9jZXNzIHdpdGggcHJvZHVjdGlvbi1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyxcbiAgICogaW5jbHVkaW5nIG1pbmlmaWNhdGlvbiBhbmQgb3RoZXIgb3B0aW1pemF0aW9ucy5cbiAgICogQHBhcmFtIHtCdWlsZE1vZGV9IFttb2RlPUJ1aWxkTW9kZS5BTExdIC0gVGhlIGJ1aWxkIG1vZGUgKGJ1aWxkLCBidW5kbGUsIG9yIGFsbCkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbaW5jbHVkZXNBcmddIC0gQSBsaXN0IG9mIGRlcGVuZGVuY2llcyB0byBpbmNsdWRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW2V4dGVybmFsc0FyZ10gLSBBIGxpc3Qgb2YgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGJ1aWxkUHJvZChcbiAgICBlbnRyeUZpbGU6IHN0cmluZyA9IFwiLi9zcmMvaW5kZXgudHNcIixcbiAgICBtb2RlOiBCdWlsZE1vZGUgPSBCdWlsZE1vZGUuQUxMLFxuICAgIGluY2x1ZGVzQXJnPzogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgZXh0ZXJuYWxzQXJnPzogc3RyaW5nIHwgc3RyaW5nW11cbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRCeUVudihlbnRyeUZpbGUsIGZhbHNlLCBtb2RlLCBpbmNsdWRlc0FyZywgZXh0ZXJuYWxzQXJnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIHRoZSBwcm9qZWN0IGRvY3VtZW50YXRpb24uXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIHVzZXMgSlNEb2MgYW5kIG90aGVyIHRvb2xzIHRvIGdlbmVyYXRlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHByb2plY3QuXG4gICAqIEl0IGFsc28gcGF0Y2hlcyB0aGUgUkVBRE1FLm1kIGZpbGUgd2l0aCB2ZXJzaW9uIGFuZCBwYWNrYWdlIHNpemUgaW5mb3JtYXRpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgYnVpbGREb2NzKCkge1xuICAgIGF3YWl0IHJ1bkNvbW1hbmQoYG5wbSBpbnN0YWxsIGJldHRlci1kb2NzIHRhZmZ5ZGJgKS5wcm9taXNlO1xuICAgIGF3YWl0IHJ1bkNvbW1hbmQoYG5weCBtYXJrZG93bi1pbmNsdWRlIC4vd29ya2RvY3MvcmVhZG1lLW1kLmpzb25gKS5wcm9taXNlO1xuICAgIGF3YWl0IHJ1bkNvbW1hbmQoXG4gICAgICBgbnB4IGpzZG9jIC1jIC4vd29ya2RvY3MvanNkb2NzLmpzb24gLXQgLi9ub2RlX21vZHVsZXMvYmV0dGVyLWRvY3NgXG4gICAgKS5wcm9taXNlO1xuICAgIGF3YWl0IHJ1bkNvbW1hbmQoYG5wbSByZW1vdmUgYmV0dGVyLWRvY3MgdGFmZnlkYmApLnByb21pc2U7XG4gICAgW1xuICAgICAge1xuICAgICAgICBzcmM6IFwid29ya2RvY3MvYXNzZXRzXCIsXG4gICAgICAgIGRlc3Q6IFwiLi9kb2NzL3dvcmtkb2NzL2Fzc2V0c1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3JjOiBcIndvcmtkb2NzL3JlcG9ydHMvY292ZXJhZ2VcIixcbiAgICAgICAgZGVzdDogXCIuL2RvY3Mvd29ya2RvY3MvcmVwb3J0cy9jb3ZlcmFnZVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3JjOiBcIndvcmtkb2NzL3JlcG9ydHMvaHRtbFwiLFxuICAgICAgICBkZXN0OiBcIi4vZG9jcy93b3JrZG9jcy9yZXBvcnRzL2h0bWxcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNyYzogXCJ3b3JrZG9jcy9yZXNvdXJjZXNcIixcbiAgICAgICAgZGVzdDogXCIuL2RvY3Mvd29ya2RvY3MvcmVzb3VyY2VzXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzcmM6IFwiTElDRU5TRS5tZFwiLFxuICAgICAgICBkZXN0OiBcIi4vZG9jcy9MSUNFTlNFLm1kXCIsXG4gICAgICB9LFxuICAgIF0uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgY29uc3QgeyBzcmMsIGRlc3QgfSA9IGY7XG4gICAgICBjb3B5RmlsZShzcmMsIGRlc3QpO1xuICAgIH0pO1xuXG4gICAgLy8gcGF0Y2ggLi9SRUFETUUubWQgZmlsZSB0byByZXBsYWNlIHZlcnNpb24vcGFja2FnZS9wYWNrYWdlIHNpemUgc3RyaW5nc1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzaXplS2IgPSBhd2FpdCBnZXRGaWxlU2l6ZVppcHBlZChcbiAgICAgICAgcGF0aC5yZXNvbHZlKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcImRpc3RcIikpXG4gICAgICApO1xuICAgICAgdGhpcy5yZXBsYWNlbWVudHNbUEFDS0FHRV9TSVpFX1NUUklOR10gPSBgJHtzaXplS2J9IEtCYDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGlmIHdlIGNvdWxkbid0IGNvbXB1dGUgc2l6ZSwgbGVhdmUgcGxhY2Vob2xkZXIgb3Igc2V0IHRvIHVua25vd25cbiAgICAgIHRoaXMucmVwbGFjZW1lbnRzW1BBQ0tBR0VfU0laRV9TVFJJTkddID0gXCJ1bmtub3duXCI7XG4gICAgfVxuXG4gICAgLy8gUGF0Y2ggUkVBRE1FLm1kIGluIHByb2plY3Qgcm9vdFxuICAgIHRyeSB7XG4gICAgICBwYXRjaEZpbGUoXCIuL1JFQURNRS5tZFwiLCB0aGlzLnJlcGxhY2VtZW50cyk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuYnVpbGREb2NzIGFzIGFueSk7XG4gICAgICBsb2cudmVyYm9zZShgRmFpbGVkIHRvIHBhdGNoIFJFQURNRS5tZDogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBydW48Uj4oXG4gICAgYW5zd2VyczogTG9nZ2luZ0NvbmZpZyAmXG4gICAgICB0eXBlb2YgRGVmYXVsdENvbW1hbmRWYWx1ZXMgJiB7IFtrIGluIGtleW9mIHR5cGVvZiBvcHRpb25zXTogdW5rbm93biB9XG4gICk6IFByb21pc2U8c3RyaW5nIHwgdm9pZCB8IFI+IHtcbiAgICBjb25zdCB7IGRldiwgcHJvZCwgZG9jcywgYnVpbGRNb2RlLCBpbmNsdWRlcywgZXh0ZXJuYWxzLCBlbnRyeSB9ID1cbiAgICAgIGFuc3dlcnMgYXMgYW55O1xuICAgIGlmIChkZXYpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJ1aWxkRGV2KFxuICAgICAgICBlbnRyeSB8fCBcIi4vc3JjL2luZGV4LnRzXCIsXG4gICAgICAgIGJ1aWxkTW9kZSBhcyBCdWlsZE1vZGUsXG4gICAgICAgIGluY2x1ZGVzLFxuICAgICAgICBleHRlcm5hbHNcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChwcm9kKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5idWlsZFByb2QoXG4gICAgICAgIGVudHJ5IHx8IFwiLi9zcmMvaW5kZXgudHNcIixcbiAgICAgICAgYnVpbGRNb2RlIGFzIEJ1aWxkTW9kZSxcbiAgICAgICAgaW5jbHVkZXMsXG4gICAgICAgIGV4dGVybmFsc1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGRvY3MpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJ1aWxkRG9jcygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -44,16 +44,34 @@ declare const options: {
44
44
  type: string;
45
45
  default: boolean;
46
46
  };
47
+ entry: {
48
+ type: string;
49
+ default: string;
50
+ };
47
51
  banner: {
48
52
  type: string;
49
53
  default: boolean;
50
54
  };
51
55
  };
56
+ /**
57
+ * @description A command-line script for building and bundling TypeScript projects.
58
+ * @summary This class provides a comprehensive build script that handles TypeScript compilation,
59
+ * bundling with Rollup, and documentation generation. It supports different build modes
60
+ * (development, production), module formats (CJS, ESM), and can be extended with custom
61
+ * configurations.
62
+ * @class BuildScripts
63
+ */
52
64
  export declare class BuildScripts extends Command<CommandOptions<typeof options>, void> {
53
65
  private replacements;
54
66
  private readonly pkgVersion;
55
67
  private readonly pkgName;
56
68
  constructor();
69
+ /**
70
+ * @description Patches files with version and package name.
71
+ * @summary This method reads all files in a directory, finds placeholders for version
72
+ * and package name, and replaces them with the actual values from package.json.
73
+ * @param {string} p - The path to the directory containing the files to patch.
74
+ */
57
75
  patchFiles(p: string): void;
58
76
  private reportDiagnostics;
59
77
  private formatDiagnostics;
@@ -63,11 +81,53 @@ export declare class BuildScripts extends Command<CommandOptions<typeof options>
63
81
  private checkTsDiagnostics;
64
82
  private buildTs;
65
83
  private build;
84
+ /**
85
+ * @description Copies assets to the build output directory.
86
+ * @summary This method checks for the existence of an 'assets' directory in the source
87
+ * and copies it to the appropriate build output directory (lib or dist).
88
+ * @param {Modes} mode - The build mode (CJS or ESM).
89
+ */
66
90
  copyAssets(mode: Modes): void;
91
+ /**
92
+ * @description Bundles the project using Rollup.
93
+ * @summary This method configures and runs Rollup to bundle the project. It handles
94
+ * different module formats, development and production builds, and external dependencies.
95
+ * @param {Modes} mode - The module format (CJS or ESM).
96
+ * @param {boolean} isDev - Whether it's a development build.
97
+ * @param {boolean} isLib - Whether it's a library build.
98
+ * @param {string} [entryFile="src/index.ts"] - The entry file for the bundle.
99
+ * @param {string} [nameOverride=this.pkgName] - The name of the output bundle.
100
+ * @param {string|string[]} [externalsArg] - A list of external dependencies.
101
+ * @param {string|string[]} [includeArg] - A list of dependencies to include.
102
+ * @returns {Promise<void>}
103
+ */
67
104
  bundle(mode: Modes, isDev: boolean, isLib: boolean, entryFile?: string, nameOverride?: string, externalsArg?: string | string[], includeArg?: string | string[]): Promise<void>;
68
105
  private buildByEnv;
69
- buildDev(mode?: BuildMode, includesArg?: string | string[], externalsArg?: string | string[]): Promise<void>;
70
- buildProd(mode?: BuildMode, includesArg?: string | string[], externalsArg?: string | string[]): Promise<void>;
106
+ /**
107
+ * @description Builds the project for development.
108
+ * @summary This method runs the build process with development-specific configurations.
109
+ * @param {BuildMode} [mode=BuildMode.ALL] - The build mode (build, bundle, or all).
110
+ * @param {string|string[]} [includesArg] - A list of dependencies to include.
111
+ * @param {string|string[]} [externalsArg] - A list of external dependencies.
112
+ * @returns {Promise<void>}
113
+ */
114
+ buildDev(entryFile?: string, mode?: BuildMode, includesArg?: string | string[], externalsArg?: string | string[]): Promise<void>;
115
+ /**
116
+ * @description Builds the project for production.
117
+ * @summary This method runs the build process with production-specific configurations,
118
+ * including minification and other optimizations.
119
+ * @param {BuildMode} [mode=BuildMode.ALL] - The build mode (build, bundle, or all).
120
+ * @param {string|string[]} [includesArg] - A list of dependencies to include.
121
+ * @param {string|string[]} [externalsArg] - A list of external dependencies.
122
+ * @returns {Promise<void>}
123
+ */
124
+ buildProd(entryFile?: string, mode?: BuildMode, includesArg?: string | string[], externalsArg?: string | string[]): Promise<void>;
125
+ /**
126
+ * @description Generates the project documentation.
127
+ * @summary This method uses JSDoc and other tools to generate HTML documentation for the project.
128
+ * It also patches the README.md file with version and package size information.
129
+ * @returns {Promise<void>}
130
+ */
71
131
  buildDocs(): Promise<void>;
72
132
  protected run<R>(answers: LoggingConfig & typeof DefaultCommandValues & {
73
133
  [k in keyof typeof options]: unknown;
@@ -16,4 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./build-scripts.cjs"), exports);
18
18
  __exportStar(require("./tag-release.cjs"), exports);
19
- //# sourceMappingURL=index.js.map
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBZ0M7QUFDaEMsb0RBQThCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYnVpbGQtc2NyaXB0c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLXJlbGVhc2VcIjtcbiJdfQ==