textlane 0.2.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,7 @@
2
2
  export declare function resolveAddon(props: {
3
3
  platform: string;
4
4
  arch: string;
5
+ libc: string | undefined;
5
6
  env: Record<string, string | undefined>;
6
7
  resolvePackage: (specifier: string) => string;
7
8
  }): string;
@@ -4,7 +4,8 @@ export function resolveAddon(props) {
4
4
  const override = props.env[ADDON_ENV];
5
5
  if (override)
6
6
  return override;
7
- const key = `${props.platform}-${props.arch}`;
7
+ const suffix = props.libc === "musl" ? "-musl" : "";
8
+ const key = `${props.platform}-${props.arch}${suffix}`;
8
9
  const platform = PLATFORMS[key];
9
10
  if (!platform) {
10
11
  const supported = Object.keys(PLATFORMS).join(", ");
@@ -19,4 +20,4 @@ export function resolveAddon(props) {
19
20
  `--no-optional / --omit=optional so the addon for ${key} comes along.`);
20
21
  }
21
22
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FjdGlvbnMvYWRkb24vcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RSwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUs1QjtJQUNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckMsSUFBSSxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUE7SUFFN0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM3QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDL0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFlBQVkscUJBQXFCLEdBQUcsZ0JBQWdCLFNBQVMsSUFBSTtZQUNsRSxPQUFPLFNBQVMsa0RBQWtELENBQ3JFLENBQUE7SUFDSCxDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFFBQVEsQ0FBQyxXQUFXLGdDQUFnQyxZQUFZLFdBQVc7WUFDNUUsb0RBQW9ELEdBQUcsZUFBZSxDQUN6RSxDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBRERPTl9FTlYsIFBBQ0tBR0VfTkFNRSwgUExBVEZPUk1TIH0gZnJvbSBcIi4uLy4uL3NldHRpbmdzLnRzXCJcblxuLyoqIEZpbmQgdGhlIHRleHRsYW5lIGFkZG9uOiB0aGUgZW52IG92ZXJyaWRlIGZpcnN0LCBlbHNlIHRoZSBtYXRjaGluZyBwbGF0Zm9ybSBwYWNrYWdlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBZGRvbihwcm9wczoge1xuICBwbGF0Zm9ybTogc3RyaW5nXG4gIGFyY2g6IHN0cmluZ1xuICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD5cbiAgcmVzb2x2ZVBhY2thZ2U6IChzcGVjaWZpZXI6IHN0cmluZykgPT4gc3RyaW5nXG59KSB7XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvcHMuZW52W0FERE9OX0VOVl1cbiAgaWYgKG92ZXJyaWRlKSByZXR1cm4gb3ZlcnJpZGVcblxuICBjb25zdCBrZXkgPSBgJHtwcm9wcy5wbGF0Zm9ybX0tJHtwcm9wcy5hcmNofWBcbiAgY29uc3QgcGxhdGZvcm0gPSBQTEFURk9STVNba2V5XVxuICBpZiAoIXBsYXRmb3JtKSB7XG4gICAgY29uc3Qgc3VwcG9ydGVkID0gT2JqZWN0LmtleXMoUExBVEZPUk1TKS5qb2luKFwiLCBcIilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtQQUNLQUdFX05BTUV9IGhhcyBubyBhZGRvbiBmb3IgJHtrZXl9OyBzdXBwb3J0ZWQ6ICR7c3VwcG9ydGVkfS4gYCArXG4gICAgICAgIGBTZXQgJHtBRERPTl9FTlZ9IHRvIGFuIGFkZG9uIGJ1aWx0IHdpdGggY2FyZ28gdG8gbG9hZCBpdCBhbnl3YXkuYCxcbiAgICApXG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gcHJvcHMucmVzb2x2ZVBhY2thZ2UoYCR7cGxhdGZvcm0ucGFja2FnZU5hbWV9LyR7cGxhdGZvcm0uYWRkb259YClcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7cGxhdGZvcm0ucGFja2FnZU5hbWV9IGlzIG5vdCBpbnN0YWxsZWQuIFJlaW5zdGFsbCAke1BBQ0tBR0VfTkFNRX0gd2l0aG91dCBgICtcbiAgICAgICAgYC0tbm8tb3B0aW9uYWwgLyAtLW9taXQ9b3B0aW9uYWwgc28gdGhlIGFkZG9uIGZvciAke2tleX0gY29tZXMgYWxvbmcuYCxcbiAgICApXG4gIH1cbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FjdGlvbnMvYWRkb24vcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RSwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQU01QjtJQUNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckMsSUFBSSxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUE7SUFFN0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25ELE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFBO0lBQ3RELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRCxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsWUFBWSxxQkFBcUIsR0FBRyxnQkFBZ0IsU0FBUyxJQUFJO1lBQ2xFLE9BQU8sU0FBUyxrREFBa0QsQ0FDckUsQ0FBQTtJQUNILENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsUUFBUSxDQUFDLFdBQVcsZ0NBQWdDLFlBQVksV0FBVztZQUM1RSxvREFBb0QsR0FBRyxlQUFlLENBQ3pFLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFERE9OX0VOViwgUEFDS0FHRV9OQU1FLCBQTEFURk9STVMgfSBmcm9tIFwiLi4vLi4vc2V0dGluZ3MudHNcIlxuXG4vKiogRmluZCB0aGUgdGV4dGxhbmUgYWRkb246IHRoZSBlbnYgb3ZlcnJpZGUgZmlyc3QsIGVsc2UgdGhlIG1hdGNoaW5nIHBsYXRmb3JtIHBhY2thZ2UuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFkZG9uKHByb3BzOiB7XG4gIHBsYXRmb3JtOiBzdHJpbmdcbiAgYXJjaDogc3RyaW5nXG4gIGxpYmM6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD5cbiAgcmVzb2x2ZVBhY2thZ2U6IChzcGVjaWZpZXI6IHN0cmluZykgPT4gc3RyaW5nXG59KSB7XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvcHMuZW52W0FERE9OX0VOVl1cbiAgaWYgKG92ZXJyaWRlKSByZXR1cm4gb3ZlcnJpZGVcblxuICBjb25zdCBzdWZmaXggPSBwcm9wcy5saWJjID09PSBcIm11c2xcIiA/IFwiLW11c2xcIiA6IFwiXCJcbiAgY29uc3Qga2V5ID0gYCR7cHJvcHMucGxhdGZvcm19LSR7cHJvcHMuYXJjaH0ke3N1ZmZpeH1gXG4gIGNvbnN0IHBsYXRmb3JtID0gUExBVEZPUk1TW2tleV1cbiAgaWYgKCFwbGF0Zm9ybSkge1xuICAgIGNvbnN0IHN1cHBvcnRlZCA9IE9iamVjdC5rZXlzKFBMQVRGT1JNUykuam9pbihcIiwgXCIpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7UEFDS0FHRV9OQU1FfSBoYXMgbm8gYWRkb24gZm9yICR7a2V5fTsgc3VwcG9ydGVkOiAke3N1cHBvcnRlZH0uIGAgK1xuICAgICAgICBgU2V0ICR7QURET05fRU5WfSB0byBhbiBhZGRvbiBidWlsdCB3aXRoIGNhcmdvIHRvIGxvYWQgaXQgYW55d2F5LmAsXG4gICAgKVxuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIHByb3BzLnJlc29sdmVQYWNrYWdlKGAke3BsYXRmb3JtLnBhY2thZ2VOYW1lfS8ke3BsYXRmb3JtLmFkZG9ufWApXG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke3BsYXRmb3JtLnBhY2thZ2VOYW1lfSBpcyBub3QgaW5zdGFsbGVkLiBSZWluc3RhbGwgJHtQQUNLQUdFX05BTUV9IHdpdGhvdXQgYCArXG4gICAgICAgIGAtLW5vLW9wdGlvbmFsIC8gLS1vbWl0PW9wdGlvbmFsIHNvIHRoZSBhZGRvbiBmb3IgJHtrZXl9IGNvbWVzIGFsb25nLmAsXG4gICAgKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /** The C library Node runs on under Linux: glibc when its report names a glibc, else musl. */
2
+ export declare function detectLibc(props: {
3
+ platform: string;
4
+ report: () => object;
5
+ }): "glibc" | "musl" | undefined;
@@ -0,0 +1,11 @@
1
+ /** The C library Node runs on under Linux: glibc when its report names a glibc, else musl. */
2
+ export function detectLibc(props) {
3
+ if (props.platform !== "linux")
4
+ return undefined;
5
+ const report = props.report();
6
+ const header = "header" in report ? report.header : undefined;
7
+ if (typeof header !== "object" || header === null)
8
+ return "glibc";
9
+ return "glibcVersionRuntime" in header && header.glibcVersionRuntime ? "glibc" : "musl";
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9saWJjL2RldGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4RkFBOEY7QUFDOUYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFpRDtJQUMxRSxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssT0FBTztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQ2hELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUM3QixNQUFNLE1BQU0sR0FBRyxRQUFRLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDN0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUk7UUFBRSxPQUFPLE9BQU8sQ0FBQTtJQUNqRSxPQUFPLHFCQUFxQixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0FBQ3pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVGhlIEMgbGlicmFyeSBOb2RlIHJ1bnMgb24gdW5kZXIgTGludXg6IGdsaWJjIHdoZW4gaXRzIHJlcG9ydCBuYW1lcyBhIGdsaWJjLCBlbHNlIG11c2wuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0TGliYyhwcm9wczogeyBwbGF0Zm9ybTogc3RyaW5nOyByZXBvcnQ6ICgpID0+IG9iamVjdCB9KSB7XG4gIGlmIChwcm9wcy5wbGF0Zm9ybSAhPT0gXCJsaW51eFwiKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IHJlcG9ydCA9IHByb3BzLnJlcG9ydCgpXG4gIGNvbnN0IGhlYWRlciA9IFwiaGVhZGVyXCIgaW4gcmVwb3J0ID8gcmVwb3J0LmhlYWRlciA6IHVuZGVmaW5lZFxuICBpZiAodHlwZW9mIGhlYWRlciAhPT0gXCJvYmplY3RcIiB8fCBoZWFkZXIgPT09IG51bGwpIHJldHVybiBcImdsaWJjXCJcbiAgcmV0dXJuIFwiZ2xpYmNWZXJzaW9uUnVudGltZVwiIGluIGhlYWRlciAmJiBoZWFkZXIuZ2xpYmNWZXJzaW9uUnVudGltZSA/IFwiZ2xpYmNcIiA6IFwibXVzbFwiXG59XG4iXX0=
@@ -4,7 +4,7 @@ import type { Host } from "../../models/host.ts";
4
4
  /** Run the host plugins a native run pauses at until it finishes; under `sync`, a plugin
5
5
  * finishing later fails with `async-in-sync`, as an asynchronous native stage does. */
6
6
  export declare function finishRun(props: {
7
- run: NativeRun<unknown>;
7
+ run: NativeRun;
8
8
  hosts: Map<number, Host>;
9
9
  file: HostFile;
10
10
  sync: boolean;
@@ -6,7 +6,7 @@ export function finishRun(props) {
6
6
  let sent = props.file.messages.length;
7
7
  while (props.run.hosts().length > 0) {
8
8
  mirrorMessages();
9
- const tree = runHosts(props, props.run.hosts(), props.run.tree());
9
+ const tree = runHosts(props, props.run.hosts(), readTree(props.run.tree()));
10
10
  if (isThenable(tree)) {
11
11
  if (props.sync)
12
12
  throw asyncError(props.call);
@@ -26,7 +26,7 @@ export function finishRun(props) {
26
26
  sent = props.file.messages.length;
27
27
  }
28
28
  function resume(tree) {
29
- props.run.resume(tree, props.file.messages.slice(sent).map(message => message.toJSON()));
29
+ props.run.resume(JSON.stringify(tree), props.file.messages.slice(sent).map(message => message.toJSON()));
30
30
  sent = props.file.messages.length;
31
31
  }
32
32
  }
@@ -45,8 +45,12 @@ function runHosts(props, ids, tree) {
45
45
  }
46
46
  return tree;
47
47
  }
48
+ function readTree(text) {
49
+ const tree = JSON.parse(text);
50
+ return tree;
51
+ }
48
52
  function asyncError(call) {
49
53
  const message = `\`${call}Sync\` finished async. Use \`${call}\` instead`;
50
54
  return Object.assign(new Error(message), { code: "async-in-sync" });
51
55
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluaXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9ydW4vZmluaXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUV0RDt1RkFDdUY7QUFDdkYsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQU16QjtJQUNDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQTtJQUNyQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLGNBQWMsRUFBRSxDQUFBO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDakUsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLEtBQUssQ0FBQyxJQUFJO2dCQUFFLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM1QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ1osT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDekIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2QsQ0FBQztJQUVELHdGQUF3RjtJQUN4RixTQUFTLGNBQWM7UUFDckIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdkUsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdFLENBQUM7UUFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBO0lBQ25DLENBQUM7SUFFRCxTQUFTLE1BQU0sQ0FBQyxJQUFVO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUNkLElBQUksRUFDSixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ2pFLENBQUE7UUFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBO0lBQ25DLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQ2YsS0FBZ0YsRUFDaEYsR0FBYSxFQUNiLElBQVU7SUFFVixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFBO1FBQ3BELElBQUksQ0FBQyxXQUFXO1lBQUUsU0FBUTtRQUMxQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksS0FBSyxDQUFDLElBQUk7Z0JBQUUsTUFBTSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN6RSxDQUFDO1FBQ0QsSUFBSSxHQUFHLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFZO0lBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxnQ0FBZ0MsSUFBSSxZQUFZLENBQUE7SUFDekUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTmF0aXZlUnVuIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hZGRvbi50c1wiXG5pbXBvcnQgdHlwZSB7IE5vZGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2ZpbGUudHNcIlxuaW1wb3J0IHsgdHlwZSBIb3N0RmlsZSwgSG9zdE1lc3NhZ2UgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3ZmaWxlLnRzXCJcbmltcG9ydCB0eXBlIHsgSG9zdCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvaG9zdC50c1wiXG5pbXBvcnQgeyBjYWxsSG9zdCwgaXNUaGVuYWJsZSB9IGZyb20gXCIuLi9ob3N0L2NhbGwudHNcIlxuXG4vKiogUnVuIHRoZSBob3N0IHBsdWdpbnMgYSBuYXRpdmUgcnVuIHBhdXNlcyBhdCB1bnRpbCBpdCBmaW5pc2hlczsgdW5kZXIgYHN5bmNgLCBhIHBsdWdpblxuICogZmluaXNoaW5nIGxhdGVyIGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgLCBhcyBhbiBhc3luY2hyb25vdXMgbmF0aXZlIHN0YWdlIGRvZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmluaXNoUnVuKHByb3BzOiB7XG4gIHJ1bjogTmF0aXZlUnVuPHVua25vd24+XG4gIGhvc3RzOiBNYXA8bnVtYmVyLCBIb3N0PlxuICBmaWxlOiBIb3N0RmlsZVxuICBzeW5jOiBib29sZWFuXG4gIGNhbGw6IFwicnVuXCIgfCBcInByb2Nlc3NcIlxufSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IHNlbnQgPSBwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aFxuICB3aGlsZSAocHJvcHMucnVuLmhvc3RzKCkubGVuZ3RoID4gMCkge1xuICAgIG1pcnJvck1lc3NhZ2VzKClcbiAgICBjb25zdCB0cmVlID0gcnVuSG9zdHMocHJvcHMsIHByb3BzLnJ1bi5ob3N0cygpLCBwcm9wcy5ydW4udHJlZSgpKVxuICAgIGlmIChpc1RoZW5hYmxlKHRyZWUpKSB7XG4gICAgICBpZiAocHJvcHMuc3luYykgdGhyb3cgYXN5bmNFcnJvcihwcm9wcy5jYWxsKVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cmVlKS50aGVuKHRyZWUgPT4ge1xuICAgICAgICByZXN1bWUodHJlZSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaFJ1bihwcm9wcylcbiAgICAgIH0pXG4gICAgfVxuICAgIHJlc3VtZSh0cmVlKVxuICB9XG5cbiAgLy8gZmlsZS5tZXNzYWdlcyBmb2xsb3dzIHRoZSBydW4nczogd2hhdCBuYXRpdmUgc3RhZ2VzIHJlcG9ydGVkIHNpbmNlLCB0aGVuIHRoZSBwbHVnaW5zJ1xuICBmdW5jdGlvbiBtaXJyb3JNZXNzYWdlcygpIHtcbiAgICBjb25zdCByZXBvcnRlZCA9IHByb3BzLnJ1bi5tZXNzYWdlcygpLnNsaWNlKHByb3BzLmZpbGUubWVzc2FnZXMubGVuZ3RoKVxuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiByZXBvcnRlZCkge1xuICAgICAgcHJvcHMuZmlsZS5tZXNzYWdlcy5wdXNoKEhvc3RNZXNzYWdlLmZyb21NZXNzYWdlKG1lc3NhZ2UsIHByb3BzLmZpbGUucGF0aCkpXG4gICAgfVxuICAgIHNlbnQgPSBwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aFxuICB9XG5cbiAgZnVuY3Rpb24gcmVzdW1lKHRyZWU6IE5vZGUpIHtcbiAgICBwcm9wcy5ydW4ucmVzdW1lKFxuICAgICAgdHJlZSxcbiAgICAgIHByb3BzLmZpbGUubWVzc2FnZXMuc2xpY2Uoc2VudCkubWFwKG1lc3NhZ2UgPT4gbWVzc2FnZS50b0pTT04oKSksXG4gICAgKVxuICAgIHNlbnQgPSBwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aFxuICB9XG59XG5cbmZ1bmN0aW9uIHJ1bkhvc3RzKFxuICBwcm9wczogeyBob3N0czogTWFwPG51bWJlciwgSG9zdD47IGZpbGU6IEhvc3RGaWxlOyBzeW5jOiBib29sZWFuOyBjYWxsOiBzdHJpbmcgfSxcbiAgaWRzOiBudW1iZXJbXSxcbiAgdHJlZTogTm9kZSxcbik6IE5vZGUgfCBQcm9taXNlTGlrZTxOb2RlPiB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBpZF0gb2YgaWRzLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gcHJvcHMuaG9zdHMuZ2V0KGlkKT8udHJhbnNmb3JtZXJcbiAgICBpZiAoIXRyYW5zZm9ybWVyKSBjb250aW51ZVxuICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxIb3N0KHsgdHJhbnNmb3JtZXIsIHRyZWUsIGZpbGU6IHByb3BzLmZpbGUgfSlcbiAgICBpZiAoaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICBpZiAocHJvcHMuc3luYykgdGhyb3cgYXN5bmNFcnJvcihwcm9wcy5jYWxsKVxuICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKHRyZWUgPT4gcnVuSG9zdHMocHJvcHMsIGlkcy5zbGljZShpbmRleCArIDEpLCB0cmVlKSlcbiAgICB9XG4gICAgdHJlZSA9IHJlc3VsdFxuICB9XG4gIHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIGFzeW5jRXJyb3IoY2FsbDogc3RyaW5nKSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBgXFxgJHtjYWxsfVN5bmNcXGAgZmluaXNoZWQgYXN5bmMuIFVzZSBcXGAke2NhbGx9XFxgIGluc3RlYWRgXG4gIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihtZXNzYWdlKSwgeyBjb2RlOiBcImFzeW5jLWluLXN5bmNcIiB9KVxufVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluaXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWN0aW9ucy9ydW4vZmluaXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUV0RDt1RkFDdUY7QUFDdkYsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQU16QjtJQUNDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQTtJQUNyQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLGNBQWMsRUFBRSxDQUFBO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0UsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLEtBQUssQ0FBQyxJQUFJO2dCQUFFLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM1QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ1osT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDekIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2QsQ0FBQztJQUVELHdGQUF3RjtJQUN4RixTQUFTLGNBQWM7UUFDckIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdkUsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdFLENBQUM7UUFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBO0lBQ25DLENBQUM7SUFFRCxTQUFTLE1BQU0sQ0FBQyxJQUFVO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDakUsQ0FBQTtRQUNELElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUE7SUFDbkMsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FDZixLQUFnRixFQUNoRixHQUFhLEVBQ2IsSUFBVTtJQUVWLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUE7UUFDcEQsSUFBSSxDQUFDLFdBQVc7WUFBRSxTQUFRO1FBQzFCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2hFLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLENBQUMsSUFBSTtnQkFBRSxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDNUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3pFLENBQUM7UUFDRCxJQUFJLEdBQUcsTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDNUIsTUFBTSxJQUFJLEdBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNuQyxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFZO0lBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxnQ0FBZ0MsSUFBSSxZQUFZLENBQUE7SUFDekUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTmF0aXZlUnVuIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hZGRvbi50c1wiXG5pbXBvcnQgdHlwZSB7IE5vZGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2ZpbGUudHNcIlxuaW1wb3J0IHsgdHlwZSBIb3N0RmlsZSwgSG9zdE1lc3NhZ2UgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3ZmaWxlLnRzXCJcbmltcG9ydCB0eXBlIHsgSG9zdCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvaG9zdC50c1wiXG5pbXBvcnQgeyBjYWxsSG9zdCwgaXNUaGVuYWJsZSB9IGZyb20gXCIuLi9ob3N0L2NhbGwudHNcIlxuXG4vKiogUnVuIHRoZSBob3N0IHBsdWdpbnMgYSBuYXRpdmUgcnVuIHBhdXNlcyBhdCB1bnRpbCBpdCBmaW5pc2hlczsgdW5kZXIgYHN5bmNgLCBhIHBsdWdpblxuICogZmluaXNoaW5nIGxhdGVyIGZhaWxzIHdpdGggYGFzeW5jLWluLXN5bmNgLCBhcyBhbiBhc3luY2hyb25vdXMgbmF0aXZlIHN0YWdlIGRvZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmluaXNoUnVuKHByb3BzOiB7XG4gIHJ1bjogTmF0aXZlUnVuXG4gIGhvc3RzOiBNYXA8bnVtYmVyLCBIb3N0PlxuICBmaWxlOiBIb3N0RmlsZVxuICBzeW5jOiBib29sZWFuXG4gIGNhbGw6IFwicnVuXCIgfCBcInByb2Nlc3NcIlxufSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IHNlbnQgPSBwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aFxuICB3aGlsZSAocHJvcHMucnVuLmhvc3RzKCkubGVuZ3RoID4gMCkge1xuICAgIG1pcnJvck1lc3NhZ2VzKClcbiAgICBjb25zdCB0cmVlID0gcnVuSG9zdHMocHJvcHMsIHByb3BzLnJ1bi5ob3N0cygpLCByZWFkVHJlZShwcm9wcy5ydW4udHJlZSgpKSlcbiAgICBpZiAoaXNUaGVuYWJsZSh0cmVlKSkge1xuICAgICAgaWYgKHByb3BzLnN5bmMpIHRocm93IGFzeW5jRXJyb3IocHJvcHMuY2FsbClcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJlZSkudGhlbih0cmVlID0+IHtcbiAgICAgICAgcmVzdW1lKHRyZWUpXG4gICAgICAgIHJldHVybiBmaW5pc2hSdW4ocHJvcHMpXG4gICAgICB9KVxuICAgIH1cbiAgICByZXN1bWUodHJlZSlcbiAgfVxuXG4gIC8vIGZpbGUubWVzc2FnZXMgZm9sbG93cyB0aGUgcnVuJ3M6IHdoYXQgbmF0aXZlIHN0YWdlcyByZXBvcnRlZCBzaW5jZSwgdGhlbiB0aGUgcGx1Z2lucydcbiAgZnVuY3Rpb24gbWlycm9yTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgcmVwb3J0ZWQgPSBwcm9wcy5ydW4ubWVzc2FnZXMoKS5zbGljZShwcm9wcy5maWxlLm1lc3NhZ2VzLmxlbmd0aClcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVwb3J0ZWQpIHtcbiAgICAgIHByb3BzLmZpbGUubWVzc2FnZXMucHVzaChIb3N0TWVzc2FnZS5mcm9tTWVzc2FnZShtZXNzYWdlLCBwcm9wcy5maWxlLnBhdGgpKVxuICAgIH1cbiAgICBzZW50ID0gcHJvcHMuZmlsZS5tZXNzYWdlcy5sZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3VtZSh0cmVlOiBOb2RlKSB7XG4gICAgcHJvcHMucnVuLnJlc3VtZShcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRyZWUpLFxuICAgICAgcHJvcHMuZmlsZS5tZXNzYWdlcy5zbGljZShzZW50KS5tYXAobWVzc2FnZSA9PiBtZXNzYWdlLnRvSlNPTigpKSxcbiAgICApXG4gICAgc2VudCA9IHByb3BzLmZpbGUubWVzc2FnZXMubGVuZ3RoXG4gIH1cbn1cblxuZnVuY3Rpb24gcnVuSG9zdHMoXG4gIHByb3BzOiB7IGhvc3RzOiBNYXA8bnVtYmVyLCBIb3N0PjsgZmlsZTogSG9zdEZpbGU7IHN5bmM6IGJvb2xlYW47IGNhbGw6IHN0cmluZyB9LFxuICBpZHM6IG51bWJlcltdLFxuICB0cmVlOiBOb2RlLFxuKTogTm9kZSB8IFByb21pc2VMaWtlPE5vZGU+IHtcbiAgZm9yIChjb25zdCBbaW5kZXgsIGlkXSBvZiBpZHMuZW50cmllcygpKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBwcm9wcy5ob3N0cy5nZXQoaWQpPy50cmFuc2Zvcm1lclxuICAgIGlmICghdHJhbnNmb3JtZXIpIGNvbnRpbnVlXG4gICAgY29uc3QgcmVzdWx0ID0gY2FsbEhvc3QoeyB0cmFuc2Zvcm1lciwgdHJlZSwgZmlsZTogcHJvcHMuZmlsZSB9KVxuICAgIGlmIChpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgIGlmIChwcm9wcy5zeW5jKSB0aHJvdyBhc3luY0Vycm9yKHByb3BzLmNhbGwpXG4gICAgICByZXR1cm4gcmVzdWx0LnRoZW4odHJlZSA9PiBydW5Ib3N0cyhwcm9wcywgaWRzLnNsaWNlKGluZGV4ICsgMSksIHRyZWUpKVxuICAgIH1cbiAgICB0cmVlID0gcmVzdWx0XG4gIH1cbiAgcmV0dXJuIHRyZWVcbn1cblxuZnVuY3Rpb24gcmVhZFRyZWUodGV4dDogc3RyaW5nKSB7XG4gIGNvbnN0IHRyZWU6IE5vZGUgPSBKU09OLnBhcnNlKHRleHQpXG4gIHJldHVybiB0cmVlXG59XG5cbmZ1bmN0aW9uIGFzeW5jRXJyb3IoY2FsbDogc3RyaW5nKSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBgXFxgJHtjYWxsfVN5bmNcXGAgZmluaXNoZWQgYXN5bmMuIFVzZSBcXGAke2NhbGx9XFxgIGluc3RlYWRgXG4gIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihtZXNzYWdlKSwgeyBjb2RlOiBcImFzeW5jLWluLXN5bmNcIiB9KVxufVxuIl19
@@ -1,4 +1,5 @@
1
- import type { Plugin } from "../models/plugin.ts";
1
+ import type { Root } from "hast";
2
+ import type { Parser, Plugin } from "../models/plugin.ts";
2
3
  /** `html.parse`: HTML into hast; options named as rehype-parse names them. */
3
4
  export interface ParseOptions {
4
5
  /** Parse a fragment, as in a `template`, rather than a whole document. @default false */
@@ -23,9 +24,18 @@ export interface FormatOptions {
23
24
  indent?: Indent | null;
24
25
  /** Indent the first level, usually `<html>`'s `head` and `body`; `true` when left out. */
25
26
  indentInitial?: boolean | null;
27
+ /** Only collapse whitespace, as rehype-minify-whitespace does, adding no line endings or indentation; `{ newlines: true }` collapses a run holding a line ending to it. */
28
+ minify?: Minify | null;
26
29
  }
27
30
  /** One level of indentation. */
28
31
  export type Indent = number | string;
32
+ /** `html.format`'s `minify`: on, or on with rehype-minify-whitespace's options. */
33
+ export type Minify = boolean | MinifyOptions;
34
+ /** rehype-minify-whitespace's options. */
35
+ export interface MinifyOptions {
36
+ /** Collapse a run of whitespace holding a line ending to a line ending, not a space. @default false */
37
+ newlines?: boolean;
38
+ }
29
39
  /** `html.sanitize`: keep only what a schema allows; options: hast-util-sanitize's schema, where a field left out keeps the default schema's, which is GitHub's. */
30
40
  export interface SanitizeOptions {
31
41
  /** Keep comments. */
@@ -57,7 +67,30 @@ export type Primitive = boolean | number | string;
57
67
  export interface SlugOptions {
58
68
  /** Put before each id. @default "" */
59
69
  prefix?: string;
70
+ /** Link each heading with an `id` to itself, as rehype-autolink-headings does: `true`, or its options. */
71
+ autolink?: Autolink | null;
72
+ }
73
+ /** `html.slug`'s `autolink`: on, or on with rehype-autolink-headings' options. */
74
+ export type Autolink = boolean | AutolinkOptions;
75
+ /** rehype-autolink-headings' options, JSON values only. */
76
+ export interface AutolinkOptions {
77
+ /** Where the link goes: in the heading first or last, around its content, or before or after it. */
78
+ behavior?: AutolinkBehavior;
79
+ /** The link's properties, as hast names them; `ariaHidden` and `tabIndex: -1` for `prepend` and `append` when left out. */
80
+ properties?: Record<string, unknown> | null;
81
+ /** hast content of the link, one node or a list; `<span class="icon icon-link">` when left out, except for `wrap`, which appends it to the heading's content. */
82
+ content?: unknown;
83
+ /** A hast element wrapping the heading and its link, for `before` and `after`. */
84
+ group?: unknown;
85
+ /** Properties set on each linked heading. */
86
+ headingProperties?: Record<string, unknown> | null;
87
+ /** The tag names of the headings to link; every heading when left out. */
88
+ test?: TagNames | null;
60
89
  }
90
+ /** Where `autolink` puts each heading's link. */
91
+ export type AutolinkBehavior = "prepend" | "append" | "wrap" | "before" | "after";
92
+ /** One tag name or several. */
93
+ export type TagNames = string | string[];
61
94
  /** `html.externalLinks`: `rel`, `target` and more on links to other sites, as rehype-external-links adds them; options named as it names them, JSON values only. */
62
95
  export interface ExternalLinksOptions {
63
96
  /** The `target` of each external link, such as `_blank`. */
@@ -233,7 +266,7 @@ export interface StringifyOptions {
233
266
  voids?: string[] | null;
234
267
  }
235
268
  /** The `html.parse` plugin. */
236
- export declare function parse(options?: ParseOptions): Plugin<"html.parse", ParseOptions>;
269
+ export declare function parse(options?: ParseOptions): Plugin<"html.parse", ParseOptions> & Parser<Root>;
237
270
  /** The `html.raw` plugin. */
238
271
  export declare function raw(options?: RawOptions): Plugin<"html.raw", RawOptions>;
239
272
  /** The `html.format` plugin. */
@@ -73,4 +73,4 @@ export function stringify(options) {
73
73
  return { name: "html.stringify" };
74
74
  return { name: "html.stringify", options };
75
75
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbmVyYXRlZC9odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQXFPL0UsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDeEMsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN6QyxDQUFDO0FBRUQsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBeUI7SUFDaEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUE7SUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQXFCO0lBQ3hDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3ZDLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE4QjtJQUMxRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDaEQsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUE7QUFDdEMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQTJCO0lBQ3BELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7SUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQTtJQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzVDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQTtJQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBMkI7SUFDcEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzdDLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGBwbnBtIGdlbmVyYXRlOmJpbmRpbmdzYCBmcm9tIHRoZSBjcmF0ZSdzIHBsdWdpbnM7IGRvIG5vdCBlZGl0LlxuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCIuLi9tb2RlbHMvcGx1Z2luLnRzXCJcblxuLyoqIGBodG1sLnBhcnNlYDogSFRNTCBpbnRvIGhhc3Q7IG9wdGlvbnMgbmFtZWQgYXMgcmVoeXBlLXBhcnNlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlT3B0aW9ucyB7XG4gIC8qKiBQYXJzZSBhIGZyYWdtZW50LCBhcyBpbiBhIGB0ZW1wbGF0ZWAsIHJhdGhlciB0aGFuIGEgd2hvbGUgZG9jdW1lbnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGZyYWdtZW50PzogYm9vbGVhblxuICAvKiogUmVwb3J0IHBhcnNlIGVycm9ycyBhcyBtZXNzYWdlcyBvbiB0aGUgZmlsZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZW1pdFBhcnNlRXJyb3JzPzogYm9vbGVhblxuICAvKiogQWRkIHRoZSBwb3NpdGlvbnMgb2Ygb3BlbmluZyBhbmQgY2xvc2luZyB0YWdzIGFuZCBhdHRyaWJ1dGVzIHRvIGVsZW1lbnRzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB2ZXJib3NlPzogYm9vbGVhblxufVxuXG4vKiogYGh0bWwucmF3YDogcmVwYXJzZSByYXcgSFRNTCBhbmQgZml4IG5lc3RpbmcgdGhyb3VnaCB0aGUgSFRNTCBwYXJzZXI7IG9wdGlvbnMgbmFtZWQgYXMgaGFzdC11dGlsLXJhdyBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXdPcHRpb25zIHtcbiAgLyoqIE5vZGUgdHlwZXMsIHVua25vd24gdG8gaGFzdCwgdG8gY29weSB0aHJvdWdoIGFzIHRoZXkgYXJlOyB0aGVpciBjaGlsZHJlbiBhcmUgcmVwYXJzZWQgb24gdGhlaXIgb3duLiBAZGVmYXVsdCBbXSAqL1xuICBwYXNzVGhyb3VnaD86IHN0cmluZ1tdXG4gIC8qKiBFc2NhcGUgdGhlIG9wZW5pbmcgYDxgIG9mIHRoZSB0YWdzIEdGTSdzIHRhZ2ZpbHRlciBkaXNhbGxvd3MgaW4gcmF3IG5vZGVzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0YWdmaWx0ZXI/OiBib29sZWFuXG59XG5cbi8qKiBgaHRtbC5mb3JtYXRgOiBpbmRlbnQgYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UgZm9yIHJlYWRhYmxlIEhUTUw7IG9wdGlvbnMgbmFtZWQgYXMgaGFzdC11dGlsLWZvcm1hdCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRPcHRpb25zIHtcbiAgLyoqIFRhZyBuYW1lcyBvZiBlbGVtZW50cyB0byBwdXQgYSBibGFuayBsaW5lIGJldHdlZW4sIHdoZW4gYm90aCBhcmUgb25lLiBAZGVmYXVsdCBbXSAqL1xuICBibGFua3M/OiBzdHJpbmdbXVxuICAvKiogT25lIGxldmVsIG9mIGluZGVudGF0aW9uOiBhIG51bWJlciBvZiBzcGFjZXMgb3IgdGhlIHRleHQgaXRzZWxmOyB0d28gc3BhY2VzIHdoZW4gbGVmdCBvdXQuICovXG4gIGluZGVudD86IEluZGVudCB8IG51bGxcbiAgLyoqIEluZGVudCB0aGUgZmlyc3QgbGV2ZWwsIHVzdWFsbHkgYDxodG1sPmAncyBgaGVhZGAgYW5kIGBib2R5YDsgYHRydWVgIHdoZW4gbGVmdCBvdXQuICovXG4gIGluZGVudEluaXRpYWw/OiBib29sZWFuIHwgbnVsbFxufVxuXG4vKiogT25lIGxldmVsIG9mIGluZGVudGF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgSW5kZW50ID0gbnVtYmVyIHwgc3RyaW5nXG5cbi8qKiBgaHRtbC5zYW5pdGl6ZWA6IGtlZXAgb25seSB3aGF0IGEgc2NoZW1hIGFsbG93czsgb3B0aW9uczogaGFzdC11dGlsLXNhbml0aXplJ3Mgc2NoZW1hLCB3aGVyZSBhIGZpZWxkIGxlZnQgb3V0IGtlZXBzIHRoZSBkZWZhdWx0IHNjaGVtYSdzLCB3aGljaCBpcyBHaXRIdWIncy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FuaXRpemVPcHRpb25zIHtcbiAgLyoqIEtlZXAgY29tbWVudHMuICovXG4gIGFsbG93Q29tbWVudHM/OiBib29sZWFuIHwgbnVsbFxuICAvKiogS2VlcCBkb2N0eXBlcy4gKi9cbiAgYWxsb3dEb2N0eXBlcz86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBFbGVtZW50cyBhbGxvd2VkIG9ubHkgaW5zaWRlIG9uZSBvZiB0aGVzZSBhbmNlc3RvcnMsIGJ5IHRhZyBuYW1lLiAqL1xuICBhbmNlc3RvcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gfCBudWxsXG4gIC8qKiBQcm9wZXJ0aWVzIGFsbG93ZWQgcGVyIHRhZyBuYW1lLCBgKmAgZm9yIGV2ZXJ5IGVsZW1lbnQ7IGEgbGlzdCBuYW1lcyBhIHByb3BlcnR5IGFuZCB0aGUgdmFsdWVzIGl0IG1heSBoYXZlLiAqL1xuICBhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlRGVmaW5pdGlvbltdPiB8IG51bGxcbiAgLyoqIFByb3BlcnRpZXMgd2hvc2UgdmFsdWVzIGdldCBgY2xvYmJlcl9wcmVmaXhgLCBzbyB0aGV5IGNhbm5vdCBjbG9iYmVyIGdsb2JhbHMuICovXG4gIGNsb2JiZXI/OiBzdHJpbmdbXSB8IG51bGxcbiAgLyoqIFRoZSBwcmVmaXggb2YgY2xvYmJlcmVkIHZhbHVlcy4gKi9cbiAgY2xvYmJlclByZWZpeD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFVSTCBwcm9wZXJ0aWVzIGFuZCB0aGUgcHJvdG9jb2xzIHRoZXkgbWF5IHVzZS4gKi9cbiAgcHJvdG9jb2xzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+IHwgbnVsbFxuICAvKiogUHJvcGVydGllcyBzZXQgb24gZWxlbWVudHMgd2hhdGV2ZXIgdGhleSBoYWQsIGJ5IHRhZyBuYW1lLiAqL1xuICByZXF1aXJlZD86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFByaW1pdGl2ZT4+IHwgbnVsbFxuICAvKiogRWxlbWVudHMgZHJvcHBlZCB3aXRoIHRoZWlyIGNvbnRlbnQgcmF0aGVyIHRoYW4gdW53cmFwcGVkLiAqL1xuICBzdHJpcD86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogVGhlIGVsZW1lbnRzIGtlcHQuICovXG4gIHRhZ05hbWVzPzogc3RyaW5nW10gfCBudWxsXG59XG5cbi8qKiBBIHByb3BlcnR5IGEgc2FuaXRpemUgc2NoZW1hIGFsbG93czogYnkgbmFtZSwgb3IgYSBuYW1lIGFuZCBpdHMgYWxsb3dlZCB2YWx1ZXMuICovXG5leHBvcnQgdHlwZSBBdHRyaWJ1dGVEZWZpbml0aW9uID0gc3RyaW5nIHwgUHJpbWl0aXZlW11cblxuLyoqIEEgcHJpbWl0aXZlIHByb3BlcnR5IHZhbHVlLiAqL1xuZXhwb3J0IHR5cGUgUHJpbWl0aXZlID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZ1xuXG4vKiogYGh0bWwuc2x1Z2A6IGlkcyBvbiBoZWFkaW5ncywgZnJvbSB0aGVpciB0ZXh0OyBvcHRpb25zIG5hbWVkIGFzIHJlaHlwZS1zbHVnIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFNsdWdPcHRpb25zIHtcbiAgLyoqIFB1dCBiZWZvcmUgZWFjaCBpZC4gQGRlZmF1bHQgXCJcIiAqL1xuICBwcmVmaXg/OiBzdHJpbmdcbn1cblxuLyoqIGBodG1sLmV4dGVybmFsTGlua3NgOiBgcmVsYCwgYHRhcmdldGAgYW5kIG1vcmUgb24gbGlua3MgdG8gb3RoZXIgc2l0ZXMsIGFzIHJlaHlwZS1leHRlcm5hbC1saW5rcyBhZGRzIHRoZW07IG9wdGlvbnMgbmFtZWQgYXMgaXQgbmFtZXMgdGhlbSwgSlNPTiB2YWx1ZXMgb25seS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxMaW5rc09wdGlvbnMge1xuICAvKiogVGhlIGB0YXJnZXRgIG9mIGVhY2ggZXh0ZXJuYWwgbGluaywgc3VjaCBhcyBgX2JsYW5rYC4gKi9cbiAgdGFyZ2V0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGByZWxgIG9mIGVhY2ggZXh0ZXJuYWwgbGluazogYSBsaXN0LCBvciB0b2tlbnMgc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlOyBgbm9mb2xsb3dgIHdoZW4gbGVmdCBvdXQgb3IgZW1wdHksIG5vbmUgZm9yIGFuIGVtcHR5IGxpc3QuICovXG4gIHJlbD86IFRva2VucyB8IG51bGxcbiAgLyoqIFRoZSBwcm90b2NvbHMgb2YgYWJzb2x1dGUgVVJMcyB0aGF0IGNvdW50IGFzIGV4dGVybmFsOyBgaHR0cGAgYW5kIGBodHRwc2Agd2hlbiBsZWZ0IG91dC4gQSBwcm90b2NvbC1yZWxhdGl2ZSBgLy/igKZgIFVSTCBhbHdheXMgY291bnRzLiAqL1xuICBwcm90b2NvbHM/OiBzdHJpbmdbXSB8IG51bGxcbiAgLyoqIE1vcmUgcHJvcGVydGllcyBmb3IgZWFjaCBleHRlcm5hbCBsaW5rLCBhcyBoYXN0IG5hbWVzIHRoZW0uICovXG4gIHByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgLyoqIGhhc3QgY29udGVudCBhcHBlbmRlZCB0byBlYWNoIGV4dGVybmFsIGxpbmsgaW4gYSBgPHNwYW4+YDogb25lIG5vZGUgb3IgYSBsaXN0LiAqL1xuICBjb250ZW50PzogdW5rbm93blxuICAvKiogVGhlIHByb3BlcnRpZXMgb2YgdGhhdCBgPHNwYW4+YC4gKi9cbiAgY29udGVudFByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbn1cblxuLyoqIFRva2VuczogYSBsaXN0LCBvciBvbmUgc3RyaW5nIG9mIHRoZW0gc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlLiAqL1xuZXhwb3J0IHR5cGUgVG9rZW5zID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIGBodG1sLmV4dHJhY3RUb2NgOiB0aGUgaGVhZGluZ3MsIG5lc3RlZCBieSByYW5rLCBhcyB0aGUgZmlsZSdzIGBkYXRhLnRvY2AsIGFzIEBzdGVmYW5wcm9ic3QvcmVoeXBlLWV4dHJhY3QtdG9jIHN0b3JlcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0VG9jT3B0aW9ucyB7XG4gIC8qKiBBdHRyaWJ1dGVzLCBzdWNoIGFzIGBkYXRhLXRvYy1oaWRkZW5gLCB0aGF0IGtlZXAgYSBoZWFkaW5nIG91dCBvZiB0aGUgdGFibGUgb2YgY29udGVudHM7IHdoYXQgd291bGQgbmVzdCB1bmRlciBpdCBuZXN0cyB1bmRlciB0aGUgaGVhZGluZyBiZWZvcmUuIEBkZWZhdWx0IFtdICovXG4gIHNraXA/OiBzdHJpbmdbXVxufVxuXG4vKiogYGh0bWwuaGlnaGxpZ2h0YDogY29kZSBibG9ja3MgY29sb3JlZCBhcyBTaGlraSBjb2xvcnMgdGhlbSwgbmF0aXZlbHkgYnkgZ2lhbGxvOyBvcHRpb25zIG5hbWVkIGFzIEBzaGlraWpzL3JlaHlwZSBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBIaWdobGlnaHRPcHRpb25zIHtcbiAgLyoqIFRoZSB0aGVtZSBvZiBlYWNoIGNvbG9yIG1vZGUsIGBsaWdodGAgZmlyc3QsIGFzIGB7XCJsaWdodFwiOiDigKYsIFwiZGFya1wiOiDigKZ9YC4gKi9cbiAgdGhlbWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsXG4gIC8qKiBUaGUgb25lIHRoZW1lLCB3aGVuIGB0aGVtZXNgIGlzIG5vdCBnaXZlbi4gKi9cbiAgdGhlbWU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgbGFuZ3VhZ2Ugb2YgYSBibG9jayB0aGF0IG5hbWVzIG5vbmU7IHN1Y2ggYSBibG9jayBpcyBsZWZ0IGFsb25lIHdpdGhvdXQgaXQuICovXG4gIGRlZmF1bHRMYW5ndWFnZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBsYW5ndWFnZSBvZiBhIGJsb2NrIG5hbWluZyBvbmUgU2hpa2kgZG9lcyBub3Qga25vdzsgbGVmdCBhbG9uZSB3aXRob3V0IGl0LiAqL1xuICBmYWxsYmFja0xhbmd1YWdlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogQ29sb3JzIHRvIHJlcGxhY2UsIGJ5IHRoZWlyIGxvd2VyY2FzZSBzcGVsbGluZzogYSBjb2xvciBmb3IgZXZlcnkgdGhlbWUsIG9yIGEgdGhlbWUncyBuYW1lIHRvIGEgbWFwIG9mIGl0cyBvd24uICovXG4gIGNvbG9yUmVwbGFjZW1lbnRzPzogUmVjb3JkPHN0cmluZywgQ29sb3JSZXBsYWNlbWVudD5cbiAgLyoqIEFkZCBgbGFuZ3VhZ2UtPG5hbWU+YCB0byBlYWNoIGhpZ2hsaWdodGVkIGA8Y29kZT5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhZGRMYW5ndWFnZUNsYXNzPzogYm9vbGVhblxuICAvKiogSGlnaGxpZ2h0IGlubGluZSBjb2RlIHRvbywgYnkgaG93IGl0IG5hbWVzIGl0cyBsYW5ndWFnZTogYHRhaWxpbmctY3VybHktY29sb25gIHJlYWRzIGBgIGBhKCl7OmpzfWAgYGAuICovXG4gIGlubGluZT86IElubGluZUNvZGUgfCBudWxsXG4gIC8qKiBUaGUgYDxwcmU+YCBwcm9wZXJ0eSB0aGF0IGdldHMgYSBibG9jaydzIG1ldGEsIHRoZSB0ZXh0IGFmdGVyIGl0cyBsYW5ndWFnZTsgdGhlIEpTT04gc3RhbmQtaW4gZm9yIGBwYXJzZU1ldGFTdHJpbmc6IG1ldGEgPT4gKHsgW25hbWVdOiBtZXRhIH0pYC4gKi9cbiAgbWV0YVByb3BlcnR5Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHRyYW5zZm9ybWVycyBvZiBAc2hpa2lqcy90cmFuc2Zvcm1lcnMgdG8gcnVuLCBpbiBvcmRlciwgYnkgbmFtZSBvciB3aXRoIG9wdGlvbnMuICovXG4gIHRyYW5zZm9ybWVycz86IEhpZ2hsaWdodFRyYW5zZm9ybWVyW11cbiAgLyoqIExpbmVzIGF0IGxlYXN0IHRoaXMgbG9uZywgaW4gVVRGLTE2IHVuaXRzLCBhcmUgbGVmdCBvbmUgcGxhaW4gdG9rZW4gYXMgU2hpa2kncyBvd24gb3B0aW9uIGxlYXZlcyB0aGVtOyAyLDAwMCB3aGVuIGxlZnQgb3V0LCB3aGVyZSBTaGlraSBoYXMgbm8gbGltaXQsIHNpbmNlIGEgZ3JhbW1hcidzIHRpbWUgZ3Jvd3Mgd2l0aCB0aGUgc3F1YXJlIG9mIGEgbGluZSdzIGxlbmd0aC4gYDBgIGxpZnRzIGl0LiAqL1xuICB0b2tlbml6ZU1heExpbmVMZW5ndGg/OiBudW1iZXIgfCBudWxsXG59XG5cbi8qKiBBIHJlcGxhY2VtZW50IGNvbG9yLCBvciBhIHRoZW1lJ3Mgb3duIHJlcGxhY2VtZW50cy4gKi9cbmV4cG9ydCB0eXBlIENvbG9yUmVwbGFjZW1lbnQgPSBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG5cbi8qKiBIb3cgaW5saW5lIGNvZGUgbmFtZXMgaXRzIGxhbmd1YWdlLiAqL1xuZXhwb3J0IHR5cGUgSW5saW5lQ29kZSA9IFwidGFpbGluZy1jdXJseS1jb2xvblwiXG5cbi8qKiBBIHRyYW5zZm9ybWVyIG9mIEBzaGlraWpzL3RyYW5zZm9ybWVyczogaXRzIG5hbWUgYWxvbmUsIG9yIGl0cyBuYW1lIGFuZCBvcHRpb25zLiAqL1xuZXhwb3J0IHR5cGUgSGlnaGxpZ2h0VHJhbnNmb3JtZXIgPSBUcmFuc2Zvcm1lck5hbWUgfCBDb25maWd1cmVkVHJhbnNmb3JtZXJcblxuLyoqIFRoZSB0cmFuc2Zvcm1lcnMgYGh0bWwuaGlnaGxpZ2h0YCBydW5zIG5hdGl2ZWx5LiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNmb3JtZXJOYW1lID0gXCJub3RhdGlvbkRpZmZcIiB8IFwibm90YXRpb25Gb2N1c1wiIHwgXCJub3RhdGlvbkhpZ2hsaWdodFwiIHwgXCJub3RhdGlvbkVycm9yTGV2ZWxcIiB8IFwibWV0YUhpZ2hsaWdodFwiIHwgXCJtZXRhV29yZEhpZ2hsaWdodFwiIHwgXCJyZW5kZXJMaW5lTnVtYmVyXCJcblxuLyoqIEEgdHJhbnNmb3JtZXIgd2l0aCBpdHMgb3B0aW9ucywgYXMgQHNoaWtpanMvdHJhbnNmb3JtZXJzIG5hbWVzIHRoZW0uICovXG5leHBvcnQgdHlwZSBDb25maWd1cmVkVHJhbnNmb3JtZXIgPSB7IG5hbWU6IFwibm90YXRpb25EaWZmXCI7IGNsYXNzTGluZUFkZD86IENsYXNzZXMgfCBudWxsOyBjbGFzc0xpbmVSZW1vdmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVQcmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVDb2RlPzogQ2xhc3NlcyB8IG51bGwgfSB8IHsgbmFtZTogXCJub3RhdGlvbkZvY3VzXCI7IGNsYXNzQWN0aXZlTGluZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm5vdGF0aW9uSGlnaGxpZ2h0XCI7IGNsYXNzQWN0aXZlTGluZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm5vdGF0aW9uRXJyb3JMZXZlbFwiOyBjbGFzc01hcD86IFJlY29yZDxzdHJpbmcsIENsYXNzZXM+IHwgbnVsbDsgY2xhc3NBY3RpdmVQcmU/OiBDbGFzc2VzIHwgbnVsbDsgY2xhc3NBY3RpdmVDb2RlPzogQ2xhc3NlcyB8IG51bGwgfSB8IHsgbmFtZTogXCJtZXRhSGlnaGxpZ2h0XCI7IGNsYXNzTmFtZT86IENsYXNzZXMgfCBudWxsOyB6ZXJvSW5kZXhlZD86IGJvb2xlYW4gfSB8IHsgbmFtZTogXCJtZXRhV29yZEhpZ2hsaWdodFwiOyBjbGFzc05hbWU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcInJlbmRlckxpbmVOdW1iZXJcIjsgY2xhc3NMaW5lTnVtYmVyPzogQ2xhc3NlcyB8IG51bGw7IHN0YXJ0PzogbnVtYmVyIHwgbnVsbCB9XG5cbi8qKiBDbGFzcyBuYW1lczogYSBsaXN0LCBvciBvbmUgc3RyaW5nIG9mIHRoZW0gc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlLiAqL1xuZXhwb3J0IHR5cGUgQ2xhc3NlcyA9IHN0cmluZyB8IHN0cmluZ1tdXG5cbi8qKiBgaHRtbC5rYXRleGA6IG1hdGggcmVuZGVyZWQgYXMgcmVoeXBlLWthdGV4IHJlbmRlcnMgaXQsIG5hdGl2ZWx5IGJ5IGthdGV4LXJzOyBvcHRpb25zIG5hbWVkIGFzIEthVGVYIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEthdGV4T3B0aW9ucyB7XG4gIC8qKiBUaGUgbWFya3VwIHRvIHdyaXRlLCBib3RoIEhUTUwgYW5kIE1hdGhNTCBieSBkZWZhdWx0LiAqL1xuICBvdXRwdXQ/OiBLYXRleE91dHB1dCB8IG51bGxcbiAgLyoqIFB1dCBlcXVhdGlvbiBudW1iZXJzIG9uIHRoZSBsZWZ0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBsZXFubz86IGJvb2xlYW5cbiAgLyoqIEFsaWduIGRpc3BsYXkgbWF0aCB0byB0aGUgbGVmdCBpbnN0ZWFkIG9mIGNlbnRlcmluZyBpdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZmxlcW4/OiBib29sZWFuXG4gIC8qKiBUaGUgY29sb3Igb2YgbWF0aCB0aGF0IGZhaWxzIHRvIHJlbmRlciwgYCNjYzAwMDBgIGJ5IGRlZmF1bHQuICovXG4gIGVycm9yQ29sb3I/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBNYWNyb3MgYnkgbmFtZSwgZWFjaCB0byB0aGUgVGVYIGl0IGV4cGFuZHMgdG8sIGFzIGB7XCJcXFxcUlJcIjogXCJcXFxcbWF0aGJie1J9XCJ9YC4gQGRlZmF1bHQge30gKi9cbiAgbWFjcm9zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogVGhlIHRoaW5uZXN0IGEgcnVsZSwgc3VjaCBhcyBhIGZyYWN0aW9uIGxpbmUsIGlzIGRyYXduLCBpbiBlbXMuICovXG4gIG1pblJ1bGVUaGlja25lc3M/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBMZXQgYFxcY29sb3JgIGNvbG9yIHRoZSB0ZXh0IGFmdGVyIGl0LCBhcyBMYVRlWCBkb2VzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xvcklzVGV4dENvbG9yPzogYm9vbGVhblxuICAvKiogV2hhdCB0byBkbyB3aXRoIGlucHV0IExhVGVYIHdvdWxkIHJlamVjdDogYHRydWVgIG9yIGBcImVycm9yXCJgIGZhaWxzIGl0LCBgXCJ3YXJuXCJgIHByaW50cyBhIHdhcm5pbmcsIGBmYWxzZWAgb3IgYFwiaWdub3JlXCJgICh0aGUgZGVmYXVsdCkgYWNjZXB0cyBpdC4gKi9cbiAgc3RyaWN0PzogS2F0ZXhTdHJpY3QgfCBudWxsXG4gIC8qKiBBbGxvdyBjb21tYW5kcyB0aGF0IGNhbiBydW4gdW50cnVzdGVkIGlucHV0LCBzdWNoIGFzIGBcXGhyZWZgIGFuZCBgXFxpbmNsdWRlZ3JhcGhpY3NgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0cnVzdD86IGJvb2xlYW5cbiAgLyoqIFRoZSBsYXJnZXN0IGEgdXNlci1naXZlbiBzaXplIG1heSBiZSwgaW4gZW1zLiAqL1xuICBtYXhTaXplPzogbnVtYmVyIHwgbnVsbFxuICAvKiogSG93IG1hbnkgbWFjcm8gZXhwYW5zaW9ucyBvbmUgZm9ybXVsYSBtYXkgdGFrZSwgMTAwMCBieSBkZWZhdWx0LiAqL1xuICBtYXhFeHBhbmQ/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBMZXQgZGVmaW5pdGlvbnMgc3VjaCBhcyBgXFxkZWZgIGxhc3QgcGFzdCB0aGUgZm9ybXVsYSB0aGV5IGFyZSBpbi4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZ2xvYmFsR3JvdXA/OiBib29sZWFuXG59XG5cbi8qKiBUaGUgbWFya3VwIEthVGVYIHdyaXRlcy4gKi9cbmV4cG9ydCB0eXBlIEthdGV4T3V0cHV0ID0gXCJodG1sXCIgfCBcIm1hdGhtbFwiIHwgXCJodG1sQW5kTWF0aG1sXCJcblxuLyoqIEhvdyBzdHJpY3RseSBLYVRlWCBob2xkcyBpbnB1dCB0byBMYVRlWC4gKi9cbmV4cG9ydCB0eXBlIEthdGV4U3RyaWN0ID0gYm9vbGVhbiB8IEthdGV4U3RyaWN0TW9kZVxuXG4vKiogT25lIGxldmVsIG9mIEthVGVYJ3Mgc3RyaWN0bmVzcy4gKi9cbmV4cG9ydCB0eXBlIEthdGV4U3RyaWN0TW9kZSA9IFwiaWdub3JlXCIgfCBcIndhcm5cIiB8IFwiZXJyb3JcIlxuXG4vKiogYGh0bWwudG9NYXJrZG93bmA6IGhhc3QgaW50byBtZGFzdDsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtdG8tbWRhc3QgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9NYXJrZG93bk9wdGlvbnMge1xuICAvKiogV3JhcCBhbGwgcGhyYXNpbmcgY29udGVudCBvZiB0aGUgcm9vdCBpbiBwYXJhZ3JhcGhzLCBhcyBmb3IgYSB3aG9sZSBkb2N1bWVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZG9jdW1lbnQ/OiBib29sZWFuXG4gIC8qKiBDb2xsYXBzZSB3aGl0ZXNwYWNlIGhvbGRpbmcgYSBsaW5lIGVuZGluZyB0byB0aGF0IGxpbmUgZW5kaW5nIGluc3RlYWQgb2YgYSBzcGFjZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgbmV3bGluZXM/OiBib29sZWFuXG4gIC8qKiBUaGUgdGV4dCBvZiBhIGNoZWNrZWQgY2hlY2tib3ggb3IgcmFkaW8sIGBbeF1gIGJ5IGRlZmF1bHQuICovXG4gIGNoZWNrZWQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdGV4dCBvZiBhbiB1bmNoZWNrZWQgY2hlY2tib3ggb3IgcmFkaW8sIGBbIF1gIGJ5IGRlZmF1bHQuICovXG4gIHVuY2hlY2tlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBxdW90ZXMgYDxxPmAgdXNlcywgYW4gb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyYWN0ZXIgZWFjaCwgYWx0ZXJuYXRpbmcgYnkgaG93IGRlZXAgaXQgbmVzdHM7IGBcImAgYnkgZGVmYXVsdC4gKi9cbiAgcXVvdGVzPzogc3RyaW5nW10gfCBudWxsXG59XG5cbi8qKiBgaHRtbC5zdHJpbmdpZnlgOiBoYXN0IGludG8gSFRNTDsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtdG8taHRtbCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdpZnlPcHRpb25zIHtcbiAgLyoqIFdyaXRlIHJhdyBub2RlcyBhcyB0aGV5IGFyZSBpbnN0ZWFkIG9mIGVzY2FwaW5nIHRoZW0uIEBkZWZhdWx0IGZhbHNlICovXG4gIGFsbG93RGFuZ2Vyb3VzSHRtbD86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGNoYXJhY3RlcnMgdGhhdCBhcmUgb25seSBkYW5nZXJvdXMgaW4gc29tZSBjb250ZXh0cywgc3VjaCBhcyBgYCBgIGBgLCBhcyB0aGV5IGFyZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNDaGFyYWN0ZXJzPzogYm9vbGVhblxuICAvKiogTGVhdmUgY2hhcmFjdGVycyBhcyB0aGV5IGFyZSB3aGVyZSBicm93c2VycyBhY2NlcHQgdGhlbSB0aG91Z2ggdGhlIHNwZWMgZG9lcyBub3QuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFsbG93UGFyc2VFcnJvcnM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBjb21tZW50cyBhcyBib2d1cyBjb21tZW50cywgYDw/YT5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBib2d1c0NvbW1lbnRzPzogYm9vbGVhblxuICAvKiogQ2xvc2UgZW1wdHkgZm9yZWlnbiBlbGVtZW50cywgYDxhIC8+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY2xvc2VFbXB0eUVsZW1lbnRzPzogYm9vbGVhblxuICAvKiogQ2xvc2Ugdm9pZCBlbGVtZW50cywgYDxiciAvPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGNsb3NlU2VsZkNsb3Npbmc/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBlbXB0eSBhdHRyaWJ1dGVzIGFzIGJhcmUgbmFtZXMsIGBhYCByYXRoZXIgdGhhbiBgYT1cIlwiYC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY29sbGFwc2VFbXB0eUF0dHJpYnV0ZXM/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBvdXQgdGFncyB0aGUgSFRNTCBzcGVjIGxldHMgYSBwYXJzZXIgaW1wbHkuIEBkZWZhdWx0IGZhbHNlICovXG4gIG9taXRPcHRpb25hbFRhZ3M/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBhdHRyaWJ1dGUgdmFsdWVzIHVucXVvdGVkIHdoZXJlIHRoYXQgaXMgc2FmZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcHJlZmVyVW5xdW90ZWQ/OiBib29sZWFuXG4gIC8qKiBUaGUgcXVvdGUgYXR0cmlidXRlIHZhbHVlcyBhcmUgd3JhcHBlZCBpbjogYFwiYCBvciBgJ2AuICovXG4gIHF1b3RlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVXNlIHRoZSBvdGhlciBxdW90ZSB3aGVuIHRoZSB2YWx1ZSBob2xkcyBtb3JlIG9mIHRoZSBwcmVmZXJyZWQgb25lLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBxdW90ZVNtYXJ0PzogYm9vbGVhblxuICAvKiogVGhlIHNwYWNlIHRoZSB0cmVlIGlzIGluOiBgaHRtbGAgb3IgYHN2Z2AuICovXG4gIHNwYWNlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogTGVhdmUgb3V0IHRoZSBzcGFjZSBiZXR3ZWVuIHF1b3RlZCBhdHRyaWJ1dGVzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodEF0dHJpYnV0ZXM/OiBib29sZWFuXG4gIC8qKiBKb2luIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMgd2l0aCBgLGAgcmF0aGVyIHRoYW4gYCwgYC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdGlnaHRDb21tYVNlcGFyYXRlZExpc3RzPzogYm9vbGVhblxuICAvKiogV3JpdGUgYDwhZG9jdHlwZWh0bWw+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdGlnaHREb2N0eXBlPzogYm9vbGVhblxuICAvKiogTGVhdmUgb3V0IHRoZSBzcGFjZSBiZWZvcmUgYC8+YCB3aGVuIHRoZSBhdHRyaWJ1dGVzIGFsbG93LiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodFNlbGZDbG9zaW5nPzogYm9vbGVhblxuICAvKiogV3JpdGUgYDwhRE9DVFlQRSBodG1sPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIHVwcGVyRG9jdHlwZT86IGJvb2xlYW5cbiAgLyoqIFRoZSB0YWcgbmFtZXMgb2Ygdm9pZCBlbGVtZW50cywgd2hpY2ggaGF2ZSBubyBjbG9zaW5nIHRhZy4gKi9cbiAgdm9pZHM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIFRoZSBgaHRtbC5wYXJzZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKG9wdGlvbnM/OiBQYXJzZU9wdGlvbnMpOiBQbHVnaW48XCJodG1sLnBhcnNlXCIsIFBhcnNlT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwucGFyc2VcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5wYXJzZVwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5yYXdgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByYXcob3B0aW9ucz86IFJhd09wdGlvbnMpOiBQbHVnaW48XCJodG1sLnJhd1wiLCBSYXdPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5yYXdcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5yYXdcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZm9ybWF0YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KG9wdGlvbnM/OiBGb3JtYXRPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5mb3JtYXRcIiwgRm9ybWF0T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuZm9ybWF0XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuZm9ybWF0XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnNhbml0aXplYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemUob3B0aW9ucz86IFNhbml0aXplT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwuc2FuaXRpemVcIiwgU2FuaXRpemVPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5zYW5pdGl6ZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNhbml0aXplXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnNsdWdgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbHVnKG9wdGlvbnM/OiBTbHVnT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwuc2x1Z1wiLCBTbHVnT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuc2x1Z1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNsdWdcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZXh0ZXJuYWxMaW5rc2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVybmFsTGlua3Mob3B0aW9ucz86IEV4dGVybmFsTGlua3NPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5leHRlcm5hbExpbmtzXCIsIEV4dGVybmFsTGlua3NPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRlcm5hbExpbmtzXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuZXh0ZXJuYWxMaW5rc1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC51bndyYXBJbWFnZXNgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBJbWFnZXMoKTogUGx1Z2luPFwiaHRtbC51bndyYXBJbWFnZXNcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcImh0bWwudW53cmFwSW1hZ2VzXCIgfVxufVxuXG4vKiogVGhlIGBodG1sLmV4dHJhY3RUb2NgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VG9jKG9wdGlvbnM/OiBFeHRyYWN0VG9jT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwuZXh0cmFjdFRvY1wiLCBFeHRyYWN0VG9jT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuZXh0cmFjdFRvY1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLmV4dHJhY3RUb2NcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuaGlnaGxpZ2h0YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gaGlnaGxpZ2h0KG9wdGlvbnM/OiBIaWdobGlnaHRPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5oaWdobGlnaHRcIiwgSGlnaGxpZ2h0T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuaGlnaGxpZ2h0XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuaGlnaGxpZ2h0XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLmthdGV4YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24ga2F0ZXgob3B0aW9ucz86IEthdGV4T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwua2F0ZXhcIiwgS2F0ZXhPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5rYXRleFwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLmthdGV4XCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnRvTWFya2Rvd25gIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b01hcmtkb3duKG9wdGlvbnM/OiBUb01hcmtkb3duT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwudG9NYXJrZG93blwiLCBUb01hcmtkb3duT3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwudG9NYXJrZG93blwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnRvTWFya2Rvd25cIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hdHVyYWxMYW5ndWFnZSgpOiBQbHVnaW48XCJodG1sLnRvTmF0dXJhbExhbmd1YWdlXCI+IHtcbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnRvTmF0dXJhbExhbmd1YWdlXCIgfVxufVxuXG4vKiogVGhlIGBodG1sLnN0cmluZ2lmeWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeShvcHRpb25zPzogU3RyaW5naWZ5T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwuc3RyaW5naWZ5XCIsIFN0cmluZ2lmeU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnN0cmluZ2lmeVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnN0cmluZ2lmeVwiLCBvcHRpb25zIH1cbn1cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbmVyYXRlZC9odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQTRRL0UsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBc0I7SUFDMUMsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7SUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDeEMsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQW9CO0lBQ3RDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3RDLENBQUM7QUFFRCxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUF1QjtJQUM1QyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN6QyxDQUFDO0FBRUQsa0NBQWtDO0FBQ2xDLE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBeUI7SUFDaEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUE7SUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQXFCO0lBQ3hDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3ZDLENBQUM7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE4QjtJQUMxRCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFBO0lBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDaEQsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLENBQUE7QUFDdEMsQ0FBQztBQUVELG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQTJCO0lBQ3BELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUE7SUFDN0QsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMEI7SUFDbEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQTtJQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzVDLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxPQUFzQjtJQUMxQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQTtJQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBMkI7SUFDcEQsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQzdDLENBQUM7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUE7QUFDM0MsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQTBCO0lBQ2xELElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGBwbnBtIGdlbmVyYXRlOmJpbmRpbmdzYCBmcm9tIHRoZSBjcmF0ZSdzIHBsdWdpbnM7IGRvIG5vdCBlZGl0LlxuXG5pbXBvcnQgdHlwZSB7IFJvb3QgfSBmcm9tIFwiaGFzdFwiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGx1Z2luIH0gZnJvbSBcIi4uL21vZGVscy9wbHVnaW4udHNcIlxuXG4vKiogYGh0bWwucGFyc2VgOiBIVE1MIGludG8gaGFzdDsgb3B0aW9ucyBuYW1lZCBhcyByZWh5cGUtcGFyc2UgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VPcHRpb25zIHtcbiAgLyoqIFBhcnNlIGEgZnJhZ21lbnQsIGFzIGluIGEgYHRlbXBsYXRlYCwgcmF0aGVyIHRoYW4gYSB3aG9sZSBkb2N1bWVudC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZnJhZ21lbnQ/OiBib29sZWFuXG4gIC8qKiBSZXBvcnQgcGFyc2UgZXJyb3JzIGFzIG1lc3NhZ2VzIG9uIHRoZSBmaWxlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBlbWl0UGFyc2VFcnJvcnM/OiBib29sZWFuXG4gIC8qKiBBZGQgdGhlIHBvc2l0aW9ucyBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXMgdG8gZWxlbWVudHMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHZlcmJvc2U/OiBib29sZWFuXG59XG5cbi8qKiBgaHRtbC5yYXdgOiByZXBhcnNlIHJhdyBIVE1MIGFuZCBmaXggbmVzdGluZyB0aHJvdWdoIHRoZSBIVE1MIHBhcnNlcjsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtcmF3IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFJhd09wdGlvbnMge1xuICAvKiogTm9kZSB0eXBlcywgdW5rbm93biB0byBoYXN0LCB0byBjb3B5IHRocm91Z2ggYXMgdGhleSBhcmU7IHRoZWlyIGNoaWxkcmVuIGFyZSByZXBhcnNlZCBvbiB0aGVpciBvd24uIEBkZWZhdWx0IFtdICovXG4gIHBhc3NUaHJvdWdoPzogc3RyaW5nW11cbiAgLyoqIEVzY2FwZSB0aGUgb3BlbmluZyBgPGAgb2YgdGhlIHRhZ3MgR0ZNJ3MgdGFnZmlsdGVyIGRpc2FsbG93cyBpbiByYXcgbm9kZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRhZ2ZpbHRlcj86IGJvb2xlYW5cbn1cblxuLyoqIGBodG1sLmZvcm1hdGA6IGluZGVudCBhbmQgY29sbGFwc2Ugd2hpdGVzcGFjZSBmb3IgcmVhZGFibGUgSFRNTDsgb3B0aW9ucyBuYW1lZCBhcyBoYXN0LXV0aWwtZm9ybWF0IG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE9wdGlvbnMge1xuICAvKiogVGFnIG5hbWVzIG9mIGVsZW1lbnRzIHRvIHB1dCBhIGJsYW5rIGxpbmUgYmV0d2Vlbiwgd2hlbiBib3RoIGFyZSBvbmUuIEBkZWZhdWx0IFtdICovXG4gIGJsYW5rcz86IHN0cmluZ1tdXG4gIC8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb246IGEgbnVtYmVyIG9mIHNwYWNlcyBvciB0aGUgdGV4dCBpdHNlbGY7IHR3byBzcGFjZXMgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50PzogSW5kZW50IHwgbnVsbFxuICAvKiogSW5kZW50IHRoZSBmaXJzdCBsZXZlbCwgdXN1YWxseSBgPGh0bWw+YCdzIGBoZWFkYCBhbmQgYGJvZHlgOyBgdHJ1ZWAgd2hlbiBsZWZ0IG91dC4gKi9cbiAgaW5kZW50SW5pdGlhbD86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBPbmx5IGNvbGxhcHNlIHdoaXRlc3BhY2UsIGFzIHJlaHlwZS1taW5pZnktd2hpdGVzcGFjZSBkb2VzLCBhZGRpbmcgbm8gbGluZSBlbmRpbmdzIG9yIGluZGVudGF0aW9uOyBgeyBuZXdsaW5lczogdHJ1ZSB9YCBjb2xsYXBzZXMgYSBydW4gaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIGl0LiAqL1xuICBtaW5pZnk/OiBNaW5pZnkgfCBudWxsXG59XG5cbi8qKiBPbmUgbGV2ZWwgb2YgaW5kZW50YXRpb24uICovXG5leHBvcnQgdHlwZSBJbmRlbnQgPSBudW1iZXIgfCBzdHJpbmdcblxuLyoqIGBodG1sLmZvcm1hdGAncyBgbWluaWZ5YDogb24sIG9yIG9uIHdpdGggcmVoeXBlLW1pbmlmeS13aGl0ZXNwYWNlJ3Mgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIE1pbmlmeSA9IGJvb2xlYW4gfCBNaW5pZnlPcHRpb25zXG5cbi8qKiByZWh5cGUtbWluaWZ5LXdoaXRlc3BhY2UncyBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaW5pZnlPcHRpb25zIHtcbiAgLyoqIENvbGxhcHNlIGEgcnVuIG9mIHdoaXRlc3BhY2UgaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIGEgbGluZSBlbmRpbmcsIG5vdCBhIHNwYWNlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBuZXdsaW5lcz86IGJvb2xlYW5cbn1cblxuLyoqIGBodG1sLnNhbml0aXplYDoga2VlcCBvbmx5IHdoYXQgYSBzY2hlbWEgYWxsb3dzOyBvcHRpb25zOiBoYXN0LXV0aWwtc2FuaXRpemUncyBzY2hlbWEsIHdoZXJlIGEgZmllbGQgbGVmdCBvdXQga2VlcHMgdGhlIGRlZmF1bHQgc2NoZW1hJ3MsIHdoaWNoIGlzIEdpdEh1YidzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW5pdGl6ZU9wdGlvbnMge1xuICAvKiogS2VlcCBjb21tZW50cy4gKi9cbiAgYWxsb3dDb21tZW50cz86IGJvb2xlYW4gfCBudWxsXG4gIC8qKiBLZWVwIGRvY3R5cGVzLiAqL1xuICBhbGxvd0RvY3R5cGVzPzogYm9vbGVhbiB8IG51bGxcbiAgLyoqIEVsZW1lbnRzIGFsbG93ZWQgb25seSBpbnNpZGUgb25lIG9mIHRoZXNlIGFuY2VzdG9ycywgYnkgdGFnIG5hbWUuICovXG4gIGFuY2VzdG9ycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiB8IG51bGxcbiAgLyoqIFByb3BlcnRpZXMgYWxsb3dlZCBwZXIgdGFnIG5hbWUsIGAqYCBmb3IgZXZlcnkgZWxlbWVudDsgYSBsaXN0IG5hbWVzIGEgcHJvcGVydHkgYW5kIHRoZSB2YWx1ZXMgaXQgbWF5IGhhdmUuICovXG4gIGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBBdHRyaWJ1dGVEZWZpbml0aW9uW10+IHwgbnVsbFxuICAvKiogUHJvcGVydGllcyB3aG9zZSB2YWx1ZXMgZ2V0IGBjbG9iYmVyX3ByZWZpeGAsIHNvIHRoZXkgY2Fubm90IGNsb2JiZXIgZ2xvYmFscy4gKi9cbiAgY2xvYmJlcj86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogVGhlIHByZWZpeCBvZiBjbG9iYmVyZWQgdmFsdWVzLiAqL1xuICBjbG9iYmVyUHJlZml4Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogVVJMIHByb3BlcnRpZXMgYW5kIHRoZSBwcm90b2NvbHMgdGhleSBtYXkgdXNlLiAqL1xuICBwcm90b2NvbHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gfCBudWxsXG4gIC8qKiBQcm9wZXJ0aWVzIHNldCBvbiBlbGVtZW50cyB3aGF0ZXZlciB0aGV5IGhhZCwgYnkgdGFnIG5hbWUuICovXG4gIHJlcXVpcmVkPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgUHJpbWl0aXZlPj4gfCBudWxsXG4gIC8qKiBFbGVtZW50cyBkcm9wcGVkIHdpdGggdGhlaXIgY29udGVudCByYXRoZXIgdGhhbiB1bndyYXBwZWQuICovXG4gIHN0cmlwPzogc3RyaW5nW10gfCBudWxsXG4gIC8qKiBUaGUgZWxlbWVudHMga2VwdC4gKi9cbiAgdGFnTmFtZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIEEgcHJvcGVydHkgYSBzYW5pdGl6ZSBzY2hlbWEgYWxsb3dzOiBieSBuYW1lLCBvciBhIG5hbWUgYW5kIGl0cyBhbGxvd2VkIHZhbHVlcy4gKi9cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZURlZmluaXRpb24gPSBzdHJpbmcgfCBQcmltaXRpdmVbXVxuXG4vKiogQSBwcmltaXRpdmUgcHJvcGVydHkgdmFsdWUuICovXG5leHBvcnQgdHlwZSBQcmltaXRpdmUgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nXG5cbi8qKiBgaHRtbC5zbHVnYDogaWRzIG9uIGhlYWRpbmdzLCBmcm9tIHRoZWlyIHRleHQ7IG9wdGlvbnMgbmFtZWQgYXMgcmVoeXBlLXNsdWcgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2x1Z09wdGlvbnMge1xuICAvKiogUHV0IGJlZm9yZSBlYWNoIGlkLiBAZGVmYXVsdCBcIlwiICovXG4gIHByZWZpeD86IHN0cmluZ1xuICAvKiogTGluayBlYWNoIGhlYWRpbmcgd2l0aCBhbiBgaWRgIHRvIGl0c2VsZiwgYXMgcmVoeXBlLWF1dG9saW5rLWhlYWRpbmdzIGRvZXM6IGB0cnVlYCwgb3IgaXRzIG9wdGlvbnMuICovXG4gIGF1dG9saW5rPzogQXV0b2xpbmsgfCBudWxsXG59XG5cbi8qKiBgaHRtbC5zbHVnYCdzIGBhdXRvbGlua2A6IG9uLCBvciBvbiB3aXRoIHJlaHlwZS1hdXRvbGluay1oZWFkaW5ncycgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIEF1dG9saW5rID0gYm9vbGVhbiB8IEF1dG9saW5rT3B0aW9uc1xuXG4vKiogcmVoeXBlLWF1dG9saW5rLWhlYWRpbmdzJyBvcHRpb25zLCBKU09OIHZhbHVlcyBvbmx5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvbGlua09wdGlvbnMge1xuICAvKiogV2hlcmUgdGhlIGxpbmsgZ29lczogaW4gdGhlIGhlYWRpbmcgZmlyc3Qgb3IgbGFzdCwgYXJvdW5kIGl0cyBjb250ZW50LCBvciBiZWZvcmUgb3IgYWZ0ZXIgaXQuICovXG4gIGJlaGF2aW9yPzogQXV0b2xpbmtCZWhhdmlvclxuICAvKiogVGhlIGxpbmsncyBwcm9wZXJ0aWVzLCBhcyBoYXN0IG5hbWVzIHRoZW07IGBhcmlhSGlkZGVuYCBhbmQgYHRhYkluZGV4OiAtMWAgZm9yIGBwcmVwZW5kYCBhbmQgYGFwcGVuZGAgd2hlbiBsZWZ0IG91dC4gKi9cbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogaGFzdCBjb250ZW50IG9mIHRoZSBsaW5rLCBvbmUgbm9kZSBvciBhIGxpc3Q7IGA8c3BhbiBjbGFzcz1cImljb24gaWNvbi1saW5rXCI+YCB3aGVuIGxlZnQgb3V0LCBleGNlcHQgZm9yIGB3cmFwYCwgd2hpY2ggYXBwZW5kcyBpdCB0byB0aGUgaGVhZGluZydzIGNvbnRlbnQuICovXG4gIGNvbnRlbnQ/OiB1bmtub3duXG4gIC8qKiBBIGhhc3QgZWxlbWVudCB3cmFwcGluZyB0aGUgaGVhZGluZyBhbmQgaXRzIGxpbmssIGZvciBgYmVmb3JlYCBhbmQgYGFmdGVyYC4gKi9cbiAgZ3JvdXA/OiB1bmtub3duXG4gIC8qKiBQcm9wZXJ0aWVzIHNldCBvbiBlYWNoIGxpbmtlZCBoZWFkaW5nLiAqL1xuICBoZWFkaW5nUHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogVGhlIHRhZyBuYW1lcyBvZiB0aGUgaGVhZGluZ3MgdG8gbGluazsgZXZlcnkgaGVhZGluZyB3aGVuIGxlZnQgb3V0LiAqL1xuICB0ZXN0PzogVGFnTmFtZXMgfCBudWxsXG59XG5cbi8qKiBXaGVyZSBgYXV0b2xpbmtgIHB1dHMgZWFjaCBoZWFkaW5nJ3MgbGluay4gKi9cbmV4cG9ydCB0eXBlIEF1dG9saW5rQmVoYXZpb3IgPSBcInByZXBlbmRcIiB8IFwiYXBwZW5kXCIgfCBcIndyYXBcIiB8IFwiYmVmb3JlXCIgfCBcImFmdGVyXCJcblxuLyoqIE9uZSB0YWcgbmFtZSBvciBzZXZlcmFsLiAqL1xuZXhwb3J0IHR5cGUgVGFnTmFtZXMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogYGh0bWwuZXh0ZXJuYWxMaW5rc2A6IGByZWxgLCBgdGFyZ2V0YCBhbmQgbW9yZSBvbiBsaW5rcyB0byBvdGhlciBzaXRlcywgYXMgcmVoeXBlLWV4dGVybmFsLWxpbmtzIGFkZHMgdGhlbTsgb3B0aW9ucyBuYW1lZCBhcyBpdCBuYW1lcyB0aGVtLCBKU09OIHZhbHVlcyBvbmx5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbExpbmtzT3B0aW9ucyB7XG4gIC8qKiBUaGUgYHRhcmdldGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rLCBzdWNoIGFzIGBfYmxhbmtgLiAqL1xuICB0YXJnZXQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgYHJlbGAgb2YgZWFjaCBleHRlcm5hbCBsaW5rOiBhIGxpc3QsIG9yIHRva2VucyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2U7IGBub2ZvbGxvd2Agd2hlbiBsZWZ0IG91dCBvciBlbXB0eSwgbm9uZSBmb3IgYW4gZW1wdHkgbGlzdC4gKi9cbiAgcmVsPzogVG9rZW5zIHwgbnVsbFxuICAvKiogVGhlIHByb3RvY29scyBvZiBhYnNvbHV0ZSBVUkxzIHRoYXQgY291bnQgYXMgZXh0ZXJuYWw7IGBodHRwYCBhbmQgYGh0dHBzYCB3aGVuIGxlZnQgb3V0LiBBIHByb3RvY29sLXJlbGF0aXZlIGAvL+KApmAgVVJMIGFsd2F5cyBjb3VudHMuICovXG4gIHByb3RvY29scz86IHN0cmluZ1tdIHwgbnVsbFxuICAvKiogTW9yZSBwcm9wZXJ0aWVzIGZvciBlYWNoIGV4dGVybmFsIGxpbmssIGFzIGhhc3QgbmFtZXMgdGhlbS4gKi9cbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxuICAvKiogaGFzdCBjb250ZW50IGFwcGVuZGVkIHRvIGVhY2ggZXh0ZXJuYWwgbGluayBpbiBhIGA8c3Bhbj5gOiBvbmUgbm9kZSBvciBhIGxpc3QuICovXG4gIGNvbnRlbnQ/OiB1bmtub3duXG4gIC8qKiBUaGUgcHJvcGVydGllcyBvZiB0aGF0IGA8c3Bhbj5gLiAqL1xuICBjb250ZW50UHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbFxufVxuXG4vKiogVG9rZW5zOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBUb2tlbnMgPSBzdHJpbmcgfCBzdHJpbmdbXVxuXG4vKiogYGh0bWwuZXh0cmFjdFRvY2A6IHRoZSBoZWFkaW5ncywgbmVzdGVkIGJ5IHJhbmssIGFzIHRoZSBmaWxlJ3MgYGRhdGEudG9jYCwgYXMgQHN0ZWZhbnByb2JzdC9yZWh5cGUtZXh0cmFjdC10b2Mgc3RvcmVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RUb2NPcHRpb25zIHtcbiAgLyoqIEF0dHJpYnV0ZXMsIHN1Y2ggYXMgYGRhdGEtdG9jLWhpZGRlbmAsIHRoYXQga2VlcCBhIGhlYWRpbmcgb3V0IG9mIHRoZSB0YWJsZSBvZiBjb250ZW50czsgd2hhdCB3b3VsZCBuZXN0IHVuZGVyIGl0IG5lc3RzIHVuZGVyIHRoZSBoZWFkaW5nIGJlZm9yZS4gQGRlZmF1bHQgW10gKi9cbiAgc2tpcD86IHN0cmluZ1tdXG59XG5cbi8qKiBgaHRtbC5oaWdobGlnaHRgOiBjb2RlIGJsb2NrcyBjb2xvcmVkIGFzIFNoaWtpIGNvbG9ycyB0aGVtLCBuYXRpdmVseSBieSBnaWFsbG87IG9wdGlvbnMgbmFtZWQgYXMgQHNoaWtpanMvcmVoeXBlIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodE9wdGlvbnMge1xuICAvKiogVGhlIHRoZW1lIG9mIGVhY2ggY29sb3IgbW9kZSwgYGxpZ2h0YCBmaXJzdCwgYXMgYHtcImxpZ2h0XCI6IOKApiwgXCJkYXJrXCI6IOKApn1gLiAqL1xuICB0aGVtZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgLyoqIFRoZSBvbmUgdGhlbWUsIHdoZW4gYHRoZW1lc2AgaXMgbm90IGdpdmVuLiAqL1xuICB0aGVtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSBsYW5ndWFnZSBvZiBhIGJsb2NrIHRoYXQgbmFtZXMgbm9uZTsgc3VjaCBhIGJsb2NrIGlzIGxlZnQgYWxvbmUgd2l0aG91dCBpdC4gKi9cbiAgZGVmYXVsdExhbmd1YWdlPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIGxhbmd1YWdlIG9mIGEgYmxvY2sgbmFtaW5nIG9uZSBTaGlraSBkb2VzIG5vdCBrbm93OyBsZWZ0IGFsb25lIHdpdGhvdXQgaXQuICovXG4gIGZhbGxiYWNrTGFuZ3VhZ2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBDb2xvcnMgdG8gcmVwbGFjZSwgYnkgdGhlaXIgbG93ZXJjYXNlIHNwZWxsaW5nOiBhIGNvbG9yIGZvciBldmVyeSB0aGVtZSwgb3IgYSB0aGVtZSdzIG5hbWUgdG8gYSBtYXAgb2YgaXRzIG93bi4gKi9cbiAgY29sb3JSZXBsYWNlbWVudHM/OiBSZWNvcmQ8c3RyaW5nLCBDb2xvclJlcGxhY2VtZW50PlxuICAvKiogQWRkIGBsYW5ndWFnZS08bmFtZT5gIHRvIGVhY2ggaGlnaGxpZ2h0ZWQgYDxjb2RlPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGFkZExhbmd1YWdlQ2xhc3M/OiBib29sZWFuXG4gIC8qKiBIaWdobGlnaHQgaW5saW5lIGNvZGUgdG9vLCBieSBob3cgaXQgbmFtZXMgaXRzIGxhbmd1YWdlOiBgdGFpbGluZy1jdXJseS1jb2xvbmAgcmVhZHMgYGAgYGEoKXs6anN9YCBgYC4gKi9cbiAgaW5saW5lPzogSW5saW5lQ29kZSB8IG51bGxcbiAgLyoqIFRoZSBgPHByZT5gIHByb3BlcnR5IHRoYXQgZ2V0cyBhIGJsb2NrJ3MgbWV0YSwgdGhlIHRleHQgYWZ0ZXIgaXRzIGxhbmd1YWdlOyB0aGUgSlNPTiBzdGFuZC1pbiBmb3IgYHBhcnNlTWV0YVN0cmluZzogbWV0YSA9PiAoeyBbbmFtZV06IG1ldGEgfSlgLiAqL1xuICBtZXRhUHJvcGVydHk/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBUaGUgdHJhbnNmb3JtZXJzIG9mIEBzaGlraWpzL3RyYW5zZm9ybWVycyB0byBydW4sIGluIG9yZGVyLCBieSBuYW1lIG9yIHdpdGggb3B0aW9ucy4gKi9cbiAgdHJhbnNmb3JtZXJzPzogSGlnaGxpZ2h0VHJhbnNmb3JtZXJbXVxuICAvKiogTGluZXMgYXQgbGVhc3QgdGhpcyBsb25nLCBpbiBVVEYtMTYgdW5pdHMsIGFyZSBsZWZ0IG9uZSBwbGFpbiB0b2tlbiBhcyBTaGlraSdzIG93biBvcHRpb24gbGVhdmVzIHRoZW07IDIsMDAwIHdoZW4gbGVmdCBvdXQsIHdoZXJlIFNoaWtpIGhhcyBubyBsaW1pdCwgc2luY2UgYSBncmFtbWFyJ3MgdGltZSBncm93cyB3aXRoIHRoZSBzcXVhcmUgb2YgYSBsaW5lJ3MgbGVuZ3RoLiBgMGAgbGlmdHMgaXQuICovXG4gIHRva2VuaXplTWF4TGluZUxlbmd0aD86IG51bWJlciB8IG51bGxcbn1cblxuLyoqIEEgcmVwbGFjZW1lbnQgY29sb3IsIG9yIGEgdGhlbWUncyBvd24gcmVwbGFjZW1lbnRzLiAqL1xuZXhwb3J0IHR5cGUgQ29sb3JSZXBsYWNlbWVudCA9IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cblxuLyoqIEhvdyBpbmxpbmUgY29kZSBuYW1lcyBpdHMgbGFuZ3VhZ2UuICovXG5leHBvcnQgdHlwZSBJbmxpbmVDb2RlID0gXCJ0YWlsaW5nLWN1cmx5LWNvbG9uXCJcblxuLyoqIEEgdHJhbnNmb3JtZXIgb2YgQHNoaWtpanMvdHJhbnNmb3JtZXJzOiBpdHMgbmFtZSBhbG9uZSwgb3IgaXRzIG5hbWUgYW5kIG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBIaWdobGlnaHRUcmFuc2Zvcm1lciA9IFRyYW5zZm9ybWVyTmFtZSB8IENvbmZpZ3VyZWRUcmFuc2Zvcm1lclxuXG4vKiogVGhlIHRyYW5zZm9ybWVycyBgaHRtbC5oaWdobGlnaHRgIHJ1bnMgbmF0aXZlbHkuICovXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1lck5hbWUgPSBcIm5vdGF0aW9uRGlmZlwiIHwgXCJub3RhdGlvbkZvY3VzXCIgfCBcIm5vdGF0aW9uSGlnaGxpZ2h0XCIgfCBcIm5vdGF0aW9uRXJyb3JMZXZlbFwiIHwgXCJtZXRhSGlnaGxpZ2h0XCIgfCBcIm1ldGFXb3JkSGlnaGxpZ2h0XCIgfCBcInJlbmRlckxpbmVOdW1iZXJcIlxuXG4vKiogQSB0cmFuc2Zvcm1lciB3aXRoIGl0cyBvcHRpb25zLCBhcyBAc2hpa2lqcy90cmFuc2Zvcm1lcnMgbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCB0eXBlIENvbmZpZ3VyZWRUcmFuc2Zvcm1lciA9IHsgbmFtZTogXCJub3RhdGlvbkRpZmZcIjsgY2xhc3NMaW5lQWRkPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzTGluZVJlbW92ZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm5vdGF0aW9uRm9jdXNcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25IaWdobGlnaHRcIjsgY2xhc3NBY3RpdmVMaW5lPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlUHJlPzogQ2xhc3NlcyB8IG51bGw7IGNsYXNzQWN0aXZlQ29kZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwibm90YXRpb25FcnJvckxldmVsXCI7IGNsYXNzTWFwPzogUmVjb3JkPHN0cmluZywgQ2xhc3Nlcz4gfCBudWxsOyBjbGFzc0FjdGl2ZVByZT86IENsYXNzZXMgfCBudWxsOyBjbGFzc0FjdGl2ZUNvZGU/OiBDbGFzc2VzIHwgbnVsbCB9IHwgeyBuYW1lOiBcIm1ldGFIaWdobGlnaHRcIjsgY2xhc3NOYW1lPzogQ2xhc3NlcyB8IG51bGw7IHplcm9JbmRleGVkPzogYm9vbGVhbiB9IHwgeyBuYW1lOiBcIm1ldGFXb3JkSGlnaGxpZ2h0XCI7IGNsYXNzTmFtZT86IENsYXNzZXMgfCBudWxsIH0gfCB7IG5hbWU6IFwicmVuZGVyTGluZU51bWJlclwiOyBjbGFzc0xpbmVOdW1iZXI/OiBDbGFzc2VzIHwgbnVsbDsgc3RhcnQ/OiBudW1iZXIgfCBudWxsIH1cblxuLyoqIENsYXNzIG5hbWVzOiBhIGxpc3QsIG9yIG9uZSBzdHJpbmcgb2YgdGhlbSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuICovXG5leHBvcnQgdHlwZSBDbGFzc2VzID0gc3RyaW5nIHwgc3RyaW5nW11cblxuLyoqIGBodG1sLmthdGV4YDogbWF0aCByZW5kZXJlZCBhcyByZWh5cGUta2F0ZXggcmVuZGVycyBpdCwgbmF0aXZlbHkgYnkga2F0ZXgtcnM7IG9wdGlvbnMgbmFtZWQgYXMgS2FUZVggbmFtZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2F0ZXhPcHRpb25zIHtcbiAgLyoqIFRoZSBtYXJrdXAgdG8gd3JpdGUsIGJvdGggSFRNTCBhbmQgTWF0aE1MIGJ5IGRlZmF1bHQuICovXG4gIG91dHB1dD86IEthdGV4T3V0cHV0IHwgbnVsbFxuICAvKiogUHV0IGVxdWF0aW9uIG51bWJlcnMgb24gdGhlIGxlZnQuIEBkZWZhdWx0IGZhbHNlICovXG4gIGxlcW5vPzogYm9vbGVhblxuICAvKiogQWxpZ24gZGlzcGxheSBtYXRoIHRvIHRoZSBsZWZ0IGluc3RlYWQgb2YgY2VudGVyaW5nIGl0LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBmbGVxbj86IGJvb2xlYW5cbiAgLyoqIFRoZSBjb2xvciBvZiBtYXRoIHRoYXQgZmFpbHMgdG8gcmVuZGVyLCBgI2NjMDAwMGAgYnkgZGVmYXVsdC4gKi9cbiAgZXJyb3JDb2xvcj86IHN0cmluZyB8IG51bGxcbiAgLyoqIE1hY3JvcyBieSBuYW1lLCBlYWNoIHRvIHRoZSBUZVggaXQgZXhwYW5kcyB0bywgYXMgYHtcIlxcXFxSUlwiOiBcIlxcXFxtYXRoYmJ7Un1cIn1gLiBAZGVmYXVsdCB7fSAqL1xuICBtYWNyb3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIC8qKiBUaGUgdGhpbm5lc3QgYSBydWxlLCBzdWNoIGFzIGEgZnJhY3Rpb24gbGluZSwgaXMgZHJhd24sIGluIGVtcy4gKi9cbiAgbWluUnVsZVRoaWNrbmVzcz86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBgXFxjb2xvcmAgY29sb3IgdGhlIHRleHQgYWZ0ZXIgaXQsIGFzIExhVGVYIGRvZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIGNvbG9ySXNUZXh0Q29sb3I/OiBib29sZWFuXG4gIC8qKiBXaGF0IHRvIGRvIHdpdGggaW5wdXQgTGFUZVggd291bGQgcmVqZWN0OiBgdHJ1ZWAgb3IgYFwiZXJyb3JcImAgZmFpbHMgaXQsIGBcIndhcm5cImAgcHJpbnRzIGEgd2FybmluZywgYGZhbHNlYCBvciBgXCJpZ25vcmVcImAgKHRoZSBkZWZhdWx0KSBhY2NlcHRzIGl0LiAqL1xuICBzdHJpY3Q/OiBLYXRleFN0cmljdCB8IG51bGxcbiAgLyoqIEFsbG93IGNvbW1hbmRzIHRoYXQgY2FuIHJ1biB1bnRydXN0ZWQgaW5wdXQsIHN1Y2ggYXMgYFxcaHJlZmAgYW5kIGBcXGluY2x1ZGVncmFwaGljc2AuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRydXN0PzogYm9vbGVhblxuICAvKiogVGhlIGxhcmdlc3QgYSB1c2VyLWdpdmVuIHNpemUgbWF5IGJlLCBpbiBlbXMuICovXG4gIG1heFNpemU/OiBudW1iZXIgfCBudWxsXG4gIC8qKiBIb3cgbWFueSBtYWNybyBleHBhbnNpb25zIG9uZSBmb3JtdWxhIG1heSB0YWtlLCAxMDAwIGJ5IGRlZmF1bHQuICovXG4gIG1heEV4cGFuZD86IG51bWJlciB8IG51bGxcbiAgLyoqIExldCBkZWZpbml0aW9ucyBzdWNoIGFzIGBcXGRlZmAgbGFzdCBwYXN0IHRoZSBmb3JtdWxhIHRoZXkgYXJlIGluLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBnbG9iYWxHcm91cD86IGJvb2xlYW5cbn1cblxuLyoqIFRoZSBtYXJrdXAgS2FUZVggd3JpdGVzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhPdXRwdXQgPSBcImh0bWxcIiB8IFwibWF0aG1sXCIgfCBcImh0bWxBbmRNYXRobWxcIlxuXG4vKiogSG93IHN0cmljdGx5IEthVGVYIGhvbGRzIGlucHV0IHRvIExhVGVYLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3QgPSBib29sZWFuIHwgS2F0ZXhTdHJpY3RNb2RlXG5cbi8qKiBPbmUgbGV2ZWwgb2YgS2FUZVgncyBzdHJpY3RuZXNzLiAqL1xuZXhwb3J0IHR5cGUgS2F0ZXhTdHJpY3RNb2RlID0gXCJpZ25vcmVcIiB8IFwid2FyblwiIHwgXCJlcnJvclwiXG5cbi8qKiBgaHRtbC50b01hcmtkb3duYDogaGFzdCBpbnRvIG1kYXN0OyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1tZGFzdCBuYW1lcyB0aGVtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb01hcmtkb3duT3B0aW9ucyB7XG4gIC8qKiBXcmFwIGFsbCBwaHJhc2luZyBjb250ZW50IG9mIHRoZSByb290IGluIHBhcmFncmFwaHMsIGFzIGZvciBhIHdob2xlIGRvY3VtZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBkb2N1bWVudD86IGJvb2xlYW5cbiAgLyoqIENvbGxhcHNlIHdoaXRlc3BhY2UgaG9sZGluZyBhIGxpbmUgZW5kaW5nIHRvIHRoYXQgbGluZSBlbmRpbmcgaW5zdGVhZCBvZiBhIHNwYWNlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBuZXdsaW5lcz86IGJvb2xlYW5cbiAgLyoqIFRoZSB0ZXh0IG9mIGEgY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFt4XWAgYnkgZGVmYXVsdC4gKi9cbiAgY2hlY2tlZD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFRoZSB0ZXh0IG9mIGFuIHVuY2hlY2tlZCBjaGVja2JveCBvciByYWRpbywgYFsgXWAgYnkgZGVmYXVsdC4gKi9cbiAgdW5jaGVja2VkPzogc3RyaW5nIHwgbnVsbFxuICAvKiogVGhlIHF1b3RlcyBgPHE+YCB1c2VzLCBhbiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJhY3RlciBlYWNoLCBhbHRlcm5hdGluZyBieSBob3cgZGVlcCBpdCBuZXN0czsgYFwiYCBieSBkZWZhdWx0LiAqL1xuICBxdW90ZXM/OiBzdHJpbmdbXSB8IG51bGxcbn1cblxuLyoqIGBodG1sLnN0cmluZ2lmeWA6IGhhc3QgaW50byBIVE1MOyBvcHRpb25zIG5hbWVkIGFzIGhhc3QtdXRpbC10by1odG1sIG5hbWVzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ2lmeU9wdGlvbnMge1xuICAvKiogV3JpdGUgcmF3IG5vZGVzIGFzIHRoZXkgYXJlIGluc3RlYWQgb2YgZXNjYXBpbmcgdGhlbS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dEYW5nZXJvdXNIdG1sPzogYm9vbGVhblxuICAvKiogTGVhdmUgY2hhcmFjdGVycyB0aGF0IGFyZSBvbmx5IGRhbmdlcm91cyBpbiBzb21lIGNvbnRleHRzLCBzdWNoIGFzIGBgIGAgYGAsIGFzIHRoZXkgYXJlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBhbGxvd0Rhbmdlcm91c0NoYXJhY3RlcnM/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBjaGFyYWN0ZXJzIGFzIHRoZXkgYXJlIHdoZXJlIGJyb3dzZXJzIGFjY2VwdCB0aGVtIHRob3VnaCB0aGUgc3BlYyBkb2VzIG5vdC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dQYXJzZUVycm9ycz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGNvbW1lbnRzIGFzIGJvZ3VzIGNvbW1lbnRzLCBgPD9hPmAuIEBkZWZhdWx0IGZhbHNlICovXG4gIGJvZ3VzQ29tbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSBlbXB0eSBmb3JlaWduIGVsZW1lbnRzLCBgPGEgLz5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjbG9zZUVtcHR5RWxlbWVudHM/OiBib29sZWFuXG4gIC8qKiBDbG9zZSB2b2lkIGVsZW1lbnRzLCBgPGJyIC8+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgY2xvc2VTZWxmQ2xvc2luZz86IGJvb2xlYW5cbiAgLyoqIFdyaXRlIGVtcHR5IGF0dHJpYnV0ZXMgYXMgYmFyZSBuYW1lcywgYGFgIHJhdGhlciB0aGFuIGBhPVwiXCJgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xsYXBzZUVtcHR5QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIG91dCB0YWdzIHRoZSBIVE1MIHNwZWMgbGV0cyBhIHBhcnNlciBpbXBseS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgb21pdE9wdGlvbmFsVGFncz86IGJvb2xlYW5cbiAgLyoqIExlYXZlIGF0dHJpYnV0ZSB2YWx1ZXMgdW5xdW90ZWQgd2hlcmUgdGhhdCBpcyBzYWZlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBwcmVmZXJVbnF1b3RlZD86IGJvb2xlYW5cbiAgLyoqIFRoZSBxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzIGFyZSB3cmFwcGVkIGluOiBgXCJgIG9yIGAnYC4gKi9cbiAgcXVvdGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBVc2UgdGhlIG90aGVyIHF1b3RlIHdoZW4gdGhlIHZhbHVlIGhvbGRzIG1vcmUgb2YgdGhlIHByZWZlcnJlZCBvbmUuIEBkZWZhdWx0IGZhbHNlICovXG4gIHF1b3RlU21hcnQ/OiBib29sZWFuXG4gIC8qKiBUaGUgc3BhY2UgdGhlIHRyZWUgaXMgaW46IGBodG1sYCBvciBgc3ZnYC4gKi9cbiAgc3BhY2U/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJldHdlZW4gcXVvdGVkIGF0dHJpYnV0ZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0QXR0cmlidXRlcz86IGJvb2xlYW5cbiAgLyoqIEpvaW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlcyB3aXRoIGAsYCByYXRoZXIgdGhhbiBgLCBgLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodENvbW1hU2VwYXJhdGVkTGlzdHM/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFkb2N0eXBlaHRtbD5gLiBAZGVmYXVsdCBmYWxzZSAqL1xuICB0aWdodERvY3R5cGU/OiBib29sZWFuXG4gIC8qKiBMZWF2ZSBvdXQgdGhlIHNwYWNlIGJlZm9yZSBgLz5gIHdoZW4gdGhlIGF0dHJpYnV0ZXMgYWxsb3cuIEBkZWZhdWx0IGZhbHNlICovXG4gIHRpZ2h0U2VsZkNsb3Npbmc/OiBib29sZWFuXG4gIC8qKiBXcml0ZSBgPCFET0NUWVBFIGh0bWw+YC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgdXBwZXJEb2N0eXBlPzogYm9vbGVhblxuICAvKiogVGhlIHRhZyBuYW1lcyBvZiB2b2lkIGVsZW1lbnRzLCB3aGljaCBoYXZlIG5vIGNsb3NpbmcgdGFnLiAqL1xuICB2b2lkcz86IHN0cmluZ1tdIHwgbnVsbFxufVxuXG4vKiogVGhlIGBodG1sLnBhcnNlYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uob3B0aW9ucz86IFBhcnNlT3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucGFyc2VcIiwgUGFyc2VPcHRpb25zPiAmIFBhcnNlcjxSb290PiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5wYXJzZVwiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnBhcnNlXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnJhd2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhdyhvcHRpb25zPzogUmF3T3B0aW9ucyk6IFBsdWdpbjxcImh0bWwucmF3XCIsIFJhd09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiIH1cbiAgcmV0dXJuIHsgbmFtZTogXCJodG1sLnJhd1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5mb3JtYXRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQob3B0aW9ucz86IEZvcm1hdE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmZvcm1hdFwiLCBGb3JtYXRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5mb3JtYXRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2FuaXRpemVgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZShvcHRpb25zPzogU2FuaXRpemVPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zYW5pdGl6ZVwiLCBTYW5pdGl6ZU9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLnNhbml0aXplXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2FuaXRpemVcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc2x1Z2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsdWcob3B0aW9ucz86IFNsdWdPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zbHVnXCIsIFNsdWdPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5zbHVnXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc2x1Z1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5leHRlcm5hbExpbmtzYCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZXJuYWxMaW5rcyhvcHRpb25zPzogRXh0ZXJuYWxMaW5rc09wdGlvbnMpOiBQbHVnaW48XCJodG1sLmV4dGVybmFsTGlua3NcIiwgRXh0ZXJuYWxMaW5rc09wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmV4dGVybmFsTGlua3NcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRlcm5hbExpbmtzXCIsIG9wdGlvbnMgfVxufVxuXG4vKiogVGhlIGBodG1sLnVud3JhcEltYWdlc2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcEltYWdlcygpOiBQbHVnaW48XCJodG1sLnVud3JhcEltYWdlc1wiPiB7XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC51bndyYXBJbWFnZXNcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuZXh0cmFjdFRvY2AgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RUb2Mob3B0aW9ucz86IEV4dHJhY3RUb2NPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5leHRyYWN0VG9jXCIsIEV4dHJhY3RUb2NPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5leHRyYWN0VG9jXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuZXh0cmFjdFRvY1wiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC5oaWdobGlnaHRgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHQob3B0aW9ucz86IEhpZ2hsaWdodE9wdGlvbnMpOiBQbHVnaW48XCJodG1sLmhpZ2hsaWdodFwiLCBIaWdobGlnaHRPcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiB9XG4gIHJldHVybiB7IG5hbWU6IFwiaHRtbC5oaWdobGlnaHRcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwua2F0ZXhgIHBsdWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrYXRleChvcHRpb25zPzogS2F0ZXhPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5rYXRleFwiLCBLYXRleE9wdGlvbnM+IHtcbiAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbmFtZTogXCJodG1sLmthdGV4XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwua2F0ZXhcIiwgb3B0aW9ucyB9XG59XG5cbi8qKiBUaGUgYGh0bWwudG9NYXJrZG93bmAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTWFya2Rvd24ob3B0aW9ucz86IFRvTWFya2Rvd25PcHRpb25zKTogUGx1Z2luPFwiaHRtbC50b01hcmtkb3duXCIsIFRvTWFya2Rvd25PcHRpb25zPiB7XG4gIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiB7IG5hbWU6IFwiaHRtbC50b01hcmtkb3duXCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9NYXJrZG93blwiLCBvcHRpb25zIH1cbn1cblxuLyoqIFRoZSBgaHRtbC50b05hdHVyYWxMYW5ndWFnZWAgcGx1Z2luLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTmF0dXJhbExhbmd1YWdlKCk6IFBsdWdpbjxcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIj4ge1xuICByZXR1cm4geyBuYW1lOiBcImh0bWwudG9OYXR1cmFsTGFuZ3VhZ2VcIiB9XG59XG5cbi8qKiBUaGUgYGh0bWwuc3RyaW5naWZ5YCBwbHVnaW4uICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5KG9wdGlvbnM/OiBTdHJpbmdpZnlPcHRpb25zKTogUGx1Z2luPFwiaHRtbC5zdHJpbmdpZnlcIiwgU3RyaW5naWZ5T3B0aW9ucz4ge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIgfVxuICByZXR1cm4geyBuYW1lOiBcImh0bWwuc3RyaW5naWZ5XCIsIG9wdGlvbnMgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
- import type { Plugin } from "../models/plugin.ts";
1
+ import type { Root } from "mdast";
2
+ import type { Parser, Plugin } from "../models/plugin.ts";
2
3
  /** `md.parse`: Markdown into mdast. */
3
4
  export type ParseOptions = Record<string, unknown>;
4
5
  /** `md.directive`: generic directives, `:a`, `::b` and `:::c`, read by `md.parse` and written by `md.stringify`; options named as mdast-util-directive's serializer names them. */
@@ -24,6 +25,19 @@ export interface GfmOptions {
24
25
  tablePipeAlign?: boolean;
25
26
  /** Write a footnote definition's first line blank when it holds flow content. @default false */
26
27
  firstLineBlank?: boolean;
28
+ /** Render GitHub alerts, a block quote opening with `[!NOTE]`, as GitHub does, as remark-github-blockquote-alert does: `true`, or its options. */
29
+ alerts?: Alerts | null;
30
+ }
31
+ /** `md.gfm`'s `alerts`: on, or on with remark-github-blockquote-alert's options. */
32
+ export type Alerts = boolean | AlertsOptions;
33
+ /** remark-github-blockquote-alert's options. */
34
+ export interface AlertsOptions {
35
+ /** Read a title after the type, `[!NOTE/Read this]`, in place of the type's name. @default false */
36
+ legacyTitle?: boolean;
37
+ /** The tag name of the alert's element. @default "div" */
38
+ tagName?: string;
39
+ /** More classes for the alert's element, separated by spaces. @default "" */
40
+ classNames?: string;
27
41
  }
28
42
  /** `md.math`: math syntax, `$$` blocks and `$` text, read by `md.parse` and written by `md.stringify`; options named as remark-math names them. */
29
43
  export interface MathOptions {
@@ -66,6 +80,38 @@ export interface FrontmatterSettings {
66
80
  /** Remove the YAML frontmatter a document starts with from the tree. */
67
81
  strip?: boolean;
68
82
  }
83
+ /** `md.gemoji`: gemoji shortcodes, `:smile:`, into emoji, as remark-gemoji does; its options are remark-emoji's. */
84
+ export interface GemojiOptions {
85
+ /** Also turn emoticons such as `:)` and `:-(` into emoji, as remark-emoji does. @default false */
86
+ emoticon?: boolean;
87
+ /** Wrap each emoji in `<span role="img" aria-label="…">`, labelled with its name. @default false */
88
+ accessible?: boolean;
89
+ /** Put a space after each emoji. @default false */
90
+ padSpaceAfter?: boolean;
91
+ }
92
+ /** `md.smartypants`: straight quotes, dashes, dots and backticks in Markdown text into typographic ones, as remark-smartypants does; options as retext-smartypants takes them. */
93
+ export interface SmartypantsOptions {
94
+ /** Turn double backticks and double straight single quotes into double quotes; `all` turns single ones into single quotes too. */
95
+ backticks?: Backticks;
96
+ /** The closing quotes to use: `”` and `’` by default. */
97
+ closingQuotes?: QuoteCharacters | null;
98
+ /** Turn two dashes into an em dash; `oldschool` and `inverted` treat three too. */
99
+ dashes?: Dashes;
100
+ /** Turn three dots into an ellipsis, with spaces between them or without. */
101
+ ellipses?: Ellipses;
102
+ /** The opening quotes to use: `“` and `‘` by default. */
103
+ openingQuotes?: QuoteCharacters | null;
104
+ /** Turn straight quotes into smart ones. @default true */
105
+ quotes?: boolean | null;
106
+ }
107
+ export type Backticks = boolean | "all";
108
+ /** The quote characters to use for double and single quotes. */
109
+ export interface QuoteCharacters {
110
+ double: string;
111
+ single: string;
112
+ }
113
+ export type Dashes = boolean | "oldschool" | "inverted";
114
+ export type Ellipses = boolean | "spaced" | "unspaced";
69
115
  /** `md.component`: directives, GitHub alerts and other nodes into MDX JSX elements, the components an MDX runtime renders, by declarative rules. */
70
116
  export interface ComponentOptions {
71
117
  /** Rules for directives; the first that matches a directive converts it. */
@@ -208,6 +254,13 @@ export interface PathRewriteOptions {
208
254
  export type UrlNode = "image" | "link" | "definition";
209
255
  /** How a link to a Markdown file becomes a URL. */
210
256
  export type MarkdownLinks = "keep" | "directory" | "html";
257
+ /** `md.shiftHeading`: every heading's depth moved by `shift` and kept within 1 to 6, as rehype-shift-heading moves hast's, after the document's title is dropped when asked. */
258
+ export interface ShiftHeadingOptions {
259
+ /** The levels added to each heading's depth: `-1` makes an h2 an h1, `1` an h1 an h2. @default 0 */
260
+ shift?: number;
261
+ /** Drop the document's first node when it is an h1, looking past frontmatter and ESM. @default false */
262
+ dropTitle?: boolean;
263
+ }
211
264
  /** `md.strip`: mdast down to its text, as strip-markdown does: code, HTML, tables and the like dropped, headings made paragraphs, formatting unwrapped. */
212
265
  export interface StripOptions {
213
266
  /** Node types to leave as they are, such as `inlineCode`. @default [] */
@@ -302,6 +355,8 @@ export interface UnsafePattern {
302
355
  export interface ToHtmlOptions {
303
356
  /** Keep raw HTML in the tree instead of dropping it. @default false */
304
357
  allowDangerousHtml?: boolean;
358
+ /** Turn each line ending in text into a `<br>`, as remark-breaks does. @default false */
359
+ breaks?: boolean;
305
360
  /** What footnote `id`s start with, so they cannot clobber the page's; `user-content-` when unset. */
306
361
  clobberPrefix?: string | null;
307
362
  /** The text of each footnote's back reference; `↩`, numbered from the second, when unset. */
@@ -332,7 +387,7 @@ export interface ToNaturalLanguageOptions {
332
387
  source?: string[];
333
388
  }
334
389
  /** The `md.parse` plugin. */
335
- export declare function parse(options?: ParseOptions): Plugin<"md.parse", ParseOptions>;
390
+ export declare function parse(options?: ParseOptions): Plugin<"md.parse", ParseOptions> & Parser<Root>;
336
391
  /** The `md.directive` plugin. */
337
392
  export declare function directive(options?: DirectiveOptions): Plugin<"md.directive", DirectiveOptions>;
338
393
  /** The `md.gfm` plugin. */
@@ -345,8 +400,12 @@ export declare function math(options?: MathOptions): Plugin<"md.math", MathOptio
345
400
  export declare function mdx(options?: MdxOptions): Plugin<"md.mdx", MdxOptions>;
346
401
  /** The `md.frontmatter` plugin. */
347
402
  export declare function frontmatter(options?: FrontmatterOptions): Plugin<"md.frontmatter", FrontmatterOptions>;
403
+ /** The `md.cjkFriendly` plugin. */
404
+ export declare function cjkFriendly(): Plugin<"md.cjkFriendly">;
348
405
  /** The `md.gemoji` plugin. */
349
- export declare function gemoji(): Plugin<"md.gemoji">;
406
+ export declare function gemoji(options?: GemojiOptions): Plugin<"md.gemoji", GemojiOptions>;
407
+ /** The `md.smartypants` plugin. */
408
+ export declare function smartypants(options?: SmartypantsOptions): Plugin<"md.smartypants", SmartypantsOptions>;
350
409
  /** The `md.component` plugin. */
351
410
  export declare function component(options?: ComponentOptions): Plugin<"md.component", ComponentOptions>;
352
411
  /** The `md.packageCommand` plugin. */
@@ -355,6 +414,8 @@ export declare function packageCommand(options?: PackageCommandOptions): Plugin<
355
414
  export declare function headingId(options?: HeadingIdOptions): Plugin<"md.headingId", HeadingIdOptions>;
356
415
  /** The `md.pathRewrite` plugin. */
357
416
  export declare function pathRewrite(options?: PathRewriteOptions): Plugin<"md.pathRewrite", PathRewriteOptions>;
417
+ /** The `md.shiftHeading` plugin. */
418
+ export declare function shiftHeading(options?: ShiftHeadingOptions): Plugin<"md.shiftHeading", ShiftHeadingOptions>;
358
419
  /** The `md.strip` plugin. */
359
420
  export declare function strip(options?: StripOptions): Plugin<"md.strip", StripOptions>;
360
421
  /** The `md.toc` plugin. */