vitest 0.0.132 → 0.0.136

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.
package/dist/worker.js CHANGED
@@ -4,7 +4,7 @@ import { c as distDir } from './constants-d24b670d.js';
4
4
  import { builtinModules, createRequire } from 'module';
5
5
  import { pathToFileURL, fileURLToPath } from 'url';
6
6
  import vm from 'vm';
7
- import { s as shouldExternalize } from './externalize-2f63779d.js';
7
+ import { i as isNodeBuiltin, s as shouldExternalize } from './externalize-b979f524.js';
8
8
  import { existsSync, readdirSync } from 'fs';
9
9
  import { a as spyOn, s as spies } from './jest-mock-30625866.js';
10
10
  import { r as rpc } from './rpc-8c7cc374.js';
@@ -32,10 +32,10 @@ var __spreadValues = (a, b) => {
32
32
  }
33
33
  return a;
34
34
  };
35
- function resolveMockPath(mockPath, root, nmName) {
36
- if (nmName) {
37
- const mockDirname = dirname(nmName);
38
- const baseFilename = basename(nmName);
35
+ function resolveMockPath(mockPath, root, external) {
36
+ if (external || isNodeBuiltin(mockPath)) {
37
+ const mockDirname = dirname(external || mockPath);
38
+ const baseFilename = basename(external || mockPath);
39
39
  const mockFolder = resolve(root, "__mocks__", mockDirname);
40
40
  if (!existsSync(mockFolder))
41
41
  return null;
@@ -212,10 +212,21 @@ async function executeInViteNode(options) {
212
212
  callstack = [...callstack, id];
213
213
  const suite = getSuiteFilepath();
214
214
  const request = async (dep, canMock = true) => {
215
- var _a;
215
+ var _a, _b;
216
216
  if (canMock) {
217
- const mocks2 = mockMap[suite || ""] || {};
218
- const mock = mocks2[resolveDependency(dep)];
217
+ const mocks = mockMap[suite || ""] || {};
218
+ const mock = mocks[resolveDependency(dep)];
219
+ if (mock === null) {
220
+ const mockedKey = `${dep}__mock`;
221
+ const cache = moduleCache.get(mockedKey);
222
+ if (cache == null ? void 0 : cache.exports)
223
+ return cache.exports;
224
+ const cacheKey = toFilePath(dep, root);
225
+ const mod = ((_a = moduleCache.get(cacheKey)) == null ? void 0 : _a.exports) || await cachedRequest(dep, callstack);
226
+ const exports2 = mockObject(mod);
227
+ setCache(mockedKey, { exports: exports2 });
228
+ return exports2;
229
+ }
219
230
  if (typeof mock === "function")
220
231
  return callFunctionMock(dep, mock);
221
232
  if (typeof mock === "string")
@@ -223,7 +234,7 @@ async function executeInViteNode(options) {
223
234
  }
224
235
  if (callstack.includes(dep)) {
225
236
  const cacheKey = toFilePath(dep, root);
226
- if (!((_a = moduleCache.get(cacheKey)) == null ? void 0 : _a.exports))
237
+ if (!((_b = moduleCache.get(cacheKey)) == null ? void 0 : _b.exports))
227
238
  throw new Error(`Circular dependency detected
228
239
  Stack:
229
240
  ${[...callstack, dep].reverse().map((p) => `- ${p}`).join("\n")}`);
@@ -252,20 +263,19 @@ ${[...callstack, dep].reverse().map((p) => `- ${p}`).join("\n")}`);
252
263
  const importActual = (path, nmName) => {
253
264
  return request(getActualPath(path, nmName), false);
254
265
  };
255
- const importMock = async (path, nmName) => {
266
+ async function importMock(path, nmName) {
256
267
  if (!suite)
257
268
  throw new Error("You can import mock only inside of a running test");
258
269
  const mock = (mockMap[suite] || {})[path] || resolveMockPath(path, root, nmName);
259
270
  if (mock === null) {
260
271
  const fsPath2 = getActualPath(path, nmName);
261
- const exports2 = mockObject(await request(fsPath2, false));
262
- setCache(fsPath2, { exports: exports2 });
263
- return exports2;
272
+ const mod = await request(fsPath2, false);
273
+ return mockObject(mod);
264
274
  }
265
275
  if (typeof mock === "function")
266
276
  return callFunctionMock(path, mock);
267
277
  return request(mock, true);
268
- };
278
+ }
269
279
  const context = {
270
280
  __vite_ssr_import__: request,
271
281
  __vite_ssr_dynamic_import__: request,
@@ -289,11 +299,6 @@ ${[...callstack, dep].reverse().map((p) => `- ${p}`).join("\n")}`);
289
299
  lineOffset: 0
290
300
  });
291
301
  await fn(...Object.values(context));
292
- const mocks = suite ? mockMap[suite] : null;
293
- if (mocks) {
294
- if (mocks[id] === null)
295
- exportAll(exports, mockObject(exports));
296
- }
297
302
  return exports;
298
303
  }
299
304
  function setCache(id, mod) {
@@ -421,4 +426,4 @@ async function run(ctx) {
421
426
  }
422
427
 
423
428
  export { collect, run };
424
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlcyI6WyIuLi9zcmMvbm9kZS9tb2NrZXIudHMiLCIuLi9zcmMvbm9kZS9leGVjdXRlLnRzIiwiLi4vc3JjL3J1bnRpbWUvd29ya2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRkaXJTeW5jIH0gZnJvbSAnZnMnXG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHsgc3BpZXMsIHNweU9uIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2plc3QtbW9jaydcbmltcG9ydCB7IG1lcmdlU2xhc2hlcyB9IGZyb20gJy4uL3V0aWxzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1aXRlTW9ja3Mge1xuICBbc3VpdGVQYXRoOiBzdHJpbmddOiB7XG4gICAgW29yaWdpbmFsUGF0aDogc3RyaW5nXTogc3RyaW5nIHwgbnVsbCB8ICgoKSA9PiBhbnkpXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU1vY2tQYXRoKG1vY2tQYXRoOiBzdHJpbmcsIHJvb3Q6IHN0cmluZywgbm1OYW1lOiBzdHJpbmcgfCBudWxsKSB7XG4gIC8vIGl0J3MgYSBub2RlX21vZHVsZSBhbGlhc1xuICAvLyBhbGwgbW9ja3Mgc2hvdWxkIGJlIGluc2lkZSA8cm9vdD4vX19tb2Nrc19fXG4gIGlmIChubU5hbWUpIHtcbiAgICBjb25zdCBtb2NrRGlybmFtZSA9IGRpcm5hbWUobm1OYW1lKSAvLyBmb3IgbmVzdGVkIG1vY2tzOiBAdnVldXNlL2ludGVncmF0aW9uL3VzZUp3dFxuICAgIGNvbnN0IGJhc2VGaWxlbmFtZSA9IGJhc2VuYW1lKG5tTmFtZSlcbiAgICBjb25zdCBtb2NrRm9sZGVyID0gcmVzb2x2ZShyb290LCAnX19tb2Nrc19fJywgbW9ja0Rpcm5hbWUpXG5cbiAgICBpZiAoIWV4aXN0c1N5bmMobW9ja0ZvbGRlcikpIHJldHVybiBudWxsXG5cbiAgICBjb25zdCBmaWxlcyA9IHJlYWRkaXJTeW5jKG1vY2tGb2xkZXIpXG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGNvbnN0IFtiYXNlbmFtZV0gPSBmaWxlLnNwbGl0KCcuJylcbiAgICAgIGlmIChiYXNlbmFtZSA9PT0gYmFzZUZpbGVuYW1lKVxuICAgICAgICByZXR1cm4gcmVzb2x2ZShtb2NrRm9sZGVyLCBmaWxlKS5yZXBsYWNlKHJvb3QsICcnKVxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBkaXIgPSBkaXJuYW1lKG1vY2tQYXRoKVxuICBjb25zdCBiYXNlSWQgPSBiYXNlbmFtZShtb2NrUGF0aClcbiAgY29uc3QgZnVsbFBhdGggPSByZXNvbHZlKGRpciwgJ19fbW9ja3NfXycsIGJhc2VJZClcbiAgcmV0dXJuIGV4aXN0c1N5bmMoZnVsbFBhdGgpID8gZnVsbFBhdGgucmVwbGFjZShyb290LCAnJykgOiBudWxsXG59XG5cbmZ1bmN0aW9uIGdldE9iamVjdFR5cGUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh2YWx1ZSkuc2xpY2UoOCwgLTEpXG59XG5cbmZ1bmN0aW9uIG1vY2tQcm90b3R5cGUocHJvdG86IGFueSkge1xuICBpZiAoIXByb3RvKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IG5ld1Byb3RvOiBhbnkgPSB7fVxuXG4gIGNvbnN0IHByb3RvRGVzY3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm90bylcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgZm9yIChjb25zdCBkIGluIHByb3RvRGVzY3IpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3UHJvdG8sIGQsIHByb3RvRGVzY3JbZF0pXG5cbiAgICBpZiAodHlwZW9mIHByb3RvRGVzY3JbZF0udmFsdWUgPT09ICdmdW5jdGlvbicpXG4gICAgICBzcHlPbihuZXdQcm90bywgZCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KVxuICB9XG5cbiAgcmV0dXJuIG5ld1Byb3RvXG59XG5cbmZ1bmN0aW9uIG1vY2tPYmplY3Qob2JqOiBhbnkpIHtcbiAgY29uc3QgdHlwZSA9IGdldE9iamVjdFR5cGUob2JqKVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpXG4gICAgcmV0dXJuIFtdXG4gIGVsc2UgaWYgKHR5cGUgIT09ICdPYmplY3QnICYmIHR5cGUgIT09ICdNb2R1bGUnKVxuICAgIHJldHVybiBvYmpcblxuICBjb25zdCBuZXdPYmogPSB7IC4uLm9iaiB9XG5cbiAgY29uc3QgcHJvdG8gPSBtb2NrUHJvdG90eXBlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopKVxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YobmV3T2JqLCBwcm90bylcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgZm9yIChjb25zdCBrIGluIG9iaikge1xuICAgIG5ld09ialtrXSA9IG1vY2tPYmplY3Qob2JqW2tdKVxuICAgIGNvbnN0IHR5cGUgPSBnZXRPYmplY3RUeXBlKG9ialtrXSlcblxuICAgIGlmICh0eXBlLmluY2x1ZGVzKCdGdW5jdGlvbicpICYmICFvYmpba10uX19pc1NweSkge1xuICAgICAgc3B5T24obmV3T2JqLCBrKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge30pXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqW2tdLCAnbGVuZ3RoJywgeyB2YWx1ZTogMCB9KSAvLyB0aW55c3B5IHJldGFpbnMgbGVuZ3RoLCBidXQgamVzdCBkb2VzbnRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld09ialxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja2VyKHJvb3Q6IHN0cmluZywgbW9ja01hcDogU3VpdGVNb2Nrcykge1xuICBmdW5jdGlvbiBnZXRTdWl0ZUZpbGVwYXRoKCkge1xuICAgIHJldHVybiBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fPy5maWxlcGF0aFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0QWN0dWFsUGF0aChwYXRoOiBzdHJpbmcsIG5tTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5tTmFtZSA/IG1lcmdlU2xhc2hlcyhgL0Bmcy8ke3BhdGh9YCkgOiBwYXRoLnJlcGxhY2Uocm9vdCwgJycpXG4gIH1cblxuICBmdW5jdGlvbiB1bm1vY2tQYXRoKHBhdGg6IHN0cmluZywgbm1OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdWl0ZWZpbGUgPSBnZXRTdWl0ZUZpbGVwYXRoKClcblxuICAgIGlmIChzdWl0ZWZpbGUpIHtcbiAgICAgIGNvbnN0IGZzUGF0aCA9IGdldEFjdHVhbFBhdGgocGF0aCwgbm1OYW1lKVxuICAgICAgbW9ja01hcFtzdWl0ZWZpbGVdID8/PSB7fVxuICAgICAgZGVsZXRlIG1vY2tNYXBbc3VpdGVmaWxlXVtmc1BhdGhdXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbW9ja1BhdGgocGF0aDogc3RyaW5nLCBubU5hbWU6IHN0cmluZywgZmFjdG9yeT86ICgpID0+IGFueSkge1xuICAgIGNvbnN0IHN1aXRlZmlsZSA9IGdldFN1aXRlRmlsZXBhdGgoKVxuXG4gICAgaWYgKHN1aXRlZmlsZSkge1xuICAgICAgY29uc3QgZnNQYXRoID0gZ2V0QWN0dWFsUGF0aChwYXRoLCBubU5hbWUpXG4gICAgICBtb2NrTWFwW3N1aXRlZmlsZV0gPz89IHt9XG4gICAgICBtb2NrTWFwW3N1aXRlZmlsZV1bZnNQYXRoXSA9IGZhY3RvcnkgfHwgcmVzb2x2ZU1vY2tQYXRoKHBhdGgsIHJvb3QsIG5tTmFtZSlcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbGVhck1vY2tzKHsgY2xlYXJNb2NrcywgbW9ja1Jlc2V0LCByZXN0b3JlTW9ja3MgfTogeyBjbGVhck1vY2tzOiBib29sZWFuOyBtb2NrUmVzZXQ6IGJvb2xlYW47IHJlc3RvcmVNb2NrczogYm9vbGVhbn0pIHtcbiAgICBpZiAoIWNsZWFyTW9ja3MgJiYgIW1vY2tSZXNldCAmJiAhcmVzdG9yZU1vY2tzKVxuICAgICAgcmV0dXJuXG5cbiAgICBzcGllcy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBpZiAocmVzdG9yZU1vY2tzKVxuICAgICAgICBzLm1vY2tSZXN0b3JlKClcbiAgICAgIGVsc2UgaWYgKG1vY2tSZXNldClcbiAgICAgICAgcy5tb2NrUmVzZXQoKVxuICAgICAgZWxzZSBpZiAoY2xlYXJNb2NrcylcbiAgICAgICAgcy5tb2NrQ2xlYXIoKVxuICAgIH0pXG4gIH1cblxuICAvLyBucG0gcmVzb2x2ZXMgYXMgL25vZGVfbW9kdWxlcywgYnV0IHdlIHN0b3JlIGFzIC9AZnMvLi4uL25vZGVfbW9kdWxlc1xuICBmdW5jdGlvbiByZXNvbHZlRGVwZW5kZW5jeShkZXA6IHN0cmluZykge1xuICAgIGlmIChkZXAuc3RhcnRzV2l0aCgnL25vZGVfbW9kdWxlcy8nKSlcbiAgICAgIHJldHVybiBtZXJnZVNsYXNoZXMoYC9AZnMvJHtqb2luKHJvb3QsIGRlcCl9YClcblxuICAgIHJldHVybiBkZXBcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW9ja1BhdGgsXG4gICAgdW5tb2NrUGF0aCxcbiAgICBjbGVhck1vY2tzLFxuICAgIGdldEFjdHVhbFBhdGgsXG5cbiAgICBtb2NrT2JqZWN0LFxuICAgIGdldFN1aXRlRmlsZXBhdGgsXG4gICAgcmVzb2x2ZU1vY2tQYXRoLFxuICAgIHJlc29sdmVEZXBlbmRlbmN5LFxuICB9XG59XG4iLCJpbXBvcnQgeyBidWlsdGluTW9kdWxlcywgY3JlYXRlUmVxdWlyZSB9IGZyb20gJ21vZHVsZSdcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGgsIHBhdGhUb0ZpbGVVUkwgfSBmcm9tICd1cmwnXG5pbXBvcnQgdm0gZnJvbSAndm0nXG5pbXBvcnQgeyBkaXJuYW1lLCByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IE1vZHVsZUNhY2hlLCBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgc2xhc2gsIHRvRmlsZVBhdGggfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IHNob3VsZEV4dGVybmFsaXplIH0gZnJvbSAnLi4vdXRpbHMvZXh0ZXJuYWxpemUnXG5pbXBvcnQgdHlwZSB7IFN1aXRlTW9ja3MgfSBmcm9tICcuL21vY2tlcidcbmltcG9ydCB7IGNyZWF0ZU1vY2tlciB9IGZyb20gJy4vbW9ja2VyJ1xuXG5leHBvcnQgdHlwZSBGZXRjaEZ1bmN0aW9uID0gKGlkOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPlxuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVPcHRpb25zIGV4dGVuZHMgUGljazxSZXNvbHZlZENvbmZpZywgJ2RlcHNJbmxpbmUnIHwgJ2RlcHNFeHRlcm5hbCcgfCAnZmFsbGJhY2tDSlMnIHwgJ2Jhc2UnPiB7XG4gIHJvb3Q6IHN0cmluZ1xuICBmaWxlczogc3RyaW5nW11cbiAgZmV0Y2g6IEZldGNoRnVuY3Rpb25cbiAgaW50ZXJwcmV0RGVmYXVsdDogYm9vbGVhblxuICBtb2R1bGVDYWNoZTogTWFwPHN0cmluZywgTW9kdWxlQ2FjaGU+XG4gIG1vY2tNYXA6IFN1aXRlTW9ja3Ncbn1cblxuZXhwb3J0IGNvbnN0IHN0dWJSZXF1ZXN0czogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgJy9Adml0ZS9jbGllbnQnOiB7XG4gICAgaW5qZWN0UXVlcnk6IChpZDogc3RyaW5nKSA9PiBpZCxcbiAgICBjcmVhdGVIb3RDb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjZXB0OiAoKSA9PiB7fSxcbiAgICAgICAgcHJ1bmU6ICgpID0+IHt9LFxuICAgICAgfVxuICAgIH0sXG4gICAgdXBkYXRlU3R5bGUoKSB7fSxcbiAgfSxcbn1cblxuZnVuY3Rpb24gaGFzTmVzdGVkRGVmYXVsdCh0YXJnZXQ6IGFueSkge1xuICByZXR1cm4gJ19fZXNNb2R1bGUnIGluIHRhcmdldCAmJiB0YXJnZXQuX19lc01vZHVsZSAmJiAnZGVmYXVsdCcgaW4gdGFyZ2V0LmRlZmF1bHRcbn1cblxuZnVuY3Rpb24gcHJveHlNZXRob2QobmFtZTogJ2dldCcgfCAnc2V0JyB8ICdoYXMnIHwgJ2RlbGV0ZVByb3BlcnR5JywgaXNOZXN0ZWQ6IGJvb2xlYW4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldDogYW55LCBrZXk6IHN0cmluZyB8IHN5bWJvbCwgLi4uYXJnczogW2FueT8sIGFueT9dKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gUmVmbGVjdFtuYW1lXSh0YXJnZXQsIGtleSwgLi4uYXJncylcbiAgICBpZiAoKGlzTmVzdGVkICYmIGtleSA9PT0gJ2RlZmF1bHQnKSB8fCAhcmVzdWx0KVxuICAgICAgcmV0dXJuIFJlZmxlY3RbbmFtZV0odGFyZ2V0LmRlZmF1bHQsIGtleSwgLi4uYXJncylcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGludGVycHJldGVkSW1wb3J0KHBhdGg6IHN0cmluZywgaW50ZXJwcmV0RGVmYXVsdDogYm9vbGVhbikge1xuICBjb25zdCBtb2QgPSBhd2FpdCBpbXBvcnQocGF0aClcblxuICBpZiAoaW50ZXJwcmV0RGVmYXVsdCAmJiAnZGVmYXVsdCcgaW4gbW9kKSB7XG4gICAgY29uc3QgaXNOZXN0ZWQgPSBoYXNOZXN0ZWREZWZhdWx0KG1vZClcbiAgICByZXR1cm4gbmV3IFByb3h5KG1vZCwge1xuICAgICAgZ2V0OiBwcm94eU1ldGhvZCgnZ2V0JywgaXNOZXN0ZWQpLFxuICAgICAgc2V0OiBwcm94eU1ldGhvZCgnc2V0JywgaXNOZXN0ZWQpLFxuICAgICAgaGFzOiBwcm94eU1ldGhvZCgnaGFzJywgaXNOZXN0ZWQpLFxuICAgICAgZGVsZXRlUHJvcGVydHk6IHByb3h5TWV0aG9kKCdkZWxldGVQcm9wZXJ0eScsIGlzTmVzdGVkKSxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG1vZFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUluVml0ZU5vZGUob3B0aW9uczogRXhlY3V0ZU9wdGlvbnMpIHtcbiAgY29uc3QgeyBtb2R1bGVDYWNoZSwgcm9vdCwgZmlsZXMsIGZldGNoLCBtb2NrTWFwLCBiYXNlIH0gPSBvcHRpb25zXG5cbiAgY29uc3QgZXh0ZXJuYWxDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBmYWxzZSB8IHN0cmluZz4oKVxuICBidWlsdGluTW9kdWxlcy5mb3JFYWNoKG0gPT4gZXh0ZXJuYWxDYWNoZS5zZXQobSwgbSkpXG5cbiAgY29uc3Qge1xuICAgIGdldEFjdHVhbFBhdGgsXG4gICAgZ2V0U3VpdGVGaWxlcGF0aCxcbiAgICBtb2NrT2JqZWN0LFxuICAgIG1vY2tQYXRoLFxuICAgIGNsZWFyTW9ja3MsXG4gICAgdW5tb2NrUGF0aCxcbiAgICByZXNvbHZlTW9ja1BhdGgsXG4gICAgcmVzb2x2ZURlcGVuZGVuY3ksXG4gIH0gPSBjcmVhdGVNb2NrZXIocm9vdCwgbW9ja01hcClcblxuICBjb25zdCByZXN1bHQgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpXG4gICAgcmVzdWx0LnB1c2goYXdhaXQgY2FjaGVkUmVxdWVzdChgL0Bmcy8ke3NsYXNoKHJlc29sdmUoZmlsZSkpfWAsIFtdKSlcbiAgcmV0dXJuIHJlc3VsdFxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxGdW5jdGlvbk1vY2soZGVwOiBzdHJpbmcsIG1vY2s6ICgpID0+IGFueSkge1xuICAgIGNvbnN0IG5hbWUgPSBgJHtkZXB9X19tb2NrYFxuICAgIGNvbnN0IGNhY2hlZCA9IG1vZHVsZUNhY2hlLmdldChuYW1lKT8uZXhwb3J0c1xuICAgIGlmIChjYWNoZWQpXG4gICAgICByZXR1cm4gY2FjaGVkXG4gICAgY29uc3QgZXhwb3J0cyA9IGF3YWl0IG1vY2soKVxuICAgIHNldENhY2hlKG5hbWUsIHsgZXhwb3J0cyB9KVxuICAgIHJldHVybiBleHBvcnRzXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkaXJlY3RSZXF1ZXN0KGlkOiBzdHJpbmcsIGZzUGF0aDogc3RyaW5nLCBjYWxsc3RhY2s6IHN0cmluZ1tdKSB7XG4gICAgY2FsbHN0YWNrID0gWy4uLmNhbGxzdGFjaywgaWRdXG4gICAgY29uc3Qgc3VpdGUgPSBnZXRTdWl0ZUZpbGVwYXRoKClcbiAgICBjb25zdCByZXF1ZXN0ID0gYXN5bmMoZGVwOiBzdHJpbmcsIGNhbk1vY2sgPSB0cnVlKSA9PiB7XG4gICAgICBpZiAoY2FuTW9jaykge1xuICAgICAgICBjb25zdCBtb2NrcyA9IG1vY2tNYXBbc3VpdGUgfHwgJyddIHx8IHt9XG4gICAgICAgIGNvbnN0IG1vY2sgPSBtb2Nrc1tyZXNvbHZlRGVwZW5kZW5jeShkZXApXVxuICAgICAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbk1vY2soZGVwLCBtb2NrKVxuICAgICAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdzdHJpbmcnKVxuICAgICAgICAgIGRlcCA9IG1vY2tcbiAgICAgIH1cbiAgICAgIGlmIChjYWxsc3RhY2suaW5jbHVkZXMoZGVwKSkge1xuICAgICAgICBjb25zdCBjYWNoZUtleSA9IHRvRmlsZVBhdGgoZGVwLCByb290KVxuICAgICAgICBpZiAoIW1vZHVsZUNhY2hlLmdldChjYWNoZUtleSk/LmV4cG9ydHMpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkXFxuU3RhY2s6XFxuJHtbLi4uY2FsbHN0YWNrLCBkZXBdLnJldmVyc2UoKS5tYXAocCA9PiBgLSAke3B9YCkuam9pbignXFxuJyl9YClcbiAgICAgICAgcmV0dXJuIG1vZHVsZUNhY2hlLmdldChjYWNoZUtleSkhLmV4cG9ydHNcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYWNoZWRSZXF1ZXN0KGRlcCwgY2FsbHN0YWNrKVxuICAgIH1cblxuICAgIGlmIChpZCBpbiBzdHViUmVxdWVzdHMpXG4gICAgICByZXR1cm4gc3R1YlJlcXVlc3RzW2lkXVxuXG4gICAgY29uc3QgdHJhbnNmb3JtZWQgPSBhd2FpdCBmZXRjaChpZClcbiAgICBpZiAodHJhbnNmb3JtZWQgPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGxvYWQgJHtpZH1gKVxuXG4gICAgLy8gZGlzYW1iaWd1YXRlIHRoZSBgPFVOSVQ+Oi9gIG9uIHdpbmRvd3M6IHNlZSBub2RlanMvbm9kZSMzMTcxMFxuICAgIGNvbnN0IHVybCA9IHBhdGhUb0ZpbGVVUkwoZnNQYXRoKS5ocmVmXG4gICAgY29uc3QgZXhwb3J0czogYW55ID0ge31cblxuICAgIHNldENhY2hlKGZzUGF0aCwgeyBjb2RlOiB0cmFuc2Zvcm1lZCwgZXhwb3J0cyB9KVxuXG4gICAgY29uc3QgX19maWxlbmFtZSA9IGZpbGVVUkxUb1BhdGgodXJsKVxuICAgIGNvbnN0IG1vZHVsZVByb3h5ID0ge1xuICAgICAgc2V0IGV4cG9ydHModmFsdWUpIHtcbiAgICAgICAgZXhwb3J0QWxsKGV4cG9ydHMsIHZhbHVlKVxuICAgICAgICBleHBvcnRzLmRlZmF1bHQgPSB2YWx1ZVxuICAgICAgfSxcbiAgICAgIGdldCBleHBvcnRzKCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5kZWZhdWx0XG4gICAgICB9LFxuICAgIH1cblxuICAgIGNvbnN0IGltcG9ydEFjdHVhbCA9IChwYXRoOiBzdHJpbmcsIG5tTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gcmVxdWVzdChnZXRBY3R1YWxQYXRoKHBhdGgsIG5tTmFtZSksIGZhbHNlKVxuICAgIH1cblxuICAgIGNvbnN0IGltcG9ydE1vY2sgPSBhc3luYyhwYXRoOiBzdHJpbmcsIG5tTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXN1aXRlKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW4gaW1wb3J0IG1vY2sgb25seSBpbnNpZGUgb2YgYSBydW5uaW5nIHRlc3QnKVxuXG4gICAgICBjb25zdCBtb2NrID0gKG1vY2tNYXBbc3VpdGVdIHx8IHt9KVtwYXRoXSB8fCByZXNvbHZlTW9ja1BhdGgocGF0aCwgcm9vdCwgbm1OYW1lKVxuICAgICAgaWYgKG1vY2sgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZnNQYXRoID0gZ2V0QWN0dWFsUGF0aChwYXRoLCBubU5hbWUpXG4gICAgICAgIGNvbnN0IGV4cG9ydHMgPSBtb2NrT2JqZWN0KGF3YWl0IHJlcXVlc3QoZnNQYXRoLCBmYWxzZSkpXG4gICAgICAgIHNldENhY2hlKGZzUGF0aCwgeyBleHBvcnRzIH0pXG4gICAgICAgIHJldHVybiBleHBvcnRzXG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb25Nb2NrKHBhdGgsIG1vY2spXG4gICAgICByZXR1cm4gcmVxdWVzdChtb2NrLCB0cnVlKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAvLyBlc20gdHJhbnNmb3JtZWQgYnkgVml0ZVxuICAgICAgX192aXRlX3Nzcl9pbXBvcnRfXzogcmVxdWVzdCxcbiAgICAgIF9fdml0ZV9zc3JfZHluYW1pY19pbXBvcnRfXzogcmVxdWVzdCxcbiAgICAgIF9fdml0ZV9zc3JfZXhwb3J0c19fOiBleHBvcnRzLFxuICAgICAgX192aXRlX3Nzcl9leHBvcnRBbGxfXzogKG9iajogYW55KSA9PiBleHBvcnRBbGwoZXhwb3J0cywgb2JqKSxcbiAgICAgIF9fdml0ZV9zc3JfaW1wb3J0X21ldGFfXzogeyB1cmwgfSxcblxuICAgICAgLy8gdml0ZXN0Lm1vY2sgQVBJXG4gICAgICBfX3ZpdGVzdF9fbW9ja19fOiBtb2NrUGF0aCxcbiAgICAgIF9fdml0ZXN0X191bm1vY2tfXzogdW5tb2NrUGF0aCxcbiAgICAgIF9fdml0ZXN0X19pbXBvcnRBY3R1YWxfXzogaW1wb3J0QWN0dWFsLFxuICAgICAgX192aXRlc3RfX2ltcG9ydE1vY2tfXzogaW1wb3J0TW9jayxcbiAgICAgIC8vIHNwaWVzIGZyb20gJ2plc3QtbW9jaycgYXJlIGRpZmZlcmVudCBpbnNpZGUgc3VpdGVzIGFuZCBleGVjdXRlLFxuICAgICAgLy8gc28gd2VlIG5lZWQgdG8gY2FsbCB0aGlzIHR3aWNlIC0gaW5zaWRlIHN1aXRlIGFuZCBoZXJlXG4gICAgICBfX3ZpdGVzdF9fY2xlYXJNb2Nrc19fOiBjbGVhck1vY2tzLFxuXG4gICAgICAvLyBjanMgY29tcGFjdFxuICAgICAgcmVxdWlyZTogY3JlYXRlUmVxdWlyZSh1cmwpLFxuICAgICAgZXhwb3J0cyxcbiAgICAgIG1vZHVsZTogbW9kdWxlUHJveHksXG4gICAgICBfX2ZpbGVuYW1lLFxuICAgICAgX19kaXJuYW1lOiBkaXJuYW1lKF9fZmlsZW5hbWUpLFxuICAgIH1cblxuICAgIGNvbnN0IGZuID0gdm0ucnVuSW5UaGlzQ29udGV4dChgYXN5bmMgKCR7T2JqZWN0LmtleXMoY29udGV4dCkuam9pbignLCcpfSk9Pnt7JHt0cmFuc2Zvcm1lZH1cXG59fWAsIHtcbiAgICAgIGZpbGVuYW1lOiBmc1BhdGgsXG4gICAgICBsaW5lT2Zmc2V0OiAwLFxuICAgIH0pXG4gICAgYXdhaXQgZm4oLi4uT2JqZWN0LnZhbHVlcyhjb250ZXh0KSlcblxuICAgIGNvbnN0IG1vY2tzID0gc3VpdGUgPyBtb2NrTWFwW3N1aXRlXSA6IG51bGxcbiAgICBpZiAobW9ja3MpIHtcbiAgICAgIGlmIChtb2Nrc1tpZF0gPT09IG51bGwpXG4gICAgICAgIGV4cG9ydEFsbChleHBvcnRzLCBtb2NrT2JqZWN0KGV4cG9ydHMpKVxuICAgIH1cblxuICAgIHJldHVybiBleHBvcnRzXG4gIH1cblxuICBmdW5jdGlvbiBzZXRDYWNoZShpZDogc3RyaW5nLCBtb2Q6IFBhcnRpYWw8TW9kdWxlQ2FjaGU+KSB7XG4gICAgaWYgKCFtb2R1bGVDYWNoZS5oYXMoaWQpKVxuICAgICAgbW9kdWxlQ2FjaGUuc2V0KGlkLCBtb2QpXG4gICAgZWxzZVxuICAgICAgT2JqZWN0LmFzc2lnbihtb2R1bGVDYWNoZS5nZXQoaWQpLCBtb2QpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBjYWNoZWRSZXF1ZXN0KHJhd0lkOiBzdHJpbmcsIGNhbGxzdGFjazogc3RyaW5nW10pIHtcbiAgICBjb25zdCBpZCA9IG5vcm1hbGl6ZUlkKHJhd0lkLCBiYXNlKVxuXG4gICAgaWYgKGV4dGVybmFsQ2FjaGUuZ2V0KGlkKSlcbiAgICAgIHJldHVybiBpbnRlcnByZXRlZEltcG9ydChwYXRjaFdpbmRvd3NJbXBvcnRQYXRoKGlkKSwgb3B0aW9ucy5pbnRlcnByZXREZWZhdWx0KVxuXG4gICAgY29uc3QgZnNQYXRoID0gdG9GaWxlUGF0aChpZCwgcm9vdClcbiAgICBjb25zdCBpbXBvcnRQYXRoID0gcGF0Y2hXaW5kb3dzSW1wb3J0UGF0aChmc1BhdGgpXG5cbiAgICBpZiAoIWV4dGVybmFsQ2FjaGUuaGFzKGltcG9ydFBhdGgpKVxuICAgICAgZXh0ZXJuYWxDYWNoZS5zZXQoaW1wb3J0UGF0aCwgYXdhaXQgc2hvdWxkRXh0ZXJuYWxpemUoaW1wb3J0UGF0aCwgb3B0aW9ucykpXG5cbiAgICBjb25zdCBleHRlcm5hbElkID0gZXh0ZXJuYWxDYWNoZS5nZXQoaW1wb3J0UGF0aClcbiAgICBpZiAoZXh0ZXJuYWxJZClcbiAgICAgIHJldHVybiBpbnRlcnByZXRlZEltcG9ydChleHRlcm5hbElkLCBvcHRpb25zLmludGVycHJldERlZmF1bHQpXG5cbiAgICBpZiAobW9kdWxlQ2FjaGUuZ2V0KGZzUGF0aCk/LnByb21pc2UpXG4gICAgICByZXR1cm4gbW9kdWxlQ2FjaGUuZ2V0KGZzUGF0aCk/LnByb21pc2VcbiAgICBjb25zdCBwcm9taXNlID0gZGlyZWN0UmVxdWVzdChpZCwgZnNQYXRoLCBjYWxsc3RhY2spXG4gICAgc2V0Q2FjaGUoZnNQYXRoLCB7IHByb21pc2UgfSlcbiAgICByZXR1cm4gYXdhaXQgcHJvbWlzZVxuICB9XG5cbiAgZnVuY3Rpb24gZXhwb3J0QWxsKGV4cG9ydHM6IGFueSwgc291cmNlTW9kdWxlOiBhbnkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2VNb2R1bGUpIHtcbiAgICAgIGlmIChrZXkgIT09ICdkZWZhdWx0Jykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBnZXQoKSB7IHJldHVybiBzb3VyY2VNb2R1bGVba2V5XSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9lcnIpIHsgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSWQoaWQ6IHN0cmluZywgYmFzZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChiYXNlICYmIGlkLnN0YXJ0c1dpdGgoYmFzZSkpXG4gICAgaWQgPSBgLyR7aWQuc2xpY2UoYmFzZS5sZW5ndGgpfWBcblxuICByZXR1cm4gaWRcbiAgICAucmVwbGFjZSgvXlxcL0BpZFxcL19feDAwX18vLCAnXFwwJykgLy8gdmlydHVhbCBtb2R1bGVzIHN0YXJ0IHdpdGggYFxcMGBcbiAgICAucmVwbGFjZSgvXlxcL0BpZFxcLy8sICcnKVxuICAgIC5yZXBsYWNlKC9eX192aXRlLWJyb3dzZXItZXh0ZXJuYWw6LywgJycpXG4gICAgLnJlcGxhY2UoL15ub2RlOi8sICcnKVxuICAgIC5yZXBsYWNlKC9bPyZddj1cXHcrLywgJz8nKSAvLyByZW1vdmUgP3Y9IHF1ZXJ5XG4gICAgLnJlcGxhY2UoL1xcPyQvLCAnJykgLy8gcmVtb3ZlIGVuZCBxdWVyeSBtYXJrXG59XG5cbmZ1bmN0aW9uIHBhdGNoV2luZG93c0ltcG9ydFBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGlmIChwYXRoLm1hdGNoKC9eXFx3OlxcXFwvKSlcbiAgICByZXR1cm4gYGZpbGU6Ly8vJHtzbGFzaChwYXRoKX1gXG4gIGVsc2UgaWYgKHBhdGgubWF0Y2goL15cXHc6XFwvLykpXG4gICAgcmV0dXJuIGBmaWxlOi8vLyR7cGF0aH1gXG4gIGVsc2VcbiAgICByZXR1cm4gcGF0aFxufVxuIiwiaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBCaXJwY1JldHVybiB9IGZyb20gJ2JpcnBjJ1xuaW1wb3J0IHsgY3JlYXRlQmlycGMgfSBmcm9tICdiaXJwYydcbmltcG9ydCB0eXBlIHsgTW9kdWxlQ2FjaGUsIFJlc29sdmVkQ29uZmlnLCBUZXN0LCBXb3JrZXJDb250ZXh0LCBXb3JrZXJSUEMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGRpc3REaXIgfSBmcm9tICcuLi9jb25zdGFudHMnXG5pbXBvcnQgeyBleGVjdXRlSW5WaXRlTm9kZSB9IGZyb20gJy4uL25vZGUvZXhlY3V0ZSdcbmltcG9ydCB7IHJwYyB9IGZyb20gJy4vcnBjJ1xuXG5sZXQgX3ZpdGVOb2RlOiB7XG4gIHJ1bjogKGZpbGVzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykgPT4gUHJvbWlzZTx2b2lkPlxuICBjb2xsZWN0OiAoZmlsZXM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5jb25zdCBtb2R1bGVDYWNoZTogTWFwPHN0cmluZywgTW9kdWxlQ2FjaGU+ID0gbmV3IE1hcCgpXG5jb25zdCBtb2NrTWFwID0ge31cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRWaXRlTm9kZShjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaWYgKF92aXRlTm9kZSlcbiAgICByZXR1cm4gX3ZpdGVOb2RlXG5cbiAgY29uc3QgcHJvY2Vzc0V4aXQgPSBwcm9jZXNzLmV4aXRcblxuICBwcm9jZXNzLm9uKCdiZWZvcmVFeGl0JywgKGNvZGUpID0+IHtcbiAgICBycGMoKS5vbldvcmtlckV4aXQoY29kZSlcbiAgfSlcblxuICBwcm9jZXNzLmV4aXQgPSAoY29kZSA9IHByb2Nlc3MuZXhpdENvZGUgfHwgMCk6IG5ldmVyID0+IHtcbiAgICBycGMoKS5vbldvcmtlckV4aXQoY29kZSlcbiAgICByZXR1cm4gcHJvY2Vzc0V4aXQoY29kZSlcbiAgfVxuXG4gIGNvbnN0IHsgY29uZmlnIH0gPSBjdHhcblxuICBjb25zdCB7IHJ1biwgY29sbGVjdCB9ID0gKGF3YWl0IGV4ZWN1dGVJblZpdGVOb2RlKHtcbiAgICBmaWxlczogW1xuICAgICAgcmVzb2x2ZShkaXN0RGlyLCAnZW50cnkuanMnKSxcbiAgICBdLFxuICAgIGZldGNoKGlkKSB7XG4gICAgICByZXR1cm4gcnBjKCkuZmV0Y2goaWQpXG4gICAgfSxcbiAgICBtb2R1bGVDYWNoZSxcbiAgICBtb2NrTWFwLFxuICAgIHJvb3Q6IGNvbmZpZy5yb290LFxuICAgIGRlcHNJbmxpbmU6IGNvbmZpZy5kZXBzSW5saW5lLFxuICAgIGRlcHNFeHRlcm5hbDogY29uZmlnLmRlcHNFeHRlcm5hbCxcbiAgICBmYWxsYmFja0NKUzogY29uZmlnLmZhbGxiYWNrQ0pTLFxuICAgIGludGVycHJldERlZmF1bHQ6IGNvbmZpZy5pbnRlcnByZXREZWZhdWx0LFxuICAgIGJhc2U6IGNvbmZpZy5iYXNlLFxuICB9KSlbMF1cblxuICBfdml0ZU5vZGUgPSB7IHJ1biwgY29sbGVjdCB9XG5cbiAgcmV0dXJuIF92aXRlTm9kZVxufVxuXG5mdW5jdGlvbiBpbml0KGN0eDogV29ya2VyQ29udGV4dCkge1xuICBpZiAocHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXyAmJiBjdHguY29uZmlnLnRocmVhZHMgJiYgY3R4LmNvbmZpZy5pc29sYXRlKVxuICAgIHRocm93IG5ldyBFcnJvcihgd29ya2VyIGZvciAke2N0eC5maWxlcy5qb2luKCcsJyl9IGFscmVhZHkgaW5pdGlhbGl6ZWQgYnkgJHtwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN0eC5maWxlcy5qb2luKCcsJyl9LiBUaGlzIGlzIHByb2JhYmx5IGFuIGludGVybmFsIGJ1ZyBvZiBWaXRlc3QuYClcblxuICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXFwwJylcblxuICBjb25zdCB7IGNvbmZpZywgcG9ydCB9ID0gY3R4XG5cbiAgcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXyA9IHtcbiAgICBjdHgsXG4gICAgbW9kdWxlQ2FjaGUsXG4gICAgY29uZmlnLFxuICAgIHJwYzogY3JlYXRlQmlycGM8e30sIFdvcmtlclJQQz4oe1xuICAgICAgZnVuY3Rpb25zOiB7fSxcbiAgICAgIGV2ZW50TmFtZXM6IFsnb25Vc2VyTG9nJywgJ29uQ29sbGVjdGVkJywgJ29uV29ya2VyRXhpdCddLFxuICAgICAgcG9zdCh2KSB7IHBvcnQucG9zdE1lc3NhZ2UodikgfSxcbiAgICAgIG9uKGZuKSB7IHBvcnQuYWRkTGlzdGVuZXIoJ21lc3NhZ2UnLCBmbikgfSxcbiAgICB9KSxcbiAgfVxuXG4gIGlmIChjdHguaW52YWxpZGF0ZXMpXG4gICAgY3R4LmludmFsaWRhdGVzLmZvckVhY2goaSA9PiBtb2R1bGVDYWNoZS5kZWxldGUoaSkpXG4gIGN0eC5maWxlcy5mb3JFYWNoKGkgPT4gbW9kdWxlQ2FjaGUuZGVsZXRlKGkpKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGVjdChjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaW5pdChjdHgpXG4gIGNvbnN0IHsgY29sbGVjdCB9ID0gYXdhaXQgc3RhcnRWaXRlTm9kZShjdHgpXG4gIHJldHVybiBjb2xsZWN0KGN0eC5maWxlcywgY3R4LmNvbmZpZylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bihjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaW5pdChjdHgpXG4gIGNvbnN0IHsgcnVuIH0gPSBhd2FpdCBzdGFydFZpdGVOb2RlKGN0eClcbiAgcmV0dXJuIHJ1bihjdHguZmlsZXMsIGN0eC5jb25maWcpXG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgaW50ZXJmYWNlIFByb2Nlc3Mge1xuICAgICAgX192aXRlc3Rfd29ya2VyX186IHtcbiAgICAgICAgY3R4OiBXb3JrZXJDb250ZXh0XG4gICAgICAgIGNvbmZpZzogUmVzb2x2ZWRDb25maWdcbiAgICAgICAgcnBjOiBCaXJwY1JldHVybjxXb3JrZXJSUEM+XG4gICAgICAgIGN1cnJlbnQ/OiBUZXN0XG4gICAgICAgIGZpbGVwYXRoPzogc3RyaW5nXG4gICAgICAgIG1vZHVsZUNhY2hlOiBNYXA8c3RyaW5nLCBNb2R1bGVDYWNoZT5cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ3RDLElBQUksbUJBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO0FBQ3ZELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBQ25ELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7QUFDekQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2hLLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztBQUMvQixFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENB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
429
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlcyI6WyIuLi9zcmMvbm9kZS9tb2NrZXIudHMiLCIuLi9zcmMvbm9kZS9leGVjdXRlLnRzIiwiLi4vc3JjL3J1bnRpbWUvd29ya2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRkaXJTeW5jIH0gZnJvbSAnZnMnXG5pbXBvcnQgeyBpc05vZGVCdWlsdGluIH0gZnJvbSAnbWxseSdcbmltcG9ydCB7IGJhc2VuYW1lLCBkaXJuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgeyBzcGllcywgc3B5T24gfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvamVzdC1tb2NrJ1xuaW1wb3J0IHsgbWVyZ2VTbGFzaGVzIH0gZnJvbSAnLi4vdXRpbHMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VpdGVNb2NrcyB7XG4gIFtzdWl0ZVBhdGg6IHN0cmluZ106IHtcbiAgICBbb3JpZ2luYWxQYXRoOiBzdHJpbmddOiBzdHJpbmcgfCBudWxsIHwgKCgpID0+IGFueSlcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlTW9ja1BhdGgobW9ja1BhdGg6IHN0cmluZywgcm9vdDogc3RyaW5nLCBleHRlcm5hbDogc3RyaW5nIHwgbnVsbCkge1xuICAvLyBpdCdzIGEgbm9kZV9tb2R1bGUgYWxpYXNcbiAgLy8gYWxsIG1vY2tzIHNob3VsZCBiZSBpbnNpZGUgPHJvb3Q+L19fbW9ja3NfX1xuICBpZiAoZXh0ZXJuYWwgfHwgaXNOb2RlQnVpbHRpbihtb2NrUGF0aCkpIHtcbiAgICBjb25zdCBtb2NrRGlybmFtZSA9IGRpcm5hbWUoZXh0ZXJuYWwgfHwgbW9ja1BhdGgpIC8vIGZvciBuZXN0ZWQgbW9ja3M6IEB2dWV1c2UvaW50ZWdyYXRpb24vdXNlSnd0XG4gICAgY29uc3QgYmFzZUZpbGVuYW1lID0gYmFzZW5hbWUoZXh0ZXJuYWwgfHwgbW9ja1BhdGgpXG4gICAgY29uc3QgbW9ja0ZvbGRlciA9IHJlc29sdmUocm9vdCwgJ19fbW9ja3NfXycsIG1vY2tEaXJuYW1lKVxuXG4gICAgaWYgKCFleGlzdHNTeW5jKG1vY2tGb2xkZXIpKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgZmlsZXMgPSByZWFkZGlyU3luYyhtb2NrRm9sZGVyKVxuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBbYmFzZW5hbWVdID0gZmlsZS5zcGxpdCgnLicpXG4gICAgICBpZiAoYmFzZW5hbWUgPT09IGJhc2VGaWxlbmFtZSlcbiAgICAgICAgcmV0dXJuIHJlc29sdmUobW9ja0ZvbGRlciwgZmlsZSkucmVwbGFjZShyb290LCAnJylcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgZGlyID0gZGlybmFtZShtb2NrUGF0aClcbiAgY29uc3QgYmFzZUlkID0gYmFzZW5hbWUobW9ja1BhdGgpXG4gIGNvbnN0IGZ1bGxQYXRoID0gcmVzb2x2ZShkaXIsICdfX21vY2tzX18nLCBiYXNlSWQpXG4gIHJldHVybiBleGlzdHNTeW5jKGZ1bGxQYXRoKSA/IGZ1bGxQYXRoLnJlcGxhY2Uocm9vdCwgJycpIDogbnVsbFxufVxuXG5mdW5jdGlvbiBnZXRPYmplY3RUeXBlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpLnNsaWNlKDgsIC0xKVxufVxuXG5mdW5jdGlvbiBtb2NrUHJvdG90eXBlKHByb3RvOiBhbnkpIHtcbiAgaWYgKCFwcm90bykgcmV0dXJuIG51bGxcblxuICBjb25zdCBuZXdQcm90bzogYW55ID0ge31cblxuICBjb25zdCBwcm90b0Rlc2NyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocHJvdG8pXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gIGZvciAoY29uc3QgZCBpbiBwcm90b0Rlc2NyKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld1Byb3RvLCBkLCBwcm90b0Rlc2NyW2RdKVxuXG4gICAgaWYgKHR5cGVvZiBwcm90b0Rlc2NyW2RdLnZhbHVlID09PSAnZnVuY3Rpb24nKVxuICAgICAgc3B5T24obmV3UHJvdG8sIGQpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSlcbiAgfVxuXG4gIHJldHVybiBuZXdQcm90b1xufVxuXG5mdW5jdGlvbiBtb2NrT2JqZWN0KG9iajogYW55KSB7XG4gIGNvbnN0IHR5cGUgPSBnZXRPYmplY3RUeXBlKG9iailcblxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKVxuICAgIHJldHVybiBbXVxuICBlbHNlIGlmICh0eXBlICE9PSAnT2JqZWN0JyAmJiB0eXBlICE9PSAnTW9kdWxlJylcbiAgICByZXR1cm4gb2JqXG5cbiAgY29uc3QgbmV3T2JqID0geyAuLi5vYmogfVxuXG4gIGNvbnN0IHByb3RvID0gbW9ja1Byb3RvdHlwZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSlcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG5ld09iaiwgcHJvdG8pXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gIGZvciAoY29uc3QgayBpbiBvYmopIHtcbiAgICBuZXdPYmpba10gPSBtb2NrT2JqZWN0KG9ialtrXSlcbiAgICBjb25zdCB0eXBlID0gZ2V0T2JqZWN0VHlwZShvYmpba10pXG5cbiAgICBpZiAodHlwZS5pbmNsdWRlcygnRnVuY3Rpb24nKSAmJiAhb2JqW2tdLl9faXNTcHkpIHtcbiAgICAgIHNweU9uKG5ld09iaiwgaykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09ialtrXSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDAgfSkgLy8gdGlueXNweSByZXRhaW5zIGxlbmd0aCwgYnV0IGplc3QgZG9lc250XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXdPYmpcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tlcihyb290OiBzdHJpbmcsIG1vY2tNYXA6IFN1aXRlTW9ja3MpIHtcbiAgZnVuY3Rpb24gZ2V0U3VpdGVGaWxlcGF0aCgpIHtcbiAgICByZXR1cm4gcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXz8uZmlsZXBhdGhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEFjdHVhbFBhdGgocGF0aDogc3RyaW5nLCBubU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBubU5hbWUgPyBtZXJnZVNsYXNoZXMoYC9AZnMvJHtwYXRofWApIDogcGF0aC5yZXBsYWNlKHJvb3QsICcnKVxuICB9XG5cbiAgZnVuY3Rpb24gdW5tb2NrUGF0aChwYXRoOiBzdHJpbmcsIG5tTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3VpdGVmaWxlID0gZ2V0U3VpdGVGaWxlcGF0aCgpXG5cbiAgICBpZiAoc3VpdGVmaWxlKSB7XG4gICAgICBjb25zdCBmc1BhdGggPSBnZXRBY3R1YWxQYXRoKHBhdGgsIG5tTmFtZSlcbiAgICAgIG1vY2tNYXBbc3VpdGVmaWxlXSA/Pz0ge31cbiAgICAgIGRlbGV0ZSBtb2NrTWFwW3N1aXRlZmlsZV1bZnNQYXRoXVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1vY2tQYXRoKHBhdGg6IHN0cmluZywgbm1OYW1lOiBzdHJpbmcsIGZhY3Rvcnk/OiAoKSA9PiBhbnkpIHtcbiAgICBjb25zdCBzdWl0ZWZpbGUgPSBnZXRTdWl0ZUZpbGVwYXRoKClcblxuICAgIGlmIChzdWl0ZWZpbGUpIHtcbiAgICAgIGNvbnN0IGZzUGF0aCA9IGdldEFjdHVhbFBhdGgocGF0aCwgbm1OYW1lKVxuICAgICAgbW9ja01hcFtzdWl0ZWZpbGVdID8/PSB7fVxuICAgICAgbW9ja01hcFtzdWl0ZWZpbGVdW2ZzUGF0aF0gPSBmYWN0b3J5IHx8IHJlc29sdmVNb2NrUGF0aChwYXRoLCByb290LCBubU5hbWUpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJNb2Nrcyh7IGNsZWFyTW9ja3MsIG1vY2tSZXNldCwgcmVzdG9yZU1vY2tzIH06IHsgY2xlYXJNb2NrczogYm9vbGVhbjsgbW9ja1Jlc2V0OiBib29sZWFuOyByZXN0b3JlTW9ja3M6IGJvb2xlYW59KSB7XG4gICAgaWYgKCFjbGVhck1vY2tzICYmICFtb2NrUmVzZXQgJiYgIXJlc3RvcmVNb2NrcylcbiAgICAgIHJldHVyblxuXG4gICAgc3BpZXMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgaWYgKHJlc3RvcmVNb2NrcylcbiAgICAgICAgcy5tb2NrUmVzdG9yZSgpXG4gICAgICBlbHNlIGlmIChtb2NrUmVzZXQpXG4gICAgICAgIHMubW9ja1Jlc2V0KClcbiAgICAgIGVsc2UgaWYgKGNsZWFyTW9ja3MpXG4gICAgICAgIHMubW9ja0NsZWFyKClcbiAgICB9KVxuICB9XG5cbiAgLy8gbnBtIHJlc29sdmVzIGFzIC9ub2RlX21vZHVsZXMsIGJ1dCB3ZSBzdG9yZSBhcyAvQGZzLy4uLi9ub2RlX21vZHVsZXNcbiAgZnVuY3Rpb24gcmVzb2x2ZURlcGVuZGVuY3koZGVwOiBzdHJpbmcpIHtcbiAgICBpZiAoZGVwLnN0YXJ0c1dpdGgoJy9ub2RlX21vZHVsZXMvJykpXG4gICAgICByZXR1cm4gbWVyZ2VTbGFzaGVzKGAvQGZzLyR7am9pbihyb290LCBkZXApfWApXG5cbiAgICByZXR1cm4gZGVwXG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vY2tQYXRoLFxuICAgIHVubW9ja1BhdGgsXG4gICAgY2xlYXJNb2NrcyxcbiAgICBnZXRBY3R1YWxQYXRoLFxuXG4gICAgbW9ja09iamVjdCxcbiAgICBnZXRTdWl0ZUZpbGVwYXRoLFxuICAgIHJlc29sdmVNb2NrUGF0aCxcbiAgICByZXNvbHZlRGVwZW5kZW5jeSxcbiAgfVxufVxuIiwiaW1wb3J0IHsgYnVpbHRpbk1vZHVsZXMsIGNyZWF0ZVJlcXVpcmUgfSBmcm9tICdtb2R1bGUnXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoLCBwYXRoVG9GaWxlVVJMIH0gZnJvbSAndXJsJ1xuaW1wb3J0IHZtIGZyb20gJ3ZtJ1xuaW1wb3J0IHsgZGlybmFtZSwgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVDYWNoZSwgUmVzb2x2ZWRDb25maWcgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IHNsYXNoLCB0b0ZpbGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBzaG91bGRFeHRlcm5hbGl6ZSB9IGZyb20gJy4uL3V0aWxzL2V4dGVybmFsaXplJ1xuaW1wb3J0IHR5cGUgeyBTdWl0ZU1vY2tzIH0gZnJvbSAnLi9tb2NrZXInXG5pbXBvcnQgeyBjcmVhdGVNb2NrZXIgfSBmcm9tICcuL21vY2tlcidcblxuZXhwb3J0IHR5cGUgRmV0Y2hGdW5jdGlvbiA9IChpZDogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD5cblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlT3B0aW9ucyBleHRlbmRzIFBpY2s8UmVzb2x2ZWRDb25maWcsICdkZXBzSW5saW5lJyB8ICdkZXBzRXh0ZXJuYWwnIHwgJ2ZhbGxiYWNrQ0pTJyB8ICdiYXNlJz4ge1xuICByb290OiBzdHJpbmdcbiAgZmlsZXM6IHN0cmluZ1tdXG4gIGZldGNoOiBGZXRjaEZ1bmN0aW9uXG4gIGludGVycHJldERlZmF1bHQ6IGJvb2xlYW5cbiAgbW9kdWxlQ2FjaGU6IE1hcDxzdHJpbmcsIE1vZHVsZUNhY2hlPlxuICBtb2NrTWFwOiBTdWl0ZU1vY2tzXG59XG5cbmV4cG9ydCBjb25zdCBzdHViUmVxdWVzdHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICcvQHZpdGUvY2xpZW50Jzoge1xuICAgIGluamVjdFF1ZXJ5OiAoaWQ6IHN0cmluZykgPT4gaWQsXG4gICAgY3JlYXRlSG90Q29udGV4dCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY2VwdDogKCkgPT4ge30sXG4gICAgICAgIHBydW5lOiAoKSA9PiB7fSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHVwZGF0ZVN0eWxlKCkge30sXG4gIH0sXG59XG5cbmZ1bmN0aW9uIGhhc05lc3RlZERlZmF1bHQodGFyZ2V0OiBhbnkpIHtcbiAgcmV0dXJuICdfX2VzTW9kdWxlJyBpbiB0YXJnZXQgJiYgdGFyZ2V0Ll9fZXNNb2R1bGUgJiYgJ2RlZmF1bHQnIGluIHRhcmdldC5kZWZhdWx0XG59XG5cbmZ1bmN0aW9uIHByb3h5TWV0aG9kKG5hbWU6ICdnZXQnIHwgJ3NldCcgfCAnaGFzJyB8ICdkZWxldGVQcm9wZXJ0eScsIGlzTmVzdGVkOiBib29sZWFuKSB7XG4gIHJldHVybiBmdW5jdGlvbih0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcgfCBzeW1ib2wsIC4uLmFyZ3M6IFthbnk/LCBhbnk/XSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3RbbmFtZV0odGFyZ2V0LCBrZXksIC4uLmFyZ3MpXG4gICAgaWYgKChpc05lc3RlZCAmJiBrZXkgPT09ICdkZWZhdWx0JykgfHwgIXJlc3VsdClcbiAgICAgIHJldHVybiBSZWZsZWN0W25hbWVdKHRhcmdldC5kZWZhdWx0LCBrZXksIC4uLmFyZ3MpXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnRlcnByZXRlZEltcG9ydChwYXRoOiBzdHJpbmcsIGludGVycHJldERlZmF1bHQ6IGJvb2xlYW4pIHtcbiAgY29uc3QgbW9kID0gYXdhaXQgaW1wb3J0KHBhdGgpXG5cbiAgaWYgKGludGVycHJldERlZmF1bHQgJiYgJ2RlZmF1bHQnIGluIG1vZCkge1xuICAgIGNvbnN0IGlzTmVzdGVkID0gaGFzTmVzdGVkRGVmYXVsdChtb2QpXG4gICAgcmV0dXJuIG5ldyBQcm94eShtb2QsIHtcbiAgICAgIGdldDogcHJveHlNZXRob2QoJ2dldCcsIGlzTmVzdGVkKSxcbiAgICAgIHNldDogcHJveHlNZXRob2QoJ3NldCcsIGlzTmVzdGVkKSxcbiAgICAgIGhhczogcHJveHlNZXRob2QoJ2hhcycsIGlzTmVzdGVkKSxcbiAgICAgIGRlbGV0ZVByb3BlcnR5OiBwcm94eU1ldGhvZCgnZGVsZXRlUHJvcGVydHknLCBpc05lc3RlZCksXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBtb2Rcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVJblZpdGVOb2RlKG9wdGlvbnM6IEV4ZWN1dGVPcHRpb25zKSB7XG4gIGNvbnN0IHsgbW9kdWxlQ2FjaGUsIHJvb3QsIGZpbGVzLCBmZXRjaCwgbW9ja01hcCwgYmFzZSB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGV4dGVybmFsQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgZmFsc2UgfCBzdHJpbmc+KClcbiAgYnVpbHRpbk1vZHVsZXMuZm9yRWFjaChtID0+IGV4dGVybmFsQ2FjaGUuc2V0KG0sIG0pKVxuXG4gIGNvbnN0IHtcbiAgICBnZXRBY3R1YWxQYXRoLFxuICAgIGdldFN1aXRlRmlsZXBhdGgsXG4gICAgbW9ja09iamVjdCxcbiAgICBtb2NrUGF0aCxcbiAgICBjbGVhck1vY2tzLFxuICAgIHVubW9ja1BhdGgsXG4gICAgcmVzb2x2ZU1vY2tQYXRoLFxuICAgIHJlc29sdmVEZXBlbmRlbmN5LFxuICB9ID0gY3JlYXRlTW9ja2VyKHJvb3QsIG1vY2tNYXApXG5cbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKVxuICAgIHJlc3VsdC5wdXNoKGF3YWl0IGNhY2hlZFJlcXVlc3QoYC9AZnMvJHtzbGFzaChyZXNvbHZlKGZpbGUpKX1gLCBbXSkpXG4gIHJldHVybiByZXN1bHRcblxuICBhc3luYyBmdW5jdGlvbiBjYWxsRnVuY3Rpb25Nb2NrKGRlcDogc3RyaW5nLCBtb2NrOiAoKSA9PiBhbnkpIHtcbiAgICBjb25zdCBuYW1lID0gYCR7ZGVwfV9fbW9ja2BcbiAgICBjb25zdCBjYWNoZWQgPSBtb2R1bGVDYWNoZS5nZXQobmFtZSk/LmV4cG9ydHNcbiAgICBpZiAoY2FjaGVkKVxuICAgICAgcmV0dXJuIGNhY2hlZFxuICAgIGNvbnN0IGV4cG9ydHMgPSBhd2FpdCBtb2NrKClcbiAgICBzZXRDYWNoZShuYW1lLCB7IGV4cG9ydHMgfSlcbiAgICByZXR1cm4gZXhwb3J0c1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGlyZWN0UmVxdWVzdChpZDogc3RyaW5nLCBmc1BhdGg6IHN0cmluZywgY2FsbHN0YWNrOiBzdHJpbmdbXSkge1xuICAgIGNhbGxzdGFjayA9IFsuLi5jYWxsc3RhY2ssIGlkXVxuICAgIGNvbnN0IHN1aXRlID0gZ2V0U3VpdGVGaWxlcGF0aCgpXG4gICAgY29uc3QgcmVxdWVzdCA9IGFzeW5jKGRlcDogc3RyaW5nLCBjYW5Nb2NrID0gdHJ1ZSkgPT4ge1xuICAgICAgaWYgKGNhbk1vY2spIHtcbiAgICAgICAgY29uc3QgbW9ja3MgPSBtb2NrTWFwW3N1aXRlIHx8ICcnXSB8fCB7fVxuICAgICAgICBjb25zdCBtb2NrID0gbW9ja3NbcmVzb2x2ZURlcGVuZGVuY3koZGVwKV1cbiAgICAgICAgaWYgKG1vY2sgPT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBtb2NrZWRLZXkgPSBgJHtkZXB9X19tb2NrYFxuICAgICAgICAgIGNvbnN0IGNhY2hlID0gbW9kdWxlQ2FjaGUuZ2V0KG1vY2tlZEtleSlcbiAgICAgICAgICBpZiAoY2FjaGU/LmV4cG9ydHMpXG4gICAgICAgICAgICByZXR1cm4gY2FjaGUuZXhwb3J0c1xuICAgICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gdG9GaWxlUGF0aChkZXAsIHJvb3QpXG4gICAgICAgICAgY29uc3QgbW9kID0gbW9kdWxlQ2FjaGUuZ2V0KGNhY2hlS2V5KT8uZXhwb3J0cyB8fCBhd2FpdCBjYWNoZWRSZXF1ZXN0KGRlcCwgY2FsbHN0YWNrKVxuICAgICAgICAgIGNvbnN0IGV4cG9ydHMgPSBtb2NrT2JqZWN0KG1vZClcbiAgICAgICAgICBzZXRDYWNoZShtb2NrZWRLZXksIHsgZXhwb3J0cyB9KVxuICAgICAgICAgIHJldHVybiBleHBvcnRzXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtb2NrID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgIHJldHVybiBjYWxsRnVuY3Rpb25Nb2NrKGRlcCwgbW9jaylcbiAgICAgICAgaWYgKHR5cGVvZiBtb2NrID09PSAnc3RyaW5nJylcbiAgICAgICAgICBkZXAgPSBtb2NrXG4gICAgICB9XG4gICAgICBpZiAoY2FsbHN0YWNrLmluY2x1ZGVzKGRlcCkpIHtcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSB0b0ZpbGVQYXRoKGRlcCwgcm9vdClcbiAgICAgICAgaWYgKCFtb2R1bGVDYWNoZS5nZXQoY2FjaGVLZXkpPy5leHBvcnRzKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZFxcblN0YWNrOlxcbiR7Wy4uLmNhbGxzdGFjaywgZGVwXS5yZXZlcnNlKCkubWFwKHAgPT4gYC0gJHtwfWApLmpvaW4oJ1xcbicpfWApXG4gICAgICAgIHJldHVybiBtb2R1bGVDYWNoZS5nZXQoY2FjaGVLZXkpIS5leHBvcnRzXG4gICAgICB9XG4gICAgICByZXR1cm4gY2FjaGVkUmVxdWVzdChkZXAsIGNhbGxzdGFjaylcbiAgICB9XG5cbiAgICBpZiAoaWQgaW4gc3R1YlJlcXVlc3RzKVxuICAgICAgcmV0dXJuIHN0dWJSZXF1ZXN0c1tpZF1cblxuICAgIGNvbnN0IHRyYW5zZm9ybWVkID0gYXdhaXQgZmV0Y2goaWQpXG4gICAgaWYgKHRyYW5zZm9ybWVkID09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGZhaWxlZCB0byBsb2FkICR7aWR9YClcblxuICAgIC8vIGRpc2FtYmlndWF0ZSB0aGUgYDxVTklUPjovYCBvbiB3aW5kb3dzOiBzZWUgbm9kZWpzL25vZGUjMzE3MTBcbiAgICBjb25zdCB1cmwgPSBwYXRoVG9GaWxlVVJMKGZzUGF0aCkuaHJlZlxuICAgIGNvbnN0IGV4cG9ydHM6IGFueSA9IHt9XG5cbiAgICBzZXRDYWNoZShmc1BhdGgsIHsgY29kZTogdHJhbnNmb3JtZWQsIGV4cG9ydHMgfSlcblxuICAgIGNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKHVybClcbiAgICBjb25zdCBtb2R1bGVQcm94eSA9IHtcbiAgICAgIHNldCBleHBvcnRzKHZhbHVlKSB7XG4gICAgICAgIGV4cG9ydEFsbChleHBvcnRzLCB2YWx1ZSlcbiAgICAgICAgZXhwb3J0cy5kZWZhdWx0ID0gdmFsdWVcbiAgICAgIH0sXG4gICAgICBnZXQgZXhwb3J0cygpIHtcbiAgICAgICAgcmV0dXJuIGV4cG9ydHMuZGVmYXVsdFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRBY3R1YWwgPSAocGF0aDogc3RyaW5nLCBubU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHJlcXVlc3QoZ2V0QWN0dWFsUGF0aChwYXRoLCBubU5hbWUpLCBmYWxzZSlcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBpbXBvcnRNb2NrKHBhdGg6IHN0cmluZywgbm1OYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgICAgaWYgKCFzdWl0ZSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgY2FuIGltcG9ydCBtb2NrIG9ubHkgaW5zaWRlIG9mIGEgcnVubmluZyB0ZXN0JylcblxuICAgICAgY29uc3QgbW9jayA9IChtb2NrTWFwW3N1aXRlXSB8fCB7fSlbcGF0aF0gfHwgcmVzb2x2ZU1vY2tQYXRoKHBhdGgsIHJvb3QsIG5tTmFtZSlcbiAgICAgIGlmIChtb2NrID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGZzUGF0aCA9IGdldEFjdHVhbFBhdGgocGF0aCwgbm1OYW1lKVxuICAgICAgICBjb25zdCBtb2QgPSBhd2FpdCByZXF1ZXN0KGZzUGF0aCwgZmFsc2UpXG4gICAgICAgIHJldHVybiBtb2NrT2JqZWN0KG1vZClcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgbW9jayA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbk1vY2socGF0aCwgbW9jaylcbiAgICAgIHJldHVybiByZXF1ZXN0KG1vY2ssIHRydWUpXG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgIC8vIGVzbSB0cmFuc2Zvcm1lZCBieSBWaXRlXG4gICAgICBfX3ZpdGVfc3NyX2ltcG9ydF9fOiByZXF1ZXN0LFxuICAgICAgX192aXRlX3Nzcl9keW5hbWljX2ltcG9ydF9fOiByZXF1ZXN0LFxuICAgICAgX192aXRlX3Nzcl9leHBvcnRzX186IGV4cG9ydHMsXG4gICAgICBfX3ZpdGVfc3NyX2V4cG9ydEFsbF9fOiAob2JqOiBhbnkpID0+IGV4cG9ydEFsbChleHBvcnRzLCBvYmopLFxuICAgICAgX192aXRlX3Nzcl9pbXBvcnRfbWV0YV9fOiB7IHVybCB9LFxuXG4gICAgICAvLyB2aXRlc3QubW9jayBBUElcbiAgICAgIF9fdml0ZXN0X19tb2NrX186IG1vY2tQYXRoLFxuICAgICAgX192aXRlc3RfX3VubW9ja19fOiB1bm1vY2tQYXRoLFxuICAgICAgX192aXRlc3RfX2ltcG9ydEFjdHVhbF9fOiBpbXBvcnRBY3R1YWwsXG4gICAgICBfX3ZpdGVzdF9faW1wb3J0TW9ja19fOiBpbXBvcnRNb2NrLFxuICAgICAgLy8gc3BpZXMgZnJvbSAnamVzdC1tb2NrJyBhcmUgZGlmZmVyZW50IGluc2lkZSBzdWl0ZXMgYW5kIGV4ZWN1dGUsXG4gICAgICAvLyBzbyB3ZWUgbmVlZCB0byBjYWxsIHRoaXMgdHdpY2UgLSBpbnNpZGUgc3VpdGUgYW5kIGhlcmVcbiAgICAgIF9fdml0ZXN0X19jbGVhck1vY2tzX186IGNsZWFyTW9ja3MsXG5cbiAgICAgIC8vIGNqcyBjb21wYWN0XG4gICAgICByZXF1aXJlOiBjcmVhdGVSZXF1aXJlKHVybCksXG4gICAgICBleHBvcnRzLFxuICAgICAgbW9kdWxlOiBtb2R1bGVQcm94eSxcbiAgICAgIF9fZmlsZW5hbWUsXG4gICAgICBfX2Rpcm5hbWU6IGRpcm5hbWUoX19maWxlbmFtZSksXG4gICAgfVxuXG4gICAgY29uc3QgZm4gPSB2bS5ydW5JblRoaXNDb250ZXh0KGBhc3luYyAoJHtPYmplY3Qua2V5cyhjb250ZXh0KS5qb2luKCcsJyl9KT0+e3ske3RyYW5zZm9ybWVkfVxcbn19YCwge1xuICAgICAgZmlsZW5hbWU6IGZzUGF0aCxcbiAgICAgIGxpbmVPZmZzZXQ6IDAsXG4gICAgfSlcbiAgICBhd2FpdCBmbiguLi5PYmplY3QudmFsdWVzKGNvbnRleHQpKVxuXG4gICAgcmV0dXJuIGV4cG9ydHNcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldENhY2hlKGlkOiBzdHJpbmcsIG1vZDogUGFydGlhbDxNb2R1bGVDYWNoZT4pIHtcbiAgICBpZiAoIW1vZHVsZUNhY2hlLmhhcyhpZCkpXG4gICAgICBtb2R1bGVDYWNoZS5zZXQoaWQsIG1vZClcbiAgICBlbHNlXG4gICAgICBPYmplY3QuYXNzaWduKG1vZHVsZUNhY2hlLmdldChpZCksIG1vZClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNhY2hlZFJlcXVlc3QocmF3SWQ6IHN0cmluZywgY2FsbHN0YWNrOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGlkID0gbm9ybWFsaXplSWQocmF3SWQsIGJhc2UpXG5cbiAgICBpZiAoZXh0ZXJuYWxDYWNoZS5nZXQoaWQpKVxuICAgICAgcmV0dXJuIGludGVycHJldGVkSW1wb3J0KHBhdGNoV2luZG93c0ltcG9ydFBhdGgoaWQpLCBvcHRpb25zLmludGVycHJldERlZmF1bHQpXG5cbiAgICBjb25zdCBmc1BhdGggPSB0b0ZpbGVQYXRoKGlkLCByb290KVxuICAgIGNvbnN0IGltcG9ydFBhdGggPSBwYXRjaFdpbmRvd3NJbXBvcnRQYXRoKGZzUGF0aClcblxuICAgIGlmICghZXh0ZXJuYWxDYWNoZS5oYXMoaW1wb3J0UGF0aCkpXG4gICAgICBleHRlcm5hbENhY2hlLnNldChpbXBvcnRQYXRoLCBhd2FpdCBzaG91bGRFeHRlcm5hbGl6ZShpbXBvcnRQYXRoLCBvcHRpb25zKSlcblxuICAgIGNvbnN0IGV4dGVybmFsSWQgPSBleHRlcm5hbENhY2hlLmdldChpbXBvcnRQYXRoKVxuICAgIGlmIChleHRlcm5hbElkKVxuICAgICAgcmV0dXJuIGludGVycHJldGVkSW1wb3J0KGV4dGVybmFsSWQsIG9wdGlvbnMuaW50ZXJwcmV0RGVmYXVsdClcblxuICAgIGlmIChtb2R1bGVDYWNoZS5nZXQoZnNQYXRoKT8ucHJvbWlzZSlcbiAgICAgIHJldHVybiBtb2R1bGVDYWNoZS5nZXQoZnNQYXRoKT8ucHJvbWlzZVxuICAgIGNvbnN0IHByb21pc2UgPSBkaXJlY3RSZXF1ZXN0KGlkLCBmc1BhdGgsIGNhbGxzdGFjaylcbiAgICBzZXRDYWNoZShmc1BhdGgsIHsgcHJvbWlzZSB9KVxuICAgIHJldHVybiBhd2FpdCBwcm9taXNlXG4gIH1cblxuICBmdW5jdGlvbiBleHBvcnRBbGwoZXhwb3J0czogYW55LCBzb3VyY2VNb2R1bGU6IGFueSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZU1vZHVsZSkge1xuICAgICAgaWYgKGtleSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGdldCgpIHsgcmV0dXJuIHNvdXJjZU1vZHVsZVtrZXldIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2VycikgeyB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVJZChpZDogc3RyaW5nLCBiYXNlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGJhc2UgJiYgaWQuc3RhcnRzV2l0aChiYXNlKSlcbiAgICBpZCA9IGAvJHtpZC5zbGljZShiYXNlLmxlbmd0aCl9YFxuXG4gIHJldHVybiBpZFxuICAgIC5yZXBsYWNlKC9eXFwvQGlkXFwvX194MDBfXy8sICdcXDAnKSAvLyB2aXJ0dWFsIG1vZHVsZXMgc3RhcnQgd2l0aCBgXFwwYFxuICAgIC5yZXBsYWNlKC9eXFwvQGlkXFwvLywgJycpXG4gICAgLnJlcGxhY2UoL15fX3ZpdGUtYnJvd3Nlci1leHRlcm5hbDovLCAnJylcbiAgICAucmVwbGFjZSgvXm5vZGU6LywgJycpXG4gICAgLnJlcGxhY2UoL1s/Jl12PVxcdysvLCAnPycpIC8vIHJlbW92ZSA/dj0gcXVlcnlcbiAgICAucmVwbGFjZSgvXFw/JC8sICcnKSAvLyByZW1vdmUgZW5kIHF1ZXJ5IG1hcmtcbn1cblxuZnVuY3Rpb24gcGF0Y2hXaW5kb3dzSW1wb3J0UGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgaWYgKHBhdGgubWF0Y2goL15cXHc6XFxcXC8pKVxuICAgIHJldHVybiBgZmlsZTovLy8ke3NsYXNoKHBhdGgpfWBcbiAgZWxzZSBpZiAocGF0aC5tYXRjaCgvXlxcdzpcXC8vKSlcbiAgICByZXR1cm4gYGZpbGU6Ly8vJHtwYXRofWBcbiAgZWxzZVxuICAgIHJldHVybiBwYXRoXG59XG4iLCJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IEJpcnBjUmV0dXJuIH0gZnJvbSAnYmlycGMnXG5pbXBvcnQgeyBjcmVhdGVCaXJwYyB9IGZyb20gJ2JpcnBjJ1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVDYWNoZSwgUmVzb2x2ZWRDb25maWcsIFRlc3QsIFdvcmtlckNvbnRleHQsIFdvcmtlclJQQyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZGlzdERpciB9IGZyb20gJy4uL2NvbnN0YW50cydcbmltcG9ydCB7IGV4ZWN1dGVJblZpdGVOb2RlIH0gZnJvbSAnLi4vbm9kZS9leGVjdXRlJ1xuaW1wb3J0IHsgcnBjIH0gZnJvbSAnLi9ycGMnXG5cbmxldCBfdml0ZU5vZGU6IHtcbiAgcnVuOiAoZmlsZXM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNvbGxlY3Q6IChmaWxlczogc3RyaW5nW10sIGNvbmZpZzogUmVzb2x2ZWRDb25maWcpID0+IFByb21pc2U8dm9pZD5cbn1cbmNvbnN0IG1vZHVsZUNhY2hlOiBNYXA8c3RyaW5nLCBNb2R1bGVDYWNoZT4gPSBuZXcgTWFwKClcbmNvbnN0IG1vY2tNYXAgPSB7fVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFZpdGVOb2RlKGN0eDogV29ya2VyQ29udGV4dCkge1xuICBpZiAoX3ZpdGVOb2RlKVxuICAgIHJldHVybiBfdml0ZU5vZGVcblxuICBjb25zdCBwcm9jZXNzRXhpdCA9IHByb2Nlc3MuZXhpdFxuXG4gIHByb2Nlc3Mub24oJ2JlZm9yZUV4aXQnLCAoY29kZSkgPT4ge1xuICAgIHJwYygpLm9uV29ya2VyRXhpdChjb2RlKVxuICB9KVxuXG4gIHByb2Nlc3MuZXhpdCA9IChjb2RlID0gcHJvY2Vzcy5leGl0Q29kZSB8fCAwKTogbmV2ZXIgPT4ge1xuICAgIHJwYygpLm9uV29ya2VyRXhpdChjb2RlKVxuICAgIHJldHVybiBwcm9jZXNzRXhpdChjb2RlKVxuICB9XG5cbiAgY29uc3QgeyBjb25maWcgfSA9IGN0eFxuXG4gIGNvbnN0IHsgcnVuLCBjb2xsZWN0IH0gPSAoYXdhaXQgZXhlY3V0ZUluVml0ZU5vZGUoe1xuICAgIGZpbGVzOiBbXG4gICAgICByZXNvbHZlKGRpc3REaXIsICdlbnRyeS5qcycpLFxuICAgIF0sXG4gICAgZmV0Y2goaWQpIHtcbiAgICAgIHJldHVybiBycGMoKS5mZXRjaChpZClcbiAgICB9LFxuICAgIG1vZHVsZUNhY2hlLFxuICAgIG1vY2tNYXAsXG4gICAgcm9vdDogY29uZmlnLnJvb3QsXG4gICAgZGVwc0lubGluZTogY29uZmlnLmRlcHNJbmxpbmUsXG4gICAgZGVwc0V4dGVybmFsOiBjb25maWcuZGVwc0V4dGVybmFsLFxuICAgIGZhbGxiYWNrQ0pTOiBjb25maWcuZmFsbGJhY2tDSlMsXG4gICAgaW50ZXJwcmV0RGVmYXVsdDogY29uZmlnLmludGVycHJldERlZmF1bHQsXG4gICAgYmFzZTogY29uZmlnLmJhc2UsXG4gIH0pKVswXVxuXG4gIF92aXRlTm9kZSA9IHsgcnVuLCBjb2xsZWN0IH1cblxuICByZXR1cm4gX3ZpdGVOb2RlXG59XG5cbmZ1bmN0aW9uIGluaXQoY3R4OiBXb3JrZXJDb250ZXh0KSB7XG4gIGlmIChwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fICYmIGN0eC5jb25maWcudGhyZWFkcyAmJiBjdHguY29uZmlnLmlzb2xhdGUpXG4gICAgdGhyb3cgbmV3IEVycm9yKGB3b3JrZXIgZm9yICR7Y3R4LmZpbGVzLmpvaW4oJywnKX0gYWxyZWFkeSBpbml0aWFsaXplZCBieSAke3Byb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3R4LmZpbGVzLmpvaW4oJywnKX0uIFRoaXMgaXMgcHJvYmFibHkgYW4gaW50ZXJuYWwgYnVnIG9mIFZpdGVzdC5gKVxuXG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXDAnKVxuXG4gIGNvbnN0IHsgY29uZmlnLCBwb3J0IH0gPSBjdHhcblxuICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fID0ge1xuICAgIGN0eCxcbiAgICBtb2R1bGVDYWNoZSxcbiAgICBjb25maWcsXG4gICAgcnBjOiBjcmVhdGVCaXJwYzx7fSwgV29ya2VyUlBDPih7XG4gICAgICBmdW5jdGlvbnM6IHt9LFxuICAgICAgZXZlbnROYW1lczogWydvblVzZXJMb2cnLCAnb25Db2xsZWN0ZWQnLCAnb25Xb3JrZXJFeGl0J10sXG4gICAgICBwb3N0KHYpIHsgcG9ydC5wb3N0TWVzc2FnZSh2KSB9LFxuICAgICAgb24oZm4pIHsgcG9ydC5hZGRMaXN0ZW5lcignbWVzc2FnZScsIGZuKSB9LFxuICAgIH0pLFxuICB9XG5cbiAgaWYgKGN0eC5pbnZhbGlkYXRlcylcbiAgICBjdHguaW52YWxpZGF0ZXMuZm9yRWFjaChpID0+IG1vZHVsZUNhY2hlLmRlbGV0ZShpKSlcbiAgY3R4LmZpbGVzLmZvckVhY2goaSA9PiBtb2R1bGVDYWNoZS5kZWxldGUoaSkpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb2xsZWN0KGN0eDogV29ya2VyQ29udGV4dCkge1xuICBpbml0KGN0eClcbiAgY29uc3QgeyBjb2xsZWN0IH0gPSBhd2FpdCBzdGFydFZpdGVOb2RlKGN0eClcbiAgcmV0dXJuIGNvbGxlY3QoY3R4LmZpbGVzLCBjdHguY29uZmlnKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuKGN0eDogV29ya2VyQ29udGV4dCkge1xuICBpbml0KGN0eClcbiAgY29uc3QgeyBydW4gfSA9IGF3YWl0IHN0YXJ0Vml0ZU5vZGUoY3R4KVxuICByZXR1cm4gcnVuKGN0eC5maWxlcywgY3R4LmNvbmZpZylcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBuYW1lc3BhY2UgTm9kZUpTIHtcbiAgICBpbnRlcmZhY2UgUHJvY2VzcyB7XG4gICAgICBfX3ZpdGVzdF93b3JrZXJfXzoge1xuICAgICAgICBjdHg6IFdvcmtlckNvbnRleHRcbiAgICAgICAgY29uZmlnOiBSZXNvbHZlZENvbmZpZ1xuICAgICAgICBycGM6IEJpcnBjUmV0dXJuPFdvcmtlclJQQz5cbiAgICAgICAgY3VycmVudD86IFRlc3RcbiAgICAgICAgZmlsZXBhdGg/OiBzdHJpbmdcbiAgICAgICAgbW9kdWxlQ2FjaGU6IE1hcDxzdHJpbmcsIE1vZHVsZUNhY2hlPlxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFDdEMsSUFBSSxtQkFBbUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUM7QUFDdkQsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7QUFDbkQsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vitest",
3
- "version": "0.0.132",
3
+ "version": "0.0.136",
4
4
  "description": "A blazing fast unit test framework powered by Vite",
5
5
  "keywords": [
6
6
  "vite",
@@ -63,7 +63,7 @@
63
63
  "@types/natural-compare": "^1.4.1",
64
64
  "@types/node": "^17.0.8",
65
65
  "@types/prompts": "^2.4.0",
66
- "@vitest/ui": "0.0.132",
66
+ "@vitest/ui": "0.0.136",
67
67
  "birpc": "^0.0.2",
68
68
  "c8": "^7.11.0",
69
69
  "cac": "^6.7.12",
@@ -85,7 +85,7 @@
85
85
  "pathe": "^0.2.0",
86
86
  "picocolors": "^1.0.0",
87
87
  "pkg-types": "^0.3.2",
88
- "pretty-format": "^27.4.2",
88
+ "pretty-format": "^27.4.6",
89
89
  "prompts": "^2.4.2",
90
90
  "rollup": "^2.63.0",
91
91
  "source-map-js": "^1.0.1",
@@ -118,7 +118,7 @@
118
118
  },
119
119
  "scripts": {
120
120
  "build": "rimraf dist && rollup -c",
121
- "dev": "rollup -c --watch src"
121
+ "dev": "rollup -c --watch --watch.include=src/**"
122
122
  },
123
123
  "readme": "# vitest\n\n[![NPM version](https://img.shields.io/npm/v/vitest?color=a1b858&label=)](https://www.npmjs.com/package/vitest)\n\nA blazing fast unit test framework powered by Vite.\n\n[GitHub](https://github.com/vitest-dev/vitest) | [Documentation](https://vitest.dev/)\n"
124
124
  }