@decohere/create 0.0.1-dev.27 → 0.0.1-dev.29

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.
@@ -44,6 +44,8 @@ function runInBuilder(opts) {
44
44
  (0, _nodefs.mkdirSync)(npmCacheDir, {
45
45
  recursive: true
46
46
  });
47
+ // Isolated HOME so --user host-uid can write without a matching /etc/passwd entry.
48
+ const builderHome = "/tmp/decohere-create-home";
47
49
  const volumes = [
48
50
  "-v",
49
51
  `${targetDir}:/workspace`,
@@ -60,9 +62,8 @@ function runInBuilder(opts) {
60
62
  "NPM_CONFIG_CACHE=/npm-cache",
61
63
  "-e",
62
64
  "NPM_CONFIG_PREFER_OFFLINE=true",
63
- // Writable HOME for npm / auth0 CLI when not running as image root/node.
64
65
  "-e",
65
- "HOME=/tmp/decohere-create-home"
66
+ `HOME=${builderHome}`
66
67
  ];
67
68
  // Mount host .npmrc where the non-root process can read it.
68
69
  const npmrcPath = (0, _nodepath.resolve)((0, _nodeos.homedir)(), ".npmrc");
@@ -70,6 +71,12 @@ function runInBuilder(opts) {
70
71
  volumes.push("-v", `${npmrcPath}:/tmp/host-npmrc:ro`);
71
72
  envArgs.push("-e", "NPM_CONFIG_USERCONFIG=/tmp/host-npmrc");
72
73
  }
74
+ // Auth0 CLI reads credentials from $HOME/.config/auth0 — without this mount,
75
+ // ensureSpaApp fails and Postman gets an empty auth0ClientId.
76
+ const auth0ConfigDir = (0, _nodepath.resolve)((0, _nodeos.homedir)(), ".config/auth0");
77
+ if ((0, _nodefs.existsSync)(auth0ConfigDir)) {
78
+ volumes.push("-v", `${auth0ConfigDir}:${builderHome}/.config/auth0`);
79
+ }
73
80
  const userArgs = [];
74
81
  if (runAsHostUser) {
75
82
  userArgs.push("--user", `${hostUid}:${hostGid}`);
@@ -123,4 +130,4 @@ function runInBuilder(opts) {
123
130
  process.exit(result.status ?? 0);
124
131
  }
125
132
 
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcnVubmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlU3luYywgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSwgQ1JFQVRFX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEFwaU9wdGlvbnMgfSBmcm9tIFwiLi93ZWJhcGkvY3JlYXRlLWFwaS5qc1wiO1xuXG5jb25zdCBCVUlMREVSX0lNQUdFID0gYCR7Q1JFQVRFX0lNQUdFX1JFUE9TSVRPUll9OiR7Q1JFQVRFX1ZFUlNJT059YDtcblxuLyoqXG4gKiBSdW4gdGhlIHNjYWZmb2xkIGluc2lkZSBhIHByZS1idWlsdCBEb2NrZXIgYnVpbGRlciBpbWFnZS5cbiAqXG4gKiBDYWxsZWQgd2hlbiBgREVDT0hFUkVfQlVJTERFUmAgaXMgbm90IHNldCDigJQgaS5lLiB0aGUgQ0xJIGlzIHJ1bm5pbmcgb24gdGhlXG4gKiBob3N0LCBvdXRzaWRlIHRoZSBjb250YWluZXIuIE1vdW50cyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhcyBgL3dvcmtzcGFjZWAgc29cbiAqIHRoZSBzY2FmZm9sZGVkIGZpbGVzIGFyZSB3cml0dGVuIGJhY2sgdG8gdGhlIGhvc3QgZmlsZXN5c3RlbS5cbiAqXG4gKiBUaGUgY29udGFpbmVyIHJ1bnMgYXMgdGhlIGhvc3QgdWlkL2dpZCB3aGVuZXZlciBwb3NzaWJsZSBzbyBzY2FmZm9sZGVkIGZpbGVzXG4gKiBhcmUgbmV2ZXIgcm9vdC1vd25lZCAocG9zdC1ob2MgYGNob3duYCBpcyB1bnJlbGlhYmxlIGFjcm9zcyBEb2NrZXIgc2V0dXBzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkluQnVpbGRlcihvcHRzOiBBcGlPcHRpb25zKTogbmV2ZXIge1xuXHRjb25zdCB0YXJnZXREaXIgPSByZXNvbHZlKG9wdHMuZCA/PyBcIi5cIik7XG5cdGNvbnN0IHByb2plY3ROYW1lID0gYmFzZW5hbWUodGFyZ2V0RGlyKTtcblx0bWtkaXJTeW5jKHRhcmdldERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cdC8vIEhvc3Qtb3duZWQgc28gaW5pdGlhbGl6ZUNvbW1hbmQgY2FuIGFsd2F5cyB3cml0ZSBoZXJlIGV2ZW4gaWYgc29tZXRoaW5nXG5cdC8vIGVsc2UgaW4gLmRldmNvbnRhaW5lciBlbmRzIHVwIG9kZGx5IG93bmVkLlxuXHRta2RpclN5bmMocmVzb2x2ZSh0YXJnZXREaXIsIFwiLmRldmNvbnRhaW5lclwiLCBcIm5wbS1hdXRoXCIpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuXHQvLyBFbnN1cmUgRG9ja2VyIGlzIGF2YWlsYWJsZS5cblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJkb2NrZXJcIiwgW1wiaW5mb1wiXSwgeyBzdGRpbzogXCJwaXBlXCIgfSk7XG5cdH0gY2F0Y2gge1xuXHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcIlxcbiAgRG9ja2VyIGlzIHJlcXVpcmVkIHRvIHNjYWZmb2xkIGEgRGVjb2hlcmUgcHJvamVjdC5cXG5cIiArXG5cdFx0XHRcdFwiICBJbnN0YWxsIERvY2tlciBEZXNrdG9wOiBodHRwczovL3d3dy5kb2NrZXIuY29tL3Byb2R1Y3RzL2RvY2tlci1kZXNrdG9wXFxuXCIsXG5cdFx0KTtcblx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdH1cblxuXHRjb25zdCBob3N0VWlkID0gcHJvY2Vzcy5nZXR1aWQ/LigpO1xuXHRjb25zdCBob3N0R2lkID0gcHJvY2Vzcy5nZXRnaWQ/LigpID8/IGhvc3RVaWQ7XG5cdGNvbnN0IHJ1bkFzSG9zdFVzZXIgPSBob3N0VWlkICE9IG51bGwgJiYgaG9zdEdpZCAhPSBudWxsO1xuXG5cdC8vIEFub255bW91cyByb290LW93bmVkIHZvbHVtZXMgYXJlIG5vdCB3cml0YWJsZSB3aGVuIHdlIGRyb3AgcHJpdmlsZWdlcy5cblx0Y29uc3QgbnBtQ2FjaGVEaXIgPSByZXNvbHZlKGhvbWVkaXIoKSwgXCIuY2FjaGUvZGVjb2hlcmUtY3JlYXRlL25wbVwiKTtcblx0bWtkaXJTeW5jKG5wbUNhY2hlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuXHRjb25zdCB2b2x1bWVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIi12XCIsXG5cdFx0YCR7dGFyZ2V0RGlyfTovd29ya3NwYWNlYCxcblx0XHRcIi12XCIsXG5cdFx0YCR7bnBtQ2FjaGVEaXJ9Oi9ucG0tY2FjaGVgLFxuXHRdO1xuXG5cdGNvbnN0IGVudkFyZ3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiLWVcIixcblx0XHRcIkRFQ09IRVJFX0JVSUxERVI9MVwiLFxuXHRcdC8vIEhvc3QgZGlyIGJhc2VuYW1lIOKAlCBjb250YWluZXIgY3dkIGlzIC93b3Jrc3BhY2Ugc28gYmFzZW5hbWUgd291bGQgYmUgd3JvbmcuXG5cdFx0XCItZVwiLFxuXHRcdGBERUNPSEVSRV9QUk9KRUNUX05BTUU9JHtwcm9qZWN0TmFtZX1gLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfQ0FDSEU9L25wbS1jYWNoZVwiLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfUFJFRkVSX09GRkxJTkU9dHJ1ZVwiLFxuXHRcdC8vIFdyaXRhYmxlIEhPTUUgZm9yIG5wbSAvIGF1dGgwIENMSSB3aGVuIG5vdCBydW5uaW5nIGFzIGltYWdlIHJvb3Qvbm9kZS5cblx0XHRcIi1lXCIsXG5cdFx0XCJIT01FPS90bXAvZGVjb2hlcmUtY3JlYXRlLWhvbWVcIixcblx0XTtcblxuXHQvLyBNb3VudCBob3N0IC5ucG1yYyB3aGVyZSB0aGUgbm9uLXJvb3QgcHJvY2VzcyBjYW4gcmVhZCBpdC5cblx0Y29uc3QgbnBtcmNQYXRoID0gcmVzb2x2ZShob21lZGlyKCksIFwiLm5wbXJjXCIpO1xuXHRpZiAoZXhpc3RzU3luYyhucG1yY1BhdGgpKSB7XG5cdFx0dm9sdW1lcy5wdXNoKFwiLXZcIiwgYCR7bnBtcmNQYXRofTovdG1wL2hvc3QtbnBtcmM6cm9gKTtcblx0XHRlbnZBcmdzLnB1c2goXCItZVwiLCBcIk5QTV9DT05GSUdfVVNFUkNPTkZJRz0vdG1wL2hvc3QtbnBtcmNcIik7XG5cdH1cblxuXHRjb25zdCB1c2VyQXJnczogc3RyaW5nW10gPSBbXTtcblx0aWYgKHJ1bkFzSG9zdFVzZXIpIHtcblx0XHR1c2VyQXJncy5wdXNoKFwiLS11c2VyXCIsIGAke2hvc3RVaWR9OiR7aG9zdEdpZH1gKTtcblx0fSBlbHNlIGlmIChob3N0VWlkICE9IG51bGwpIHtcblx0XHQvLyBGYWxsYmFjayBmb3IgZW52aXJvbm1lbnRzIHdpdGhvdXQgZ2V0Z2lkOiBrZWVwIGxlZ2FjeSBjaG93biBwYXRoLlxuXHRcdGVudkFyZ3MucHVzaChcIi1lXCIsIGBIT1NUX1VJRD0ke2hvc3RVaWR9YCk7XG5cdFx0aWYgKGhvc3RHaWQgIT0gbnVsbCkgZW52QXJncy5wdXNoKFwiLWVcIiwgYEhPU1RfR0lEPSR7aG9zdEdpZH1gKTtcblx0fVxuXG5cdGNvbnN0IGNvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcIndlYmFwaVwiLCBcIi1kXCIsIFwiLlwiXTtcblx0aWYgKG9wdHMuZGF0YWJhc2VQcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tZGF0YWJhc2VcIiwgb3B0cy5kYXRhYmFzZVByb3ZpZGVyKTtcblx0fVxuXHRpZiAob3B0cy5hdXRoUHJvdmlkZXIgIT0gbnVsbCkge1xuXHRcdGNvbW1hbmRBcmdzLnB1c2goXCItLWF1dGhcIiwgb3B0cy5hdXRoUHJvdmlkZXIpO1xuXHR9XG5cdGlmIChvcHRzLnBvc3RtYW5Qcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tcG9zdG1hblwiLCBvcHRzLnBvc3RtYW5Qcm92aWRlcik7XG5cdH1cblx0aWYgKG9wdHMuaW5zdGFsbERlcGVuZGVuY2llcyAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0taW5zdGFsbFwiLCBvcHRzLmluc3RhbGxEZXBlbmRlbmNpZXMpO1xuXHR9XG5cblx0Y29uc29sZS5sb2coXCIgIFJ1bm5pbmcgc2NhZmZvbGRpbmcgaW4gYSBzYW5kYm94ZWQgY29udGFpbmVyLi4uXFxuXCIpO1xuXG5cdC8vIE9ubHkgYWxsb2NhdGUgYSBUVFkgd2hlbiBzdGRpbiBpcyBpdHNlbGYgYSBUVFkg4oCUIGF2b2lkcyBhIGh1bmcgcHJvY2Vzc1xuXHQvLyBpbiBub24taW50ZXJhY3RpdmUgZW52aXJvbm1lbnRzIChwaXBlcywgQ0ksIHNjcmlwdHMpLlxuXHRjb25zdCB0dHlGbGFncyA9IHByb2Nlc3Muc3RkaW4uaXNUVFkgPyBbXCItaXRcIl0gOiBbXCItaVwiXTtcblxuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXG5cdFx0XCJkb2NrZXJcIixcblx0XHRbXG5cdFx0XHRcInJ1blwiLFxuXHRcdFx0XCItLXJtXCIsXG5cdFx0XHQuLi50dHlGbGFncyxcblx0XHRcdC4uLnVzZXJBcmdzLFxuXHRcdFx0Li4udm9sdW1lcyxcblx0XHRcdC4uLmVudkFyZ3MsXG5cdFx0XHRcIi13XCIsXG5cdFx0XHRcIi93b3Jrc3BhY2VcIixcblx0XHRcdEJVSUxERVJfSU1BR0UsXG5cdFx0XHQuLi5jb21tYW5kQXJncyxcblx0XHRdLFxuXHRcdHsgc3RkaW86IFwiaW5oZXJpdFwiIH0sXG5cdCk7XG5cblx0aWYgKHJlc3VsdC5zdGF0dXMgPT09IDApIHtcblx0XHRjb25zb2xlLmxvZyhgXFxuICBTY2FmZm9sZCBjb21wbGV0ZSFcXG5cXG4gIE9wZW4geW91ciBwcm9qZWN0OlxcblxcbiAgICBjb2RlICR7dGFyZ2V0RGlyfVxcbmApO1xuXHR9XG5cblx0cHJvY2Vzcy5leGl0KHJlc3VsdC5zdGF0dXMgPz8gMCk7XG59XG4iXSwibmFtZXMiOlsicnVuSW5CdWlsZGVyIiwiQlVJTERFUl9JTUFHRSIsIkNSRUFURV9JTUFHRV9SRVBPU0lUT1JZIiwiQ1JFQVRFX1ZFUlNJT04iLCJvcHRzIiwidGFyZ2V0RGlyIiwicmVzb2x2ZSIsImQiLCJwcm9qZWN0TmFtZSIsImJhc2VuYW1lIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwiZXhlY0ZpbGVTeW5jIiwic3RkaW8iLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsImhvc3RVaWQiLCJnZXR1aWQiLCJob3N0R2lkIiwiZ2V0Z2lkIiwicnVuQXNIb3N0VXNlciIsIm5wbUNhY2hlRGlyIiwiaG9tZWRpciIsInZvbHVtZXMiLCJlbnZBcmdzIiwibnBtcmNQYXRoIiwiZXhpc3RzU3luYyIsInB1c2giLCJ1c2VyQXJncyIsImNvbW1hbmRBcmdzIiwiZGF0YWJhc2VQcm92aWRlciIsImF1dGhQcm92aWRlciIsInBvc3RtYW5Qcm92aWRlciIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJsb2ciLCJ0dHlGbGFncyIsInN0ZGluIiwiaXNUVFkiLCJyZXN1bHQiLCJzcGF3blN5bmMiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiI7Ozs7K0JBbUJnQkE7OztlQUFBQTs7O21DQW5Cd0I7d0JBQ0Y7d0JBQ2Q7MEJBQ1U7eUJBQ3NCO0FBR3hELE1BQU1DLGdCQUFnQixHQUFHQyxnQ0FBdUIsQ0FBQyxDQUFDLEVBQUVDLHVCQUFjLEVBQUU7QUFZN0QsU0FBU0gsYUFBYUksSUFBZ0I7SUFDNUMsTUFBTUMsWUFBWUMsSUFBQUEsaUJBQU8sRUFBQ0YsS0FBS0csQ0FBQyxJQUFJO0lBQ3BDLE1BQU1DLGNBQWNDLElBQUFBLGtCQUFRLEVBQUNKO0lBQzdCSyxJQUFBQSxpQkFBUyxFQUFDTCxXQUFXO1FBQUVNLFdBQVc7SUFBSztJQUN2QywwRUFBMEU7SUFDMUUsNkNBQTZDO0lBQzdD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
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcnVubmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlU3luYywgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSwgQ1JFQVRFX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEFwaU9wdGlvbnMgfSBmcm9tIFwiLi93ZWJhcGkvY3JlYXRlLWFwaS5qc1wiO1xuXG5jb25zdCBCVUlMREVSX0lNQUdFID0gYCR7Q1JFQVRFX0lNQUdFX1JFUE9TSVRPUll9OiR7Q1JFQVRFX1ZFUlNJT059YDtcblxuLyoqXG4gKiBSdW4gdGhlIHNjYWZmb2xkIGluc2lkZSBhIHByZS1idWlsdCBEb2NrZXIgYnVpbGRlciBpbWFnZS5cbiAqXG4gKiBDYWxsZWQgd2hlbiBgREVDT0hFUkVfQlVJTERFUmAgaXMgbm90IHNldCDigJQgaS5lLiB0aGUgQ0xJIGlzIHJ1bm5pbmcgb24gdGhlXG4gKiBob3N0LCBvdXRzaWRlIHRoZSBjb250YWluZXIuIE1vdW50cyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhcyBgL3dvcmtzcGFjZWAgc29cbiAqIHRoZSBzY2FmZm9sZGVkIGZpbGVzIGFyZSB3cml0dGVuIGJhY2sgdG8gdGhlIGhvc3QgZmlsZXN5c3RlbS5cbiAqXG4gKiBUaGUgY29udGFpbmVyIHJ1bnMgYXMgdGhlIGhvc3QgdWlkL2dpZCB3aGVuZXZlciBwb3NzaWJsZSBzbyBzY2FmZm9sZGVkIGZpbGVzXG4gKiBhcmUgbmV2ZXIgcm9vdC1vd25lZCAocG9zdC1ob2MgYGNob3duYCBpcyB1bnJlbGlhYmxlIGFjcm9zcyBEb2NrZXIgc2V0dXBzKS5cbiAqXG4gKiBIb3N0IGB+Ly5jb25maWcvYXV0aDBgIGlzIG1vdW50ZWQgd2hlbiBwcmVzZW50IHNvIHRoZSBBdXRoMCBDTEkgY2FuIHJldXNlXG4gKiBjcmVkZW50aWFscyAocmVxdWlyZWQgZm9yIFBvc3RtYW4gU1BBIC8gYXV0aDBDbGllbnRJZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5JbkJ1aWxkZXIob3B0czogQXBpT3B0aW9ucyk6IG5ldmVyIHtcblx0Y29uc3QgdGFyZ2V0RGlyID0gcmVzb2x2ZShvcHRzLmQgPz8gXCIuXCIpO1xuXHRjb25zdCBwcm9qZWN0TmFtZSA9IGJhc2VuYW1lKHRhcmdldERpcik7XG5cdG1rZGlyU3luYyh0YXJnZXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXHQvLyBIb3N0LW93bmVkIHNvIGluaXRpYWxpemVDb21tYW5kIGNhbiBhbHdheXMgd3JpdGUgaGVyZSBldmVuIGlmIHNvbWV0aGluZ1xuXHQvLyBlbHNlIGluIC5kZXZjb250YWluZXIgZW5kcyB1cCBvZGRseSBvd25lZC5cblx0bWtkaXJTeW5jKHJlc29sdmUodGFyZ2V0RGlyLCBcIi5kZXZjb250YWluZXJcIiwgXCJucG0tYXV0aFwiKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0Ly8gRW5zdXJlIERvY2tlciBpcyBhdmFpbGFibGUuXG5cdHRyeSB7XG5cdFx0ZXhlY0ZpbGVTeW5jKFwiZG9ja2VyXCIsIFtcImluZm9cIl0sIHsgc3RkaW86IFwicGlwZVwiIH0pO1xuXHR9IGNhdGNoIHtcblx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XCJcXG4gIERvY2tlciBpcyByZXF1aXJlZCB0byBzY2FmZm9sZCBhIERlY29oZXJlIHByb2plY3QuXFxuXCIgK1xuXHRcdFx0XHRcIiAgSW5zdGFsbCBEb2NrZXIgRGVza3RvcDogaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS9wcm9kdWN0cy9kb2NrZXItZGVza3RvcFxcblwiLFxuXHRcdCk7XG5cdFx0cHJvY2Vzcy5leGl0KDEpO1xuXHR9XG5cblx0Y29uc3QgaG9zdFVpZCA9IHByb2Nlc3MuZ2V0dWlkPy4oKTtcblx0Y29uc3QgaG9zdEdpZCA9IHByb2Nlc3MuZ2V0Z2lkPy4oKSA/PyBob3N0VWlkO1xuXHRjb25zdCBydW5Bc0hvc3RVc2VyID0gaG9zdFVpZCAhPSBudWxsICYmIGhvc3RHaWQgIT0gbnVsbDtcblxuXHQvLyBBbm9ueW1vdXMgcm9vdC1vd25lZCB2b2x1bWVzIGFyZSBub3Qgd3JpdGFibGUgd2hlbiB3ZSBkcm9wIHByaXZpbGVnZXMuXG5cdGNvbnN0IG5wbUNhY2hlRGlyID0gcmVzb2x2ZShob21lZGlyKCksIFwiLmNhY2hlL2RlY29oZXJlLWNyZWF0ZS9ucG1cIik7XG5cdG1rZGlyU3luYyhucG1DYWNoZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0Ly8gSXNvbGF0ZWQgSE9NRSBzbyAtLXVzZXIgaG9zdC11aWQgY2FuIHdyaXRlIHdpdGhvdXQgYSBtYXRjaGluZyAvZXRjL3Bhc3N3ZCBlbnRyeS5cblx0Y29uc3QgYnVpbGRlckhvbWUgPSBcIi90bXAvZGVjb2hlcmUtY3JlYXRlLWhvbWVcIjtcblxuXHRjb25zdCB2b2x1bWVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIi12XCIsXG5cdFx0YCR7dGFyZ2V0RGlyfTovd29ya3NwYWNlYCxcblx0XHRcIi12XCIsXG5cdFx0YCR7bnBtQ2FjaGVEaXJ9Oi9ucG0tY2FjaGVgLFxuXHRdO1xuXG5cdGNvbnN0IGVudkFyZ3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiLWVcIixcblx0XHRcIkRFQ09IRVJFX0JVSUxERVI9MVwiLFxuXHRcdC8vIEhvc3QgZGlyIGJhc2VuYW1lIOKAlCBjb250YWluZXIgY3dkIGlzIC93b3Jrc3BhY2Ugc28gYmFzZW5hbWUgd291bGQgYmUgd3JvbmcuXG5cdFx0XCItZVwiLFxuXHRcdGBERUNPSEVSRV9QUk9KRUNUX05BTUU9JHtwcm9qZWN0TmFtZX1gLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfQ0FDSEU9L25wbS1jYWNoZVwiLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfUFJFRkVSX09GRkxJTkU9dHJ1ZVwiLFxuXHRcdFwiLWVcIixcblx0XHRgSE9NRT0ke2J1aWxkZXJIb21lfWAsXG5cdF07XG5cblx0Ly8gTW91bnQgaG9zdCAubnBtcmMgd2hlcmUgdGhlIG5vbi1yb290IHByb2Nlc3MgY2FuIHJlYWQgaXQuXG5cdGNvbnN0IG5wbXJjUGF0aCA9IHJlc29sdmUoaG9tZWRpcigpLCBcIi5ucG1yY1wiKTtcblx0aWYgKGV4aXN0c1N5bmMobnBtcmNQYXRoKSkge1xuXHRcdHZvbHVtZXMucHVzaChcIi12XCIsIGAke25wbXJjUGF0aH06L3RtcC9ob3N0LW5wbXJjOnJvYCk7XG5cdFx0ZW52QXJncy5wdXNoKFwiLWVcIiwgXCJOUE1fQ09ORklHX1VTRVJDT05GSUc9L3RtcC9ob3N0LW5wbXJjXCIpO1xuXHR9XG5cblx0Ly8gQXV0aDAgQ0xJIHJlYWRzIGNyZWRlbnRpYWxzIGZyb20gJEhPTUUvLmNvbmZpZy9hdXRoMCDigJQgd2l0aG91dCB0aGlzIG1vdW50LFxuXHQvLyBlbnN1cmVTcGFBcHAgZmFpbHMgYW5kIFBvc3RtYW4gZ2V0cyBhbiBlbXB0eSBhdXRoMENsaWVudElkLlxuXHRjb25zdCBhdXRoMENvbmZpZ0RpciA9IHJlc29sdmUoaG9tZWRpcigpLCBcIi5jb25maWcvYXV0aDBcIik7XG5cdGlmIChleGlzdHNTeW5jKGF1dGgwQ29uZmlnRGlyKSkge1xuXHRcdHZvbHVtZXMucHVzaChcIi12XCIsIGAke2F1dGgwQ29uZmlnRGlyfToke2J1aWxkZXJIb21lfS8uY29uZmlnL2F1dGgwYCk7XG5cdH1cblxuXHRjb25zdCB1c2VyQXJnczogc3RyaW5nW10gPSBbXTtcblx0aWYgKHJ1bkFzSG9zdFVzZXIpIHtcblx0XHR1c2VyQXJncy5wdXNoKFwiLS11c2VyXCIsIGAke2hvc3RVaWR9OiR7aG9zdEdpZH1gKTtcblx0fSBlbHNlIGlmIChob3N0VWlkICE9IG51bGwpIHtcblx0XHQvLyBGYWxsYmFjayBmb3IgZW52aXJvbm1lbnRzIHdpdGhvdXQgZ2V0Z2lkOiBrZWVwIGxlZ2FjeSBjaG93biBwYXRoLlxuXHRcdGVudkFyZ3MucHVzaChcIi1lXCIsIGBIT1NUX1VJRD0ke2hvc3RVaWR9YCk7XG5cdFx0aWYgKGhvc3RHaWQgIT0gbnVsbCkgZW52QXJncy5wdXNoKFwiLWVcIiwgYEhPU1RfR0lEPSR7aG9zdEdpZH1gKTtcblx0fVxuXG5cdGNvbnN0IGNvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcIndlYmFwaVwiLCBcIi1kXCIsIFwiLlwiXTtcblx0aWYgKG9wdHMuZGF0YWJhc2VQcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tZGF0YWJhc2VcIiwgb3B0cy5kYXRhYmFzZVByb3ZpZGVyKTtcblx0fVxuXHRpZiAob3B0cy5hdXRoUHJvdmlkZXIgIT0gbnVsbCkge1xuXHRcdGNvbW1hbmRBcmdzLnB1c2goXCItLWF1dGhcIiwgb3B0cy5hdXRoUHJvdmlkZXIpO1xuXHR9XG5cdGlmIChvcHRzLnBvc3RtYW5Qcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tcG9zdG1hblwiLCBvcHRzLnBvc3RtYW5Qcm92aWRlcik7XG5cdH1cblx0aWYgKG9wdHMuaW5zdGFsbERlcGVuZGVuY2llcyAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0taW5zdGFsbFwiLCBvcHRzLmluc3RhbGxEZXBlbmRlbmNpZXMpO1xuXHR9XG5cblx0Y29uc29sZS5sb2coXCIgIFJ1bm5pbmcgc2NhZmZvbGRpbmcgaW4gYSBzYW5kYm94ZWQgY29udGFpbmVyLi4uXFxuXCIpO1xuXG5cdC8vIE9ubHkgYWxsb2NhdGUgYSBUVFkgd2hlbiBzdGRpbiBpcyBpdHNlbGYgYSBUVFkg4oCUIGF2b2lkcyBhIGh1bmcgcHJvY2Vzc1xuXHQvLyBpbiBub24taW50ZXJhY3RpdmUgZW52aXJvbm1lbnRzIChwaXBlcywgQ0ksIHNjcmlwdHMpLlxuXHRjb25zdCB0dHlGbGFncyA9IHByb2Nlc3Muc3RkaW4uaXNUVFkgPyBbXCItaXRcIl0gOiBbXCItaVwiXTtcblxuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXG5cdFx0XCJkb2NrZXJcIixcblx0XHRbXG5cdFx0XHRcInJ1blwiLFxuXHRcdFx0XCItLXJtXCIsXG5cdFx0XHQuLi50dHlGbGFncyxcblx0XHRcdC4uLnVzZXJBcmdzLFxuXHRcdFx0Li4udm9sdW1lcyxcblx0XHRcdC4uLmVudkFyZ3MsXG5cdFx0XHRcIi13XCIsXG5cdFx0XHRcIi93b3Jrc3BhY2VcIixcblx0XHRcdEJVSUxERVJfSU1BR0UsXG5cdFx0XHQuLi5jb21tYW5kQXJncyxcblx0XHRdLFxuXHRcdHsgc3RkaW86IFwiaW5oZXJpdFwiIH0sXG5cdCk7XG5cblx0aWYgKHJlc3VsdC5zdGF0dXMgPT09IDApIHtcblx0XHRjb25zb2xlLmxvZyhgXFxuICBTY2FmZm9sZCBjb21wbGV0ZSFcXG5cXG4gIE9wZW4geW91ciBwcm9qZWN0OlxcblxcbiAgICBjb2RlICR7dGFyZ2V0RGlyfVxcbmApO1xuXHR9XG5cblx0cHJvY2Vzcy5leGl0KHJlc3VsdC5zdGF0dXMgPz8gMCk7XG59XG4iXSwibmFtZXMiOlsicnVuSW5CdWlsZGVyIiwiQlVJTERFUl9JTUFHRSIsIkNSRUFURV9JTUFHRV9SRVBPU0lUT1JZIiwiQ1JFQVRFX1ZFUlNJT04iLCJvcHRzIiwidGFyZ2V0RGlyIiwicmVzb2x2ZSIsImQiLCJwcm9qZWN0TmFtZSIsImJhc2VuYW1lIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwiZXhlY0ZpbGVTeW5jIiwic3RkaW8iLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsImhvc3RVaWQiLCJnZXR1aWQiLCJob3N0R2lkIiwiZ2V0Z2lkIiwicnVuQXNIb3N0VXNlciIsIm5wbUNhY2hlRGlyIiwiaG9tZWRpciIsImJ1aWxkZXJIb21lIiwidm9sdW1lcyIsImVudkFyZ3MiLCJucG1yY1BhdGgiLCJleGlzdHNTeW5jIiwicHVzaCIsImF1dGgwQ29uZmlnRGlyIiwidXNlckFyZ3MiLCJjb21tYW5kQXJncyIsImRhdGFiYXNlUHJvdmlkZXIiLCJhdXRoUHJvdmlkZXIiLCJwb3N0bWFuUHJvdmlkZXIiLCJpbnN0YWxsRGVwZW5kZW5jaWVzIiwibG9nIiwidHR5RmxhZ3MiLCJzdGRpbiIsImlzVFRZIiwicmVzdWx0Iiwic3Bhd25TeW5jIiwic3RhdHVzIl0sIm1hcHBpbmdzIjoiOzs7OytCQXNCZ0JBOzs7ZUFBQUE7OzttQ0F0QndCO3dCQUNGO3dCQUNkOzBCQUNVO3lCQUNzQjtBQUd4RCxNQUFNQyxnQkFBZ0IsR0FBR0MsZ0NBQXVCLENBQUMsQ0FBQyxFQUFFQyx1QkFBYyxFQUFFO0FBZTdELFNBQVNILGFBQWFJLElBQWdCO0lBQzVDLE1BQU1DLFlBQVlDLElBQUFBLGlCQUFPLEVBQUNGLEtBQUtHLENBQUMsSUFBSTtJQUNwQyxNQUFNQyxjQUFjQyxJQUFBQSxrQkFBUSxFQUFDSjtJQUM3QkssSUFBQUEsaUJBQVMsRUFBQ0wsV0FBVztRQUFFTSxXQUFXO0lBQUs7SUFDdkMsMEVBQTBFO0lBQzFFLDZDQUE2QztJQUM3Q0QsSUFBQUEsaUJBQVMsRUFBQ0osSUFBQUEsaUJBQU8sRUFBQ0QsV0FBVyxpQkFBaUIsYUFBYTtRQUFFTSxXQUFXO0lBQUs7SUFFN0UsOEJBQThCO0lBQzlCLElBQUk7UUFDSEMsSUFBQUEsK0JBQVksRUFBQyxVQUFVO1lBQUM7U0FBTyxFQUFFO1lBQUVDLE9BQU87UUFBTztJQUNsRCxFQUFFLE9BQU07UUFDUEMsUUFBUUMsS0FBSyxDQUNaLDZEQUNDO1FBRUZDLFFBQVFDLElBQUksQ0FBQztJQUNkO0lBRUEsTUFBTUMsVUFBVUYsUUFBUUcsTUFBTTtJQUM5QixNQUFNQyxVQUFVSixRQUFRSyxNQUFNLFFBQVFIO0lBQ3RDLE1BQU1JLGdCQUFnQkosV0FBVyxRQUFRRSxXQUFXO0lBRXBELHlFQUF5RTtJQUN6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
@@ -20,6 +20,8 @@ _export(exports, {
20
20
  }
21
21
  });
22
22
  const _nodecrypto = require("node:crypto");
23
+ const _nodefs = require("node:fs");
24
+ const _nodepath = require("node:path");
23
25
  const _prompt = require("../../domain/prompt.js");
24
26
  const _const = require("../../models/const.js");
25
27
  const _auth0cli = /*#__PURE__*/ _interop_require_wildcard(require("./auth0-cli.js"));
@@ -481,28 +483,46 @@ function yamlQuote(value) {
481
483
  }
482
484
  return files;
483
485
  }
484
- async function scaffold(workspace, options) {
485
- if (options.postmanProvider === "none" || options.postmanProvider == null) return;
486
- const authConfigModel = workspace.getModel(_const.WELL_KNOWN_FILES.AUTH_CONFIG);
487
- const authCfg = authConfigModel?.config;
488
- let spaClientId;
489
- if (authCfg?.issuerBaseUrl) {
486
+ /** Read a previously scaffolded auth0ClientId so re-scaffold never blanks it. */ function readExistingSpaClientId(targetDir, projectName) {
487
+ const envPath = (0, _nodepath.join)(targetDir, "postman/environments", `${projectName}-Local.environment.yaml`);
488
+ if (!(0, _nodefs.existsSync)(envPath)) return undefined;
489
+ const text = (0, _nodefs.readFileSync)(envPath, "utf8");
490
+ const match = text.match(/key:\s*auth0ClientId\s*\n\s*value:\s*["']?([^"'\n]+)/);
491
+ const value = match?.[1]?.trim();
492
+ return value && value.length > 0 ? value : undefined;
493
+ }
494
+ /**
495
+ * Resolve the Postman SPA client id. Never returns empty — preserves an existing
496
+ * env value on Auth0 failure, otherwise throws so we do not write a blank env.
497
+ */ function resolveSpaClientId(workspace) {
498
+ const appName = `${workspace.name} Postman`;
499
+ try {
500
+ const app = _auth0cli.ensureSpaApp(appName, [
501
+ ...POSTMAN_CALLBACKS
502
+ ]);
503
+ console.log(app.reused ? ` ✓ Reusing Auth0 SPA app for Postman PKCE (${app.client_id})` : ` ✓ Auth0 SPA app created for Postman PKCE (${app.client_id})`);
490
504
  try {
491
- const app = _auth0cli.ensureSpaApp(`${workspace.name} Postman`, [
492
- ...POSTMAN_CALLBACKS
493
- ]);
494
- spaClientId = app.client_id;
495
- console.log(app.reused ? ` ✓ Reusing Auth0 SPA app for Postman PKCE (${spaClientId})` : ` ✓ Auth0 SPA app created for Postman PKCE (${spaClientId})`);
496
- try {
497
- _auth0cli.enableConnectionForClient(_auth0cli.DB_CONNECTION_NAME, spaClientId);
498
- console.log(` ✓ Enabled ${_auth0cli.DB_CONNECTION_NAME} on Postman SPA`);
499
- } catch (err) {
500
- console.error(` ✗ Failed to enable DB connection on SPA: ${err instanceof Error ? err.message : err}`);
501
- }
505
+ _auth0cli.enableConnectionForClient(_auth0cli.DB_CONNECTION_NAME, app.client_id);
506
+ console.log(` ✓ Enabled ${_auth0cli.DB_CONNECTION_NAME} on Postman SPA`);
502
507
  } catch (err) {
503
- console.error(` ✗ Failed to ensure Auth0 SPA app — set auth0ClientId in the environment: ${err instanceof Error ? err.message : err}`);
508
+ console.error(` ✗ Failed to enable DB connection on SPA: ${err instanceof Error ? err.message : err}`);
504
509
  }
510
+ return app.client_id;
511
+ } catch (err) {
512
+ const existing = readExistingSpaClientId(workspace.targetDir, workspace.name);
513
+ if (existing) {
514
+ console.error(` ✗ Failed to ensure Auth0 SPA app (${err instanceof Error ? err.message : err})`);
515
+ console.log(` ✓ Keeping existing auth0ClientId from Postman environment (${existing})`);
516
+ return existing;
517
+ }
518
+ throw new Error(`Failed to ensure Auth0 SPA app for Postman — auth0ClientId would be empty: ${err instanceof Error ? err.message : err}`);
505
519
  }
520
+ }
521
+ async function scaffold(workspace, options) {
522
+ if (options.postmanProvider === "none" || options.postmanProvider == null) return;
523
+ const authConfigModel = workspace.getModel(_const.WELL_KNOWN_FILES.AUTH_CONFIG);
524
+ const authCfg = authConfigModel?.config;
525
+ const spaClientId = authCfg?.issuerBaseUrl ? resolveSpaClientId(workspace) : undefined;
506
526
  const auth0Env = authCfg?.issuerBaseUrl ? {
507
527
  auth0Domain: authCfg.issuerBaseUrl.replace(/^https?:\/\//, ""),
508
528
  auth0Audience: authCfg.audience,
@@ -595,4 +615,4 @@ const PostmanFeature = {
595
615
  scaffold
596
616
  };
597
617
 
598
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL3Bvc3RtYW4uZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIjtcbmltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVNjYWZmb2xkIH0gZnJvbSBcIi4uLy4uL21vZGVscy9wcm9qZWN0Lm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmUgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2NhZmZvbGQuc2VydmljZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBdXRoQ29uZmlnTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2F1dGgtY29uZmlnLm1vZGVsLmpzXCI7XG5pbXBvcnQgKiBhcyBhdXRoMENsaSBmcm9tIFwiLi9hdXRoMC1jbGkuanNcIjtcblxuLyoqIFBvc3RtYW4gT0F1dGggY2FsbGJhY2sgVVJMcyAocG9wdXAgKyBcIkF1dGhvcml6ZSB1c2luZyBicm93c2VyXCIpLiAqL1xuY29uc3QgUE9TVE1BTl9DQUxMQkFDS1MgPSBbXG5cdFwiaHR0cHM6Ly9vYXV0aC5wc3Rtbi5pby92MS9jYWxsYmFja1wiLFxuXHRcImh0dHBzOi8vb2F1dGgucHN0bW4uaW8vdjEvYnJvd3Nlci1jYWxsYmFja1wiLFxuXSBhcyBjb25zdDtcblxuLyoqIFNjb3BlcyByZXF1ZXN0ZWQgZm9yIEF1dGgwIGFjY2VzcyB0b2tlbnMgKE9JREMgKyBIZWxsbyBDQVNMIHBlcm1pc3Npb25zKS4gKi9cbmNvbnN0IFBPU1RNQU5fU0NPUEVTID0gW1xuXHRcIm9wZW5pZFwiLFxuXHRcInByb2ZpbGVcIixcblx0XCJlbWFpbFwiLFxuXHRcInJlYWQ6SGVsbG9cIixcblx0XCJjcmVhdGU6SGVsbG9cIixcblx0XCJ1cGRhdGU6SGVsbG9cIixcblx0XCJkZWxldGU6SGVsbG9cIixcbl0uam9pbihcIiBcIik7XG5cbmV4cG9ydCB0eXBlIFBvc3RtYW5PcHRpb25zID0ge1xuXHRwb3N0bWFuUHJvdmlkZXI/OiBcImFwaVwiIHwgXCJsb2NhbFwiIHwgXCJub25lXCI7XG5cdGFwaUtleT86IHN0cmluZztcblx0d29ya3NwYWNlSWQ/OiBzdHJpbmc7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBnZXRPcHRpb25zKFxuXHRfd29ya3NwYWNlOiBXb3Jrc3BhY2VTY2FmZm9sZCxcblx0Y2xpT3B0aW9uczogUGFydGlhbDxQb3N0bWFuT3B0aW9ucz4sXG4pOiBQcm9taXNlPFBhcnRpYWw8UG9zdG1hbk9wdGlvbnM+PiB7XG5cdGlmIChjbGlPcHRpb25zLnBvc3RtYW5Qcm92aWRlciAhPSBudWxsKSByZXR1cm4ge307XG5cblx0Y29uc3QgY2hvaWNlcyA9IFtcblx0XHR7IGxhYmVsOiBcIm5vbmVcIiBhcyBjb25zdCwgZGVzY3JpcHRpb246IFwic2tpcFwiIH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IFwibG9jYWxcIiBhcyBjb25zdCxcblx0XHRcdGRlc2NyaXB0aW9uOiBcIkxvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGZpbGVzIChubyBBUEkga2V5KVwiLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IFwiYXBpXCIgYXMgY29uc3QsXG5cdFx0XHRkZXNjcmlwdGlvbjogXCJhbHNvIHVwbG9hZCB0byBQb3N0bWFuLmNvbSAobmVlZHMgQVBJIGtleSlcIixcblx0XHR9LFxuXHRdO1xuXHRjb25zdCBzZWxlY3RlZCA9IGF3YWl0IHBpY2soXG5cdFx0XCJcXG4gIFBvc3RtYW46IFwiLFxuXHRcdGNob2ljZXMsXG5cdFx0KGMpID0+IGAke2MubGFiZWx9IOKAlCAke2MuZGVzY3JpcHRpb259YCxcblx0KTtcblx0Y29uc3QgcHJvdmlkZXIgPSBzZWxlY3RlZD8ubGFiZWwgPz8gXCJub25lXCI7XG5cblx0aWYgKHByb3ZpZGVyID09PSBcIm5vbmVcIikgcmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcIm5vbmVcIiB9O1xuXHRpZiAocHJvdmlkZXIgPT09IFwibG9jYWxcIikgcmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcImxvY2FsXCIgfTtcblxuXHRjb25zdCBhcGlLZXkgPVxuXHRcdHByb2Nlc3MuZW52LlBPU1RNQU5fQVBJX0tFWSA/P1xuXHRcdChhd2FpdCBpbXBvcnQoXCIuLi8uLi9kb21haW4vcHJvbXB0LmpzXCIpLnRoZW4oKG0pID0+XG5cdFx0XHRtLmFzayhcIlxcbiAgUG9zdG1hbiBBUEkga2V5IChhcHAuZ2V0cG9zdG1hbi5jb20vc2V0dGluZ3MvbWUvYXBpLWtleXMpOiBcIiksXG5cdFx0KSk7XG5cblx0Y29uc3QgaGVhZGVycyA9IHsgXCJYLUFwaS1LZXlcIjogYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXHRjb25zdCB3c1JlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7IGhlYWRlcnMgfSk7XG5cblx0aWYgKCF3c1Jlcy5vaykge1xuXHRcdGNvbnNvbGUuZXJyb3IoXCJcXG4gIFBvc3RtYW4gQVBJIGtleSBpbnZhbGlkIOKAlCBmYWxsaW5nIGJhY2sgdG8gbG9jYWwgZmlsZXMuXCIpO1xuXHRcdHJldHVybiB7IHBvc3RtYW5Qcm92aWRlcjogXCJsb2NhbFwiIH07XG5cdH1cblxuXHRjb25zdCB7IHdvcmtzcGFjZXMgfSA9IChhd2FpdCB3c1Jlcy5qc29uKCkpIGFzIHtcblx0XHR3b3Jrc3BhY2VzOiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0+O1xuXHR9O1xuXG5cdHR5cGUgV3NDaG9pY2UgPSB7IGxhYmVsOiBzdHJpbmc7IGlkOiBzdHJpbmcgfCBudWxsIH07XG5cdGNvbnN0IHdzQ2hvaWNlczogV3NDaG9pY2VbXSA9IFtcblx0XHR7IGxhYmVsOiBcIjxuZXcgd29ya3NwYWNlPlwiLCBpZDogbnVsbCB9LFxuXHRcdC4uLndvcmtzcGFjZXMubWFwKCh3KSA9PiAoeyBsYWJlbDogYCR7dy5uYW1lfSAoJHt3LnR5cGV9KWAsIGlkOiB3LmlkIH0pKSxcblx0XTtcblxuXHRjb25zdCB3c1BpY2tlZCA9IGF3YWl0IHBpY2soXCJcXG4gIFBvc3RtYW4gd29ya3NwYWNlOiBcIiwgd3NDaG9pY2VzLCAoYykgPT4gYy5sYWJlbCk7XG5cblx0bGV0IHdvcmtzcGFjZUlkOiBzdHJpbmc7XG5cdGlmICghd3NQaWNrZWQgfHwgd3NQaWNrZWQuaWQgPT09IG51bGwpIHtcblx0XHRjb25zdCB7IGFzayB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiKTtcblx0XHRjb25zdCB3c05hbWUgPSBhd2FpdCBhc2soYCAgV29ya3NwYWNlIG5hbWU6IGApO1xuXHRcdGNvbnN0IGNyZWF0ZVJlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7XG5cdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0aGVhZGVycyxcblx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgd29ya3NwYWNlOiB7IG5hbWU6IHdzTmFtZSwgdHlwZTogXCJwZXJzb25hbFwiIH0gfSksXG5cdFx0fSk7XG5cdFx0Y29uc3QgeyB3b3Jrc3BhY2U6IHdzIH0gPSAoYXdhaXQgY3JlYXRlUmVzLmpzb24oKSkgYXMgeyB3b3Jrc3BhY2U6IHsgaWQ6IHN0cmluZyB9IH07XG5cdFx0d29ya3NwYWNlSWQgPSB3cy5pZDtcblx0XHRjb25zb2xlLmxvZyhgICDinJMgV29ya3NwYWNlIGNyZWF0ZWQ6ICR7d3NOYW1lfWApO1xuXHR9IGVsc2Uge1xuXHRcdHdvcmtzcGFjZUlkID0gd3NQaWNrZWQuaWQ7XG5cdH1cblxuXHRyZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwiYXBpXCIsIGFwaUtleSwgd29ya3NwYWNlSWQgfTtcbn1cblxudHlwZSBBdXRoMEVudiA9IHtcblx0YXV0aDBEb21haW4/OiBzdHJpbmc7XG5cdGF1dGgwQXVkaWVuY2U/OiBzdHJpbmc7XG5cdGF1dGgwQ2xpZW50SWQ/OiBzdHJpbmc7XG59O1xuXG4vKiogdjIuMSBKU09OIOKAlCB1c2VkIGZvciBQb3N0bWFuLmNvbSBBUEkgdXBsb2FkIG9ubHkuICovXG5mdW5jdGlvbiBidWlsZENvbGxlY3Rpb25Kc29uKHByb2plY3ROYW1lOiBzdHJpbmcsIGF1dGg/OiBBdXRoMEVudik6IHVua25vd24ge1xuXHRjb25zdCBhdXRoT2JqID0gYXV0aD8uYXV0aDBEb21haW5cblx0XHQ/IHtcblx0XHRcdFx0dHlwZTogXCJvYXV0aDJcIixcblx0XHRcdFx0b2F1dGgyOiBbXG5cdFx0XHRcdFx0eyBrZXk6IFwiZ3JhbnRfdHlwZVwiLCB2YWx1ZTogXCJhdXRob3JpemF0aW9uX2NvZGVfd2l0aF9wa2NlXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXk6IFwiYXV0aFVybFwiLFxuXHRcdFx0XHRcdFx0dmFsdWU6IFwiaHR0cHM6Ly97e2F1dGgwRG9tYWlufX0vYXV0aG9yaXplP2F1ZGllbmNlPXt7YXV0aDBBdWRpZW5jZX19XCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0a2V5OiBcImFjY2Vzc1Rva2VuVXJsXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJodHRwczovL3t7YXV0aDBEb21haW59fS9vYXV0aC90b2tlblwiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNsaWVudElkXCIsIHZhbHVlOiBcInt7YXV0aDBDbGllbnRJZH19XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJzY29wZVwiLCB2YWx1ZTogUE9TVE1BTl9TQ09QRVMsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJyZWRpcmVjdF91cmlcIiwgdmFsdWU6IFBPU1RNQU5fQ0FMTEJBQ0tTWzBdLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwidXNlQnJvd3NlclwiLCB2YWx1ZTogXCJ0cnVlXCIsIHR5cGU6IFwiYm9vbGVhblwiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiYWRkVG9rZW5Ub1wiLCB2YWx1ZTogXCJoZWFkZXJcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNoYWxsZW5nZUFsZ29yaXRobVwiLCB2YWx1ZTogXCJTMjU2XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJjbGllbnRfYXV0aGVudGljYXRpb25cIiwgdmFsdWU6IFwiYm9keVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiY2xpZW50U2VjcmV0XCIsIHZhbHVlOiBcIlwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwidG9rZW5OYW1lXCIsIHZhbHVlOiBgJHtwcm9qZWN0TmFtZX0gQWNjZXNzIFRva2VuYCwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fVxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IGhlbGxvVXJsID0gKHBhdGg6IHN0cmluZywgcmF3OiBzdHJpbmcpID0+ICh7XG5cdFx0cmF3OiBge3tiYXNlVXJsfX0ke3Jhd31gLFxuXHRcdGhvc3Q6IFtcInt7YmFzZVVybH19XCJdLFxuXHRcdHBhdGg6IHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKSxcblx0fSk7XG5cblx0cmV0dXJuIHtcblx0XHRpbmZvOiB7XG5cdFx0XHRfcG9zdG1hbl9pZDogcmFuZG9tVVVJRCgpLFxuXHRcdFx0bmFtZTogYCR7cHJvamVjdE5hbWV9IFdlYkFQSWAsXG5cdFx0XHRzY2hlbWE6IFwiaHR0cHM6Ly9zY2hlbWEuZ2V0cG9zdG1hbi5jb20vanNvbi9jb2xsZWN0aW9uL3YyLjEuMC9jb2xsZWN0aW9uLmpzb25cIixcblx0XHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XHRcIk9wZW4gdGhlIHByb2plY3Qgcm9vdCBpbiBQb3N0bWFuIExvY2FsIFZpZXcgKG5vdCB0aGUgcG9zdG1hbi8gZm9sZGVyKS4gXCIgK1xuXHRcdFx0XHRcIlNlbGVjdCB0aGUgTG9jYWwgZW52aXJvbm1lbnQsIHRoZW4gQXV0aG9yaXphdGlvbiDihpIgR2V0IE5ldyBBY2Nlc3MgVG9rZW4gKFBLQ0UpLlwiLFxuXHRcdH0sXG5cdFx0Li4uKGF1dGhPYmogPyB7IGF1dGg6IGF1dGhPYmogfSA6IHt9KSxcblx0XHRpdGVtOiBbXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiSGVsbG9cIixcblx0XHRcdFx0aXRlbTogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6IFwiTGlzdCAoYW5vbnltb3VzKVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRhdXRoOiB7IHR5cGU6IFwibm9hdXRoXCIgfSxcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiBcIkdFVFwiLFxuXHRcdFx0XHRcdFx0XHR1cmw6IGhlbGxvVXJsKFwiaGVsbG9cIiwgXCIvaGVsbG9cIiksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogXCJHZXQgYnkgaWRcIixcblx0XHRcdFx0XHRcdHJlcXVlc3Q6IHtcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiBcIkdFVFwiLFxuXHRcdFx0XHRcdFx0XHR1cmw6IGhlbGxvVXJsKFwiaGVsbG8vOmlkXCIsIFwiL2hlbGxvLzppZFwiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIkNyZWF0ZVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRcdFx0XHRoZWFkZXI6IFt7IGtleTogXCJDb250ZW50LVR5cGVcIiwgdmFsdWU6IFwiYXBwbGljYXRpb24vanNvblwiIH1dLFxuXHRcdFx0XHRcdFx0XHRib2R5OiB7XG5cdFx0XHRcdFx0XHRcdFx0bW9kZTogXCJyYXdcIixcblx0XHRcdFx0XHRcdFx0XHRyYXc6ICd7XFxuICBcIm1lc3NhZ2VcIjogXCJoZWxsb1wiXFxufVxcbicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsb1wiLCBcIi9oZWxsb1wiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIlVwZGF0ZVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiUFVUXCIsXG5cdFx0XHRcdFx0XHRcdGhlYWRlcjogW3sga2V5OiBcIkNvbnRlbnQtVHlwZVwiLCB2YWx1ZTogXCJhcHBsaWNhdGlvbi9qc29uXCIgfV0sXG5cdFx0XHRcdFx0XHRcdGJvZHk6IHtcblx0XHRcdFx0XHRcdFx0XHRtb2RlOiBcInJhd1wiLFxuXHRcdFx0XHRcdFx0XHRcdHJhdzogJ3tcXG4gIFwibWVzc2FnZVwiOiBcInVwZGF0ZWRcIlxcbn1cXG4nLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR1cmw6IGhlbGxvVXJsKFwiaGVsbG8vOmlkXCIsIFwiL2hlbGxvLzppZFwiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIkRlbGV0ZVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiREVMRVRFXCIsXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsby86aWRcIiwgXCIvaGVsbG8vOmlkXCIpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSxcblx0XHRdLFxuXHR9O1xufVxuXG5mdW5jdGlvbiB5YW1sUXVvdGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICgvWzoje31bXFxdLCYqP3w8Pj0hJUBgXS8udGVzdCh2YWx1ZSkgfHwgdmFsdWUuaW5jbHVkZXMoXCJcXG5cIikgfHwgdmFsdWUgPT09IFwiXCIpIHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIExvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGVudmlyb25tZW50IChZQU1MKS4gKi9cbmZ1bmN0aW9uIGJ1aWxkRW52aXJvbm1lbnRZYW1sKG5hbWU6IHN0cmluZywgYXV0aD86IEF1dGgwRW52KTogc3RyaW5nIHtcblx0Y29uc3QgdmFsdWVzOiBBcnJheTx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0gW1xuXHRcdHsga2V5OiBcImJhc2VVcmxcIiwgdmFsdWU6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwXCIgfSxcblx0XTtcblx0aWYgKGF1dGg/LmF1dGgwRG9tYWluKSB7XG5cdFx0dmFsdWVzLnB1c2goXG5cdFx0XHR7IGtleTogXCJhdXRoMERvbWFpblwiLCB2YWx1ZTogYXV0aC5hdXRoMERvbWFpbiB9LFxuXHRcdFx0eyBrZXk6IFwiYXV0aDBBdWRpZW5jZVwiLCB2YWx1ZTogYXV0aC5hdXRoMEF1ZGllbmNlID8/IFwiXCIgfSxcblx0XHRcdHsga2V5OiBcImF1dGgwQ2xpZW50SWRcIiwgdmFsdWU6IGF1dGguYXV0aDBDbGllbnRJZCA/PyBcIlwiIH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJhdXRoVXJsXCIsXG5cdFx0XHRcdHZhbHVlOiBgaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L2F1dGhvcml6ZT9hdWRpZW5jZT0ke2F1dGguYXV0aDBBdWRpZW5jZSA/PyBcIlwifWAsXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRrZXk6IFwiYWNjZXNzVG9rZW5VcmxcIixcblx0XHRcdFx0dmFsdWU6IGBodHRwczovLyR7YXV0aC5hdXRoMERvbWFpbn0vb2F1dGgvdG9rZW5gLFxuXHRcdFx0fSxcblx0XHRcdHsga2V5OiBcImNhbGxiYWNrVXJsXCIsIHZhbHVlOiBQT1NUTUFOX0NBTExCQUNLU1swXSB9LFxuXHRcdFx0eyBrZXk6IFwic2NvcGVcIiwgdmFsdWU6IFBPU1RNQU5fU0NPUEVTIH0sXG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGxpbmVzID0gW2BuYW1lOiAke3lhbWxRdW90ZShuYW1lKX1gLCBcInZhbHVlczpcIl07XG5cdGZvciAoY29uc3QgdiBvZiB2YWx1ZXMpIHtcblx0XHRsaW5lcy5wdXNoKGAgIC0ga2V5OiAke3Yua2V5fWApO1xuXHRcdGxpbmVzLnB1c2goYCAgICB2YWx1ZTogJHt5YW1sUXVvdGUodi52YWx1ZSl9YCk7XG5cdFx0bGluZXMucHVzaChcIiAgICBlbmFibGVkOiB0cnVlXCIpO1xuXHR9XG5cdHJldHVybiBgJHtsaW5lcy5qb2luKFwiXFxuXCIpfVxcbmA7XG59XG5cbi8qKiBMb2NhbCBWaWV3IC8gTmF0aXZlIEdpdCBjb2xsZWN0aW9uICh2MyBtdWx0aS1maWxlIFlBTUwpLiAqL1xuZnVuY3Rpb24gYnVpbGRMb2NhbFZpZXdGaWxlcyhcblx0cHJvamVjdE5hbWU6IHN0cmluZyxcblx0YXV0aD86IEF1dGgwRW52LFxuKTogQXJyYXk8eyBmaWxlUGF0aDogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT4ge1xuXHRjb25zdCBjb2xsZWN0aW9uRGlyID0gYHBvc3RtYW4vY29sbGVjdGlvbnMvJHtwcm9qZWN0TmFtZX0gV2ViQVBJYDtcblx0Y29uc3QgZmlsZXM6IEFycmF5PHsgZmlsZVBhdGg6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+ID0gW107XG5cblx0Ly8gUG9zdG1hbiBMb2NhbCBWaWV3IHN0b3JlcyBPQXV0aCB1bmRlciBhdXRoW10uY3JlZGVudGlhbHMgKG5vdCB0aGUgdjIuMSBvYXV0aDIgYXJyYXkpLlxuXHQvLyBVc2UgY29uY3JldGUgaHR0cHMgVVJMcyDigJQgZW1wdHkgQXV0aCBVUkwgeWllbGRzIFwiSW52YWxpZCBwcm90b2NvbCBmb3IgYXV0aCBVUkxcIi5cblx0Y29uc3QgYXV0aEJsb2NrID0gYXV0aD8uYXV0aDBEb21haW5cblx0XHQ/IFtcblx0XHRcdFx0XCJhdXRoOlwiLFxuXHRcdFx0XHRgICAtIGlkOiAke3JhbmRvbVVVSUQoKX1gLFxuXHRcdFx0XHRcIiAgICB0eXBlOiBvYXV0aDJcIixcblx0XHRcdFx0XCIgICAgbmFtZTogT0F1dGggMi4wXCIsXG5cdFx0XHRcdFwiICAgIGNyZWRlbnRpYWxzOlwiLFxuXHRcdFx0XHRcIiAgICAgIGFkZFRva2VuVG86IGhlYWRlclwiLFxuXHRcdFx0XHRcIiAgICAgIGdyYW50X3R5cGU6IGF1dGhvcml6YXRpb25fY29kZV93aXRoX3BrY2VcIixcblx0XHRcdFx0YCAgICAgIGF1dGhVcmw6IGh0dHBzOi8vJHthdXRoLmF1dGgwRG9tYWlufS9hdXRob3JpemU/YXVkaWVuY2U9JHthdXRoLmF1dGgwQXVkaWVuY2UgPz8gXCJcIn1gLFxuXHRcdFx0XHRgICAgICAgYWNjZXNzVG9rZW5Vcmw6IGh0dHBzOi8vJHthdXRoLmF1dGgwRG9tYWlufS9vYXV0aC90b2tlbmAsXG5cdFx0XHRcdGAgICAgICBjbGllbnRJZDogJHt5YW1sUXVvdGUoYXV0aC5hdXRoMENsaWVudElkID8/IFwiXCIpfWAsXG5cdFx0XHRcdGAgICAgICBzY29wZTogJHt5YW1sUXVvdGUoUE9TVE1BTl9TQ09QRVMpfWAsXG5cdFx0XHRcdGAgICAgICByZWRpcmVjdF91cmk6ICR7UE9TVE1BTl9DQUxMQkFDS1NbMF19YCxcblx0XHRcdFx0XCIgICAgICB1c2VCcm93c2VyOiB0cnVlXCIsXG5cdFx0XHRcdFwiICAgICAgY2hhbGxlbmdlQWxnb3JpdGhtOiBTMjU2XCIsXG5cdFx0XHRcdC8vIFNQQSBwdWJsaWMgY2xpZW50OiBBdXRoMCB0b2tlbiBlbmRwb2ludCByZWplY3RzIEJhc2ljIGF1dGggKGZlYWNmdCBVbmF1dGhvcml6ZWQpLlxuXHRcdFx0XHRcIiAgICAgIGNsaWVudF9hdXRoZW50aWNhdGlvbjogYm9keVwiLFxuXHRcdFx0XHQnICAgICAgY2xpZW50U2VjcmV0OiBcIlwiJyxcblx0XHRcdFx0YCAgICAgIHRva2VuTmFtZTogJHt5YW1sUXVvdGUoYCR7cHJvamVjdE5hbWV9IEFjY2VzcyBUb2tlbmApfWAsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIilcblx0XHQ6IFwiXCI7XG5cblx0ZmlsZXMucHVzaCh7XG5cdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9Ly5yZXNvdXJjZXMvZGVmaW5pdGlvbi55YW1sYCxcblx0XHRjb250ZW50OiBbXG5cdFx0XHRcIiRraW5kOiBjb2xsZWN0aW9uXCIsXG5cdFx0XHRgbmFtZTogJHt5YW1sUXVvdGUoYCR7cHJvamVjdE5hbWV9IFdlYkFQSWApfWAsXG5cdFx0XHRcInNjaGVtYVZlcnNpb246ICczLjAnXCIsXG5cdFx0XHRcImRlc2NyaXB0aW9uOiA+LVwiLFxuXHRcdFx0XCIgIE9wZW4gdGhpcyBwcm9qZWN0IHJvb3QgaW4gUG9zdG1hbiBMb2NhbCBWaWV3IChGaWxlcyDihpIgT3BlbiBmb2xkZXIpLlwiLFxuXHRcdFx0XCIgIFNlbGVjdCB0aGUgTG9jYWwgZW52aXJvbm1lbnQsIHRoZW4gQXV0aG9yaXphdGlvbiDihpIgR2V0IE5ldyBBY2Nlc3MgVG9rZW4gKFBLQ0UpLlwiLFxuXHRcdFx0YXV0aEJsb2NrLFxuXHRcdF1cblx0XHRcdC5maWx0ZXIoKGwpID0+IGwgIT09IHVuZGVmaW5lZClcblx0XHRcdC5qb2luKFwiXFxuXCIpXG5cdFx0XHQucmVwbGFjZSgvXFxuKyQvLCBcIlxcblwiKSxcblx0fSk7XG5cblx0ZmlsZXMucHVzaCh7XG5cdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9L0hlbGxvLy5yZXNvdXJjZXMvZGVmaW5pdGlvbi55YW1sYCxcblx0XHRjb250ZW50OiBbXCIka2luZDogZm9sZGVyXCIsIFwibmFtZTogSGVsbG9cIiwgXCJvcmRlcjogMTAwMFwiLCBcIlwiXS5qb2luKFwiXFxuXCIpLFxuXHR9KTtcblxuXHRjb25zdCByZXF1ZXN0czogQXJyYXk8e1xuXHRcdGZpbGU6IHN0cmluZztcblx0XHR5YW1sOiBzdHJpbmc7XG5cdH0+ID0gW1xuXHRcdHtcblx0XHRcdGZpbGU6IFwiTGlzdCAoYW5vbnltb3VzKS5yZXF1ZXN0LnlhbWxcIixcblx0XHRcdHlhbWw6IFtcblx0XHRcdFx0XCIka2luZDogaHR0cC1yZXF1ZXN0XCIsXG5cdFx0XHRcdFwibmFtZTogTGlzdCAoYW5vbnltb3VzKVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogR0VUXCIsXG5cdFx0XHRcdCd1cmw6IFwie3tiYXNlVXJsfX0vaGVsbG9cIicsXG5cdFx0XHRcdFwiYXV0aDpcIixcblx0XHRcdFx0XCIgIHR5cGU6IG5vYXV0aFwiLFxuXHRcdFx0XHRcIm9yZGVyOiAxMDAwXCIsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRmaWxlOiBcIkdldCBieSBpZC5yZXF1ZXN0LnlhbWxcIixcblx0XHRcdHlhbWw6IFtcblx0XHRcdFx0XCIka2luZDogaHR0cC1yZXF1ZXN0XCIsXG5cdFx0XHRcdFwibmFtZTogR2V0IGJ5IGlkXCIsXG5cdFx0XHRcdFwibWV0aG9kOiBHRVRcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsby86aWRcIicsXG5cdFx0XHRcdFwib3JkZXI6IDIwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGZpbGU6IFwiQ3JlYXRlLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBDcmVhdGVcIixcblx0XHRcdFx0XCJtZXRob2Q6IFBPU1RcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsb1wiJyxcblx0XHRcdFx0XCJoZWFkZXJzOlwiLFxuXHRcdFx0XHRcIiAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCIsXG5cdFx0XHRcdFwiYm9keTpcIixcblx0XHRcdFx0XCIgIHR5cGU6IGpzb25cIixcblx0XHRcdFx0XCIgIGNvbnRlbnQ6IHwtXCIsXG5cdFx0XHRcdFwiICAgIHtcIixcblx0XHRcdFx0JyAgICAgIFwibWVzc2FnZVwiOiBcImhlbGxvXCInLFxuXHRcdFx0XHRcIiAgICB9XCIsXG5cdFx0XHRcdFwib3JkZXI6IDMwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGZpbGU6IFwiVXBkYXRlLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBVcGRhdGVcIixcblx0XHRcdFx0XCJtZXRob2Q6IFBVVFwiLFxuXHRcdFx0XHQndXJsOiBcInt7YmFzZVVybH19L2hlbGxvLzppZFwiJyxcblx0XHRcdFx0XCJoZWFkZXJzOlwiLFxuXHRcdFx0XHRcIiAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCIsXG5cdFx0XHRcdFwiYm9keTpcIixcblx0XHRcdFx0XCIgIHR5cGU6IGpzb25cIixcblx0XHRcdFx0XCIgIGNvbnRlbnQ6IHwtXCIsXG5cdFx0XHRcdFwiICAgIHtcIixcblx0XHRcdFx0JyAgICAgIFwibWVzc2FnZVwiOiBcInVwZGF0ZWRcIicsXG5cdFx0XHRcdFwiICAgIH1cIixcblx0XHRcdFx0XCJvcmRlcjogNDAwMFwiLFxuXHRcdFx0XHRcIlwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0ZmlsZTogXCJEZWxldGUucmVxdWVzdC55YW1sXCIsXG5cdFx0XHR5YW1sOiBbXG5cdFx0XHRcdFwiJGtpbmQ6IGh0dHAtcmVxdWVzdFwiLFxuXHRcdFx0XHRcIm5hbWU6IERlbGV0ZVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogREVMRVRFXCIsXG5cdFx0XHRcdCd1cmw6IFwie3tiYXNlVXJsfX0vaGVsbG8vOmlkXCInLFxuXHRcdFx0XHRcIm9yZGVyOiA1MDAwXCIsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0fSxcblx0XTtcblxuXHRmb3IgKGNvbnN0IHIgb2YgcmVxdWVzdHMpIHtcblx0XHRmaWxlcy5wdXNoKHtcblx0XHRcdGZpbGVQYXRoOiBgJHtjb2xsZWN0aW9uRGlyfS9IZWxsby8ke3IuZmlsZX1gLFxuXHRcdFx0Y29udGVudDogci55YW1sLFxuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIGZpbGVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FmZm9sZCh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBvcHRpb25zOiBQb3N0bWFuT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwibm9uZVwiIHx8IG9wdGlvbnMucG9zdG1hblByb3ZpZGVyID09IG51bGwpIHJldHVybjtcblxuXHRjb25zdCBhdXRoQ29uZmlnTW9kZWwgPSB3b3Jrc3BhY2UuZ2V0TW9kZWw8QXV0aENvbmZpZ01vZGVsPihXRUxMX0tOT1dOX0ZJTEVTLkFVVEhfQ09ORklHKTtcblx0Y29uc3QgYXV0aENmZyA9IGF1dGhDb25maWdNb2RlbD8uY29uZmlnO1xuXG5cdGxldCBzcGFDbGllbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdGlmIChhdXRoQ2ZnPy5pc3N1ZXJCYXNlVXJsKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFwcCA9IGF1dGgwQ2xpLmVuc3VyZVNwYUFwcChgJHt3b3Jrc3BhY2UubmFtZX0gUG9zdG1hbmAsIFsuLi5QT1NUTUFOX0NBTExCQUNLU10pO1xuXHRcdFx0c3BhQ2xpZW50SWQgPSBhcHAuY2xpZW50X2lkO1xuXHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdGFwcC5yZXVzZWRcblx0XHRcdFx0XHQ/IGAgIOKckyBSZXVzaW5nIEF1dGgwIFNQQSBhcHAgZm9yIFBvc3RtYW4gUEtDRSAoJHtzcGFDbGllbnRJZH0pYFxuXHRcdFx0XHRcdDogYCAg4pyTIEF1dGgwIFNQQSBhcHAgY3JlYXRlZCBmb3IgUG9zdG1hbiBQS0NFICgke3NwYUNsaWVudElkfSlgLFxuXHRcdFx0KTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGF1dGgwQ2xpLmVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQoYXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FLCBzcGFDbGllbnRJZCk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGAgIOKckyBFbmFibGVkICR7YXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FfSBvbiBQb3N0bWFuIFNQQWApO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdFx0YCAg4pyXIEZhaWxlZCB0byBlbmFibGUgREIgY29ubmVjdGlvbiBvbiBTUEE6ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycn1gLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0YCAg4pyXIEZhaWxlZCB0byBlbnN1cmUgQXV0aDAgU1BBIGFwcCDigJQgc2V0IGF1dGgwQ2xpZW50SWQgaW4gdGhlIGVudmlyb25tZW50OiAke2VyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBlcnJ9YCxcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgYXV0aDBFbnY6IEF1dGgwRW52IHwgdW5kZWZpbmVkID0gYXV0aENmZz8uaXNzdWVyQmFzZVVybFxuXHRcdD8ge1xuXHRcdFx0XHRhdXRoMERvbWFpbjogYXV0aENmZy5pc3N1ZXJCYXNlVXJsLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgXCJcIiksXG5cdFx0XHRcdGF1dGgwQXVkaWVuY2U6IGF1dGhDZmcuYXVkaWVuY2UsXG5cdFx0XHRcdGF1dGgwQ2xpZW50SWQ6IHNwYUNsaWVudElkLFxuXHRcdFx0fVxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IHByb2plY3ROYW1lID0gd29ya3NwYWNlLm5hbWU7XG5cdGNvbnN0IGVudk5hbWUgPSBgJHtwcm9qZWN0TmFtZX0gTG9jYWxgO1xuXHRjb25zdCBsb2NhbEZpbGVzID0gYnVpbGRMb2NhbFZpZXdGaWxlcyhwcm9qZWN0TmFtZSwgYXV0aDBFbnYpO1xuXHRjb25zdCBlbnZZYW1sID0gYnVpbGRFbnZpcm9ubWVudFlhbWwoZW52TmFtZSwgYXV0aDBFbnYpO1xuXG5cdHdvcmtzcGFjZS5hZGRGaWxlKHtcblx0XHRmaWxlczogKCkgPT4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCIucG9zdG1hbi9yZXNvdXJjZXMueWFtbFwiLFxuXHRcdFx0XHRjb250ZW50OiBbXG5cdFx0XHRcdFx0XCIjIE9wZW4gdGhpcyBwcm9qZWN0IHJvb3QgaW4gUG9zdG1hbiAoRmlsZXMg4oaSIE9wZW4gZm9sZGVyKSwgbm90IHRoZSBwb3N0bWFuLyBzdWJmb2xkZXIuXCIsXG5cdFx0XHRcdFx0XCIjIFBvc3RtYW4gZmlsbHMgd29ya3NwYWNlLmlkIHdoZW4geW91IGNvbm5lY3QgTG9jYWwgVmlldy5cIixcblx0XHRcdFx0XHRcIiNcIixcblx0XHRcdFx0XHRcIiMgQWxsIHJlc291cmNlcyB1bmRlciBwb3N0bWFuLyBhcmUgcmVnaXN0ZXJlZCBhdXRvbWF0aWNhbGx5LlwiLFxuXHRcdFx0XHRcdFwiXCIsXG5cdFx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBgcG9zdG1hbi9lbnZpcm9ubWVudHMvJHtwcm9qZWN0TmFtZX0tTG9jYWwuZW52aXJvbm1lbnQueWFtbGAsXG5cdFx0XHRcdGNvbnRlbnQ6IGVudllhbWwsXG5cdFx0XHR9LFxuXHRcdFx0Li4ubG9jYWxGaWxlcyxcblx0XHRdLFxuXHR9KTtcblxuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwiYXBpXCIgJiYgb3B0aW9ucy5hcGlLZXkpIHtcblx0XHRjb25zdCBjb2xsZWN0aW9uID0gYnVpbGRDb2xsZWN0aW9uSnNvbihwcm9qZWN0TmFtZSwgYXV0aDBFbnYpO1xuXHRcdGNvbnN0IGhlYWRlcnMgPSB7IFwiWC1BcGktS2V5XCI6IG9wdGlvbnMuYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXG5cdFx0Y29uc3QgY29sUmVzID0gYXdhaXQgZmV0Y2goXG5cdFx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vY29sbGVjdGlvbnM/d29ya3NwYWNlPSR7b3B0aW9ucy53b3Jrc3BhY2VJZH1gLFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRoZWFkZXJzLFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7IGNvbGxlY3Rpb24gfSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGNvbFJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGNvbGxlY3Rpb24gdXBsb2FkZWRcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCIgIOKclyBGYWlsZWQgdG8gdXBsb2FkIFBvc3RtYW4gY29sbGVjdGlvblwiKTtcblx0XHR9XG5cblx0XHRjb25zdCBlbnZWYWx1ZXMgPSBbXG5cdFx0XHR7IGtleTogXCJiYXNlVXJsXCIsIHZhbHVlOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMFwiLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHQuLi4oYXV0aDBFbnY/LmF1dGgwRG9tYWluXG5cdFx0XHRcdD8gW1xuXHRcdFx0XHRcdFx0eyBrZXk6IFwiYXV0aDBEb21haW5cIiwgdmFsdWU6IGF1dGgwRW52LmF1dGgwRG9tYWluLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHRcdFx0XHR7IGtleTogXCJhdXRoMEF1ZGllbmNlXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMEF1ZGllbmNlID8/IFwiXCIsIGVuYWJsZWQ6IHRydWUgfSxcblx0XHRcdFx0XHRcdHsga2V5OiBcImF1dGgwQ2xpZW50SWRcIiwgdmFsdWU6IGF1dGgwRW52LmF1dGgwQ2xpZW50SWQgPz8gXCJcIiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0XHRcdF1cblx0XHRcdFx0OiBbXSksXG5cdFx0XTtcblx0XHRjb25zdCBlbnZSZXMgPSBhd2FpdCBmZXRjaChcblx0XHRcdGBodHRwczovL2FwaS5nZXRwb3N0bWFuLmNvbS9lbnZpcm9ubWVudHM/d29ya3NwYWNlPSR7b3B0aW9ucy53b3Jrc3BhY2VJZH1gLFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRoZWFkZXJzLFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdFx0ZW52aXJvbm1lbnQ6IHsgbmFtZTogZW52TmFtZSwgdmFsdWVzOiBlbnZWYWx1ZXMgfSxcblx0XHRcdFx0fSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGVudlJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGVudmlyb25tZW50IHVwbG9hZGVkXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiICDinJcgRmFpbGVkIHRvIHVwbG9hZCBQb3N0bWFuIGVudmlyb25tZW50XCIpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY29uc3QgUG9zdG1hbkZlYXR1cmU6IEZlYXR1cmU8UG9zdG1hbk9wdGlvbnM+ID0geyBnZXRPcHRpb25zLCBzY2FmZm9sZCB9O1xuZXhwb3J0IHsgUE9TVE1BTl9DQUxMQkFDS1MsIFBPU1RNQU5fU0NPUEVTIH07XG4iXSwibmFtZXMiOlsiUE9TVE1BTl9DQUxMQkFDS1MiLCJQT1NUTUFOX1NDT1BFUyIsIlBvc3RtYW5GZWF0dXJlIiwiam9pbiIsImdldE9wdGlvbnMiLCJfd29ya3NwYWNlIiwiY2xpT3B0aW9ucyIsInBvc3RtYW5Qcm92aWRlciIsImNob2ljZXMiLCJsYWJlbCIsImRlc2NyaXB0aW9uIiwic2VsZWN0ZWQiLCJwaWNrIiwiYyIsInByb3ZpZGVyIiwiYXBpS2V5IiwicHJvY2VzcyIsImVudiIsIlBPU1RNQU5fQVBJX0tFWSIsInRoZW4iLCJtIiwiYXNrIiwiaGVhZGVycyIsIndzUmVzIiwiZmV0Y2giLCJvayIsImNvbnNvbGUiLCJlcnJvciIsIndvcmtzcGFjZXMiLCJqc29uIiwid3NDaG9pY2VzIiwiaWQiLCJtYXAiLCJ3IiwibmFtZSIsInR5cGUiLCJ3c1BpY2tlZCIsIndvcmtzcGFjZUlkIiwid3NOYW1lIiwiY3JlYXRlUmVzIiwibWV0aG9kIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3b3Jrc3BhY2UiLCJ3cyIsImxvZyIsImJ1aWxkQ29sbGVjdGlvbkpzb24iLCJwcm9qZWN0TmFtZSIsImF1dGgiLCJhdXRoT2JqIiwiYXV0aDBEb21haW4iLCJvYXV0aDIiLCJrZXkiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImhlbGxvVXJsIiwicGF0aCIsInJhdyIsImhvc3QiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJpbmZvIiwiX3Bvc3RtYW5faWQiLCJyYW5kb21VVUlEIiwic2NoZW1hIiwiaXRlbSIsInJlcXVlc3QiLCJ1cmwiLCJoZWFkZXIiLCJtb2RlIiwieWFtbFF1b3RlIiwidGVzdCIsImluY2x1ZGVzIiwiYnVpbGRFbnZpcm9ubWVudFlhbWwiLCJ2YWx1ZXMiLCJwdXNoIiwiYXV0aDBBdWRpZW5jZSIsImF1dGgwQ2xpZW50SWQiLCJsaW5lcyIsInYiLCJidWlsZExvY2FsVmlld0ZpbGVzIiwiY29sbGVjdGlvbkRpciIsImZpbGVzIiwiYXV0aEJsb2NrIiwiZmlsZVBhdGgiLCJjb250ZW50IiwibCIsInJlcGxhY2UiLCJyZXF1ZXN0cyIsImZpbGUiLCJ5YW1sIiwiciIsInNjYWZmb2xkIiwib3B0aW9ucyIsImF1dGhDb25maWdNb2RlbCIsImdldE1vZGVsIiwiV0VMTF9LTk9XTl9GSUxFUyIsIkFVVEhfQ09ORklHIiwiYXV0aENmZyIsImNvbmZpZyIsInNwYUNsaWVudElkIiwiaXNzdWVyQmFzZVVybCIsImFwcCIsImF1dGgwQ2xpIiwiZW5zdXJlU3BhQXBwIiwiY2xpZW50X2lkIiwicmV1c2VkIiwiZW5hYmxlQ29ubmVjdGlvbkZvckNsaWVudCIsIkRCX0NPTk5FQ1RJT05fTkFNRSIsImVyciIsIkVycm9yIiwibWVzc2FnZSIsImF1dGgwRW52IiwiYXVkaWVuY2UiLCJlbnZOYW1lIiwibG9jYWxGaWxlcyIsImVudllhbWwiLCJhZGRGaWxlIiwiY29sbGVjdGlvbiIsImNvbFJlcyIsImVudlZhbHVlcyIsImVuYWJsZWQiLCJlbnZSZXMiLCJlbnZpcm9ubWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUEwZlNBO2VBQUFBOztRQUFtQkM7ZUFBQUE7O1FBRGZDO2VBQUFBOzs7NEJBemZjO3dCQUNOO3VCQUNZO2tFQUlQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIscUVBQXFFLEdBQ3JFLE1BQU1GLG9CQUFvQjtJQUN6QjtJQUNBO0NBQ0E7QUFFRCw4RUFBOEUsR0FDOUUsTUFBTUMsaUJBQWlCO0lBQ3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0EsQ0FBQ0UsSUFBSSxDQUFDO0FBUVAsZUFBZUMsV0FDZEMsVUFBNkIsRUFDN0JDLFVBQW1DO0lBRW5DLElBQUlBLFdBQVdDLGVBQWUsSUFBSSxNQUFNLE9BQU8sQ0FBQztJQUVoRCxNQUFNQyxVQUFVO1FBQ2Y7WUFBRUMsT0FBTztZQUFpQkMsYUFBYTtRQUFPO1FBQzlDO1lBQ0NELE9BQU87WUFDUEMsYUFBYTtRQUNkO1FB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
618
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL3Bvc3RtYW4uZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHBpY2sgfSBmcm9tIFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiO1xuaW1wb3J0IHsgV0VMTF9LTk9XTl9GSUxFUyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlU2NhZmZvbGQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Byb2plY3QubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zY2FmZm9sZC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEF1dGhDb25maWdNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvYXV0aC1jb25maWcubW9kZWwuanNcIjtcbmltcG9ydCAqIGFzIGF1dGgwQ2xpIGZyb20gXCIuL2F1dGgwLWNsaS5qc1wiO1xuXG4vKiogUG9zdG1hbiBPQXV0aCBjYWxsYmFjayBVUkxzIChwb3B1cCArIFwiQXV0aG9yaXplIHVzaW5nIGJyb3dzZXJcIikuICovXG5jb25zdCBQT1NUTUFOX0NBTExCQUNLUyA9IFtcblx0XCJodHRwczovL29hdXRoLnBzdG1uLmlvL3YxL2NhbGxiYWNrXCIsXG5cdFwiaHR0cHM6Ly9vYXV0aC5wc3Rtbi5pby92MS9icm93c2VyLWNhbGxiYWNrXCIsXG5dIGFzIGNvbnN0O1xuXG4vKiogU2NvcGVzIHJlcXVlc3RlZCBmb3IgQXV0aDAgYWNjZXNzIHRva2VucyAoT0lEQyArIEhlbGxvIENBU0wgcGVybWlzc2lvbnMpLiAqL1xuY29uc3QgUE9TVE1BTl9TQ09QRVMgPSBbXG5cdFwib3BlbmlkXCIsXG5cdFwicHJvZmlsZVwiLFxuXHRcImVtYWlsXCIsXG5cdFwicmVhZDpIZWxsb1wiLFxuXHRcImNyZWF0ZTpIZWxsb1wiLFxuXHRcInVwZGF0ZTpIZWxsb1wiLFxuXHRcImRlbGV0ZTpIZWxsb1wiLFxuXS5qb2luKFwiIFwiKTtcblxuZXhwb3J0IHR5cGUgUG9zdG1hbk9wdGlvbnMgPSB7XG5cdHBvc3RtYW5Qcm92aWRlcj86IFwiYXBpXCIgfCBcImxvY2FsXCIgfCBcIm5vbmVcIjtcblx0YXBpS2V5Pzogc3RyaW5nO1xuXHR3b3Jrc3BhY2VJZD86IHN0cmluZztcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE9wdGlvbnMoXG5cdF93b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRjbGlPcHRpb25zOiBQYXJ0aWFsPFBvc3RtYW5PcHRpb25zPixcbik6IFByb21pc2U8UGFydGlhbDxQb3N0bWFuT3B0aW9ucz4+IHtcblx0aWYgKGNsaU9wdGlvbnMucG9zdG1hblByb3ZpZGVyICE9IG51bGwpIHJldHVybiB7fTtcblxuXHRjb25zdCBjaG9pY2VzID0gW1xuXHRcdHsgbGFiZWw6IFwibm9uZVwiIGFzIGNvbnN0LCBkZXNjcmlwdGlvbjogXCJza2lwXCIgfSxcblx0XHR7XG5cdFx0XHRsYWJlbDogXCJsb2NhbFwiIGFzIGNvbnN0LFxuXHRcdFx0ZGVzY3JpcHRpb246IFwiTG9jYWwgVmlldyAvIE5hdGl2ZSBHaXQgZmlsZXMgKG5vIEFQSSBrZXkpXCIsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogXCJhcGlcIiBhcyBjb25zdCxcblx0XHRcdGRlc2NyaXB0aW9uOiBcImFsc28gdXBsb2FkIHRvIFBvc3RtYW4uY29tIChuZWVkcyBBUEkga2V5KVwiLFxuXHRcdH0sXG5cdF07XG5cdGNvbnN0IHNlbGVjdGVkID0gYXdhaXQgcGljayhcblx0XHRcIlxcbiAgUG9zdG1hbjogXCIsXG5cdFx0Y2hvaWNlcyxcblx0XHQoYykgPT4gYCR7Yy5sYWJlbH0g4oCUICR7Yy5kZXNjcmlwdGlvbn1gLFxuXHQpO1xuXHRjb25zdCBwcm92aWRlciA9IHNlbGVjdGVkPy5sYWJlbCA/PyBcIm5vbmVcIjtcblxuXHRpZiAocHJvdmlkZXIgPT09IFwibm9uZVwiKSByZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwibm9uZVwiIH07XG5cdGlmIChwcm92aWRlciA9PT0gXCJsb2NhbFwiKSByZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwibG9jYWxcIiB9O1xuXG5cdGNvbnN0IGFwaUtleSA9XG5cdFx0cHJvY2Vzcy5lbnYuUE9TVE1BTl9BUElfS0VZID8/XG5cdFx0KGF3YWl0IGltcG9ydChcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIikudGhlbigobSkgPT5cblx0XHRcdG0uYXNrKFwiXFxuICBQb3N0bWFuIEFQSSBrZXkgKGFwcC5nZXRwb3N0bWFuLmNvbS9zZXR0aW5ncy9tZS9hcGkta2V5cyk6IFwiKSxcblx0XHQpKTtcblxuXHRjb25zdCBoZWFkZXJzID0geyBcIlgtQXBpLUtleVwiOiBhcGlLZXksIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH07XG5cdGNvbnN0IHdzUmVzID0gYXdhaXQgZmV0Y2goXCJodHRwczovL2FwaS5nZXRwb3N0bWFuLmNvbS93b3Jrc3BhY2VzXCIsIHsgaGVhZGVycyB9KTtcblxuXHRpZiAoIXdzUmVzLm9rKSB7XG5cdFx0Y29uc29sZS5lcnJvcihcIlxcbiAgUG9zdG1hbiBBUEkga2V5IGludmFsaWQg4oCUIGZhbGxpbmcgYmFjayB0byBsb2NhbCBmaWxlcy5cIik7XG5cdFx0cmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcImxvY2FsXCIgfTtcblx0fVxuXG5cdGNvbnN0IHsgd29ya3NwYWNlcyB9ID0gKGF3YWl0IHdzUmVzLmpzb24oKSkgYXMge1xuXHRcdHdvcmtzcGFjZXM6IEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfT47XG5cdH07XG5cblx0dHlwZSBXc0Nob2ljZSA9IHsgbGFiZWw6IHN0cmluZzsgaWQ6IHN0cmluZyB8IG51bGwgfTtcblx0Y29uc3Qgd3NDaG9pY2VzOiBXc0Nob2ljZVtdID0gW1xuXHRcdHsgbGFiZWw6IFwiPG5ldyB3b3Jrc3BhY2U+XCIsIGlkOiBudWxsIH0sXG5cdFx0Li4ud29ya3NwYWNlcy5tYXAoKHcpID0+ICh7IGxhYmVsOiBgJHt3Lm5hbWV9ICgke3cudHlwZX0pYCwgaWQ6IHcuaWQgfSkpLFxuXHRdO1xuXG5cdGNvbnN0IHdzUGlja2VkID0gYXdhaXQgcGljayhcIlxcbiAgUG9zdG1hbiB3b3Jrc3BhY2U6IFwiLCB3c0Nob2ljZXMsIChjKSA9PiBjLmxhYmVsKTtcblxuXHRsZXQgd29ya3NwYWNlSWQ6IHN0cmluZztcblx0aWYgKCF3c1BpY2tlZCB8fCB3c1BpY2tlZC5pZCA9PT0gbnVsbCkge1xuXHRcdGNvbnN0IHsgYXNrIH0gPSBhd2FpdCBpbXBvcnQoXCIuLi8uLi9kb21haW4vcHJvbXB0LmpzXCIpO1xuXHRcdGNvbnN0IHdzTmFtZSA9IGF3YWl0IGFzayhgICBXb3Jrc3BhY2UgbmFtZTogYCk7XG5cdFx0Y29uc3QgY3JlYXRlUmVzID0gYXdhaXQgZmV0Y2goXCJodHRwczovL2FwaS5nZXRwb3N0bWFuLmNvbS93b3Jrc3BhY2VzXCIsIHtcblx0XHRcdG1ldGhvZDogXCJQT1NUXCIsXG5cdFx0XHRoZWFkZXJzLFxuXHRcdFx0Ym9keTogSlNPTi5zdHJpbmdpZnkoeyB3b3Jrc3BhY2U6IHsgbmFtZTogd3NOYW1lLCB0eXBlOiBcInBlcnNvbmFsXCIgfSB9KSxcblx0XHR9KTtcblx0XHRjb25zdCB7IHdvcmtzcGFjZTogd3MgfSA9IChhd2FpdCBjcmVhdGVSZXMuanNvbigpKSBhcyB7IHdvcmtzcGFjZTogeyBpZDogc3RyaW5nIH0gfTtcblx0XHR3b3Jrc3BhY2VJZCA9IHdzLmlkO1xuXHRcdGNvbnNvbGUubG9nKGAgIOKckyBXb3Jrc3BhY2UgY3JlYXRlZDogJHt3c05hbWV9YCk7XG5cdH0gZWxzZSB7XG5cdFx0d29ya3NwYWNlSWQgPSB3c1BpY2tlZC5pZDtcblx0fVxuXG5cdHJldHVybiB7IHBvc3RtYW5Qcm92aWRlcjogXCJhcGlcIiwgYXBpS2V5LCB3b3Jrc3BhY2VJZCB9O1xufVxuXG50eXBlIEF1dGgwRW52ID0ge1xuXHRhdXRoMERvbWFpbj86IHN0cmluZztcblx0YXV0aDBBdWRpZW5jZT86IHN0cmluZztcblx0YXV0aDBDbGllbnRJZD86IHN0cmluZztcbn07XG5cbi8qKiB2Mi4xIEpTT04g4oCUIHVzZWQgZm9yIFBvc3RtYW4uY29tIEFQSSB1cGxvYWQgb25seS4gKi9cbmZ1bmN0aW9uIGJ1aWxkQ29sbGVjdGlvbkpzb24ocHJvamVjdE5hbWU6IHN0cmluZywgYXV0aD86IEF1dGgwRW52KTogdW5rbm93biB7XG5cdGNvbnN0IGF1dGhPYmogPSBhdXRoPy5hdXRoMERvbWFpblxuXHRcdD8ge1xuXHRcdFx0XHR0eXBlOiBcIm9hdXRoMlwiLFxuXHRcdFx0XHRvYXV0aDI6IFtcblx0XHRcdFx0XHR7IGtleTogXCJncmFudF90eXBlXCIsIHZhbHVlOiBcImF1dGhvcml6YXRpb25fY29kZV93aXRoX3BrY2VcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGtleTogXCJhdXRoVXJsXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJodHRwczovL3t7YXV0aDBEb21haW59fS9hdXRob3JpemU/YXVkaWVuY2U9e3thdXRoMEF1ZGllbmNlfX1cIixcblx0XHRcdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXk6IFwiYWNjZXNzVG9rZW5VcmxcIixcblx0XHRcdFx0XHRcdHZhbHVlOiBcImh0dHBzOi8ve3thdXRoMERvbWFpbn19L29hdXRoL3Rva2VuXCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiY2xpZW50SWRcIiwgdmFsdWU6IFwie3thdXRoMENsaWVudElkfX1cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcInNjb3BlXCIsIHZhbHVlOiBQT1NUTUFOX1NDT1BFUywgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcInJlZGlyZWN0X3VyaVwiLCB2YWx1ZTogUE9TVE1BTl9DQUxMQkFDS1NbMF0sIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJ1c2VCcm93c2VyXCIsIHZhbHVlOiBcInRydWVcIiwgdHlwZTogXCJib29sZWFuXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJhZGRUb2tlblRvXCIsIHZhbHVlOiBcImhlYWRlclwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiY2hhbGxlbmdlQWxnb3JpdGhtXCIsIHZhbHVlOiBcIlMyNTZcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNsaWVudF9hdXRoZW50aWNhdGlvblwiLCB2YWx1ZTogXCJib2R5XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJjbGllbnRTZWNyZXRcIiwgdmFsdWU6IFwiXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJ0b2tlbk5hbWVcIiwgdmFsdWU6IGAke3Byb2plY3ROYW1lfSBBY2Nlc3MgVG9rZW5gLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9XG5cdFx0OiB1bmRlZmluZWQ7XG5cblx0Y29uc3QgaGVsbG9VcmwgPSAocGF0aDogc3RyaW5nLCByYXc6IHN0cmluZykgPT4gKHtcblx0XHRyYXc6IGB7e2Jhc2VVcmx9fSR7cmF3fWAsXG5cdFx0aG9zdDogW1wie3tiYXNlVXJsfX1cIl0sXG5cdFx0cGF0aDogcGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pLFxuXHR9KTtcblxuXHRyZXR1cm4ge1xuXHRcdGluZm86IHtcblx0XHRcdF9wb3N0bWFuX2lkOiByYW5kb21VVUlEKCksXG5cdFx0XHRuYW1lOiBgJHtwcm9qZWN0TmFtZX0gV2ViQVBJYCxcblx0XHRcdHNjaGVtYTogXCJodHRwczovL3NjaGVtYS5nZXRwb3N0bWFuLmNvbS9qc29uL2NvbGxlY3Rpb24vdjIuMS4wL2NvbGxlY3Rpb24uanNvblwiLFxuXHRcdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcdFwiT3BlbiB0aGUgcHJvamVjdCByb290IGluIFBvc3RtYW4gTG9jYWwgVmlldyAobm90IHRoZSBwb3N0bWFuLyBmb2xkZXIpLiBcIiArXG5cdFx0XHRcdFwiU2VsZWN0IHRoZSBMb2NhbCBlbnZpcm9ubWVudCwgdGhlbiBBdXRob3JpemF0aW9uIOKGkiBHZXQgTmV3IEFjY2VzcyBUb2tlbiAoUEtDRSkuXCIsXG5cdFx0fSxcblx0XHQuLi4oYXV0aE9iaiA/IHsgYXV0aDogYXV0aE9iaiB9IDoge30pLFxuXHRcdGl0ZW06IFtcblx0XHRcdHtcblx0XHRcdFx0bmFtZTogXCJIZWxsb1wiLFxuXHRcdFx0XHRpdGVtOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogXCJMaXN0IChhbm9ueW1vdXMpXCIsXG5cdFx0XHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0XHRcdGF1dGg6IHsgdHlwZTogXCJub2F1dGhcIiB9LFxuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiR0VUXCIsXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsb1wiLCBcIi9oZWxsb1wiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIkdldCBieSBpZFwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiR0VUXCIsXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsby86aWRcIiwgXCIvaGVsbG8vOmlkXCIpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6IFwiQ3JlYXRlXCIsXG5cdFx0XHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0XHRcdG1ldGhvZDogXCJQT1NUXCIsXG5cdFx0XHRcdFx0XHRcdGhlYWRlcjogW3sga2V5OiBcIkNvbnRlbnQtVHlwZVwiLCB2YWx1ZTogXCJhcHBsaWNhdGlvbi9qc29uXCIgfV0sXG5cdFx0XHRcdFx0XHRcdGJvZHk6IHtcblx0XHRcdFx0XHRcdFx0XHRtb2RlOiBcInJhd1wiLFxuXHRcdFx0XHRcdFx0XHRcdHJhdzogJ3tcXG4gIFwibWVzc2FnZVwiOiBcImhlbGxvXCJcXG59XFxuJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0dXJsOiBoZWxsb1VybChcImhlbGxvXCIsIFwiL2hlbGxvXCIpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6IFwiVXBkYXRlXCIsXG5cdFx0XHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0XHRcdG1ldGhvZDogXCJQVVRcIixcblx0XHRcdFx0XHRcdFx0aGVhZGVyOiBbeyBrZXk6IFwiQ29udGVudC1UeXBlXCIsIHZhbHVlOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9XSxcblx0XHRcdFx0XHRcdFx0Ym9keToge1xuXHRcdFx0XHRcdFx0XHRcdG1vZGU6IFwicmF3XCIsXG5cdFx0XHRcdFx0XHRcdFx0cmF3OiAne1xcbiAgXCJtZXNzYWdlXCI6IFwidXBkYXRlZFwiXFxufVxcbicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsby86aWRcIiwgXCIvaGVsbG8vOmlkXCIpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6IFwiRGVsZXRlXCIsXG5cdFx0XHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0XHRcdG1ldGhvZDogXCJERUxFVEVcIixcblx0XHRcdFx0XHRcdFx0dXJsOiBoZWxsb1VybChcImhlbGxvLzppZFwiLCBcIi9oZWxsby86aWRcIiksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH07XG59XG5cbmZ1bmN0aW9uIHlhbWxRdW90ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKC9bOiN7fVtcXF0sJio/fDw+PSElQGBdLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZS5pbmNsdWRlcyhcIlxcblwiKSB8fCB2YWx1ZSA9PT0gXCJcIikge1xuXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIHZhbHVlO1xufVxuXG4vKiogTG9jYWwgVmlldyAvIE5hdGl2ZSBHaXQgZW52aXJvbm1lbnQgKFlBTUwpLiAqL1xuZnVuY3Rpb24gYnVpbGRFbnZpcm9ubWVudFlhbWwobmFtZTogc3RyaW5nLCBhdXRoPzogQXV0aDBFbnYpOiBzdHJpbmcge1xuXHRjb25zdCB2YWx1ZXM6IEFycmF5PHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4gPSBbXG5cdFx0eyBrZXk6IFwiYmFzZVVybFwiLCB2YWx1ZTogXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIiB9LFxuXHRdO1xuXHRpZiAoYXV0aD8uYXV0aDBEb21haW4pIHtcblx0XHR2YWx1ZXMucHVzaChcblx0XHRcdHsga2V5OiBcImF1dGgwRG9tYWluXCIsIHZhbHVlOiBhdXRoLmF1dGgwRG9tYWluIH0sXG5cdFx0XHR7IGtleTogXCJhdXRoMEF1ZGllbmNlXCIsIHZhbHVlOiBhdXRoLmF1dGgwQXVkaWVuY2UgPz8gXCJcIiB9LFxuXHRcdFx0eyBrZXk6IFwiYXV0aDBDbGllbnRJZFwiLCB2YWx1ZTogYXV0aC5hdXRoMENsaWVudElkID8/IFwiXCIgfSxcblx0XHRcdHtcblx0XHRcdFx0a2V5OiBcImF1dGhVcmxcIixcblx0XHRcdFx0dmFsdWU6IGBodHRwczovLyR7YXV0aC5hdXRoMERvbWFpbn0vYXV0aG9yaXplP2F1ZGllbmNlPSR7YXV0aC5hdXRoMEF1ZGllbmNlID8/IFwiXCJ9YCxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJhY2Nlc3NUb2tlblVybFwiLFxuXHRcdFx0XHR2YWx1ZTogYGh0dHBzOi8vJHthdXRoLmF1dGgwRG9tYWlufS9vYXV0aC90b2tlbmAsXG5cdFx0XHR9LFxuXHRcdFx0eyBrZXk6IFwiY2FsbGJhY2tVcmxcIiwgdmFsdWU6IFBPU1RNQU5fQ0FMTEJBQ0tTWzBdIH0sXG5cdFx0XHR7IGtleTogXCJzY29wZVwiLCB2YWx1ZTogUE9TVE1BTl9TQ09QRVMgfSxcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgbGluZXMgPSBbYG5hbWU6ICR7eWFtbFF1b3RlKG5hbWUpfWAsIFwidmFsdWVzOlwiXTtcblx0Zm9yIChjb25zdCB2IG9mIHZhbHVlcykge1xuXHRcdGxpbmVzLnB1c2goYCAgLSBrZXk6ICR7di5rZXl9YCk7XG5cdFx0bGluZXMucHVzaChgICAgIHZhbHVlOiAke3lhbWxRdW90ZSh2LnZhbHVlKX1gKTtcblx0XHRsaW5lcy5wdXNoKFwiICAgIGVuYWJsZWQ6IHRydWVcIik7XG5cdH1cblx0cmV0dXJuIGAke2xpbmVzLmpvaW4oXCJcXG5cIil9XFxuYDtcbn1cblxuLyoqIExvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGNvbGxlY3Rpb24gKHYzIG11bHRpLWZpbGUgWUFNTCkuICovXG5mdW5jdGlvbiBidWlsZExvY2FsVmlld0ZpbGVzKFxuXHRwcm9qZWN0TmFtZTogc3RyaW5nLFxuXHRhdXRoPzogQXV0aDBFbnYsXG4pOiBBcnJheTx7IGZpbGVQYXRoOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9PiB7XG5cdGNvbnN0IGNvbGxlY3Rpb25EaXIgPSBgcG9zdG1hbi9jb2xsZWN0aW9ucy8ke3Byb2plY3ROYW1lfSBXZWJBUElgO1xuXHRjb25zdCBmaWxlczogQXJyYXk8eyBmaWxlUGF0aDogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT4gPSBbXTtcblxuXHQvLyBQb3N0bWFuIExvY2FsIFZpZXcgc3RvcmVzIE9BdXRoIHVuZGVyIGF1dGhbXS5jcmVkZW50aWFscyAobm90IHRoZSB2Mi4xIG9hdXRoMiBhcnJheSkuXG5cdC8vIFVzZSBjb25jcmV0ZSBodHRwcyBVUkxzIOKAlCBlbXB0eSBBdXRoIFVSTCB5aWVsZHMgXCJJbnZhbGlkIHByb3RvY29sIGZvciBhdXRoIFVSTFwiLlxuXHRjb25zdCBhdXRoQmxvY2sgPSBhdXRoPy5hdXRoMERvbWFpblxuXHRcdD8gW1xuXHRcdFx0XHRcImF1dGg6XCIsXG5cdFx0XHRcdGAgIC0gaWQ6ICR7cmFuZG9tVVVJRCgpfWAsXG5cdFx0XHRcdFwiICAgIHR5cGU6IG9hdXRoMlwiLFxuXHRcdFx0XHRcIiAgICBuYW1lOiBPQXV0aCAyLjBcIixcblx0XHRcdFx0XCIgICAgY3JlZGVudGlhbHM6XCIsXG5cdFx0XHRcdFwiICAgICAgYWRkVG9rZW5UbzogaGVhZGVyXCIsXG5cdFx0XHRcdFwiICAgICAgZ3JhbnRfdHlwZTogYXV0aG9yaXphdGlvbl9jb2RlX3dpdGhfcGtjZVwiLFxuXHRcdFx0XHRgICAgICAgYXV0aFVybDogaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L2F1dGhvcml6ZT9hdWRpZW5jZT0ke2F1dGguYXV0aDBBdWRpZW5jZSA/PyBcIlwifWAsXG5cdFx0XHRcdGAgICAgICBhY2Nlc3NUb2tlblVybDogaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L29hdXRoL3Rva2VuYCxcblx0XHRcdFx0YCAgICAgIGNsaWVudElkOiAke3lhbWxRdW90ZShhdXRoLmF1dGgwQ2xpZW50SWQgPz8gXCJcIil9YCxcblx0XHRcdFx0YCAgICAgIHNjb3BlOiAke3lhbWxRdW90ZShQT1NUTUFOX1NDT1BFUyl9YCxcblx0XHRcdFx0YCAgICAgIHJlZGlyZWN0X3VyaTogJHtQT1NUTUFOX0NBTExCQUNLU1swXX1gLFxuXHRcdFx0XHRcIiAgICAgIHVzZUJyb3dzZXI6IHRydWVcIixcblx0XHRcdFx0XCIgICAgICBjaGFsbGVuZ2VBbGdvcml0aG06IFMyNTZcIixcblx0XHRcdFx0Ly8gU1BBIHB1YmxpYyBjbGllbnQ6IEF1dGgwIHRva2VuIGVuZHBvaW50IHJlamVjdHMgQmFzaWMgYXV0aCAoZmVhY2Z0IFVuYXV0aG9yaXplZCkuXG5cdFx0XHRcdFwiICAgICAgY2xpZW50X2F1dGhlbnRpY2F0aW9uOiBib2R5XCIsXG5cdFx0XHRcdCcgICAgICBjbGllbnRTZWNyZXQ6IFwiXCInLFxuXHRcdFx0XHRgICAgICAgdG9rZW5OYW1lOiAke3lhbWxRdW90ZShgJHtwcm9qZWN0TmFtZX0gQWNjZXNzIFRva2VuYCl9YCxcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKVxuXHRcdDogXCJcIjtcblxuXHRmaWxlcy5wdXNoKHtcblx0XHRmaWxlUGF0aDogYCR7Y29sbGVjdGlvbkRpcn0vLnJlc291cmNlcy9kZWZpbml0aW9uLnlhbWxgLFxuXHRcdGNvbnRlbnQ6IFtcblx0XHRcdFwiJGtpbmQ6IGNvbGxlY3Rpb25cIixcblx0XHRcdGBuYW1lOiAke3lhbWxRdW90ZShgJHtwcm9qZWN0TmFtZX0gV2ViQVBJYCl9YCxcblx0XHRcdFwic2NoZW1hVmVyc2lvbjogJzMuMCdcIixcblx0XHRcdFwiZGVzY3JpcHRpb246ID4tXCIsXG5cdFx0XHRcIiAgT3BlbiB0aGlzIHByb2plY3Qgcm9vdCBpbiBQb3N0bWFuIExvY2FsIFZpZXcgKEZpbGVzIOKGkiBPcGVuIGZvbGRlcikuXCIsXG5cdFx0XHRcIiAgU2VsZWN0IHRoZSBMb2NhbCBlbnZpcm9ubWVudCwgdGhlbiBBdXRob3JpemF0aW9uIOKGkiBHZXQgTmV3IEFjY2VzcyBUb2tlbiAoUEtDRSkuXCIsXG5cdFx0XHRhdXRoQmxvY2ssXG5cdFx0XVxuXHRcdFx0LmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKVxuXHRcdFx0LmpvaW4oXCJcXG5cIilcblx0XHRcdC5yZXBsYWNlKC9cXG4rJC8sIFwiXFxuXCIpLFxuXHR9KTtcblxuXHRmaWxlcy5wdXNoKHtcblx0XHRmaWxlUGF0aDogYCR7Y29sbGVjdGlvbkRpcn0vSGVsbG8vLnJlc291cmNlcy9kZWZpbml0aW9uLnlhbWxgLFxuXHRcdGNvbnRlbnQ6IFtcIiRraW5kOiBmb2xkZXJcIiwgXCJuYW1lOiBIZWxsb1wiLCBcIm9yZGVyOiAxMDAwXCIsIFwiXCJdLmpvaW4oXCJcXG5cIiksXG5cdH0pO1xuXG5cdGNvbnN0IHJlcXVlc3RzOiBBcnJheTx7XG5cdFx0ZmlsZTogc3RyaW5nO1xuXHRcdHlhbWw6IHN0cmluZztcblx0fT4gPSBbXG5cdFx0e1xuXHRcdFx0ZmlsZTogXCJMaXN0IChhbm9ueW1vdXMpLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBMaXN0IChhbm9ueW1vdXMpXCIsXG5cdFx0XHRcdFwibWV0aG9kOiBHRVRcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsb1wiJyxcblx0XHRcdFx0XCJhdXRoOlwiLFxuXHRcdFx0XHRcIiAgdHlwZTogbm9hdXRoXCIsXG5cdFx0XHRcdFwib3JkZXI6IDEwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGZpbGU6IFwiR2V0IGJ5IGlkLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBHZXQgYnkgaWRcIixcblx0XHRcdFx0XCJtZXRob2Q6IEdFVFwiLFxuXHRcdFx0XHQndXJsOiBcInt7YmFzZVVybH19L2hlbGxvLzppZFwiJyxcblx0XHRcdFx0XCJvcmRlcjogMjAwMFwiLFxuXHRcdFx0XHRcIlwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0ZmlsZTogXCJDcmVhdGUucmVxdWVzdC55YW1sXCIsXG5cdFx0XHR5YW1sOiBbXG5cdFx0XHRcdFwiJGtpbmQ6IGh0dHAtcmVxdWVzdFwiLFxuXHRcdFx0XHRcIm5hbWU6IENyZWF0ZVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogUE9TVFwiLFxuXHRcdFx0XHQndXJsOiBcInt7YmFzZVVybH19L2hlbGxvXCInLFxuXHRcdFx0XHRcImhlYWRlcnM6XCIsXG5cdFx0XHRcdFwiICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cIixcblx0XHRcdFx0XCJib2R5OlwiLFxuXHRcdFx0XHRcIiAgdHlwZToganNvblwiLFxuXHRcdFx0XHRcIiAgY29udGVudDogfC1cIixcblx0XHRcdFx0XCIgICAge1wiLFxuXHRcdFx0XHQnICAgICAgXCJtZXNzYWdlXCI6IFwiaGVsbG9cIicsXG5cdFx0XHRcdFwiICAgIH1cIixcblx0XHRcdFx0XCJvcmRlcjogMzAwMFwiLFxuXHRcdFx0XHRcIlwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0ZmlsZTogXCJVcGRhdGUucmVxdWVzdC55YW1sXCIsXG5cdFx0XHR5YW1sOiBbXG5cdFx0XHRcdFwiJGtpbmQ6IGh0dHAtcmVxdWVzdFwiLFxuXHRcdFx0XHRcIm5hbWU6IFVwZGF0ZVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogUFVUXCIsXG5cdFx0XHRcdCd1cmw6IFwie3tiYXNlVXJsfX0vaGVsbG8vOmlkXCInLFxuXHRcdFx0XHRcImhlYWRlcnM6XCIsXG5cdFx0XHRcdFwiICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cIixcblx0XHRcdFx0XCJib2R5OlwiLFxuXHRcdFx0XHRcIiAgdHlwZToganNvblwiLFxuXHRcdFx0XHRcIiAgY29udGVudDogfC1cIixcblx0XHRcdFx0XCIgICAge1wiLFxuXHRcdFx0XHQnICAgICAgXCJtZXNzYWdlXCI6IFwidXBkYXRlZFwiJyxcblx0XHRcdFx0XCIgICAgfVwiLFxuXHRcdFx0XHRcIm9yZGVyOiA0MDAwXCIsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRmaWxlOiBcIkRlbGV0ZS5yZXF1ZXN0LnlhbWxcIixcblx0XHRcdHlhbWw6IFtcblx0XHRcdFx0XCIka2luZDogaHR0cC1yZXF1ZXN0XCIsXG5cdFx0XHRcdFwibmFtZTogRGVsZXRlXCIsXG5cdFx0XHRcdFwibWV0aG9kOiBERUxFVEVcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsby86aWRcIicsXG5cdFx0XHRcdFwib3JkZXI6IDUwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRdO1xuXG5cdGZvciAoY29uc3QgciBvZiByZXF1ZXN0cykge1xuXHRcdGZpbGVzLnB1c2goe1xuXHRcdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9L0hlbGxvLyR7ci5maWxlfWAsXG5cdFx0XHRjb250ZW50OiByLnlhbWwsXG5cdFx0fSk7XG5cdH1cblxuXHRyZXR1cm4gZmlsZXM7XG59XG5cbi8qKiBSZWFkIGEgcHJldmlvdXNseSBzY2FmZm9sZGVkIGF1dGgwQ2xpZW50SWQgc28gcmUtc2NhZmZvbGQgbmV2ZXIgYmxhbmtzIGl0LiAqL1xuZnVuY3Rpb24gcmVhZEV4aXN0aW5nU3BhQ2xpZW50SWQodGFyZ2V0RGlyOiBzdHJpbmcsIHByb2plY3ROYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBlbnZQYXRoID0gam9pbihcblx0XHR0YXJnZXREaXIsXG5cdFx0XCJwb3N0bWFuL2Vudmlyb25tZW50c1wiLFxuXHRcdGAke3Byb2plY3ROYW1lfS1Mb2NhbC5lbnZpcm9ubWVudC55YW1sYCxcblx0KTtcblx0aWYgKCFleGlzdHNTeW5jKGVudlBhdGgpKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRjb25zdCB0ZXh0ID0gcmVhZEZpbGVTeW5jKGVudlBhdGgsIFwidXRmOFwiKTtcblx0Y29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9rZXk6XFxzKmF1dGgwQ2xpZW50SWRcXHMqXFxuXFxzKnZhbHVlOlxccypbXCInXT8oW15cIidcXG5dKykvKTtcblx0Y29uc3QgdmFsdWUgPSBtYXRjaD8uWzFdPy50cmltKCk7XG5cdHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgUG9zdG1hbiBTUEEgY2xpZW50IGlkLiBOZXZlciByZXR1cm5zIGVtcHR5IOKAlCBwcmVzZXJ2ZXMgYW4gZXhpc3RpbmdcbiAqIGVudiB2YWx1ZSBvbiBBdXRoMCBmYWlsdXJlLCBvdGhlcndpc2UgdGhyb3dzIHNvIHdlIGRvIG5vdCB3cml0ZSBhIGJsYW5rIGVudi5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNwYUNsaWVudElkKHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQpOiBzdHJpbmcge1xuXHRjb25zdCBhcHBOYW1lID0gYCR7d29ya3NwYWNlLm5hbWV9IFBvc3RtYW5gO1xuXHR0cnkge1xuXHRcdGNvbnN0IGFwcCA9IGF1dGgwQ2xpLmVuc3VyZVNwYUFwcChhcHBOYW1lLCBbLi4uUE9TVE1BTl9DQUxMQkFDS1NdKTtcblx0XHRjb25zb2xlLmxvZyhcblx0XHRcdGFwcC5yZXVzZWRcblx0XHRcdFx0PyBgICDinJMgUmV1c2luZyBBdXRoMCBTUEEgYXBwIGZvciBQb3N0bWFuIFBLQ0UgKCR7YXBwLmNsaWVudF9pZH0pYFxuXHRcdFx0XHQ6IGAgIOKckyBBdXRoMCBTUEEgYXBwIGNyZWF0ZWQgZm9yIFBvc3RtYW4gUEtDRSAoJHthcHAuY2xpZW50X2lkfSlgLFxuXHRcdCk7XG5cdFx0dHJ5IHtcblx0XHRcdGF1dGgwQ2xpLmVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQoYXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FLCBhcHAuY2xpZW50X2lkKTtcblx0XHRcdGNvbnNvbGUubG9nKGAgIOKckyBFbmFibGVkICR7YXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FfSBvbiBQb3N0bWFuIFNQQWApO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0YCAg4pyXIEZhaWxlZCB0byBlbmFibGUgREIgY29ubmVjdGlvbiBvbiBTUEE6ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycn1gLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGFwcC5jbGllbnRfaWQ7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGNvbnN0IGV4aXN0aW5nID0gcmVhZEV4aXN0aW5nU3BhQ2xpZW50SWQod29ya3NwYWNlLnRhcmdldERpciwgd29ya3NwYWNlLm5hbWUpO1xuXHRcdGlmIChleGlzdGluZykge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0YCAg4pyXIEZhaWxlZCB0byBlbnN1cmUgQXV0aDAgU1BBIGFwcCAoJHtlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyfSlgLFxuXHRcdFx0KTtcblx0XHRcdGNvbnNvbGUubG9nKGAgIOKckyBLZWVwaW5nIGV4aXN0aW5nIGF1dGgwQ2xpZW50SWQgZnJvbSBQb3N0bWFuIGVudmlyb25tZW50ICgke2V4aXN0aW5nfSlgKTtcblx0XHRcdHJldHVybiBleGlzdGluZztcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0YEZhaWxlZCB0byBlbnN1cmUgQXV0aDAgU1BBIGFwcCBmb3IgUG9zdG1hbiDigJQgYXV0aDBDbGllbnRJZCB3b3VsZCBiZSBlbXB0eTogJHtcblx0XHRcdFx0ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVyclxuXHRcdFx0fWAsXG5cdFx0KTtcblx0fVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FmZm9sZCh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBvcHRpb25zOiBQb3N0bWFuT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwibm9uZVwiIHx8IG9wdGlvbnMucG9zdG1hblByb3ZpZGVyID09IG51bGwpIHJldHVybjtcblxuXHRjb25zdCBhdXRoQ29uZmlnTW9kZWwgPSB3b3Jrc3BhY2UuZ2V0TW9kZWw8QXV0aENvbmZpZ01vZGVsPihXRUxMX0tOT1dOX0ZJTEVTLkFVVEhfQ09ORklHKTtcblx0Y29uc3QgYXV0aENmZyA9IGF1dGhDb25maWdNb2RlbD8uY29uZmlnO1xuXG5cdGNvbnN0IHNwYUNsaWVudElkID0gYXV0aENmZz8uaXNzdWVyQmFzZVVybCA/IHJlc29sdmVTcGFDbGllbnRJZCh3b3Jrc3BhY2UpIDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IGF1dGgwRW52OiBBdXRoMEVudiB8IHVuZGVmaW5lZCA9IGF1dGhDZmc/Lmlzc3VlckJhc2VVcmxcblx0XHQ/IHtcblx0XHRcdFx0YXV0aDBEb21haW46IGF1dGhDZmcuaXNzdWVyQmFzZVVybC5yZXBsYWNlKC9eaHR0cHM/OlxcL1xcLy8sIFwiXCIpLFxuXHRcdFx0XHRhdXRoMEF1ZGllbmNlOiBhdXRoQ2ZnLmF1ZGllbmNlLFxuXHRcdFx0XHRhdXRoMENsaWVudElkOiBzcGFDbGllbnRJZCxcblx0XHRcdH1cblx0XHQ6IHVuZGVmaW5lZDtcblxuXHRjb25zdCBwcm9qZWN0TmFtZSA9IHdvcmtzcGFjZS5uYW1lO1xuXHRjb25zdCBlbnZOYW1lID0gYCR7cHJvamVjdE5hbWV9IExvY2FsYDtcblx0Y29uc3QgbG9jYWxGaWxlcyA9IGJ1aWxkTG9jYWxWaWV3RmlsZXMocHJvamVjdE5hbWUsIGF1dGgwRW52KTtcblx0Y29uc3QgZW52WWFtbCA9IGJ1aWxkRW52aXJvbm1lbnRZYW1sKGVudk5hbWUsIGF1dGgwRW52KTtcblxuXHR3b3Jrc3BhY2UuYWRkRmlsZSh7XG5cdFx0ZmlsZXM6ICgpID0+IFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwiLnBvc3RtYW4vcmVzb3VyY2VzLnlhbWxcIixcblx0XHRcdFx0Y29udGVudDogW1xuXHRcdFx0XHRcdFwiIyBPcGVuIHRoaXMgcHJvamVjdCByb290IGluIFBvc3RtYW4gKEZpbGVzIOKGkiBPcGVuIGZvbGRlciksIG5vdCB0aGUgcG9zdG1hbi8gc3ViZm9sZGVyLlwiLFxuXHRcdFx0XHRcdFwiIyBQb3N0bWFuIGZpbGxzIHdvcmtzcGFjZS5pZCB3aGVuIHlvdSBjb25uZWN0IExvY2FsIFZpZXcuXCIsXG5cdFx0XHRcdFx0XCIjXCIsXG5cdFx0XHRcdFx0XCIjIEFsbCByZXNvdXJjZXMgdW5kZXIgcG9zdG1hbi8gYXJlIHJlZ2lzdGVyZWQgYXV0b21hdGljYWxseS5cIixcblx0XHRcdFx0XHRcIlwiLFxuXHRcdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogYHBvc3RtYW4vZW52aXJvbm1lbnRzLyR7cHJvamVjdE5hbWV9LUxvY2FsLmVudmlyb25tZW50LnlhbWxgLFxuXHRcdFx0XHRjb250ZW50OiBlbnZZYW1sLFxuXHRcdFx0fSxcblx0XHRcdC4uLmxvY2FsRmlsZXMsXG5cdFx0XSxcblx0fSk7XG5cblx0aWYgKG9wdGlvbnMucG9zdG1hblByb3ZpZGVyID09PSBcImFwaVwiICYmIG9wdGlvbnMuYXBpS2V5KSB7XG5cdFx0Y29uc3QgY29sbGVjdGlvbiA9IGJ1aWxkQ29sbGVjdGlvbkpzb24ocHJvamVjdE5hbWUsIGF1dGgwRW52KTtcblx0XHRjb25zdCBoZWFkZXJzID0geyBcIlgtQXBpLUtleVwiOiBvcHRpb25zLmFwaUtleSwgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfTtcblxuXHRcdGNvbnN0IGNvbFJlcyA9IGF3YWl0IGZldGNoKFxuXHRcdFx0YGh0dHBzOi8vYXBpLmdldHBvc3RtYW4uY29tL2NvbGxlY3Rpb25zP3dvcmtzcGFjZT0ke29wdGlvbnMud29ya3NwYWNlSWR9YCxcblx0XHRcdHtcblx0XHRcdFx0bWV0aG9kOiBcIlBPU1RcIixcblx0XHRcdFx0aGVhZGVycyxcblx0XHRcdFx0Ym9keTogSlNPTi5zdHJpbmdpZnkoeyBjb2xsZWN0aW9uIH0pLFxuXHRcdFx0fSxcblx0XHQpO1xuXHRcdGlmIChjb2xSZXMub2spIHtcblx0XHRcdGNvbnNvbGUubG9nKFwiICDinJMgUG9zdG1hbiBjb2xsZWN0aW9uIHVwbG9hZGVkXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiICDinJcgRmFpbGVkIHRvIHVwbG9hZCBQb3N0bWFuIGNvbGxlY3Rpb25cIik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZW52VmFsdWVzID0gW1xuXHRcdFx0eyBrZXk6IFwiYmFzZVVybFwiLCB2YWx1ZTogXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0Li4uKGF1dGgwRW52Py5hdXRoMERvbWFpblxuXHRcdFx0XHQ/IFtcblx0XHRcdFx0XHRcdHsga2V5OiBcImF1dGgwRG9tYWluXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMERvbWFpbiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0XHRcdFx0eyBrZXk6IFwiYXV0aDBBdWRpZW5jZVwiLCB2YWx1ZTogYXV0aDBFbnYuYXV0aDBBdWRpZW5jZSA/PyBcIlwiLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHRcdFx0XHR7IGtleTogXCJhdXRoMENsaWVudElkXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMENsaWVudElkID8/IFwiXCIsIGVuYWJsZWQ6IHRydWUgfSxcblx0XHRcdFx0XHRdXG5cdFx0XHRcdDogW10pLFxuXHRcdF07XG5cdFx0Y29uc3QgZW52UmVzID0gYXdhaXQgZmV0Y2goXG5cdFx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vZW52aXJvbm1lbnRzP3dvcmtzcGFjZT0ke29wdGlvbnMud29ya3NwYWNlSWR9YCxcblx0XHRcdHtcblx0XHRcdFx0bWV0aG9kOiBcIlBPU1RcIixcblx0XHRcdFx0aGVhZGVycyxcblx0XHRcdFx0Ym9keTogSlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0XHRcdGVudmlyb25tZW50OiB7IG5hbWU6IGVudk5hbWUsIHZhbHVlczogZW52VmFsdWVzIH0sXG5cdFx0XHRcdH0pLFxuXHRcdFx0fSxcblx0XHQpO1xuXHRcdGlmIChlbnZSZXMub2spIHtcblx0XHRcdGNvbnNvbGUubG9nKFwiICDinJMgUG9zdG1hbiBlbnZpcm9ubWVudCB1cGxvYWRlZFwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcIiAg4pyXIEZhaWxlZCB0byB1cGxvYWQgUG9zdG1hbiBlbnZpcm9ubWVudFwiKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGNvbnN0IFBvc3RtYW5GZWF0dXJlOiBGZWF0dXJlPFBvc3RtYW5PcHRpb25zPiA9IHsgZ2V0T3B0aW9ucywgc2NhZmZvbGQgfTtcbmV4cG9ydCB7IFBPU1RNQU5fQ0FMTEJBQ0tTLCBQT1NUTUFOX1NDT1BFUyB9O1xuIl0sIm5hbWVzIjpbIlBPU1RNQU5fQ0FMTEJBQ0tTIiwiUE9TVE1BTl9TQ09QRVMiLCJQb3N0bWFuRmVhdHVyZSIsImpvaW4iLCJnZXRPcHRpb25zIiwiX3dvcmtzcGFjZSIsImNsaU9wdGlvbnMiLCJwb3N0bWFuUHJvdmlkZXIiLCJjaG9pY2VzIiwibGFiZWwiLCJkZXNjcmlwdGlvbiIsInNlbGVjdGVkIiwicGljayIsImMiLCJwcm92aWRlciIsImFwaUtleSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUTUFOX0FQSV9LRVkiLCJ0aGVuIiwibSIsImFzayIsImhlYWRlcnMiLCJ3c1JlcyIsImZldGNoIiwib2siLCJjb25zb2xlIiwiZXJyb3IiLCJ3b3Jrc3BhY2VzIiwianNvbiIsIndzQ2hvaWNlcyIsImlkIiwibWFwIiwidyIsIm5hbWUiLCJ0eXBlIiwid3NQaWNrZWQiLCJ3b3Jrc3BhY2VJZCIsIndzTmFtZSIsImNyZWF0ZVJlcyIsIm1ldGhvZCIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwid29ya3NwYWNlIiwid3MiLCJsb2ciLCJidWlsZENvbGxlY3Rpb25Kc29uIiwicHJvamVjdE5hbWUiLCJhdXRoIiwiYXV0aE9iaiIsImF1dGgwRG9tYWluIiwib2F1dGgyIiwia2V5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJoZWxsb1VybCIsInBhdGgiLCJyYXciLCJob3N0Iiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiaW5mbyIsIl9wb3N0bWFuX2lkIiwicmFuZG9tVVVJRCIsInNjaGVtYSIsIml0ZW0iLCJyZXF1ZXN0IiwidXJsIiwiaGVhZGVyIiwibW9kZSIsInlhbWxRdW90ZSIsInRlc3QiLCJpbmNsdWRlcyIsImJ1aWxkRW52aXJvbm1lbnRZYW1sIiwidmFsdWVzIiwicHVzaCIsImF1dGgwQXVkaWVuY2UiLCJhdXRoMENsaWVudElkIiwibGluZXMiLCJ2IiwiYnVpbGRMb2NhbFZpZXdGaWxlcyIsImNvbGxlY3Rpb25EaXIiLCJmaWxlcyIsImF1dGhCbG9jayIsImZpbGVQYXRoIiwiY29udGVudCIsImwiLCJyZXBsYWNlIiwicmVxdWVzdHMiLCJmaWxlIiwieWFtbCIsInIiLCJyZWFkRXhpc3RpbmdTcGFDbGllbnRJZCIsInRhcmdldERpciIsImVudlBhdGgiLCJleGlzdHNTeW5jIiwidGV4dCIsInJlYWRGaWxlU3luYyIsIm1hdGNoIiwidHJpbSIsImxlbmd0aCIsInJlc29sdmVTcGFDbGllbnRJZCIsImFwcE5hbWUiLCJhcHAiLCJhdXRoMENsaSIsImVuc3VyZVNwYUFwcCIsInJldXNlZCIsImNsaWVudF9pZCIsImVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQiLCJEQl9DT05ORUNUSU9OX05BTUUiLCJlcnIiLCJFcnJvciIsIm1lc3NhZ2UiLCJleGlzdGluZyIsInNjYWZmb2xkIiwib3B0aW9ucyIsImF1dGhDb25maWdNb2RlbCIsImdldE1vZGVsIiwiV0VMTF9LTk9XTl9GSUxFUyIsIkFVVEhfQ09ORklHIiwiYXV0aENmZyIsImNvbmZpZyIsInNwYUNsaWVudElkIiwiaXNzdWVyQmFzZVVybCIsImF1dGgwRW52IiwiYXVkaWVuY2UiLCJlbnZOYW1lIiwibG9jYWxGaWxlcyIsImVudllhbWwiLCJhZGRGaWxlIiwiY29sbGVjdGlvbiIsImNvbFJlcyIsImVudlZhbHVlcyIsImVuYWJsZWQiLCJlbnZSZXMiLCJlbnZpcm9ubWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUF5aEJTQTtlQUFBQTs7UUFBbUJDO2VBQUFBOztRQURmQztlQUFBQTs7OzRCQXhoQmM7d0JBQ2M7MEJBQ3BCO3dCQUNBO3VCQUNZO2tFQUlQOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIscUVBQXFFLEdBQ3JFLE1BQU1GLG9CQUFvQjtJQUN6QjtJQUNBO0NBQ0E7QUFFRCw4RUFBOEUsR0FDOUUsTUFBTUMsaUJBQWlCO0lBQ3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0EsQ0FBQ0UsSUFBSSxDQUFDO0FBUVAsZUFBZUMsV0FDZEMsVUFBNkIsRUFDN0JDLFVBQW1DO0lBRW5DLElBQUlBLFdBQVdDLGVBQWUsSUFBSSxNQUFNLE9BQU8sQ0FBQztJQUVoRCxNQUFNQyxVQUFVO1FBQ2Y7WUFBRUMsT0FBTztZQUFpQkMsYUFBYTtRQUFPO1FBQzlDO1lBQ0NELE9BQU87WUFDUEMsYUFBYTtRQUNkO1FBQ0E7WUFDQ0QsT0FBTztZQUNQQyxhQUFhO1FBQ2Q7S0FDQTtJQUNELE1BQU1DLFdBQVcsTUFBTUMsSUFBQUEsWUFBSSxFQUMxQixpQkFDQUosU0FDQSxDQUFDSyxJQUFNLEdBQUdBLEVBQUVKLEtBQUssQ0FBQyxHQUFHLEVBQUVJLEVBQUVILFdBQVcsRUFBRTtJQUV2QyxNQUFNSSxXQUFXSCxVQUFVRixTQUFTO0lBRXBDLElBQUlLLGFBQWEsUUFBUSxPQUFPO1FBQUVQLGlCQUFpQjtJQUFPO0lBQzFELElBQUlPLGFBQWEsU0FBUyxPQUFPO1FBQUVQLGlCQUFpQjtJQUFRO0lBRTVELE1BQU1RLFNBQ0xDLFFBQVFDLEdBQUcsQ0FBQ0MsZUFBZSxJQUMxQixNQUFNLG1FQUFBLFFBQU8s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
package/es6/src/runner.js CHANGED
@@ -13,6 +13,9 @@ const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
13
13
  *
14
14
  * The container runs as the host uid/gid whenever possible so scaffolded files
15
15
  * are never root-owned (post-hoc `chown` is unreliable across Docker setups).
16
+ *
17
+ * Host `~/.config/auth0` is mounted when present so the Auth0 CLI can reuse
18
+ * credentials (required for Postman SPA / auth0ClientId).
16
19
  */ export function runInBuilder(opts) {
17
20
  const targetDir = resolve(opts.d ?? ".");
18
21
  const projectName = basename(targetDir);
@@ -43,6 +46,8 @@ const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
43
46
  mkdirSync(npmCacheDir, {
44
47
  recursive: true
45
48
  });
49
+ // Isolated HOME so --user host-uid can write without a matching /etc/passwd entry.
50
+ const builderHome = "/tmp/decohere-create-home";
46
51
  const volumes = [
47
52
  "-v",
48
53
  `${targetDir}:/workspace`,
@@ -59,9 +64,8 @@ const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
59
64
  "NPM_CONFIG_CACHE=/npm-cache",
60
65
  "-e",
61
66
  "NPM_CONFIG_PREFER_OFFLINE=true",
62
- // Writable HOME for npm / auth0 CLI when not running as image root/node.
63
67
  "-e",
64
- "HOME=/tmp/decohere-create-home"
68
+ `HOME=${builderHome}`
65
69
  ];
66
70
  // Mount host .npmrc where the non-root process can read it.
67
71
  const npmrcPath = resolve(homedir(), ".npmrc");
@@ -69,6 +73,12 @@ const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
69
73
  volumes.push("-v", `${npmrcPath}:/tmp/host-npmrc:ro`);
70
74
  envArgs.push("-e", "NPM_CONFIG_USERCONFIG=/tmp/host-npmrc");
71
75
  }
76
+ // Auth0 CLI reads credentials from $HOME/.config/auth0 — without this mount,
77
+ // ensureSpaApp fails and Postman gets an empty auth0ClientId.
78
+ const auth0ConfigDir = resolve(homedir(), ".config/auth0");
79
+ if (existsSync(auth0ConfigDir)) {
80
+ volumes.push("-v", `${auth0ConfigDir}:${builderHome}/.config/auth0`);
81
+ }
72
82
  const userArgs = [];
73
83
  if (runAsHostUser) {
74
84
  userArgs.push("--user", `${hostUid}:${hostGid}`);
@@ -122,4 +132,4 @@ const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
122
132
  process.exit(result.status ?? 0);
123
133
  }
124
134
 
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcnVubmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlU3luYywgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSwgQ1JFQVRFX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEFwaU9wdGlvbnMgfSBmcm9tIFwiLi93ZWJhcGkvY3JlYXRlLWFwaS5qc1wiO1xuXG5jb25zdCBCVUlMREVSX0lNQUdFID0gYCR7Q1JFQVRFX0lNQUdFX1JFUE9TSVRPUll9OiR7Q1JFQVRFX1ZFUlNJT059YDtcblxuLyoqXG4gKiBSdW4gdGhlIHNjYWZmb2xkIGluc2lkZSBhIHByZS1idWlsdCBEb2NrZXIgYnVpbGRlciBpbWFnZS5cbiAqXG4gKiBDYWxsZWQgd2hlbiBgREVDT0hFUkVfQlVJTERFUmAgaXMgbm90IHNldCDigJQgaS5lLiB0aGUgQ0xJIGlzIHJ1bm5pbmcgb24gdGhlXG4gKiBob3N0LCBvdXRzaWRlIHRoZSBjb250YWluZXIuIE1vdW50cyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhcyBgL3dvcmtzcGFjZWAgc29cbiAqIHRoZSBzY2FmZm9sZGVkIGZpbGVzIGFyZSB3cml0dGVuIGJhY2sgdG8gdGhlIGhvc3QgZmlsZXN5c3RlbS5cbiAqXG4gKiBUaGUgY29udGFpbmVyIHJ1bnMgYXMgdGhlIGhvc3QgdWlkL2dpZCB3aGVuZXZlciBwb3NzaWJsZSBzbyBzY2FmZm9sZGVkIGZpbGVzXG4gKiBhcmUgbmV2ZXIgcm9vdC1vd25lZCAocG9zdC1ob2MgYGNob3duYCBpcyB1bnJlbGlhYmxlIGFjcm9zcyBEb2NrZXIgc2V0dXBzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkluQnVpbGRlcihvcHRzOiBBcGlPcHRpb25zKTogbmV2ZXIge1xuXHRjb25zdCB0YXJnZXREaXIgPSByZXNvbHZlKG9wdHMuZCA/PyBcIi5cIik7XG5cdGNvbnN0IHByb2plY3ROYW1lID0gYmFzZW5hbWUodGFyZ2V0RGlyKTtcblx0bWtkaXJTeW5jKHRhcmdldERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cdC8vIEhvc3Qtb3duZWQgc28gaW5pdGlhbGl6ZUNvbW1hbmQgY2FuIGFsd2F5cyB3cml0ZSBoZXJlIGV2ZW4gaWYgc29tZXRoaW5nXG5cdC8vIGVsc2UgaW4gLmRldmNvbnRhaW5lciBlbmRzIHVwIG9kZGx5IG93bmVkLlxuXHRta2RpclN5bmMocmVzb2x2ZSh0YXJnZXREaXIsIFwiLmRldmNvbnRhaW5lclwiLCBcIm5wbS1hdXRoXCIpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuXHQvLyBFbnN1cmUgRG9ja2VyIGlzIGF2YWlsYWJsZS5cblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJkb2NrZXJcIiwgW1wiaW5mb1wiXSwgeyBzdGRpbzogXCJwaXBlXCIgfSk7XG5cdH0gY2F0Y2gge1xuXHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcIlxcbiAgRG9ja2VyIGlzIHJlcXVpcmVkIHRvIHNjYWZmb2xkIGEgRGVjb2hlcmUgcHJvamVjdC5cXG5cIiArXG5cdFx0XHRcdFwiICBJbnN0YWxsIERvY2tlciBEZXNrdG9wOiBodHRwczovL3d3dy5kb2NrZXIuY29tL3Byb2R1Y3RzL2RvY2tlci1kZXNrdG9wXFxuXCIsXG5cdFx0KTtcblx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdH1cblxuXHRjb25zdCBob3N0VWlkID0gcHJvY2Vzcy5nZXR1aWQ/LigpO1xuXHRjb25zdCBob3N0R2lkID0gcHJvY2Vzcy5nZXRnaWQ/LigpID8/IGhvc3RVaWQ7XG5cdGNvbnN0IHJ1bkFzSG9zdFVzZXIgPSBob3N0VWlkICE9IG51bGwgJiYgaG9zdEdpZCAhPSBudWxsO1xuXG5cdC8vIEFub255bW91cyByb290LW93bmVkIHZvbHVtZXMgYXJlIG5vdCB3cml0YWJsZSB3aGVuIHdlIGRyb3AgcHJpdmlsZWdlcy5cblx0Y29uc3QgbnBtQ2FjaGVEaXIgPSByZXNvbHZlKGhvbWVkaXIoKSwgXCIuY2FjaGUvZGVjb2hlcmUtY3JlYXRlL25wbVwiKTtcblx0bWtkaXJTeW5jKG5wbUNhY2hlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuXHRjb25zdCB2b2x1bWVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIi12XCIsXG5cdFx0YCR7dGFyZ2V0RGlyfTovd29ya3NwYWNlYCxcblx0XHRcIi12XCIsXG5cdFx0YCR7bnBtQ2FjaGVEaXJ9Oi9ucG0tY2FjaGVgLFxuXHRdO1xuXG5cdGNvbnN0IGVudkFyZ3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiLWVcIixcblx0XHRcIkRFQ09IRVJFX0JVSUxERVI9MVwiLFxuXHRcdC8vIEhvc3QgZGlyIGJhc2VuYW1lIOKAlCBjb250YWluZXIgY3dkIGlzIC93b3Jrc3BhY2Ugc28gYmFzZW5hbWUgd291bGQgYmUgd3JvbmcuXG5cdFx0XCItZVwiLFxuXHRcdGBERUNPSEVSRV9QUk9KRUNUX05BTUU9JHtwcm9qZWN0TmFtZX1gLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfQ0FDSEU9L25wbS1jYWNoZVwiLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfUFJFRkVSX09GRkxJTkU9dHJ1ZVwiLFxuXHRcdC8vIFdyaXRhYmxlIEhPTUUgZm9yIG5wbSAvIGF1dGgwIENMSSB3aGVuIG5vdCBydW5uaW5nIGFzIGltYWdlIHJvb3Qvbm9kZS5cblx0XHRcIi1lXCIsXG5cdFx0XCJIT01FPS90bXAvZGVjb2hlcmUtY3JlYXRlLWhvbWVcIixcblx0XTtcblxuXHQvLyBNb3VudCBob3N0IC5ucG1yYyB3aGVyZSB0aGUgbm9uLXJvb3QgcHJvY2VzcyBjYW4gcmVhZCBpdC5cblx0Y29uc3QgbnBtcmNQYXRoID0gcmVzb2x2ZShob21lZGlyKCksIFwiLm5wbXJjXCIpO1xuXHRpZiAoZXhpc3RzU3luYyhucG1yY1BhdGgpKSB7XG5cdFx0dm9sdW1lcy5wdXNoKFwiLXZcIiwgYCR7bnBtcmNQYXRofTovdG1wL2hvc3QtbnBtcmM6cm9gKTtcblx0XHRlbnZBcmdzLnB1c2goXCItZVwiLCBcIk5QTV9DT05GSUdfVVNFUkNPTkZJRz0vdG1wL2hvc3QtbnBtcmNcIik7XG5cdH1cblxuXHRjb25zdCB1c2VyQXJnczogc3RyaW5nW10gPSBbXTtcblx0aWYgKHJ1bkFzSG9zdFVzZXIpIHtcblx0XHR1c2VyQXJncy5wdXNoKFwiLS11c2VyXCIsIGAke2hvc3RVaWR9OiR7aG9zdEdpZH1gKTtcblx0fSBlbHNlIGlmIChob3N0VWlkICE9IG51bGwpIHtcblx0XHQvLyBGYWxsYmFjayBmb3IgZW52aXJvbm1lbnRzIHdpdGhvdXQgZ2V0Z2lkOiBrZWVwIGxlZ2FjeSBjaG93biBwYXRoLlxuXHRcdGVudkFyZ3MucHVzaChcIi1lXCIsIGBIT1NUX1VJRD0ke2hvc3RVaWR9YCk7XG5cdFx0aWYgKGhvc3RHaWQgIT0gbnVsbCkgZW52QXJncy5wdXNoKFwiLWVcIiwgYEhPU1RfR0lEPSR7aG9zdEdpZH1gKTtcblx0fVxuXG5cdGNvbnN0IGNvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcIndlYmFwaVwiLCBcIi1kXCIsIFwiLlwiXTtcblx0aWYgKG9wdHMuZGF0YWJhc2VQcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tZGF0YWJhc2VcIiwgb3B0cy5kYXRhYmFzZVByb3ZpZGVyKTtcblx0fVxuXHRpZiAob3B0cy5hdXRoUHJvdmlkZXIgIT0gbnVsbCkge1xuXHRcdGNvbW1hbmRBcmdzLnB1c2goXCItLWF1dGhcIiwgb3B0cy5hdXRoUHJvdmlkZXIpO1xuXHR9XG5cdGlmIChvcHRzLnBvc3RtYW5Qcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tcG9zdG1hblwiLCBvcHRzLnBvc3RtYW5Qcm92aWRlcik7XG5cdH1cblx0aWYgKG9wdHMuaW5zdGFsbERlcGVuZGVuY2llcyAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0taW5zdGFsbFwiLCBvcHRzLmluc3RhbGxEZXBlbmRlbmNpZXMpO1xuXHR9XG5cblx0Y29uc29sZS5sb2coXCIgIFJ1bm5pbmcgc2NhZmZvbGRpbmcgaW4gYSBzYW5kYm94ZWQgY29udGFpbmVyLi4uXFxuXCIpO1xuXG5cdC8vIE9ubHkgYWxsb2NhdGUgYSBUVFkgd2hlbiBzdGRpbiBpcyBpdHNlbGYgYSBUVFkg4oCUIGF2b2lkcyBhIGh1bmcgcHJvY2Vzc1xuXHQvLyBpbiBub24taW50ZXJhY3RpdmUgZW52aXJvbm1lbnRzIChwaXBlcywgQ0ksIHNjcmlwdHMpLlxuXHRjb25zdCB0dHlGbGFncyA9IHByb2Nlc3Muc3RkaW4uaXNUVFkgPyBbXCItaXRcIl0gOiBbXCItaVwiXTtcblxuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXG5cdFx0XCJkb2NrZXJcIixcblx0XHRbXG5cdFx0XHRcInJ1blwiLFxuXHRcdFx0XCItLXJtXCIsXG5cdFx0XHQuLi50dHlGbGFncyxcblx0XHRcdC4uLnVzZXJBcmdzLFxuXHRcdFx0Li4udm9sdW1lcyxcblx0XHRcdC4uLmVudkFyZ3MsXG5cdFx0XHRcIi13XCIsXG5cdFx0XHRcIi93b3Jrc3BhY2VcIixcblx0XHRcdEJVSUxERVJfSU1BR0UsXG5cdFx0XHQuLi5jb21tYW5kQXJncyxcblx0XHRdLFxuXHRcdHsgc3RkaW86IFwiaW5oZXJpdFwiIH0sXG5cdCk7XG5cblx0aWYgKHJlc3VsdC5zdGF0dXMgPT09IDApIHtcblx0XHRjb25zb2xlLmxvZyhgXFxuICBTY2FmZm9sZCBjb21wbGV0ZSFcXG5cXG4gIE9wZW4geW91ciBwcm9qZWN0OlxcblxcbiAgICBjb2RlICR7dGFyZ2V0RGlyfVxcbmApO1xuXHR9XG5cblx0cHJvY2Vzcy5leGl0KHJlc3VsdC5zdGF0dXMgPz8gMCk7XG59XG4iXSwibmFtZXMiOlsiZXhlY0ZpbGVTeW5jIiwic3Bhd25TeW5jIiwiZXhpc3RzU3luYyIsIm1rZGlyU3luYyIsImhvbWVkaXIiLCJiYXNlbmFtZSIsInJlc29sdmUiLCJDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSIsIkNSRUFURV9WRVJTSU9OIiwiQlVJTERFUl9JTUFHRSIsInJ1bkluQnVpbGRlciIsIm9wdHMiLCJ0YXJnZXREaXIiLCJkIiwicHJvamVjdE5hbWUiLCJyZWN1cnNpdmUiLCJzdGRpbyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiaG9zdFVpZCIsImdldHVpZCIsImhvc3RHaWQiLCJnZXRnaWQiLCJydW5Bc0hvc3RVc2VyIiwibnBtQ2FjaGVEaXIiLCJ2b2x1bWVzIiwiZW52QXJncyIsIm5wbXJjUGF0aCIsInB1c2giLCJ1c2VyQXJncyIsImNvbW1hbmRBcmdzIiwiZGF0YWJhc2VQcm92aWRlciIsImF1dGhQcm92aWRlciIsInBvc3RtYW5Qcm92aWRlciIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJsb2ciLCJ0dHlGbGFncyIsInN0ZGluIiwiaXNUVFkiLCJyZXN1bHQiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFlBQVksRUFBRUMsU0FBUyxRQUFRLHFCQUFxQjtBQUM3RCxTQUFTQyxVQUFVLEVBQUVDLFNBQVMsUUFBUSxVQUFVO0FBQ2hELFNBQVNDLE9BQU8sUUFBUSxVQUFVO0FBQ2xDLFNBQVNDLFFBQVEsRUFBRUMsT0FBTyxRQUFRLFlBQVk7QUFDOUMsU0FBU0MsdUJBQXVCLEVBQUVDLGNBQWMsUUFBUSxlQUFlO0FBR3ZFLE1BQU1DLGdCQUFnQixHQUFHRix3QkFBd0IsQ0FBQyxFQUFFQyxnQkFBZ0I7QUFFcEU7Ozs7Ozs7OztDQVNDLEdBQ0QsT0FBTyxTQUFTRSxhQUFhQyxJQUFnQjtJQUM1QyxNQUFNQyxZQUFZTixRQUFRSyxL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
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcnVubmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlU3luYywgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSwgQ1JFQVRFX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEFwaU9wdGlvbnMgfSBmcm9tIFwiLi93ZWJhcGkvY3JlYXRlLWFwaS5qc1wiO1xuXG5jb25zdCBCVUlMREVSX0lNQUdFID0gYCR7Q1JFQVRFX0lNQUdFX1JFUE9TSVRPUll9OiR7Q1JFQVRFX1ZFUlNJT059YDtcblxuLyoqXG4gKiBSdW4gdGhlIHNjYWZmb2xkIGluc2lkZSBhIHByZS1idWlsdCBEb2NrZXIgYnVpbGRlciBpbWFnZS5cbiAqXG4gKiBDYWxsZWQgd2hlbiBgREVDT0hFUkVfQlVJTERFUmAgaXMgbm90IHNldCDigJQgaS5lLiB0aGUgQ0xJIGlzIHJ1bm5pbmcgb24gdGhlXG4gKiBob3N0LCBvdXRzaWRlIHRoZSBjb250YWluZXIuIE1vdW50cyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhcyBgL3dvcmtzcGFjZWAgc29cbiAqIHRoZSBzY2FmZm9sZGVkIGZpbGVzIGFyZSB3cml0dGVuIGJhY2sgdG8gdGhlIGhvc3QgZmlsZXN5c3RlbS5cbiAqXG4gKiBUaGUgY29udGFpbmVyIHJ1bnMgYXMgdGhlIGhvc3QgdWlkL2dpZCB3aGVuZXZlciBwb3NzaWJsZSBzbyBzY2FmZm9sZGVkIGZpbGVzXG4gKiBhcmUgbmV2ZXIgcm9vdC1vd25lZCAocG9zdC1ob2MgYGNob3duYCBpcyB1bnJlbGlhYmxlIGFjcm9zcyBEb2NrZXIgc2V0dXBzKS5cbiAqXG4gKiBIb3N0IGB+Ly5jb25maWcvYXV0aDBgIGlzIG1vdW50ZWQgd2hlbiBwcmVzZW50IHNvIHRoZSBBdXRoMCBDTEkgY2FuIHJldXNlXG4gKiBjcmVkZW50aWFscyAocmVxdWlyZWQgZm9yIFBvc3RtYW4gU1BBIC8gYXV0aDBDbGllbnRJZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5JbkJ1aWxkZXIob3B0czogQXBpT3B0aW9ucyk6IG5ldmVyIHtcblx0Y29uc3QgdGFyZ2V0RGlyID0gcmVzb2x2ZShvcHRzLmQgPz8gXCIuXCIpO1xuXHRjb25zdCBwcm9qZWN0TmFtZSA9IGJhc2VuYW1lKHRhcmdldERpcik7XG5cdG1rZGlyU3luYyh0YXJnZXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXHQvLyBIb3N0LW93bmVkIHNvIGluaXRpYWxpemVDb21tYW5kIGNhbiBhbHdheXMgd3JpdGUgaGVyZSBldmVuIGlmIHNvbWV0aGluZ1xuXHQvLyBlbHNlIGluIC5kZXZjb250YWluZXIgZW5kcyB1cCBvZGRseSBvd25lZC5cblx0bWtkaXJTeW5jKHJlc29sdmUodGFyZ2V0RGlyLCBcIi5kZXZjb250YWluZXJcIiwgXCJucG0tYXV0aFwiKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0Ly8gRW5zdXJlIERvY2tlciBpcyBhdmFpbGFibGUuXG5cdHRyeSB7XG5cdFx0ZXhlY0ZpbGVTeW5jKFwiZG9ja2VyXCIsIFtcImluZm9cIl0sIHsgc3RkaW86IFwicGlwZVwiIH0pO1xuXHR9IGNhdGNoIHtcblx0XHRjb25zb2xlLmVycm9yKFxuXHRcdFx0XCJcXG4gIERvY2tlciBpcyByZXF1aXJlZCB0byBzY2FmZm9sZCBhIERlY29oZXJlIHByb2plY3QuXFxuXCIgK1xuXHRcdFx0XHRcIiAgSW5zdGFsbCBEb2NrZXIgRGVza3RvcDogaHR0cHM6Ly93d3cuZG9ja2VyLmNvbS9wcm9kdWN0cy9kb2NrZXItZGVza3RvcFxcblwiLFxuXHRcdCk7XG5cdFx0cHJvY2Vzcy5leGl0KDEpO1xuXHR9XG5cblx0Y29uc3QgaG9zdFVpZCA9IHByb2Nlc3MuZ2V0dWlkPy4oKTtcblx0Y29uc3QgaG9zdEdpZCA9IHByb2Nlc3MuZ2V0Z2lkPy4oKSA/PyBob3N0VWlkO1xuXHRjb25zdCBydW5Bc0hvc3RVc2VyID0gaG9zdFVpZCAhPSBudWxsICYmIGhvc3RHaWQgIT0gbnVsbDtcblxuXHQvLyBBbm9ueW1vdXMgcm9vdC1vd25lZCB2b2x1bWVzIGFyZSBub3Qgd3JpdGFibGUgd2hlbiB3ZSBkcm9wIHByaXZpbGVnZXMuXG5cdGNvbnN0IG5wbUNhY2hlRGlyID0gcmVzb2x2ZShob21lZGlyKCksIFwiLmNhY2hlL2RlY29oZXJlLWNyZWF0ZS9ucG1cIik7XG5cdG1rZGlyU3luYyhucG1DYWNoZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0Ly8gSXNvbGF0ZWQgSE9NRSBzbyAtLXVzZXIgaG9zdC11aWQgY2FuIHdyaXRlIHdpdGhvdXQgYSBtYXRjaGluZyAvZXRjL3Bhc3N3ZCBlbnRyeS5cblx0Y29uc3QgYnVpbGRlckhvbWUgPSBcIi90bXAvZGVjb2hlcmUtY3JlYXRlLWhvbWVcIjtcblxuXHRjb25zdCB2b2x1bWVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIi12XCIsXG5cdFx0YCR7dGFyZ2V0RGlyfTovd29ya3NwYWNlYCxcblx0XHRcIi12XCIsXG5cdFx0YCR7bnBtQ2FjaGVEaXJ9Oi9ucG0tY2FjaGVgLFxuXHRdO1xuXG5cdGNvbnN0IGVudkFyZ3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiLWVcIixcblx0XHRcIkRFQ09IRVJFX0JVSUxERVI9MVwiLFxuXHRcdC8vIEhvc3QgZGlyIGJhc2VuYW1lIOKAlCBjb250YWluZXIgY3dkIGlzIC93b3Jrc3BhY2Ugc28gYmFzZW5hbWUgd291bGQgYmUgd3JvbmcuXG5cdFx0XCItZVwiLFxuXHRcdGBERUNPSEVSRV9QUk9KRUNUX05BTUU9JHtwcm9qZWN0TmFtZX1gLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfQ0FDSEU9L25wbS1jYWNoZVwiLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfUFJFRkVSX09GRkxJTkU9dHJ1ZVwiLFxuXHRcdFwiLWVcIixcblx0XHRgSE9NRT0ke2J1aWxkZXJIb21lfWAsXG5cdF07XG5cblx0Ly8gTW91bnQgaG9zdCAubnBtcmMgd2hlcmUgdGhlIG5vbi1yb290IHByb2Nlc3MgY2FuIHJlYWQgaXQuXG5cdGNvbnN0IG5wbXJjUGF0aCA9IHJlc29sdmUoaG9tZWRpcigpLCBcIi5ucG1yY1wiKTtcblx0aWYgKGV4aXN0c1N5bmMobnBtcmNQYXRoKSkge1xuXHRcdHZvbHVtZXMucHVzaChcIi12XCIsIGAke25wbXJjUGF0aH06L3RtcC9ob3N0LW5wbXJjOnJvYCk7XG5cdFx0ZW52QXJncy5wdXNoKFwiLWVcIiwgXCJOUE1fQ09ORklHX1VTRVJDT05GSUc9L3RtcC9ob3N0LW5wbXJjXCIpO1xuXHR9XG5cblx0Ly8gQXV0aDAgQ0xJIHJlYWRzIGNyZWRlbnRpYWxzIGZyb20gJEhPTUUvLmNvbmZpZy9hdXRoMCDigJQgd2l0aG91dCB0aGlzIG1vdW50LFxuXHQvLyBlbnN1cmVTcGFBcHAgZmFpbHMgYW5kIFBvc3RtYW4gZ2V0cyBhbiBlbXB0eSBhdXRoMENsaWVudElkLlxuXHRjb25zdCBhdXRoMENvbmZpZ0RpciA9IHJlc29sdmUoaG9tZWRpcigpLCBcIi5jb25maWcvYXV0aDBcIik7XG5cdGlmIChleGlzdHNTeW5jKGF1dGgwQ29uZmlnRGlyKSkge1xuXHRcdHZvbHVtZXMucHVzaChcIi12XCIsIGAke2F1dGgwQ29uZmlnRGlyfToke2J1aWxkZXJIb21lfS8uY29uZmlnL2F1dGgwYCk7XG5cdH1cblxuXHRjb25zdCB1c2VyQXJnczogc3RyaW5nW10gPSBbXTtcblx0aWYgKHJ1bkFzSG9zdFVzZXIpIHtcblx0XHR1c2VyQXJncy5wdXNoKFwiLS11c2VyXCIsIGAke2hvc3RVaWR9OiR7aG9zdEdpZH1gKTtcblx0fSBlbHNlIGlmIChob3N0VWlkICE9IG51bGwpIHtcblx0XHQvLyBGYWxsYmFjayBmb3IgZW52aXJvbm1lbnRzIHdpdGhvdXQgZ2V0Z2lkOiBrZWVwIGxlZ2FjeSBjaG93biBwYXRoLlxuXHRcdGVudkFyZ3MucHVzaChcIi1lXCIsIGBIT1NUX1VJRD0ke2hvc3RVaWR9YCk7XG5cdFx0aWYgKGhvc3RHaWQgIT0gbnVsbCkgZW52QXJncy5wdXNoKFwiLWVcIiwgYEhPU1RfR0lEPSR7aG9zdEdpZH1gKTtcblx0fVxuXG5cdGNvbnN0IGNvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcIndlYmFwaVwiLCBcIi1kXCIsIFwiLlwiXTtcblx0aWYgKG9wdHMuZGF0YWJhc2VQcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tZGF0YWJhc2VcIiwgb3B0cy5kYXRhYmFzZVByb3ZpZGVyKTtcblx0fVxuXHRpZiAob3B0cy5hdXRoUHJvdmlkZXIgIT0gbnVsbCkge1xuXHRcdGNvbW1hbmRBcmdzLnB1c2goXCItLWF1dGhcIiwgb3B0cy5hdXRoUHJvdmlkZXIpO1xuXHR9XG5cdGlmIChvcHRzLnBvc3RtYW5Qcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tcG9zdG1hblwiLCBvcHRzLnBvc3RtYW5Qcm92aWRlcik7XG5cdH1cblx0aWYgKG9wdHMuaW5zdGFsbERlcGVuZGVuY2llcyAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0taW5zdGFsbFwiLCBvcHRzLmluc3RhbGxEZXBlbmRlbmNpZXMpO1xuXHR9XG5cblx0Y29uc29sZS5sb2coXCIgIFJ1bm5pbmcgc2NhZmZvbGRpbmcgaW4gYSBzYW5kYm94ZWQgY29udGFpbmVyLi4uXFxuXCIpO1xuXG5cdC8vIE9ubHkgYWxsb2NhdGUgYSBUVFkgd2hlbiBzdGRpbiBpcyBpdHNlbGYgYSBUVFkg4oCUIGF2b2lkcyBhIGh1bmcgcHJvY2Vzc1xuXHQvLyBpbiBub24taW50ZXJhY3RpdmUgZW52aXJvbm1lbnRzIChwaXBlcywgQ0ksIHNjcmlwdHMpLlxuXHRjb25zdCB0dHlGbGFncyA9IHByb2Nlc3Muc3RkaW4uaXNUVFkgPyBbXCItaXRcIl0gOiBbXCItaVwiXTtcblxuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXG5cdFx0XCJkb2NrZXJcIixcblx0XHRbXG5cdFx0XHRcInJ1blwiLFxuXHRcdFx0XCItLXJtXCIsXG5cdFx0XHQuLi50dHlGbGFncyxcblx0XHRcdC4uLnVzZXJBcmdzLFxuXHRcdFx0Li4udm9sdW1lcyxcblx0XHRcdC4uLmVudkFyZ3MsXG5cdFx0XHRcIi13XCIsXG5cdFx0XHRcIi93b3Jrc3BhY2VcIixcblx0XHRcdEJVSUxERVJfSU1BR0UsXG5cdFx0XHQuLi5jb21tYW5kQXJncyxcblx0XHRdLFxuXHRcdHsgc3RkaW86IFwiaW5oZXJpdFwiIH0sXG5cdCk7XG5cblx0aWYgKHJlc3VsdC5zdGF0dXMgPT09IDApIHtcblx0XHRjb25zb2xlLmxvZyhgXFxuICBTY2FmZm9sZCBjb21wbGV0ZSFcXG5cXG4gIE9wZW4geW91ciBwcm9qZWN0OlxcblxcbiAgICBjb2RlICR7dGFyZ2V0RGlyfVxcbmApO1xuXHR9XG5cblx0cHJvY2Vzcy5leGl0KHJlc3VsdC5zdGF0dXMgPz8gMCk7XG59XG4iXSwibmFtZXMiOlsiZXhlY0ZpbGVTeW5jIiwic3Bhd25TeW5jIiwiZXhpc3RzU3luYyIsIm1rZGlyU3luYyIsImhvbWVkaXIiLCJiYXNlbmFtZSIsInJlc29sdmUiLCJDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSIsIkNSRUFURV9WRVJTSU9OIiwiQlVJTERFUl9JTUFHRSIsInJ1bkluQnVpbGRlciIsIm9wdHMiLCJ0YXJnZXREaXIiLCJkIiwicHJvamVjdE5hbWUiLCJyZWN1cnNpdmUiLCJzdGRpbyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiaG9zdFVpZCIsImdldHVpZCIsImhvc3RHaWQiLCJnZXRnaWQiLCJydW5Bc0hvc3RVc2VyIiwibnBtQ2FjaGVEaXIiLCJidWlsZGVySG9tZSIsInZvbHVtZXMiLCJlbnZBcmdzIiwibnBtcmNQYXRoIiwicHVzaCIsImF1dGgwQ29uZmlnRGlyIiwidXNlckFyZ3MiLCJjb21tYW5kQXJncyIsImRhdGFiYXNlUHJvdmlkZXIiLCJhdXRoUHJvdmlkZXIiLCJwb3N0bWFuUHJvdmlkZXIiLCJpbnN0YWxsRGVwZW5kZW5jaWVzIiwibG9nIiwidHR5RmxhZ3MiLCJzdGRpbiIsImlzVFRZIiwicmVzdWx0Iiwic3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxZQUFZLEVBQUVDLFNBQVMsUUFBUSxxQkFBcUI7QUFDN0QsU0FBU0MsVUFBVSxFQUFFQyxTQUFTLFFBQVEsVUFBVTtBQUNoRCxTQUFTQyxPQUFPLFFBQVEsVUFBVTtBQUNsQyxTQUFTQyxRQUFRLEVBQUVDLE9BQU8sUUFBUSxZQUFZO0FBQzlDLFNBQVNDLHVCQUF1QixFQUFFQyxjQUFjLFFBQVEsZUFBZTtBQUd2RSxNQUFNQyxnQkFBZ0IsR0FBR0Ysd0JBQXdCLENBQUMsRUFBRUMsZ0JBQWdCO0FBRXBFOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBU0UsYUFBYUMsSUFBZ0I7SUFDNUMsTUFBTUMsWUFBWU4sUUFBUUssS0FBS0UsQ0FBQyxJQUFJO0lBQ3BDLE1BQU1DLGNBQWNULFNBQVNPO0lBQzdCVCxVQUFVUyxXQUFXO1FBQUVHLFdBQVc7SUFBSztJQUN2QywwRUFBMEU7SUFDMUUsNkNBQTZDO0lBQzdDWixVQUFVRyxRQUFRTSxXQUFXLGlCQUFpQixhQUFhO1FBQUVHLFdBQVc7SUFBSztJQUU3RSw4QkFBOEI7SUFDOUIsSUFBSTtRQUNIZixhQUFhLFVBQVU7WUFBQztTQUFPLEVBQUU7WUFBRWdCLE9BQU87UUFBTztJQUNsRCxFQUFFLE9BQU07UUFDUEMsUUFBUUMsS0FBSyxDQUNaLDZEQUNDO1FBRUZDLFFBQVFDLElBQUksQ0FBQztJQUNkO0lBRUEsTUFBTUMsVUFBVUYsUUFBUUcsTUFBTTtJQUM5QixNQUFNQyxVQUFV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
@@ -1,4 +1,6 @@
1
1
  import { randomUUID } from "node:crypto";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { join } from "node:path";
2
4
  import { pick } from "../../domain/prompt.js";
3
5
  import { WELL_KNOWN_FILES } from "../../models/const.js";
4
6
  import * as auth0Cli from "./auth0-cli.js";
@@ -419,28 +421,46 @@ function yamlQuote(value) {
419
421
  }
420
422
  return files;
421
423
  }
422
- async function scaffold(workspace, options) {
423
- if (options.postmanProvider === "none" || options.postmanProvider == null) return;
424
- const authConfigModel = workspace.getModel(WELL_KNOWN_FILES.AUTH_CONFIG);
425
- const authCfg = authConfigModel?.config;
426
- let spaClientId;
427
- if (authCfg?.issuerBaseUrl) {
424
+ /** Read a previously scaffolded auth0ClientId so re-scaffold never blanks it. */ function readExistingSpaClientId(targetDir, projectName) {
425
+ const envPath = join(targetDir, "postman/environments", `${projectName}-Local.environment.yaml`);
426
+ if (!existsSync(envPath)) return undefined;
427
+ const text = readFileSync(envPath, "utf8");
428
+ const match = text.match(/key:\s*auth0ClientId\s*\n\s*value:\s*["']?([^"'\n]+)/);
429
+ const value = match?.[1]?.trim();
430
+ return value && value.length > 0 ? value : undefined;
431
+ }
432
+ /**
433
+ * Resolve the Postman SPA client id. Never returns empty — preserves an existing
434
+ * env value on Auth0 failure, otherwise throws so we do not write a blank env.
435
+ */ function resolveSpaClientId(workspace) {
436
+ const appName = `${workspace.name} Postman`;
437
+ try {
438
+ const app = auth0Cli.ensureSpaApp(appName, [
439
+ ...POSTMAN_CALLBACKS
440
+ ]);
441
+ console.log(app.reused ? ` ✓ Reusing Auth0 SPA app for Postman PKCE (${app.client_id})` : ` ✓ Auth0 SPA app created for Postman PKCE (${app.client_id})`);
428
442
  try {
429
- const app = auth0Cli.ensureSpaApp(`${workspace.name} Postman`, [
430
- ...POSTMAN_CALLBACKS
431
- ]);
432
- spaClientId = app.client_id;
433
- console.log(app.reused ? ` ✓ Reusing Auth0 SPA app for Postman PKCE (${spaClientId})` : ` ✓ Auth0 SPA app created for Postman PKCE (${spaClientId})`);
434
- try {
435
- auth0Cli.enableConnectionForClient(auth0Cli.DB_CONNECTION_NAME, spaClientId);
436
- console.log(` ✓ Enabled ${auth0Cli.DB_CONNECTION_NAME} on Postman SPA`);
437
- } catch (err) {
438
- console.error(` ✗ Failed to enable DB connection on SPA: ${err instanceof Error ? err.message : err}`);
439
- }
443
+ auth0Cli.enableConnectionForClient(auth0Cli.DB_CONNECTION_NAME, app.client_id);
444
+ console.log(` ✓ Enabled ${auth0Cli.DB_CONNECTION_NAME} on Postman SPA`);
440
445
  } catch (err) {
441
- console.error(` ✗ Failed to ensure Auth0 SPA app — set auth0ClientId in the environment: ${err instanceof Error ? err.message : err}`);
446
+ console.error(` ✗ Failed to enable DB connection on SPA: ${err instanceof Error ? err.message : err}`);
442
447
  }
448
+ return app.client_id;
449
+ } catch (err) {
450
+ const existing = readExistingSpaClientId(workspace.targetDir, workspace.name);
451
+ if (existing) {
452
+ console.error(` ✗ Failed to ensure Auth0 SPA app (${err instanceof Error ? err.message : err})`);
453
+ console.log(` ✓ Keeping existing auth0ClientId from Postman environment (${existing})`);
454
+ return existing;
455
+ }
456
+ throw new Error(`Failed to ensure Auth0 SPA app for Postman — auth0ClientId would be empty: ${err instanceof Error ? err.message : err}`);
443
457
  }
458
+ }
459
+ async function scaffold(workspace, options) {
460
+ if (options.postmanProvider === "none" || options.postmanProvider == null) return;
461
+ const authConfigModel = workspace.getModel(WELL_KNOWN_FILES.AUTH_CONFIG);
462
+ const authCfg = authConfigModel?.config;
463
+ const spaClientId = authCfg?.issuerBaseUrl ? resolveSpaClientId(workspace) : undefined;
444
464
  const auth0Env = authCfg?.issuerBaseUrl ? {
445
465
  auth0Domain: authCfg.issuerBaseUrl.replace(/^https?:\/\//, ""),
446
466
  auth0Audience: authCfg.audience,
@@ -534,4 +554,4 @@ export const PostmanFeature = {
534
554
  };
535
555
  export { POSTMAN_CALLBACKS, POSTMAN_SCOPES };
536
556
 
537
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL3Bvc3RtYW4uZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIjtcbmltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtzcGFjZVNjYWZmb2xkIH0gZnJvbSBcIi4uLy4uL21vZGVscy9wcm9qZWN0Lm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmUgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2NhZmZvbGQuc2VydmljZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBBdXRoQ29uZmlnTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2F1dGgtY29uZmlnLm1vZGVsLmpzXCI7XG5pbXBvcnQgKiBhcyBhdXRoMENsaSBmcm9tIFwiLi9hdXRoMC1jbGkuanNcIjtcblxuLyoqIFBvc3RtYW4gT0F1dGggY2FsbGJhY2sgVVJMcyAocG9wdXAgKyBcIkF1dGhvcml6ZSB1c2luZyBicm93c2VyXCIpLiAqL1xuY29uc3QgUE9TVE1BTl9DQUxMQkFDS1MgPSBbXG5cdFwiaHR0cHM6Ly9vYXV0aC5wc3Rtbi5pby92MS9jYWxsYmFja1wiLFxuXHRcImh0dHBzOi8vb2F1dGgucHN0bW4uaW8vdjEvYnJvd3Nlci1jYWxsYmFja1wiLFxuXSBhcyBjb25zdDtcblxuLyoqIFNjb3BlcyByZXF1ZXN0ZWQgZm9yIEF1dGgwIGFjY2VzcyB0b2tlbnMgKE9JREMgKyBIZWxsbyBDQVNMIHBlcm1pc3Npb25zKS4gKi9cbmNvbnN0IFBPU1RNQU5fU0NPUEVTID0gW1xuXHRcIm9wZW5pZFwiLFxuXHRcInByb2ZpbGVcIixcblx0XCJlbWFpbFwiLFxuXHRcInJlYWQ6SGVsbG9cIixcblx0XCJjcmVhdGU6SGVsbG9cIixcblx0XCJ1cGRhdGU6SGVsbG9cIixcblx0XCJkZWxldGU6SGVsbG9cIixcbl0uam9pbihcIiBcIik7XG5cbmV4cG9ydCB0eXBlIFBvc3RtYW5PcHRpb25zID0ge1xuXHRwb3N0bWFuUHJvdmlkZXI/OiBcImFwaVwiIHwgXCJsb2NhbFwiIHwgXCJub25lXCI7XG5cdGFwaUtleT86IHN0cmluZztcblx0d29ya3NwYWNlSWQ/OiBzdHJpbmc7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBnZXRPcHRpb25zKFxuXHRfd29ya3NwYWNlOiBXb3Jrc3BhY2VTY2FmZm9sZCxcblx0Y2xpT3B0aW9uczogUGFydGlhbDxQb3N0bWFuT3B0aW9ucz4sXG4pOiBQcm9taXNlPFBhcnRpYWw8UG9zdG1hbk9wdGlvbnM+PiB7XG5cdGlmIChjbGlPcHRpb25zLnBvc3RtYW5Qcm92aWRlciAhPSBudWxsKSByZXR1cm4ge307XG5cblx0Y29uc3QgY2hvaWNlcyA9IFtcblx0XHR7IGxhYmVsOiBcIm5vbmVcIiBhcyBjb25zdCwgZGVzY3JpcHRpb246IFwic2tpcFwiIH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IFwibG9jYWxcIiBhcyBjb25zdCxcblx0XHRcdGRlc2NyaXB0aW9uOiBcIkxvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGZpbGVzIChubyBBUEkga2V5KVwiLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IFwiYXBpXCIgYXMgY29uc3QsXG5cdFx0XHRkZXNjcmlwdGlvbjogXCJhbHNvIHVwbG9hZCB0byBQb3N0bWFuLmNvbSAobmVlZHMgQVBJIGtleSlcIixcblx0XHR9LFxuXHRdO1xuXHRjb25zdCBzZWxlY3RlZCA9IGF3YWl0IHBpY2soXG5cdFx0XCJcXG4gIFBvc3RtYW46IFwiLFxuXHRcdGNob2ljZXMsXG5cdFx0KGMpID0+IGAke2MubGFiZWx9IOKAlCAke2MuZGVzY3JpcHRpb259YCxcblx0KTtcblx0Y29uc3QgcHJvdmlkZXIgPSBzZWxlY3RlZD8ubGFiZWwgPz8gXCJub25lXCI7XG5cblx0aWYgKHByb3ZpZGVyID09PSBcIm5vbmVcIikgcmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcIm5vbmVcIiB9O1xuXHRpZiAocHJvdmlkZXIgPT09IFwibG9jYWxcIikgcmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcImxvY2FsXCIgfTtcblxuXHRjb25zdCBhcGlLZXkgPVxuXHRcdHByb2Nlc3MuZW52LlBPU1RNQU5fQVBJX0tFWSA/P1xuXHRcdChhd2FpdCBpbXBvcnQoXCIuLi8uLi9kb21haW4vcHJvbXB0LmpzXCIpLnRoZW4oKG0pID0+XG5cdFx0XHRtLmFzayhcIlxcbiAgUG9zdG1hbiBBUEkga2V5IChhcHAuZ2V0cG9zdG1hbi5jb20vc2V0dGluZ3MvbWUvYXBpLWtleXMpOiBcIiksXG5cdFx0KSk7XG5cblx0Y29uc3QgaGVhZGVycyA9IHsgXCJYLUFwaS1LZXlcIjogYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXHRjb25zdCB3c1JlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7IGhlYWRlcnMgfSk7XG5cblx0aWYgKCF3c1Jlcy5vaykge1xuXHRcdGNvbnNvbGUuZXJyb3IoXCJcXG4gIFBvc3RtYW4gQVBJIGtleSBpbnZhbGlkIOKAlCBmYWxsaW5nIGJhY2sgdG8gbG9jYWwgZmlsZXMuXCIpO1xuXHRcdHJldHVybiB7IHBvc3RtYW5Qcm92aWRlcjogXCJsb2NhbFwiIH07XG5cdH1cblxuXHRjb25zdCB7IHdvcmtzcGFjZXMgfSA9IChhd2FpdCB3c1Jlcy5qc29uKCkpIGFzIHtcblx0XHR3b3Jrc3BhY2VzOiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0+O1xuXHR9O1xuXG5cdHR5cGUgV3NDaG9pY2UgPSB7IGxhYmVsOiBzdHJpbmc7IGlkOiBzdHJpbmcgfCBudWxsIH07XG5cdGNvbnN0IHdzQ2hvaWNlczogV3NDaG9pY2VbXSA9IFtcblx0XHR7IGxhYmVsOiBcIjxuZXcgd29ya3NwYWNlPlwiLCBpZDogbnVsbCB9LFxuXHRcdC4uLndvcmtzcGFjZXMubWFwKCh3KSA9PiAoeyBsYWJlbDogYCR7dy5uYW1lfSAoJHt3LnR5cGV9KWAsIGlkOiB3LmlkIH0pKSxcblx0XTtcblxuXHRjb25zdCB3c1BpY2tlZCA9IGF3YWl0IHBpY2soXCJcXG4gIFBvc3RtYW4gd29ya3NwYWNlOiBcIiwgd3NDaG9pY2VzLCAoYykgPT4gYy5sYWJlbCk7XG5cblx0bGV0IHdvcmtzcGFjZUlkOiBzdHJpbmc7XG5cdGlmICghd3NQaWNrZWQgfHwgd3NQaWNrZWQuaWQgPT09IG51bGwpIHtcblx0XHRjb25zdCB7IGFzayB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiKTtcblx0XHRjb25zdCB3c05hbWUgPSBhd2FpdCBhc2soYCAgV29ya3NwYWNlIG5hbWU6IGApO1xuXHRcdGNvbnN0IGNyZWF0ZVJlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7XG5cdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0aGVhZGVycyxcblx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgd29ya3NwYWNlOiB7IG5hbWU6IHdzTmFtZSwgdHlwZTogXCJwZXJzb25hbFwiIH0gfSksXG5cdFx0fSk7XG5cdFx0Y29uc3QgeyB3b3Jrc3BhY2U6IHdzIH0gPSAoYXdhaXQgY3JlYXRlUmVzLmpzb24oKSkgYXMgeyB3b3Jrc3BhY2U6IHsgaWQ6IHN0cmluZyB9IH07XG5cdFx0d29ya3NwYWNlSWQgPSB3cy5pZDtcblx0XHRjb25zb2xlLmxvZyhgICDinJMgV29ya3NwYWNlIGNyZWF0ZWQ6ICR7d3NOYW1lfWApO1xuXHR9IGVsc2Uge1xuXHRcdHdvcmtzcGFjZUlkID0gd3NQaWNrZWQuaWQ7XG5cdH1cblxuXHRyZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwiYXBpXCIsIGFwaUtleSwgd29ya3NwYWNlSWQgfTtcbn1cblxudHlwZSBBdXRoMEVudiA9IHtcblx0YXV0aDBEb21haW4/OiBzdHJpbmc7XG5cdGF1dGgwQXVkaWVuY2U/OiBzdHJpbmc7XG5cdGF1dGgwQ2xpZW50SWQ/OiBzdHJpbmc7XG59O1xuXG4vKiogdjIuMSBKU09OIOKAlCB1c2VkIGZvciBQb3N0bWFuLmNvbSBBUEkgdXBsb2FkIG9ubHkuICovXG5mdW5jdGlvbiBidWlsZENvbGxlY3Rpb25Kc29uKHByb2plY3ROYW1lOiBzdHJpbmcsIGF1dGg/OiBBdXRoMEVudik6IHVua25vd24ge1xuXHRjb25zdCBhdXRoT2JqID0gYXV0aD8uYXV0aDBEb21haW5cblx0XHQ/IHtcblx0XHRcdFx0dHlwZTogXCJvYXV0aDJcIixcblx0XHRcdFx0b2F1dGgyOiBbXG5cdFx0XHRcdFx0eyBrZXk6IFwiZ3JhbnRfdHlwZVwiLCB2YWx1ZTogXCJhdXRob3JpemF0aW9uX2NvZGVfd2l0aF9wa2NlXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXk6IFwiYXV0aFVybFwiLFxuXHRcdFx0XHRcdFx0dmFsdWU6IFwiaHR0cHM6Ly97e2F1dGgwRG9tYWlufX0vYXV0aG9yaXplP2F1ZGllbmNlPXt7YXV0aDBBdWRpZW5jZX19XCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0a2V5OiBcImFjY2Vzc1Rva2VuVXJsXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJodHRwczovL3t7YXV0aDBEb21haW59fS9vYXV0aC90b2tlblwiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNsaWVudElkXCIsIHZhbHVlOiBcInt7YXV0aDBDbGllbnRJZH19XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJzY29wZVwiLCB2YWx1ZTogUE9TVE1BTl9TQ09QRVMsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJyZWRpcmVjdF91cmlcIiwgdmFsdWU6IFBPU1RNQU5fQ0FMTEJBQ0tTWzBdLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwidXNlQnJvd3NlclwiLCB2YWx1ZTogXCJ0cnVlXCIsIHR5cGU6IFwiYm9vbGVhblwiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiYWRkVG9rZW5Ub1wiLCB2YWx1ZTogXCJoZWFkZXJcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNoYWxsZW5nZUFsZ29yaXRobVwiLCB2YWx1ZTogXCJTMjU2XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJjbGllbnRfYXV0aGVudGljYXRpb25cIiwgdmFsdWU6IFwiYm9keVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiY2xpZW50U2VjcmV0XCIsIHZhbHVlOiBcIlwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwidG9rZW5OYW1lXCIsIHZhbHVlOiBgJHtwcm9qZWN0TmFtZX0gQWNjZXNzIFRva2VuYCwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fVxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IGhlbGxvVXJsID0gKHBhdGg6IHN0cmluZywgcmF3OiBzdHJpbmcpID0+ICh7XG5cdFx0cmF3OiBge3tiYXNlVXJsfX0ke3Jhd31gLFxuXHRcdGhvc3Q6IFtcInt7YmFzZVVybH19XCJdLFxuXHRcdHBhdGg6IHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKSxcblx0fSk7XG5cblx0cmV0dXJuIHtcblx0XHRpbmZvOiB7XG5cdFx0XHRfcG9zdG1hbl9pZDogcmFuZG9tVVVJRCgpLFxuXHRcdFx0bmFtZTogYCR7cHJvamVjdE5hbWV9IFdlYkFQSWAsXG5cdFx0XHRzY2hlbWE6IFwiaHR0cHM6Ly9zY2hlbWEuZ2V0cG9zdG1hbi5jb20vanNvbi9jb2xsZWN0aW9uL3YyLjEuMC9jb2xsZWN0aW9uLmpzb25cIixcblx0XHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XHRcIk9wZW4gdGhlIHByb2plY3Qgcm9vdCBpbiBQb3N0bWFuIExvY2FsIFZpZXcgKG5vdCB0aGUgcG9zdG1hbi8gZm9sZGVyKS4gXCIgK1xuXHRcdFx0XHRcIlNlbGVjdCB0aGUgTG9jYWwgZW52aXJvbm1lbnQsIHRoZW4gQXV0aG9yaXphdGlvbiDihpIgR2V0IE5ldyBBY2Nlc3MgVG9rZW4gKFBLQ0UpLlwiLFxuXHRcdH0sXG5cdFx0Li4uKGF1dGhPYmogPyB7IGF1dGg6IGF1dGhPYmogfSA6IHt9KSxcblx0XHRpdGVtOiBbXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiSGVsbG9cIixcblx0XHRcdFx0aXRlbTogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6IFwiTGlzdCAoYW5vbnltb3VzKVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRhdXRoOiB7IHR5cGU6IFwibm9hdXRoXCIgfSxcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiBcIkdFVFwiLFxuXHRcdFx0XHRcdFx0XHR1cmw6IGhlbGxvVXJsKFwiaGVsbG9cIiwgXCIvaGVsbG9cIiksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogXCJHZXQgYnkgaWRcIixcblx0XHRcdFx0XHRcdHJlcXVlc3Q6IHtcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiBcIkdFVFwiLFxuXHRcdFx0XHRcdFx0XHR1cmw6IGhlbGxvVXJsKFwiaGVsbG8vOmlkXCIsIFwiL2hlbGxvLzppZFwiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIkNyZWF0ZVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRcdFx0XHRoZWFkZXI6IFt7IGtleTogXCJDb250ZW50LVR5cGVcIiwgdmFsdWU6IFwiYXBwbGljYXRpb24vanNvblwiIH1dLFxuXHRcdFx0XHRcdFx0XHRib2R5OiB7XG5cdFx0XHRcdFx0XHRcdFx0bW9kZTogXCJyYXdcIixcblx0XHRcdFx0XHRcdFx0XHRyYXc6ICd7XFxuICBcIm1lc3NhZ2VcIjogXCJoZWxsb1wiXFxufVxcbicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsb1wiLCBcIi9oZWxsb1wiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIlVwZGF0ZVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiUFVUXCIsXG5cdFx0XHRcdFx0XHRcdGhlYWRlcjogW3sga2V5OiBcIkNvbnRlbnQtVHlwZVwiLCB2YWx1ZTogXCJhcHBsaWNhdGlvbi9qc29uXCIgfV0sXG5cdFx0XHRcdFx0XHRcdGJvZHk6IHtcblx0XHRcdFx0XHRcdFx0XHRtb2RlOiBcInJhd1wiLFxuXHRcdFx0XHRcdFx0XHRcdHJhdzogJ3tcXG4gIFwibWVzc2FnZVwiOiBcInVwZGF0ZWRcIlxcbn1cXG4nLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR1cmw6IGhlbGxvVXJsKFwiaGVsbG8vOmlkXCIsIFwiL2hlbGxvLzppZFwiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIkRlbGV0ZVwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiREVMRVRFXCIsXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsby86aWRcIiwgXCIvaGVsbG8vOmlkXCIpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRdLFxuXHRcdFx0fSxcblx0XHRdLFxuXHR9O1xufVxuXG5mdW5jdGlvbiB5YW1sUXVvdGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICgvWzoje31bXFxdLCYqP3w8Pj0hJUBgXS8udGVzdCh2YWx1ZSkgfHwgdmFsdWUuaW5jbHVkZXMoXCJcXG5cIikgfHwgdmFsdWUgPT09IFwiXCIpIHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIExvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGVudmlyb25tZW50IChZQU1MKS4gKi9cbmZ1bmN0aW9uIGJ1aWxkRW52aXJvbm1lbnRZYW1sKG5hbWU6IHN0cmluZywgYXV0aD86IEF1dGgwRW52KTogc3RyaW5nIHtcblx0Y29uc3QgdmFsdWVzOiBBcnJheTx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0gW1xuXHRcdHsga2V5OiBcImJhc2VVcmxcIiwgdmFsdWU6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwXCIgfSxcblx0XTtcblx0aWYgKGF1dGg/LmF1dGgwRG9tYWluKSB7XG5cdFx0dmFsdWVzLnB1c2goXG5cdFx0XHR7IGtleTogXCJhdXRoMERvbWFpblwiLCB2YWx1ZTogYXV0aC5hdXRoMERvbWFpbiB9LFxuXHRcdFx0eyBrZXk6IFwiYXV0aDBBdWRpZW5jZVwiLCB2YWx1ZTogYXV0aC5hdXRoMEF1ZGllbmNlID8/IFwiXCIgfSxcblx0XHRcdHsga2V5OiBcImF1dGgwQ2xpZW50SWRcIiwgdmFsdWU6IGF1dGguYXV0aDBDbGllbnRJZCA/PyBcIlwiIH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJhdXRoVXJsXCIsXG5cdFx0XHRcdHZhbHVlOiBgaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L2F1dGhvcml6ZT9hdWRpZW5jZT0ke2F1dGguYXV0aDBBdWRpZW5jZSA/PyBcIlwifWAsXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRrZXk6IFwiYWNjZXNzVG9rZW5VcmxcIixcblx0XHRcdFx0dmFsdWU6IGBodHRwczovLyR7YXV0aC5hdXRoMERvbWFpbn0vb2F1dGgvdG9rZW5gLFxuXHRcdFx0fSxcblx0XHRcdHsga2V5OiBcImNhbGxiYWNrVXJsXCIsIHZhbHVlOiBQT1NUTUFOX0NBTExCQUNLU1swXSB9LFxuXHRcdFx0eyBrZXk6IFwic2NvcGVcIiwgdmFsdWU6IFBPU1RNQU5fU0NPUEVTIH0sXG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGxpbmVzID0gW2BuYW1lOiAke3lhbWxRdW90ZShuYW1lKX1gLCBcInZhbHVlczpcIl07XG5cdGZvciAoY29uc3QgdiBvZiB2YWx1ZXMpIHtcblx0XHRsaW5lcy5wdXNoKGAgIC0ga2V5OiAke3Yua2V5fWApO1xuXHRcdGxpbmVzLnB1c2goYCAgICB2YWx1ZTogJHt5YW1sUXVvdGUodi52YWx1ZSl9YCk7XG5cdFx0bGluZXMucHVzaChcIiAgICBlbmFibGVkOiB0cnVlXCIpO1xuXHR9XG5cdHJldHVybiBgJHtsaW5lcy5qb2luKFwiXFxuXCIpfVxcbmA7XG59XG5cbi8qKiBMb2NhbCBWaWV3IC8gTmF0aXZlIEdpdCBjb2xsZWN0aW9uICh2MyBtdWx0aS1maWxlIFlBTUwpLiAqL1xuZnVuY3Rpb24gYnVpbGRMb2NhbFZpZXdGaWxlcyhcblx0cHJvamVjdE5hbWU6IHN0cmluZyxcblx0YXV0aD86IEF1dGgwRW52LFxuKTogQXJyYXk8eyBmaWxlUGF0aDogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT4ge1xuXHRjb25zdCBjb2xsZWN0aW9uRGlyID0gYHBvc3RtYW4vY29sbGVjdGlvbnMvJHtwcm9qZWN0TmFtZX0gV2ViQVBJYDtcblx0Y29uc3QgZmlsZXM6IEFycmF5PHsgZmlsZVBhdGg6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+ID0gW107XG5cblx0Ly8gUG9zdG1hbiBMb2NhbCBWaWV3IHN0b3JlcyBPQXV0aCB1bmRlciBhdXRoW10uY3JlZGVudGlhbHMgKG5vdCB0aGUgdjIuMSBvYXV0aDIgYXJyYXkpLlxuXHQvLyBVc2UgY29uY3JldGUgaHR0cHMgVVJMcyDigJQgZW1wdHkgQXV0aCBVUkwgeWllbGRzIFwiSW52YWxpZCBwcm90b2NvbCBmb3IgYXV0aCBVUkxcIi5cblx0Y29uc3QgYXV0aEJsb2NrID0gYXV0aD8uYXV0aDBEb21haW5cblx0XHQ/IFtcblx0XHRcdFx0XCJhdXRoOlwiLFxuXHRcdFx0XHRgICAtIGlkOiAke3JhbmRvbVVVSUQoKX1gLFxuXHRcdFx0XHRcIiAgICB0eXBlOiBvYXV0aDJcIixcblx0XHRcdFx0XCIgICAgbmFtZTogT0F1dGggMi4wXCIsXG5cdFx0XHRcdFwiICAgIGNyZWRlbnRpYWxzOlwiLFxuXHRcdFx0XHRcIiAgICAgIGFkZFRva2VuVG86IGhlYWRlclwiLFxuXHRcdFx0XHRcIiAgICAgIGdyYW50X3R5cGU6IGF1dGhvcml6YXRpb25fY29kZV93aXRoX3BrY2VcIixcblx0XHRcdFx0YCAgICAgIGF1dGhVcmw6IGh0dHBzOi8vJHthdXRoLmF1dGgwRG9tYWlufS9hdXRob3JpemU/YXVkaWVuY2U9JHthdXRoLmF1dGgwQXVkaWVuY2UgPz8gXCJcIn1gLFxuXHRcdFx0XHRgICAgICAgYWNjZXNzVG9rZW5Vcmw6IGh0dHBzOi8vJHthdXRoLmF1dGgwRG9tYWlufS9vYXV0aC90b2tlbmAsXG5cdFx0XHRcdGAgICAgICBjbGllbnRJZDogJHt5YW1sUXVvdGUoYXV0aC5hdXRoMENsaWVudElkID8/IFwiXCIpfWAsXG5cdFx0XHRcdGAgICAgICBzY29wZTogJHt5YW1sUXVvdGUoUE9TVE1BTl9TQ09QRVMpfWAsXG5cdFx0XHRcdGAgICAgICByZWRpcmVjdF91cmk6ICR7UE9TVE1BTl9DQUxMQkFDS1NbMF19YCxcblx0XHRcdFx0XCIgICAgICB1c2VCcm93c2VyOiB0cnVlXCIsXG5cdFx0XHRcdFwiICAgICAgY2hhbGxlbmdlQWxnb3JpdGhtOiBTMjU2XCIsXG5cdFx0XHRcdC8vIFNQQSBwdWJsaWMgY2xpZW50OiBBdXRoMCB0b2tlbiBlbmRwb2ludCByZWplY3RzIEJhc2ljIGF1dGggKGZlYWNmdCBVbmF1dGhvcml6ZWQpLlxuXHRcdFx0XHRcIiAgICAgIGNsaWVudF9hdXRoZW50aWNhdGlvbjogYm9keVwiLFxuXHRcdFx0XHQnICAgICAgY2xpZW50U2VjcmV0OiBcIlwiJyxcblx0XHRcdFx0YCAgICAgIHRva2VuTmFtZTogJHt5YW1sUXVvdGUoYCR7cHJvamVjdE5hbWV9IEFjY2VzcyBUb2tlbmApfWAsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIilcblx0XHQ6IFwiXCI7XG5cblx0ZmlsZXMucHVzaCh7XG5cdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9Ly5yZXNvdXJjZXMvZGVmaW5pdGlvbi55YW1sYCxcblx0XHRjb250ZW50OiBbXG5cdFx0XHRcIiRraW5kOiBjb2xsZWN0aW9uXCIsXG5cdFx0XHRgbmFtZTogJHt5YW1sUXVvdGUoYCR7cHJvamVjdE5hbWV9IFdlYkFQSWApfWAsXG5cdFx0XHRcInNjaGVtYVZlcnNpb246ICczLjAnXCIsXG5cdFx0XHRcImRlc2NyaXB0aW9uOiA+LVwiLFxuXHRcdFx0XCIgIE9wZW4gdGhpcyBwcm9qZWN0IHJvb3QgaW4gUG9zdG1hbiBMb2NhbCBWaWV3IChGaWxlcyDihpIgT3BlbiBmb2xkZXIpLlwiLFxuXHRcdFx0XCIgIFNlbGVjdCB0aGUgTG9jYWwgZW52aXJvbm1lbnQsIHRoZW4gQXV0aG9yaXphdGlvbiDihpIgR2V0IE5ldyBBY2Nlc3MgVG9rZW4gKFBLQ0UpLlwiLFxuXHRcdFx0YXV0aEJsb2NrLFxuXHRcdF1cblx0XHRcdC5maWx0ZXIoKGwpID0+IGwgIT09IHVuZGVmaW5lZClcblx0XHRcdC5qb2luKFwiXFxuXCIpXG5cdFx0XHQucmVwbGFjZSgvXFxuKyQvLCBcIlxcblwiKSxcblx0fSk7XG5cblx0ZmlsZXMucHVzaCh7XG5cdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9L0hlbGxvLy5yZXNvdXJjZXMvZGVmaW5pdGlvbi55YW1sYCxcblx0XHRjb250ZW50OiBbXCIka2luZDogZm9sZGVyXCIsIFwibmFtZTogSGVsbG9cIiwgXCJvcmRlcjogMTAwMFwiLCBcIlwiXS5qb2luKFwiXFxuXCIpLFxuXHR9KTtcblxuXHRjb25zdCByZXF1ZXN0czogQXJyYXk8e1xuXHRcdGZpbGU6IHN0cmluZztcblx0XHR5YW1sOiBzdHJpbmc7XG5cdH0+ID0gW1xuXHRcdHtcblx0XHRcdGZpbGU6IFwiTGlzdCAoYW5vbnltb3VzKS5yZXF1ZXN0LnlhbWxcIixcblx0XHRcdHlhbWw6IFtcblx0XHRcdFx0XCIka2luZDogaHR0cC1yZXF1ZXN0XCIsXG5cdFx0XHRcdFwibmFtZTogTGlzdCAoYW5vbnltb3VzKVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogR0VUXCIsXG5cdFx0XHRcdCd1cmw6IFwie3tiYXNlVXJsfX0vaGVsbG9cIicsXG5cdFx0XHRcdFwiYXV0aDpcIixcblx0XHRcdFx0XCIgIHR5cGU6IG5vYXV0aFwiLFxuXHRcdFx0XHRcIm9yZGVyOiAxMDAwXCIsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRmaWxlOiBcIkdldCBieSBpZC5yZXF1ZXN0LnlhbWxcIixcblx0XHRcdHlhbWw6IFtcblx0XHRcdFx0XCIka2luZDogaHR0cC1yZXF1ZXN0XCIsXG5cdFx0XHRcdFwibmFtZTogR2V0IGJ5IGlkXCIsXG5cdFx0XHRcdFwibWV0aG9kOiBHRVRcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsby86aWRcIicsXG5cdFx0XHRcdFwib3JkZXI6IDIwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGZpbGU6IFwiQ3JlYXRlLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBDcmVhdGVcIixcblx0XHRcdFx0XCJtZXRob2Q6IFBPU1RcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsb1wiJyxcblx0XHRcdFx0XCJoZWFkZXJzOlwiLFxuXHRcdFx0XHRcIiAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCIsXG5cdFx0XHRcdFwiYm9keTpcIixcblx0XHRcdFx0XCIgIHR5cGU6IGpzb25cIixcblx0XHRcdFx0XCIgIGNvbnRlbnQ6IHwtXCIsXG5cdFx0XHRcdFwiICAgIHtcIixcblx0XHRcdFx0JyAgICAgIFwibWVzc2FnZVwiOiBcImhlbGxvXCInLFxuXHRcdFx0XHRcIiAgICB9XCIsXG5cdFx0XHRcdFwib3JkZXI6IDMwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGZpbGU6IFwiVXBkYXRlLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBVcGRhdGVcIixcblx0XHRcdFx0XCJtZXRob2Q6IFBVVFwiLFxuXHRcdFx0XHQndXJsOiBcInt7YmFzZVVybH19L2hlbGxvLzppZFwiJyxcblx0XHRcdFx0XCJoZWFkZXJzOlwiLFxuXHRcdFx0XHRcIiAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCIsXG5cdFx0XHRcdFwiYm9keTpcIixcblx0XHRcdFx0XCIgIHR5cGU6IGpzb25cIixcblx0XHRcdFx0XCIgIGNvbnRlbnQ6IHwtXCIsXG5cdFx0XHRcdFwiICAgIHtcIixcblx0XHRcdFx0JyAgICAgIFwibWVzc2FnZVwiOiBcInVwZGF0ZWRcIicsXG5cdFx0XHRcdFwiICAgIH1cIixcblx0XHRcdFx0XCJvcmRlcjogNDAwMFwiLFxuXHRcdFx0XHRcIlwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0ZmlsZTogXCJEZWxldGUucmVxdWVzdC55YW1sXCIsXG5cdFx0XHR5YW1sOiBbXG5cdFx0XHRcdFwiJGtpbmQ6IGh0dHAtcmVxdWVzdFwiLFxuXHRcdFx0XHRcIm5hbWU6IERlbGV0ZVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogREVMRVRFXCIsXG5cdFx0XHRcdCd1cmw6IFwie3tiYXNlVXJsfX0vaGVsbG8vOmlkXCInLFxuXHRcdFx0XHRcIm9yZGVyOiA1MDAwXCIsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0fSxcblx0XTtcblxuXHRmb3IgKGNvbnN0IHIgb2YgcmVxdWVzdHMpIHtcblx0XHRmaWxlcy5wdXNoKHtcblx0XHRcdGZpbGVQYXRoOiBgJHtjb2xsZWN0aW9uRGlyfS9IZWxsby8ke3IuZmlsZX1gLFxuXHRcdFx0Y29udGVudDogci55YW1sLFxuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIGZpbGVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FmZm9sZCh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBvcHRpb25zOiBQb3N0bWFuT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwibm9uZVwiIHx8IG9wdGlvbnMucG9zdG1hblByb3ZpZGVyID09IG51bGwpIHJldHVybjtcblxuXHRjb25zdCBhdXRoQ29uZmlnTW9kZWwgPSB3b3Jrc3BhY2UuZ2V0TW9kZWw8QXV0aENvbmZpZ01vZGVsPihXRUxMX0tOT1dOX0ZJTEVTLkFVVEhfQ09ORklHKTtcblx0Y29uc3QgYXV0aENmZyA9IGF1dGhDb25maWdNb2RlbD8uY29uZmlnO1xuXG5cdGxldCBzcGFDbGllbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdGlmIChhdXRoQ2ZnPy5pc3N1ZXJCYXNlVXJsKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFwcCA9IGF1dGgwQ2xpLmVuc3VyZVNwYUFwcChgJHt3b3Jrc3BhY2UubmFtZX0gUG9zdG1hbmAsIFsuLi5QT1NUTUFOX0NBTExCQUNLU10pO1xuXHRcdFx0c3BhQ2xpZW50SWQgPSBhcHAuY2xpZW50X2lkO1xuXHRcdFx0Y29uc29sZS5sb2coXG5cdFx0XHRcdGFwcC5yZXVzZWRcblx0XHRcdFx0XHQ/IGAgIOKckyBSZXVzaW5nIEF1dGgwIFNQQSBhcHAgZm9yIFBvc3RtYW4gUEtDRSAoJHtzcGFDbGllbnRJZH0pYFxuXHRcdFx0XHRcdDogYCAg4pyTIEF1dGgwIFNQQSBhcHAgY3JlYXRlZCBmb3IgUG9zdG1hbiBQS0NFICgke3NwYUNsaWVudElkfSlgLFxuXHRcdFx0KTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGF1dGgwQ2xpLmVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQoYXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FLCBzcGFDbGllbnRJZCk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGAgIOKckyBFbmFibGVkICR7YXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FfSBvbiBQb3N0bWFuIFNQQWApO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdFx0YCAg4pyXIEZhaWxlZCB0byBlbmFibGUgREIgY29ubmVjdGlvbiBvbiBTUEE6ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycn1gLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0YCAg4pyXIEZhaWxlZCB0byBlbnN1cmUgQXV0aDAgU1BBIGFwcCDigJQgc2V0IGF1dGgwQ2xpZW50SWQgaW4gdGhlIGVudmlyb25tZW50OiAke2VyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBlcnJ9YCxcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgYXV0aDBFbnY6IEF1dGgwRW52IHwgdW5kZWZpbmVkID0gYXV0aENmZz8uaXNzdWVyQmFzZVVybFxuXHRcdD8ge1xuXHRcdFx0XHRhdXRoMERvbWFpbjogYXV0aENmZy5pc3N1ZXJCYXNlVXJsLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgXCJcIiksXG5cdFx0XHRcdGF1dGgwQXVkaWVuY2U6IGF1dGhDZmcuYXVkaWVuY2UsXG5cdFx0XHRcdGF1dGgwQ2xpZW50SWQ6IHNwYUNsaWVudElkLFxuXHRcdFx0fVxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IHByb2plY3ROYW1lID0gd29ya3NwYWNlLm5hbWU7XG5cdGNvbnN0IGVudk5hbWUgPSBgJHtwcm9qZWN0TmFtZX0gTG9jYWxgO1xuXHRjb25zdCBsb2NhbEZpbGVzID0gYnVpbGRMb2NhbFZpZXdGaWxlcyhwcm9qZWN0TmFtZSwgYXV0aDBFbnYpO1xuXHRjb25zdCBlbnZZYW1sID0gYnVpbGRFbnZpcm9ubWVudFlhbWwoZW52TmFtZSwgYXV0aDBFbnYpO1xuXG5cdHdvcmtzcGFjZS5hZGRGaWxlKHtcblx0XHRmaWxlczogKCkgPT4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCIucG9zdG1hbi9yZXNvdXJjZXMueWFtbFwiLFxuXHRcdFx0XHRjb250ZW50OiBbXG5cdFx0XHRcdFx0XCIjIE9wZW4gdGhpcyBwcm9qZWN0IHJvb3QgaW4gUG9zdG1hbiAoRmlsZXMg4oaSIE9wZW4gZm9sZGVyKSwgbm90IHRoZSBwb3N0bWFuLyBzdWJmb2xkZXIuXCIsXG5cdFx0XHRcdFx0XCIjIFBvc3RtYW4gZmlsbHMgd29ya3NwYWNlLmlkIHdoZW4geW91IGNvbm5lY3QgTG9jYWwgVmlldy5cIixcblx0XHRcdFx0XHRcIiNcIixcblx0XHRcdFx0XHRcIiMgQWxsIHJlc291cmNlcyB1bmRlciBwb3N0bWFuLyBhcmUgcmVnaXN0ZXJlZCBhdXRvbWF0aWNhbGx5LlwiLFxuXHRcdFx0XHRcdFwiXCIsXG5cdFx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBgcG9zdG1hbi9lbnZpcm9ubWVudHMvJHtwcm9qZWN0TmFtZX0tTG9jYWwuZW52aXJvbm1lbnQueWFtbGAsXG5cdFx0XHRcdGNvbnRlbnQ6IGVudllhbWwsXG5cdFx0XHR9LFxuXHRcdFx0Li4ubG9jYWxGaWxlcyxcblx0XHRdLFxuXHR9KTtcblxuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwiYXBpXCIgJiYgb3B0aW9ucy5hcGlLZXkpIHtcblx0XHRjb25zdCBjb2xsZWN0aW9uID0gYnVpbGRDb2xsZWN0aW9uSnNvbihwcm9qZWN0TmFtZSwgYXV0aDBFbnYpO1xuXHRcdGNvbnN0IGhlYWRlcnMgPSB7IFwiWC1BcGktS2V5XCI6IG9wdGlvbnMuYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXG5cdFx0Y29uc3QgY29sUmVzID0gYXdhaXQgZmV0Y2goXG5cdFx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vY29sbGVjdGlvbnM/d29ya3NwYWNlPSR7b3B0aW9ucy53b3Jrc3BhY2VJZH1gLFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRoZWFkZXJzLFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7IGNvbGxlY3Rpb24gfSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGNvbFJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGNvbGxlY3Rpb24gdXBsb2FkZWRcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCIgIOKclyBGYWlsZWQgdG8gdXBsb2FkIFBvc3RtYW4gY29sbGVjdGlvblwiKTtcblx0XHR9XG5cblx0XHRjb25zdCBlbnZWYWx1ZXMgPSBbXG5cdFx0XHR7IGtleTogXCJiYXNlVXJsXCIsIHZhbHVlOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMFwiLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHQuLi4oYXV0aDBFbnY/LmF1dGgwRG9tYWluXG5cdFx0XHRcdD8gW1xuXHRcdFx0XHRcdFx0eyBrZXk6IFwiYXV0aDBEb21haW5cIiwgdmFsdWU6IGF1dGgwRW52LmF1dGgwRG9tYWluLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHRcdFx0XHR7IGtleTogXCJhdXRoMEF1ZGllbmNlXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMEF1ZGllbmNlID8/IFwiXCIsIGVuYWJsZWQ6IHRydWUgfSxcblx0XHRcdFx0XHRcdHsga2V5OiBcImF1dGgwQ2xpZW50SWRcIiwgdmFsdWU6IGF1dGgwRW52LmF1dGgwQ2xpZW50SWQgPz8gXCJcIiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0XHRcdF1cblx0XHRcdFx0OiBbXSksXG5cdFx0XTtcblx0XHRjb25zdCBlbnZSZXMgPSBhd2FpdCBmZXRjaChcblx0XHRcdGBodHRwczovL2FwaS5nZXRwb3N0bWFuLmNvbS9lbnZpcm9ubWVudHM/d29ya3NwYWNlPSR7b3B0aW9ucy53b3Jrc3BhY2VJZH1gLFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRoZWFkZXJzLFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdFx0ZW52aXJvbm1lbnQ6IHsgbmFtZTogZW52TmFtZSwgdmFsdWVzOiBlbnZWYWx1ZXMgfSxcblx0XHRcdFx0fSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGVudlJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGVudmlyb25tZW50IHVwbG9hZGVkXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiICDinJcgRmFpbGVkIHRvIHVwbG9hZCBQb3N0bWFuIGVudmlyb25tZW50XCIpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY29uc3QgUG9zdG1hbkZlYXR1cmU6IEZlYXR1cmU8UG9zdG1hbk9wdGlvbnM+ID0geyBnZXRPcHRpb25zLCBzY2FmZm9sZCB9O1xuZXhwb3J0IHsgUE9TVE1BTl9DQUxMQkFDS1MsIFBPU1RNQU5fU0NPUEVTIH07XG4iXSwibmFtZXMiOlsicmFuZG9tVVVJRCIsInBpY2siLCJXRUxMX0tOT1dOX0ZJTEVTIiwiYXV0aDBDbGkiLCJQT1NUTUFOX0NBTExCQUNLUyIsIlBPU1RNQU5fU0NPUEVTIiwiam9pbiIsImdldE9wdGlvbnMiLCJfd29ya3NwYWNlIiwiY2xpT3B0aW9ucyIsInBvc3RtYW5Qcm92aWRlciIsImNob2ljZXMiLCJsYWJlbCIsImRlc2NyaXB0aW9uIiwic2VsZWN0ZWQiLCJjIiwicHJvdmlkZXIiLCJhcGlLZXkiLCJwcm9jZXNzIiwiZW52IiwiUE9TVE1BTl9BUElfS0VZIiwidGhlbiIsIm0iLCJhc2siLCJoZWFkZXJzIiwid3NSZXMiLCJmZXRjaCIsIm9rIiwiY29uc29sZSIsImVycm9yIiwid29ya3NwYWNlcyIsImpzb24iLCJ3c0Nob2ljZXMiLCJpZCIsIm1hcCIsInciLCJuYW1lIiwidHlwZSIsIndzUGlja2VkIiwid29ya3NwYWNlSWQiLCJ3c05hbWUiLCJjcmVhdGVSZXMiLCJtZXRob2QiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIndvcmtzcGFjZSIsIndzIiwibG9nIiwiYnVpbGRDb2xsZWN0aW9uSnNvbiIsInByb2plY3ROYW1lIiwiYXV0aCIsImF1dGhPYmoiLCJhdXRoMERvbWFpbiIsIm9hdXRoMiIsImtleSIsInZhbHVlIiwidW5kZWZpbmVkIiwiaGVsbG9VcmwiLCJwYXRoIiwicmF3IiwiaG9zdCIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImluZm8iLCJfcG9zdG1hbl9pZCIsInNjaGVtYSIsIml0ZW0iLCJyZXF1ZXN0IiwidXJsIiwiaGVhZGVyIiwibW9kZSIsInlhbWxRdW90ZSIsInRlc3QiLCJpbmNsdWRlcyIsImJ1aWxkRW52aXJvbm1lbnRZYW1sIiwidmFsdWVzIiwicHVzaCIsImF1dGgwQXVkaWVuY2UiLCJhdXRoMENsaWVudElkIiwibGluZXMiLCJ2IiwiYnVpbGRMb2NhbFZpZXdGaWxlcyIsImNvbGxlY3Rpb25EaXIiLCJmaWxlcyIsImF1dGhCbG9jayIsImZpbGVQYXRoIiwiY29udGVudCIsImwiLCJyZXBsYWNlIiwicmVxdWVzdHMiLCJmaWxlIiwieWFtbCIsInIiLCJzY2FmZm9sZCIsIm9wdGlvbnMiLCJhdXRoQ29uZmlnTW9kZWwiLCJnZXRNb2RlbCIsIkFVVEhfQ09ORklHIiwiYXV0aENmZyIsImNvbmZpZyIsInNwYUNsaWVudElkIiwiaXNzdWVyQmFzZVVybCIsImFwcCIsImVuc3VyZVNwYUFwcCIsImNsaWVudF9pZCIsInJldXNlZCIsImVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQiLCJEQl9DT05ORUNUSU9OX05BTUUiLCJlcnIiLCJFcnJvciIsIm1lc3NhZ2UiLCJhdXRoMEVudiIsImF1ZGllbmNlIiwiZW52TmFtZSIsImxvY2FsRmlsZXMiLCJlbnZZYW1sIiwiYWRkRmlsZSIsImNvbGxlY3Rpb24iLCJjb2xSZXMiLCJlbnZWYWx1ZXMiLCJlbmFibGVkIiwiZW52UmVzIiwiZW52aXJvbm1lbnQiLCJQb3N0bWFuRmVhdHVyZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLGNBQWM7QUFDekMsU0FBU0MsSUFBSSxRQUFRLHlCQUF5QjtBQUM5QyxTQUFTQyxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFJekQsWUFBWUMsY0FBYyxpQkFBaUI7QUFFM0MscUVBQXFFLEdBQ3JFLE1BQU1DLG9CQUFvQjtJQUN6QjtJQUNBO0NBQ0E7QUFFRCw4RUFBOEUsR0FDOUUsTUFBTUMsaUJBQWlCO0lBQ3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0EsQ0FBQ0MsSUFBSSxDQUFDO0FBUVAsZUFBZUMsV0FDZEMsVUFBNkIsRUFDN0JDLFVBQW1DO0lBRW5DLElBQUlBLFdBQVdDLGVBQWUsSUFBSSxNQUFNLE9BQU8sQ0FBQztJQUVoRCxNQUFNQyxVQUFVO1FBQ2Y7WUFBRUMsT0FBTztZQUFpQkMsYUFBYTtRQUFPO1FBQzlDO1lBQ0NELE9BQU87WUFDUEMsYUFBYTtRQUNkO1FBQ0E7WUFDQ0Qs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
557
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL3Bvc3RtYW4uZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHBpY2sgfSBmcm9tIFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiO1xuaW1wb3J0IHsgV0VMTF9LTk9XTl9GSUxFUyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlU2NhZmZvbGQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Byb2plY3QubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zY2FmZm9sZC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEF1dGhDb25maWdNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvYXV0aC1jb25maWcubW9kZWwuanNcIjtcbmltcG9ydCAqIGFzIGF1dGgwQ2xpIGZyb20gXCIuL2F1dGgwLWNsaS5qc1wiO1xuXG4vKiogUG9zdG1hbiBPQXV0aCBjYWxsYmFjayBVUkxzIChwb3B1cCArIFwiQXV0aG9yaXplIHVzaW5nIGJyb3dzZXJcIikuICovXG5jb25zdCBQT1NUTUFOX0NBTExCQUNLUyA9IFtcblx0XCJodHRwczovL29hdXRoLnBzdG1uLmlvL3YxL2NhbGxiYWNrXCIsXG5cdFwiaHR0cHM6Ly9vYXV0aC5wc3Rtbi5pby92MS9icm93c2VyLWNhbGxiYWNrXCIsXG5dIGFzIGNvbnN0O1xuXG4vKiogU2NvcGVzIHJlcXVlc3RlZCBmb3IgQXV0aDAgYWNjZXNzIHRva2VucyAoT0lEQyArIEhlbGxvIENBU0wgcGVybWlzc2lvbnMpLiAqL1xuY29uc3QgUE9TVE1BTl9TQ09QRVMgPSBbXG5cdFwib3BlbmlkXCIsXG5cdFwicHJvZmlsZVwiLFxuXHRcImVtYWlsXCIsXG5cdFwicmVhZDpIZWxsb1wiLFxuXHRcImNyZWF0ZTpIZWxsb1wiLFxuXHRcInVwZGF0ZTpIZWxsb1wiLFxuXHRcImRlbGV0ZTpIZWxsb1wiLFxuXS5qb2luKFwiIFwiKTtcblxuZXhwb3J0IHR5cGUgUG9zdG1hbk9wdGlvbnMgPSB7XG5cdHBvc3RtYW5Qcm92aWRlcj86IFwiYXBpXCIgfCBcImxvY2FsXCIgfCBcIm5vbmVcIjtcblx0YXBpS2V5Pzogc3RyaW5nO1xuXHR3b3Jrc3BhY2VJZD86IHN0cmluZztcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE9wdGlvbnMoXG5cdF93b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRjbGlPcHRpb25zOiBQYXJ0aWFsPFBvc3RtYW5PcHRpb25zPixcbik6IFByb21pc2U8UGFydGlhbDxQb3N0bWFuT3B0aW9ucz4+IHtcblx0aWYgKGNsaU9wdGlvbnMucG9zdG1hblByb3ZpZGVyICE9IG51bGwpIHJldHVybiB7fTtcblxuXHRjb25zdCBjaG9pY2VzID0gW1xuXHRcdHsgbGFiZWw6IFwibm9uZVwiIGFzIGNvbnN0LCBkZXNjcmlwdGlvbjogXCJza2lwXCIgfSxcblx0XHR7XG5cdFx0XHRsYWJlbDogXCJsb2NhbFwiIGFzIGNvbnN0LFxuXHRcdFx0ZGVzY3JpcHRpb246IFwiTG9jYWwgVmlldyAvIE5hdGl2ZSBHaXQgZmlsZXMgKG5vIEFQSSBrZXkpXCIsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRsYWJlbDogXCJhcGlcIiBhcyBjb25zdCxcblx0XHRcdGRlc2NyaXB0aW9uOiBcImFsc28gdXBsb2FkIHRvIFBvc3RtYW4uY29tIChuZWVkcyBBUEkga2V5KVwiLFxuXHRcdH0sXG5cdF07XG5cdGNvbnN0IHNlbGVjdGVkID0gYXdhaXQgcGljayhcblx0XHRcIlxcbiAgUG9zdG1hbjogXCIsXG5cdFx0Y2hvaWNlcyxcblx0XHQoYykgPT4gYCR7Yy5sYWJlbH0g4oCUICR7Yy5kZXNjcmlwdGlvbn1gLFxuXHQpO1xuXHRjb25zdCBwcm92aWRlciA9IHNlbGVjdGVkPy5sYWJlbCA/PyBcIm5vbmVcIjtcblxuXHRpZiAocHJvdmlkZXIgPT09IFwibm9uZVwiKSByZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwibm9uZVwiIH07XG5cdGlmIChwcm92aWRlciA9PT0gXCJsb2NhbFwiKSByZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwibG9jYWxcIiB9O1xuXG5cdGNvbnN0IGFwaUtleSA9XG5cdFx0cHJvY2Vzcy5lbnYuUE9TVE1BTl9BUElfS0VZID8/XG5cdFx0KGF3YWl0IGltcG9ydChcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIikudGhlbigobSkgPT5cblx0XHRcdG0uYXNrKFwiXFxuICBQb3N0bWFuIEFQSSBrZXkgKGFwcC5nZXRwb3N0bWFuLmNvbS9zZXR0aW5ncy9tZS9hcGkta2V5cyk6IFwiKSxcblx0XHQpKTtcblxuXHRjb25zdCBoZWFkZXJzID0geyBcIlgtQXBpLUtleVwiOiBhcGlLZXksIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH07XG5cdGNvbnN0IHdzUmVzID0gYXdhaXQgZmV0Y2goXCJodHRwczovL2FwaS5nZXRwb3N0bWFuLmNvbS93b3Jrc3BhY2VzXCIsIHsgaGVhZGVycyB9KTtcblxuXHRpZiAoIXdzUmVzLm9rKSB7XG5cdFx0Y29uc29sZS5lcnJvcihcIlxcbiAgUG9zdG1hbiBBUEkga2V5IGludmFsaWQg4oCUIGZhbGxpbmcgYmFjayB0byBsb2NhbCBmaWxlcy5cIik7XG5cdFx0cmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcImxvY2FsXCIgfTtcblx0fVxuXG5cdGNvbnN0IHsgd29ya3NwYWNlcyB9ID0gKGF3YWl0IHdzUmVzLmpzb24oKSkgYXMge1xuXHRcdHdvcmtzcGFjZXM6IEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfT47XG5cdH07XG5cblx0dHlwZSBXc0Nob2ljZSA9IHsgbGFiZWw6IHN0cmluZzsgaWQ6IHN0cmluZyB8IG51bGwgfTtcblx0Y29uc3Qgd3NDaG9pY2VzOiBXc0Nob2ljZVtdID0gW1xuXHRcdHsgbGFiZWw6IFwiPG5ldyB3b3Jrc3BhY2U+XCIsIGlkOiBudWxsIH0sXG5cdFx0Li4ud29ya3NwYWNlcy5tYXAoKHcpID0+ICh7IGxhYmVsOiBgJHt3Lm5hbWV9ICgke3cudHlwZX0pYCwgaWQ6IHcuaWQgfSkpLFxuXHRdO1xuXG5cdGNvbnN0IHdzUGlja2VkID0gYXdhaXQgcGljayhcIlxcbiAgUG9zdG1hbiB3b3Jrc3BhY2U6IFwiLCB3c0Nob2ljZXMsIChjKSA9PiBjLmxhYmVsKTtcblxuXHRsZXQgd29ya3NwYWNlSWQ6IHN0cmluZztcblx0aWYgKCF3c1BpY2tlZCB8fCB3c1BpY2tlZC5pZCA9PT0gbnVsbCkge1xuXHRcdGNvbnN0IHsgYXNrIH0gPSBhd2FpdCBpbXBvcnQoXCIuLi8uLi9kb21haW4vcHJvbXB0LmpzXCIpO1xuXHRcdGNvbnN0IHdzTmFtZSA9IGF3YWl0IGFzayhgICBXb3Jrc3BhY2UgbmFtZTogYCk7XG5cdFx0Y29uc3QgY3JlYXRlUmVzID0gYXdhaXQgZmV0Y2goXCJodHRwczovL2FwaS5nZXRwb3N0bWFuLmNvbS93b3Jrc3BhY2VzXCIsIHtcblx0XHRcdG1ldGhvZDogXCJQT1NUXCIsXG5cdFx0XHRoZWFkZXJzLFxuXHRcdFx0Ym9keTogSlNPTi5zdHJpbmdpZnkoeyB3b3Jrc3BhY2U6IHsgbmFtZTogd3NOYW1lLCB0eXBlOiBcInBlcnNvbmFsXCIgfSB9KSxcblx0XHR9KTtcblx0XHRjb25zdCB7IHdvcmtzcGFjZTogd3MgfSA9IChhd2FpdCBjcmVhdGVSZXMuanNvbigpKSBhcyB7IHdvcmtzcGFjZTogeyBpZDogc3RyaW5nIH0gfTtcblx0XHR3b3Jrc3BhY2VJZCA9IHdzLmlkO1xuXHRcdGNvbnNvbGUubG9nKGAgIOKckyBXb3Jrc3BhY2UgY3JlYXRlZDogJHt3c05hbWV9YCk7XG5cdH0gZWxzZSB7XG5cdFx0d29ya3NwYWNlSWQgPSB3c1BpY2tlZC5pZDtcblx0fVxuXG5cdHJldHVybiB7IHBvc3RtYW5Qcm92aWRlcjogXCJhcGlcIiwgYXBpS2V5LCB3b3Jrc3BhY2VJZCB9O1xufVxuXG50eXBlIEF1dGgwRW52ID0ge1xuXHRhdXRoMERvbWFpbj86IHN0cmluZztcblx0YXV0aDBBdWRpZW5jZT86IHN0cmluZztcblx0YXV0aDBDbGllbnRJZD86IHN0cmluZztcbn07XG5cbi8qKiB2Mi4xIEpTT04g4oCUIHVzZWQgZm9yIFBvc3RtYW4uY29tIEFQSSB1cGxvYWQgb25seS4gKi9cbmZ1bmN0aW9uIGJ1aWxkQ29sbGVjdGlvbkpzb24ocHJvamVjdE5hbWU6IHN0cmluZywgYXV0aD86IEF1dGgwRW52KTogdW5rbm93biB7XG5cdGNvbnN0IGF1dGhPYmogPSBhdXRoPy5hdXRoMERvbWFpblxuXHRcdD8ge1xuXHRcdFx0XHR0eXBlOiBcIm9hdXRoMlwiLFxuXHRcdFx0XHRvYXV0aDI6IFtcblx0XHRcdFx0XHR7IGtleTogXCJncmFudF90eXBlXCIsIHZhbHVlOiBcImF1dGhvcml6YXRpb25fY29kZV93aXRoX3BrY2VcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGtleTogXCJhdXRoVXJsXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJodHRwczovL3t7YXV0aDBEb21haW59fS9hdXRob3JpemU/YXVkaWVuY2U9e3thdXRoMEF1ZGllbmNlfX1cIixcblx0XHRcdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRrZXk6IFwiYWNjZXNzVG9rZW5VcmxcIixcblx0XHRcdFx0XHRcdHZhbHVlOiBcImh0dHBzOi8ve3thdXRoMERvbWFpbn19L29hdXRoL3Rva2VuXCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiY2xpZW50SWRcIiwgdmFsdWU6IFwie3thdXRoMENsaWVudElkfX1cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcInNjb3BlXCIsIHZhbHVlOiBQT1NUTUFOX1NDT1BFUywgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcInJlZGlyZWN0X3VyaVwiLCB2YWx1ZTogUE9TVE1BTl9DQUxMQkFDS1NbMF0sIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJ1c2VCcm93c2VyXCIsIHZhbHVlOiBcInRydWVcIiwgdHlwZTogXCJib29sZWFuXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJhZGRUb2tlblRvXCIsIHZhbHVlOiBcImhlYWRlclwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdFx0eyBrZXk6IFwiY2hhbGxlbmdlQWxnb3JpdGhtXCIsIHZhbHVlOiBcIlMyNTZcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHRcdHsga2V5OiBcImNsaWVudF9hdXRoZW50aWNhdGlvblwiLCB2YWx1ZTogXCJib2R5XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJjbGllbnRTZWNyZXRcIiwgdmFsdWU6IFwiXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0XHR7IGtleTogXCJ0b2tlbk5hbWVcIiwgdmFsdWU6IGAke3Byb2plY3ROYW1lfSBBY2Nlc3MgVG9rZW5gLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9XG5cdFx0OiB1bmRlZmluZWQ7XG5cblx0Y29uc3QgaGVsbG9VcmwgPSAocGF0aDogc3RyaW5nLCByYXc6IHN0cmluZykgPT4gKHtcblx0XHRyYXc6IGB7e2Jhc2VVcmx9fSR7cmF3fWAsXG5cdFx0aG9zdDogW1wie3tiYXNlVXJsfX1cIl0sXG5cdFx0cGF0aDogcGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pLFxuXHR9KTtcblxuXHRyZXR1cm4ge1xuXHRcdGluZm86IHtcblx0XHRcdF9wb3N0bWFuX2lkOiByYW5kb21VVUlEKCksXG5cdFx0XHRuYW1lOiBgJHtwcm9qZWN0TmFtZX0gV2ViQVBJYCxcblx0XHRcdHNjaGVtYTogXCJodHRwczovL3NjaGVtYS5nZXRwb3N0bWFuLmNvbS9qc29uL2NvbGxlY3Rpb24vdjIuMS4wL2NvbGxlY3Rpb24uanNvblwiLFxuXHRcdFx0ZGVzY3JpcHRpb246XG5cdFx0XHRcdFwiT3BlbiB0aGUgcHJvamVjdCByb290IGluIFBvc3RtYW4gTG9jYWwgVmlldyAobm90IHRoZSBwb3N0bWFuLyBmb2xkZXIpLiBcIiArXG5cdFx0XHRcdFwiU2VsZWN0IHRoZSBMb2NhbCBlbnZpcm9ubWVudCwgdGhlbiBBdXRob3JpemF0aW9uIOKGkiBHZXQgTmV3IEFjY2VzcyBUb2tlbiAoUEtDRSkuXCIsXG5cdFx0fSxcblx0XHQuLi4oYXV0aE9iaiA/IHsgYXV0aDogYXV0aE9iaiB9IDoge30pLFxuXHRcdGl0ZW06IFtcblx0XHRcdHtcblx0XHRcdFx0bmFtZTogXCJIZWxsb1wiLFxuXHRcdFx0XHRpdGVtOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogXCJMaXN0IChhbm9ueW1vdXMpXCIsXG5cdFx0XHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0XHRcdGF1dGg6IHsgdHlwZTogXCJub2F1dGhcIiB9LFxuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiR0VUXCIsXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsb1wiLCBcIi9oZWxsb1wiKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIkdldCBieSBpZFwiLFxuXHRcdFx0XHRcdFx0cmVxdWVzdDoge1xuXHRcdFx0XHRcdFx0XHRtZXRob2Q6IFwiR0VUXCIsXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsby86aWRcIiwgXCIvaGVsbG8vOmlkXCIpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6IFwiQ3JlYXRlXCIsXG5cdFx0XHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0XHRcdG1ldGhvZDogXCJQT1NUXCIsXG5cdFx0XHRcdFx0XHRcdGhlYWRlcjogW3sga2V5OiBcIkNvbnRlbnQtVHlwZVwiLCB2YWx1ZTogXCJhcHBsaWNhdGlvbi9qc29uXCIgfV0sXG5cdFx0XHRcdFx0XHRcdGJvZHk6IHtcblx0XHRcdFx0XHRcdFx0XHRtb2RlOiBcInJhd1wiLFxuXHRcdFx0XHRcdFx0XHRcdHJhdzogJ3tcXG4gIFwibWVzc2FnZVwiOiBcImhlbGxvXCJcXG59XFxuJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0dXJsOiBoZWxsb1VybChcImhlbGxvXCIsIFwiL2hlbGxvXCIpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6IFwiVXBkYXRlXCIsXG5cdFx0XHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0XHRcdG1ldGhvZDogXCJQVVRcIixcblx0XHRcdFx0XHRcdFx0aGVhZGVyOiBbeyBrZXk6IFwiQ29udGVudC1UeXBlXCIsIHZhbHVlOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9XSxcblx0XHRcdFx0XHRcdFx0Ym9keToge1xuXHRcdFx0XHRcdFx0XHRcdG1vZGU6IFwicmF3XCIsXG5cdFx0XHRcdFx0XHRcdFx0cmF3OiAne1xcbiAgXCJtZXNzYWdlXCI6IFwidXBkYXRlZFwiXFxufVxcbicsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHVybDogaGVsbG9VcmwoXCJoZWxsby86aWRcIiwgXCIvaGVsbG8vOmlkXCIpLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG5hbWU6IFwiRGVsZXRlXCIsXG5cdFx0XHRcdFx0XHRyZXF1ZXN0OiB7XG5cdFx0XHRcdFx0XHRcdG1ldGhvZDogXCJERUxFVEVcIixcblx0XHRcdFx0XHRcdFx0dXJsOiBoZWxsb1VybChcImhlbGxvLzppZFwiLCBcIi9oZWxsby86aWRcIiksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH07XG59XG5cbmZ1bmN0aW9uIHlhbWxRdW90ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKC9bOiN7fVtcXF0sJio/fDw+PSElQGBdLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZS5pbmNsdWRlcyhcIlxcblwiKSB8fCB2YWx1ZSA9PT0gXCJcIikge1xuXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIHZhbHVlO1xufVxuXG4vKiogTG9jYWwgVmlldyAvIE5hdGl2ZSBHaXQgZW52aXJvbm1lbnQgKFlBTUwpLiAqL1xuZnVuY3Rpb24gYnVpbGRFbnZpcm9ubWVudFlhbWwobmFtZTogc3RyaW5nLCBhdXRoPzogQXV0aDBFbnYpOiBzdHJpbmcge1xuXHRjb25zdCB2YWx1ZXM6IEFycmF5PHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4gPSBbXG5cdFx0eyBrZXk6IFwiYmFzZVVybFwiLCB2YWx1ZTogXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIiB9LFxuXHRdO1xuXHRpZiAoYXV0aD8uYXV0aDBEb21haW4pIHtcblx0XHR2YWx1ZXMucHVzaChcblx0XHRcdHsga2V5OiBcImF1dGgwRG9tYWluXCIsIHZhbHVlOiBhdXRoLmF1dGgwRG9tYWluIH0sXG5cdFx0XHR7IGtleTogXCJhdXRoMEF1ZGllbmNlXCIsIHZhbHVlOiBhdXRoLmF1dGgwQXVkaWVuY2UgPz8gXCJcIiB9LFxuXHRcdFx0eyBrZXk6IFwiYXV0aDBDbGllbnRJZFwiLCB2YWx1ZTogYXV0aC5hdXRoMENsaWVudElkID8/IFwiXCIgfSxcblx0XHRcdHtcblx0XHRcdFx0a2V5OiBcImF1dGhVcmxcIixcblx0XHRcdFx0dmFsdWU6IGBodHRwczovLyR7YXV0aC5hdXRoMERvbWFpbn0vYXV0aG9yaXplP2F1ZGllbmNlPSR7YXV0aC5hdXRoMEF1ZGllbmNlID8/IFwiXCJ9YCxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJhY2Nlc3NUb2tlblVybFwiLFxuXHRcdFx0XHR2YWx1ZTogYGh0dHBzOi8vJHthdXRoLmF1dGgwRG9tYWlufS9vYXV0aC90b2tlbmAsXG5cdFx0XHR9LFxuXHRcdFx0eyBrZXk6IFwiY2FsbGJhY2tVcmxcIiwgdmFsdWU6IFBPU1RNQU5fQ0FMTEJBQ0tTWzBdIH0sXG5cdFx0XHR7IGtleTogXCJzY29wZVwiLCB2YWx1ZTogUE9TVE1BTl9TQ09QRVMgfSxcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgbGluZXMgPSBbYG5hbWU6ICR7eWFtbFF1b3RlKG5hbWUpfWAsIFwidmFsdWVzOlwiXTtcblx0Zm9yIChjb25zdCB2IG9mIHZhbHVlcykge1xuXHRcdGxpbmVzLnB1c2goYCAgLSBrZXk6ICR7di5rZXl9YCk7XG5cdFx0bGluZXMucHVzaChgICAgIHZhbHVlOiAke3lhbWxRdW90ZSh2LnZhbHVlKX1gKTtcblx0XHRsaW5lcy5wdXNoKFwiICAgIGVuYWJsZWQ6IHRydWVcIik7XG5cdH1cblx0cmV0dXJuIGAke2xpbmVzLmpvaW4oXCJcXG5cIil9XFxuYDtcbn1cblxuLyoqIExvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGNvbGxlY3Rpb24gKHYzIG11bHRpLWZpbGUgWUFNTCkuICovXG5mdW5jdGlvbiBidWlsZExvY2FsVmlld0ZpbGVzKFxuXHRwcm9qZWN0TmFtZTogc3RyaW5nLFxuXHRhdXRoPzogQXV0aDBFbnYsXG4pOiBBcnJheTx7IGZpbGVQYXRoOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9PiB7XG5cdGNvbnN0IGNvbGxlY3Rpb25EaXIgPSBgcG9zdG1hbi9jb2xsZWN0aW9ucy8ke3Byb2plY3ROYW1lfSBXZWJBUElgO1xuXHRjb25zdCBmaWxlczogQXJyYXk8eyBmaWxlUGF0aDogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT4gPSBbXTtcblxuXHQvLyBQb3N0bWFuIExvY2FsIFZpZXcgc3RvcmVzIE9BdXRoIHVuZGVyIGF1dGhbXS5jcmVkZW50aWFscyAobm90IHRoZSB2Mi4xIG9hdXRoMiBhcnJheSkuXG5cdC8vIFVzZSBjb25jcmV0ZSBodHRwcyBVUkxzIOKAlCBlbXB0eSBBdXRoIFVSTCB5aWVsZHMgXCJJbnZhbGlkIHByb3RvY29sIGZvciBhdXRoIFVSTFwiLlxuXHRjb25zdCBhdXRoQmxvY2sgPSBhdXRoPy5hdXRoMERvbWFpblxuXHRcdD8gW1xuXHRcdFx0XHRcImF1dGg6XCIsXG5cdFx0XHRcdGAgIC0gaWQ6ICR7cmFuZG9tVVVJRCgpfWAsXG5cdFx0XHRcdFwiICAgIHR5cGU6IG9hdXRoMlwiLFxuXHRcdFx0XHRcIiAgICBuYW1lOiBPQXV0aCAyLjBcIixcblx0XHRcdFx0XCIgICAgY3JlZGVudGlhbHM6XCIsXG5cdFx0XHRcdFwiICAgICAgYWRkVG9rZW5UbzogaGVhZGVyXCIsXG5cdFx0XHRcdFwiICAgICAgZ3JhbnRfdHlwZTogYXV0aG9yaXphdGlvbl9jb2RlX3dpdGhfcGtjZVwiLFxuXHRcdFx0XHRgICAgICAgYXV0aFVybDogaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L2F1dGhvcml6ZT9hdWRpZW5jZT0ke2F1dGguYXV0aDBBdWRpZW5jZSA/PyBcIlwifWAsXG5cdFx0XHRcdGAgICAgICBhY2Nlc3NUb2tlblVybDogaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L29hdXRoL3Rva2VuYCxcblx0XHRcdFx0YCAgICAgIGNsaWVudElkOiAke3lhbWxRdW90ZShhdXRoLmF1dGgwQ2xpZW50SWQgPz8gXCJcIil9YCxcblx0XHRcdFx0YCAgICAgIHNjb3BlOiAke3lhbWxRdW90ZShQT1NUTUFOX1NDT1BFUyl9YCxcblx0XHRcdFx0YCAgICAgIHJlZGlyZWN0X3VyaTogJHtQT1NUTUFOX0NBTExCQUNLU1swXX1gLFxuXHRcdFx0XHRcIiAgICAgIHVzZUJyb3dzZXI6IHRydWVcIixcblx0XHRcdFx0XCIgICAgICBjaGFsbGVuZ2VBbGdvcml0aG06IFMyNTZcIixcblx0XHRcdFx0Ly8gU1BBIHB1YmxpYyBjbGllbnQ6IEF1dGgwIHRva2VuIGVuZHBvaW50IHJlamVjdHMgQmFzaWMgYXV0aCAoZmVhY2Z0IFVuYXV0aG9yaXplZCkuXG5cdFx0XHRcdFwiICAgICAgY2xpZW50X2F1dGhlbnRpY2F0aW9uOiBib2R5XCIsXG5cdFx0XHRcdCcgICAgICBjbGllbnRTZWNyZXQ6IFwiXCInLFxuXHRcdFx0XHRgICAgICAgdG9rZW5OYW1lOiAke3lhbWxRdW90ZShgJHtwcm9qZWN0TmFtZX0gQWNjZXNzIFRva2VuYCl9YCxcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKVxuXHRcdDogXCJcIjtcblxuXHRmaWxlcy5wdXNoKHtcblx0XHRmaWxlUGF0aDogYCR7Y29sbGVjdGlvbkRpcn0vLnJlc291cmNlcy9kZWZpbml0aW9uLnlhbWxgLFxuXHRcdGNvbnRlbnQ6IFtcblx0XHRcdFwiJGtpbmQ6IGNvbGxlY3Rpb25cIixcblx0XHRcdGBuYW1lOiAke3lhbWxRdW90ZShgJHtwcm9qZWN0TmFtZX0gV2ViQVBJYCl9YCxcblx0XHRcdFwic2NoZW1hVmVyc2lvbjogJzMuMCdcIixcblx0XHRcdFwiZGVzY3JpcHRpb246ID4tXCIsXG5cdFx0XHRcIiAgT3BlbiB0aGlzIHByb2plY3Qgcm9vdCBpbiBQb3N0bWFuIExvY2FsIFZpZXcgKEZpbGVzIOKGkiBPcGVuIGZvbGRlcikuXCIsXG5cdFx0XHRcIiAgU2VsZWN0IHRoZSBMb2NhbCBlbnZpcm9ubWVudCwgdGhlbiBBdXRob3JpemF0aW9uIOKGkiBHZXQgTmV3IEFjY2VzcyBUb2tlbiAoUEtDRSkuXCIsXG5cdFx0XHRhdXRoQmxvY2ssXG5cdFx0XVxuXHRcdFx0LmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKVxuXHRcdFx0LmpvaW4oXCJcXG5cIilcblx0XHRcdC5yZXBsYWNlKC9cXG4rJC8sIFwiXFxuXCIpLFxuXHR9KTtcblxuXHRmaWxlcy5wdXNoKHtcblx0XHRmaWxlUGF0aDogYCR7Y29sbGVjdGlvbkRpcn0vSGVsbG8vLnJlc291cmNlcy9kZWZpbml0aW9uLnlhbWxgLFxuXHRcdGNvbnRlbnQ6IFtcIiRraW5kOiBmb2xkZXJcIiwgXCJuYW1lOiBIZWxsb1wiLCBcIm9yZGVyOiAxMDAwXCIsIFwiXCJdLmpvaW4oXCJcXG5cIiksXG5cdH0pO1xuXG5cdGNvbnN0IHJlcXVlc3RzOiBBcnJheTx7XG5cdFx0ZmlsZTogc3RyaW5nO1xuXHRcdHlhbWw6IHN0cmluZztcblx0fT4gPSBbXG5cdFx0e1xuXHRcdFx0ZmlsZTogXCJMaXN0IChhbm9ueW1vdXMpLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBMaXN0IChhbm9ueW1vdXMpXCIsXG5cdFx0XHRcdFwibWV0aG9kOiBHRVRcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsb1wiJyxcblx0XHRcdFx0XCJhdXRoOlwiLFxuXHRcdFx0XHRcIiAgdHlwZTogbm9hdXRoXCIsXG5cdFx0XHRcdFwib3JkZXI6IDEwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRcdHtcblx0XHRcdGZpbGU6IFwiR2V0IGJ5IGlkLnJlcXVlc3QueWFtbFwiLFxuXHRcdFx0eWFtbDogW1xuXHRcdFx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRcdFx0XCJuYW1lOiBHZXQgYnkgaWRcIixcblx0XHRcdFx0XCJtZXRob2Q6IEdFVFwiLFxuXHRcdFx0XHQndXJsOiBcInt7YmFzZVVybH19L2hlbGxvLzppZFwiJyxcblx0XHRcdFx0XCJvcmRlcjogMjAwMFwiLFxuXHRcdFx0XHRcIlwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0ZmlsZTogXCJDcmVhdGUucmVxdWVzdC55YW1sXCIsXG5cdFx0XHR5YW1sOiBbXG5cdFx0XHRcdFwiJGtpbmQ6IGh0dHAtcmVxdWVzdFwiLFxuXHRcdFx0XHRcIm5hbWU6IENyZWF0ZVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogUE9TVFwiLFxuXHRcdFx0XHQndXJsOiBcInt7YmFzZVVybH19L2hlbGxvXCInLFxuXHRcdFx0XHRcImhlYWRlcnM6XCIsXG5cdFx0XHRcdFwiICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cIixcblx0XHRcdFx0XCJib2R5OlwiLFxuXHRcdFx0XHRcIiAgdHlwZToganNvblwiLFxuXHRcdFx0XHRcIiAgY29udGVudDogfC1cIixcblx0XHRcdFx0XCIgICAge1wiLFxuXHRcdFx0XHQnICAgICAgXCJtZXNzYWdlXCI6IFwiaGVsbG9cIicsXG5cdFx0XHRcdFwiICAgIH1cIixcblx0XHRcdFx0XCJvcmRlcjogMzAwMFwiLFxuXHRcdFx0XHRcIlwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0ZmlsZTogXCJVcGRhdGUucmVxdWVzdC55YW1sXCIsXG5cdFx0XHR5YW1sOiBbXG5cdFx0XHRcdFwiJGtpbmQ6IGh0dHAtcmVxdWVzdFwiLFxuXHRcdFx0XHRcIm5hbWU6IFVwZGF0ZVwiLFxuXHRcdFx0XHRcIm1ldGhvZDogUFVUXCIsXG5cdFx0XHRcdCd1cmw6IFwie3tiYXNlVXJsfX0vaGVsbG8vOmlkXCInLFxuXHRcdFx0XHRcImhlYWRlcnM6XCIsXG5cdFx0XHRcdFwiICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cIixcblx0XHRcdFx0XCJib2R5OlwiLFxuXHRcdFx0XHRcIiAgdHlwZToganNvblwiLFxuXHRcdFx0XHRcIiAgY29udGVudDogfC1cIixcblx0XHRcdFx0XCIgICAge1wiLFxuXHRcdFx0XHQnICAgICAgXCJtZXNzYWdlXCI6IFwidXBkYXRlZFwiJyxcblx0XHRcdFx0XCIgICAgfVwiLFxuXHRcdFx0XHRcIm9yZGVyOiA0MDAwXCIsXG5cdFx0XHRcdFwiXCIsXG5cdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRmaWxlOiBcIkRlbGV0ZS5yZXF1ZXN0LnlhbWxcIixcblx0XHRcdHlhbWw6IFtcblx0XHRcdFx0XCIka2luZDogaHR0cC1yZXF1ZXN0XCIsXG5cdFx0XHRcdFwibmFtZTogRGVsZXRlXCIsXG5cdFx0XHRcdFwibWV0aG9kOiBERUxFVEVcIixcblx0XHRcdFx0J3VybDogXCJ7e2Jhc2VVcmx9fS9oZWxsby86aWRcIicsXG5cdFx0XHRcdFwib3JkZXI6IDUwMDBcIixcblx0XHRcdFx0XCJcIixcblx0XHRcdF0uam9pbihcIlxcblwiKSxcblx0XHR9LFxuXHRdO1xuXG5cdGZvciAoY29uc3QgciBvZiByZXF1ZXN0cykge1xuXHRcdGZpbGVzLnB1c2goe1xuXHRcdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9L0hlbGxvLyR7ci5maWxlfWAsXG5cdFx0XHRjb250ZW50OiByLnlhbWwsXG5cdFx0fSk7XG5cdH1cblxuXHRyZXR1cm4gZmlsZXM7XG59XG5cbi8qKiBSZWFkIGEgcHJldmlvdXNseSBzY2FmZm9sZGVkIGF1dGgwQ2xpZW50SWQgc28gcmUtc2NhZmZvbGQgbmV2ZXIgYmxhbmtzIGl0LiAqL1xuZnVuY3Rpb24gcmVhZEV4aXN0aW5nU3BhQ2xpZW50SWQodGFyZ2V0RGlyOiBzdHJpbmcsIHByb2plY3ROYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBlbnZQYXRoID0gam9pbihcblx0XHR0YXJnZXREaXIsXG5cdFx0XCJwb3N0bWFuL2Vudmlyb25tZW50c1wiLFxuXHRcdGAke3Byb2plY3ROYW1lfS1Mb2NhbC5lbnZpcm9ubWVudC55YW1sYCxcblx0KTtcblx0aWYgKCFleGlzdHNTeW5jKGVudlBhdGgpKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRjb25zdCB0ZXh0ID0gcmVhZEZpbGVTeW5jKGVudlBhdGgsIFwidXRmOFwiKTtcblx0Y29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9rZXk6XFxzKmF1dGgwQ2xpZW50SWRcXHMqXFxuXFxzKnZhbHVlOlxccypbXCInXT8oW15cIidcXG5dKykvKTtcblx0Y29uc3QgdmFsdWUgPSBtYXRjaD8uWzFdPy50cmltKCk7XG5cdHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgUG9zdG1hbiBTUEEgY2xpZW50IGlkLiBOZXZlciByZXR1cm5zIGVtcHR5IOKAlCBwcmVzZXJ2ZXMgYW4gZXhpc3RpbmdcbiAqIGVudiB2YWx1ZSBvbiBBdXRoMCBmYWlsdXJlLCBvdGhlcndpc2UgdGhyb3dzIHNvIHdlIGRvIG5vdCB3cml0ZSBhIGJsYW5rIGVudi5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNwYUNsaWVudElkKHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQpOiBzdHJpbmcge1xuXHRjb25zdCBhcHBOYW1lID0gYCR7d29ya3NwYWNlLm5hbWV9IFBvc3RtYW5gO1xuXHR0cnkge1xuXHRcdGNvbnN0IGFwcCA9IGF1dGgwQ2xpLmVuc3VyZVNwYUFwcChhcHBOYW1lLCBbLi4uUE9TVE1BTl9DQUxMQkFDS1NdKTtcblx0XHRjb25zb2xlLmxvZyhcblx0XHRcdGFwcC5yZXVzZWRcblx0XHRcdFx0PyBgICDinJMgUmV1c2luZyBBdXRoMCBTUEEgYXBwIGZvciBQb3N0bWFuIFBLQ0UgKCR7YXBwLmNsaWVudF9pZH0pYFxuXHRcdFx0XHQ6IGAgIOKckyBBdXRoMCBTUEEgYXBwIGNyZWF0ZWQgZm9yIFBvc3RtYW4gUEtDRSAoJHthcHAuY2xpZW50X2lkfSlgLFxuXHRcdCk7XG5cdFx0dHJ5IHtcblx0XHRcdGF1dGgwQ2xpLmVuYWJsZUNvbm5lY3Rpb25Gb3JDbGllbnQoYXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FLCBhcHAuY2xpZW50X2lkKTtcblx0XHRcdGNvbnNvbGUubG9nKGAgIOKckyBFbmFibGVkICR7YXV0aDBDbGkuREJfQ09OTkVDVElPTl9OQU1FfSBvbiBQb3N0bWFuIFNQQWApO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0YCAg4pyXIEZhaWxlZCB0byBlbmFibGUgREIgY29ubmVjdGlvbiBvbiBTUEE6ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycn1gLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGFwcC5jbGllbnRfaWQ7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGNvbnN0IGV4aXN0aW5nID0gcmVhZEV4aXN0aW5nU3BhQ2xpZW50SWQod29ya3NwYWNlLnRhcmdldERpciwgd29ya3NwYWNlLm5hbWUpO1xuXHRcdGlmIChleGlzdGluZykge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcblx0XHRcdFx0YCAg4pyXIEZhaWxlZCB0byBlbnN1cmUgQXV0aDAgU1BBIGFwcCAoJHtlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyfSlgLFxuXHRcdFx0KTtcblx0XHRcdGNvbnNvbGUubG9nKGAgIOKckyBLZWVwaW5nIGV4aXN0aW5nIGF1dGgwQ2xpZW50SWQgZnJvbSBQb3N0bWFuIGVudmlyb25tZW50ICgke2V4aXN0aW5nfSlgKTtcblx0XHRcdHJldHVybiBleGlzdGluZztcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0YEZhaWxlZCB0byBlbnN1cmUgQXV0aDAgU1BBIGFwcCBmb3IgUG9zdG1hbiDigJQgYXV0aDBDbGllbnRJZCB3b3VsZCBiZSBlbXB0eTogJHtcblx0XHRcdFx0ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVyclxuXHRcdFx0fWAsXG5cdFx0KTtcblx0fVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FmZm9sZCh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBvcHRpb25zOiBQb3N0bWFuT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAob3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT09IFwibm9uZVwiIHx8IG9wdGlvbnMucG9zdG1hblByb3ZpZGVyID09IG51bGwpIHJldHVybjtcblxuXHRjb25zdCBhdXRoQ29uZmlnTW9kZWwgPSB3b3Jrc3BhY2UuZ2V0TW9kZWw8QXV0aENvbmZpZ01vZGVsPihXRUxMX0tOT1dOX0ZJTEVTLkFVVEhfQ09ORklHKTtcblx0Y29uc3QgYXV0aENmZyA9IGF1dGhDb25maWdNb2RlbD8uY29uZmlnO1xuXG5cdGNvbnN0IHNwYUNsaWVudElkID0gYXV0aENmZz8uaXNzdWVyQmFzZVVybCA/IHJlc29sdmVTcGFDbGllbnRJZCh3b3Jrc3BhY2UpIDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IGF1dGgwRW52OiBBdXRoMEVudiB8IHVuZGVmaW5lZCA9IGF1dGhDZmc/Lmlzc3VlckJhc2VVcmxcblx0XHQ/IHtcblx0XHRcdFx0YXV0aDBEb21haW46IGF1dGhDZmcuaXNzdWVyQmFzZVVybC5yZXBsYWNlKC9eaHR0cHM/OlxcL1xcLy8sIFwiXCIpLFxuXHRcdFx0XHRhdXRoMEF1ZGllbmNlOiBhdXRoQ2ZnLmF1ZGllbmNlLFxuXHRcdFx0XHRhdXRoMENsaWVudElkOiBzcGFDbGllbnRJZCxcblx0XHRcdH1cblx0XHQ6IHVuZGVmaW5lZDtcblxuXHRjb25zdCBwcm9qZWN0TmFtZSA9IHdvcmtzcGFjZS5uYW1lO1xuXHRjb25zdCBlbnZOYW1lID0gYCR7cHJvamVjdE5hbWV9IExvY2FsYDtcblx0Y29uc3QgbG9jYWxGaWxlcyA9IGJ1aWxkTG9jYWxWaWV3RmlsZXMocHJvamVjdE5hbWUsIGF1dGgwRW52KTtcblx0Y29uc3QgZW52WWFtbCA9IGJ1aWxkRW52aXJvbm1lbnRZYW1sKGVudk5hbWUsIGF1dGgwRW52KTtcblxuXHR3b3Jrc3BhY2UuYWRkRmlsZSh7XG5cdFx0ZmlsZXM6ICgpID0+IFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwiLnBvc3RtYW4vcmVzb3VyY2VzLnlhbWxcIixcblx0XHRcdFx0Y29udGVudDogW1xuXHRcdFx0XHRcdFwiIyBPcGVuIHRoaXMgcHJvamVjdCByb290IGluIFBvc3RtYW4gKEZpbGVzIOKGkiBPcGVuIGZvbGRlciksIG5vdCB0aGUgcG9zdG1hbi8gc3ViZm9sZGVyLlwiLFxuXHRcdFx0XHRcdFwiIyBQb3N0bWFuIGZpbGxzIHdvcmtzcGFjZS5pZCB3aGVuIHlvdSBjb25uZWN0IExvY2FsIFZpZXcuXCIsXG5cdFx0XHRcdFx0XCIjXCIsXG5cdFx0XHRcdFx0XCIjIEFsbCByZXNvdXJjZXMgdW5kZXIgcG9zdG1hbi8gYXJlIHJlZ2lzdGVyZWQgYXV0b21hdGljYWxseS5cIixcblx0XHRcdFx0XHRcIlwiLFxuXHRcdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogYHBvc3RtYW4vZW52aXJvbm1lbnRzLyR7cHJvamVjdE5hbWV9LUxvY2FsLmVudmlyb25tZW50LnlhbWxgLFxuXHRcdFx0XHRjb250ZW50OiBlbnZZYW1sLFxuXHRcdFx0fSxcblx0XHRcdC4uLmxvY2FsRmlsZXMsXG5cdFx0XSxcblx0fSk7XG5cblx0aWYgKG9wdGlvbnMucG9zdG1hblByb3ZpZGVyID09PSBcImFwaVwiICYmIG9wdGlvbnMuYXBpS2V5KSB7XG5cdFx0Y29uc3QgY29sbGVjdGlvbiA9IGJ1aWxkQ29sbGVjdGlvbkpzb24ocHJvamVjdE5hbWUsIGF1dGgwRW52KTtcblx0XHRjb25zdCBoZWFkZXJzID0geyBcIlgtQXBpLUtleVwiOiBvcHRpb25zLmFwaUtleSwgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfTtcblxuXHRcdGNvbnN0IGNvbFJlcyA9IGF3YWl0IGZldGNoKFxuXHRcdFx0YGh0dHBzOi8vYXBpLmdldHBvc3RtYW4uY29tL2NvbGxlY3Rpb25zP3dvcmtzcGFjZT0ke29wdGlvbnMud29ya3NwYWNlSWR9YCxcblx0XHRcdHtcblx0XHRcdFx0bWV0aG9kOiBcIlBPU1RcIixcblx0XHRcdFx0aGVhZGVycyxcblx0XHRcdFx0Ym9keTogSlNPTi5zdHJpbmdpZnkoeyBjb2xsZWN0aW9uIH0pLFxuXHRcdFx0fSxcblx0XHQpO1xuXHRcdGlmIChjb2xSZXMub2spIHtcblx0XHRcdGNvbnNvbGUubG9nKFwiICDinJMgUG9zdG1hbiBjb2xsZWN0aW9uIHVwbG9hZGVkXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiICDinJcgRmFpbGVkIHRvIHVwbG9hZCBQb3N0bWFuIGNvbGxlY3Rpb25cIik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZW52VmFsdWVzID0gW1xuXHRcdFx0eyBrZXk6IFwiYmFzZVVybFwiLCB2YWx1ZTogXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0Li4uKGF1dGgwRW52Py5hdXRoMERvbWFpblxuXHRcdFx0XHQ/IFtcblx0XHRcdFx0XHRcdHsga2V5OiBcImF1dGgwRG9tYWluXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMERvbWFpbiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0XHRcdFx0eyBrZXk6IFwiYXV0aDBBdWRpZW5jZVwiLCB2YWx1ZTogYXV0aDBFbnYuYXV0aDBBdWRpZW5jZSA/PyBcIlwiLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHRcdFx0XHR7IGtleTogXCJhdXRoMENsaWVudElkXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMENsaWVudElkID8/IFwiXCIsIGVuYWJsZWQ6IHRydWUgfSxcblx0XHRcdFx0XHRdXG5cdFx0XHRcdDogW10pLFxuXHRcdF07XG5cdFx0Y29uc3QgZW52UmVzID0gYXdhaXQgZmV0Y2goXG5cdFx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vZW52aXJvbm1lbnRzP3dvcmtzcGFjZT0ke29wdGlvbnMud29ya3NwYWNlSWR9YCxcblx0XHRcdHtcblx0XHRcdFx0bWV0aG9kOiBcIlBPU1RcIixcblx0XHRcdFx0aGVhZGVycyxcblx0XHRcdFx0Ym9keTogSlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0XHRcdGVudmlyb25tZW50OiB7IG5hbWU6IGVudk5hbWUsIHZhbHVlczogZW52VmFsdWVzIH0sXG5cdFx0XHRcdH0pLFxuXHRcdFx0fSxcblx0XHQpO1xuXHRcdGlmIChlbnZSZXMub2spIHtcblx0XHRcdGNvbnNvbGUubG9nKFwiICDinJMgUG9zdG1hbiBlbnZpcm9ubWVudCB1cGxvYWRlZFwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc29sZS5lcnJvcihcIiAg4pyXIEZhaWxlZCB0byB1cGxvYWQgUG9zdG1hbiBlbnZpcm9ubWVudFwiKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGNvbnN0IFBvc3RtYW5GZWF0dXJlOiBGZWF0dXJlPFBvc3RtYW5PcHRpb25zPiA9IHsgZ2V0T3B0aW9ucywgc2NhZmZvbGQgfTtcbmV4cG9ydCB7IFBPU1RNQU5fQ0FMTEJBQ0tTLCBQT1NUTUFOX1NDT1BFUyB9O1xuIl0sIm5hbWVzIjpbInJhbmRvbVVVSUQiLCJleGlzdHNTeW5jIiwicmVhZEZpbGVTeW5jIiwiam9pbiIsInBpY2siLCJXRUxMX0tOT1dOX0ZJTEVTIiwiYXV0aDBDbGkiLCJQT1NUTUFOX0NBTExCQUNLUyIsIlBPU1RNQU5fU0NPUEVTIiwiZ2V0T3B0aW9ucyIsIl93b3Jrc3BhY2UiLCJjbGlPcHRpb25zIiwicG9zdG1hblByb3ZpZGVyIiwiY2hvaWNlcyIsImxhYmVsIiwiZGVzY3JpcHRpb24iLCJzZWxlY3RlZCIsImMiLCJwcm92aWRlciIsImFwaUtleSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUTUFOX0FQSV9LRVkiLCJ0aGVuIiwibSIsImFzayIsImhlYWRlcnMiLCJ3c1JlcyIsImZldGNoIiwib2siLCJjb25zb2xlIiwiZXJyb3IiLCJ3b3Jrc3BhY2VzIiwianNvbiIsIndzQ2hvaWNlcyIsImlkIiwibWFwIiwidyIsIm5hbWUiLCJ0eXBlIiwid3NQaWNrZWQiLCJ3b3Jrc3BhY2VJZCIsIndzTmFtZSIsImNyZWF0ZVJlcyIsIm1ldGhvZCIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwid29ya3NwYWNlIiwid3MiLCJsb2ciLCJidWlsZENvbGxlY3Rpb25Kc29uIiwicHJvamVjdE5hbWUiLCJhdXRoIiwiYXV0aE9iaiIsImF1dGgwRG9tYWluIiwib2F1dGgyIiwia2V5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJoZWxsb1VybCIsInBhdGgiLCJyYXciLCJob3N0Iiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiaW5mbyIsIl9wb3N0bWFuX2lkIiwic2NoZW1hIiwiaXRlbSIsInJlcXVlc3QiLCJ1cmwiLCJoZWFkZXIiLCJtb2RlIiwieWFtbFF1b3RlIiwidGVzdCIsImluY2x1ZGVzIiwiYnVpbGRFbnZpcm9ubWVudFlhbWwiLCJ2YWx1ZXMiLCJwdXNoIiwiYXV0aDBBdWRpZW5jZSIsImF1dGgwQ2xpZW50SWQiLCJsaW5lcyIsInYiLCJidWlsZExvY2FsVmlld0ZpbGVzIiwiY29sbGVjdGlvbkRpciIsImZpbGVzIiwiYXV0aEJsb2NrIiwiZmlsZVBhdGgiLCJjb250ZW50IiwibCIsInJlcGxhY2UiLCJyZXF1ZXN0cyIsImZpbGUiLCJ5YW1sIiwiciIsInJlYWRFeGlzdGluZ1NwYUNsaWVudElkIiwidGFyZ2V0RGlyIiwiZW52UGF0aCIsInRleHQiLCJtYXRjaCIsInRyaW0iLCJsZW5ndGgiLCJyZXNvbHZlU3BhQ2xpZW50SWQiLCJhcHBOYW1lIiwiYXBwIiwiZW5zdXJlU3BhQXBwIiwicmV1c2VkIiwiY2xpZW50X2lkIiwiZW5hYmxlQ29ubmVjdGlvbkZvckNsaWVudCIsIkRCX0NPTk5FQ1RJT05fTkFNRSIsImVyciIsIkVycm9yIiwibWVzc2FnZSIsImV4aXN0aW5nIiwic2NhZmZvbGQiLCJvcHRpb25zIiwiYXV0aENvbmZpZ01vZGVsIiwiZ2V0TW9kZWwiLCJBVVRIX0NPTkZJRyIsImF1dGhDZmciLCJjb25maWciLCJzcGFDbGllbnRJZCIsImlzc3VlckJhc2VVcmwiLCJhdXRoMEVudiIsImF1ZGllbmNlIiwiZW52TmFtZSIsImxvY2FsRmlsZXMiLCJlbnZZYW1sIiwiYWRkRmlsZSIsImNvbGxlY3Rpb24iLCJjb2xSZXMiLCJlbnZWYWx1ZXMiLCJlbmFibGVkIiwiZW52UmVzIiwiZW52aXJvbm1lbnQiLCJQb3N0bWFuRmVhdHVyZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLGNBQWM7QUFDekMsU0FBU0MsVUFBVSxFQUFFQyxZQUFZLFFBQVEsVUFBVTtBQUNuRCxTQUFTQyxJQUFJLFFBQVEsWUFBWTtBQUNqQyxTQUFTQyxJQUFJLFFBQVEseUJBQXlCO0FBQzlDLFNBQVNDLGdCQUFnQixRQUFRLHdCQUF3QjtBQUl6RCxZQUFZQyxjQUFjLGlCQUFpQjtBQUUzQyxxRUFBcUUsR0FDckUsTUFBTUMsb0JBQW9CO0lBQ3pCO0lBQ0E7Q0FDQTtBQUVELDhFQUE4RSxHQUM5RSxNQUFNQyxpQkFBaUI7SUFDdEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDQSxDQUFDTCxJQUFJLENBQUM7QUFRUCxlQUFlTSxXQUNkQyxVQUE2QixFQUM3QkMsVUFBbUM7SUFFbkMsSUFBSUEsV0FBV0MsZUFBZSxJQUFJLE1BQU0sT0FBTyxDQUFDO0lBRWhELE1BQU1DLFVBQVU7UUFDZjtZQUFFQyxPQUFPO1lBQWlCQyxhQUFhO1FBQU87UUFDOUM7WUFDQ0QsT0FBTztZQUNQQyxhQUFhO1FBQ2Q7UUFDQTtZQUNDRCxPQUFPO1lBQ1BDLGFBQWE7UUFDZDtLQUNBO0lBQ0QsTUFBTUMsV0FBVyxNQUFNWixLQUN0QixpQkFDQVMsU0FDQSxDQUFDSSxJQUFNLEdBQUdBLEVBQUVILEtBQUssQ0FBQyxHQUFHLEVBQUVHLEVBQUVGLFdBQVcsRUFBRTtJQUV2QyxNQUFNRyxXQUFXRixVQUFVRixTQUFTO0lBRXBDLElBQUlJLGFBQWEsUUFBUSxPQUFPO1FBQUVOLGlCQUFpQjtJQUFPO0lBQzFELElBQUlNLGFBQWEsU0FBUyxPQUFPO1FBQUVOLGlCQUFpQjtJQUFRO0lBRTVELE1BQU1PLFNBQ0xDLFFBQVFDLEdBQUcsQ0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decohere/create",
3
- "version": "0.0.1-dev.27",
3
+ "version": "0.0.1-dev.29",
4
4
  "description": "Scaffold a new Decohere project — build with Forge, serve with Flux",
5
5
  "keywords": [
6
6
  "decohere",
@@ -21,7 +21,7 @@
21
21
  "test": "echo \"Error: no test specified\" && exit 1"
22
22
  },
23
23
  "dependencies": {
24
- "@decohere/nexus": "0.0.1-dev.27",
24
+ "@decohere/nexus": "0.0.1-dev.29",
25
25
  "commander": "^13.1.0"
26
26
  },
27
27
  "devDependencies": {},
@@ -8,5 +8,8 @@ import type { ApiOptions } from "./webapi/create-api.js";
8
8
  *
9
9
  * The container runs as the host uid/gid whenever possible so scaffolded files
10
10
  * are never root-owned (post-hoc `chown` is unreliable across Docker setups).
11
+ *
12
+ * Host `~/.config/auth0` is mounted when present so the Auth0 CLI can reuse
13
+ * credentials (required for Postman SPA / auth0ClientId).
11
14
  */
12
15
  export declare function runInBuilder(opts: ApiOptions): never;