@decaf-ts/utils 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/assets/slogans.json +802 -0
  2. package/dist/utils.cjs +4471 -0
  3. package/dist/utils.esm.cjs +4424 -0
  4. package/lib/bin/build-scripts.cjs +11 -0
  5. package/lib/bin/tag-release.cjs +1 -2
  6. package/lib/bin/update-scripts.cjs +1 -2
  7. package/lib/bin/update-scripts.d.ts +1 -0
  8. package/lib/cli/command.cjs +1 -2
  9. package/lib/cli/commands/build-scripts.cjs +270 -0
  10. package/lib/cli/commands/build-scripts.d.ts +50 -0
  11. package/lib/cli/commands/index.cjs +2 -2
  12. package/{dist/types → lib}/cli/commands/index.d.ts +1 -0
  13. package/lib/cli/commands/tag-release.cjs +1 -2
  14. package/lib/cli/commands/update-scripts.cjs +6 -3
  15. package/lib/cli/constants.cjs +1 -2
  16. package/lib/cli/index.cjs +1 -2
  17. package/lib/cli/types.cjs +1 -2
  18. package/lib/esm/assets/slogans.json +801 -801
  19. package/lib/esm/bin/build-scripts.d.ts +1 -0
  20. package/lib/esm/bin/build-scripts.js +9 -0
  21. package/lib/esm/bin/tag-release.d.ts +1 -0
  22. package/lib/esm/bin/tag-release.js +1 -2
  23. package/lib/esm/bin/update-scripts.d.ts +1 -0
  24. package/lib/esm/bin/update-scripts.js +1 -2
  25. package/lib/esm/cli/command.d.ts +110 -0
  26. package/lib/esm/cli/command.js +1 -2
  27. package/lib/esm/cli/commands/build-scripts.d.ts +50 -0
  28. package/lib/esm/cli/commands/build-scripts.js +263 -0
  29. package/lib/esm/cli/commands/index.d.ts +3 -0
  30. package/lib/esm/cli/commands/index.js +2 -2
  31. package/lib/esm/cli/commands/tag-release.d.ts +105 -0
  32. package/lib/esm/cli/commands/tag-release.js +1 -2
  33. package/lib/esm/cli/commands/update-scripts.d.ts +211 -0
  34. package/lib/esm/cli/commands/update-scripts.js +6 -3
  35. package/lib/esm/cli/constants.d.ts +73 -0
  36. package/lib/esm/cli/constants.js +1 -2
  37. package/lib/esm/cli/index.d.ts +4 -0
  38. package/lib/esm/cli/index.js +1 -2
  39. package/lib/esm/cli/types.d.ts +28 -0
  40. package/lib/esm/cli/types.js +1 -2
  41. package/{dist/types → lib/esm}/index.d.ts +2 -2
  42. package/lib/esm/index.js +3 -4
  43. package/lib/esm/input/index.js +1 -2
  44. package/{dist/types → lib/esm}/input/input.d.ts +3 -3
  45. package/lib/esm/input/input.js +1 -2
  46. package/lib/esm/input/types.js +1 -2
  47. package/lib/esm/output/common.js +1 -2
  48. package/lib/esm/output/index.js +1 -2
  49. package/lib/esm/output/logging.js +1 -2
  50. package/lib/esm/output/types.js +1 -2
  51. package/lib/esm/utils/accumulator.js +1 -2
  52. package/lib/esm/utils/constants.js +1 -2
  53. package/lib/esm/utils/environment.js +1 -2
  54. package/{dist/types → lib/esm}/utils/fs.d.ts +16 -0
  55. package/lib/esm/utils/fs.js +115 -2
  56. package/lib/esm/utils/http.js +1 -2
  57. package/lib/esm/utils/index.js +1 -2
  58. package/lib/esm/utils/md.js +1 -2
  59. package/lib/esm/utils/tests.js +1 -2
  60. package/lib/esm/utils/text.js +1 -2
  61. package/lib/esm/utils/timeout.js +1 -2
  62. package/lib/esm/utils/types.js +1 -2
  63. package/lib/esm/utils/utils.js +1 -2
  64. package/lib/esm/utils/web.js +1 -2
  65. package/lib/esm/writers/OutputWriter.js +1 -2
  66. package/lib/esm/writers/RegexpOutputWriter.js +1 -2
  67. package/lib/esm/writers/StandardOutputWriter.js +2 -4
  68. package/lib/esm/writers/index.js +1 -2
  69. package/lib/esm/writers/types.js +1 -2
  70. package/lib/index.cjs +3 -4
  71. package/lib/index.d.ts +39 -0
  72. package/lib/input/index.cjs +1 -2
  73. package/lib/input/index.d.ts +2 -0
  74. package/lib/input/input.cjs +1 -2
  75. package/lib/input/input.d.ts +472 -0
  76. package/lib/input/types.cjs +1 -2
  77. package/lib/input/types.d.ts +76 -0
  78. package/lib/output/common.cjs +1 -2
  79. package/lib/output/common.d.ts +51 -0
  80. package/lib/output/index.cjs +1 -2
  81. package/lib/output/index.d.ts +3 -0
  82. package/lib/output/logging.cjs +1 -2
  83. package/lib/output/logging.d.ts +177 -0
  84. package/lib/output/types.cjs +1 -2
  85. package/lib/output/types.d.ts +203 -0
  86. package/lib/utils/accumulator.cjs +1 -2
  87. package/lib/utils/accumulator.d.ts +105 -0
  88. package/lib/utils/constants.cjs +1 -2
  89. package/lib/utils/constants.d.ts +136 -0
  90. package/lib/utils/environment.cjs +1 -2
  91. package/lib/utils/environment.d.ts +57 -0
  92. package/lib/utils/fs.cjs +119 -2
  93. package/lib/utils/fs.d.ts +149 -0
  94. package/lib/utils/http.cjs +1 -2
  95. package/lib/utils/http.d.ts +41 -0
  96. package/lib/utils/index.cjs +1 -2
  97. package/lib/utils/index.d.ts +7 -0
  98. package/lib/utils/md.cjs +1 -2
  99. package/lib/utils/md.d.ts +156 -0
  100. package/lib/utils/tests.cjs +1 -2
  101. package/lib/utils/tests.d.ts +170 -0
  102. package/lib/utils/text.cjs +1 -2
  103. package/lib/utils/text.d.ts +106 -0
  104. package/lib/utils/timeout.cjs +1 -2
  105. package/lib/utils/timeout.d.ts +1 -0
  106. package/lib/utils/types.cjs +1 -2
  107. package/lib/utils/types.d.ts +81 -0
  108. package/lib/utils/utils.cjs +1 -2
  109. package/lib/utils/utils.d.ts +91 -0
  110. package/lib/utils/web.cjs +1 -2
  111. package/lib/utils/web.d.ts +7 -0
  112. package/lib/writers/OutputWriter.cjs +1 -2
  113. package/lib/writers/OutputWriter.d.ts +49 -0
  114. package/lib/writers/RegexpOutputWriter.cjs +1 -2
  115. package/lib/writers/RegexpOutputWriter.d.ts +69 -0
  116. package/lib/writers/StandardOutputWriter.cjs +2 -4
  117. package/lib/writers/StandardOutputWriter.d.ts +91 -0
  118. package/lib/writers/index.cjs +1 -2
  119. package/lib/writers/index.d.ts +4 -0
  120. package/lib/writers/types.cjs +1 -2
  121. package/lib/writers/types.d.ts +29 -0
  122. package/package.json +24 -30
  123. package/dist/esm/utils.js +0 -1
  124. package/dist/utils.js +0 -1
  125. /package/{dist/types/bin/tag-release.d.ts → lib/bin/build-scripts.d.ts} +0 -0
  126. /package/{dist/types/bin/update-scripts.d.ts → lib/bin/tag-release.d.ts} +0 -0
  127. /package/{dist/types → lib}/cli/command.d.ts +0 -0
  128. /package/{dist/types → lib}/cli/commands/tag-release.d.ts +0 -0
  129. /package/{dist/types → lib}/cli/commands/update-scripts.d.ts +0 -0
  130. /package/{dist/types → lib}/cli/constants.d.ts +0 -0
  131. /package/{dist/types → lib}/cli/index.d.ts +0 -0
  132. /package/{dist/types → lib}/cli/types.d.ts +0 -0
  133. /package/{dist/types → lib/esm}/input/index.d.ts +0 -0
  134. /package/{dist/types → lib/esm}/input/types.d.ts +0 -0
  135. /package/{dist/types → lib/esm}/output/common.d.ts +0 -0
  136. /package/{dist/types → lib/esm}/output/index.d.ts +0 -0
  137. /package/{dist/types → lib/esm}/output/logging.d.ts +0 -0
  138. /package/{dist/types → lib/esm}/output/types.d.ts +0 -0
  139. /package/{dist/types → lib/esm}/utils/accumulator.d.ts +0 -0
  140. /package/{dist/types → lib/esm}/utils/constants.d.ts +0 -0
  141. /package/{dist/types → lib/esm}/utils/environment.d.ts +0 -0
  142. /package/{dist/types → lib/esm}/utils/http.d.ts +0 -0
  143. /package/{dist/types → lib/esm}/utils/index.d.ts +0 -0
  144. /package/{dist/types → lib/esm}/utils/md.d.ts +0 -0
  145. /package/{dist/types → lib/esm}/utils/tests.d.ts +0 -0
  146. /package/{dist/types → lib/esm}/utils/text.d.ts +0 -0
  147. /package/{dist/types → lib/esm}/utils/timeout.d.ts +0 -0
  148. /package/{dist/types → lib/esm}/utils/types.d.ts +0 -0
  149. /package/{dist/types → lib/esm}/utils/utils.d.ts +0 -0
  150. /package/{dist/types → lib/esm}/utils/web.d.ts +0 -0
  151. /package/{dist/types → lib/esm}/writers/OutputWriter.d.ts +0 -0
  152. /package/{dist/types → lib/esm}/writers/RegexpOutputWriter.d.ts +0 -0
  153. /package/{dist/types → lib/esm}/writers/StandardOutputWriter.d.ts +0 -0
  154. /package/{dist/types → lib/esm}/writers/index.d.ts +0 -0
  155. /package/{dist/types → lib/esm}/writers/types.d.ts +0 -0
@@ -98,6 +98,120 @@ export function writeFile(path, data) {
98
98
  throw new Error(`Error writing file "${path}": ${error}`);
99
99
  }
100
100
  }
