@nlabs/lex 1.59.4 → 2.0.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 (41) hide show
  1. package/.storybook/main.ts +3 -47
  2. package/README.md +13 -19
  3. package/__mocks__/build.js +3 -3
  4. package/config.json +3 -1
  5. package/examples/lex.config.js +3 -7
  6. package/lib/LexConfig.d.ts +2 -6
  7. package/lib/LexConfig.js +2 -2
  8. package/lib/commands/ai/ai.js +3 -3
  9. package/lib/commands/build/build.d.ts +5 -3
  10. package/lib/commands/build/build.js +66 -156
  11. package/lib/commands/config/config.js +9 -7
  12. package/lib/commands/dev/dev.d.ts +0 -2
  13. package/lib/commands/dev/dev.js +24 -115
  14. package/lib/commands/init/init.js +4 -9
  15. package/lib/commands/migrate/migrate.js +2 -2
  16. package/lib/commands/serverless-dev/serverless-dev.js +2 -2
  17. package/lib/commands/versions/versions.d.ts +1 -1
  18. package/lib/commands/versions/versions.js +4 -4
  19. package/lib/lex.js +10 -11
  20. package/lib/types.d.ts +1 -1
  21. package/lib/types.js +1 -1
  22. package/lib/utils/app.d.ts +0 -2
  23. package/lib/utils/app.js +2 -29
  24. package/lib/utils/{webpack/LexSvgSpritemapPlugin.d.ts → assets/LexSvgSpritemap.d.ts} +6 -8
  25. package/lib/utils/assets/LexSvgSpritemap.js +219 -0
  26. package/lib/utils/file.d.ts +0 -4
  27. package/lib/utils/file.js +4 -100
  28. package/lib/utils/staticSite.d.ts +15 -0
  29. package/lib/utils/staticSite.js +80 -0
  30. package/lib/utils/vite/assets.d.ts +19 -0
  31. package/lib/utils/vite/assets.js +249 -0
  32. package/lib/utils/vite/config.d.ts +12 -0
  33. package/lib/utils/vite/config.js +279 -0
  34. package/package.json +27 -45
  35. package/postcss.config.js +1 -2
  36. package/tsconfig.lint.json +0 -1
  37. package/tsconfig.test.json +0 -1
  38. package/lib/utils/webpack/LexSvgSpritemapPlugin.js +0 -255
  39. package/scripts/test-webpack.js +0 -453
  40. package/webpack.config.d.ts +0 -2
  41. package/webpack.config.js +0 -960
@@ -3,26 +3,16 @@
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */ import boxen from 'boxen';
5
5
  import chalk from 'chalk';
6
- import { execa } from 'execa';
7
6
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
8
7
  import https from 'https';
9
8
  import { networkInterfaces, homedir } from 'os';
10
- import { dirname, resolve as pathResolve, join } from 'path';
9
+ import { join } from 'path';
10
+ import { createServer as createViteServer } from 'vite';
11
11
  import { LexConfig } from '../../LexConfig.js';
12
- import { createSpinner, handleWebpackProgress, removeFiles } from '../../utils/app.js';
13
- import { resolveWebpackPaths } from '../../utils/file.js';
12
+ import { createSpinner, removeFiles } from '../../utils/app.js';
14
13
  import { log } from '../../utils/log.js';
15
14
  import { processTranslations } from '../../utils/translations.js';
16
- let currentFilename;
17
- let currentDirname;
18
- try {
19
- // eslint-disable-next-line no-eval
20
- currentFilename = eval('require("url").fileURLToPath(import.meta.url)');
21
- currentDirname = dirname(currentFilename);
22
- } catch {
23
- currentFilename = process.cwd();
24
- currentDirname = process.cwd();
25
- }
15
+ import { createLexViteConfig } from '../../utils/vite/config.js';
26
16
  // default port used by the development server when none is provided
27
17
  export const DEFAULT_DEV_PORT = 3000;
28
18
  const parsePort = (portValue)=>{
@@ -150,7 +140,7 @@ const displayServerStatus = (port = DEFAULT_DEV_PORT, quiet = false, publicIp)=>
150
140
  console.log(`\n${statusBox}\n`);
151
141
  };
152
142
  export const dev = async (cmd, callback = ()=>({}))=>{
153
- const { bundleAnalyzer, cliName = 'Lex', config, format = 'esm', open = false, port: cliPort, quiet, remove, translations = false, usePublicIp, variables } = cmd;
143
+ const { bundleAnalyzer, cliName = 'Lex', open = false, port: cliPort, quiet, remove, translations = false, usePublicIp, variables } = cmd;
154
144
  const spinner = createSpinner(quiet);
155
145
  log(`${cliName} start development server...`, 'info', quiet);
156
146
  await LexConfig.parseConfig(cmd);
@@ -194,113 +184,32 @@ export const dev = async (cmd, callback = ()=>({}))=>{
194
184
  return 1;
195
185
  }
196
186
  }
197
- let webpackConfig;
198
- if (config) {
199
- const isRelativeConfig = config.substr(0, 2) === './';
200
- webpackConfig = isRelativeConfig ? pathResolve(process.cwd(), config) : config;
201
- } else {
202
- const { webpackConfig: resolvedConfig } = resolveWebpackPaths(currentDirname);
203
- webpackConfig = resolvedConfig;
204
- }
205
- const { webpackPath } = resolveWebpackPaths(currentDirname);
206
- const webpackOptions = [
207
- '--color',
208
- '--watch',
209
- '--config',
210
- webpackConfig
211
- ];
212
- if (bundleAnalyzer) {
213
- webpackOptions.push('--bundleAnalyzer');
214
- }
215
187
  try {
216
- let executablePath = webpackPath;
217
- let finalWebpackOptions;
218
- if (webpackPath === 'npx') {
219
- finalWebpackOptions = [
220
- 'webpack',
221
- ...webpackOptions
222
- ];
223
- } else if (webpackPath.endsWith('.js')) {
224
- executablePath = 'node';
225
- finalWebpackOptions = [
226
- webpackPath,
227
- ...webpackOptions
228
- ];
229
- } else {
230
- finalWebpackOptions = webpackOptions;
231
- }
232
188
  spinner.start('Starting development server...');
233
- const childProcess = execa(executablePath, finalWebpackOptions, {
234
- encoding: 'utf8',
235
- env: {
236
- ...process.env,
237
- LEX_QUIET: quiet,
238
- WEBPACK_DEV_OPEN: open,
239
- WEBPACK_DEV_PORT: finalPort.toString()
240
- },
241
- stdio: 'pipe'
242
- });
243
- let serverStarted = false;
244
- let statusShown = false;
245
- const showStatusOnce = (portToShow)=>{
246
- if (statusShown) {
247
- return;
248
- }
249
- statusShown = true;
250
- if (usePublicIp) {
251
- fetchPublicIp(usePublicIp).then((publicIp)=>{
252
- displayServerStatus(portToShow, quiet, publicIp);
253
- });
254
- } else {
255
- displayServerStatus(portToShow, quiet);
256
- }
257
- };
258
- let detectedPort = finalPort;
259
- childProcess.stdout?.on('data', (data)=>{
260
- const output = data.toString();
261
- handleWebpackProgress(output, spinner, quiet ?? false, '🚀', 'Webpack Building');
262
- if (!serverStarted && (output.includes('Local:') || output.includes('webpack compiled') || output.includes('webpack-plugin-serve') || output.includes('http://localhost') || output.includes('listening on port'))) {
263
- serverStarted = true;
264
- spinner.succeed('Development server started.');
265
- const portMatch = output.match(/Local:\s*http:\/\/[^:]+:(\d+)/) || output.match(/http:\/\/localhost:(\d+)/) || output.match(/port:\s*(\d+)/) || output.match(/listening on port (\d+)/) || output.match(/WebpackPluginServe listening on port (\d+)/);
266
- if (portMatch) {
267
- detectedPort = parseInt(portMatch[1]);
268
- }
269
- showStatusOnce(detectedPort);
270
- }
271
- });
272
- childProcess.stderr?.on('data', (data)=>{
273
- const output = data.toString();
274
- handleWebpackProgress(output, spinner, quiet ?? false, '🚀', 'Webpack Building');
275
- if (!serverStarted && (output.includes('Local:') || output.includes('webpack compiled') || output.includes('webpack-plugin-serve') || output.includes('http://localhost') || output.includes('listening on port'))) {
276
- serverStarted = true;
277
- spinner.succeed('Development server started.');
278
- const portMatch = output.match(/Local:\s*http:\/\/[^:]+:(\d+)/) || output.match(/http:\/\/localhost:(\d+)/) || output.match(/port:\s*(\d+)/) || output.match(/listening on port (\d+)/) || output.match(/WebpackPluginServe listening on port (\d+)/);
279
- if (portMatch) {
280
- detectedPort = parseInt(portMatch[1]);
281
- }
282
- showStatusOnce(detectedPort);
283
- }
284
- });
285
- setTimeout(()=>{
286
- if (!serverStarted) {
287
- spinner.succeed('Development server started.');
288
- showStatusOnce(detectedPort);
289
- }
290
- }, 5000);
291
- await childProcess;
292
- if (!serverStarted) {
293
- spinner.succeed('Development server started.');
294
- showStatusOnce(detectedPort);
189
+ const server = await createViteServer(createLexViteConfig({
190
+ analyze: bundleAnalyzer,
191
+ command: 'serve',
192
+ mode: 'development',
193
+ open,
194
+ port: finalPort,
195
+ quiet
196
+ }));
197
+ await server.listen();
198
+ spinner.succeed('Development server started.');
199
+ if (usePublicIp) {
200
+ const publicIp = await fetchPublicIp(usePublicIp);
201
+ displayServerStatus(finalPort, quiet, publicIp);
202
+ } else {
203
+ displayServerStatus(finalPort, quiet);
295
204
  }
296
- callback(0);
297
205
  return 0;
298
206
  } catch (error) {
299
- log(`\n${cliName} Error: ${error.message}`, 'error', quiet);
300
- spinner.fail('There was an error while running Webpack.');
207
+ const serverError = error instanceof Error ? error : new Error(String(error));
208
+ log(`\n${cliName} Error: ${serverError.message}`, 'error', quiet);
209
+ spinner.fail('There was an error while running Vite.');
301
210
  callback(1);
302
211
  return 1;
303
212
  }
304
213
  };
