livemark 0.28.3 → 0.28.5

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 (44) hide show
  1. package/README.md +2 -2
  2. package/build/actions/changelog/build.d.ts +1 -1
  3. package/build/actions/changelog/build.js +5 -5
  4. package/build/actions/changelog/build.unit.js +6 -6
  5. package/build/actions/target/build.d.ts +9 -5
  6. package/build/actions/target/build.js +14 -9
  7. package/build/actions/target/build.unit.js +17 -2
  8. package/build/actions/target/clear.d.ts +2 -2
  9. package/build/actions/target/clear.js +11 -9
  10. package/build/actions/target/clear.unit.js +10 -3
  11. package/build/commands/clear.d.ts +1 -1
  12. package/build/commands/clear.js +6 -5
  13. package/build/helpers/tailwind-sources.unit.js +4 -4
  14. package/build/helpers/target-dir.d.ts +2 -0
  15. package/build/helpers/target-dir.js +11 -0
  16. package/build/helpers/target-export.unit.js +2 -2
  17. package/build/helpers/task-queue.d.ts +7 -0
  18. package/build/helpers/task-queue.js +28 -0
  19. package/build/helpers/task-queue.unit.d.ts +1 -0
  20. package/build/helpers/task-queue.unit.js +56 -0
  21. package/build/plugins/vite-content.d.ts +9 -0
  22. package/build/plugins/vite-content.js +60 -0
  23. package/build/plugins/vite-livemark.d.ts +2 -1
  24. package/build/plugins/vite-livemark.js +20 -9
  25. package/build/vite.config.js +3 -3
  26. package/package.json +2 -2
  27. package/skills/livemark-configuration/SKILL.md +1 -1
  28. package/skills/livemark-customization/SKILL.md +1 -1
  29. package/skills/livemark-deployment/SKILL.md +1 -1
  30. package/source/actions/changelog/build.ts +4 -5
  31. package/source/actions/changelog/build.unit.ts +5 -5
  32. package/source/actions/target/build.ts +29 -9
  33. package/source/actions/target/build.unit.ts +24 -1
  34. package/source/actions/target/clear.ts +9 -8
  35. package/source/actions/target/clear.unit.ts +9 -2
  36. package/source/commands/clear.ts +5 -4
  37. package/source/helpers/tailwind-sources.unit.ts +3 -3
  38. package/source/helpers/target-dir.ts +12 -0
  39. package/source/helpers/target-export.unit.ts +1 -1
  40. package/source/helpers/task-queue.ts +28 -0
  41. package/source/helpers/task-queue.unit.ts +60 -0
  42. package/source/plugins/vite-content.ts +72 -0
  43. package/source/plugins/vite-livemark.ts +19 -9
  44. package/source/vite.config.ts +2 -2
package/README.md CHANGED
@@ -66,10 +66,10 @@ Welcome!
66
66
  npx livemark start # dev server with HMR at http://localhost:8000
67
67
  npx livemark build # production build to .livemark/build/
68
68
  npx livemark preview # serve the production build locally