101
+ /**
102
+ * @description Retrieves all files recursively from a directory.
103
+ * @summary Traverses through directories and subdirectories to collect all file paths.
104
+ *
105
+ * @param {string} p - The path to start searching from.
106
+ * @param filter
107
+ * @return {string[]} Array of file paths.
108
+ *
109
+ * @function getAllFiles
110
+ *
111
+ * @memberOf module:fs-utils
112
+ */
113
+ export function getAllFiles(p, filter) {
114
+ const log = logger.for(getAllFiles);
115
+ const files = [];
116
+ try {
117
+ log.verbose(`Retrieving all files from "${p}"...`);
118
+ const entries = fs.readdirSync(p);
119
+ entries.forEach((entry) => {
120
+ const fullPath = path.join(p, entry);
121
+ const stat = fs.statSync(fullPath);
122
+ if (stat.isFile()) {
123
+ files.push(fullPath);
124
+ }
125
+ else if (stat.isDirectory()) {
126
+ files.push(...getAllFiles(fullPath));
127
+ }
128
+ });
129
+ if (!filter)
130
+ return files;
131
+ return files.filter(filter);
132
+ }
133
+ catch (error) {
134
+ log.verbose(`Error retrieving files from "${p}": ${error}`);
135
+ throw new Error(`Error retrieving files from "${p}": ${error}`);
136
+ }
137
+ }
138
+ export async function renameFile(source, dest) {
139
+ const log = logger.for(renameFile);
140
+ let descriptorSource, descriptorDest;
141
+ try {
142
+ descriptorSource = fs.statSync(source);
143
+ }
144
+ catch (error) {
145
+ log.verbose(`Source path "${source}" does not exist: ${error}`);
146
+ throw new Error(`Source path "${source}" does not exist: ${error}`);
147
+ }
148
+ try {
149
+ descriptorDest = fs.statSync(dest);
150
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
151
+ }
152
+ catch (e) {
153
+ // do nothing. its ok
154
+ }
155
+ if (descriptorDest) {
156
+ log.verbose(`Destination path "${dest}" already exists`);
157
+ throw new Error(`Destination path "${dest}" already exists`);
158
+ }
159
+ try {
160
+ log.verbose(`Renaming ${descriptorSource.isFile() ? "file" : "directory"} "${source}" to "${dest}...`);
161
+ fs.renameSync(source, dest);
162
+ log.verbose(`Successfully renamed to "${dest}"`);
163
+ }
164
+ catch (error) {
165
+ log.verbose(`Error renaming ${descriptorSource.isFile() ? "file" : "directory"} "${source}" to "${dest}": ${error}`);
166
+ throw new Error(`Error renaming ${descriptorSource.isFile() ? "file" : "directory"} "${source}" to "${dest}": ${error}`);
167
+ }
168
+ }
169
+ export function copyFile(source, dest) {
170
+ const log = logger.for(copyFile);
171
+ let descriptorSource, descriptorDest;
172
+ try {
173
+ descriptorSource = fs.statSync(source);
174
+ }
175
+ catch (error) {
176
+ log.verbose(`Source path "${source}" does not exist: ${error}`);
177
+ throw new Error(`Source path "${source}" does not exist: ${error}`);
178
+ }
179
+ try {
180
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
181
+ descriptorDest = fs.statSync(dest);
182
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
183
+ }
184
+ catch (error) {
185
+ if (descriptorSource.isDirectory()) {
186
+ log.verbose(`Dest path "${dest}" does not exist. creating`);
187
+ fs.mkdirSync(dest, { recursive: true });
188
+ }
189
+ }
190
+ try {
191
+ log.verbose(`Copying ${descriptorSource.isFile() ? "file" : "directory"} "${source}" to "${dest}...`);
192
+ fs.cpSync(source, dest, { recursive: true });
193
+ }
194
+ catch (error) {
195
+ log.verbose(`Error copying ${descriptorSource.isFile() ? "file" : "directory"} "${source}" to "${dest}: ${error}`);
196
+ throw new Error(`Error copying ${descriptorSource.isFile() ? "file" : "directory"} "${source}" to "${dest}: ${error}`);
197
+ }
198
+ }
199
+ export function deletePath(p) {
200
+ const log = logger.for(deletePath);
201
+ try {
202
+ const descriptor = fs.statSync(p);
203
+ if (descriptor.isFile()) {
204
+ log.verbose(`Deleting file "${p}...`);
205
+ fs.rmSync(p, { recursive: true, force: true });
206
+ }
207
+ else if (descriptor.isDirectory())
208
+ fs.rmSync(p, { recursive: true, force: true });
209
+ }
210
+ catch (error) {
211
+ log.verbose(`Error Deleting "${p}": ${error}`);
212
+ throw new Error(`Error Deleting "${p}": ${error}`);
213
+ }
214
+ }
101
215
  /**
102
216
  * @description Retrieves package information from package.json.
103
217
  * @summary Loads and parses the package.json file from a specified directory or the current working directory. Can return the entire package object or a specific property.
@@ -267,5 +381,4 @@ export async function normalizeImport(importPromise) {
267
381
  // CommonJS's `module.exports` is wrapped as `default` in ESModule.
268
382
  return importPromise.then((m) => (m.default || m));
269
383
  }
270
-
271
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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LDhCQUE4QixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxNQUFNLFVBQVUsQ0FBQywwQkFBMEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQzFELEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFO1NBQ25CLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDYixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQywrQkFBK0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUQsTUFBTSxVQUFVLENBQUMsMkJBQTJCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUM1RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtTQUNuQixDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2IsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FDbkMsYUFBeUI7SUFFekIsbUVBQW1FO0lBQ25FLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQyIsImZpbGUiOiJ1dGlscy9mcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIi4uL291dHB1dC9sb2dnaW5nXCI7XG5pbXBvcnQgeyBwYXRjaFN0cmluZyB9IGZyb20gXCIuL3RleHRcIjtcbmltcG9ydCB7IHJ1bkNvbW1hbmQgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeU1hcCwgU2ltcGxlRGVwZW5kZW5jeU1hcCB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IExvZ2dpbmcuZm9yKFwiZnNcIik7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhdGNoZXMgYSBmaWxlIHdpdGggZ2l2ZW4gdmFsdWVzLlxuICogQHN1bW1hcnkgUmVhZHMgYSBmaWxlLCBhcHBsaWVzIHBhdGNoZXMgdXNpbmcgVGV4dFV0aWxzLCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byB0aGUgZmlsZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBmaWxlIHRvIGJlIHBhdGNoZWQuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz59IHZhbHVlcyAtIFRoZSB2YWx1ZXMgdG8gcGF0Y2ggaW50byB0aGUgZmlsZS5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKlxuICogQGZ1bmN0aW9uIHBhdGNoRmlsZVxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IHBhdGNoRmlsZVxuICogICBwYXJ0aWNpcGFudCBmc1xuICogICBwYXJ0aWNpcGFudCByZWFkRmlsZVxuICogICBwYXJ0aWNpcGFudCBUZXh0VXRpbHNcbiAqICAgcGFydGljaXBhbnQgd3JpdGVGaWxlXG4gKiAgIENhbGxlci0+PnBhdGNoRmlsZTogQ2FsbCB3aXRoIHBhdGggYW5kIHZhbHVlc1xuICogICBwYXRjaEZpbGUtPj5mczogQ2hlY2sgaWYgZmlsZSBleGlzdHNcbiAqICAgcGF0Y2hGaWxlLT4+cmVhZEZpbGU6IFJlYWQgZmlsZSBjb250ZW50XG4gKiAgIHJlYWRGaWxlLT4+ZnM6IFJlYWQgZmlsZVxuICogICBmcy0tPj5yZWFkRmlsZTogUmV0dXJuIGZpbGUgY29udGVudFxuICogICByZWFkRmlsZS0tPj5wYXRjaEZpbGU6IFJldHVybiBmaWxlIGNvbnRlbnRcbiAqICAgcGF0Y2hGaWxlLT4+VGV4dFV0aWxzOiBQYXRjaCBzdHJpbmdcbiAqICAgVGV4dFV0aWxzLS0+PnBhdGNoRmlsZTogUmV0dXJuIHBhdGNoZWQgY29udGVudFxuICogICBwYXRjaEZpbGUtPj53cml0ZUZpbGU6IFdyaXRlIHBhdGNoZWQgY29udGVudFxuICogICB3cml0ZUZpbGUtPj5mczogV3JpdGUgdG8gZmlsZVxuICogICBmcy0tPj53cml0ZUZpbGU6IEZpbGUgd3JpdHRlblxuICogICB3cml0ZUZpbGUtLT4+cGF0Y2hGaWxlOiBGaWxlIHdyaXR0ZW5cbiAqICAgcGF0Y2hGaWxlLS0+PkNhbGxlcjogUGF0Y2hpbmcgY29tcGxldGVcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZzLXV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaEZpbGUoXG4gIHBhdGg6IHN0cmluZyxcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+XG4pIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihwYXRjaEZpbGUpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMocGF0aCkpXG4gICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZCBhdCBwYXRoIFwiJHtwYXRofVwiLmApO1xuICBsZXQgY29udGVudCA9IHJlYWRGaWxlKHBhdGgpO1xuXG4gIHRyeSB7XG4gICAgbG9nLnZlcmJvc2UoYFBhdGNoaW5nIGZpbGUgXCIke3BhdGh9XCIuLi5gKTtcbiAgICBsb2cuZGVidWcoYHdpdGggdmFsdWU6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWVzKX1gKTtcbiAgICBjb250ZW50ID0gcGF0Y2hTdHJpbmcoY29udGVudCwgdmFsdWVzKTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHBhdGNoaW5nIGZpbGU6ICR7ZXJyb3J9YCk7XG4gIH1cbiAgd3JpdGVGaWxlKHBhdGgsIGNvbnRlbnQpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWFkcyBhIGZpbGUgYW5kIHJldHVybnMgaXRzIGNvbnRlbnQuXG4gKiBAc3VtbWFyeSBSZWFkcyB0aGUgY29udGVudCBvZiBhIGZpbGUgYXQgdGhlIHNwZWNpZmllZCBwYXRoIGFuZCByZXR1cm5zIGl0IGFzIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIGZpbGUgdG8gYmUgcmVhZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvbnRlbnQgb2YgdGhlIGZpbGUuXG4gKlxuICogQGZ1bmN0aW9uIHJlYWRGaWxlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZpbGUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihyZWFkRmlsZSk7XG4gIHRyeSB7XG4gICAgbG9nLnZlcmJvc2UoYFJlYWRpbmcgZmlsZSBcIiR7cGF0aH1cIi4uLmApO1xuICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMocGF0aCwgXCJ1dGY4XCIpO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGxvZy52ZXJib3NlKGBFcnJvciByZWFkaW5nIGZpbGUgXCIke3BhdGh9XCI6ICR7ZXJyb3J9YCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciByZWFkaW5nIGZpbGUgXCIke3BhdGh9XCI6ICR7ZXJyb3J9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gV3JpdGVzIGRhdGEgdG8gYSBmaWxlLlxuICogQHN1bW1hcnkgV3JpdGVzIHRoZSBwcm92aWRlZCBkYXRhIHRvIGEgZmlsZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCB0byB0aGUgZmlsZSB0byBiZSB3cml0dGVuLlxuICogQHBhcmFtIHtzdHJpbmcgfCBCdWZmZXJ9IGRhdGEgLSBUaGUgZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBmaWxlLlxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb24gd3JpdGVGaWxlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVGaWxlKHBhdGg6IHN0cmluZywgZGF0YTogc3RyaW5nIHwgQnVmZmVyKTogdm9pZCB7XG4gIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3Iod3JpdGVGaWxlKTtcbiAgdHJ5IHtcbiAgICBsb2cudmVyYm9zZShgV3JpdGluZyBmaWxlIFwiJHtwYXRofSB3aXRoICR7ZGF0YS5sZW5ndGh9IGJ5dGVzLi4uYCk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLCBkYXRhLCBcInV0ZjhcIik7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgbG9nLnZlcmJvc2UoYEVycm9yIHdyaXRpbmcgZmlsZSBcIiR7cGF0aH1cIjogJHtlcnJvcn1gKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdyaXRpbmcgZmlsZSBcIiR7cGF0aH1cIjogJHtlcnJvcn1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIHBhY2thZ2UuanNvbi5cbiAqIEBzdW1tYXJ5IExvYWRzIGFuZCBwYXJzZXMgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGZyb20gYSBzcGVjaWZpZWQgZGlyZWN0b3J5IG9yIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBDYW4gcmV0dXJuIHRoZSBlbnRpcmUgcGFja2FnZSBvYmplY3Qgb3IgYSBzcGVjaWZpYyBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbcD1wcm9jZXNzLmN3ZCgpXSAtIFRoZSBkaXJlY3RvcnkgcGF0aCB3aGVyZSB0aGUgcGFja2FnZS5qc29uIGZpbGUgaXMgbG9jYXRlZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbcHJvcGVydHldIC0gT3B0aW9uYWwuIFRoZSBzcGVjaWZpYyBwcm9wZXJ0eSB0byByZXRyaWV2ZSBmcm9tIHBhY2thZ2UuanNvbi5cbiAqIEByZXR1cm4ge29iamVjdCB8IHN0cmluZ30gVGhlIHBhcnNlZCBjb250ZW50cyBvZiBwYWNrYWdlLmpzb24gb3IgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiBAZnVuY3Rpb24gZ2V0UGFja2FnZVxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgZ2V0UGFja2FnZVxuICogICBwYXJ0aWNpcGFudCByZWFkRmlsZVxuICogICBwYXJ0aWNpcGFudCBKU09OXG4gKiAgIENhbGxlci0+PmdldFBhY2thZ2U6IENhbGwgd2l0aCBwYXRoIGFuZCBvcHRpb25hbCBwcm9wZXJ0eVxuICogICBnZXRQYWNrYWdlLT4+cmVhZEZpbGU6IFJlYWQgcGFja2FnZS5qc29uXG4gKiAgIHJlYWRGaWxlLS0+PmdldFBhY2thZ2U6IFJldHVybiBmaWxlIGNvbnRlbnRcbiAqICAgZ2V0UGFja2FnZS0+PkpTT046IFBhcnNlIGZpbGUgY29udGVudFxuICogICBKU09OLS0+PmdldFBhY2thZ2U6IFJldHVybiBwYXJzZWQgb2JqZWN0XG4gKiAgIGFsdCBwcm9wZXJ0eSBzcGVjaWZpZWRcbiAqICAgICBnZXRQYWNrYWdlLT4+Z2V0UGFja2FnZTogQ2hlY2sgaWYgcHJvcGVydHkgZXhpc3RzXG4gKiAgICAgYWx0IHByb3BlcnR5IGV4aXN0c1xuICogICAgICAgZ2V0UGFja2FnZS0tPj5DYWxsZXI6IFJldHVybiBwcm9wZXJ0eSB2YWx1ZVxuICogICAgIGVsc2UgcHJvcGVydHkgZG9lc24ndCBleGlzdFxuICogICAgICAgZ2V0UGFja2FnZS0tPj5DYWxsZXI6IFRocm93IEVycm9yXG4gKiAgICAgZW5kXG4gKiAgIGVsc2Ugbm8gcHJvcGVydHkgc3BlY2lmaWVkXG4gKiAgICAgZ2V0UGFja2FnZS0tPj5DYWxsZXI6IFJldHVybiBlbnRpcmUgcGFja2FnZSBvYmplY3RcbiAqICAgZW5kXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlKFxuICBwOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuICBwcm9wZXJ0eT86IHN0cmluZ1xuKTogb2JqZWN0IHwgc3RyaW5nIHtcbiAgbGV0IHBrZzogYW55O1xuICB0cnkge1xuICAgIHBrZyA9IEpTT04ucGFyc2UocmVhZEZpbGUocGF0aC5qb2luKHAsIGBwYWNrYWdlLmpzb25gKSkpO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIHBhY2thZ2UgaW5mb3JtYXRpb25cIiAke2Vycm9yfWApO1xuICB9XG5cbiAgaWYgKHByb3BlcnR5KSB7XG4gICAgaWYgKCEocHJvcGVydHkgaW4gcGtnKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgXCIke3Byb3BlcnR5fVwiIG5vdCBmb3VuZCBpbiBwYWNrYWdlLmpzb25gKTtcbiAgICByZXR1cm4gcGtnW3Byb3BlcnR5XSBhcyBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHBrZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFBhY2thZ2VBdHRyaWJ1dGUoXG4gIGF0dHI6IHN0cmluZyxcbiAgdmFsdWU6IHN0cmluZyxcbiAgcDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKVxuKTogdm9pZCB7XG4gIGNvbnN0IHBrZyA9IGdldFBhY2thZ2UocCkgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgcGtnW2F0dHJdID0gdmFsdWU7XG4gIHdyaXRlRmlsZShwYXRoLmpvaW4ocCwgYHBhY2thZ2UuanNvbmApLCBKU09OLnN0cmluZ2lmeShwa2csIG51bGwsIDIpKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uLlxuICogQHN1bW1hcnkgQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIGdldFBhY2thZ2UgdG8gcmV0cmlldmUgdGhlIFwidmVyc2lvblwiIHByb3BlcnR5IGZyb20gcGFja2FnZS5qc29uLlxuICogQHBhcmFtIHtzdHJpbmd9IFtwPXByb2Nlc3MuY3dkKCldIC0gVGhlIGRpcmVjdG9yeSBwYXRoIHdoZXJlIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBpcyBsb2NhdGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgdmVyc2lvbiBzdHJpbmcgZnJvbSBwYWNrYWdlLmpzb24uXG4gKiBAZnVuY3Rpb24gZ2V0UGFja2FnZVZlcnNpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZnMtdXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VWZXJzaW9uKHAgPSBwcm9jZXNzLmN3ZCgpKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldFBhY2thZ2UocCwgXCJ2ZXJzaW9uXCIpIGFzIHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCBkZXBlbmRlbmNpZXMgZnJvbSB0aGUgcHJvamVjdC5cbiAqIEBzdW1tYXJ5IEV4ZWN1dGVzICducG0gbHMgLS1qc29uJyBjb21tYW5kIHRvIGdldCBhIGRldGFpbGVkIGxpc3Qgb2YgYWxsIGRlcGVuZGVuY2llcyAocHJvZHVjdGlvbiwgZGV2ZWxvcG1lbnQsIGFuZCBwZWVyKSBhbmQgdGhlaXIgdmVyc2lvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGg9cHJvY2Vzcy5jd2QoKV0gLSBUaGUgZGlyZWN0b3J5IHBhdGggb2YgdGhlIHByb2plY3QuXG4gKiBAcmV0dXJuIHtQcm9taXNlPHtwcm9kOiBBcnJheTx7bmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmd9PiwgZGV2OiBBcnJheTx7bmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmd9PiwgcGVlcjogQXJyYXk8e25hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nfT59Pn0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgYXJyYXlzIG9mIHByb2R1Y3Rpb24sIGRldmVsb3BtZW50LCBhbmQgcGVlciBkZXBlbmRlbmNpZXMuXG4gKiBAZnVuY3Rpb24gZ2V0RGVwZW5kZW5jaWVzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCBnZXREZXBlbmRlbmNpZXNcbiAqICAgcGFydGljaXBhbnQgcnVuQ29tbWFuZFxuICogICBwYXJ0aWNpcGFudCBKU09OXG4gKiAgIENhbGxlci0+PmdldERlcGVuZGVuY2llczogQ2FsbCB3aXRoIG9wdGlvbmFsIHBhdGhcbiAqICAgZ2V0RGVwZW5kZW5jaWVzLT4+cnVuQ29tbWFuZDogRXhlY3V0ZSAnbnBtIGxzIC0tanNvbidcbiAqICAgcnVuQ29tbWFuZC0tPj5nZXREZXBlbmRlbmNpZXM6IFJldHVybiBjb21tYW5kIG91dHB1dFxuICogICBnZXREZXBlbmRlbmNpZXMtPj5KU09OOiBQYXJzZSBjb21tYW5kIG91dHB1dFxuICogICBKU09OLS0+PmdldERlcGVuZGVuY2llczogUmV0dXJuIHBhcnNlZCBvYmplY3RcbiAqICAgZ2V0RGVwZW5kZW5jaWVzLT4+Z2V0RGVwZW5kZW5jaWVzOiBQcm9jZXNzIGRlcGVuZGVuY2llc1xuICogICBnZXREZXBlbmRlbmNpZXMtLT4+Q2FsbGVyOiBSZXR1cm4gcHJvY2Vzc2VkIGRlcGVuZGVuY2llc1xuICogQG1lbWJlck9mIG1vZHVsZTpmcy11dGlsc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGVwZW5kZW5jaWVzKFxuICBwYXRoOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpXG4pOiBQcm9taXNlPERlcGVuZGVuY3lNYXA+IHtcbiAgbGV0IHBrZzogYW55O1xuXG4gIHRyeSB7XG4gICAgcGtnID0gSlNPTi5wYXJzZShhd2FpdCBydW5Db21tYW5kKGBucG0gbHMgLS1qc29uYCwgeyBjd2Q6IHBhdGggfSkucHJvbWlzZSk7XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBkZXBlbmRlbmNpZXM6ICR7ZX1gKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgY29uc3QgbWFwcGVyID0gKGVudHJ5OiBbc3RyaW5nLCB1bmtub3duXSwgaW5kZXg6IG51bWJlcikgPT4gKHtcbiAgICBuYW1lOiBlbnRyeVswXSxcbiAgICB2ZXJzaW9uOiAoZW50cnlbMV0gYXMgYW55KS52ZXJzaW9uLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHByb2Q6IE9iamVjdC5lbnRyaWVzKHBrZy5kZXBlbmRlbmNpZXMgfHwge30pLm1hcChtYXBwZXIpLFxuICAgIGRldjogT2JqZWN0LmVudHJpZXMocGtnLmRldkRlcGVuZGVuY2llcyB8fCB7fSkubWFwKG1hcHBlciksXG4gICAgcGVlcjogT2JqZWN0LmVudHJpZXMocGtnLnBlZXJEZXBlbmRlbmNpZXMgfHwge30pLm1hcChtYXBwZXIpLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlRGVwZW5kZW5jaWVzKCkge1xuICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKHVwZGF0ZURlcGVuZGVuY2llcyk7XG4gIGxvZy5pbmZvKFwiY2hlY2tpbmcgZm9yIHVwZGF0ZXMuLi5cIik7XG4gIGF3YWl0IHJ1bkNvbW1hbmQoXCJucHggbnBtLWNoZWNrLXVwZGF0ZXMgLXVcIikucHJvbWlzZTtcbiAgbG9nLmluZm8oXCJ1cGRhdGluZy4uLlwiKTtcbiAgYXdhaXQgcnVuQ29tbWFuZChcIm5weCBucG0gcnVuIGRvLWluc3RhbGxcIikucHJvbWlzZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxJZk5vdEF2YWlsYWJsZShcbiAgZGVwczogc3RyaW5nW10gfCBzdHJpbmcsXG4gIGRlcGVuZGVuY2llcz86IFNpbXBsZURlcGVuZGVuY3lNYXBcbikge1xuICBpZiAoIWRlcGVuZGVuY2llcykge1xuICAgIGNvbnN0IGQ6IERlcGVuZGVuY3lNYXAgPSBhd2FpdCBnZXREZXBlbmRlbmNpZXMoKTtcbiAgICBkZXBlbmRlbmNpZXMgPSB7XG4gICAgICBwcm9kOiBkLnByb2Q/Lm1hcCgocCkgPT4gcC5uYW1lKSB8fCBbXSxcbiAgICAgIGRldjogZC5kZXY/Lm1hcCgoZCkgPT4gZC5uYW1lKSB8fCBbXSxcbiAgICAgIHBlZXI6IGQucGVlcj8ubWFwKChwKSA9PiBwLm5hbWUpIHx8IFtdLFxuICAgIH07XG4gIH1cbiAgY29uc3QgeyBwcm9kLCBkZXYsIHBlZXIgfSA9IGRlcGVuZGVuY2llcztcbiAgY29uc3QgaW5zdGFsbGVkID0gQXJyYXkuZnJvbShcbiAgICBuZXcgU2V0KFsuLi4ocHJvZCB8fCBbXSksIC4uLihkZXYgfHwgW10pLCAuLi4ocGVlciB8fCBbXSldKVxuICApO1xuICBkZXBzID0gdHlwZW9mIGRlcHMgPT09IFwic3RyaW5nXCIgPyBbZGVwc10gOiBkZXBzO1xuICBjb25zdCB0b0luc3RhbGwgPSBkZXBzLmZpbHRlcigoZCkgPT4gIWluc3RhbGxlZC5pbmNsdWRlcyhkKSk7XG5cbiAgaWYgKHRvSW5zdGFsbC5sZW5ndGgpIGF3YWl0IGluc3RhbGxEZXBlbmRlbmNpZXMoeyBkZXY6IHRvSW5zdGFsbCB9KTtcbiAgZGVwZW5kZW5jaWVzLmRldiA9IGRlcGVuZGVuY2llcy5kZXYgfHwgW107XG4gIGRlcGVuZGVuY2llcy5kZXYucHVzaCguLi50b0luc3RhbGwpO1xuICByZXR1cm4gZGVwZW5kZW5jaWVzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVzaFRvR2l0KCkge1xuICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKHB1c2hUb0dpdCk7XG4gIGNvbnN0IGdpdFVzZXIgPSBhd2FpdCBydW5Db21tYW5kKFwiZ2l0IGNvbmZpZyB1c2VyLm5hbWVcIikucHJvbWlzZTtcbiAgY29uc3QgZ2l0RW1haWwgPSBhd2FpdCBydW5Db21tYW5kKFwiZ2l0IGNvbmZpZyB1c2VyLmVtYWlsXCIpLnByb21pc2U7XG4gIGxvZy52ZXJib3NlKGBjYWNoZWQgZ2l0IGlkOiAke2dpdFVzZXJ9LyR7Z2l0RW1haWx9LiBjaGFuZ2luZyB0byBhdXRvbWF0aW9uYCk7XG4gIGF3YWl0IHJ1bkNvbW1hbmQoJ2dpdCBjb25maWcgdXNlci5lbWFpbCBcImF1dG9tYXRpb25AZGVjYWYudHNcIicpLnByb21pc2U7XG4gIGF3YWl0IHJ1bkNvbW1hbmQoJ2dpdCBjb25maWcgdXNlci5uYW1lIFwiZGVjYWZcIicpLnByb21pc2U7XG4gIGxvZy5pbmZvKFwiUHVzaGluZyBjaGFuZ2VzIHRvIGdpdC4uLlwiKTtcbiAgYXdhaXQgcnVuQ29tbWFuZChcImdpdCBhZGQgLlwiKS5wcm9taXNlO1xuICBhd2FpdCBydW5Db21tYW5kKGBnaXQgY29tbWl0IC1tIFwicmVmcyAjMSAtIGFmdGVyIHJlcG8gc2V0dXBcImApLnByb21pc2U7XG4gIGF3YWl0IHJ1bkNvbW1hbmQoXCJnaXQgcHVzaFwiKS5wcm9taXNlO1xuICBhd2FpdCBydW5Db21tYW5kKGBnaXQgY29uZmlnIHVzZXIuZW1haWwgXCIke2dpdEVtYWlsfVwiYCkucHJvbWlzZTtcbiAgYXdhaXQgcnVuQ29tbWFuZChgZ2l0IGNvbmZpZyB1c2VyLm5hbWUgXCIke2dpdFVzZXJ9XCJgKS5wcm9taXNlO1xuICBsb2cudmVyYm9zZShgcmV2ZXJ0ZWQgdG8gZ2l0IGlkOiAke2dpdFVzZXJ9LyR7Z2l0RW1haWx9YCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llczoge1xuICBwcm9kPzogc3RyaW5nW107XG4gIGRldj86IHN0cmluZ1tdO1xuICBwZWVyPzogc3RyaW5nW107XG59KSB7XG4gIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoaW5zdGFsbERlcGVuZGVuY2llcyk7XG4gIGNvbnN0IHByb2QgPSBkZXBlbmRlbmNpZXMucHJvZCB8fCBbXTtcbiAgY29uc3QgZGV2ID0gZGVwZW5kZW5jaWVzLmRldiB8fCBbXTtcbiAgY29uc3QgcGVlciA9IGRlcGVuZGVuY2llcy5wZWVyIHx8IFtdO1xuICBpZiAocHJvZC5sZW5ndGgpIHtcbiAgICBsb2cuaW5mbyhgSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMgJHtwcm9kLmpvaW4oXCIsIFwiKX0uLi5gKTtcbiAgICBhd2FpdCBydW5Db21tYW5kKGBucG0gaW5zdGFsbCAke3Byb2Quam9pbihcIiBcIil9YCwgeyBjd2Q6IHByb2Nlc3MuY3dkKCkgfSlcbiAgICAgIC5wcm9taXNlO1xuICB9XG4gIGlmIChkZXYubGVuZ3RoKSB7XG4gICAgbG9nLmluZm8oYEluc3RhbGxpbmcgZGV2RGVwZW5kZW5jaWVzICR7ZGV2LmpvaW4oXCIsIFwiKX0uLi5gKTtcbiAgICBhd2FpdCBydW5Db21tYW5kKGBucG0gaW5zdGFsbCAtLXNhdmUtZGV2ICR7ZGV2LmpvaW4oXCIgXCIpfWAsIHtcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICB9KS5wcm9taXNlO1xuICB9XG4gIGlmIChwZWVyLmxlbmd0aCkge1xuICAgIGxvZy5pbmZvKGBJbnN0YWxsaW5nIHBlZXJEZXBlbmRlbmNpZXMgJHtwZWVyLmpvaW4oXCIsIFwiKX0uLi5gKTtcbiAgICBhd2FpdCBydW5Db21tYW5kKGBucG0gaW5zdGFsbCAtLXNhdmUtcGVlciAke3BlZXIuam9pbihcIiBcIil9YCwge1xuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIH0pLnByb21pc2U7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5vcm1hbGl6ZUltcG9ydDxUPihcbiAgaW1wb3J0UHJvbWlzZTogUHJvbWlzZTxUPlxuKTogUHJvbWlzZTxUPiB7XG4gIC8vIENvbW1vbkpTJ3MgYG1vZHVsZS5leHBvcnRzYCBpcyB3cmFwcGVkIGFzIGBkZWZhdWx0YCBpbiBFU01vZHVsZS5cbiAgcmV0dXJuIGltcG9ydFByb21pc2UudGhlbigobTogYW55KSA9PiAobS5kZWZhdWx0IHx8IG0pIGFzIFQpO1xufVxuIl19
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBR3JDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFakM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLElBQVksRUFDWixNQUF1QztJQUV2QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3ZELElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU3QixJQUFJLENBQUM7UUFDSCxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRCxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixL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QUFFLEVBQUU7WUFDNUQsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7U0FDbkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQ25DLGFBQXlCO0lBRXpCLG1FQUFtRTtJQUNuRSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQU0sQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCIuLi9vdXRwdXQvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgcGF0Y2hTdHJpbmcgfSBmcm9tIFwiLi90ZXh0XCI7XG5pbXBvcnQgeyBydW5Db21tYW5kIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lNYXAsIFNpbXBsZURlcGVuZGVuY3lNYXAgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBMb2dnaW5nLmZvcihcImZzXCIpO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYXRjaGVzIGEgZmlsZSB3aXRoIGdpdmVuIHZhbHVlcy5cbiAqIEBzdW1tYXJ5IFJlYWRzIGEgZmlsZSwgYXBwbGllcyBwYXRjaGVzIHVzaW5nIFRleHRVdGlscywgYW5kIHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gdGhlIGZpbGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCB0byB0aGUgZmlsZSB0byBiZSBwYXRjaGVkLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+fSB2YWx1ZXMgLSBUaGUgdmFsdWVzIHRvIHBhdGNoIGludG8gdGhlIGZpbGUuXG4gKiBAcmV0dXJuIHt2b2lkfVxuICpcbiAqIEBmdW5jdGlvbiBwYXRjaEZpbGVcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCBwYXRjaEZpbGVcbiAqICAgcGFydGljaXBhbnQgZnNcbiAqICAgcGFydGljaXBhbnQgcmVhZEZpbGVcbiAqICAgcGFydGljaXBhbnQgVGV4dFV0aWxzXG4gKiAgIHBhcnRpY2lwYW50IHdyaXRlRmlsZVxuICogICBDYWxsZXItPj5wYXRjaEZpbGU6IENhbGwgd2l0aCBwYXRoIGFuZCB2YWx1ZXNcbiAqICAgcGF0Y2hGaWxlLT4+ZnM6IENoZWNrIGlmIGZpbGUgZXhpc3RzXG4gKiAgIHBhdGNoRmlsZS0+PnJlYWRGaWxlOiBSZWFkIGZpbGUgY29udGVudFxuICogICByZWFkRmlsZS0+PmZzOiBSZWFkIGZpbGVcbiAqICAgZnMtLT4+cmVhZEZpbGU6IFJldHVybiBmaWxlIGNvbnRlbnRcbiAqICAgcmVhZEZpbGUtLT4+cGF0Y2hGaWxlOiBSZXR1cm4gZmlsZSBjb250ZW50XG4gKiAgIHBhdGNoRmlsZS0+PlRleHRVdGlsczogUGF0Y2ggc3RyaW5nXG4gKiAgIFRleHRVdGlscy0tPj5wYXRjaEZpbGU6IFJldHVybiBwYXRjaGVkIGNvbnRlbnRcbiAqICAgcGF0Y2hGaWxlLT4+d3JpdGVGaWxlOiBXcml0ZSBwYXRjaGVkIGNvbnRlbnRcbiAqICAgd3JpdGVGaWxlLT4+ZnM6IFdyaXRlIHRvIGZpbGVcbiAqICAgZnMtLT4+d3JpdGVGaWxlOiBGaWxlIHdyaXR0ZW5cbiAqICAgd3JpdGVGaWxlLS0+PnBhdGNoRmlsZTogRmlsZSB3cml0dGVuXG4gKiAgIHBhdGNoRmlsZS0tPj5DYWxsZXI6IFBhdGNoaW5nIGNvbXBsZXRlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpmcy11dGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hGaWxlKFxuICBwYXRoOiBzdHJpbmcsXG4gIHZhbHVlczogUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPlxuKSB7XG4gIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IocGF0Y2hGaWxlKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHBhdGgpKVxuICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQgYXQgcGF0aCBcIiR7cGF0aH1cIi5gKTtcbiAgbGV0IGNvbnRlbnQgPSByZWFkRmlsZShwYXRoKTtcblxuICB0cnkge1xuICAgIGxvZy52ZXJib3NlKGBQYXRjaGluZyBmaWxlIFwiJHtwYXRofVwiLi4uYCk7XG4gICAgbG9nLmRlYnVnKGB3aXRoIHZhbHVlOiAke0pTT04uc3RyaW5naWZ5KHZhbHVlcyl9YCk7XG4gICAgY29udGVudCA9IHBhdGNoU3RyaW5nKGNvbnRlbnQsIHZhbHVlcyk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBwYXRjaGluZyBmaWxlOiAke2Vycm9yfWApO1xuICB9XG4gIHdyaXRlRmlsZShwYXRoLCBjb250ZW50KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVhZHMgYSBmaWxlIGFuZCByZXR1cm5zIGl0cyBjb250ZW50LlxuICogQHN1bW1hcnkgUmVhZHMgdGhlIGNvbnRlbnQgb2YgYSBmaWxlIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBhbmQgcmV0dXJucyBpdCBhcyBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBmaWxlIHRvIGJlIHJlYWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb250ZW50IG9mIHRoZSBmaWxlLlxuICpcbiAqIEBmdW5jdGlvbiByZWFkRmlsZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGaWxlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IocmVhZEZpbGUpO1xuICB0cnkge1xuICAgIGxvZy52ZXJib3NlKGBSZWFkaW5nIGZpbGUgXCIke3BhdGh9XCIuLi5gKTtcbiAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKHBhdGgsIFwidXRmOFwiKTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2cudmVyYm9zZShgRXJyb3IgcmVhZGluZyBmaWxlIFwiJHtwYXRofVwiOiAke2Vycm9yfWApO1xuICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgcmVhZGluZyBmaWxlIFwiJHtwYXRofVwiOiAke2Vycm9yfWApO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFdyaXRlcyBkYXRhIHRvIGEgZmlsZS5cbiAqIEBzdW1tYXJ5IFdyaXRlcyB0aGUgcHJvdmlkZWQgZGF0YSB0byBhIGZpbGUgYXQgdGhlIHNwZWNpZmllZCBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIGZpbGUgdG8gYmUgd3JpdHRlbi5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyfSBkYXRhIC0gVGhlIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZmlsZS5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKlxuICogQGZ1bmN0aW9uIHdyaXRlRmlsZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRmlsZShwYXRoOiBzdHJpbmcsIGRhdGE6IHN0cmluZyB8IEJ1ZmZlcik6IHZvaWQge1xuICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKHdyaXRlRmlsZSk7XG4gIHRyeSB7XG4gICAgbG9nLnZlcmJvc2UoYFdyaXRpbmcgZmlsZSBcIiR7cGF0aH0gd2l0aCAke2RhdGEubGVuZ3RofSBieXRlcy4uLmApO1xuICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aCwgZGF0YSwgXCJ1dGY4XCIpO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGxvZy52ZXJib3NlKGBFcnJvciB3cml0aW5nIGZpbGUgXCIke3BhdGh9XCI6ICR7ZXJyb3J9YCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciB3cml0aW5nIGZpbGUgXCIke3BhdGh9XCI6ICR7ZXJyb3J9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCBmaWxlcyByZWN1cnNpdmVseSBmcm9tIGEgZGlyZWN0b3J5LlxuICogQHN1bW1hcnkgVHJhdmVyc2VzIHRocm91Z2ggZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzIHRvIGNvbGxlY3QgYWxsIGZpbGUgcGF0aHMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHAgLSBUaGUgcGF0aCB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS5cbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiBmaWxlIHBhdGhzLlxuICpcbiAqIEBmdW5jdGlvbiBnZXRBbGxGaWxlc1xuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZnMtdXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbEZpbGVzKFxuICBwOiBzdHJpbmcsXG4gIGZpbHRlcj86IChmOiBzdHJpbmcsIGk/OiBudW1iZXIpID0+IGJvb2xlYW5cbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihnZXRBbGxGaWxlcyk7XG4gIGNvbnN0IGZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHRyeSB7XG4gICAgbG9nLnZlcmJvc2UoYFJldHJpZXZpbmcgYWxsIGZpbGVzIGZyb20gXCIke3B9XCIuLi5gKTtcbiAgICBjb25zdCBlbnRyaWVzID0gZnMucmVhZGRpclN5bmMocCk7XG5cbiAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihwLCBlbnRyeSk7XG4gICAgICBjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMoZnVsbFBhdGgpO1xuXG4gICAgICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xuICAgICAgICBmaWxlcy5wdXNoKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGZpbGVzLnB1c2goLi4uZ2V0QWxsRmlsZXMoZnVsbFBhdGgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWZpbHRlcikgcmV0dXJuIGZpbGVzO1xuICAgIHJldHVybiBmaWxlcy5maWx0ZXIoZmlsdGVyKTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2cudmVyYm9zZShgRXJyb3IgcmV0cmlldmluZyBmaWxlcyBmcm9tIFwiJHtwfVwiOiAke2Vycm9yfWApO1xuICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgcmV0cmlldmluZyBmaWxlcyBmcm9tIFwiJHtwfVwiOiAke2Vycm9yfWApO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5hbWVGaWxlKHNvdXJjZTogc3RyaW5nLCBkZXN0OiBzdHJpbmcpIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihyZW5hbWVGaWxlKTtcbiAgbGV0IGRlc2NyaXB0b3JTb3VyY2UsIGRlc2NyaXB0b3JEZXN0O1xuXG4gIHRyeSB7XG4gICAgZGVzY3JpcHRvclNvdXJjZSA9IGZzLnN0YXRTeW5jKHNvdXJjZSk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgbG9nLnZlcmJvc2UoYFNvdXJjZSBwYXRoIFwiJHtzb3VyY2V9XCIgZG9lcyBub3QgZXhpc3Q6ICR7ZXJyb3J9YCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTb3VyY2UgcGF0aCBcIiR7c291cmNlfVwiIGRvZXMgbm90IGV4aXN0OiAke2Vycm9yfWApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBkZXNjcmlwdG9yRGVzdCA9IGZzLnN0YXRTeW5jKGRlc3QpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIC8vIGRvIG5vdGhpbmcuIGl0cyBva1xuICB9XG4gIGlmIChkZXNjcmlwdG9yRGVzdCkge1xuICAgIGxvZy52ZXJib3NlKGBEZXN0aW5hdGlvbiBwYXRoIFwiJHtkZXN0fVwiIGFscmVhZHkgZXhpc3RzYCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZXN0aW5hdGlvbiBwYXRoIFwiJHtkZXN0fVwiIGFscmVhZHkgZXhpc3RzYCk7XG4gIH1cblxuICB0cnkge1xuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYFJlbmFtaW5nICR7ZGVzY3JpcHRvclNvdXJjZS5pc0ZpbGUoKSA/IFwiZmlsZVwiIDogXCJkaXJlY3RvcnlcIn0gXCIke3NvdXJjZX1cIiB0byBcIiR7ZGVzdH0uLi5gXG4gICAgKTtcbiAgICBmcy5yZW5hbWVTeW5jKHNvdXJjZSwgZGVzdCk7XG4gICAgbG9nLnZlcmJvc2UoYFN1Y2Nlc3NmdWxseSByZW5hbWVkIHRvIFwiJHtkZXN0fVwiYCk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgRXJyb3IgcmVuYW1pbmcgJHtkZXNjcmlwdG9yU291cmNlLmlzRmlsZSgpID8gXCJmaWxlXCIgOiBcImRpcmVjdG9yeVwifSBcIiR7c291cmNlfVwiIHRvIFwiJHtkZXN0fVwiOiAke2Vycm9yfWBcbiAgICApO1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFcnJvciByZW5hbWluZyAke2Rlc2NyaXB0b3JTb3VyY2UuaXNGaWxlKCkgPyBcImZpbGVcIiA6IFwiZGlyZWN0b3J5XCJ9IFwiJHtzb3VyY2V9XCIgdG8gXCIke2Rlc3R9XCI6ICR7ZXJyb3J9YFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlGaWxlKHNvdXJjZTogc3RyaW5nLCBkZXN0OiBzdHJpbmcpIHtcbiAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihjb3B5RmlsZSk7XG4gIGxldCBkZXNjcmlwdG9yU291cmNlLCBkZXNjcmlwdG9yRGVzdDtcbiAgdHJ5IHtcbiAgICBkZXNjcmlwdG9yU291cmNlID0gZnMuc3RhdFN5bmMoc291cmNlKTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2cudmVyYm9zZShgU291cmNlIHBhdGggXCIke3NvdXJjZX1cIiBkb2VzIG5vdCBleGlzdDogJHtlcnJvcn1gKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSBwYXRoIFwiJHtzb3VyY2V9XCIgZG9lcyBub3QgZXhpc3Q6ICR7ZXJyb3J9YCk7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgZGVzY3JpcHRvckRlc3QgPSBmcy5zdGF0U3luYyhkZXN0KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgaWYgKGRlc2NyaXB0b3JTb3VyY2UuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgbG9nLnZlcmJvc2UoYERlc3QgcGF0aCBcIiR7ZGVzdH1cIiBkb2VzIG5vdCBleGlzdC4gY3JlYXRpbmdgKTtcbiAgICAgIGZzLm1rZGlyU3luYyhkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYENvcHlpbmcgJHtkZXNjcmlwdG9yU291cmNlLmlzRmlsZSgpID8gXCJmaWxlXCIgOiBcImRpcmVjdG9yeVwifSBcIiR7c291cmNlfVwiIHRvIFwiJHtkZXN0fS4uLmBcbiAgICApO1xuICAgIGZzLmNwU3luYyhzb3VyY2UsIGRlc3QsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYEVycm9yIGNvcHlpbmcgJHtkZXNjcmlwdG9yU291cmNlLmlzRmlsZSgpID8gXCJmaWxlXCIgOiBcImRpcmVjdG9yeVwifSBcIiR7c291cmNlfVwiIHRvIFwiJHtkZXN0fTogJHtlcnJvcn1gXG4gICAgKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRXJyb3IgY29weWluZyAke2Rlc2NyaXB0b3JTb3VyY2UuaXNGaWxlKCkgPyBcImZpbGVcIiA6IFwiZGlyZWN0b3J5XCJ9IFwiJHtzb3VyY2V9XCIgdG8gXCIke2Rlc3R9OiAke2Vycm9yfWBcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQYXRoKHA6IHN0cmluZykge1xuICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKGRlbGV0ZVBhdGgpO1xuICB0cnkge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBmcy5zdGF0U3luYyhwKTtcbiAgICBpZiAoZGVzY3JpcHRvci5pc0ZpbGUoKSkge1xuICAgICAgbG9nLnZlcmJvc2UoYERlbGV0aW5nIGZpbGUgXCIke3B9Li4uYCk7XG4gICAgICBmcy5ybVN5bmMocCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0RpcmVjdG9yeSgpKVxuICAgICAgZnMucm1TeW5jKHAsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2cudmVyYm9zZShgRXJyb3IgRGVsZXRpbmcgXCIke3B9XCI6ICR7ZXJyb3J9YCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBEZWxldGluZyBcIiR7cH1cIjogJHtlcnJvcn1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIHBhY2thZ2UuanNvbi5cbiAqIEBzdW1tYXJ5IExvYWRzIGFuZCBwYXJzZXMgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGZyb20gYSBzcGVjaWZpZWQgZGlyZWN0b3J5IG9yIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBDYW4gcmV0dXJuIHRoZSBlbnRpcmUgcGFja2FnZSBvYmplY3Qgb3IgYSBzcGVjaWZpYyBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbcD1wcm9jZXNzLmN3ZCgpXSAtIFRoZSBkaXJlY3RvcnkgcGF0aCB3aGVyZSB0aGUgcGFja2FnZS5qc29uIGZpbGUgaXMgbG9jYXRlZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbcHJvcGVydHldIC0gT3B0aW9uYWwuIFRoZSBzcGVjaWZpYyBwcm9wZXJ0eSB0byByZXRyaWV2ZSBmcm9tIHBhY2thZ2UuanNvbi5cbiAqIEByZXR1cm4ge29iamVjdCB8IHN0cmluZ30gVGhlIHBhcnNlZCBjb250ZW50cyBvZiBwYWNrYWdlLmpzb24gb3IgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKiBAZnVuY3Rpb24gZ2V0UGFja2FnZVxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgZ2V0UGFja2FnZVxuICogICBwYXJ0aWNpcGFudCByZWFkRmlsZVxuICogICBwYXJ0aWNpcGFudCBKU09OXG4gKiAgIENhbGxlci0+PmdldFBhY2thZ2U6IENhbGwgd2l0aCBwYXRoIGFuZCBvcHRpb25hbCBwcm9wZXJ0eVxuICogICBnZXRQYWNrYWdlLT4+cmVhZEZpbGU6IFJlYWQgcGFja2FnZS5qc29uXG4gKiAgIHJlYWRGaWxlLS0+PmdldFBhY2thZ2U6IFJldHVybiBmaWxlIGNvbnRlbnRcbiAqICAgZ2V0UGFja2FnZS0+PkpTT046IFBhcnNlIGZpbGUgY29udGVudFxuICogICBKU09OLS0+PmdldFBhY2thZ2U6IFJldHVybiBwYXJzZWQgb2JqZWN0XG4gKiAgIGFsdCBwcm9wZXJ0eSBzcGVjaWZpZWRcbiAqICAgICBnZXRQYWNrYWdlLT4+Z2V0UGFja2FnZTogQ2hlY2sgaWYgcHJvcGVydHkgZXhpc3RzXG4gKiAgICAgYWx0IHByb3BlcnR5IGV4aXN0c1xuICogICAgICAgZ2V0UGFja2FnZS0tPj5DYWxsZXI6IFJldHVybiBwcm9wZXJ0eSB2YWx1ZVxuICogICAgIGVsc2UgcHJvcGVydHkgZG9lc24ndCBleGlzdFxuICogICAgICAgZ2V0UGFja2FnZS0tPj5DYWxsZXI6IFRocm93IEVycm9yXG4gKiAgICAgZW5kXG4gKiAgIGVsc2Ugbm8gcHJvcGVydHkgc3BlY2lmaWVkXG4gKiAgICAgZ2V0UGFja2FnZS0tPj5DYWxsZXI6IFJldHVybiBlbnRpcmUgcGFja2FnZSBvYmplY3RcbiAqICAgZW5kXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlKFxuICBwOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpLFxuICBwcm9wZXJ0eT86IHN0cmluZ1xuKTogb2JqZWN0IHwgc3RyaW5nIHtcbiAgbGV0IHBrZzogYW55O1xuICB0cnkge1xuICAgIHBrZyA9IEpTT04ucGFyc2UocmVhZEZpbGUocGF0aC5qb2luKHAsIGBwYWNrYWdlLmpzb25gKSkpO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIHBhY2thZ2UgaW5mb3JtYXRpb25cIiAke2Vycm9yfWApO1xuICB9XG5cbiAgaWYgKHByb3BlcnR5KSB7XG4gICAgaWYgKCEocHJvcGVydHkgaW4gcGtnKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgXCIke3Byb3BlcnR5fVwiIG5vdCBmb3VuZCBpbiBwYWNrYWdlLmpzb25gKTtcbiAgICByZXR1cm4gcGtnW3Byb3BlcnR5XSBhcyBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHBrZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFBhY2thZ2VBdHRyaWJ1dGUoXG4gIGF0dHI6IHN0cmluZyxcbiAgdmFsdWU6IHN0cmluZyxcbiAgcDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKVxuKTogdm9pZCB7XG4gIGNvbnN0IHBrZyA9IGdldFBhY2thZ2UocCkgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgcGtnW2F0dHJdID0gdmFsdWU7XG4gIHdyaXRlRmlsZShwYXRoLmpvaW4ocCwgYHBhY2thZ2UuanNvbmApLCBKU09OLnN0cmluZ2lmeShwa2csIG51bGwsIDIpKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uLlxuICogQHN1bW1hcnkgQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIGdldFBhY2thZ2UgdG8gcmV0cmlldmUgdGhlIFwidmVyc2lvblwiIHByb3BlcnR5IGZyb20gcGFja2FnZS5qc29uLlxuICogQHBhcmFtIHtzdHJpbmd9IFtwPXByb2Nlc3MuY3dkKCldIC0gVGhlIGRpcmVjdG9yeSBwYXRoIHdoZXJlIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBpcyBsb2NhdGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgdmVyc2lvbiBzdHJpbmcgZnJvbSBwYWNrYWdlLmpzb24uXG4gKiBAZnVuY3Rpb24gZ2V0UGFja2FnZVZlcnNpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZnMtdXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VWZXJzaW9uKHAgPSBwcm9jZXNzLmN3ZCgpKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldFBhY2thZ2UocCwgXCJ2ZXJzaW9uXCIpIGFzIHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCBkZXBlbmRlbmNpZXMgZnJvbSB0aGUgcHJvamVjdC5cbiAqIEBzdW1tYXJ5IEV4ZWN1dGVzICducG0gbHMgLS1qc29uJyBjb21tYW5kIHRvIGdldCBhIGRldGFpbGVkIGxpc3Qgb2YgYWxsIGRlcGVuZGVuY2llcyAocHJvZHVjdGlvbiwgZGV2ZWxvcG1lbnQsIGFuZCBwZWVyKSBhbmQgdGhlaXIgdmVyc2lvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3BhdGg9cHJvY2Vzcy5jd2QoKV0gLSBUaGUgZGlyZWN0b3J5IHBhdGggb2YgdGhlIHByb2plY3QuXG4gKiBAcmV0dXJuIHtQcm9taXNlPHtwcm9kOiBBcnJheTx7bmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmd9PiwgZGV2OiBBcnJheTx7bmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmd9PiwgcGVlcjogQXJyYXk8e25hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nfT59Pn0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgYXJyYXlzIG9mIHByb2R1Y3Rpb24sIGRldmVsb3BtZW50LCBhbmQgcGVlciBkZXBlbmRlbmNpZXMuXG4gKiBAZnVuY3Rpb24gZ2V0RGVwZW5kZW5jaWVzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCBnZXREZXBlbmRlbmNpZXNcbiAqICAgcGFydGljaXBhbnQgcnVuQ29tbWFuZFxuICogICBwYXJ0aWNpcGFudCBKU09OXG4gKiAgIENhbGxlci0+PmdldERlcGVuZGVuY2llczogQ2FsbCB3aXRoIG9wdGlvbmFsIHBhdGhcbiAqICAgZ2V0RGVwZW5kZW5jaWVzLT4+cnVuQ29tbWFuZDogRXhlY3V0ZSAnbnBtIGxzIC0tanNvbidcbiAqICAgcnVuQ29tbWFuZC0tPj5nZXREZXBlbmRlbmNpZXM6IFJldHVybiBjb21tYW5kIG91dHB1dFxuICogICBnZXREZXBlbmRlbmNpZXMtPj5KU09OOiBQYXJzZSBjb21tYW5kIG91dHB1dFxuICogICBKU09OLS0+PmdldERlcGVuZGVuY2llczogUmV0dXJuIHBhcnNlZCBvYmplY3RcbiAqICAgZ2V0RGVwZW5kZW5jaWVzLT4+Z2V0RGVwZW5kZW5jaWVzOiBQcm9jZXNzIGRlcGVuZGVuY2llc1xuICogICBnZXREZXBlbmRlbmNpZXMtLT4+Q2FsbGVyOiBSZXR1cm4gcHJvY2Vzc2VkIGRlcGVuZGVuY2llc1xuICogQG1lbWJlck9mIG1vZHVsZTpmcy11dGlsc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGVwZW5kZW5jaWVzKFxuICBwYXRoOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpXG4pOiBQcm9taXNlPERlcGVuZGVuY3lNYXA+IHtcbiAgbGV0IHBrZzogYW55O1xuXG4gIHRyeSB7XG4gICAgcGtnID0gSlNPTi5wYXJzZShhd2FpdCBydW5Db21tYW5kKGBucG0gbHMgLS1qc29uYCwgeyBjd2Q6IHBhdGggfSkucHJvbWlzZSk7XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBkZXBlbmRlbmNpZXM6ICR7ZX1gKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgY29uc3QgbWFwcGVyID0gKGVudHJ5OiBbc3RyaW5nLCB1bmtub3duXSwgaW5kZXg6IG51bWJlcikgPT4gKHtcbiAgICBuYW1lOiBlbnRyeVswXSxcbiAgICB2ZXJzaW9uOiAoZW50cnlbMV0gYXMgYW55KS52ZXJzaW9uLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHByb2Q6IE9iamVjdC5lbnRyaWVzKHBrZy5kZXBlbmRlbmNpZXMgfHwge30pLm1hcChtYXBwZXIpLFxuICAgIGRldjogT2JqZWN0LmVudHJpZXMocGtnLmRldkRlcGVuZGVuY2llcyB8fCB7fSkubWFwKG1hcHBlciksXG4gICAgcGVlcjogT2JqZWN0LmVudHJpZXMocGtnLnBlZXJEZXBlbmRlbmNpZXMgfHwge30pLm1hcChtYXBwZXIpLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlRGVwZW5kZW5jaWVzKCkge1xuICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKHVwZGF0ZURlcGVuZGVuY2llcyk7XG4gIGxvZy5pbmZvKFwiY2hlY2tpbmcgZm9yIHVwZGF0ZXMuLi5cIik7XG4gIGF3YWl0IHJ1bkNvbW1hbmQoXCJucHggbnBtLWNoZWNrLXVwZGF0ZXMgLXVcIikucHJvbWlzZTtcbiAgbG9nLmluZm8oXCJ1cGRhdGluZy4uLlwiKTtcbiAgYXdhaXQgcnVuQ29tbWFuZChcIm5weCBucG0gcnVuIGRvLWluc3RhbGxcIikucHJvbWlzZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxJZk5vdEF2YWlsYWJsZShcbiAgZGVwczogc3RyaW5nW10gfCBzdHJpbmcsXG4gIGRlcGVuZGVuY2llcz86IFNpbXBsZURlcGVuZGVuY3lNYXBcbikge1xuICBpZiAoIWRlcGVuZGVuY2llcykge1xuICAgIGNvbnN0IGQ6IERlcGVuZGVuY3lNYXAgPSBhd2FpdCBnZXREZXBlbmRlbmNpZXMoKTtcbiAgICBkZXBlbmRlbmNpZXMgPSB7XG4gICAgICBwcm9kOiBkLnByb2Q/Lm1hcCgocCkgPT4gcC5uYW1lKSB8fCBbXSxcbiAgICAgIGRldjogZC5kZXY/Lm1hcCgoZCkgPT4gZC5uYW1lKSB8fCBbXSxcbiAgICAgIHBlZXI6IGQucGVlcj8ubWFwKChwKSA9PiBwLm5hbWUpIHx8IFtdLFxuICAgIH07XG4gIH1cbiAgY29uc3QgeyBwcm9kLCBkZXYsIHBlZXIgfSA9IGRlcGVuZGVuY2llcztcbiAgY29uc3QgaW5zdGFsbGVkID0gQXJyYXkuZnJvbShcbiAgICBuZXcgU2V0KFsuLi4ocHJvZCB8fCBbXSksIC4uLihkZXYgfHwgW10pLCAuLi4ocGVlciB8fCBbXSldKVxuICApO1xuICBkZXBzID0gdHlwZW9mIGRlcHMgPT09IFwic3RyaW5nXCIgPyBbZGVwc10gOiBkZXBzO1xuICBjb25zdCB0b0luc3RhbGwgPSBkZXBzLmZpbHRlcigoZCkgPT4gIWluc3RhbGxlZC5pbmNsdWRlcyhkKSk7XG5cbiAgaWYgKHRvSW5zdGFsbC5sZW5ndGgpIGF3YWl0IGluc3RhbGxEZXBlbmRlbmNpZXMoeyBkZXY6IHRvSW5zdGFsbCB9KTtcbiAgZGVwZW5kZW5jaWVzLmRldiA9IGRlcGVuZGVuY2llcy5kZXYgfHwgW107XG4gIGRlcGVuZGVuY2llcy5kZXYucHVzaCguLi50b0luc3RhbGwpO1xuICByZXR1cm4gZGVwZW5kZW5jaWVzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVzaFRvR2l0KCkge1xuICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKHB1c2hUb0dpdCk7XG4gIGNvbnN0IGdpdFVzZXIgPSBhd2FpdCBydW5Db21tYW5kKFwiZ2l0IGNvbmZpZyB1c2VyLm5hbWVcIikucHJvbWlzZTtcbiAgY29uc3QgZ2l0RW1haWwgPSBhd2FpdCBydW5Db21tYW5kKFwiZ2l0IGNvbmZpZyB1c2VyLmVtYWlsXCIpLnByb21pc2U7XG4gIGxvZy52ZXJib3NlKGBjYWNoZWQgZ2l0IGlkOiAke2dpdFVzZXJ9LyR7Z2l0RW1haWx9LiBjaGFuZ2luZyB0byBhdXRvbWF0aW9uYCk7XG4gIGF3YWl0IHJ1bkNvbW1hbmQoJ2dpdCBjb25maWcgdXNlci5lbWFpbCBcImF1dG9tYXRpb25AZGVjYWYudHNcIicpLnByb21pc2U7XG4gIGF3YWl0IHJ1bkNvbW1hbmQoJ2dpdCBjb25maWcgdXNlci5uYW1lIFwiZGVjYWZcIicpLnByb21pc2U7XG4gIGxvZy5pbmZvKFwiUHVzaGluZyBjaGFuZ2VzIHRvIGdpdC4uLlwiKTtcbiAgYXdhaXQgcnVuQ29tbWFuZChcImdpdCBhZGQgLlwiKS5wcm9taXNlO1xuICBhd2FpdCBydW5Db21tYW5kKGBnaXQgY29tbWl0IC1tIFwicmVmcyAjMSAtIGFmdGVyIHJlcG8gc2V0dXBcImApLnByb21pc2U7XG4gIGF3YWl0IHJ1bkNvbW1hbmQoXCJnaXQgcHVzaFwiKS5wcm9taXNlO1xuICBhd2FpdCBydW5Db21tYW5kKGBnaXQgY29uZmlnIHVzZXIuZW1haWwgXCIke2dpdEVtYWlsfVwiYCkucHJvbWlzZTtcbiAgYXdhaXQgcnVuQ29tbWFuZChgZ2l0IGNvbmZpZyB1c2VyLm5hbWUgXCIke2dpdFVzZXJ9XCJgKS5wcm9taXNlO1xuICBsb2cudmVyYm9zZShgcmV2ZXJ0ZWQgdG8gZ2l0IGlkOiAke2dpdFVzZXJ9LyR7Z2l0RW1haWx9YCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llczoge1xuICBwcm9kPzogc3RyaW5nW107XG4gIGRldj86IHN0cmluZ1tdO1xuICBwZWVyPzogc3RyaW5nW107XG59KSB7XG4gIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoaW5zdGFsbERlcGVuZGVuY2llcyk7XG4gIGNvbnN0IHByb2QgPSBkZXBlbmRlbmNpZXMucHJvZCB8fCBbXTtcbiAgY29uc3QgZGV2ID0gZGVwZW5kZW5jaWVzLmRldiB8fCBbXTtcbiAgY29uc3QgcGVlciA9IGRlcGVuZGVuY2llcy5wZWVyIHx8IFtdO1xuICBpZiAocHJvZC5sZW5ndGgpIHtcbiAgICBsb2cuaW5mbyhgSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMgJHtwcm9kLmpvaW4oXCIsIFwiKX0uLi5gKTtcbiAgICBhd2FpdCBydW5Db21tYW5kKGBucG0gaW5zdGFsbCAke3Byb2Quam9pbihcIiBcIil9YCwgeyBjd2Q6IHByb2Nlc3MuY3dkKCkgfSlcbiAgICAgIC5wcm9taXNlO1xuICB9XG4gIGlmIChkZXYubGVuZ3RoKSB7XG4gICAgbG9nLmluZm8oYEluc3RhbGxpbmcgZGV2RGVwZW5kZW5jaWVzICR7ZGV2LmpvaW4oXCIsIFwiKX0uLi5gKTtcbiAgICBhd2FpdCBydW5Db21tYW5kKGBucG0gaW5zdGFsbCAtLXNhdmUtZGV2ICR7ZGV2LmpvaW4oXCIgXCIpfWAsIHtcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICB9KS5wcm9taXNlO1xuICB9XG4gIGlmIChwZWVyLmxlbmd0aCkge1xuICAgIGxvZy5pbmZvKGBJbnN0YWxsaW5nIHBlZXJEZXBlbmRlbmNpZXMgJHtwZWVyLmpvaW4oXCIsIFwiKX0uLi5gKTtcbiAgICBhd2FpdCBydW5Db21tYW5kKGBucG0gaW5zdGFsbCAtLXNhdmUtcGVlciAke3BlZXIuam9pbihcIiBcIil9YCwge1xuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIH0pLnByb21pc2U7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5vcm1hbGl6ZUltcG9ydDxUPihcbiAgaW1wb3J0UHJvbWlzZTogUHJvbWlzZTxUPlxuKTogUHJvbWlzZTxUPiB7XG4gIC8vIENvbW1vbkpTJ3MgYG1vZHVsZS5leHBvcnRzYCBpcyB3cmFwcGVkIGFzIGBkZWZhdWx0YCBpbiBFU01vZHVsZS5cbiAgcmV0dXJuIGltcG9ydFByb21pc2UudGhlbigobTogYW55KSA9PiAobS5kZWZhdWx0IHx8IG0pIGFzIFQpO1xufVxuIl19
@@ -66,5 +66,4 @@ export class HttpClient {
66
66
  });
67
67
  }
68
68
  }
69
-
70
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLFVBQVU7YUFDSixRQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E2Qkc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFXO1FBQ25DLE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDN0MsU0FBUyxPQUFPLENBQUMsR0FBVztnQkFDMUIsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDckIsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUc7d0JBQ2xELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBa0IsQ0FBQyxDQUFDO29CQUVqRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7d0JBQzNCLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNsQixtQkFBbUIsR0FBRyxhQUFhLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FDckQsQ0FBQzt3QkFDRixPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNyRCxDQUFDO29CQUNELElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDZCxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUN2QixJQUFJLElBQUksS0FBSyxDQUFDO29CQUNoQixDQUFDLENBQUMsQ0FBQztvQkFDSCxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUN4QixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2hCLENBQUMsQ0FBQyxDQUFDO29CQUVILEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTt3QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJmaWxlIjoidXRpbHMvaHR0cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBodHRwcyBmcm9tIFwiaHR0cHNcIjtcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tIFwiLi4vb3V0cHV0L2xvZ2dpbmdcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQSBzaW1wbGUgSFRUUCBjbGllbnQgZm9yIGRvd25sb2FkaW5nIGZpbGVzLlxuICogQHN1bW1hcnkgVGhpcyBjbGFzcyBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHRvIGRvd25sb2FkIGZpbGVzIGZyb20gSFRUUFMgVVJMcy5cbiAqIEl0IHVzZXMgTm9kZS5qcyBidWlsdC1pbiBodHRwcyBtb2R1bGUgdG8gbWFrZSByZXF1ZXN0cy5cbiAqXG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIEh0dHBDbGllbnQge1xuICBwcm90ZWN0ZWQgc3RhdGljIGxvZyA9IExvZ2dpbmcuZm9yKEh0dHBDbGllbnQpO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERvd25sb2FkcyBhIGZpbGUgZnJvbSBhIGdpdmVuIFVSTC5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2Qgc2VuZHMgYSBHRVQgcmVxdWVzdCB0byB0aGUgc3BlY2lmaWVkIFVSTCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIHN0cmluZy5cbiAgICogSXQgaGFuZGxlcyBkaWZmZXJlbnQgc2NlbmFyaW9zIHN1Y2ggYXMgbm9uLTIwMCBzdGF0dXMgY29kZXMgYW5kIG5ldHdvcmsgZXJyb3JzLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIC0gVGhlIFVSTCBvZiB0aGUgZmlsZSB0byBkb3dubG9hZC5cbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBmaWxlIGNvbnRlbnQgYXMgYSBzdHJpbmcuXG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICAgKiAgIHBhcnRpY2lwYW50IEh0dHBDbGllbnRcbiAgICogICBwYXJ0aWNpcGFudCBIVFRQU1xuICAgKiAgIHBhcnRpY2lwYW50IFNlcnZlclxuICAgKiAgIENsaWVudC0+Pkh0dHBDbGllbnQ6IGRvd25sb2FkRmlsZSh1cmwpXG4gICAqICAgSHR0cENsaWVudC0+PkhUVFBTOiBnZXQodXJsKVxuICAgKiAgIEhUVFBTLT4+U2VydmVyOiBHRVQgcmVxdWVzdFxuICAgKiAgIFNlcnZlci0tPj5IVFRQUzogUmVzcG9uc2VcbiAgICogICBIVFRQUy0tPj5IdHRwQ2xpZW50OiBSZXNwb25zZSBvYmplY3RcbiAgICogICBhbHQgU3RhdHVzIGNvZGUgaXMgMjAwXG4gICAqICAgICBsb29wIEZvciBlYWNoIGRhdGEgY2h1bmtcbiAgICogICAgICAgSFRUUFMtPj5IdHRwQ2xpZW50OiAnZGF0YScgZXZlbnRcbiAgICogICAgICAgSHR0cENsaWVudC0+Pkh0dHBDbGllbnQ6IEFjY3VtdWxhdGUgZGF0YVxuICAgKiAgICAgZW5kXG4gICAqICAgICBIVFRQUy0+Pkh0dHBDbGllbnQ6ICdlbmQnIGV2ZW50XG4gICAqICAgICBIdHRwQ2xpZW50LS0+PkNsaWVudDogUmVzb2x2ZSB3aXRoIGRhdGFcbiAgICogICBlbHNlIFN0YXR1cyBjb2RlIGlzIG5vdCAyMDBcbiAgICogICAgIEh0dHBDbGllbnQtLT4+Q2xpZW50OiBSZWplY3Qgd2l0aCBlcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGRvd25sb2FkRmlsZSh1cmw6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgZnVuY3Rpb24gcmVxdWVzdCh1cmw6IHN0cmluZykge1xuICAgICAgICB1cmwgPSBlbmNvZGVVUkkodXJsKTtcbiAgICAgICAgaHR0cHMuZ2V0KHVybCwgKHJlcykgPT4ge1xuICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMzAxIHx8IHJlcy5zdGF0dXNDb2RlID09PSAzMDcpXG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdChyZXMuaGVhZGVycy5sb2NhdGlvbiBhcyBzdHJpbmcpO1xuXG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAgICAgIEh0dHBDbGllbnQubG9nLmVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIGZldGNoICR7dXJsfSAoc3RhdHVzOiAke3Jlcy5zdGF0dXNDb2RlfSlgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCAke3VybH1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBkYXRhID0gXCJcIjtcbiAgICAgICAgICByZXMub24oXCJkYXRhXCIsIChjaHVuaykgPT4ge1xuICAgICAgICAgICAgZGF0YSArPSBjaHVuaztcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXMub24oXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXMub24oXCJlbmRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXF1ZXN0KHVybCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLFVBQVU7YUFDSixRQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E2Qkc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFXO1FBQ25DLE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDN0MsU0FBUyxPQUFPLENBQUMsR0FBVztnQkFDMUIsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDckIsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUc7d0JBQ2xELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBa0IsQ0FBQyxDQUFDO29CQUVqRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7d0JBQzNCLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNsQixtQkFBbUIsR0FBRyxhQUFhLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FDckQsQ0FBQzt3QkFDRixPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNyRCxDQUFDO29CQUNELElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDZCxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUN2QixJQUFJLElBQUksS0FBSyxDQUFDO29CQUNoQixDQUFDLENBQUMsQ0FBQztvQkFDSCxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUN4QixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2hCLENBQUMsQ0FBQyxDQUFDO29CQUVILEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTt3QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaHR0cHMgZnJvbSBcImh0dHBzXCI7XG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIi4uL291dHB1dC9sb2dnaW5nXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgc2ltcGxlIEhUVFAgY2xpZW50IGZvciBkb3dubG9hZGluZyBmaWxlcy5cbiAqIEBzdW1tYXJ5IFRoaXMgY2xhc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0byBkb3dubG9hZCBmaWxlcyBmcm9tIEhUVFBTIFVSTHMuXG4gKiBJdCB1c2VzIE5vZGUuanMgYnVpbHQtaW4gaHR0cHMgbW9kdWxlIHRvIG1ha2UgcmVxdWVzdHMuXG4gKlxuICogQGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50IHtcbiAgcHJvdGVjdGVkIHN0YXRpYyBsb2cgPSBMb2dnaW5nLmZvcihIdHRwQ2xpZW50KTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEb3dubG9hZHMgYSBmaWxlIGZyb20gYSBnaXZlbiBVUkwuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIHNlbmRzIGEgR0VUIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBVUkwgYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBzdHJpbmcuXG4gICAqIEl0IGhhbmRsZXMgZGlmZmVyZW50IHNjZW5hcmlvcyBzdWNoIGFzIG5vbi0yMDAgc3RhdHVzIGNvZGVzIGFuZCBuZXR3b3JrIGVycm9ycy5cbiAgICpcbiAgICogQHBhcmFtIHVybCAtIFRoZSBVUkwgb2YgdGhlIGZpbGUgdG8gZG93bmxvYWQuXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZmlsZSBjb250ZW50IGFzIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAgICogICBwYXJ0aWNpcGFudCBIdHRwQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgSFRUUFNcbiAgICogICBwYXJ0aWNpcGFudCBTZXJ2ZXJcbiAgICogICBDbGllbnQtPj5IdHRwQ2xpZW50OiBkb3dubG9hZEZpbGUodXJsKVxuICAgKiAgIEh0dHBDbGllbnQtPj5IVFRQUzogZ2V0KHVybClcbiAgICogICBIVFRQUy0+PlNlcnZlcjogR0VUIHJlcXVlc3RcbiAgICogICBTZXJ2ZXItLT4+SFRUUFM6IFJlc3BvbnNlXG4gICAqICAgSFRUUFMtLT4+SHR0cENsaWVudDogUmVzcG9uc2Ugb2JqZWN0XG4gICAqICAgYWx0IFN0YXR1cyBjb2RlIGlzIDIwMFxuICAgKiAgICAgbG9vcCBGb3IgZWFjaCBkYXRhIGNodW5rXG4gICAqICAgICAgIEhUVFBTLT4+SHR0cENsaWVudDogJ2RhdGEnIGV2ZW50XG4gICAqICAgICAgIEh0dHBDbGllbnQtPj5IdHRwQ2xpZW50OiBBY2N1bXVsYXRlIGRhdGFcbiAgICogICAgIGVuZFxuICAgKiAgICAgSFRUUFMtPj5IdHRwQ2xpZW50OiAnZW5kJyBldmVudFxuICAgKiAgICAgSHR0cENsaWVudC0tPj5DbGllbnQ6IFJlc29sdmUgd2l0aCBkYXRhXG4gICAqICAgZWxzZSBTdGF0dXMgY29kZSBpcyBub3QgMjAwXG4gICAqICAgICBIdHRwQ2xpZW50LS0+PkNsaWVudDogUmVqZWN0IHdpdGggZXJyb3JcbiAgICogICBlbmRcbiAgICovXG4gIHN0YXRpYyBhc3luYyBkb3dubG9hZEZpbGUodXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGZ1bmN0aW9uIHJlcXVlc3QodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdXJsID0gZW5jb2RlVVJJKHVybCk7XG4gICAgICAgIGh0dHBzLmdldCh1cmwsIChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDMwMSB8fCByZXMuc3RhdHVzQ29kZSA9PT0gMzA3KVxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QocmVzLmhlYWRlcnMubG9jYXRpb24gYXMgc3RyaW5nKTtcblxuICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgICAgICBIdHRwQ2xpZW50LmxvZy5lcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byBmZXRjaCAke3VybH0gKHN0YXR1czogJHtyZXMuc3RhdHVzQ29kZX0pYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9YCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZGF0YSA9IFwiXCI7XG4gICAgICAgICAgcmVzLm9uKFwiZGF0YVwiLCAoY2h1bmspID0+IHtcbiAgICAgICAgICAgIGRhdGEgKz0gY2h1bms7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVzLm9uKFwiZXJyb3JcIiwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmVzLm9uKFwiZW5kXCIsICgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmVxdWVzdCh1cmwpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -5,5 +5,4 @@ export * from "./http";
5
5
  export * from "./text";
6
6
  export * from "./types";
7
7
  export * from "./utils";
8
-
9
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLE1BQU0sQ0FBQztBQUNyQixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQyIsImZpbGUiOiJ1dGlscy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW52aXJvbm1lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9odHRwXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxNQUFNLENBQUM7QUFDckIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vudmlyb25tZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaHR0cFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG4iXX0=
@@ -1,3 +1,2 @@
1
1
  export {};
2
-
3
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy9tZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InV0aWxzL21kLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gU2luZ2xlIGxpbmUgbWFya2Rvd24gZWxlbWVudCB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIHRoZSBwb3NzaWJsZSBoZWFkZXIgbGV2ZWxzIGluIG1hcmtkb3duXG4gKiBAdHlwZWRlZiB7XCJoMVwifFwiaDJcInxcImgzXCJ8XCJoNFwifFwiaDVcInxcImg2XCJ9IE1kU2luZ2xlTGluZUVsZW1lbnRcbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgTWRTaW5nbGVMaW5lRWxlbWVudCA9IFwiaDFcIiB8IFwiaDJcIiB8IFwiaDNcIiB8IFwiaDRcIiB8IFwiaDVcIiB8IFwiaDZcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTXVsdGktbGluZSBlbGVtZW50IHR5cGVzIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBhdmFpbGFibGUgbXVsdGktbGluZSBlbGVtZW50IHR5cGVzXG4gKiBAdHlwZWRlZiB7XCJwXCJ8XCJibG9ja3F1b3RlXCJ9IE1kTXVsdGlMaW5lRWxlbWVudFxuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZE11bHRpTGluZUVsZW1lbnQgPSBcInBcIiB8IFwiYmxvY2txdW90ZVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBMaXN0IGVsZW1lbnQgdHlwZXMgaW4gbWFya2Rvd25cbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGF2YWlsYWJsZSBsaXN0IHR5cGVzXG4gKiBAdHlwZWRlZiB7XCJ1bFwifFwib2xcIn0gTWRMaXN0RWxlbWVudFxuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZExpc3RFbGVtZW50ID0gXCJ1bFwiIHwgXCJvbFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBMaXN0IGVsZW1lbnQgdHlwZXMgaW4gbWFya2Rvd25cbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGF2YWlsYWJsZSBsaXN0IHR5cGVzXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZFNpbmdsZUxpbmVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdWxdIC0gdW5vcmRlcmVkIGxpc3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbb2xdIC0gb3JkZXJlZCBsaXN0XG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kU2luZ2xlTGluZSA9IHtcbiAgW2sgaW4gTWRTaW5nbGVMaW5lRWxlbWVudF0/OiBzdHJpbmc7XG59O1xuLyoqXG4gKiBAZGVzY3JpcHRpb24gTXVsdGktbGluZSBtYXJrZG93biBlbGVtZW50IHR5cGVcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgbWFya2Rvd24gZWxlbWVudHMgdGhhdCBjYW4gY29udGFpbiBtdWx0aXBsZSBsaW5lcyBvZiB0ZXh0XG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZE11bHRpTGluZVxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IFtwXSAtIFBhcmFncmFwaCBjb250ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ3xzdHJpbmdbXX0gW2Jsb2NrcXVvdGVdIC0gQmxvY2txdW90ZSBjb250ZW50XG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kTXVsdGlMaW5lID0geyBbayBpbiBNZE11bHRpTGluZUVsZW1lbnRdPzogc3RyaW5nIHwgc3RyaW5nW10gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW1hZ2UgZGVmaW5pdGlvbiB0eXBlIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgZm9yIGltYWdlIGVsZW1lbnRzXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZEltYWdlRGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt0aXRsZV0gLSBPcHRpb25hbCBpbWFnZSB0aXRsZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNvdXJjZSAtIEltYWdlIHNvdXJjZSBVUkxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbYWx0XSAtIE9wdGlvbmFsIGFsdGVybmF0aXZlIHRleHRcbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgTWRJbWFnZURlZmluaXRpb24gPSB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbiAgYWx0Pzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW1hZ2UgZWxlbWVudCB0eXBlIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGFuIGltYWdlIGVsZW1lbnQgd2l0aCBpdHMgcHJvcGVydGllc1xuICogQHR5cGVkZWYge09iamVjdH0gTWRJbWFnZVxuICogQHByb3BlcnR5IHtNZEltYWdlRGVmaW5pdGlvbn0gaW1nIC0gVGhlIGltYWdlIGRlZmluaXRpb24gb2JqZWN0XG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kSW1hZ2UgPSB7IGltZzogTWRJbWFnZURlZmluaXRpb24gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTGlzdCBpdGVtIGVsZW1lbnQgdHlwZSBpbiBtYXJrZG93blxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlzdHMgaW4gbWFya2Rvd25cbiAqIEB0eXBlZGVmIHtPYmplY3R9IE1kTGlzdEl0ZW1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHVsIC0gVW5vcmRlcmVkIGxpc3QgaXRlbXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IG9sIC0gT3JkZXJlZCBsaXN0IGl0ZW1zXG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kTGlzdEl0ZW0gPSB7IFtrIGluIE1kTGlzdEVsZW1lbnRdOiBzdHJpbmdbXSB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUYWJsZSBkZWZpbml0aW9uIHR5cGUgaW4gbWFya2Rvd25cbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgdGFibGUgZWxlbWVudHNcbiAqIEB0eXBlZGVmIHtPYmplY3R9IE1kVGFibGVEZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBoZWFkZXJzIC0gQXJyYXkgb2YgdGFibGUgaGVhZGVyIG5hbWVzXG4gKiBAcHJvcGVydHkge09iamVjdFtdfSByb3dzIC0gQXJyYXkgb2Ygcm93IG9iamVjdHMgY29udGFpbmluZyBjb2x1bW4gdmFsdWVzXG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kVGFibGVEZWZpbml0aW9uID0ge1xuICBoZWFkZXJzOiBzdHJpbmdbXTtcbiAgcm93czogeyBbY29sdW1uOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9W107XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUYWJsZSBlbGVtZW50IHR5cGUgaW4gbWFya2Rvd25cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYSB0YWJsZSBzdHJ1Y3R1cmUgd2l0aCBoZWFkZXJzIGFuZCByb3dzXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZFRhYmxlXG4gKiBAcHJvcGVydHkge01kVGFibGVEZWZpbml0aW9ufSB0YWJsZSAtIFRoZSB0YWJsZSBkZWZpbml0aW9uIG9iamVjdFxuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZFRhYmxlID0geyB0YWJsZTogTWRUYWJsZURlZmluaXRpb24gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29kZSBibG9jayBkZWZpbml0aW9uIHR5cGUgaW4gbWFya2Rvd25cbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgY29kZSBibG9ja3NcbiAqIEB0eXBlZGVmIHtPYmplY3R9IE1kQ29kZURlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbGFuZ3VhZ2VdIC0gT3B0aW9uYWwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IGNvbnRlbnQgLSBUaGUgY29kZSBjb250ZW50IGFzIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzXG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kQ29kZURlZmluaXRpb24gPSB7XG4gIGxhbmd1YWdlPzogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvZGUgYmxvY2sgZWxlbWVudCB0eXBlIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgY29kZSBibG9jayB3aXRoIG9wdGlvbmFsIGxhbmd1YWdlIHNwZWNpZmljYXRpb25cbiAqIEB0eXBlZGVmIHtPYmplY3R9IE1kQ29kZVxuICogQHByb3BlcnR5IHtNZENvZGVEZWZpbml0aW9ufSBjb2RlIC0gVGhlIGNvZGUgYmxvY2sgZGVmaW5pdGlvbiBvYmplY3RcbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgTWRDb2RlID0geyBjb2RlOiBNZENvZGVEZWZpbml0aW9uIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEhvcml6b250YWwgcnVsZSBlbGVtZW50IHR5cGUgaW4gbWFya2Rvd25cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYSBob3Jpem9udGFsIHJ1bGUgc2VwYXJhdG9yXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZFNlcGFyYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhyIC0gVGhlIGhvcml6b250YWwgcnVsZSByZXByZXNlbnRhdGlvblxuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZFNlcGFyYXRvciA9IHsgaHI6IHN0cmluZyB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBMaW5rIGVsZW1lbnQgdHlwZSBpbiBtYXJrZG93blxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIGh5cGVybGluayB3aXRoIHRpdGxlIGFuZCBzb3VyY2VcbiAqIEB0eXBlZGVmIHtPYmplY3R9IE1kTGlua1xuICogQHByb3BlcnR5IHt7dGl0bGU6IHN0cmluZywgc291cmNlOiBzdHJpbmd9fSBsaW5rIC0gVGhlIGxpbmsgZGVmaW5pdGlvbiBvYmplY3RcbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgTWRMaW5rID0ge1xuICBsaW5rOiB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBzb3VyY2U6IHN0cmluZztcbiAgfTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1hcmtkb3duIGVsZW1lbnQgdHlwZSBkZWZpbml0aW9uXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGFsbCBwb3NzaWJsZSBtYXJrZG93biBlbGVtZW50cyB0aGF0IGNhbiBiZSB1c2VkIGluIGRvY3VtZW50IGdlbmVyYXRpb24uXG4gKiBUaGlzIHR5cGUgY29tYmluZXMgdmFyaW91cyBtYXJrZG93biBlbGVtZW50cyBpbmNsdWRpbmcgaGVhZGVycywgcGFyYWdyYXBocywgaW1hZ2VzLCBsaXN0cyxcbiAqIHRhYmxlcywgY29kZSBibG9ja3MsIHNlcGFyYXRvcnMsIGFuZCBsaW5rcyBpbnRvIGEgdW5pb24gdHlwZSBmb3IgZmxleGlibGUgbWFya2Rvd24gY29udGVudCBjcmVhdGlvbi5cbiAqIEB0eXBlZGVmIHsoTWRTaW5nbGVMaW5lIHwgTWRNdWx0aUxpbmUgfCBNZEltYWdlIHwgTWRMaXN0SXRlbSB8IE1kVGFibGUgfCBNZENvZGUgfCBNZFNlcGFyYXRvciB8IE1kTGluayl9IE1kRWxlbWVudHNcbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgTWRFbGVtZW50cyA9XG4gIHwgTWRTaW5nbGVMaW5lXG4gIHwgTWRNdWx0aUxpbmVcbiAgfCBNZEltYWdlXG4gIHwgTWRMaXN0SXRlbVxuICB8IE1kVGFibGVcbiAgfCBNZENvZGVcbiAgfCBNZFNlcGFyYXRvclxuICB8IE1kTGluaztcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIFNpbmdsZSBsaW5lIG1hcmtkb3duIGVsZW1lbnQgdHlwZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyB0aGUgcG9zc2libGUgaGVhZGVyIGxldmVscyBpbiBtYXJrZG93blxuICogQHR5cGVkZWYge1wiaDFcInxcImgyXCJ8XCJoM1wifFwiaDRcInxcImg1XCJ8XCJoNlwifSBNZFNpbmdsZUxpbmVFbGVtZW50XG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kU2luZ2xlTGluZUVsZW1lbnQgPSBcImgxXCIgfCBcImgyXCIgfCBcImgzXCIgfCBcImg0XCIgfCBcImg1XCIgfCBcImg2XCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE11bHRpLWxpbmUgZWxlbWVudCB0eXBlcyBpbiBtYXJrZG93blxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgYXZhaWxhYmxlIG11bHRpLWxpbmUgZWxlbWVudCB0eXBlc1xuICogQHR5cGVkZWYge1wicFwifFwiYmxvY2txdW90ZVwifSBNZE11bHRpTGluZUVsZW1lbnRcbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgTWRNdWx0aUxpbmVFbGVtZW50ID0gXCJwXCIgfCBcImJsb2NrcXVvdGVcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTGlzdCBlbGVtZW50IHR5cGVzIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBhdmFpbGFibGUgbGlzdCB0eXBlc1xuICogQHR5cGVkZWYge1widWxcInxcIm9sXCJ9IE1kTGlzdEVsZW1lbnRcbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgTWRMaXN0RWxlbWVudCA9IFwidWxcIiB8IFwib2xcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTGlzdCBlbGVtZW50IHR5cGVzIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBhdmFpbGFibGUgbGlzdCB0eXBlc1xuICogQHR5cGVkZWYge09iamVjdH0gTWRTaW5nbGVMaW5lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3VsXSAtIHVub3JkZXJlZCBsaXN0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gW29sXSAtIG9yZGVyZWQgbGlzdFxuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZFNpbmdsZUxpbmUgPSB7XG4gIFtrIGluIE1kU2luZ2xlTGluZUVsZW1lbnRdPzogc3RyaW5nO1xufTtcbi8qKlxuICogQGRlc2NyaXB0aW9uIE11bHRpLWxpbmUgbWFya2Rvd24gZWxlbWVudCB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIG1hcmtkb3duIGVsZW1lbnRzIHRoYXQgY2FuIGNvbnRhaW4gbXVsdGlwbGUgbGluZXMgb2YgdGV4dFxuICogQHR5cGVkZWYge09iamVjdH0gTWRNdWx0aUxpbmVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfHN0cmluZ1tdfSBbcF0gLSBQYXJhZ3JhcGggY29udGVudFxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IFtibG9ja3F1b3RlXSAtIEJsb2NrcXVvdGUgY29udGVudFxuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZE11bHRpTGluZSA9IHsgW2sgaW4gTWRNdWx0aUxpbmVFbGVtZW50XT86IHN0cmluZyB8IHN0cmluZ1tdIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEltYWdlIGRlZmluaXRpb24gdHlwZSBpbiBtYXJrZG93blxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBpbWFnZSBlbGVtZW50c1xuICogQHR5cGVkZWYge09iamVjdH0gTWRJbWFnZURlZmluaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdGl0bGVdIC0gT3B0aW9uYWwgaW1hZ2UgdGl0bGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzb3VyY2UgLSBJbWFnZSBzb3VyY2UgVVJMXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FsdF0gLSBPcHRpb25hbCBhbHRlcm5hdGl2ZSB0ZXh0XG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kSW1hZ2VEZWZpbml0aW9uID0ge1xuICB0aXRsZT86IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIGFsdD86IHN0cmluZztcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEltYWdlIGVsZW1lbnQgdHlwZSBpbiBtYXJrZG93blxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhbiBpbWFnZSBlbGVtZW50IHdpdGggaXRzIHByb3BlcnRpZXNcbiAqIEB0eXBlZGVmIHtPYmplY3R9IE1kSW1hZ2VcbiAqIEBwcm9wZXJ0eSB7TWRJbWFnZURlZmluaXRpb259IGltZyAtIFRoZSBpbWFnZSBkZWZpbml0aW9uIG9iamVjdFxuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZEltYWdlID0geyBpbWc6IE1kSW1hZ2VEZWZpbml0aW9uIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExpc3QgaXRlbSBlbGVtZW50IHR5cGUgaW4gbWFya2Rvd25cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgb3JkZXJlZCBhbmQgdW5vcmRlcmVkIGxpc3RzIGluIG1hcmtkb3duXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZExpc3RJdGVtXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSB1bCAtIFVub3JkZXJlZCBsaXN0IGl0ZW1zXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBvbCAtIE9yZGVyZWQgbGlzdCBpdGVtc1xuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZExpc3RJdGVtID0geyBbayBpbiBNZExpc3RFbGVtZW50XTogc3RyaW5nW10gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGFibGUgZGVmaW5pdGlvbiB0eXBlIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlIGVsZW1lbnRzXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZFRhYmxlRGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gaGVhZGVycyAtIEFycmF5IG9mIHRhYmxlIGhlYWRlciBuYW1lc1xuICogQHByb3BlcnR5IHtPYmplY3RbXX0gcm93cyAtIEFycmF5IG9mIHJvdyBvYmplY3RzIGNvbnRhaW5pbmcgY29sdW1uIHZhbHVlc1xuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZFRhYmxlRGVmaW5pdGlvbiA9IHtcbiAgaGVhZGVyczogc3RyaW5nW107XG4gIHJvd3M6IHsgW2NvbHVtbjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfVtdO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGFibGUgZWxlbWVudCB0eXBlIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdGFibGUgc3RydWN0dXJlIHdpdGggaGVhZGVycyBhbmQgcm93c1xuICogQHR5cGVkZWYge09iamVjdH0gTWRUYWJsZVxuICogQHByb3BlcnR5IHtNZFRhYmxlRGVmaW5pdGlvbn0gdGFibGUgLSBUaGUgdGFibGUgZGVmaW5pdGlvbiBvYmplY3RcbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgTWRUYWJsZSA9IHsgdGFibGU6IE1kVGFibGVEZWZpbml0aW9uIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvZGUgYmxvY2sgZGVmaW5pdGlvbiB0eXBlIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgZm9yIGNvZGUgYmxvY2tzXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZENvZGVEZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2xhbmd1YWdlXSAtIE9wdGlvbmFsIHByb2dyYW1taW5nIGxhbmd1YWdlIHNwZWNpZmljYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfHN0cmluZ1tdfSBjb250ZW50IC0gVGhlIGNvZGUgY29udGVudCBhcyBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5nc1xuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBNZENvZGVEZWZpbml0aW9uID0ge1xuICBsYW5ndWFnZT86IHN0cmluZztcbiAgY29udGVudDogc3RyaW5nIHwgc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb2RlIGJsb2NrIGVsZW1lbnQgdHlwZSBpbiBtYXJrZG93blxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIGNvZGUgYmxvY2sgd2l0aCBvcHRpb25hbCBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZENvZGVcbiAqIEBwcm9wZXJ0eSB7TWRDb2RlRGVmaW5pdGlvbn0gY29kZSAtIFRoZSBjb2RlIGJsb2NrIGRlZmluaXRpb24gb2JqZWN0XG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kQ29kZSA9IHsgY29kZTogTWRDb2RlRGVmaW5pdGlvbiB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIb3Jpem9udGFsIHJ1bGUgZWxlbWVudCB0eXBlIGluIG1hcmtkb3duXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgaG9yaXpvbnRhbCBydWxlIHNlcGFyYXRvclxuICogQHR5cGVkZWYge09iamVjdH0gTWRTZXBhcmF0b3JcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBociAtIFRoZSBob3Jpem9udGFsIHJ1bGUgcmVwcmVzZW50YXRpb25cbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgTWRTZXBhcmF0b3IgPSB7IGhyOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTGluayBlbGVtZW50IHR5cGUgaW4gbWFya2Rvd25cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYSBoeXBlcmxpbmsgd2l0aCB0aXRsZSBhbmQgc291cmNlXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBNZExpbmtcbiAqIEBwcm9wZXJ0eSB7e3RpdGxlOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nfX0gbGluayAtIFRoZSBsaW5rIGRlZmluaXRpb24gb2JqZWN0XG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kTGluayA9IHtcbiAgbGluazoge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc291cmNlOiBzdHJpbmc7XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXJrZG93biBlbGVtZW50IHR5cGUgZGVmaW5pdGlvblxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhbGwgcG9zc2libGUgbWFya2Rvd24gZWxlbWVudHMgdGhhdCBjYW4gYmUgdXNlZCBpbiBkb2N1bWVudCBnZW5lcmF0aW9uLlxuICogVGhpcyB0eXBlIGNvbWJpbmVzIHZhcmlvdXMgbWFya2Rvd24gZWxlbWVudHMgaW5jbHVkaW5nIGhlYWRlcnMsIHBhcmFncmFwaHMsIGltYWdlcywgbGlzdHMsXG4gKiB0YWJsZXMsIGNvZGUgYmxvY2tzLCBzZXBhcmF0b3JzLCBhbmQgbGlua3MgaW50byBhIHVuaW9uIHR5cGUgZm9yIGZsZXhpYmxlIG1hcmtkb3duIGNvbnRlbnQgY3JlYXRpb24uXG4gKiBAdHlwZWRlZiB7KE1kU2luZ2xlTGluZSB8IE1kTXVsdGlMaW5lIHwgTWRJbWFnZSB8IE1kTGlzdEl0ZW0gfCBNZFRhYmxlIHwgTWRDb2RlIHwgTWRTZXBhcmF0b3IgfCBNZExpbmspfSBNZEVsZW1lbnRzXG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1kRWxlbWVudHMgPVxuICB8IE1kU2luZ2xlTGluZVxuICB8IE1kTXVsdGlMaW5lXG4gIHwgTWRJbWFnZVxuICB8IE1kTGlzdEl0ZW1cbiAgfCBNZFRhYmxlXG4gIHwgTWRDb2RlXG4gIHwgTWRTZXBhcmF0b3JcbiAgfCBNZExpbms7XG4iXX0=
@@ -219,5 +219,4 @@ export class TestReporter {
219
219
  return this.report(reference, buffer, "image");
220
220
  }
221
221
  }
222
-
223
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy90ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW1DN0MsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsbUNBQW1DLENBQUM7QUFFL0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxTQUFTLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUUvRSxLQUFLLFVBQVUsZUFBZSxDQUFJLGFBQXlCO0lBQ3pELG1FQUFtRTtJQUNuRSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQU0sQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeURHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUF3QnZCLFlBQ1ksV0FBbUIsT0FBTyxFQUMxQixXQUFXLElBQUksQ0FBQyxJQUFJLENBQzVCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFDYixVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsQ0FDWjtRQU5TLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBS2pCO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENB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QyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRiIsImZpbGUiOiJ1dGlscy90ZXN0cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBNZFRhYmxlRGVmaW5pdGlvbiB9IGZyb20gXCIuL21kXCI7XG5pbXBvcnQgeyBpbnN0YWxsSWZOb3RBdmFpbGFibGUgfSBmcm9tIFwiLi9mc1wiO1xuaW1wb3J0IHsgU2ltcGxlRGVwZW5kZW5jeU1hcCB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQGludGVyZmFjZSBBZGRBdHRhY2hQYXJhbXNcbiAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBhZGRpbmcgYW4gYXR0YWNobWVudCB0byBhIHJlcG9ydFxuICogQHN1bW1hcnkgSW50ZXJmYWNlIGZvciBhdHRhY2htZW50IHBhcmFtZXRlcnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6QGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQXR0YWNoUGFyYW1zIHtcbiAgYXR0YWNoOiBzdHJpbmcgfCBCdWZmZXI7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBvYmplY3Q7XG4gIGNvbnRleHQ/OiBhbnk7XG4gIGJ1ZmZlckZvcm1hdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAaW50ZXJmYWNlIEFkZE1zZ1BhcmFtc1xuICogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIGFkZGluZyBhIG1lc3NhZ2UgdG8gYSByZXBvcnRcbiAqIEBzdW1tYXJ5IEludGVyZmFjZSBmb3IgbWVzc2FnZSBwYXJhbWV0ZXJzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZE1zZ1BhcmFtcyB7XG4gIG1lc3NhZ2U6IHN0cmluZyB8IG9iamVjdDtcbiAgY29udGV4dD86IGFueTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFwianNvblwifFwiaW1hZ2VcInxcInRleHRcInxcIm1kXCIpfSBQYXlsb2FkVHlwZVxuICogQGRlc2NyaXB0aW9uIFR5cGVzIG9mIHBheWxvYWRzIHRoYXQgY2FuIGJlIGhhbmRsZWRcbiAqIEBzdW1tYXJ5IFVuaW9uIHR5cGUgZm9yIHBheWxvYWQgdHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6QGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIFBheWxvYWRUeXBlID0gXCJqc29uXCIgfCBcImltYWdlXCIgfCBcInRleHRcIiB8IFwibWRcIjtcblxuZXhwb3J0IGNvbnN0IEplc3RSZXBvcnRlcnNUZW1wUGF0aEVudktleSA9IFwiSkVTVF9IVE1MX1JFUE9SVEVSU19URU1QX0RJUl9QQVRIXCI7XG5cbmNvbnN0IGRlcGVuZGVuY2llcyA9IFtcImplc3QtaHRtbC1yZXBvcnRlcnNcIiwgXCJqc29uMm1kXCIsIFwiY2hhcnRqcy1ub2RlLWNhbnZhc1wiXTtcblxuYXN5bmMgZnVuY3Rpb24gbm9ybWFsaXplSW1wb3J0PFQ+KGltcG9ydFByb21pc2U6IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgLy8gQ29tbW9uSlMncyBgbW9kdWxlLmV4cG9ydHNgIGlzIHdyYXBwZWQgYXMgYGRlZmF1bHRgIGluIEVTTW9kdWxlLlxuICByZXR1cm4gaW1wb3J0UHJvbWlzZS50aGVuKChtOiBhbnkpID0+IChtLmRlZmF1bHQgfHwgbSkgYXMgVCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRlc3QgcmVwb3J0aW5nIHV0aWxpdHkgY2xhc3MgZm9yIG1hbmFnaW5nIHRlc3QgcmVzdWx0cyBhbmQgZXZpZGVuY2VcbiAqIEBzdW1tYXJ5IEEgY29tcHJlaGVuc2l2ZSB0ZXN0IHJlcG9ydGVyIHRoYXQgaGFuZGxlcyB2YXJpb3VzIHR5cGVzIG9mIHRlc3QgYXJ0aWZhY3RzIGluY2x1ZGluZyBtZXNzYWdlcyxcbiAqIGF0dGFjaG1lbnRzLCBkYXRhLCBpbWFnZXMsIHRhYmxlcywgYW5kIGdyYXBocy4gSXQgcHJvdmlkZXMgbWV0aG9kcyB0byByZXBvcnQgYW5kIHN0b3JlIHRlc3QgZXZpZGVuY2VcbiAqIGluIGRpZmZlcmVudCBmb3JtYXRzIGFuZCBtYW5hZ2VzIGRlcGVuZGVuY2llcyBmb3IgcmVwb3J0aW5nIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUeXBlIG9mIGRhdGEgYmVpbmcgcmVwb3J0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdGVzdENhc2U9XCJ0ZXN0c1wiXSAtIE5hbWUgb2YgdGhlIHRlc3QgY2FzZVxuICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlUGF0aF0gLSBCYXNlIHBhdGggZm9yIHN0b3JpbmcgdGVzdCByZXBvcnRzXG4gKiBAY2xhc3NcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVwb3J0ZXIgPSBuZXcgVGVzdFJlcG9ydGVyKCdsb2dpbi10ZXN0Jyk7XG4gKlxuICogLy8gUmVwb3J0IHRlc3QgbWVzc2FnZXNcbiAqIGF3YWl0IHJlcG9ydGVyLnJlcG9ydE1lc3NhZ2UoJ1Rlc3QgU3RhcnRlZCcsICdMb2dpbiBmbG93IGluaXRpYXRlZCcpO1xuICpcbiAqIC8vIFJlcG9ydCB0ZXN0IGRhdGFcbiAqIGF3YWl0IHJlcG9ydGVyLnJlcG9ydERhdGEoJ3VzZXItY3JlZGVudGlhbHMnLCB7IHVzZXJuYW1lOiAndGVzdCcgfSwgJ2pzb24nKTtcbiAqXG4gKiAvLyBSZXBvcnQgdGVzdCByZXN1bHRzIHRhYmxlXG4gKiBhd2FpdCByZXBvcnRlci5yZXBvcnRUYWJsZSgndGVzdC1yZXN1bHRzJywge1xuICogICBoZWFkZXJzOiBbJ1N0ZXAnLCAnU3RhdHVzJ10sXG4gKiAgIHJvd3M6IFtcbiAqICAgICB7IFN0ZXA6ICdMb2dpbicsIFN0YXR1czogJ1Bhc3MnIH0sXG4gKiAgICAgeyBTdGVwOiAnVmFsaWRhdGlvbicsIFN0YXR1czogJ1Bhc3MnIH1cbiAqICAgXVxuICogfSk7XG4gKlxuICogLy8gUmVwb3J0IHRlc3QgZXZpZGVuY2VcbiAqIGF3YWl0IHJlcG9ydGVyLnJlcG9ydEF0dGFjaG1lbnQoJ1NjcmVlbnNob3QnLCBzY3JlZW5zaG90QnVmZmVyKTtcbiAqIGBgYFxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IFRlc3RSZXBvcnRlclxuICogICBwYXJ0aWNpcGFudCBGaWxlU3lzdGVtXG4gKiAgIHBhcnRpY2lwYW50IERlcGVuZGVuY2llc1xuICpcbiAqICAgQ2xpZW50LT4+VGVzdFJlcG9ydGVyOiBuZXcgVGVzdFJlcG9ydGVyKHRlc3RDYXNlLCBiYXNlUGF0aClcbiAqICAgVGVzdFJlcG9ydGVyLT4+RmlsZVN5c3RlbTogQ3JlYXRlIHJlcG9ydCBkaXJlY3RvcnlcbiAqXG4gKiAgIGFsdCBSZXBvcnQgTWVzc2FnZVxuICogICAgIENsaWVudC0+PlRlc3RSZXBvcnRlcjogcmVwb3J0TWVzc2FnZSh0aXRsZSwgbWVzc2FnZSlcbiAqICAgICBUZXN0UmVwb3J0ZXItPj5EZXBlbmRlbmNpZXM6IEltcG9ydCBoZWxwZXJzXG4gKiAgICAgVGVzdFJlcG9ydGVyLT4+RmlsZVN5c3RlbTogU3RvcmUgbWVzc2FnZVxuICogICBlbHNlIFJlcG9ydCBEYXRhXG4gKiAgICAgQ2xpZW50LT4+VGVzdFJlcG9ydGVyOiByZXBvcnREYXRhKHJlZmVyZW5jZSwgZGF0YSwgdHlwZSlcbiAqICAgICBUZXN0UmVwb3J0ZXItPj5EZXBlbmRlbmNpZXM6IFByb2Nlc3MgZGF0YVxuICogICAgIFRlc3RSZXBvcnRlci0+PkZpbGVTeXN0ZW06IFN0b3JlIGZvcm1hdHRlZCBkYXRhXG4gKiAgIGVsc2UgUmVwb3J0IFRhYmxlXG4gKiAgICAgQ2xpZW50LT4+VGVzdFJlcG9ydGVyOiByZXBvcnRUYWJsZShyZWZlcmVuY2UsIHRhYmxlRGVmKVxuICogICAgIFRlc3RSZXBvcnRlci0+PkRlcGVuZGVuY2llczogQ29udmVydCB0byBNRCBmb3JtYXRcbiAqICAgICBUZXN0UmVwb3J0ZXItPj5GaWxlU3lzdGVtOiBTdG9yZSB0YWJsZVxuICogICBlbmRcbiAqL1xuZXhwb3J0IGNsYXNzIFRlc3RSZXBvcnRlciB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRnVuY3Rpb24gZm9yIGFkZGluZyBtZXNzYWdlcyB0byB0aGUgdGVzdCByZXBvcnRcbiAgICogQHN1bW1hcnkgU3RhdGljIGhhbmRsZXIgZm9yIHByb2Nlc3NpbmcgYW5kIHN0b3JpbmcgdGVzdCBtZXNzYWdlc1xuICAgKiBAdHlwZSB7ZnVuY3Rpb24oQWRkTXNnUGFyYW1zKTogUHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgYWRkTXNnRnVuY3Rpb246IChwYXJhbXM6IEFkZE1zZ1BhcmFtcykgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIGZvciBhZGRpbmcgYXR0YWNobWVudHMgdG8gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBzdW1tYXJ5IFN0YXRpYyBoYW5kbGVyIGZvciBwcm9jZXNzaW5nIGFuZCBzdG9yaW5nIHRlc3QgYXR0YWNobWVudHNcbiAgICogQHR5cGUge2Z1bmN0aW9uKEFkZEF0dGFjaFBhcmFtcyk6IFByb21pc2U8dm9pZD59XG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGFkZEF0dGFjaEZ1bmN0aW9uOiAoXG4gICAgcGFyYW1zOiBBZGRBdHRhY2hQYXJhbXNcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTWFwIG9mIGRlcGVuZGVuY2llcyByZXF1aXJlZCBieSB0aGUgcmVwb3J0ZXJcbiAgICogQHN1bW1hcnkgU3RvcmVzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGRlcGVuZGVuY2llc1xuICAgKiBAdHlwZSB7U2ltcGxlRGVwZW5kZW5jeU1hcH1cbiAgICovXG4gIHByaXZhdGUgZGVwcz86IFNpbXBsZURlcGVuZGVuY3lNYXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlc3RDYXNlOiBzdHJpbmcgPSBcInRlc3RzXCIsXG4gICAgcHJvdGVjdGVkIGJhc2VQYXRoID0gcGF0aC5qb2luKFxuICAgICAgcHJvY2Vzcy5jd2QoKSxcbiAgICAgIFwid29ya2RvY3NcIixcbiAgICAgIFwicmVwb3J0c1wiLFxuICAgICAgXCJldmlkZW5jZXNcIlxuICAgIClcbiAgKSB7XG4gICAgdGhpcy5iYXNlUGF0aCA9IHBhdGguam9pbihiYXNlUGF0aCwgdGhpcy50ZXN0Q2FzZSk7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMuYmFzZVBhdGgpKSB7XG4gICAgICBmcy5ta2RpclN5bmMoYmFzZVBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW1wb3J0cyByZXF1aXJlZCBoZWxwZXIgZnVuY3Rpb25zXG4gICAqIEBzdW1tYXJ5IEVuc3VyZXMgYWxsIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMgYXJlIGF2YWlsYWJsZSBhbmQgaW1wb3J0cyBoZWxwZXIgZnVuY3Rpb25zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGhlbHBlcnMgYXJlIGltcG9ydGVkXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGltcG9ydEhlbHBlcnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5kZXBzID0gYXdhaXQgaW5zdGFsbElmTm90QXZhaWxhYmxlKFtkZXBlbmRlbmNpZXNbMF1dLCB0aGlzLmRlcHMpO1xuICAgIC8vIGlmICghcHJvY2Vzcy5lbnZbSmVzdFJlcG9ydGVyc1RlbXBQYXRoRW52S2V5XSlcbiAgICAvLyAgIHByb2Nlc3MuZW52W0plc3RSZXBvcnRlcnNUZW1wUGF0aEVudktleV0gPSAnLi93b3JrZG9jcy9yZXBvcnRzJztcbiAgICBjb25zdCB7IGFkZE1zZywgYWRkQXR0YWNoIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoXG4gICAgICBpbXBvcnQoYCR7ZGVwZW5kZW5jaWVzWzBdfS9oZWxwZXJgKVxuICAgICk7XG4gICAgVGVzdFJlcG9ydGVyLmFkZE1zZ0Z1bmN0aW9uID0gYWRkTXNnO1xuICAgIFRlc3RSZXBvcnRlci5hZGRBdHRhY2hGdW5jdGlvbiA9IGFkZEF0dGFjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVwb3J0cyBhIG1lc3NhZ2UgdG8gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBzdW1tYXJ5IEFkZHMgYSBmb3JtYXR0ZWQgbWVzc2FnZSB0byB0aGUgdGVzdCByZXBvcnQgd2l0aCBhbiBvcHRpb25hbCB0aXRsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBUaXRsZSBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG9iamVjdH0gbWVzc2FnZSAtIENvbnRlbnQgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1lc3NhZ2UgaXMgcmVwb3J0ZWRcbiAgICovXG4gIGFzeW5jIHJlcG9ydE1lc3NhZ2UodGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIHwgb2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFUZXN0UmVwb3J0ZXIuYWRkTXNnRnVuY3Rpb24pIGF3YWl0IHRoaXMuaW1wb3J0SGVscGVycygpO1xuICAgIGNvbnN0IG1zZyA9IGAke3RpdGxlfSR7bWVzc2FnZSA/IGBcXG4ke21lc3NhZ2V9YCA6IFwiXCJ9YDtcbiAgICBhd2FpdCBUZXN0UmVwb3J0ZXIuYWRkTXNnRnVuY3Rpb24oeyBtZXNzYWdlOiBtc2cgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYW4gYXR0YWNobWVudCB0byB0aGUgdGVzdCByZXBvcnRcbiAgICogQHN1bW1hcnkgQWRkcyBhIGZvcm1hdHRlZCBtZXNzYWdlIHRvIHRoZSB0ZXN0IHJlcG9ydCB3aXRoIGFuIG9wdGlvbmFsIHRpdGxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRpdGxlIG9mIHRoZSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyfSBhdHRhY2htZW50IC0gQ29udGVudCBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWVzc2FnZSBpcyByZXBvcnRlZFxuICAgKi9cbiAgYXN5bmMgcmVwb3J0QXR0YWNobWVudChcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnQ6IHN0cmluZyB8IEJ1ZmZlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIVRlc3RSZXBvcnRlci5hZGRBdHRhY2hGdW5jdGlvbikgYXdhaXQgdGhpcy5pbXBvcnRIZWxwZXJzKCk7XG4gICAgYXdhaXQgVGVzdFJlcG9ydGVyLmFkZEF0dGFjaEZ1bmN0aW9uKHtcbiAgICAgIGF0dGFjaDogYXR0YWNobWVudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aXRsZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVwb3J0cyBkYXRhIHdpdGggc3BlY2lmaWVkIHR5cGVcbiAgICogQHN1bW1hcnkgUHJvY2Vzc2VzIGFuZCBzdG9yZXMgZGF0YSBpbiB0aGUgdGVzdCByZXBvcnQgd2l0aCBmb3JtYXR0aW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZlcmVuY2UgLSBSZWZlcmVuY2UgaWRlbnRpZmllciBmb3IgdGhlIGRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBvYmplY3R9IGRhdGEgLSBEYXRhIHRvIGJlIHJlcG9ydGVkXG4gICAqIEBwYXJhbSB7UGF5bG9hZFR5cGV9IHR5cGUgLSBUeXBlIG9mIHRoZSBwYXlsb2FkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3RyaW09ZmFsc2VdIC0gV2hldGhlciB0byB0cmltIHRoZSBkYXRhXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGRhdGEgaXMgcmVwb3J0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyByZXBvcnQoXG4gICAgcmVmZXJlbmNlOiBzdHJpbmcsXG4gICAgZGF0YTogc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgQnVmZmVyLFxuICAgIHR5cGU6IFBheWxvYWRUeXBlLFxuICAgIHRyaW06IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICB0cnkge1xuICAgICAgbGV0IGF0dGFjaEZ1bmN0aW9uOlxuICAgICAgICB8IHR5cGVvZiB0aGlzLnJlcG9ydE1lc3NhZ2VcbiAgICAgICAgfCB0eXBlb2YgdGhpcy5yZXBvcnRBdHRhY2htZW50ID0gdGhpcy5yZXBvcnRNZXNzYWdlLmJpbmQodGhpcyk7XG4gICAgICBsZXQgZXh0ZW5zaW9uOiBcIi5wbmdcIiB8IFwiLnR4dFwiIHwgXCIubWRcIiB8IFwiLmpzb25cIiA9IFwiLnR4dFwiO1xuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBcImltYWdlXCI6XG4gICAgICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEgYXMgQnVmZmVyKTtcbiAgICAgICAgICBleHRlbnNpb24gPSBcIi5wbmdcIjtcbiAgICAgICAgICBhdHRhY2hGdW5jdGlvbiA9IHRoaXMucmVwb3J0QXR0YWNobWVudC5iaW5kKHRoaXMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwianNvblwiOlxuICAgICAgICAgIGlmICh0cmltKSB7XG4gICAgICAgICAgICBpZiAoKGRhdGEgYXMgeyByZXF1ZXN0PzogdW5rbm93biB9KS5yZXF1ZXN0KVxuICAgICAgICAgICAgICBkZWxldGUgKGRhdGEgYXMgeyByZXF1ZXN0PzogdW5rbm93biB9KVtcInJlcXVlc3RcIl07XG4gICAgICAgICAgICBpZiAoKGRhdGEgYXMgeyBjb25maWc/OiB1bmtub3duIH0pLmNvbmZpZylcbiAgICAgICAgICAgICAgZGVsZXRlIChkYXRhIGFzIHsgY29uZmlnPzogdW5rbm93biB9KVtcImNvbmZpZ1wiXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgIGV4dGVuc2lvbiA9IFwiLmpzb25cIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm1kXCI6XG4gICAgICAgICAgZXh0ZW5zaW9uID0gXCIubWRcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICBleHRlbnNpb24gPSBcIi50eHRcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmxvZyhgVW5zdXBwb3J0ZWQgdHlwZSAke3R5cGV9LiBhc3N1bWluZyB0ZXh0YCk7XG4gICAgICB9XG4gICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2UuaW5jbHVkZXMoXCJcXG5cIilcbiAgICAgICAgPyByZWZlcmVuY2VcbiAgICAgICAgOiBgJHtyZWZlcmVuY2V9JHtleHRlbnNpb259YDtcbiAgICAgIGF3YWl0IGF0dGFjaEZ1bmN0aW9uKHJlZmVyZW5jZSwgZGF0YSBhcyBCdWZmZXIgfCBzdHJpbmcpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCBzdG9yZSBhdHRhY2ggYXJ0aWZhY3QgJHtyZWZlcmVuY2V9IHVuZGVyIHRvIHRlc3QgcmVwb3J0ICR7dGhpcy50ZXN0Q2FzZX0gLSAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXBvcnREYXRhKFxuICAgIHJlZmVyZW5jZTogc3RyaW5nLFxuICAgIGRhdGE6IHN0cmluZyB8IG51bWJlciB8IG9iamVjdCxcbiAgICB0eXBlOiBQYXlsb2FkVHlwZSA9IFwianNvblwiLFxuICAgIHRyaW0gPSBmYWxzZVxuICApIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnQocmVmZXJlbmNlLCBkYXRhLCB0eXBlLCB0cmltKTtcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydE9iamVjdChyZWZlcmVuY2U6IHN0cmluZywganNvbjogb2JqZWN0LCB0cmltID0gZmFsc2UpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnQocmVmZXJlbmNlLCBqc29uLCBcImpzb25cIiwgdHJpbSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYSB0YWJsZSBpbiBtYXJrZG93biBmb3JtYXRcbiAgICogQHN1bW1hcnkgQ29udmVydHMgYW5kIHN0b3JlcyBhIHRhYmxlIGRlZmluaXRpb24gaW4gbWFya2Rvd24gZm9ybWF0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZlcmVuY2UgLSBSZWZlcmVuY2UgaWRlbnRpZmllciBmb3IgdGhlIHRhYmxlXG4gICAqIEBwYXJhbSB7TWRUYWJsZURlZmluaXRpb259IHRhYmxlRGVmIC0gVGFibGUgZGVmaW5pdGlvbiBvYmplY3RcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGFibGUgaXMgcmVwb3J0ZWRcbiAgICovXG4gIGFzeW5jIHJlcG9ydFRhYmxlKHJlZmVyZW5jZTogc3RyaW5nLCB0YWJsZURlZjogTWRUYWJsZURlZmluaXRpb24pIHtcbiAgICB0aGlzLmRlcHMgPSBhd2FpdCBpbnN0YWxsSWZOb3RBdmFpbGFibGUoW2RlcGVuZGVuY2llc1sxXV0sIHRoaXMuZGVwcyk7XG4gICAgbGV0IHR4dDogc3RyaW5nO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBqc29uMm1kID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChgJHtkZXBlbmRlbmNpZXNbMV19YCkpO1xuICAgICAgdHh0ID0ganNvbjJtZCh0YWJsZURlZik7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgY29udmVydCBKU09OIHRvIE1hcmtkb3duIC0gJHtlfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlcG9ydChyZWZlcmVuY2UsIHR4dCwgXCJtZFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVwb3J0cyBhIGdyYXBoIHVzaW5nIENoYXJ0LmpzXG4gICAqIEBzdW1tYXJ5IEdlbmVyYXRlcyBhbmQgc3RvcmVzIGEgZ3JhcGggdmlzdWFsaXphdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlIC0gUmVmZXJlbmNlIGlkZW50aWZpZXIgZm9yIHRoZSBncmFwaFxuICAgKiBAcGFyYW0ge2FueX0gY29uZmlnIC0gQ2hhcnQuanMgY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZ3JhcGggaXMgcmVwb3J0ZWRcbiAgICovXG4gIGFzeW5jIHJlcG9ydEdyYXBoKHJlZmVyZW5jZTogc3RyaW5nLCBjb25maWc6IGFueSkge1xuICAgIHRoaXMuZGVwcyA9IGF3YWl0IGluc3RhbGxJZk5vdEF2YWlsYWJsZShbZGVwZW5kZW5jaWVzWzJdXSwgdGhpcy5kZXBzKTtcbiAgICBjb25zdCB7IENoYXJ0SlNOb2RlQ2FudmFzIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoXG4gICAgICBpbXBvcnQoZGVwZW5kZW5jaWVzWzJdKVxuICAgICk7XG5cbiAgICBjb25zdCB3aWR0aCA9IDYwMDsgLy9weFxuICAgIGNvbnN0IGhlaWdodCA9IDgwMDsgLy9weFxuICAgIGNvbnN0IGJhY2tncm91bmRDb2xvdXIgPSBcIndoaXRlXCI7IC8vIFVzZXMgaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL2NhbnZhc19maWxsc3R5bGUuYXNwXG4gICAgY29uc3QgY2hhcnRKU05vZGVDYW52YXMgPSBuZXcgQ2hhcnRKU05vZGVDYW52YXMoe1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3VyLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaW1hZ2UgPSBhd2FpdCBjaGFydEpTTm9kZUNhbnZhcy5yZW5kZXJUb0J1ZmZlcihjb25maWcpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJlcG9ydEltYWdlKHJlZmVyZW5jZSwgaW1hZ2UpO1xuICB9XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVwb3J0cyBhbiBpbWFnZSB0byB0aGUgdGVzdCByZXBvcnRcbiAgICogQHN1bW1hcnkgU3RvcmVzIGFuIGltYWdlIGJ1ZmZlciBpbiB0aGUgdGVzdCByZXBvcnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZSAtIFJlZmVyZW5jZSBpZGVudGlmaWVyIGZvciB0aGUgaW1hZ2VcbiAgICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciAtIEltYWdlIGRhdGEgYnVmZmVyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGltYWdlIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRJbWFnZShyZWZlcmVuY2U6IHN0cmluZywgYnVmZmVyOiBCdWZmZXIpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnQocmVmZXJlbmNlLCBidWZmZXIsIFwiaW1hZ2VcIik7XG4gIH1cbn1cbiJdfQ==
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdGVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUVwQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFtQzdDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLG1DQUFtQyxDQUFDO0FBRS9FLE1BQU0sWUFBWSxHQUFHLENBQUMscUJBQXFCLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFFL0UsS0FBSyxVQUFVLGVBQWUsQ0FBSSxhQUF5QjtJQUN6RCxtRUFBbUU7SUFDbkUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFNLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlERztBQUNILE1BQU0sT0FBTyxZQUFZO0lBd0J2QixZQUNZLFdBQW1CLE9BQU8sRUFDMUIsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUM1QixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQ2IsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLENBQ1o7UUFOUyxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUtqQjtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xDLEVBQUUsQ0FBQyxTQUFT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QWlCLEVBQUUsTUFBYztRQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgTWRUYWJsZURlZmluaXRpb24gfSBmcm9tIFwiLi9tZFwiO1xuaW1wb3J0IHsgaW5zdGFsbElmTm90QXZhaWxhYmxlIH0gZnJvbSBcIi4vZnNcIjtcbmltcG9ydCB7IFNpbXBsZURlcGVuZGVuY3lNYXAgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgQWRkQXR0YWNoUGFyYW1zXG4gKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYWRkaW5nIGFuIGF0dGFjaG1lbnQgdG8gYSByZXBvcnRcbiAqIEBzdW1tYXJ5IEludGVyZmFjZSBmb3IgYXR0YWNobWVudCBwYXJhbWV0ZXJzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZEF0dGFjaFBhcmFtcyB7XG4gIGF0dGFjaDogc3RyaW5nIHwgQnVmZmVyO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgb2JqZWN0O1xuICBjb250ZXh0PzogYW55O1xuICBidWZmZXJGb3JtYXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGludGVyZmFjZSBBZGRNc2dQYXJhbXNcbiAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBhZGRpbmcgYSBtZXNzYWdlIHRvIGEgcmVwb3J0XG4gKiBAc3VtbWFyeSBJbnRlcmZhY2UgZm9yIG1lc3NhZ2UgcGFyYW1ldGVyc1xuICogQG1lbWJlck9mIG1vZHVsZTpAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRNc2dQYXJhbXMge1xuICBtZXNzYWdlOiBzdHJpbmcgfCBvYmplY3Q7XG4gIGNvbnRleHQ/OiBhbnk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgeyhcImpzb25cInxcImltYWdlXCJ8XCJ0ZXh0XCJ8XCJtZFwiKX0gUGF5bG9hZFR5cGVcbiAqIEBkZXNjcmlwdGlvbiBUeXBlcyBvZiBwYXlsb2FkcyB0aGF0IGNhbiBiZSBoYW5kbGVkXG4gKiBAc3VtbWFyeSBVbmlvbiB0eXBlIGZvciBwYXlsb2FkIHR5cGVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBQYXlsb2FkVHlwZSA9IFwianNvblwiIHwgXCJpbWFnZVwiIHwgXCJ0ZXh0XCIgfCBcIm1kXCI7XG5cbmV4cG9ydCBjb25zdCBKZXN0UmVwb3J0ZXJzVGVtcFBhdGhFbnZLZXkgPSBcIkpFU1RfSFRNTF9SRVBPUlRFUlNfVEVNUF9ESVJfUEFUSFwiO1xuXG5jb25zdCBkZXBlbmRlbmNpZXMgPSBbXCJqZXN0LWh0bWwtcmVwb3J0ZXJzXCIsIFwianNvbjJtZFwiLCBcImNoYXJ0anMtbm9kZS1jYW52YXNcIl07XG5cbmFzeW5jIGZ1bmN0aW9uIG5vcm1hbGl6ZUltcG9ydDxUPihpbXBvcnRQcm9taXNlOiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gIC8vIENvbW1vbkpTJ3MgYG1vZHVsZS5leHBvcnRzYCBpcyB3cmFwcGVkIGFzIGBkZWZhdWx0YCBpbiBFU01vZHVsZS5cbiAgcmV0dXJuIGltcG9ydFByb21pc2UudGhlbigobTogYW55KSA9PiAobS5kZWZhdWx0IHx8IG0pIGFzIFQpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUZXN0IHJlcG9ydGluZyB1dGlsaXR5IGNsYXNzIGZvciBtYW5hZ2luZyB0ZXN0IHJlc3VsdHMgYW5kIGV2aWRlbmNlXG4gKiBAc3VtbWFyeSBBIGNvbXByZWhlbnNpdmUgdGVzdCByZXBvcnRlciB0aGF0IGhhbmRsZXMgdmFyaW91cyB0eXBlcyBvZiB0ZXN0IGFydGlmYWN0cyBpbmNsdWRpbmcgbWVzc2FnZXMsXG4gKiBhdHRhY2htZW50cywgZGF0YSwgaW1hZ2VzLCB0YWJsZXMsIGFuZCBncmFwaHMuIEl0IHByb3ZpZGVzIG1ldGhvZHMgdG8gcmVwb3J0IGFuZCBzdG9yZSB0ZXN0IGV2aWRlbmNlXG4gKiBpbiBkaWZmZXJlbnQgZm9ybWF0cyBhbmQgbWFuYWdlcyBkZXBlbmRlbmNpZXMgZm9yIHJlcG9ydGluZyBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVHlwZSBvZiBkYXRhIGJlaW5nIHJlcG9ydGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gW3Rlc3RDYXNlPVwidGVzdHNcIl0gLSBOYW1lIG9mIHRoZSB0ZXN0IGNhc2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYmFzZVBhdGhdIC0gQmFzZSBwYXRoIGZvciBzdG9yaW5nIHRlc3QgcmVwb3J0c1xuICogQGNsYXNzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlcG9ydGVyID0gbmV3IFRlc3RSZXBvcnRlcignbG9naW4tdGVzdCcpO1xuICpcbiAqIC8vIFJlcG9ydCB0ZXN0IG1lc3NhZ2VzXG4gKiBhd2FpdCByZXBvcnRlci5yZXBvcnRNZXNzYWdlKCdUZXN0IFN0YXJ0ZWQnLCAnTG9naW4gZmxvdyBpbml0aWF0ZWQnKTtcbiAqXG4gKiAvLyBSZXBvcnQgdGVzdCBkYXRhXG4gKiBhd2FpdCByZXBvcnRlci5yZXBvcnREYXRhKCd1c2VyLWNyZWRlbnRpYWxzJywgeyB1c2VybmFtZTogJ3Rlc3QnIH0sICdqc29uJyk7XG4gKlxuICogLy8gUmVwb3J0IHRlc3QgcmVzdWx0cyB0YWJsZVxuICogYXdhaXQgcmVwb3J0ZXIucmVwb3J0VGFibGUoJ3Rlc3QtcmVzdWx0cycsIHtcbiAqICAgaGVhZGVyczogWydTdGVwJywgJ1N0YXR1cyddLFxuICogICByb3dzOiBbXG4gKiAgICAgeyBTdGVwOiAnTG9naW4nLCBTdGF0dXM6ICdQYXNzJyB9LFxuICogICAgIHsgU3RlcDogJ1ZhbGlkYXRpb24nLCBTdGF0dXM6ICdQYXNzJyB9XG4gKiAgIF1cbiAqIH0pO1xuICpcbiAqIC8vIFJlcG9ydCB0ZXN0IGV2aWRlbmNlXG4gKiBhd2FpdCByZXBvcnRlci5yZXBvcnRBdHRhY2htZW50KCdTY3JlZW5zaG90Jywgc2NyZWVuc2hvdEJ1ZmZlcik7XG4gKiBgYGBcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBUZXN0UmVwb3J0ZXJcbiAqICAgcGFydGljaXBhbnQgRmlsZVN5c3RlbVxuICogICBwYXJ0aWNpcGFudCBEZXBlbmRlbmNpZXNcbiAqXG4gKiAgIENsaWVudC0+PlRlc3RSZXBvcnRlcjogbmV3IFRlc3RSZXBvcnRlcih0ZXN0Q2FzZSwgYmFzZVBhdGgpXG4gKiAgIFRlc3RSZXBvcnRlci0+PkZpbGVTeXN0ZW06IENyZWF0ZSByZXBvcnQgZGlyZWN0b3J5XG4gKlxuICogICBhbHQgUmVwb3J0IE1lc3NhZ2VcbiAqICAgICBDbGllbnQtPj5UZXN0UmVwb3J0ZXI6IHJlcG9ydE1lc3NhZ2UodGl0bGUsIG1lc3NhZ2UpXG4gKiAgICAgVGVzdFJlcG9ydGVyLT4+RGVwZW5kZW5jaWVzOiBJbXBvcnQgaGVscGVyc1xuICogICAgIFRlc3RSZXBvcnRlci0+PkZpbGVTeXN0ZW06IFN0b3JlIG1lc3NhZ2VcbiAqICAgZWxzZSBSZXBvcnQgRGF0YVxuICogICAgIENsaWVudC0+PlRlc3RSZXBvcnRlcjogcmVwb3J0RGF0YShyZWZlcmVuY2UsIGRhdGEsIHR5cGUpXG4gKiAgICAgVGVzdFJlcG9ydGVyLT4+RGVwZW5kZW5jaWVzOiBQcm9jZXNzIGRhdGFcbiAqICAgICBUZXN0UmVwb3J0ZXItPj5GaWxlU3lzdGVtOiBTdG9yZSBmb3JtYXR0ZWQgZGF0YVxuICogICBlbHNlIFJlcG9ydCBUYWJsZVxuICogICAgIENsaWVudC0+PlRlc3RSZXBvcnRlcjogcmVwb3J0VGFibGUocmVmZXJlbmNlLCB0YWJsZURlZilcbiAqICAgICBUZXN0UmVwb3J0ZXItPj5EZXBlbmRlbmNpZXM6IENvbnZlcnQgdG8gTUQgZm9ybWF0XG4gKiAgICAgVGVzdFJlcG9ydGVyLT4+RmlsZVN5c3RlbTogU3RvcmUgdGFibGVcbiAqICAgZW5kXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXN0UmVwb3J0ZXIge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIGZvciBhZGRpbmcgbWVzc2FnZXMgdG8gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBzdW1tYXJ5IFN0YXRpYyBoYW5kbGVyIGZvciBwcm9jZXNzaW5nIGFuZCBzdG9yaW5nIHRlc3QgbWVzc2FnZXNcbiAgICogQHR5cGUge2Z1bmN0aW9uKEFkZE1zZ1BhcmFtcyk6IFByb21pc2U8dm9pZD59XG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGFkZE1zZ0Z1bmN0aW9uOiAocGFyYW1zOiBBZGRNc2dQYXJhbXMpID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGdW5jdGlvbiBmb3IgYWRkaW5nIGF0dGFjaG1lbnRzIHRvIHRoZSB0ZXN0IHJlcG9ydFxuICAgKiBAc3VtbWFyeSBTdGF0aWMgaGFuZGxlciBmb3IgcHJvY2Vzc2luZyBhbmQgc3RvcmluZyB0ZXN0IGF0dGFjaG1lbnRzXG4gICAqIEB0eXBlIHtmdW5jdGlvbihBZGRBdHRhY2hQYXJhbXMpOiBQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBhZGRBdHRhY2hGdW5jdGlvbjogKFxuICAgIHBhcmFtczogQWRkQXR0YWNoUGFyYW1zXG4gICkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE1hcCBvZiBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgYnkgdGhlIHJlcG9ydGVyXG4gICAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgY3VycmVudCBzdGF0ZSBvZiBkZXBlbmRlbmNpZXNcbiAgICogQHR5cGUge1NpbXBsZURlcGVuZGVuY3lNYXB9XG4gICAqL1xuICBwcml2YXRlIGRlcHM/OiBTaW1wbGVEZXBlbmRlbmN5TWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXN0Q2FzZTogc3RyaW5nID0gXCJ0ZXN0c1wiLFxuICAgIHByb3RlY3RlZCBiYXNlUGF0aCA9IHBhdGguam9pbihcbiAgICAgIHByb2Nlc3MuY3dkKCksXG4gICAgICBcIndvcmtkb2NzXCIsXG4gICAgICBcInJlcG9ydHNcIixcbiAgICAgIFwiZXZpZGVuY2VzXCJcbiAgICApXG4gICkge1xuICAgIHRoaXMuYmFzZVBhdGggPSBwYXRoLmpvaW4oYmFzZVBhdGgsIHRoaXMudGVzdENhc2UpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmJhc2VQYXRoKSkge1xuICAgICAgZnMubWtkaXJTeW5jKGJhc2VQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEltcG9ydHMgcmVxdWlyZWQgaGVscGVyIGZ1bmN0aW9uc1xuICAgKiBAc3VtbWFyeSBFbnN1cmVzIGFsbCBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIGFyZSBhdmFpbGFibGUgYW5kIGltcG9ydHMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBoZWxwZXJzIGFyZSBpbXBvcnRlZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBpbXBvcnRIZWxwZXJzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGVwcyA9IGF3YWl0IGluc3RhbGxJZk5vdEF2YWlsYWJsZShbZGVwZW5kZW5jaWVzWzBdXSwgdGhpcy5kZXBzKTtcbiAgICAvLyBpZiAoIXByb2Nlc3MuZW52W0plc3RSZXBvcnRlcnNUZW1wUGF0aEVudktleV0pXG4gICAgLy8gICBwcm9jZXNzLmVudltKZXN0UmVwb3J0ZXJzVGVtcFBhdGhFbnZLZXldID0gJy4vd29ya2RvY3MvcmVwb3J0cyc7XG4gICAgY29uc3QgeyBhZGRNc2csIGFkZEF0dGFjaCB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KFxuICAgICAgaW1wb3J0KGAke2RlcGVuZGVuY2llc1swXX0vaGVscGVyYClcbiAgICApO1xuICAgIFRlc3RSZXBvcnRlci5hZGRNc2dGdW5jdGlvbiA9IGFkZE1zZztcbiAgICBUZXN0UmVwb3J0ZXIuYWRkQXR0YWNoRnVuY3Rpb24gPSBhZGRBdHRhY2g7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYSBtZXNzYWdlIHRvIHRoZSB0ZXN0IHJlcG9ydFxuICAgKiBAc3VtbWFyeSBBZGRzIGEgZm9ybWF0dGVkIG1lc3NhZ2UgdG8gdGhlIHRlc3QgcmVwb3J0IHdpdGggYW4gb3B0aW9uYWwgdGl0bGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gVGl0bGUgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBvYmplY3R9IG1lc3NhZ2UgLSBDb250ZW50IG9mIHRoZSBtZXNzYWdlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtZXNzYWdlIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRNZXNzYWdlKHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB8IG9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghVGVzdFJlcG9ydGVyLmFkZE1zZ0Z1bmN0aW9uKSBhd2FpdCB0aGlzLmltcG9ydEhlbHBlcnMoKTtcbiAgICBjb25zdCBtc2cgPSBgJHt0aXRsZX0ke21lc3NhZ2UgPyBgXFxuJHttZXNzYWdlfWAgOiBcIlwifWA7XG4gICAgYXdhaXQgVGVzdFJlcG9ydGVyLmFkZE1zZ0Z1bmN0aW9uKHsgbWVzc2FnZTogbXNnIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBvcnRzIGFuIGF0dGFjaG1lbnQgdG8gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBzdW1tYXJ5IEFkZHMgYSBmb3JtYXR0ZWQgbWVzc2FnZSB0byB0aGUgdGVzdCByZXBvcnQgd2l0aCBhbiBvcHRpb25hbCB0aXRsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBUaXRsZSBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEJ1ZmZlcn0gYXR0YWNobWVudCAtIENvbnRlbnQgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1lc3NhZ2UgaXMgcmVwb3J0ZWRcbiAgICovXG4gIGFzeW5jIHJlcG9ydEF0dGFjaG1lbnQoXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBhdHRhY2htZW50OiBzdHJpbmcgfCBCdWZmZXJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFUZXN0UmVwb3J0ZXIuYWRkQXR0YWNoRnVuY3Rpb24pIGF3YWl0IHRoaXMuaW1wb3J0SGVscGVycygpO1xuICAgIGF3YWl0IFRlc3RSZXBvcnRlci5hZGRBdHRhY2hGdW5jdGlvbih7XG4gICAgICBhdHRhY2g6IGF0dGFjaG1lbnQsXG4gICAgICBkZXNjcmlwdGlvbjogdGl0bGUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgZGF0YSB3aXRoIHNwZWNpZmllZCB0eXBlXG4gICAqIEBzdW1tYXJ5IFByb2Nlc3NlcyBhbmQgc3RvcmVzIGRhdGEgaW4gdGhlIHRlc3QgcmVwb3J0IHdpdGggZm9ybWF0dGluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlIC0gUmVmZXJlbmNlIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0fSBkYXRhIC0gRGF0YSB0byBiZSByZXBvcnRlZFxuICAgKiBAcGFyYW0ge1BheWxvYWRUeXBlfSB0eXBlIC0gVHlwZSBvZiB0aGUgcGF5bG9hZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt0cmltPWZhbHNlXSAtIFdoZXRoZXIgdG8gdHJpbSB0aGUgZGF0YVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBkYXRhIGlzIHJlcG9ydGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmVwb3J0KFxuICAgIHJlZmVyZW5jZTogc3RyaW5nLFxuICAgIGRhdGE6IHN0cmluZyB8IG51bWJlciB8IG9iamVjdCB8IEJ1ZmZlcixcbiAgICB0eXBlOiBQYXlsb2FkVHlwZSxcbiAgICB0cmltOiBib29sZWFuID0gZmFsc2VcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBhdHRhY2hGdW5jdGlvbjpcbiAgICAgICAgfCB0eXBlb2YgdGhpcy5yZXBvcnRNZXNzYWdlXG4gICAgICAgIHwgdHlwZW9mIHRoaXMucmVwb3J0QXR0YWNobWVudCA9IHRoaXMucmVwb3J0TWVzc2FnZS5iaW5kKHRoaXMpO1xuICAgICAgbGV0IGV4dGVuc2lvbjogXCIucG5nXCIgfCBcIi50eHRcIiB8IFwiLm1kXCIgfCBcIi5qc29uXCIgPSBcIi50eHRcIjtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhIGFzIEJ1ZmZlcik7XG4gICAgICAgICAgZXh0ZW5zaW9uID0gXCIucG5nXCI7XG4gICAgICAgICAgYXR0YWNoRnVuY3Rpb24gPSB0aGlzLnJlcG9ydEF0dGFjaG1lbnQuYmluZCh0aGlzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImpzb25cIjpcbiAgICAgICAgICBpZiAodHJpbSkge1xuICAgICAgICAgICAgaWYgKChkYXRhIGFzIHsgcmVxdWVzdD86IHVua25vd24gfSkucmVxdWVzdClcbiAgICAgICAgICAgICAgZGVsZXRlIChkYXRhIGFzIHsgcmVxdWVzdD86IHVua25vd24gfSlbXCJyZXF1ZXN0XCJdO1xuICAgICAgICAgICAgaWYgKChkYXRhIGFzIHsgY29uZmlnPzogdW5rbm93biB9KS5jb25maWcpXG4gICAgICAgICAgICAgIGRlbGV0ZSAoZGF0YSBhcyB7IGNvbmZpZz86IHVua25vd24gfSlbXCJjb25maWdcIl07XG4gICAgICAgICAgfVxuICAgICAgICAgIGRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcbiAgICAgICAgICBleHRlbnNpb24gPSBcIi5qc29uXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJtZFwiOlxuICAgICAgICAgIGV4dGVuc2lvbiA9IFwiLm1kXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICAgICAgZXh0ZW5zaW9uID0gXCIudHh0XCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5sb2coYFVuc3VwcG9ydGVkIHR5cGUgJHt0eXBlfS4gYXNzdW1pbmcgdGV4dGApO1xuICAgICAgfVxuICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlLmluY2x1ZGVzKFwiXFxuXCIpXG4gICAgICAgID8gcmVmZXJlbmNlXG4gICAgICAgIDogYCR7cmVmZXJlbmNlfSR7ZXh0ZW5zaW9ufWA7XG4gICAgICBhd2FpdCBhdHRhY2hGdW5jdGlvbihyZWZlcmVuY2UsIGRhdGEgYXMgQnVmZmVyIHwgc3RyaW5nKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3Qgc3RvcmUgYXR0YWNoIGFydGlmYWN0ICR7cmVmZXJlbmNlfSB1bmRlciB0byB0ZXN0IHJlcG9ydCAke3RoaXMudGVzdENhc2V9IC0gJHtlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVwb3J0RGF0YShcbiAgICByZWZlcmVuY2U6IHN0cmluZyxcbiAgICBkYXRhOiBzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QsXG4gICAgdHlwZTogUGF5bG9hZFR5cGUgPSBcImpzb25cIixcbiAgICB0cmltID0gZmFsc2VcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0KHJlZmVyZW5jZSwgZGF0YSwgdHlwZSwgdHJpbSk7XG4gIH1cblxuICBhc3luYyByZXBvcnRPYmplY3QocmVmZXJlbmNlOiBzdHJpbmcsIGpzb246IG9iamVjdCwgdHJpbSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0KHJlZmVyZW5jZSwganNvbiwgXCJqc29uXCIsIHRyaW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBvcnRzIGEgdGFibGUgaW4gbWFya2Rvd24gZm9ybWF0XG4gICAqIEBzdW1tYXJ5IENvbnZlcnRzIGFuZCBzdG9yZXMgYSB0YWJsZSBkZWZpbml0aW9uIGluIG1hcmtkb3duIGZvcm1hdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlIC0gUmVmZXJlbmNlIGlkZW50aWZpZXIgZm9yIHRoZSB0YWJsZVxuICAgKiBAcGFyYW0ge01kVGFibGVEZWZpbml0aW9ufSB0YWJsZURlZiAtIFRhYmxlIGRlZmluaXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRhYmxlIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRUYWJsZShyZWZlcmVuY2U6IHN0cmluZywgdGFibGVEZWY6IE1kVGFibGVEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5kZXBzID0gYXdhaXQgaW5zdGFsbElmTm90QXZhaWxhYmxlKFtkZXBlbmRlbmNpZXNbMV1dLCB0aGlzLmRlcHMpO1xuICAgIGxldCB0eHQ6IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgY29uc3QganNvbjJtZCA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoYCR7ZGVwZW5kZW5jaWVzWzFdfWApKTtcbiAgICAgIHR4dCA9IGpzb24ybWQodGFibGVEZWYpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGNvbnZlcnQgSlNPTiB0byBNYXJrZG93biAtICR7ZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXBvcnQocmVmZXJlbmNlLCB0eHQsIFwibWRcIik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYSBncmFwaCB1c2luZyBDaGFydC5qc1xuICAgKiBAc3VtbWFyeSBHZW5lcmF0ZXMgYW5kIHN0b3JlcyBhIGdyYXBoIHZpc3VhbGl6YXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZSAtIFJlZmVyZW5jZSBpZGVudGlmaWVyIGZvciB0aGUgZ3JhcGhcbiAgICogQHBhcmFtIHthbnl9IGNvbmZpZyAtIENoYXJ0LmpzIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGdyYXBoIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRHcmFwaChyZWZlcmVuY2U6IHN0cmluZywgY29uZmlnOiBhbnkpIHtcbiAgICB0aGlzLmRlcHMgPSBhd2FpdCBpbnN0YWxsSWZOb3RBdmFpbGFibGUoW2RlcGVuZGVuY2llc1syXV0sIHRoaXMuZGVwcyk7XG4gICAgY29uc3QgeyBDaGFydEpTTm9kZUNhbnZhcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KFxuICAgICAgaW1wb3J0KGRlcGVuZGVuY2llc1syXSlcbiAgICApO1xuXG4gICAgY29uc3Qgd2lkdGggPSA2MDA7IC8vcHhcbiAgICBjb25zdCBoZWlnaHQgPSA4MDA7IC8vcHhcbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3VyID0gXCJ3aGl0ZVwiOyAvLyBVc2VzIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9jYW52YXNfZmlsbHN0eWxlLmFzcFxuICAgIGNvbnN0IGNoYXJ0SlNOb2RlQ2FudmFzID0gbmV3IENoYXJ0SlNOb2RlQ2FudmFzKHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgYmFja2dyb3VuZENvbG91cixcbiAgICB9KTtcblxuICAgIGNvbnN0IGltYWdlID0gYXdhaXQgY2hhcnRKU05vZGVDYW52YXMucmVuZGVyVG9CdWZmZXIoY29uZmlnKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvcnRJbWFnZShyZWZlcmVuY2UsIGltYWdlKTtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYW4gaW1hZ2UgdG8gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBzdW1tYXJ5IFN0b3JlcyBhbiBpbWFnZSBidWZmZXIgaW4gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZlcmVuY2UgLSBSZWZlcmVuY2UgaWRlbnRpZmllciBmb3IgdGhlIGltYWdlXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgLSBJbWFnZSBkYXRhIGJ1ZmZlclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBpbWFnZSBpcyByZXBvcnRlZFxuICAgKi9cbiAgYXN5bmMgcmVwb3J0SW1hZ2UocmVmZXJlbmNlOiBzdHJpbmcsIGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0KHJlZmVyZW5jZSwgYnVmZmVyLCBcImltYWdlXCIpO1xuICB9XG59XG4iXX0=
@@ -138,5 +138,4 @@ export function toPascalCase(text) {
138
138
  export function escapeRegExp(string) {
139
139
  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
140
140
  }
141
-
142
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0NBQW9DO0FBQzVGLENBQUMiLCJmaWxlIjoidXRpbHMvdGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIFBhZHMgdGhlIGVuZCBvZiBhIHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIGNoYXJhY3Rlci5cbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGlucHV0IHN0cmluZyB0byBhIHNwZWNpZmllZCBsZW5ndGggYnkgYWRkaW5nIGEgcGFkZGluZyBjaGFyYWN0ZXIgdG8gdGhlIGVuZC5cbiAqIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYWxyZWFkeSBsb25nZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGxlbmd0aCwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIHBhZGRlZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggLSBUaGUgZGVzaXJlZCB0b3RhbCBsZW5ndGggb2YgdGhlIHJlc3VsdGluZyBzdHJpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NoYXI9XCIgXCJdIC0gVGhlIGNoYXJhY3RlciB0byB1c2UgZm9yIHBhZGRpbmcuIERlZmF1bHRzIHRvIGEgc3BhY2UuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBwYWRkZWQgc3RyaW5nLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBwYWRkaW5nIGNoYXJhY3RlciBpcyBub3QgZXhhY3RseSBvbmUgY2hhcmFjdGVyIGxvbmcuXG4gKlxuICogQGZ1bmN0aW9uIHBhZEVuZFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWRFbmQoXG4gIHN0cjogc3RyaW5nLFxuICBsZW5ndGg6IG51bWJlcixcbiAgY2hhcjogc3RyaW5nID0gXCIgXCJcbik6IHN0cmluZyB7XG4gIGlmIChjaGFyLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNoYXJhY3RlciBsZW5ndGggZm9yIHBhZGRpbmcuIG11c3QgYmUgb25lIVwiKTtcbiAgcmV0dXJuIHN0ci5wYWRFbmQobGVuZ3RoLCBjaGFyKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVwbGFjZXMgcGxhY2Vob2xkZXJzIGluIGEgc3RyaW5nIHdpdGggcHJvdmlkZWQgdmFsdWVzLlxuICogQHN1bW1hcnkgSW50ZXJwb2xhdGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBwbGFjZWhvbGRlcnMgb2YgdGhlIGZvcm0gJHt2YXJpYWJsZU5hbWV9XG4gKiB3aXRoIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkIG9iamVjdC4gSWYgYSBwbGFjZWhvbGRlciBkb2Vzbid0IGhhdmVcbiAqIGEgY29ycmVzcG9uZGluZyB2YWx1ZSwgaXQgaXMgbGVmdCB1bmNoYW5nZWQgaW4gdGhlIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQgLSBUaGUgaW5wdXQgc3RyaW5nIGNvbnRhaW5pbmcgcGxhY2Vob2xkZXJzIHRvIGJlIHJlcGxhY2VkLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+fSB2YWx1ZXMgLSBBbiBvYmplY3QgY29udGFpbmluZyBrZXktdmFsdWUgcGFpcnMgZm9yIHJlcGxhY2VtZW50LlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW50ZXJwb2xhdGVkIHN0cmluZyB3aXRoIHBsYWNlaG9sZGVycyByZXBsYWNlZCBieSB0aGVpciBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAqXG4gKiBAZnVuY3Rpb24gcGF0Y2hQbGFjZWhvbGRlcnNcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCBwYXRjaFN0cmluZ1xuICogICBwYXJ0aWNpcGFudCBTdHJpbmcucmVwbGFjZVxuICogICBDYWxsZXItPj5wYXRjaFN0cmluZzogQ2FsbCB3aXRoIGlucHV0IGFuZCB2YWx1ZXNcbiAqICAgcGF0Y2hTdHJpbmctPj5TdHJpbmcucmVwbGFjZTogQ2FsbCB3aXRoIHJlZ2V4IGFuZCByZXBsYWNlbWVudCBmdW5jdGlvblxuICogICBTdHJpbmcucmVwbGFjZS0+PnBhdGNoU3RyaW5nOiBSZXR1cm4gcmVwbGFjZWQgc3RyaW5nXG4gKiAgIHBhdGNoU3RyaW5nLS0+PkNhbGxlcjogUmV0dXJuIHBhdGNoZWQgc3RyaW5nXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpUZXh0VXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoUGxhY2Vob2xkZXJzKFxuICBpbnB1dDogc3RyaW5nLFxuICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz5cbik6IHN0cmluZyB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKFxuICAgIC9cXCRcXHsoW2EtekEtWjAtOV9dKylcXH0vZyxcbiAgICAobWF0Y2gsIHZhcmlhYmxlKSA9PiAodmFsdWVzW3ZhcmlhYmxlIGFzIHN0cmluZ10gYXMgc3RyaW5nKSB8fCBtYXRjaFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hTdHJpbmcoXG4gIGlucHV0OiBzdHJpbmcsXG4gIHZhbHVlczogUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPixcbiAgZmxhZ3M6IHN0cmluZyA9IFwiZ1wiXG4pOiBzdHJpbmcge1xuICBPYmplY3QuZW50cmllcyh2YWx1ZXMpLmZvckVhY2goKFtrZXksIHZhbF0pID0+IHtcbiAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cChrZXkpLCBmbGFncyk7XG4gICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKHJlZ2V4cCwgdmFsIGFzIHN0cmluZyk7XG4gIH0pO1xuICByZXR1cm4gaW5wdXQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgc3RyaW5nIHRvIGNhbWVsQ2FzZS5cbiAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIGNhbWVsQ2FzZSBmb3JtYXQsIHdoZXJlIHdvcmRzIGFyZSBqb2luZWQgd2l0aG91dCBzcGFjZXNcbiAqIGFuZCBlYWNoIHdvcmQgYWZ0ZXIgdGhlIGZpcnN0IHN0YXJ0cyB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGlucHV0IHN0cmluZyBjb252ZXJ0ZWQgdG8gY2FtZWxDYXNlLlxuICpcbiAqIEBmdW5jdGlvbiB0b0NhbWVsQ2FzZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NhbWVsQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8oPzpeXFx3fFtBLVpdfFxcYlxcdykvZywgKHdvcmQsIGluZGV4KSA9PlxuICAgICAgaW5kZXggPT09IDAgPyB3b3JkLnRvTG93ZXJDYXNlKCkgOiB3b3JkLnRvVXBwZXJDYXNlKClcbiAgICApXG4gICAgLnJlcGxhY2UoL1xccysvZywgXCJcIik7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgc3RyaW5nIHRvIEVOVklST05NRU5UX1ZBUklBQkxFIGZvcm1hdC5cbiAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIHVwcGVyY2FzZSB3aXRoIHdvcmRzIHNlcGFyYXRlZCBieSB1bmRlcnNjb3JlcyxcbiAqIHR5cGljYWxseSB1c2VkIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW5wdXQgc3RyaW5nIGNvbnZlcnRlZCB0byBFTlZJUk9OTUVOVF9WQVJJQUJMRSBmb3JtYXQuXG4gKlxuICogQGZ1bmN0aW9uIHRvRU5WRm9ybWF0XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpUZXh0VXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRU5WRm9ybWF0KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0b1NuYWtlQ2FzZSh0ZXh0KS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0cmluZyB0byBzbmFrZV9jYXNlLlxuICogQHN1bW1hcnkgVHJhbnNmb3JtcyB0aGUgaW5wdXQgc3RyaW5nIGludG8gbG93ZXJjYXNlIHdpdGggd29yZHMgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBjb252ZXJ0ZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpbnB1dCBzdHJpbmcgY29udmVydGVkIHRvIHNuYWtlX2Nhc2UuXG4gKlxuICogQGZ1bmN0aW9uIHRvU25ha2VDYXNlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpUZXh0VXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2VDYXNlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIFwiJDFfJDJcIilcbiAgICAucmVwbGFjZSgvW1xccy1dKy9nLCBcIl9cIilcbiAgICAudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBzdHJpbmcgdG8ga2ViYWItY2FzZS5cbiAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIGxvd2VyY2FzZSB3aXRoIHdvcmRzIHNlcGFyYXRlZCBieSBoeXBoZW5zLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBjb252ZXJ0ZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpbnB1dCBzdHJpbmcgY29udmVydGVkIHRvIGtlYmFiLWNhc2UuXG4gKlxuICogQGZ1bmN0aW9uIHRvS2ViYWJDYXNlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpUZXh0VXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvS2ViYWJDYXNlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIFwiJDEtJDJcIilcbiAgICAucmVwbGFjZSgvW1xcc19dKy9nLCBcIi1cIilcbiAgICAudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBzdHJpbmcgdG8gUGFzY2FsQ2FzZS5cbiAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIFBhc2NhbENhc2UgZm9ybWF0LCB3aGVyZSB3b3JkcyBhcmUgam9pbmVkIHdpdGhvdXQgc3BhY2VzXG4gKiBhbmQgZWFjaCB3b3JkIHN0YXJ0cyB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGlucHV0IHN0cmluZyBjb252ZXJ0ZWQgdG8gUGFzY2FsQ2FzZS5cbiAqXG4gKiBAZnVuY3Rpb24gdG9QYXNjYWxDYXNlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpUZXh0VXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGFzY2FsQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8oPzpeXFx3fFtBLVpdfFxcYlxcdykvZywgKHdvcmQpID0+IHdvcmQudG9VcHBlckNhc2UoKSlcbiAgICAucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHJpbmc6IHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKTsgLy8gJCYgbWVhbnMgdGhlIHdob2xlIG1hdGNoZWQgc3RyaW5nXG59XG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsR0FBVyxFQUNYLE1BQWMsRUFDZCxPQUFlLEdBQUc7SUFFbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsS0FBYSxFQUNiLE1BQXVDO0lBRXZDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FDbEIsd0JBQXdCLEVBQ3hCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUUsTUFBTSxDQUFDLFFBQWtCLENBQVksSUFBSSxLQUFLLENBQ3JFLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FDekIsS0FBYSxFQUNiLE1BQXVDLEVBQ3ZDLFFBQWdCLEdBQUc7SUFFbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRCxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBYSxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDOUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQ3REO1NBQ0EsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDdEMsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDdEMsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQztTQUNuQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztTQUN2QixXQUFXLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO1NBQ25DLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1NBQ3ZCLFdBQVcsRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBWTtJQUN2QyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1RCxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQWM7SUFDekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0NBQW9DO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBQYWRzIHRoZSBlbmQgb2YgYSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBjaGFyYWN0ZXIuXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBpbnB1dCBzdHJpbmcgdG8gYSBzcGVjaWZpZWQgbGVuZ3RoIGJ5IGFkZGluZyBhIHBhZGRpbmcgY2hhcmFjdGVyIHRvIHRoZSBlbmQuXG4gKiBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGFscmVhZHkgbG9uZ2VyIHRoYW4gdGhlIHNwZWNpZmllZCBsZW5ndGgsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBwYWRkZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIC0gVGhlIGRlc2lyZWQgdG90YWwgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjaGFyPVwiIFwiXSAtIFRoZSBjaGFyYWN0ZXIgdG8gdXNlIGZvciBwYWRkaW5nLiBEZWZhdWx0cyB0byBhIHNwYWNlLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgcGFkZGVkIHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgcGFkZGluZyBjaGFyYWN0ZXIgaXMgbm90IGV4YWN0bHkgb25lIGNoYXJhY3RlciBsb25nLlxuICpcbiAqIEBmdW5jdGlvbiBwYWRFbmRcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlRleHRVdGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFkRW5kKFxuICBzdHI6IHN0cmluZyxcbiAgbGVuZ3RoOiBudW1iZXIsXG4gIGNoYXI6IHN0cmluZyA9IFwiIFwiXG4pOiBzdHJpbmcge1xuICBpZiAoY2hhci5sZW5ndGggIT09IDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjaGFyYWN0ZXIgbGVuZ3RoIGZvciBwYWRkaW5nLiBtdXN0IGJlIG9uZSFcIik7XG4gIHJldHVybiBzdHIucGFkRW5kKGxlbmd0aCwgY2hhcik7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcGxhY2VzIHBsYWNlaG9sZGVycyBpbiBhIHN0cmluZyB3aXRoIHByb3ZpZGVkIHZhbHVlcy5cbiAqIEBzdW1tYXJ5IEludGVycG9sYXRlcyBhIHN0cmluZyBieSByZXBsYWNpbmcgcGxhY2Vob2xkZXJzIG9mIHRoZSBmb3JtICR7dmFyaWFibGVOYW1lfVxuICogd2l0aCBjb3JyZXNwb25kaW5nIHZhbHVlcyBmcm9tIHRoZSBwcm92aWRlZCBvYmplY3QuIElmIGEgcGxhY2Vob2xkZXIgZG9lc24ndCBoYXZlXG4gKiBhIGNvcnJlc3BvbmRpbmcgdmFsdWUsIGl0IGlzIGxlZnQgdW5jaGFuZ2VkIGluIHRoZSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0IC0gVGhlIGlucHV0IHN0cmluZyBjb250YWluaW5nIHBsYWNlaG9sZGVycyB0byBiZSByZXBsYWNlZC5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPn0gdmFsdWVzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcga2V5LXZhbHVlIHBhaXJzIGZvciByZXBsYWNlbWVudC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGludGVycG9sYXRlZCBzdHJpbmcgd2l0aCBwbGFjZWhvbGRlcnMgcmVwbGFjZWQgYnkgdGhlaXIgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQGZ1bmN0aW9uIHBhdGNoUGxhY2Vob2xkZXJzXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgcGF0Y2hTdHJpbmdcbiAqICAgcGFydGljaXBhbnQgU3RyaW5nLnJlcGxhY2VcbiAqICAgQ2FsbGVyLT4+cGF0Y2hTdHJpbmc6IENhbGwgd2l0aCBpbnB1dCBhbmQgdmFsdWVzXG4gKiAgIHBhdGNoU3RyaW5nLT4+U3RyaW5nLnJlcGxhY2U6IENhbGwgd2l0aCByZWdleCBhbmQgcmVwbGFjZW1lbnQgZnVuY3Rpb25cbiAqICAgU3RyaW5nLnJlcGxhY2UtPj5wYXRjaFN0cmluZzogUmV0dXJuIHJlcGxhY2VkIHN0cmluZ1xuICogICBwYXRjaFN0cmluZy0tPj5DYWxsZXI6IFJldHVybiBwYXRjaGVkIHN0cmluZ1xuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaFBsYWNlaG9sZGVycyhcbiAgaW5wdXQ6IHN0cmluZyxcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+XG4pOiBzdHJpbmcge1xuICByZXR1cm4gaW5wdXQucmVwbGFjZShcbiAgICAvXFwkXFx7KFthLXpBLVowLTlfXSspXFx9L2csXG4gICAgKG1hdGNoLCB2YXJpYWJsZSkgPT4gKHZhbHVlc1t2YXJpYWJsZSBhcyBzdHJpbmddIGFzIHN0cmluZykgfHwgbWF0Y2hcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoU3RyaW5nKFxuICBpbnB1dDogc3RyaW5nLFxuICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz4sXG4gIGZsYWdzOiBzdHJpbmcgPSBcImdcIlxuKTogc3RyaW5nIHtcbiAgT2JqZWN0LmVudHJpZXModmFsdWVzKS5mb3JFYWNoKChba2V5LCB2YWxdKSA9PiB7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChlc2NhcGVSZWdFeHAoa2V5KSwgZmxhZ3MpO1xuICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShyZWdleHAsIHZhbCBhcyBzdHJpbmcpO1xuICB9KTtcbiAgcmV0dXJuIGlucHV0O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0cmluZyB0byBjYW1lbENhc2UuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byBjYW1lbENhc2UgZm9ybWF0LCB3aGVyZSB3b3JkcyBhcmUgam9pbmVkIHdpdGhvdXQgc3BhY2VzXG4gKiBhbmQgZWFjaCB3b3JkIGFmdGVyIHRoZSBmaXJzdCBzdGFydHMgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBjb252ZXJ0ZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpbnB1dCBzdHJpbmcgY29udmVydGVkIHRvIGNhbWVsQ2FzZS5cbiAqXG4gKiBAZnVuY3Rpb24gdG9DYW1lbENhc2VcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlRleHRVdGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DYW1lbENhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csICh3b3JkLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSAwID8gd29yZC50b0xvd2VyQ2FzZSgpIDogd29yZC50b1VwcGVyQ2FzZSgpXG4gICAgKVxuICAgIC5yZXBsYWNlKC9cXHMrL2csIFwiXCIpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0cmluZyB0byBFTlZJUk9OTUVOVF9WQVJJQUJMRSBmb3JtYXQuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byB1cHBlcmNhc2Ugd2l0aCB3b3JkcyBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZXMsXG4gKiB0eXBpY2FsbHkgdXNlZCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGlucHV0IHN0cmluZyBjb252ZXJ0ZWQgdG8gRU5WSVJPTk1FTlRfVkFSSUFCTEUgZm9ybWF0LlxuICpcbiAqIEBmdW5jdGlvbiB0b0VOVkZvcm1hdFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0VOVkZvcm1hdCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9TbmFrZUNhc2UodGV4dCkudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBzdHJpbmcgdG8gc25ha2VfY2FzZS5cbiAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIGxvd2VyY2FzZSB3aXRoIHdvcmRzIHNlcGFyYXRlZCBieSB1bmRlcnNjb3Jlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW5wdXQgc3RyaW5nIGNvbnZlcnRlZCB0byBzbmFrZV9jYXNlLlxuICpcbiAqIEBmdW5jdGlvbiB0b1NuYWtlQ2FzZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1NuYWtlQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxXyQyXCIpXG4gICAgLnJlcGxhY2UoL1tcXHMtXSsvZywgXCJfXCIpXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgc3RyaW5nIHRvIGtlYmFiLWNhc2UuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byBsb3dlcmNhc2Ugd2l0aCB3b3JkcyBzZXBhcmF0ZWQgYnkgaHlwaGVucy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW5wdXQgc3RyaW5nIGNvbnZlcnRlZCB0byBrZWJhYi1jYXNlLlxuICpcbiAqIEBmdW5jdGlvbiB0b0tlYmFiQ2FzZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0tlYmFiQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpXG4gICAgLnJlcGxhY2UoL1tcXHNfXSsvZywgXCItXCIpXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgc3RyaW5nIHRvIFBhc2NhbENhc2UuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byBQYXNjYWxDYXNlIGZvcm1hdCwgd2hlcmUgd29yZHMgYXJlIGpvaW5lZCB3aXRob3V0IHNwYWNlc1xuICogYW5kIGVhY2ggd29yZCBzdGFydHMgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBjb252ZXJ0ZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpbnB1dCBzdHJpbmcgY29udmVydGVkIHRvIFBhc2NhbENhc2UuXG4gKlxuICogQGZ1bmN0aW9uIHRvUGFzY2FsQ2FzZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bhc2NhbENhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csICh3b3JkKSA9PiB3b3JkLnRvVXBwZXJDYXNlKCkpXG4gICAgLnJlcGxhY2UoL1xccysvZywgXCJcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIik7IC8vICQmIG1lYW5zIHRoZSB3aG9sZSBtYXRjaGVkIHN0cmluZ1xufVxuIl19
@@ -1,5 +1,4 @@
1
1
  export async function awaitTimeout(ms) {
2
2
  return new Promise((resolve) => setTimeout(resolve, ms));
3
3
  }
4
-
5
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy90aW1lb3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLEVBQVU7SUFDM0MsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJmaWxlIjoidXRpbHMvdGltZW91dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhc3luYyBmdW5jdGlvbiBhd2FpdFRpbWVvdXQobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbn1cbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy90aW1lb3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLEVBQVU7SUFDM0MsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYXN5bmMgZnVuY3Rpb24gYXdhaXRUaW1lb3V0KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG4iXX0=
@@ -1,3 +1,2 @@
1
1
  export {};
2
-
3
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InV0aWxzL3R5cGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSBcIi4vZW52aXJvbm1lbnRcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBwcm9taXNlIHJlc29sdXRpb24gYW5kIHJlamVjdGlvbi5cbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIG1ldGhvZHMgdG8gcmVzb2x2ZSBvciByZWplY3QgYSBwcm9taXNlLlxuICogQHRlbXBsYXRlIFIgLSBUaGUgdHlwZSBvZiB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKiBAdGVtcGxhdGUgRSAtIFRoZSB0eXBlIG9mIHRoZSBlcnJvciB2YWx1ZSwgZGVmYXVsdGluZyB0byBFcnJvci5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByb21pc2VFeGVjdXRvclxuICogQHByb3BlcnR5IHtmdW5jdGlvbihSKTogdm9pZH0gcmVzb2x2ZSAtIEZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIHByb21pc2UuXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9uKEUpOiB2b2lkfSByZWplY3QgLSBGdW5jdGlvbiB0byByZWplY3QgdGhlIHByb21pc2UuXG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvbWlzZUV4ZWN1dG9yPFIsIEUgPSBFcnJvcj4ge1xuICByZXNvbHZlOiAodmFsdWU6IFIgfCBQcm9taXNlTGlrZTxSPikgPT4gdm9pZDtcbiAgcmVqZWN0OiAoZXJyb3I6IEUpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIGNvbW1hbmQgZXhlY3V0aW9uLlxuICogQHN1bW1hcnkgRXh0ZW5kcyBQcm9taXNlIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHJlbGF0ZWQgdG8gdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHdheSB0byBoYW5kbGUgYW5kIGludGVyYWN0IHdpdGggdGhlIHJlc3VsdHNcbiAqIG9mIGFuIGFzeW5jaHJvbm91cyBjb21tYW5kIGV4ZWN1dGlvbiwgaW5jbHVkaW5nIGFjY2VzcyB0byB0aGUgY29tbWFuZCBkZXRhaWxzLFxuICogb3V0cHV0IGxvZ3MsIGFuZCB0aGUgYWJpbGl0eSB0byBhYm9ydCB0aGUgZXhlY3V0aW9uLlxuICpcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHR5cGUgb2YgdGhlIHJlc29sdmVkIHZhbHVlLCBkZWZhdWx0aW5nIHRvIHZvaWQuXG4gKiBAaW50ZXJmYWNlIENvbW1hbmRSZXN1bHRcbiAqIEBleHRlbmRzIFByb21pc2U8Uj5cbiAqIEBtZW1iZXJPZiBAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kUmVzdWx0PFIgPSB2b2lkPiB7XG4gIHByb21pc2U6IFByb21pc2U8Uj47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb250cm9sbGVyIHRvIGFib3J0IHRoZSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAgICogQHN1bW1hcnkgUHJvdmlkZXMgYSBtZWNoYW5pc20gdG8gY2FuY2VsIHRoZSBvbmdvaW5nIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgYWJvcnQ6IEFib3J0Q29udHJvbGxlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBleGVjdXRlZCBjb21tYW5kIHN0cmluZy5cbiAgICogQHN1bW1hcnkgQ29udGFpbnMgdGhlIGFjdHVhbCBjb21tYW5kIHRoYXQgd2FzIGV4ZWN1dGVkLlxuICAgKi9cbiAgY29tbWFuZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGNoaWxkIHByb2Nlc3Mgb2JqZWN0LlxuICAgKiBAc3VtbWFyeSBSZXByZXNlbnRzIHRoZSBOb2RlLmpzIGNoaWxkIHByb2Nlc3MgdGhhdCB3YXMgc3Bhd25lZCB0byBleGVjdXRlIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgY21kPzogQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXJyYXkgb2Ygc3Rkb3V0IGxvZ3MuXG4gICAqIEBzdW1tYXJ5IENvbnRhaW5zIGFsbCB0aGUgc3RhbmRhcmQgb3V0cHV0IG1lc3NhZ2VzIHByb2R1Y2VkIGR1cmluZyB0aGUgY29tbWFuZCBleGVjdXRpb24uXG4gICAqL1xuICBsb2dzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIHN0ZGVyciBsb2dzLlxuICAgKiBAc3VtbWFyeSBDb250YWlucyBhbGwgdGhlIHN0YW5kYXJkIGVycm9yIG1lc3NhZ2VzIHByb2R1Y2VkIGR1cmluZyB0aGUgY29tbWFuZCBleGVjdXRpb24uXG4gICAqL1xuICBlcnJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIGFsbG93cyBjaGFpbmluZyBjb21tYW5kcy5cbiAgICogQHN1bW1hcnkgYWxsb3dzIGNoYWluaW5nIGNvbW1hbmRzIChvciBwaXBpbmcpLlxuICAgKi9cbiAgcGlwZTogPEU+KGNiOiAocjogUikgPT4gRSkgPT4gUHJvbWlzZTxFPjtcbn1cblxuZXhwb3J0IHR5cGUgRW52aXJvbm1lbnRGYWN0b3J5PFQgZXh0ZW5kcyBvYmplY3QsIEUgZXh0ZW5kcyBFbnZpcm9ubWVudDxUPj4gPSAoXG4gIC4uLmFyZ3M6IHVua25vd25bXVxuKSA9PiBFO1xuXG5leHBvcnQgdHlwZSBEZXBlbmRlbmN5TWFwID0ge1xuICBwcm9kOiB7IG5hbWU6IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nIH1bXTtcbiAgZGV2OiB7IG5hbWU6IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nIH1bXTtcbiAgcGVlcjogeyBuYW1lOiBzdHJpbmc7IHZlcnNpb246IHN0cmluZyB9W107XG59O1xuXG5leHBvcnQgdHlwZSBTaW1wbGVEZXBlbmRlbmN5TWFwID0ge1xuICBwcm9kPzogc3RyaW5nW107XG4gIGRldj86IHN0cmluZ1tdO1xuICBwZWVyPzogc3RyaW5nW107XG59O1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gXCIuL2Vudmlyb25tZW50XCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgcHJvbWlzZSByZXNvbHV0aW9uIGFuZCByZWplY3Rpb24uXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBtZXRob2RzIHRvIHJlc29sdmUgb3IgcmVqZWN0IGEgcHJvbWlzZS5cbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHR5cGUgb2YgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIGRlZmF1bHRpbmcgdG8gRXJyb3IuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQcm9taXNlRXhlY3V0b3JcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oUik6IHZvaWR9IHJlc29sdmUgLSBGdW5jdGlvbiB0byByZXNvbHZlIHRoZSBwcm9taXNlLlxuICogQHByb3BlcnR5IHtmdW5jdGlvbihFKTogdm9pZH0gcmVqZWN0IC0gRnVuY3Rpb24gdG8gcmVqZWN0IHRoZSBwcm9taXNlLlxuICogQG1lbWJlck9mIEBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb21pc2VFeGVjdXRvcjxSLCBFID0gRXJyb3I+IHtcbiAgcmVzb2x2ZTogKHZhbHVlOiBSIHwgUHJvbWlzZUxpa2U8Uj4pID0+IHZvaWQ7XG4gIHJlamVjdDogKGVycm9yOiBFKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAqIEBzdW1tYXJ5IEV4dGVuZHMgUHJvbWlzZSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyByZWxhdGVkIHRvIHRoZSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAqIFRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSB3YXkgdG8gaGFuZGxlIGFuZCBpbnRlcmFjdCB3aXRoIHRoZSByZXN1bHRzXG4gKiBvZiBhbiBhc3luY2hyb25vdXMgY29tbWFuZCBleGVjdXRpb24sIGluY2x1ZGluZyBhY2Nlc3MgdG8gdGhlIGNvbW1hbmQgZGV0YWlscyxcbiAqIG91dHB1dCBsb2dzLCBhbmQgdGhlIGFiaWxpdHkgdG8gYWJvcnQgdGhlIGV4ZWN1dGlvbi5cbiAqXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSB0eXBlIG9mIHRoZSByZXNvbHZlZCB2YWx1ZSwgZGVmYXVsdGluZyB0byB2b2lkLlxuICogQGludGVyZmFjZSBDb21tYW5kUmVzdWx0XG4gKiBAZXh0ZW5kcyBQcm9taXNlPFI+XG4gKiBAbWVtYmVyT2YgQGRlY2FmLXRzL3V0aWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZFJlc3VsdDxSID0gdm9pZD4ge1xuICBwcm9taXNlOiBQcm9taXNlPFI+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbGxlciB0byBhYm9ydCB0aGUgY29tbWFuZCBleGVjdXRpb24uXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgbWVjaGFuaXNtIHRvIGNhbmNlbCB0aGUgb25nb2luZyBjb21tYW5kIGV4ZWN1dGlvbi5cbiAgICovXG4gIGFib3J0OiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgZXhlY3V0ZWQgY29tbWFuZCBzdHJpbmcuXG4gICAqIEBzdW1tYXJ5IENvbnRhaW5zIHRoZSBhY3R1YWwgY29tbWFuZCB0aGF0IHdhcyBleGVjdXRlZC5cbiAgICovXG4gIGNvbW1hbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGlsZCBwcm9jZXNzIG9iamVjdC5cbiAgICogQHN1bW1hcnkgUmVwcmVzZW50cyB0aGUgTm9kZS5qcyBjaGlsZCBwcm9jZXNzIHRoYXQgd2FzIHNwYXduZWQgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZC5cbiAgICovXG4gIGNtZD86IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIHN0ZG91dCBsb2dzLlxuICAgKiBAc3VtbWFyeSBDb250YWlucyBhbGwgdGhlIHN0YW5kYXJkIG91dHB1dCBtZXNzYWdlcyBwcm9kdWNlZCBkdXJpbmcgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgbG9nczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiBzdGRlcnIgbG9ncy5cbiAgICogQHN1bW1hcnkgQ29udGFpbnMgYWxsIHRoZSBzdGFuZGFyZCBlcnJvciBtZXNzYWdlcyBwcm9kdWNlZCBkdXJpbmcgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgZXJyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBhbGxvd3MgY2hhaW5pbmcgY29tbWFuZHMuXG4gICAqIEBzdW1tYXJ5IGFsbG93cyBjaGFpbmluZyBjb21tYW5kcyAob3IgcGlwaW5nKS5cbiAgICovXG4gIHBpcGU6IDxFPihjYjogKHI6IFIpID0+IEUpID0+IFByb21pc2U8RT47XG59XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50RmFjdG9yeTxUIGV4dGVuZHMgb2JqZWN0LCBFIGV4dGVuZHMgRW52aXJvbm1lbnQ8VD4+ID0gKFxuICAuLi5hcmdzOiB1bmtub3duW11cbikgPT4gRTtcblxuZXhwb3J0IHR5cGUgRGVwZW5kZW5jeU1hcCA9IHtcbiAgcHJvZDogeyBuYW1lOiBzdHJpbmc7IHZlcnNpb246IHN0cmluZyB9W107XG4gIGRldjogeyBuYW1lOiBzdHJpbmc7IHZlcnNpb246IHN0cmluZyB9W107XG4gIHBlZXI6IHsgbmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmcgfVtdO1xufTtcblxuZXhwb3J0IHR5cGUgU2ltcGxlRGVwZW5kZW5jeU1hcCA9IHtcbiAgcHJvZD86IHN0cmluZ1tdO1xuICBkZXY/OiBzdHJpbmdbXTtcbiAgcGVlcj86IHN0cmluZ1tdO1xufTtcbiJdfQ==