305
214
 
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXYvZGV2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldk9wdGlvbnMge1xuICByZWFkb25seSBidW5kbGVBbmFseXplcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbmZpZz86IHN0cmluZztcbiAgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuICByZWFkb25seSBvcGVuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSB0cmFuc2xhdGlvbnM/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VQdWJsaWNJcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRGV2Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbi8vIGRlZmF1bHQgcG9ydCB1c2VkIGJ5IHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgd2hlbiBub25lIGlzIHByb3ZpZGVkXG5leHBvcnQgY29uc3QgREVGQVVMVF9ERVZfUE9SVCA9IDMwMDA7XG5cbmludGVyZmFjZSBQdWJsaWNJcENhY2hlIHtcbiAgaXA6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbmNvbnN0IHBhcnNlUG9ydCA9IChwb3J0VmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBpZihwb3J0VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBwb3J0VmFsdWUgPT09IG51bGwgfHwgcG9ydFZhbHVlID09PSAnJykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIocG9ydFZhbHVlKTtcbiAgaWYoTnVtYmVyLmlzSW50ZWdlcihwYXJzZWQpICYmIHBhcnNlZCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGdldENhY2hlRGlyID0gKCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGNhY2hlRGlyID0gam9pbihob21lZGlyKCksICcubGV4LWNhY2hlJyk7XG4gIGlmKCFleGlzdHNTeW5jKGNhY2hlRGlyKSkge1xuICAgIG1rZGlyU3luYyhjYWNoZURpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9XG4gIHJldHVybiBjYWNoZURpcjtcbn07XG5cbmNvbnN0IGdldENhY2hlUGF0aCA9ICgpOiBzdHJpbmcgPT4gam9pbihnZXRDYWNoZURpcigpLCAncHVibGljLWlwLmpzb24nKTtcblxuY29uc3QgcmVhZFB1YmxpY0lwQ2FjaGUgPSAoKTogUHVibGljSXBDYWNoZSB8IG51bGwgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjYWNoZURhdGEgPSByZWFkRmlsZVN5bmMoY2FjaGVQYXRoLCAndXRmOCcpO1xuICAgIGNvbnN0IGNhY2hlOiBQdWJsaWNJcENhY2hlID0gSlNPTi5wYXJzZShjYWNoZURhdGEpO1xuICAgIGNvbnN0IG9uZVdlZWtNcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgaWYoRGF0ZS5ub3coKSAtIGNhY2hlLnRpbWVzdGFtcCA+IG9uZVdlZWtNcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5jb25zdCB3cml0ZVB1YmxpY0lwQ2FjaGUgPSAoaXA6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBjb25zdCBjYWNoZVBhdGggPSBnZXRDYWNoZVBhdGgoKTtcbiAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSB7XG4gICAgaXAsXG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gIH07XG4gIHdyaXRlRmlsZVN5bmMoY2FjaGVQYXRoLCBKU09OLnN0cmluZ2lmeShjYWNoZSwgbnVsbCwgMikpO1xufTtcblxuY29uc3QgZmV0Y2hQdWJsaWNJcCA9IChmb3JjZVJlZnJlc2g6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICBpZighZm9yY2VSZWZyZXNoKSB7XG4gICAgY29uc3QgY2FjaGVkID0gcmVhZFB1YmxpY0lwQ2FjaGUoKTtcbiAgICBpZihjYWNoZWQpIHtcbiAgICAgIHJlc29sdmUoY2FjaGVkLmlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBodHRwcy5nZXQoJ2h0dHBzOi8vYXBpLmlwaWZ5Lm9yZycsIChyZXMpID0+IHtcbiAgICBsZXQgZGF0YSA9ICcnO1xuICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlwID0gZGF0YS50cmltKCk7XG4gICAgICBpZihpcCkge1xuICAgICAgICB3cml0ZVB1YmxpY0lwQ2FjaGUoaXApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpcCk7XG4gICAgfSk7XG4gIH0pLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSk7XG59KTtcblxuY29uc3QgZ2V0TmV0d29ya0FkZHJlc3NlcyA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgICBsb2NhbDogJ2xvY2FsaG9zdCcsXG4gICAgcHJpdmF0ZTogbnVsbCBhcyBzdHJpbmcgfCBudWxsLFxuICAgIHB1YmxpYzogbnVsbCBhcyBzdHJpbmcgfCBudWxsXG4gIH07XG5cbiAgZm9yKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoaW50ZXJmYWNlcykpIHtcbiAgICBjb25zdCBuZXR3b3JrSW50ZXJmYWNlID0gaW50ZXJmYWNlc1tuYW1lXTtcbiAgICBpZighbmV0d29ya0ludGVyZmFjZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZm9yKGNvbnN0IGlmYWNlIG9mIG5ldHdvcmtJbnRlcmZhY2UpIHtcbiAgICAgIGlmKGlmYWNlLmZhbWlseSA9PT0gJ0lQdjQnICYmICFpZmFjZS5pbnRlcm5hbCkge1xuICAgICAgICBjb25zdCBpcCA9IGlmYWNlLmFkZHJlc3M7XG5cbiAgICAgICAgaWYoaXAuc3RhcnRzV2l0aCgnMTAuJykgfHwgaXAuc3RhcnRzV2l0aCgnMTkyLjE2OC4nKSB8fCBpcC5zdGFydHNXaXRoKCcxNzIuJykpIHtcbiAgICAgICAgICBpZighYWRkcmVzc2VzLnByaXZhdGUpIHtcbiAgICAgICAgICAgIGFkZHJlc3Nlcy5wcml2YXRlID0gaXA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmKCFhZGRyZXNzZXMucHVibGljKSB7XG4gICAgICAgICAgICBhZGRyZXNzZXMucHVibGljID0gaXA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFkZHJlc3Nlcztcbn07XG5cbmNvbnN0IGRpc3BsYXlTZXJ2ZXJTdGF0dXMgPSAocG9ydDogbnVtYmVyID0gREVGQVVMVF9ERVZfUE9SVCwgcXVpZXQ6IGJvb2xlYW4gPSBmYWxzZSwgcHVibGljSXA/OiBzdHJpbmcpID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBnZXROZXR3b3JrQWRkcmVzc2VzKCk7XG4gIGNvbnN0IGxvY2FsVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWA7XG4gIGNvbnN0IHByaXZhdGVVcmwgPSBhZGRyZXNzZXMucHJpdmF0ZSA/IGBodHRwOi8vJHthZGRyZXNzZXMucHJpdmF0ZX06JHtwb3J0fWAgOiBudWxsO1xuICBsZXQgcHVibGljVXJsID0gbnVsbDtcbiAgaWYocHVibGljSXApIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7cHVibGljSXB9OiR7cG9ydH1gO1xuICB9IGVsc2UgaWYoYWRkcmVzc2VzLnB1YmxpYykge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHthZGRyZXNzZXMucHVibGljfToke3BvcnR9YDtcbiAgfVxuXG4gIGxldCB1cmxMaW5lcyA9IGAke2NoYWxrLmdyZWVuKCdMb2NhbDonKX0gICAgICR7Y2hhbGsudW5kZXJsaW5lKGxvY2FsVXJsKX1cXG5gO1xuXG4gIGlmKHByaXZhdGVVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHJpdmF0ZTonKX0gICAke2NoYWxrLnVuZGVybGluZShwcml2YXRlVXJsKX1cXG5gO1xuICB9XG5cbiAgaWYocHVibGljVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1B1YmxpYzonKX0gICAgJHtjaGFsay51bmRlcmxpbmUocHVibGljVXJsKX1cXG5gO1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzQm94ID0gYm94ZW4oXG4gICAgYCR7Y2hhbGsuY3lhbi5ib2xkKCfwn5qAIERldmVsb3BtZW50IFNlcnZlciBSdW5uaW5nJyl9XFxuXFxuJHt1cmxMaW5lc31cXG5gICtcbiAgICBgJHtjaGFsay55ZWxsb3coJ1ByZXNzIEN0cmwrQyB0byBzdG9wIHRoZSBzZXJ2ZXInKX1gLFxuICAgIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnLFxuICAgICAgYm9yZGVyQ29sb3I6ICdjeWFuJyxcbiAgICAgIGJvcmRlclN0eWxlOiAncm91bmQnLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgcGFkZGluZzogMVxuICAgIH1cbiAgKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhgXFxuJHtzdGF0dXNCb3h9XFxuYCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGV2ID0gYXN5bmMgKGNtZDogRGV2T3B0aW9ucywgY2FsbGJhY2s6IERldkNhbGxiYWNrID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtidW5kbGVBbmFseXplciwgY2xpTmFtZSA9ICdMZXgnLCBjb25maWcsIGZvcm1hdCA9ICdlc20nLCBvcGVuID0gZmFsc2UsIHBvcnQ6IGNsaVBvcnQsIHF1aWV0LCByZW1vdmUsIHRyYW5zbGF0aW9ucyA9IGZhbHNlLCB1c2VQdWJsaWNJcCwgdmFyaWFibGVzfSA9IGNtZDtcblxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IHN0YXJ0IGRldmVsb3BtZW50IHNlcnZlci4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtkZXY6IGRldkNvbmZpZywgb3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3QgZmluYWxQb3J0ID0gcGFyc2VQb3J0KGNsaVBvcnQpID8/IHBhcnNlUG9ydChkZXZDb25maWc/LnBvcnQpID8/IERFRkFVTFRfREVWX1BPUlQ7XG5cbiAgbGV0IHZhcmlhYmxlc09iajogb2JqZWN0ID0ge05PREVfRU5WOiAnZGV2ZWxvcG1lbnQnfTtcblxuICBpZih2YXJpYWJsZXMpIHtcbiAgICB0cnkge1xuICAgICAgdmFyaWFibGVzT2JqID0gSlNPTi5wYXJzZSh2YXJpYWJsZXMpO1xuICAgIH0gY2F0Y2goX2Vycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzLmVudiA9IHsuLi5wcm9jZXNzLmVudiwgLi4udmFyaWFibGVzT2JqfTtcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQ2xlYW5pbmcgb3V0cHV0IGRpcmVjdG9yeS4uLicpO1xuXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RnVsbFBhdGggfHwgJycpO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY2xlYW5lZCBvdXRwdXQgZGlyZWN0b3J5IScpO1xuICB9XG5cbiAgaWYodHJhbnNsYXRpb25zKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnUHJvY2Vzc2luZyB0cmFuc2xhdGlvbnMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2xpYic7XG5cbiAgICAgIGF3YWl0IHByb2Nlc3NUcmFuc2xhdGlvbnMoc291cmNlUGF0aCwgb3V0cHV0UGF0aCwgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdUcmFuc2xhdGlvbnMgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgICB9IGNhdGNoKHRyYW5zbGF0aW9uRXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIHByb2Nlc3MgdHJhbnNsYXRpb25zOiAke3RyYW5zbGF0aW9uRXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9ucy4nKTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgbGV0IHdlYnBhY2tDb25maWc6IHN0cmluZztcblxuICBpZihjb25maWcpIHtcbiAgICBjb25zdCBpc1JlbGF0aXZlQ29uZmlnOiBib29sZWFuID0gY29uZmlnLnN1YnN0cigwLCAyKSA9PT0gJy4vJztcbiAgICB3ZWJwYWNrQ29uZmlnID0gaXNSZWxhdGl2ZUNvbmZpZyA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNvbmZpZykgOiBjb25maWc7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qge3dlYnBhY2tDb25maWc6IHJlc29sdmVkQ29uZmlnfSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuICAgIHdlYnBhY2tDb25maWcgPSByZXNvbHZlZENvbmZpZztcbiAgfVxuXG4gIGNvbnN0IHt3ZWJwYWNrUGF0aH0gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcblxuICBjb25zdCB3ZWJwYWNrT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgJy0tY29sb3InLFxuICAgICctLXdhdGNoJyxcbiAgICAnLS1jb25maWcnLCB3ZWJwYWNrQ29uZmlnXG4gIF07XG5cbiAgaWYoYnVuZGxlQW5hbHl6ZXIpIHtcbiAgICB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLWJ1bmRsZUFuYWx5emVyJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGxldCBleGVjdXRhYmxlUGF0aCA9IHdlYnBhY2tQYXRoO1xuICAgIGxldCBmaW5hbFdlYnBhY2tPcHRpb25zOiBzdHJpbmdbXTtcblxuICAgIGlmKHdlYnBhY2tQYXRoID09PSAnbnB4Jykge1xuICAgICAgZmluYWxXZWJwYWNrT3B0aW9ucyA9IFsnd2VicGFjaycsIC4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9IGVsc2UgaWYod2VicGFja1BhdGguZW5kc1dpdGgoJy5qcycpKSB7XG4gICAgICBleGVjdXRhYmxlUGF0aCA9ICdub2RlJztcbiAgICAgIGZpbmFsV2VicGFja09wdGlvbnMgPSBbd2VicGFja1BhdGgsIC4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmluYWxXZWJwYWNrT3B0aW9ucyA9IHdlYnBhY2tPcHRpb25zO1xuICAgIH1cblxuICAgIHNwaW5uZXIuc3RhcnQoJ1N0YXJ0aW5nIGRldmVsb3BtZW50IHNlcnZlci4uLicpO1xuXG4gICAgY29uc3QgY2hpbGRQcm9jZXNzID0gZXhlY2EoZXhlY3V0YWJsZVBhdGgsIGZpbmFsV2VicGFja09wdGlvbnMsIHtcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICBlbnY6IHtcbiAgICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICAgIExFWF9RVUlFVDogcXVpZXQsXG4gICAgICAgIFdFQlBBQ0tfREVWX09QRU46IG9wZW4sXG4gICAgICAgIFdFQlBBQ0tfREVWX1BPUlQ6IGZpbmFsUG9ydC50b1N0cmluZygpXG4gICAgICB9LFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0gYXMgYW55KTtcblxuICAgIGxldCBzZXJ2ZXJTdGFydGVkID0gZmFsc2U7XG4gICAgbGV0IHN0YXR1c1Nob3duID0gZmFsc2U7XG4gICAgY29uc3Qgc2hvd1N0YXR1c09uY2UgPSAocG9ydFRvU2hvdzogbnVtYmVyKSA9PiB7XG4gICAgICBpZihzdGF0dXNTaG93bikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdGF0dXNTaG93biA9IHRydWU7XG4gICAgICBpZih1c2VQdWJsaWNJcCkge1xuICAgICAgICBmZXRjaFB1YmxpY0lwKHVzZVB1YmxpY0lwKS50aGVuKChwdWJsaWNJcCkgPT4ge1xuICAgICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMocG9ydFRvU2hvdywgcXVpZXQsIHB1YmxpY0lwKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5U2VydmVyU3RhdHVzKHBvcnRUb1Nob3csIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGxldCBkZXRlY3RlZFBvcnQgPSBmaW5hbFBvcnQ7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQgPz8gZmFsc2UsICfwn5qAJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQgJiYgKG91dHB1dC5pbmNsdWRlcygnTG9jYWw6JykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrIGNvbXBpbGVkJykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrLXBsdWdpbi1zZXJ2ZScpIHx8IG91dHB1dC5pbmNsdWRlcygnaHR0cDovL2xvY2FsaG9zdCcpIHx8IG91dHB1dC5pbmNsdWRlcygnbGlzdGVuaW5nIG9uIHBvcnQnKSkpIHtcbiAgICAgICAgc2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG5cbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCA/PyBmYWxzZSwgJ/CfmoAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICBjb25zdCBwb3J0TWF0Y2ggPSBvdXRwdXQubWF0Y2goL0xvY2FsOlxccypodHRwOlxcL1xcL1teOl0rOihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9odHRwOlxcL1xcL2xvY2FsaG9zdDooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvcG9ydDpcXHMqKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2xpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9XZWJwYWNrUGx1Z2luU2VydmUgbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLyk7XG4gICAgICAgIGlmKHBvcnRNYXRjaCkge1xuICAgICAgICAgIGRldGVjdGVkUG9ydCA9IHBhcnNlSW50KHBvcnRNYXRjaFsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZighc2VydmVyU3RhcnRlZCkge1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuXG4gICAgYXdhaXQgY2hpbGRQcm9jZXNzO1xuXG4gICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG4gICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcnVubmluZyBXZWJwYWNrLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiYm94ZW4iLCJjaGFsayIsImV4ZWNhIiwiZXhpc3RzU3luYyIsInJlYWRGaWxlU3luYyIsIndyaXRlRmlsZVN5bmMiLCJta2RpclN5bmMiLCJodHRwcyIsIm5ldHdvcmtJbnRlcmZhY2VzIiwiaG9tZWRpciIsImRpcm5hbWUiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJqb2luIiwiTGV4Q29uZmlnIiwiY3JlYXRlU3Bpbm5lciIsImhhbmRsZVdlYnBhY2tQcm9ncmVzcyIsInJlbW92ZUZpbGVzIiwicmVzb2x2ZVdlYnBhY2tQYXRocyIsImxvZyIsInByb2Nlc3NUcmFuc2xhdGlvbnMiLCJjdXJyZW50RmlsZW5hbWUiLCJjdXJyZW50RGlybmFtZSIsImV2YWwiLCJwcm9jZXNzIiwiY3dkIiwiREVGQVVMVF9ERVZfUE9SVCIsInBhcnNlUG9ydCIsInBvcnRWYWx1ZSIsInVuZGVmaW5lZCIsInBhcnNlZCIsIk51bWJlciIsImlzSW50ZWdlciIsImdldENhY2hlRGlyIiwiY2FjaGVEaXIiLCJyZWN1cnNpdmUiLCJnZXRDYWNoZVBhdGgiLCJyZWFkUHVibGljSXBDYWNoZSIsImNhY2hlUGF0aCIsImNhY2hlRGF0YSIsImNhY2hlIiwiSlNPTiIsInBhcnNlIiwib25lV2Vla01zIiwiRGF0ZSIsIm5vdyIsInRpbWVzdGFtcCIsIndyaXRlUHVibGljSXBDYWNoZSIsImlwIiwic3RyaW5naWZ5IiwiZmV0Y2hQdWJsaWNJcCIsImZvcmNlUmVmcmVzaCIsIlByb21pc2UiLCJjYWNoZWQiLCJnZXQiLCJyZXMiLCJkYXRhIiwib24iLCJjaHVuayIsInRyaW0iLCJnZXROZXR3b3JrQWRkcmVzc2VzIiwiaW50ZXJmYWNlcyIsImFkZHJlc3NlcyIsImxvY2FsIiwicHJpdmF0ZSIsInB1YmxpYyIsIm5hbWUiLCJPYmplY3QiLCJrZXlzIiwibmV0d29ya0ludGVyZmFjZSIsImlmYWNlIiwiZmFtaWx5IiwiaW50ZXJuYWwiLCJhZGRyZXNzIiwic3RhcnRzV2l0aCIsImRpc3BsYXlTZXJ2ZXJTdGF0dXMiLCJwb3J0IiwicXVpZXQiLCJwdWJsaWNJcCIsImxvY2FsVXJsIiwicHJpdmF0ZVVybCIsInB1YmxpY1VybCIsInVybExpbmVzIiwiZ3JlZW4iLCJ1bmRlcmxpbmUiLCJzdGF0dXNCb3giLCJjeWFuIiwiYm9sZCIsInllbGxvdyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyU3R5bGUiLCJtYXJnaW4iLCJwYWRkaW5nIiwiY29uc29sZSIsImRldiIsImNtZCIsImNhbGxiYWNrIiwiYnVuZGxlQW5hbHl6ZXIiLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3BlbiIsImNsaVBvcnQiLCJyZW1vdmUiLCJ0cmFuc2xhdGlvbnMiLCJ1c2VQdWJsaWNJcCIsInZhcmlhYmxlcyIsInNwaW5uZXIiLCJwYXJzZUNvbmZpZyIsImRldkNvbmZpZyIsIm91dHB1dEZ1bGxQYXRoIiwidXNlVHlwZXNjcmlwdCIsImZpbmFsUG9ydCIsInZhcmlhYmxlc09iaiIsIk5PREVfRU5WIiwiX2Vycm9yIiwiZW52IiwiY2hlY2tUeXBlc2NyaXB0Q29uZmlnIiwic3RhcnQiLCJzdWNjZWVkIiwic291cmNlUGF0aCIsInNvdXJjZUZ1bGxQYXRoIiwib3V0cHV0UGF0aCIsInRyYW5zbGF0aW9uRXJyb3IiLCJtZXNzYWdlIiwiZmFpbCIsIndlYnBhY2tDb25maWciLCJpc1JlbGF0aXZlQ29uZmlnIiwic3Vic3RyIiwicmVzb2x2ZWRDb25maWciLCJ3ZWJwYWNrUGF0aCIsIndlYnBhY2tPcHRpb25zIiwicHVzaCIsImV4ZWN1dGFibGVQYXRoIiwiZmluYWxXZWJwYWNrT3B0aW9ucyIsImVuZHNXaXRoIiwiY2hpbGRQcm9jZXNzIiwiZW5jb2RpbmciLCJMRVhfUVVJRVQiLCJXRUJQQUNLX0RFVl9PUEVOIiwiV0VCUEFDS19ERVZfUE9SVCIsInRvU3RyaW5nIiwic3RkaW8iLCJzZXJ2ZXJTdGFydGVkIiwic3RhdHVzU2hvd24iLCJzaG93U3RhdHVzT25jZSIsInBvcnRUb1Nob3ciLCJ0aGVuIiwiZGV0ZWN0ZWRQb3J0Iiwic3Rkb3V0Iiwib3V0cHV0IiwiaW5jbHVkZXMiLCJwb3J0TWF0Y2giLCJtYXRjaCIsInBhcnNlSW50Iiwic3RkZXJyIiwic2V0VGltZW91dCIsImVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsT0FBT0MsV0FBVyxRQUFRO0FBQzFCLFNBQVFDLEtBQUssUUFBTyxRQUFRO0FBQzVCLFNBQVFDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsUUFBTyxLQUFLO0FBQ3RFLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxpQkFBaUIsRUFBRUMsT0FBTyxRQUFPLEtBQUs7QUFDOUMsU0FBUUMsT0FBTyxFQUFFQyxXQUFXQyxXQUFXLEVBQUVDLElBQUksUUFBTyxPQUFPO0FBRTNELFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsYUFBYSxFQUFFQyxxQkFBcUIsRUFBRUMsV0FBVyxRQUFPLHFCQUFxQjtBQUNyRixTQUFRQyxtQkFBbUIsUUFBTyxzQkFBc0I7QUFDeEQsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQUN2QyxTQUFRQyxtQkFBbUIsUUFBTyw4QkFBOEI7QUFFaEUsSUFBSUM7QUFDSixJQUFJQztBQUVKLElBQUk7SUFDRixtQ0FBbUM7SUFDbkNELGtCQUFrQkUsS0FBSztJQUN2QkQsaUJBQWlCWixRQUFRVztBQUMzQixFQUFFLE9BQUs7SUFDTEEsa0JBQWtCRyxRQUFRQyxHQUFHO0lBQzdCSCxpQkFBaUJFLFFBQVFDLEdBQUc7QUFDOUI7QUFrQkEsb0VBQW9FO0FBQ3BFLE9BQU8sTUFBTUMsbUJBQW1CLEtBQUs7QUFPckMsTUFBTUMsWUFBWSxDQUFDQztJQUNqQixJQUFHQSxjQUFjQyxhQUFhRCxjQUFjLFFBQVFBLGNBQWMsSUFBSTtRQUNwRSxPQUFPQztJQUNUO0lBRUEs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
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9kZXYvZGV2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2pvaW59IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtjcmVhdGVTZXJ2ZXIgYXMgY3JlYXRlVml0ZVNlcnZlcn0gZnJvbSAndml0ZSc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuaW1wb3J0IHtwcm9jZXNzVHJhbnNsYXRpb25zfSBmcm9tICcuLi8uLi91dGlscy90cmFuc2xhdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVMZXhWaXRlQ29uZmlnfSBmcm9tICcuLi8uLi91dGlscy92aXRlL2NvbmZpZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2T3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJ1bmRsZUFuYWx5emVyPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgb3Blbj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVtb3ZlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb25zPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlUHVibGljSXA/OiBib29sZWFuO1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERldkNhbGxiYWNrID0gKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkO1xuXG4vLyBkZWZhdWx0IHBvcnQgdXNlZCBieSB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyIHdoZW4gbm9uZSBpcyBwcm92aWRlZFxuZXhwb3J0IGNvbnN0IERFRkFVTFRfREVWX1BPUlQgPSAzMDAwO1xuXG5pbnRlcmZhY2UgUHVibGljSXBDYWNoZSB7XG4gIGlwOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG5jb25zdCBwYXJzZVBvcnQgPSAocG9ydFZhbHVlOiB1bmtub3duKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYocG9ydFZhbHVlID09PSB1bmRlZmluZWQgfHwgcG9ydFZhbHVlID09PSBudWxsIHx8IHBvcnRWYWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHBvcnRWYWx1ZSk7XG4gIGlmKE51bWJlci5pc0ludGVnZXIocGFyc2VkKSAmJiBwYXJzZWQgPiAwKSB7XG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBnZXRDYWNoZURpciA9ICgpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBjYWNoZURpciA9IGpvaW4oaG9tZWRpcigpLCAnLmxleC1jYWNoZScpO1xuICBpZighZXhpc3RzU3luYyhjYWNoZURpcikpIHtcbiAgICBta2RpclN5bmMoY2FjaGVEaXIsIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgfVxuICByZXR1cm4gY2FjaGVEaXI7XG59O1xuXG5jb25zdCBnZXRDYWNoZVBhdGggPSAoKTogc3RyaW5nID0+IGpvaW4oZ2V0Q2FjaGVEaXIoKSwgJ3B1YmxpYy1pcC5qc29uJyk7XG5cbmNvbnN0IHJlYWRQdWJsaWNJcENhY2hlID0gKCk6IFB1YmxpY0lwQ2FjaGUgfCBudWxsID0+IHtcbiAgY29uc3QgY2FjaGVQYXRoID0gZ2V0Q2FjaGVQYXRoKCk7XG4gIGlmKCFleGlzdHNTeW5jKGNhY2hlUGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gcmVhZEZpbGVTeW5jKGNhY2hlUGF0aCwgJ3V0ZjgnKTtcbiAgICBjb25zdCBjYWNoZTogUHVibGljSXBDYWNoZSA9IEpTT04ucGFyc2UoY2FjaGVEYXRhKTtcbiAgICBjb25zdCBvbmVXZWVrTXMgPSA3ICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuICAgIGlmKERhdGUubm93KCkgLSBjYWNoZS50aW1lc3RhbXAgPiBvbmVXZWVrTXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZTtcbiAgfSBjYXRjaHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuY29uc3Qgd3JpdGVQdWJsaWNJcENhY2hlID0gKGlwOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgY29uc3QgY2FjaGVQYXRoID0gZ2V0Q2FjaGVQYXRoKCk7XG4gIGNvbnN0IGNhY2hlOiBQdWJsaWNJcENhY2hlID0ge1xuICAgIGlwLFxuICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKVxuICB9O1xuICB3cml0ZUZpbGVTeW5jKGNhY2hlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY2FjaGUsIG51bGwsIDIpKTtcbn07XG5cbmNvbnN0IGZldGNoUHVibGljSXAgPSAoZm9yY2VSZWZyZXNoOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4gPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgaWYoIWZvcmNlUmVmcmVzaCkge1xuICAgIGNvbnN0IGNhY2hlZCA9IHJlYWRQdWJsaWNJcENhY2hlKCk7XG4gICAgaWYoY2FjaGVkKSB7XG4gICAgICByZXNvbHZlKGNhY2hlZC5pcCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaHR0cHMuZ2V0KCdodHRwczovL2FwaS5pcGlmeS5vcmcnLCAocmVzKSA9PiB7XG4gICAgbGV0IGRhdGEgPSAnJztcbiAgICByZXMub24oJ2RhdGEnLCAoY2h1bmspID0+IChkYXRhICs9IGNodW5rKSk7XG4gICAgcmVzLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpcCA9IGRhdGEudHJpbSgpO1xuICAgICAgaWYoaXApIHtcbiAgICAgICAgd3JpdGVQdWJsaWNJcENhY2hlKGlwKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoaXApO1xuICAgIH0pO1xuICB9KS5vbignZXJyb3InLCAoKSA9PiByZXNvbHZlKHVuZGVmaW5lZCkpO1xufSk7XG5cbmNvbnN0IGdldE5ldHdvcmtBZGRyZXNzZXMgPSAoKSA9PiB7XG4gIGNvbnN0IGludGVyZmFjZXMgPSBuZXR3b3JrSW50ZXJmYWNlcygpO1xuICBjb25zdCBhZGRyZXNzZXMgPSB7XG4gICAgbG9jYWw6ICdsb2NhbGhvc3QnLFxuICAgIHByaXZhdGU6IG51bGwgYXMgc3RyaW5nIHwgbnVsbCxcbiAgICBwdWJsaWM6IG51bGwgYXMgc3RyaW5nIHwgbnVsbFxuICB9O1xuXG4gIGZvcihjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGludGVyZmFjZXMpKSB7XG4gICAgY29uc3QgbmV0d29ya0ludGVyZmFjZSA9IGludGVyZmFjZXNbbmFtZV07XG4gICAgaWYoIW5ldHdvcmtJbnRlcmZhY2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvcihjb25zdCBpZmFjZSBvZiBuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBpZihpZmFjZS5mYW1pbHkgPT09ICdJUHY0JyAmJiAhaWZhY2UuaW50ZXJuYWwpIHtcbiAgICAgICAgY29uc3QgaXAgPSBpZmFjZS5hZGRyZXNzO1xuXG4gICAgICAgIGlmKGlwLnN0YXJ0c1dpdGgoJzEwLicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE5Mi4xNjguJykgfHwgaXAuc3RhcnRzV2l0aCgnMTcyLicpKSB7XG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wcml2YXRlKSB7XG4gICAgICAgICAgICBhZGRyZXNzZXMucHJpdmF0ZSA9IGlwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZighYWRkcmVzc2VzLnB1YmxpYykge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnB1YmxpYyA9IGlwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZGRyZXNzZXM7XG59O1xuXG5jb25zdCBkaXNwbGF5U2VydmVyU3RhdHVzID0gKHBvcnQ6IG51bWJlciA9IERFRkFVTFRfREVWX1BPUlQsIHF1aWV0OiBib29sZWFuID0gZmFsc2UsIHB1YmxpY0lwPzogc3RyaW5nKSA9PiB7XG4gIGlmKHF1aWV0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYWRkcmVzc2VzID0gZ2V0TmV0d29ya0FkZHJlc3NlcygpO1xuICBjb25zdCBsb2NhbFVybCA9IGBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH1gO1xuICBjb25zdCBwcml2YXRlVXJsID0gYWRkcmVzc2VzLnByaXZhdGUgPyBgaHR0cDovLyR7YWRkcmVzc2VzLnByaXZhdGV9OiR7cG9ydH1gIDogbnVsbDtcbiAgbGV0IHB1YmxpY1VybCA9IG51bGw7XG4gIGlmKHB1YmxpY0lwKSB7XG4gICAgcHVibGljVXJsID0gYGh0dHA6Ly8ke3B1YmxpY0lwfToke3BvcnR9YDtcbiAgfSBlbHNlIGlmKGFkZHJlc3Nlcy5wdWJsaWMpIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7YWRkcmVzc2VzLnB1YmxpY306JHtwb3J0fWA7XG4gIH1cblxuICBsZXQgdXJsTGluZXMgPSBgJHtjaGFsay5ncmVlbignTG9jYWw6Jyl9ICAgICAke2NoYWxrLnVuZGVybGluZShsb2NhbFVybCl9XFxuYDtcblxuICBpZihwcml2YXRlVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1ByaXZhdGU6Jyl9ICAgJHtjaGFsay51bmRlcmxpbmUocHJpdmF0ZVVybCl9XFxuYDtcbiAgfVxuXG4gIGlmKHB1YmxpY1VybCkge1xuICAgIHVybExpbmVzICs9IGAke2NoYWxrLmdyZWVuKCdQdWJsaWM6Jyl9ICAgICR7Y2hhbGsudW5kZXJsaW5lKHB1YmxpY1VybCl9XFxuYDtcbiAgfVxuXG4gIGNvbnN0IHN0YXR1c0JveCA9IGJveGVuKFxuICAgIGAke2NoYWxrLmN5YW4uYm9sZCgn8J+agCBEZXZlbG9wbWVudCBTZXJ2ZXIgUnVubmluZycpfVxcblxcbiR7dXJsTGluZXN9XFxuYCArXG4gICAgYCR7Y2hhbGsueWVsbG93KCdQcmVzcyBDdHJsK0MgdG8gc3RvcCB0aGUgc2VydmVyJyl9YCxcbiAgICB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMWExYTFhJyxcbiAgICAgIGJvcmRlckNvbG9yOiAnY3lhbicsXG4gICAgICBib3JkZXJTdHlsZTogJ3JvdW5kJyxcbiAgICAgIG1hcmdpbjogMSxcbiAgICAgIHBhZGRpbmc6IDFcbiAgICB9XG4gICk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coYFxcbiR7c3RhdHVzQm94fVxcbmApO1xufTtcblxuZXhwb3J0IGNvbnN0IGRldiA9IGFzeW5jIChjbWQ6IERldk9wdGlvbnMsIGNhbGxiYWNrOiBEZXZDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7YnVuZGxlQW5hbHl6ZXIsIGNsaU5hbWUgPSAnTGV4Jywgb3BlbiA9IGZhbHNlLCBwb3J0OiBjbGlQb3J0LCBxdWlldCwgcmVtb3ZlLCB0cmFuc2xhdGlvbnMgPSBmYWxzZSwgdXNlUHVibGljSXAsIHZhcmlhYmxlc30gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBzdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7ZGV2OiBkZXZDb25maWcsIG91dHB1dEZ1bGxQYXRoLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IGZpbmFsUG9ydCA9IHBhcnNlUG9ydChjbGlQb3J0KSA/PyBwYXJzZVBvcnQoZGV2Q29uZmlnPy5wb3J0KSA/PyBERUZBVUxUX0RFVl9QT1JUO1xuXG4gIGxldCB2YXJpYWJsZXNPYmo6IG9iamVjdCA9IHtOT0RFX0VOVjogJ2RldmVsb3BtZW50J307XG5cbiAgaWYodmFyaWFibGVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhcmlhYmxlc09iaiA9IEpTT04ucGFyc2UodmFyaWFibGVzKTtcbiAgICB9IGNhdGNoKF9lcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgb3B0aW9uIGlzIG5vdCBhIHZhbGlkIEpTT04gb2JqZWN0LmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgcHJvY2Vzcy5lbnYgPSB7Li4ucHJvY2Vzcy5lbnYsIC4uLnZhcmlhYmxlc09ian07XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgfVxuXG4gIGlmKHJlbW92ZSkge1xuICAgIHNwaW5uZXIuc3RhcnQoJ0NsZWFuaW5nIG91dHB1dCBkaXJlY3RvcnkuLi4nKTtcblxuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dEZ1bGxQYXRoIHx8ICcnKTtcblxuICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGNsZWFuZWQgb3V0cHV0IGRpcmVjdG9yeSEnKTtcbiAgfVxuXG4gIGlmKHRyYW5zbGF0aW9ucykge1xuICAgIHNwaW5uZXIuc3RhcnQoJ1Byb2Nlc3NpbmcgdHJhbnNsYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IExleENvbmZpZy5jb25maWcuc291cmNlRnVsbFBhdGggfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdsaWInO1xuXG4gICAgICBhd2FpdCBwcm9jZXNzVHJhbnNsYXRpb25zKHNvdXJjZVBhdGgsIG91dHB1dFBhdGgsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnVHJhbnNsYXRpb25zIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgfSBjYXRjaCh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9uczogJHt0cmFuc2xhdGlvbkVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnMuJyk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgc3Bpbm5lci5zdGFydCgnU3RhcnRpbmcgZGV2ZWxvcG1lbnQgc2VydmVyLi4uJyk7XG4gICAgY29uc3Qgc2VydmVyID0gYXdhaXQgY3JlYXRlVml0ZVNlcnZlcihjcmVhdGVMZXhWaXRlQ29uZmlnKHtcbiAgICAgIGFuYWx5emU6IGJ1bmRsZUFuYWx5emVyLFxuICAgICAgY29tbWFuZDogJ3NlcnZlJyxcbiAgICAgIG1vZGU6ICdkZXZlbG9wbWVudCcsXG4gICAgICBvcGVuLFxuICAgICAgcG9ydDogZmluYWxQb3J0LFxuICAgICAgcXVpZXRcbiAgICB9KSk7XG4gICAgYXdhaXQgc2VydmVyLmxpc3RlbigpO1xuICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG5cbiAgICBpZih1c2VQdWJsaWNJcCkge1xuICAgICAgY29uc3QgcHVibGljSXAgPSBhd2FpdCBmZXRjaFB1YmxpY0lwKHVzZVB1YmxpY0lwKTtcbiAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMoZmluYWxQb3J0LCBxdWlldCwgcHVibGljSXApO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5U2VydmVyU3RhdHVzKGZpbmFsUG9ydCwgcXVpZXQpO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc3Qgc2VydmVyRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke3NlcnZlckVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcnVubmluZyBWaXRlLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiYm94ZW4iLCJjaGFsayIsImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwibWtkaXJTeW5jIiwiaHR0cHMiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImhvbWVkaXIiLCJqb2luIiwiY3JlYXRlU2VydmVyIiwiY3JlYXRlVml0ZVNlcnZlciIsIkxleENvbmZpZyIsImNyZWF0ZVNwaW5uZXIiLCJyZW1vdmVGaWxlcyIsImxvZyIsInByb2Nlc3NUcmFuc2xhdGlvbnMiLCJjcmVhdGVMZXhWaXRlQ29uZmlnIiwiREVGQVVMVF9ERVZfUE9SVCIsInBhcnNlUG9ydCIsInBvcnRWYWx1ZSIsInVuZGVmaW5lZCIsInBhcnNlZCIsIk51bWJlciIsImlzSW50ZWdlciIsImdldENhY2hlRGlyIiwiY2FjaGVEaXIiLCJyZWN1cnNpdmUiLCJnZXRDYWNoZVBhdGgiLCJyZWFkUHVibGljSXBDYWNoZSIsImNhY2hlUGF0aCIsImNhY2hlRGF0YSIsImNhY2hlIiwiSlNPTiIsInBhcnNlIiwib25lV2Vla01zIiwiRGF0ZSIsIm5vdyIsInRpbWVzdGFtcCIsIndyaXRlUHVibGljSXBDYWNoZSIsImlwIiwic3RyaW5naWZ5IiwiZmV0Y2hQdWJsaWNJcCIsImZvcmNlUmVmcmVzaCIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2FjaGVkIiwiZ2V0IiwicmVzIiwiZGF0YSIsIm9uIiwiY2h1bmsiLCJ0cmltIiwiZ2V0TmV0d29ya0FkZHJlc3NlcyIsImludGVyZmFjZXMiLCJhZGRyZXNzZXMiLCJsb2NhbCIsInByaXZhdGUiLCJwdWJsaWMiLCJuYW1lIiwiT2JqZWN0Iiwia2V5cyIsIm5ldHdvcmtJbnRlcmZhY2UiLCJpZmFjZSIsImZhbWlseSIsImludGVybmFsIiwiYWRkcmVzcyIsInN0YXJ0c1dpdGgiLCJkaXNwbGF5U2VydmVyU3RhdHVzIiwicG9ydCIsInF1aWV0IiwicHVibGljSXAiLCJsb2NhbFVybCIsInByaXZhdGVVcmwiLCJwdWJsaWNVcmwiLCJ1cmxMaW5lcyIsImdyZWVuIiwidW5kZXJsaW5lIiwic3RhdHVzQm94IiwiY3lhbiIsImJvbGQiLCJ5ZWxsb3ciLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJDb2xvciIsImJvcmRlclN0eWxlIiwibWFyZ2luIiwicGFkZGluZyIsImNvbnNvbGUiLCJkZXYiLCJjbWQiLCJjYWxsYmFjayIsImJ1bmRsZUFuYWx5emVyIiwiY2xpTmFtZSIsIm9wZW4iLCJjbGlQb3J0IiwicmVtb3ZlIiwidHJhbnNsYXRpb25zIiwidXNlUHVibGljSXAiLCJ2YXJpYWJsZXMiLCJzcGlubmVyIiwicGFyc2VDb25maWciLCJkZXZDb25maWciLCJvdXRwdXRGdWxsUGF0aCIsInVzZVR5cGVzY3JpcHQiLCJjb25maWciLCJmaW5hbFBvcnQiLCJ2YXJpYWJsZXNPYmoiLCJOT0RFX0VOViIsIl9lcnJvciIsInByb2Nlc3MiLCJlbnYiLCJjaGVja1R5cGVzY3JpcHRDb25maWciLCJzdGFydCIsInN1Y2NlZWQiLCJzb3VyY2VQYXRoIiwic291cmNlRnVsbFBhdGgiLCJjd2QiLCJvdXRwdXRQYXRoIiwidHJhbnNsYXRpb25FcnJvciIsIm1lc3NhZ2UiLCJmYWlsIiwic2VydmVyIiwiYW5hbHl6ZSIsImNvbW1hbmQiLCJtb2RlIiwibGlzdGVuIiwiZXJyb3IiLCJzZXJ2ZXJFcnJvciIsIkVycm9yIiwiU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsT0FBT0MsV0FBVyxRQUFRO0FBQzFCLFNBQVFDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsUUFBTyxLQUFLO0FBQ3RFLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxpQkFBaUIsRUFBRUMsT0FBTyxRQUFPLEtBQUs7QUFDOUMsU0FBUUMsSUFBSSxRQUFPLE9BQU87QUFDMUIsU0FBUUMsZ0JBQWdCQyxnQkFBZ0IsUUFBTyxPQUFPO0FBRXRELFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsYUFBYSxFQUFFQyxXQUFXLFFBQU8scUJBQXFCO0FBQzlELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFDdkMsU0FBUUMsbUJBQW1CLFFBQU8sOEJBQThCO0FBQ2hFLFNBQVFDLG1CQUFtQixRQUFPLDZCQUE2QjtBQWdCL0Qsb0VBQW9FO0FBQ3BFLE9BQU8sTUFBTUMsbUJBQW1CLEtBQUs7QUFPckMsTUFBTUMsWUFBWSxDQUFD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
@@ -3,10 +3,10 @@
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */ import { execa } from 'execa';
5
5
  import { renameSync, writeFileSync } from 'fs';
