@nlabs/lex 1.39.1 → 1.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.eslintrc +1 -0
  2. package/.vscode/settings.json +1 -1
  3. package/babel.config.json +13 -0
  4. package/dist/LexConfig.js +30 -26
  5. package/dist/commands/build.js +95 -49
  6. package/dist/commands/bulid.test.js +314 -5
  7. package/dist/commands/clean.js +4 -4
  8. package/dist/commands/clean.test.js +63 -0
  9. package/dist/commands/compile.js +27 -30
  10. package/dist/commands/compile.test.js +93 -0
  11. package/dist/commands/config.js +2 -2
  12. package/dist/commands/copy.js +1 -1
  13. package/dist/commands/create.js +4 -4
  14. package/dist/commands/dev.js +7 -7
  15. package/dist/commands/init.js +13 -13
  16. package/dist/commands/link.js +3 -3
  17. package/dist/commands/lint.js +50 -36
  18. package/dist/commands/migrate.js +4 -4
  19. package/dist/commands/publish.js +7 -7
  20. package/dist/commands/test.js +9 -9
  21. package/dist/commands/update.js +10 -10
  22. package/dist/commands/upgrade.js +7 -7
  23. package/dist/commands/versions.js +8 -9
  24. package/dist/commands/versions.test.js +49 -0
  25. package/dist/create/changelog.js +1 -1
  26. package/dist/lex.js +16 -16
  27. package/dist/lint.js +8 -0
  28. package/dist/utils/app.js +1 -1
  29. package/dist/utils/file.js +4 -4
  30. package/jest.config.cjs +55 -0
  31. package/jest.config.lex.js +27 -28
  32. package/jest.setup.ts +3 -0
  33. package/package.json +76 -71
  34. package/resolver.cjs +86 -0
  35. package/test/javascript.js +6 -0
  36. package/test/typescript.ts +6 -0
  37. package/tsconfig.build.json +1 -1
  38. package/tsconfig.json +1 -1
  39. package/tsconfig.template.json +5 -5
  40. package/webpack.config.js +78 -65
  41. package/dist/resolver.js +0 -70
  42. package/jest.config.js +0 -14
  43. package/jest.setup.js +0 -3
package/.eslintrc CHANGED
@@ -4,6 +4,7 @@
4
4
  ],
5
5
  "rules": {
6
6
  "import/extensions": 0,
7
+ "jest/valid-expect": 0,
7
8
  "no-useless-escape": 0
8
9
  }
9
10
  }
@@ -10,7 +10,7 @@
10
10
  "css.validate": false,
11
11
  "editor.autoClosingBrackets": "never",
12
12
  "editor.codeActionsOnSave": {
13
- "source.fixAll.eslint": true
13
+ "source.fixAll.eslint": "explicit"
14
14
  },
15
15
  "editor.detectIndentation": false,
16
16
  "editor.formatOnSave": true,
@@ -0,0 +1,13 @@
1
+ {
2
+ "presets": [
3
+ [
4
+ "@babel/preset-env",
5
+ {
6
+ "targets": {
7
+ "node": "current"
8
+ }
9
+ }
10
+ ],
11
+ "@babel/preset-typescript"
12
+ ]
13
+ }
package/dist/LexConfig.js CHANGED
@@ -1,28 +1,31 @@
1
1
  import { existsSync, readFileSync, writeFileSync } from "fs";
2
2
  import { extname as pathExtname, resolve as pathResolve } from "path";
3
- import { fileURLToPath } from "url";
3
+ import { URL } from "url";
4
4
  import { relativeFilePath } from "./utils/file.js";
5
5
  import { log } from "./utils/log.js";
6
6
  const cwd = process.cwd();