69
- npx livemark clear # wipe the generated .livemark/.target/ (stop the dev server first)
69
+ npx livemark clear # wipe the generated .livemark/.serve/, .build/ and .cache/ (stop the dev server first)
70
70
  ```
71
71
 
72
- That's the whole loop. Add `.livemark/build/` and `.livemark/.target/` to your `.gitignore`.
72
+ That's the whole loop. Add `.livemark/build/` to your `.gitignore`.
73
73
 
74
74
  ## Project structure
75
75
 
@@ -13,7 +13,7 @@ interface ChangelogEntry {
13
13
  export declare function cacheIncludeGlob(section: ChangelogSection, config: Config): string;
14
14
  /** Directory holding one changelog section's cache state: the rendered
15
15
  * `.md` entries plus a `meta.json` holding the etag for conditional
16
- * GETs. Each section gets its own subdirectory of `cache/changelog/`,
16
+ * GETs. Each section gets its own subdirectory of `.livemark/.cache/changelog/`,
17
17
  * keyed by its prefix's slug plus a hash of the raw prefix
18
18
  * (`/python/changelog/` → `python-changelog-<hash>`), so several
19
19
  * changelogs never overwrite each other's entries even when their
@@ -8,8 +8,7 @@ import remarkStringify from "remark-stringify";
8
8
  import { unified } from "unified";
9
9
  import { visit } from "unist-util-visit";
10
10
  import { isGitHubUrl, parseGitHubRepo } from "../../helpers/changelog-source.js";
11
- import { targetDirFor } from "../target/build.js";
12
- const CACHE_SUBDIR = "cache/changelog";
11
+ import { cacheDirFor } from "../../helpers/target-dir.js";
13
12
  const parser = unified().use(remarkParse);
14
13
  const stringifier = unified().use(remarkStringify, {
15
14
  bullet: "-",
@@ -24,7 +23,7 @@ export function cacheIncludeGlob(section, config) {
24
23
  }
25
24
  /** Directory holding one changelog section's cache state: the rendered
26
25
  * `.md` entries plus a `meta.json` holding the etag for conditional
27
- * GETs. Each section gets its own subdirectory of `cache/changelog/`,
26
+ * GETs. Each section gets its own subdirectory of `.livemark/.cache/changelog/`,
28
27
  * keyed by its prefix's slug plus a hash of the raw prefix
29
28
  * (`/python/changelog/` → `python-changelog-<hash>`), so several
30
29
  * changelogs never overwrite each other's entries even when their
@@ -32,7 +31,7 @@ export function cacheIncludeGlob(section, config) {
32
31
  export function changelogCacheDir(section, config) {
33
32
  const slug = slugify(section.prefix) || "index";
34
33
  const hash = createHash("sha256").update(section.prefix).digest("hex").slice(0, 8);
35
- return join(targetDirFor(config.configPath), CACHE_SUBDIR, `${slug}-${hash}`);
34
+ return join(cacheDirFor(config.configPath), "changelog", `${slug}-${hash}`);
36
35
  }
37
36
  /** Build the per-version changelog cache files of one changelog section
38
37
  * into its own cache directory. On refresh we wipe only that
@@ -46,6 +45,7 @@ export async function buildChangelog(section, config) {
46
45
  if (entries === undefined)
47
46
  return;
48
47
  await mkdir(cacheDir, { recursive: true });
48
+ await writeFile(join(cacheDirFor(config.configPath), ".gitignore"), "*\n");
49
49
  for (const f of await readdir(cacheDir).catch(() => [])) {
50
50
  if (f.endsWith(".md"))
51
51
  await rm(join(cacheDir, f), { force: true });
@@ -203,4 +203,4 @@ async function exists(path) {
203
203
  return false;
204
204
  }
205
205
  }
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy9jaGFuZ2Vsb2cvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbEQsT0FBTyxPQUFPLE1BQU0sdUJBQXVCLENBQUE7QUFFM0MsT0FBTyxFQUFFLFFBQVEsSUFBSSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRSxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUF1QmpELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFBO0FBRXRDLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUN6QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFO0lBQ2pELE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFLElBQUk7SUFDWixRQUFRLEVBQUUsR0FBRztDQUNkLENBQUMsQ0FBQTtBQUVGOzt3QkFFd0I7QUFDeEIsTUFB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QyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3RFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsS0FBSyxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN0QyxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBYyxDQUFBO0lBQ3JDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxNQUFNLENBQUMsSUFBWTtJQUNoQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiXG5pbXBvcnQgeyBhY2Nlc3MsIG1rZGlyLCByZWFkRmlsZSwgcmVhZGRpciwgcm0sIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCBzbHVnaWZ5IGZyb20gXCJAc2luZHJlc29yaHVzL3NsdWdpZnlcIlxuaW1wb3J0IHR5cGUgeyBSb290LCBSb290Q29udGVudCB9IGZyb20gXCJtZGFzdFwiXG5pbXBvcnQgeyB0b1N0cmluZyBhcyBtZGFzdFRvU3RyaW5nIH0gZnJvbSBcIm1kYXN0LXV0aWwtdG8tc3RyaW5nXCJcbmltcG9ydCByZW1hcmtQYXJzZSBmcm9tIFwicmVtYXJrLXBhcnNlXCJcbmltcG9ydCByZW1hcmtTdHJpbmdpZnkgZnJvbSBcInJlbWFyay1zdHJpbmdpZnlcIlxuaW1wb3J0IHsgdW5pZmllZCB9IGZyb20gXCJ1bmlmaWVkXCJcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSBcInVuaXN0LXV0aWwtdmlzaXRcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgdHlwZSB7IENoYW5nZWxvZ1NlY3Rpb24gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuaW1wb3J0IHsgaXNHaXRIdWJVcmwsIHBhcnNlR2l0SHViUmVwbyB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2NoYW5nZWxvZy1zb3VyY2UudHNcIlxuaW1wb3J0IHsgdGFyZ2V0RGlyRm9yIH0gZnJvbSBcIi4uL3RhcmdldC9idWlsZC50c1wiXG5cbmludGVyZmFjZSBSZWxlYXNlIHtcbiAgdGFnX25hbWU6IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICBwdWJsaXNoZWRfYXQ/OiBzdHJpbmcgfCBudWxsXG4gIGJvZHk/OiBzdHJpbmcgfCBudWxsXG4gIGh0bWxfdXJsPzogc3RyaW5nIHwgbnVsbFxufVxuXG5pbnRlcmZhY2UgQ2FjaGVNZXRhIHtcbiAgZXRhZzogc3RyaW5nXG4gIGZldGNoZWRBdDogc3RyaW5nXG59XG5cbmludGVyZmFjZSBDaGFuZ2Vsb2dFbnRyeSB7XG4gIHNsdWc6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nXG4gIGRhdGU/OiBzdHJpbmdcbiAgYm9keTogc3RyaW5nXG4gIHNvdXJjZVVybD86IHN0cmluZ1xufVxuXG5jb25zdCBDQUNIRV9TVUJESVIgPSBcImNhY2hlL2NoYW5nZWxvZ1wiXG5cbmNvbnN0IHBhcnNlciA9IHVuaWZpZWQoKS51c2UocmVtYXJrUGFyc2UpXG5jb25zdCBzdHJpbmdpZmllciA9IHVuaWZpZWQoKS51c2UocmVtYXJrU3RyaW5naWZ5LCB7XG4gIGJ1bGxldDogXCItXCIsXG4gIGZlbmNlczogdHJ1ZSxcbiAgZW1waGFzaXM6IFwiX1wiLFxufSlcblxuLyoqIEdsb2IgKGFic29sdXRlIHBhdGgpIGNvdmVyaW5nIHRoZSBjYWNoZWQgY2hhbmdlbG9nIG1hcmtkb3duIGZpbGVzIG9mXG4gKiAgb25lIGNoYW5nZWxvZyBzZWN0aW9uLiBVc2VkIGJ5IGNvbnRlbnQtY29sbGVjdGlvbnMgdG8gaW5jbHVkZSB0aGVtIGluXG4gKiAgdGhlIGFydGljbGUgc2Nhbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUluY2x1ZGVHbG9iKHNlY3Rpb246IENoYW5nZWxvZ1NlY3Rpb24sIGNvbmZpZzogQ29uZmlnKSB7XG4gIHJldHVybiBqb2luKGNoYW5nZWxvZ0NhY2hlRGlyKHNlY3Rpb24sIGNvbmZpZyksIFwiKi5tZFwiKVxufVxuXG4vKiogRGlyZWN0b3J5IGhvbGRpbmcgb25lIGNoYW5nZWxvZyBzZWN0aW9uJ3MgY2FjaGUgc3RhdGU6IHRoZSByZW5kZXJlZFxuICogIGAubWRgIGVudHJpZXMgcGx1cyBhIGBtZXRhLmpzb25gIGhvbGRpbmcgdGhlIGV0YWcgZm9yIGNvbmRpdGlvbmFsXG4gKiAgR0VUcy4gRWFjaCBzZWN0aW9uIGdldHMgaXRzIG93biBzdWJkaXJlY3Rvcnkgb2YgYGNhY2hlL2NoYW5nZWxvZy9gLFxuICogIGtleWVkIGJ5IGl0cyBwcmVmaXgncyBzbHVnIHBsdXMgYSBoYXNoIG9mIHRoZSByYXcgcHJlZml4XG4gKiAgKGAvcHl0aG9uL2NoYW5nZWxvZy9gIOKGkiBgcHl0aG9uLWNoYW5nZWxvZy08aGFzaD5gKSwgc28gc2V2ZXJhbFxuICogIGNoYW5nZWxvZ3MgbmV2ZXIgb3ZlcndyaXRlIGVhY2ggb3RoZXIncyBlbnRyaWVzIGV2ZW4gd2hlbiB0aGVpclxuICogIHByZWZpeGVzIHNsdWdpZnkgYWxpa2UuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlbG9nQ2FjaGVEaXIoc2VjdGlvbjogQ2hhbmdlbG9nU2VjdGlvbiwgY29uZmlnOiBDb25maWcpIHtcbiAgY29uc3Qgc2x1ZyA9IHNsdWdpZnkoc2VjdGlvbi5wcmVmaXgpIHx8IFwiaW5kZXhcIlxuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoc2VjdGlvbi5wcmVmaXgpLmRpZ2VzdChcImhleFwiKS5zbGljZSgwLCA4KVxuICByZXR1cm4gam9pbih0YXJnZXREaXJGb3IoY29uZmlnLmNvbmZpZ1BhdGgpLCBDQUNIRV9TVUJESVIsIGAke3NsdWd9LSR7aGFzaH1gKVxufVxuXG4vKiogQnVpbGQgdGhlIHBlci12ZXJzaW9uIGNoYW5nZWxvZyBjYWNoZSBmaWxlcyBvZiBvbmUgY2hhbmdlbG9nIHNlY3Rpb25cbiAqICBpbnRvIGl0cyBvd24gY2FjaGUgZGlyZWN0b3J5LiBPbiByZWZyZXNoIHdlIHdpcGUgb25seSB0aGF0XG4gKiAgZGlyZWN0b3J5J3MgYC5tZGAgZmlsZXMsIGxlYXZpbmcgbWV0YSBpbnRhY3QuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRDaGFuZ2Vsb2coc2VjdGlvbjogQ2hhbmdlbG9nU2VjdGlvbiwgY29uZmlnOiBDb25maWcpIHtcbiAgY29uc3QgY2FjaGVEaXIgPSBjaGFuZ2Vsb2dDYWNoZURpcihzZWN0aW9uLCBjb25maWcpXG4gIGNvbnN0IG1ldGFQYXRoID0gam9pbihjYWNoZURpciwgXCJtZXRhLmpzb25cIilcblxuICBjb25zdCBlbnRyaWVzID0gaXNHaXRIdWJVcmwoc2VjdGlvbi5zb3VyY2UpXG4gICAgPyBhd2FpdCBidWlsZEZyb21HaXRIdWIoc2VjdGlvbi5zb3VyY2UsIG1ldGFQYXRoLCBjYWNoZURpcilcbiAgICA6IGF3YWl0IGJ1aWxkRnJvbUxvY2FsKHNlY3Rpb24uc291cmNlLCBjb25maWcucm9vdClcblxuICBpZiAoZW50cmllcyA9PT0gdW5kZWZpbmVkKSByZXR1cm5cblxuICBhd2FpdCBta2RpcihjYWNoZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgZm9yIChjb25zdCBmIG9mIGF3YWl0IHJlYWRkaXIoY2FjaGVEaXIpLmNhdGNoKCgpID0+IFtdKSkge1xuICAgIGlmIChmLmVuZHNXaXRoKFwiLm1kXCIpKSBhd2FpdCBybShqb2luKGNhY2hlRGlyLCBmKSwgeyBmb3JjZTogdHJ1ZSB9KVxuICB9XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3QgbWFya2Rvd24gPSB3cmFwRnJvbnRtYXR0ZXIoZW50cnksIHNlY3Rpb24pXG4gICAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oY2FjaGVEaXIsIGAke2VudHJ5LnNsdWd9Lm1kYCksIG1hcmtkb3duLCBcInV0Zi04XCIpXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRGcm9tTG9jYWwoc291cmNlOiBzdHJpbmcsIHJvb3Q6IHN0cmluZykge1xuICBjb25zdCBmaWxlUGF0aCA9IHJlc29sdmUocm9vdCwgc291cmNlKVxuICBjb25zdCBib2R5ID0gYXdhaXQgcmVhZEZpbGUoZmlsZVBhdGgsIFwidXRmLThcIilcbiAgcmV0dXJuIHNwbGl0TG9jYWxDaGFuZ2Vsb2coYm9keSlcbn1cblxuLyoqIFBhcnNlIENIQU5HRUxPRy5tZCBpbnRvIHBlci12ZXJzaW9uIGVudHJpZXMgdXNpbmcgbWRhc3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdExvY2FsQ2hhbmdlbG9nKGJvZHk6IHN0cmluZyk6IENoYW5nZWxvZ0VudHJ5W10ge1xuICBjb25zdCB0cmVlID0gcGFyc2VyLnBhcnNlKGJvZHkpIGFzIFJvb3RcbiAgY29uc3QgZW50cmllczogQ2hhbmdlbG9nRW50cnlbXSA9IFtdXG4gIGxldCBjdXJyZW50OiB7IGhlYWRpbmc6IHN0cmluZzsgY2hpbGRyZW46IFJvb3RDb250ZW50W10gfSB8IHVuZGVmaW5lZFxuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgdHJlZS5jaGlsZHJlbikge1xuICAgIGlmIChjaGlsZC50eXBlID09PSBcImhlYWRpbmdcIiAmJiBjaGlsZC5kZXB0aCA9PT0gMikge1xuICAgICAgaWYgKGN1cnJlbnQpIGVudHJpZXMucHVzaChmaW5hbGl6ZUVudHJ5KGN1cnJlbnQpKVxuICAgICAgY3VycmVudCA9IHsgaGVhZGluZzogbWRhc3RUb1N0cmluZyhjaGlsZCksIGNoaWxkcmVuOiBbXSB9XG4gICAgfSBlbHNlIGlmIChjdXJyZW50KSB7XG4gICAgICBjdXJyZW50LmNoaWxkcmVuLnB1c2goY2hpbGQpXG4gICAgfVxuICB9XG4gIGlmIChjdXJyZW50KSBlbnRyaWVzLnB1c2goZmluYWxpemVFbnRyeShjdXJyZW50KSlcbiAgcmV0dXJuIGVudHJpZXNcbn1cblxuZnVuY3Rpb24gZmluYWxpemVFbnRyeShpbnB1dDoge1xuICBoZWFkaW5nOiBzdHJpbmdcbiAgY2hpbGRyZW46IFJvb3RDb250ZW50W11cbn0pOiBDaGFuZ2Vsb2dFbnRyeSB7XG4gIGNvbnN0IHZlcnNpb25NYXRjaCA9IGlucHV0LmhlYWRpbmcubWF0Y2goL15cXFs/KFteXFxdXFxzXSspXFxdPy8pXG4gIGNvbnN0IHZlcnNpb24gPSB2ZXJzaW9uTWF0Y2g/LlsxXSA/PyBpbnB1dC5oZWFkaW5nXG4gIGNvbnN0IGRhdGVNYXRjaCA9IGlucHV0LmhlYWRpbmcubWF0Y2goL1xcZHs0fS1cXGR7Mn0tXFxkezJ9LylcbiAgY29uc3QgYm9keSA9IHJlbmRlckVudHJ5Qm9keShpbnB1dC5jaGlsZHJlbilcbiAgcmV0dXJuIHtcbiAgICBzbHVnOiBzbHVnaWZ5KHZlcnNpb24pLFxuICAgIHRpdGxlOiB2ZXJzaW9uLFxuICAgIGRhdGU6IGRhdGVNYXRjaD8uWzBdLFxuICAgIGJvZHksXG4gIH1cbn1cblxuLyoqIFNlcmlhbGl6ZSBhbiBlbnRyeSdzIG1kYXN0IGNoaWxkcmVuIGJhY2sgdG8gbWFya2Rvd24gKi9cbmZ1bmN0aW9uIHJlbmRlckVudHJ5Qm9keShjaGlsZHJlbjogUm9vdENvbnRlbnRbXSkge1xuICBjb25zdCByb290OiBSb290ID0geyB0eXBlOiBcInJvb3RcIiwgY2hpbGRyZW4gfVxuICByZXR1cm4gc3RyaW5naWZpZXIuc3RyaW5naWZ5KHJvb3QpLnRyaW1FbmQoKVxufVxuXG4vKiogRHJvcCB0aGUgYm9keSdzIGxlYWRpbmcgaDEgKHR5cGljYWxseSB0aGUgY29udmVudGlvbmFsLWNoYW5nZWxvZ1xuICogYCMgMC43LjIgKDIwMjYtMDQtMjUpYCBib2lsZXJwbGF0ZSB0aGF0IGR1cGxpY2F0ZXMgdGhlIGFydGljbGUncyB0aXRsZSksXG4gKiBzaGlmdCBoMuKAk2g2IHVwIGJ5IG9uZSBzbyBzdWJzZWN0aW9uIGhlYWRpbmdzIGJlY29tZSBoMSAvIGgyIC8g4oCmLCBhbmRcbiAqIGVzY2FwZSBzdHJheSBgPGAgb3V0c2lkZSBjb2RlIHNvIE1EWCBkb2Vzbid0IG1pc3Rha2UgdGhlbSBmb3IgSlNYLiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0JvZHkoYm9keTogc3RyaW5nKSB7XG4gIGNvbnN0IHRyZWUgPSBwYXJzZXIucGFyc2UoYm9keSkgYXMgUm9vdFxuICB2aXNpdCh0cmVlLCBcImhlYWRpbmdcIiwgbm9kZSA9PiB7XG4gICAgaWYgKG5vZGUuZGVwdGggPiAxKSBub2RlLmRlcHRoID0gKG5vZGUuZGVwdGggLSAxKSBhcyAxIHwgMiB8IDMgfCA0IHwgNVxuICB9KVxuICBpZiAodHJlZS5jaGlsZHJlblswXT8udHlwZSA9PT0gXCJoZWFkaW5nXCIgJiYgdHJlZS5jaGlsZHJlblswXS5kZXB0aCA9PT0gMSkge1xuICAgIHRyZWUuY2hpbGRyZW4uc2hpZnQoKVxuICB9XG4gIHJldHVybiBlc2NhcGVNZHhBbmdsZXMoc3RyaW5naWZpZXIuc3RyaW5naWZ5KHRyZWUpLnRyaW1FbmQoKSlcbn1cblxuLyoqIEVzY2FwZSBgPGAgdG8gYCZsdDtgIG91dHNpZGUgZmVuY2VkIGNvZGUgYmxvY2tzIGFuZCBpbmxpbmUgYmFja3RpY2sgc3BhbnNcbiAqIHNvIGNvbW1pdCBtZXNzYWdlcyB3aXRoIHBsYWNlaG9sZGVycyBsaWtlIGA8c3ViZGlyPmAgZG9uJ3QgZ2V0IHBhcnNlZCBhc1xuICogSlNYIGJ5IE1EWC4gVGhlIGVudGl0eSBpcyB1c2VkIHJhdGhlciB0aGFuIGEgYFxcPGAgYmFja3NsYXNoIGVzY2FwZSBiZWNhdXNlXG4gKiBNRFgncyBKU1gtYXdhcmUgcGFyc2VyIGRvZXMgbm90IGhvbm91ciB0aGUgYmFja3NsYXNoIGFuZCBzdGlsbCByZWFkc1xuICogYFxcPG5hbWU+YCBhcyBhbiB1bmNsb3NlZCB0YWcuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlTWR4QW5nbGVzKG1hcmtkb3duOiBzdHJpbmcpIHtcbiAgbGV0IGluRmVuY2UgPSBmYWxzZVxuICByZXR1cm4gbWFya2Rvd25cbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAubWFwKGxpbmUgPT4ge1xuICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcImBgYFwiKSkge1xuICAgICAgICBpbkZlbmNlID0gIWluRmVuY2VcbiAgICAgICAgcmV0dXJuIGxpbmVcbiAgICAgIH1cbiAgICAgIGlmIChpbkZlbmNlKSByZXR1cm4gbGluZVxuICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZSgvYFteYF0qYHw8L2csIG1hdGNoID0+IChtYXRjaCA9PT0gXCI8XCIgPyBcIiZsdDtcIiA6IG1hdGNoKSlcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkRnJvbUdpdEh1YihcbiAgc291cmNlOiBzdHJpbmcsXG4gIG1ldGFQYXRoOiBzdHJpbmcsXG4gIGNhY2hlRGlyOiBzdHJpbmcsXG4pOiBQcm9taXNlPENoYW5nZWxvZ0VudHJ5W10gfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VHaXRIdWJSZXBvKHNvdXJjZSlcbiAgaWYgKCFwYXJzZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSBHaXRIdWIgcmVwbyBmcm9tIHNvdXJjZTogJHtzb3VyY2V9YClcbiAgfVxuXG4gIGNvbnN0IHVybCA9IGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7cGFyc2VkLm93bmVyfS8ke3BhcnNlZC5yZXBvfS9yZWxlYXNlcz9wZXJfcGFnZT0xMDBgXG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL3ZuZC5naXRodWIranNvblwiLFxuICAgIFwiWC1HaXRIdWItQXBpLVZlcnNpb25cIjogXCIyMDIyLTExLTI4XCIsXG4gIH1cblxuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTlxuICBpZiAodG9rZW4pIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHt0b2tlbn1gXG5cbiAgY29uc3QgbWV0YSA9IGF3YWl0IHJlYWRNZXRhKG1ldGFQYXRoKVxuICBjb25zdCBoYXNDYWNoZSA9IGF3YWl0IGV4aXN0cyhjYWNoZURpcilcbiAgaWYgKG1ldGEgJiYgaGFzQ2FjaGUpIGhlYWRlcnNbXCJJZi1Ob25lLU1hdGNoXCJdID0gbWV0YS5ldGFnXG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsLCB7IGhlYWRlcnMgfSlcblxuICBpZiAocmVzLnN0YXR1cyA9PT0gMzA0KSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zdCByZW1haW5pbmcgPSByZXMuaGVhZGVycy5nZXQoXCJ4LXJhdGVsaW1pdC1yZW1haW5pbmdcIilcbiAgICBjb25zdCByZXNldCA9IHJlcy5oZWFkZXJzLmdldChcIngtcmF0ZWxpbWl0LXJlc2V0XCIpXG4gICAgY29uc3QgbXNnID0gYEdpdEh1YiBBUEkgJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fSAocmF0ZS1saW1pdCByZW1haW5pbmc6ICR7cmVtYWluaW5nID8/IFwiP1wifSwgcmVzZXQ6ICR7cmVzZXQgPz8gXCI/XCJ9KWBcbiAgICBpZiAoaGFzQ2FjaGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHttc2d9IOKAlCBmYWxsaW5nIGJhY2sgdG8gY2FjaGVkIGNoYW5nZWxvZ2ApXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cpXG4gIH1cblxuICBjb25zdCByZWxlYXNlcyA9IChhd2FpdCByZXMuanNvbigpKSBhcyBSZWxlYXNlW11cbiAgY29uc3QgZXRhZyA9IHJlcy5oZWFkZXJzLmdldChcImV0YWdcIilcbiAgaWYgKGV0YWcpIHtcbiAgICBhd2FpdCBta2RpcihkaXJuYW1lKG1ldGFQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICBtZXRhUGF0aCxcbiAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICB7IGV0YWcsIGZldGNoZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH0gc2F0aXNmaWVzIENhY2hlTWV0YSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMixcbiAgICAgICksXG4gICAgICBcInV0Zi04XCIsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VzLm1hcChyZWxlYXNlID0+ICh7XG4gICAgc2x1Zzogc2x1Z2lmeShyZWxlYXNlLnRhZ19uYW1lKSxcbiAgICB0aXRsZTogcmVsZWFzZS50YWdfbmFtZSxcbiAgICBkYXRlOiByZWxlYXNlLnB1Ymxpc2hlZF9hdCA/PyB1bmRlZmluZWQsXG4gICAgYm9keTogKHJlbGVhc2UuYm9keSA/PyBcIlwiKS50cmltKCksXG4gICAgc291cmNlVXJsOiByZWxlYXNlLmh0bWxfdXJsID8/IHVuZGVmaW5lZCxcbiAgfSkpXG59XG5cbmZ1bmN0aW9uIHdyYXBGcm9udG1hdHRlcihlbnRyeTogQ2hhbmdlbG9nRW50cnksIHNlY3Rpb246IENoYW5nZWxvZ1NlY3Rpb24pIHtcbiAgY29uc3QgbGluZXMgPSBbXCItLS1cIiwgYHRpdGxlOiAke2VudHJ5LnRpdGxlfWAsIGBwYXRoOiAke3NlY3Rpb24ucHJlZml4fSR7ZW50cnkuc2x1Z30vYF1cbiAgaWYgKGVudHJ5LmRhdGUpIGxpbmVzLnB1c2goYGRhdGU6ICR7ZW50cnkuZGF0ZX1gKVxuICBpZiAoZW50cnkuc291cmNlVXJsKSB7XG4gICAgbGluZXMucHVzaChgc291cmNlVXJsOiAke2VudHJ5LnNvdXJjZVVybH1gLCBcInNvdXJjZUFjdGlvbjogdmlld1wiKVxuICB9XG4gIGxpbmVzLnB1c2goXCItLS1cIiwgXCJcIiwgYCMgJHtlbnRyeS50aXRsZX1gLCBcIlwiLCBwcm9jZXNzQm9keShlbnRyeS5ib2R5KSlcbiAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIilcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZE1ldGEobWV0YVBhdGg6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVNZXRhIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmF3ID0gYXdhaXQgcmVhZEZpbGUobWV0YVBhdGgsIFwidXRmLThcIilcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpIGFzIENhY2hlTWV0YVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhpc3RzKHBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGF3YWl0IGFjY2VzcyhwYXRoKVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy9jaGFuZ2Vsb2cvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbEQsT0FBTyxPQUFPLE1BQU0sdUJBQXVCLENBQUE7QUFFM0MsT0FBTyxFQUFFLFFBQVEsSUFBSSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRSxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUF1QnpELE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUN6QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFO0lBQ2pELE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFLElBQUk7SUFDWixRQUFRLEVBQUUsR0FBRztDQUNkLENBQUMsQ0FBQTtBQUVGOzt3QkFFd0I7QUFDeEIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQXlCLEVBQUUsTUFB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RUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3RFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsS0FBSyxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN0QyxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBYyxDQUFBO0lBQ3JDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxNQUFNLENBQUMsSUFBWTtJQUNoQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiXG5pbXBvcnQgeyBhY2Nlc3MsIG1rZGlyLCByZWFkRmlsZSwgcmVhZGRpciwgcm0sIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCBzbHVnaWZ5IGZyb20gXCJAc2luZHJlc29yaHVzL3NsdWdpZnlcIlxuaW1wb3J0IHR5cGUgeyBSb290LCBSb290Q29udGVudCB9IGZyb20gXCJtZGFzdFwiXG5pbXBvcnQgeyB0b1N0cmluZyBhcyBtZGFzdFRvU3RyaW5nIH0gZnJvbSBcIm1kYXN0LXV0aWwtdG8tc3RyaW5nXCJcbmltcG9ydCByZW1hcmtQYXJzZSBmcm9tIFwicmVtYXJrLXBhcnNlXCJcbmltcG9ydCByZW1hcmtTdHJpbmdpZnkgZnJvbSBcInJlbWFyay1zdHJpbmdpZnlcIlxuaW1wb3J0IHsgdW5pZmllZCB9IGZyb20gXCJ1bmlmaWVkXCJcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSBcInVuaXN0LXV0aWwtdmlzaXRcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgdHlwZSB7IENoYW5nZWxvZ1NlY3Rpb24gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuaW1wb3J0IHsgaXNHaXRIdWJVcmwsIHBhcnNlR2l0SHViUmVwbyB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2NoYW5nZWxvZy1zb3VyY2UudHNcIlxuaW1wb3J0IHsgY2FjaGVEaXJGb3IgfSBmcm9tIFwiLi4vLi4vaGVscGVycy90YXJnZXQtZGlyLnRzXCJcblxuaW50ZXJmYWNlIFJlbGVhc2Uge1xuICB0YWdfbmFtZTogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIHB1Ymxpc2hlZF9hdD86IHN0cmluZyB8IG51bGxcbiAgYm9keT86IHN0cmluZyB8IG51bGxcbiAgaHRtbF91cmw/OiBzdHJpbmcgfCBudWxsXG59XG5cbmludGVyZmFjZSBDYWNoZU1ldGEge1xuICBldGFnOiBzdHJpbmdcbiAgZmV0Y2hlZEF0OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIENoYW5nZWxvZ0VudHJ5IHtcbiAgc2x1Zzogc3RyaW5nXG4gIHRpdGxlOiBzdHJpbmdcbiAgZGF0ZT86IHN0cmluZ1xuICBib2R5OiBzdHJpbmdcbiAgc291cmNlVXJsPzogc3RyaW5nXG59XG5cbmNvbnN0IHBhcnNlciA9IHVuaWZpZWQoKS51c2UocmVtYXJrUGFyc2UpXG5jb25zdCBzdHJpbmdpZmllciA9IHVuaWZpZWQoKS51c2UocmVtYXJrU3RyaW5naWZ5LCB7XG4gIGJ1bGxldDogXCItXCIsXG4gIGZlbmNlczogdHJ1ZSxcbiAgZW1waGFzaXM6IFwiX1wiLFxufSlcblxuLyoqIEdsb2IgKGFic29sdXRlIHBhdGgpIGNvdmVyaW5nIHRoZSBjYWNoZWQgY2hhbmdlbG9nIG1hcmtkb3duIGZpbGVzIG9mXG4gKiAgb25lIGNoYW5nZWxvZyBzZWN0aW9uLiBVc2VkIGJ5IGNvbnRlbnQtY29sbGVjdGlvbnMgdG8gaW5jbHVkZSB0aGVtIGluXG4gKiAgdGhlIGFydGljbGUgc2Nhbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUluY2x1ZGVHbG9iKHNlY3Rpb246IENoYW5nZWxvZ1NlY3Rpb24sIGNvbmZpZzogQ29uZmlnKSB7XG4gIHJldHVybiBqb2luKGNoYW5nZWxvZ0NhY2hlRGlyKHNlY3Rpb24sIGNvbmZpZyksIFwiKi5tZFwiKVxufVxuXG4vKiogRGlyZWN0b3J5IGhvbGRpbmcgb25lIGNoYW5nZWxvZyBzZWN0aW9uJ3MgY2FjaGUgc3RhdGU6IHRoZSByZW5kZXJlZFxuICogIGAubWRgIGVudHJpZXMgcGx1cyBhIGBtZXRhLmpzb25gIGhvbGRpbmcgdGhlIGV0YWcgZm9yIGNvbmRpdGlvbmFsXG4gKiAgR0VUcy4gRWFjaCBzZWN0aW9uIGdldHMgaXRzIG93biBzdWJkaXJlY3Rvcnkgb2YgYC5saXZlbWFyay8uY2FjaGUvY2hhbmdlbG9nL2AsXG4gKiAga2V5ZWQgYnkgaXRzIHByZWZpeCdzIHNsdWcgcGx1cyBhIGhhc2ggb2YgdGhlIHJhdyBwcmVmaXhcbiAqICAoYC9weXRob24vY2hhbmdlbG9nL2Ag4oaSIGBweXRob24tY2hhbmdlbG9nLTxoYXNoPmApLCBzbyBzZXZlcmFsXG4gKiAgY2hhbmdlbG9ncyBuZXZlciBvdmVyd3JpdGUgZWFjaCBvdGhlcidzIGVudHJpZXMgZXZlbiB3aGVuIHRoZWlyXG4gKiAgcHJlZml4ZXMgc2x1Z2lmeSBhbGlrZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2Vsb2dDYWNoZURpcihzZWN0aW9uOiBDaGFuZ2Vsb2dTZWN0aW9uLCBjb25maWc6IENvbmZpZykge1xuICBjb25zdCBzbHVnID0gc2x1Z2lmeShzZWN0aW9uLnByZWZpeCkgfHwgXCJpbmRleFwiXG4gIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShzZWN0aW9uLnByZWZpeCkuZGlnZXN0KFwiaGV4XCIpLnNsaWNlKDAsIDgpXG4gIHJldHVybiBqb2luKGNhY2hlRGlyRm9yKGNvbmZpZy5jb25maWdQYXRoKSwgXCJjaGFuZ2Vsb2dcIiwgYCR7c2x1Z30tJHtoYXNofWApXG59XG5cbi8qKiBCdWlsZCB0aGUgcGVyLXZlcnNpb24gY2hhbmdlbG9nIGNhY2hlIGZpbGVzIG9mIG9uZSBjaGFuZ2Vsb2cgc2VjdGlvblxuICogIGludG8gaXRzIG93biBjYWNoZSBkaXJlY3RvcnkuIE9uIHJlZnJlc2ggd2Ugd2lwZSBvbmx5IHRoYXRcbiAqICBkaXJlY3RvcnkncyBgLm1kYCBmaWxlcywgbGVhdmluZyBtZXRhIGludGFjdC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENoYW5nZWxvZyhzZWN0aW9uOiBDaGFuZ2Vsb2dTZWN0aW9uLCBjb25maWc6IENvbmZpZykge1xuICBjb25zdCBjYWNoZURpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHNlY3Rpb24sIGNvbmZpZylcbiAgY29uc3QgbWV0YVBhdGggPSBqb2luKGNhY2hlRGlyLCBcIm1ldGEuanNvblwiKVxuXG4gIGNvbnN0IGVudHJpZXMgPSBpc0dpdEh1YlVybChzZWN0aW9uLnNvdXJjZSlcbiAgICA/IGF3YWl0IGJ1aWxkRnJvbUdpdEh1YihzZWN0aW9uLnNvdXJjZSwgbWV0YVBhdGgsIGNhY2hlRGlyKVxuICAgIDogYXdhaXQgYnVpbGRGcm9tTG9jYWwoc2VjdGlvbi5zb3VyY2UsIGNvbmZpZy5yb290KVxuXG4gIGlmIChlbnRyaWVzID09PSB1bmRlZmluZWQpIHJldHVyblxuXG4gIGF3YWl0IG1rZGlyKGNhY2hlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICBhd2FpdCB3cml0ZUZpbGUoam9pbihjYWNoZURpckZvcihjb25maWcuY29uZmlnUGF0aCksIFwiLmdpdGlnbm9yZVwiKSwgXCIqXFxuXCIpXG4gIGZvciAoY29uc3QgZiBvZiBhd2FpdCByZWFkZGlyKGNhY2hlRGlyKS5jYXRjaCgoKSA9PiBbXSkpIHtcbiAgICBpZiAoZi5lbmRzV2l0aChcIi5tZFwiKSkgYXdhaXQgcm0oam9pbihjYWNoZURpciwgZiksIHsgZm9yY2U6IHRydWUgfSlcbiAgfVxuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGNvbnN0IG1hcmtkb3duID0gd3JhcEZyb250bWF0dGVyKGVudHJ5LCBzZWN0aW9uKVxuICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKGNhY2hlRGlyLCBgJHtlbnRyeS5zbHVnfS5tZGApLCBtYXJrZG93biwgXCJ1dGYtOFwiKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkRnJvbUxvY2FsKHNvdXJjZTogc3RyaW5nLCByb290OiBzdHJpbmcpIHtcbiAgY29uc3QgZmlsZVBhdGggPSByZXNvbHZlKHJvb3QsIHNvdXJjZSlcbiAgY29uc3QgYm9keSA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpXG4gIHJldHVybiBzcGxpdExvY2FsQ2hhbmdlbG9nKGJvZHkpXG59XG5cbi8qKiBQYXJzZSBDSEFOR0VMT0cubWQgaW50byBwZXItdmVyc2lvbiBlbnRyaWVzIHVzaW5nIG1kYXN0ICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRMb2NhbENoYW5nZWxvZyhib2R5OiBzdHJpbmcpOiBDaGFuZ2Vsb2dFbnRyeVtdIHtcbiAgY29uc3QgdHJlZSA9IHBhcnNlci5wYXJzZShib2R5KSBhcyBSb290XG4gIGNvbnN0IGVudHJpZXM6IENoYW5nZWxvZ0VudHJ5W10gPSBbXVxuICBsZXQgY3VycmVudDogeyBoZWFkaW5nOiBzdHJpbmc7IGNoaWxkcmVuOiBSb290Q29udGVudFtdIH0gfCB1bmRlZmluZWRcblxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRyZWUuY2hpbGRyZW4pIHtcbiAgICBpZiAoY2hpbGQudHlwZSA9PT0gXCJoZWFkaW5nXCIgJiYgY2hpbGQuZGVwdGggPT09IDIpIHtcbiAgICAgIGlmIChjdXJyZW50KSBlbnRyaWVzLnB1c2goZmluYWxpemVFbnRyeShjdXJyZW50KSlcbiAgICAgIGN1cnJlbnQgPSB7IGhlYWRpbmc6IG1kYXN0VG9TdHJpbmcoY2hpbGQpLCBjaGlsZHJlbjogW10gfVxuICAgIH0gZWxzZSBpZiAoY3VycmVudCkge1xuICAgICAgY3VycmVudC5jaGlsZHJlbi5wdXNoKGNoaWxkKVxuICAgIH1cbiAgfVxuICBpZiAoY3VycmVudCkgZW50cmllcy5wdXNoKGZpbmFsaXplRW50cnkoY3VycmVudCkpXG4gIHJldHVybiBlbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGZpbmFsaXplRW50cnkoaW5wdXQ6IHtcbiAgaGVhZGluZzogc3RyaW5nXG4gIGNoaWxkcmVuOiBSb290Q29udGVudFtdXG59KTogQ2hhbmdlbG9nRW50cnkge1xuICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSBpbnB1dC5oZWFkaW5nLm1hdGNoKC9eXFxbPyhbXlxcXVxcc10rKVxcXT8vKVxuICBjb25zdCB2ZXJzaW9uID0gdmVyc2lvbk1hdGNoPy5bMV0gPz8gaW5wdXQuaGVhZGluZ1xuICBjb25zdCBkYXRlTWF0Y2ggPSBpbnB1dC5oZWFkaW5nLm1hdGNoKC9cXGR7NH0tXFxkezJ9LVxcZHsyfS8pXG4gIGNvbnN0IGJvZHkgPSByZW5kZXJFbnRyeUJvZHkoaW5wdXQuY2hpbGRyZW4pXG4gIHJldHVybiB7XG4gICAgc2x1Zzogc2x1Z2lmeSh2ZXJzaW9uKSxcbiAgICB0aXRsZTogdmVyc2lvbixcbiAgICBkYXRlOiBkYXRlTWF0Y2g/LlswXSxcbiAgICBib2R5LFxuICB9XG59XG5cbi8qKiBTZXJpYWxpemUgYW4gZW50cnkncyBtZGFzdCBjaGlsZHJlbiBiYWNrIHRvIG1hcmtkb3duICovXG5mdW5jdGlvbiByZW5kZXJFbnRyeUJvZHkoY2hpbGRyZW46IFJvb3RDb250ZW50W10pIHtcbiAgY29uc3Qgcm9vdDogUm9vdCA9IHsgdHlwZTogXCJyb290XCIsIGNoaWxkcmVuIH1cbiAgcmV0dXJuIHN0cmluZ2lmaWVyLnN0cmluZ2lmeShyb290KS50cmltRW5kKClcbn1cblxuLyoqIERyb3AgdGhlIGJvZHkncyBsZWFkaW5nIGgxICh0eXBpY2FsbHkgdGhlIGNvbnZlbnRpb25hbC1jaGFuZ2Vsb2dcbiAqIGAjIDAuNy4yICgyMDI2LTA0LTI1KWAgYm9pbGVycGxhdGUgdGhhdCBkdXBsaWNhdGVzIHRoZSBhcnRpY2xlJ3MgdGl0bGUpLFxuICogc2hpZnQgaDLigJNoNiB1cCBieSBvbmUgc28gc3Vic2VjdGlvbiBoZWFkaW5ncyBiZWNvbWUgaDEgLyBoMiAvIOKApiwgYW5kXG4gKiBlc2NhcGUgc3RyYXkgYDxgIG91dHNpZGUgY29kZSBzbyBNRFggZG9lc24ndCBtaXN0YWtlIHRoZW0gZm9yIEpTWC4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NCb2R5KGJvZHk6IHN0cmluZykge1xuICBjb25zdCB0cmVlID0gcGFyc2VyLnBhcnNlKGJvZHkpIGFzIFJvb3RcbiAgdmlzaXQodHJlZSwgXCJoZWFkaW5nXCIsIG5vZGUgPT4ge1xuICAgIGlmIChub2RlLmRlcHRoID4gMSkgbm9kZS5kZXB0aCA9IChub2RlLmRlcHRoIC0gMSkgYXMgMSB8IDIgfCAzIHwgNCB8IDVcbiAgfSlcbiAgaWYgKHRyZWUuY2hpbGRyZW5bMF0/LnR5cGUgPT09IFwiaGVhZGluZ1wiICYmIHRyZWUuY2hpbGRyZW5bMF0uZGVwdGggPT09IDEpIHtcbiAgICB0cmVlLmNoaWxkcmVuLnNoaWZ0KClcbiAgfVxuICByZXR1cm4gZXNjYXBlTWR4QW5nbGVzKHN0cmluZ2lmaWVyLnN0cmluZ2lmeSh0cmVlKS50cmltRW5kKCkpXG59XG5cbi8qKiBFc2NhcGUgYDxgIHRvIGAmbHQ7YCBvdXRzaWRlIGZlbmNlZCBjb2RlIGJsb2NrcyBhbmQgaW5saW5lIGJhY2t0aWNrIHNwYW5zXG4gKiBzbyBjb21taXQgbWVzc2FnZXMgd2l0aCBwbGFjZWhvbGRlcnMgbGlrZSBgPHN1YmRpcj5gIGRvbid0IGdldCBwYXJzZWQgYXNcbiAqIEpTWCBieSBNRFguIFRoZSBlbnRpdHkgaXMgdXNlZCByYXRoZXIgdGhhbiBhIGBcXDxgIGJhY2tzbGFzaCBlc2NhcGUgYmVjYXVzZVxuICogTURYJ3MgSlNYLWF3YXJlIHBhcnNlciBkb2VzIG5vdCBob25vdXIgdGhlIGJhY2tzbGFzaCBhbmQgc3RpbGwgcmVhZHNcbiAqIGBcXDxuYW1lPmAgYXMgYW4gdW5jbG9zZWQgdGFnLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZU1keEFuZ2xlcyhtYXJrZG93bjogc3RyaW5nKSB7XG4gIGxldCBpbkZlbmNlID0gZmFsc2VcbiAgcmV0dXJuIG1hcmtkb3duXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLm1hcChsaW5lID0+IHtcbiAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCJgYGBcIikpIHtcbiAgICAgICAgaW5GZW5jZSA9ICFpbkZlbmNlXG4gICAgICAgIHJldHVybiBsaW5lXG4gICAgICB9XG4gICAgICBpZiAoaW5GZW5jZSkgcmV0dXJuIGxpbmVcbiAgICAgIHJldHVybiBsaW5lLnJlcGxhY2UoL2BbXmBdKmB8PC9nLCBtYXRjaCA9PiAobWF0Y2ggPT09IFwiPFwiID8gXCImbHQ7XCIgOiBtYXRjaCkpXG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKVxufVxuXG5hc3luYyBmdW5jdGlvbiBidWlsZEZyb21HaXRIdWIoXG4gIHNvdXJjZTogc3RyaW5nLFxuICBtZXRhUGF0aDogc3RyaW5nLFxuICBjYWNoZURpcjogc3RyaW5nLFxuKTogUHJvbWlzZTxDaGFuZ2Vsb2dFbnRyeVtdIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlR2l0SHViUmVwbyhzb3VyY2UpXG4gIGlmICghcGFyc2VkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgcGFyc2UgR2l0SHViIHJlcG8gZnJvbSBzb3VyY2U6ICR7c291cmNlfWApXG4gIH1cblxuICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8ke3BhcnNlZC5vd25lcn0vJHtwYXJzZWQucmVwb30vcmVsZWFzZXM/cGVyX3BhZ2U9MTAwYFxuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi92bmQuZ2l0aHViK2pzb25cIixcbiAgICBcIlgtR2l0SHViLUFwaS1WZXJzaW9uXCI6IFwiMjAyMi0xMS0yOFwiLFxuICB9XG5cbiAgY29uc3QgdG9rZW4gPSBwcm9jZXNzLmVudi5HSVRIVUJfVE9LRU5cbiAgaWYgKHRva2VuKSBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7dG9rZW59YFxuXG4gIGNvbnN0IG1ldGEgPSBhd2FpdCByZWFkTWV0YShtZXRhUGF0aClcbiAgY29uc3QgaGFzQ2FjaGUgPSBhd2FpdCBleGlzdHMoY2FjaGVEaXIpXG4gIGlmIChtZXRhICYmIGhhc0NhY2hlKSBoZWFkZXJzW1wiSWYtTm9uZS1NYXRjaFwiXSA9IG1ldGEuZXRhZ1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwgeyBoZWFkZXJzIH0pXG5cbiAgaWYgKHJlcy5zdGF0dXMgPT09IDMwNCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgY29uc3QgcmVtYWluaW5nID0gcmVzLmhlYWRlcnMuZ2V0KFwieC1yYXRlbGltaXQtcmVtYWluaW5nXCIpXG4gICAgY29uc3QgcmVzZXQgPSByZXMuaGVhZGVycy5nZXQoXCJ4LXJhdGVsaW1pdC1yZXNldFwiKVxuICAgIGNvbnN0IG1zZyA9IGBHaXRIdWIgQVBJICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH0gKHJhdGUtbGltaXQgcmVtYWluaW5nOiAke3JlbWFpbmluZyA/PyBcIj9cIn0sIHJlc2V0OiAke3Jlc2V0ID8/IFwiP1wifSlgXG4gICAgaWYgKGhhc0NhY2hlKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7bXNnfSDigJQgZmFsbGluZyBiYWNrIHRvIGNhY2hlZCBjaGFuZ2Vsb2dgKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKVxuICB9XG5cbiAgY29uc3QgcmVsZWFzZXMgPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgUmVsZWFzZVtdXG4gIGNvbnN0IGV0YWcgPSByZXMuaGVhZGVycy5nZXQoXCJldGFnXCIpXG4gIGlmIChldGFnKSB7XG4gICAgYXdhaXQgbWtkaXIoZGlybmFtZShtZXRhUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgYXdhaXQgd3JpdGVGaWxlKFxuICAgICAgbWV0YVBhdGgsXG4gICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgeyBldGFnLCBmZXRjaGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9IHNhdGlzZmllcyBDYWNoZU1ldGEsXG4gICAgICAgIG51bGwsXG4gICAgICAgIDIsXG4gICAgICApLFxuICAgICAgXCJ1dGYtOFwiLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlcy5tYXAocmVsZWFzZSA9PiAoe1xuICAgIHNsdWc6IHNsdWdpZnkocmVsZWFzZS50YWdfbmFtZSksXG4gICAgdGl0bGU6IHJlbGVhc2UudGFnX25hbWUsXG4gICAgZGF0ZTogcmVsZWFzZS5wdWJsaXNoZWRfYXQgPz8gdW5kZWZpbmVkLFxuICAgIGJvZHk6IChyZWxlYXNlLmJvZHkgPz8gXCJcIikudHJpbSgpLFxuICAgIHNvdXJjZVVybDogcmVsZWFzZS5odG1sX3VybCA/PyB1bmRlZmluZWQsXG4gIH0pKVxufVxuXG5mdW5jdGlvbiB3cmFwRnJvbnRtYXR0ZXIoZW50cnk6IENoYW5nZWxvZ0VudHJ5LCBzZWN0aW9uOiBDaGFuZ2Vsb2dTZWN0aW9uKSB7XG4gIGNvbnN0IGxpbmVzID0gW1wiLS0tXCIsIGB0aXRsZTogJHtlbnRyeS50aXRsZX1gLCBgcGF0aDogJHtzZWN0aW9uLnByZWZpeH0ke2VudHJ5LnNsdWd9L2BdXG4gIGlmIChlbnRyeS5kYXRlKSBsaW5lcy5wdXNoKGBkYXRlOiAke2VudHJ5LmRhdGV9YClcbiAgaWYgKGVudHJ5LnNvdXJjZVVybCkge1xuICAgIGxpbmVzLnB1c2goYHNvdXJjZVVybDogJHtlbnRyeS5zb3VyY2VVcmx9YCwgXCJzb3VyY2VBY3Rpb246IHZpZXdcIilcbiAgfVxuICBsaW5lcy5wdXNoKFwiLS0tXCIsIFwiXCIsIGAjICR7ZW50cnkudGl0bGV9YCwgXCJcIiwgcHJvY2Vzc0JvZHkoZW50cnkuYm9keSkpXG4gIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRNZXRhKG1ldGFQYXRoOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlTWV0YSB8IHVuZGVmaW5lZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJhdyA9IGF3YWl0IHJlYWRGaWxlKG1ldGFQYXRoLCBcInV0Zi04XCIpXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KSBhcyBDYWNoZU1ldGFcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4aXN0cyhwYXRoOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhY2Nlc3MocGF0aClcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl19
@@ -4,7 +4,7 @@ import { temporaryDirectoryTask } from "tempy";
4
4
  import { describe, expect, it } from "vite-plus/test";
5
5
  import { partitionBySection } from "../../helpers/section.js";
6
6
  import { Config } from "../../models/config.js";
7
- import { targetDirFor } from "../target/build.js";
7
+ import { cacheDirFor } from "../../helpers/target-dir.js";
8
8
  import { buildChangelog, cacheIncludeGlob, changelogCacheDir, escapeMdxAngles, splitLocalChangelog, } from "./build.js";
9
9
  describe("buildChangelog", () => {
10
10
  it("keeps several changelog sections apart when they share a version", () => temporaryDirectoryTask(async (root) => {
@@ -33,7 +33,7 @@ describe("buildChangelog", () => {
33
33
  await buildChangelog(python, config);
34
34
  const standardDir = changelogCacheDir(standard, config);
35
35
  const pythonDir = changelogCacheDir(python, config);
36
- const cacheRoot = join(targetDirFor(configPath), "cache/changelog");
36
+ const cacheRoot = join(cacheDirFor(configPath), "changelog");
37
37
  expect(dirname(standardDir)).toBe(cacheRoot);
38
38
  expect(dirname(pythonDir)).toBe(cacheRoot);
39
39
  expect(basename(standardDir)).toMatch(/^changelog-[0-9a-f]{8}$/);
@@ -61,7 +61,7 @@ describe("buildChangelog", () => {
61
61
  ]);
62
62
  }
63
63
  finally {
64
- await rm(targetDirFor(configPath), { recursive: true, force: true });
64
+ await rm(cacheDirFor(configPath), { recursive: true, force: true });
65
65
  }
66
66
  }));
67
67
  it("cleans only its own cache directory on rebuild", () => temporaryDirectoryTask(async (root) => {
@@ -92,7 +92,7 @@ describe("buildChangelog", () => {
92
92
  expect(await readdir(changelogCacheDir(python, config))).toEqual(["0-3-0.md"]);
93
93
  }
94
94
  finally {
95
- await rm(targetDirFor(configPath), { recursive: true, force: true });
95
+ await rm(cacheDirFor(configPath), { recursive: true, force: true });
96
96
  }
97
97
  }));
98
98
  it("keeps sections apart when their prefixes slugify to the same key", () => temporaryDirectoryTask(async (root) => {
@@ -124,7 +124,7 @@ describe("buildChangelog", () => {
124
124
  expect(await readdir(flatDir)).toEqual(["0-2-0.md"]);
125
125
  }
126
126
  finally {
127
- await rm(targetDirFor(configPath), { recursive: true, force: true });
127
+ await rm(cacheDirFor(configPath), { recursive: true, force: true });
128
128
  }
129
129
  }));
130
130
  });
@@ -217,4 +217,4 @@ async function writeChangelog(root, dir, body) {
217
217
  await mkdir(join(root, dir), { recursive: true });
218
218
  await writeFile(join(root, dir, "CHANGELOG.md"), body, "utf-8");
219
219
  }
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL2NoYW5nZWxvZy9idWlsZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsbUJBQW1CLEdBQ3BCLE1BQU0sWUFBWSxDQUFBO0FBRW5CLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRSxDQUMxRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7UUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sUUFBUSxHQUFxQjtZQUNqQyxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsV0FBVztZQUNsQixNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLE9B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Q0FBQyxDQUFDLENBQUMsSUFBSSxDQUMxRCw4QkFBOEIsQ0FDL0IsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtRQUN6QyxNQUFNLEtBQUssR0FBRyx1QkFBdUIsQ0FBQTtRQUNyQyxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVDLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUE7QUFFRixTQUFTLFVBQVUsQ0FBQyxJQUFZLEVBQUUsUUFBNEI7SUFDNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBQ25ELE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFBO0FBQzdFLENBQUM7QUFFRCxLQUFLLFVBQVUsY0FBYyxDQUFDLElBQVksRUFBRSxHQUFXLEVBQUUsSUFBWTtJQUNuRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDakQsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2RpciwgcmVhZEZpbGUsIHJlYWRkaXIsIHJtLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayB9IGZyb20gXCJ0ZW1weVwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyBwYXJ0aXRpb25CeVNlY3Rpb24gfSBmcm9tIFwiLi4vLi4vaGVscGVycy9zZWN0aW9uLnRzXCJcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uZmlnLnRzXCJcbmltcG9ydCB0eXBlIHsgQ2hhbmdlbG9nU2VjdGlvbiB9IGZyb20gXCIuLi8uLi9tb2RlbHMvc2VjdGlvbi50c1wiXG5pbXBvcnQgeyB0YXJnZXREaXJGb3IgfSBmcm9tIFwiLi4vdGFyZ2V0L2J1aWxkLnRzXCJcbmltcG9ydCB7XG4gIGJ1aWxkQ2hhbmdlbG9nLFxuICBjYWNoZUluY2x1ZGVHbG9iLFxuICBjaGFuZ2Vsb2dDYWNoZURpcixcbiAgZXNjYXBlTWR4QW5nbGVzLFxuICBzcGxpdExvY2FsQ2hhbmdlbG9nLFxufSBmcm9tIFwiLi9idWlsZC50c1wiXG5cbmRlc2NyaWJlKFwiYnVpbGRDaGFuZ2Vsb2dcIiwgKCkgPT4ge1xuICBpdChcImtlZXBzIHNldmVyYWwgY2hhbmdlbG9nIHNlY3Rpb25zIGFwYXJ0IHdoZW4gdGhleSBzaGFyZSBhIHZlcnNpb25cIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgICAgIGNvbnN0IHN0YW5kYXJkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9jaGFuZ2Vsb2cvXCIsXG4gICAgICAgIHNvdXJjZTogXCJzdGFuZGFyZC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgdmVyc2lvbjogdHJ1ZSxcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgcHl0aG9uOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwicHl0aG9uL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICB2ZXJzaW9uOiB0cnVlLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBjb25maWcgPSBtYWtlQ29uZmlnKHJvb3QsIFtzdGFuZGFyZCwgcHl0aG9uXSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2coXG4gICAgICAgIHJvb3QsXG4gICAgICAgIFwic3RhbmRhcmRcIixcbiAgICAgICAgXCIjIyAwLjIuMFxcblxcblN0YW5kYXJkIHR3by5cXG5cXG4jIyAwLjEuMFxcblxcblN0YW5kYXJkIG9uZS5cXG5cIixcbiAgICAgIClcbiAgICAgIGF3YWl0IHdyaXRlQ2hhbmdlbG9nKHJvb3QsIFwicHl0aG9uXCIsIFwiIyMgMC4yLjBcXG5cXG5QeXRob24gdHdvLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhzdGFuZGFyZCwgY29uZmlnKVxuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhweXRob24sIGNvbmZpZylcblxuICAgICAgICBjb25zdCBzdGFuZGFyZERpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHN0YW5kYXJkLCBjb25maWcpXG4gICAgICAgIGNvbnN0IHB5dGhvbkRpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHB5dGhvbiwgY29uZmlnKVxuICAgICAgICBjb25zdCBjYWNoZVJvb3QgPSBqb2luKHRhcmdldERpckZvcihjb25maWdQYXRoKSwgXCJjYWNoZS9jaGFuZ2Vsb2dcIilcbiAgICAgICAgZXhwZWN0KGRpcm5hbWUoc3RhbmRhcmREaXIpKS50b0JlKGNhY2hlUm9vdClcbiAgICAgICAgZXhwZWN0KGRpcm5hbWUocHl0aG9uRGlyKSkudG9CZShjYWNoZVJvb3QpXG4gICAgICAgIGV4cGVjdChiYXNlbmFtZShzdGFuZGFyZERpcikpLnRvTWF0Y2goL15jaGFuZ2Vsb2ctWzAtOWEtZl17OH0kLylcbiAgICAgICAgZXhwZWN0KGJhc2VuYW1lKHB5dGhvbkRpcikpLnRvTWF0Y2goL15weXRob24tY2hhbmdlbG9nLVswLTlhLWZdezh9JC8pXG4gICAgICAgIGV4cGVjdChjYWNoZUluY2x1ZGVHbG9iKHB5dGhvbiwgY29uZmlnKSkudG9CZShqb2luKHB5dGhvbkRpciwgXCIqLm1kXCIpKVxuXG4gICAgICAgIGV4cGVjdCgoYXdhaXQgcmVhZGRpcihzdGFuZGFyZERpcikpLnNvcnQoKSkudG9FcXVhbChbXCIwLTEtMC5tZFwiLCBcIjAtMi0wLm1kXCJdKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihweXRob25EaXIpKS50b0VxdWFsKFtcIjAtMi0wLm1kXCJdKVxuXG4gICAgICAgIGNvbnN0IHN0YW5kYXJkRW50cnkgPSBhd2FpdCByZWFkRmlsZShqb2luKHN0YW5kYXJkRGlyLCBcIjAtMi0wLm1kXCIpLCBcInV0Zi04XCIpXG4gICAgICAgIGNvbnN0IHB5dGhvbkVudHJ5ID0gYXdhaXQgcmVhZEZpbGUoam9pbihweXRob25EaXIsIFwiMC0yLTAubWRcIiksIFwidXRmLThcIilcbiAgICAgICAgZXhwZWN0KHN0YW5kYXJkRW50cnkpLnRvQ29udGFpbihcInBhdGg6IC9jaGFuZ2Vsb2cvMC0yLTAvXCIpXG4gICAgICAgIGV4cGVjdChzdGFuZGFyZEVudHJ5KS50b0NvbnRhaW4oXCJTdGFuZGFyZCB0d28uXCIpXG4gICAgICAgIGV4cGVjdChweXRob25FbnRyeSkudG9Db250YWluKFwicGF0aDogL3B5dGhvbi9jaGFuZ2Vsb2cvMC0yLTAvXCIpXG4gICAgICAgIGV4cGVjdChweXRob25FbnRyeSkudG9Db250YWluKFwiUHl0aG9uIHR3by5cIilcblxuICAgICAgICBjb25zdCBvbGRlckVudHJ5ID0gYXdhaXQgcmVhZEZpbGUoam9pbihzdGFuZGFyZERpciwgXCIwLTEtMC5tZFwiKSwgXCJ1dGYtOFwiKVxuICAgICAgICBjb25zdCBhcnRpY2xlcyA9IFtzdGFuZGFyZEVudHJ5LCBvbGRlckVudHJ5LCBweXRob25FbnRyeV0ubWFwKG1hcmtkb3duID0+ICh7XG4gICAgICAgICAgcGF0aDogbWFya2Rvd24ubWF0Y2goL15wYXRoOiAoLispJC9tKT8uWzFdID8/IFwiXCIsXG4gICAgICAgIH0pKVxuICAgICAgICBjb25zdCBidWNrZXRzID0gcGFydGl0aW9uQnlTZWN0aW9uKGFydGljbGVzLCBbc3RhbmRhcmQsIHB5dGhvbl0pXG4gICAgICAgIGV4cGVjdChidWNrZXRzLmdldChcIi9jaGFuZ2Vsb2cvXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgICAgICBcIi9jaGFuZ2Vsb2cvMC0yLTAvXCIsXG4gICAgICAgICAgXCIvY2hhbmdlbG9nLzAtMS0wL1wiLFxuICAgICAgICBdKVxuICAgICAgICBleHBlY3QoYnVja2V0cy5nZXQoXCIvcHl0aG9uL2NoYW5nZWxvZy9cIik/Lm1hcChhID0+IGEucGF0aCkpLnRvRXF1YWwoW1xuICAgICAgICAgIFwiL3B5dGhvbi9jaGFuZ2Vsb2cvMC0yLTAvXCIsXG4gICAgICAgIF0pXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBhd2FpdCBybSh0YXJnZXREaXJGb3IoY29uZmlnUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0pKVxuXG4gIGl0KFwiY2xlYW5zIG9ubHkgaXRzIG93biBjYWNoZSBkaXJlY3Rvcnkgb24gcmVidWlsZFwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihyb290LCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICAgICAgY29uc3Qgc3RhbmRhcmQ6IENoYW5nZWxvZ1NlY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IFwiY2hhbmdlbG9nXCIsXG4gICAgICAgIHRpdGxlOiBcIkNoYW5nZWxvZ1wiLFxuICAgICAgICBwcmVmaXg6IFwiL2NoYW5nZWxvZy9cIixcbiAgICAgICAgc291cmNlOiBcInN0YW5kYXJkL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBweXRob246IENoYW5nZWxvZ1NlY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IFwiY2hhbmdlbG9nXCIsXG4gICAgICAgIHRpdGxlOiBcIkNoYW5nZWxvZ1wiLFxuICAgICAgICBwcmVmaXg6IFwiL3B5dGhvbi9jaGFuZ2Vsb2cvXCIsXG4gICAgICAgIHNvdXJjZTogXCJweXRob24vQ0hBTkdFTE9HLm1kXCIsXG4gICAgICAgIHBvc2l0aW9uOiBcInNpZGViYXJcIixcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbmZpZyA9IG1ha2VDb25maWcocm9vdCwgW3N0YW5kYXJkLCBweXRob25dKVxuXG4gICAgICBhd2FpdCB3cml0ZUNoYW5nZWxvZyhyb290LCBcInN0YW5kYXJkXCIsIFwiIyMgMC4yLjBcXG5cXG5TdGFuZGFyZCB0d28uXFxuXCIpXG4gICAgICBhd2FpdCB3cml0ZUNoYW5nZWxvZyhyb290LCBcInB5dGhvblwiLCBcIiMjIDAuMy4wXFxuXFxuUHl0aG9uIHRocmVlLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhzdGFuZGFyZCwgY29uZmlnKVxuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhweXRob24sIGNvbmZpZylcbiAgICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJzdGFuZGFyZFwiLCBcIiMjIDAuNC4wXFxuXFxuU3RhbmRhcmQgZm91ci5cXG5cIilcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coc3RhbmRhcmQsIGNvbmZpZylcblxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihjaGFuZ2Vsb2dDYWNoZURpcihzdGFuZGFyZCwgY29uZmlnKSkpLnRvRXF1YWwoW1wiMC00LTAubWRcIl0pXG4gICAgICAgIGV4cGVjdChhd2FpdCByZWFkZGlyKGNoYW5nZWxvZ0NhY2hlRGlyKHB5dGhvbiwgY29uZmlnKSkpLnRvRXF1YWwoW1wiMC0zLTAubWRcIl0pXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBhd2FpdCBybSh0YXJnZXREaXJGb3IoY29uZmlnUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0pKVxuXG4gIGl0KFwia2VlcHMgc2VjdGlvbnMgYXBhcnQgd2hlbiB0aGVpciBwcmVmaXhlcyBzbHVnaWZ5IHRvIHRoZSBzYW1lIGtleVwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihyb290LCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICAgICAgY29uc3QgbmVzdGVkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwibmVzdGVkL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBmbGF0OiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24tY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwiZmxhdC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgY29uZmlnID0gbWFrZUNvbmZpZyhyb290LCBbbmVzdGVkLCBmbGF0XSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJuZXN0ZWRcIiwgXCIjIyAwLjEuMFxcblxcbk5lc3RlZCBvbmUuXFxuXCIpXG4gICAgICBhd2FpdCB3cml0ZUNoYW5nZWxvZyhyb290LCBcImZsYXRcIiwgXCIjIyAwLjIuMFxcblxcbkZsYXQgdHdvLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhuZXN0ZWQsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coZmxhdCwgY29uZmlnKVxuXG4gICAgICAgIGNvbnN0IG5lc3RlZERpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKG5lc3RlZCwgY29uZmlnKVxuICAgICAgICBjb25zdCBmbGF0RGlyID0gY2hhbmdlbG9nQ2FjaGVEaXIoZmxhdCwgY29uZmlnKVxuICAgICAgICBleHBlY3QobmVzdGVkRGlyKS5ub3QudG9CZShmbGF0RGlyKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihuZXN0ZWREaXIpKS50b0VxdWFsKFtcIjAtMS0wLm1kXCJdKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihmbGF0RGlyKSkudG9FcXVhbChbXCIwLTItMC5tZFwiXSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHJtKHRhcmdldERpckZvcihjb25maWdQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG4gICAgICB9XG4gICAgfSkpXG59KVxuXG5kZXNjcmliZShcInNwbGl0TG9jYWxDaGFuZ2Vsb2dcIiwgKCkgPT4ge1xuICBpdChcInNwbGl0cyBieSBoMiBoZWFkaW5nc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBgIyBDaGFuZ2Vsb2dcblxuIyMgWzAuMi4wXSAtIDIwMjYtMDQtMTVcblxuIyMjIEFkZGVkXG5cbi0gRm9vXG5cbiMjIFswLjEuMF0gLSAyMDI2LTA0LTEwXG5cbkluaXRpYWwgcmVsZWFzZS5cbmBcbiAgICBjb25zdCBlbnRyaWVzID0gc3BsaXRMb2NhbENoYW5nZWxvZyhpbnB1dClcbiAgICBleHBlY3QoZW50cmllcykudG9IYXZlTGVuZ3RoKDIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LnRpdGxlKS50b0JlKFwiMC4yLjBcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uZGF0ZSkudG9CZShcIjIwMjYtMDQtMTVcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uc2x1ZykudG9CZShcIjAtMi0wXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMV0/LnRpdGxlKS50b0JlKFwiMC4xLjBcIilcbiAgICBleHBlY3QoZW50cmllc1sxXT8uZGF0ZSkudG9CZShcIjIwMjYtMDQtMTBcIilcbiAgfSlcblxuICBpdChcInByZXNlcnZlcyBoMyBoZWFkaW5nIHN0cnVjdHVyZSBpbiBib2R5XCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IGAjIyAxLjAuMFxuXG4jIyMgQWRkZWRcblxuLSBUaGluZyBvbmVcbmBcbiAgICBjb25zdCBlbnRyaWVzID0gc3BsaXRMb2NhbENoYW5nZWxvZyhpbnB1dClcbiAgICBleHBlY3QoZW50cmllc1swXT8uYm9keSkudG9Db250YWluKFwiIyMjIEFkZGVkXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LmJvZHkpLnRvQ29udGFpbihcIi0gVGhpbmcgb25lXCIpXG4gIH0pXG5cbiAgaXQoXCJpZ25vcmVzICMjIGluc2lkZSBmZW5jZWQgY29kZSBibG9ja3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYCMjIDEuMC4wXG5cblNvbWUgcHJvc2UuXG5cblxcYFxcYFxcYG1kXG4jIyBOb3QgYSByZWFsIHZlcnNpb24gaGVhZGluZ1xuXFxgXFxgXFxgXG5cbiMjIDAuOS4wXG5cbk9sZGVyLlxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzKS50b0hhdmVMZW5ndGgoMilcbiAgICBleHBlY3QoZW50cmllc1swXT8udGl0bGUpLnRvQmUoXCIxLjAuMFwiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5ib2R5KS50b0NvbnRhaW4oXCJOb3QgYSByZWFsIHZlcnNpb24gaGVhZGluZ1wiKVxuICAgIGV4cGVjdChlbnRyaWVzWzFdPy50aXRsZSkudG9CZShcIjAuOS4wXCIpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIGJhcmUgdmVyc2lvbiBoZWFkaW5ncyB3aXRob3V0IGJyYWNrZXRzIG9yIGRhdGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYCMjIHYxLjIuM1xuXG5SZWxlYXNlIG5vdGVzLlxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy50aXRsZSkudG9CZShcInYxLjIuM1wiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5zbHVnKS50b0JlKFwidjEtMi0zXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LmRhdGUpLnRvQmVVbmRlZmluZWQoKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJlc2NhcGVNZHhBbmdsZXNcIiwgKCkgPT4ge1xuICBpdChcImVzY2FwZXMgYSBiYXJlIGFuZ2xlIHBsYWNlaG9sZGVyIGFzIGFuIEhUTUwgZW50aXR5XCIsICgpID0+IHtcbiAgICAvLyBgXFw8YCBpcyBob25vdXJlZCBieSByZW1hcmsgYnV0IE5PVCBieSBNRFgncyBKU1gtYXdhcmUgcGFyc2VyLCB3aGljaCBzdGlsbFxuICAgIC8vIHJlYWRzIGBcXDxuYW1lPmAgYXMgYW4gdW5jbG9zZWQgdGFnLiBPbmx5IHRoZSBlbnRpdHkgc3Vydml2ZXMgYm90aC5cbiAgICBleHBlY3QoZXNjYXBlTWR4QW5nbGVzKFwiYSA8bmFtZT4gYlwiKSkudG9CZShcImEgJmx0O25hbWU+IGJcIilcbiAgfSlcblxuICBpdChcImVzY2FwZXMgYSBwbGFjZWhvbGRlciB0aGF0IGZvbGxvd3MgYSBiYXJlIFVSTFwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlNlZSBodHRwczovL2ZhaXJzcGVjLm9yZy9wcm9maWxlcy9sYXRlc3QvPG5hbWU+Lmpzb24sIG9rLlwiXG4gICAgZXhwZWN0KGVzY2FwZU1keEFuZ2xlcyhpbnB1dCkpLnRvQmUoXG4gICAgICBcIlNlZSBodHRwczovL2ZhaXJzcGVjLm9yZy9wcm9maWxlcy9sYXRlc3QvJmx0O25hbWU+Lmpzb24sIG9rLlwiLFxuICAgIClcbiAgfSlcblxuICBpdChcImxlYXZlcyBpbmxpbmUgY29kZSBzcGFucyBhbG9uZVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGVzY2FwZU1keEFuZ2xlcyhcInVzZSBgLS1yZXNvdXJjZSA8bmFtZT5gIGhlcmVcIikpLnRvQmUoXG4gICAgICBcInVzZSBgLS1yZXNvdXJjZSA8bmFtZT5gIGhlcmVcIixcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJsZWF2ZXMgZmVuY2VkIGNvZGUgYmxvY2tzIGFsb25lXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IFwiYGBgc2hcXG5mb28gPGJhcj5cXG5gYGBcIlxuICAgIGV4cGVjdChlc2NhcGVNZHhBbmdsZXMoaW5wdXQpKS50b0JlKGlucHV0KVxuICB9KVxufSlcblxuZnVuY3Rpb24gbWFrZUNvbmZpZyhyb290OiBzdHJpbmcsIHNlY3Rpb25zOiBDaGFuZ2Vsb2dTZWN0aW9uW10pIHtcbiAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgcmV0dXJuIHsgLi4uQ29uZmlnLnBhcnNlKHsgcm9vdCwgY29uZmlnUGF0aCwgc2VjdGlvbnMgfSksIGJhc2U6IHVuZGVmaW5lZCB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ2hhbmdlbG9nKHJvb3Q6IHN0cmluZywgZGlyOiBzdHJpbmcsIGJvZHk6IHN0cmluZykge1xuICBhd2FpdCBta2Rpcihqb2luKHJvb3QsIGRpciksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIGF3YWl0IHdyaXRlRmlsZShqb2luKHJvb3QsIGRpciwgXCJDSEFOR0VMT0cubWRcIiksIGJvZHksIFwidXRmLThcIilcbn1cbiJdfQ==
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL2NoYW5nZWxvZy9idWlsZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3pELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsbUJBQW1CLEdBQ3BCLE1BQU0sWUFBWSxDQUFBO0FBRW5CLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRSxDQUMxRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7UUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sUUFBUSxHQUFxQjtZQUNqQyxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsV0FBVztZQUNsQixNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLE9B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QUMsQ0FBQyxDQUFDLElBQUksQ0FDMUQsOEJBQThCLENBQy9CLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLEVBQUU7UUFDekMsTUFBTSxLQUFLLEdBQUcsdUJBQXVCLENBQUE7UUFDckMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM1QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLFFBQTRCO0lBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtJQUNuRCxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtBQUM3RSxDQUFDO0FBRUQsS0FBSyxVQUFVLGNBQWMsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLElBQVk7SUFDbkUsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCByZWFkZGlyLCBybSwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIlxuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHRlbXBvcmFyeURpcmVjdG9yeVRhc2sgfSBmcm9tIFwidGVtcHlcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgcGFydGl0aW9uQnlTZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgdHlwZSB7IENoYW5nZWxvZ1NlY3Rpb24gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuaW1wb3J0IHsgY2FjaGVEaXJGb3IgfSBmcm9tIFwiLi4vLi4vaGVscGVycy90YXJnZXQtZGlyLnRzXCJcbmltcG9ydCB7XG4gIGJ1aWxkQ2hhbmdlbG9nLFxuICBjYWNoZUluY2x1ZGVHbG9iLFxuICBjaGFuZ2Vsb2dDYWNoZURpcixcbiAgZXNjYXBlTWR4QW5nbGVzLFxuICBzcGxpdExvY2FsQ2hhbmdlbG9nLFxufSBmcm9tIFwiLi9idWlsZC50c1wiXG5cbmRlc2NyaWJlKFwiYnVpbGRDaGFuZ2Vsb2dcIiwgKCkgPT4ge1xuICBpdChcImtlZXBzIHNldmVyYWwgY2hhbmdlbG9nIHNlY3Rpb25zIGFwYXJ0IHdoZW4gdGhleSBzaGFyZSBhIHZlcnNpb25cIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgICAgIGNvbnN0IHN0YW5kYXJkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9jaGFuZ2Vsb2cvXCIsXG4gICAgICAgIHNvdXJjZTogXCJzdGFuZGFyZC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgdmVyc2lvbjogdHJ1ZSxcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgcHl0aG9uOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwicHl0aG9uL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICB2ZXJzaW9uOiB0cnVlLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBjb25maWcgPSBtYWtlQ29uZmlnKHJvb3QsIFtzdGFuZGFyZCwgcHl0aG9uXSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2coXG4gICAgICAgIHJvb3QsXG4gICAgICAgIFwic3RhbmRhcmRcIixcbiAgICAgICAgXCIjIyAwLjIuMFxcblxcblN0YW5kYXJkIHR3by5cXG5cXG4jIyAwLjEuMFxcblxcblN0YW5kYXJkIG9uZS5cXG5cIixcbiAgICAgIClcbiAgICAgIGF3YWl0IHdyaXRlQ2hhbmdlbG9nKHJvb3QsIFwicHl0aG9uXCIsIFwiIyMgMC4yLjBcXG5cXG5QeXRob24gdHdvLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhzdGFuZGFyZCwgY29uZmlnKVxuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhweXRob24sIGNvbmZpZylcblxuICAgICAgICBjb25zdCBzdGFuZGFyZERpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHN0YW5kYXJkLCBjb25maWcpXG4gICAgICAgIGNvbnN0IHB5dGhvbkRpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHB5dGhvbiwgY29uZmlnKVxuICAgICAgICBjb25zdCBjYWNoZVJvb3QgPSBqb2luKGNhY2hlRGlyRm9yKGNvbmZpZ1BhdGgpLCBcImNoYW5nZWxvZ1wiKVxuICAgICAgICBleHBlY3QoZGlybmFtZShzdGFuZGFyZERpcikpLnRvQmUoY2FjaGVSb290KVxuICAgICAgICBleHBlY3QoZGlybmFtZShweXRob25EaXIpKS50b0JlKGNhY2hlUm9vdClcbiAgICAgICAgZXhwZWN0KGJhc2VuYW1lKHN0YW5kYXJkRGlyKSkudG9NYXRjaCgvXmNoYW5nZWxvZy1bMC05YS1mXXs4fSQvKVxuICAgICAgICBleHBlY3QoYmFzZW5hbWUocHl0aG9uRGlyKSkudG9NYXRjaCgvXnB5dGhvbi1jaGFuZ2Vsb2ctWzAtOWEtZl17OH0kLylcbiAgICAgICAgZXhwZWN0KGNhY2hlSW5jbHVkZUdsb2IocHl0aG9uLCBjb25maWcpKS50b0JlKGpvaW4ocHl0aG9uRGlyLCBcIioubWRcIikpXG5cbiAgICAgICAgZXhwZWN0KChhd2FpdCByZWFkZGlyKHN0YW5kYXJkRGlyKSkuc29ydCgpKS50b0VxdWFsKFtcIjAtMS0wLm1kXCIsIFwiMC0yLTAubWRcIl0pXG4gICAgICAgIGV4cGVjdChhd2FpdCByZWFkZGlyKHB5dGhvbkRpcikpLnRvRXF1YWwoW1wiMC0yLTAubWRcIl0pXG5cbiAgICAgICAgY29uc3Qgc3RhbmRhcmRFbnRyeSA9IGF3YWl0IHJlYWRGaWxlKGpvaW4oc3RhbmRhcmREaXIsIFwiMC0yLTAubWRcIiksIFwidXRmLThcIilcbiAgICAgICAgY29uc3QgcHl0aG9uRW50cnkgPSBhd2FpdCByZWFkRmlsZShqb2luKHB5dGhvbkRpciwgXCIwLTItMC5tZFwiKSwgXCJ1dGYtOFwiKVxuICAgICAgICBleHBlY3Qoc3RhbmRhcmRFbnRyeSkudG9Db250YWluKFwicGF0aDogL2NoYW5nZWxvZy8wLTItMC9cIilcbiAgICAgICAgZXhwZWN0KHN0YW5kYXJkRW50cnkpLnRvQ29udGFpbihcIlN0YW5kYXJkIHR3by5cIilcbiAgICAgICAgZXhwZWN0KHB5dGhvbkVudHJ5KS50b0NvbnRhaW4oXCJwYXRoOiAvcHl0aG9uL2NoYW5nZWxvZy8wLTItMC9cIilcbiAgICAgICAgZXhwZWN0KHB5dGhvbkVudHJ5KS50b0NvbnRhaW4oXCJQeXRob24gdHdvLlwiKVxuXG4gICAgICAgIGNvbnN0IG9sZGVyRW50cnkgPSBhd2FpdCByZWFkRmlsZShqb2luKHN0YW5kYXJkRGlyLCBcIjAtMS0wLm1kXCIpLCBcInV0Zi04XCIpXG4gICAgICAgIGNvbnN0IGFydGljbGVzID0gW3N0YW5kYXJkRW50cnksIG9sZGVyRW50cnksIHB5dGhvbkVudHJ5XS5tYXAobWFya2Rvd24gPT4gKHtcbiAgICAgICAgICBwYXRoOiBtYXJrZG93bi5tYXRjaCgvXnBhdGg6ICguKykkL20pPy5bMV0gPz8gXCJcIixcbiAgICAgICAgfSkpXG4gICAgICAgIGNvbnN0IGJ1Y2tldHMgPSBwYXJ0aXRpb25CeVNlY3Rpb24oYXJ0aWNsZXMsIFtzdGFuZGFyZCwgcHl0aG9uXSlcbiAgICAgICAgZXhwZWN0KGJ1Y2tldHMuZ2V0KFwiL2NoYW5nZWxvZy9cIik/Lm1hcChhID0+IGEucGF0aCkpLnRvRXF1YWwoW1xuICAgICAgICAgIFwiL2NoYW5nZWxvZy8wLTItMC9cIixcbiAgICAgICAgICBcIi9jaGFuZ2Vsb2cvMC0xLTAvXCIsXG4gICAgICAgIF0pXG4gICAgICAgIGV4cGVjdChidWNrZXRzLmdldChcIi9weXRob24vY2hhbmdlbG9nL1wiKT8ubWFwKGEgPT4gYS5wYXRoKSkudG9FcXVhbChbXG4gICAgICAgICAgXCIvcHl0aG9uL2NoYW5nZWxvZy8wLTItMC9cIixcbiAgICAgICAgXSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHJtKGNhY2hlRGlyRm9yKGNvbmZpZ1BhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9KSlcblxuICBpdChcImNsZWFucyBvbmx5IGl0cyBvd24gY2FjaGUgZGlyZWN0b3J5IG9uIHJlYnVpbGRcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgICAgIGNvbnN0IHN0YW5kYXJkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9jaGFuZ2Vsb2cvXCIsXG4gICAgICAgIHNvdXJjZTogXCJzdGFuZGFyZC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgcHl0aG9uOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwicHl0aG9uL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBjb25maWcgPSBtYWtlQ29uZmlnKHJvb3QsIFtzdGFuZGFyZCwgcHl0aG9uXSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJzdGFuZGFyZFwiLCBcIiMjIDAuMi4wXFxuXFxuU3RhbmRhcmQgdHdvLlxcblwiKVxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJweXRob25cIiwgXCIjIyAwLjMuMFxcblxcblB5dGhvbiB0aHJlZS5cXG5cIilcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coc3RhbmRhcmQsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2cocHl0aG9uLCBjb25maWcpXG4gICAgICAgIGF3YWl0IHdyaXRlQ2hhbmdlbG9nKHJvb3QsIFwic3RhbmRhcmRcIiwgXCIjIyAwLjQuMFxcblxcblN0YW5kYXJkIGZvdXIuXFxuXCIpXG4gICAgICAgIGF3YWl0IGJ1aWxkQ2hhbmdlbG9nKHN0YW5kYXJkLCBjb25maWcpXG5cbiAgICAgICAgZXhwZWN0KGF3YWl0IHJlYWRkaXIoY2hhbmdlbG9nQ2FjaGVEaXIoc3RhbmRhcmQsIGNvbmZpZykpKS50b0VxdWFsKFtcIjAtNC0wLm1kXCJdKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihjaGFuZ2Vsb2dDYWNoZURpcihweXRob24sIGNvbmZpZykpKS50b0VxdWFsKFtcIjAtMy0wLm1kXCJdKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgcm0oY2FjaGVEaXJGb3IoY29uZmlnUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0pKVxuXG4gIGl0KFwia2VlcHMgc2VjdGlvbnMgYXBhcnQgd2hlbiB0aGVpciBwcmVmaXhlcyBzbHVnaWZ5IHRvIHRoZSBzYW1lIGtleVwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihyb290LCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICAgICAgY29uc3QgbmVzdGVkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwibmVzdGVkL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBmbGF0OiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24tY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwiZmxhdC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgY29uZmlnID0gbWFrZUNvbmZpZyhyb290LCBbbmVzdGVkLCBmbGF0XSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJuZXN0ZWRcIiwgXCIjIyAwLjEuMFxcblxcbk5lc3RlZCBvbmUuXFxuXCIpXG4gICAgICBhd2FpdCB3cml0ZUNoYW5nZWxvZyhyb290LCBcImZsYXRcIiwgXCIjIyAwLjIuMFxcblxcbkZsYXQgdHdvLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhuZXN0ZWQsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coZmxhdCwgY29uZmlnKVxuXG4gICAgICAgIGNvbnN0IG5lc3RlZERpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKG5lc3RlZCwgY29uZmlnKVxuICAgICAgICBjb25zdCBmbGF0RGlyID0gY2hhbmdlbG9nQ2FjaGVEaXIoZmxhdCwgY29uZmlnKVxuICAgICAgICBleHBlY3QobmVzdGVkRGlyKS5ub3QudG9CZShmbGF0RGlyKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihuZXN0ZWREaXIpKS50b0VxdWFsKFtcIjAtMS0wLm1kXCJdKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihmbGF0RGlyKSkudG9FcXVhbChbXCIwLTItMC5tZFwiXSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHJtKGNhY2hlRGlyRm9yKGNvbmZpZ1BhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9KSlcbn0pXG5cbmRlc2NyaWJlKFwic3BsaXRMb2NhbENoYW5nZWxvZ1wiLCAoKSA9PiB7XG4gIGl0KFwic3BsaXRzIGJ5IGgyIGhlYWRpbmdzXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IGAjIENoYW5nZWxvZ1xuXG4jIyBbMC4yLjBdIC0gMjAyNi0wNC0xNVxuXG4jIyMgQWRkZWRcblxuLSBGb29cblxuIyMgWzAuMS4wXSAtIDIwMjYtMDQtMTBcblxuSW5pdGlhbCByZWxlYXNlLlxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzKS50b0hhdmVMZW5ndGgoMilcbiAgICBleHBlY3QoZW50cmllc1swXT8udGl0bGUpLnRvQmUoXCIwLjIuMFwiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5kYXRlKS50b0JlKFwiMjAyNi0wNC0xNVwiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5zbHVnKS50b0JlKFwiMC0yLTBcIilcbiAgICBleHBlY3QoZW50cmllc1sxXT8udGl0bGUpLnRvQmUoXCIwLjEuMFwiKVxuICAgIGV4cGVjdChlbnRyaWVzWzFdPy5kYXRlKS50b0JlKFwiMjAyNi0wNC0xMFwiKVxuICB9KVxuXG4gIGl0KFwicHJlc2VydmVzIGgzIGhlYWRpbmcgc3RydWN0dXJlIGluIGJvZHlcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYCMjIDEuMC4wXG5cbiMjIyBBZGRlZFxuXG4tIFRoaW5nIG9uZVxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5ib2R5KS50b0NvbnRhaW4oXCIjIyMgQWRkZWRcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uYm9keSkudG9Db250YWluKFwiLSBUaGluZyBvbmVcIilcbiAgfSlcblxuICBpdChcImlnbm9yZXMgIyMgaW5zaWRlIGZlbmNlZCBjb2RlIGJsb2Nrc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBgIyMgMS4wLjBcblxuU29tZSBwcm9zZS5cblxuXFxgXFxgXFxgbWRcbiMjIE5vdCBhIHJlYWwgdmVyc2lvbiBoZWFkaW5nXG5cXGBcXGBcXGBcblxuIyMgMC45LjBcblxuT2xkZXIuXG5gXG4gICAgY29uc3QgZW50cmllcyA9IHNwbGl0TG9jYWxDaGFuZ2Vsb2coaW5wdXQpXG4gICAgZXhwZWN0KGVudHJpZXMpLnRvSGF2ZUxlbmd0aCgyKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy50aXRsZSkudG9CZShcIjEuMC4wXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LmJvZHkpLnRvQ29udGFpbihcIk5vdCBhIHJlYWwgdmVyc2lvbiBoZWFkaW5nXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMV0/LnRpdGxlKS50b0JlKFwiMC45LjBcIilcbiAgfSlcblxuICBpdChcImhhbmRsZXMgYmFyZSB2ZXJzaW9uIGhlYWRpbmdzIHdpdGhvdXQgYnJhY2tldHMgb3IgZGF0ZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBgIyMgdjEuMi4zXG5cblJlbGVhc2Ugbm90ZXMuXG5gXG4gICAgY29uc3QgZW50cmllcyA9IHNwbGl0TG9jYWxDaGFuZ2Vsb2coaW5wdXQpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LnRpdGxlKS50b0JlKFwidjEuMi4zXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LnNsdWcpLnRvQmUoXCJ2MS0yLTNcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uZGF0ZSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG59KVxuXG5kZXNjcmliZShcImVzY2FwZU1keEFuZ2xlc1wiLCAoKSA9PiB7XG4gIGl0KFwiZXNjYXBlcyBhIGJhcmUgYW5nbGUgcGxhY2Vob2xkZXIgYXMgYW4gSFRNTCBlbnRpdHlcIiwgKCkgPT4ge1xuICAgIC8vIGBcXDxgIGlzIGhvbm91cmVkIGJ5IHJlbWFyayBidXQgTk9UIGJ5IE1EWCdzIEpTWC1hd2FyZSBwYXJzZXIsIHdoaWNoIHN0aWxsXG4gICAgLy8gcmVhZHMgYFxcPG5hbWU+YCBhcyBhbiB1bmNsb3NlZCB0YWcuIE9ubHkgdGhlIGVudGl0eSBzdXJ2aXZlcyBib3RoLlxuICAgIGV4cGVjdChlc2NhcGVNZHhBbmdsZXMoXCJhIDxuYW1lPiBiXCIpKS50b0JlKFwiYSAmbHQ7bmFtZT4gYlwiKVxuICB9KVxuXG4gIGl0KFwiZXNjYXBlcyBhIHBsYWNlaG9sZGVyIHRoYXQgZm9sbG93cyBhIGJhcmUgVVJMXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IFwiU2VlIGh0dHBzOi8vZmFpcnNwZWMub3JnL3Byb2ZpbGVzL2xhdGVzdC88bmFtZT4uanNvbiwgb2suXCJcbiAgICBleHBlY3QoZXNjYXBlTWR4QW5nbGVzKGlucHV0KSkudG9CZShcbiAgICAgIFwiU2VlIGh0dHBzOi8vZmFpcnNwZWMub3JnL3Byb2ZpbGVzL2xhdGVzdC8mbHQ7bmFtZT4uanNvbiwgb2suXCIsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwibGVhdmVzIGlubGluZSBjb2RlIHNwYW5zIGFsb25lXCIsICgpID0+IHtcbiAgICBleHBlY3QoZXNjYXBlTWR4QW5nbGVzKFwidXNlIGAtLXJlc291cmNlIDxuYW1lPmAgaGVyZVwiKSkudG9CZShcbiAgICAgIFwidXNlIGAtLXJlc291cmNlIDxuYW1lPmAgaGVyZVwiLFxuICAgIClcbiAgfSlcblxuICBpdChcImxlYXZlcyBmZW5jZWQgY29kZSBibG9ja3MgYWxvbmVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gXCJgYGBzaFxcbmZvbyA8YmFyPlxcbmBgYFwiXG4gICAgZXhwZWN0KGVzY2FwZU1keEFuZ2xlcyhpbnB1dCkpLnRvQmUoaW5wdXQpXG4gIH0pXG59KVxuXG5mdW5jdGlvbiBtYWtlQ29uZmlnKHJvb3Q6IHN0cmluZywgc2VjdGlvbnM6IENoYW5nZWxvZ1NlY3Rpb25bXSkge1xuICBjb25zdCBjb25maWdQYXRoID0gam9pbihyb290LCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICByZXR1cm4geyAuLi5Db25maWcucGFyc2UoeyByb290LCBjb25maWdQYXRoLCBzZWN0aW9ucyB9KSwgYmFzZTogdW5kZWZpbmVkIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVDaGFuZ2Vsb2cocm9vdDogc3RyaW5nLCBkaXI6IHN0cmluZywgYm9keTogc3RyaW5nKSB7XG4gIGF3YWl0IG1rZGlyKGpvaW4ocm9vdCwgZGlyKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgYXdhaXQgd3JpdGVGaWxlKGpvaW4ocm9vdCwgZGlyLCBcIkNIQU5HRUxPRy5tZFwiKSwgYm9keSwgXCJ1dGYtOFwiKVxufVxuIl19
@@ -1,12 +1,16 @@
1
1
  /**
2
- * Synthesize the project's Vite mount at `.livemark/.target/`: livemark's `source/` with
3
- * the project's `.livemark/` escapes copied over it, plus a `node_modules` link to
4
- * livemark's dependencies. Escapable folders are rebuilt on every run, so a removed escape
5
- * never keeps rendering. Returns the target dir.
2
+ * Synthesize the project's Vite mount — `.livemark/.serve/` for the dev server,
3
+ * `.livemark/.build/` for a production build or preview: livemark's `source/` with the
4
+ * project's `.livemark/` escapes copied over it, plus a `node_modules` link to livemark's
5
+ * dependencies. Escapable folders are rebuilt on every run, so a removed escape never
6
+ * keeps rendering. Returns the target dir.
6
7
  */
7
8
  export declare function buildTarget(props: {
8
9
  configPath: string;
9
10
  sourceDir: string;
11
+ command?: TargetCommand;
10
12
  }): string;
13
+ /** Which mount a run uses: the dev server's, or the production build's. */
14
+ export type TargetCommand = "serve" | "build";
11
15
  /** Locate the project's target dir without building it. */
12
- export declare function targetDirFor(configPath: string): string;
16
+ export declare function targetDirFor(configPath: string, command?: TargetCommand): string;
@@ -1,17 +1,22 @@
1
- import { cpSync, existsSync, mkdirSync, readlinkSync, rmSync, symlinkSync } from "node:fs";
1
+ import { cpSync, existsSync, mkdirSync, readlinkSync, rmSync, symlinkSync, writeFileSync, } from "node:fs";
2
2
  import { basename, dirname, join, relative, resolve } from "node:path";
3
3
  import { resolveDependencyDir } from "../../helpers/dependency-dir.js";
4
+ import { removeTargetDir } from "../../helpers/target-dir.js";
4
5
  import { ESCAPABLE_FILES, ESCAPABLE_FOLDERS } from "../../settings.js";
5
6
  /**
6
- * Synthesize the project's Vite mount at `.livemark/.target/`: livemark's `source/` with
7
- * the project's `.livemark/` escapes copied over it, plus a `node_modules` link to
8
- * livemark's dependencies. Escapable folders are rebuilt on every run, so a removed escape
9
- * never keeps rendering. Returns the target dir.
7
+ * Synthesize the project's Vite mount — `.livemark/.serve/` for the dev server,
8
+ * `.livemark/.build/` for a production build or preview: livemark's `source/` with the
9
+ * project's `.livemark/` escapes copied over it, plus a `node_modules` link to livemark's
10
+ * dependencies. Escapable folders are rebuilt on every run, so a removed escape never
11
+ * keeps rendering. Returns the target dir.
10
12
  */
11
13
  export function buildTarget(props) {
12
- const targetDir = targetDirFor(props.configPath);
14
+ const targetDir = targetDirFor(props.configPath, props.command);
13
15
  const overridesRoot = dirname(targetDir);
16
+ // `.target/` was the mount before `.serve/` and `.build/`; an upgrade must not keep it.
17
+ removeTargetDir(join(overridesRoot, ".target"));
14
18
  mkdirSync(targetDir, { recursive: true });
19
+ writeFileSync(join(targetDir, ".gitignore"), "*\n");
15
20
  cpSync(props.sourceDir, targetDir, {
16
21
  recursive: true,
17
22
  filter: src => isPackageFile(src) && !isEscapableFolder(src, props.sourceDir),
@@ -35,8 +40,8 @@ export function buildTarget(props) {
35
40
  return targetDir;
36
41
  }
37
42
  /** Locate the project's target dir without building it. */
38
- export function targetDirFor(configPath) {
39
- return join(dirname(configPath), ".livemark", ".target");
43
+ export function targetDirFor(configPath, command = "serve") {
44
+ return join(dirname(configPath), ".livemark", `.${command}`);
40
45
  }
41
46
  function isPackageFile(src) {
42
47
  return !/\.unit\.tsx?$/.test(src) && basename(src) !== "fixtures";
@@ -60,4 +65,4 @@ function readLink(path) {
60
65
  return undefined;
61
66
  }
62
67
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy90YXJnZXQvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzFGLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBZ0Q7SUFDMUUsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNoRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDeEMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXpDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRTtRQUNqQyxTQUFTLEVBQUUsSUFBSTtRQUNmLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO0tBQzlFLENBQUMsQ0FBQTtJQUNGLEtBQUssTUFBTSxNQUFNLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzVDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUNwQixNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7UUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUMzQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3JFLENBQUM7SUFDRCxLQUFLLE1BQU0sSUFBSSxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDekMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUNsRSxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsMkRBQTJEO0FBQzNELE1BQU0sVUFBVSxZQUFZLENBQUMsVUFBa0I7SUFDN0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUMxRCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsR0FBVztJQUNoQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxDQUFBO0FBQ25FLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxTQUFpQjtJQUN2RCxPQUFPLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDN0QsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxhQUFxQjtJQUNoRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBQzVDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFBRSxPQUFNO0lBQ3JELGlGQUFpRjtJQUNqRixNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDN0IsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUE7QUFDOUMsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDNUIsSUFBSSxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNwU3luYywgZXhpc3RzU3luYywgbWtkaXJTeW5jLCByZWFkbGlua1N5bmMsIHJtU3luYywgc3ltbGlua1N5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiwgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHJlc29sdmVEZXBlbmRlbmN5RGlyIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvZGVwZW5kZW5jeS1kaXIudHNcIlxuaW1wb3J0IHsgRVNDQVBBQkxFX0ZJTEVTLCBFU0NBUEFCTEVfRk9MREVSUyB9IGZyb20gXCIuLi8uLi9zZXR0aW5ncy50c1wiXG5cbi8qKlxuICogU3ludGhlc2l6ZSB0aGUgcHJvamVjdCdzIFZpdGUgbW91bnQgYXQgYC5saXZlbWFyay8udGFyZ2V0L2A6IGxpdmVtYXJrJ3MgYHNvdXJjZS9gIHdpdGhcbiAqIHRoZSBwcm9qZWN0J3MgYC5saXZlbWFyay9gIGVzY2FwZXMgY29waWVkIG92ZXIgaXQsIHBsdXMgYSBgbm9kZV9tb2R1bGVzYCBsaW5rIHRvXG4gKiBsaXZlbWFyaydzIGRlcGVuZGVuY2llcy4gRXNjYXBhYmxlIGZvbGRlcnMgYXJlIHJlYnVpbHQgb24gZXZlcnkgcnVuLCBzbyBhIHJlbW92ZWQgZXNjYXBlXG4gKiBuZXZlciBrZWVwcyByZW5kZXJpbmcuIFJldHVybnMgdGhlIHRhcmdldCBkaXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRhcmdldChwcm9wczogeyBjb25maWdQYXRoOiBzdHJpbmc7IHNvdXJjZURpcjogc3RyaW5nIH0pIHtcbiAgY29uc3QgdGFyZ2V0RGlyID0gdGFyZ2V0RGlyRm9yKHByb3BzLmNvbmZpZ1BhdGgpXG4gIGNvbnN0IG92ZXJyaWRlc1Jvb3QgPSBkaXJuYW1lKHRhcmdldERpcilcbiAgbWtkaXJTeW5jKHRhcmdldERpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcblxuICBjcFN5bmMocHJvcHMuc291cmNlRGlyLCB0YXJnZXREaXIsIHtcbiAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgZmlsdGVyOiBzcmMgPT4gaXNQYWNrYWdlRmlsZShzcmMpICYmICFpc0VzY2FwYWJsZUZvbGRlcihzcmMsIHByb3BzLnNvdXJjZURpciksXG4gIH0pXG4gIGZvciAoY29uc3QgZm9sZGVyIG9mIEVTQ0FQQUJMRV9GT0xERVJTKSB7XG4gICAgY29uc3QgZGVzdCA9IGpvaW4odGFyZ2V0RGlyLCBmb2xkZXIpXG4gICAgcm1TeW5jKGRlc3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxuICAgIGNvbnN0IHNvdXJjZSA9IGpvaW4ocHJvcHMuc291cmNlRGlyLCBmb2xkZXIpXG4gICAgaWYgKGV4aXN0c1N5bmMoc291cmNlKSlcbiAgICAgIGNwU3luYyhzb3VyY2UsIGRlc3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmaWx0ZXI6IGlzUGFja2FnZUZpbGUgfSlcbiAgICBjb25zdCBvdmVybGF5ID0gam9pbihvdmVycmlkZXNSb290LCBmb2xkZXIpXG4gICAgaWYgKGV4aXN0c1N5bmMob3ZlcmxheSkpIGNwU3luYyhvdmVybGF5LCBkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICB9XG4gIGZvciAoY29uc3QgZmlsZSBvZiBFU0NBUEFCTEVfRklMRVMpIHtcbiAgICBjb25zdCBvdmVybGF5ID0gam9pbihvdmVycmlkZXNSb290LCBmaWxlKVxuICAgIGlmIChleGlzdHNTeW5jKG92ZXJsYXkpKSBjcFN5bmMob3ZlcmxheSwgam9pbih0YXJnZXREaXIsIGZpbGUpKVxuICB9XG5cbiAgbGlua0RlcGVuZGVuY2llcyh0YXJnZXREaXIsIHJlc29sdmVEZXBlbmRlbmN5RGlyKHByb3BzLnNvdXJjZURpcikpXG4gIHJldHVybiB0YXJnZXREaXJcbn1cblxuLyoqIExvY2F0ZSB0aGUgcHJvamVjdCdzIHRhcmdldCBkaXIgd2l0aG91dCBidWlsZGluZyBpdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YXJnZXREaXJGb3IoY29uZmlnUGF0aDogc3RyaW5nKSB7XG4gIHJldHVybiBqb2luKGRpcm5hbWUoY29uZmlnUGF0aCksIFwiLmxpdmVtYXJrXCIsIFwiLnRhcmdldFwiKVxufVxuXG5mdW5jdGlvbiBpc1BhY2thZ2VGaWxlKHNyYzogc3RyaW5nKSB7XG4gIHJldHVybiAhL1xcLnVuaXRcXC50c3g/JC8udGVzdChzcmMpICYmIGJhc2VuYW1lKHNyYykgIT09IFwiZml4dHVyZXNcIlxufVxuXG5mdW5jdGlvbiBpc0VzY2FwYWJsZUZvbGRlcihzcmM6IHN0cmluZywgc291cmNlRGlyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEVTQ0FQQUJMRV9GT0xERVJTLmluY2x1ZGVzKHJlbGF0aXZlKHNvdXJjZURpciwgc3JjKSlcbn1cblxuZnVuY3Rpb24gbGlua0RlcGVuZGVuY2llcyh0YXJnZXREaXI6IHN0cmluZywgZGVwZW5kZW5jeURpcjogc3RyaW5nKSB7XG4gIGNvbnN0IGxpbmsgPSBqb2luKHRhcmdldERpciwgXCJub2RlX21vZHVsZXNcIilcbiAgaWYgKHJlYWRMaW5rKGxpbmspID09PSByZXNvbHZlKGRlcGVuZGVuY3lEaXIpKSByZXR1cm5cbiAgLy8gTm90IHJlY3Vyc2l2ZTogYSBzdGFsZSBsaW5rIG11c3QgZ28gd2l0aG91dCB0b3VjaGluZyB0aGUgc3RvcmUgaXQgcG9pbnRzIGludG8uXG4gIHJtU3luYyhsaW5rLCB7IGZvcmNlOiB0cnVlIH0pXG4gIHN5bWxpbmtTeW5jKGRlcGVuZGVuY3lEaXIsIGxpbmssIFwianVuY3Rpb25cIilcbn1cblxuZnVuY3Rpb24gcmVhZExpbmsocGF0aDogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHJlc29sdmUoZGlybmFtZShwYXRoKSwgcmVhZGxpbmtTeW5jKHBhdGgpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy90YXJnZXQvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sV0FBVyxFQUNYLGFBQWEsR0FDZCxNQUFNLFNBQVMsQ0FBQTtBQUNoQixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXRFOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FJM0I7SUFDQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDL0QsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3hDLHdGQUF3RjtJQUN4RixlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQy9DLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUN6QyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUVuRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUU7UUFDakMsU0FBUyxFQUFFLElBQUk7UUFDZixNQUFNLEVBQUUsR0FBRyxD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O0lBQ2xCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3BTeW5jLFxuICBleGlzdHNTeW5jLFxuICBta2RpclN5bmMsXG4gIHJlYWRsaW5rU3luYyxcbiAgcm1TeW5jLFxuICBzeW1saW5rU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGpvaW4sIHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyByZXNvbHZlRGVwZW5kZW5jeURpciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2RlcGVuZGVuY3ktZGlyLnRzXCJcbmltcG9ydCB7IHJlbW92ZVRhcmdldERpciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL3RhcmdldC1kaXIudHNcIlxuaW1wb3J0IHsgRVNDQVBBQkxFX0ZJTEVTLCBFU0NBUEFCTEVfRk9MREVSUyB9IGZyb20gXCIuLi8uLi9zZXR0aW5ncy50c1wiXG5cbi8qKlxuICogU3ludGhlc2l6ZSB0aGUgcHJvamVjdCdzIFZpdGUgbW91bnQg4oCUIGAubGl2ZW1hcmsvLnNlcnZlL2AgZm9yIHRoZSBkZXYgc2VydmVyLFxuICogYC5saXZlbWFyay8uYnVpbGQvYCBmb3IgYSBwcm9kdWN0aW9uIGJ1aWxkIG9yIHByZXZpZXc6IGxpdmVtYXJrJ3MgYHNvdXJjZS9gIHdpdGggdGhlXG4gKiBwcm9qZWN0J3MgYC5saXZlbWFyay9gIGVzY2FwZXMgY29waWVkIG92ZXIgaXQsIHBsdXMgYSBgbm9kZV9tb2R1bGVzYCBsaW5rIHRvIGxpdmVtYXJrJ3NcbiAqIGRlcGVuZGVuY2llcy4gRXNjYXBhYmxlIGZvbGRlcnMgYXJlIHJlYnVpbHQgb24gZXZlcnkgcnVuLCBzbyBhIHJlbW92ZWQgZXNjYXBlIG5ldmVyXG4gKiBrZWVwcyByZW5kZXJpbmcuIFJldHVybnMgdGhlIHRhcmdldCBkaXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRhcmdldChwcm9wczoge1xuICBjb25maWdQYXRoOiBzdHJpbmdcbiAgc291cmNlRGlyOiBzdHJpbmdcbiAgY29tbWFuZD86IFRhcmdldENvbW1hbmRcbn0pIHtcbiAgY29uc3QgdGFyZ2V0RGlyID0gdGFyZ2V0RGlyRm9yKHByb3BzLmNvbmZpZ1BhdGgsIHByb3BzLmNvbW1hbmQpXG4gIGNvbnN0IG92ZXJyaWRlc1Jvb3QgPSBkaXJuYW1lKHRhcmdldERpcilcbiAgLy8gYC50YXJnZXQvYCB3YXMgdGhlIG1vdW50IGJlZm9yZSBgLnNlcnZlL2AgYW5kIGAuYnVpbGQvYDsgYW4gdXBncmFkZSBtdXN0IG5vdCBrZWVwIGl0LlxuICByZW1vdmVUYXJnZXREaXIoam9pbihvdmVycmlkZXNSb290LCBcIi50YXJnZXRcIikpXG4gIG1rZGlyU3luYyh0YXJnZXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIHdyaXRlRmlsZVN5bmMoam9pbih0YXJnZXREaXIsIFwiLmdpdGlnbm9yZVwiKSwgXCIqXFxuXCIpXG5cbiAgY3BTeW5jKHByb3BzLnNvdXJjZURpciwgdGFyZ2V0RGlyLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgIGZpbHRlcjogc3JjID0+IGlzUGFja2FnZUZpbGUoc3JjKSAmJiAhaXNFc2NhcGFibGVGb2xkZXIoc3JjLCBwcm9wcy5zb3VyY2VEaXIpLFxuICB9KVxuICBmb3IgKGNvbnN0IGZvbGRlciBvZiBFU0NBUEFCTEVfRk9MREVSUykge1xuICAgIGNvbnN0IGRlc3QgPSBqb2luKHRhcmdldERpciwgZm9sZGVyKVxuICAgIHJtU3luYyhkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbiAgICBjb25zdCBzb3VyY2UgPSBqb2luKHByb3BzLnNvdXJjZURpciwgZm9sZGVyKVxuICAgIGlmIChleGlzdHNTeW5jKHNvdXJjZSkpXG4gICAgICBjcFN5bmMoc291cmNlLCBkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZmlsdGVyOiBpc1BhY2thZ2VGaWxlIH0pXG4gICAgY29uc3Qgb3ZlcmxheSA9IGpvaW4ob3ZlcnJpZGVzUm9vdCwgZm9sZGVyKVxuICAgIGlmIChleGlzdHNTeW5jKG92ZXJsYXkpKSBjcFN5bmMob3ZlcmxheSwgZGVzdCwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgfVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgRVNDQVBBQkxFX0ZJTEVTKSB7XG4gICAgY29uc3Qgb3ZlcmxheSA9IGpvaW4ob3ZlcnJpZGVzUm9vdCwgZmlsZSlcbiAgICBpZiAoZXhpc3RzU3luYyhvdmVybGF5KSkgY3BTeW5jKG92ZXJsYXksIGpvaW4odGFyZ2V0RGlyLCBmaWxlKSlcbiAgfVxuXG4gIGxpbmtEZXBlbmRlbmNpZXModGFyZ2V0RGlyLCByZXNvbHZlRGVwZW5kZW5jeURpcihwcm9wcy5zb3VyY2VEaXIpKVxuICByZXR1cm4gdGFyZ2V0RGlyXG59XG5cbi8qKiBXaGljaCBtb3VudCBhIHJ1biB1c2VzOiB0aGUgZGV2IHNlcnZlcidzLCBvciB0aGUgcHJvZHVjdGlvbiBidWlsZCdzLiAqL1xuZXhwb3J0IHR5cGUgVGFyZ2V0Q29tbWFuZCA9IFwic2VydmVcIiB8IFwiYnVpbGRcIlxuXG4vKiogTG9jYXRlIHRoZSBwcm9qZWN0J3MgdGFyZ2V0IGRpciB3aXRob3V0IGJ1aWxkaW5nIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRhcmdldERpckZvcihjb25maWdQYXRoOiBzdHJpbmcsIGNvbW1hbmQ6IFRhcmdldENvbW1hbmQgPSBcInNlcnZlXCIpIHtcbiAgcmV0dXJuIGpvaW4oZGlybmFtZShjb25maWdQYXRoKSwgXCIubGl2ZW1hcmtcIiwgYC4ke2NvbW1hbmR9YClcbn1cblxuZnVuY3Rpb24gaXNQYWNrYWdlRmlsZShzcmM6IHN0cmluZykge1xuICByZXR1cm4gIS9cXC51bml0XFwudHN4PyQvLnRlc3Qoc3JjKSAmJiBiYXNlbmFtZShzcmMpICE9PSBcImZpeHR1cmVzXCJcbn1cblxuZnVuY3Rpb24gaXNFc2NhcGFibGVGb2xkZXIoc3JjOiBzdHJpbmcsIHNvdXJjZURpcjogc3RyaW5nKSB7XG4gIHJldHVybiBFU0NBUEFCTEVfRk9MREVSUy5pbmNsdWRlcyhyZWxhdGl2ZShzb3VyY2VEaXIsIHNyYykpXG59XG5cbmZ1bmN0aW9uIGxpbmtEZXBlbmRlbmNpZXModGFyZ2V0RGlyOiBzdHJpbmcsIGRlcGVuZGVuY3lEaXI6IHN0cmluZykge1xuICBjb25zdCBsaW5rID0gam9pbih0YXJnZXREaXIsIFwibm9kZV9tb2R1bGVzXCIpXG4gIGlmIChyZWFkTGluayhsaW5rKSA9PT0gcmVzb2x2ZShkZXBlbmRlbmN5RGlyKSkgcmV0dXJuXG4gIC8vIE5vdCByZWN1cnNpdmU6IGEgc3RhbGUgbGluayBtdXN0IGdvIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHN0b3JlIGl0IHBvaW50cyBpbnRvLlxuICBybVN5bmMobGluaywgeyBmb3JjZTogdHJ1ZSB9KVxuICBzeW1saW5rU3luYyhkZXBlbmRlbmN5RGlyLCBsaW5rLCBcImp1bmN0aW9uXCIpXG59XG5cbmZ1bmN0aW9uIHJlYWRMaW5rKHBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiByZXNvbHZlKGRpcm5hbWUocGF0aCksIHJlYWRsaW5rU3luYyhwYXRoKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG4iXX0=
@@ -10,13 +10,28 @@ describe("buildTarget", () => {
10
10
  await put(join(root, "project/.livemark/components/Footer.tsx"), "escaped");
11
11
  await put(join(root, "project/.livemark/head.ts"), "escaped head");
12
12
  const targetDir = buildTarget({ configPath, sourceDir });
13
- expect(targetDir).toBe(join(root, "project/.livemark/.target"));
13
+ expect(targetDir).toBe(join(root, "project/.livemark/.serve"));
14
14
  expect(read(targetDir, "components/Footer.tsx")).toBe("escaped");
15
15
  expect(read(targetDir, "components/Header.tsx")).toBe("default");
16
16
  expect(read(targetDir, "head.ts")).toBe("escaped head");
17
17
  expect(read(targetDir, "helpers/util.ts")).toBe("util");
18
18
  expect(existsSync(join(targetDir, "helpers/util.unit.ts"))).toBe(false);
19
19
  }));
20
+ it("mounts a production build apart from the dev server's target", () => temporaryDirectoryTask(async (root) => {
21
+ const { configPath, sourceDir } = await createFixture(root);
22
+ const targetDir = buildTarget({ configPath, sourceDir, command: "build" });
23
+ expect(targetDir).toBe(join(root, "project/.livemark/.build"));
24
+ expect(read(targetDir, "routes/index.tsx")).toBe("index");
25
+ expect(existsSync(targetDirFor(configPath))).toBe(false);
26
+ }));
27
+ it("ignores itself in git and removes the legacy .target mount", () => temporaryDirectoryTask(async (root) => {
28
+ const { configPath, sourceDir } = await createFixture(root);
29
+ const legacyDir = join(root, "project/.livemark/.target");
30
+ await put(join(legacyDir, "routes/index.tsx"), "stale");
31
+ const targetDir = buildTarget({ configPath, sourceDir });
32
+ expect(read(targetDir, ".gitignore")).toBe("*\n");
33
+ expect(existsSync(legacyDir)).toBe(false);
34
+ }));
20
35
  it("drops escapes removed since the last run", () => temporaryDirectoryTask(async (root) => {
21
36
  const { configPath, sourceDir } = await createFixture(root);
22
37
  const overrides = join(root, "project/.livemark");
@@ -73,4 +88,4 @@ async function put(path, content) {
73
88
  function read(dir, path) {
74
89
  return readFileSync(join(dir, path), "utf-8");
75
90
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL3RhcmdldC9idWlsZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDOUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV0RCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixFQUFFLENBQUMsMERBQTBELEVBQUUsR0FBRyxFQUFFLENBQ2xFLHNCQUFzQixDQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtRQUNsQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNELE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUseUNBQXlDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUMzRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLDJCQUEyQixDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFFbEUsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFFeEQsTUFBTSxDQUFD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MUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBRUQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUM5QyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMvQyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDaEMsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFDLEdBQVcsRUFBRSxJQUFZO0lBQ3JDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVhZGxpbmtTeW5jLCByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBta2Rpciwgcm0sIHN5bWxpbmssIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHRlbXBvcmFyeURpcmVjdG9yeVRhc2sgfSBmcm9tIFwidGVtcHlcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgYnVpbGRUYXJnZXQsIHRhcmdldERpckZvciB9IGZyb20gXCIuL2J1aWxkLnRzXCJcblxuZGVzY3JpYmUoXCJidWlsZFRhcmdldFwiLCAoKSA9PiB7XG4gIGl0KFwiY29waWVzIHRoZSBzb3VyY2UsIG92ZXJsYXlzIGVzY2FwZXMgYW5kIHNraXBzIHVuaXQgdGVzdHNcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSA9IGF3YWl0IGNyZWF0ZUZpeHR1cmUocm9vdClcbiAgICAgIGF3YWl0IHB1dChqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvY29tcG9uZW50cy9Gb290ZXIudHN4XCIpLCBcImVzY2FwZWRcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvaGVhZC50c1wiKSwgXCJlc2NhcGVkIGhlYWRcIilcblxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgZXhwZWN0KHRhcmdldERpcikudG9CZShqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvLnRhcmdldFwiKSlcbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJjb21wb25lbnRzL0Zvb3Rlci50c3hcIikpLnRvQmUoXCJlc2NhcGVkXCIpXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiY29tcG9uZW50cy9IZWFkZXIudHN4XCIpKS50b0JlKFwiZGVmYXVsdFwiKVxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImhlYWQudHNcIikpLnRvQmUoXCJlc2NhcGVkIGhlYWRcIilcbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJoZWxwZXJzL3V0aWwudHNcIikpLnRvQmUoXCJ1dGlsXCIpXG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHRhcmdldERpciwgXCJoZWxwZXJzL3V0aWwudW5pdC50c1wiKSkpLnRvQmUoZmFsc2UpXG4gICAgfSkpXG5cbiAgaXQoXCJkcm9wcyBlc2NhcGVzIHJlbW92ZWQgc2luY2UgdGhlIGxhc3QgcnVuXCIsICgpID0+XG4gICAgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayhhc3luYyByb290ID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0gPSBhd2FpdCBjcmVhdGVGaXh0dXJlKHJvb3QpXG4gICAgICBjb25zdCBvdmVycmlkZXMgPSBqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmtcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKG92ZXJyaWRlcywgXCJjb21wb25lbnRzL0Zvb3Rlci50c3hcIiksIFwiZXNjYXBlZFwiKVxuICAgICAgYXdhaXQgcHV0KGpvaW4ob3ZlcnJpZGVzLCBcInJvdXRlcy9hYm91dC50c3hcIiksIFwiYWJvdXRcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKG92ZXJyaWRlcywgXCJoZWFkLnRzXCIpLCBcImVzY2FwZWQgaGVhZFwiKVxuICAgICAgYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgYXdhaXQgcm0oam9pbihvdmVycmlkZXMsIFwiY29tcG9uZW50c1wiKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICAgIGF3YWl0IHJtKGpvaW4ob3ZlcnJpZGVzLCBcInJvdXRlc1wiKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICAgIGF3YWl0IHJtKGpvaW4ob3ZlcnJpZGVzLCBcImhlYWQudHNcIikpXG4gICAgICBjb25zdCB0YXJnZXREaXIgPSBidWlsZFRhcmdldCh7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9KVxuXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiY29tcG9uZW50cy9Gb290ZXIudHN4XCIpKS50b0JlKFwiZGVmYXVsdFwiKVxuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoam9pbih0YXJnZXREaXIsIFwicm91dGVzL2Fib3V0LnRzeFwiKSkpLnRvQmUoZmFsc2UpXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiaGVhZC50c1wiKSkudG9CZShcImhlYWRcIilcbiAgICB9KSlcblxuICBpdChcImtlZXBzIGdlbmVyYXRlZCBlbnRyaWVzIGJldHdlZW4gcnVuc1wiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCB7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9ID0gYXdhaXQgY3JlYXRlRml4dHVyZShyb290KVxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcbiAgICAgIGF3YWl0IHB1dChqb2luKHRhcmdldERpciwgXCJjYWNoZS9jaGFuZ2Vsb2cvZW50cnkubWRcIiksIFwiY2FjaGVkXCIpXG5cbiAgICAgIGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG5cbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJjYWNoZS9jaGFuZ2Vsb2cvZW50cnkubWRcIikpLnRvQmUoXCJjYWNoZWRcIilcbiAgICB9KSlcblxuICBpdChcImxpbmtzIG5vZGVfbW9kdWxlcyB0byBsaXZlbWFyaydzIGRlcGVuZGVuY2llcyBhbmQgcmVwYWlycyBhIHN0YWxlIGxpbmtcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSA9IGF3YWl0IGNyZWF0ZUZpeHR1cmUocm9vdClcbiAgICAgIGNvbnN0IGxpbmsgPSBqb2luKHRhcmdldERpckZvcihjb25maWdQYXRoKSwgXCJub2RlX21vZHVsZXNcIilcbiAgICAgIGNvbnN0IGRlcGVuZGVuY3lEaXIgPSByZWFscGF0aFN5bmMoam9pbihyb290LCBcImxpdmVtYXJrL25vZGVfbW9kdWxlc1wiKSlcblxuICAgICAgYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcbiAgICAgIGV4cGVjdChyZWFkbGlua1N5bmMobGluaykpLnRvQmUoZGVwZW5kZW5jeURpcilcblxuICAgICAgYXdhaXQgcm0obGluaylcbiAgICAgIGF3YWl0IG1rZGlyKGpvaW4ocm9vdCwgXCJlbHNld2hlcmVcIikpXG4gICAgICBhd2FpdCBzeW1saW5rKGpvaW4ocm9vdCwgXCJlbHNld2hlcmVcIiksIGxpbmssIFwianVuY3Rpb25cIilcbiAgICAgIGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG5cbiAgICAgIGV4cGVjdChyZWFkbGlua1N5bmMobGluaykpLnRvQmUoZGVwZW5kZW5jeURpcilcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKGpvaW4ocm9vdCwgXCJlbHNld2hlcmVcIikpKS50b0JlKHRydWUpXG4gICAgfSkpXG59KVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVGaXh0dXJlKHJvb3Q6IHN0cmluZykge1xuICBjb25zdCBzb3VyY2VEaXIgPSBqb2luKHJvb3QsIFwibGl2ZW1hcmsvc291cmNlXCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJjb21wb25lbnRzL0Zvb3Rlci50c3hcIiksIFwiZGVmYXVsdFwiKVxuICBhd2FpdCBwdXQoam9pbihzb3VyY2VEaXIsIFwiY29tcG9uZW50cy9IZWFkZXIudHN4XCIpLCBcImRlZmF1bHRcIilcbiAgYXdhaXQgcHV0KGpvaW4oc291cmNlRGlyLCBcInJvdXRlcy9pbmRleC50c3hcIiksIFwiaW5kZXhcIilcbiAgYXdhaXQgcHV0KGpvaW4oc291cmNlRGlyLCBcImhlbHBlcnMvdXRpbC50c1wiKSwgXCJ1dGlsXCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJoZWxwZXJzL3V0aWwudW5pdC50c1wiKSwgXCJ0ZXN0XCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJoZWFkLnRzXCIpLCBcImhlYWRcIilcbiAgYXdhaXQgbWtkaXIoam9pbihyb290LCBcImxpdmVtYXJrL25vZGVfbW9kdWxlc1wiKSlcbiAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJwcm9qZWN0L2xpdmVtYXJrLmNvbmZpZy50c1wiKVxuICBhd2FpdCBwdXQoY29uZmlnUGF0aCwgXCJleHBvcnQgZGVmYXVsdCB7fVwiKVxuICByZXR1cm4geyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBwdXQocGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcbiAgYXdhaXQgbWtkaXIoZGlybmFtZShwYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgYXdhaXQgd3JpdGVGaWxlKHBhdGgsIGNvbnRlbnQpXG59XG5cbmZ1bmN0aW9uIHJlYWQoZGlyOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gcmVhZEZpbGVTeW5jKGpvaW4oZGlyLCBwYXRoKSwgXCJ1dGYtOFwiKVxufVxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL3RhcmdldC9idWlsZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDOUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV0RCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixFQUFFLENBQUMsMERBQTBELEVBQUUsR0FBRyxFQUFFLENBQ2xFLHNCQUFzQixDQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtRQUNsQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNELE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUseUNBQXlDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUMzRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLDJCQUEyQixDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFFbEUsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFFeEQsTUFBTSxDQUFD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SUFBSSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQTtJQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLDRCQUE0QixDQUFDLENBQUE7SUFDM0QsTUFBTSxHQUFHLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUE7SUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBRUQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUM5QyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMvQyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDaEMsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFDLEdBQVcsRUFBRSxJQUFZO0lBQ3JDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVhZGxpbmtTeW5jLCByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBta2Rpciwgcm0sIHN5bWxpbmssIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHRlbXBvcmFyeURpcmVjdG9yeVRhc2sgfSBmcm9tIFwidGVtcHlcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgYnVpbGRUYXJnZXQsIHRhcmdldERpckZvciB9IGZyb20gXCIuL2J1aWxkLnRzXCJcblxuZGVzY3JpYmUoXCJidWlsZFRhcmdldFwiLCAoKSA9PiB7XG4gIGl0KFwiY29waWVzIHRoZSBzb3VyY2UsIG92ZXJsYXlzIGVzY2FwZXMgYW5kIHNraXBzIHVuaXQgdGVzdHNcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSA9IGF3YWl0IGNyZWF0ZUZpeHR1cmUocm9vdClcbiAgICAgIGF3YWl0IHB1dChqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvY29tcG9uZW50cy9Gb290ZXIudHN4XCIpLCBcImVzY2FwZWRcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvaGVhZC50c1wiKSwgXCJlc2NhcGVkIGhlYWRcIilcblxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgZXhwZWN0KHRhcmdldERpcikudG9CZShqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvLnNlcnZlXCIpKVxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImNvbXBvbmVudHMvRm9vdGVyLnRzeFwiKSkudG9CZShcImVzY2FwZWRcIilcbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJjb21wb25lbnRzL0hlYWRlci50c3hcIikpLnRvQmUoXCJkZWZhdWx0XCIpXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiaGVhZC50c1wiKSkudG9CZShcImVzY2FwZWQgaGVhZFwiKVxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImhlbHBlcnMvdXRpbC50c1wiKSkudG9CZShcInV0aWxcIilcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcImhlbHBlcnMvdXRpbC51bml0LnRzXCIpKSkudG9CZShmYWxzZSlcbiAgICB9KSlcblxuICBpdChcIm1vdW50cyBhIHByb2R1Y3Rpb24gYnVpbGQgYXBhcnQgZnJvbSB0aGUgZGV2IHNlcnZlcidzIHRhcmdldFwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCB7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9ID0gYXdhaXQgY3JlYXRlRml4dHVyZShyb290KVxuXG4gICAgICBjb25zdCB0YXJnZXREaXIgPSBidWlsZFRhcmdldCh7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciwgY29tbWFuZDogXCJidWlsZFwiIH0pXG5cbiAgICAgIGV4cGVjdCh0YXJnZXREaXIpLnRvQmUoam9pbihyb290LCBcInByb2plY3QvLmxpdmVtYXJrLy5idWlsZFwiKSlcbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJyb3V0ZXMvaW5kZXgudHN4XCIpKS50b0JlKFwiaW5kZXhcIilcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKHRhcmdldERpckZvcihjb25maWdQYXRoKSkpLnRvQmUoZmFsc2UpXG4gICAgfSkpXG5cbiAgaXQoXCJpZ25vcmVzIGl0c2VsZiBpbiBnaXQgYW5kIHJlbW92ZXMgdGhlIGxlZ2FjeSAudGFyZ2V0IG1vdW50XCIsICgpID0+XG4gICAgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayhhc3luYyByb290ID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0gPSBhd2FpdCBjcmVhdGVGaXh0dXJlKHJvb3QpXG4gICAgICBjb25zdCBsZWdhY3lEaXIgPSBqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvLnRhcmdldFwiKVxuICAgICAgYXdhaXQgcHV0KGpvaW4obGVnYWN5RGlyLCBcInJvdXRlcy9pbmRleC50c3hcIiksIFwic3RhbGVcIilcblxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcIi5naXRpZ25vcmVcIikpLnRvQmUoXCIqXFxuXCIpXG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhsZWdhY3lEaXIpKS50b0JlKGZhbHNlKVxuICAgIH0pKVxuXG4gIGl0KFwiZHJvcHMgZXNjYXBlcyByZW1vdmVkIHNpbmNlIHRoZSBsYXN0IHJ1blwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCB7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9ID0gYXdhaXQgY3JlYXRlRml4dHVyZShyb290KVxuICAgICAgY29uc3Qgb3ZlcnJpZGVzID0gam9pbihyb290LCBcInByb2plY3QvLmxpdmVtYXJrXCIpXG4gICAgICBhd2FpdCBwdXQoam9pbihvdmVycmlkZXMsIFwiY29tcG9uZW50cy9Gb290ZXIudHN4XCIpLCBcImVzY2FwZWRcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKG92ZXJyaWRlcywgXCJyb3V0ZXMvYWJvdXQudHN4XCIpLCBcImFib3V0XCIpXG4gICAgICBhd2FpdCBwdXQoam9pbihvdmVycmlkZXMsIFwiaGVhZC50c1wiKSwgXCJlc2NhcGVkIGhlYWRcIilcbiAgICAgIGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG5cbiAgICAgIGF3YWl0IHJtKGpvaW4ob3ZlcnJpZGVzLCBcImNvbXBvbmVudHNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBhd2FpdCBybShqb2luKG92ZXJyaWRlcywgXCJyb3V0ZXNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBhd2FpdCBybShqb2luKG92ZXJyaWRlcywgXCJoZWFkLnRzXCIpKVxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImNvbXBvbmVudHMvRm9vdGVyLnRzeFwiKSkudG9CZShcImRlZmF1bHRcIilcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcInJvdXRlcy9hYm91dC50c3hcIikpKS50b0JlKGZhbHNlKVxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImhlYWQudHNcIikpLnRvQmUoXCJoZWFkXCIpXG4gICAgfSkpXG5cbiAgaXQoXCJrZWVwcyBnZW5lcmF0ZWQgZW50cmllcyBiZXR3ZWVuIHJ1bnNcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSA9IGF3YWl0IGNyZWF0ZUZpeHR1cmUocm9vdClcbiAgICAgIGNvbnN0IHRhcmdldERpciA9IGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG4gICAgICBhd2FpdCBwdXQoam9pbih0YXJnZXREaXIsIFwiY2FjaGUvY2hhbmdlbG9nL2VudHJ5Lm1kXCIpLCBcImNhY2hlZFwiKVxuXG4gICAgICBidWlsZFRhcmdldCh7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9KVxuXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiY2FjaGUvY2hhbmdlbG9nL2VudHJ5Lm1kXCIpKS50b0JlKFwiY2FjaGVkXCIpXG4gICAgfSkpXG5cbiAgaXQoXCJsaW5rcyBub2RlX21vZHVsZXMgdG8gbGl2ZW1hcmsncyBkZXBlbmRlbmNpZXMgYW5kIHJlcGFpcnMgYSBzdGFsZSBsaW5rXCIsICgpID0+XG4gICAgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayhhc3luYyByb290ID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0gPSBhd2FpdCBjcmVhdGVGaXh0dXJlKHJvb3QpXG4gICAgICBjb25zdCBsaW5rID0gam9pbih0YXJnZXREaXJGb3IoY29uZmlnUGF0aCksIFwibm9kZV9tb2R1bGVzXCIpXG4gICAgICBjb25zdCBkZXBlbmRlbmN5RGlyID0gcmVhbHBhdGhTeW5jKGpvaW4ocm9vdCwgXCJsaXZlbWFyay9ub2RlX21vZHVsZXNcIikpXG5cbiAgICAgIGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG4gICAgICBleHBlY3QocmVhZGxpbmtTeW5jKGxpbmspKS50b0JlKGRlcGVuZGVuY3lEaXIpXG5cbiAgICAgIGF3YWl0IHJtKGxpbmspXG4gICAgICBhd2FpdCBta2Rpcihqb2luKHJvb3QsIFwiZWxzZXdoZXJlXCIpKVxuICAgICAgYXdhaXQgc3ltbGluayhqb2luKHJvb3QsIFwiZWxzZXdoZXJlXCIpLCBsaW5rLCBcImp1bmN0aW9uXCIpXG4gICAgICBidWlsZFRhcmdldCh7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9KVxuXG4gICAgICBleHBlY3QocmVhZGxpbmtTeW5jKGxpbmspKS50b0JlKGRlcGVuZGVuY3lEaXIpXG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHJvb3QsIFwiZWxzZXdoZXJlXCIpKSkudG9CZSh0cnVlKVxuICAgIH0pKVxufSlcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRml4dHVyZShyb290OiBzdHJpbmcpIHtcbiAgY29uc3Qgc291cmNlRGlyID0gam9pbihyb290LCBcImxpdmVtYXJrL3NvdXJjZVwiKVxuICBhd2FpdCBwdXQoam9pbihzb3VyY2VEaXIsIFwiY29tcG9uZW50cy9Gb290ZXIudHN4XCIpLCBcImRlZmF1bHRcIilcbiAgYXdhaXQgcHV0KGpvaW4oc291cmNlRGlyLCBcImNvbXBvbmVudHMvSGVhZGVyLnRzeFwiKSwgXCJkZWZhdWx0XCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJyb3V0ZXMvaW5kZXgudHN4XCIpLCBcImluZGV4XCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJoZWxwZXJzL3V0aWwudHNcIiksIFwidXRpbFwiKVxuICBhd2FpdCBwdXQoam9pbihzb3VyY2VEaXIsIFwiaGVscGVycy91dGlsLnVuaXQudHNcIiksIFwidGVzdFwiKVxuICBhd2FpdCBwdXQoam9pbihzb3VyY2VEaXIsIFwiaGVhZC50c1wiKSwgXCJoZWFkXCIpXG4gIGF3YWl0IG1rZGlyKGpvaW4ocm9vdCwgXCJsaXZlbWFyay9ub2RlX21vZHVsZXNcIikpXG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBqb2luKHJvb3QsIFwicHJvamVjdC9saXZlbWFyay5jb25maWcudHNcIilcbiAgYXdhaXQgcHV0KGNvbmZpZ1BhdGgsIFwiZXhwb3J0IGRlZmF1bHQge31cIilcbiAgcmV0dXJuIHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcHV0KHBhdGg6IHN0cmluZywgY29udGVudDogc3RyaW5nKSB7XG4gIGF3YWl0IG1rZGlyKGRpcm5hbWUocGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIGF3YWl0IHdyaXRlRmlsZShwYXRoLCBjb250ZW50KVxufVxuXG5mdW5jdGlvbiByZWFkKGRpcjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHJlYWRGaWxlU3luYyhqb2luKGRpciwgcGF0aCksIFwidXRmLThcIilcbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
1
  /**
2
- * Wipe the project's target dir so the next run rebuilds it from scratch.
2
+ * Wipe the project's target dirs and cache so the next run rebuilds them from scratch.
3
3
  */
4
- export declare function clearTarget(configPath: string): string;
4
+ export declare function clearTarget(configPath: string): string[];
@@ -1,14 +1,16 @@
1
- import { rmSync } from "node:fs";
2
- import { join } from "node:path";
1
+ import { cacheDirFor, removeTargetDir } from "../../helpers/target-dir.js";
3
2
  import { targetDirFor } from "./build.js";
4
3
  /**
5
- * Wipe the project's target dir so the next run rebuilds it from scratch.
4
+ * Wipe the project's target dirs and cache so the next run rebuilds them from scratch.
6
5
  */
7
6
  export function clearTarget(configPath) {
8
- const targetDir = targetDirFor(configPath);
9
- // Unlink the dependency link first so the recursive remove cannot reach the store.
10
- rmSync(join(targetDir, "node_modules"), { force: true });
11
- rmSync(targetDir, { recursive: true, force: true });
12
- return targetDir;
7
+ const targetDirs = [
8
+ targetDirFor(configPath, "serve"),
9
+ targetDirFor(configPath, "build"),
10
+ cacheDirFor(configPath),
11
+ ];
12
+ for (const targetDir of targetDirs)
13
+ removeTargetDir(targetDir);
14
+ return targetDirs;
13
15
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy90YXJnZXQvY2xlYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFekM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLFVBQWtCO0lBQzVDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMxQyxtRkFBbUY7SUFDbkYsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUN4RCxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNuRCxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcm1TeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgdGFyZ2V0RGlyRm9yIH0gZnJvbSBcIi4vYnVpbGQudHNcIlxuXG4vKipcbiAqIFdpcGUgdGhlIHByb2plY3QncyB0YXJnZXQgZGlyIHNvIHRoZSBuZXh0IHJ1biByZWJ1aWxkcyBpdCBmcm9tIHNjcmF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclRhcmdldChjb25maWdQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgdGFyZ2V0RGlyID0gdGFyZ2V0RGlyRm9yKGNvbmZpZ1BhdGgpXG4gIC8vIFVubGluayB0aGUgZGVwZW5kZW5jeSBsaW5rIGZpcnN0IHNvIHRoZSByZWN1cnNpdmUgcmVtb3ZlIGNhbm5vdCByZWFjaCB0aGUgc3RvcmUuXG4gIHJtU3luYyhqb2luKHRhcmdldERpciwgXCJub2RlX21vZHVsZXNcIiksIHsgZm9yY2U6IHRydWUgfSlcbiAgcm1TeW5jKHRhcmdldERpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG4gIHJldHVybiB0YXJnZXREaXJcbn1cbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy90YXJnZXQvY2xlYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxVQUFrQjtJQUM1QyxNQUFNLFVBQVUsR0FBRztRQUNqQixZQUFZLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztRQUNqQyxZQUFZLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztRQUNqQyxXQUFXLENBQUMsVUFBVSxDQUFDO0tBQ3hCLENBQUE7SUFDRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVU7UUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDOUQsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhY2hlRGlyRm9yLCByZW1vdmVUYXJnZXREaXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy90YXJnZXQtZGlyLnRzXCJcbmltcG9ydCB7IHRhcmdldERpckZvciB9IGZyb20gXCIuL2J1aWxkLnRzXCJcblxuLyoqXG4gKiBXaXBlIHRoZSBwcm9qZWN0J3MgdGFyZ2V0IGRpcnMgYW5kIGNhY2hlIHNvIHRoZSBuZXh0IHJ1biByZWJ1aWxkcyB0aGVtIGZyb20gc2NyYXRjaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyVGFyZ2V0KGNvbmZpZ1BhdGg6IHN0cmluZykge1xuICBjb25zdCB0YXJnZXREaXJzID0gW1xuICAgIHRhcmdldERpckZvcihjb25maWdQYXRoLCBcInNlcnZlXCIpLFxuICAgIHRhcmdldERpckZvcihjb25maWdQYXRoLCBcImJ1aWxkXCIpLFxuICAgIGNhY2hlRGlyRm9yKGNvbmZpZ1BhdGgpLFxuICBdXG4gIGZvciAoY29uc3QgdGFyZ2V0RGlyIG9mIHRhcmdldERpcnMpIHJlbW92ZVRhcmdldERpcih0YXJnZXREaXIpXG4gIHJldHVybiB0YXJnZXREaXJzXG59XG4iXX0=