@studiokloek/vite-config 0.12.18 → 0.12.20
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/index.js +3 -2
- package/dist/utils/hash.d.ts +0 -1
- package/package.json +6 -5
package/dist/index.js
CHANGED
|
@@ -17,6 +17,7 @@ import imageminMozJpeg from 'imagemin-mozjpeg';
|
|
|
17
17
|
import crypto from 'node:crypto';
|
|
18
18
|
import imageminPngQuant from 'imagemin-pngquant';
|
|
19
19
|
import imageminOptiPng from 'imagemin-optipng';
|
|
20
|
+
import { biomePlugin } from '@pbr1111/vite-plugin-biome';
|
|
20
21
|
import checker from 'vite-plugin-checker';
|
|
21
22
|
import fullReload from 'vite-plugin-full-reload';
|
|
22
23
|
import mkcert from 'vite-plugin-mkcert';
|
|
@@ -440,8 +441,8 @@ function servePlugins(settings) {
|
|
|
440
441
|
mkcert(),
|
|
441
442
|
checker({
|
|
442
443
|
typescript: true,
|
|
443
|
-
biome: true,
|
|
444
444
|
}),
|
|
445
|
+
biomePlugin(),
|
|
445
446
|
];
|
|
446
447
|
}
|
|
447
448
|
|
|
@@ -600,4 +601,4 @@ async function kloekBuild(flags) {
|
|
|
600
601
|
}
|
|
601
602
|
|
|
602
603
|
export { kloekBuild, kloekDevelopment };
|
|
603
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy9jd2QudHMiLCIuLi9zcmMvdXRpbHMvanNvbi50cyIsIi4uL3NyYy91dGlscy9idWlsZC50cyIsIi4uL3NyYy91dGlscy9nYW1lLnRzIiwiLi4vc3JjL3V0aWxzL3BrZy50cyIsIi4uL3NyYy91dGlscy96aXAudHMiLCIuLi9zcmMvcGx1Z2lucy9saWIvaGFuZGxlYmFycy1wbHVnaW4udHMiLCIuLi9zcmMvcGx1Z2lucy9saWIvaHRtbC1wbHVnaW4udHMiLCIuLi9zcmMvcGx1Z2lucy9iYXNlLnRzIiwiLi4vc3JjL3V0aWxzL2hhc2gudHMiLCIuLi9zcmMvcGx1Z2lucy9saWIvaW1hZ2UtcGx1Z2luLnRzIiwiLi4vc3JjL3BsdWdpbnMvbGliL21hbmlmZXN0LXBsdWdpbi50cyIsIi4uL3NyYy9wbHVnaW5zL2J1aWxkLnRzIiwiLi4vc3JjL3BsdWdpbnMvc2VydmUudHMiLCIuLi9zcmMvY29uZmlnLnRzIiwiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgeyBub3JtYWxpemVQYXRoIH0gZnJvbSAndml0ZSc7XG5cbmV4cG9ydCBjb25zdCBjd2QgPSBub3JtYWxpemVQYXRoKHByb2Nlc3MuY3dkKCkpO1xuIiwiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkSlNPTihwYXRoOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gcmVhZEZpbGVTeW5jKHBhdGgpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEudG9TdHJpbmcoKSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vXG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBCdWlsZE9wdGlvbnMgfSBmcm9tICd2aXRlJztcbmltcG9ydCB0eXBlIHsgVml0ZU9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lQnVpbGRDb25maWcob3B0aW9uczogVml0ZU9wdGlvbnMpOiBCdWlsZE9wdGlvbnMge1xuICBjb25zdCBpbnB1dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgZ2FtZUlkIG9mIE9iamVjdC5rZXlzKG9wdGlvbnMuc2V0dGluZ3MuZ2FtZXMpKSB7XG4gICAgaW5wdXRbZ2FtZUlkXSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnJvb3QsIGAke2dhbWVJZH0uaHRtbGApO1xuICB9XG5cbiAgLy8gTGlicyBkaWUgYXBhcnRlIGpzIGtyaWpnZW46XG4gIC8vIGNvbnN0IHZlbmRvckNodW5rcyA9IFsncGl4aScsICdmaXJlYmFzZScsICdsb2Rhc2gnLCAnZ3NhcCcsICdzdHVkaW9rbG9layddO1xuXG4gIHJldHVybiB7XG4gICAgcmVwb3J0Q29tcHJlc3NlZFNpemU6IHRydWUsXG4gICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiAyMDAwLFxuICAgIG91dERpcjogJy4uL3B1YmxpYycsXG4gICAgYXNzZXRzRGlyOiAnZ2VuZXJhdGVkJyxcbiAgICBtaW5pZnk6ICd0ZXJzZXInLFxuICAgIHNvdXJjZW1hcDogb3B0aW9ucy5jb25maWcuYnVpbGQuc291cmNlTWFwcyA/PyBmYWxzZSxcbiAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICBpbnB1dCxcbiAgICB9LFxuICB9O1xufVxuIiwiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHsgR2FtZVNldHRpbmdzLCBHYW1lU2V0dGluZ3NQcm9wZXJ0eSwgR2FtZXNTZXR0aW5ncywgR2FtZXNTZXR0aW5nc0RhdGEsIEtsb2VrVml0ZUNvbmZpZywgUGFja2FnZUdhbWVzU2V0dGluZ3MgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5mdW5jdGlvbiBtZXJnZUdhbWVTZXR0aW5ncyhnZW5lcmljOiBHYW1lU2V0dGluZ3MsIGdhbWU6IEdhbWVTZXR0aW5ncywgaW5mb1R5cGVzOiBHYW1lU2V0dGluZ3NQcm9wZXJ0eVtdKTogR2FtZVNldHRpbmdzIHtcbiAgY29uc3Qgc2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgLy8gQWxsZSBwcm9wcyBvcCDDqcOpbiBsZXZlbCBkaWVwIG1lcmdlblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGluZm9UeXBlcykge1xuICAgIHNldHRpbmdzW3Byb3BlcnR5XSA9IHtcbiAgICAgIC4uLmdlbmVyaWNbcHJvcGVydHldLFxuICAgICAgLi4uZ2FtZVtwcm9wZXJ0eV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBzZXR0aW5ncyBhcyB1bmtub3duIGFzIEdhbWVTZXR0aW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFja2FnZUdhbWVzU2V0dGluZ3MocGFja2FnZVNldHRpbmdzOiBQYWNrYWdlR2FtZXNTZXR0aW5ncywgdmVyc2lvbjogc3RyaW5nKTogR2FtZXNTZXR0aW5nc0RhdGEge1xuICAvLyBNZXJnZSBzZXR0aW5nc1xuICBjb25zdCBpbmZvVHlwZXMgPSBPYmplY3Qua2V5cyhwYWNrYWdlU2V0dGluZ3MuZ2VuZXJpYykgYXMgR2FtZVNldHRpbmdzUHJvcGVydHlbXTtcbiAgY29uc3QgeyBnZW5lcmljIH0gPSBwYWNrYWdlU2V0dGluZ3M7XG4gIGNvbnN0IGFsbFNldHRpbmdzOiBHYW1lc1NldHRpbmdzRGF0YSA9IHtcbiAgICBkZXZlbG9wbWVudDogZ2VuZXJpYyxcbiAgICBnYW1lczoge30sXG4gIH07XG5cbiAgZm9yIChjb25zdCBnYW1lIG9mIHBhY2thZ2VTZXR0aW5ncy5nYW1lcyA/PyBbXSkge1xuICAgIGNvbnN0IHNldHRpbmdzID0gbWVyZ2VHYW1lU2V0dGluZ3MoZ2VuZXJpYywgZ2FtZSwgaW5mb1R5cGVzKTtcblxuICAgIC8vIFpvcmcgZXIgdm9vciBkYXQgcGFnZSBhbHRpamQgZ2V6ZXQgaXNcbiAgICBjb25zdCBwYWdlSWQgPSBzZXR0aW5ncy5pbmZvLnBhZ2UgPz8gc2V0dGluZ3MuaW5mby5pZCA/PyAndW5rbm93bic7XG4gICAgc2V0dGluZ3MuaW5mby5wYWdlID0gcGFnZUlkO1xuXG4gICAgLy8gZWlnZW4gdmVyc2llIG51bW1lciBvZiBkZSBnZW5lcmlla2UgdWl0IGRlIHBhY2thZ2VcbiAgICBzZXR0aW5ncy5pbmZvLnZlcnNpb24gPSBzZXR0aW5ncy5pbmZvLnZlcnNpb24gPz8gdmVyc2lvbjtcblxuICAgIC8vIFNsYSBzZXR0aW5ncyBvcCBvbmRlciBwYWdlIGlkXG4gICAgYWxsU2V0dGluZ3MuZ2FtZXNbcGFnZUlkXSA9IHNldHRpbmdzO1xuICB9XG5cbiAgcmV0dXJuIGFsbFNldHRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aFRvR2FtZURhdGEoZnVsbEZpbGVQYXRoOiBzdHJpbmcsIHNldHRpbmdzOiBHYW1lc1NldHRpbmdzKTogR2FtZVNldHRpbmdzIHwgdW5kZWZpbmVkIHtcbiAgLy8gRGV0ZXJtaW5lIGZpbGVuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gIGxldCBmaWxlUGF0aCA9IHBhdGguYmFzZW5hbWUoZnVsbEZpbGVQYXRoLCBwYXRoLmV4dG5hbWUoZnVsbEZpbGVQYXRoKSk7XG5cbiAgLy8gRGV0ZXJtaW5lIGRpciAmIHJlbW92ZSBsZWFkaW5nIHNsYXNoXG4gIGxldCBmaWxlRGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lKGZ1bGxGaWxlUGF0aCk7XG4gIGZpbGVEaXJlY3RvcnkgPSBmaWxlRGlyZWN0b3J5LnJlcGxhY2UoL15cXC8rL2csICcnKTtcblxuICBpZiAoZmlsZURpcmVjdG9yeSkge1xuICAgIGZpbGVQYXRoID0gYCR7ZmlsZURpcmVjdG9yeX0vJHtmaWxlUGF0aH1gO1xuICB9XG5cbiAgcmV0dXJuIHNldHRpbmdzW2ZpbGVQYXRoXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhZ2VUb1NlcnZlKGNvbmZpZzogS2xvZWtWaXRlQ29uZmlnLCBzZXR0aW5nczogR2FtZXNTZXR0aW5ncyk6IHN0cmluZyB7XG4gIC8vIEhvZXZlZWwgcGFnZXMgemlqbiBlcj9cbiAgY29uc3QgcGFnZUlkcyA9IE9iamVjdC5rZXlzKHNldHRpbmdzKTtcbiAgY29uc3QgcGFnZSA9IHBhZ2VJZHMubGVuZ3RoID09PSAxID8gcGFnZUlkc1swXSA6ICdkZXZlbG9wbWVudCc7XG5cbiAgcmV0dXJuIHBhdGgucG9zaXguam9pbihjb25maWcuYnVpbGQuYmFzZVBhdGgsIGAke3BhZ2V9Lmh0bWwke2NvbmZpZy5kZXYuc2VydmVQYXJhbXMgPz8gJyd9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlSWRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCF1cmwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBsZXQgcGF0aG5hbWU6IHN0cmluZztcblxuICB0cnkge1xuICAgIHBhdGhuYW1lID0gbmV3IFVSTCh1cmwsICdodHRwczovL3N0dWRpb2tsb2VrLm5sJykucGF0aG5hbWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIElmIHJlcXVlc3QgaXMgbm90IGh0bWwgLCBkaXJlY3RseSByZXR1cm4gbmV4dCgpXG4gIGlmICghcGF0aG5hbWUuZW5kc1dpdGgoJy5odG1sJykgJiYgcGF0aG5hbWUgIT09ICcvJykge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIFBhZ2luYSBpZCBvcHZyYWdlblxuICBjb25zdCBpbmRleCA9IHBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJyk7XG4gIGNvbnN0IGZpbGVOYW1lID0gaW5kZXggPT09IC0xID8gcGF0aG5hbWUgOiBwYXRobmFtZS5zbGljZShpbmRleCArIDEpO1xuXG4gIHJldHVybiBmaWxlTmFtZS5yZXBsYWNlKCcuaHRtbCcsICcnKTtcbn1cbiIsImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IEtsb2VrVml0ZUNvbmZpZywgUGFja2FnZUNvbmZpZywgUGFja2FnZUdhbWVzU2V0dGluZ3MgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3dkLCByZWFkSlNPTiB9IGZyb20gJy4nO1xuXG5jb25zdCBwYWNrYWdlXyA9IHJlYWRKU09OKHBhdGgucmVzb2x2ZShjd2QsICdwYWNrYWdlLmpzb24nKSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbmNvbnN0IGNvbmZpZzogUGFja2FnZUNvbmZpZyA9IHtcbiAgdml0ZTogcGFja2FnZV8udml0ZSBhcyBLbG9la1ZpdGVDb25maWcsXG4gIGJyb3dzZXJzbGlzdDogcGFja2FnZV8uYnJvd3NlcnNsaXN0IGFzIHN0cmluZyB8IHN0cmluZ1tdLFxuICBzZXR0aW5nczogcGFja2FnZV8uc2V0dGluZ3MgYXMgUGFja2FnZUdhbWVzU2V0dGluZ3MsXG4gIHZlcnNpb246IHBhY2thZ2VfLnZlcnNpb24gYXMgc3RyaW5nLFxuICBuYW1lOiBwYWNrYWdlXy5uYW1lIGFzIHN0cmluZyxcbiAgZGVzY3JpcHRpb246IHBhY2thZ2VfLmRlc2NyaXB0aW9uIGFzIHN0cmluZyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlQ29uZmlnKCk6IFBhY2thZ2VDb25maWcge1xuICByZXR1cm4gY29uZmlnO1xufVxuIiwiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IG1rZGlyLCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IHppcCB9IGZyb20gJ3ppcC1hLWZvbGRlcic7XG5pbXBvcnQgZmlsZW5hbWlmeSBmcm9tICdmaWxlbmFtaWZ5JztcbmltcG9ydCB7IGN3ZCwgZ2V0UGFja2FnZUNvbmZpZyB9IGZyb20gJy4nO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkQnVpbGRGb2xkZXJUb1ppcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGtnID0gZ2V0UGFja2FnZUNvbmZpZygpO1xuICBjb25zdCBzb3VyY2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocGF0aC5yZXNvbHZlKGN3ZCksICdwdWJsaWMnKTtcbiAgY29uc3QgZGVzdGluYXRpb25EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocGF0aC5yZXNvbHZlKGN3ZCksICd6aXBzJyk7XG4gIGNvbnN0IGRlc3RpbmF0aW9uRmlsZSA9IHBhdGguam9pbihkZXN0aW5hdGlvbkRpcmVjdG9yeSwgZmlsZW5hbWlmeShgJHtwa2cubmFtZX0tdiR7cGtnLnZlcnNpb259LnppcGAsIHsgcmVwbGFjZW1lbnQ6ICctJyB9KSk7XG5cbiAgLy8gRG9lcyB0aGUgZm9sZGVyIGV4aXN0P1xuICB0cnkge1xuICAgIGF3YWl0IG1rZGlyKGRlc3RpbmF0aW9uRGlyZWN0b3J5KTtcbiAgfSBjYXRjaCB7fVxuXG4gIC8vIFJlbW92ZSBwcmV2aW91cyB6aXAgZmlsZVxuICB0cnkge1xuICAgIGF3YWl0IHVubGluayhkZXN0aW5hdGlvbkZpbGUpO1xuICB9IGNhdGNoIHt9XG5cbiAgYXdhaXQgemlwKHNvdXJjZURpcmVjdG9yeSwgZGVzdGluYXRpb25GaWxlKTtcbn1cbiIsImltcG9ydCBvcyBmcm9tICdub2RlOm9zJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHZpdGVIYW5kbGViYXJzUGx1Z2luIGZyb20gJ3ZpdGUtcGx1Z2luLWhhbmRsZWJhcnMnO1xuaW1wb3J0IHR5cGUgeyBWaXRlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0UGFnZUlkRnJvbVVybCB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLy8gSGVscGVycyB2b29yIGhhbmRsZWJhcnNcbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGViYXJzUGx1Z2luKHBhcnRpYWxEaXJlY3Rvcnk6IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zOiBWaXRlT3B0aW9ucyk6IFBsdWdpbiB7XG4gIHJldHVybiB2aXRlSGFuZGxlYmFyc1BsdWdpbih7XG4gICAgcGFydGlhbERpcmVjdG9yeSxcblxuICAgIGhlbHBlcnM6IHtcbiAgICAgIGpzb246IChvYmplY3Q6IHVua25vd24sIGluZGVudCA9IDApID0+IEpTT04uc3RyaW5naWZ5KG9iamVjdCwgdW5kZWZpbmVkLCBpbmRlbnQpLFxuICAgICAgY29uY2F0OiAoLi4uYXJndW1lbnRzXzogdW5rbm93bltdKSA9PiBhcmd1bWVudHNfLnNsaWNlKDAsIC0xKS5qb2luKCcnKSxcbiAgICAgIGVxOiAoYTogdW5rbm93biwgYjogdW5rbm93bikgPT4gYSA9PT0gYixcbiAgICAgIG5lcTogKGE6IHVua25vd24sIGI6IHVua25vd24pID0+IGEgIT09IGIsXG4gICAgICBpc2RlZmluZWQ6ICh2YWx1ZTogdW5kZWZpbmVkKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgJ3Jlc29sdmUtcm9vdCcocDogc3RyaW5nKSB7XG4gICAgICAgIC8vIFRpamRlbGlqa2UgaGFjayB2b29yIGJ1ZyBpbiBoYW5kbGViYXJzIHBsdWdpblxuICAgICAgICAvLyB6aWUgb29rIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGV4bGFmcm9zY2lhL3ZpdGUtcGx1Z2luLWhhbmRsZWJhcnMvcHVsbC8xMjlcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMucm9vdCwgcCk7XG4gICAgICAgIHJldHVybiBvcy5wbGF0Zm9ybSgpID09PSAnd2luMzInID8gYC8ke3Jlc29sdmVkUGF0aH1gIDogcmVzb2x2ZWRQYXRoO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgY29udGV4dChwYWdlUGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgICAgY29uc3QgZ2FtZUlkID0gZ2V0UGFnZUlkRnJvbVVybChwYWdlUGF0aCk7XG5cbiAgICAgIGlmICghZ2FtZUlkKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdhbWVJZCA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAvLyBQYWdpbmEgc2V0dGluZ3MgdGVydWdnZXZlblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVudjogb3B0aW9ucy5lbnZpcm9ubWVudCxcbiAgICAgICAgICBkYXRhOiBvcHRpb25zLnNldHRpbmdzLmRldmVsb3BtZW50LFxuICAgICAgICAgIGdhbWVzOiBvcHRpb25zLnNldHRpbmdzLmdhbWVzLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBPcCBiYXNpcyB2YW4gcGFkIGRhdGEgYmVwYWxlblxuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBvcHRpb25zLnNldHRpbmdzLmdhbWVzW2dhbWVJZF07XG5cbiAgICAgIC8vIFBhZ2luYSBzZXR0aW5ncyB0ZXJ1Z2dldmVuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnY6IG9wdGlvbnMuZW52aXJvbm1lbnQsXG4gICAgICAgIGRhdGE6IHNldHRpbmdzID8/IHt9LFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcbn1cbiIsImltcG9ydCB7IGV4aXN0c1N5bmMsIHByb21pc2VzIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBDb25maWdFbnYsIFBsdWdpbiwgVXNlckNvbmZpZywgVml0ZURldlNlcnZlciB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHR5cGUgeyBHYW1lc1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjd2QsIGdldFBhZ2VJZEZyb21VcmwgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmNvbnN0IFBBR0VfVEVNUExBVEUgPSAne3s+IGdhbWUgZGF0YT1kYXRhfX0nO1xuY29uc3QgREVWRUxPUE1FTlRfVEVNUExBVEUgPSAne3s+IGRldmVsb3BtZW50IGRhdGE9ZGF0YX19JztcblxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyVGVtcG9yYXJ5RmlsZShmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIEJlc3RhYXQgZGllIGZpbGUgbm9nIG5pZXQ/XG4gIGlmICghZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAvLyBBYW5tYWtlblxuICAgIGF3YWl0IHByb21pc2VzLndyaXRlRmlsZShmaWxlUGF0aCwgUEFHRV9URU1QTEFURSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh0bWxQbHVnaW4oZ2FtZXM6IEdhbWVzU2V0dGluZ3MpOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlLXBsdWdpbi1rbG9lay1odG1sJyxcbiAgICBlbmZvcmNlOiAncHJlJyxcblxuICAgIGFzeW5jIGNvbmZpZyhfY29uZmlnOiBVc2VyQ29uZmlnLCBlbnZpcm9ubWVudDogQ29uZmlnRW52KSB7XG4gICAgICAvLyBCaWogZWVuIGJ1aWxkIG1ha2VuIHdlIHRpamRlbGlqayBmaWxlcyBhYW5cbiAgICAgIGlmIChlbnZpcm9ubWVudC5jb21tYW5kID09PSAnYnVpbGQnKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFByb21pc2U8dm9pZD4+ID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBwYWdlSWQgb2YgT2JqZWN0LmtleXMoZ2FtZXMpKSB7XG4gICAgICAgICAgLy8gUGFkIG5hYXIgZmlsZVxuICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKGN3ZCwgJ3NvdXJjZScsIGAke3BhZ2VJZH0uaHRtbGApO1xuICAgICAgICAgIGFjdGlvbnMucHVzaChyZW5kZXJUZW1wb3JhcnlGaWxlKGZpbGVQYXRoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3Rpb25zKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY29uZmlndXJlU2VydmVyKHNlcnZlcjogVml0ZURldlNlcnZlcikge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gWm9yZyBlciB2b29yIGRhdCB0aWpkZW5zIGRldmVsb3BtZW50IGRlIHBhZ2luYSBnZS1yZW5kZXJlZCB0ZXJ1ZyBnZWdldmVuIHdvcmR0IHdvcmR0XG4gICAgICAgIHNlcnZlci5taWRkbGV3YXJlcy51c2UoJy8nLCBhc3luYyAocmVxdWVzdCwgcmVzcG9uc2UsIG5leHQpID0+IHtcbiAgICAgICAgICBjb25zdCB1cmwgPSByZXF1ZXN0Py51cmwgPz8gJyc7XG4gICAgICAgICAgY29uc3QgcGFnZUlkID0gZ2V0UGFnZUlkRnJvbVVybCh1cmwpO1xuXG4gICAgICAgICAgaWYgKCFwYWdlSWQpIHtcbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFnZUlkID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAvLyBEZXZlbG9wbWVudD8gZ2VlZiB0ZXJ1Zy4uLlxuICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGF3YWl0IHNlcnZlci50cmFuc2Zvcm1JbmRleEh0bWwodXJsLCBERVZFTE9QTUVOVF9URU1QTEFURSwgcmVxdWVzdC5vcmlnaW5hbFVybCkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMoZ2FtZXMpLmluY2x1ZGVzKHBhZ2VJZCkpIHtcbiAgICAgICAgICAgIC8vIEJlc3RhYW5kZSBnYW1lPyB6b3JnIGVyIHZvb3IgZGF0IGRlIHRlbXBsYXRlIGdlLXJlbmRlcmVkIHdvcmR0XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoYXdhaXQgc2VydmVyLnRyYW5zZm9ybUluZGV4SHRtbCh1cmwsIFBBR0VfVEVNUExBVEUsIHJlcXVlc3Qub3JpZ2luYWxVcmwpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTmlrcyBnZXZvbmRlblxuICAgICAgICAgICAgcmVzcG9uc2UuZW5kKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSxcblxuICAgIGFzeW5jIGNsb3NlQnVuZGxlKCkge1xuICAgICAgLy8gVmVyd2lqZGVyIGRlIGFhbmdlbWFha3RlIGZpbGVzXG4gICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxQcm9taXNlPHZvaWQ+PiA9IFtdO1xuICAgICAgZm9yIChjb25zdCBwYWdlSWQgb2YgT2JqZWN0LmtleXMoZ2FtZXMpKSB7XG4gICAgICAgIC8vIFBhZCBuYWFyIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgYCR7cGFnZUlkfS5odG1sYCk7XG4gICAgICAgIGlmIChleGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhY3Rpb25zLnB1c2gocHJvbWlzZXMucm0oZmlsZVBhdGgpKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGFjdGlvbnMpO1xuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgc3ZlbHRlIH0gZnJvbSAnQHN2ZWx0ZWpzL3ZpdGUtcGx1Z2luLXN2ZWx0ZSc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbiwgUGx1Z2luT3B0aW9uIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHNjb25maWdQYXRoc1BsdWdpbiBmcm9tICd2aXRlLXRzY29uZmlnLXBhdGhzJztcbmltcG9ydCBzdmVsdGVQcmVwcm9jZXNzIGZyb20gJ3N2ZWx0ZS1wcmVwcm9jZXNzJztcbmltcG9ydCB0eXBlIHsgVml0ZU9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGhhbmRsZWJhcnNQbHVnaW4gfSBmcm9tICcuL2xpYi9oYW5kbGViYXJzLXBsdWdpbic7XG5pbXBvcnQgeyBodG1sUGx1Z2luIH0gZnJvbSAnLi9saWIvaHRtbC1wbHVnaW4nO1xuXG5leHBvcnQgZnVuY3Rpb24gYmFzZVBsdWdpbnMob3B0aW9uczogVml0ZU9wdGlvbnMpOiBBcnJheTxQbHVnaW4gfCBQbHVnaW5PcHRpb24+IHtcbiAgcmV0dXJuIFtcbiAgICBodG1sUGx1Z2luKG9wdGlvbnMuc2V0dGluZ3MuZ2FtZXMpLFxuXG4gICAgLi4uc3ZlbHRlKHtcbiAgICAgIHByZXByb2Nlc3M6IHN2ZWx0ZVByZXByb2Nlc3MoKSxcblxuICAgICAgb253YXJuKHdhcm5pbmcsIHdhcm4pIHtcbiAgICAgICAgaWYgKCF3YXJuKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm8gYTExeSB3YXJuaW5ncy4uLlxuICAgICAgICBpZiAod2FybmluZy5jb2RlLnN0YXJ0c1dpdGgoJ2ExMXktJykpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3YXJuKHdhcm5pbmcpO1xuICAgICAgfSxcbiAgICB9KSxcblxuICAgIHRzY29uZmlnUGF0aHNQbHVnaW4oe1xuICAgICAgcm9vdDogcGF0aC5yZXNvbHZlKGN3ZCksXG4gICAgICAvLyBFeHRlbnNpb25zOiBbJy50cycsICcuanNvbiddLFxuICAgICAgbG9vc2U6IHRydWUsXG4gICAgfSksXG5cbiAgICBoYW5kbGViYXJzUGx1Z2luKG9wdGlvbnMuY29uZmlnLnNlcnZlLnBhcnRpYWxzLCBvcHRpb25zKSxcbiAgXTtcbn1cbiIsImltcG9ydCBjcnlwdG8sIHsgdHlwZSBCaW5hcnlMaWtlIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuXG5leHBvcnQgZnVuY3Rpb24gbWQ1KGJ1ZmZlcjogQmluYXJ5TGlrZSk6IHN0cmluZyB7XG4gIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnbWQ1JykudXBkYXRlKGJ1ZmZlcikuZGlnZXN0KCdoZXgnKTtcbn1cbiIsImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ0VudiwgUGx1Z2luIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdml0ZUltYWdlbWluIGZyb20gJ0B2aGVlbXN0cmEvdml0ZS1wbHVnaW4taW1hZ2VtaW4nO1xuaW1wb3J0IGltYWdlbWluTW96SnBlZyBmcm9tICdpbWFnZW1pbi1tb3pqcGVnJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VRdWFsaXR5Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjd2QsIHJlYWRKU09OIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgbWQ1IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGFzaCc7XG5cbi8vIFRoZSBtaW5pZmllcnMgeW91IHdhbnQgdG8gdXNlOlxuaW1wb3J0IGltYWdlbWluUG5nUXVhbnQgZnJvbSAnaW1hZ2VtaW4tcG5ncXVhbnQnO1xuaW1wb3J0IGltYWdlbWluT3B0aVBuZyBmcm9tICdpbWFnZW1pbi1vcHRpcG5nJztcblxuY29uc3QgcGtnID0gcmVhZEpTT04ocGF0aC5yZXNvbHZlKGN3ZCwgJ3BhY2thZ2UuanNvbicpKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlbWluUGx1Z2luKGVudmlyb25tZW50OiBDb25maWdFbnYsIG9wdGlvbnM6IEltYWdlUXVhbGl0eUNvbmZpZyk6IFBsdWdpbiB8IHVuZGVmaW5lZCB7XG4gIGlmIChlbnZpcm9ubWVudC5tb2RlICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gdml0ZUltYWdlbWluKHtcbiAgICBza2lwSWZMYXJnZXI6IHRydWUsXG4gICAgdmVyYm9zZTogdHJ1ZSxcbiAgICBjYWNoZTogdHJ1ZSxcbiAgICBjYWNoZURpcjogcGF0aC5yZXNvbHZlKGN3ZCwgJy5jYWNoZS92aXRlLXBsdWdpbi1pbWFnZW1pbicpLFxuICAgIGNhY2hlS2V5OiBgJHtwa2cubmFtZX0tJHttZDUoSlNPTi5zdHJpbmdpZnkoeyAuLi5vcHRpb25zIH0pKX1gLFxuICAgIHJvb3Q6IHBhdGguam9pbihwYXRoLnJlc29sdmUoY3dkKSwgJ3B1YmxpYycpLFxuICAgIHBsdWdpbnM6IHtcbiAgICAgIGpwZzogW1xuICAgICAgICBpbWFnZW1pbk1vekpwZWcoe1xuICAgICAgICAgIHF1YWxpdHk6IG9wdGlvbnMuanBlZyA/PyA4MCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcG5nOiBbXG4gICAgICAgIGltYWdlbWluUG5nUXVhbnQoe1xuICAgICAgICAgIHN0cmlwOiB0cnVlLFxuICAgICAgICAgIHNwZWVkOiAyLFxuICAgICAgICAgIGRpdGhlcmluZzogMC4yNSxcbiAgICAgICAgICBxdWFsaXR5OiBvcHRpb25zLnBuZyA/PyBbMC41LCAwLjddLFxuICAgICAgICB9KSxcbiAgICAgICAgaW1hZ2VtaW5PcHRpUG5nKCksXG4gICAgICBdLFxuICAgIH0sXG4gIH0pIGFzIFBsdWdpbjtcbn1cbiIsImltcG9ydCB0eXBlIHsgT3V0cHV0QXNzZXQgfSBmcm9tICdyb2xsdXAnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4sIFJlc29sdmVkQ29uZmlnIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHlwZSB7IEdhbWVTZXR0aW5ncywgR2FtZXNTZXR0aW5ncyB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVyZmFjZXMnO1xuXG5mdW5jdGlvbiByZW5kZXJHYW1lTWFuaWZlc3QocGFnZUlkOiBzdHJpbmcsIHNldHRpbmdzOiBHYW1lU2V0dGluZ3MsIGNvbmZpZzogUmVzb2x2ZWRDb25maWcpOiBzdHJpbmcge1xuICBjb25zdCBtYW5pZmVzdCA9IHtcbiAgICBzaG9ydF9uYW1lOiBgJHtzZXR0aW5ncy5tZXRhLmFwcHRpdGxlfWAsXG4gICAgbmFtZTogYCR7c2V0dGluZ3MubWV0YS50aXRsZX1gLFxuICAgIGRlc2NyaXB0aW9uOiBgJHtzZXR0aW5ncy5tZXRhLmRlc2NyaXB0aW9ufWAsXG4gICAgc2NvcGU6IGAke2NvbmZpZy5iYXNlfSR7cGFnZUlkfS5odG1sYCxcbiAgICBzdGFydF91cmw6IGAke2NvbmZpZy5iYXNlfSR7cGFnZUlkfS5odG1sYCxcbiAgICBkaXNwbGF5OiAnZnVsbHNjcmVlbicsXG4gICAgb3JpZW50YXRpb246IGAke3NldHRpbmdzLm9wdGlvbnMub3JpZW50YXRpb24gPz8gJ2xhbmRzY2FwZSd9YCxcbiAgICBpY29uczogW1xuICAgICAge1xuICAgICAgICBzcmM6IGAke2NvbmZpZy5iYXNlfW1ldGEvJHtzZXR0aW5ncy5pbmZvLmlkfS9pY29ucy9jaHJvbWUtdG91Y2gtaWNvbi0xOTJ4MTkyLnBuZ2AsXG4gICAgICAgIHR5cGU6ICdpbWFnZS9wbmcnLFxuICAgICAgICBzaXplczogJzE5MngxOTInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3JjOiBgJHtjb25maWcuYmFzZX1tZXRhLyR7c2V0dGluZ3MuaW5mby5pZH0vaWNvbnMvaWNvbi5wbmdgLFxuICAgICAgICB0eXBlOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgc2l6ZXM6ICcxMDI0eDEwMjQnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGJhY2tncm91bmRfY29sb3I6IGAke3NldHRpbmdzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yfWAsXG4gICAgdGhlbWVfY29sb3I6IGAke3NldHRpbmdzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yfWAsXG4gIH07XG5cbiAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKX1cXG5gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFuaWZlc3RQbHVnaW4oZ2FtZXM6IEdhbWVzU2V0dGluZ3MpOiBQbHVnaW4ge1xuICBsZXQgY29uZmlnOiBSZXNvbHZlZENvbmZpZztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlLXBsdWdpbi1rbG9lay1tYW5pZmVzdCcsXG4gICAgZW5mb3JjZTogJ3Bvc3QnLFxuICAgIGFwcGx5OiAnYnVpbGQnLFxuICAgIGFzeW5jIGNvbmZpZ1Jlc29sdmVkKHJlc29sdmVkQ29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICAgICAgY29uZmlnID0gcmVzb2x2ZWRDb25maWc7XG4gICAgfSxcbiAgICBnZW5lcmF0ZUJ1bmRsZShfLCBidW5kbGUpIHtcbiAgICAgIC8vIFZvb3IgaWVkZXJlIGFwcCBlZW4gbWFuaWZlc3QgbWFrZW46XG4gICAgICBmb3IgKGNvbnN0IFtwYWdlSWQsIHNldHRpbmdzXSBvZiBPYmplY3QuZW50cmllcyhnYW1lcykpIHtcbiAgICAgICAgYnVuZGxlW2Ake3BhZ2VJZH0ud2VibWFuaWZlc3RgXSA9IHtcbiAgICAgICAgICBuZWVkc0NvZGVSZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6ICdhc3NldCcsXG4gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNvdXJjZTogcmVuZGVyR2FtZU1hbmlmZXN0KHBhZ2VJZCwgc2V0dGluZ3MsIGNvbmZpZyksXG4gICAgICAgICAgZmlsZU5hbWU6IGAke3BhZ2VJZH0ud2VibWFuaWZlc3RgLFxuICAgICAgICB9IGFzIE91dHB1dEFzc2V0O1xuXG4gICAgICAgIGJ1bmRsZVtgJHtwYWdlSWR9LXNlcnZpY2V3b3JrZXIuanNgXSA9IHtcbiAgICAgICAgICBuZWVkc0NvZGVSZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6ICdhc3NldCcsXG4gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNvdXJjZTogXCJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgZnVuY3Rpb24oKSB7IHJldHVybjsgfSk7XCIsXG4gICAgICAgICAgZmlsZU5hbWU6IGAke3BhZ2VJZH0tc2VydmljZXdvcmtlci5qc2AsXG4gICAgICAgIH0gYXMgT3V0cHV0QXNzZXQ7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiIsImltcG9ydCBsZWdhY3lQbHVnaW4gZnJvbSAnQHZpdGVqcy9wbHVnaW4tbGVnYWN5JztcbmltcG9ydCB7IHZpc3VhbGl6ZXIgfSBmcm9tICdyb2xsdXAtcGx1Z2luLXZpc3VhbGl6ZXInO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4sIFBsdWdpbk9wdGlvbiB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBiYW5uZXJQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1iYW5uZXInO1xuaW1wb3J0IHsgY3JlYXRlSHRtbFBsdWdpbiB9IGZyb20gJ3ZpdGUtcGx1Z2luLWh0bWwnO1xuaW1wb3J0IHR5cGUgeyBWaXRlT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaW1hZ2VtaW5QbHVnaW4gfSBmcm9tICcuL2xpYi9pbWFnZS1wbHVnaW4nO1xuaW1wb3J0IHsgbWFuaWZlc3RQbHVnaW4gfSBmcm9tICcuL2xpYi9tYW5pZmVzdC1wbHVnaW4nO1xuXG4vLyBCdWlsZCBwbHVnaW5zXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQbHVnaW5zKG9wdGlvbnM6IFZpdGVPcHRpb25zKTogQXJyYXk8UGx1Z2luIHwgUGx1Z2luT3B0aW9uPiB7XG4gIC8vIE5vIGJ1aWxkPyBubyBwbHVnaW5zLi5cbiAgaWYgKG9wdGlvbnMuZW52aXJvbm1lbnQuY29tbWFuZCAhPT0gJ2J1aWxkJykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHBsdWdpbnM6IEFycmF5PFBsdWdpbiB8IFBsdWdpbk9wdGlvbiB8IHVuZGVmaW5lZD4gPSBbXTtcblxuICBpZiAob3B0aW9ucy5jb25maWcuYnVpbGQubGVnYWN5KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBwYWdlIHdvcmtzIGluIG9sZGVyIGJyb3dzZXJzXG4gICAgcGx1Z2lucy5wdXNoKC4uLmxlZ2FjeVBsdWdpbih7IHRhcmdldHM6IChvcHRpb25zLmNvbmZpZy5idWlsZC5icm93c2Vyc2xpc3QgYXMgc3RyaW5nW10pID8/ICdkZWZhdWx0cycgfSkpO1xuICB9XG5cbiAgY29uc3QgcGFnZXMgPSBPYmplY3Qua2V5cyhvcHRpb25zLnNldHRpbmdzLmdhbWVzKS5tYXAoKGdhbWVJZCkgPT4ge1xuICAgIHJldHVybiB7IGZpbGVuYW1lOiBgJHtnYW1lSWR9Lmh0bWxgLCB0ZW1wbGF0ZTogYCR7Z2FtZUlkfS5odG1sYCB9O1xuICB9KTtcblxuICBwbHVnaW5zLnB1c2goXG4gICAgLy8gTWluaWZ5IGltYWdlIGFzc2V0c1xuICAgIGltYWdlbWluUGx1Z2luKG9wdGlvbnMuZW52aXJvbm1lbnQsIG9wdGlvbnMuY29uZmlnLmJ1aWxkLmltYWdlUXVhbGl0eSksXG5cbiAgICAvLyBNYWtlIHRoZSBodG1sIG91dHB1dCBzbWFsbGVyXG4gICAgLi4uKGNyZWF0ZUh0bWxQbHVnaW4oeyBtaW5pZnk6IHRydWUsIHBhZ2VzIH0pIGFzIFBsdWdpbltdKSxcblxuICAgIC8vIEFkZCBhIGJhbm5lciB0byBnZW5lcmF0ZWQganMvY3NzXG4gICAgYmFubmVyUGx1Z2luKHtcbiAgICAgIG91dERpcjogJy4uL3B1YmxpYycsXG4gICAgICBjb250ZW50OiBgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLlxuXG4gICAgICAgICBfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgICAgIF8gICAgICAgICAgICBfXG4gICAgICAgIC8gICkgICAgICAgICAgICAgIHwgIG8gICAgICAgICAvfCAgIC8gfCB8ICAgICAgICAgIHwgfFxuICAgICAgICBcXFxcX18gX3xfICAgICAgICAgX198ICAgICAgX18gICAgIHxfXy8gIHwgfCAgX18gICBfICB8IHxcbiAgICAgICAgICAgXFxcXCB8ICB8ICAgfCAgLyAgfCAgfCAgLyAgXFxcXF8gICB8IFxcXFwgICB8LyAgLyAgXFxcXF98LyAgfC9fKVxuICAgICAgIChfX18vIHxfLyBcXFxcXy98Xy9cXFxcXy98Xy98Xy9cXFxcX18vICAgIHwgIFxcXFxfL3xfXy9cXFxcX18vIHxfXy98IFxcXFxfL1xuXG4gICAgICAgIENvbmNlcHQsIG9udHdlcnAgJiBvbnR3aWtrZWxpbmdcbiAgICAgICAgaHR0cHM6Ly9zdHVkaW9rbG9lay5ubFxuXG4gICAgICAgIFN0dWRpbyBLbG9layDinaQgUGl4aUpTLCBHU0FQICYgaG93bGVyLmpzXG5cbiAgICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuYCxcbiAgICB9KSxcbiAgKTtcblxuICAvLyBDcmVhdGUgYSBtYW5pZmVzdCBhbmQgbWluaW1hbCB3ZWJ3b3JrZXIgZm9yIGV2ZXJ5IGdhbWVcbiAgaWYgKG9wdGlvbnMuY29uZmlnLmJ1aWxkLm1hbmlmZXN0KSB7XG4gICAgcGx1Z2lucy5wdXNoKG1hbmlmZXN0UGx1Z2luKG9wdGlvbnMuc2V0dGluZ3MuZ2FtZXMpKTtcbiAgfVxuXG4gIC8vIERvIHdlIG5lZWQgdG8gYW5hbHlzZSB0aGUgYnVpbGQ/XG4gIGlmIChvcHRpb25zLmNvbmZpZy5idWlsZC5hbmFseXplQnVuZGxlKSB7XG4gICAgcGx1Z2lucy5wdXNoKFxuICAgICAgdmlzdWFsaXplcih7XG4gICAgICAgIHRlbXBsYXRlOiAndHJlZW1hcCcsIC8vIG9yIHN1bmJ1cnN0XG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIGd6aXBTaXplOiB0cnVlLFxuICAgICAgICBmaWxlbmFtZTogJ2J1bmRsZS1hbmFseXNlLmh0bWwnLCAvLyB3aWxsIGJlIHNhdmVkIGluIHByb2plY3QncyByb290XG4gICAgICB9KSBhcyBQbHVnaW5PcHRpb24sXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBwbHVnaW5zLmZpbHRlcigocGx1Z2luKSA9PiBwbHVnaW4gIT09IHVuZGVmaW5lZCk7XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4sIFBsdWdpbk9wdGlvbiB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IGNoZWNrZXIgZnJvbSAndml0ZS1wbHVnaW4tY2hlY2tlcic7XG5pbXBvcnQgZnVsbFJlbG9hZCBmcm9tICd2aXRlLXBsdWdpbi1mdWxsLXJlbG9hZCc7XG5pbXBvcnQgbWtjZXJ0IGZyb20gJ3ZpdGUtcGx1Z2luLW1rY2VydCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIEtsb2VrQ29uZmlnU2VydmVTZXR0aW5ncyA9IHtcbiAgZnVsbFJlbG9hZFN2ZWx0ZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VydmVQbHVnaW5zKHNldHRpbmdzPzogS2xvZWtDb25maWdTZXJ2ZVNldHRpbmdzKTogQXJyYXk8UGx1Z2luIHwgUGx1Z2luT3B0aW9uPiB7XG4gIGNvbnN0IGZ1bGxSZWxvYWRQYXRocyA9IFsnc2NyaXB0LyoqLyoudHMnXTtcbiAgaWYgKHNldHRpbmdzPy5mdWxsUmVsb2FkU3ZlbHRlKSB7XG4gICAgZnVsbFJlbG9hZFBhdGhzLnB1c2goJ3N2ZWx0ZS8qKi8qLnN2ZWx0ZScpO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICBmdWxsUmVsb2FkKGZ1bGxSZWxvYWRQYXRocywge1xuICAgICAgcm9vdDogcGF0aC5qb2luKHBhdGgucmVzb2x2ZShjd2QpLCAnc291cmNlJyksXG4gICAgICBsb2c6IHRydWUsXG4gICAgICBhbHdheXM6IHRydWUsXG4gICAgfSkgYXMgUGx1Z2luLFxuXG4gICAgbWtjZXJ0KCksXG5cbiAgICBjaGVja2VyKHtcbiAgICAgIHR5cGVzY3JpcHQ6IHRydWUsXG4gICAgICBiaW9tZTogdHJ1ZSxcbiAgICB9KSxcbiAgXTtcbn1cbiIsImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHR5cGUgeyBDb25maWdFbnYsIFVzZXJDb25maWcgfSBmcm9tICd2aXRlJztcbmltcG9ydCB7IGJhc2VQbHVnaW5zIH0gZnJvbSAnLi9wbHVnaW5zL2Jhc2UnO1xuaW1wb3J0IHsgYnVpbGRQbHVnaW5zIH0gZnJvbSAnLi9wbHVnaW5zL2J1aWxkJztcbmltcG9ydCB7IHNlcnZlUGx1Z2lucyB9IGZyb20gJy4vcGx1Z2lucy9zZXJ2ZSc7XG5pbXBvcnQgeyBjd2QsIGRlZmluZUJ1aWxkQ29uZmlnLCBnZXRQYWNrYWdlQ29uZmlnLCBnZXRQYWdlVG9TZXJ2ZSwgcGFyc2VQYWNrYWdlR2FtZXNTZXR0aW5ncyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBWaXRlT3B0aW9ucyB9IGZyb20gJy4vdXRpbHMvaW50ZXJmYWNlcyc7XG5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVmaW5lS2xvZWtWaXRlQ29uZmlnKGVudmlyb25tZW50OiBDb25maWdFbnYpOiBQcm9taXNlPFVzZXJDb25maWc+IHtcbiAgY29uc3QgcGFja2FnZV8gPSBnZXRQYWNrYWdlQ29uZmlnKCk7XG5cbiAgY29uc3Qgb3B0aW9uczogVml0ZU9wdGlvbnMgPSB7XG4gICAgcm9vdDogcGF0aC5yZXNvbHZlKGN3ZCwgJ3NvdXJjZScpLFxuICAgIHBhY2thZ2U6IHBhY2thZ2VfLFxuICAgIGVudmlyb25tZW50LFxuICAgIHNldHRpbmdzOiBwYXJzZVBhY2thZ2VHYW1lc1NldHRpbmdzKHBhY2thZ2VfLnNldHRpbmdzLCBwYWNrYWdlXy52ZXJzaW9uKSxcbiAgICBjb25maWc6IHtcbiAgICAgIC4uLnBhY2thZ2VfLnZpdGUsXG4gICAgICBidWlsZDogeyAuLi5wYWNrYWdlXy52aXRlLmJ1aWxkLCBicm93c2Vyc2xpc3Q6IHBhY2thZ2VfLmJyb3dzZXJzbGlzdCB9LFxuICAgICAgc2VydmU6IHtcbiAgICAgICAgcGFydGlhbHM6IFtwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAncGFydGlhbHMnKSwgcGF0aC5yZXNvbHZlKGN3ZCwgJ3NvdXJjZScsICdwYXJ0aWFscycpXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBjb25maWc6IFVzZXJDb25maWcgPSB7XG4gICAgbG9nTGV2ZWw6ICdpbmZvJyxcbiAgICBiYXNlOiBwYWNrYWdlXy52aXRlLmJ1aWxkLmJhc2VQYXRoLFxuICAgIHJvb3Q6IG9wdGlvbnMucm9vdCxcbiAgICBlbnZEaXI6IHBhdGgucmVzb2x2ZShjd2QsICdlbnYnKSxcbiAgICBlbnZQcmVmaXg6IFsnS0xPRUtfJywgJ1ZJVEVfJ10sXG4gICAgcHVibGljRGlyOiAnc3RhdGljJyxcbiAgICBkZWZpbmU6IHt9LFxuXG4gICAgZXNidWlsZDoge1xuICAgICAgbGVnYWxDb21tZW50czogJ25vbmUnLFxuICAgIH0sXG5cbiAgICByZXNvbHZlOiB7XG4gICAgICBhbGlhczoge1xuICAgICAgICAnQG1ldGEnOiBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgJ3N0YXRpYycsICdtZXRhJyksXG4gICAgICAgICdAZm9udHMnOiBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgJ3N0YXRpYycsICdmb250cycpLFxuICAgICAgfSxcbiAgICAgIGRlZHVwZTogW1xuICAgICAgICAnQHN0dWRpb2tsb2VrL3RzLWNvcmUtbGliJyxcbiAgICAgICAgJ0BjYXBhY2l0b3IvYXBwJyxcbiAgICAgICAgJ0BjYXBhY2l0b3IvY29yZScsXG4gICAgICAgICdAY2FwYWNpdG9yL2RldmljZScsXG4gICAgICAgICdAY2FwYWNpdG9yL25ldHdvcmsnLFxuICAgICAgICAnQGNhcGFjaXRvci9wcmVmZXJlbmNlcycsXG4gICAgICAgICdAY2FwYWNpdG9yL3NwbGFzaC1zY3JlZW4nLFxuICAgICAgICAnQGNhcGFjaXRvci9zdGF0dXMtYmFyJyxcbiAgICAgICAgJ2Jvd3NlcicsXG4gICAgICAgICdkYXRlLWZucy10eicsXG4gICAgICAgICdkYXRlLWZucycsXG4gICAgICAgICdlcnJvci1zdGFjay1wYXJzZXItZXMnLFxuICAgICAgICAnZmlyZWJhc2UnLFxuICAgICAgICAnZm9udGZhY2VvYnNlcnZlcicsXG4gICAgICAgICdnc2FwJyxcbiAgICAgICAgJ2hvd2xlcicsXG4gICAgICAgICdsb2Rhc2gtZGVjb3JhdG9ycycsXG4gICAgICAgICdsb2Rhc2gnLFxuICAgICAgICAnb3Zlcm1pbmQnLFxuICAgICAgICAncGl4aS1zcGluZScsXG4gICAgICAgICdwaXhpJyxcbiAgICAgICAgJ3B1YnN1Yi1qcycsXG4gICAgICAgICdyYW5kb20tanMnLFxuICAgICAgICAncmVzcycsXG4gICAgICAgICdzbHVnaWZ5JyxcbiAgICAgICAgJ3N1cGVyYWdlbnQnLFxuICAgICAgICAndHMtZXZlbnRzJyxcbiAgICAgICAgJ3RzLW1peGVyJyxcbiAgICAgICAgJ3RzbGliJyxcbiAgICAgIF0sXG4gICAgfSxcblxuICAgIGNzczoge1xuICAgICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xuICAgICAgICBzY3NzOiB7XG4gICAgICAgICAgY2hhcnNldDogZmFsc2UsXG4gICAgICAgICAgc2lsZW5jZURlcHJlY2F0aW9uczogWydsZWdhY3ktanMtYXBpJ10sXG4gICAgICAgICAgLy8gQWRkaXRpb25hbERhdGE6IGBAY2hhcnNldCBcIlVURi04XCJgLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgcGx1Z2luczogWy4uLmJhc2VQbHVnaW5zKG9wdGlvbnMpXSxcbiAgfTtcblxuICBzd2l0Y2ggKGVudmlyb25tZW50LmNvbW1hbmQpIHtcbiAgICBjYXNlICdzZXJ2ZSc6IHtcbiAgICAgIGNvbmZpZy5zZXJ2ZXIgPSB7XG4gICAgICAgIGhvc3Q6IHRydWUsXG4gICAgICAgIGNvcnM6IG9wdGlvbnMuY29uZmlnLmRldi5jb3JzID8/IHRydWUsXG4gICAgICAgIGh0dHBzOiBvcHRpb25zLmNvbmZpZy5kZXYuaHR0cHMgPz8gdHJ1ZSxcbiAgICAgICAgb3BlbjogZ2V0UGFnZVRvU2VydmUob3B0aW9ucy5jb25maWcsIG9wdGlvbnMuc2V0dGluZ3MuZ2FtZXMpLFxuICAgICAgfTtcbiAgICAgIGNvbmZpZy5wbHVnaW5zID0gW1xuICAgICAgICAuLi4oY29uZmlnLnBsdWdpbnMgPyBjb25maWcucGx1Z2lucyA6IFtdKSxcbiAgICAgICAgLi4uc2VydmVQbHVnaW5zKHtcbiAgICAgICAgICBmdWxsUmVsb2FkU3ZlbHRlOiBwYWNrYWdlXy52aXRlLmRldi5mdWxsUmVsb2FkU3ZlbHRlID8/IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgXTtcblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSAnYnVpbGQnOiB7XG4gICAgICBjb25maWcuYnVpbGQgPSBkZWZpbmVCdWlsZENvbmZpZyhvcHRpb25zKTtcbiAgICAgIGNvbmZpZy5wbHVnaW5zID0gWy4uLihjb25maWcucGx1Z2lucyA/IGNvbmZpZy5wbHVnaW5zIDogW10pLCAuLi5idWlsZFBsdWdpbnMob3B0aW9ucyldO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59XG4iLCJpbXBvcnQgdHlwZSB7IFR5cGVkRmxhZ3MgfSBmcm9tICdtZW93JztcbmltcG9ydCB7IGJ1aWxkLCBjcmVhdGVTZXJ2ZXIsIHR5cGUgTG9nTGV2ZWwgfSBmcm9tICd2aXRlJztcbmltcG9ydCB7IGRlZmluZUtsb2VrVml0ZUNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IGFkZEJ1aWxkRm9sZGVyVG9aaXAsIGdldFBhY2thZ2VDb25maWcgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGtsb2VrRGV2ZWxvcG1lbnQoXG4gIGZsYWdzOiBUeXBlZEZsYWdzPHtcbiAgICBtb2RlOiB7XG4gICAgICB0eXBlOiAnc3RyaW5nJztcbiAgICAgIHNob3J0RmxhZzogc3RyaW5nO1xuICAgICAgZGVmYXVsdD86IHN0cmluZztcbiAgICB9O1xuICB9Pixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjb25maWcgPSBhd2FpdCBkZWZpbmVLbG9la1ZpdGVDb25maWcoe1xuICAgIGNvbW1hbmQ6ICdzZXJ2ZScsXG4gICAgbW9kZTogJ2RldmVsb3BtZW50JyxcbiAgfSk7XG5cbiAgLy8gRGlmZmVyZW50IG1vZGVcbiAgaWYgKHR5cGVvZiBmbGFncy5tb2RlID09PSAnc3RyaW5nJykge1xuICAgIGNvbmZpZy5tb2RlID0gZmxhZ3MubW9kZTtcbiAgfVxuXG4gIGNvbnN0IHNlcnZlciA9IGF3YWl0IGNyZWF0ZVNlcnZlcih7XG4gICAgY29uZmlnRmlsZTogZmFsc2UsXG4gICAgLi4uY29uZmlnLFxuICB9KTtcblxuICBhd2FpdCBzZXJ2ZXIubGlzdGVuKCk7XG4gIHNlcnZlci5wcmludFVybHMoKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGtsb2VrQnVpbGQoXG4gIGZsYWdzOiBUeXBlZEZsYWdzPHtcbiAgICBiYXNlOiB7XG4gICAgICB0eXBlOiAnc3RyaW5nJztcbiAgICAgIHNob3J0RmxhZzogc3RyaW5nO1xuICAgICAgZGVmYXVsdDogc3RyaW5nO1xuICAgIH07XG4gICAgbW9kZToge1xuICAgICAgdHlwZTogJ3N0cmluZyc7XG4gICAgICBzaG9ydEZsYWc6IHN0cmluZztcbiAgICAgIGRlZmF1bHQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBsb2dMZXZlbDoge1xuICAgICAgdHlwZTogJ3N0cmluZyc7XG4gICAgICBzaG9ydEZsYWc6IHN0cmluZztcbiAgICAgIGRlZmF1bHQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBlbXB0eU91dERpcjoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nO1xuICAgICAgc2hvcnRGbGFnOiBzdHJpbmc7XG4gICAgICBkZWZhdWx0OiB0cnVlO1xuICAgIH07XG4gICAgc291cmNlbWFwczoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nO1xuICAgICAgc2hvcnRGbGFnOiBzdHJpbmc7XG4gICAgICBkZWZhdWx0OiBmYWxzZTtcbiAgICB9O1xuICAgIGlubGluZVNvdXJjZW1hcHM6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuJztcbiAgICAgIHNob3J0RmxhZzogc3RyaW5nO1xuICAgICAgZGVmYXVsdDogZmFsc2U7XG4gICAgfTtcbiAgICBjcmVhdGVaaXA6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuJztcbiAgICAgIHNob3J0RmxhZzogc3RyaW5nO1xuICAgICAgZGVmYXVsdDogZmFsc2U7XG4gICAgfTtcbiAgfT4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgZGVmaW5lS2xvZWtWaXRlQ29uZmlnKHtcbiAgICBjb21tYW5kOiAnYnVpbGQnLFxuICAgIG1vZGU6ICdwcm9kdWN0aW9uJyxcbiAgfSk7XG5cbiAgLy8gRW1wdHkgb3V0IHRoZSBPdXRwdXQgZGlyIGJlZm9yZSBidWlsZGluZz9cbiAgaWYgKGZsYWdzLmVtcHR5T3V0RGlyICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25maWcuYnVpbGQgPSB7XG4gICAgICAuLi5jb25maWcuYnVpbGQsXG4gICAgICBlbXB0eU91dERpcjogZmxhZ3MuZW1wdHlPdXREaXIsXG4gICAgfTtcbiAgfVxuXG4gIC8vIENyZWF0ZSBzb3VyY2VtYXBzP1xuICBpZiAoZmxhZ3Muc291cmNlbWFwcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uZmlnLmJ1aWxkID0ge1xuICAgICAgLi4uY29uZmlnLmJ1aWxkLFxuICAgICAgc291cmNlbWFwOiBmbGFncy5zb3VyY2VtYXBzID8gKGZsYWdzLmlubGluZVNvdXJjZW1hcHMgPyAnaW5saW5lJyA6IHRydWUpIDogZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIC8vIERpZmZlcmVudCBiYXNlIHBhdGhcbiAgaWYgKHR5cGVvZiBmbGFncy5iYXNlID09PSAnc3RyaW5nJykge1xuICAgIGNvbmZpZy5iYXNlID0gZmxhZ3MuYmFzZTtcbiAgfVxuXG4gIC8vIERpZmZlcmVudCBtb2RlXG4gIGlmICh0eXBlb2YgZmxhZ3MubW9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcubW9kZSA9IGZsYWdzLm1vZGU7XG4gIH1cblxuICAvLyBEaWZmZXJlbnQgbW9kZVxuICBjb25maWcubG9nTGV2ZWwgPSBmbGFncy5sb2dMZXZlbCBhcyBMb2dMZXZlbCB8IHVuZGVmaW5lZDtcblxuICBhd2FpdCBidWlsZCh7XG4gICAgY29uZmlnRmlsZTogZmFsc2UsXG4gICAgLi4uY29uZmlnLFxuICB9KTtcblxuICAvLyBNYWtlbiB3ZSBlZW4gemlwIGFhbj9cbiAgaWYgKGZsYWdzLmNyZWF0ZVppcCB8fCBnZXRQYWNrYWdlQ29uZmlnKCkudml0ZS5idWlsZC5jcmVhdGVaaXApIHtcbiAgICBhd2FpdCBhZGRCdWlsZEZvbGRlclRvWmlwKCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdPLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7O0FDRHpDLFNBQVUsUUFBUSxDQUFDLElBQVksRUFBQTtJQUNuQyxJQUFJO0FBQ0YsUUFBQSxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDbkMsSUFBQTtJQUFDLE1BQU07O0FBRVAsSUFBQTtBQUVELElBQUEsT0FBTyxLQUFLO0FBQ2Q7O0FDUE0sU0FBVSxpQkFBaUIsQ0FBQyxPQUFvQixFQUFBO0lBQ3BELE1BQU0sS0FBSyxHQUEyQixFQUFFO0FBRXhDLElBQUEsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDeEQsUUFBQSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUEsRUFBRyxNQUFNLENBQUEsS0FBQSxDQUFPLENBQUM7QUFDN0QsSUFBQTs7O0lBS0QsT0FBTztBQUNMLFFBQUEsb0JBQW9CLEVBQUUsSUFBSTtBQUMxQixRQUFBLHFCQUFxQixFQUFF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
|
|
604
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy9jd2QudHMiLCIuLi9zcmMvdXRpbHMvanNvbi50cyIsIi4uL3NyYy91dGlscy9idWlsZC50cyIsIi4uL3NyYy91dGlscy9nYW1lLnRzIiwiLi4vc3JjL3V0aWxzL3BrZy50cyIsIi4uL3NyYy91dGlscy96aXAudHMiLCIuLi9zcmMvcGx1Z2lucy9saWIvaGFuZGxlYmFycy1wbHVnaW4udHMiLCIuLi9zcmMvcGx1Z2lucy9saWIvaHRtbC1wbHVnaW4udHMiLCIuLi9zcmMvcGx1Z2lucy9iYXNlLnRzIiwiLi4vc3JjL3V0aWxzL2hhc2gudHMiLCIuLi9zcmMvcGx1Z2lucy9saWIvaW1hZ2UtcGx1Z2luLnRzIiwiLi4vc3JjL3BsdWdpbnMvbGliL21hbmlmZXN0LXBsdWdpbi50cyIsIi4uL3NyYy9wbHVnaW5zL2J1aWxkLnRzIiwiLi4vc3JjL3BsdWdpbnMvc2VydmUudHMiLCIuLi9zcmMvY29uZmlnLnRzIiwiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgeyBub3JtYWxpemVQYXRoIH0gZnJvbSAndml0ZSc7XG5cbmV4cG9ydCBjb25zdCBjd2QgPSBub3JtYWxpemVQYXRoKHByb2Nlc3MuY3dkKCkpO1xuIiwiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkSlNPTihwYXRoOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gcmVhZEZpbGVTeW5jKHBhdGgpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEudG9TdHJpbmcoKSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vXG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBCdWlsZE9wdGlvbnMgfSBmcm9tICd2aXRlJztcbmltcG9ydCB0eXBlIHsgVml0ZU9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lQnVpbGRDb25maWcob3B0aW9uczogVml0ZU9wdGlvbnMpOiBCdWlsZE9wdGlvbnMge1xuICBjb25zdCBpbnB1dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgZ2FtZUlkIG9mIE9iamVjdC5rZXlzKG9wdGlvbnMuc2V0dGluZ3MuZ2FtZXMpKSB7XG4gICAgaW5wdXRbZ2FtZUlkXSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnJvb3QsIGAke2dhbWVJZH0uaHRtbGApO1xuICB9XG5cbiAgLy8gTGlicyBkaWUgYXBhcnRlIGpzIGtyaWpnZW46XG4gIC8vIGNvbnN0IHZlbmRvckNodW5rcyA9IFsncGl4aScsICdmaXJlYmFzZScsICdsb2Rhc2gnLCAnZ3NhcCcsICdzdHVkaW9rbG9layddO1xuXG4gIHJldHVybiB7XG4gICAgcmVwb3J0Q29tcHJlc3NlZFNpemU6IHRydWUsXG4gICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiAyMDAwLFxuICAgIG91dERpcjogJy4uL3B1YmxpYycsXG4gICAgYXNzZXRzRGlyOiAnZ2VuZXJhdGVkJyxcbiAgICBtaW5pZnk6ICd0ZXJzZXInLFxuICAgIHNvdXJjZW1hcDogb3B0aW9ucy5jb25maWcuYnVpbGQuc291cmNlTWFwcyA/PyBmYWxzZSxcbiAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICBpbnB1dCxcbiAgICB9LFxuICB9O1xufVxuIiwiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHsgR2FtZVNldHRpbmdzLCBHYW1lU2V0dGluZ3NQcm9wZXJ0eSwgR2FtZXNTZXR0aW5ncywgR2FtZXNTZXR0aW5nc0RhdGEsIEtsb2VrVml0ZUNvbmZpZywgUGFja2FnZUdhbWVzU2V0dGluZ3MgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5mdW5jdGlvbiBtZXJnZUdhbWVTZXR0aW5ncyhnZW5lcmljOiBHYW1lU2V0dGluZ3MsIGdhbWU6IEdhbWVTZXR0aW5ncywgaW5mb1R5cGVzOiBHYW1lU2V0dGluZ3NQcm9wZXJ0eVtdKTogR2FtZVNldHRpbmdzIHtcbiAgY29uc3Qgc2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgLy8gQWxsZSBwcm9wcyBvcCDDqcOpbiBsZXZlbCBkaWVwIG1lcmdlblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGluZm9UeXBlcykge1xuICAgIHNldHRpbmdzW3Byb3BlcnR5XSA9IHtcbiAgICAgIC4uLmdlbmVyaWNbcHJvcGVydHldLFxuICAgICAgLi4uZ2FtZVtwcm9wZXJ0eV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBzZXR0aW5ncyBhcyB1bmtub3duIGFzIEdhbWVTZXR0aW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFja2FnZUdhbWVzU2V0dGluZ3MocGFja2FnZVNldHRpbmdzOiBQYWNrYWdlR2FtZXNTZXR0aW5ncywgdmVyc2lvbjogc3RyaW5nKTogR2FtZXNTZXR0aW5nc0RhdGEge1xuICAvLyBNZXJnZSBzZXR0aW5nc1xuICBjb25zdCBpbmZvVHlwZXMgPSBPYmplY3Qua2V5cyhwYWNrYWdlU2V0dGluZ3MuZ2VuZXJpYykgYXMgR2FtZVNldHRpbmdzUHJvcGVydHlbXTtcbiAgY29uc3QgeyBnZW5lcmljIH0gPSBwYWNrYWdlU2V0dGluZ3M7XG4gIGNvbnN0IGFsbFNldHRpbmdzOiBHYW1lc1NldHRpbmdzRGF0YSA9IHtcbiAgICBkZXZlbG9wbWVudDogZ2VuZXJpYyxcbiAgICBnYW1lczoge30sXG4gIH07XG5cbiAgZm9yIChjb25zdCBnYW1lIG9mIHBhY2thZ2VTZXR0aW5ncy5nYW1lcyA/PyBbXSkge1xuICAgIGNvbnN0IHNldHRpbmdzID0gbWVyZ2VHYW1lU2V0dGluZ3MoZ2VuZXJpYywgZ2FtZSwgaW5mb1R5cGVzKTtcblxuICAgIC8vIFpvcmcgZXIgdm9vciBkYXQgcGFnZSBhbHRpamQgZ2V6ZXQgaXNcbiAgICBjb25zdCBwYWdlSWQgPSBzZXR0aW5ncy5pbmZvLnBhZ2UgPz8gc2V0dGluZ3MuaW5mby5pZCA/PyAndW5rbm93bic7XG4gICAgc2V0dGluZ3MuaW5mby5wYWdlID0gcGFnZUlkO1xuXG4gICAgLy8gZWlnZW4gdmVyc2llIG51bW1lciBvZiBkZSBnZW5lcmlla2UgdWl0IGRlIHBhY2thZ2VcbiAgICBzZXR0aW5ncy5pbmZvLnZlcnNpb24gPSBzZXR0aW5ncy5pbmZvLnZlcnNpb24gPz8gdmVyc2lvbjtcblxuICAgIC8vIFNsYSBzZXR0aW5ncyBvcCBvbmRlciBwYWdlIGlkXG4gICAgYWxsU2V0dGluZ3MuZ2FtZXNbcGFnZUlkXSA9IHNldHRpbmdzO1xuICB9XG5cbiAgcmV0dXJuIGFsbFNldHRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aFRvR2FtZURhdGEoZnVsbEZpbGVQYXRoOiBzdHJpbmcsIHNldHRpbmdzOiBHYW1lc1NldHRpbmdzKTogR2FtZVNldHRpbmdzIHwgdW5kZWZpbmVkIHtcbiAgLy8gRGV0ZXJtaW5lIGZpbGVuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gIGxldCBmaWxlUGF0aCA9IHBhdGguYmFzZW5hbWUoZnVsbEZpbGVQYXRoLCBwYXRoLmV4dG5hbWUoZnVsbEZpbGVQYXRoKSk7XG5cbiAgLy8gRGV0ZXJtaW5lIGRpciAmIHJlbW92ZSBsZWFkaW5nIHNsYXNoXG4gIGxldCBmaWxlRGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lKGZ1bGxGaWxlUGF0aCk7XG4gIGZpbGVEaXJlY3RvcnkgPSBmaWxlRGlyZWN0b3J5LnJlcGxhY2UoL15cXC8rL2csICcnKTtcblxuICBpZiAoZmlsZURpcmVjdG9yeSkge1xuICAgIGZpbGVQYXRoID0gYCR7ZmlsZURpcmVjdG9yeX0vJHtmaWxlUGF0aH1gO1xuICB9XG5cbiAgcmV0dXJuIHNldHRpbmdzW2ZpbGVQYXRoXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhZ2VUb1NlcnZlKGNvbmZpZzogS2xvZWtWaXRlQ29uZmlnLCBzZXR0aW5nczogR2FtZXNTZXR0aW5ncyk6IHN0cmluZyB7XG4gIC8vIEhvZXZlZWwgcGFnZXMgemlqbiBlcj9cbiAgY29uc3QgcGFnZUlkcyA9IE9iamVjdC5rZXlzKHNldHRpbmdzKTtcbiAgY29uc3QgcGFnZSA9IHBhZ2VJZHMubGVuZ3RoID09PSAxID8gcGFnZUlkc1swXSA6ICdkZXZlbG9wbWVudCc7XG5cbiAgcmV0dXJuIHBhdGgucG9zaXguam9pbihjb25maWcuYnVpbGQuYmFzZVBhdGgsIGAke3BhZ2V9Lmh0bWwke2NvbmZpZy5kZXYuc2VydmVQYXJhbXMgPz8gJyd9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlSWRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCF1cmwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBsZXQgcGF0aG5hbWU6IHN0cmluZztcblxuICB0cnkge1xuICAgIHBhdGhuYW1lID0gbmV3IFVSTCh1cmwsICdodHRwczovL3N0dWRpb2tsb2VrLm5sJykucGF0aG5hbWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIElmIHJlcXVlc3QgaXMgbm90IGh0bWwgLCBkaXJlY3RseSByZXR1cm4gbmV4dCgpXG4gIGlmICghcGF0aG5hbWUuZW5kc1dpdGgoJy5odG1sJykgJiYgcGF0aG5hbWUgIT09ICcvJykge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIFBhZ2luYSBpZCBvcHZyYWdlblxuICBjb25zdCBpbmRleCA9IHBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJyk7XG4gIGNvbnN0IGZpbGVOYW1lID0gaW5kZXggPT09IC0xID8gcGF0aG5hbWUgOiBwYXRobmFtZS5zbGljZShpbmRleCArIDEpO1xuXG4gIHJldHVybiBmaWxlTmFtZS5yZXBsYWNlKCcuaHRtbCcsICcnKTtcbn1cbiIsImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IEtsb2VrVml0ZUNvbmZpZywgUGFja2FnZUNvbmZpZywgUGFja2FnZUdhbWVzU2V0dGluZ3MgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3dkLCByZWFkSlNPTiB9IGZyb20gJy4nO1xuXG5jb25zdCBwYWNrYWdlXyA9IHJlYWRKU09OKHBhdGgucmVzb2x2ZShjd2QsICdwYWNrYWdlLmpzb24nKSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbmNvbnN0IGNvbmZpZzogUGFja2FnZUNvbmZpZyA9IHtcbiAgdml0ZTogcGFja2FnZV8udml0ZSBhcyBLbG9la1ZpdGVDb25maWcsXG4gIGJyb3dzZXJzbGlzdDogcGFja2FnZV8uYnJvd3NlcnNsaXN0IGFzIHN0cmluZyB8IHN0cmluZ1tdLFxuICBzZXR0aW5nczogcGFja2FnZV8uc2V0dGluZ3MgYXMgUGFja2FnZUdhbWVzU2V0dGluZ3MsXG4gIHZlcnNpb246IHBhY2thZ2VfLnZlcnNpb24gYXMgc3RyaW5nLFxuICBuYW1lOiBwYWNrYWdlXy5uYW1lIGFzIHN0cmluZyxcbiAgZGVzY3JpcHRpb246IHBhY2thZ2VfLmRlc2NyaXB0aW9uIGFzIHN0cmluZyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlQ29uZmlnKCk6IFBhY2thZ2VDb25maWcge1xuICByZXR1cm4gY29uZmlnO1xufVxuIiwiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IG1rZGlyLCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IHppcCB9IGZyb20gJ3ppcC1hLWZvbGRlcic7XG5pbXBvcnQgZmlsZW5hbWlmeSBmcm9tICdmaWxlbmFtaWZ5JztcbmltcG9ydCB7IGN3ZCwgZ2V0UGFja2FnZUNvbmZpZyB9IGZyb20gJy4nO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkQnVpbGRGb2xkZXJUb1ppcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGtnID0gZ2V0UGFja2FnZUNvbmZpZygpO1xuICBjb25zdCBzb3VyY2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocGF0aC5yZXNvbHZlKGN3ZCksICdwdWJsaWMnKTtcbiAgY29uc3QgZGVzdGluYXRpb25EaXJlY3RvcnkgPSBwYXRoLmpvaW4ocGF0aC5yZXNvbHZlKGN3ZCksICd6aXBzJyk7XG4gIGNvbnN0IGRlc3RpbmF0aW9uRmlsZSA9IHBhdGguam9pbihkZXN0aW5hdGlvbkRpcmVjdG9yeSwgZmlsZW5hbWlmeShgJHtwa2cubmFtZX0tdiR7cGtnLnZlcnNpb259LnppcGAsIHsgcmVwbGFjZW1lbnQ6ICctJyB9KSk7XG5cbiAgLy8gRG9lcyB0aGUgZm9sZGVyIGV4aXN0P1xuICB0cnkge1xuICAgIGF3YWl0IG1rZGlyKGRlc3RpbmF0aW9uRGlyZWN0b3J5KTtcbiAgfSBjYXRjaCB7fVxuXG4gIC8vIFJlbW92ZSBwcmV2aW91cyB6aXAgZmlsZVxuICB0cnkge1xuICAgIGF3YWl0IHVubGluayhkZXN0aW5hdGlvbkZpbGUpO1xuICB9IGNhdGNoIHt9XG5cbiAgYXdhaXQgemlwKHNvdXJjZURpcmVjdG9yeSwgZGVzdGluYXRpb25GaWxlKTtcbn1cbiIsImltcG9ydCBvcyBmcm9tICdub2RlOm9zJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHZpdGVIYW5kbGViYXJzUGx1Z2luIGZyb20gJ3ZpdGUtcGx1Z2luLWhhbmRsZWJhcnMnO1xuaW1wb3J0IHR5cGUgeyBWaXRlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0UGFnZUlkRnJvbVVybCB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLy8gSGVscGVycyB2b29yIGhhbmRsZWJhcnNcbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGViYXJzUGx1Z2luKHBhcnRpYWxEaXJlY3Rvcnk6IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zOiBWaXRlT3B0aW9ucyk6IFBsdWdpbiB7XG4gIHJldHVybiB2aXRlSGFuZGxlYmFyc1BsdWdpbih7XG4gICAgcGFydGlhbERpcmVjdG9yeSxcblxuICAgIGhlbHBlcnM6IHtcbiAgICAgIGpzb246IChvYmplY3Q6IHVua25vd24sIGluZGVudCA9IDApID0+IEpTT04uc3RyaW5naWZ5KG9iamVjdCwgdW5kZWZpbmVkLCBpbmRlbnQpLFxuICAgICAgY29uY2F0OiAoLi4uYXJndW1lbnRzXzogdW5rbm93bltdKSA9PiBhcmd1bWVudHNfLnNsaWNlKDAsIC0xKS5qb2luKCcnKSxcbiAgICAgIGVxOiAoYTogdW5rbm93biwgYjogdW5rbm93bikgPT4gYSA9PT0gYixcbiAgICAgIG5lcTogKGE6IHVua25vd24sIGI6IHVua25vd24pID0+IGEgIT09IGIsXG4gICAgICBpc2RlZmluZWQ6ICh2YWx1ZTogdW5kZWZpbmVkKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgJ3Jlc29sdmUtcm9vdCcocDogc3RyaW5nKSB7XG4gICAgICAgIC8vIFRpamRlbGlqa2UgaGFjayB2b29yIGJ1ZyBpbiBoYW5kbGViYXJzIHBsdWdpblxuICAgICAgICAvLyB6aWUgb29rIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGV4bGFmcm9zY2lhL3ZpdGUtcGx1Z2luLWhhbmRsZWJhcnMvcHVsbC8xMjlcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMucm9vdCwgcCk7XG4gICAgICAgIHJldHVybiBvcy5wbGF0Zm9ybSgpID09PSAnd2luMzInID8gYC8ke3Jlc29sdmVkUGF0aH1gIDogcmVzb2x2ZWRQYXRoO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgY29udGV4dChwYWdlUGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgICAgY29uc3QgZ2FtZUlkID0gZ2V0UGFnZUlkRnJvbVVybChwYWdlUGF0aCk7XG5cbiAgICAgIGlmICghZ2FtZUlkKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdhbWVJZCA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAvLyBQYWdpbmEgc2V0dGluZ3MgdGVydWdnZXZlblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVudjogb3B0aW9ucy5lbnZpcm9ubWVudCxcbiAgICAgICAgICBkYXRhOiBvcHRpb25zLnNldHRpbmdzLmRldmVsb3BtZW50LFxuICAgICAgICAgIGdhbWVzOiBvcHRpb25zLnNldHRpbmdzLmdhbWVzLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyBPcCBiYXNpcyB2YW4gcGFkIGRhdGEgYmVwYWxlblxuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBvcHRpb25zLnNldHRpbmdzLmdhbWVzW2dhbWVJZF07XG5cbiAgICAgIC8vIFBhZ2luYSBzZXR0aW5ncyB0ZXJ1Z2dldmVuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnY6IG9wdGlvbnMuZW52aXJvbm1lbnQsXG4gICAgICAgIGRhdGE6IHNldHRpbmdzID8/IHt9LFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcbn1cbiIsImltcG9ydCB7IGV4aXN0c1N5bmMsIHByb21pc2VzIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBDb25maWdFbnYsIFBsdWdpbiwgVXNlckNvbmZpZywgVml0ZURldlNlcnZlciB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHR5cGUgeyBHYW1lc1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjd2QsIGdldFBhZ2VJZEZyb21VcmwgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmNvbnN0IFBBR0VfVEVNUExBVEUgPSAne3s+IGdhbWUgZGF0YT1kYXRhfX0nO1xuY29uc3QgREVWRUxPUE1FTlRfVEVNUExBVEUgPSAne3s+IGRldmVsb3BtZW50IGRhdGE9ZGF0YX19JztcblxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyVGVtcG9yYXJ5RmlsZShmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIEJlc3RhYXQgZGllIGZpbGUgbm9nIG5pZXQ/XG4gIGlmICghZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAvLyBBYW5tYWtlblxuICAgIGF3YWl0IHByb21pc2VzLndyaXRlRmlsZShmaWxlUGF0aCwgUEFHRV9URU1QTEFURSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh0bWxQbHVnaW4oZ2FtZXM6IEdhbWVzU2V0dGluZ3MpOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlLXBsdWdpbi1rbG9lay1odG1sJyxcbiAgICBlbmZvcmNlOiAncHJlJyxcblxuICAgIGFzeW5jIGNvbmZpZyhfY29uZmlnOiBVc2VyQ29uZmlnLCBlbnZpcm9ubWVudDogQ29uZmlnRW52KSB7XG4gICAgICAvLyBCaWogZWVuIGJ1aWxkIG1ha2VuIHdlIHRpamRlbGlqayBmaWxlcyBhYW5cbiAgICAgIGlmIChlbnZpcm9ubWVudC5jb21tYW5kID09PSAnYnVpbGQnKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFByb21pc2U8dm9pZD4+ID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBwYWdlSWQgb2YgT2JqZWN0LmtleXMoZ2FtZXMpKSB7XG4gICAgICAgICAgLy8gUGFkIG5hYXIgZmlsZVxuICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKGN3ZCwgJ3NvdXJjZScsIGAke3BhZ2VJZH0uaHRtbGApO1xuICAgICAgICAgIGFjdGlvbnMucHVzaChyZW5kZXJUZW1wb3JhcnlGaWxlKGZpbGVQYXRoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3Rpb25zKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY29uZmlndXJlU2VydmVyKHNlcnZlcjogVml0ZURldlNlcnZlcikge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gWm9yZyBlciB2b29yIGRhdCB0aWpkZW5zIGRldmVsb3BtZW50IGRlIHBhZ2luYSBnZS1yZW5kZXJlZCB0ZXJ1ZyBnZWdldmVuIHdvcmR0IHdvcmR0XG4gICAgICAgIHNlcnZlci5taWRkbGV3YXJlcy51c2UoJy8nLCBhc3luYyAocmVxdWVzdCwgcmVzcG9uc2UsIG5leHQpID0+IHtcbiAgICAgICAgICBjb25zdCB1cmwgPSByZXF1ZXN0Py51cmwgPz8gJyc7XG4gICAgICAgICAgY29uc3QgcGFnZUlkID0gZ2V0UGFnZUlkRnJvbVVybCh1cmwpO1xuXG4gICAgICAgICAgaWYgKCFwYWdlSWQpIHtcbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFnZUlkID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAvLyBEZXZlbG9wbWVudD8gZ2VlZiB0ZXJ1Zy4uLlxuICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGF3YWl0IHNlcnZlci50cmFuc2Zvcm1JbmRleEh0bWwodXJsLCBERVZFTE9QTUVOVF9URU1QTEFURSwgcmVxdWVzdC5vcmlnaW5hbFVybCkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LmtleXMoZ2FtZXMpLmluY2x1ZGVzKHBhZ2VJZCkpIHtcbiAgICAgICAgICAgIC8vIEJlc3RhYW5kZSBnYW1lPyB6b3JnIGVyIHZvb3IgZGF0IGRlIHRlbXBsYXRlIGdlLXJlbmRlcmVkIHdvcmR0XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoYXdhaXQgc2VydmVyLnRyYW5zZm9ybUluZGV4SHRtbCh1cmwsIFBBR0VfVEVNUExBVEUsIHJlcXVlc3Qub3JpZ2luYWxVcmwpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTmlrcyBnZXZvbmRlblxuICAgICAgICAgICAgcmVzcG9uc2UuZW5kKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSxcblxuICAgIGFzeW5jIGNsb3NlQnVuZGxlKCkge1xuICAgICAgLy8gVmVyd2lqZGVyIGRlIGFhbmdlbWFha3RlIGZpbGVzXG4gICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxQcm9taXNlPHZvaWQ+PiA9IFtdO1xuICAgICAgZm9yIChjb25zdCBwYWdlSWQgb2YgT2JqZWN0LmtleXMoZ2FtZXMpKSB7XG4gICAgICAgIC8vIFBhZCBuYWFyIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLnJlc29sdmUoY3dkLCAnc291cmNlJywgYCR7cGFnZUlkfS5odG1sYCk7XG4gICAgICAgIGlmIChleGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhY3Rpb25zLnB1c2gocHJvbWlzZXMucm0oZmlsZVBhdGgpKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGFjdGlvbnMpO1xuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgc3ZlbHRlIH0gZnJvbSAnQHN2ZWx0ZWpzL3ZpdGUtcGx1Z2luLXN2ZWx0ZSc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbiwgUGx1Z2luT3B0aW9uIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHNjb25maWdQYXRoc1BsdWdpbiBmcm9tICd2aXRlLXRzY29uZmlnLXBhdGhzJztcbmltcG9ydCBzdmVsdGVQcmVwcm9jZXNzIGZyb20gJ3N2ZWx0ZS1wcmVwcm9jZXNzJztcbmltcG9ydCB0eXBlIHsgVml0ZU9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGhhbmRsZWJhcnNQbHVnaW4gfSBmcm9tICcuL2xpYi9oYW5kbGViYXJzLXBsdWdpbic7XG5pbXBvcnQgeyBodG1sUGx1Z2luIH0gZnJvbSAnLi9saWIvaHRtbC1wbHVnaW4nO1xuXG5leHBvcnQgZnVuY3Rpb24gYmFzZVBsdWdpbnMob3B0aW9uczogVml0ZU9wdGlvbnMpOiBBcnJheTxQbHVnaW4gfCBQbHVnaW5PcHRpb24+IHtcbiAgcmV0dXJuIFtcbiAgICBodG1sUGx1Z2luKG9wdGlvbnMuc2V0dGluZ3MuZ2FtZXMpLFxuXG4gICAgLi4uc3ZlbHRlKHtcbiAgICAgIHByZXByb2Nlc3M6IHN2ZWx0ZVByZXByb2Nlc3MoKSxcblxuICAgICAgb253YXJuKHdhcm5pbmcsIHdhcm4pIHtcbiAgICAgICAgaWYgKCF3YXJuKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm8gYTExeSB3YXJuaW5ncy4uLlxuICAgICAgICBpZiAod2FybmluZy5jb2RlLnN0YXJ0c1dpdGgoJ2ExMXktJykpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3YXJuKHdhcm5pbmcpO1xuICAgICAgfSxcbiAgICB9KSxcblxuICAgIHRzY29uZmlnUGF0aHNQbHVnaW4oe1xuICAgICAgcm9vdDogcGF0aC5yZXNvbHZlKGN3ZCksXG4gICAgICAvLyBFeHRlbnNpb25zOiBbJy50cycsICcuanNvbiddLFxuICAgICAgbG9vc2U6IHRydWUsXG4gICAgfSksXG5cbiAgICBoYW5kbGViYXJzUGx1Z2luKG9wdGlvbnMuY29uZmlnLnNlcnZlLnBhcnRpYWxzLCBvcHRpb25zKSxcbiAgXTtcbn1cbiIsImltcG9ydCBjcnlwdG8sIHsgdHlwZSBCaW5hcnlMaWtlIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuXG5leHBvcnQgZnVuY3Rpb24gbWQ1KGJ1ZmZlcjogQmluYXJ5TGlrZSk6IHN0cmluZyB7XG4gIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnbWQ1JykudXBkYXRlKGJ1ZmZlcikuZGlnZXN0KCdoZXgnKTtcbn1cbiIsImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ0VudiwgUGx1Z2luIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdml0ZUltYWdlbWluIGZyb20gJ0B2aGVlbXN0cmEvdml0ZS1wbHVnaW4taW1hZ2VtaW4nO1xuaW1wb3J0IGltYWdlbWluTW96SnBlZyBmcm9tICdpbWFnZW1pbi1tb3pqcGVnJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VRdWFsaXR5Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjd2QsIHJlYWRKU09OIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgbWQ1IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGFzaCc7XG5cbi8vIFRoZSBtaW5pZmllcnMgeW91IHdhbnQgdG8gdXNlOlxuaW1wb3J0IGltYWdlbWluUG5nUXVhbnQgZnJvbSAnaW1hZ2VtaW4tcG5ncXVhbnQnO1xuaW1wb3J0IGltYWdlbWluT3B0aVBuZyBmcm9tICdpbWFnZW1pbi1vcHRpcG5nJztcblxuY29uc3QgcGtnID0gcmVhZEpTT04ocGF0aC5yZXNvbHZlKGN3ZCwgJ3BhY2thZ2UuanNvbicpKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlbWluUGx1Z2luKGVudmlyb25tZW50OiBDb25maWdFbnYsIG9wdGlvbnM6IEltYWdlUXVhbGl0eUNvbmZpZyk6IFBsdWdpbiB8IHVuZGVmaW5lZCB7XG4gIGlmIChlbnZpcm9ubWVudC5tb2RlICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gdml0ZUltYWdlbWluKHtcbiAgICBza2lwSWZMYXJnZXI6IHRydWUsXG4gICAgdmVyYm9zZTogdHJ1ZSxcbiAgICBjYWNoZTogdHJ1ZSxcbiAgICBjYWNoZURpcjogcGF0aC5yZXNvbHZlKGN3ZCwgJy5jYWNoZS92aXRlLXBsdWdpbi1pbWFnZW1pbicpLFxuICAgIGNhY2hlS2V5OiBgJHtwa2cubmFtZX0tJHttZDUoSlNPTi5zdHJpbmdpZnkoeyAuLi5vcHRpb25zIH0pKX1gLFxuICAgIHJvb3Q6IHBhdGguam9pbihwYXRoLnJlc29sdmUoY3dkKSwgJ3B1YmxpYycpLFxuICAgIHBsdWdpbnM6IHtcbiAgICAgIGpwZzogW1xuICAgICAgICBpbWFnZW1pbk1vekpwZWcoe1xuICAgICAgICAgIHF1YWxpdHk6IG9wdGlvbnMuanBlZyA/PyA4MCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcG5nOiBbXG4gICAgICAgIGltYWdlbWluUG5nUXVhbnQoe1xuICAgICAgICAgIHN0cmlwOiB0cnVlLFxuICAgICAgICAgIHNwZWVkOiAyLFxuICAgICAgICAgIGRpdGhlcmluZzogMC4yNSxcbiAgICAgICAgICBxdWFsaXR5OiBvcHRpb25zLnBuZyA/PyBbMC41LCAwLjddLFxuICAgICAgICB9KSxcbiAgICAgICAgaW1hZ2VtaW5PcHRpUG5nKCksXG4gICAgICBdLFxuICAgIH0sXG4gIH0pIGFzIFBsdWdpbjtcbn1cbiIsImltcG9ydCB0eXBlIHsgT3V0cHV0QXNzZXQgfSBmcm9tICdyb2xsdXAnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4sIFJlc29sdmVkQ29uZmlnIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHlwZSB7IEdhbWVTZXR0aW5ncywgR2FtZXNTZXR0aW5ncyB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVyZmFjZXMnO1xuXG5mdW5jdGlvbiByZW5kZXJHYW1lTWFuaWZlc3QocGFnZUlkOiBzdHJpbmcsIHNldHRpbmdzOiBHYW1lU2V0dGluZ3MsIGNvbmZpZzogUmVzb2x2ZWRDb25maWcpOiBzdHJpbmcge1xuICBjb25zdCBtYW5pZmVzdCA9IHtcbiAgICBzaG9ydF9uYW1lOiBgJHtzZXR0aW5ncy5tZXRhLmFwcHRpdGxlfWAsXG4gICAgbmFtZTogYCR7c2V0dGluZ3MubWV0YS50aXRsZX1gLFxuICAgIGRlc2NyaXB0aW9uOiBgJHtzZXR0aW5ncy5tZXRhLmRlc2NyaXB0aW9ufWAsXG4gICAgc2NvcGU6IGAke2NvbmZpZy5iYXNlfSR7cGFnZUlkfS5odG1sYCxcbiAgICBzdGFydF91cmw6IGAke2NvbmZpZy5iYXNlfSR7cGFnZUlkfS5odG1sYCxcbiAgICBkaXNwbGF5OiAnZnVsbHNjcmVlbicsXG4gICAgb3JpZW50YXRpb246IGAke3NldHRpbmdzLm9wdGlvbnMub3JpZW50YXRpb24gPz8gJ2xhbmRzY2FwZSd9YCxcbiAgICBpY29uczogW1xuICAgICAge1xuICAgICAgICBzcmM6IGAke2NvbmZpZy5iYXNlfW1ldGEvJHtzZXR0aW5ncy5pbmZvLmlkfS9pY29ucy9jaHJvbWUtdG91Y2gtaWNvbi0xOTJ4MTkyLnBuZ2AsXG4gICAgICAgIHR5cGU6ICdpbWFnZS9wbmcnLFxuICAgICAgICBzaXplczogJzE5MngxOTInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3JjOiBgJHtjb25maWcuYmFzZX1tZXRhLyR7c2V0dGluZ3MuaW5mby5pZH0vaWNvbnMvaWNvbi5wbmdgLFxuICAgICAgICB0eXBlOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgc2l6ZXM6ICcxMDI0eDEwMjQnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGJhY2tncm91bmRfY29sb3I6IGAke3NldHRpbmdzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yfWAsXG4gICAgdGhlbWVfY29sb3I6IGAke3NldHRpbmdzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yfWAsXG4gIH07XG5cbiAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKX1cXG5gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFuaWZlc3RQbHVnaW4oZ2FtZXM6IEdhbWVzU2V0dGluZ3MpOiBQbHVnaW4ge1xuICBsZXQgY29uZmlnOiBSZXNvbHZlZENvbmZpZztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlLXBsdWdpbi1rbG9lay1tYW5pZmVzdCcsXG4gICAgZW5mb3JjZTogJ3Bvc3QnLFxuICAgIGFwcGx5OiAnYnVpbGQnLFxuICAgIGFzeW5jIGNvbmZpZ1Jlc29sdmVkKHJlc29sdmVkQ29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICAgICAgY29uZmlnID0gcmVzb2x2ZWRDb25maWc7XG4gICAgfSxcbiAgICBnZW5lcmF0ZUJ1bmRsZShfLCBidW5kbGUpIHtcbiAgICAgIC8vIFZvb3IgaWVkZXJlIGFwcCBlZW4gbWFuaWZlc3QgbWFrZW46XG4gICAgICBmb3IgKGNvbnN0IFtwYWdlSWQsIHNldHRpbmdzXSBvZiBPYmplY3QuZW50cmllcyhnYW1lcykpIHtcbiAgICAgICAgYnVuZGxlW2Ake3BhZ2VJZH0ud2VibWFuaWZlc3RgXSA9IHtcbiAgICAgICAgICBuZWVkc0NvZGVSZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6ICdhc3NldCcsXG4gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNvdXJjZTogcmVuZGVyR2FtZU1hbmlmZXN0KHBhZ2VJZCwgc2V0dGluZ3MsIGNvbmZpZyksXG4gICAgICAgICAgZmlsZU5hbWU6IGAke3BhZ2VJZH0ud2VibWFuaWZlc3RgLFxuICAgICAgICB9IGFzIE91dHB1dEFzc2V0O1xuXG4gICAgICAgIGJ1bmRsZVtgJHtwYWdlSWR9LXNlcnZpY2V3b3JrZXIuanNgXSA9IHtcbiAgICAgICAgICBuZWVkc0NvZGVSZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6ICdhc3NldCcsXG4gICAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNvdXJjZTogXCJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgZnVuY3Rpb24oKSB7IHJldHVybjsgfSk7XCIsXG4gICAgICAgICAgZmlsZU5hbWU6IGAke3BhZ2VJZH0tc2VydmljZXdvcmtlci5qc2AsXG4gICAgICAgIH0gYXMgT3V0cHV0QXNzZXQ7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiIsImltcG9ydCBsZWdhY3lQbHVnaW4gZnJvbSAnQHZpdGVqcy9wbHVnaW4tbGVnYWN5JztcbmltcG9ydCB7IHZpc3VhbGl6ZXIgfSBmcm9tICdyb2xsdXAtcGx1Z2luLXZpc3VhbGl6ZXInO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4sIFBsdWdpbk9wdGlvbiB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBiYW5uZXJQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1iYW5uZXInO1xuaW1wb3J0IHsgY3JlYXRlSHRtbFBsdWdpbiB9IGZyb20gJ3ZpdGUtcGx1Z2luLWh0bWwnO1xuaW1wb3J0IHR5cGUgeyBWaXRlT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaW1hZ2VtaW5QbHVnaW4gfSBmcm9tICcuL2xpYi9pbWFnZS1wbHVnaW4nO1xuaW1wb3J0IHsgbWFuaWZlc3RQbHVnaW4gfSBmcm9tICcuL2xpYi9tYW5pZmVzdC1wbHVnaW4nO1xuXG4vLyBCdWlsZCBwbHVnaW5zXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQbHVnaW5zKG9wdGlvbnM6IFZpdGVPcHRpb25zKTogQXJyYXk8UGx1Z2luIHwgUGx1Z2luT3B0aW9uPiB7XG4gIC8vIE5vIGJ1aWxkPyBubyBwbHVnaW5zLi5cbiAgaWYgKG9wdGlvbnMuZW52aXJvbm1lbnQuY29tbWFuZCAhPT0gJ2J1aWxkJykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHBsdWdpbnM6IEFycmF5PFBsdWdpbiB8IFBsdWdpbk9wdGlvbiB8IHVuZGVmaW5lZD4gPSBbXTtcblxuICBpZiAob3B0aW9ucy5jb25maWcuYnVpbGQubGVnYWN5KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBwYWdlIHdvcmtzIGluIG9sZGVyIGJyb3dzZXJzXG4gICAgcGx1Z2lucy5wdXNoKC4uLmxlZ2FjeVBsdWdpbih7IHRhcmdldHM6IChvcHRpb25zLmNvbmZpZy5idWlsZC5icm93c2Vyc2xpc3QgYXMgc3RyaW5nW10pID8/ICdkZWZhdWx0cycgfSkpO1xuICB9XG5cbiAgY29uc3QgcGFnZXMgPSBPYmplY3Qua2V5cyhvcHRpb25zLnNldHRpbmdzLmdhbWVzKS5tYXAoKGdhbWVJZCkgPT4ge1xuICAgIHJldHVybiB7IGZpbGVuYW1lOiBgJHtnYW1lSWR9Lmh0bWxgLCB0ZW1wbGF0ZTogYCR7Z2FtZUlkfS5odG1sYCB9O1xuICB9KTtcblxuICBwbHVnaW5zLnB1c2goXG4gICAgLy8gTWluaWZ5IGltYWdlIGFzc2V0c1xuICAgIGltYWdlbWluUGx1Z2luKG9wdGlvbnMuZW52aXJvbm1lbnQsIG9wdGlvbnMuY29uZmlnLmJ1aWxkLmltYWdlUXVhbGl0eSksXG5cbiAgICAvLyBNYWtlIHRoZSBodG1sIG91dHB1dCBzbWFsbGVyXG4gICAgLi4uKGNyZWF0ZUh0bWxQbHVnaW4oeyBtaW5pZnk6IHRydWUsIHBhZ2VzIH0pIGFzIFBsdWdpbltdKSxcblxuICAgIC8vIEFkZCBhIGJhbm5lciB0byBnZW5lcmF0ZWQganMvY3NzXG4gICAgYmFubmVyUGx1Z2luKHtcbiAgICAgIG91dERpcjogJy4uL3B1YmxpYycsXG4gICAgICBjb250ZW50OiBgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLlxuXG4gICAgICAgICBfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgICAgIF8gICAgICAgICAgICBfXG4gICAgICAgIC8gICkgICAgICAgICAgICAgIHwgIG8gICAgICAgICAvfCAgIC8gfCB8ICAgICAgICAgIHwgfFxuICAgICAgICBcXFxcX18gX3xfICAgICAgICAgX198ICAgICAgX18gICAgIHxfXy8gIHwgfCAgX18gICBfICB8IHxcbiAgICAgICAgICAgXFxcXCB8ICB8ICAgfCAgLyAgfCAgfCAgLyAgXFxcXF8gICB8IFxcXFwgICB8LyAgLyAgXFxcXF98LyAgfC9fKVxuICAgICAgIChfX18vIHxfLyBcXFxcXy98Xy9cXFxcXy98Xy98Xy9cXFxcX18vICAgIHwgIFxcXFxfL3xfXy9cXFxcX18vIHxfXy98IFxcXFxfL1xuXG4gICAgICAgIENvbmNlcHQsIG9udHdlcnAgJiBvbnR3aWtrZWxpbmdcbiAgICAgICAgaHR0cHM6Ly9zdHVkaW9rbG9lay5ubFxuXG4gICAgICAgIFN0dWRpbyBLbG9layDinaQgUGl4aUpTLCBHU0FQICYgaG93bGVyLmpzXG5cbiAgICAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuYCxcbiAgICB9KSxcbiAgKTtcblxuICAvLyBDcmVhdGUgYSBtYW5pZmVzdCBhbmQgbWluaW1hbCB3ZWJ3b3JrZXIgZm9yIGV2ZXJ5IGdhbWVcbiAgaWYgKG9wdGlvbnMuY29uZmlnLmJ1aWxkLm1hbmlmZXN0KSB7XG4gICAgcGx1Z2lucy5wdXNoKG1hbmlmZXN0UGx1Z2luKG9wdGlvbnMuc2V0dGluZ3MuZ2FtZXMpKTtcbiAgfVxuXG4gIC8vIERvIHdlIG5lZWQgdG8gYW5hbHlzZSB0aGUgYnVpbGQ/XG4gIGlmIChvcHRpb25zLmNvbmZpZy5idWlsZC5hbmFseXplQnVuZGxlKSB7XG4gICAgcGx1Z2lucy5wdXNoKFxuICAgICAgdmlzdWFsaXplcih7XG4gICAgICAgIHRlbXBsYXRlOiAndHJlZW1hcCcsIC8vIG9yIHN1bmJ1cnN0XG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIGd6aXBTaXplOiB0cnVlLFxuICAgICAgICBmaWxlbmFtZTogJ2J1bmRsZS1hbmFseXNlLmh0bWwnLCAvLyB3aWxsIGJlIHNhdmVkIGluIHByb2plY3QncyByb290XG4gICAgICB9KSBhcyBQbHVnaW5PcHRpb24sXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBwbHVnaW5zLmZpbHRlcigocGx1Z2luKSA9PiBwbHVnaW4gIT09IHVuZGVmaW5lZCk7XG59XG4iLCJpbXBvcnQgeyBiaW9tZVBsdWdpbiB9IGZyb20gJ0BwYnIxMTExL3ZpdGUtcGx1Z2luLWJpb21lJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbiwgUGx1Z2luT3B0aW9uIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgY2hlY2tlciBmcm9tICd2aXRlLXBsdWdpbi1jaGVja2VyJztcbmltcG9ydCBmdWxsUmVsb2FkIGZyb20gJ3ZpdGUtcGx1Z2luLWZ1bGwtcmVsb2FkJztcbmltcG9ydCBta2NlcnQgZnJvbSAndml0ZS1wbHVnaW4tbWtjZXJ0JztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgS2xvZWtDb25maWdTZXJ2ZVNldHRpbmdzID0ge1xuICBmdWxsUmVsb2FkU3ZlbHRlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2ZVBsdWdpbnMoc2V0dGluZ3M/OiBLbG9la0NvbmZpZ1NlcnZlU2V0dGluZ3MpOiBBcnJheTxQbHVnaW4gfCBQbHVnaW5PcHRpb24+IHtcbiAgY29uc3QgZnVsbFJlbG9hZFBhdGhzID0gWydzY3JpcHQvKiovKi50cyddO1xuICBpZiAoc2V0dGluZ3M/LmZ1bGxSZWxvYWRTdmVsdGUpIHtcbiAgICBmdWxsUmVsb2FkUGF0aHMucHVzaCgnc3ZlbHRlLyoqLyouc3ZlbHRlJyk7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIGZ1bGxSZWxvYWQoZnVsbFJlbG9hZFBhdGhzLCB7XG4gICAgICByb290OiBwYXRoLmpvaW4ocGF0aC5yZXNvbHZlKGN3ZCksICdzb3VyY2UnKSxcbiAgICAgIGxvZzogdHJ1ZSxcbiAgICAgIGFsd2F5czogdHJ1ZSxcbiAgICB9KSBhcyBQbHVnaW4sXG5cbiAgICBta2NlcnQoKSxcblxuICAgIGNoZWNrZXIoe1xuICAgICAgdHlwZXNjcmlwdDogdHJ1ZSxcbiAgICB9KSxcblxuICAgIGJpb21lUGx1Z2luKCksXG4gIF07XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB0eXBlIHsgQ29uZmlnRW52LCBVc2VyQ29uZmlnIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgeyBiYXNlUGx1Z2lucyB9IGZyb20gJy4vcGx1Z2lucy9iYXNlJztcbmltcG9ydCB7IGJ1aWxkUGx1Z2lucyB9IGZyb20gJy4vcGx1Z2lucy9idWlsZCc7XG5pbXBvcnQgeyBzZXJ2ZVBsdWdpbnMgfSBmcm9tICcuL3BsdWdpbnMvc2VydmUnO1xuaW1wb3J0IHsgY3dkLCBkZWZpbmVCdWlsZENvbmZpZywgZ2V0UGFja2FnZUNvbmZpZywgZ2V0UGFnZVRvU2VydmUsIHBhcnNlUGFja2FnZUdhbWVzU2V0dGluZ3MgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB0eXBlIHsgVml0ZU9wdGlvbnMgfSBmcm9tICcuL3V0aWxzL2ludGVyZmFjZXMnO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlZmluZUtsb2VrVml0ZUNvbmZpZyhlbnZpcm9ubWVudDogQ29uZmlnRW52KTogUHJvbWlzZTxVc2VyQ29uZmlnPiB7XG4gIGNvbnN0IHBhY2thZ2VfID0gZ2V0UGFja2FnZUNvbmZpZygpO1xuXG4gIGNvbnN0IG9wdGlvbnM6IFZpdGVPcHRpb25zID0ge1xuICAgIHJvb3Q6IHBhdGgucmVzb2x2ZShjd2QsICdzb3VyY2UnKSxcbiAgICBwYWNrYWdlOiBwYWNrYWdlXyxcbiAgICBlbnZpcm9ubWVudCxcbiAgICBzZXR0aW5nczogcGFyc2VQYWNrYWdlR2FtZXNTZXR0aW5ncyhwYWNrYWdlXy5zZXR0aW5ncywgcGFja2FnZV8udmVyc2lvbiksXG4gICAgY29uZmlnOiB7XG4gICAgICAuLi5wYWNrYWdlXy52aXRlLFxuICAgICAgYnVpbGQ6IHsgLi4ucGFja2FnZV8udml0ZS5idWlsZCwgYnJvd3NlcnNsaXN0OiBwYWNrYWdlXy5icm93c2Vyc2xpc3QgfSxcbiAgICAgIHNlcnZlOiB7XG4gICAgICAgIHBhcnRpYWxzOiBbcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3BhcnRpYWxzJyksIHBhdGgucmVzb2x2ZShjd2QsICdzb3VyY2UnLCAncGFydGlhbHMnKV0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgY29uZmlnOiBVc2VyQ29uZmlnID0ge1xuICAgIGxvZ0xldmVsOiAnaW5mbycsXG4gICAgYmFzZTogcGFja2FnZV8udml0ZS5idWlsZC5iYXNlUGF0aCxcbiAgICByb290OiBvcHRpb25zLnJvb3QsXG4gICAgZW52RGlyOiBwYXRoLnJlc29sdmUoY3dkLCAnZW52JyksXG4gICAgZW52UHJlZml4OiBbJ0tMT0VLXycsICdWSVRFXyddLFxuICAgIHB1YmxpY0RpcjogJ3N0YXRpYycsXG4gICAgZGVmaW5lOiB7fSxcblxuICAgIGVzYnVpbGQ6IHtcbiAgICAgIGxlZ2FsQ29tbWVudHM6ICdub25lJyxcbiAgICB9LFxuXG4gICAgcmVzb2x2ZToge1xuICAgICAgYWxpYXM6IHtcbiAgICAgICAgJ0BtZXRhJzogcGF0aC5yZXNvbHZlKGN3ZCwgJ3NvdXJjZScsICdzdGF0aWMnLCAnbWV0YScpLFxuICAgICAgICAnQGZvbnRzJzogcGF0aC5yZXNvbHZlKGN3ZCwgJ3NvdXJjZScsICdzdGF0aWMnLCAnZm9udHMnKSxcbiAgICAgIH0sXG4gICAgICBkZWR1cGU6IFtcbiAgICAgICAgJ0BzdHVkaW9rbG9lay90cy1jb3JlLWxpYicsXG4gICAgICAgICdAY2FwYWNpdG9yL2FwcCcsXG4gICAgICAgICdAY2FwYWNpdG9yL2NvcmUnLFxuICAgICAgICAnQGNhcGFjaXRvci9kZXZpY2UnLFxuICAgICAgICAnQGNhcGFjaXRvci9uZXR3b3JrJyxcbiAgICAgICAgJ0BjYXBhY2l0b3IvcHJlZmVyZW5jZXMnLFxuICAgICAgICAnQGNhcGFjaXRvci9zcGxhc2gtc2NyZWVuJyxcbiAgICAgICAgJ0BjYXBhY2l0b3Ivc3RhdHVzLWJhcicsXG4gICAgICAgICdib3dzZXInLFxuICAgICAgICAnZGF0ZS1mbnMtdHonLFxuICAgICAgICAnZGF0ZS1mbnMnLFxuICAgICAgICAnZXJyb3Itc3RhY2stcGFyc2VyLWVzJyxcbiAgICAgICAgJ2ZpcmViYXNlJyxcbiAgICAgICAgJ2ZvbnRmYWNlb2JzZXJ2ZXInLFxuICAgICAgICAnZ3NhcCcsXG4gICAgICAgICdob3dsZXInLFxuICAgICAgICAnbG9kYXNoLWRlY29yYXRvcnMnLFxuICAgICAgICAnbG9kYXNoJyxcbiAgICAgICAgJ292ZXJtaW5kJyxcbiAgICAgICAgJ3BpeGktc3BpbmUnLFxuICAgICAgICAncGl4aScsXG4gICAgICAgICdwdWJzdWItanMnLFxuICAgICAgICAncmFuZG9tLWpzJyxcbiAgICAgICAgJ3Jlc3MnLFxuICAgICAgICAnc2x1Z2lmeScsXG4gICAgICAgICdzdXBlcmFnZW50JyxcbiAgICAgICAgJ3RzLWV2ZW50cycsXG4gICAgICAgICd0cy1taXhlcicsXG4gICAgICAgICd0c2xpYicsXG4gICAgICBdLFxuICAgIH0sXG5cbiAgICBjc3M6IHtcbiAgICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcbiAgICAgICAgc2Nzczoge1xuICAgICAgICAgIGNoYXJzZXQ6IGZhbHNlLFxuICAgICAgICAgIHNpbGVuY2VEZXByZWNhdGlvbnM6IFsnbGVnYWN5LWpzLWFwaSddLFxuICAgICAgICAgIC8vIEFkZGl0aW9uYWxEYXRhOiBgQGNoYXJzZXQgXCJVVEYtOFwiYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHBsdWdpbnM6IFsuLi5iYXNlUGx1Z2lucyhvcHRpb25zKV0sXG4gIH07XG5cbiAgc3dpdGNoIChlbnZpcm9ubWVudC5jb21tYW5kKSB7XG4gICAgY2FzZSAnc2VydmUnOiB7XG4gICAgICBjb25maWcuc2VydmVyID0ge1xuICAgICAgICBob3N0OiB0cnVlLFxuICAgICAgICBjb3JzOiBvcHRpb25zLmNvbmZpZy5kZXYuY29ycyA/PyB0cnVlLFxuICAgICAgICBodHRwczogb3B0aW9ucy5jb25maWcuZGV2Lmh0dHBzID8/IHRydWUsXG4gICAgICAgIG9wZW46IGdldFBhZ2VUb1NlcnZlKG9wdGlvbnMuY29uZmlnLCBvcHRpb25zLnNldHRpbmdzLmdhbWVzKSxcbiAgICAgIH07XG4gICAgICBjb25maWcucGx1Z2lucyA9IFtcbiAgICAgICAgLi4uKGNvbmZpZy5wbHVnaW5zID8gY29uZmlnLnBsdWdpbnMgOiBbXSksXG4gICAgICAgIC4uLnNlcnZlUGx1Z2lucyh7XG4gICAgICAgICAgZnVsbFJlbG9hZFN2ZWx0ZTogcGFja2FnZV8udml0ZS5kZXYuZnVsbFJlbG9hZFN2ZWx0ZSA/PyB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgIF07XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgJ2J1aWxkJzoge1xuICAgICAgY29uZmlnLmJ1aWxkID0gZGVmaW5lQnVpbGRDb25maWcob3B0aW9ucyk7XG4gICAgICBjb25maWcucGx1Z2lucyA9IFsuLi4oY29uZmlnLnBsdWdpbnMgPyBjb25maWcucGx1Z2lucyA6IFtdKSwgLi4uYnVpbGRQbHVnaW5zKG9wdGlvbnMpXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gIH1cblxuICByZXR1cm4gY29uZmlnO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBUeXBlZEZsYWdzIH0gZnJvbSAnbWVvdyc7XG5pbXBvcnQgeyBidWlsZCwgY3JlYXRlU2VydmVyLCB0eXBlIExvZ0xldmVsIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgeyBkZWZpbmVLbG9la1ZpdGVDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBhZGRCdWlsZEZvbGRlclRvWmlwLCBnZXRQYWNrYWdlQ29uZmlnIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBrbG9la0RldmVsb3BtZW50KFxuICBmbGFnczogVHlwZWRGbGFnczx7XG4gICAgbW9kZToge1xuICAgICAgdHlwZTogJ3N0cmluZyc7XG4gICAgICBzaG9ydEZsYWc6IHN0cmluZztcbiAgICAgIGRlZmF1bHQ/OiBzdHJpbmc7XG4gICAgfTtcbiAgfT4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgZGVmaW5lS2xvZWtWaXRlQ29uZmlnKHtcbiAgICBjb21tYW5kOiAnc2VydmUnLFxuICAgIG1vZGU6ICdkZXZlbG9wbWVudCcsXG4gIH0pO1xuXG4gIC8vIERpZmZlcmVudCBtb2RlXG4gIGlmICh0eXBlb2YgZmxhZ3MubW9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcubW9kZSA9IGZsYWdzLm1vZGU7XG4gIH1cblxuICBjb25zdCBzZXJ2ZXIgPSBhd2FpdCBjcmVhdGVTZXJ2ZXIoe1xuICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIC4uLmNvbmZpZyxcbiAgfSk7XG5cbiAgYXdhaXQgc2VydmVyLmxpc3RlbigpO1xuICBzZXJ2ZXIucHJpbnRVcmxzKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBrbG9la0J1aWxkKFxuICBmbGFnczogVHlwZWRGbGFnczx7XG4gICAgYmFzZToge1xuICAgICAgdHlwZTogJ3N0cmluZyc7XG4gICAgICBzaG9ydEZsYWc6IHN0cmluZztcbiAgICAgIGRlZmF1bHQ6IHN0cmluZztcbiAgICB9O1xuICAgIG1vZGU6IHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnO1xuICAgICAgc2hvcnRGbGFnOiBzdHJpbmc7XG4gICAgICBkZWZhdWx0Pzogc3RyaW5nO1xuICAgIH07XG4gICAgbG9nTGV2ZWw6IHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnO1xuICAgICAgc2hvcnRGbGFnOiBzdHJpbmc7XG4gICAgICBkZWZhdWx0Pzogc3RyaW5nO1xuICAgIH07XG4gICAgZW1wdHlPdXREaXI6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuJztcbiAgICAgIHNob3J0RmxhZzogc3RyaW5nO1xuICAgICAgZGVmYXVsdDogdHJ1ZTtcbiAgICB9O1xuICAgIHNvdXJjZW1hcHM6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuJztcbiAgICAgIHNob3J0RmxhZzogc3RyaW5nO1xuICAgICAgZGVmYXVsdDogZmFsc2U7XG4gICAgfTtcbiAgICBpbmxpbmVTb3VyY2VtYXBzOiB7XG4gICAgICB0eXBlOiAnYm9vbGVhbic7XG4gICAgICBzaG9ydEZsYWc6IHN0cmluZztcbiAgICAgIGRlZmF1bHQ6IGZhbHNlO1xuICAgIH07XG4gICAgY3JlYXRlWmlwOiB7XG4gICAgICB0eXBlOiAnYm9vbGVhbic7XG4gICAgICBzaG9ydEZsYWc6IHN0cmluZztcbiAgICAgIGRlZmF1bHQ6IGZhbHNlO1xuICAgIH07XG4gIH0+LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGRlZmluZUtsb2VrVml0ZUNvbmZpZyh7XG4gICAgY29tbWFuZDogJ2J1aWxkJyxcbiAgICBtb2RlOiAncHJvZHVjdGlvbicsXG4gIH0pO1xuXG4gIC8vIEVtcHR5IG91dCB0aGUgT3V0cHV0IGRpciBiZWZvcmUgYnVpbGRpbmc/XG4gIGlmIChmbGFncy5lbXB0eU91dERpciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uZmlnLmJ1aWxkID0ge1xuICAgICAgLi4uY29uZmlnLmJ1aWxkLFxuICAgICAgZW1wdHlPdXREaXI6IGZsYWdzLmVtcHR5T3V0RGlyLFxuICAgIH07XG4gIH1cblxuICAvLyBDcmVhdGUgc291cmNlbWFwcz9cbiAgaWYgKGZsYWdzLnNvdXJjZW1hcHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbmZpZy5idWlsZCA9IHtcbiAgICAgIC4uLmNvbmZpZy5idWlsZCxcbiAgICAgIHNvdXJjZW1hcDogZmxhZ3Muc291cmNlbWFwcyA/IChmbGFncy5pbmxpbmVTb3VyY2VtYXBzID8gJ2lubGluZScgOiB0cnVlKSA6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvLyBEaWZmZXJlbnQgYmFzZSBwYXRoXG4gIGlmICh0eXBlb2YgZmxhZ3MuYmFzZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcuYmFzZSA9IGZsYWdzLmJhc2U7XG4gIH1cblxuICAvLyBEaWZmZXJlbnQgbW9kZVxuICBpZiAodHlwZW9mIGZsYWdzLm1vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uZmlnLm1vZGUgPSBmbGFncy5tb2RlO1xuICB9XG5cbiAgLy8gRGlmZmVyZW50IG1vZGVcbiAgY29uZmlnLmxvZ0xldmVsID0gZmxhZ3MubG9nTGV2ZWwgYXMgTG9nTGV2ZWwgfCB1bmRlZmluZWQ7XG5cbiAgYXdhaXQgYnVpbGQoe1xuICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIC4uLmNvbmZpZyxcbiAgfSk7XG5cbiAgLy8gTWFrZW4gd2UgZWVuIHppcCBhYW4/XG4gIGlmIChmbGFncy5jcmVhdGVaaXAgfHwgZ2V0UGFja2FnZUNvbmZpZygpLnZpdGUuYnVpbGQuY3JlYXRlWmlwKSB7XG4gICAgYXdhaXQgYWRkQnVpbGRGb2xkZXJUb1ppcCgpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR08sTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQzs7QUNEekMsU0FBVSxRQUFRLENBQUMsSUFBWSxFQUFBO0lBQ25DLElBQUk7QUFDRixRQUFBLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNuQyxJQUFBO0lBQUMsTUFBTTs7QUFFUCxJQUFBO0FBRUQsSUFBQSxPQUFPLEtBQUs7QUFDZDs7QUNQTSxTQUFVLGlCQUFpQixDQUFDLE9BQW9CLEVBQUE7SUFDcEQsTUFBTSxLQUFLLEdBQTJCLEVBQUU7QUFFeEMsSUFBQSxLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN4RCxRQUFBLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQSxFQUFHLE1BQU0sQ0FBQSxLQUFBLENBQU8sQ0FBQztBQUM3RCxJQUFB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
|
package/dist/utils/hash.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@studiokloek/vite-config",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.20",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Martijn Swart <opensource@studiokloek.nl> (https://studiokloek.nl)",
|
|
6
6
|
"description": "Base Vite config for usage in our projects.",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"access": "public"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
+
"@pbr1111/vite-plugin-biome": "^1.1.3",
|
|
53
54
|
"@sveltejs/vite-plugin-svelte": "^2.5.3",
|
|
54
55
|
"@vheemstra/vite-plugin-imagemin": "^1.2.1",
|
|
55
56
|
"@vitejs/plugin-legacy": "^4.1.1",
|
|
@@ -69,7 +70,7 @@
|
|
|
69
70
|
"terser": "^5.43.1",
|
|
70
71
|
"vite": "v4.5.14",
|
|
71
72
|
"vite-plugin-banner": "0.8.1",
|
|
72
|
-
"vite-plugin-checker": "^0.
|
|
73
|
+
"vite-plugin-checker": "^0.10.0",
|
|
73
74
|
"vite-plugin-full-reload": "^1.2.0",
|
|
74
75
|
"vite-plugin-handlebars": "naranjamecanica/vite-plugin-handlebars#tmp-release",
|
|
75
76
|
"vite-plugin-html": "3.2.2",
|
|
@@ -79,7 +80,7 @@
|
|
|
79
80
|
"zip-a-folder": "^3.1.9"
|
|
80
81
|
},
|
|
81
82
|
"devDependencies": {
|
|
82
|
-
"@biomejs/biome": "2.
|
|
83
|
+
"@biomejs/biome": "2.1.1",
|
|
83
84
|
"@microsoft/api-extractor": "7.52.8",
|
|
84
85
|
"@rollup/plugin-node-resolve": "^15.3.1",
|
|
85
86
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
@@ -90,9 +91,9 @@
|
|
|
90
91
|
"@types/imagemin": "^8.0.5",
|
|
91
92
|
"@types/imagemin-mozjpeg": "^8.0.4",
|
|
92
93
|
"@types/imagemin-optipng": "^5.2.4",
|
|
93
|
-
"@types/node": "^20.19.
|
|
94
|
+
"@types/node": "^20.19.7",
|
|
94
95
|
"rimraf": "^5.0.10",
|
|
95
|
-
"rollup": "^4.
|
|
96
|
+
"rollup": "^4.45.0",
|
|
96
97
|
"typescript": "4.9.5"
|
|
97
98
|
},
|
|
98
99
|
"resolutions": {
|