6
+ import pacote from 'pacote';
6
7
  import { resolve as pathResolve } from 'path';
7
8
  import { LexConfig } from '../../LexConfig.js';
8
9
  import { createSpinner, getPackageJson, setPackageJson } from '../../utils/app.js';
9
- import { getDirName } from '../../utils/file.js';
10
10
  import { log } from '../../utils/log.js';
11
11
  export const init = async (appName, packageName, cmd, callback = ()=>({}))=>{
12
12
  const { cliName = 'Lex', install, packageManager: cmdPackageManager, quiet, typescript } = cmd;
@@ -18,8 +18,6 @@ export const init = async (appName, packageName, cmd, callback = ()=>({}))=>{
18
18
  spinner.start('Downloading app...');
19
19
  const tmpPath = pathResolve(cwd, './.lexTmp');
20
20
  const appPath = pathResolve(cwd, `./${appName}`);
21
- const dirName = getDirName();
22
- const dnpPath = pathResolve(dirName, '../../../node_modules/download-npm-package/bin/cli.js');
23
21
  // Get custom configuration
24
22
  await LexConfig.parseConfig(cmd);
25
23
  const { packageManager: configPackageManager, useTypescript: configTypescript } = LexConfig.config;
@@ -35,10 +33,7 @@ export const init = async (appName, packageName, cmd, callback = ()=>({}))=>{
35
33
  }
36
34
  }
37
35
  try {
38
- await execa(dnpPath, [
39
- appModule,
40
- tmpPath
41
- ], {});
36
+ await pacote.extract(appModule, tmpPath);
42
37
  // Stop spinner and update status
43
38
  spinner.succeed('Successfully downloaded app!');
44
39
  } catch (error) {
@@ -52,7 +47,7 @@ export const init = async (appName, packageName, cmd, callback = ()=>({}))=>{
52
47
  }
53
48
  // Move into configured directory
54
49
  try {
55
- renameSync(`${tmpPath}/${appModule}`, appPath);
50
+ renameSync(tmpPath, appPath);
56
51
  } catch (_error) {
57
52
  log(`\n${cliName} Error: There was an error copying ${appModule} to the current working directory.`, 'error', quiet);
58
53
  callback(1);
@@ -110,4 +105,4 @@ export const init = async (appName, packageName, cmd, callback = ()=>({}))=>{
110
105
  return 0;
111
106
  };
112
107
 
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9pbml0L2luaXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7cmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCBzZXRQYWNrYWdlSnNvbn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7Z2V0RGlyTmFtZX0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBJbml0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluc3RhbGw/OiBib29sZWFuO1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSB0eXBlc2NyaXB0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgSW5pdENhbGxiYWNrID0gKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgY29uc3QgaW5pdCA9IGFzeW5jIChcbiAgYXBwTmFtZTogc3RyaW5nLFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICBjbWQ6IEluaXRPcHRpb25zLFxuICBjYWxsYmFjazogSW5pdENhbGxiYWNrID0gKCkgPT4gKHt9KVxuKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2NsaU5hbWUgPSAnTGV4JywgaW5zdGFsbCwgcGFja2FnZU1hbmFnZXI6IGNtZFBhY2thZ2VNYW5hZ2VyLCBxdWlldCwgdHlwZXNjcmlwdH0gPSBjbWQ7XG4gIGNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcblxuICAvLyBTcGlubmVyXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICAvLyBEb3dubG9hZCBhcHAgbW9kdWxlIGludG8gdGVtcG9yYXJ5IGRpcmVjdG9yeVxuICBsb2coYCR7Y2xpTmFtZX0gaXMgZG93bmxvYWRpbmcgdGhlIGFwcCBtb2R1bGUuLi5gLCAnaW5mbycsIHF1aWV0KTtcbiAgc3Bpbm5lci5zdGFydCgnRG93bmxvYWRpbmcgYXBwLi4uJyk7XG4gIGNvbnN0IHRtcFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJy4vLmxleFRtcCcpO1xuICBjb25zdCBhcHBQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsIGAuLyR7YXBwTmFtZX1gKTtcbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgZG5wUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kb3dubG9hZC1ucG0tcGFja2FnZS9iaW4vY2xpLmpzJyk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuICBjb25zdCB7cGFja2FnZU1hbmFnZXI6IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyLCB1c2VUeXBlc2NyaXB0OiBjb25maWdUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcgPSBjbWRQYWNrYWdlTWFuYWdlciB8fCBjb25maWdQYWNrYWdlTWFuYWdlciB8fCAnJztcbiAgY29uc3QgdXNlVHlwZXNjcmlwdDogYm9vbGVhbiA9IHR5cGVzY3JpcHQgIT09IHVuZGVmaW5lZCA/IHR5cGVzY3JpcHQgOiBjb25maWdUeXBlc2NyaXB0IHx8IGZhbHNlO1xuXG4gIGxldCBhcHBNb2R1bGU6IHN0cmluZyA9IHBhY2thZ2VOYW1lO1xuXG4gIC8vIFVzZSBiYXNlIGFwcCBtb2R1bGUgYmFzZWQgb24gY29uZmlnXG4gIGlmKCFhcHBNb2R1bGUpIHtcbiAgICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgICBhcHBNb2R1bGUgPSAnQG5sYWJzL2Fya2hhbWpzLWV4YW1wbGUtdHMtcmVhY3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcHBNb2R1bGUgPSAnQG5sYWJzL2Fya2hhbWpzLWV4YW1wbGUtZmxvdy1yZWFjdCc7XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjYShkbnBQYXRoLCBbYXBwTW9kdWxlLCB0bXBQYXRoXSwge30pO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyIGFuZCB1cGRhdGUgc3RhdHVzXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgZG93bmxvYWRlZCBhcHAhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZygnZXJyb3InLCBlcnJvcik7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBUaGVyZSB3YXMgYW4gZXJyb3IgZG93bmxvYWRpbmcgJHthcHBNb2R1bGV9LiBNYWtlIHN1cmUgdGhlIHBhY2thZ2UgZXhpc3RzIGFuZCB0aGVyZSBpcyBhIG5ldHdvcmsgY29ubmVjdGlvbi5gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXIgYW5kIGtpbGwgcHJvY2Vzc1xuICAgIHNwaW5uZXIuZmFpbCgnRG93bmxvYWRlZCBvZiBhcHAgZmFpbGVkLicpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvLyBNb3ZlIGludG8gY29uZmlndXJlZCBkaXJlY3RvcnlcbiAgdHJ5IHtcbiAgICByZW5hbWVTeW5jKGAke3RtcFBhdGh9LyR7YXBwTW9kdWxlfWAsIGFwcFBhdGgpO1xuICB9IGNhdGNoKF9lcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogVGhlcmUgd2FzIGFuIGVycm9yIGNvcHlpbmcgJHthcHBNb2R1bGV9IHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSBwYWNrYWdlLmpzb25cbiAgY29uc3QgcGFja2FnZVBhdGg6IHN0cmluZyA9IGAke2FwcFBhdGh9L3BhY2thZ2UuanNvbmA7XG4gIGNvbnN0IHBhY2thZ2VKc29uID0gZ2V0UGFja2FnZUpzb24ocGFja2FnZVBhdGgpO1xuICBwYWNrYWdlSnNvbi5uYW1lID0gYXBwTmFtZTtcbiAgcGFja2FnZUpzb24uZGVzY3JpcHRpb24gPSBgJHtjbGlOYW1lfSBjcmVhdGVkIGFwcGA7XG4gIHBhY2thZ2VKc29uLnZlcnNpb24gPSAnMC4xLjAnO1xuICBkZWxldGUgcGFja2FnZUpzb24ua2V5d29yZHM7XG4gIGRlbGV0ZSBwYWNrYWdlSnNvbi5hdXRob3I7XG4gIGRlbGV0ZSBwYWNrYWdlSnNvbi5jb250cmlidXRvcnM7XG4gIGRlbGV0ZSBwYWNrYWdlSnNvbi5yZXBvc2l0b3J5O1xuICBkZWxldGUgcGFja2FnZUpzb24uaG9tZXBhZ2U7XG4gIGRlbGV0ZSBwYWNrYWdlSnNvbi5idWdzO1xuXG4gIHRyeSB7XG4gICAgLy8gVXBkYXRlIHBhY2thZ2UuanNvblxuICAgIHNldFBhY2thZ2VKc29uKHBhY2thZ2VKc29uLCBwYWNrYWdlUGF0aCk7XG5cbiAgICAvLyBVcGRhdGUgUkVBRE1FXG4gICAgY29uc3QgcmVhZG1lUGF0aDogc3RyaW5nID0gYCR7YXBwUGF0aH0vUkVBRE1FLm1kYDtcbiAgICB3cml0ZUZpbGVTeW5jKHJlYWRtZVBhdGgsIGAjICR7YXBwTmFtZX1gKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmKGluc3RhbGwpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLicpO1xuXG4gICAgLy8gQ2hhbmdlIHRvIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgcHJvY2Vzcy5jaGRpcihhcHBQYXRoKTtcblxuICAgIC8vIEluc3RhbGwgZGVwZW5kZW5jaWVzXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHBhY2thZ2VNYW5hZ2VyLCBbJ2luc3RhbGwnXSwge1xuICAgICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgICB9KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgZGVwZW5kZW5jaWVzIScpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLicpO1xuXG4gICAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgLy8gS2lsbCBwcm9jZXNzXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07Il0sIm5hbWVzIjpbImV4ZWNhIiwicmVuYW1lU3luYyIsIndyaXRlRmlsZVN5bmMiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJMZXhDb25maWciLCJjcmVhdGVTcGlubmVyIiwiZ2V0UGFja2FnZUpzb24iLCJzZXRQYWNrYWdlSnNvbiIsImdldERpck5hbWUiLCJsb2ciLCJpbml0IiwiYXBwTmFtZSIsInBhY2thZ2VOYW1lIiwiY21kIiwiY2FsbGJhY2siLCJjbGlOYW1lIiwiaW5zdGFsbCIsInBhY2thZ2VNYW5hZ2VyIiwiY21kUGFja2FnZU1hbmFnZXIiLCJxdWlldCIsInR5cGVzY3JpcHQiLCJjd2QiLCJwcm9jZXNzIiwic3Bpbm5lciIsInN0YXJ0IiwidG1wUGF0aCIsImFwcFBhdGgiLCJkaXJOYW1lIiwiZG5wUGF0aCIsInBhcnNlQ29uZmlnIiwiY29uZmlnUGFja2FnZU1hbmFnZXIiLCJ1c2VUeXBlc2NyaXB0IiwiY29uZmlnVHlwZXNjcmlwdCIsImNvbmZpZyIsInVuZGVmaW5lZCIsImFwcE1vZHVsZSIsInN1Y2NlZWQiLCJlcnJvciIsImNvbnNvbGUiLCJmYWlsIiwiX2Vycm9yIiwicGFja2FnZVBhdGgiLCJwYWNrYWdlSnNvbiIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsInZlcnNpb24iLCJrZXl3b3JkcyIsImF1dGhvciIsImNvbnRyaWJ1dG9ycyIsInJlcG9zaXRvcnkiLCJob21lcGFnZSIsImJ1Z3MiLCJyZWFkbWVQYXRoIiwibWVzc2FnZSIsImNoZGlyIiwiZW5jb2RpbmciLCJzdGRpbyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsS0FBSyxRQUFPLFFBQVE7QUFDNUIsU0FBUUMsVUFBVSxFQUFFQyxhQUFhLFFBQU8sS0FBSztBQUM3QyxTQUFRQyxXQUFXQyxXQUFXLFFBQU8sT0FBTztBQUU1QyxTQUFRQyxTQUFTLFFBQU8scUJBQXFCO0FBQzdDLFNBQVFDLGFBQWEsRUFBRUMsY0FBYyxFQUFF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
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9pbml0L2luaXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7cmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHBhY290ZSBmcm9tICdwYWNvdGUnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCBzZXRQYWNrYWdlSnNvbn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgaW5zdGFsbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHR5cGVzY3JpcHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBJbml0Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBpbml0ID0gYXN5bmMgKFxuICBhcHBOYW1lOiBzdHJpbmcsXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gIGNtZDogSW5pdE9wdGlvbnMsXG4gIGNhbGxiYWNrOiBJbml0Q2FsbGJhY2sgPSAoKSA9PiAoe30pXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBpbnN0YWxsLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHF1aWV0LCB0eXBlc2NyaXB0fSA9IGNtZDtcbiAgY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIFNwaW5uZXJcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIC8vIERvd25sb2FkIGFwcCBtb2R1bGUgaW50byB0ZW1wb3JhcnkgZGlyZWN0b3J5XG4gIGxvZyhgJHtjbGlOYW1lfSBpcyBkb3dubG9hZGluZyB0aGUgYXBwIG1vZHVsZS4uLmAsICdpbmZvJywgcXVpZXQpO1xuICBzcGlubmVyLnN0YXJ0KCdEb3dubG9hZGluZyBhcHAuLi4nKTtcbiAgY29uc3QgdG1wUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCAnLi8ubGV4VG1wJyk7XG4gIGNvbnN0IGFwcFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgYC4vJHthcHBOYW1lfWApO1xuXG4gIC8vIEdldCBjdXN0b20gY29uZmlndXJhdGlvblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcbiAgY29uc3Qge3BhY2thZ2VNYW5hZ2VyOiBjb25maWdQYWNrYWdlTWFuYWdlciwgdXNlVHlwZXNjcmlwdDogY29uZmlnVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBwYWNrYWdlTWFuYWdlcjogc3RyaW5nID0gY21kUGFja2FnZU1hbmFnZXIgfHwgY29uZmlnUGFja2FnZU1hbmFnZXIgfHwgJyc7XG4gIGNvbnN0IHVzZVR5cGVzY3JpcHQ6IGJvb2xlYW4gPSB0eXBlc2NyaXB0ICE9PSB1bmRlZmluZWQgPyB0eXBlc2NyaXB0IDogY29uZmlnVHlwZXNjcmlwdCB8fCBmYWxzZTtcblxuICBsZXQgYXBwTW9kdWxlOiBzdHJpbmcgPSBwYWNrYWdlTmFtZTtcblxuICAvLyBVc2UgYmFzZSBhcHAgbW9kdWxlIGJhc2VkIG9uIGNvbmZpZ1xuICBpZighYXBwTW9kdWxlKSB7XG4gICAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgICAgYXBwTW9kdWxlID0gJ0BubGFicy9hcmtoYW1qcy1leGFtcGxlLXRzLXJlYWN0JztcbiAgICB9IGVsc2Uge1xuICAgICAgYXBwTW9kdWxlID0gJ0BubGFicy9hcmtoYW1qcy1leGFtcGxlLWZsb3ctcmVhY3QnO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgcGFjb3RlLmV4dHJhY3QoYXBwTW9kdWxlLCB0bXBQYXRoKTtcblxuICAgIC8vIFN0b3Agc3Bpbm5lciBhbmQgdXBkYXRlIHN0YXR1c1xuICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWQgYXBwIScpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coJ2Vycm9yJywgZXJyb3IpO1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogVGhlcmUgd2FzIGFuIGVycm9yIGRvd25sb2FkaW5nICR7YXBwTW9kdWxlfS4gTWFrZSBzdXJlIHRoZSBwYWNrYWdlIGV4aXN0cyBhbmQgdGhlcmUgaXMgYSBuZXR3b3JrIGNvbm5lY3Rpb24uYCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyIGFuZCBraWxsIHByb2Nlc3NcbiAgICBzcGlubmVyLmZhaWwoJ0Rvd25sb2FkZWQgb2YgYXBwIGZhaWxlZC4nKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgLy8gTW92ZSBpbnRvIGNvbmZpZ3VyZWQgZGlyZWN0b3J5XG4gIHRyeSB7XG4gICAgcmVuYW1lU3luYyh0bXBQYXRoLCBhcHBQYXRoKTtcbiAgfSBjYXRjaChfZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFRoZXJlIHdhcyBhbiBlcnJvciBjb3B5aW5nICR7YXBwTW9kdWxlfSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvLyBDb25maWd1cmUgcGFja2FnZS5qc29uXG4gIGNvbnN0IHBhY2thZ2VQYXRoOiBzdHJpbmcgPSBgJHthcHBQYXRofS9wYWNrYWdlLmpzb25gO1xuICBjb25zdCBwYWNrYWdlSnNvbiA9IGdldFBhY2thZ2VKc29uKHBhY2thZ2VQYXRoKTtcbiAgcGFja2FnZUpzb24ubmFtZSA9IGFwcE5hbWU7XG4gIHBhY2thZ2VKc29uLmRlc2NyaXB0aW9uID0gYCR7Y2xpTmFtZX0gY3JlYXRlZCBhcHBgO1xuICBwYWNrYWdlSnNvbi52ZXJzaW9uID0gJzAuMS4wJztcbiAgZGVsZXRlIHBhY2thZ2VKc29uLmtleXdvcmRzO1xuICBkZWxldGUgcGFja2FnZUpzb24uYXV0aG9yO1xuICBkZWxldGUgcGFja2FnZUpzb24uY29udHJpYnV0b3JzO1xuICBkZWxldGUgcGFja2FnZUpzb24ucmVwb3NpdG9yeTtcbiAgZGVsZXRlIHBhY2thZ2VKc29uLmhvbWVwYWdlO1xuICBkZWxldGUgcGFja2FnZUpzb24uYnVncztcblxuICB0cnkge1xuICAgIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb25cbiAgICBzZXRQYWNrYWdlSnNvbihwYWNrYWdlSnNvbiwgcGFja2FnZVBhdGgpO1xuXG4gICAgLy8gVXBkYXRlIFJFQURNRVxuICAgIGNvbnN0IHJlYWRtZVBhdGg6IHN0cmluZyA9IGAke2FwcFBhdGh9L1JFQURNRS5tZGA7XG4gICAgd3JpdGVGaWxlU3luYyhyZWFkbWVQYXRoLCBgIyAke2FwcE5hbWV9YCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZihpbnN0YWxsKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi4nKTtcblxuICAgIC8vIENoYW5nZSB0byB0aGUgYXBwIGRpcmVjdG9yeVxuICAgIHByb2Nlc3MuY2hkaXIoYXBwUGF0aCk7XG5cbiAgICAvLyBJbnN0YWxsIGRlcGVuZGVuY2llc1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjYShwYWNrYWdlTWFuYWdlciwgWydpbnN0YWxsJ10sIHtcbiAgICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgaW5zdGFsbGVkIGRlcGVuZGVuY2llcyEnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcy4nKTtcblxuICAgICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIEtpbGwgcHJvY2Vzc1xuICBjYWxsYmFjaygwKTtcbiAgcmV0dXJuIDA7XG59O1xuIl0sIm5hbWVzIjpbImV4ZWNhIiwicmVuYW1lU3luYyIsIndyaXRlRmlsZVN5bmMiLCJwYWNvdGUiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJMZXhDb25maWciLCJjcmVhdGVTcGlubmVyIiwiZ2V0UGFja2FnZUpzb24iLCJzZXRQYWNrYWdlSnNvbiIsImxvZyIsImluaXQiLCJhcHBOYW1lIiwicGFja2FnZU5hbWUiLCJjbWQiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJpbnN0YWxsIiwicGFja2FnZU1hbmFnZXIiLCJjbWRQYWNrYWdlTWFuYWdlciIsInF1aWV0IiwidHlwZXNjcmlwdCIsImN3ZCIsInByb2Nlc3MiLCJzcGlubmVyIiwic3RhcnQiLCJ0bXBQYXRoIiwiYXBwUGF0aCIsInBhcnNlQ29uZmlnIiwiY29uZmlnUGFja2FnZU1hbmFnZXIiLCJ1c2VUeXBlc2NyaXB0IiwiY29uZmlnVHlwZXNjcmlwdCIsImNvbmZpZyIsInVuZGVmaW5lZCIsImFwcE1vZHVsZSIsImV4dHJhY3QiLCJzdWNjZWVkIiwiZXJyb3IiLCJjb25zb2xlIiwiZmFpbCIsIl9lcnJvciIsInBhY2thZ2VQYXRoIiwicGFja2FnZUpzb24iLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJ2ZXJzaW9uIiwia2V5d29yZHMiLCJhdXRob3IiLCJjb250cmlidXRvcnMiLCJyZXBvc2l0b3J5IiwiaG9tZXBhZ2UiLCJidWdzIiwicmVhZG1lUGF0aCIsIm1lc3NhZ2UiLCJjaGRpciIsImVuY29kaW5nIiwic3RkaW8iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEtBQUssUUFBTyxRQUFRO0FBQzVCLFNBQVFDLFVBQVUsRUFBRUMsYUFBYSxRQUFPLEtBQUs7QUFDN0MsT0FBT0MsWUFBWSxTQUFTO0FBQzVCLFNBQVFDLFdBQVdDLFdBQVcsUUFBTyxPQUFPO0FBRTVDLFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsYUFBYSxFQUFFQyxjQUFjLEVBQUVDLGNBQWMsUUFBTyxxQkFBcUI7QUFDakYsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQVl2QyxPQUFPLE1BQU1DLE9BQU8sT0FDbEJDLFNBQ0FDLGFBQ0FDLEtBQ0FDLFdBQXlCLElBQU8sQ0FBQSxDQUFDLENBQUEsQ0FBRTtJQUVuQyxNQUFNLEVBQUNDLFVBQVUsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLGdC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
@@ -20,7 +20,7 @@ export const migrate = async (cmd, callback = process.exit)=>{
20
20
  const packagePath = `${cwd}/package.json`;
21
21
  const appPackage = getPackageJson(packagePath);
22
22
  const { dependencies = {}, devDependencies = {} } = appPackage;
23
- // Remove ESBuild, Vitest and Webpack from app since it will conflict
23
+ // Remove toolchain packages supplied by Lex because duplicate versions can conflict.
24
24
  appPackage.dependencies = removeConflictModules(dependencies);
25
25
  appPackage.devDependencies = removeConflictModules(devDependencies);
26
26
  // Install new list of packages
@@ -47,4 +47,4 @@ export const migrate = async (cmd, callback = process.exit)=>{
47
47
  }
48
48
  };
49
49
 
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCByZW1vdmVDb25mbGljdE1vZHVsZXMsIHJlbW92ZU1vZHVsZXN9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIE1pZ3JhdGVDYWxsYmFjayA9IHR5cGVvZiBwcm9jZXNzLmV4aXQ7XG5cbmV4cG9ydCBjb25zdCBtaWdyYXRlID0gYXN5bmMgKGNtZDogTWlncmF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBNaWdyYXRlQ2FsbGJhY2sgPSBwcm9jZXNzLmV4aXQpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHF1aWV0fSA9IGNtZDtcblxuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gLy8gRGlzcGxheSBtZXNzYWdlXG4gIC8vIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIC8vIFNwaW5uZXJcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuICBzcGlubmVyLnN0YXJ0KCdSZW1vdmluZyBub2RlIG1vZHVsZXMuLi4nKTtcblxuICAvLyBSZW1vdmUgbm9kZV9tb2R1bGVzXG4gIGF3YWl0IHJlbW92ZU1vZHVsZXMoKTtcblxuICBjb25zdCB7cGFja2FnZU1hbmFnZXI6IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyfSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcgPSBjbWRQYWNrYWdlTWFuYWdlciB8fCBjb25maWdQYWNrYWdlTWFuYWdlciB8fCAnJztcbiAgY29uc3QgcGFja2FnZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vcGFja2FnZS5qc29uYDtcbiAgY29uc3QgYXBwUGFja2FnZSA9IGdldFBhY2thZ2VKc29uKHBhY2thZ2VQYXRoKTtcbiAgY29uc3Qge2RlcGVuZGVuY2llcyA9IHt9LCBkZXZEZXBlbmRlbmNpZXMgPSB7fX0gPSBhcHBQYWNrYWdlO1xuXG4gIC8vIFJlbW92ZSBFU0J1aWxkLCBWaXRlc3QgYW5kIFdlYnBhY2sgZnJvbSBhcHAgc2luY2UgaXQgd2lsbCBjb25mbGljdFxuICBhcHBQYWNrYWdlLmRlcGVuZGVuY2llcyA9IHJlbW92ZUNvbmZsaWN0TW9kdWxlcyhkZXBlbmRlbmNpZXMpO1xuICBhcHBQYWNrYWdlLmRldkRlcGVuZGVuY2llcyA9IHJlbW92ZUNvbmZsaWN0TW9kdWxlcyhkZXZEZXBlbmRlbmNpZXMpO1xuXG4gIC8vIEluc3RhbGwgbmV3IGxpc3Qgb2YgcGFja2FnZXNcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjYShwYWNrYWdlTWFuYWdlciwgWydpbnN0YWxsJ10sIHtcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgfSk7XG5cbiAgICAvLyBTdG9wIGxvYWRlclxuICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIGFwcCEnKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcmVtb3ZlIG1vZHVsZXMuJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJleGVjYSIsIkxleENvbmZpZyIsImNyZWF0ZVNwaW5uZXIiLCJnZXRQYWNrYWdlSnNvbiIsInJlbW92ZUNvbmZsaWN0TW9kdWxlcyIsInJlbW92ZU1vZHVsZXMiLCJsb2ciLCJtaWdyYXRlIiwiY21kIiwiY2FsbGJhY2siLCJwcm9jZXNzIiwiZXhpdCIsImNsaU5hbWUiLCJwYWNrYWdlTWFuYWdlciIsImNtZFBhY2thZ2VNYW5hZ2VyIiwicXVpZXQiLCJjd2QiLCJzcGlubmVyIiwic3RhcnQiLCJjb25maWdQYWNrYWdlTWFuYWdlciIsImNvbmZpZyIsInBhY2thZ2VQYXRoIiwiYXBwUGFja2FnZSIsImRlcGVuZGVuY2llcyIsImRldkRlcGVuZGVuY2llcyIsImVuY29kaW5nIiwic3RkaW8iLCJzdWNjZWVkIiwiZXJyb3IiLCJtZXNzYWdlIiwiZmFpbCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsS0FBSyxRQUFPLFFBQVE7QUFFNUIsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyxhQUFhLEVBQUVDLGNBQWMsRUFBRUMscUJBQXFCLEVBQUVDLGFBQWEsUUFBTyxxQkFBcUI7QUFDdkcsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQVV2QyxPQUFPLE1BQU1DLFVBQVUsT0FBT0MsS0FBcUJDLFdBQTRCQyxRQUFRQyxJQUFJO0lBQ3pGLE1BQU0sRUFBQ0MsVUFBVSxLQUFLLEVBQUVDLGdCQUFnQkMsaUJBQWlCLEVBQUVDLEtBQUssRUFBQyxHQUFHUDtJQUVwRSxNQUFNUSxNQUFjTixRQUFRTSxHQUFHO0lBRS9CLHFCQUFxQjtJQUNyQix1REFBdUQ7SUFFdkQsVUFBVTtJQUNWLE1BQU1DLFVBQVVmLGNBQWNhO0lBQzlCRSxRQUFRQyxLQUFLLENBQUM7SUFFZCxzQkFBc0I7SUFDdEIsTUFBTWI7SUFFTixNQUFNLEVBQUNRLGdCQUFnQk0sb0JBQW9CLEVBQUMsR0FBR2xCLFVBQVVtQixNQUFNO0lBQy9ELE1BQU1QLGlCQUF5QkMscUJBQXFCSyx3QkFBd0I7SUFDNUUsTUFBTUUsY0FBc0IsR0FBR0wsSUFBSSxhQUFhLENBQUM7SUFDakQsTUFBTU0sYUFBYW5CLGVBQWVrQjtJQUNsQyxNQUFNLEVBQUNFLGVBQWUsQ0FBQyxDQUFDLEVBQUVDLGtCQUFrQixDQUFDLENBQUMsRUFBQyxHQUFHRjtJQUVsRCxxRUFBcUU7SUFDckVBLFdBQVdDLFlBQVksR0FBR25CLHNCQUFzQm1CO0lBQ2hERCxXQUFXRSxlQUFlLEdBQUdwQixzQkFBc0JvQjtJQUVuRCwrQkFBK0I7SUFDL0IsSUFBSTtRQUNGLE1BQU14QixNQUFNYSxnQkFBZ0I7WUFBQztTQUFVLEVBQUU7WUFDdkNZLFVBQVU7WUFDVkMsT0FBTztRQUNUO1FBRUEsY0FBYztRQUNkVCxRQUFRVSxPQUFPLENBQUM7UUFFaEIsZUFBZTtRQUNmbEIsU0FBUztRQUNULE9BQU87SUFDVCxFQUFFLE9BQU1tQixPQUFPO1FBQ2Isd0JBQXdCO1FBQ3hCdEIsSUFBSSxDQUFDLEVBQUUsRUFBRU0sUUFBUSxRQUFRLEVBQUVnQixNQUFNQyxPQUFPLEVBQUUsRUFBRSxTQUFTZDtRQUVyRCxlQUFlO1FBQ2ZFLFFBQVFhLElBQUksQ0FBQztRQUViLGVBQWU7UUFDZnJCLFNBQVM7UUFDVCxPQUFPO0lBQ1Q7QUFDRixFQUFFIn0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCByZW1vdmVDb25mbGljdE1vZHVsZXMsIHJlbW92ZU1vZHVsZXN9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIE1pZ3JhdGVDYWxsYmFjayA9IHR5cGVvZiBwcm9jZXNzLmV4aXQ7XG5cbmV4cG9ydCBjb25zdCBtaWdyYXRlID0gYXN5bmMgKGNtZDogTWlncmF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBNaWdyYXRlQ2FsbGJhY2sgPSBwcm9jZXNzLmV4aXQpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHF1aWV0fSA9IGNtZDtcblxuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gLy8gRGlzcGxheSBtZXNzYWdlXG4gIC8vIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIC8vIFNwaW5uZXJcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuICBzcGlubmVyLnN0YXJ0KCdSZW1vdmluZyBub2RlIG1vZHVsZXMuLi4nKTtcblxuICAvLyBSZW1vdmUgbm9kZV9tb2R1bGVzXG4gIGF3YWl0IHJlbW92ZU1vZHVsZXMoKTtcblxuICBjb25zdCB7cGFja2FnZU1hbmFnZXI6IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyfSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcgPSBjbWRQYWNrYWdlTWFuYWdlciB8fCBjb25maWdQYWNrYWdlTWFuYWdlciB8fCAnJztcbiAgY29uc3QgcGFja2FnZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vcGFja2FnZS5qc29uYDtcbiAgY29uc3QgYXBwUGFja2FnZSA9IGdldFBhY2thZ2VKc29uKHBhY2thZ2VQYXRoKTtcbiAgY29uc3Qge2RlcGVuZGVuY2llcyA9IHt9LCBkZXZEZXBlbmRlbmNpZXMgPSB7fX0gPSBhcHBQYWNrYWdlO1xuXG4gIC8vIFJlbW92ZSB0b29sY2hhaW4gcGFja2FnZXMgc3VwcGxpZWQgYnkgTGV4IGJlY2F1c2UgZHVwbGljYXRlIHZlcnNpb25zIGNhbiBjb25mbGljdC5cbiAgYXBwUGFja2FnZS5kZXBlbmRlbmNpZXMgPSByZW1vdmVDb25mbGljdE1vZHVsZXMoZGVwZW5kZW5jaWVzKTtcbiAgYXBwUGFja2FnZS5kZXZEZXBlbmRlbmNpZXMgPSByZW1vdmVDb25mbGljdE1vZHVsZXMoZGV2RGVwZW5kZW5jaWVzKTtcblxuICAvLyBJbnN0YWxsIG5ldyBsaXN0IG9mIHBhY2thZ2VzXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EocGFja2FnZU1hbmFnZXIsIFsnaW5zdGFsbCddLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgLy8gU3RvcCBsb2FkZXJcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBtaWdyYXRlZCBhcHAhJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIHJlbW92ZSBtb2R1bGVzLicpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiZXhlY2EiLCJMZXhDb25maWciLCJjcmVhdGVTcGlubmVyIiwiZ2V0UGFja2FnZUpzb24iLCJyZW1vdmVDb25mbGljdE1vZHVsZXMiLCJyZW1vdmVNb2R1bGVzIiwibG9nIiwibWlncmF0ZSIsImNtZCIsImNhbGxiYWNrIiwicHJvY2VzcyIsImV4aXQiLCJjbGlOYW1lIiwicGFja2FnZU1hbmFnZXIiLCJjbWRQYWNrYWdlTWFuYWdlciIsInF1aWV0IiwiY3dkIiwic3Bpbm5lciIsInN0YXJ0IiwiY29uZmlnUGFja2FnZU1hbmFnZXIiLCJjb25maWciLCJwYWNrYWdlUGF0aCIsImFwcFBhY2thZ2UiLCJkZXBlbmRlbmNpZXMiLCJkZXZEZXBlbmRlbmNpZXMiLCJlbmNvZGluZyIsInN0ZGlvIiwic3VjY2VlZCIsImVycm9yIiwibWVzc2FnZSIsImZhaWwiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEtBQUssUUFBTyxRQUFRO0FBRTVCLFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsYUFBYSxFQUFFQyxjQUFjLEVBQUVDLHFCQUFxQixFQUFFQyxhQUFhLFFBQU8scUJBQXFCO0FBQ3ZHLFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFVdkMsT0FBTyxNQUFNQyxVQUFVLE9BQU9DLEtBQXFCQyxXQUE0QkMsUUFBUUMsSUFBSTtJQUN6RixNQUFNLEVBQUNDLFVBQVUsS0FBSyxFQUFFQyxnQkFBZ0JDLGlCQUFpQixFQUFFQyxLQUFLLEVBQUMsR0FBR1A7SUFFcEUsTUFBTVEsTUFBY04sUUFBUU0sR0FBRztJQUUvQixxQkFBcUI7SUFDckIsdURBQXVEO0lBRXZELFVBQVU7SUFDVixNQUFNQyxVQUFVZixjQUFjYTtJQUM5QkUsUUFBUUMsS0FBSyxDQUFDO0lBRWQsc0JBQXNCO0lBQ3RCLE1BQU1iO0lBRU4sTUFBTSxFQUFDUSxnQkFBZ0JNLG9CQUFvQixFQUFDLEdBQUdsQixVQUFVbUIsTUFBTTtJQUMvRCxNQUFNUCxpQkFBeUJDLHFCQUFxQkssd0JBQXdCO0lBQzVFLE1BQU1FLGNBQXNCLEdBQUdMLElBQUksYUFBYSxDQUFDO0lBQ2pELE1BQU1NLGFBQWFuQixlQUFla0I7SUFDbEMsTUFBTSxFQUFDRSxlQUFlLENBQUMsQ0FBQyxFQUFFQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUMsR0FBR0Y7SUFFbEQscUZBQXFGO0lBQ3JGQSxXQUFXQyxZQUFZLEdBQUduQixzQkFBc0JtQjtJQUNoREQsV0FBV0UsZUFBZSxHQUFHcEIsc0JBQXNCb0I7SUFFbkQsK0JBQStCO0lBQy9CLElBQUk7UUFDRixNQUFNeEIsTUFBTWEsZ0JBQWdCO1lBQUM7U0FBVSxFQUFFO1lBQ3ZDWSxVQUFVO1lBQ1ZDLE9BQU87UUFDVDtRQUVBLGNBQWM7UUFDZFQsUUFBUVUsT0FBTyxDQUFDO1FBRWhCLGVBQWU7UUFDZmxCLFNBQVM7UUFDVCxPQUFPO0lBQ1QsRUFBRSxPQUFNbUIsT0FBTztRQUNiLHdCQUF3QjtRQUN4QnRCLElBQUksQ0FBQyxFQUFFLEVBQUVNLFFBQVEsUUFBUSxFQUFFZ0IsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBU2Q7UUFFckQsZUFBZTtRQUNmRSxRQUFRYSxJQUFJLENBQUM7UUFFYixlQUFlO1FBQ2ZyQixTQUFTO1FBQ1QsT0FBTztJQUNUO0FBQ0YsRUFBRSJ9