7
+ const defaultConfigValues = {
8
+ configFiles: [],
9
+ entryHTML: "index.html",
10
+ entryJs: "index.js",
11
+ esbuild: {},
12
+ env: null,
13
+ jest: {},
14
+ outputFullPath: pathResolve(cwd, "./dist"),
15
+ outputHash: false,
16
+ outputPath: "./dist",
17
+ packageManager: "npm",
18
+ preset: "web",
19
+ sourceFullPath: pathResolve(cwd, "./src"),
20
+ sourcePath: "./src",
21
+ targetEnvironment: "web",
22
+ useGraphQl: false,
23
+ useTypescript: false,
24
+ webpack: {}
25
+ };
7
26
  class LexConfig {
8
27
  static config = {
9
- configFiles: [],
10
- entryHTML: "index.html",
11
- entryJs: "index.js",
12
- esbuild: {},
13
- env: null,
14
- jest: {},
15
- outputFullPath: pathResolve(cwd, "./dist"),
16
- outputHash: false,
17
- outputPath: "./dist",
18
- packageManager: "npm",
19
- preset: "web",
20
- sourceFullPath: pathResolve(cwd, "./src"),
21
- sourcePath: "./src",
22
- targetEnvironment: "web",
23
- useGraphQl: false,
24
- useTypescript: false,
25
- webpack: {}
28
+ ...defaultConfigValues
26
29
  };
27
30
  static set useTypescript(value) {
28
31
  LexConfig.config.useTypescript = value;
@@ -67,7 +70,7 @@ class LexConfig {
67
70
  params.sourceFullPath = pathResolve(cwd, sourcePath);
68
71
  }
69
72
  if (typescript !== void 0) {
70
- params.useTypescript = typescript;
73
+ params.useTypescript = true;
71
74
  }
72
75
  if (environment !== void 0) {
73
76
  params.targetEnvironment = environment === "web" ? "web" : "node";
@@ -83,7 +86,7 @@ class LexConfig {
83
86
  );
84
87
  }
85
88
  // Get configuration
86
- static parseConfig(cmd, isRoot = true) {
89
+ static async parseConfig(cmd, isRoot = true) {
87
90
  const { cliName = "Lex", lexConfig, lexConfigName, quiet, typescript } = cmd;
88
91
  const configName = lexConfigName || "lex.config.js";
89
92
  const defaultConfigPath = isRoot ? pathResolve(cwd, `./${configName}`) : relativeFilePath(configName, cwd);
@@ -97,7 +100,7 @@ class LexConfig {
97
100
  if (configContent) {
98
101
  let configJson;
99
102
  try {
100
- configJson = JSON.parse(configContent);
103
+ configJson = JSON.parse(configContent)?.default || {};
101
104
  } catch (error) {
102
105
  configJson = {};
103
106
  }
@@ -107,8 +110,8 @@ class LexConfig {
107
110
  ${cliName} Error: Config file malformed, ${configPath}`, "error", quiet);
108
111
  }
109
112
  } else if (ext === ".js") {
110
- const lexCustomConfig = readFileSync(configPath).toJSON();
111
- LexConfig.addConfigParams(cmd, lexCustomConfig);
113
+ const lexCustomConfig = await import(configPath);
114
+ LexConfig.addConfigParams(cmd, lexCustomConfig.default || {});
112
115
  } else {
113
116
  log(`
114
117
  ${cliName} Error: Config file must be a JS or JSON file.`, "error", quiet);
@@ -121,12 +124,13 @@ ${cliName} Error: Config file must be a JS or JSON file.`, "error", quiet);
121
124
  static checkTypescriptConfig() {
122
125
  const tsconfigPath = pathResolve(cwd, "./tsconfig.json");
123
126
  if (!existsSync(tsconfigPath)) {
124
- const dirName = fileURLToPath(new URL(".", import.meta.url));
127
+ const dirName = new URL(".", import.meta.url).pathname;
125
128
  writeFileSync(tsconfigPath, readFileSync(pathResolve(dirName, "../../../tsconfig.base.json")));
126
129
  }
127
130
  }
128
131
  }
129
132
  export {
130
- LexConfig
133
+ LexConfig,
134
+ defaultConfigValues
131
135
  };
132
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0xleENvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2V4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtmaWxlVVJMVG9QYXRofSBmcm9tICd1cmwnO1xuXG5pbXBvcnQge3JlbGF0aXZlRmlsZVBhdGh9IGZyb20gJy4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi91dGlscy9sb2cuanMnO1xuXG5jb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGV4Q29uZmlnVHlwZSB7XG4gIGNvbmZpZ0ZpbGVzPzogc3RyaW5nW107XG4gIGVudHJ5SFRNTD86IHN0cmluZztcbiAgZW50cnlKcz86IHN0cmluZztcbiAgZXNidWlsZD86IGFueTtcbiAgZW52Pzogb2JqZWN0O1xuICBnaXRVcmw/OiBzdHJpbmc7XG4gIGplc3Q/OiBhbnk7XG4gIGxpYnJhcnlOYW1lPzogc3RyaW5nO1xuICBsaWJyYXJ5VGFyZ2V0Pzogc3RyaW5nO1xuICBvdXRwdXRGaWxlPzogc3RyaW5nO1xuICBvdXRwdXRGdWxsUGF0aD86IHN0cmluZztcbiAgb3V0cHV0SGFzaD86IGJvb2xlYW47XG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG4gIHBhY2thZ2VNYW5hZ2VyPzogJ25wbScgfCAneWFybic7XG4gIHByZXNldD86ICd3ZWInIHwgJ25vZGUnIHwgJ2xhbWJkYScgfCAnbW9iaWxlJztcbiAgc291cmNlRnVsbFBhdGg/OiBzdHJpbmc7XG4gIHNvdXJjZVBhdGg/OiBzdHJpbmc7XG4gIHRhcmdldEVudmlyb25tZW50PzogJ25vZGUnIHwgJ3dlYic7XG4gIHVzZUdyYXBoUWw/OiBib29sZWFuO1xuICB1c2VUeXBlc2NyaXB0PzogYm9vbGVhbjtcbiAgd2VicGFjaz86IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIExleENvbmZpZyB7XG4gIHN0YXRpYyBjb25maWc6IExleENvbmZpZ1R5cGUgPSB7XG4gICAgY29uZmlnRmlsZXM6IFtdLFxuICAgIGVudHJ5SFRNTDogJ2luZGV4Lmh0bWwnLFxuICAgIGVudHJ5SnM6ICdpbmRleC5qcycsXG4gICAgZXNidWlsZDoge30sXG4gICAgZW52OiBudWxsLFxuICAgIGplc3Q6IHt9LFxuICAgIG91dHB1dEZ1bGxQYXRoOiBwYXRoUmVzb2x2ZShjd2QsICcuL2Rpc3QnKSxcbiAgICBvdXRwdXRIYXNoOiBmYWxzZSxcbiAgICBvdXRwdXRQYXRoOiAnLi9kaXN0JyxcbiAgICBwYWNrYWdlTWFuYWdlcjogJ25wbScsXG4gICAgcHJlc2V0OiAnd2ViJyxcbiAgICBzb3VyY2VGdWxsUGF0aDogcGF0aFJlc29sdmUoY3dkLCAnLi9zcmMnKSxcbiAgICBzb3VyY2VQYXRoOiAnLi9zcmMnLFxuICAgIHRhcmdldEVudmlyb25tZW50OiAnd2ViJyxcbiAgICB1c2VHcmFwaFFsOiBmYWxzZSxcbiAgICB1c2VUeXBlc2NyaXB0OiBmYWxzZSxcbiAgICB3ZWJwYWNrOiB7fVxuICB9O1xuXG4gIHN0YXRpYyBzZXQgdXNlVHlwZXNjcmlwdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIExleENvbmZpZy5jb25maWcudXNlVHlwZXNjcmlwdCA9IHZhbHVlO1xuICAgIGNvbnN0IHtzb3VyY2VGdWxsUGF0aH0gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gICAgLy8gTWFrZSBzdXJlIHdlIGNoYW5nZSB0aGUgZGVmYXVsdCBlbnRyeSBmaWxlIGlmIFR5cGVzY3JpcHQgaXMgYmVpbmcgdXNlZC5cbiAgICBjb25zdCB7ZW50cnlKc30gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gICAgaWYoZW50cnlKcyA9PT0gJ2luZGV4LmpzJyAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgaW5kZXhQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsIHNvdXJjZUZ1bGxQYXRoLCAnaW5kZXgudHN4Jyk7XG4gICAgICBjb25zdCBoYXNJbmRleFRzeDogYm9vbGVhbiA9IGV4aXN0c1N5bmMoaW5kZXhQYXRoKTtcblxuICAgICAgaWYoaGFzSW5kZXhUc3gpIHtcbiAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy5lbnRyeUpzID0gJ2luZGV4LnRzeCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBMZXhDb25maWcuY29uZmlnLmVudHJ5SnMgPSAnaW5kZXgudHMnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBvcHRpb25zIGZyb20gYSBjdXN0b20gY29uZmlndXJhdGlvbiBmaWxlXG4gIHN0YXRpYyB1cGRhdGVDb25maWcodXBkYXRlZENvbmZpZzogTGV4Q29uZmlnVHlwZSk6IExleENvbmZpZ1R5cGUge1xuICAgIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgb3V0cHV0UGF0aCwgc291cmNlUGF0aCwgc291cmNlRnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gdXBkYXRlZENvbmZpZztcbiAgICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBVc2UgVHlwZXNjcmlwdFxuICAgIGlmKHVzZVR5cGVzY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgTGV4Q29uZmlnLnVzZVR5cGVzY3JpcHQgPSB1c2VUeXBlc2NyaXB0O1xuICAgIH1cblxuICAgIC8vIERlc3RpbmF0aW9uIFBhdGhcbiAgICBpZihvdXRwdXRQYXRoICE9PSB1bmRlZmluZWQgJiYgb3V0cHV0RnVsbFBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlZENvbmZpZy5vdXRwdXRGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgb3V0cHV0UGF0aCk7XG4gICAgfVxuXG4gICAgLy8gU291cmNlIGNvZGUgcGF0aFxuICAgIGlmKHNvdXJjZVBhdGggIT09IHVuZGVmaW5lZCAmJiBzb3VyY2VGdWxsUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGVkQ29uZmlnLnNvdXJjZUZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3dkLCBzb3VyY2VQYXRoKTtcbiAgICB9XG5cbiAgICBMZXhDb25maWcuY29uZmlnID0gey4uLkxleENvbmZpZy5jb25maWcsIC4uLnVwZGF0ZWRDb25maWd9O1xuICAgIHJldHVybiBMZXhDb25maWcuY29uZmlnO1xuICB9XG5cbiAgLy8gU2V0IG9wdGlvbiB1cGRhdGVzIGZyb20gdGhlIGNvbW1hbmQgbGluZVxuICBzdGF0aWMgYWRkQ29uZmlnUGFyYW1zKGNtZCwgcGFyYW1zOiBMZXhDb25maWdUeXBlKSB7XG4gICAgY29uc3QgbmFtZVByb3BlcnR5OiBzdHJpbmcgPSAnX25hbWUnO1xuICAgIGNvbnN0IHtlbnZpcm9ubWVudCwgb3V0cHV0UGF0aCwgc291cmNlUGF0aCwgdHlwZXNjcmlwdH0gPSBjbWQ7XG5cbiAgICAvLyBDdXN0b20gb3V0cHV0IGRpclxuICAgIGlmKG91dHB1dFBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLm91dHB1dFBhdGggPSBvdXRwdXRQYXRoO1xuICAgICAgcGFyYW1zLm91dHB1dEZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3dkLCBvdXRwdXRQYXRoKTtcbiAgICB9XG5cbiAgICAvLyBDdXN0b20gc291cmNlIGRpclxuICAgIGlmKHNvdXJjZVBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnNvdXJjZVBhdGggPSBzb3VyY2VQYXRoO1xuICAgICAgcGFyYW1zLnNvdXJjZUZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3dkLCBzb3VyY2VQYXRoKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgd2UncmUgdXNpbmcgVHlwZXNjcmlwdCBvciBGbG93XG4gICAgaWYodHlwZXNjcmlwdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMudXNlVHlwZXNjcmlwdCA9IHR5cGVzY3JpcHQ7XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSB0YXJnZXQgZW52aXJvbm1lbnRcbiAgICBpZihlbnZpcm9ubWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMudGFyZ2V0RW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudCA9PT0gJ3dlYicgPyAnd2ViJyA6ICdub2RlJztcbiAgICB9XG5cbiAgICBwcm9jZXNzLmVudi5MRVhfQ09ORklHID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICB7XG4gICAgICAgIC4uLkxleENvbmZpZy51cGRhdGVDb25maWcocGFyYW1zKSxcbiAgICAgICAgY29tbWFuZE5hbWU6IGNtZFtuYW1lUHJvcGVydHldLFxuICAgICAgICBpc1N0YXRpYzogY21kLnN0YXRpY1xuICAgICAgfSwgbnVsbCwgMFxuICAgICk7XG4gIH1cblxuICAvLyBHZXQgY29uZmlndXJhdGlvblxuICBzdGF0aWMgcGFyc2VDb25maWcoY21kLCBpc1Jvb3Q6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgY29uc3Qge2NsaU5hbWUgPSAnTGV4JywgbGV4Q29uZmlnLCBsZXhDb25maWdOYW1lLCBxdWlldCwgdHlwZXNjcmlwdH0gPSBjbWQ7XG4gICAgY29uc3QgY29uZmlnTmFtZTogc3RyaW5nID0gbGV4Q29uZmlnTmFtZSB8fCAnbGV4LmNvbmZpZy5qcyc7XG4gICAgY29uc3QgZGVmYXVsdENvbmZpZ1BhdGg6IHN0cmluZyA9IGlzUm9vdFxuICAgICAgPyBwYXRoUmVzb2x2ZShjd2QsIGAuLyR7Y29uZmlnTmFtZX1gKVxuICAgICAgOiByZWxhdGl2ZUZpbGVQYXRoKGNvbmZpZ05hbWUsIGN3ZCk7XG4gICAgY29uc3QgY29uZmlnUGF0aDogc3RyaW5nID0gbGV4Q29uZmlnIHx8IGRlZmF1bHRDb25maWdQYXRoO1xuICAgIGNvbnN0IGNvbmZpZ0V4aXN0czogYm9vbGVhbiA9IGV4aXN0c1N5bmMoY29uZmlnUGF0aCk7XG5cbiAgICAvLyBJZiB1c2VyIGhhcyBhIExleCBjb25maWcgZmlsZSwgbGV0cyB1c2UgaXQuXG4gICAgaWYoY29uZmlnRXhpc3RzKSB7XG4gICAgICBsb2coYFVzaW5nICR7Y2xpTmFtZX0gY29uZmlndXJhdGlvbiBmaWxlOiAke2NvbmZpZ1BhdGh9YCwgJ25vdGUnLCBxdWlldCk7XG4gICAgICBjb25zdCBleHQ6IHN0cmluZyA9IHBhdGhFeHRuYW1lKGNvbmZpZ1BhdGgpO1xuXG4gICAgICBpZihleHQgPT09ICcuanNvbicpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQ29udGVudDogc3RyaW5nID0gcmVhZEZpbGVTeW5jKGNvbmZpZ1BhdGgsICd1dGY4Jyk7XG5cbiAgICAgICAgaWYoY29uZmlnQ29udGVudCkge1xuICAgICAgICAgIGxldCBjb25maWdKc29uOiBMZXhDb25maWdUeXBlO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbmZpZ0pzb24gPSBKU09OLnBhcnNlKGNvbmZpZ0NvbnRlbnQpO1xuICAgICAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbmZpZ0pzb24gPSB7fTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBMZXhDb25maWcuYWRkQ29uZmlnUGFyYW1zKGNtZCwgY29uZmlnSnNvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDb25maWcgZmlsZSBtYWxmb3JtZWQsICR7Y29uZmlnUGF0aH1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZihleHQgPT09ICcuanMnKSB7XG4gICAgICAgIGNvbnN0IGxleEN1c3RvbUNvbmZpZyA9IHJlYWRGaWxlU3luYyhjb25maWdQYXRoKS50b0pTT04oKSBhcyBMZXhDb25maWdUeXBlO1xuICAgICAgICBMZXhDb25maWcuYWRkQ29uZmlnUGFyYW1zKGNtZCwgbGV4Q3VzdG9tQ29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ29uZmlnIGZpbGUgbXVzdCBiZSBhIEpTIG9yIEpTT04gZmlsZS5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERldGVybWluZSBpZiB3ZSdyZSB1c2luZyBUeXBlc2NyaXB0IG9yIEZsb3dcbiAgICAgIExleENvbmZpZy51c2VUeXBlc2NyaXB0ID0gISF0eXBlc2NyaXB0O1xuXG4gICAgICAvLyBTYXZlIGNvbmZpZyBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igb3RoZXIgY29tbWFuZHMgdG8gaW5jbHVkZVxuICAgICAgTGV4Q29uZmlnLmFkZENvbmZpZ1BhcmFtcyhjbWQsIExleENvbmZpZy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjaGVja1R5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRzY29uZmlnLmpzb24gZXhpc3RzXG4gICAgY29uc3QgdHNjb25maWdQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsICcuL3RzY29uZmlnLmpzb24nKTtcblxuICAgIGlmKCFleGlzdHNTeW5jKHRzY29uZmlnUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRpck5hbWUgPSBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4nLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICAgIHdyaXRlRmlsZVN5bmModHNjb25maWdQYXRoLCByZWFkRmlsZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uL3RzY29uZmlnLmJhc2UuanNvbicpKSk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLFlBQVksY0FBYyxxQkFBb0I7QUFDdEQsU0FB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
136
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0xleENvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2V4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7cmVsYXRpdmVGaWxlUGF0aH0gZnJvbSAnLi91dGlscy9maWxlLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuL3V0aWxzL2xvZy5qcyc7XG5cbmNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcblxuZXhwb3J0IGludGVyZmFjZSBMZXhDb25maWdUeXBlIHtcbiAgY29uZmlnRmlsZXM/OiBzdHJpbmdbXTtcbiAgZW50cnlIVE1MPzogc3RyaW5nO1xuICBlbnRyeUpzPzogc3RyaW5nO1xuICBlc2J1aWxkPzogYW55O1xuICBlbnY/OiBvYmplY3Q7XG4gIGdpdFVybD86IHN0cmluZztcbiAgamVzdD86IGFueTtcbiAgbGlicmFyeU5hbWU/OiBzdHJpbmc7XG4gIGxpYnJhcnlUYXJnZXQ/OiBzdHJpbmc7XG4gIG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIG91dHB1dEZ1bGxQYXRoPzogc3RyaW5nO1xuICBvdXRwdXRIYXNoPzogYm9vbGVhbjtcbiAgb3V0cHV0UGF0aD86IHN0cmluZztcbiAgcGFja2FnZU1hbmFnZXI/OiAnbnBtJyB8ICd5YXJuJztcbiAgcHJlc2V0PzogJ3dlYicgfCAnbm9kZScgfCAnbGFtYmRhJyB8ICdtb2JpbGUnO1xuICBzb3VyY2VGdWxsUGF0aD86IHN0cmluZztcbiAgc291cmNlUGF0aD86IHN0cmluZztcbiAgdGFyZ2V0RW52aXJvbm1lbnQ/OiAnbm9kZScgfCAnd2ViJztcbiAgdXNlR3JhcGhRbD86IGJvb2xlYW47XG4gIHVzZVR5cGVzY3JpcHQ/OiBib29sZWFuO1xuICB3ZWJwYWNrPzogYW55O1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbmZpZ1ZhbHVlczogTGV4Q29uZmlnVHlwZSA9IHtcbiAgY29uZmlnRmlsZXM6IFtdLFxuICBlbnRyeUhUTUw6ICdpbmRleC5odG1sJyxcbiAgZW50cnlKczogJ2luZGV4LmpzJyxcbiAgZXNidWlsZDoge30sXG4gIGVudjogbnVsbCxcbiAgamVzdDoge30sXG4gIG91dHB1dEZ1bGxQYXRoOiBwYXRoUmVzb2x2ZShjd2QsICcuL2Rpc3QnKSxcbiAgb3V0cHV0SGFzaDogZmFsc2UsXG4gIG91dHB1dFBhdGg6ICcuL2Rpc3QnLFxuICBwYWNrYWdlTWFuYWdlcjogJ25wbScsXG4gIHByZXNldDogJ3dlYicsXG4gIHNvdXJjZUZ1bGxQYXRoOiBwYXRoUmVzb2x2ZShjd2QsICcuL3NyYycpLFxuICBzb3VyY2VQYXRoOiAnLi9zcmMnLFxuICB0YXJnZXRFbnZpcm9ubWVudDogJ3dlYicsXG4gIHVzZUdyYXBoUWw6IGZhbHNlLFxuICB1c2VUeXBlc2NyaXB0OiBmYWxzZSxcbiAgd2VicGFjazoge31cbn07XG5cbmV4cG9ydCBjbGFzcyBMZXhDb25maWcge1xuICBzdGF0aWMgY29uZmlnOiBMZXhDb25maWdUeXBlID0ge1xuICAgIC4uLmRlZmF1bHRDb25maWdWYWx1ZXNcbiAgfTtcblxuICBzdGF0aWMgc2V0IHVzZVR5cGVzY3JpcHQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBMZXhDb25maWcuY29uZmlnLnVzZVR5cGVzY3JpcHQgPSB2YWx1ZTtcbiAgICBjb25zdCB7c291cmNlRnVsbFBhdGh9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICAgIC8vIE1ha2Ugc3VyZSB3ZSBjaGFuZ2UgdGhlIGRlZmF1bHQgZW50cnkgZmlsZSBpZiBUeXBlc2NyaXB0IGlzIGJlaW5nIHVzZWQuXG4gICAgY29uc3Qge2VudHJ5SnN9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICAgIGlmKGVudHJ5SnMgPT09ICdpbmRleC5qcycgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGluZGV4UGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCBzb3VyY2VGdWxsUGF0aCwgJ2luZGV4LnRzeCcpO1xuICAgICAgY29uc3QgaGFzSW5kZXhUc3g6IGJvb2xlYW4gPSBleGlzdHNTeW5jKGluZGV4UGF0aCk7XG5cbiAgICAgIGlmKGhhc0luZGV4VHN4KSB7XG4gICAgICAgIExleENvbmZpZy5jb25maWcuZW50cnlKcyA9ICdpbmRleC50c3gnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy5lbnRyeUpzID0gJ2luZGV4LnRzJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTZXQgb3B0aW9ucyBmcm9tIGEgY3VzdG9tIGNvbmZpZ3VyYXRpb24gZmlsZVxuICBzdGF0aWMgdXBkYXRlQ29uZmlnKHVwZGF0ZWRDb25maWc6IExleENvbmZpZ1R5cGUpOiBMZXhDb25maWdUeXBlIHtcbiAgICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIG91dHB1dFBhdGgsIHNvdXJjZVBhdGgsIHNvdXJjZUZ1bGxQYXRoLCB1c2VUeXBlc2NyaXB0fSA9IHVwZGF0ZWRDb25maWc7XG4gICAgY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gVXNlIFR5cGVzY3JpcHRcbiAgICBpZih1c2VUeXBlc2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIExleENvbmZpZy51c2VUeXBlc2NyaXB0ID0gdXNlVHlwZXNjcmlwdDtcbiAgICB9XG5cbiAgICAvLyBEZXN0aW5hdGlvbiBQYXRoXG4gICAgaWYob3V0cHV0UGF0aCAhPT0gdW5kZWZpbmVkICYmIG91dHB1dEZ1bGxQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZWRDb25maWcub3V0cHV0RnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjd2QsIG91dHB1dFBhdGgpO1xuICAgIH1cblxuICAgIC8vIFNvdXJjZSBjb2RlIHBhdGhcbiAgICBpZihzb3VyY2VQYXRoICE9PSB1bmRlZmluZWQgJiYgc291cmNlRnVsbFBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlZENvbmZpZy5zb3VyY2VGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlUGF0aCk7XG4gICAgfVxuXG4gICAgTGV4Q29uZmlnLmNvbmZpZyA9IHsuLi5MZXhDb25maWcuY29uZmlnLCAuLi51cGRhdGVkQ29uZmlnfTtcbiAgICByZXR1cm4gTGV4Q29uZmlnLmNvbmZpZztcbiAgfVxuXG4gIC8vIFNldCBvcHRpb24gdXBkYXRlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmVcbiAgc3RhdGljIGFkZENvbmZpZ1BhcmFtcyhjbWQsIHBhcmFtczogTGV4Q29uZmlnVHlwZSkge1xuICAgIGNvbnN0IG5hbWVQcm9wZXJ0eTogc3RyaW5nID0gJ19uYW1lJztcbiAgICBjb25zdCB7ZW52aXJvbm1lbnQsIG91dHB1dFBhdGgsIHNvdXJjZVBhdGgsIHR5cGVzY3JpcHR9ID0gY21kO1xuXG4gICAgLy8gQ3VzdG9tIG91dHB1dCBkaXJcbiAgICBpZihvdXRwdXRQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5vdXRwdXRQYXRoID0gb3V0cHV0UGF0aDtcbiAgICAgIHBhcmFtcy5vdXRwdXRGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgb3V0cHV0UGF0aCk7XG4gICAgfVxuXG4gICAgLy8gQ3VzdG9tIHNvdXJjZSBkaXJcbiAgICBpZihzb3VyY2VQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5zb3VyY2VQYXRoID0gc291cmNlUGF0aDtcbiAgICAgIHBhcmFtcy5zb3VyY2VGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlUGF0aCk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHdlJ3JlIHVzaW5nIFR5cGVzY3JpcHQgb3IgRmxvd1xuICAgIGlmKHR5cGVzY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnVzZVR5cGVzY3JpcHQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgdGFyZ2V0IGVudmlyb25tZW50XG4gICAgaWYoZW52aXJvbm1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnRhcmdldEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgPT09ICd3ZWInID8gJ3dlYicgOiAnbm9kZSc7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5lbnYuTEVYX0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAge1xuICAgICAgICAuLi5MZXhDb25maWcudXBkYXRlQ29uZmlnKHBhcmFtcyksXG4gICAgICAgIGNvbW1hbmROYW1lOiBjbWRbbmFtZVByb3BlcnR5XSxcbiAgICAgICAgaXNTdGF0aWM6IGNtZC5zdGF0aWNcbiAgICAgIH0sIG51bGwsIDBcbiAgICApO1xuICB9XG5cbiAgLy8gR2V0IGNvbmZpZ3VyYXRpb25cbiAgc3RhdGljIGFzeW5jIHBhcnNlQ29uZmlnKGNtZCwgaXNSb290OiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGxleENvbmZpZywgbGV4Q29uZmlnTmFtZSwgcXVpZXQsIHR5cGVzY3JpcHR9ID0gY21kO1xuICAgIGNvbnN0IGNvbmZpZ05hbWU6IHN0cmluZyA9IGxleENvbmZpZ05hbWUgfHwgJ2xleC5jb25maWcuanMnO1xuICAgIGNvbnN0IGRlZmF1bHRDb25maWdQYXRoOiBzdHJpbmcgPSBpc1Jvb3RcbiAgICAgID8gcGF0aFJlc29sdmUoY3dkLCBgLi8ke2NvbmZpZ05hbWV9YClcbiAgICAgIDogcmVsYXRpdmVGaWxlUGF0aChjb25maWdOYW1lLCBjd2QpO1xuICAgIGNvbnN0IGNvbmZpZ1BhdGg6IHN0cmluZyA9IGxleENvbmZpZyB8fCBkZWZhdWx0Q29uZmlnUGF0aDtcbiAgICBjb25zdCBjb25maWdFeGlzdHM6IGJvb2xlYW4gPSBleGlzdHNTeW5jKGNvbmZpZ1BhdGgpO1xuXG4gICAgLy8gSWYgdXNlciBoYXMgYSBMZXggY29uZmlnIGZpbGUsIGxldHMgdXNlIGl0LlxuICAgIGlmKGNvbmZpZ0V4aXN0cykge1xuICAgICAgbG9nKGBVc2luZyAke2NsaU5hbWV9IGNvbmZpZ3VyYXRpb24gZmlsZTogJHtjb25maWdQYXRofWAsICdub3RlJywgcXVpZXQpO1xuICAgICAgY29uc3QgZXh0OiBzdHJpbmcgPSBwYXRoRXh0bmFtZShjb25maWdQYXRoKTtcblxuICAgICAgaWYoZXh0ID09PSAnLmpzb24nKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0NvbnRlbnQ6IHN0cmluZyA9IHJlYWRGaWxlU3luYyhjb25maWdQYXRoLCAndXRmOCcpO1xuXG4gICAgICAgIGlmKGNvbmZpZ0NvbnRlbnQpIHtcbiAgICAgICAgICBsZXQgY29uZmlnSnNvbjogTGV4Q29uZmlnVHlwZTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25maWdKc29uID0gSlNPTi5wYXJzZShjb25maWdDb250ZW50KT8uZGVmYXVsdCB8fCB7fTtcbiAgICAgICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgICBjb25maWdKc29uID0ge307XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgTGV4Q29uZmlnLmFkZENvbmZpZ1BhcmFtcyhjbWQsIGNvbmZpZ0pzb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ29uZmlnIGZpbGUgbWFsZm9ybWVkLCAke2NvbmZpZ1BhdGh9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYoZXh0ID09PSAnLmpzJykge1xuICAgICAgICBjb25zdCBsZXhDdXN0b21Db25maWcgPSBhd2FpdCBpbXBvcnQoY29uZmlnUGF0aCk7XG4gICAgICAgIExleENvbmZpZy5hZGRDb25maWdQYXJhbXMoY21kLCBsZXhDdXN0b21Db25maWcuZGVmYXVsdCB8fCB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENvbmZpZyBmaWxlIG11c3QgYmUgYSBKUyBvciBKU09OIGZpbGUuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZXRlcm1pbmUgaWYgd2UncmUgdXNpbmcgVHlwZXNjcmlwdCBvciBGbG93XG4gICAgICBMZXhDb25maWcudXNlVHlwZXNjcmlwdCA9ICEhdHlwZXNjcmlwdDtcblxuICAgICAgLy8gU2F2ZSBjb25maWcgYXMgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIG90aGVyIGNvbW1hbmRzIHRvIGluY2x1ZGVcbiAgICAgIExleENvbmZpZy5hZGRDb25maWdQYXJhbXMoY21kLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCkge1xuICAgIGNvbnN0IHRzY29uZmlnUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCAnLi90c2NvbmZpZy5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ1BhdGgpKSB7XG4gICAgICBjb25zdCBkaXJOYW1lID0gbmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWU7XG4gICAgICB3cml0ZUZpbGVTeW5jKHRzY29uZmlnUGF0aCwgcmVhZEZpbGVTeW5jKHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8uLi90c2NvbmZpZy5iYXNlLmpzb24nKSkpO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxZQUFZLGNBQWMscUJBQW9CO0FBQ3RELFNBQVEsV0FBVyxhQUFhLFdBQVcsbUJBQWtCO0FBQzdELFNBQVEsV0FBVTtBQUVsQixTQUFRLHdCQUF1QjtBQUMvQixTQUFRLFdBQVU7QUFFbEIsTUFBTSxNQUFjLFFBQVEsSUFBSTtBQTBCekIsTUFBTSxzQkFBcUM7QUFBQSxFQUNoRCxhQUFhLENBQUM7QUFBQSxFQUNkLFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULFNBQVMsQ0FBQztBQUFBLEVBQ1YsS0FBSztBQUFBLEVBQ0wsTUFBTSxDQUFDO0FBQUEsRUFDUCxnQkFBZ0IsWUFBWSxLQUFLLFFBQVE7QUFBQSxFQUN6QyxZQUFZO0FBQUEsRUFDWixZQUFZO0FBQUEsRUFDWixnQkFBZ0I7QUFBQSxFQUNoQixRQUFRO0FBQUEsRUFDUixnQkFBZ0IsWUFBWSxLQUFLLE9BQU87QUFBQSxFQUN4QyxZQUFZO0FBQUEsRUFDWixtQkFBbUI7QUFBQSxFQUNuQixZQUFZO0FBQUEsRUFDWixlQUFlO0FBQUEsRUFDZixTQUFTLENBQUM7QUFDWjtBQUVPLE1BQU0sVUFBVTtBQUFBLEVBQ3JCLE9BQU8sU0FBd0I7QUFBQSxJQUM3QixHQUFHO0FBQUEsRUFDTDtBQUFBLEVBRUEsV0FBVyxjQUFjLE9BQWdCO0FBQ3ZDLGNBQVUsT0FBTyxnQkFBZ0I7QUFDakMsVUFBTSxFQUFDLGVBQWMsSUFBSSxVQUFVO0FBR25DLFVBQU0sRUFBQyxRQUFPLElBQUksVUFBVTtBQUU1QixRQUFHLFlBQVksY0FBYyxPQUFPO0FBQ2xDLFlBQU0sWUFBb0IsWUFBWSxLQUFLLGdCQUFnQixXQUFXO0FBQ3RFLFlBQU0sY0FBdUIsV0FBVyxTQUFTO0FBRWpELFVBQUcsYUFBYTtBQUNkLGtCQUFVLE9BQU8sVUFBVTtBQUFBLE1BQzdCLE9BQU87QUFDTCxrQkFBVSxPQUFPLFVBQVU7QUFBQSxNQUM3QjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUE7QUFBQSxFQUdBLE9BQU8sYUFBYSxlQUE2QztBQUMvRCxVQUFNLEVBQUMsZ0JBQWdCLFlBQVksWUFBWSxnQkFBZ0IsY0FBYSxJQUFJO0FBQ2hGLFVBQU1BLE9BQWMsUUFBUSxJQUFJO0FBR2hDLFFBQUcsa0JBQWtCLFFBQVc7QUFDOUIsZ0JBQVUsZ0JBQWdCO0FBQUEsSUFDNUI7QUFHQSxRQUFHLGVBQWUsVUFBYSxtQkFBbUIsUUFBVztBQUMzRCxvQkFBYyxpQkFBaUIsWUFBWUEsTUFBSyxVQUFVO0FBQUEsSUFDNUQ7QUFHQSxRQUFHLGVBQWUsVUFBYSxtQkFBbUIsUUFBVztBQUMzRCxvQkFBYyxpQkFBaUIsWUFBWUEsTUFBSyxVQUFVO0FBQUEsSUFDNUQ7QUFFQSxjQUFVLFNBQVMsRUFBQyxHQUFHLFVBQVUsUUFBUSxHQUFHLGNBQWE7QUFDekQsV0FBTyxVQUFVO0FBQUEsRUFDbkI7QUFBQTtBQUFBLEVBR0EsT0FBTyxnQkFBZ0IsS0FBSyxRQUF1QjtBQUNqRCxVQUFNLGVBQXVCO0FBQzdCLFVBQU0sRUFBQyxhQUFhLFlBQVksWUFBWSxXQUFVLElBQUk7QUFHMUQsUUFBRyxlQUFlLFFBQVc7QUFDM0IsYUFBTyxhQUFhO0FBQ3BCLGFBQU8saUJBQWlCLFlBQVksS0FBSyxVQUFVO0FBQUEsSUFDckQ7QUFHQSxRQUFHLGVBQWUsUUFBVztBQUMzQixhQUFPLGFBQWE7QUFDcEIsYUFBTyxpQkFBaUIsWUFBWSxLQUFLLFVBQVU7QUFBQSxJQUNyRDtBQUdBLFFBQUcsZUFBZSxRQUFXO0FBQzNCLGFBQU8sZ0JBQWdCO0FBQUEsSUFDekI7QUFHQSxRQUFHLGdCQUFnQixRQUFXO0FBQzVCLGFBQU8sb0JBQW9CLGdCQUFnQixRQUFRLFFBQVE7QUFBQSxJQUM3RDtBQUVBLFlBQVEsSUFBSSxhQUFhLEtBQUs7QUFBQSxNQUM1QjtBQUFBLFFBQ0UsR0FBRyxVQUFVLGFBQWEsTUFBTTtBQUFBLFFBQ2hDLGFBQWEsSUFBSSxZQUFZO0FBQUEsUUFDN0IsVUFBVSxJQUFJO0FBQUEsTUFDaEI7QUFBQSxNQUFHO0FBQUEsTUFBTTtBQUFBLElBQ1g7QUFBQSxFQUNGO0FBQUE7QUFBQSxFQUdBLGFBQWEsWUFBWSxLQUFLLFNBQWtCLE1BQXFCO0FBQ25FLFVBQU0sRUFBQyxVQUFVLE9BQU8sV0FBVyxlQUFlLE9BQU8sV0FBVSxJQUFJO0FBQ3ZFLFVBQU0sYUFBcUIsaUJBQWlCO0FBQzVDLFVBQU0sb0JBQTRCLFNBQzlCLFlBQVksS0FBSyxLQUFLLFVBQVUsRUFBRSxJQUNsQyxpQkFBaUIsWUFBWSxHQUFHO0FBQ3BDLFVBQU0sYUFBcUIsYUFBYTtBQUN4QyxVQUFNLGVBQXdCLFdBQVcsVUFBVTtBQUduRCxRQUFHLGNBQWM7QUFDZixVQUFJLFNBQVMsT0FBTyx3QkFBd0IsVUFBVSxJQUFJLFFBQVEsS0FBSztBQUN2RSxZQUFNLE1BQWMsWUFBWSxVQUFVO0FBRTFDLFVBQUcsUUFBUSxTQUFTO0FBQ2xCLGNBQU0sZ0JBQXdCLGFBQWEsWUFBWSxNQUFNO0FBRTdELFlBQUcsZUFBZTtBQUNoQixjQUFJO0FBRUosY0FBSTtBQUNGLHlCQUFhLEtBQUssTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDO0FBQUEsVUFDdEQsU0FBUSxPQUFPO0FBQ2IseUJBQWEsQ0FBQztBQUFBLFVBQ2hCO0FBRUEsb0JBQVUsZ0JBQWdCLEtBQUssVUFBVTtBQUFBLFFBQzNDLE9BQU87QUFDTCxjQUFJO0FBQUEsRUFBSyxPQUFPLGtDQUFrQyxVQUFVLElBQUksU0FBUyxLQUFLO0FBQUEsUUFDaEY7QUFBQSxNQUNGLFdBQVUsUUFBUSxPQUFPO0FBQ3ZCLGNBQU0sa0JBQWtCLE1BQU0sT0FBTztBQUNyQyxrQkFBVSxnQkFBZ0IsS0FBSyxnQkFBZ0IsV0FBVyxDQUFDLENBQUM7QUFBQSxNQUM5RCxPQUFPO0FBQ0wsWUFBSTtBQUFBLEVBQUssT0FBTyxrREFBa0QsU0FBUyxLQUFLO0FBQUEsTUFDbEY7QUFBQSxJQUNGLE9BQU87QUFFTCxnQkFBVSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRzVCLGdCQUFVLGdCQUFnQixLQUFLLFVBQVUsTUFBTTtBQUFBLElBQ2pEO0FBQUEsRUFDRjtBQUFBLEVBRUEsT0FBTyx3QkFBd0I7QUFDN0IsVUFBTSxlQUF1QixZQUFZLEtBQUssaUJBQWlCO0FBRS9ELFFBQUcsQ0FBQyxXQUFXLFlBQVksR0FBRztBQUM1QixZQUFNLFVBQVUsSUFBSSxJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUU7QUFDOUMsb0JBQWMsY0FBYyxhQUFhLFlBQVksU0FBUyw2QkFBNkIsQ0FBQyxDQUFDO0FBQUEsSUFDL0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbImN3ZCJdCn0K
@@ -2,19 +2,19 @@ import graphqlLoaderPlugin from "@luckycatfactory/esbuild-graphql-loader";
2
2
  import { build as esBuild } from "esbuild";
3
3
  import { execa } from "execa";
4
4
  import { resolve as pathResolve } from "path";
5
- import { fileURLToPath } from "url";
5
+ import { URL } from "url";
6
6
  import { LexConfig } from "../LexConfig.js";
7
7
  import { checkLinkedModules, createSpinner, removeFiles } from "../utils/app.js";
8
8
  import { relativeNodePath } from "../utils/file.js";
9
9
  import { log } from "../utils/log.js";
10
- const buildWithEsBuild = async (spinner, cmd, callback) => {
10
+ const buildWithEsBuild = async (spinner, commandOptions, callback) => {
11
11
  const {
12
12
  cliName = "Lex",
13
13
  outputPath,
14
14
  quiet,
15
15
  sourcePath,
16
- watch
17
- } = cmd;
16
+ watch = false
17
+ } = commandOptions;
18
18
  const {
19
19
  targetEnvironment,
20
20
  useGraphQl,
@@ -52,83 +52,127 @@ ${cliName} Error: ${error.message}`, "error", quiet);
52
52
  console.error(error);
53
53
  }
54
54
  spinner.fail("Code build failed.");
55
- callback(error.status);
56
- return error.status;
55
+ callback(1);
56
+ return 1;
57
57
  }
58
58
  callback(0);
59
59
  return 0;
60
60
  };
61
61
  const buildWithWebpack = async (spinner, cmd, callback) => {
62
62
  const {
63
- buildDelimiter,
63
+ analyze,
64
64
  cliName = "Lex",
65
65
  config,
66
+ configName,
67
+ defineProcessEnvNodeEnv,
68
+ devtool,
69
+ disableInterpret,
70
+ entry,
71
+ env,
72
+ failOnWarnings,
73
+ json,
74
+ merge,
66
75
  mode,
67
- outputChunkFilename,
68
- outputFilename,
69
- outputJsonpFunction,
70
- outputLibrary,
71
- outputLibraryTarget,
72
- outputPathInfo,
73
- outputPublicPath,
74
- outputSourceMapFilename,
76
+ name,
77
+ nodeEnv,
78
+ noDevtool,
79
+ noStats,
80
+ noTarget,
81
+ noWatch,
82
+ noWatchOptionsStdin,
83
+ outputPath,
75
84
  quiet = false,
76
- watch
85
+ stats,
86
+ target,
87
+ watch,
88
+ watchOptionsStdin
77
89
  } = cmd;
78
90
  let webpackConfig;
91
+ const dirName = new URL(".", import.meta.url).pathname;
79
92
  if (config) {
80
93
  const isRelativeConfig = config.substr(0, 2) === "./";
81
- const fullConfigPath = isRelativeConfig ? pathResolve(process.cwd(), config) : config;
82
- webpackConfig = fullConfigPath;
94
+ webpackConfig = isRelativeConfig ? pathResolve(process.cwd(), config) : config;
83
95
  } else {
84
- const dirName = fileURLToPath(new URL(".", import.meta.url));
85
96
  webpackConfig = pathResolve(dirName, "../../webpack.config.js");
86
97
  }
87
98
  const webpackOptions = [
88
99
  "--color",
89
100
  "--progress",
90
- "--stats-error-details",
91
101
  "--config",
92
102
  webpackConfig
93
103
  ];
104
+ if (analyze) {
105
+ webpackOptions.push("--analyze");
106
+ }
107
+ if (configName) {
108
+ webpackOptions.push("--config-name", configName);
109
+ }
110
+ if (defineProcessEnvNodeEnv) {
111
+ webpackOptions.push("--define-process-env-node-env", defineProcessEnvNodeEnv);
112
+ }
113
+ if (devtool) {
114
+ webpackOptions.push("--devtool", devtool);
115
+ }
116
+ if (disableInterpret) {
117
+ webpackOptions.push("--disable-interpret");
118
+ }
119
+ if (entry) {
120
+ webpackOptions.push("--entry", entry);
121
+ }
122
+ if (env) {
123
+ webpackOptions.push("--env", env);
124
+ }
125
+ if (failOnWarnings) {
126
+ webpackOptions.push("--fail-on-warnings");
127
+ }
128
+ if (json) {
129
+ webpackOptions.push("--json", json);
130
+ }
94
131
  if (mode) {
95
132
  webpackOptions.push("--mode", mode);
96
133
  }
97
- if (outputChunkFilename) {
98
- webpackOptions.push("--output-chunk-filename", outputChunkFilename);
134
+ if (merge) {
135
+ webpackOptions.push("--merge");
99
136
  }
100
- if (outputFilename) {
101
- webpackOptions.push("--output-filename", outputFilename);
137
+ if (name) {
138
+ webpackOptions.push("--name", name);
102
139
  }
103
- if (outputJsonpFunction) {
104
- webpackOptions.push("--output-jsonp-function", outputJsonpFunction);
140
+ if (noDevtool) {
141
+ webpackOptions.push("--no-devtool");
105
142
  }
106
- if (outputLibrary) {
107
- webpackOptions.push("--output-library", outputLibrary);
143
+ if (noStats) {
144
+ webpackOptions.push("--no-stats");
108
145
  }
109
- if (outputLibraryTarget) {
110
- webpackOptions.push("--output-library-target", outputLibraryTarget);
146
+ if (noTarget) {
147
+ webpackOptions.push("--no-target");
111
148
  }
112
- if (outputPathInfo) {
113
- webpackOptions.push("--output-path-info", outputPathInfo);
149
+ if (noWatch) {
150
+ webpackOptions.push("--no-watch");
114
151
  }
115
- if (outputPublicPath) {
116
- webpackOptions.push("--output-public-path", outputPublicPath);
152
+ if (noWatchOptionsStdin) {
153
+ webpackOptions.push("--no-watch-options-stdin");
117
154
  }
118
- if (outputSourceMapFilename) {
119
- webpackOptions.push("--output-source-map-filename", outputSourceMapFilename);
155
+ if (nodeEnv) {
156
+ webpackOptions.push("--node-env", nodeEnv);
120
157
  }
121
- if (buildDelimiter) {
122
- webpackOptions.push("--build-delimiter", buildDelimiter);
158
+ if (outputPath) {
159
+ webpackOptions.push("--output-path", outputPath);
160
+ }
161
+ if (stats) {
162
+ webpackOptions.push("--stats", stats);
163
+ }
164
+ if (target) {
165
+ webpackOptions.push("--target", target);
123
166
  }
124
167
  if (watch) {
125
168
  webpackOptions.push("--watch");
126
169
  }
170
+ if (watchOptionsStdin) {
171
+ webpackOptions.push("--watch-options-stdin");
172
+ }
127
173
  try {
128
- const dirName = fileURLToPath(new URL(".", import.meta.url));
129
- const nodePath = pathResolve(dirName, "../../node_modules");
130
- const webpackPath = relativeNodePath("webpack-cli/bin/cli.js", nodePath);
131
- await execa(webpackPath, webpackOptions, { encoding: "utf-8", stdio: "inherit" });
174
+ const webpackPath = relativeNodePath("webpack-cli/bin/cli.js", "../..");
175
+ await execa(webpackPath, webpackOptions, { encoding: "utf8", stdio: "inherit" });
132
176
  spinner.succeed("Build completed successfully!");
133
177
  callback(0);
134
178
  return 0;
@@ -136,8 +180,8 @@ const buildWithWebpack = async (spinner, cmd, callback) => {
136
180
  log(`
137
181
  ${cliName} Error: ${error.message}`, "error", quiet);
138
182
  spinner.fail("Build failed.");
139
- callback(error.status);
140
- return error.status;
183
+ callback(1);
184
+ return 1;
141
185
  }
142
186
  };
143
187
  const build = async (cmd, callback = () => ({})) => {
@@ -145,12 +189,12 @@ const build = async (cmd, callback = () => ({})) => {
145
189
  bundler = "webpack",
146
190
  cliName = "Lex",
147
191
  quiet = false,
148
- remove,
149
- variables
192
+ remove = false,
193
+ variables = "{}"
150
194
  } = cmd;
151
195
  const spinner = createSpinner(quiet);
152
196
  log(`${cliName} building...`, "info", quiet);
153
- LexConfig.parseConfig(cmd);
197
+ await LexConfig.parseConfig(cmd);
154
198
  const { outputFullPath, useTypescript } = LexConfig.config;
155
199
  checkLinkedModules();
156
200
  let variablesObj = { NODE_ENV: "production" };
@@ -177,9 +221,11 @@ ${cliName} Error: Environment variables option is not a valid JSON object.`, "er
177
221
  }
178
222
  return buildWithWebpack(spinner, cmd, callback);
179
223
  };
224
+ var build_default = build;
180
225
  export {
181
226
  build,
182
227
  buildWithEsBuild,
183
- buildWithWebpack
228
+ buildWithWebpack,
229
+ build_default as default
184
230
  };
185
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2J1aWxkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IGdyYXBocWxMb2FkZXJQbHVnaW4gZnJvbSAnQGx1Y2t5Y2F0ZmFjdG9yeS9lc2J1aWxkLWdyYXBocWwtbG9hZGVyJztcbmltcG9ydCB7YnVpbGQgYXMgZXNCdWlsZH0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtmaWxlVVJMVG9QYXRofSBmcm9tICd1cmwnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y2hlY2tMaW5rZWRNb2R1bGVzLCBjcmVhdGVTcGlubmVyLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVsYXRpdmVOb2RlUGF0aH0gZnJvbSAnLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGJ1aWxkV2l0aEVzQnVpbGQgPSBhc3luYyAoc3Bpbm5lciwgY21kLCBjYWxsYmFjaykgPT4ge1xuICBjb25zdCB7XG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIG91dHB1dFBhdGgsXG4gICAgcXVpZXQsXG4gICAgc291cmNlUGF0aCxcbiAgICB3YXRjaFxuICB9ID0gY21kO1xuICBjb25zdCB7XG4gICAgdGFyZ2V0RW52aXJvbm1lbnQsXG4gICAgdXNlR3JhcGhRbCxcbiAgICB1c2VUeXBlc2NyaXB0XG4gIH0gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gIGNvbnN0IGxvYWRlcjogYW55ID0ge1xuICAgICcuanMnOiAnanMnXG4gIH07XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIGxvYWRlclsnLnRzJ10gPSAndHMnO1xuICAgIGxvYWRlclsnLnRzeCddID0gJ3RzeCc7XG4gIH1cblxuICAvLyBQbHVnaW5zXG4gIGNvbnN0IHBsdWdpbnMgPSBbXTtcblxuICBpZih1c2VHcmFwaFFsKSB7XG4gICAgcGx1Z2lucy5wdXNoKGdyYXBocWxMb2FkZXJQbHVnaW4oKSk7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGVzQnVpbGQoe1xuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgY29sb3I6IHRydWUsXG4gICAgICBlbnRyeVBvaW50czogW3NvdXJjZVBhdGhdLFxuICAgICAgbG9hZGVyLFxuICAgICAgb3V0ZGlyOiBvdXRwdXRQYXRoLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHBsdWdpbnMsXG4gICAgICBzb3VyY2VtYXA6ICdpbmxpbmUnLFxuICAgICAgdGFyZ2V0OiB0YXJnZXRFbnZpcm9ubWVudCA9PT0gJ25vZGUnID8gJ25vZGUxOCcgOiAnZXMyMDE2JyxcbiAgICAgIHdhdGNoXG4gICAgfSk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ0J1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuZmFpbCgnQ29kZSBidWlsZCBmYWlsZWQuJyk7XG5cbiAgICAvLyBLaWxsIFByb2Nlc3NcbiAgICBjYWxsYmFjayhlcnJvci5zdGF0dXMpO1xuICAgIHJldHVybiBlcnJvci5zdGF0dXM7XG4gIH1cblxuICAvLyBTdG9wIHByb2Nlc3NcbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkV2l0aFdlYnBhY2sgPSBhc3luYyAoc3Bpbm5lciwgY21kLCBjYWxsYmFjaykgPT4ge1xuICBjb25zdCB7XG4gICAgYnVpbGREZWxpbWl0ZXIsXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbmZpZyxcbiAgICBtb2RlLFxuICAgIG91dHB1dENodW5rRmlsZW5hbWUsXG4gICAgb3V0cHV0RmlsZW5hbWUsXG4gICAgb3V0cHV0SnNvbnBGdW5jdGlvbixcbiAgICBvdXRwdXRMaWJyYXJ5LFxuICAgIG91dHB1dExpYnJhcnlUYXJnZXQsXG4gICAgb3V0cHV0UGF0aEluZm8sXG4gICAgb3V0cHV0UHVibGljUGF0aCxcbiAgICBvdXRwdXRTb3VyY2VNYXBGaWxlbmFtZSxcbiAgICBxdWlldCA9IGZhbHNlLFxuICAgIHdhdGNoXG4gIH0gPSBjbWQ7XG5cbiAgLy8gR2V0IGN1c3RvbSB3ZWJwYWNrIGNvbmZpZ3VyYXRpb25cbiAgbGV0IHdlYnBhY2tDb25maWc6IHN0cmluZztcblxuICBpZihjb25maWcpIHtcbiAgICBjb25zdCBpc1JlbGF0aXZlQ29uZmlnOiBib29sZWFuID0gY29uZmlnLnN1YnN0cigwLCAyKSA9PT0gJy4vJztcbiAgICBjb25zdCBmdWxsQ29uZmlnUGF0aDogc3RyaW5nID0gaXNSZWxhdGl2ZUNvbmZpZyA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNvbmZpZykgOiBjb25maWc7XG4gICAgd2VicGFja0NvbmZpZyA9IGZ1bGxDb25maWdQYXRoO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRpck5hbWUgPSBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4nLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICB3ZWJwYWNrQ29uZmlnID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uL3dlYnBhY2suY29uZmlnLmpzJyk7XG4gIH1cblxuICBjb25zdCB3ZWJwYWNrT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgJy0tY29sb3InLFxuICAgICctLXByb2dyZXNzJyxcbiAgICAnLS1zdGF0cy1lcnJvci1kZXRhaWxzJyxcbiAgICAnLS1jb25maWcnLCB3ZWJwYWNrQ29uZmlnXG4gIF07XG5cbiAgaWYobW9kZSkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbW9kZScsIG1vZGUpO1xuICB9XG5cbiAgaWYob3V0cHV0Q2h1bmtGaWxlbmFtZSkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tb3V0cHV0LWNodW5rLWZpbGVuYW1lJywgb3V0cHV0Q2h1bmtGaWxlbmFtZSk7XG4gIH1cblxuICBpZihvdXRwdXRGaWxlbmFtZSkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tb3V0cHV0LWZpbGVuYW1lJywgb3V0cHV0RmlsZW5hbWUpO1xuICB9XG5cbiAgaWYob3V0cHV0SnNvbnBGdW5jdGlvbikge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tb3V0cHV0LWpzb25wLWZ1bmN0aW9uJywgb3V0cHV0SnNvbnBGdW5jdGlvbik7XG4gIH1cblxuICBpZihvdXRwdXRMaWJyYXJ5KSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1vdXRwdXQtbGlicmFyeScsIG91dHB1dExpYnJhcnkpO1xuICB9XG5cbiAgaWYob3V0cHV0TGlicmFyeVRhcmdldCkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tb3V0cHV0LWxpYnJhcnktdGFyZ2V0Jywgb3V0cHV0TGlicmFyeVRhcmdldCk7XG4gIH1cblxuICBpZihvdXRwdXRQYXRoSW5mbykge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tb3V0cHV0LXBhdGgtaW5mbycsIG91dHB1dFBhdGhJbmZvKTtcbiAgfVxuXG4gIGlmKG91dHB1dFB1YmxpY1BhdGgpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW91dHB1dC1wdWJsaWMtcGF0aCcsIG91dHB1dFB1YmxpY1BhdGgpO1xuICB9XG5cbiAgaWYob3V0cHV0U291cmNlTWFwRmlsZW5hbWUpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW91dHB1dC1zb3VyY2UtbWFwLWZpbGVuYW1lJywgb3V0cHV0U291cmNlTWFwRmlsZW5hbWUpO1xuICB9XG5cbiAgaWYoYnVpbGREZWxpbWl0ZXIpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLWJ1aWxkLWRlbGltaXRlcicsIGJ1aWxkRGVsaW1pdGVyKTtcbiAgfVxuXG4gIGlmKHdhdGNoKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS13YXRjaCcpO1xuICB9XG5cbiAgLy8gQ29tcGlsZSB1c2luZyB3ZWJwYWNrXG4gIHRyeSB7XG4gICAgY29uc3QgZGlyTmFtZSA9IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkpO1xuICAgIGNvbnN0IG5vZGVQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vbm9kZV9tb2R1bGVzJyk7XG4gICAgY29uc3Qgd2VicGFja1BhdGg6IHN0cmluZyA9IHJlbGF0aXZlTm9kZVBhdGgoJ3dlYnBhY2stY2xpL2Jpbi9jbGkuanMnLCBub2RlUGF0aCk7XG4gICAgYXdhaXQgZXhlY2Eod2VicGFja1BhdGgsIHdlYnBhY2tPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGYtOCcsIHN0ZGlvOiAnaW5oZXJpdCd9KTtcblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuc3VjY2VlZCgnQnVpbGQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnKTtcblxuICAgIC8vIFN0b3AgcHJvY2Vzc1xuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdCdWlsZCBmYWlsZWQuJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjayhlcnJvci5zdGF0dXMpO1xuICAgIHJldHVybiBlcnJvci5zdGF0dXM7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZCA9IGFzeW5jIChjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7XG4gICAgYnVuZGxlciA9ICd3ZWJwYWNrJyxcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgcXVpZXQgPSBmYWxzZSxcbiAgICByZW1vdmUsXG4gICAgdmFyaWFibGVzXG4gIH0gPSBjbWQ7XG5cbiAgLy8gU3Bpbm5lclxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgLy8gRGlzcGxheSBzdGF0dXNcbiAgbG9nKGAke2NsaU5hbWV9IGJ1aWxkaW5nLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgdXNlVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gIC8vIENoZWNrIGZvciBsaW5rZWQgbW9kdWxlc1xuICBjaGVja0xpbmtlZE1vZHVsZXMoKTtcblxuICAvLyBTZXQgbm9kZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgbGV0IHZhcmlhYmxlc09iajogb2JqZWN0ID0ge05PREVfRU5WOiAncHJvZHVjdGlvbid9O1xuXG4gIGlmKHZhcmlhYmxlcykge1xuICAgIHRyeSB7XG4gICAgICB2YXJpYWJsZXNPYmogPSBKU09OLnBhcnNlKHZhcmlhYmxlcyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgb3B0aW9uIGlzIG5vdCBhIHZhbGlkIEpTT04gb2JqZWN0LmAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MuZW52ID0gey4uLnByb2Nlc3MuZW52LCAuLi52YXJpYWJsZXNPYmp9O1xuXG4gIC8vIFN0YXJ0IGJ1aWxkIHNwaW5uZXJcbiAgc3Bpbm5lci5zdGFydCgnQnVpbGRpbmcgY29kZS4uLicpO1xuXG4gIC8vIENsZWFuIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIHdlIHN0YXJ0IGFkZGluZyBpbiBuZXcgZmlsZXNcbiAgaWYocmVtb3ZlKSB7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RnVsbFBhdGgpO1xuICB9XG5cbiAgLy8gQWRkIHRzY29uZmlnIGZpbGUgaWYgbm9uZSBleGlzdHNcbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0c2NvbmZpZy5qc29uIGV4aXN0c1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgfVxuXG4gIGlmKGJ1bmRsZXIgPT09ICdlc2J1aWxkJykge1xuICAgIHJldHVybiBidWlsZFdpdGhFc0J1aWxkKHNwaW5uZXIsIGNtZCwgY2FsbGJhY2spO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkV2l0aFdlYnBhY2soc3Bpbm5lciwgY21kLCBjYWxsYmFjayk7XG59O1xuXG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFPLHlCQUF5QjtBQUNoQyxTQUFRLFNBQVMsZUFBYztBQUMvQixTQUFRLGFBQVk7QUFDcEIsU0FBUSxXQUFXLG1CQUFrQjtBQUNyQyxTQUFRLHFCQUFvQjtB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
231
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2J1aWxkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IGdyYXBocWxMb2FkZXJQbHVnaW4gZnJvbSAnQGx1Y2t5Y2F0ZmFjdG9yeS9lc2J1aWxkLWdyYXBocWwtbG9hZGVyJztcbmltcG9ydCB7YnVpbGQgYXMgZXNCdWlsZH0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjaGVja0xpbmtlZE1vZHVsZXMsIGNyZWF0ZVNwaW5uZXIsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtyZWxhdGl2ZU5vZGVQYXRofSBmcm9tICcuLi91dGlscy9maWxlLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJ1bmRsZXI/OiAnd2VicGFjaycgfCAnZXNidWlsZCc7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVtb3ZlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc291cmNlUGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nO1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEJ1aWxkQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBidWlsZFdpdGhFc0J1aWxkID0gYXN5bmMgKHNwaW5uZXIsIGNvbW1hbmRPcHRpb25zOiBCdWlsZE9wdGlvbnMsIGNhbGxiYWNrOiBCdWlsZENhbGxiYWNrKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgb3V0cHV0UGF0aCxcbiAgICBxdWlldCxcbiAgICBzb3VyY2VQYXRoLFxuICAgIHdhdGNoID0gZmFsc2VcbiAgfSA9IGNvbW1hbmRPcHRpb25zO1xuICBjb25zdCB7XG4gICAgdGFyZ2V0RW52aXJvbm1lbnQsXG4gICAgdXNlR3JhcGhRbCxcbiAgICB1c2VUeXBlc2NyaXB0XG4gIH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBsb2FkZXI6IGFueSA9IHtcbiAgICAnLmpzJzogJ2pzJ1xuICB9O1xuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICBsb2FkZXJbJy50cyddID0gJ3RzJztcbiAgICBsb2FkZXJbJy50c3gnXSA9ICd0c3gnO1xuICB9XG5cbiAgY29uc3QgcGx1Z2lucyA9IFtdO1xuXG4gIGlmKHVzZUdyYXBoUWwpIHtcbiAgICBwbHVnaW5zLnB1c2goZ3JhcGhxbExvYWRlclBsdWdpbigpKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXNCdWlsZCh7XG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBjb2xvcjogdHJ1ZSxcbiAgICAgIGVudHJ5UG9pbnRzOiBbc291cmNlUGF0aF0sXG4gICAgICBsb2FkZXIsXG4gICAgICBvdXRkaXI6IG91dHB1dFBhdGgsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgcGx1Z2lucyxcbiAgICAgIHNvdXJjZW1hcDogJ2lubGluZScsXG4gICAgICB0YXJnZXQ6IHRhcmdldEVudmlyb25tZW50ID09PSAnbm9kZScgPyAnbm9kZTE4JyA6ICdlczIwMTYnLFxuICAgICAgd2F0Y2g6IHdhdGNoIGFzIG5ldmVyXG4gICAgfSk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoJ0J1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHNwaW5uZXIuZmFpbCgnQ29kZSBidWlsZCBmYWlsZWQuJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFdpdGhXZWJwYWNrID0gYXN5bmMgKHNwaW5uZXIsIGNtZCwgY2FsbGJhY2spID0+IHtcbiAgY29uc3Qge1xuICAgIGFuYWx5emUsXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbmZpZyxcbiAgICBjb25maWdOYW1lLFxuICAgIGRlZmluZVByb2Nlc3NFbnZOb2RlRW52LFxuICAgIGRldnRvb2wsXG4gICAgZGlzYWJsZUludGVycHJldCxcbiAgICBlbnRyeSxcbiAgICBlbnYsXG4gICAgZmFpbE9uV2FybmluZ3MsXG4gICAganNvbixcbiAgICBtZXJnZSxcbiAgICBtb2RlLFxuICAgIG5hbWUsXG4gICAgbm9kZUVudixcbiAgICBub0RldnRvb2wsXG4gICAgbm9TdGF0cyxcbiAgICBub1RhcmdldCxcbiAgICBub1dhdGNoLFxuICAgIG5vV2F0Y2hPcHRpb25zU3RkaW4sXG4gICAgb3V0cHV0UGF0aCxcbiAgICBxdWlldCA9IGZhbHNlLFxuICAgIHN0YXRzLFxuICAgIHRhcmdldCxcbiAgICB3YXRjaCxcbiAgICB3YXRjaE9wdGlvbnNTdGRpblxuICB9ID0gY21kO1xuXG4gIC8vIEdldCBjdXN0b20gd2VicGFjayBjb25maWd1cmF0aW9uXG4gIGxldCB3ZWJwYWNrQ29uZmlnOiBzdHJpbmc7XG4gIGNvbnN0IGRpck5hbWUgPSBuZXcgVVJMKCcuJywgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZTtcblxuICBpZihjb25maWcpIHtcbiAgICBjb25zdCBpc1JlbGF0aXZlQ29uZmlnOiBib29sZWFuID0gY29uZmlnLnN1YnN0cigwLCAyKSA9PT0gJy4vJztcbiAgICB3ZWJwYWNrQ29uZmlnID0gaXNSZWxhdGl2ZUNvbmZpZyA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNvbmZpZykgOiBjb25maWc7XG4gIH0gZWxzZSB7XG4gICAgd2VicGFja0NvbmZpZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi93ZWJwYWNrLmNvbmZpZy5qcycpO1xuICB9XG5cbiAgY29uc3Qgd2VicGFja09wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICctLWNvbG9yJyxcbiAgICAnLS1wcm9ncmVzcycsXG4gICAgJy0tY29uZmlnJywgd2VicGFja0NvbmZpZ1xuICBdO1xuXG4gIGlmKGFuYWx5emUpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLWFuYWx5emUnKTtcbiAgfVxuXG4gIGlmKGNvbmZpZ05hbWUpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLWNvbmZpZy1uYW1lJywgY29uZmlnTmFtZSk7XG4gIH1cblxuICBpZihkZWZpbmVQcm9jZXNzRW52Tm9kZUVudikge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZGVmaW5lLXByb2Nlc3MtZW52LW5vZGUtZW52JywgZGVmaW5lUHJvY2Vzc0Vudk5vZGVFbnYpO1xuICB9XG5cbiAgaWYoZGV2dG9vbCkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZGV2dG9vbCcsIGRldnRvb2wpO1xuICB9XG5cbiAgaWYoZGlzYWJsZUludGVycHJldCkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZGlzYWJsZS1pbnRlcnByZXQnKTtcbiAgfVxuXG4gIGlmKGVudHJ5KSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1lbnRyeScsIGVudHJ5KTtcbiAgfVxuXG4gIGlmKGVudikge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZW52JywgZW52KTtcbiAgfVxuXG4gIGlmKGZhaWxPbldhcm5pbmdzKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1mYWlsLW9uLXdhcm5pbmdzJyk7XG4gIH1cblxuICBpZihqc29uKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1qc29uJywganNvbik7XG4gIH1cblxuICBpZihtb2RlKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1tb2RlJywgbW9kZSk7XG4gIH1cblxuICBpZihtZXJnZSkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbWVyZ2UnKTtcbiAgfVxuXG4gIGlmKG5hbWUpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5hbWUnLCBuYW1lKTtcbiAgfVxuXG4gIGlmKG5vRGV2dG9vbCkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm8tZGV2dG9vbCcpO1xuICB9XG5cbiAgaWYobm9TdGF0cykge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm8tc3RhdHMnKTtcbiAgfVxuXG4gIGlmKG5vVGFyZ2V0KSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1uby10YXJnZXQnKTtcbiAgfVxuXG4gIGlmKG5vV2F0Y2gpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vLXdhdGNoJyk7XG4gIH1cblxuICBpZihub1dhdGNoT3B0aW9uc1N0ZGluKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1uby13YXRjaC1vcHRpb25zLXN0ZGluJyk7XG4gIH1cblxuICBpZihub2RlRW52KSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1ub2RlLWVudicsIG5vZGVFbnYpO1xuICB9XG5cbiAgaWYob3V0cHV0UGF0aCkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tb3V0cHV0LXBhdGgnLCBvdXRwdXRQYXRoKTtcbiAgfVxuXG4gIGlmKHN0YXRzKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1zdGF0cycsIHN0YXRzKTtcbiAgfVxuXG4gIGlmKHRhcmdldCkge1xuICAgIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tdGFyZ2V0JywgdGFyZ2V0KTtcbiAgfVxuXG4gIGlmKHdhdGNoKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS13YXRjaCcpO1xuICB9XG5cbiAgaWYod2F0Y2hPcHRpb25zU3RkaW4pIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLXdhdGNoLW9wdGlvbnMtc3RkaW4nKTtcbiAgfVxuXG4gIC8vIENvbXBpbGUgdXNpbmcgd2VicGFja1xuICB0cnkge1xuICAgIGNvbnN0IHdlYnBhY2tQYXRoOiBzdHJpbmcgPSByZWxhdGl2ZU5vZGVQYXRoKCd3ZWJwYWNrLWNsaS9iaW4vY2xpLmpzJywgJy4uLy4uJyk7XG4gICAgYXdhaXQgZXhlY2Eod2VicGFja1BhdGgsIHdlYnBhY2tPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4Jywgc3RkaW86ICdpbmhlcml0J30pO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuXG4gICAgLy8gU3RvcCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLmZhaWwoJ0J1aWxkIGZhaWxlZC4nKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGQgPSBhc3luYyAoY21kOiBhbnksIGNhbGxiYWNrOiBhbnkgPSAoKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge1xuICAgIGJ1bmRsZXIgPSAnd2VicGFjaycsXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIHF1aWV0ID0gZmFsc2UsXG4gICAgcmVtb3ZlID0gZmFsc2UsXG4gICAgdmFyaWFibGVzID0gJ3t9J1xuICB9ID0gY21kO1xuXG4gIC8vIFNwaW5uZXJcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIC8vIERpc3BsYXkgc3RhdHVzXG4gIGxvZyhgJHtjbGlOYW1lfSBidWlsZGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIC8vIEdldCBjdXN0b20gY29uZmlndXJhdGlvblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICAvLyBDaGVjayBmb3IgbGlua2VkIG1vZHVsZXNcbiAgY2hlY2tMaW5rZWRNb2R1bGVzKCk7XG5cbiAgLy8gU2V0IG5vZGUgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gIGxldCB2YXJpYWJsZXNPYmo6IG9iamVjdCA9IHtOT0RFX0VOVjogJ3Byb2R1Y3Rpb24nfTtcblxuICBpZih2YXJpYWJsZXMpIHtcbiAgICB0cnkge1xuICAgICAgdmFyaWFibGVzT2JqID0gSlNPTi5wYXJzZSh2YXJpYWJsZXMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRW52aXJvbm1lbnQgdmFyaWFibGVzIG9wdGlvbiBpcyBub3QgYSB2YWxpZCBKU09OIG9iamVjdC5gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzLmVudiA9IHsuLi5wcm9jZXNzLmVudiwgLi4udmFyaWFibGVzT2JqfTtcblxuICAvLyBTdGFydCBidWlsZCBzcGlubmVyXG4gIHNwaW5uZXIuc3RhcnQoJ0J1aWxkaW5nIGNvZGUuLi4nKTtcblxuICAvLyBDbGVhbiBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSB3ZSBzdGFydCBhZGRpbmcgaW4gbmV3IGZpbGVzXG4gIGlmKHJlbW92ZSkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dEZ1bGxQYXRoKTtcbiAgfVxuXG4gIC8vIEFkZCB0c2NvbmZpZyBmaWxlIGlmIG5vbmUgZXhpc3RzXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdHNjb25maWcuanNvbiBleGlzdHNcbiAgICBMZXhDb25maWcuY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCk7XG4gIH1cblxuICBpZihidW5kbGVyID09PSAnZXNidWlsZCcpIHtcbiAgICByZXR1cm4gYnVpbGRXaXRoRXNCdWlsZChzcGlubmVyLCBjbWQsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHJldHVybiBidWlsZFdpdGhXZWJwYWNrKHNwaW5uZXIsIGNtZCwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgYnVpbGQ7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFPLHlCQUF5QjtBQUNoQyxTQUFRLFNBQVMsZUFBYztBQUMvQixTQUFRLGFBQVk7QUFDcEIsU0FBUSxXQUFXLG1CQUFrQjtBQUNyQyxTQUFRLFdBQVU7QUFFbEIsU0FBUSxpQkFBZ0I7QUFDeEIsU0FBUSxvQkFBb0IsZUFBZSxtQkFBa0I7QUFDN0QsU0FBUSx3QkFBdUI7QUFDL0IsU0FBUSxXQUFVO0FBZVgsTUFBTSxtQkFBbUIsT0FBTyxT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