picocode 0.9.33 → 0.9.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pico.js +34 -11
- package/package.json +1 -1
package/dist/pico.js
CHANGED
|
@@ -1270,6 +1270,7 @@ function createShellManager({ onChange = () => {
|
|
|
1270
1270
|
id: shell.id,
|
|
1271
1271
|
command: shell.command,
|
|
1272
1272
|
description: shell.description,
|
|
1273
|
+
sessionId: shell.sessionId,
|
|
1273
1274
|
cwd: shell.cwd,
|
|
1274
1275
|
status: shell.status,
|
|
1275
1276
|
exitCode: shell.exitCode,
|
|
@@ -1280,7 +1281,7 @@ function createShellManager({ onChange = () => {
|
|
|
1280
1281
|
lineCount: shell.lines.length
|
|
1281
1282
|
};
|
|
1282
1283
|
}
|
|
1283
|
-
function start(command, { cwd, env, description } = {}) {
|
|
1284
|
+
function start(command, { cwd, env, description, sessionId } = {}) {
|
|
1284
1285
|
const id = String(nextId++);
|
|
1285
1286
|
const child = spawn(command, {
|
|
1286
1287
|
shell: true,
|
|
@@ -1292,6 +1293,7 @@ function createShellManager({ onChange = () => {
|
|
|
1292
1293
|
id,
|
|
1293
1294
|
command,
|
|
1294
1295
|
description: description || null,
|
|
1296
|
+
sessionId: sessionId || null,
|
|
1295
1297
|
cwd: cwd || process.cwd(),
|
|
1296
1298
|
child,
|
|
1297
1299
|
status: "running",
|
|
@@ -2240,7 +2242,7 @@ function capped(text) {
|
|
|
2240
2242
|
return text.slice(0, MAX_OUTPUT_CHARS) + `
|
|
2241
2243
|
[output truncated at ${MAX_OUTPUT_CHARS} characters]`;
|
|
2242
2244
|
}
|
|
2243
|
-
function createBash({ cwd, env, recorder, signal, shells: shells2 }) {
|
|
2245
|
+
function createBash({ cwd, env, recorder, signal, shells: shells2, sessionId }) {
|
|
2244
2246
|
return {
|
|
2245
2247
|
name: "bash",
|
|
2246
2248
|
description: "Run a shell command in the working directory. Each call is a fresh shell: cd does not persist to later calls, so chain directory changes within one command (cd /x && ls) or use absolute paths. Returns stdout, stderr, and exit code. Foreground commands are killed at the timeout (default 120s), so never wait on long externals like CI runs, deploys, or watch loops in the foreground: run those with background true, finish your turn, and the shell's exit will notify you so you can report the outcome. Background also fits long-lived processes like dev servers; check on a background shell with shell_output and stop it with shell_kill.",
|
|
@@ -2253,7 +2255,7 @@ function createBash({ cwd, env, recorder, signal, shells: shells2 }) {
|
|
|
2253
2255
|
execute: ({ command, timeout, background, description }) => {
|
|
2254
2256
|
if (background && shells2) {
|
|
2255
2257
|
recorder.extra({ title: description || command, background: true });
|
|
2256
|
-
const { id } = shells2.start(command, { cwd, env, description });
|
|
2258
|
+
const { id } = shells2.start(command, { cwd, env, description, sessionId });
|
|
2257
2259
|
return { shellId: id, status: "running" };
|
|
2258
2260
|
}
|
|
2259
2261
|
return new Promise((resolve8) => {
|
|
@@ -2403,11 +2405,11 @@ var init_grep = __esm({
|
|
|
2403
2405
|
});
|
|
2404
2406
|
|
|
2405
2407
|
// src/core/tools/index.js
|
|
2406
|
-
function createToolset({ cwd, env, tracker, skills, shells: shells2, wakeups: wakeups2, memory, agents, askUser, dredge, mcpTools = [], userTools = [], signal, maxToolCalls, maxAgentStarts, requireAgentPlan = false, allowNames }) {
|
|
2408
|
+
function createToolset({ cwd, env, tracker, skills, shells: shells2, sessionId, wakeups: wakeups2, memory, agents, askUser, dredge, mcpTools = [], userTools = [], signal, maxToolCalls, maxAgentStarts, requireAgentPlan = false, allowNames }) {
|
|
2407
2409
|
const recorder = createRecorder();
|
|
2408
2410
|
let agentStarts = 0;
|
|
2409
2411
|
let plannedAgentStarts = requireAgentPlan ? null : maxAgentStarts;
|
|
2410
|
-
const deps = { cwd, env, recorder, tracker, signal, shells: shells2 };
|
|
2412
|
+
const deps = { cwd, env, recorder, tracker, signal, shells: shells2, sessionId };
|
|
2411
2413
|
const local = [
|
|
2412
2414
|
createRead(deps),
|
|
2413
2415
|
createWrite(deps),
|
|
@@ -4168,7 +4170,7 @@ function ToolCard({ name, title, status, diff, revert, fullOutput, error, backgr
|
|
|
4168
4170
|
const outLines = fullOutput ? fullOutput.split("\n") : null;
|
|
4169
4171
|
const elapsed = running && startedAt ? Date.now() - startedAt : 0;
|
|
4170
4172
|
const took = !running && !background && durationMs != null ? fmtDuration(durationMs) : null;
|
|
4171
|
-
const info = running ? elapsed >= 5e3 ? `running (${fmtRunning(elapsed)})` : "running" : interrupted ? "interrupted" : reverted ? "reverted" : failed2 ? `failed${took ? ` \xB7 ${took}` : ""}` : background ? "background \xB7
|
|
4173
|
+
const info = running ? elapsed >= 5e3 ? `running (${fmtRunning(elapsed)})` : "running" : interrupted ? "interrupted" : reverted ? "reverted" : failed2 ? `failed${took ? ` \xB7 ${took}` : ""}` : background ? "background \xB7 shell listed below" : diff ? `+${diff.additions} -${diff.deletions}${took ? ` \xB7 ${took}` : ""}` : outLines ? `${outLines.length} ${outLines.length === 1 ? "line" : "lines"}${took ? ` \xB7 ${took}` : ""}${showExpandHint ? " \xB7 ctrl+o" : ""}` : `done${took ? ` \xB7 ${took}` : ""}`;
|
|
4172
4174
|
return /* @__PURE__ */ jsxs("box", { style: { flexDirection: "column", paddingX: 2 }, children: [
|
|
4173
4175
|
/* @__PURE__ */ jsx2("text", { children: " " }),
|
|
4174
4176
|
/* @__PURE__ */ jsxs("box", { style: { flexDirection: "row" }, children: [
|
|
@@ -4257,6 +4259,21 @@ function Message({ item, verbose }) {
|
|
|
4257
4259
|
/* @__PURE__ */ jsx2("text", { style: { color: MUTED, italic: true }, children: `\u2726 skill: ${item.name}` })
|
|
4258
4260
|
] });
|
|
4259
4261
|
}
|
|
4262
|
+
if (item.kind === "shell-command") {
|
|
4263
|
+
const shown = highlight(item.text, "bash");
|
|
4264
|
+
return /* @__PURE__ */ jsxs("box", { style: { flexDirection: "column", paddingX: 2 }, children: [
|
|
4265
|
+
/* @__PURE__ */ jsx2("text", { children: " " }),
|
|
4266
|
+
/* @__PURE__ */ jsx2("text", { style: { color: MUTED, bold: true }, children: "command" }),
|
|
4267
|
+
/* @__PURE__ */ jsx2("box", { style: { flexDirection: "column", paddingLeft: 2 }, children: shown.split("\n").map((line, i) => /* @__PURE__ */ jsx2("text", { children: `${i === 0 ? "$ " : " "}${line || " "}` }, i)) })
|
|
4268
|
+
] });
|
|
4269
|
+
}
|
|
4270
|
+
if (item.kind === "shell-output") {
|
|
4271
|
+
return /* @__PURE__ */ jsxs("box", { style: { flexDirection: "column", paddingX: 2 }, children: [
|
|
4272
|
+
/* @__PURE__ */ jsx2("text", { children: " " }),
|
|
4273
|
+
/* @__PURE__ */ jsx2("text", { style: { color: MUTED, bold: true }, children: "output" }),
|
|
4274
|
+
/* @__PURE__ */ jsx2("box", { style: { flexDirection: "column", paddingLeft: 2 }, children: item.text.split("\n").map((line, i) => /* @__PURE__ */ jsx2("text", { style: { color: FG_SOFT }, children: line || " " }, i)) })
|
|
4275
|
+
] });
|
|
4276
|
+
}
|
|
4260
4277
|
if (item.kind === "user") {
|
|
4261
4278
|
return /* @__PURE__ */ jsxs("box", { style: { flexDirection: "column" }, children: [
|
|
4262
4279
|
/* @__PURE__ */ jsx2("text", { children: " " }),
|
|
@@ -4613,7 +4630,7 @@ In the MCP panel: enter enables/disables a server (disabled is sticky across res
|
|
|
4613
4630
|
|
|
4614
4631
|
## Shells
|
|
4615
4632
|
|
|
4616
|
-
The agent can run long-lived processes (dev servers, watchers) with \`bash background: true\`, then read their output and stop them itself.
|
|
4633
|
+
The agent can run long-lived processes (dev servers, watchers) with \`bash background: true\`, then read their output and stop them itself. Shells appear below the composer and remain there after exit: tab focuses the list, j/k moves, enter opens the command and live output, and \`ctrl+x\` kills a running shell or dismisses a finished one. When a shell exits on its own, the agent is notified and responds; shells die with pico, and quitting warns you if any are still up.
|
|
4617
4634
|
|
|
4618
4635
|
## Subscriptions
|
|
4619
4636
|
|
|
@@ -5737,6 +5754,7 @@ function App({ boot: boot2 }) {
|
|
|
5737
5754
|
env: { PICO_SCRATCHPAD: scratchpad },
|
|
5738
5755
|
tracker,
|
|
5739
5756
|
shells: boot2.shells,
|
|
5757
|
+
sessionId,
|
|
5740
5758
|
dredge: boot2.dredge,
|
|
5741
5759
|
signal,
|
|
5742
5760
|
maxToolCalls: 30,
|
|
@@ -5969,6 +5987,7 @@ ${tail}` : ""),
|
|
|
5969
5987
|
tracker,
|
|
5970
5988
|
skills: freshSkills,
|
|
5971
5989
|
shells: boot2.shells,
|
|
5990
|
+
sessionId: refs.session?.id,
|
|
5972
5991
|
wakeups: boot2.wakeups,
|
|
5973
5992
|
memory: boot2.memory,
|
|
5974
5993
|
agents: boot2.researchModel ? agents : null,
|
|
@@ -6434,6 +6453,8 @@ First call agent_plan. Interpret any agent-count instruction in the user's quest
|
|
|
6434
6453
|
refs.rewindUndo = null;
|
|
6435
6454
|
agents.clear();
|
|
6436
6455
|
setViewedAgentId(null);
|
|
6456
|
+
setViewedShellId(null);
|
|
6457
|
+
fm.focus("input");
|
|
6437
6458
|
setQueued([]);
|
|
6438
6459
|
setSent([]);
|
|
6439
6460
|
setModel(defaultModel2());
|
|
@@ -6615,6 +6636,8 @@ First call agent_plan. Interpret any agent-count instruction in the user's quest
|
|
|
6615
6636
|
refs.rewindUndo = null;
|
|
6616
6637
|
agents.restore(events);
|
|
6617
6638
|
setViewedAgentId(null);
|
|
6639
|
+
setViewedShellId(null);
|
|
6640
|
+
fm.focus("input");
|
|
6618
6641
|
reDerive();
|
|
6619
6642
|
const catalogMatch = models2.find((m) => m.name === derived().model && m.available !== false);
|
|
6620
6643
|
const restored = derived().model && (catalogMatch || adhocModel(derived().model, boot2.providers));
|
|
@@ -6777,7 +6800,7 @@ First call agent_plan. Interpret any agent-count instruction in the user's quest
|
|
|
6777
6800
|
agentsVersion();
|
|
6778
6801
|
const agentRows = agents.list();
|
|
6779
6802
|
shellsVersion();
|
|
6780
|
-
const shellRows = boot2.shells.list().sort((a, b) => Number(b.id) - Number(a.id));
|
|
6803
|
+
const shellRows = boot2.shells.list().filter((shell) => shell.sessionId === refs.session?.id).sort((a, b) => Number(b.id) - Number(a.id));
|
|
6781
6804
|
if (questionRequest()) {
|
|
6782
6805
|
fm.item("question");
|
|
6783
6806
|
if (!fm.is("question")) fm.focus("question");
|
|
@@ -6996,8 +7019,8 @@ First call agent_plan. Interpret any agent-count instruction in the user's quest
|
|
|
6996
7019
|
}
|
|
6997
7020
|
}
|
|
6998
7021
|
const shellTranscript = viewedShell ? [
|
|
6999
|
-
{ kind: "
|
|
7000
|
-
{ kind: "
|
|
7022
|
+
{ kind: "shell-command", text: viewedShell.command },
|
|
7023
|
+
{ kind: "shell-output", text: shellOutput?.output || "no output yet" }
|
|
7001
7024
|
] : null;
|
|
7002
7025
|
const transcript = shellTranscript || (viewedAgent ? agentTranscript(viewedAgent) : mainTranscript);
|
|
7003
7026
|
const hiddenCount = Math.max(0, transcript.length - histWindow());
|
|
@@ -7766,4 +7789,4 @@ git.setEnabled(boot.gitFooter);
|
|
|
7766
7789
|
var app = mount(() => /* @__PURE__ */ jsx8(App, { boot }), { title: `pico \xB7 ${boot.root.split("/").pop()}`, theme });
|
|
7767
7790
|
boot.setTheme = app.setTheme;
|
|
7768
7791
|
boot.mcp.connectAll();
|
|
7769
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUva2V5cy5qcyIsICIuLi9zcmMvY29yZS9tb2RlbHMuanMiLCAiLi4vc3JjL2NvcmUvcGF0aHMuanMiLCAiLi4vc3JjL2NvcmUvY2F0YWxvZy1zbmFwc2hvdC5qc29uIiwgIi4uL3NyYy9jb3JlL2NhdGFsb2cuanMiLCAiLi4vc3JjL2NvcmUvY29kZXgtbW9kZWxzLmpzIiwgIi4uL3NyYy9jb3JlL29wZW5haS1hdXRoLmpzIiwgIi4uL3NyYy9jb3JlL2NvbmZpZy5qcyIsICIuLi9zcmMvY29yZS9jb250ZXh0LmpzIiwgIi4uL3NyYy9jb3JlL3NraWxscy5qcyIsICIuLi9zcmMvY29yZS9jb21tYW5kcy5qcyIsICIuLi9zcmMvY29yZS9tY3AuanMiLCAiLi4vc3JjL2NvcmUvbWVtb3J5LmpzIiwgIi4uL3NyYy9jb3JlL2Jvb3QuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd2ViLmpzIiwgIi4uL3NyYy9jb3JlL3NoZWxscy5qcyIsICIuLi9zcmMvY29yZS9ldmVudHMuanMiLCAiLi4vc3JjL2NvcmUvc2Vzc2lvbi5qcyIsICIuLi9zcmMvY29yZS9jb21wYWN0aW9uLmpzIiwgIi4uL3NyYy9jb3JlL2Rlcml2ZS5qcyIsICIuLi9zcmMvY29yZS9hZ2VudC5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWNvcmRlci5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWFkLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2RpZmYuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd3JpdGUuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZWRpdC5qcyIsICIuLi9zcmMvY29yZS90b29scy9iYXNoLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2dsb2IuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZ3JlcC5qcyIsICIuLi9zcmMvY29yZS90b29scy9pbmRleC5qcyIsICIuLi9zcmMvY29yZS9zeXN0ZW0tcHJvbXB0LmpzIiwgIi4uL3NyYy9jb3JlL3VwZGF0ZS5qcyIsICIuLi9zcmMvdWkvZnV6enkuanMiLCAiLi4vc3JjL3VpL2F0dGFjaG1lbnRzLmpzIiwgIi4uL3NyYy9oZWFkbGVzcy5qcyIsICIuLi9zcmMvbWFpbi5qc3giLCAiLi4vc3JjL2NsaS1hcmdzLmpzIiwgIi4uL3NyYy9jb3JlL3Rlcm1pbmFsLXRoZW1lLmpzIiwgIi4uL3NyYy9jb3JlL3dha2V1cHMuanMiLCAiLi4vc3JjL2NvcmUvZ2l0LmpzIiwgIi4uL3NyYy91aS9hcHAuanN4IiwgIi4uL3NyYy9jb3JlL2hpc3RvcnkuanMiLCAiLi4vc3JjL2NvcmUvYWdlbnRzLmpzIiwgIi4uL3NyYy9jb3JlL3VzZXItdG9vbHMuanMiLCAiLi4vc3JjL2NvcmUvcmV3aW5kLmpzIiwgIi4uL3NyYy9jb3JlL2V4cG9ydC5qcyIsICIuLi9zcmMvdWkvY29tcGxldGlvbi5qcyIsICIuLi9zcmMvdWkvZmlsZXMuanMiLCAiLi4vc3JjL3VpL2hpZ2hsaWdodC5qcyIsICIuLi9zcmMvdWkvdGhlbWUuanMiLCAiLi4vc3JjL3VpL2Zvcm1hdC5qcyIsICIuLi9zcmMvdWkvYW5pbWF0ZWQtdmFsdWUuanN4IiwgIi4uL3NyYy91aS90cmFuc2NyaXB0LmpzeCIsICIuLi9zcmMvdWkvcXVlc3Rpb24tZm9ybS5qc3giLCAiLi4vc3JjL3VpL2VtcHR5LXN0YXRlLmpzeCIsICIuLi9zcmMvdWkvaGVscC5qc3giLCAiLi4vc3JjL3VpL3BhbmVscy5qc3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHNldEtleXMgfSBmcm9tICdAcHJzbS9haSdcblxuY29uc3QgUFJPVklERVJTID0gW1xuICB7IGlkOiAnZ29vZ2xlJywgbGFiZWw6ICdHZW1pbmknLCBlbnY6IFsnR0VNSU5JX0FQSV9LRVknLCAnR09PR0xFX0FJX0FQSV9LRVknXSB9LFxuICB7IGlkOiAnYW50aHJvcGljJywgbGFiZWw6ICdDbGF1ZGUnLCBlbnY6IFsnQU5USFJPUElDX0FQSV9LRVknXSB9LFxuICB7IGlkOiAnb3BlbmFpJywgbGFiZWw6ICdPcGVuQUknLCBlbnY6IFsnT1BFTkFJX0FQSV9LRVknXSB9LFxuICB7IGlkOiAneGFpJywgbGFiZWw6ICdHcm9rJywgZW52OiBbJ1hBSV9BUElfS0VZJ10gfSxcbl1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc2NvdmVyS2V5cyhlbnYgPSBwcm9jZXNzLmVudikge1xuICBjb25zdCBrZXlzID0ge31cbiAgZm9yIChjb25zdCBwIG9mIFBST1ZJREVSUykge1xuICAgIGNvbnN0IG5hbWUgPSBwLmVudi5maW5kKChuKSA9PiBlbnZbbl0pXG4gICAgaWYgKG5hbWUpIGtleXNbcC5pZF0gPSBlbnZbbmFtZV1cbiAgfVxuICByZXR1cm4ga2V5c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlLZXlzKGtleXMpIHtcbiAgc2V0S2V5cyhrZXlzKVxuICByZXR1cm4gT2JqZWN0LmtleXMoa2V5cylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtleUhpbnQocHJvdmlkZXJJZCkge1xuICByZXR1cm4gUFJPVklERVJTLmZpbmQoKHApID0+IHAuaWQgPT09IHByb3ZpZGVySWQpPy5lbnZbMF0gfHwgYCR7cHJvdmlkZXJJZC50b1VwcGVyQ2FzZSgpfV9BUElfS0VZYFxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBmaW5kTW9kZWwobW9kZWxzLCBuYW1lKSB7XG4gIHJldHVybiBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBuYW1lKSB8fCBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0TW9kZWwobW9kZWxzKSB7XG4gIHJldHVybiBtb2RlbHMuZmluZCgobSkgPT4gbS5hdmFpbGFibGUgIT09IGZhbHNlKSB8fCBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc3RpbWF0ZUNvc3QobW9kZWwsIHVzYWdlKSB7XG4gIGlmICghbW9kZWw/LnByaWNlIHx8ICF1c2FnZSkgcmV0dXJuIDBcbiAgY29uc3QgaW5Db3N0ID0gKHVzYWdlLnByb21wdFRva2VucyB8fCAwKSAqIG1vZGVsLnByaWNlLmluXG4gIGNvbnN0IG91dENvc3QgPSAodXNhZ2UuY29tcGxldGlvblRva2VucyB8fCAwKSAqIG1vZGVsLnByaWNlLm91dFxuICByZXR1cm4gKGluQ29zdCArIG91dENvc3QpIC8gMWU2XG59XG4iLCAiaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuZXhwb3J0IGZ1bmN0aW9uIHBpY29Ib21lKCkge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuUElDT19IT01FIHx8IGpvaW4oaG9tZWRpcigpLCAnLnBpY28nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdEtleShyb290KSB7XG4gIHJldHVybiByZXNvbHZlKHJvb3QpLnJlcGxhY2UoL1svXFxcXDpdL2csICctJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQcm9qZWN0Um9vdChjd2QpIHtcbiAgbGV0IGRpciA9IHJlc29sdmUoY3dkKVxuICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGV4aXN0c1N5bmMoam9pbihkaXIsICcuZ2l0JykpKSByZXR1cm4gZGlyXG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpXG4gICAgaWYgKHBhcmVudCA9PT0gZGlyIHx8IGRpciA9PT0gaG9tZSkgcmV0dXJuIHJlc29sdmUoY3dkKVxuICAgIGRpciA9IHBhcmVudFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0RGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ3Byb2plY3RzJywgcHJvamVjdEtleShyb290KSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlc3Npb25zRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ3Nlc3Npb25zJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlc3Npb25TY3JhdGNoRGlyKHJvb3QsIHNlc3Npb25JZCkge1xuICByZXR1cm4gam9pbihwcm9qZWN0RGlyKHJvb3QpLCAnc2NyYXRjaHBhZHMnLCBzZXNzaW9uSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZ2VudFNjcmF0Y2hEaXIocm9vdCwgc2Vzc2lvbklkLCBhZ2VudElkKSB7XG4gIHJldHVybiBqb2luKHNlc3Npb25TY3JhdGNoRGlyKHJvb3QsIHNlc3Npb25JZCksIGBhZ2VudC0ke2FnZW50SWR9YClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RIaXN0b3J5RmlsZShyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdoaXN0b3J5Lmpzb25sJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RNY3BGaWxlKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ21jcC5qc29uJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbE1jcEZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtY3AuanNvbicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxTa2lsbHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdza2lsbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdFNraWxsc0Rpcihyb290KSB7XG4gIHJldHVybiBqb2luKHJvb3QsICcucGljbycsICdza2lsbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsQWdlbnRzRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ0FHRU5UUy5tZCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVEaXIoZGlyKSB7XG4gIG1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIHJldHVybiBkaXJcbn1cbiIsICJ7XCJnb29nbGVcIjp7XCJtb2RlbHNcIjp7XCJnZW1pbmktMi41LWZsYXNoLWltYWdlXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2gtaW1hZ2VcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hXCIsXCJkZXNjcmlwdGlvblwiOlwiTmFubyBCYW5hbmEgaW1hZ2UgbW9kZWwgZm9yIGZhc3QgZ2VuZXJhdGlvbiwgZWRpdHMsIGFuZCBjaGFyYWN0ZXItY29uc2lzdGVudCBhc3NldHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MzI3NjgsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjA3NX19LFwiZ2VtaW5pLTIuNS1mbGFzaC1wcmV2aWV3LXR0c1wiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLXByZXZpZXctdHRzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IEZsYXNoIFByZXZpZXcgVFRTXCIsXCJkZXNjcmlwdGlvblwiOlwiU3BlZWNoIGdlbmVyYXRpb24gbW9kZWwgZm9yIGNvbnRyb2xsYWJsZSB2b2ljZSwgbmFycmF0aW9uLCBhbmQgYXVkaW8gZGVsaXZlcnlcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDUtMDFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjEwfX0sXCJnZW1pbmktMy4xLWZsYXNoLWxpdGVcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1mbGFzaC1saXRlXCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIEZsYXNoIExpdGVcIixcImRlc2NyaXB0aW9uXCI6XCJMb3ctbGF0ZW5jeSBHZW1pbmkgbW9kZWwgZm9yIGhpZ2gtdm9sdW1lIG11bHRpbW9kYWwgYW5kIGFnZW50IHdvcmtsb2Fkc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA1LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDUtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4yNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowLjAyNSxcImlucHV0X2F1ZGlvXCI6MC41fX0sXCJnZW1pbmktMy41LWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0zLjUtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAzLjUgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSBtb2RlbCBiYWxhbmNpbmcgbXVsdGltb2RhbCByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgY29zdFwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4xNSxcImlucHV0X2F1ZGlvXCI6MS41fX0sXCJnZW1tYS00LTI2Yi1hNGItaXRcIjp7XCJpZFwiOlwiZ2VtbWEtNC0yNmItYTRiLWl0XCIsXCJuYW1lXCI6XCJHZW1tYSA0IDI2QiBBNEIgSVRcIixcImRlc2NyaXB0aW9uXCI6XCJPcGVuIEdlbW1hIGluc3RydWN0aW9uIG1vZGVsIGZvciBlZmZpY2llbnQgY2hhdCBhbmQgc2VsZi1ob3N0ZWQgZGVwbG95bWVudHNcIixcImZhbWlseVwiOlwiZ2VtbWFcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTAyXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMDJcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjp0cnVlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjYyMTQ0LFwib3V0cHV0XCI6MzI3Njh9fSxcImdlbWluaS0yLjAtZmxhc2hcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuMC1mbGFzaFwiLFwibmFtZVwiOlwiR2VtaW5pIDIuMCBGbGFzaFwiLFwiZGVzY3JpcHRpb25cIjpcIkVhcmxpZXIgR2VtaW5pIEZsYXNoIHdvcmtob3JzZSBmb3IgcmVzcG9uc2l2ZSBtdWx0aW1vZGFsIGFwcHMgYW5kIHRvb2wgdXNlXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjgxOTJ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdlbWluaS0zLXByby1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLXByby1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMyBQcm8gUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIlByZXZpZXcgR2VtaW5pIGZsYWdzaGlwIGZvciBjb21wbGV4IHJlYXNvbmluZywgY29kaW5nLCBhbmQgcmljaCBtdWx0aW1vZGFsIHByb21wdHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTE4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJnZW1pbmktMy4xLWZsYXNoLWxpdGUtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLWZsYXNoLWxpdGUtcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBGbGFzaCBMaXRlIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJMZWdhY3kgbW9kZWwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBpbnRlZ3JhdGlvbnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4yNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowLjAyNSxcImlucHV0X2F1ZGlvXCI6MC41fX0sXCJnZW1tYS00LTMxYi1pdFwiOntcImlkXCI6XCJnZW1tYS00LTMxYi1pdFwiLFwibmFtZVwiOlwiR2VtbWEgNCAzMUIgSVRcIixcImRlc2NyaXB0aW9uXCI6XCJMYXJnZXN0IEdlbW1hIDQgaW5zdHJ1Y3Rpb24gbW9kZWwgZm9yIG9wZW4sIHNlbGYtaG9zdGVkIGNoYXQgYW5kIHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJnZW1tYVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMDJcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0wMlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOnRydWUsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyNjIxNDQsXCJvdXRwdXRcIjozMjc2OH19LFwiZ2VtaW5pLTMtcHJvLWltYWdlLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMtcHJvLWltYWdlLXByZXZpZXdcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hIFByb1wiLFwiZGVzY3JpcHRpb25cIjpcIk5hbm8gQmFuYW5hIFBybyBmb3IgaGlnaGVyLWZpZGVsaXR5IGltYWdlIGdlbmVyYXRpb24gYW5kIGRlc2lnbi1oZWF2eSBlZGl0c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTMxMDcyLFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyMH19LFwiZ2VtaW5pLWVtYmVkZGluZy0wMDFcIjp7XCJpZFwiOlwiZ2VtaW5pLWVtYmVkZGluZy0wMDFcIixcIm5hbWVcIjpcIkdlbWluaSBFbWJlZGRpbmcgMDAxXCIsXCJkZXNjcmlwdGlvblwiOlwiRW1iZWRkaW5nIG1vZGVsIGZvciBzZW1hbnRpYyBzZWFyY2gsIHJldHJpZXZhbCwgY2x1c3RlcmluZywgYW5kIHJhbmtpbmcgcGlwZWxpbmVzXCIsXCJmYW1pbHlcIjpcImdlbWluaVwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA1LTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwNDgsXCJvdXRwdXRcIjoxfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTUsXCJvdXRwdXRcIjowfX0sXCJnZW1pbmktMi4wLWZsYXNoLWxpdGVcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuMC1mbGFzaC1saXRlXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi4wIEZsYXNoLUxpdGVcIixcImRlc2NyaXB0aW9uXCI6XCJMZWdhY3kgbW9kZWwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBpbnRlZ3JhdGlvbnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo4MTkyfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4wNzUsXCJvdXRwdXRcIjowLjN9fSxcImdlbWluaS0yLjUtcHJvLXByZXZpZXctdHRzXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtcHJvLXByZXZpZXctdHRzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IFBybyBQcmV2aWV3IFRUU1wiLFwiZGVzY3JpcHRpb25cIjpcIlNwZWVjaCBnZW5lcmF0aW9uIG1vZGVsIGZvciBjb250cm9sbGFibGUgdm9pY2UsIG5hcnJhdGlvbiwgYW5kIGF1ZGlvIGRlbGl2ZXJ5XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA1LTAxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDUtMDFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJhdWRpb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6MjB9fSxcImdlbWluaS0yLjUtZmxhc2gtbGl0ZVwiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLWxpdGVcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgRmxhc2gtTGl0ZVwiLFwiZGVzY3JpcHRpb25cIjpcIkxlYW4gR2VtaW5pIDIuNSBsYW5lIGZvciBjaGVhcCBtdWx0aW1vZGFsIHRyYWZmaWMgYW5kIHF1aWNrIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjUxMixcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMSxcImlucHV0X2F1ZGlvXCI6MC4zfX0sXCJnZW1pbmktMi41LXByb1wiOntcImlkXCI6XCJnZW1pbmktMi41LXByb1wiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJHb29nbGUncyBwcm92ZW4gcmVhc29uaW5nIG1vZGVsIGZvciBjb2RpbmcsIG1hdGgsIGFuZCBtdWx0aW1vZGFsIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEyOCxcIm1heFwiOjMyNzY4fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1fX19LFwiZ2VtaW5pLW9tbmktZmxhc2gtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktb21uaS1mbGFzaC1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgT21uaSBGbGFzaCBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiVmlkZW8gZ2VuZXJhdGlvbiBhbmQgZWRpdGluZyBtb2RlbCBmb3IgZmFzdCwgY29udmVyc2F0aW9uYWwgdGV4dC0gYW5kIGltYWdlLXRvLXZpZGVvIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0zMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTMwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIl0sXCJvdXRwdXRcIjpbXCJ2aWRlb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEzMTA3MixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjE3LjV9fSxcImdlbWluaS0zLjEtZmxhc2gtaW1hZ2UtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLWZsYXNoLWltYWdlLXByZXZpZXdcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hIDJcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMjZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0yNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NjU1MzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjo2MH19LFwiZ2VtaW5pLTMtZmxhc2gtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1mbGFzaC1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMyBGbGFzaCBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiTmV3IEdlbWluaSBmbGFzaCBsYW5lIGJyaW5naW5nIGZyb250aWVyLXN0eWxlIG11bHRpbW9kYWwgcmVhc29uaW5nIHRvIGNoZWFwZXIgcnVuc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjMsXCJjYWNoZV9yZWFkXCI6MC4wNSxcImlucHV0X2F1ZGlvXCI6MX19LFwiZ2VtaW5pLTMuMS1wcm8tcHJldmlldy1jdXN0b210b29sc1wiOntcImlkXCI6XCJnZW1pbmktMy4xLXByby1wcmV2aWV3LWN1c3RvbXRvb2xzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIFBybyBQcmV2aWV3IEN1c3RvbSBUb29sc1wiLFwiZGVzY3JpcHRpb25cIjpcIkFkdmFuY2VkIEdlbWluaSBtb2RlbCBmb3IgY29tcGxleCByZWFzb25pbmcsIGNvZGluZywgYW5kIG11bHRpbW9kYWwgYW5hbHlzaXNcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJnZW1pbmktZmxhc2gtbGF0ZXN0XCI6e1wiaWRcIjpcImdlbWluaS1mbGFzaC1sYXRlc3RcIixcIm5hbWVcIjpcIkdlbWluaSBGbGFzaCBMYXRlc3RcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSBtb2RlbCBiYWxhbmNpbmcgbXVsdGltb2RhbCByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgY29zdFwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4xNSxcImlucHV0X2F1ZGlvXCI6MS41fX0sXCJnZW1pbmktMi41LWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSB3b3JraG9yc2UgZm9yIG11bHRpbW9kYWwgYXBwcyB3aGVyZSBsYXRlbmN5IGFuZCBwcmljZSBtYXR0ZXJcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MCxcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4wMyxcImlucHV0X2F1ZGlvXCI6MX19LFwiZ2VtaW5pLWZsYXNoLWxpdGUtbGF0ZXN0XCI6e1wiaWRcIjpcImdlbWluaS1mbGFzaC1saXRlLWxhdGVzdFwiLFwibmFtZVwiOlwiR2VtaW5pIEZsYXNoLUxpdGUgTGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiTG93LWxhdGVuY3kgR2VtaW5pIG1vZGVsIGZvciBoaWdoLXZvbHVtZSBtdWx0aW1vZGFsIGFuZCBhZ2VudCB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MC4wMjUsXCJpbnB1dF9hdWRpb1wiOjAuNX19LFwiZ2VtaW5pLTMuMS1wcm8tcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLXByby1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIFBybyBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiUmVhc29uaW5nLWZpcnN0IEdlbWluaSBwcmV2aWV3IGZvciBhZ2VudGljIGNvZGluZyBhbmQgY29tcGxleCBwcm9ibGVtIHNvbHZpbmdcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjR9fX19fSxcImFudGhyb3BpY1wiOntcIm1vZGVsc1wiOntcImNsYXVkZS1vcHVzLTQtOFwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LThcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuOFwiLFwiZGVzY3JpcHRpb25cIjpcIlRvcCBDbGF1ZGUgT3B1cyB0aWVyIGZvciB0aGUgaGFyZGVzdCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDUtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NTAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzcGVlZFwiOlwiZmFzdFwifSxcImhlYWRlcnNcIjp7XCJhbnRocm9waWMtYmV0YVwiOlwiZmFzdC1tb2RlLTIwMjYtMDItMDFcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLW9wdXMtNC0xXCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtMVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC4xIChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjc1LFwiY2FjaGVfcmVhZFwiOjEuNSxcImNhY2hlX3dyaXRlXCI6MTguNzV9fSxcImNsYXVkZS1zb25uZXQtNC02XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC02XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkNsYXVkZSB3b3JraG9yc2UgZm9yIGNvZGluZyBhZ2VudHMsIGNhcmVmdWwgYW5hbHlzaXMsIGFuZCBwcm9kdWN0aW9uIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJtYXhcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19LFwiY2xhdWRlLW9wdXMtNC0xLTIwMjUwODA1XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtMS0yMDI1MDgwNVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjc1LFwiY2FjaGVfcmVhZFwiOjEuNSxcImNhY2hlX3dyaXRlXCI6MTguNzV9fSxcImNsYXVkZS1oYWlrdS00LTVcIjp7XCJpZFwiOlwiY2xhdWRlLWhhaWt1LTQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIEhhaWt1IDQuNSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgQ2xhdWRlIGxhbmUgZm9yIGxpZ2h0d2VpZ2h0IGFnZW50cywgb2ZmaWNlIHRhc2tzLCBhbmQgcmVzcG9uc2l2ZSBjaGF0XCIsXCJmYW1pbHlcIjpcImNsYXVkZS1oYWlrdVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMi0yOFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEwLTE1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTAtMTVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC4xLFwiY2FjaGVfd3JpdGVcIjoxLjI1fX0sXCJjbGF1ZGUtb3B1cy00LTUtMjAyNTExMDFcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC01LTIwMjUxMTAxXCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtc29ubmV0LTQtNS0yMDI1MDkyOVwiOntcImlkXCI6XCJjbGF1ZGUtc29ubmV0LTQtNS0yMDI1MDkyOVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJCYWxhbmNlZCBDbGF1ZGUgbW9kZWwgZm9yIGNvZGluZywgYW5hbHlzaXMsIGFnZW50IHdvcmtmbG93cywgYW5kIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA3LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMjlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0yOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19LFwiY2xhdWRlLWZhYmxlLTVcIjp7XCJpZFwiOlwiY2xhdWRlLWZhYmxlLTVcIixcIm5hbWVcIjpcIkNsYXVkZSBGYWJsZSA1XCIsXCJkZXNjcmlwdGlvblwiOlwiQ2xhdWRlIG1vZGVsIGZvciBjcmVhdGl2ZSB3cml0aW5nLCBhbmFseXNpcywgYW5kIGNvbnRyb2xsZWQgYWdlbnQgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1mYWJsZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDYtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNi0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NTAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19LFwiY2xhdWRlLXNvbm5ldC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA1XCIsXCJkZXNjcmlwdGlvblwiOlwiRXZlcnlkYXkgQ2xhdWRlIGFnZW50IG1vZGVsIGZvciBjb2RpbmcsIHBsYW5uaW5nLCBicm93c2luZywgYW5kIGdlbmVyYWwgd29ya1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDEtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTMwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX0sXCJjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxXCI6e1wiaWRcIjpcImNsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDFcIixcIm5hbWVcIjpcIkNsYXVkZSBIYWlrdSA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IENsYXVkZSBtb2RlbCBmb3IgcmVzcG9uc2l2ZSBhc3Npc3RhbmNlLCBjbGFzc2lmaWNhdGlvbiwgYW5kIGxpZ2h0d2VpZ2h0IGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtaGFpa3VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDItMjhcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNX19LFwiY2xhdWRlLW9wdXMtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC41IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTI0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLW9wdXMtNC03XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtN1wiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC43XCIsXCJkZXNjcmlwdGlvblwiOlwiU3Ryb25nZXIgT3B1cyB0aWVyIGZvciBhZHZhbmNlZCBzb2Z0d2FyZSB3b3JrIGFuZCBoaWdoLXN0YWtlcyByZWFzb25pbmdcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAxLTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTUwLFwiY2FjaGVfcmVhZFwiOjMsXCJjYWNoZV93cml0ZVwiOjM3LjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1vcHVzLTQtNlwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTZcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2gtZW5kIENsYXVkZSBmb3IgZGlmZmljdWx0IGNvZGluZywgcGxhbm5pbmcsIGFuZCBzbG93ZXIgZXhwZXJ0IHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwibWF4XCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTUwLFwiY2FjaGVfcmVhZFwiOjMsXCJjYWNoZV93cml0ZVwiOjM3LjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1zb25uZXQtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIENsYXVkZSBtb2RlbCBmb3IgY29kaW5nLCBhbmFseXNpcywgYWdlbnQgd29ya2Zsb3dzLCBhbmQgY29zdCBjb250cm9sXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1zb25uZXRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDctMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozLFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4zLFwiY2FjaGVfd3JpdGVcIjozLjc1fX19fSxcIm9wZW5haVwiOntcIm1vZGVsc1wiOntcImdwdC01LWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LWNvZGV4XCIsXCJuYW1lXCI6XCJHUFQtNS1Db2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMTVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0xNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS41LXByb1wiOntcImlkXCI6XCJncHQtNS41LXByb1wiLFwibmFtZVwiOlwiR1BULTUuNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXN0LWFjY3VyYWN5IEdQVC01LjUgdGllciBmb3Igc2xvd2VyLCBwcmVjaXNpb24taGVhdnkgcmVhc29uaW5nIGFuZCBjb2RpbmdcIixcImZhbWlseVwiOlwiZ3B0LXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0xMi0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTIzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMjNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTgwLFwidGllcnNcIjpbe1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwfX19LFwibzNcIjp7XCJpZFwiOlwibzNcIixcIm5hbWVcIjpcIm8zXCIsXCJkZXNjcmlwdGlvblwiOlwiRGVsaWJlcmF0ZSBvLXNlcmllcyByZWFzb25lciBmb3IgaGFyZCBtYXRoLCBjb2RpbmcsIGFuZCBtdWx0aS1zdGVwIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcIm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJncHQtNS40XCI6e1wiaWRcIjpcImdwdC01LjRcIixcIm5hbWVcIjpcIkdQVC01LjRcIixcImRlc2NyaXB0aW9uXCI6XCJBZ2VudC1yZWFkeSBHUFQgZm9yIGNvZGluZyBhbmQgY29tcHV0ZXItdXNlIHdvcmtmbG93cyBhdCBhIGxvd2VyIGNvc3RcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MzAsXCJjYWNoZV9yZWFkXCI6MC41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41fX19LFwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCI6e1wiaWRcIjpcIm80LW1pbmktZGVlcC1yZXNlYXJjaFwiLFwibmFtZVwiOlwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVzZWFyY2ggbW9kZWwgZm9yIGxvbmctaG9yaXpvbiBpbnZlc3RpZ2F0aW9uLCBzeW50aGVzaXMsIGFuZCBhbmFseXRpY2FsIHJlcG9ydHNcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA2LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJncHQtNS40LXByb1wiOntcImlkXCI6XCJncHQtNS40LXByb1wiLFwibmFtZVwiOlwiR1BULTUuNCBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJNb3JlIGV4YWN0IEdQVC01LjQgdGllciBmb3IgZGVtYW5kaW5nIHByb2Zlc3Npb25hbCByZWFzb25pbmcgYW5kIGFnZW50IHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTgwLFwidGllcnNcIjpbe1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwfX19LFwiZ3B0LTQuMS1taW5pXCI6e1wiaWRcIjpcImdwdC00LjEtbWluaVwiLFwibmFtZVwiOlwiR1BULTQuMSBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQWZmb3JkYWJsZSBHUFQtNC4xIGxhbmUgZm9yIGZhc3QgY29kaW5nIGhlbHAgYW5kIHN0cnVjdHVyZWQgZXh0cmFjdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDRcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE0XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjQsXCJvdXRwdXRcIjoxLjYsXCJjYWNoZV9yZWFkXCI6MC4xfX0sXCJncHQtcmVhbHRpbWUtMi4xXCI6e1wiaWRcIjpcImdwdC1yZWFsdGltZS0yLjFcIixcIm5hbWVcIjpcIkdQVC1SZWFsdGltZS0yLjFcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFsdGltZSBzcGVlY2gtdG8tc3BlZWNoIG1vZGVsIHdpdGggY29uZmlndXJhYmxlIHJlYXNvbmluZywgdG9vbCB1c2UsIGFuZCByb2J1c3Qgdm9pY2UtYWdlbnQgYmVoYXZpb3JcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiYXVkaW9cIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiYXVkaW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJpbnB1dFwiOjk2MDAwLFwib3V0cHV0XCI6MzIwMDB9LFwiY29zdFwiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjI0LFwiY2FjaGVfcmVhZFwiOjAuNCxcImlucHV0X2F1ZGlvXCI6MzIsXCJvdXRwdXRfYXVkaW9cIjo2NH19LFwiZ3B0LTUuMy1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4zLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4zIENoYXQgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVCBtb2RlbCBmb3IgY29udmVyc2F0aW9uYWwgYXNzaXN0YW5jZSwgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcIm8xXCI6e1wiaWRcIjpcIm8xXCIsXCJuYW1lXCI6XCJvMVwiLFwiZGVzY3JpcHRpb25cIjpcIk8tc2VyaWVzIHJlYXNvbmluZyBtb2RlbCBmb3IgaGFyZCBhbmFseXNpcywgbWF0aCwgY29kaW5nLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwib1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTEyLTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjYwLFwiY2FjaGVfcmVhZFwiOjcuNX19LFwiZ3B0LTUtbWluaVwiOntcImlkXCI6XCJncHQtNS1taW5pXCIsXCJuYW1lXCI6XCJHUFQtNSBNaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiU21hbGwgR1BULTUgZm9yIHJlc3BvbnNpdmUgYWdlbnRzLCBjb2RpbmcgaGVscCwgYW5kIGV2ZXJ5ZGF5IGF1dG9tYXRpb25cIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MC4yNSxcIm91dHB1dFwiOjIsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdwdC01LjMtY29kZXgtc3BhcmtcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleC1zcGFya1wiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleCBTcGFya1wiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleC1zcGFya1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJpbnB1dFwiOjEwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwiZ3B0LTUuNC1taW5pXCI6e1wiaWRcIjpcImdwdC01LjQtbWluaVwiLFwibmFtZVwiOlwiR1BULTUuNCBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiU3Ryb25nIHNtYWxsIEdQVCBmb3IgY29kaW5nIHN1YmFnZW50cywgcXVpY2sgdG9vbCB1c2UsIGFuZCBoaWdoLXZvbHVtZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxLjUsXCJvdXRwdXRcIjo5LFwiY2FjaGVfcmVhZFwiOjAuMTV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjc1LFwib3V0cHV0XCI6NC41LFwiY2FjaGVfcmVhZFwiOjAuMDc1fX0sXCJvMS1wcm9cIjp7XCJpZFwiOlwibzEtcHJvXCIsXCJuYW1lXCI6XCJvMS1wcm9cIixcImRlc2NyaXB0aW9uXCI6XCJPLXNlcmllcyByZWFzb25pbmcgbW9kZWwgZm9yIGhhcmQgYW5hbHlzaXMsIG1hdGgsIGNvZGluZywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcIm8tcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTAzLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDMtMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNTAsXCJvdXRwdXRcIjo2MDB9fSxcImdwdC01LjYtdGVycmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi10ZXJyYVwiLFwibmFtZVwiOlwiR1BULTUuNiBUZXJyYVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIEdQVC01LjYgbW9kZWwgZm9yIGNhcGFibGUsIGNvc3QtZWZmaWNpZW50IGV2ZXJ5ZGF5IHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LXRlcnJhXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19LFwicHJvXCI6e1wicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wicmVhc29uaW5nXCI6e1wibW9kZVwiOlwicHJvXCJ9fX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwiY2FjaGVfd3JpdGVcIjozLjEyNSxcInRpZXJzXCI6W3tcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX19LFwiZ3B0LWltYWdlLTEtbWluaVwiOntcImlkXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC01LjMtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC01LjEtY29kZXgtbWF4XCI6e1wiaWRcIjpcImdwdC01LjEtY29kZXgtbWF4XCIsXCJuYW1lXCI6XCJHUFQtNS4xIENvZGV4IE1heFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS4xLWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LjEtY2hhdC1sYXRlc3RcIixcIm5hbWVcIjpcIkdQVC01LjEgQ2hhdFwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BULTUuMSBmb3IgcG9saXNoZWQgYXNzaXN0YW50cywgd3JpdGluZywgYW5kIHByb2R1Y3QgY29udmVyc2F0aW9uc1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwibzMtbWluaVwiOntcImlkXCI6XCJvMy1taW5pXCIsXCJuYW1lXCI6XCJvMy1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiU21hbGxlciBvLXNlcmllcyByZWFzb25lciBmb3IgZWNvbm9taWNhbCBjb2RpbmcsIG1hdGgsIGFuZCBwbGFubmluZyB0YXNrc1wiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDEtMjlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMSxcIm91dHB1dFwiOjQuNCxcImNhY2hlX3JlYWRcIjowLjU1fX0sXCJncHQtNS4xLWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LjEtY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LjEgQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2RleCBHUFQgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIGNvZGUgcmV2aWV3LCBhbmQgcHJhY3RpY2FsIHNvZnR3YXJlIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNFwiOntcImlkXCI6XCJncHQtNFwiLFwibmFtZVwiOlwiR1BULTRcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTExXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjMtMTEtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNC0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkyLFwib3V0cHV0XCI6ODE5Mn0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjYwfX0sXCJncHQtNS40LW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTUuNC1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNS40IG5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJDaGVhcGVzdCBHUFQtNS40IGxhbmUgZm9yIHNpbXBsZSByb3V0aW5nLCBleHRyYWN0aW9uLCBhbmQgYnVsayBhdXRvbWF0aW9uXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjIsXCJvdXRwdXRcIjoxLjI1LFwiY2FjaGVfcmVhZFwiOjAuMDJ9fSxcImdwdC00LjFcIjp7XCJpZFwiOlwiZ3B0LTQuMVwiLFwibmFtZVwiOlwiR1BULTQuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkxvbmctbGl2ZWQgR1BUIHdvcmtob3JzZSBmb3IgY29kaW5nLCBpbnN0cnVjdGlvbiBmb2xsb3dpbmcsIGFuZCBwcm9kdWN0aW9uIGFwcHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0NzU3NixcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo4LFwiY2FjaGVfcmVhZFwiOjAuNX19LFwiZ3B0LTRvLTIwMjQtMDUtMTNcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMDUtMTNcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0wNS0xMylcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA1LTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjo0MDk2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoxNX19LFwiZ3B0LTRvLTIwMjQtMTEtMjBcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMTEtMjBcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0xMS0yMClcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTExLTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtMy41LXR1cmJvXCI6e1wiaWRcIjpcImdwdC0zLjUtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC0zLjUtdHVyYm9cIixcImRlc2NyaXB0aW9uXCI6XCJDb21wYWN0IEdQVCBtb2RlbCBmb3IgbG93LWxhdGVuY3kgYXNzaXN0YW5jZSBhbmQgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjEtMDktMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMy0wMy0wMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIzLTExLTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjE2Mzg1LFwib3V0cHV0XCI6NDA5Nn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MH19LFwiZ3B0LTQuMS1uYW5vXCI6e1wiaWRcIjpcImdwdC00LjEtbmFub1wiLFwibmFtZVwiOlwiR1BULTQuMSBuYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiVGlueSBHUFQtNC4xIG9wdGlvbiBmb3IgY2xhc3NpZmljYXRpb24sIHJvdXRpbmcsIGFuZCB2ZXJ5IGhpZ2gtdm9sdW1lIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdwdC1pbWFnZS0xLjVcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTEuNVwiLFwibmFtZVwiOlwiZ3B0LWltYWdlLTEuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNS4yLWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LjItY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LjIgQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2RlLXNwZWNpYWxpc3QgR1BUIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgbG9uZy1ydW5uaW5nIHNvZnR3YXJlIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJ0ZXh0LWVtYmVkZGluZy0zLWxhcmdlXCI6e1wiaWRcIjpcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIixcIm5hbWVcIjpcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwidGV4dC1lbWJlZGRpbmdcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkxLFwib3V0cHV0XCI6MzA3Mn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEzLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUuMS1jb2RleC1taW5pXCI6e1wiaWRcIjpcImdwdC01LjEtY29kZXgtbWluaVwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleCBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJncHQtNS4yLWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LjItY2hhdC1sYXRlc3RcIixcIm5hbWVcIjpcIkdQVC01LjIgQ2hhdFwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BUIG1vZGVsIGZvciBjb252ZXJzYXRpb25hbCBhc3Npc3RhbmNlLCB3cml0aW5nLCBhbmQgdG9vbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC01XCI6e1wiaWRcIjpcImdwdC01XCIsXCJuYW1lXCI6XCJHUFQtNVwiLFwiZGVzY3JpcHRpb25cIjpcIk9yaWdpbmFsIEdQVC01IHdvcmtob3JzZSBmb3IgcmVhc29uaW5nLCBjb2RpbmcsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUgQ2hhdCAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BUIG1vZGVsIGZvciBjb252ZXJzYXRpb25hbCBhc3Npc3RhbmNlLCB3cml0aW5nLCBhbmQgdG9vbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcInRleHQtZW1iZWRkaW5nLWFkYS0wMDJcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjItMTJcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMi0xMi0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIyLTEyLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjB9fSxcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wMS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTAxLTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTEsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMDIsXCJvdXRwdXRcIjowfX0sXCJncHQtNG8tbWluaVwiOntcImlkXCI6XCJncHQtNG8tbWluaVwiLFwibmFtZVwiOlwiR1BULTRvIG1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTbWFsbCBvbW5pIEdQVCBmb3IgY2hlYXAgbXVsdGltb2RhbCBhc3Npc3RhbmNlIGFuZCBwcm9kdWN0aW9uLXNjYWxlIHRyYWZmaWNcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDctMThcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNy0xOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjE1LFwib3V0cHV0XCI6MC42LFwiY2FjaGVfcmVhZFwiOjAuMDc1fX0sXCJncHQtNS4xXCI6e1wiaWRcIjpcImdwdC01LjFcIixcIm5hbWVcIjpcIkdQVC01LjFcIixcImRlc2NyaXB0aW9uXCI6XCJTaGFycGVyIEdQVC01IGdlbmVyYXRpb24gZm9yIGNvZGluZywgcHJvZHVjdCB3b3JrLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS42XCI6e1wiaWRcIjpcImdwdC01LjZcIixcIm5hbWVcIjpcIkdQVC01LjZcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtc29sXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19fSxcIm8zLWRlZXAtcmVzZWFyY2hcIjp7XCJpZFwiOlwibzMtZGVlcC1yZXNlYXJjaFwiLFwibmFtZVwiOlwibzMtZGVlcC1yZXNlYXJjaFwiLFwiZGVzY3JpcHRpb25cIjpcIlJlc2VhcmNoIG1vZGVsIGZvciBsb25nLWhvcml6b24gaW52ZXN0aWdhdGlvbiwgc3ludGhlc2lzLCBhbmQgYW5hbHl0aWNhbCByZXBvcnRzXCIsXCJmYW1pbHlcIjpcIm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA2LTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDYtMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjQwLFwiY2FjaGVfcmVhZFwiOjIuNX19LFwiZ3B0LTRvLTIwMjQtMDgtMDZcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMDgtMDZcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0wOC0wNilcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wOC0wNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA4LTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNS1uYW5vXCI6e1wiaWRcIjpcImdwdC01LW5hbm9cIixcIm5hbWVcIjpcIkdQVC01IE5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJUaW55IEdQVC01IGxhbmUgZm9yIHJvdXRpbmcsIGV4dHJhY3Rpb24sIGNsYXNzaWZpY2F0aW9uLCBhbmQgYnVsayBqb2JzXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMDUsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMDV9fSxcIm80LW1pbmlcIjp7XCJpZFwiOlwibzQtbWluaVwiLFwibmFtZVwiOlwibzQtbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3Qgby1zZXJpZXMgbW9kZWwgZm9yIGNvbXBhY3QgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMSxcIm91dHB1dFwiOjQuNCxcImNhY2hlX3JlYWRcIjowLjI3NX19LFwiZ3B0LTQtdHVyYm9cIjp7XCJpZFwiOlwiZ3B0LTQtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC00IFR1cmJvXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29tcGFjdCBHUFQgbW9kZWwgZm9yIGxvdy1sYXRlbmN5IGFzc2lzdGFuY2UgYW5kIGhpZ2gtdm9sdW1lIHdvcmtsb2Fkc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0xMlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTExLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDQtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjQwOTZ9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjozMH19LFwiZ3B0LTUuMlwiOntcImlkXCI6XCJncHQtNS4yXCIsXCJuYW1lXCI6XCJHUFQtNS4yXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVsaWFibGUgR1BUIGdlbmVyYXRpb24gZm9yIGJyb2FkIGNvZGluZywgd3JpdGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgcHJvZHVjdCB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNG9cIjp7XCJpZFwiOlwiZ3B0LTRvXCIsXCJuYW1lXCI6XCJHUFQtNG9cIixcImRlc2NyaXB0aW9uXCI6XCJPbW5pLWVyYSBHUFQgZm9yIG11bHRpbW9kYWwgY2hhdCwgcHJhY3RpY2FsIGNvZGluZywgYW5kIGdlbmVyYWwgYXNzaXN0YW50c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDUtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wOC0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNS42LWx1bmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi1sdW5hXCIsXCJuYW1lXCI6XCJHUFQtNS42IEx1bmFcIixcImRlc2NyaXB0aW9uXCI6XCJDb3N0LWVmZmljaWVudCBHUFQtNS42IG1vZGVsIGZvciBmYXN0LCBoaWdoLXZvbHVtZSB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ3B0LWx1bmFcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjYsXCJjYWNoZV9yZWFkXCI6MC4xLFwiY2FjaGVfd3JpdGVcIjoxLjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo5LFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX19LFwiY2hhdGdwdC1pbWFnZS1sYXRlc3RcIjp7XCJpZFwiOlwiY2hhdGdwdC1pbWFnZS1sYXRlc3RcIixcIm5hbWVcIjpcImNoYXRncHQtaW1hZ2UtbGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC1pbWFnZS0xXCI6e1wiaWRcIjpcImdwdC1pbWFnZS0xXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMVwiLFwiZGVzY3JpcHRpb25cIjpcIk9wZW5BSSBpbWFnZSBtb2RlbCBmb3IgcHJvZHVjdGlvbiBnZW5lcmF0aW9uLCBlZGl0cywgYW5kIGJyYW5kLXNhZmUgdmlzdWFsIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0yNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNS1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUtcHJvXCIsXCJuYW1lXCI6XCJHUFQtNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUgdGllciBmb3IgdG91Z2ggYW5hbHlzaXMsIGNvZGluZyByZXZpZXdzLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwiZ3B0LXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEwLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTAtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MjcyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6MTIwfX0sXCJncHQtNS4yLXByb1wiOntcImlkXCI6XCJncHQtNS4yLXByb1wiLFwibmFtZVwiOlwiR1BULTUuMiBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUuMiB2YXJpYW50IGZvciB0b3VnaGVyIHJlYXNvbmluZyBhbmQgcmV2aWV3IHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIxLFwib3V0cHV0XCI6MTY4fX0sXCJncHQtNS42LXNvbFwiOntcImlkXCI6XCJncHQtNS42LXNvbFwiLFwibmFtZVwiOlwiR1BULTUuNiBTb2xcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtc29sXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19fSxcIm8zLXByb1wiOntcImlkXCI6XCJvMy1wcm9cIixcIm5hbWVcIjpcIm8zLXByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2gtZWZmb3J0IG8zIHRpZXIgZm9yIGRpZmZpY3VsdCB0ZWNobmljYWwgcmVhc29uaW5nIGFuZCBjYXJlZnVsIGFuc3dlcnNcIixcImZhbWlseVwiOlwiby1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIwLFwib3V0cHV0XCI6ODB9fSxcImdwdC01LjVcIjp7XCJpZFwiOlwiZ3B0LTUuNVwiLFwibmFtZVwiOlwiR1BULTUuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkRlZmF1bHQgZnJvbnRpZXIgR1BUIGZvciBjb2RpbmcsIGNvbXB1dGVyIHVzZSwgcmVzZWFyY2gsIGFuZCBrbm93bGVkZ2Ugd29ya1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0xMi0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTIzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMjNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEyLjUsXCJvdXRwdXRcIjo3NSxcImNhY2hlX3JlYWRcIjoxLjI1fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxfX19LFwiZ3B0LWltYWdlLTJcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTJcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0yXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIxXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjEuMjV9fX19LFwieGFpXCI6e1wibW9kZWxzXCI6e1wiZ3Jvay1pbWFnaW5lLXZpZGVvXCI6e1wiaWRcIjpcImdyb2staW1hZ2luZS12aWRlb1wiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIFZpZGVvXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDEtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ2aWRlb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMjQsXCJvdXRwdXRcIjowfX0sXCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiOntcImlkXCI6XCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIEltYWdlIFF1YWxpdHlcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIixcInBkZlwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgwMDAsXCJvdXRwdXRcIjowfX0sXCJncm9rLTQuMjAtMDMwOS1yZWFzb25pbmdcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLTAzMDktcmVhc29uaW5nXCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgKFJlYXNvbmluZylcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFzb25pbmcgR3JvayBmb3IgZG9jdW1lbnQtaGVhdnkgYW5hbHlzaXMgYW5kIGxvbmctaG9yaXpvbiB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2stYnVpbGQtMC4xXCI6e1wiaWRcIjpcImdyb2stYnVpbGQtMC4xXCIsXCJuYW1lXCI6XCJHcm9rIEJ1aWxkIDAuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR3JvayBjb2RpbmcgbW9kZWwgdHVuZWQgZm9yIGFnZW50aWMgZW5naW5lZXJpbmcgYW5kIGl0ZXJhdGl2ZSBlZGl0c1wiLFwiZmFtaWx5XCI6XCJncm9rLWJ1aWxkXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI1NjAwMCxcIm91dHB1dFwiOjI1NjAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2stNC4zXCI6e1wiaWRcIjpcImdyb2stNC4zXCIsXCJuYW1lXCI6XCJHcm9rIDQuM1wiLFwiZGVzY3JpcHRpb25cIjpcInhBSSdzIEdyb2sgZm9yIGNoYXQsIGNvZGluZywgYWdlbnRpYyB0b29scywgYW5kIGxvd2VyIGhhbGx1Y2luYXRpb24gcmlza1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay00LjIwLTAzMDktbm9uLXJlYXNvbmluZ1wiOntcImlkXCI6XCJncm9rLTQuMjAtMDMwOS1ub24tcmVhc29uaW5nXCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgKE5vbi1SZWFzb25pbmcpXCIsXCJkZXNjcmlwdGlvblwiOlwiR3JvayBtb2RlbCBmb3IgYWdlbnRpYyB0b29sIHVzZSwgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsaXZlIGFzc2lzdGFuY2VcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MzAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJncm9rLTQuNVwiOntcImlkXCI6XCJncm9rLTQuNVwiLFwibmFtZVwiOlwiR3JvayA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJ4QUkncyBsYXRlc3QgR3JvayBmb3IgY2hhdCwgY29kaW5nLCBhZ2VudGljIHRvb2xzLCBhbmQgbG93ZXIgaGFsbHVjaW5hdGlvbiByaXNrXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo1MDAwMDAsXCJvdXRwdXRcIjo1MDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjYsXCJjYWNoZV9yZWFkXCI6MC41LFwidGllcnNcIjpbe1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjoxfX19LFwiZ3Jvay1pbWFnaW5lLWltYWdlXCI6e1wiaWRcIjpcImdyb2staW1hZ2luZS1pbWFnZVwiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIEltYWdlXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDEtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcImltYWdlXCIsXCJwZGZcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MDAwLFwib3V0cHV0XCI6MH19LFwiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIixcIm5hbWVcIjpcIkdyb2sgNC4yMCBNdWx0aS1BZ2VudFwiLFwiZGVzY3JpcHRpb25cIjpcIkdyb2sgbW9kZWwgZm9yIGFnZW50aWMgdG9vbCB1c2UsIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbGl2ZSBhc3Npc3RhbmNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fX19fSIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCBzbmFwc2hvdCBmcm9tICcuL2NhdGFsb2ctc25hcHNob3QuanNvbicgd2l0aCB7IHR5cGU6ICdqc29uJyB9XG5cbmNvbnN0IENBVEFMT0dfVVJMID0gJ2h0dHBzOi8vbW9kZWxzLmRldi9hcGkuanNvbidcbmNvbnN0IFNVUFBPUlRFRCA9IFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ11cbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5mdW5jdGlvbiBzdWJzZXQoZGF0YSkge1xuICBjb25zdCBvdXQgPSB7fVxuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIFNVUFBPUlRFRCkge1xuICAgIGlmIChkYXRhW3Byb3ZpZGVyXT8ubW9kZWxzKSBvdXRbcHJvdmlkZXJdID0geyBtb2RlbHM6IGRhdGFbcHJvdmlkZXJdLm1vZGVscyB9XG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ2FjaGUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWZyZXNoQ2F0YWxvZyh7IGZldGNoZXIgPSBmZXRjaCB9ID0ge30pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaGVyKENBVEFMT0dfVVJMKVxuICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYGNhdGFsb2cgZmV0Y2ggZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICBjb25zdCBwcm92aWRlcnMgPSBzdWJzZXQoYXdhaXQgcmVzcG9uc2UuanNvbigpKVxuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGNhY2hlRmlsZSgpLCBKU09OLnN0cmluZ2lmeSh7IGF0OiBEYXRlLm5vdygpLCBwcm92aWRlcnMgfSkpXG4gIHJldHVybiBwcm92aWRlcnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRDYXRhbG9nKHsgZmV0Y2hlciA9IGZldGNoIH0gPSB7fSkge1xuICBjb25zdCBjYWNoZWQgPSBhd2FpdCByZWFkQ2FjaGUoKVxuICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCBUVEwpIHJldHVybiBjYWNoZWQucHJvdmlkZXJzXG4gIHJlZnJlc2hDYXRhbG9nKHsgZmV0Y2hlciB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgcmV0dXJuIGNhY2hlZD8ucHJvdmlkZXJzIHx8IHNuYXBzaG90XG59XG5cbmNvbnN0IHRleHRNb2RlbCA9IChtKSA9PlxuICBtLnRvb2xfY2FsbCA9PT0gdHJ1ZSAmJlxuICAoIW0ubW9kYWxpdGllcyB8fCAobS5tb2RhbGl0aWVzLmlucHV0Py5pbmNsdWRlcygndGV4dCcpICYmIG0ubW9kYWxpdGllcy5vdXRwdXQ/LmluY2x1ZGVzKCd0ZXh0JykpKVxuXG5jb25zdCBkYXRlZER1cGxpY2F0ZSA9IChpZCkgPT4gLy1cXGR7OH0kLy50ZXN0KGlkKVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE1vZGVscyhwcm92aWRlcnMsIHByb3ZpZGVySWRzKSB7XG4gIGNvbnN0IG9yZGVyID0gU1VQUE9SVEVELmZpbHRlcigocCkgPT4gcHJvdmlkZXJJZHMuaW5jbHVkZXMocCkpXG4gIGNvbnN0IG1vZGVscyA9IFtdXG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2Ygb3JkZXIpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJvdmlkZXJzW3Byb3ZpZGVyXT8ubW9kZWxzIHx8IHt9KVxuICAgICAgLmZpbHRlcigoW2lkLCBtXSkgPT4gdGV4dE1vZGVsKG0pICYmICFkYXRlZER1cGxpY2F0ZShpZCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gU3RyaW5nKGJbMV0ucmVsZWFzZV9kYXRlIHx8ICcnKS5sb2NhbGVDb21wYXJlKFN0cmluZyhhWzFdLnJlbGVhc2VfZGF0ZSB8fCAnJykpKVxuICAgIGZvciAoY29uc3QgW2lkLCBtXSBvZiBlbnRyaWVzKSB7XG4gICAgICBtb2RlbHMucHVzaCh7XG4gICAgICAgIG5hbWU6IGAke3Byb3ZpZGVyfS8ke2lkfWAsXG4gICAgICAgIHByb3ZpZGVyLFxuICAgICAgICBkZXNjOiBtLmRlc2NyaXB0aW9uIHx8IG0ubmFtZSB8fCBpZCxcbiAgICAgICAgcHJpY2U6IG0uY29zdCAmJiBtLmNvc3QuaW5wdXQgIT0gbnVsbCA/IHsgaW46IG0uY29zdC5pbnB1dCwgb3V0OiBtLmNvc3Qub3V0cHV0IH0gOiBudWxsLFxuICAgICAgICBlZmZvcnQ6ICEhbS5yZWFzb25pbmcsXG4gICAgICAgIC8vIHRoZSBtZWFzdXJlZCBmaWxsIG51bWJlciBpcyBpbnB1dCB0b2tlbnMsIHNvIHByZWZlciB0aGUgaW5wdXQgbGltaXRcbiAgICAgICAgLy8gYXMgdGhlIGRlbm9taW5hdG9yIHdoZXJlIHRoZSBwcm92aWRlciBkaXN0aW5ndWlzaGVzIGl0XG4gICAgICAgIGNvbnRleHQ6IG0ubGltaXQ/LmlucHV0IHx8IG0ubGltaXQ/LmNvbnRleHQgfHwgbnVsbCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RlbHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkaG9jTW9kZWwobmFtZSwgcHJvdmlkZXJJZHMpIHtcbiAgY29uc3QgbWF0Y2ggPSBuYW1lLm1hdGNoKC9eKFthLXowLTktXSspXFwvKC4rKSQvKVxuICBpZiAoIW1hdGNoIHx8ICFwcm92aWRlcklkcy5pbmNsdWRlcyhtYXRjaFsxXSkpIHJldHVybiBudWxsXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICBwcm92aWRlcjogbWF0Y2hbMV0sXG4gICAgZGVzYzogJ25vdCBpbiBjYXRhbG9nJyxcbiAgICBwcmljZTogbnVsbCxcbiAgICBlZmZvcnQ6IGZhbHNlLFxuICAgIGNvbnRleHQ6IG51bGwsXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuLy8gdGhlIGJhY2tlbmQgaGlkZXMgbW9kZWxzIGZyb20gY2xpZW50cyBiZWxvdyBhIHZlcnNpb24gZmxvb3IsIHNvIHNlbmQgYVxuLy8gdmVyc2lvbiBjb21mb3J0YWJseSBhYm92ZSBpdFxuY29uc3QgTU9ERUxTX1VSTCA9ICdodHRwczovL2NoYXRncHQuY29tL2JhY2tlbmQtYXBpL2NvZGV4L21vZGVscz9jbGllbnRfdmVyc2lvbj0yLjAuMCdcbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29kZXgtbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwQ29kZXhNb2RlbHMoZW50cmllcykge1xuICByZXR1cm4gZW50cmllcy5tYXAoKG0pID0+ICh7XG4gICAgbmFtZTogYGNvZGV4LyR7bS5zbHVnfWAsXG4gICAgcHJvdmlkZXI6ICdjb2RleCcsXG4gICAgZGVzYzogYCR7bS5kZXNjcmlwdGlvbiB8fCBtLmxhYmVsIHx8IG0uc2x1Z30gXHUwMEI3IHZpYSBDaGF0R1BUIHBsYW5gLFxuICAgIHByaWNlOiBudWxsLFxuICAgIGVmZm9ydDogdHJ1ZSxcbiAgICBjb250ZXh0OiBtLmNvbnRleHRfd2luZG93IHx8IG51bGwsXG4gIH0pKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENvZGV4TW9kZWxzKGNyZWRlbnRpYWxzKSB7XG4gIGxldCBjYWNoZWQgPSBudWxsXG4gIHRyeSB7XG4gICAgY2FjaGVkID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge31cbiAgaWYgKGNhY2hlZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gbWFwQ29kZXhNb2RlbHMoY2FjaGVkLm1vZGVscylcbiAgaWYgKCFjcmVkZW50aWFscykgcmV0dXJuIG1hcENvZGV4TW9kZWxzKGNhY2hlZD8ubW9kZWxzIHx8IFtdKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChNT0RFTFNfVVJMLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtjcmVkZW50aWFscy5hcGlLZXl9YCxcbiAgICAgICAgLi4uY3JlZGVudGlhbHMuaGVhZGVycyxcbiAgICAgICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gICAgICB9LFxuICAgIH0pXG4gICAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhyZXNwb25zZS5zdGF0dXMpKVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBtb2RlbHMgPSAoZGF0YS5tb2RlbHMgfHwgW10pLm1hcCgobSkgPT4gKHtcbiAgICAgIHNsdWc6IG0uc2x1ZyxcbiAgICAgIGRlc2NyaXB0aW9uOiBtLmRlc2NyaXB0aW9uLFxuICAgICAgbGFiZWw6IG0ubGFiZWwgfHwgbS5kaXNwbGF5X25hbWUsXG4gICAgICBjb250ZXh0X3dpbmRvdzogbS5jb250ZXh0X3dpbmRvdyB8fCBtLm1heF9jb250ZXh0X3dpbmRvdyB8fCBudWxsLFxuICAgIH0pKVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2VtcHR5IG1vZGVsIGxpc3QnKVxuICAgIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoeyBhdDogRGF0ZS5ub3coKSwgbW9kZWxzIH0pKVxuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhtb2RlbHMpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhjYWNoZWQ/Lm1vZGVscyB8fCBbXSlcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNlcnZlciB9IGZyb20gJ25vZGU6aHR0cCdcbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUsIGNobW9kIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuY29uc3QgQ0xJRU5UX0lEID0gJ2FwcF9FTW9hbUVFWjczZjBDa1hhWHA3aHJhbm4nXG5jb25zdCBBVVRIX1VSTCA9ICdodHRwczovL2F1dGgub3BlbmFpLmNvbS9vYXV0aC9hdXRob3JpemUnXG5jb25zdCBUT0tFTl9VUkwgPSAnaHR0cHM6Ly9hdXRoLm9wZW5haS5jb20vb2F1dGgvdG9rZW4nXG5jb25zdCBSRURJUkVDVF9QT1JUID0gMTQ1NVxuY29uc3QgUkVESVJFQ1RfVVJJID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfS9hdXRoL2NhbGxiYWNrYFxuY29uc3QgU0NPUEUgPSAnb3BlbmlkIHByb2ZpbGUgZW1haWwgb2ZmbGluZV9hY2Nlc3MnXG5jb25zdCBSRUZSRVNIX1NLRVdfTVMgPSA1ICogNjAgKiAxMDAwXG5cbmZ1bmN0aW9uIGF1dGhGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnYXV0aC5qc29uJylcbn1cblxuZnVuY3Rpb24gYmFzZTY0dXJsKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC9cXCsvZywgJy0nKS5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC89KyQvLCAnJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUp3dENsYWltcyh0b2tlbikge1xuICB0cnkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB0b2tlbi5zcGxpdCgnLicpWzFdXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocGF5bG9hZCwgJ2Jhc2U2NHVybCcpLnRvU3RyaW5nKCd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHtcbiAgcmV0dXJuIGNsYWltc1snaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS9hdXRoJ10/LmNoYXRncHRfYWNjb3VudF9pZCB8fCBjbGFpbXMuY2hhdGdwdF9hY2NvdW50X2lkIHx8IG51bGxcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEF1dGgoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoYXV0aEZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQXV0aChhdXRoKSB7XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoYXV0aEZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoYXV0aCwgbnVsbCwgMikgKyAnXFxuJylcbiAgYXdhaXQgY2htb2QoYXV0aEZpbGUoKSwgMG82MDApXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRva2VuUmVxdWVzdChwYXJhbXMpIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChUT0tFTl9VUkwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9LFxuICAgIGJvZHk6IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpLFxuICB9KVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0b2tlbiByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9ICR7YXdhaXQgcmVzcG9uc2UudGV4dCgpfWApXG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKVxufVxuXG5mdW5jdGlvbiBzdG9yZVRva2VucyhhdXRoLCB0b2tlbnMpIHtcbiAgY29uc3QgY2xhaW1zID0gdG9rZW5zLmlkX3Rva2VuID8gZGVjb2RlSnd0Q2xhaW1zKHRva2Vucy5pZF90b2tlbikgOiB7fVxuICBhdXRoLm9wZW5haSA9IHtcbiAgICBhY2Nlc3NfdG9rZW46IHRva2Vucy5hY2Nlc3NfdG9rZW4sXG4gICAgcmVmcmVzaF90b2tlbjogdG9rZW5zLnJlZnJlc2hfdG9rZW4gfHwgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4sXG4gICAgaWRfdG9rZW46IHRva2Vucy5pZF90b2tlbiB8fCBhdXRoLm9wZW5haT8uaWRfdG9rZW4sXG4gICAgYWNjb3VudF9pZDogYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHx8IGF1dGgub3BlbmFpPy5hY2NvdW50X2lkIHx8IG51bGwsXG4gICAgZW1haWw6IGNsYWltcy5lbWFpbCB8fCBhdXRoLm9wZW5haT8uZW1haWwgfHwgbnVsbCxcbiAgICBleHBpcmVzX2F0OiBEYXRlLm5vdygpICsgKHRva2Vucy5leHBpcmVzX2luIHx8IDM2MDApICogMTAwMCxcbiAgfVxuICByZXR1cm4gYXV0aFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdE9wZW5BSSh7IG9wZW5Ccm93c2VyID0gdHJ1ZSwgdGltZW91dE1zID0gNSAqIDYwICogMTAwMCwgb25VcmwgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3QgdmVyaWZpZXIgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoNjQpKVxuICBjb25zdCBjaGFsbGVuZ2UgPSBiYXNlNjR1cmwoY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZlcmlmaWVyKS5kaWdlc3QoKSlcbiAgY29uc3Qgc3RhdGUgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoMjQpKVxuXG4gIGNvbnN0IHVybCA9IGAke0FVVEhfVVJMfT8ke25ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJyxcbiAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICByZWRpcmVjdF91cmk6IFJFRElSRUNUX1VSSSxcbiAgICBzY29wZTogU0NPUEUsXG4gICAgY29kZV9jaGFsbGVuZ2U6IGNoYWxsZW5nZSxcbiAgICBjb2RlX2NoYWxsZW5nZV9tZXRob2Q6ICdTMjU2JyxcbiAgICBzdGF0ZSxcbiAgICBwcm9tcHQ6ICdsb2dpbicsXG4gICAgaWRfdG9rZW5fYWRkX29yZ2FuaXphdGlvbnM6ICd0cnVlJyxcbiAgICBjb2RleF9jbGlfc2ltcGxpZmllZF9mbG93OiAndHJ1ZScsXG4gICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gIH0pLnRvU3RyaW5nKCl9YFxuXG4gIGNvbnN0IGNvZGUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gY3JlYXRlU2VydmVyKChyZXEsIHJlcykgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdFVybCA9IG5ldyBVUkwocmVxLnVybCwgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfWApXG4gICAgICBpZiAocmVxdWVzdFVybC5wYXRobmFtZSAhPT0gJy9hdXRoL2NhbGxiYWNrJykge1xuICAgICAgICByZXMud3JpdGVIZWFkKDQwNCkuZW5kKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBnb3RTdGF0ZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnc3RhdGUnKVxuICAgICAgY29uc3QgZ290Q29kZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnY29kZScpXG4gICAgICBjb25zdCBnb3RFcnJvciA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnZXJyb3InKVxuICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pXG4gICAgICByZXMuZW5kKFxuICAgICAgICBnb3RDb2RlICYmIGdvdFN0YXRlID09PSBzdGF0ZVxuICAgICAgICAgID8gJzxodG1sPjxib2R5IHN0eWxlPVwiZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IHBhZGRpbmc6IDJyZW1cIj5zaWduZWQgaW4gLSB5b3UgY2FuIHJldHVybiB0byBwaWNvPC9ib2R5PjwvaHRtbD4nXG4gICAgICAgICAgOiAnPGh0bWw+PGJvZHkgc3R5bGU9XCJmb250LWZhbWlseTogc2Fucy1zZXJpZjsgcGFkZGluZzogMnJlbVwiPnNpZ24taW4gZmFpbGVkIC0gcmV0dXJuIHRvIHBpY28gYW5kIHRyeSBhZ2FpbjwvYm9keT48L2h0bWw+JyxcbiAgICAgIClcbiAgICAgIGNsZWFudXAoKVxuICAgICAgaWYgKGdvdEVycm9yKSByZWplY3QobmV3IEVycm9yKGBhdXRob3JpemF0aW9uIGZhaWxlZDogJHtnb3RFcnJvcn1gKSlcbiAgICAgIGVsc2UgaWYgKCFnb3RDb2RlIHx8IGdvdFN0YXRlICE9PSBzdGF0ZSkgcmVqZWN0KG5ldyBFcnJvcignYXV0aG9yaXphdGlvbiBmYWlsZWQ6IG1pc3NpbmcgY29kZSBvciBzdGF0ZSBtaXNtYXRjaCcpKVxuICAgICAgZWxzZSByZXNvbHZlKGdvdENvZGUpXG4gICAgfSlcblxuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhbnVwKClcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoJ3NpZ24taW4gdGltZWQgb3V0JykpXG4gICAgfSwgdGltZW91dE1zKVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgIHNlcnZlci5jbG9zZSgpXG4gICAgfVxuXG4gICAgc2VydmVyLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGNsZWFudXAoKVxuICAgICAgcmVqZWN0KGVyci5jb2RlID09PSAnRUFERFJJTlVTRScgPyBuZXcgRXJyb3IoYHBvcnQgJHtSRURJUkVDVF9QT1JUfSBpcyBpbiB1c2UgKGlzIGFub3RoZXIgc2lnbi1pbiBvciBjb2RleCBydW5uaW5nPylgKSA6IGVycilcbiAgICB9KVxuICAgIHNlcnZlci5saXN0ZW4oUkVESVJFQ1RfUE9SVCwgJzEyNy4wLjAuMScsICgpID0+IHtcbiAgICAgIG9uVXJsKHVybClcbiAgICAgIGlmIChvcGVuQnJvd3NlcikgZXhlY0ZpbGUoJ29wZW4nLCBbdXJsXSwgKCkgPT4ge30pXG4gICAgfSlcbiAgfSlcblxuICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuICAgIGNvZGUsXG4gICAgcmVkaXJlY3RfdXJpOiBSRURJUkVDVF9VUkksXG4gICAgY2xpZW50X2lkOiBDTElFTlRfSUQsXG4gICAgY29kZV92ZXJpZmllcjogdmVyaWZpZXIsXG4gIH0pXG5cbiAgY29uc3QgYXV0aCA9IHN0b3JlVG9rZW5zKGF3YWl0IHJlYWRBdXRoKCksIHRva2VucylcbiAgYXdhaXQgd3JpdGVBdXRoKGF1dGgpXG4gIHJldHVybiB7IGVtYWlsOiBhdXRoLm9wZW5haS5lbWFpbCwgYWNjb3VudElkOiBhdXRoLm9wZW5haS5hY2NvdW50X2lkIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNyZWRlbnRpYWxzKCkge1xuICBjb25zdCBhdXRoID0gYXdhaXQgcmVhZEF1dGgoKVxuICBjb25zdCBzdG9yZWQgPSBhdXRoLm9wZW5haVxuICBpZiAoIXN0b3JlZD8uYWNjZXNzX3Rva2VuKSByZXR1cm4gbnVsbFxuXG4gIGlmIChEYXRlLm5vdygpID4gKHN0b3JlZC5leHBpcmVzX2F0IHx8IDApIC0gUkVGUkVTSF9TS0VXX01TKSB7XG4gICAgaWYgKCFzdG9yZWQucmVmcmVzaF90b2tlbikgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgcmVmcmVzaF90b2tlbjogc3RvcmVkLnJlZnJlc2hfdG9rZW4sXG4gICAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICAgIHNjb3BlOiAnb3BlbmlkIHByb2ZpbGUgZW1haWwnLFxuICAgIH0pXG4gICAgY29uc3QgcmVmcmVzaGVkID0gc3RvcmVUb2tlbnMoYXV0aCwgdG9rZW5zKVxuICAgIGF3YWl0IHdyaXRlQXV0aChyZWZyZXNoZWQpXG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzRnJvbShyZWZyZXNoZWQub3BlbmFpKVxuICB9XG4gIHJldHVybiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKVxufVxuXG5mdW5jdGlvbiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKSB7XG4gIHJldHVybiB7XG4gICAgYXBpS2V5OiBzdG9yZWQuYWNjZXNzX3Rva2VuLFxuICAgIGhlYWRlcnM6IHN0b3JlZC5hY2NvdW50X2lkID8geyAnY2hhdGdwdC1hY2NvdW50LWlkJzogc3RvcmVkLmFjY291bnRfaWQgfSA6IHt9LFxuICAgIGVtYWlsOiBzdG9yZWQuZW1haWwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNvbm5lY3RlZCgpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgcmV0dXJuICEhKGF1dGgub3BlbmFpPy5hY2Nlc3NfdG9rZW4gJiYgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuYWlTdGF0dXMoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIHJldHVybiB7XG4gICAgY29ubmVjdGVkOiAhIShhdXRoLm9wZW5haT8uYWNjZXNzX3Rva2VuICYmIGF1dGgub3BlbmFpPy5yZWZyZXNoX3Rva2VuKSxcbiAgICBlbWFpbDogYXV0aC5vcGVuYWk/LmVtYWlsIHx8IG51bGwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3RPcGVuQUkoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIGRlbGV0ZSBhdXRoLm9wZW5haVxuICBhd2FpdCB3cml0ZUF1dGgoYXV0aClcbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gY29uZmlnRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ2NvbmZpZy5qc29uJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb25maWcoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY29uZmlnRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VDb25maWcoYmFzZSwgcGF0Y2gpIHtcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5iYXNlIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGF0Y2gpKSB7XG4gICAgcmVzdWx0W2tleV0gPSB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyBtZXJnZUNvbmZpZyhiYXNlW2tleV0gJiYgdHlwZW9mIGJhc2Vba2V5XSA9PT0gJ29iamVjdCcgPyBiYXNlW2tleV0gOiB7fSwgdmFsdWUpXG4gICAgICA6IHZhbHVlXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVDb25maWcocGF0Y2gpIHtcbiAgY29uc3QgY29uZmlnID0gbWVyZ2VDb25maWcoYXdhaXQgcmVhZENvbmZpZygpLCBwYXRjaClcbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShjb25maWdGaWxlKCksIEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMikgKyAnXFxuJylcbiAgcmV0dXJuIGNvbmZpZ1xufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBnbG9iYWxBZ2VudHNGaWxlIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gcmVhZElmRXhpc3RzKHBhdGgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXhpc3RzU3luYyhwYXRoKSA/IHJlYWRGaWxlU3luYyhwYXRoLCAndXRmLTgnKSA6IG51bGxcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGV4dFN0b3BEaXIoY3dkKSB7XG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAnLmdpdCcpKSB8fCBkaXIgPT09IGhvbWUpIHJldHVybiBkaXJcbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcilcbiAgICBpZiAocGFyZW50ID09PSBkaXIpIHJldHVybiByZXNvbHZlKGN3ZClcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxufVxuXG5mdW5jdGlvbiBhbmNlc3RvckRpcnMoY3dkLCBzdG9wRGlyKSB7XG4gIGNvbnN0IGRpcnMgPSBbXVxuICBsZXQgZGlyID0gcmVzb2x2ZShjd2QpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgZGlycy51bnNoaWZ0KGRpcilcbiAgICBpZiAoZGlyID09PSBzdG9wRGlyKSBicmVha1xuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpcikgYnJlYWtcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxuICByZXR1cm4gZGlyc1xufVxuXG4vLyBBR0VOVFMubWQgaXMgY2Fub25pY2FsOyBDTEFVREUubWQgaXMgaG9ub3JlZCBwZXIgZGlyZWN0b3J5IG9ubHkgd2hlbiBub1xuLy8gQUdFTlRTLm1kIGV4aXN0cyB0aGVyZSwgc28gcmVwb3MgZG9jdW1lbnRlZCBmb3Igb3RoZXIgYWdlbnRzIHN0aWxsIHdvcmsuXG4vLyB0aGUgZmFsbGJhY2sgbmV2ZXIgYXBwbGllcyB0byB0aGUgZ2xvYmFsIGZpbGU6IHRoYXQgaXMgfi8ucGljby9BR0VOVFMubWRcbi8vIGFsb25lLCBhbmQgcGVyc29uYWwgZmlsZXMgbGlrZSB+Ly5jbGF1ZGUvQ0xBVURFLm1kIGFyZSBhbm90aGVyIHRvb2wnc1xuZnVuY3Rpb24gcmVhZERpckNvbnRleHQoZGlyKSB7XG4gIGNvbnN0IGFnZW50cyA9IGpvaW4oZGlyLCAnQUdFTlRTLm1kJylcbiAgY29uc3QgYWdlbnRzQ29udGVudCA9IHJlYWRJZkV4aXN0cyhhZ2VudHMpXG4gIGlmIChhZ2VudHNDb250ZW50KSByZXR1cm4geyBwYXRoOiBhZ2VudHMsIGNvbnRlbnQ6IGFnZW50c0NvbnRlbnQgfVxuICBjb25zdCBjbGF1ZGUgPSBqb2luKGRpciwgJ0NMQVVERS5tZCcpXG4gIGNvbnN0IGNsYXVkZUNvbnRlbnQgPSByZWFkSWZFeGlzdHMoY2xhdWRlKVxuICBpZiAoY2xhdWRlQ29udGVudCkgcmV0dXJuIHsgcGF0aDogY2xhdWRlLCBjb250ZW50OiBjbGF1ZGVDb250ZW50IH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTdGFydHVwQ29udGV4dChjd2QpIHtcbiAgY29uc3Qgc3RvcERpciA9IGNvbnRleHRTdG9wRGlyKGN3ZClcbiAgY29uc3QgZmlsZXMgPSBbXVxuICBjb25zdCBnbG9iYWxDb250ZW50ID0gcmVhZElmRXhpc3RzKGdsb2JhbEFnZW50c0ZpbGUoKSlcbiAgaWYgKGdsb2JhbENvbnRlbnQpIGZpbGVzLnB1c2goeyBwYXRoOiBnbG9iYWxBZ2VudHNGaWxlKCksIGNvbnRlbnQ6IGdsb2JhbENvbnRlbnQgfSlcbiAgZm9yIChjb25zdCBkaXIgb2YgYW5jZXN0b3JEaXJzKGN3ZCwgc3RvcERpcikpIHtcbiAgICBjb25zdCBlbnRyeSA9IHJlYWREaXJDb250ZXh0KGRpcilcbiAgICBpZiAoZW50cnkpIGZpbGVzLnB1c2goZW50cnkpXG4gIH1cbiAgcmV0dXJuIHsgZmlsZXMsIHN0b3BEaXIgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29udGV4dFRyYWNrZXIoeyBzdG9wRGlyLCBsb2FkZWQgfSkge1xuICByZXR1cm4ge1xuICAgIGxvYWRlZCxcbiAgICBjaGVjayhmaWxlUGF0aCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZGlybmFtZShyZXNvbHZlKGZpbGVQYXRoKSlcbiAgICAgIGlmICghdGFyZ2V0LnN0YXJ0c1dpdGgoc3RvcERpcikpIHJldHVybiBbXVxuICAgICAgY29uc3QgZnJlc2ggPSBbXVxuICAgICAgZm9yIChjb25zdCBkaXIgb2YgYW5jZXN0b3JEaXJzKHRhcmdldCwgc3RvcERpcikpIHtcbiAgICAgICAgaWYgKGxvYWRlZC5oYXMoam9pbihkaXIsICdBR0VOVFMubWQnKSkgfHwgbG9hZGVkLmhhcyhqb2luKGRpciwgJ0NMQVVERS5tZCcpKSkgY29udGludWVcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWFkRGlyQ29udGV4dChkaXIpXG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgIGxvYWRlZC5hZGQoZW50cnkucGF0aClcbiAgICAgICAgICBmcmVzaC5wdXNoKGVudHJ5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZnJlc2hcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGdsb2JhbFNraWxsc0RpciwgcHJvamVjdFNraWxsc0RpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHRleHQpIHtcbiAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eLS0tXFxuKFtcXHNcXFNdKj8pXFxuLS0tXFxuPy8pXG4gIGlmICghbWF0Y2gpIHJldHVybiB7IG1ldGE6IHt9LCBib2R5OiB0ZXh0IH1cbiAgY29uc3QgbWV0YSA9IHt9XG4gIGZvciAoY29uc3QgbGluZSBvZiBtYXRjaFsxXS5zcGxpdCgnXFxuJykpIHtcbiAgICBjb25zdCBzZXAgPSBsaW5lLmluZGV4T2YoJzonKVxuICAgIGlmIChzZXAgPT09IC0xKSBjb250aW51ZVxuICAgIG1ldGFbbGluZS5zbGljZSgwLCBzZXApLnRyaW0oKV0gPSBsaW5lLnNsaWNlKHNlcCArIDEpLnRyaW0oKVxuICB9XG4gIHJldHVybiB7IG1ldGEsIGJvZHk6IHRleHQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKSB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYW5EaXIoZGlyLCBzb3VyY2UpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3Qgc2tpbGxzID0gW11cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBuYW1lcykge1xuICAgIGlmICghZW50cnkuaXNEaXJlY3RvcnkoKSkgY29udGludWVcbiAgICBjb25zdCBmaWxlID0gam9pbihkaXIsIGVudHJ5Lm5hbWUsICdTS0lMTC5tZCcpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbWV0YSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShmaWxlLCAndXRmLTgnKSlcbiAgICAgIHNraWxscy5wdXNoKHtcbiAgICAgICAgbmFtZTogbWV0YS5uYW1lIHx8IGVudHJ5Lm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGZpbGUsXG4gICAgICB9KVxuICAgIH0gY2F0Y2gge31cbiAgfVxuICByZXR1cm4gc2tpbGxzXG59XG5cbmNvbnN0IEFTS19SVUxFID0gYEJlZm9yZSB3cml0aW5nIGFueXRoaW5nLCByZXNvbHZlIGFtYmlndWl0eTpcbi0gSWYgdGhlIHVzZXIgZGlkIG5vdCBzYXkgZ2xvYmFsIG9yIHByb2plY3QsIGFzayBleGFjdGx5IG9uZSBxdWVzdGlvbjogXCJnbG9iYWwgKGF2YWlsYWJsZSBldmVyeXdoZXJlKSBvciBqdXN0IHRoaXMgcHJvamVjdD9cIiBEbyBub3QgZ3Vlc3Mgc2lsZW50bHkuXG4tIElmIHRoZSBiZWhhdmlvciBvciBvdXRwdXQgaXMgdW5kZXJzcGVjaWZpZWQsIHN0YXRlIHRoZSBhc3N1bXB0aW9ucyB5b3UgYXJlIG1ha2luZyBpbiBvbmUgc2hvcnQgbGluZSBiZWZvcmUgcHJvY2VlZGluZywgc28gdGhlIHVzZXIgY2FuIGNvcnJlY3QgeW91LmBcblxuY29uc3QgTkVXX1RPT0xfU0tJTEwgPSBgQ3JlYXRlIGEgY3VzdG9tIHBpY28gdG9vbCBmcm9tIHRoZSB1c2VyJ3MgZGVzY3JpcHRpb24uXG5cbiR7QVNLX1JVTEV9XG5cbkEgcGljbyB0b29sIGlzIGFuIEVTIG1vZHVsZSB3aG9zZSBkZWZhdWx0IGV4cG9ydCBpcyBlaXRoZXIgYSB0b29sIG9iamVjdCBvciBhIGZhY3RvcnlcblxcYChjb250ZXh0KSA9PiB0b29sXFxgIHdoZXJlIGNvbnRleHQgaXMgXFxgeyBjd2QsIHJvb3QgfVxcYC4gVGhlIHRvb2wgb2JqZWN0IHNoYXBlOlxuXG5cXGBcXGBcXGBqc1xuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnd29yZF9jb3VudCcsXG4gIGRlc2NyaXB0aW9uOiAnQ291bnQgd29yZHMsIGxpbmVzLCBhbmQgY2hhcmFjdGVycyBpbiBhIGZpbGUnLFxuICBzY2hlbWE6IHtcbiAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnknIH0sXG4gICAgd29yZHM6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ2luY2x1ZGUgd29yZCBjb3VudCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gIH0sXG4gIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIHdvcmRzID0gdHJ1ZSB9KSA9PiB7XG4gICAgLy8gcmV0dXJuIGFueSBKU09OLXNlcmlhbGl6YWJsZSB2YWx1ZTsgdGhyb3cgYW4gRXJyb3IgdG8gcmVwb3J0IGZhaWx1cmVcbiAgICByZXR1cm4geyBwYXRoLCB3b3JkczogNDIgfVxuICB9LFxufVxuXFxgXFxgXFxgXG5cblNjaGVtYSBwcm9wZXJ0aWVzIHN1cHBvcnQ6IHR5cGUgKHN0cmluZywgbnVtYmVyLCBib29sZWFuLCBhcnJheSwgb2JqZWN0KSwgZGVzY3JpcHRpb24sXG5vcHRpb25hbCwgZW51bSAoc3RyaW5nIHZhbHVlcyksIGl0ZW1zIChmb3IgYXJyYXlzKSwgcHJvcGVydGllcyAoZm9yIG5lc3RlZCBvYmplY3RzKS5cblxuTG9jYXRpb25zOiBcXGAucGljby90b29scy88bmFtZT4uanNcXGAgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgcHJvamVjdCB0b29scyxcblxcYH4vLnBpY28vdG9vbHMvPG5hbWU+LmpzXFxgIGZvciB0b29scyBhdmFpbGFibGUgZXZlcnl3aGVyZS4gRGVmYXVsdCB0byB0aGUgcHJvamVjdCB1bmxlc3NcbnRoZSB1c2VyIGFza3MgZm9yIGEgZ2xvYmFsIHRvb2wuIE5vZGUgYnVpbHRpbnMgY2FuIGJlIGltcG9ydGVkOyBucG0gcGFja2FnZXMgY2Fubm90IGJlXG5hc3N1bWVkLiBUb29scyBhcmUgcmVzY2FubmVkIGV2ZXJ5IHR1cm4sIHNvIGEgbmV3IG9yIGVkaXRlZCB0b29sIGlzIHVzYWJsZSBvbiB0aGUgbmV4dFxubWVzc2FnZSB3aXRoIG5vIHJlc3RhcnQuXG5cblN0ZXBzOlxuMS4gRGVjaWRlIHRoZSB0b29sIG5hbWUgKHNuYWtlX2Nhc2UpLCBpbnB1dHMsIGFuZCBvdXRwdXQgc2hhcGUgZnJvbSB0aGUgdXNlcidzIHJlcXVlc3QuXG4yLiBXcml0ZSB0aGUgbW9kdWxlIHRvIHRoZSByaWdodCBsb2NhdGlvbiB3aXRoIHRoZSB3cml0ZSB0b29sLlxuMy4gU2FuaXR5LWNoZWNrIGl0IGxvYWRzOiBcXGBub2RlIC0taW5wdXQtdHlwZT1tb2R1bGUgLWUgXCJjb25zdCB0ID0gKGF3YWl0IGltcG9ydCgnZmlsZTovLzxhYnMgcGF0aD4nKSkuZGVmYXVsdDsgY29uc29sZS5sb2codC5uYW1lKVwiXFxgIChhZGp1c3QgaWYgdGhlIGV4cG9ydCBpcyBhIGZhY3RvcnkpLlxuNC4gVGVsbCB0aGUgdXNlciB0aGUgdG9vbCBpcyByZWFkeSBhbmQgd2lsbCBiZSBhdmFpbGFibGUgZnJvbSB0aGVpciBuZXh0IG1lc3NhZ2UuYFxuXG5jb25zdCBORVdfU0tJTExfU0tJTEwgPSBgQ3JlYXRlIGEgcGljbyBza2lsbCBmcm9tIHRoZSB1c2VyJ3MgZGVzY3JpcHRpb24uXG5cbiR7QVNLX1JVTEV9XG5cbkEgc2tpbGwgaXMgYSBtYXJrZG93biBmaWxlIGF0IFxcYC5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGAgKHByb2plY3QpIG9yXG5cXGB+Ly5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGAgKGdsb2JhbCkgd2l0aCBmcm9udG1hdHRlciBhbmQgYW4gaW5zdHJ1Y3Rpb24gYm9keTpcblxuXFxgXFxgXFxgXG4tLS1cbm5hbWU6IHJlbGVhc2Utbm90ZXNcbmRlc2NyaXB0aW9uOiBkcmFmdCByZWxlYXNlIG5vdGVzIGZyb20gY29tbWl0cyBzaW5jZSB0aGUgbGFzdCB0YWdcbi0tLVxuSW5zdHJ1Y3Rpb25zIHRoZSBhZ2VudCBmb2xsb3dzIHdoZW4gdGhpcyBza2lsbCBpcyBsb2FkZWQuIEJlIGltcGVyYXRpdmUgYW5kIHNwZWNpZmljLlxuXFxgXFxgXFxgXG5cblRoZSBkZXNjcmlwdGlvbiBtYXR0ZXJzIG1vc3Q6IGl0IGlzIGxpc3RlZCBpbiB0aGUgYWdlbnQncyBzeXN0ZW0gcHJvbXB0LCBhbmQgdGhlIGFnZW50XG5kZWNpZGVzIGZyb20gaXQgd2hlbiB0byBsb2FkIHRoZSBza2lsbCBvbiBpdHMgb3duLiBXcml0ZSBpdCBhcyBhIHRyaWdnZXIgY29uZGl0aW9uXG4oXCJ3aGVuIHRoZSB1c2VyIGFza3MgZm9yIFhcIiksIG5vdCBtYXJrZXRpbmcuIFRoZSBib2R5IGlzIG9ubHkgbG9hZGVkIG9uIGludm9jYXRpb24sIHNvXG5pdCBjYW4gYmUgbG9uZyBhbmQgZGV0YWlsZWQuIFN1cHBvcnRpbmcgZmlsZXMgbWF5IHNpdCBuZXh0IHRvIFNLSUxMLm1kIGluIHRoZSBzYW1lXG5kaXJlY3RvcnkgYW5kIGJlIHJlZmVyZW5jZWQgYnkgcmVsYXRpdmUgcGF0aC5cblxuU2tpbGxzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXcgc2tpbGwgaXMgdXNhYmxlIGZyb20gdGhlIG5leHQgbWVzc2FnZS5gXG5cbmNvbnN0IE5FV19DT01NQU5EX1NLSUxMID0gYENyZWF0ZSBhIHBpY28gY29tbWFuZCBmcm9tIHRoZSB1c2VyJ3MgZGVzY3JpcHRpb24uXG5cbiR7QVNLX1JVTEV9XG5cbkEgY29tbWFuZCBpcyBhIHByb21wdCB0ZW1wbGF0ZSB0aGUgVVNFUiBpbnZva2VzIGFzIFxcYC88bmFtZT4gW2FyZ3NdXFxgLiBUaGUgYWdlbnQgbmV2ZXJcbnNlZXMgY29tbWFuZHMgdW50aWwgb25lIGlzIHJ1biwgc28gdXNlIGEgY29tbWFuZCBmb3IgdXNlci10cmlnZ2VyZWQgbWFjcm9zIGFuZCBhIHNraWxsXG5mb3IgY2FwYWJpbGl0aWVzIHRoZSBhZ2VudCBzaG91bGQgcmVhY2ggZm9yIG9uIGl0cyBvd24uXG5cbkl0IGlzIGEgbWFya2Rvd24gZmlsZSBhdCBcXGAucGljby9jb21tYW5kcy88bmFtZT4ubWRcXGAgKHByb2plY3QpIG9yXG5cXGB+Ly5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCAoZ2xvYmFsKSwgb3B0aW9uYWxseSB3aXRoIGEgZGVzY3JpcHRpb24gaW4gZnJvbnRtYXR0ZXI6XG5cblxcYFxcYFxcYFxuLS0tXG5kZXNjcmlwdGlvbjogcmV2aWV3IGEgZmlsZSBmb3Igc2VjdXJpdHkgcHJvYmxlbXNcbi0tLVxuUmV2aWV3ICRBUkdVTUVOVFMgZm9yIHNlY3VyaXR5IHByb2JsZW1zLiBGb2N1cyBvbiBpbnB1dCB2YWxpZGF0aW9uIGFuZCBzZWNyZXRzLlxuXFxgXFxgXFxgXG5cblxcYCRBUkdVTUVOVFNcXGAgaXMgcmVwbGFjZWQgd2l0aCB3aGF0ZXZlciBmb2xsb3dzIHRoZSBjb21tYW5kOyB3aXRob3V0IHRoZSBwbGFjZWhvbGRlcixcbmFyZ3VtZW50cyBhcmUgYXBwZW5kZWQgYWZ0ZXIgdGhlIGJvZHkuIENvbW1hbmRzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXdcbmNvbW1hbmQgYXBwZWFycyBpbiB0aGUgc2xhc2ggbWVudSBmcm9tIHRoZSBuZXh0IG1lc3NhZ2UuYFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2tpbGxJbmRleChyb290KSB7XG4gIGNvbnN0IGJ1aWx0aW4gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ25ldy10b29sJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnY3JlYXRlIGEgY3VzdG9tIHBpY28gdG9vbCBmcm9tIGEgZGVzY3JpcHRpb24gb2Ygd2hhdCBpdCBzaG91bGQgZG8nLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfVE9PTF9TS0lMTCxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICduZXctc2tpbGwnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBwaWNvIHNraWxsIHRoYXQgdGVhY2hlcyB0aGUgYWdlbnQgYSByZXVzYWJsZSBjYXBhYmlsaXR5JyxcbiAgICAgIHNvdXJjZTogJ2J1aWx0aW4nLFxuICAgICAgYm9keTogTkVXX1NLSUxMX1NLSUxMLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25ldy1jb21tYW5kJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnY3JlYXRlIGEgcGljbyBzbGFzaCBjb21tYW5kLCBhIHByb21wdCB0ZW1wbGF0ZSB0aGUgdXNlciBpbnZva2VzJyxcbiAgICAgIHNvdXJjZTogJ2J1aWx0aW4nLFxuICAgICAgYm9keTogTkVXX0NPTU1BTkRfU0tJTEwsXG4gICAgfSxcbiAgXVxuICBjb25zdCBnbG9iYWwgPSBhd2FpdCBzY2FuRGlyKGdsb2JhbFNraWxsc0RpcigpLCAnZ2xvYmFsJylcbiAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdFNraWxsc0Rpcihyb290KSwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCBza2lsbCBvZiBbLi4uYnVpbHRpbiwgLi4uZ2xvYmFsLCAuLi5wcm9qZWN0XSkgYnlOYW1lLnNldChza2lsbC5uYW1lLCBza2lsbClcbiAgY29uc3Qgc2tpbGxzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV1cblxuICByZXR1cm4ge1xuICAgIGxpc3Q6ICgpID0+IHNraWxscyxcbiAgICBhc3luYyBsb2FkKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNraWxsID0gYnlOYW1lLmdldChuYW1lKVxuICAgICAgaWYgKCFza2lsbCkgcmV0dXJuIG51bGxcbiAgICAgIGlmIChza2lsbC5ib2R5KSByZXR1cm4gc2tpbGwuYm9keVxuICAgICAgY29uc3QgeyBib2R5IH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKHNraWxsLmZpbGUsICd1dGYtOCcpKVxuICAgICAgcmV0dXJuIGJvZHlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL3NraWxscy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbENvbW1hbmRzRGlyKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29tbWFuZHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdENvbW1hbmRzRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocm9vdCwgJy5waWNvJywgJ2NvbW1hbmRzJylcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXVxuICB9XG4gIGNvbnN0IGNvbW1hbmRzID0gW11cbiAgZm9yIChjb25zdCBmaWxlIG9mIG5hbWVzKSB7XG4gICAgaWYgKCFmaWxlLmVuZHNXaXRoKCcubWQnKSkgY29udGludWVcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBtZXRhIH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKGpvaW4oZGlyLCBmaWxlKSwgJ3V0Zi04JykpXG4gICAgICBjb21tYW5kcy5wdXNoKHtcbiAgICAgICAgbmFtZTogZmlsZS5zbGljZSgwLCAtMyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGZpbGU6IGpvaW4oZGlyLCBmaWxlKSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBjb21tYW5kc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwYW5kQ29tbWFuZChib2R5LCBhcmdzKSB7XG4gIHJldHVybiBib2R5LmluY2x1ZGVzKCckQVJHVU1FTlRTJylcbiAgICA/IGJvZHkucmVwbGFjZUFsbCgnJEFSR1VNRU5UUycsIGFyZ3MpXG4gICAgOiBhcmdzXG4gICAgICA/IGAke2JvZHkudHJpbSgpfVxcblxcbiR7YXJnc31gXG4gICAgICA6IGJvZHlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbW1hbmRJbmRleChyb290KSB7XG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsQ29tbWFuZHNEaXIoKSwgJ2dsb2JhbCcpXG4gIGNvbnN0IHByb2plY3QgPSBhd2FpdCBzY2FuRGlyKHByb2plY3RDb21tYW5kc0Rpcihyb290KSwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCBjb21tYW5kIG9mIFsuLi5nbG9iYWwsIC4uLnByb2plY3RdKSBieU5hbWUuc2V0KGNvbW1hbmQubmFtZSwgY29tbWFuZClcbiAgY29uc3QgY29tbWFuZHMgPSBbLi4uYnlOYW1lLnZhbHVlcygpXVxuXG4gIHJldHVybiB7XG4gICAgbGlzdDogKCkgPT4gY29tbWFuZHMsXG4gICAgYXN5bmMgbG9hZChuYW1lLCBhcmdzID0gJycpIHtcbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBieU5hbWUuZ2V0KG5hbWUpXG4gICAgICBpZiAoIWNvbW1hbmQpIHJldHVybiBudWxsXG4gICAgICBjb25zdCB7IGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoY29tbWFuZC5maWxlLCAndXRmLTgnKSlcbiAgICAgIHJldHVybiBleHBhbmRDb21tYW5kKGJvZHkudHJpbSgpLCBhcmdzLnRyaW0oKSlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBjb25uZWN0TUNQIH0gZnJvbSAnQHByc20vYWknXG5pbXBvcnQgeyBnbG9iYWxNY3BGaWxlLCBwcm9qZWN0TWNwRmlsZSwgcHJvamVjdERpciwgZW5zdXJlRGlyLCBwaWNvSG9tZSB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmZ1bmN0aW9uIHRva2VuaXplKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSBbXVxuICBjb25zdCByZSA9IC8oW0EtWmEtejAtOV8tXSs9KT9cIihbXlwiXSopXCJ8KFtBLVphLXowLTlfLV0rPSk/JyhbXiddKiknfChcXFMrKS9nXG4gIGxldCBtXG4gIHdoaWxlICgobSA9IHJlLmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobVsxXSAhPT0gdW5kZWZpbmVkIHx8IG1bM10gIT09IHVuZGVmaW5lZCkgdG9rZW5zLnB1c2goKG1bMV0gPz8gbVszXSkgKyAobVsyXSA/PyBtWzRdKSlcbiAgICBlbHNlIHRva2Vucy5wdXNoKG1bMl0gPz8gbVs0XSA/PyBtWzVdKVxuICB9XG4gIHJldHVybiB0b2tlbnNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29tbWFuZChzdHIpIHtcbiAgY29uc3QgdG9rZW5zID0gdG9rZW5pemUoc3RyKVxuXG4gIGNvbnN0IGVudiA9IHt9XG4gIHdoaWxlICh0b2tlbnMubGVuZ3RoICYmIC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKj0vLnRlc3QodG9rZW5zWzBdKSkge1xuICAgIGNvbnN0IHNlcCA9IHRva2Vuc1swXS5pbmRleE9mKCc9JylcbiAgICBlbnZbdG9rZW5zWzBdLnNsaWNlKDAsIHNlcCldID0gdG9rZW5zWzBdLnNsaWNlKHNlcCArIDEpXG4gICAgdG9rZW5zLnNoaWZ0KClcbiAgfVxuICBpZiAoIXRva2Vucy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignZW1wdHkgY29tbWFuZCcpXG4gIHJldHVybiB7IGNvbW1hbmQ6IHRva2Vuc1swXSwgYXJnczogdG9rZW5zLnNsaWNlKDEpLCBlbnYgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTZXJ2ZXJTcGVjKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSB0b2tlbml6ZShzdHIpXG4gIGlmICghL15odHRwcz86XFwvXFwvLy50ZXN0KHRva2Vuc1swXSB8fCAnJykpIHJldHVybiB7IHR5cGU6ICdzdGRpbycsIC4uLnBhcnNlQ29tbWFuZChzdHIpIH1cblxuICBjb25zdCBbdXJsLCAuLi5yZXN0XSA9IHRva2Vuc1xuICBjb25zdCBoZWFkZXJzID0ge31cbiAgZm9yIChjb25zdCB0b2tlbiBvZiByZXN0KSB7XG4gICAgY29uc3Qgc2VwID0gdG9rZW4uaW5kZXhPZignPScpXG4gICAgaWYgKHNlcCA8IDEpIHRocm93IG5ldyBFcnJvcihgaHR0cCBzZXJ2ZXIgc3BlYyBvbmx5IHRha2VzIGEgdXJsIGFuZCBIZWFkZXI9dmFsdWUgcGFpcnMsIGdvdCBcIiR7dG9rZW59XCJgKVxuICAgIGhlYWRlcnNbdG9rZW4uc2xpY2UoMCwgc2VwKV0gPSB0b2tlbi5zbGljZShzZXAgKyAxKVxuICB9XG4gIHJldHVybiB7IHR5cGU6ICdodHRwJywgdXJsLCBoZWFkZXJzIH1cbn1cblxuZXhwb3J0IGNvbnN0IFJFREFDVEVEX0hFQURFUiA9ICdcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjInXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbnNpdGl2ZUhlYWRlcihuYW1lKSB7XG4gIHJldHVybiAvXihhdXRob3JpemF0aW9ufHByb3h5LWF1dGhvcml6YXRpb258Y29va2llfHNldC1jb29raWV8eC1hcGkta2V5fGFwaS1rZXl8dG9rZW58c2VjcmV0KSQvaS50ZXN0KG5hbWUpXG59XG5cbmZ1bmN0aW9uIHF1b3RlSGVhZGVyVmFsdWUodmFsdWUpIHtcbiAgaWYgKCEvW1xccydcIlxcXFxdLy50ZXN0KHZhbHVlKSkgcmV0dXJuIHZhbHVlXG4gIGlmICghdmFsdWUuaW5jbHVkZXMoJ1wiJykpIHJldHVybiBgXCIke3ZhbHVlfVwiYFxuICBpZiAoIXZhbHVlLmluY2x1ZGVzKFwiJ1wiKSkgcmV0dXJuIGAnJHt2YWx1ZX0nYFxuICB0aHJvdyBuZXcgRXJyb3IoJ2hlYWRlciB2YWx1ZXMgY2Fubm90IGNvbnRhaW4gYm90aCBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0SHR0cFNlcnZlclNwZWModXJsLCBoZWFkZXJzKSB7XG4gIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gYCR7bmFtZX09JHtxdW90ZUhlYWRlclZhbHVlKHZhbHVlKX1gKVxuICByZXR1cm4gW3VybCwgLi4udmFsdWVzXS5qb2luKCcgJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZGFjdFNlcnZlclNwZWMoY29tbWFuZCkge1xuICBsZXQgc3BlY1xuICB0cnkge1xuICAgIHNwZWMgPSBwYXJzZVNlcnZlclNwZWMoY29tbWFuZClcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGNvbW1hbmRcbiAgfVxuICBpZiAoc3BlYy50eXBlICE9PSAnaHR0cCcpIHJldHVybiBjb21tYW5kXG4gIGNvbnN0IGhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoc3BlYy5oZWFkZXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IFtuYW1lLCBpc1NlbnNpdGl2ZUhlYWRlcihuYW1lKSA/IFJFREFDVEVEX0hFQURFUiA6IHZhbHVlXSkpXG4gIHJldHVybiBmb3JtYXRIdHRwU2VydmVyU3BlYyhzcGVjLnVybCwgaGVhZGVycylcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEpzb24oZmlsZSwgZmFsbGJhY2spIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShmaWxlLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbGxiYWNrXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZWdpc3RyeSgpIHtcbiAgcmV0dXJuIHJlYWRKc29uKGdsb2JhbE1jcEZpbGUoKSwgeyBzZXJ2ZXJzOiB7fSB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVSZWdpc3RyeShyZWdpc3RyeSkge1xuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGdsb2JhbE1jcEZpbGUoKSwgSlNPTi5zdHJpbmdpZnkocmVnaXN0cnksIG51bGwsIDIpICsgJ1xcbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUHJvamVjdENvbmZpZyhyb290KSB7XG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRKc29uKHByb2plY3RNY3BGaWxlKHJvb3QpLCB7fSlcbiAgcmV0dXJuIHsgZGlzYWJsZWQ6IGNvbmZpZy5kaXNhYmxlZCB8fCB7fSwgc2VydmVyczogY29uZmlnLnNlcnZlcnMgfHwge30gfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZykge1xuICBlbnN1cmVEaXIocHJvamVjdERpcihyb290KSlcbiAgYXdhaXQgd3JpdGVGaWxlKHByb2plY3RNY3BGaWxlKHJvb3QpLCBKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpICsgJ1xcbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVNY3BUcmFuc3BvcnQoY29tbWFuZCkge1xuICBjb25zdCBzcGVjID0gcGFyc2VTZXJ2ZXJTcGVjKGNvbW1hbmQpXG4gIGlmIChzcGVjLnR5cGUgPT09ICdodHRwJykge1xuICAgIGNvbnN0IHsgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RyZWFtYWJsZUh0dHAuanMnKVxuICAgIGNvbnN0IGZldGNoID0gKHVybCwgaW5pdCkgPT4gaW5pdD8ubWV0aG9kID09PSAnR0VUJ1xuICAgICAgPyBQcm9taXNlLnJlc29sdmUobmV3IFJlc3BvbnNlKG51bGwsIHsgc3RhdHVzOiA0MDUgfSkpXG4gICAgICA6IGdsb2JhbFRoaXMuZmV0Y2godXJsLCBpbml0KVxuICAgIHJldHVybiBuZXcgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQobmV3IFVSTChzcGVjLnVybCksIHtcbiAgICAgIHJlcXVlc3RJbml0OiBPYmplY3Qua2V5cyhzcGVjLmhlYWRlcnMpLmxlbmd0aCA/IHsgaGVhZGVyczogc3BlYy5oZWFkZXJzIH0gOiB1bmRlZmluZWQsXG4gICAgICBmZXRjaCxcbiAgICB9KVxuICB9XG4gIGNvbnN0IHsgU3RkaW9DbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RkaW8uanMnKVxuICByZXR1cm4gbmV3IFN0ZGlvQ2xpZW50VHJhbnNwb3J0KHtcbiAgICBjb21tYW5kOiBzcGVjLmNvbW1hbmQsXG4gICAgYXJnczogc3BlYy5hcmdzLFxuICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uc3BlYy5lbnYgfSxcbiAgICBzdGRlcnI6ICdwaXBlJyxcbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1jcFJ1bnRpbWUoeyByb290LCBvbkNoYW5nZSA9ICgpID0+IHt9IH0pIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgY29uc3Qgc2VydmVycyA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0IHJlZ2lzdGVyID0gKG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgc2VydmVycy5zZXQobmFtZSwge1xuICAgICAgbmFtZSxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBzY29wZSxcbiAgICAgIGVuYWJsZWQ6ICFwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdLFxuICAgICAgc3RhdHVzOiBwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdID8gJ2Rpc2FibGVkJyA6ICdpZGxlJyxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgY29ubmVjdGlvbjogbnVsbCxcbiAgICAgIHRyYW5zcG9ydDogbnVsbCxcbiAgICB9KVxuICB9XG4gIGZvciAoY29uc3QgW25hbWUsIGNvbW1hbmRdIG9mIE9iamVjdC5lbnRyaWVzKHJlZ2lzdHJ5LnNlcnZlcnMpKSByZWdpc3RlcihuYW1lLCBjb21tYW5kLCAnZ2xvYmFsJylcbiAgZm9yIChjb25zdCBbbmFtZSwgY29tbWFuZF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdENvbmZpZy5zZXJ2ZXJzKSkgcmVnaXN0ZXIobmFtZSwgY29tbWFuZCwgJ3Byb2plY3QnKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNvbm5lY3QobmFtZSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgaWYgKCFzZXJ2ZXIpIHJldHVyblxuICAgIHNlcnZlci5zdGF0dXMgPSAnY29ubmVjdGluZydcbiAgICBzZXJ2ZXIuZXJyb3IgPSBudWxsXG4gICAgb25DaGFuZ2UoKVxuICAgIHRyeSB7XG4gICAgICBzZXJ2ZXIudHJhbnNwb3J0ID0gYXdhaXQgY3JlYXRlTWNwVHJhbnNwb3J0KHNlcnZlci5jb21tYW5kKVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBhd2FpdCBjb25uZWN0TUNQKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdHJhbnNwb3J0OiAoKSA9PiBzZXJ2ZXIudHJhbnNwb3J0LFxuICAgICAgfSlcbiAgICAgIHNlcnZlci5zdGF0dXMgPSAnY29ubmVjdGVkJ1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2VydmVyLnN0YXR1cyA9ICdlcnJvcidcbiAgICAgIHNlcnZlci5lcnJvciA9IFN0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDMwMClcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gbnVsbFxuICAgICAgc2VydmVyLnRyYW5zcG9ydCA9IG51bGxcbiAgICB9XG4gICAgb25DaGFuZ2UoKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdChuYW1lKSB7XG4gICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICBpZiAoc2VydmVyPy5jb25uZWN0aW9uKSB7XG4gICAgICBhd2FpdCBzZXJ2ZXIuY29ubmVjdGlvbi5jbG9zZSgpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBudWxsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb25uZWN0QWxsKCkge1xuICAgICAgY29uc3QgcGVuZGluZyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHNlcnZlciBvZiBzZXJ2ZXJzLnZhbHVlcygpKSB7XG4gICAgICAgIGlmIChzZXJ2ZXIuZW5hYmxlZCkgcGVuZGluZy5wdXNoKGNvbm5lY3Qoc2VydmVyLm5hbWUpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChwZW5kaW5nKVxuICAgIH0sXG4gICAgYXN5bmMgYWRkKG5hbWUsIGNvbW1hbmQsIHNjb3BlID0gJ2dsb2JhbCcpIHtcbiAgICAgIGlmIChzY29wZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICAgIGNvbmZpZy5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICAgICAgICByZWdpc3RyeS5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KVxuICAgICAgfVxuICAgICAgc2VydmVycy5zZXQobmFtZSwgeyBuYW1lLCBjb21tYW5kLCBzY29wZSwgZW5hYmxlZDogdHJ1ZSwgc3RhdHVzOiAnaWRsZScsIGVycm9yOiBudWxsLCBjb25uZWN0aW9uOiBudWxsLCB0cmFuc3BvcnQ6IG51bGwgfSlcbiAgICAgIGF3YWl0IGNvbm5lY3QobmFtZSlcbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZShuYW1lLCBjb21tYW5kKSB7XG4gICAgICBjb25zdCBzZXJ2ZXIgPSBzZXJ2ZXJzLmdldChuYW1lKVxuICAgICAgaWYgKCFzZXJ2ZXIpIHJldHVyblxuICAgICAgaWYgKHNlcnZlci5zY29wZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICAgIGNvbmZpZy5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICAgICAgICByZWdpc3RyeS5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KVxuICAgICAgfVxuICAgICAgYXdhaXQgZGlzY29ubmVjdChuYW1lKVxuICAgICAgc2VydmVyLmNvbW1hbmQgPSBjb21tYW5kXG4gICAgICBzZXJ2ZXIuc3RhdHVzID0gc2VydmVyLmVuYWJsZWQgPyAnaWRsZScgOiAnZGlzYWJsZWQnXG4gICAgICBzZXJ2ZXIuZXJyb3IgPSBudWxsXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIGF3YWl0IGNvbm5lY3QobmFtZSlcbiAgICB9LFxuICAgIGFzeW5jIHJlbW92ZShuYW1lKSB7XG4gICAgICBjb25zdCBzY29wZSA9IHNlcnZlcnMuZ2V0KG5hbWUpPy5zY29wZVxuICAgICAgaWYgKHNjb3BlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgICAgICAgZGVsZXRlIGNvbmZpZy5zZXJ2ZXJzW25hbWVdXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGF3YWl0IHJlYWRSZWdpc3RyeSgpXG4gICAgICAgIGRlbGV0ZSByZWdpc3RyeS5zZXJ2ZXJzW25hbWVdXG4gICAgICAgIGF3YWl0IHdyaXRlUmVnaXN0cnkocmVnaXN0cnkpXG4gICAgICB9XG4gICAgICBhd2FpdCBkaXNjb25uZWN0KG5hbWUpXG4gICAgICBzZXJ2ZXJzLmRlbGV0ZShuYW1lKVxuICAgICAgb25DaGFuZ2UoKVxuICAgIH0sXG4gICAgYXN5bmMgdG9nZ2xlKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgICBpZiAoIXNlcnZlcikgcmV0dXJuXG4gICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgaWYgKHNlcnZlci5lbmFibGVkKSB7XG4gICAgICAgIC8vIGZsaXAgdGhlIHZpc2libGUgc3RhdGUgZmlyc3Q6IGEgc2xvdy1jbG9zaW5nIHNlcnZlciAoaGVhZGxlc3NcbiAgICAgICAgLy8gYnJvd3NlcnMsIGhlYXZ5IHByb2Nlc3NlcykgbXVzdCBub3QgbWFrZSBkaXNhYmxlIGZlZWwgZGVhZFxuICAgICAgICBzZXJ2ZXIuZW5hYmxlZCA9IGZhbHNlXG4gICAgICAgIHNlcnZlci5zdGF0dXMgPSAnZGlzYWJsZWQnXG4gICAgICAgIG9uQ2hhbmdlKClcbiAgICAgICAgY29uZmlnLmRpc2FibGVkW25hbWVdID0gdHJ1ZVxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgICBkaXNjb25uZWN0KG5hbWUpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSB0cnVlXG4gICAgICAgIGRlbGV0ZSBjb25maWcuZGlzYWJsZWRbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgICAgfVxuICAgIH0sXG4gICAgcmVjb25uZWN0KG5hbWUpIHtcbiAgICAgIHJldHVybiBkaXNjb25uZWN0KG5hbWUpLnRoZW4oKCkgPT4gY29ubmVjdChuYW1lKSlcbiAgICB9LFxuICAgIGxpc3QoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldLm1hcCgocykgPT4gKHtcbiAgICAgICAgbmFtZTogcy5uYW1lLFxuICAgICAgICBjb21tYW5kOiBzLmNvbW1hbmQsXG4gICAgICAgIHNjb3BlOiBzLnNjb3BlLFxuICAgICAgICBlbmFibGVkOiBzLmVuYWJsZWQsXG4gICAgICAgIHN0YXR1czogcy5zdGF0dXMsXG4gICAgICAgIGVycm9yOiBzLmVycm9yLFxuICAgICAgICB0b29sQ291bnQ6IHMuY29ubmVjdGlvbj8udG9vbHMubGVuZ3RoIHx8IDAsXG4gICAgICAgIHRvb2xzOiAocy5jb25uZWN0aW9uPy50b29scyB8fCBbXSkubWFwKCh0KSA9PiAoeyBuYW1lOiB0Lm5hbWUsIGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uIHx8ICcnIH0pKSxcbiAgICAgIH0pKVxuICAgIH0sXG4gICAgdG9vbHMoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuY29ubmVjdGlvbilcbiAgICAgICAgLmZsYXRNYXAoKHMpID0+IHMuY29ubmVjdGlvbi50b29scylcbiAgICB9LFxuICAgIGNsb3NlQWxsKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbLi4uc2VydmVycy5rZXlzKCldLm1hcChkaXNjb25uZWN0KSlcbiAgICB9LFxuICAgIHRlcm1pbmF0ZUFsbCgpIHtcbiAgICAgIGZvciAoY29uc3Qgc2VydmVyIG9mIHNlcnZlcnMudmFsdWVzKCkpIHtcbiAgICAgICAgY29uc3QgcGlkID0gc2VydmVyLnRyYW5zcG9ydD8ucGlkXG4gICAgICAgIGlmIChwaWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvY2Vzcy5raWxsKHBpZCwgJ1NJR1RFUk0nKVxuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciwgd3JpdGVGaWxlLCBta2RpciwgdW5saW5rIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgcHJvamVjdERpciB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBwYXJzZUZyb250bWF0dGVyIH0gZnJvbSAnLi9za2lsbHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxNZW1vcnlEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdE1lbW9yeURpcihyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lKSB7XG4gIGNvbnN0IHNsdWcgPSBTdHJpbmcobmFtZSlcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJylcbiAgICAucmVwbGFjZSgvXi0rfC0rJC9nLCAnJylcbiAgICAuc2xpY2UoMCwgNjApXG4gIGlmICghc2x1ZykgdGhyb3cgbmV3IEVycm9yKCdtZW1vcnkgbmFtZSBtdXN0IGNvbnRhaW4gbGV0dGVycyBvciBudW1iZXJzJylcbiAgcmV0dXJuIHNsdWdcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNjb3BlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3QgbWVtb3JpZXMgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5tZCcpKSBjb250aW51ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEsIGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoam9pbihkaXIsIGZpbGUpLCAndXRmLTgnKSlcbiAgICAgIG1lbW9yaWVzLnB1c2goe1xuICAgICAgICBuYW1lOiBtZXRhLm5hbWUgfHwgZmlsZS5zbGljZSgwLCAtMyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzY29wZSxcbiAgICAgICAgZmlsZTogam9pbihkaXIsIGZpbGUpLFxuICAgICAgICBib2R5OiBib2R5LnRyaW0oKSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBtZW1vcmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVtb3J5KHJvb3QpIHtcbiAgY29uc3QgZGlyRm9yID0gKHNjb3BlKSA9PiAoc2NvcGUgPT09ICdnbG9iYWwnID8gZ2xvYmFsTWVtb3J5RGlyKCkgOiBwcm9qZWN0TWVtb3J5RGlyKHJvb3QpKVxuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgbGlzdCgpIHtcbiAgICAgIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsTWVtb3J5RGlyKCksICdnbG9iYWwnKVxuICAgICAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdE1lbW9yeURpcihyb290KSwgJ3Byb2plY3QnKVxuICAgICAgcmV0dXJuIFsuLi5wcm9qZWN0LCAuLi5nbG9iYWxdXG4gICAgfSxcbiAgICBhc3luYyByZW1lbWJlcih7IG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBzY29wZSA9ICdwcm9qZWN0JyB9KSB7XG4gICAgICBpZiAoIVsncHJvamVjdCcsICdnbG9iYWwnXS5pbmNsdWRlcyhzY29wZSkpIHRocm93IG5ldyBFcnJvcignc2NvcGUgbXVzdCBiZSBwcm9qZWN0IG9yIGdsb2JhbCcpXG4gICAgICBjb25zdCBzbHVnID0gc2x1Z2lmeShuYW1lKVxuICAgICAgY29uc3QgZGlyID0gZGlyRm9yKHNjb3BlKVxuICAgICAgYXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBgJHtzbHVnfS5tZGApXG4gICAgICBjb25zdCB0ZXh0ID0gYC0tLVxcbm5hbWU6ICR7c2x1Z31cXG5kZXNjcmlwdGlvbjogJHtTdHJpbmcoZGVzY3JpcHRpb24pLnJlcGxhY2UoL1xcbi9nLCAnICcpfVxcbi0tLVxcbiR7Y29udGVudH1cXG5gXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgdGV4dCwgJ3V0Zi04JylcbiAgICAgIHJldHVybiB7IG5hbWU6IHNsdWcsIHNjb3BlLCBmaWxlIH1cbiAgICB9LFxuICAgIGFzeW5jIGZvcmdldChuYW1lKSB7XG4gICAgICBjb25zdCBtZW1vcmllcyA9IGF3YWl0IHRoaXMubGlzdCgpXG4gICAgICBjb25zdCBtZW1vcnkgPSBtZW1vcmllcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpXG4gICAgICBpZiAoIW1lbW9yeSkgdGhyb3cgbmV3IEVycm9yKGBubyBtZW1vcnkgbmFtZWQgXCIke25hbWV9XCJgKVxuICAgICAgYXdhaXQgdW5saW5rKG1lbW9yeS5maWxlKVxuICAgICAgcmV0dXJuIHsgbmFtZTogbWVtb3J5Lm5hbWUsIHNjb3BlOiBtZW1vcnkuc2NvcGUgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVjYWxsKG5hbWUpIHtcbiAgICAgIGNvbnN0IG1lbW9yaWVzID0gYXdhaXQgdGhpcy5saXN0KClcbiAgICAgIGNvbnN0IG1lbW9yeSA9IG1lbW9yaWVzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSlcbiAgICAgIGlmICghbWVtb3J5KSB7XG4gICAgICAgIGNvbnN0IGtub3duID0gbWVtb3JpZXMubWFwKChtKSA9PiBtLm5hbWUpLmpvaW4oJywgJykgfHwgJ25vbmUnXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gbWVtb3J5IG5hbWVkIFwiJHtuYW1lfVwiOyBrbm93biBtZW1vcmllczogJHtrbm93bn1gKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbmFtZTogbWVtb3J5Lm5hbWUsIHNjb3BlOiBtZW1vcnkuc2NvcGUsIGZpbGU6IG1lbW9yeS5maWxlLCBjb250ZW50OiBtZW1vcnkuYm9keSB9XG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVtb3J5SW5kZXgobWVtb3JpZXMsIHJvb3QpIHtcbiAgaWYgKG1lbW9yaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBgWW91IGhhdmUgbm8gc2F2ZWQgbWVtb3JpZXMgeWV0LiBUaGlzIGluZGV4IGxpc3RzIHRoZW0gd2hlbiB5b3Ugc2F2ZSBkdXJhYmxlIGZhY3RzIHdpdGggdGhlIHJlbWVtYmVyIHRvb2w7IGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgeW91ciBtZW1vcmllcyBmcm9tIHRoaXMgaW5kZXggYWxvbmUsIHdpdGhvdXQgc2VhcmNoaW5nIHRoZSBmaWxlc3lzdGVtLmBcbiAgfVxuICBjb25zdCBsaW5lcyA9IG1lbW9yaWVzLm1hcCgobSkgPT4gYC0gJHttLm5hbWV9ICgke20uc2NvcGV9KTogJHttLmRlc2NyaXB0aW9ufWApXG4gIHJldHVybiBbXG4gICAgYE1lbW9yaWVzIHlvdSBoYXZlIHNhdmVkLiBUaGlzIGluZGV4IGlzIGNvbXBsZXRlOiBhbnN3ZXIgcXVlc3Rpb25zIGFib3V0IHlvdXIgbWVtb3JpZXMgZnJvbSBpdCBkaXJlY3RseSwgbG9hZCBvbmUgd2l0aCB0aGUgcmVjYWxsIHRvb2wgd2hlbiBpdHMgY29udGVudCBpcyByZWxldmFudCwgYW5kIG5ldmVyIHNlYXJjaCB0aGUgZmlsZXN5c3RlbSBmb3IgbWVtb3JpZXMuIFRoZSBmaWxlcyBsaXZlIGluICR7cHJvamVjdE1lbW9yeURpcihyb290KX0gYW5kICR7Z2xvYmFsTWVtb3J5RGlyKCl9IGFuZCBjYW4gYmUgZWRpdGVkIG9yIGRlbGV0ZWQgd2l0aCBvcmRpbmFyeSB0b29scyB3aGVuIGFza2VkIHRvIGN1cmF0ZSB0aGVtLmAsXG4gICAgLi4ubGluZXMsXG4gIF0uam9pbignXFxuJylcbn1cbiIsICJpbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGZpbmRQcm9qZWN0Um9vdCB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBsb2FkU3RhcnR1cENvbnRleHQsIGNyZWF0ZUNvbnRleHRUcmFja2VyIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGxJbmRleCB9IGZyb20gJy4vc2tpbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlQ29tbWFuZEluZGV4IH0gZnJvbSAnLi9jb21tYW5kcy5qcydcbmltcG9ydCB7IGNyZWF0ZU1jcFJ1bnRpbWUgfSBmcm9tICcuL21jcC5qcydcbmltcG9ydCB7IGNyZWF0ZU1lbW9yeSB9IGZyb20gJy4vbWVtb3J5LmpzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRQcm9qZWN0Qm9vdChjd2QsIHsgb25NY3BDaGFuZ2UgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICBjb25zdCByb290ID0gZmluZFByb2plY3RSb290KGN3ZClcbiAgY29uc3Qgc3RhcnR1cENvbnRleHQgPSBsb2FkU3RhcnR1cENvbnRleHQoY3dkKVxuICBjb25zdCB0cmFja2VyID0gY3JlYXRlQ29udGV4dFRyYWNrZXIoe1xuICAgIHN0b3BEaXI6IHN0YXJ0dXBDb250ZXh0LnN0b3BEaXIsXG4gICAgbG9hZGVkOiBuZXcgU2V0KHN0YXJ0dXBDb250ZXh0LmZpbGVzLm1hcCgoZikgPT4gZi5wYXRoKSksXG4gIH0pXG4gIHJldHVybiB7XG4gICAgY3dkLFxuICAgIHJvb3QsXG4gICAgZGlzcGxheUN3ZDogY3dkLnN0YXJ0c1dpdGgoaG9tZSkgPyBjd2QucmVwbGFjZShob21lLCAnficpIDogY3dkLFxuICAgIHN0YXJ0dXBDb250ZXh0LFxuICAgIHRyYWNrZXIsXG4gICAgc2tpbGxzOiBhd2FpdCBjcmVhdGVTa2lsbEluZGV4KHJvb3QpLFxuICAgIGNvbW1hbmRzOiBhd2FpdCBjcmVhdGVDb21tYW5kSW5kZXgocm9vdCksXG4gICAgbWNwOiBhd2FpdCBjcmVhdGVNY3BSdW50aW1lKHsgcm9vdCwgb25DaGFuZ2U6IG9uTWNwQ2hhbmdlIH0pLFxuICAgIG1lbW9yeTogY3JlYXRlTWVtb3J5KHJvb3QpLFxuICB9XG59XG4iLCAiY29uc3QgREVGQVVMVF9TTElDRV9DSEFSUyA9IDI0MDAwXG5jb25zdCBNQVhfU0xJQ0VfQ0hBUlMgPSAxMDAwMDBcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEcmVkZ2UoY29uZmlnID0ge30sIGVudiA9IHByb2Nlc3MuZW52KSB7XG4gIGNvbnN0IHVybCA9IGVudi5EUkVER0VfVVJMIHx8IGNvbmZpZy5kcmVkZ2U/LnVybCB8fCBudWxsXG4gIGlmICghdXJsKSByZXR1cm4gbnVsbFxuICByZXR1cm4ge1xuICAgIHVybDogdXJsLnJlcGxhY2UoL1xcLyskLywgJycpLFxuICAgIGFwaUtleTogZW52LkRSRURHRV9BUElfS0VZIHx8IGNvbmZpZy5kcmVkZ2U/LmFwaUtleSB8fCBudWxsLFxuICB9XG59XG5cbmNvbnN0IENBTExfVElNRU9VVF9NUyA9IDEyMDAwMFxuXG5hc3luYyBmdW5jdGlvbiBjYWxsKGRyZWRnZSwgcGF0aCwgcGFyYW1zLCBzaWduYWwpIHtcbiAgY29uc3QgcXVlcnkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcylcbiAgLy8gYm91bmRlZCBhYm92ZSBkcmVkZ2UncyBvd24gOTBzIHF1ZXVlIGNlaWxpbmcgc28gYSB3ZWRnZWQgc2VydmVyIGJlY29tZXNcbiAgLy8gYSB0b29sIGVycm9yIGluc3RlYWQgb2YgYSBodW5nIHR1cm5cbiAgY29uc3Qgc2lnbmFscyA9IFtBYm9ydFNpZ25hbC50aW1lb3V0KENBTExfVElNRU9VVF9NUyksIC4uLihzaWduYWwgPyBbc2lnbmFsXSA6IFtdKV1cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtkcmVkZ2UudXJsfSR7cGF0aH0/JHtxdWVyeX1gLCB7XG4gICAgc2lnbmFsOiBBYm9ydFNpZ25hbC5hbnkoc2lnbmFscyksXG4gICAgaGVhZGVyczogZHJlZGdlLmFwaUtleSA/IHsgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke2RyZWRnZS5hcGlLZXl9YCB9IDoge30sXG4gIH0pXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCByZXNwb25zZS5qc29uKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgaWYgKCFib2R5KSB0aHJvdyBuZXcgRXJyb3IoYGRyZWRnZSByZXR1cm5lZCBodHRwICR7cmVzcG9uc2Uuc3RhdHVzfSB3aXRoIG5vIHVzYWJsZSBib2R5YClcbiAgcmV0dXJuIGJvZHlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdlYlRvb2xzKHsgZHJlZGdlLCByZWNvcmRlciwgc2lnbmFsIH0pIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBuYW1lOiAnd2ViX3NlYXJjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1NlYXJjaCB0aGUgd2ViLiBHb29nbGUtc3R5bGUgb3BlcmF0b3JzIHdvcms6IHNpdGU6LCBmaWxldHlwZTpwZGYsIHF1b3RlZCBwaHJhc2VzLiBSZXR1cm5zIHJhbmtlZCByZXN1bHRzOyBwYXNzIGEgcmVzdWx0IHVybCB0byB3ZWJfZmV0Y2ggdG8gcmVhZCBpdC4nLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIHE6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIHNlYXJjaCBxdWVyeScgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBxIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcSB9KVxuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgY2FsbChkcmVkZ2UsICcvc2VhcmNoJywgeyBxIH0sIHNpZ25hbClcbiAgICAgICAgaWYgKCFib2R5Lm9rKSB0aHJvdyBuZXcgRXJyb3IoYm9keS5lcnJvcj8ubWVzc2FnZSB8fCAnc2VhcmNoIGZhaWxlZCcpXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSAoYm9keS5yZXN1bHRzIHx8IFtdKS5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgdGl0bGU6IHIudGl0bGUsXG4gICAgICAgICAgdXJsOiByLnVybCxcbiAgICAgICAgICBzbmlwcGV0OiByLnNuaXBwZXQsXG4gICAgICAgICAgc291cmNlOiByLnNvdXJjZSxcbiAgICAgICAgfSkpXG4gICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IGJhY2tlbmRzID0gKGJvZHkuYmFja2VuZHMgfHwgW10pLm1hcCgoYikgPT4gYCR7Yi5uYW1lfTogJHtiLnN0YXR1c31gKS5qb2luKCcsICcpXG4gICAgICAgICAgcmV0dXJuIHsgcmVzdWx0cywgbm90ZTogYmFja2VuZHMgPyBgbm8gcmVzdWx0cyBcdTAwQjcgYmFja2VuZHM6ICR7YmFja2VuZHN9YCA6ICdubyByZXN1bHRzJyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcmVzdWx0cyB9XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3dlYl9mZXRjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0ZldGNoIGEgdXJsIGFuZCByZWFkIGl0IGFzIGNsZWFuIG1hcmtkb3duIChodG1sLCBwZGYsIGRvY3gsIGFuZCB0ZXh0dWFsIGZvcm1hdHMgbGlrZSBqc29uKS4gTG9uZyBkb2N1bWVudHMgYXJyaXZlIGluIHNsaWNlczogdGhlIHJlc3VsdCBzYXlzIHdoaWNoIHNsaWNlIHlvdSBoYXZlIChlLmcuIFwic2xpY2UgMSBvZiAxMlwiKSBhbmQgbmV4dF9jdXJzb3IgY29udGludWVzIGZyb20gdGhlcmUuIEV2ZXJ5IHNsaWNlIHlvdSBmZXRjaCBwZXJtYW5lbnRseSBvY2N1cGllcyBjb252ZXJzYXRpb24gY29udGV4dCwgc28gb25seSB3YWxrIGN1cnNvcnMgZm9yIGNvbnRlbnQgeW91IGFjdHVhbGx5IG5lZWQsIGFuZCByYWlzZSBtYXhDaGFycyBvbmx5IHdoZW4gdGhlIHRhc2sgZ2VudWluZWx5IG5lZWRzIGEgYmlnZ2VyIHdpbmRvdy4nLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIHVybDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgdXJsIHRvIGZldGNoJyB9LFxuICAgICAgICBjdXJzb3I6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncGFnaW5hdGlvbiBjdXJzb3IgZnJvbSBhIHByZXZpb3VzIHdlYl9mZXRjaCBvZiB0aGUgc2FtZSB1cmwnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICBtYXhDaGFyczogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246IGBzbGljZSBzaXplIGluIGNoYXJhY3RlcnMsIGRlZmF1bHQgJHtERUZBVUxUX1NMSUNFX0NIQVJTfSwgbWF4ICR7TUFYX1NMSUNFX0NIQVJTfWAsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICB9LFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgdXJsLCBjdXJzb3IsIG1heENoYXJzIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogdXJsLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgJycpLnNsaWNlKDAsIDgwKSB9KVxuICAgICAgICBjb25zdCBzbGljZSA9IE1hdGgubWluKE1BWF9TTElDRV9DSEFSUywgTWF0aC5tYXgoMTAwMCwgbWF4Q2hhcnMgfHwgREVGQVVMVF9TTElDRV9DSEFSUykpXG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBjYWxsKGRyZWRnZSwgJy9mZXRjaCcsIHsgdXJsLCBtYXhDaGFyczogc2xpY2UsIC4uLihjdXJzb3IgJiYgeyBjdXJzb3IgfSkgfSwgc2lnbmFsKVxuICAgICAgICBpZiAoIWJvZHkub2spIHtcbiAgICAgICAgICBjb25zdCB7IGNvZGUsIG1lc3NhZ2UsIHJldHJ5YWJsZSB9ID0gYm9keS5lcnJvciB8fCB7fVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtjb2RlIHx8ICdmZXRjaCBmYWlsZWQnfTogJHttZXNzYWdlIHx8IHVybH0ke3JldHJ5YWJsZSA/ICcgKHJldHJ5YWJsZSknIDogJyd9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG1hcmtkb3duLCBtZXRhZGF0YSwgcGFnaW5hdGlvbiB9ID0gYm9keS5kb2NcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXJrZG93bixcbiAgICAgICAgICB0aXRsZTogbWV0YWRhdGE/LnRpdGxlIHx8IG51bGwsXG4gICAgICAgICAgZmluYWxVcmw6IG1ldGFkYXRhPy5maW5hbF91cmwgfHwgdXJsLFxuICAgICAgICAgIC4uLihwYWdpbmF0aW9uPy50b3RhbF9jaHVua3MgPiAxICYmIHsgc2xpY2U6IGAke3BhZ2luYXRpb24uY2h1bmtfaW5kZXggKyAxfSBvZiAke3BhZ2luYXRpb24udG90YWxfY2h1bmtzfWAgfSksXG4gICAgICAgICAgLi4uKHBhZ2luYXRpb24/Lm5leHRfY3Vyc29yICYmIHsgbmV4dF9jdXJzb3I6IHBhZ2luYXRpb24ubmV4dF9jdXJzb3IgfSksXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgXVxufVxuIiwgImltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5jb25zdCBNQVhfTElORVMgPSAyMDAwXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaGVsbE1hbmFnZXIoeyBvbkNoYW5nZSA9ICgpID0+IHt9LCBvbkV4aXQgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3Qgc2hlbGxzID0gbmV3IE1hcCgpXG4gIGxldCBuZXh0SWQgPSAxXG5cbiAgZnVuY3Rpb24gcHVibGljVmlldyhzaGVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogc2hlbGwuaWQsXG4gICAgICBjb21tYW5kOiBzaGVsbC5jb21tYW5kLFxuICAgICAgZGVzY3JpcHRpb246IHNoZWxsLmRlc2NyaXB0aW9uLFxuICAgICAgY3dkOiBzaGVsbC5jd2QsXG4gICAgICBzdGF0dXM6IHNoZWxsLnN0YXR1cyxcbiAgICAgIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSxcbiAgICAgIHN0YXJ0ZWRBdDogc2hlbGwuc3RhcnRlZEF0LFxuICAgICAgZW5kZWRBdDogc2hlbGwuZW5kZWRBdCxcbiAgICAgIGtpbGxlZEJ5OiBzaGVsbC5raWxsZWRCeSxcbiAgICAgIGxhc3RMaW5lOiBzaGVsbC5saW5lcy5hdCgtMSkgfHwgJycsXG4gICAgICBsaW5lQ291bnQ6IHNoZWxsLmxpbmVzLmxlbmd0aCxcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChjb21tYW5kLCB7IGN3ZCwgZW52LCBkZXNjcmlwdGlvbiB9ID0ge30pIHtcbiAgICBjb25zdCBpZCA9IFN0cmluZyhuZXh0SWQrKylcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGNvbW1hbmQsIHtcbiAgICAgIHNoZWxsOiB0cnVlLFxuICAgICAgY3dkOiBjd2QgfHwgcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uZW52LCBGT1JDRV9DT0xPUjogJzAnLCBOT19DT0xPUjogJzEnIH0sXG4gICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJ10sXG4gICAgfSlcbiAgICBjb25zdCBzaGVsbCA9IHtcbiAgICAgIGlkLFxuICAgICAgY29tbWFuZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB8fCBudWxsLFxuICAgICAgY3dkOiBjd2QgfHwgcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGNoaWxkLFxuICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICBleGl0Q29kZTogbnVsbCxcbiAgICAgIHN0YXJ0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgIGVuZGVkQXQ6IG51bGwsXG4gICAgICBraWxsZWRCeTogbnVsbCxcbiAgICAgIGxpbmVzOiBbXSxcbiAgICAgIHBhcnRpYWw6ICcnLFxuICAgIH1cblxuICAgIGNvbnN0IHB1c2ggPSAoY2h1bmspID0+IHtcbiAgICAgIGNvbnN0IHRleHQgPSBzaGVsbC5wYXJ0aWFsICsgY2h1bmsudG9TdHJpbmcoKVxuICAgICAgY29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KCdcXG4nKVxuICAgICAgc2hlbGwucGFydGlhbCA9IGxpbmVzLnBvcCgpIHx8ICcnXG4gICAgICBzaGVsbC5saW5lcy5wdXNoKC4uLmxpbmVzKVxuICAgICAgaWYgKHNoZWxsLmxpbmVzLmxlbmd0aCA+IE1BWF9MSU5FUykgc2hlbGwubGluZXMuc3BsaWNlKDAsIHNoZWxsLmxpbmVzLmxlbmd0aCAtIE1BWF9MSU5FUylcbiAgICAgIG9uQ2hhbmdlKClcbiAgICB9XG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgcHVzaClcbiAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBwdXNoKVxuICAgIGNoaWxkLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIHB1c2goYFtmYWlsZWQgdG8gc3RhcnQ6ICR7ZXJyLm1lc3NhZ2V9XVxcbmApXG4gICAgfSlcbiAgICBjaGlsZC5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIGlmIChzaGVsbC5wYXJ0aWFsKSB7XG4gICAgICAgIHNoZWxsLmxpbmVzLnB1c2goc2hlbGwucGFydGlhbClcbiAgICAgICAgc2hlbGwucGFydGlhbCA9ICcnXG4gICAgICB9XG4gICAgICBzaGVsbC5zdGF0dXMgPSAnZXhpdGVkJ1xuICAgICAgc2hlbGwuZXhpdENvZGUgPSBjb2RlID8/IChzaWduYWwgPyAxIDogMClcbiAgICAgIHNoZWxsLmVuZGVkQXQgPSBEYXRlLm5vdygpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICBvbkV4aXQocHVibGljVmlldyhzaGVsbCkpXG4gICAgfSlcblxuICAgIHNoZWxscy5zZXQoaWQsIHNoZWxsKVxuICAgIG9uQ2hhbmdlKClcbiAgICByZXR1cm4geyBpZCB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXQoaWQpIHtcbiAgICBjb25zdCBzaGVsbCA9IHNoZWxscy5nZXQoU3RyaW5nKGlkKSlcbiAgICBpZiAoIXNoZWxsKSB0aHJvdyBuZXcgRXJyb3IoYG5vIHNoZWxsIHdpdGggaWQgJHtpZH07IGl0IGlzIGdvbmUgYW5kIGNhbm5vdCBiZSBpbnNwZWN0ZWQgKGV4aXRlZCBzaGVsbHMgZGlzYXBwZWFyIHdoZW4gZGlzbWlzc2VkKWApXG4gICAgcmV0dXJuIHNoZWxsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXJ0LFxuICAgIG91dHB1dChpZCwgeyB0YWlsID0gMTAwIH0gPSB7fSkge1xuICAgICAgY29uc3Qgc2hlbGwgPSBnZXQoaWQpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogc2hlbGwuaWQsXG4gICAgICAgIGNvbW1hbmQ6IHNoZWxsLmNvbW1hbmQsXG4gICAgICAgIHN0YXR1czogc2hlbGwuc3RhdHVzLFxuICAgICAgICBleGl0Q29kZTogc2hlbGwuZXhpdENvZGUsXG4gICAgICAgIG91dHB1dDogc2hlbGwubGluZXMuc2xpY2UoLXRhaWwpLmpvaW4oJ1xcbicpLFxuICAgICAgICB0b3RhbExpbmVzOiBzaGVsbC5saW5lcy5sZW5ndGgsXG4gICAgICB9XG4gICAgfSxcbiAgICBraWxsKGlkLCBieSA9ICdtb2RlbCcpIHtcbiAgICAgIGNvbnN0IHNoZWxsID0gZ2V0KGlkKVxuICAgICAgaWYgKHNoZWxsLnN0YXR1cyAhPT0gJ3J1bm5pbmcnKSByZXR1cm4geyBpZDogc2hlbGwuaWQsIHN0YXR1czogc2hlbGwuc3RhdHVzLCBleGl0Q29kZTogc2hlbGwuZXhpdENvZGUgfVxuICAgICAgc2hlbGwua2lsbGVkQnkgPSBieVxuICAgICAgc2hlbGwuY2hpbGQua2lsbCgnU0lHVEVSTScpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHNoZWxsLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSBzaGVsbC5jaGlsZC5raWxsKCdTSUdLSUxMJylcbiAgICAgIH0sIDMwMDApLnVucmVmKClcbiAgICAgIHJldHVybiB7IGlkOiBzaGVsbC5pZCwgc3RhdHVzOiAna2lsbGluZycgfVxuICAgIH0sXG4gICAgZGlzbWlzcyhpZCkge1xuICAgICAgY29uc3Qgc2hlbGwgPSBzaGVsbHMuZ2V0KFN0cmluZyhpZCkpXG4gICAgICBpZiAoc2hlbGwgJiYgc2hlbGwuc3RhdHVzID09PSAnZXhpdGVkJykge1xuICAgICAgICBzaGVsbHMuZGVsZXRlKFN0cmluZyhpZCkpXG4gICAgICAgIG9uQ2hhbmdlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpc3QoKSB7XG4gICAgICByZXR1cm4gWy4uLnNoZWxscy52YWx1ZXMoKV0ubWFwKHB1YmxpY1ZpZXcpXG4gICAgfSxcbiAgICBydW5uaW5nKCkge1xuICAgICAgcmV0dXJuIFsuLi5zaGVsbHMudmFsdWVzKCldLmZpbHRlcigocykgPT4gcy5zdGF0dXMgPT09ICdydW5uaW5nJykubGVuZ3RoXG4gICAgfSxcbiAgICBraWxsQWxsKCkge1xuICAgICAgZm9yIChjb25zdCBzaGVsbCBvZiBzaGVsbHMudmFsdWVzKCkpIHtcbiAgICAgICAgaWYgKHNoZWxsLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSB7XG4gICAgICAgICAgc2hlbGwua2lsbGVkQnkgPSAndXNlcidcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2hlbGwuY2hpbGQua2lsbCgnU0lHS0lMTCcpXG4gICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdub2RlOmNyeXB0bydcblxuZXhwb3J0IGNvbnN0IFNFU1NJT05fVkVSU0lPTiA9IDFcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VFdmVudCh0eXBlLCBkYXRhID0ge30pIHtcbiAgcmV0dXJuIHsgaWQ6IHJhbmRvbVVVSUQoKSwgYXQ6IERhdGUubm93KCksIHR5cGUsIGRhdGEgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUhlYWRlcih7IGN3ZCwgcm9vdCB9KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3Nlc3Npb24nLFxuICAgIHZlcnNpb246IFNFU1NJT05fVkVSU0lPTixcbiAgICBpZDogcmFuZG9tVVVJRCgpLFxuICAgIGN3ZCxcbiAgICByb290LFxuICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplTGluZShldmVudCkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZXZlbnQpICsgJ1xcbidcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGluZShsaW5lKSB7XG4gIGNvbnN0IHRyaW1tZWQgPSBsaW5lLnRyaW0oKVxuICBpZiAoIXRyaW1tZWQpIHJldHVybiBudWxsXG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh0cmltbWVkKVxuICAgIHJldHVybiBwYXJzZWQgJiYgdHlwZW9mIHBhcnNlZC50eXBlID09PSAnc3RyaW5nJyA/IHBhcnNlZCA6IG51bGxcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMaW5lcyh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAocGFyc2VMaW5lKS5maWx0ZXIoQm9vbGVhbilcbn1cbiIsICJpbXBvcnQgeyBhcHBlbmRGaWxlLCByZWFkRmlsZSwgcmVhZGRpciwgcm0sIHN0YXQgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgc2Vzc2lvbnNEaXIsIGVuc3VyZURpciwgcHJvamVjdERpciB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBtYWtlSGVhZGVyLCBzZXJpYWxpemVMaW5lLCBwYXJzZUxpbmVzLCBwYXJzZUxpbmUgfSBmcm9tICcuL2V2ZW50cy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlc3Npb24oeyBjd2QsIHJvb3QgfSkge1xuICBjb25zdCBoZWFkZXIgPSBtYWtlSGVhZGVyKHsgY3dkLCByb290IH0pXG4gIGNvbnN0IGZpbGUgPSBqb2luKGVuc3VyZURpcihzZXNzaW9uc0Rpcihyb290KSksIGAke2hlYWRlci5pZH0uanNvbmxgKVxuICBjb25zdCBzZXNzaW9uID0gb3BlblNlc3Npb24oeyBmaWxlLCBoZWFkZXIgfSlcbiAgc2Vzc2lvbi5hcHBlbmQoaGVhZGVyKVxuICByZXR1cm4gc2Vzc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlblNlc3Npb24oeyBmaWxlLCBoZWFkZXIgfSkge1xuICBsZXQgcXVldWUgPSBQcm9taXNlLnJlc29sdmUoKVxuICByZXR1cm4ge1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gICAgZmlsZSxcbiAgICBoZWFkZXIsXG4gICAgYXBwZW5kKGV2ZW50KSB7XG4gICAgICBxdWV1ZSA9IHF1ZXVlLnRoZW4oKCkgPT4gYXBwZW5kRmlsZShmaWxlLCBzZXJpYWxpemVMaW5lKGV2ZW50KSkpXG4gICAgICByZXR1cm4gcXVldWVcbiAgICB9LFxuICAgIGZsdXNoKCkge1xuICAgICAgcmV0dXJuIHF1ZXVlXG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFNlc3Npb24oZmlsZSkge1xuICBjb25zdCBldmVudHMgPSBwYXJzZUxpbmVzKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICBjb25zdCBoZWFkZXIgPSBldmVudHNbMF0/LnR5cGUgPT09ICdzZXNzaW9uJyA/IGV2ZW50cy5zaGlmdCgpIDogbnVsbFxuICBpZiAoIWhlYWRlcikgdGhyb3cgbmV3IEVycm9yKGBub3QgYSBwaWNvIHNlc3Npb24gZmlsZTogJHtmaWxlfWApXG4gIHJldHVybiB7IGhlYWRlciwgZXZlbnRzIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2Vzc2lvbk1ldGEoZmlsZSkge1xuICBjb25zdCBbaW5mbywgaGFuZGxlXSA9IGF3YWl0IFByb21pc2UuYWxsKFtzdGF0KGZpbGUpLCByZWFkRmlsZShmaWxlLCAndXRmLTgnKV0pXG4gIGNvbnN0IGxpbmVzID0gaGFuZGxlLnNwbGl0KCdcXG4nKVxuICBjb25zdCBoZWFkZXIgPSBwYXJzZUxpbmUobGluZXNbMF0pXG4gIGlmICghaGVhZGVyIHx8IGhlYWRlci50eXBlICE9PSAnc2Vzc2lvbicpIHJldHVybiBudWxsXG4gIGxldCBhdXRvbWF0aWNUaXRsZSA9IG51bGxcbiAgbGV0IGN1c3RvbVRpdGxlID0gbnVsbFxuICBsZXQgY29sb3IgPSBudWxsXG4gIGxldCB0dXJucyA9IDBcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNsaWNlKDEpKSB7XG4gICAgY29uc3QgZXZlbnQgPSBwYXJzZUxpbmUobGluZSlcbiAgICBpZiAoIWV2ZW50KSBjb250aW51ZVxuICAgIGlmIChldmVudC50eXBlID09PSAndGl0bGUnKSBjdXN0b21UaXRsZSA9IGV2ZW50LmRhdGEudGV4dFxuICAgIGlmIChldmVudC50eXBlID09PSAnY29sb3InKSBjb2xvciA9IGV2ZW50LmRhdGEudmFsdWVcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21lc3NhZ2UnICYmIGV2ZW50LmRhdGEubWVzc2FnZT8ucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgICB0dXJucysrXG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnQuZGF0YS5tZXNzYWdlLmNvbnRlbnRcbiAgICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpXG4gICAgICAgID8gY29udGVudC5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHApID0+IHAudGV4dCkuam9pbignICcpXG4gICAgICAgIDogU3RyaW5nKGNvbnRlbnQpXG4gICAgICBpZiAoIWF1dG9tYXRpY1RpdGxlICYmIHRleHQudHJpbSgpKSBhdXRvbWF0aWNUaXRsZSA9IHRleHQudHJpbSgpLnNsaWNlKDAsIDIwMClcbiAgICB9XG4gIH1cbiAgY29uc3QgdGl0bGUgPSBjdXN0b21UaXRsZSB8fCBhdXRvbWF0aWNUaXRsZVxuICBpZiAoIXRpdGxlKSByZXR1cm4gbnVsbFxuICByZXR1cm4geyBmaWxlLCBoZWFkZXIsIHRpdGxlLCBjb2xvciwgdHVybnMsIGF0OiBpbmZvLm10aW1lTXMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBsaXN0RGlyKGRpcikge1xuICB0cnkge1xuICAgIGNvbnN0IG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIpXG4gICAgcmV0dXJuIG5hbWVzLmZpbHRlcigobikgPT4gbi5lbmRzV2l0aCgnLmpzb25sJykpLm1hcCgobikgPT4gam9pbihkaXIsIG4pKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlU2Vzc2lvbihmaWxlKSB7XG4gIGNvbnN0IHNlc3Npb25JZCA9IGJhc2VuYW1lKGZpbGUsICcuanNvbmwnKVxuICBjb25zdCBwcm9qZWN0ID0gZGlybmFtZShkaXJuYW1lKGZpbGUpKVxuICBhd2FpdCBybShmaWxlKVxuICBhd2FpdCBybShqb2luKHByb2plY3QsICdzY3JhdGNocGFkcycsIHNlc3Npb25JZCksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlUHJvamVjdERhdGEocm9vdCkge1xuICByZXR1cm4gcm0ocHJvamVjdERpcihyb290KSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2Vzc2lvbnMoeyBzY29wZSwgcm9vdCB9KSB7XG4gIGxldCBmaWxlcyA9IFtdXG4gIGlmIChzY29wZSA9PT0gJ2V2ZXJ5d2hlcmUnKSB7XG4gICAgY29uc3QgcHJvamVjdHNEaXIgPSBqb2luKHBpY29Ib21lKCksICdwcm9qZWN0cycpXG4gICAgbGV0IHByb2plY3RzID0gW11cbiAgICB0cnkge1xuICAgICAgcHJvamVjdHMgPSBhd2FpdCByZWFkZGlyKHByb2plY3RzRGlyKVxuICAgIH0gY2F0Y2gge31cbiAgICBjb25zdCBuZXN0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb2plY3RzLm1hcCgocCkgPT4gbGlzdERpcihqb2luKHByb2plY3RzRGlyLCBwLCAnc2Vzc2lvbnMnKSkpLFxuICAgIClcbiAgICBmaWxlcyA9IG5lc3RlZC5mbGF0KClcbiAgfSBlbHNlIHtcbiAgICBmaWxlcyA9IGF3YWl0IGxpc3REaXIoc2Vzc2lvbnNEaXIocm9vdCkpXG4gIH1cbiAgY29uc3QgbWV0YXMgPSBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoKGYpID0+IHNlc3Npb25NZXRhKGYpLmNhdGNoKCgpID0+IG51bGwpKSlcbiAgcmV0dXJuIG1ldGFzLmZpbHRlcihCb29sZWFuKS5zb3J0KChhLCBiKSA9PiBiLmF0IC0gYS5hdClcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gY29tcGFjdGlvblByb21wdChjdXN0b21JbnN0cnVjdGlvbnMgPSAnJykge1xuICBsZXQgcHJvbXB0ID0gYFlvdXIgdGFzayBpcyB0byBjcmVhdGUgYSBkZXRhaWxlZCBzdW1tYXJ5IG9mIHRoZSBjb252ZXJzYXRpb24gc28gZmFyLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSB1c2VyJ3MgZXhwbGljaXQgcmVxdWVzdHMgYW5kIHlvdXIgcHJldmlvdXMgYWN0aW9ucy4gVGhlIHN1bW1hcnkgbXVzdCBsZXQgd29yayBjb250aW51ZSBzZWFtbGVzc2x5IHdpdGhvdXQgdGhlIG9yaWdpbmFsIG1lc3NhZ2VzLlxuXG5CZWZvcmUgd3JpdGluZyB0aGUgc3VtbWFyeSwgZHJhZnQgeW91ciBhbmFseXNpcyBpbnNpZGUgPGFuYWx5c2lzPiB0YWdzIChpdCB3aWxsIGJlIGRpc2NhcmRlZCk6IGNocm9ub2xvZ2ljYWxseSByZS1yZWFkIHRoZSBjb252ZXJzYXRpb24gYW5kIG5vdGUgdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cyBhbmQgaW50ZW50cywgeW91ciBhcHByb2FjaCwga2V5IGRlY2lzaW9ucywgZmlsZSBuYW1lcyBhbmQgY29kZSwgZXJyb3JzIGFuZCBob3cgdGhleSB3ZXJlIGZpeGVkLCBhbmQgYW55IHVzZXIgZmVlZGJhY2sgb3IgY29ycmVjdGlvbnMsIGVzcGVjaWFsbHkgd2hlcmUgdGhlIHVzZXIgdG9sZCB5b3UgdG8gZG8gc29tZXRoaW5nIGRpZmZlcmVudGx5LlxuXG5UaGVuIHByb2R1Y2UgYSA8c3VtbWFyeT4gYmxvY2sgd2l0aCBleGFjdGx5IHRoZXNlIHNlY3Rpb25zOlxuXG4xLiBQcmltYXJ5IFJlcXVlc3QgYW5kIEludGVudDogYWxsIG9mIHRoZSB1c2VyJ3MgZXhwbGljaXQgcmVxdWVzdHMsIGluIGRldGFpbFxuMi4gS2V5IFRlY2huaWNhbCBDb25jZXB0czogdGVjaG5vbG9naWVzLCBwYXR0ZXJucywgYW5kIGRlY2lzaW9ucyBpbiBwbGF5XG4zLiBGaWxlcyBhbmQgQ29kZSBTZWN0aW9uczogZmlsZXMgZXhhbWluZWQsIG1vZGlmaWVkLCBvciBjcmVhdGVkOyB3aHkgZWFjaCBtYXR0ZXJzOyBpbXBvcnRhbnQgc25pcHBldHMgdmVyYmF0aW1cbjQuIEVycm9ycyBhbmQgRml4ZXM6IGV2ZXJ5IGVycm9yIGhpdCBhbmQgaG93IGl0IHdhcyBmaXhlZCwgaW5jbHVkaW5nIHVzZXIgZmVlZGJhY2sgYWJvdXQgaXRcbjUuIEFsbCBVc2VyIE1lc3NhZ2VzOiBldmVyeSBub24tdG9vbC1yZXN1bHQgdXNlciBtZXNzYWdlLCBzbyBpbnRlbnQgYW5kIGl0cyBjaGFuZ2VzIHN1cnZpdmVcbjYuIFBlbmRpbmcgVGFza3M6IGFueXRoaW5nIGV4cGxpY2l0bHkgcmVxdWVzdGVkIGFuZCBub3QgeWV0IGRvbmVcbjcuIEN1cnJlbnQgV29yazogcHJlY2lzZWx5IHdoYXQgd2FzIGluIHByb2dyZXNzIGp1c3Qgbm93LCB3aXRoIGZpbGUgbmFtZXMgYW5kIGRpcmVjdCBxdW90ZXNcbjguIE5leHQgU3RlcDogb25seSBpZiBkaXJlY3RseSBpbiBsaW5lIHdpdGggdGhlIG1vc3QgcmVjZW50IGV4cGxpY2l0IHJlcXVlc3Q7IGluY2x1ZGUgdmVyYmF0aW0gcXVvdGVzIHNob3dpbmcgZXhhY3RseSB3aGVyZSB3b3JrIGxlZnQgb2ZmLCBvciBzdGF0ZSB0aGF0IHRoZXJlIGlzIG5vbmVcblxuVGhpcyBzdW1tYXJpemF0aW9uIHJlcXVlc3QgaXMgbm90IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbjogZG8gbm90IGxpc3QgaXQgYXMgYSB1c2VyIG1lc3NhZ2UsIGNvdW50IGl0IGFzIGEgdGFzaywgb3IgbGV0IGl0IGFwcGVhciBhcyB0aGUgY3VycmVudCB3b3JrIG9yIG5leHQgc3RlcC4gU3VtbWFyaXplIG9ubHkgd2hhdCBjYW1lIGJlZm9yZSBpdC5cblxuUmVzcG9uZCB3aXRoIHBsYWluIHRleHQgb25seTogb25lIDxhbmFseXNpcz4gYmxvY2sgZm9sbG93ZWQgYnkgb25lIDxzdW1tYXJ5PiBibG9jay5gXG5cbiAgaWYgKGN1c3RvbUluc3RydWN0aW9ucy50cmltKCkpIHtcbiAgICBwcm9tcHQgKz0gYFxcblxcbkFkZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zOlxcbiR7Y3VzdG9tSW5zdHJ1Y3Rpb25zLnRyaW0oKX1gXG4gIH1cbiAgcmV0dXJuIHByb21wdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Q29tcGFjdFN1bW1hcnkocmF3KSB7XG4gIGxldCBmb3JtYXR0ZWQgPSByYXcucmVwbGFjZSgvPGFuYWx5c2lzPltcXHNcXFNdKj88XFwvYW5hbHlzaXM+LywgJycpXG4gIGNvbnN0IG1hdGNoID0gZm9ybWF0dGVkLm1hdGNoKC88c3VtbWFyeT4oW1xcc1xcU10qPykoPzo8XFwvc3VtbWFyeT58JCkvKVxuICBpZiAobWF0Y2gpIHtcbiAgICBmb3JtYXR0ZWQgPSBtYXRjaFsxXVxuICB9IGVsc2UgaWYgKGZvcm1hdHRlZC5pbmNsdWRlcygnPGFuYWx5c2lzPicpKSB7XG4gICAgLy8gdW5jbG9zZWQgYW5hbHlzaXMgd2l0aCBubyBzdW1tYXJ5IGJsb2NrOiBzYWx2YWdlIGZyb20gdGhlIGZpcnN0XG4gICAgLy8gc2VjdGlvbiBoZWFkZXIgcmF0aGVyIHRoYW4gcGVyc2lzdGluZyB0aGUgc2NyYXRjaHBhZFxuICAgIGNvbnN0IHN0YXJ0ID0gZm9ybWF0dGVkLnNlYXJjaCgvXjFcXC5cXHMvbSlcbiAgICBmb3JtYXR0ZWQgPSBzdGFydCA+PSAwID8gZm9ybWF0dGVkLnNsaWNlKHN0YXJ0KSA6ICcnXG4gIH1cbiAgcmV0dXJuIGZvcm1hdHRlZC5yZXBsYWNlKC9cXG5cXG4rL2csICdcXG5cXG4nKS50cmltKClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1bW1hcnlTZWN0aW9ucyh0ZXh0KSB7XG4gIHJldHVybiAodGV4dC5tYXRjaCgvXlxcZCtcXC5cXHMvZ20pIHx8IFtdKS5sZW5ndGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRpbnVhdGlvbk1lc3NhZ2Uoc3VtbWFyeSwgeyBzZXNzaW9uRmlsZSwgcmVjZW50S2VwdCB9ID0ge30pIHtcbiAgbGV0IHRleHQgPSBgW3N5c3RlbSBub3RpZmljYXRpb25dIFRoZSBlYXJsaWVyIHBvcnRpb24gb2YgdGhpcyBjb252ZXJzYXRpb24gd2FzIGNvbXBhY3RlZCB0byBmcmVlIGNvbnRleHQuIFN1bW1hcnkgb2Ygd2hhdCBjYW1lIGJlZm9yZTpcXG5cXG4ke3N1bW1hcnl9YFxuICBpZiAoc2Vzc2lvbkZpbGUpIHtcbiAgICB0ZXh0ICs9IGBcXG5cXG5UaGUgY29tcGxldGUgcHJlLWNvbXBhY3Rpb24gaGlzdG9yeSBpcyBwcmVzZXJ2ZWQgYXQgJHtzZXNzaW9uRmlsZX0gKGpzb25sLCBvbmUgZXZlbnQgcGVyIGxpbmUpLiBJZiB5b3UgbmVlZCBleGFjdCBkZXRhaWxzIGZyb20gYmVmb3JlIGNvbXBhY3Rpb24sIHN1Y2ggYXMgY29kZSB5b3UgZ2VuZXJhdGVkIG9yIHByZWNpc2UgZXJyb3IgdGV4dCwgcmVhZCB0aGF0IGZpbGUgd2l0aCB5b3VyIHRvb2xzLmBcbiAgfVxuICBpZiAocmVjZW50S2VwdCkge1xuICAgIHRleHQgKz0gYFxcblxcblRoZSBtb3N0IHJlY2VudCBtZXNzYWdlcyBmb2xsb3cgdmVyYmF0aW0uYFxuICB9XG4gIHRleHQgKz0gYFxcblxcbkNvbnRpbnVlIGV4YWN0bHkgd2hlcmUgdGhpbmdzIGxlZnQgb2ZmLiBEbyBub3QgcmVjYXAsIGFja25vd2xlZGdlIHRoaXMgc3VtbWFyeSwgb3IgcmUtYXNrIHNldHRsZWQgcXVlc3Rpb25zLmBcbiAgcmV0dXJuIHRleHRcbn1cbiIsICJpbXBvcnQgeyBjb250aW51YXRpb25NZXNzYWdlIH0gZnJvbSAnLi9jb21wYWN0aW9uLmpzJ1xuXG5jb25zdCBEUk9QUElOR19NT0RFUyA9IFsnYm90aCcsICdjaGF0JywgJ3N1bW1hcnknXVxuXG4vLyBjb250ZXh0IGVkaXRpbmc6IGEgbGFyZ2UgdG9vbCByZXN1bHQga2VlcHMgZ2V0dGluZyByZS1zZW50IHdpdGggZXZlcnlcbi8vIHJlcXVlc3QgbG9uZyBhZnRlciB0aGUgbW9kZWwgaGFzIHVzZWQgaXQuIG9uY2UgdGhlIGNvbnZlcnNhdGlvbiBoYXMgbW92ZWRcbi8vIG9uICh0d28gdXNlciB0dXJucyBwYXN0IGl0KSwgdGhlIGJvZHkgaXMgcmVwbGFjZWQgd2l0aCBhIHNob3J0IG5vdGUgaW4gdGhlXG4vLyBtb2RlbCdzIHZpZXcgb25seTsgdGhlIHRyYW5zY3JpcHQgYW5kIHRoZSBqc29ubCBrZWVwIHRoZSByZWFsIHRoaW5nLCBhbmRcbi8vIHRoZSBtb2RlbCBjYW4gcmUtcnVuIHRoZSB0b29sIGlmIGl0IHRydWx5IG5lZWRzIHRoZSBkYXRhIGFnYWluXG5jb25zdCBFTElERV9NSU5fQ0hBUlMgPSA0MDAwXG5jb25zdCBFTElERV9BRlRFUl9VU0VSX1RVUk5TID0gMlxuXG5mdW5jdGlvbiBlbGlkZVN0YWxlVG9vbFJlc3VsdHMoaGlzdG9yeSkge1xuICBjb25zdCB1c2VySW5kZXhlcyA9IFtdXG4gIGhpc3RvcnkuZm9yRWFjaCgobWVzc2FnZSwgaSkgPT4ge1xuICAgIGlmIChtZXNzYWdlLnJvbGUgPT09ICd1c2VyJykgdXNlckluZGV4ZXMucHVzaChpKVxuICB9KVxuICBjb25zdCBjdXRvZmYgPSB1c2VySW5kZXhlcy5hdCgtRUxJREVfQUZURVJfVVNFUl9UVVJOUylcbiAgaWYgKGN1dG9mZiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gaGlzdG9yeVxuICByZXR1cm4gaGlzdG9yeS5tYXAoKG1lc3NhZ2UsIGkpID0+IHtcbiAgICBpZiAoaSA+PSBjdXRvZmYgfHwgbWVzc2FnZS5yb2xlICE9PSAndG9vbCcpIHJldHVybiBtZXNzYWdlXG4gICAgY29uc3QgY29udGVudCA9IFN0cmluZyhtZXNzYWdlLmNvbnRlbnQgPz8gJycpXG4gICAgaWYgKGNvbnRlbnQubGVuZ3RoIDwgRUxJREVfTUlOX0NIQVJTKSByZXR1cm4gbWVzc2FnZVxuICAgIHJldHVybiB7XG4gICAgICAuLi5tZXNzYWdlLFxuICAgICAgY29udGVudDogYFt0b29sIHJlc3VsdCBlbGlkZWQgdG8gc2F2ZSBjb250ZXh0OiAke2NvbnRlbnQubGVuZ3RoLnRvTG9jYWxlU3RyaW5nKCl9IGNoYXJzLiByZS1ydW4gdGhlIHRvb2wgaWYgdGhpcyBpcyBuZWVkZWQgYWdhaW5dYCxcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGFjdGl2ZVJld2luZHMoZXZlbnRzKSB7XG4gIGNvbnN0IGNhbmNlbGVkID0gbmV3IFNldCgpXG4gIGZvciAoY29uc3QgZSBvZiBldmVudHMpIHtcbiAgICBpZiAoZS50eXBlID09PSAncmV3aW5kX3VuZG8nKSBjYW5jZWxlZC5hZGQoZS5kYXRhLnJld2luZElkKVxuICB9XG4gIHJldHVybiBldmVudHMuZmlsdGVyKChlKSA9PiBlLnR5cGUgPT09ICdyZXdpbmQnICYmICFjYW5jZWxlZC5oYXMoZS5pZCkpXG59XG5cbmZ1bmN0aW9uIGRyb3BwZWRJZHMoZXZlbnRzKSB7XG4gIGNvbnN0IGRyb3BwZWQgPSBuZXcgU2V0KClcbiAgY29uc3QgaW5kZXggPSBuZXcgTWFwKGV2ZW50cy5tYXAoKGUsIGkpID0+IFtlLmlkLCBpXSkpXG4gIGZvciAoY29uc3QgcmV3aW5kIG9mIGFjdGl2ZVJld2luZHMoZXZlbnRzKSkge1xuICAgIGlmICghRFJPUFBJTkdfTU9ERVMuaW5jbHVkZXMocmV3aW5kLmRhdGEubW9kZSkpIGNvbnRpbnVlXG4gICAgY29uc3QgZnJvbSA9IGluZGV4LmdldChyZXdpbmQuZGF0YS50YXJnZXQpXG4gICAgY29uc3QgdG8gPSBpbmRleC5nZXQocmV3aW5kLmlkKVxuICAgIGlmIChmcm9tID09PSB1bmRlZmluZWQgfHwgdG8gPT09IHVuZGVmaW5lZCkgY29udGludWVcbiAgICBmb3IgKGxldCBpID0gZnJvbTsgaSA8IHRvOyBpKyspIGRyb3BwZWQuYWRkKGV2ZW50c1tpXS5pZClcbiAgfVxuICByZXR1cm4gZHJvcHBlZFxufVxuXG5mdW5jdGlvbiBhZGRVc2FnZUludG8odG90YWwsIHVzYWdlKSB7XG4gIHRvdGFsLnByb21wdFRva2VucyArPSB1c2FnZS5wcm9tcHRUb2tlbnMgfHwgMFxuICB0b3RhbC5jb21wbGV0aW9uVG9rZW5zICs9IHVzYWdlLmNvbXBsZXRpb25Ub2tlbnMgfHwgMFxuICB0b3RhbC50b3RhbFRva2VucyArPSB1c2FnZS50b3RhbFRva2VucyB8fCAwXG4gIHRvdGFsLmNhY2hlZFRva2VucyArPSB1c2FnZS5jYWNoZWRUb2tlbnMgfHwgMFxuICB0b3RhbC50aG91Z2h0VG9rZW5zICs9IHVzYWdlLnRob3VnaHRUb2tlbnMgfHwgMFxufVxuXG5mdW5jdGlvbiBlbXB0eVVzYWdlKCkge1xuICByZXR1cm4geyBwcm9tcHRUb2tlbnM6IDAsIGNvbXBsZXRpb25Ub2tlbnM6IDAsIHRvdGFsVG9rZW5zOiAwLCBjYWNoZWRUb2tlbnM6IDAsIHRob3VnaHRUb2tlbnM6IDAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MocmF3KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyBfcmF3OiByYXcgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHB1c2hIaXN0b3J5KHN0YXRlLCBtZXNzYWdlLCBldmVudElkKSB7XG4gIHN0YXRlLnByb3ZpZGVySGlzdG9yeS5wdXNoKG1lc3NhZ2UpXG4gIHN0YXRlLmhpc3RvcnlFdmVudElkcy5wdXNoKGV2ZW50SWQpXG59XG5cbmZ1bmN0aW9uIGZvbGRNZXNzYWdlKHN0YXRlLCBldmVudCkge1xuICBjb25zdCBtZXNzYWdlID0gZXZlbnQuZGF0YS5tZXNzYWdlXG4gIGlmICghbWVzc2FnZSB8fCBtZXNzYWdlLnJvbGUgPT09ICdzeXN0ZW0nKSByZXR1cm5cbiAgcHVzaEhpc3Rvcnkoc3RhdGUsIG1lc3NhZ2UsIGV2ZW50LmlkKVxuXG4gIGlmIChtZXNzYWdlLnJvbGUgPT09ICd1c2VyJykge1xuICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KG1lc3NhZ2UuY29udGVudClcbiAgICAgID8gbWVzc2FnZS5jb250ZW50XG4gICAgICAgICAgLm1hcCgocCkgPT4gKHAudHlwZSA9PT0gJ3RleHQnID8gcC50ZXh0IDogYFtpbWFnZTogJHtTdHJpbmcocC5zb3VyY2U/LnBhdGggfHwgJycpLnNwbGl0KCcvJykucG9wKCkgfHwgJ2F0dGFjaGVkJ31dYCkpXG4gICAgICAgICAgLmpvaW4oJycpXG4gICAgICA6IFN0cmluZyhtZXNzYWdlLmNvbnRlbnQpXG4gICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3VzZXInLCB0ZXh0LCBjb250ZW50OiBtZXNzYWdlLmNvbnRlbnQsIGV2ZW50SWQ6IGV2ZW50LmlkIH0pXG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICBpZiAobWVzc2FnZS5jb250ZW50KSB7XG4gICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAnYXNzaXN0YW50JywgdGV4dDogbWVzc2FnZS5jb250ZW50LCBtb2RlbDogc3RhdGUubW9kZWwgfSlcbiAgICB9XG4gICAgZm9yIChjb25zdCBjYWxsIG9mIG1lc3NhZ2UudG9vbF9jYWxscyB8fCBbXSkge1xuICAgICAgY29uc3QgaXRlbSA9IHtcbiAgICAgICAga2luZDogJ3Rvb2wnLFxuICAgICAgICBjYWxsSWQ6IGNhbGwuaWQsXG4gICAgICAgIG5hbWU6IGNhbGwuZnVuY3Rpb24ubmFtZSxcbiAgICAgICAgYXJnczogcGFyc2VBcmdzKGNhbGwuZnVuY3Rpb24uYXJndW1lbnRzKSxcbiAgICAgICAgdGl0bGU6IGNhbGwuZnVuY3Rpb24ubmFtZSxcbiAgICAgICAgc3RhdHVzOiAnZG9uZScsXG4gICAgICAgIGV2ZW50SWQ6IGV2ZW50LmlkLFxuICAgICAgfVxuICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKGl0ZW0pXG4gICAgICBzdGF0ZS50b29sSXRlbXMuc2V0KGNhbGwuaWQsIGl0ZW0pXG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIGlmIChtZXNzYWdlLnJvbGUgPT09ICd0b29sJykge1xuICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KG1lc3NhZ2UudG9vbF9jYWxsX2lkKVxuICAgIGlmIChpdGVtKSBpdGVtLnJlc3VsdFRleHQgPSBTdHJpbmcobWVzc2FnZS5jb250ZW50KVxuICB9XG59XG5cbmZ1bmN0aW9uIGZvbGRSZXdpbmQoc3RhdGUsIGV2ZW50KSB7XG4gIGNvbnN0IHsgbW9kZSwgc3VtbWFyeVRleHQsIHJldmVydGVkID0gW10gfSA9IGV2ZW50LmRhdGFcbiAgZm9yIChjb25zdCBjYWxsSWQgb2YgcmV2ZXJ0ZWQpIHtcbiAgICBjb25zdCBpdGVtID0gc3RhdGUudG9vbEl0ZW1zLmdldChjYWxsSWQpXG4gICAgaWYgKGl0ZW0pIGl0ZW0uc3RhdHVzID0gJ3JldmVydGVkJ1xuICB9XG4gIGlmIChtb2RlID09PSAnc3VtbWFyeScgJiYgc3VtbWFyeVRleHQpIHtcbiAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAnc3VtbWFyeScsIHNvdXJjZTogJ3Jld2luZCcsIHRleHQ6IHN1bW1hcnlUZXh0IH0pXG4gICAgcHVzaEhpc3Rvcnkoc3RhdGUsIHtcbiAgICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxuICAgICAgY29udGVudDogYFtzdW1tYXJ5IG9mIHRoZSByZXdvdW5kIGNvbnZlcnNhdGlvbl1cXG4ke3N1bW1hcnlUZXh0fWAsXG4gICAgfSwgZXZlbnQuaWQpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVN0YXRlKGV2ZW50cykge1xuICBjb25zdCBkcm9wcGVkID0gZHJvcHBlZElkcyhldmVudHMpXG4gIGNvbnN0IGNhbmNlbGVkVW5kb1RhcmdldHMgPSBuZXcgU2V0KFxuICAgIGV2ZW50cy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3Jld2luZF91bmRvJykubWFwKChlKSA9PiBlLmRhdGEucmV3aW5kSWQpLFxuICApXG5cbiAgY29uc3Qgc3RhdGUgPSB7XG4gICAgdHJhbnNjcmlwdDogW10sXG4gICAgcHJvdmlkZXJIaXN0b3J5OiBbXSxcbiAgICBoaXN0b3J5RXZlbnRJZHM6IFtdLFxuICAgIG1vZGVsOiBudWxsLFxuICAgIGVmZm9ydDogdW5kZWZpbmVkLFxuICAgIHVzYWdlOiBlbXB0eVVzYWdlKCksXG4gICAgdXNhZ2VCeU1vZGVsOiB7fSxcbiAgICB1c2FnZUFjdGl2ZTogZW1wdHlVc2FnZSgpLFxuICAgIHVzYWdlQWN0aXZlQnlNb2RlbDoge30sXG4gICAgbGFzdFByb21wdFRva2VuczogMCxcbiAgICBsYXN0UHJvbXB0TW9kZWw6IG51bGwsXG4gICAgbG9hZGVkQ29udGV4dDogbmV3IFNldCgpLFxuICAgIHRvb2xJdGVtczogbmV3IE1hcCgpLFxuICB9XG5cbiAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3VzYWdlJykge1xuICAgICAgYWRkVXNhZ2VJbnRvKHN0YXRlLnVzYWdlLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgY29uc3QgYnlNb2RlbCA9IChzdGF0ZS51c2FnZUJ5TW9kZWxbZXZlbnQuZGF0YS5tb2RlbF0gfHw9IGVtcHR5VXNhZ2UoKSlcbiAgICAgIGFkZFVzYWdlSW50byhieU1vZGVsLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgaWYgKCFkcm9wcGVkLmhhcyhldmVudC5pZCkpIHtcbiAgICAgICAgYWRkVXNhZ2VJbnRvKHN0YXRlLnVzYWdlQWN0aXZlLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgICBjb25zdCBhY3RpdmVCeU1vZGVsID0gKHN0YXRlLnVzYWdlQWN0aXZlQnlNb2RlbFtldmVudC5kYXRhLm1vZGVsXSB8fD0gZW1wdHlVc2FnZSgpKVxuICAgICAgICBhZGRVc2FnZUludG8oYWN0aXZlQnlNb2RlbCwgZXZlbnQuZGF0YS51c2FnZSlcbiAgICAgICAgLy8gb25seSBldmVudHMgdGhhdCByZWNvcmRlZCB0aGUgZmluYWwgcmVxdWVzdCdzIHNpemUgY2FuIGRyaXZlIHRoZVxuICAgICAgICAvLyBjb250ZXh0IG1ldGVyOyBvbGRlciBjdW11bGF0aXZlLW9ubHkgZXZlbnRzIHdvdWxkIG92ZXJzdGF0ZSBpdFxuICAgICAgICBpZiAoZXZlbnQuZGF0YS5sYXN0UHJvbXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zID0gZXZlbnQuZGF0YS5sYXN0UHJvbXB0XG4gICAgICAgICAgc3RhdGUubGFzdFByb21wdE1vZGVsID0gZXZlbnQuZGF0YS5tb2RlbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoZHJvcHBlZC5oYXMoZXZlbnQuaWQpKSBjb250aW51ZVxuXG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdtZXNzYWdlJzpcbiAgICAgICAgZm9sZE1lc3NhZ2Uoc3RhdGUsIGV2ZW50KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndG9vbF9tZXRhJzoge1xuICAgICAgICBjb25zdCBpdGVtID0gc3RhdGUudG9vbEl0ZW1zLmdldChldmVudC5kYXRhLmNhbGxJZClcbiAgICAgICAgaWYgKGl0ZW0pIE9iamVjdC5hc3NpZ24oaXRlbSwgZXZlbnQuZGF0YSwgeyBraW5kOiAndG9vbCcsIGNhbGxJZDogaXRlbS5jYWxsSWQgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2ludGVycnVwdCc6IHtcbiAgICAgICAgY29uc3QgbGFzdCA9IHN0YXRlLnRyYW5zY3JpcHQuYXQoLTEpXG4gICAgICAgIGlmIChsYXN0Py5raW5kID09PSAnYXNzaXN0YW50JykgbGFzdC5pbnRlcnJ1cHRlZCA9IHRydWVcbiAgICAgICAgaWYgKGxhc3Q/LmtpbmQgPT09ICd0b29sJyAmJiBsYXN0LnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSBsYXN0LnN0YXR1cyA9ICdpbnRlcnJ1cHRlZCdcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ21vZGVsX3N3aXRjaCc6XG4gICAgICAgIHN0YXRlLm1vZGVsID0gZXZlbnQuZGF0YS50b1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZWZmb3J0JzpcbiAgICAgICAgc3RhdGUuZWZmb3J0ID0gZXZlbnQuZGF0YS50b1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndGl0bGUnOlxuICAgICAgICBzdGF0ZS50aXRsZSA9IGV2ZW50LmRhdGEudGV4dFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnY29sb3InOlxuICAgICAgICBzdGF0ZS5jb2xvciA9IGV2ZW50LmRhdGEudmFsdWVcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Jld2luZCc6XG4gICAgICAgIGlmICghY2FuY2VsZWRVbmRvVGFyZ2V0cy5oYXMoZXZlbnQuaWQpKSBmb2xkUmV3aW5kKHN0YXRlLCBldmVudClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2NvbXBhY3QnOiB7XG4gICAgICAgIGNvbnN0IHsgc3VtbWFyeSwga2VlcEZyb20sIHNlc3Npb25GaWxlIH0gPSBldmVudC5kYXRhXG4gICAgICAgIGlmIChrZWVwRnJvbSAhPT0gdW5kZWZpbmVkIHx8IHNlc3Npb25GaWxlKSB7XG4gICAgICAgICAgY29uc3QgaWR4ID0ga2VlcEZyb20gPyBzdGF0ZS5oaXN0b3J5RXZlbnRJZHMuaW5kZXhPZihrZWVwRnJvbSkgOiAtMVxuICAgICAgICAgIGNvbnN0IGtlcHQgPSBpZHggPj0gMCA/IHN0YXRlLnByb3ZpZGVySGlzdG9yeS5zbGljZShpZHgpIDogW11cbiAgICAgICAgICBjb25zdCBrZXB0SWRzID0gaWR4ID49IDAgPyBzdGF0ZS5oaXN0b3J5RXZlbnRJZHMuc2xpY2UoaWR4KSA6IFtdXG4gICAgICAgICAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gW1xuICAgICAgICAgICAgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IGNvbnRpbnVhdGlvbk1lc3NhZ2Uoc3VtbWFyeSwgeyBzZXNzaW9uRmlsZSwgcmVjZW50S2VwdDoga2VwdC5sZW5ndGggPiAwIH0pIH0sXG4gICAgICAgICAgICAuLi5rZXB0LFxuICAgICAgICAgIF1cbiAgICAgICAgICBzdGF0ZS5oaXN0b3J5RXZlbnRJZHMgPSBbbnVsbCwgLi4ua2VwdElkc11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBbXG4gICAgICAgICAgICB7IHJvbGU6ICd1c2VyJywgY29udGVudDogYFtjb252ZXJzYXRpb24gc3VtbWFyeV1cXG4ke3N1bW1hcnl9YCB9LFxuICAgICAgICAgICAgeyByb2xlOiAnYXNzaXN0YW50JywgY29udGVudDogJ0dvdCBpdC4gQ29udGludWluZyBmcm9tIHRoYXQgc3VtbWFyeS4nIH0sXG4gICAgICAgICAgXVxuICAgICAgICAgIHN0YXRlLmhpc3RvcnlFdmVudElkcyA9IFtudWxsLCBudWxsXVxuICAgICAgICB9XG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdzdW1tYXJ5Jywgc291cmNlOiAnY29tcGFjdCcsIHRleHQ6IHN1bW1hcnkgfSlcbiAgICAgICAgc3RhdGUubGFzdFByb21wdFRva2VucyA9IDBcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NsZWFyJzpcbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdCA9IFtdXG4gICAgICAgIHN0YXRlLnByb3ZpZGVySGlzdG9yeSA9IFtdXG4gICAgICAgIHN0YXRlLmhpc3RvcnlFdmVudElkcyA9IFtdXG4gICAgICAgIHN0YXRlLnRvb2xJdGVtcyA9IG5ldyBNYXAoKVxuICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zID0gMFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnY29udGV4dF9maWxlJzpcbiAgICAgICAgc3RhdGUubG9hZGVkQ29udGV4dC5hZGQoZXZlbnQuZGF0YS5wYXRoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2tpbGwnOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAnc2tpbGwnLCBuYW1lOiBldmVudC5kYXRhLm5hbWUgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Rob3VnaHRzJzpcbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3Rob3VnaHRzJywgdGV4dDogZXZlbnQuZGF0YS50ZXh0IH0pXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzaGVsbF9ub3RlJzpcbiAgICAgIGNhc2UgJ3N5c3RlbV9ub3RlJzoge1xuICAgICAgICBwdXNoSGlzdG9yeShzdGF0ZSwgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IGV2ZW50LmRhdGEudGV4dCB9LCBldmVudC5pZClcbiAgICAgICAgY29uc3QgbGluZXMgPSBldmVudC5kYXRhLnRleHQuc3BsaXQoJ1xcbicpLmZpbHRlcihCb29sZWFuKVxuICAgICAgICBjb25zdCBhZ2VudENvbXBsZXRpb25zID0gbGluZXMuZmlsdGVyKChsaW5lKSA9PiAvXkFnZW50IFxcZCsgXFwoLitcXCkgZmluaXNoZWQgd2l0aCBzdGF0dXMgLy50ZXN0KGxpbmUpKVxuICAgICAgICBpZiAoYWdlbnRDb21wbGV0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRleHQgb2YgYWdlbnRDb21wbGV0aW9ucykgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ25vdGljZScsIHRleHQsIGFnZW50Q29tcGxldGlvbjogdHJ1ZSB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdub3RpY2UnLCB0ZXh0OiBsaW5lc1swXSB8fCAnJyB9KVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gZWxpZGVTdGFsZVRvb2xSZXN1bHRzKHN0YXRlLnByb3ZpZGVySGlzdG9yeSlcbiAgcmV0dXJuIHN0YXRlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VyRW50cmllcyhzdGF0ZSkge1xuICBjb25zdCBlbnRyaWVzID0gW11cbiAgc3RhdGUudHJhbnNjcmlwdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgIGlmIChpdGVtLmtpbmQgPT09ICd1c2VyJykgZW50cmllcy5wdXNoKHsgdGV4dDogaXRlbS50ZXh0LCBjb250ZW50OiBpdGVtLmNvbnRlbnQsIGluZGV4LCBldmVudElkOiBpdGVtLmV2ZW50SWQgfSlcbiAgfSlcbiAgcmV0dXJuIGVudHJpZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJld2luZFN0YXRzKHN0YXRlLCBpbmRleCkge1xuICBjb25zdCB0YWlsID0gc3RhdGUudHJhbnNjcmlwdC5zbGljZShpbmRleClcbiAgcmV0dXJuIHtcbiAgICBtc2dzOiB0YWlsLmxlbmd0aCxcbiAgICBlZGl0czogdGFpbC5maWx0ZXIoKG0pID0+IG0ua2luZCA9PT0gJ3Rvb2wnICYmIG0ucmV2ZXJ0ICYmIG0uc3RhdHVzICE9PSAncmV2ZXJ0ZWQnKSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGNvbXBvc2UsIHNjb3BlLCBtb2RlbCwgbm9Ub29sc0NhbGxlZCwgSW5oZXJpdCwgZ2V0VGV4dCB9IGZyb20gJ0BwcnNtL2FpJ1xuXG5hc3luYyBmdW5jdGlvbiBoeWRyYXRlUGFydChwYXJ0KSB7XG4gIGlmIChwYXJ0LnR5cGUgIT09ICdpbWFnZScgfHwgcGFydC5zb3VyY2U/LmtpbmQgIT09ICdwYXRoJykgcmV0dXJuIHBhcnRcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZEZpbGUocGFydC5zb3VyY2UucGF0aClcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIHNvdXJjZTogeyBraW5kOiAnYmFzZTY0JywgbWVkaWFUeXBlOiBwYXJ0LnNvdXJjZS5tZWRpYVR5cGUsIGRhdGE6IGRhdGEudG9TdHJpbmcoJ2Jhc2U2NCcpIH0sXG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyB0eXBlOiAndGV4dCcsIHRleHQ6IGBbaW1hZ2UgdW5hdmFpbGFibGU6ICR7cGFydC5zb3VyY2UucGF0aH1dYCB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5ZHJhdGVJbWFnZXMoaGlzdG9yeSkge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgaGlzdG9yeS5tYXAoYXN5bmMgKG1lc3NhZ2UpID0+XG4gICAgICBBcnJheS5pc0FycmF5KG1lc3NhZ2UuY29udGVudClcbiAgICAgICAgPyB7IC4uLm1lc3NhZ2UsIGNvbnRlbnQ6IGF3YWl0IFByb21pc2UuYWxsKG1lc3NhZ2UuY29udGVudC5tYXAoaHlkcmF0ZVBhcnQpKSB9XG4gICAgICAgIDogbWVzc2FnZSxcbiAgICApLFxuICApXG59XG5cbi8vIHJlYXNvbmluZyBtb2RlbHMgd2l0aCBsYXJnZSBjb250ZXh0cyBjYW4gc2l0IG1pbnV0ZXMgYmVmb3JlIHRoZSBmaXJzdFxuLy8gb3V0cHV0IHRva2VuOyB0aGlzIGd1YXJkcyBhZ2FpbnN0IHRydWx5IGRlYWQgc3RyZWFtcywgbm90IHNsb3cgb25lc1xuY29uc3QgU1RBTExfTVMgPSAzMDAwMDBcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbXBhY3RIaXN0b3J5KHsgaGlzdG9yeSwgbW9kZWxOYW1lLCBhdXRoLCBwcm9tcHQsIHNpZ25hbCwgb25TdHJlYW0gfSkge1xuICBjb25zdCBvdXQgPSBhd2FpdCBjb21wb3NlKFxuICAgIG1vZGVsKHtcbiAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAuLi4oYXV0aD8uYXBpS2V5ICYmIHsgYXBpS2V5OiBhdXRoLmFwaUtleSB9KSxcbiAgICAgIC4uLihhdXRoPy5oZWFkZXJzICYmIHsgaGVhZGVyczogYXV0aC5oZWFkZXJzIH0pLFxuICAgIH0pLFxuICApKHtcbiAgICBoaXN0b3J5OiBbLi4uaGlzdG9yeS5maWx0ZXIoKG0pID0+IG0ucm9sZSAhPT0gJ3N5c3RlbScpLCB7IHJvbGU6ICd1c2VyJywgY29udGVudDogcHJvbXB0IH1dLFxuICAgIHRvb2xzOiBbXSxcbiAgICBhYm9ydFNpZ25hbDogc2lnbmFsLFxuICAgIC4uLihvblN0cmVhbSAmJiB7IHN0cmVhbTogb25TdHJlYW0gfSksXG4gIH0pXG4gIGlmIChzaWduYWw/LmFib3J0ZWQpIHRocm93IG5ldyBFcnJvcignY29tcGFjdGlvbiBjYW5jZWxsZWQnKVxuICByZXR1cm4gZ2V0VGV4dChvdXQubGFzdFJlc3BvbnNlPy5jb250ZW50IHx8ICcnKS50cmltKClcbn1cblxuLy8gdGhlIHN1bW1hcnkgaGFzIGEgZml4ZWQgc2hhcGU6IGFuIDxhbmFseXNpcz4gc2NyYXRjaHBhZCwgdGhlbiA4IG51bWJlcmVkXG4vLyBzZWN0aW9uczsgd2F0Y2hpbmcgaGVhZGVycyBzdHJlYW0gYnkgaXMgcmVhbCBwcm9ncmVzcywgbm90IGFuIGVzdGltYXRlXG5leHBvcnQgZnVuY3Rpb24gY29tcGFjdFByb2dyZXNzKHN0cmVhbWVkKSB7XG4gIGNvbnN0IGNoYXJzID0gc3RyZWFtZWQubGVuZ3RoXG4gIGNvbnN0IGFmdGVyQW5hbHlzaXMgPSBzdHJlYW1lZC5zcGxpdCgnPC9hbmFseXNpcz4nKVsxXSA/PyBzdHJlYW1lZC5zcGxpdCgnPHN1bW1hcnk+JylbMV1cbiAgaWYgKGFmdGVyQW5hbHlzaXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgcGhhc2U6ICdhbmFseXppbmcnLCBzZWN0aW9uOiAwLCBjaGFycyB9XG4gIGNvbnN0IHNlY3Rpb25zID0gKGFmdGVyQW5hbHlzaXMubWF0Y2goL15cXHMqXFxkK1xcLlxccy9nbSkgfHwgW10pLmxlbmd0aFxuICBpZiAoc2VjdGlvbnMgPT09IDApIHJldHVybiB7IHBoYXNlOiAnYW5hbHl6aW5nJywgc2VjdGlvbjogMCwgY2hhcnMgfVxuICByZXR1cm4geyBwaGFzZTogJ3dyaXRpbmcnLCBzZWN0aW9uOiBNYXRoLm1pbig4LCBzZWN0aW9ucyksIGNoYXJzIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN1bW1hcml6ZVRleHQoeyB0ZXh0LCBtb2RlbE5hbWUsIGF1dGggfSkge1xuICBjb25zdCBvdXQgPSBhd2FpdCBjb21wb3NlKFxuICAgIG1vZGVsKHtcbiAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICBzeXN0ZW06ICdTdW1tYXJpemUgdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24gZXhjZXJwdCBpbiAyLTQgZGVuc2Ugc2VudGVuY2VzLiBDYXB0dXJlIGRlY2lzaW9ucywgY2hhbmdlcyBtYWRlLCBhbmQgb3BlbiBxdWVzdGlvbnMuIE91dHB1dCBvbmx5IHRoZSBzdW1tYXJ5LicsXG4gICAgICAuLi4oYXV0aD8uYXBpS2V5ICYmIHsgYXBpS2V5OiBhdXRoLmFwaUtleSB9KSxcbiAgICAgIC4uLihhdXRoPy5oZWFkZXJzICYmIHsgaGVhZGVyczogYXV0aC5oZWFkZXJzIH0pLFxuICAgIH0pLFxuICApKHRleHQuc2xpY2UoMCwgMzAwMDApKVxuICByZXR1cm4gZ2V0VGV4dChvdXQubGFzdFJlc3BvbnNlPy5jb250ZW50IHx8ICcnKS50cmltKClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blR1cm4oeyBoaXN0b3J5LCB0b29scywgcmVjb3JkZXIsIG1vZGVsTmFtZSwgZWZmb3J0LCBhdXRoLCBzeXN0ZW0sIHNpZ25hbCwgb25TdHJlYW0sIHN0YWxsTXMgPSBTVEFMTF9NUyB9KSB7XG4gIGNvbnN0IGNvbGxlY3RlZCA9IFtdXG4gIGxldCByb3VuZFRleHQgPSAnJ1xuICBsZXQgdXNhZ2VTZWVuID0gbnVsbFxuICBsZXQgc3RhbGxlZCA9IGZhbHNlXG4gIC8vIHVzYWdlIGV2ZW50cyBjYXJyeSBjdW11bGF0aXZlIHRvdGFscyBwZXIgcmVxdWVzdCByb3VuZCwgc28gY29uc2VjdXRpdmVcbiAgLy8gZGVsdGFzIHJlY292ZXIgZWFjaCByb3VuZCdzIHRydWUgaW5wdXQgc2l6ZTsgdGhlIGxhc3QgZGVsdGEgaXMgdGhlIHNpemVcbiAgLy8gb2YgdGhlIGN1cnJlbnQgY29udGV4dCBhcyBhY3R1YWxseSBzZW50XG4gIGxldCBjdW11bGF0aXZlUHJvbXB0ID0gMFxuICBsZXQgbGFzdFByb21wdFRva2VucyA9IDBcblxuICBjb25zdCBpbnRlcm5hbCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb25zdCBvblVzZXJBYm9ydCA9ICgpID0+IGludGVybmFsLmFib3J0KClcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgaW50ZXJuYWwuYWJvcnQoKVxuICBlbHNlIHNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvblVzZXJBYm9ydCwgeyBvbmNlOiB0cnVlIH0pXG5cbiAgbGV0IHdhdGNoZG9nID0gbnVsbFxuICBjb25zdCBhcm0gPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHdhdGNoZG9nKVxuICAgIHdhdGNoZG9nID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzdGFsbGVkID0gdHJ1ZVxuICAgICAgaW50ZXJuYWwuYWJvcnQoKVxuICAgIH0sIHN0YWxsTXMpXG4gIH1cblxuICBjb25zdCBzdHJlYW0gPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXhlY3V0aW5nJykge1xuICAgICAgLy8gYSB0b29sIG1heSBsZWdpdGltYXRlbHkgcnVuIGZvciBtaW51dGVzICh0ZXN0IHN1aXRlcywgc2xvdyBmZXRjaGVzKVxuICAgICAgLy8gYW5kIGVtaXRzIG5vdGhpbmcgd2hpbGUgaXQgZG9lczsgdGhlIHdhdGNoZG9nIGd1YXJkcyB0aGUgcHJvdmlkZXJcbiAgICAgIC8vIHN0cmVhbSwgc28gcGF1c2UgaXQgdW50aWwgdGhlIHRvb2wgZmluaXNoZXMuIHRvb2xzIGNhcnJ5IHRoZWlyIG93blxuICAgICAgLy8gdGltZW91dHMgKGJhc2ggMTIwcyBkZWZhdWx0LCB3ZWIgdG9vbHMgdmlhIGRyZWRnZSlcbiAgICAgIGNsZWFyVGltZW91dCh3YXRjaGRvZylcbiAgICAgIHJlY29yZGVyLmN1cnJlbnRDYWxsID0gZXZlbnQuY2FsbFxuICAgICAgb25TdHJlYW0/LihldmVudClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBhcm0oKVxuICAgIGlmIChldmVudC50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgIHJvdW5kVGV4dCArPSBldmVudC5jb250ZW50XG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jYWxsc19yZWFkeScpIHtcbiAgICAgIGNvbGxlY3RlZC5wdXNoKHsgcm9sZTogJ2Fzc2lzdGFudCcsIGNvbnRlbnQ6IHJvdW5kVGV4dCwgdG9vbF9jYWxsczogZXZlbnQuY2FsbHMgfSlcbiAgICAgIHJvdW5kVGV4dCA9ICcnXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jb21wbGV0ZScpIHtcbiAgICAgIGNvbGxlY3RlZC5wdXNoKHsgcm9sZTogJ3Rvb2wnLCB0b29sX2NhbGxfaWQ6IGV2ZW50LmNhbGwuaWQsIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KGV2ZW50LnJlc3VsdCkgfSlcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykge1xuICAgICAgY29sbGVjdGVkLnB1c2goeyByb2xlOiAndG9vbCcsIHRvb2xfY2FsbF9pZDogZXZlbnQuY2FsbC5pZCwgY29udGVudDogSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogZXZlbnQuZXJyb3IgfSkgfSlcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd1c2FnZScpIHtcbiAgICAgIHVzYWdlU2VlbiA9IGV2ZW50LnVzYWdlXG4gICAgICBjb25zdCBwcm9tcHQgPSBldmVudC51c2FnZT8ucHJvbXB0VG9rZW5zIHx8IDBcbiAgICAgIGxhc3RQcm9tcHRUb2tlbnMgPSBNYXRoLm1heCgwLCBwcm9tcHQgLSBjdW11bGF0aXZlUHJvbXB0KVxuICAgICAgY3VtdWxhdGl2ZVByb21wdCA9IHByb21wdFxuICAgIH1cbiAgICBvblN0cmVhbT8uKGV2ZW50KVxuICB9XG5cbiAgY29uc3QgYmFzZSA9IGhpc3RvcnkubGVuZ3RoXG4gIGNvbnN0IHN0ZXAgPSBjb21wb3NlKFxuICAgIHNjb3BlKFxuICAgICAgeyBpbmhlcml0OiBJbmhlcml0LkNvbnZlcnNhdGlvbiwgc3lzdGVtLCB0b29scywgdW50aWw6IG5vVG9vbHNDYWxsZWQoKSwgc3RyZWFtIH0sXG4gICAgICAoY3R4KSA9PlxuICAgICAgICBtb2RlbCh7XG4gICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAuLi4oZWZmb3J0ICYmIHsgZWZmb3J0IH0pLFxuICAgICAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgICAgIC4uLihhdXRoPy5oZWFkZXJzICYmIHsgaGVhZGVyczogYXV0aC5oZWFkZXJzIH0pLFxuICAgICAgICB9KSh7IC4uLmN0eCwgYWJvcnRTaWduYWw6IGludGVybmFsLnNpZ25hbCB9KSxcbiAgICApLFxuICApXG5cbiAgY29uc3QgcGFydGlhbE1lc3NhZ2VzID0gKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gWy4uLmNvbGxlY3RlZF1cbiAgICBpZiAocm91bmRUZXh0KSBtZXNzYWdlcy5wdXNoKHsgcm9sZTogJ2Fzc2lzdGFudCcsIGNvbnRlbnQ6IHJvdW5kVGV4dCB9KVxuICAgIHJldHVybiBtZXNzYWdlc1xuICB9XG5cbiAgYXJtKClcbiAgdHJ5IHtcbiAgICBjb25zdCBvdXQgPSBhd2FpdCBzdGVwKHsgaGlzdG9yeTogYXdhaXQgaHlkcmF0ZUltYWdlcyhoaXN0b3J5KSwgdG9vbHM6IFtdIH0pXG4gICAgY29uc3QgaW50ZXJydXB0ZWQgPSAhIXNpZ25hbD8uYWJvcnRlZCB8fCBzdGFsbGVkXG4gICAgaWYgKGludGVycnVwdGVkKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkLCBzdGFsbGVkIH1cbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZXMgPSBvdXQuaGlzdG9yeS5maWx0ZXIoKG0pID0+IG0ucm9sZSAhPT0gJ3N5c3RlbScpLnNsaWNlKGJhc2UpXG4gICAgcmV0dXJuIHsgbWVzc2FnZXMsIHVzYWdlOiBvdXQudXNhZ2UgfHwgbnVsbCwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQ6IGZhbHNlLCBzdGFsbGVkOiBmYWxzZSB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InIHx8IGludGVybmFsLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkOiB0cnVlLCBzdGFsbGVkIH1cbiAgICB9XG4gICAgLy8gYSBwcm92aWRlciBlcnJvciBtaWQtdHVybiBtdXN0IG5vdCBkaXNjYXJkIHRoZSByb3VuZHMgdGhhdCBhbHJlYWR5XG4gICAgLy8gcmFuOiB0b29scyBtdXRhdGVkIHRoZSB3b3JsZCwgc28gdGhlIHJlY29yZCBoYXMgdG8gc3Vydml2ZVxuICAgIHJldHVybiB7IG1lc3NhZ2VzOiBwYXJ0aWFsTWVzc2FnZXMoKSwgdXNhZ2U6IHVzYWdlU2VlbiwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQ6IHRydWUsIHN0YWxsZWQ6IGZhbHNlLCBlcnJvcjogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikgfVxuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dCh3YXRjaGRvZylcbiAgICBzaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25Vc2VyQWJvcnQpXG4gIH1cbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gZGVmYXVsdFRpdGxlKG5hbWUsIGFyZ3MgPSB7fSkge1xuICBjb25zdCBjYW5kaWRhdGUgPSBhcmdzLnBhdGggfHwgYXJncy5jb21tYW5kIHx8IGFyZ3MucGF0dGVybiB8fCBhcmdzLnVybCB8fCBhcmdzLm5hbWVcbiAgaWYgKHR5cGVvZiBjYW5kaWRhdGUgPT09ICdzdHJpbmcnICYmIGNhbmRpZGF0ZSkgcmV0dXJuIGNhbmRpZGF0ZVxuICBjb25zdCByYXcgPSBKU09OLnN0cmluZ2lmeShhcmdzKVxuICBpZiAoIXJhdyB8fCByYXcgPT09ICd7fScpIHJldHVybiBuYW1lXG4gIHJldHVybiByYXcubGVuZ3RoID4gNjAgPyByYXcuc2xpY2UoMCwgNjApICsgJ1x1MjAyNicgOiByYXdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlY29yZGVyKCkge1xuICByZXR1cm4ge1xuICAgIGN1cnJlbnRDYWxsOiBudWxsLFxuICAgIGVudHJpZXM6IFtdLFxuICAgIHBlbmRpbmc6IG51bGwsXG4gICAgYmVnaW4obmFtZSwgYXJncykge1xuICAgICAgdGhpcy5wZW5kaW5nID0ge1xuICAgICAgICBjYWxsSWQ6IHRoaXMuY3VycmVudENhbGw/LmlkID8/IG51bGwsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHRpdGxlOiBkZWZhdWx0VGl0bGUobmFtZSwgYXJncyksXG4gICAgICAgIHN0YXR1czogJ2RvbmUnLFxuICAgICAgICBzdGFydGVkQXQ6IERhdGUubm93KCksXG4gICAgICB9XG4gICAgfSxcbiAgICBleHRyYShmaWVsZHMpIHtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmcpIE9iamVjdC5hc3NpZ24odGhpcy5wZW5kaW5nLCBmaWVsZHMpXG4gICAgfSxcbiAgICBkb25lKGZpZWxkcyA9IHt9KSB7XG4gICAgICBpZiAoIXRoaXMucGVuZGluZykgcmV0dXJuXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMucGVuZGluZywgZmllbGRzLCB7XG4gICAgICAgIGR1cmF0aW9uTXM6IERhdGUubm93KCkgLSB0aGlzLnBlbmRpbmcuc3RhcnRlZEF0LFxuICAgICAgfSlcbiAgICAgIGRlbGV0ZSB0aGlzLnBlbmRpbmcuc3RhcnRlZEF0XG4gICAgICBpZiAodGhpcy5wZW5kaW5nLmZ1bGxPdXRwdXQ/Lmxlbmd0aCA+IDIwMDAwMCkge1xuICAgICAgICB0aGlzLnBlbmRpbmcuZnVsbE91dHB1dCA9IHRoaXMucGVuZGluZy5mdWxsT3V0cHV0LnNsaWNlKDAsIDIwMDAwMCkgKyAnXFxuW3RydW5jYXRlZF0nXG4gICAgICB9XG4gICAgICB0aGlzLmVudHJpZXMucHVzaCh0aGlzLnBlbmRpbmcpXG4gICAgICB0aGlzLnBlbmRpbmcgPSBudWxsXG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkZWQocmVjb3JkZXIsIG5hbWUsIGZuKSB7XG4gIHJldHVybiBhc3luYyAoYXJncykgPT4ge1xuICAgIHJlY29yZGVyLmJlZ2luKG5hbWUsIGFyZ3MpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKGFyZ3MpXG4gICAgICBpZiAoIXJlY29yZGVyLnBlbmRpbmc/LmZ1bGxPdXRwdXQgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoe1xuICAgICAgICAgIGZ1bGxPdXRwdXQ6IHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJlY29yZGVyLmRvbmUoKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmVjb3JkZXIuZG9uZSh7IHN0YXR1czogJ2Vycm9yJywgZXJyb3I6IFN0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpIH0pXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBNQVhfTElORVMgPSAyMDAwXG5jb25zdCBNQVhfTElORV9MRU5HVEggPSAyMDAwXG5cbmZ1bmN0aW9uIGlzQmluYXJ5KGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihidWZmZXIubGVuZ3RoLCA4MDAwKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGJ1ZmZlcltpXSA9PT0gMCkgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlYWQoeyBjd2QsIHJlY29yZGVyLCB0cmFja2VyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAncmVhZCcsXG4gICAgZGVzY3JpcHRpb246ICdSZWFkIGEgZmlsZS4gUmV0dXJucyBsaW5lLW51bWJlcmVkIGNvbnRlbnQuIFVzZSBvZmZzZXQvbGltaXQgZm9yIGxhcmdlIGZpbGVzLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFic29sdXRlJyB9LFxuICAgICAgb2Zmc2V0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJzEtaW5kZXhlZCBsaW5lIHRvIHN0YXJ0IGZyb20nLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbGltaXQ6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnbWF4IGxpbmVzIHRvIHJldHVybicsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXRoLCBvZmZzZXQgPSAxLCBsaW1pdCA9IE1BWF9MSU5FUyB9KSA9PiB7XG4gICAgICBjb25zdCBmdWxsID0gcmVzb2x2ZShjd2QsIHBhdGgpXG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXRoIH0pXG4gICAgICBjb25zdCBidWYgPSBhd2FpdCByZWFkRmlsZShmdWxsKVxuICAgICAgaWYgKGlzQmluYXJ5KGJ1ZikpIHRocm93IG5ldyBFcnJvcihgJHtwYXRofSBpcyBhIGJpbmFyeSBmaWxlYClcbiAgICAgIGNvbnN0IGxpbmVzID0gYnVmLnRvU3RyaW5nKCd1dGYtOCcpLnNwbGl0KCdcXG4nKVxuXG4gICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIG9mZnNldCAtIDEpXG4gICAgICBjb25zdCBjb3VudCA9IE1hdGgubWluKGxpbWl0LCBNQVhfTElORVMpXG4gICAgICBjb25zdCBzbGljZWQgPSBsaW5lcy5zbGljZShzdGFydCwgc3RhcnQgKyBjb3VudClcbiAgICAgIGNvbnN0IG51bWJlcmVkID0gc2xpY2VkXG4gICAgICAgIC5tYXAoKGxpbmUsIGkpID0+IGAke3N0YXJ0ICsgaSArIDF9XFx0JHtsaW5lLmxlbmd0aCA+IE1BWF9MSU5FX0xFTkdUSCA/IGxpbmUuc2xpY2UoMCwgTUFYX0xJTkVfTEVOR1RIKSArICdcdTIwMjYnIDogbGluZX1gKVxuICAgICAgICAuam9pbignXFxuJylcblxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyBmdWxsT3V0cHV0OiBzbGljZWQuam9pbignXFxuJykgfSlcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgY29udGVudDogbnVtYmVyZWQsIHRvdGFsTGluZXM6IGxpbmVzLmxlbmd0aCB9XG4gICAgICBpZiAoc3RhcnQgKyBjb3VudCA8IGxpbmVzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQubm90ZSA9IGBzaG93aW5nIGxpbmVzICR7c3RhcnQgKyAxfS0ke3N0YXJ0ICsgc2xpY2VkLmxlbmd0aH0gb2YgJHtsaW5lcy5sZW5ndGh9YFxuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dCA9IHRyYWNrZXIuY2hlY2soZnVsbClcbiAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCkgcmVzdWx0LmNvbnRleHRfZnJvbV9hZ2VudHNfbWQgPSBjb250ZXh0XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHN0cnVjdHVyZWRQYXRjaCB9IGZyb20gJ2RpZmYnXG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRGlmZihwYXRoLCBvbGRUZXh0LCBuZXdUZXh0LCBjb250ZXh0TGluZXMgPSAzKSB7XG4gIGNvbnN0IHBhdGNoID0gc3RydWN0dXJlZFBhdGNoKHBhdGgsIHBhdGgsIG9sZFRleHQsIG5ld1RleHQsICcnLCAnJywgeyBjb250ZXh0OiBjb250ZXh0TGluZXMgfSlcbiAgbGV0IGFkZGl0aW9ucyA9IDBcbiAgbGV0IGRlbGV0aW9ucyA9IDBcbiAgY29uc3QgaHVua3MgPSBwYXRjaC5odW5rcy5tYXAoKGgpID0+ICh7XG4gICAgb2xkU3RhcnQ6IGgub2xkU3RhcnQsXG4gICAgbmV3U3RhcnQ6IGgubmV3U3RhcnQsXG4gICAgbGluZXM6IGgubGluZXMubWFwKChsaW5lKSA9PiB7XG4gICAgICBjb25zdCB0eXBlID0gbGluZVswXSA9PT0gJy0nID8gJ3JlbW92ZScgOiBsaW5lWzBdID09PSAnKycgPyAnYWRkJyA6ICdjb250ZXh0J1xuICAgICAgaWYgKHR5cGUgPT09ICdhZGQnKSBhZGRpdGlvbnMrK1xuICAgICAgaWYgKHR5cGUgPT09ICdyZW1vdmUnKSBkZWxldGlvbnMrK1xuICAgICAgcmV0dXJuIHsgdHlwZSwgdGV4dDogbGluZS5zbGljZSgxKSB9XG4gICAgfSksXG4gIH0pKVxuICByZXR1cm4geyBwYXRoLCBodW5rcywgYWRkaXRpb25zLCBkZWxldGlvbnMgfVxufVxuIiwgImltcG9ydCB7IG1rZGlyLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGRpcm5hbWUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBtYWtlRGlmZiB9IGZyb20gJy4vZGlmZi5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdyaXRlKHsgY3dkLCByZWNvcmRlciwgdHJhY2tlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3dyaXRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ1dyaXRlIGNvbnRlbnQgdG8gYSBmaWxlLCBjcmVhdGluZyBpdCBhbmQgYW55IHBhcmVudCBkaXJlY3RvcmllcyBpZiBuZWVkZWQuIE92ZXJ3cml0ZXMgZXhpc3RpbmcgY29udGVudC4nLFxuICAgIHNjaGVtYToge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWxlIHBhdGgsIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvciBhYnNvbHV0ZScgfSxcbiAgICAgIGNvbnRlbnQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIGZ1bGwgZmlsZSBjb250ZW50IHRvIHdyaXRlJyB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgY29udGVudCB9KSA9PiB7XG4gICAgICBjb25zdCBmdWxsID0gcmVzb2x2ZShjd2QsIHBhdGgpXG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXRoIH0pXG4gICAgICBhd2FpdCBta2RpcihkaXJuYW1lKGZ1bGwpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgbGV0IGJlZm9yZSA9IG51bGxcbiAgICAgIHRyeSB7XG4gICAgICAgIGJlZm9yZSA9IGF3YWl0IHJlYWRGaWxlKGZ1bGwsICd1dGYtOCcpXG4gICAgICB9IGNhdGNoIHt9XG5cbiAgICAgIGlmIChiZWZvcmUgPT09IGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHBhdGgsIHVuY2hhbmdlZDogdHJ1ZSwgbm90ZTogJ2ZpbGUgYWxyZWFkeSBoYWQgZXhhY3RseSB0aGlzIGNvbnRlbnQnIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmdWxsLCBjb250ZW50LCAndXRmLTgnKVxuXG4gICAgICBjb25zdCByZXN1bHQgPSB7IG9rOiB0cnVlLCBwYXRoIH1cbiAgICAgIGlmIChiZWZvcmUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IG1ha2VEaWZmKHBhdGgsIGJlZm9yZSwgY29udGVudClcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyBkaWZmLCByZXZlcnQ6IHsgcGF0aDogZnVsbCwgYmVmb3JlLCBhZnRlcjogY29udGVudCB9IH0pXG4gICAgICAgIHJlc3VsdC5hZGRpdGlvbnMgPSBkaWZmLmFkZGl0aW9uc1xuICAgICAgICByZXN1bHQuZGVsZXRpb25zID0gZGlmZi5kZWxldGlvbnNcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBtYWtlRGlmZihwYXRoLCAnJywgY29udGVudClcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyBkaWZmLCByZXZlcnQ6IHsgcGF0aDogZnVsbCwgYmVmb3JlOiAnJywgYWZ0ZXI6IGNvbnRlbnQgfSwgY3JlYXRlZDogdHJ1ZSB9KVxuICAgICAgICByZXN1bHQuYWRkaXRpb25zID0gZGlmZi5hZGRpdGlvbnNcbiAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZXh0ID0gdHJhY2tlci5jaGVjayhmdWxsKVxuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoKSByZXN1bHQuY29udGV4dF9mcm9tX2FnZW50c19tZCA9IGNvbnRleHRcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgbWFrZURpZmYgfSBmcm9tICcuL2RpZmYuanMnXG5cbmNvbnN0IG5vcm1hbGl6ZSA9IChzKSA9PlxuICBzXG4gICAgLnJlcGxhY2UoL1xccyskL2dtLCAnJylcbiAgICAucmVwbGFjZSgvW1x1MjAxOFx1MjAxOV0vZywgXCInXCIpXG4gICAgLnJlcGxhY2UoL1tcdTIwMUNcdTIwMURdL2csICdcIicpXG4gICAgLnJlcGxhY2UoL1tcdTIwMTNcdTIwMTRdL2csICctJylcblxuZnVuY3Rpb24gbG9jYXRlKGNvbnRlbnQsIG9sZCwgcGF0aCkge1xuICBsZXQgaW5kZXggPSBjb250ZW50LmluZGV4T2Yob2xkKVxuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgaWYgKGNvbnRlbnQuaW5kZXhPZihvbGQsIGluZGV4ICsgMSkgIT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBhcHBlYXJzIG11bHRpcGxlIHRpbWVzIGluICR7cGF0aH0sIHByb3ZpZGUgbW9yZSBzdXJyb3VuZGluZyBjb250ZXh0IHRvIG1ha2UgaXQgdW5pcXVlYClcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5kZXgsIGxlbmd0aDogb2xkLmxlbmd0aCwgY29udGVudCB9XG4gIH1cblxuICBjb25zdCBub3JtZWRDb250ZW50ID0gbm9ybWFsaXplKGNvbnRlbnQpXG4gIGNvbnN0IG5vcm1lZE9sZCA9IG5vcm1hbGl6ZShvbGQpXG4gIGluZGV4ID0gbm9ybWVkQ29udGVudC5pbmRleE9mKG5vcm1lZE9sZClcbiAgaWYgKGluZGV4ID09PSAtMSkgdGhyb3cgbmV3IEVycm9yKGBzdHJpbmcgbm90IGZvdW5kIGluICR7cGF0aH1gKVxuICBpZiAobm9ybWVkQ29udGVudC5pbmRleE9mKG5vcm1lZE9sZCwgaW5kZXggKyAxKSAhPT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBhcHBlYXJzIG11bHRpcGxlIHRpbWVzIGluICR7cGF0aH0sIHByb3ZpZGUgbW9yZSBzdXJyb3VuZGluZyBjb250ZXh0IHRvIG1ha2UgaXQgdW5pcXVlYClcbiAgfVxuICByZXR1cm4geyBpbmRleCwgbGVuZ3RoOiBub3JtZWRPbGQubGVuZ3RoLCBjb250ZW50OiBub3JtZWRDb250ZW50IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXQoeyBjd2QsIHJlY29yZGVyLCB0cmFja2VyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZWRpdCcsXG4gICAgZGVzY3JpcHRpb246ICdSZXBsYWNlIG9sZFRleHQgd2l0aCBuZXdUZXh0IGluIGEgZmlsZS4gb2xkVGV4dCBtdXN0IGFwcGVhciBleGFjdGx5IG9uY2UgdW5sZXNzIHJlcGxhY2VBbGwgaXMgc2V0LicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFic29sdXRlJyB9LFxuICAgICAgb2xkVGV4dDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdleGFjdCB0ZXh0IHRvIHJlcGxhY2UsIG11c3QgYmUgdW5pcXVlIGluIHRoZSBmaWxlJyB9LFxuICAgICAgbmV3VGV4dDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdyZXBsYWNlbWVudCB0ZXh0JyB9LFxuICAgICAgcmVwbGFjZUFsbDogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAncmVwbGFjZSBldmVyeSBvY2N1cnJlbmNlJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIG9sZFRleHQsIG5ld1RleHQsIHJlcGxhY2VBbGwgfSkgPT4ge1xuICAgICAgY29uc3QgZnVsbCA9IHJlc29sdmUoY3dkLCBwYXRoKVxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0aCB9KVxuICAgICAgY29uc3QgYmVmb3JlID0gYXdhaXQgcmVhZEZpbGUoZnVsbCwgJ3V0Zi04JylcblxuICAgICAgbGV0IGFmdGVyXG4gICAgICBpZiAocmVwbGFjZUFsbCkge1xuICAgICAgICBpZiAoIWJlZm9yZS5pbmNsdWRlcyhvbGRUZXh0KSkgdGhyb3cgbmV3IEVycm9yKGBzdHJpbmcgbm90IGZvdW5kIGluICR7cGF0aH1gKVxuICAgICAgICBhZnRlciA9IGJlZm9yZS5zcGxpdChvbGRUZXh0KS5qb2luKG5ld1RleHQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IGluZGV4LCBsZW5ndGgsIGNvbnRlbnQgfSA9IGxvY2F0ZShiZWZvcmUsIG9sZFRleHQsIHBhdGgpXG4gICAgICAgIGFmdGVyID0gY29udGVudC5zbGljZSgwLCBpbmRleCkgKyBuZXdUZXh0ICsgY29udGVudC5zbGljZShpbmRleCArIGxlbmd0aClcbiAgICAgIH1cblxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGZ1bGwsIGFmdGVyLCAndXRmLTgnKVxuICAgICAgY29uc3QgZGlmZiA9IG1ha2VEaWZmKHBhdGgsIGJlZm9yZSwgYWZ0ZXIpXG4gICAgICByZWNvcmRlci5leHRyYSh7IGRpZmYsIHJldmVydDogeyBwYXRoOiBmdWxsLCBiZWZvcmUsIGFmdGVyIH0gfSlcblxuICAgICAgY29uc3QgcmVzdWx0ID0geyBvazogdHJ1ZSwgcGF0aCwgYWRkaXRpb25zOiBkaWZmLmFkZGl0aW9ucywgZGVsZXRpb25zOiBkaWZmLmRlbGV0aW9ucyB9XG4gICAgICBjb25zdCBjb250ZXh0ID0gdHJhY2tlci5jaGVjayhmdWxsKVxuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoKSByZXN1bHQuY29udGV4dF9mcm9tX2FnZW50c19tZCA9IGNvbnRleHRcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcblxuY29uc3QgTUFYX09VVFBVVF9DSEFSUyA9IDMwMDAwXG5cbmZ1bmN0aW9uIGNhcHBlZCh0ZXh0KSB7XG4gIGlmICh0ZXh0Lmxlbmd0aCA8PSBNQVhfT1VUUFVUX0NIQVJTKSByZXR1cm4gdGV4dFxuICByZXR1cm4gdGV4dC5zbGljZSgwLCBNQVhfT1VUUFVUX0NIQVJTKSArIGBcXG5bb3V0cHV0IHRydW5jYXRlZCBhdCAke01BWF9PVVRQVVRfQ0hBUlN9IGNoYXJhY3RlcnNdYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmFzaCh7IGN3ZCwgZW52LCByZWNvcmRlciwgc2lnbmFsLCBzaGVsbHMgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdiYXNoJyxcbiAgICBkZXNjcmlwdGlvbjogJ1J1biBhIHNoZWxsIGNvbW1hbmQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiBFYWNoIGNhbGwgaXMgYSBmcmVzaCBzaGVsbDogY2QgZG9lcyBub3QgcGVyc2lzdCB0byBsYXRlciBjYWxscywgc28gY2hhaW4gZGlyZWN0b3J5IGNoYW5nZXMgd2l0aGluIG9uZSBjb21tYW5kIChjZCAveCAmJiBscykgb3IgdXNlIGFic29sdXRlIHBhdGhzLiBSZXR1cm5zIHN0ZG91dCwgc3RkZXJyLCBhbmQgZXhpdCBjb2RlLiBGb3JlZ3JvdW5kIGNvbW1hbmRzIGFyZSBraWxsZWQgYXQgdGhlIHRpbWVvdXQgKGRlZmF1bHQgMTIwcyksIHNvIG5ldmVyIHdhaXQgb24gbG9uZyBleHRlcm5hbHMgbGlrZSBDSSBydW5zLCBkZXBsb3lzLCBvciB3YXRjaCBsb29wcyBpbiB0aGUgZm9yZWdyb3VuZDogcnVuIHRob3NlIHdpdGggYmFja2dyb3VuZCB0cnVlLCBmaW5pc2ggeW91ciB0dXJuLCBhbmQgdGhlIHNoZWxsXFwncyBleGl0IHdpbGwgbm90aWZ5IHlvdSBzbyB5b3UgY2FuIHJlcG9ydCB0aGUgb3V0Y29tZS4gQmFja2dyb3VuZCBhbHNvIGZpdHMgbG9uZy1saXZlZCBwcm9jZXNzZXMgbGlrZSBkZXYgc2VydmVyczsgY2hlY2sgb24gYSBiYWNrZ3JvdW5kIHNoZWxsIHdpdGggc2hlbGxfb3V0cHV0IGFuZCBzdG9wIGl0IHdpdGggc2hlbGxfa2lsbC4nLFxuICAgIHNjaGVtYToge1xuICAgICAgY29tbWFuZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgY29tbWFuZCB0byBydW4nIH0sXG4gICAgICB0aW1lb3V0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2ZvcmVncm91bmQgdGltZW91dCBpbiBtaWxsaXNlY29uZHMsIGRlZmF1bHQgMTIwMDAwOyBwcmVmZXIgYmFja2dyb3VuZCB0cnVlIG92ZXIgYSBsYXJnZSB0aW1lb3V0Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGJhY2tncm91bmQ6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ3J1biBpbiB0aGUgYmFja2dyb3VuZCBhbmQgcmV0dXJuIGEgc2hlbGwgaWQgaW1tZWRpYXRlbHknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgZGVzY3JpcHRpb246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZm9yIGJhY2tncm91bmQgc2hlbGxzOiBhIGZldyB3b3JkcyBuYW1pbmcgd2hhdCB0aGlzIGlzIGZvciwgc2hvd24gdG8gdGhlIGh1bWFuIHdhdGNoaW5nIChlLmcuIFwidml0ZSBkZXYgc2VydmVyXCIsIFwid2F0Y2hpbmcgY2lcIiknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogKHsgY29tbWFuZCwgdGltZW91dCwgYmFja2dyb3VuZCwgZGVzY3JpcHRpb24gfSkgPT4ge1xuICAgICAgaWYgKGJhY2tncm91bmQgJiYgc2hlbGxzKSB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IGRlc2NyaXB0aW9uIHx8IGNvbW1hbmQsIGJhY2tncm91bmQ6IHRydWUgfSlcbiAgICAgICAgY29uc3QgeyBpZCB9ID0gc2hlbGxzLnN0YXJ0KGNvbW1hbmQsIHsgY3dkLCBlbnYsIGRlc2NyaXB0aW9uIH0pXG4gICAgICAgIHJldHVybiB7IHNoZWxsSWQ6IGlkLCBzdGF0dXM6ICdydW5uaW5nJyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogY29tbWFuZCB9KVxuICAgICAgICBjb25zdCBjaGlsZCA9IGV4ZWMoXG4gICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjd2QsXG4gICAgICAgICAgICB0aW1lb3V0OiB0aW1lb3V0IHx8IDEyMDAwMCxcbiAgICAgICAgICAgIG1heEJ1ZmZlcjogMTAgKiAxMDI0ICogMTAyNCxcbiAgICAgICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uZW52LCBGT1JDRV9DT0xPUjogJzAnLCBOT19DT0xPUjogJzEnIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhpdENvZGUgPSBlcnIgPyAodHlwZW9mIGVyci5jb2RlID09PSAnbnVtYmVyJyA/IGVyci5jb2RlIDogMSkgOiAwXG4gICAgICAgICAgICBjb25zdCBtcyA9IHRpbWVvdXQgfHwgMTIwMDAwXG4gICAgICAgICAgICBjb25zdCB0aW1lZE91dCA9ICEhZXJyPy5raWxsZWQgJiYgZXJyLmNvZGUgPT0gbnVsbCAmJiAhc2lnbmFsPy5hYm9ydGVkXG4gICAgICAgICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IFtzdGRvdXQsIHN0ZGVycl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpIH0pXG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgc3Rkb3V0OiBjYXBwZWQoc3Rkb3V0IHx8ICcnKSxcbiAgICAgICAgICAgICAgc3RkZXJyOiBjYXBwZWQoc3RkZXJyIHx8ICcnKSxcbiAgICAgICAgICAgICAgZXhpdENvZGUsXG4gICAgICAgICAgICAgIC4uLih0aW1lZE91dCAmJiB7XG4gICAgICAgICAgICAgICAgdGltZWRPdXQ6IHRydWUsXG4gICAgICAgICAgICAgICAgbm90ZTogYGtpbGxlZCBhdCB0aGUgJHttc31tcyB0aW1lb3V0LiBkbyBub3Qgc2ltcGx5IHJlcnVuIGl0OiB1c2UgYmFja2dyb3VuZCB0cnVlIGZvciBsb25nLXJ1bm5pbmcgd29yayBhbmQgd2FpdCBmb3IgaXRzIGV4aXQgbm90aWZpY2F0aW9uLCBvciBwYXNzIGEgbGFyZ2VyIHRpbWVvdXQgaWYgdGhlIGNvbW1hbmQgZ2VudWluZWx5IG5lZWRzIHRoZSBmb3JlZ3JvdW5kYCxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgaWYgKHNpZ25hbCkge1xuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgY2hpbGQua2lsbCgpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gY2hpbGQua2lsbCgpLCB7IG9uY2U6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZmcgZnJvbSAnZmFzdC1nbG9iJ1xuXG5jb25zdCBNQVhfUkVTVUxUUyA9IDIwMFxuXG5mdW5jdGlvbiByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFsnLS1maWxlcycsICctLWhpZGRlbicsICctLWdsb2InLCBwYXR0ZXJuLCAnLS1nbG9iJywgJyEqKi9ub2RlX21vZHVsZXMvKionLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cbiAgICBleGVjRmlsZSgncmcnLCBhcmdzLCB7IGN3ZCwgbWF4QnVmZmVyOiA1MCAqIDEwMjQgKiAxMDI0IH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgaWYgKGVyciAmJiBlcnIuY29kZSAhPT0gMSkgcmVzb2x2ZShudWxsKVxuICAgICAgZWxzZSByZXNvbHZlKHN0ZG91dCA/IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pIDogW10pXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdsb2IoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ2xvYicsXG4gICAgZGVzY3JpcHRpb246ICdGaW5kIGZpbGVzIG1hdGNoaW5nIGEgZ2xvYiBwYXR0ZXJuLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkuIFJlc3BlY3RzIC5naXRpZ25vcmU7IHVzZSBiYXNoIHRvIGxvb2sgaW5zaWRlIGlnbm9yZWQgcGF0aHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZ2xvYiBwYXR0ZXJuLCBlLmcuIHNyYy8qKi8qLmpzJyB9LFxuICAgICAgbWF4UmVzdWx0czogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdjYXAgb24gcmV0dXJuZWQgcGF0aHMsIGRlZmF1bHQgMjAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdHRlcm4sIG1heFJlc3VsdHMgPSBNQVhfUkVTVUxUUyB9KSA9PiB7XG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXR0ZXJuIH0pXG4gICAgICBsZXQgZmlsZXMgPSBhd2FpdCByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpXG4gICAgICBpZiAoZmlsZXMgPT09IG51bGwpIHtcbiAgICAgICAgZmlsZXMgPSBhd2FpdCBmZyhwYXR0ZXJuLCB7XG4gICAgICAgICAgY3dkLFxuICAgICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqLy5naXQvKionXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogZmlsZXMuam9pbignXFxuJykgfSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVzOiBmaWxlcy5zbGljZSgwLCBtYXhSZXN1bHRzKSxcbiAgICAgICAgdG90YWxGb3VuZDogZmlsZXMubGVuZ3RoLFxuICAgICAgICB0cnVuY2F0ZWQ6IGZpbGVzLmxlbmd0aCA+IG1heFJlc3VsdHMsXG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1BWF9SRVNVTFRTID0gMjAwXG5cbmZ1bmN0aW9uIHJ1blJpcGdyZXAoYXJncywgY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoZG9uZSkgPT4ge1xuICAgIGV4ZWNGaWxlKCdyZycsIGFyZ3MsIHsgY3dkLCBtYXhCdWZmZXI6IDEwICogMTAyNCAqIDEwMjQgfSwgKGVyciwgc3Rkb3V0KSA9PiB7XG4gICAgICBkb25lKGVyciAmJiAhc3Rkb3V0ID8gJycgOiBzdGRvdXQgfHwgJycpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyZXAoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ3JlcCcsXG4gICAgZGVzY3JpcHRpb246ICdTZWFyY2ggZmlsZSBjb250ZW50cyB3aXRoIGEgcmVnZXggdXNpbmcgcmlwZ3JlcC4gbW9kZSBcImNvbnRlbnRcIiByZXR1cm5zIG1hdGNoaW5nIGxpbmVzLCBcImZpbGVzXCIgcmV0dXJucyBtYXRjaGluZyBmaWxlIHBhdGhzLCBcImNvdW50XCIgcmV0dXJucyBwZXItZmlsZSBtYXRjaCBjb3VudHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncmVnZXggcGF0dGVybicgfSxcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBvciBkaXJlY3RvcnkgdG8gc2VhcmNoLCBkZWZhdWx0cyB0byB0aGUgd29ya2luZyBkaXJlY3RvcnknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbW9kZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydjb250ZW50JywgJ2ZpbGVzJywgJ2NvdW50J10sIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBnbG9iOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbHRlciBmaWxlcyBieSBnbG9iLCBlLmcuICouanMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgaWdub3JlQ2FzZTogeyB0eXBlOiAnYm9vbGVhbicsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBjb250ZXh0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2xpbmVzIG9mIGNvbnRleHQgYXJvdW5kIG1hdGNoZXMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbXVsdGlsaW5lOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdhbGxvdyBwYXR0ZXJucyB0byBzcGFuIGxpbmVzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ21heCByZXN1bHRzLCBkZWZhdWx0IDIwMCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXR0ZXJuLCBwYXRoLCBtb2RlID0gJ2NvbnRlbnQnLCBnbG9iLCBpZ25vcmVDYXNlLCBjb250ZXh0LCBtdWx0aWxpbmUsIGxpbWl0ID0gTUFYX1JFU1VMVFMgfSkgPT4ge1xuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0dGVybiB9KVxuICAgICAgY29uc3QgYXJncyA9IFsnLS1uby1oZWFkaW5nJywgJy0tY29sb3I9bmV2ZXInLCAnLS1tYXgtY29sdW1ucycsICc1MDAnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cblxuICAgICAgaWYgKG1vZGUgPT09ICdmaWxlcycpIGFyZ3MucHVzaCgnLS1maWxlcy13aXRoLW1hdGNoZXMnKVxuICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2NvdW50JykgYXJncy5wdXNoKCctLWNvdW50JylcbiAgICAgIGVsc2UgYXJncy5wdXNoKCctLWxpbmUtbnVtYmVyJylcblxuICAgICAgaWYgKGlnbm9yZUNhc2UpIGFyZ3MucHVzaCgnLS1pZ25vcmUtY2FzZScpXG4gICAgICBpZiAobXVsdGlsaW5lKSBhcmdzLnB1c2goJy0tbXVsdGlsaW5lJywgJy0tbXVsdGlsaW5lLWRvdGFsbCcpXG4gICAgICBpZiAoZ2xvYikgYXJncy5wdXNoKCctLWdsb2InLCBnbG9iKVxuICAgICAgaWYgKG1vZGUgPT09ICdjb250ZW50JyAmJiBjb250ZXh0KSBhcmdzLnB1c2goJy1DJywgU3RyaW5nKGNvbnRleHQpKVxuXG4gICAgICBhcmdzLnB1c2gocGF0dGVybi5zdGFydHNXaXRoKCctJykgPyAnLWUnIDogJy0tJywgcGF0dGVybilcbiAgICAgIGFyZ3MucHVzaChwYXRoID8gcmVzb2x2ZShjd2QsIHBhdGgpIDogY3dkKVxuXG4gICAgICBjb25zdCBzdGRvdXQgPSBhd2FpdCBydW5SaXBncmVwKGFyZ3MsIGN3ZClcbiAgICAgIGNvbnN0IGxpbmVzID0gc3Rkb3V0LnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogbGluZXMuam9pbignXFxuJykgfSlcblxuICAgICAgY29uc3QgcmVsYXRpdml6ZSA9IChsaW5lKSA9PiB7XG4gICAgICAgIGlmIChtb2RlID09PSAnZmlsZXMnKSByZXR1cm4gcmVsYXRpdmUoY3dkLCBsaW5lKVxuICAgICAgICBjb25zdCBtID0gbGluZS5tYXRjaCgvXihcXC9bXjpdKyk6KC4qKSQvKVxuICAgICAgICByZXR1cm4gbSA/IGAke3JlbGF0aXZlKGN3ZCwgbVsxXSl9OiR7bVsyXX1gIDogbGluZVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0cyA9IGxpbmVzLm1hcChyZWxhdGl2aXplKS5zbGljZSgwLCBsaW1pdClcbiAgICAgIHJldHVybiB7IHJlc3VsdHMsIG1vZGUsIHRvdGFsTWF0Y2hlczogbGluZXMubGVuZ3RoLCB0cnVuY2F0ZWQ6IGxpbmVzLmxlbmd0aCA+IGxpbWl0IH1cbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlUmVjb3JkZXIsIHJlY29yZGVkIH0gZnJvbSAnLi9yZWNvcmRlci5qcydcbmltcG9ydCB7IGNyZWF0ZVJlYWQgfSBmcm9tICcuL3JlYWQuanMnXG5pbXBvcnQgeyBjcmVhdGVXcml0ZSB9IGZyb20gJy4vd3JpdGUuanMnXG5pbXBvcnQgeyBjcmVhdGVFZGl0IH0gZnJvbSAnLi9lZGl0LmpzJ1xuaW1wb3J0IHsgY3JlYXRlQmFzaCB9IGZyb20gJy4vYmFzaC5qcydcbmltcG9ydCB7IGNyZWF0ZUdsb2IgfSBmcm9tICcuL2dsb2IuanMnXG5pbXBvcnQgeyBjcmVhdGVHcmVwIH0gZnJvbSAnLi9ncmVwLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV2ViVG9vbHMgfSBmcm9tICcuL3dlYi5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRvb2xzZXQoeyBjd2QsIGVudiwgdHJhY2tlciwgc2tpbGxzLCBzaGVsbHMsIHdha2V1cHMsIG1lbW9yeSwgYWdlbnRzLCBhc2tVc2VyLCBkcmVkZ2UsIG1jcFRvb2xzID0gW10sIHVzZXJUb29scyA9IFtdLCBzaWduYWwsIG1heFRvb2xDYWxscywgbWF4QWdlbnRTdGFydHMsIHJlcXVpcmVBZ2VudFBsYW4gPSBmYWxzZSwgYWxsb3dOYW1lcyB9KSB7XG4gIGNvbnN0IHJlY29yZGVyID0gY3JlYXRlUmVjb3JkZXIoKVxuICBsZXQgYWdlbnRTdGFydHMgPSAwXG4gIGxldCBwbGFubmVkQWdlbnRTdGFydHMgPSByZXF1aXJlQWdlbnRQbGFuID8gbnVsbCA6IG1heEFnZW50U3RhcnRzXG4gIGNvbnN0IGRlcHMgPSB7IGN3ZCwgZW52LCByZWNvcmRlciwgdHJhY2tlciwgc2lnbmFsLCBzaGVsbHMgfVxuXG4gIGNvbnN0IGxvY2FsID0gW1xuICAgIGNyZWF0ZVJlYWQoZGVwcyksXG4gICAgY3JlYXRlV3JpdGUoZGVwcyksXG4gICAgY3JlYXRlRWRpdChkZXBzKSxcbiAgICBjcmVhdGVCYXNoKGRlcHMpLFxuICAgIGNyZWF0ZUdsb2IoZGVwcyksXG4gICAgY3JlYXRlR3JlcChkZXBzKSxcbiAgXVxuXG4gIGlmIChkcmVkZ2UpIHtcbiAgICBsb2NhbC5wdXNoKC4uLmNyZWF0ZVdlYlRvb2xzKHsgZHJlZGdlLCByZWNvcmRlciwgc2lnbmFsIH0pKVxuICB9XG5cbiAgaWYgKHNoZWxscykge1xuICAgIGxvY2FsLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaGVsbF9vdXRwdXQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1JlYWQgcmVjZW50IG91dHB1dCBmcm9tIGEgYmFja2dyb3VuZCBzaGVsbCBzdGFydGVkIHdpdGggYmFzaCBiYWNrZ3JvdW5kOiB0cnVlLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBzaGVsbCBpZCcgfSxcbiAgICAgICAgICB0YWlsOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2hvdyBtYW55IHRyYWlsaW5nIGxpbmVzIHRvIHJldHVybiwgZGVmYXVsdCAxMDAnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCwgdGFpbCA9IDEwMCB9KSA9PiBzaGVsbHMub3V0cHV0KGlkLCB7IHRhaWw6IE1hdGgubWluKHRhaWwsIDUwMCkgfSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hlbGxfa2lsbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU3RvcCBhIGJhY2tncm91bmQgc2hlbGwgYnkgaWQuJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgaWQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIHNoZWxsIGlkJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCB9KSA9PiBzaGVsbHMua2lsbChpZCwgJ21vZGVsJyksXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmICh3YWtldXBzKSB7XG4gICAgbG9jYWwucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NjaGVkdWxlX3dha2V1cCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2NoZWR1bGUgYSBvbmUtdGltZSB3YWtlLXVwOiBhZnRlciB0aGUgZGVsYXkgeW91IHJlY2VpdmUgYSBzeXN0ZW0gbm90aWZpY2F0aW9uIGNhcnJ5aW5nIHlvdXIgbm90ZSBhbmQgY2FuIGFjdCBvbiBpdC4gRm9yIGEgcmVjdXJyaW5nIGxvb3AsIHNjaGVkdWxlIHRoZSBuZXh0IHdha2UtdXAgYXQgdGhlIGVuZCBvZiBlYWNoIG9uZS4gRG8gbm90IHVzZSB0aGlzIHRvIHBvbGwgYSBiYWNrZ3JvdW5kIHNoZWxsOyBpdHMgZXhpdCBhbHJlYWR5IG5vdGlmaWVzIHlvdS4gV2FrZS11cHMgYXJlIGxvc3QgaWYgcGljbyBleGl0cy4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkZWxheVNlY29uZHM6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnc2Vjb25kcyBmcm9tIG5vdywgbWluaW11bSA1JyB9LFxuICAgICAgICAgIG5vdGU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnd2hhdCB0byBkbyB3aGVuIHlvdSB3YWtlIHVwOyB3cml0dGVuIHRvIHlvdXIgZnV0dXJlIHNlbGYnIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6ICh7IGRlbGF5U2Vjb25kcywgbm90ZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBpZCwgYXQsIHNlY29uZHMgfSA9IHdha2V1cHMuc2NoZWR1bGUoZGVsYXlTZWNvbmRzLCBub3RlKVxuICAgICAgICAgIHJldHVybiB7IHdha2V1cElkOiBpZCwgZmlyZXNBdDogbmV3IERhdGUoYXQpLnRvU3RyaW5nKCksIGluU2Vjb25kczogc2Vjb25kcyB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2FuY2VsX3dha2V1cCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQ2FuY2VsIGEgcGVuZGluZyB3YWtlLXVwIGJ5IGlkLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSB3YWtlLXVwIGlkJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCB9KSA9PiB3YWtldXBzLmNhbmNlbChpZCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnbGlzdF93YWtldXBzJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdMaXN0IHlvdXIgcGVuZGluZyBzY2hlZHVsZWQgd2FrZS11cHM6IGlkLCB3aGVuIGVhY2ggZmlyZXMsIGFuZCBpdHMgbm90ZS4nLFxuICAgICAgICBzY2hlbWE6IHt9LFxuICAgICAgICBleGVjdXRlOiAoKSA9PiAoe1xuICAgICAgICAgIHdha2V1cHM6IHdha2V1cHMubGlzdCgpLm1hcCgodykgPT4gKHtcbiAgICAgICAgICAgIGlkOiB3LmlkLFxuICAgICAgICAgICAgZmlyZXNBdDogbmV3IERhdGUody5hdCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGluU2Vjb25kczogTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgody5hdCAtIERhdGUubm93KCkpIC8gMTAwMCkpLFxuICAgICAgICAgICAgbm90ZTogdy5ub3RlLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmIChhc2tVc2VyKSB7XG4gICAgbG9jYWwucHVzaCh7XG4gICAgICBuYW1lOiAnYXNrX3VzZXInLFxuICAgICAgZGVzY3JpcHRpb246ICdBc2sgdGhlIHVzZXIgb25lIG9yIG1vcmUgZm9jdXNlZCBxdWVzdGlvbnMgd2hlbiB0aGVpciBhbnN3ZXJzIGFyZSBnZW51aW5lbHkgbmVlZGVkIHRvIGNvbnRpbnVlLiBTdXBwb3J0cyBmcmVlIHRleHQsIG9uZSBjaG9pY2UsIG9yIG11bHRpcGxlIGNob2ljZXMuIERvIG5vdCBhc2sgcXVlc3Rpb25zIHlvdSBjYW4gYW5zd2VyIGZyb20gYXZhaWxhYmxlIGNvbnRleHQuJyxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBxdWVzdGlvbnM6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAncXVlc3Rpb25zIHRvIHByZXNlbnQsIGluIG9yZGVyJyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3Nob3J0IHVuaXF1ZSBpZGVudGlmaWVyJyB9LFxuICAgICAgICAgICAgICBxdWVzdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdjbGVhciBxdWVzdGlvbiBzaG93biB0byB0aGUgdXNlcicgfSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnYnJpZWYgY29udGV4dCBleHBsYWluaW5nIHdoeSB0aGlzIG1hdHRlcnMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICAgICAgICB0eXBlOiB7IHR5cGU6ICdzdHJpbmcnLCBlbnVtOiBbJ3NpbmdsZScsICdtdWx0aScsICd0ZXh0J10sIGRlc2NyaXB0aW9uOiAnYW5zd2VyIGNvbnRyb2wnIH0sXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnYXJyYXknLCBvcHRpb25hbDogdHJ1ZSwgZGVzY3JpcHRpb246ICdjaG9pY2VzIGZvciBzaW5nbGUgb3IgbXVsdGkgcXVlc3Rpb25zJyxcbiAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ2xhYmVsJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYWxsb3dPdGhlcjogeyB0eXBlOiAnYm9vbGVhbicsIG9wdGlvbmFsOiB0cnVlLCBkZXNjcmlwdGlvbjogJ2FsbG93IGEgY3VzdG9tIGFuc3dlcjsgZGVmYXVsdHMgdG8gdHJ1ZSBmb3IgY2hvaWNlIHF1ZXN0aW9ucycgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogWydpZCcsICdxdWVzdGlvbicsICd0eXBlJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiAoeyBxdWVzdGlvbnMgfSkgPT4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocXVlc3Rpb25zKSB8fCBxdWVzdGlvbnMubGVuZ3RoID09PSAwIHx8IHF1ZXN0aW9ucy5sZW5ndGggPiAxMCkgdGhyb3cgbmV3IEVycm9yKCdhc2tfdXNlciByZXF1aXJlcyAxLTEwIHF1ZXN0aW9ucycpXG4gICAgICAgIGNvbnN0IGlkcyA9IG5ldyBTZXQoKVxuICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9ucykge1xuICAgICAgICAgIGlmICghcXVlc3Rpb24uaWQ/LnRyaW0oKSB8fCBpZHMuaGFzKHF1ZXN0aW9uLmlkKSkgdGhyb3cgbmV3IEVycm9yKCdlYWNoIHF1ZXN0aW9uIG5lZWRzIGEgdW5pcXVlIG5vbi1lbXB0eSBpZCcpXG4gICAgICAgICAgaWYgKCFxdWVzdGlvbi5xdWVzdGlvbj8udHJpbSgpKSB0aHJvdyBuZXcgRXJyb3IoYHF1ZXN0aW9uICR7cXVlc3Rpb24uaWR9IGhhcyBubyBwcm9tcHRgKVxuICAgICAgICAgIGlmICghWydzaW5nbGUnLCAnbXVsdGknLCAndGV4dCddLmluY2x1ZGVzKHF1ZXN0aW9uLnR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoYHF1ZXN0aW9uICR7cXVlc3Rpb24uaWR9IGhhcyBhbiBpbnZhbGlkIHR5cGVgKVxuICAgICAgICAgIGlmIChxdWVzdGlvbi50eXBlICE9PSAndGV4dCcgJiYgKCFBcnJheS5pc0FycmF5KHF1ZXN0aW9uLm9wdGlvbnMpIHx8IHF1ZXN0aW9uLm9wdGlvbnMubGVuZ3RoID09PSAwKSkgdGhyb3cgbmV3IEVycm9yKGBxdWVzdGlvbiAke3F1ZXN0aW9uLmlkfSBuZWVkcyBhdCBsZWFzdCBvbmUgb3B0aW9uYClcbiAgICAgICAgICBpZHMuYWRkKHF1ZXN0aW9uLmlkKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhc2tVc2VyKHF1ZXN0aW9ucylcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIGlmIChhZ2VudHMpIHtcbiAgICBsb2NhbC5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYWdlbnRfcGxhbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2V0IHRoZSB0b3RhbCBhZ2VudCBidWRnZXQgZm9yIHRoaXMgcmVzZWFyY2ggcnVuIGJlZm9yZSBzdGFydGluZyB3b3JrZXJzLiBJbnRlcnByZXQgYW55IHVzZXItcmVxdWVzdGVkIGNvdW50IHNlbWFudGljYWxseTsgb3RoZXJ3aXNlIHVzZSB0aGUgY29uZmlndXJlZCBkZWZhdWx0LiBUaGUgaGFybmVzcyBlbmZvcmNlcyB0aGUgZGVjbGFyZWQgYnVkZ2V0LicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGNvdW50OiB7IHR5cGU6ICdpbnRlZ2VyJywgZGVzY3JpcHRpb246IGB0b3RhbCBhZ2VudHMgdG8gcGVybWl0ICgxLSR7bWF4QWdlbnRTdGFydHMgfHwgMTAwfSlgIH0sXG4gICAgICAgICAgcmVhc29uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2JyaWVmIGV4cGxhbmF0aW9uIG9mIGhvdyB0aGUgY291bnQgZm9sbG93cyB0aGUgdXNlciByZXF1ZXN0IG9yIHJlc2VhcmNoIHNjb3BlJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBjb3VudCwgcmVhc29uIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBjZWlsaW5nID0gbWF4QWdlbnRTdGFydHMgfHwgMTAwXG4gICAgICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGNvdW50KSB8fCBjb3VudCA8IDEgfHwgY291bnQgPiBjZWlsaW5nKSB0aHJvdyBuZXcgRXJyb3IoYGFnZW50IGJ1ZGdldCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgJHtjZWlsaW5nfWApXG4gICAgICAgICAgaWYgKGFnZW50U3RhcnRzID4gMCkgdGhyb3cgbmV3IEVycm9yKCdhZ2VudCBidWRnZXQgbXVzdCBiZSBkZWNsYXJlZCBiZWZvcmUgc3RhcnRpbmcgYWdlbnRzJylcbiAgICAgICAgICBwbGFubmVkQWdlbnRTdGFydHMgPSBjb3VudFxuICAgICAgICAgIHJldHVybiB7IGFnZW50TGltaXQ6IGNvdW50LCByZWFzb24gfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FnZW50X3N0YXJ0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTdGFydCBhIGJhY2tncm91bmQgYWdlbnQgZm9yIGEgZm9jdXNlZCB0YXNrIGluIHRoZSBjdXJyZW50IHByb2plY3QuIFdvcmtlcnMgY2FuIGluc3BlY3QsIG1vZGlmeSwgYW5kIHRlc3QgdGhlIHByb2plY3Qgd2l0aCB0aGUgY29uZmlndXJlZCB0b29scy4gUmV0dXJucyBpbW1lZGlhdGVseSB3aXRoIGFuIGFnZW50IGlkOyBjb2xsZWN0IGl0cyByZXN1bHQgd2l0aCBhZ2VudF9jb2xsZWN0LicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIHByb21wdDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdjb21wbGV0ZSwgc2VsZi1jb250YWluZWQgdGFzayBhbmQgZGVzaXJlZCBvdXRwdXQnIH0sXG4gICAgICAgICAgZGVzY3JpcHRpb246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnc2hvcnQgbGFiZWwgc2hvd24gdG8gdGhlIHVzZXInIH0sXG4gICAgICAgICAgdG9vbHM6IHsgdHlwZTogJ2FycmF5JywgaXRlbXM6IHsgdHlwZTogJ3N0cmluZycgfSwgZGVzY3JpcHRpb246ICd0b29sIG5hbWVzIHRvIGFsbG93OyBvbWl0IGZvciB0aGUgY29uZmlndXJlZCB3b3JrZXIgdG9vbHMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBwcm9tcHQsIGRlc2NyaXB0aW9uLCB0b29scyB9KSA9PiB7XG4gICAgICAgICAgaWYgKHBsYW5uZWRBZ2VudFN0YXJ0cyA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ2NhbGwgYWdlbnRfcGxhbiBiZWZvcmUgc3RhcnRpbmcgcmVzZWFyY2ggYWdlbnRzJylcbiAgICAgICAgICBpZiAoYWdlbnRTdGFydHMgPj0gcGxhbm5lZEFnZW50U3RhcnRzKSB0aHJvdyBuZXcgRXJyb3IoYGFnZW50IGxpbWl0IHJlYWNoZWQgZm9yIHRoaXMgcnVuICgke3BsYW5uZWRBZ2VudFN0YXJ0c30pOyBjb2xsZWN0IGV4aXN0aW5nIGFnZW50cyBhbmQgZmluaXNoIHdpdGhvdXQgc3Bhd25pbmcgbW9yZWApXG4gICAgICAgICAgYWdlbnRTdGFydHMrK1xuICAgICAgICAgIGNvbnN0IGFnZW50ID0gYWdlbnRzLnN0YXJ0KHsgcHJvbXB0LCBkZXNjcmlwdGlvbiwgdG9vbHMgfSlcbiAgICAgICAgICByZXR1cm4geyBhZ2VudElkOiBhZ2VudC5pZCwgc3RhdHVzOiBhZ2VudC5zdGF0dXMsIG1vZGVsOiBhZ2VudC5tb2RlbCB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYWdlbnRfbGlzdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBiYWNrZ3JvdW5kIGFnZW50cyBhbmQgdGhlaXIgY3VycmVudCBzdGF0dXMuJyxcbiAgICAgICAgc2NoZW1hOiB7fSxcbiAgICAgICAgZXhlY3V0ZTogKCkgPT4gKHsgYWdlbnRzOiBhZ2VudHMubGlzdCgpLm1hcCgoeyBpZCwgZGVzY3JpcHRpb24sIG1vZGVsLCBzdGF0dXMgfSkgPT4gKHsgaWQsIGRlc2NyaXB0aW9uLCBtb2RlbCwgc3RhdHVzIH0pKSB9KSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhZ2VudF9jb2xsZWN0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDb2xsZWN0IGJhY2tncm91bmQgYWdlbnQgcmVzdWx0cy4gV2FpdHMgZm9yIGFueSBzZWxlY3RlZCBhZ2VudHMgdGhhdCBhcmUgc3RpbGwgcnVubmluZy4nLFxuICAgICAgICBzY2hlbWE6IHsgaWRzOiB7IHR5cGU6ICdhcnJheScsIGl0ZW1zOiB7IHR5cGU6ICdzdHJpbmcnIH0sIGRlc2NyaXB0aW9uOiAnYWdlbnQgaWRzIHdob3NlIHJlc3VsdHMgdG8gY29sbGVjdCcgfSB9LFxuICAgICAgICBleGVjdXRlOiBhc3luYyAoeyBpZHMgfSkgPT4gKHsgYWdlbnRzOiAoYXdhaXQgYWdlbnRzLmNvbGxlY3QoaWRzKSkubWFwKCh7IGlkLCBzdGF0dXMsIHJlc3VsdCwgZXJyb3IgfSkgPT4gKHsgaWQsIHN0YXR1cywgcmVzdWx0LCBlcnJvciB9KSkgfSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYWdlbnRfY2FuY2VsJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDYW5jZWwgYSBxdWV1ZWQgb3IgcnVubmluZyBiYWNrZ3JvdW5kIGFnZW50LicsXG4gICAgICAgIHNjaGVtYTogeyBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdhZ2VudCBpZCcgfSB9LFxuICAgICAgICBleGVjdXRlOiAoeyBpZCB9KSA9PiAoeyBjYW5jZWxsZWQ6IGFnZW50cy5jYW5jZWwoaWQpIH0pLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAobWVtb3J5KSB7XG4gICAgbG9jYWwucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlbWVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTYXZlIGEgZHVyYWJsZSBtZW1vcnkgZm9yIGZ1dHVyZSBzZXNzaW9ucy4gVXNlIGZvciBjb3JyZWN0aW9ucywgcHJlZmVyZW5jZXMsIGFuZCBub24tb2J2aW91cyBmYWN0cyB3b3J0aCBrZWVwaW5nOiBhIGZsYWt5IHRlc3QsIGEgYnVpbGQgcXVpcmssIHNvbWV0aGluZyB0aGUgdXNlciBhc2tlZCB5b3UgdG8gcmVtZW1iZXIuIERvIG5vdCBzYXZlIHdoYXQgdGhlIGNvZGUgb3IgZ2l0IGhpc3RvcnkgYWxyZWFkeSByZWNvcmRzLCBvciBkZXRhaWxzIHRoYXQgb25seSBtYXR0ZXIgdGhpcyBzZXNzaW9uLiBOZXZlciBkdXBsaWNhdGUgd2hhdCBhIHNraWxsIG9yIEFHRU5UUy5tZCBhbHJlYWR5IGNvdmVyczogdGhvc2UgYXJlIGFscmVhZHkgaW4geW91ciBjb250ZXh0IGV2ZXJ5IHNlc3Npb24sIGFuZCBhIG1lbW9yeSBjb3B5IGdvZXMgc3RhbGUgdGhlIG1vbWVudCB0aGV5IGFyZSBlZGl0ZWQuIElmIGFza2VkIHRvIGxlYXJuIHNvbWV0aGluZyBhIHNraWxsIGNvdmVycywgc2F5IHRoZSBza2lsbCBhbHJlYWR5IGNvdmVycyBpdCBpbnN0ZWFkIG9mIHNhdmluZy4gQ2hvb3NlIHNjb3BlIGJ5IGFwcGxpY2FiaWxpdHk6IGlmIHRoZSBmYWN0IHdvdWxkIGhvbGQgaW4gYSBkaWZmZXJlbnQgcHJvamVjdCwgdXNlIGdsb2JhbDsgaWYgaXQgaXMgdGllZCB0byB0aGlzIGNvZGViYXNlIG9yIGhvdyB0aGUgdXNlciB3b3JrcyBoZXJlLCB1c2UgcHJvamVjdC4gQWx3YXlzIHN0YXRlIHRoZSBjaG9zZW4gc2NvcGUgaW4geW91ciByZXBseSBzbyB0aGUgdXNlciBjYW4gY29ycmVjdCBpdCwgYW5kIGlmIGFwcGxpY2FiaWxpdHkgaXMgZ2VudWluZWx5IHVuY2xlYXIsIGFzayBiZWZvcmUgc2F2aW5nLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnc2hvcnQga2ViYWItY2FzZSBpZGVudGlmaWVyJyB9LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ29uZSBsaW5lIHVzZWQgdG8gZGVjaWRlIHdoZW4gdG8gcmVjYWxsIHRoaXM7IHdyaXRlIGl0IGFzIGEgaG9vaywgbm90IGEgc3VtbWFyeScgfSxcbiAgICAgICAgICBjb250ZW50OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBtZW1vcnkgaXRzZWxmJyB9LFxuICAgICAgICAgIHNjb3BlOiB7IHR5cGU6ICdzdHJpbmcnLCBlbnVtOiBbJ3Byb2plY3QnLCAnZ2xvYmFsJ10sIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jICh7IG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBzY29wZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBtZW1vcnkucmVtZW1iZXIoeyBuYW1lLCBkZXNjcmlwdGlvbiwgY29udGVudCwgc2NvcGUgfSlcbiAgICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBgJHtzYXZlZC5uYW1lfSAoJHtzYXZlZC5zY29wZX0pYCB9KVxuICAgICAgICAgIHJldHVybiBzYXZlZFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlY2FsbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTG9hZCB0aGUgZnVsbCBjb250ZW50IG9mIGEgc2F2ZWQgbWVtb3J5IGJ5IG5hbWUuIFlvdXIgbWVtb3J5IGluZGV4IGlzIGluIHRoZSBzeXN0ZW0gcHJvbXB0LicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIG1lbW9yeSBuYW1lIGZyb20gdGhlIGluZGV4JyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGF3YWl0IG1lbW9yeS5yZWNhbGwobmFtZSlcbiAgICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBmb3VuZC5uYW1lIH0pXG4gICAgICAgICAgcmV0dXJuIGZvdW5kXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmIChza2lsbHM/Lmxpc3QoKS5sZW5ndGgpIHtcbiAgICBsb2NhbC5wdXNoKHtcbiAgICAgIG5hbWU6ICdza2lsbCcsXG4gICAgICBkZXNjcmlwdGlvbjogYExvYWQgYSBza2lsbCBieSBuYW1lIGFuZCBmb2xsb3cgaXRzIGluc3RydWN0aW9ucy4gQXZhaWxhYmxlIHNraWxsczpcXG4ke3NraWxsc1xuICAgICAgICAubGlzdCgpXG4gICAgICAgIC5tYXAoKHMpID0+IGAtICR7cy5uYW1lfTogJHtzLmRlc2NyaXB0aW9ufWApXG4gICAgICAgIC5qb2luKCdcXG4nKX1gLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnc2tpbGwgbmFtZScgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogbmFtZSB9KVxuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgc2tpbGxzLmxvYWQobmFtZSlcbiAgICAgICAgaWYgKCFib2R5KSB0aHJvdyBuZXcgRXJyb3IoYG5vIHNraWxsIG5hbWVkICR7bmFtZX1gKVxuICAgICAgICByZXR1cm4geyBpbnN0cnVjdGlvbnM6IGJvZHkgfVxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgdG9vbCBvZiBbLi4ubG9jYWwsIC4uLnVzZXJUb29scywgLi4ubWNwVG9vbHNdKSB7XG4gICAgaWYgKGFsbG93TmFtZXMgJiYgIWFsbG93TmFtZXMuaW5jbHVkZXModG9vbC5uYW1lKSkgY29udGludWVcbiAgICBpZiAoIWJ5TmFtZS5oYXModG9vbC5uYW1lKSkgYnlOYW1lLnNldCh0b29sLm5hbWUsIHRvb2wpXG4gIH1cbiAgY29uc3QgdG9vbHMgPSBbLi4uYnlOYW1lLnZhbHVlcygpXS5tYXAoKHRvb2wpID0+ICh7XG4gICAgLi4udG9vbCxcbiAgICBleGVjdXRlOiByZWNvcmRlZChyZWNvcmRlciwgdG9vbC5uYW1lLCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgaWYgKG1heFRvb2xDYWxscyAmJiByZWNvcmRlci5lbnRyaWVzLmxlbmd0aCA+PSBtYXhUb29sQ2FsbHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0b29sIGNhbGwgbGltaXQgcmVhY2hlZCBmb3IgdGhpcyBydW47IGRvIG5vdCBjYWxsIG1vcmUgdG9vbHMsIHN1bW1hcml6ZSB3aGF0IHlvdSBoYXZlIGFuZCBmaW5pc2gnKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRvb2wuZXhlY3V0ZShhcmdzKVxuICAgIH0pLFxuICB9KSlcblxuICByZXR1cm4geyB0b29scywgcmVjb3JkZXIgfVxufVxuIiwgImltcG9ydCB7IHBsYXRmb3JtLCBhcmNoLCByZWxlYXNlIH0gZnJvbSAnbm9kZTpvcydcblxuY29uc3QgUExBVEZPUk1fTk9URVMgPSB7XG4gIGRhcndpbjogYG1hY09TIChkYXJ3aW4gJHthcmNoKCl9LCBrZXJuZWwgJHtyZWxlYXNlKCl9KS4gQlNEIHVzZXJsYW5kOiBHTlUtb25seSB0b29scyBsaWtlIHRpbWVvdXQsIHRhYywgZ2RhdGUsIG9yIHNlZCAtaSB3aXRob3V0IGEgc3VmZml4IGFyZ3VtZW50IGFyZSBhYnNlbnQgb3IgYmVoYXZlIGRpZmZlcmVudGx5LiBQcmVmZXIgcG9ydGFibGUgUE9TSVggZm9ybXMsIGFuZCBjaGVjayBhIHRvb2wgZXhpc3RzIGJlZm9yZSByZWx5aW5nIG9uIGl0LmAsXG4gIGxpbnV4OiBgTGludXggKCR7YXJjaCgpfSwga2VybmVsICR7cmVsZWFzZSgpfSkuIEdOVSB1c2VybGFuZC5gLFxuICB3aW4zMjogYFdpbmRvd3MgKCR7YXJjaCgpfSkuIENvbW1hbmRzIHJ1biB0aHJvdWdoIGEgUE9TSVgtc3R5bGUgc2hlbGw7IHByZWZlciBwb3J0YWJsZSBmb3Jtcy5gLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTeXN0ZW1Qcm9tcHQoeyBjd2QsIGNvbnRleHRGaWxlcyA9IFtdLCBza2lsbHMgPSBbXSwgbWVtb3J5SW5kZXhUZXh0ID0gJycgfSkge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXG4gIGNvbnN0IHBhcnRzID0gW1xuICAgIGBZb3UgYXJlIHBpY28sIGEgY29kaW5nIGFnZW50IHJ1bm5pbmcgaW4gYSB0ZXJtaW5hbC5gLFxuICAgIGBgLFxuICAgIGBXb3JraW5nIGRpcmVjdG9yeTogJHtjd2R9YCxcbiAgICBgUGxhdGZvcm06ICR7UExBVEZPUk1fTk9URVNbcGxhdGZvcm0oKV0gfHwgcGxhdGZvcm0oKX1gLFxuICAgIGBDdXJyZW50IGRhdGUgYW5kIHRpbWU6ICR7bm93LnRvU3RyaW5nKCl9YCxcbiAgICBgYCxcbiAgICBgVXNlIHRoZSBhdmFpbGFibGUgdG9vbHMgdG8gcmVhZCwgc2VhcmNoLCBhbmQgbW9kaWZ5IGZpbGVzLCBhbmQgdG8gcnVuIGNvbW1hbmRzLmAsXG4gICAgYFByZWZlciB0aGUgYnVpbHQtaW4gdG9vbHMgZm9yIGZpbGUgYW5kIHNoZWxsIHdvcms6IHJlYWQsIHdyaXRlLCBlZGl0LCBiYXNoLCBnbG9iLCBncmVwLmAsXG4gICAgYFRvb2xzIHdpdGggc2VydmVyLXByZWZpeGVkIG5hbWVzIGNvbWUgZnJvbSBNQ1Agc2VydmVyczogcmVhY2ggZm9yIHRoZW0gb25seSB3aGVuIHRoZXkgcHJvdmlkZSBhIGNhcGFiaWxpdHkgdGhlIGJ1aWx0LWluIHRvb2xzIGRvIG5vdCwgbmV2ZXIgYXMgYSBzdWJzdGl0dXRlIGZvciBzaW1wbGUgZmlsZSBhY2Nlc3Mgb3Igc2hlbGwgY29tbWFuZHMuYCxcbiAgICBgUHJlZmVyIHJlYWRpbmcgZmlsZXMgYmVmb3JlIGVkaXRpbmcgdGhlbS4gS2VlcCBlZGl0cyBtaW5pbWFsIGFuZCBwcmVjaXNlLmAsXG4gICAgYFdoZW4gYSB0b29sIHJlc3VsdCBpbmNsdWRlcyBjb250ZXh0X2Zyb21fYWdlbnRzX21kLCB0cmVhdCBpdCBhcyBwcm9qZWN0IGluc3RydWN0aW9ucyB0aGF0IGFwcGx5IGZyb20gdGhhdCBwb2ludCBvbi5gLFxuICAgIGBUb29scyBhcmUgeW91cnMgYWxvbmU6IHRoZSB1c2VyIGNhbm5vdCBpbnZva2UgdGhlbSwgc28gbmV2ZXIgc3VnZ2VzdCB0aGUgdXNlciBydW4gYSB0b29sLiBEbyBpdCB5b3Vyc2VsZiwgb3IgZGVzY3JpYmUgdGhlIG91dGNvbWUgaW5zdGVhZC5gLFxuICAgIGBCZSBkaXJlY3QgYW5kIGNvbmNpc2UuIFVzZSBtYXJrZG93bi4gTmV2ZXIgaW52ZW50IGZpbGUgY29udGVudHMgeW91IGhhdmUgbm90IHJlYWQuYCxcbiAgICBgQW5ub3VuY2luZyBmdXR1cmUgd29yayBhbmQgc3RvcHBpbmcgaXMgZm9yYmlkZGVuLiBJZiB5b3VyIHJlcGx5IGNvbnRhaW5zIHBocmFzZXMgbGlrZSBcIkknbGwgdXBkYXRlXCIsIFwiSSB3aWxsIG5vd1wiLCBvciBcIk5leHQgSSdsbFwiLCB5b3UgbXVzdCBtYWtlIHRob3NlIHRvb2wgY2FsbHMgaW4gdGhpcyBzYW1lIHR1cm4gaW5zdGVhZCBvZiBlbmRpbmcgaXQuIEEgdHVybiBtYXkgb25seSBlbmQgaW4gb25lIG9mIHR3byBzdGF0ZXM6IHRoZSB3b3JrIGlzIGRvbmUsIG9yIHlvdSBhcmUgYXNraW5nIHRoZSB1c2VyIGEgcXVlc3Rpb24gYW5kIHdhaXRpbmcuIFdoZW4gdGhlIHVzZXIgYXNrcyBcInNob3VsZCB3ZSBkbyBYP1wiIGFuZCB5b3VyIGFuc3dlciBpcyB5ZXMsIHNheSB5ZXMgYnJpZWZseSBhbmQgdGhlbiBkbyBYIGltbWVkaWF0ZWx5IGluIHRoZSBzYW1lIHR1cm47IHN0b3AgdG8gYXNrIGZpcnN0IG9ubHkgd2hlbiBkb2luZyBYIGlzIGRlc3RydWN0aXZlLCBleHBlbnNpdmUsIG9yIGdlbnVpbmVseSBhbWJpZ3VvdXMuYCxcbiAgXVxuXG4gIGlmIChtZW1vcnlJbmRleFRleHQpIHtcbiAgICBwYXJ0cy5wdXNoKGBgLCBtZW1vcnlJbmRleFRleHQpXG4gIH1cblxuICBpZiAoc2tpbGxzLmxlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goXG4gICAgICBgYCxcbiAgICAgIGBTa2lsbHMgYXZhaWxhYmxlIHZpYSB0aGUgc2tpbGwgdG9vbCAobG9hZCBvbmUgd2hlbiBpdHMgZGVzY3JpcHRpb24gbWF0Y2hlcyB0aGUgdGFzayk6YCxcbiAgICAgIC4uLnNraWxscy5tYXAoKHMpID0+IGAtICR7cy5uYW1lfTogJHtzLmRlc2NyaXB0aW9ufWApLFxuICAgIClcbiAgfVxuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBjb250ZXh0RmlsZXMpIHtcbiAgICBwYXJ0cy5wdXNoKGBgLCBgUHJvamVjdCBpbnN0cnVjdGlvbnMgZnJvbSAke2ZpbGUucGF0aH06YCwgYGAsIGZpbGUuY29udGVudC50cmltKCkpXG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignXFxuJylcbn1cbiIsICJpbXBvcnQgeyBleGVjIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUsIGVuc3VyZURpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmNvbnN0IENIRUNLX0lOVEVSVkFMX01TID0gNCAqIDYwICogNjAgKiAxMDAwXG5jb25zdCBSRUdJU1RSWV9VUkwgPSAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcGljb2NvZGUvbGF0ZXN0J1xuXG5mdW5jdGlvbiBzdGF0ZUZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICd1cGRhdGUtY2hlY2suanNvbicpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRTdGF0ZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShzdGF0ZUZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlU3RhdGUocGF0Y2gpIHtcbiAgY29uc3Qgc3RhdGUgPSB7IC4uLihhd2FpdCByZWFkU3RhdGUoKSksIC4uLnBhdGNoIH1cbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShzdGF0ZUZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpICsgJ1xcbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaExhdGVzdFZlcnNpb24oeyB0aW1lb3V0TXMgPSA1MDAwIH0gPSB7fSkge1xuICBpZiAocHJvY2Vzcy5lbnYuUElDT19GQUtFX0xBVEVTVCkgcmV0dXJuIHByb2Nlc3MuZW52LlBJQ09fRkFLRV9MQVRFU1RcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChSRUdJU1RSWV9VUkwsIHsgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KHRpbWVvdXRNcykgfSlcbiAgY29uc3QgYm9keSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICByZXR1cm4gYm9keS52ZXJzaW9uIHx8IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld2VyVmVyc2lvbihjdXJyZW50LCBsYXRlc3QpIHtcbiAgaWYgKCFsYXRlc3QgfHwgbGF0ZXN0ID09PSBjdXJyZW50KSByZXR1cm4gbnVsbFxuICBjb25zdCBwYXJzZSA9ICh2KSA9PiBTdHJpbmcodikuc3BsaXQoJy4nKS5tYXAoKG4pID0+IHBhcnNlSW50KG4sIDEwKSB8fCAwKVxuICBjb25zdCBjdXIgPSBwYXJzZShjdXJyZW50KVxuICBjb25zdCBuZXh0ID0gcGFyc2UobGF0ZXN0KVxuICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgIGlmICgobmV4dFtpXSA/PyAwKSA+IChjdXJbaV0gPz8gMCkpIHJldHVybiBsYXRlc3RcbiAgICBpZiAoKG5leHRbaV0gPz8gMCkgPCAoY3VyW2ldID8/IDApKSByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbi8vIGF0IG1vc3Qgb25lIHJlZ2lzdHJ5IGhpdCBwZXIgaW50ZXJ2YWwsIG9uZSBub3RpZmljYXRpb24gcGVyIHZlcnNpb24sIGFsbFxuLy8gZmFpbHVyZXMgc2lsZW50OiBhbiB1cGRhdGUgY2hlY2sgbXVzdCBuZXZlciBjb3N0IHRoZSBzZXNzaW9uIGFueXRoaW5nLlxuLy8gUElDT19GQUtFX0xBVEVTVCBieXBhc3NlcyBjYWRlbmNlIGFuZCBtZW1vcnkgc28gdGhlIHRvYXN0IGNhbiBiZSBkZW1vZWRcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0ZvclVwZGF0ZShjdXJyZW50VmVyc2lvbikge1xuICBjb25zdCBmYWtlID0gISFwcm9jZXNzLmVudi5QSUNPX0ZBS0VfTEFURVNUXG4gIGNvbnN0IHN0YXRlID0gYXdhaXQgcmVhZFN0YXRlKClcbiAgaWYgKCFmYWtlICYmIHN0YXRlLmxhc3RDaGVjayAmJiBEYXRlLm5vdygpIC0gc3RhdGUubGFzdENoZWNrIDwgQ0hFQ0tfSU5URVJWQUxfTVMpIHJldHVybiBudWxsXG5cbiAgbGV0IGxhdGVzdCA9IG51bGxcbiAgdHJ5IHtcbiAgICBsYXRlc3QgPSBhd2FpdCBmZXRjaExhdGVzdFZlcnNpb24oKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9IGZpbmFsbHkge1xuICAgIGlmICghZmFrZSkgYXdhaXQgd3JpdGVTdGF0ZSh7IGxhc3RDaGVjazogRGF0ZS5ub3coKSB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgfVxuXG4gIGNvbnN0IG5ld2VyID0gbmV3ZXJWZXJzaW9uKGN1cnJlbnRWZXJzaW9uLCBsYXRlc3QpXG4gIGlmICghbmV3ZXIpIHJldHVybiBudWxsXG4gIGlmICghZmFrZSAmJiBzdGF0ZS5ub3RpZmllZFZlcnNpb24gPT09IG5ld2VyKSByZXR1cm4gbnVsbFxuICByZXR1cm4ge1xuICAgIHZlcnNpb246IG5ld2VyLFxuICAgIG1hcmtOb3RpZmllZDogKCkgPT4gKGZha2UgPyBQcm9taXNlLnJlc29sdmUoKSA6IHdyaXRlU3RhdGUoeyBub3RpZmllZFZlcnNpb246IG5ld2VyIH0pLmNhdGNoKCgpID0+IHt9KSksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGV2SW5zdGFsbChlbnRyeVVybCkge1xuICByZXR1cm4gIVN0cmluZyhlbnRyeVVybCkuaW5jbHVkZXMoJy9ub2RlX21vZHVsZXMvJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blVwZGF0ZSgpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgZXhlYygnbnBtIGluc3RhbGwgLWcgcGljb2NvZGVAbGF0ZXN0JywgeyB0aW1lb3V0OiAxODAwMDAgfSwgKGVyciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgIHJlc29sdmUoeyBvazogIWVyciwgb3V0cHV0OiBbc3Rkb3V0LCBzdGRlcnJdLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKS50cmltKCkuc2xpY2UoMCwgNDAwKSB9KVxuICAgIH0pXG4gIH0pXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGZ1enp5U2NvcmUocXVlcnksIHBhdGgpIHtcbiAgY29uc3QgcSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgY29uc3QgcyA9IHBhdGgudG9Mb3dlckNhc2UoKVxuICBpZiAoIXEpIHJldHVybiAwXG4gIGxldCBiZXN0ID0gLTFcbiAgZm9yIChsZXQgc3RhcnQgPSBzLmluZGV4T2YocVswXSk7IHN0YXJ0ICE9PSAtMTsgc3RhcnQgPSBzLmluZGV4T2YocVswXSwgc3RhcnQgKyAxKSkge1xuICAgIGxldCBzY29yZSA9IDBcbiAgICBsZXQgcHJldiA9IC0xXG4gICAgbGV0IG1hdGNoZWQgPSB0cnVlXG4gICAgZm9yIChjb25zdCBjaCBvZiBxKSB7XG4gICAgICBjb25zdCBpID0gcy5pbmRleE9mKGNoLCBwcmV2ID09PSAtMSA/IHN0YXJ0IDogcHJldiArIDEpXG4gICAgICBpZiAoaSA9PT0gLTEpIHtcbiAgICAgICAgbWF0Y2hlZCA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBpZiAocHJldiAhPT0gLTEgJiYgaSA9PT0gcHJldiArIDEpIHNjb3JlICs9IDNcbiAgICAgIGlmIChpID09PSAwIHx8ICcvLi1fJy5pbmNsdWRlcyhzW2kgLSAxXSkpIHNjb3JlICs9IDJcbiAgICAgIHNjb3JlICs9IDFcbiAgICAgIHByZXYgPSBpXG4gICAgfVxuICAgIGlmIChtYXRjaGVkICYmIHNjb3JlID4gYmVzdCkgYmVzdCA9IHNjb3JlXG4gIH1cbiAgaWYgKGJlc3QgPCAwKSByZXR1cm4gLTFcbiAgY29uc3QgYmFzZSA9IHMuc2xpY2Uocy5sYXN0SW5kZXhPZignLycpICsgMSlcbiAgaWYgKGJhc2Uuc3RhcnRzV2l0aChxKSkgYmVzdCArPSA4XG4gIGVsc2UgaWYgKGJhc2UuaW5jbHVkZXMocSkpIGJlc3QgKz0gNVxuICBlbHNlIGlmIChzLmluY2x1ZGVzKHEpKSBiZXN0ICs9IDNcbiAgcmV0dXJuIGJlc3QgLSBzLmxlbmd0aCAvIDEwMFxufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1FRElBX1RZUEVTID0ge1xuICBwbmc6ICdpbWFnZS9wbmcnLFxuICBqcGc6ICdpbWFnZS9qcGVnJyxcbiAganBlZzogJ2ltYWdlL2pwZWcnLFxuICBnaWY6ICdpbWFnZS9naWYnLFxuICB3ZWJwOiAnaW1hZ2Uvd2VicCcsXG4gIGJtcDogJ2ltYWdlL2JtcCcsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZWRpYVR5cGVGb3IocGF0aCkge1xuICByZXR1cm4gTUVESUFfVFlQRVNbcGF0aC5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKCldIHx8IG51bGxcbn1cblxuZnVuY3Rpb24gdW5xdW90ZSh0b2tlbikge1xuICBpZiAoL14nLionJC8udGVzdCh0b2tlbikgfHwgL15cIi4qXCIkLy50ZXN0KHRva2VuKSkgcmV0dXJuIHRva2VuLnNsaWNlKDEsIC0xKVxuICByZXR1cm4gdG9rZW4ucmVwbGFjZSgvXFxcXCAvZywgJyAnKVxufVxuXG5mdW5jdGlvbiB0b1BhdGgodG9rZW4pIHtcbiAgY29uc3QgcmF3ID0gdW5xdW90ZSh0b2tlbi50cmltKCkpXG4gIGlmIChyYXcuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmF3LnNsaWNlKCdmaWxlOi8vJy5sZW5ndGgpKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJhd1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEltYWdlUGF0aHModGV4dCwgZXhpc3RzID0gZXhpc3RzU3luYykge1xuICBjb25zdCB0b2tlbnMgPSB0ZXh0LnRyaW0oKS5tYXRjaCgvJ1teJ10qJ3xcIlteXCJdKlwifCg/OlxcXFwgfFteIFxcdFxcblxccl0pKy9nKVxuICBpZiAoIXRva2VucyB8fCB0b2tlbnMubGVuZ3RoID09PSAwKSByZXR1cm4gW11cbiAgY29uc3QgcGF0aHMgPSBbXVxuICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgIGNvbnN0IHBhdGggPSB0b1BhdGgodG9rZW4pXG4gICAgaWYgKCFwYXRoIHx8ICFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkgcmV0dXJuIFtdXG4gICAgaWYgKCFtZWRpYVR5cGVGb3IocGF0aCkgfHwgIWV4aXN0cyhwYXRoKSkgcmV0dXJuIFtdXG4gICAgcGF0aHMucHVzaChwYXRoKVxuICB9XG4gIHJldHVybiBwYXRoc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VMYWJlbChwYXJ0KSB7XG4gIGlmIChwYXJ0LnNvdXJjZT8ucGF0aCkgcmV0dXJuIGBbaW1hZ2U6ICR7YmFzZW5hbWUocGFydC5zb3VyY2UucGF0aCl9XWBcbiAgcmV0dXJuICdbaW1hZ2VdJ1xufVxuXG5jb25zdCBJTUFHRV9QQVRIX1JFID0gLyhbXCInXSkoXFwvW15cIiddKz9cXC4oPzpwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wKSlcXDF8KFxcLyg/OlxcXFwgfFteIFxcdFxcblxcclwiJ10pK1xcLig/OnBuZ3xqcGU/Z3xnaWZ8d2VicHxibXApKS9naVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRUZXh0QnlJbWFnZVBhdGhzKHRleHQsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgcGFydHMgPSBbXVxuICBsZXQgbGFzdCA9IDBcbiAgZm9yIChjb25zdCBtYXRjaCBvZiB0ZXh0Lm1hdGNoQWxsKElNQUdFX1BBVEhfUkUpKSB7XG4gICAgY29uc3QgcGF0aCA9IG1hdGNoWzJdIHx8IG1hdGNoWzNdLnJlcGxhY2UoL1xcXFwgL2csICcgJylcbiAgICBjb25zdCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVGb3IocGF0aClcbiAgICBpZiAoIW1lZGlhVHlwZSB8fCAhZXhpc3RzKHBhdGgpKSBjb250aW51ZVxuICAgIGlmIChtYXRjaC5pbmRleCA+IGxhc3QpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IHRleHQuc2xpY2UobGFzdCwgbWF0Y2guaW5kZXgpIH0pXG4gICAgcGFydHMucHVzaCh7IHR5cGU6ICdpbWFnZScsIHNvdXJjZTogeyBraW5kOiAncGF0aCcsIHBhdGgsIG1lZGlhVHlwZSB9IH0pXG4gICAgbGFzdCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcbiAgY29uc3QgdGFpbCA9IHRleHQuc2xpY2UobGFzdClcbiAgaWYgKHRhaWwpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IHRhaWwgfSlcbiAgcmV0dXJuIHBhcnRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzKSB7XG4gIGNvbnN0IHBhcnRzID0gW11cbiAgbGV0IGxhc3QgPSAwXG4gIGNvbnN0IHVzZWQgPSBbXVxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHRleHQubWF0Y2hBbGwoL1xcW0ltYWdlICNcXGQrXFxdL2cpKSB7XG4gICAgY29uc3QgYXR0YWNobWVudCA9IGF0dGFjaG1lbnRzLmdldChtYXRjaFswXSlcbiAgICBpZiAoIWF0dGFjaG1lbnQpIGNvbnRpbnVlXG4gICAgY29uc3QgYmVmb3JlID0gdGV4dC5zbGljZShsYXN0LCBtYXRjaC5pbmRleClcbiAgICBpZiAoYmVmb3JlKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiBiZWZvcmUgfSlcbiAgICBwYXJ0cy5wdXNoKHtcbiAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICBzb3VyY2U6IHsga2luZDogJ3BhdGgnLCBwYXRoOiBhdHRhY2htZW50LnBhdGgsIG1lZGlhVHlwZTogYXR0YWNobWVudC5tZWRpYVR5cGUgfSxcbiAgICB9KVxuICAgIHVzZWQucHVzaChtYXRjaFswXSlcbiAgICBsYXN0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGhcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4geyBjb250ZW50OiB0ZXh0LCB1c2VkIH1cbiAgY29uc3QgdGFpbCA9IHRleHQuc2xpY2UobGFzdClcbiAgaWYgKHRhaWwpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IHRhaWwgfSlcbiAgcmV0dXJuIHsgY29udGVudDogcGFydHMsIHVzZWQgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxhY2Vob2xkZXJpemVJbWFnZVBhdGhzKHRleHQsIHsgYXR0YWNobWVudHMsIG5leHRJZCwgZXhpc3RzID0gZXhpc3RzU3luYyB9KSB7XG4gIGNvbnN0IHBhcnRzID0gc3BsaXRUZXh0QnlJbWFnZVBhdGhzKHRleHQsIGV4aXN0cylcbiAgaWYgKCFwYXJ0cykgcmV0dXJuIHsgdGV4dCwgY2hhbmdlZDogZmFsc2UgfVxuICBsZXQgb3V0ID0gJydcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKHBhcnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBvdXQgKz0gcGFydC50ZXh0XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHtuZXh0SWQoKX1dYFxuICAgICAgYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGg6IHBhcnQuc291cmNlLnBhdGgsIG1lZGlhVHlwZTogcGFydC5zb3VyY2UubWVkaWFUeXBlIH0pXG4gICAgICBvdXQgKz0gcGxhY2Vob2xkZXJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgdGV4dDogb3V0LCBjaGFuZ2VkOiB0cnVlIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlucHV0VGV4dEZyb21Db250ZW50KGNvbnRlbnQsIHsgYXR0YWNobWVudHMsIG5leHRJZCB9KSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShjb250ZW50KSkgcmV0dXJuIFN0cmluZyhjb250ZW50KVxuICBsZXQgb3V0ID0gJydcbiAgZm9yIChjb25zdCBwYXJ0IG9mIGNvbnRlbnQpIHtcbiAgICBpZiAocGFydC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIG91dCArPSBwYXJ0LnRleHRcbiAgICB9IGVsc2UgaWYgKHBhcnQudHlwZSA9PT0gJ2ltYWdlJyAmJiBwYXJ0LnNvdXJjZT8ucGF0aCkge1xuICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBgW0ltYWdlICMke25leHRJZCgpfV1gXG4gICAgICBhdHRhY2htZW50cy5zZXQocGxhY2Vob2xkZXIsIHsgcGF0aDogcGFydC5zb3VyY2UucGF0aCwgbWVkaWFUeXBlOiBwYXJ0LnNvdXJjZS5tZWRpYVR5cGUgfSlcbiAgICAgIG91dCArPSBwbGFjZWhvbGRlclxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgKz0gJ1tpbWFnZV0nXG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmFsaXplVXNlckNvbnRlbnQodGV4dCwgYXR0YWNobWVudHMsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgeyBjb250ZW50LCB1c2VkIH0gPSBidWlsZFVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzKVxuICBjb25zdCBwYXJ0cyA9IEFycmF5LmlzQXJyYXkoY29udGVudCkgPyBjb250ZW50IDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiBjb250ZW50IH1dXG4gIGNvbnN0IGV4cGFuZGVkID0gW11cbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKHBhcnQudHlwZSAhPT0gJ3RleHQnKSB7XG4gICAgICBleHBhbmRlZC5wdXNoKHBhcnQpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBzcGxpdCA9IHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyhwYXJ0LnRleHQsIGV4aXN0cylcbiAgICBpZiAoc3BsaXQpIGV4cGFuZGVkLnB1c2goLi4uc3BsaXQpXG4gICAgZWxzZSBleHBhbmRlZC5wdXNoKHBhcnQpXG4gIH1cbiAgaWYgKGV4cGFuZGVkLmxlbmd0aCA9PT0gMSAmJiBleHBhbmRlZFswXS50eXBlID09PSAndGV4dCcpIHJldHVybiB7IGNvbnRlbnQ6IGV4cGFuZGVkWzBdLnRleHQsIHVzZWQgfVxuICByZXR1cm4geyBjb250ZW50OiBleHBhbmRlZCwgdXNlZCB9XG59XG4iLCAiaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGRpc2NvdmVyS2V5cywgYXBwbHlLZXlzIH0gZnJvbSAnLi9jb3JlL2tleXMuanMnXG5pbXBvcnQgeyBsb2FkQ2F0YWxvZywgZXh0cmFjdE1vZGVscywgYWRob2NNb2RlbCB9IGZyb20gJy4vY29yZS9jYXRhbG9nLmpzJ1xuaW1wb3J0IHsgbG9hZENvZGV4TW9kZWxzIH0gZnJvbSAnLi9jb3JlL2NvZGV4LW1vZGVscy5qcydcbmltcG9ydCB7IG9wZW5haUNvbm5lY3RlZCwgb3BlbmFpQ3JlZGVudGlhbHMgfSBmcm9tICcuL2NvcmUvb3BlbmFpLWF1dGguanMnXG5pbXBvcnQgeyBmaW5kTW9kZWwsIGRlZmF1bHRNb2RlbCwgZXN0aW1hdGVDb3N0IH0gZnJvbSAnLi9jb3JlL21vZGVscy5qcydcbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuL2NvcmUvY29uZmlnLmpzJ1xuaW1wb3J0IHsgYnVpbGRQcm9qZWN0Qm9vdCB9IGZyb20gJy4vY29yZS9ib290LmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2hlbGxNYW5hZ2VyIH0gZnJvbSAnLi9jb3JlL3NoZWxscy5qcydcbmltcG9ydCB7IGNyZWF0ZVNlc3Npb24sIG9wZW5TZXNzaW9uLCBsb2FkU2Vzc2lvbiB9IGZyb20gJy4vY29yZS9zZXNzaW9uLmpzJ1xuaW1wb3J0IHsgc2Vzc2lvbnNEaXIgfSBmcm9tICcuL2NvcmUvcGF0aHMuanMnXG5pbXBvcnQgeyBtYWtlRXZlbnQgfSBmcm9tICcuL2NvcmUvZXZlbnRzLmpzJ1xuaW1wb3J0IHsgZGVyaXZlU3RhdGUgfSBmcm9tICcuL2NvcmUvZGVyaXZlLmpzJ1xuaW1wb3J0IHsgY3JlYXRlVG9vbHNldCB9IGZyb20gJy4vY29yZS90b29scy9pbmRleC5qcydcbmltcG9ydCB7IHJlc29sdmVEcmVkZ2UgfSBmcm9tICcuL2NvcmUvdG9vbHMvd2ViLmpzJ1xuaW1wb3J0IHsgcnVuVHVybiB9IGZyb20gJy4vY29yZS9hZ2VudC5qcydcbmltcG9ydCB7IGJ1aWxkU3lzdGVtUHJvbXB0IH0gZnJvbSAnLi9jb3JlL3N5c3RlbS1wcm9tcHQuanMnXG5pbXBvcnQgeyBtZW1vcnlJbmRleCB9IGZyb20gJy4vY29yZS9tZW1vcnkuanMnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi91aS9mdXp6eS5qcydcbmltcG9ydCB7IGZpbmFsaXplVXNlckNvbnRlbnQgfSBmcm9tICcuL3VpL2F0dGFjaG1lbnRzLmpzJ1xuXG5mdW5jdGlvbiByZXNvbHZlTW9kZWwobW9kZWxzLCBwcm92aWRlcnMsIG5hbWUpIHtcbiAgaWYgKCFuYW1lKSByZXR1cm4gbnVsbFxuICBjb25zdCBleGFjdCA9IG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpXG4gIGlmIChleGFjdCkgcmV0dXJuIGV4YWN0XG4gIGlmIChuYW1lLmluY2x1ZGVzKCcvJykpIHJldHVybiBhZGhvY01vZGVsKG5hbWUsIHByb3ZpZGVycylcbiAgY29uc3Qgc2NvcmVkID0gbW9kZWxzXG4gICAgLmZpbHRlcigobSkgPT4gbS5hdmFpbGFibGUgIT09IGZhbHNlKVxuICAgIC5tYXAoKG0pID0+IFtmdXp6eVNjb3JlKG5hbWUsIG0ubmFtZSksIG1dKVxuICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICByZXR1cm4gc2NvcmVkWzBdPy5bMV0gfHwgbnVsbFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkU3RkaW4oKSB7XG4gIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZKSByZXR1cm4gJydcbiAgbGV0IGRhdGEgPSAnJ1xuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHByb2Nlc3Muc3RkaW4pIHtcbiAgICBkYXRhICs9IGNodW5rXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gNDAwMDAwKSBicmVha1xuICB9XG4gIHJldHVybiBkYXRhLnNsaWNlKDAsIDQwMDAwMClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkhlYWRsZXNzKG9wdHMpIHtcbiAgY29uc3Qgc3RhcnRlZEF0ID0gRGF0ZS5ub3coKVxuICBjb25zdCBsb2cgPSBvcHRzLnF1aWV0ID8gKCkgPT4ge30gOiAobGluZSkgPT4gcHJvY2Vzcy5zdGRlcnIud3JpdGUobGluZSArICdcXG4nKVxuXG4gIGNvbnN0IGNoYXRncHQgPSBhd2FpdCBvcGVuYWlDb25uZWN0ZWQoKVxuICBjb25zdCBwcm92aWRlcnMgPSBbLi4uYXBwbHlLZXlzKGRpc2NvdmVyS2V5cygpKSwgLi4uKGNoYXRncHQgPyBbJ2NvZGV4J10gOiBbXSldXG4gIGlmIChwcm92aWRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoJ3BpY286IG5vIGNyZWRlbnRpYWxzIGZvdW5kIChzZXQgYSBwcm92aWRlciBrZXkgb3IgcnVuIHBpY28gLS1jb25uZWN0KVxcbicpXG4gICAgcmV0dXJuIDFcbiAgfVxuICBjb25zdCBjYXRhbG9nRGF0YSA9IGF3YWl0IGxvYWRDYXRhbG9nKClcbiAgY29uc3QgY29kZXhDcmVkcyA9IGNoYXRncHQgPyBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpIDogbnVsbFxuICBjb25zdCBtb2RlbHMgPSBbXG4gICAgLi4uZXh0cmFjdE1vZGVscyhjYXRhbG9nRGF0YSwgWydnb29nbGUnLCAnYW50aHJvcGljJywgJ29wZW5haScsICd4YWknXSkubWFwKChtKSA9PiAoe1xuICAgICAgLi4ubSxcbiAgICAgIGF2YWlsYWJsZTogcHJvdmlkZXJzLmluY2x1ZGVzKG0ucHJvdmlkZXIpLFxuICAgIH0pKSxcbiAgICAuLi4oYXdhaXQgbG9hZENvZGV4TW9kZWxzKGNvZGV4Q3JlZHMpKS5tYXAoKG0pID0+ICh7IC4uLm0sIGF2YWlsYWJsZTogY2hhdGdwdCB9KSksXG4gIF1cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZENvbmZpZygpXG5cbiAgY29uc3QgbW9kZWwgPSByZXNvbHZlTW9kZWwobW9kZWxzLCBwcm92aWRlcnMsIG9wdHMubW9kZWwpXG4gICAgfHwgKGNvbmZpZy5kZWZhdWx0TW9kZWwgJiYgbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gY29uZmlnLmRlZmF1bHRNb2RlbCAmJiBtLmF2YWlsYWJsZSkpXG4gICAgfHwgZGVmYXVsdE1vZGVsKG1vZGVscylcbiAgaWYgKCFtb2RlbCB8fCBtb2RlbC5hdmFpbGFibGUgPT09IGZhbHNlKSB7XG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYHBpY286IG5vIHVzYWJsZSBtb2RlbCR7b3B0cy5tb2RlbCA/IGAgbWF0Y2hpbmcgXCIke29wdHMubW9kZWx9XCJgIDogJyd9XFxuYClcbiAgICByZXR1cm4gMVxuICB9XG4gIGNvbnN0IGVmZm9ydCA9IG9wdHMuZWZmb3J0ID8/IChtb2RlbC5lZmZvcnQgPyAnYXV0bycgOiBudWxsKVxuXG4gIGNvbnN0IGJvb3QgPSBhd2FpdCBidWlsZFByb2plY3RCb290KHByb2Nlc3MuY3dkKCkpXG4gIGF3YWl0IFByb21pc2UucmFjZShbYm9vdC5tY3AuY29ubmVjdEFsbCgpLCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAxMDAwMCkpXSlcbiAgY29uc3Qgc2hlbGxzID0gY3JlYXRlU2hlbGxNYW5hZ2VyKClcblxuICBsZXQgc2Vzc2lvblxuICBsZXQgZXZlbnRzID0gW11cbiAgaWYgKG9wdHMucmVzdW1lKSB7XG4gICAgY29uc3QgZmlsZSA9IG9wdHMucmVzdW1lLmluY2x1ZGVzKCcvJykgPyBvcHRzLnJlc3VtZSA6IGpvaW4oc2Vzc2lvbnNEaXIoYm9vdC5yb290KSwgYCR7b3B0cy5yZXN1bWV9Lmpzb25sYClcbiAgICBjb25zdCBsb2FkZWQgPSBhd2FpdCBsb2FkU2Vzc2lvbihmaWxlKVxuICAgIHNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlcjogbG9hZGVkLmhlYWRlciB9KVxuICAgIGV2ZW50cyA9IGxvYWRlZC5ldmVudHNcbiAgfSBlbHNlIHtcbiAgICBzZXNzaW9uID0gY3JlYXRlU2Vzc2lvbih7IGN3ZDogYm9vdC5jd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KVxuICB9XG5cbiAgY29uc3QgcGVyc2lzdCA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50cy5wdXNoKGV2ZW50KVxuICAgIHNlc3Npb24uYXBwZW5kKGV2ZW50KVxuICAgIGlmIChvcHRzLnN0cmVhbUpzb24pIHByb2Nlc3Muc3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KGV2ZW50KSArICdcXG4nKVxuICB9XG5cbiAgY29uc3Qgc3RkaW5EYXRhID0gYXdhaXQgcmVhZFN0ZGluKClcbiAgY29uc3QgcHJvbXB0VGV4dCA9IHN0ZGluRGF0YSA/IGAke29wdHMucHJvbXB0fVxcblxcbltwaXBlZCBpbnB1dF1cXG4ke3N0ZGluRGF0YX1gIDogb3B0cy5wcm9tcHRcbiAgY29uc3QgeyBjb250ZW50IH0gPSBmaW5hbGl6ZVVzZXJDb250ZW50KHByb21wdFRleHQsIG5ldyBNYXAoKSlcbiAgcGVyc2lzdChtYWtlRXZlbnQoJ21lc3NhZ2UnLCB7IG1lc3NhZ2U6IHsgcm9sZTogJ3VzZXInLCBjb250ZW50IH0gfSkpXG5cbiAgY29uc3QgZGVyaXZlZCA9IGRlcml2ZVN0YXRlKGV2ZW50cylcbiAgY29uc3QgbG9hZGVkQmVmb3JlID0gbmV3IFNldChib290LnRyYWNrZXIubG9hZGVkKVxuICBjb25zdCB7IHRvb2xzLCByZWNvcmRlciB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgY3dkOiBib290LmN3ZCxcbiAgICB0cmFja2VyOiBib290LnRyYWNrZXIsXG4gICAgc2tpbGxzOiBib290LnNraWxscyxcbiAgICBzaGVsbHMsXG4gICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICBkcmVkZ2U6IHJlc29sdmVEcmVkZ2UoY29uZmlnKSxcbiAgICBtY3BUb29sczogYm9vdC5tY3AudG9vbHMoKSxcbiAgICB1c2VyVG9vbHM6IFtdLFxuICAgIG1heFRvb2xDYWxsczogb3B0cy5tYXhUb29sQ2FsbHMgPz8gNTAsXG4gIH0pXG5cbiAgbGV0IGF1dGggPSBudWxsXG4gIGlmIChtb2RlbC5wcm92aWRlciA9PT0gJ2NvZGV4Jykge1xuICAgIGF1dGggPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgaWYgKCFhdXRoKSB7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZSgncGljbzogY29kZXggbW9kZWxzIG5lZWQgYSBDaGF0R1BUIHNpZ24taW4gKHJ1biBwaWNvIC0tY29ubmVjdClcXG4nKVxuICAgICAgcmV0dXJuIDFcbiAgICB9XG4gIH1cblxuICBsb2coYHBpY28gXHUwMEI3ICR7bW9kZWwubmFtZX0ke2VmZm9ydCA/IGAgXHUwMEI3ICR7ZWZmb3J0fWAgOiAnJ30gXHUwMEI3IHNlc3Npb24gJHtzZXNzaW9uLmlkfWApXG4gIGxldCB0aG91Z2h0cyA9ICcnXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1blR1cm4oe1xuICAgIGhpc3Rvcnk6IGRlcml2ZWQucHJvdmlkZXJIaXN0b3J5LFxuICAgIHRvb2xzLFxuICAgIHJlY29yZGVyLFxuICAgIG1vZGVsTmFtZTogbW9kZWwubmFtZSxcbiAgICBlZmZvcnQsXG4gICAgYXV0aCxcbiAgICBzeXN0ZW06IGJ1aWxkU3lzdGVtUHJvbXB0KHtcbiAgICAgIGN3ZDogYm9vdC5jd2QsXG4gICAgICBjb250ZXh0RmlsZXM6IGJvb3Quc3RhcnR1cENvbnRleHQuZmlsZXMsXG4gICAgICBza2lsbHM6IGJvb3Quc2tpbGxzLmxpc3QoKSxcbiAgICAgIG1lbW9yeUluZGV4VGV4dDogbWVtb3J5SW5kZXgoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSwgYm9vdC5yb290KSxcbiAgICB9KSxcbiAgICBvblN0cmVhbTogKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RoaW5raW5nJykgdGhvdWdodHMgKz0gZXZlbnQuY29udGVudFxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJykge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHJlY29yZGVyLmVudHJpZXMuYXQoLTEpXG4gICAgICAgIGxvZyhgICBcdTI3MTMgJHtlbnRyeT8ubmFtZSA/PyBldmVudC5jYWxsLmZ1bmN0aW9uLm5hbWV9ICAke2VudHJ5Py50aXRsZSA/PyAnJ31gKVxuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykgbG9nKGAgIFx1MjcxNyAke2V2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZX0gICR7ZXZlbnQuZXJyb3Iuc2xpY2UoMCwgMTIwKX1gKVxuICAgIH0sXG4gIH0pXG5cbiAgaWYgKHRob3VnaHRzKSBwZXJzaXN0KG1ha2VFdmVudCgndGhvdWdodHMnLCB7IHRleHQ6IHRob3VnaHRzIH0pKVxuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0Lm1lc3NhZ2VzKSBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZSB9KSlcbiAgZm9yIChjb25zdCBlbnRyeSBvZiByZWNvcmRlci5lbnRyaWVzKSBwZXJzaXN0KG1ha2VFdmVudCgndG9vbF9tZXRhJywgZW50cnkpKVxuICBmb3IgKGNvbnN0IHBhdGggb2YgYm9vdC50cmFja2VyLmxvYWRlZCkge1xuICAgIGlmICghbG9hZGVkQmVmb3JlLmhhcyhwYXRoKSkgcGVyc2lzdChtYWtlRXZlbnQoJ2NvbnRleHRfZmlsZScsIHsgcGF0aCB9KSlcbiAgfVxuICBpZiAocmVzdWx0LnVzYWdlKSBwZXJzaXN0KG1ha2VFdmVudCgndXNhZ2UnLCB7IG1vZGVsOiBtb2RlbC5uYW1lLCB1c2FnZTogcmVzdWx0LnVzYWdlLCBsYXN0UHJvbXB0OiByZXN1bHQubGFzdFByb21wdFRva2VucyB9KSlcbiAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgcGVyc2lzdChtYWtlRXZlbnQoJ2ludGVycnVwdCcsIHt9KSlcblxuICBjb25zdCBydW5uaW5nID0gc2hlbGxzLnJ1bm5pbmcoKVxuICBpZiAocnVubmluZyA+IDApIGxvZyhgICBraWxsaW5nICR7cnVubmluZ30gYmFja2dyb3VuZCBzaGVsbCR7cnVubmluZyA9PT0gMSA/ICcnIDogJ3MnfWApXG4gIHNoZWxscy5raWxsQWxsKClcbiAgYXdhaXQgYm9vdC5tY3AuY2xvc2VBbGwoKS5jYXRjaCgoKSA9PiB7fSlcblxuICBjb25zdCB0ZXh0ID0gcmVzdWx0Lm1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS5yb2xlID09PSAnYXNzaXN0YW50JyAmJiB0eXBlb2YgbS5jb250ZW50ID09PSAnc3RyaW5nJyAmJiBtLmNvbnRlbnQpLmF0KC0xKT8uY29udGVudCA/PyAnJ1xuICBjb25zdCBzdW1tYXJ5ID0ge1xuICAgIHRleHQsXG4gICAgc2Vzc2lvbjogc2Vzc2lvbi5pZCxcbiAgICBzZXNzaW9uRmlsZTogc2Vzc2lvbi5maWxlLFxuICAgIG1vZGVsOiBtb2RlbC5uYW1lLFxuICAgIHVzYWdlOiByZXN1bHQudXNhZ2UsXG4gICAgY29zdDogZXN0aW1hdGVDb3N0KGZpbmRNb2RlbChtb2RlbHMsIG1vZGVsLm5hbWUpLCByZXN1bHQudXNhZ2UpLFxuICAgIHRvb2xDYWxsczogcmVjb3JkZXIuZW50cmllcy5sZW5ndGgsXG4gICAgaW50ZXJydXB0ZWQ6IHJlc3VsdC5pbnRlcnJ1cHRlZCxcbiAgICBkdXJhdGlvbk1zOiBEYXRlLm5vdygpIC0gc3RhcnRlZEF0LFxuICB9XG5cbiAgaWYgKG9wdHMuanNvbikgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoc3VtbWFyeSkgKyAnXFxuJylcbiAgZWxzZSBpZiAob3B0cy5zdHJlYW1Kc29uKSBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdyZXN1bHQnLCAuLi5zdW1tYXJ5LCB0ZXh0OiB1bmRlZmluZWQsIGF0OiBEYXRlLm5vdygpIH0pICsgJ1xcbicpXG4gIGVsc2UgcHJvY2Vzcy5zdGRvdXQud3JpdGUodGV4dCArICdcXG4nKVxuXG4gIHJldHVybiByZXN1bHQuaW50ZXJydXB0ZWQgPyAxIDogMFxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBtb3VudCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IHBhcnNlQXJncywgVVNBR0UgfSBmcm9tICcuL2NsaS1hcmdzLmpzJ1xuaW1wb3J0IHsgZGlzY292ZXJLZXlzLCBhcHBseUtleXMsIGtleUhpbnQgfSBmcm9tICcuL2NvcmUva2V5cy5qcydcbmltcG9ydCB7IGRlZmF1bHRNb2RlbCB9IGZyb20gJy4vY29yZS9tb2RlbHMuanMnXG5pbXBvcnQgeyBsb2FkQ2F0YWxvZywgZXh0cmFjdE1vZGVscyB9IGZyb20gJy4vY29yZS9jYXRhbG9nLmpzJ1xuaW1wb3J0IHsgbG9hZENvZGV4TW9kZWxzIH0gZnJvbSAnLi9jb3JlL2NvZGV4LW1vZGVscy5qcydcbmltcG9ydCB7IG9wZW5haUNvbm5lY3RlZCwgb3BlbmFpQ3JlZGVudGlhbHMgfSBmcm9tICcuL2NvcmUvb3BlbmFpLWF1dGguanMnXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi9jb3JlL2NvbmZpZy5qcydcbmltcG9ydCB7IGRldGVjdFRlcm1pbmFsVGhlbWUgfSBmcm9tICcuL2NvcmUvdGVybWluYWwtdGhlbWUuanMnXG5pbXBvcnQgeyBidWlsZFByb2plY3RCb290IH0gZnJvbSAnLi9jb3JlL2Jvb3QuanMnXG5pbXBvcnQgeyByZXNvbHZlRHJlZGdlIH0gZnJvbSAnLi9jb3JlL3Rvb2xzL3dlYi5qcydcbmltcG9ydCB7IGNyZWF0ZVNoZWxsTWFuYWdlciB9IGZyb20gJy4vY29yZS9zaGVsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVXYWtldXBNYW5hZ2VyIH0gZnJvbSAnLi9jb3JlL3dha2V1cHMuanMnXG5pbXBvcnQgeyBjcmVhdGVHaXRTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlL2dpdC5qcydcbmltcG9ydCB7IEFwcCB9IGZyb20gJy4vdWkvYXBwLmpzeCdcbmltcG9ydCB7IERFRkFVTFRfQUNDRU5ULCBNVVRFRCwgc2V0UGFsZXR0ZSwgcGFsZXR0ZUxpc3QgfSBmcm9tICcuL3VpL3RoZW1lLmpzJ1xuXG5jb25zdCBwa2cgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhuZXcgVVJMKCcuLi9wYWNrYWdlLmpzb24nLCBpbXBvcnQubWV0YS51cmwpLCAndXRmLTgnKSlcblxubGV0IGNsaVxudHJ5IHtcbiAgY2xpID0gcGFyc2VBcmdzKHByb2Nlc3MuYXJndi5zbGljZSgyKSlcbn0gY2F0Y2ggKGVycikge1xuICBjb25zb2xlLmVycm9yKGBwaWNvOiAke2Vyci5tZXNzYWdlfWApXG4gIGNvbnNvbGUuZXJyb3IoVVNBR0UpXG4gIHByb2Nlc3MuZXhpdCgxKVxufVxuaWYgKGNsaS5tb2RlID09PSAnaGVscCcpIHtcbiAgY29uc29sZS5sb2coVVNBR0UpXG4gIHByb2Nlc3MuZXhpdCgwKVxufVxuaWYgKGNsaS5tb2RlID09PSAndmVyc2lvbicpIHtcbiAgY29uc29sZS5sb2cocGtnLnZlcnNpb24pXG4gIHByb2Nlc3MuZXhpdCgwKVxufVxuaWYgKGNsaS5tb2RlID09PSAndXBkYXRlJykge1xuICBjb25zdCB7IGlzRGV2SW5zdGFsbCwgcnVuVXBkYXRlLCBmZXRjaExhdGVzdFZlcnNpb24sIG5ld2VyVmVyc2lvbiB9ID0gYXdhaXQgaW1wb3J0KCcuL2NvcmUvdXBkYXRlLmpzJylcbiAgaWYgKGlzRGV2SW5zdGFsbChpbXBvcnQubWV0YS51cmwpKSB7XG4gICAgY29uc29sZS5lcnJvcigndGhpcyBwaWNvIHJ1bnMgZnJvbSBhIHNvdXJjZSBjaGVja291dDsgdXBkYXRlIGl0IHdpdGggZ2l0LCBub3QgbnBtJylcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICBjb25zdCBsYXRlc3QgPSBhd2FpdCBmZXRjaExhdGVzdFZlcnNpb24oKS5jYXRjaCgoKSA9PiBudWxsKVxuICBpZiAobGF0ZXN0ICYmICFuZXdlclZlcnNpb24ocGtnLnZlcnNpb24sIGxhdGVzdCkpIHtcbiAgICBjb25zb2xlLmxvZyhgcGljbyB2JHtwa2cudmVyc2lvbn0gaXMgYWxyZWFkeSB0aGUgbGF0ZXN0YClcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfVxuICBjb25zb2xlLmVycm9yKGB1cGRhdGluZyBwaWNvY29kZSAke2xhdGVzdCA/IGB0byB2JHtsYXRlc3R9IGAgOiAnJ312aWEgbnBtLi4uYClcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuVXBkYXRlKClcbiAgaWYgKHJlc3VsdC5vaykge1xuICAgIGNvbnNvbGUubG9nKGB1cGRhdGVkJHtsYXRlc3QgPyBgIHRvIHYke2xhdGVzdH1gIDogJyd9YClcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfVxuICBjb25zb2xlLmVycm9yKGB1cGRhdGUgZmFpbGVkOlxcbiR7cmVzdWx0Lm91dHB1dH1gKVxuICBwcm9jZXNzLmV4aXQoMSlcbn1cbmlmIChjbGkubW9kZSA9PT0gJ2Nvbm5lY3QnKSB7XG4gIGNvbnN0IHsgY29ubmVjdE9wZW5BSSB9ID0gYXdhaXQgaW1wb3J0KCcuL2NvcmUvb3BlbmFpLWF1dGguanMnKVxuICB0cnkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ29wZW5pbmcgeW91ciBicm93c2VyIGZvciBDaGF0R1BUIHNpZ24taW4uLi4nKVxuICAgIGNvbnN0IHsgZW1haWwgfSA9IGF3YWl0IGNvbm5lY3RPcGVuQUkoeyBvblVybDogKHVybCkgPT4gY29uc29sZS5lcnJvcihgaWYgdGhlIGJyb3dzZXIgZGlkIG5vdCBvcGVuLCB2aXNpdDpcXG4ke3VybH1gKSB9KVxuICAgIGNvbnNvbGUubG9nKGBjb25uZWN0ZWQgYXMgJHtlbWFpbCB8fCAneW91ciBDaGF0R1BUIGFjY291bnQnfWApXG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoYGNvbm5lY3QgZmFpbGVkOiAke2Vyci5tZXNzYWdlfWApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbn1cbmlmIChjbGkubW9kZSA9PT0gJ2hlYWRsZXNzJykge1xuICBjb25zdCB7IHJ1bkhlYWRsZXNzIH0gPSBhd2FpdCBpbXBvcnQoJy4vaGVhZGxlc3MuanMnKVxuICBwcm9jZXNzLmV4aXQoYXdhaXQgcnVuSGVhZGxlc3MoY2xpKSlcbn1cblxuY29uc3Qga2V5cyA9IGRpc2NvdmVyS2V5cygpXG5jb25zdCBjaGF0Z3B0ID0gYXdhaXQgb3BlbmFpQ29ubmVjdGVkKClcbmNvbnN0IHByb3ZpZGVycyA9IFsuLi5hcHBseUtleXMoa2V5cyksIC4uLihjaGF0Z3B0ID8gWydjb2RleCddIDogW10pXVxuY29uc3QgY2F0YWxvZ0RhdGEgPSBhd2FpdCBsb2FkQ2F0YWxvZygpXG5jb25zdCBjb2RleENyZWRzID0gY2hhdGdwdCA/IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbCkgOiBudWxsXG5jb25zdCBtb2RlbHMgPSBbXG4gIC4uLmV4dHJhY3RNb2RlbHMoY2F0YWxvZ0RhdGEsIFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ10pLm1hcCgobSkgPT4gKHtcbiAgICAuLi5tLFxuICAgIGF2YWlsYWJsZTogcHJvdmlkZXJzLmluY2x1ZGVzKG0ucHJvdmlkZXIpLFxuICAgIGtleUhpbnQ6IGtleUhpbnQobS5wcm92aWRlciksXG4gIH0pKSxcbiAgLi4uKGF3YWl0IGxvYWRDb2RleE1vZGVscyhjb2RleENyZWRzKSkubWFwKChtKSA9PiAoe1xuICAgIC4uLm0sXG4gICAgY29udGV4dDogbS5jb250ZXh0XG4gICAgICA/PyBjYXRhbG9nRGF0YS5vcGVuYWk/Lm1vZGVscz8uW20ubmFtZS5zcGxpdCgnLycpWzFdXT8ubGltaXQ/LmlucHV0XG4gICAgICA/PyBjYXRhbG9nRGF0YS5vcGVuYWk/Lm1vZGVscz8uW20ubmFtZS5zcGxpdCgnLycpWzFdXT8ubGltaXQ/LmNvbnRleHRcbiAgICAgID8/IG51bGwsXG4gICAgYXZhaWxhYmxlOiBjaGF0Z3B0LFxuICAgIGtleUhpbnQ6ICcvY29ubmVjdCcsXG4gIH0pKSxcbl1cblxuaWYgKHByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcbiAgY29uc29sZS5lcnJvcigncGljbzogbm8gY3JlZGVudGlhbHMgZm91bmQuJylcbiAgY29uc29sZS5lcnJvcignc2V0IG9uZSBvZjogR0VNSU5JX0FQSV9LRVksIEFOVEhST1BJQ19BUElfS0VZLCBPUEVOQUlfQVBJX0tFWSwgWEFJX0FQSV9LRVknKVxuICBjb25zb2xlLmVycm9yKCdvciBzaWduIGluIHdpdGggYSBDaGF0R1BUIHBsYW46IHBpY28gLS1jb25uZWN0JylcbiAgcHJvY2Vzcy5leGl0KDEpXG59XG5cbmxldCBtY3BOb3RpZnkgPSAoKSA9PiB7fVxubGV0IHNoZWxsc05vdGlmeSA9ICgpID0+IHt9XG5sZXQgc2hlbGxzRXhpdCA9ICgpID0+IHt9XG5jb25zdCBzaGVsbHMgPSBjcmVhdGVTaGVsbE1hbmFnZXIoe1xuICBvbkNoYW5nZTogKCkgPT4gc2hlbGxzTm90aWZ5KCksXG4gIG9uRXhpdDogKHNoZWxsKSA9PiBzaGVsbHNFeGl0KHNoZWxsKSxcbn0pXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4gc2hlbGxzLmtpbGxBbGwoKSlcblxubGV0IHdha2V1cHNOb3RpZnkgPSAoKSA9PiB7fVxubGV0IHdha2V1cHNGaXJlID0gKCkgPT4ge31cbmNvbnN0IHdha2V1cHMgPSBjcmVhdGVXYWtldXBNYW5hZ2VyKHtcbiAgb25DaGFuZ2U6ICgpID0+IHdha2V1cHNOb3RpZnkoKSxcbiAgb25GaXJlOiAod2FrZXVwKSA9PiB3YWtldXBzRmlyZSh3YWtldXApLFxufSlcblxubGV0IGdpdE5vdGlmeSA9ICgpID0+IHt9XG5jb25zdCBnaXQgPSBjcmVhdGVHaXRTZXJ2aWNlKHsgb25DaGFuZ2U6ICgpID0+IGdpdE5vdGlmeSgpIH0pXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4gZ2l0LmRpc3Bvc2UoKSlcblxuY29uc3QgYm9vdFByb2plY3QgPSAoY3dkKSA9PiBidWlsZFByb2plY3RCb290KGN3ZCwgeyBvbk1jcENoYW5nZTogKCkgPT4gbWNwTm90aWZ5KCkgfSlcblxuY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZENvbmZpZygpXG5jb25zdCBjb25maWd1cmVkRGVmYXVsdCA9IGNvbmZpZy5kZWZhdWx0TW9kZWwgJiYgbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gY29uZmlnLmRlZmF1bHRNb2RlbClcblxuY29uc3QgZGV0ZWN0ZWRUaGVtZSA9IGF3YWl0IGRldGVjdFRlcm1pbmFsVGhlbWUoKVxuY29uc3QgdGhlbWVPdmVycmlkZSA9IHBhbGV0dGVMaXN0KCkuc29tZSgocCkgPT4gcC5rZXkgPT09IGNvbmZpZy50aGVtZSkgPyBjb25maWcudGhlbWUgOiBudWxsXG5zZXRQYWxldHRlKHRoZW1lT3ZlcnJpZGUgfHwgZGV0ZWN0ZWRUaGVtZSlcbmNvbnN0IHRoZW1lID0geyBhY2NlbnQ6IERFRkFVTFRfQUNDRU5ULCBtdXRlZDogTVVURUQgfVxuXG5jb25zdCBib290ID0ge1xuICAuLi4oYXdhaXQgYm9vdFByb2plY3QocHJvY2Vzcy5jd2QoKSkpLFxuICB0aGVtZSxcbiAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIG1vZGVscyxcbiAgcHJvdmlkZXJzLFxuICBpbml0aWFsTW9kZWw6IGNvbmZpZ3VyZWREZWZhdWx0IHx8IGRlZmF1bHRNb2RlbChtb2RlbHMpLFxuICByZXNlYXJjaE1vZGVsOiBjb25maWcubW9kZWxzPy5yZXNlYXJjaFdvcmtlciB8fCBudWxsLFxuICByZXNlYXJjaEFnZW50TGltaXQ6IE51bWJlci5pc0ludGVnZXIoY29uZmlnLnJlc2VhcmNoPy5hZ2VudExpbWl0KSAmJiBjb25maWcucmVzZWFyY2guYWdlbnRMaW1pdCA+PSAxICYmIGNvbmZpZy5yZXNlYXJjaC5hZ2VudExpbWl0IDw9IDEwMFxuICAgID8gY29uZmlnLnJlc2VhcmNoLmFnZW50TGltaXRcbiAgICA6IDEwLFxuICBkZXRlY3RlZFRoZW1lLFxuICB0aGVtZVByZWY6IHRoZW1lT3ZlcnJpZGUgfHwgJ2F1dG8nLFxuICBkcmVkZ2U6IHJlc29sdmVEcmVkZ2UoY29uZmlnKSxcbiAgaW5pdGlhbEVmZm9ydDogWydsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J10uaW5jbHVkZXMoY29uZmlnLmRlZmF1bHRFZmZvcnQpID8gY29uZmlnLmRlZmF1bHRFZmZvcnQgOiBudWxsLFxuICBhdXRvQ29tcGFjdDogY29uZmlnLmF1dG9Db21wYWN0ICE9PSBmYWxzZSxcbiAgY2xvdWRzOiBjb25maWcuYW5pbWF0aW9uPy5jbG91ZHMgPT09IHRydWUsXG4gIGNvbXBhY3RUb29sSGlzdG9yeTogY29uZmlnLmRpc3BsYXk/LmNvbXBhY3RUb29sSGlzdG9yeSA9PT0gdHJ1ZSxcbiAgZ2l0Rm9vdGVyOiBjb25maWcuZGlzcGxheT8uZ2l0U3RhdHVzICE9PSBmYWxzZSxcbiAgcmVmczoge30sXG4gIHNoZWxscyxcbiAgd2FrZXVwcyxcbiAgZ2l0LFxuICBzZXRNY3BOb3RpZnk6IChmbikgPT4geyBtY3BOb3RpZnkgPSBmbiB9LFxuICBzZXRHaXROb3RpZnk6IChmbikgPT4geyBnaXROb3RpZnkgPSBmbiB9LFxuICBzZXRTaGVsbHNOb3RpZnk6IChmbikgPT4geyBzaGVsbHNOb3RpZnkgPSBmbiB9LFxuICBzZXRTaGVsbHNFeGl0OiAoZm4pID0+IHsgc2hlbGxzRXhpdCA9IGZuIH0sXG4gIHNldFdha2V1cHNOb3RpZnk6IChmbikgPT4geyB3YWtldXBzTm90aWZ5ID0gZm4gfSxcbiAgc2V0V2FrZXVwc0ZpcmU6IChmbikgPT4geyB3YWtldXBzRmlyZSA9IGZuIH0sXG4gIHJlYnVpbGQ6IGJvb3RQcm9qZWN0LFxufVxuXG5naXQucmV0YXJnZXQoYm9vdC5yb290KVxuZ2l0LnNldEVuYWJsZWQoYm9vdC5naXRGb290ZXIpXG5cbmNvbnN0IGFwcCA9IG1vdW50KCgpID0+IDxBcHAgYm9vdD17Ym9vdH0gLz4sIHsgdGl0bGU6IGBwaWNvIFx1MDBCNyAke2Jvb3Qucm9vdC5zcGxpdCgnLycpLnBvcCgpfWAsIHRoZW1lIH0pXG5ib290LnNldFRoZW1lID0gYXBwLnNldFRoZW1lXG5ib290Lm1jcC5jb25uZWN0QWxsKClcbiIsICJleHBvcnQgY29uc3QgVVNBR0UgPSBgcGljbyAtIGEgY29kaW5nIGFnZW50IGluIHlvdXIgdGVybWluYWxcblxudXNhZ2U6XG4gIHBpY28gICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlIHNlc3Npb24gaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XG4gIHBpY28gLXAgXCJwcm9tcHRcIiAgICAgICAgICAgaGVhZGxlc3M6IHJ1biBvbmUgYWdlbnRpYyB0dXJuLCBwcmludCB0aGUgYW5zd2VyXG4gIGNhdCBsb2cgfCBwaWNvIC1wIFwiLi4uXCIgICAgc3RkaW4gaXMgYXBwZW5kZWQgdG8gdGhlIHByb21wdCBhcyBjb250ZXh0XG5cbmhlYWRsZXNzIGZsYWdzOlxuICAtcCwgLS1wcmludCA8cHJvbXB0PiAgICAgICB0aGUgcHJvbXB0IHRvIHJ1blxuICAtLWpzb24gICAgICAgICAgICAgICAgICAgICBwcmludCBhIHNpbmdsZSBKU09OIHJlc3VsdCBvYmplY3QgdG8gc3Rkb3V0XG4gIC0tc3RyZWFtLWpzb24gICAgICAgICAgICAgIHN0cmVhbSBzZXNzaW9uIGV2ZW50cyB0byBzdGRvdXQgYXMganNvbmxcbiAgLW0sIC0tbW9kZWwgPG5hbWU+ICAgICAgICAgbW9kZWwgdG8gdXNlIChmdXp6eSBtYXRjaGVkLCBvciByYXcgcHJvdmlkZXIvbW9kZWwpXG4gIC0tZWZmb3J0IDxsZXZlbD4gICAgICAgICAgIHRoaW5raW5nIGVmZm9ydDogYXV0b3xsb3d8bWVkaXVtfGhpZ2h8bWF4XG4gIC0tcmVzdW1lIDxzZXNzaW9uLWlkPiAgICAgIGNvbnRpbnVlIGFuIGV4aXN0aW5nIHNlc3Npb24gZnJvbSB0aGlzIHByb2plY3RcbiAgLS1tYXgtdG9vbC1jYWxscyA8bj4gICAgICAgc3RvcCB0aGUgYWdlbnQgYWZ0ZXIgbiB0b29sIGNhbGxzIChkZWZhdWx0IDUwKVxuICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICBubyBwcm9ncmVzcyBvdXRwdXQgb24gc3RkZXJyXG5cbiAgLS1jb25uZWN0ICAgICAgICAgICAgICAgICAgc2lnbiBpbiB3aXRoIGEgQ2hhdEdQVCBwbGFuIChPQXV0aCBpbiB5b3VyIGJyb3dzZXIpXG4gIHVwZGF0ZSwgLS11cGRhdGUgICAgICAgICAgIHVwZGF0ZSBwaWNvIHRvIHRoZSBsYXRlc3QgcmVsZWFzZSBmcm9tIG5wbVxuICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICBzaG93IHRoaXMgaGVscFxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBzaG93IHZlcnNpb25gXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFyZ3MoYXJndikge1xuICBjb25zdCBvcHRzID0geyBtb2RlOiAnaW50ZXJhY3RpdmUnIH1cbiAgY29uc3QgdGFrZVZhbHVlID0gKG5hbWUsIGkpID0+IHtcbiAgICBpZiAoaSArIDEgPj0gYXJndi5sZW5ndGgpIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSByZXF1aXJlcyBhIHZhbHVlYClcbiAgICByZXR1cm4gYXJndltpICsgMV1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGFyZyA9IGFyZ3ZbaV1cbiAgICBpZiAoYXJnID09PSAnLXAnIHx8IGFyZyA9PT0gJy0tcHJpbnQnKSB7XG4gICAgICBvcHRzLm1vZGUgPSAnaGVhZGxlc3MnXG4gICAgICBvcHRzLnByb21wdCA9IHRha2VWYWx1ZShhcmcsIGkpXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tanNvbicpIG9wdHMuanNvbiA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctLXN0cmVhbS1qc29uJykgb3B0cy5zdHJlYW1Kc29uID0gdHJ1ZVxuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy1tJyB8fCBhcmcgPT09ICctLW1vZGVsJykge1xuICAgICAgb3B0cy5tb2RlbCA9IHRha2VWYWx1ZShhcmcsIGkpXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tZWZmb3J0Jykge1xuICAgICAgY29uc3QgbGV2ZWwgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaWYgKCFbJ2F1dG8nLCAnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddLmluY2x1ZGVzKGxldmVsKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZWZmb3J0IFwiJHtsZXZlbH1cIjogdXNlIGF1dG98bG93fG1lZGl1bXxoaWdofG1heGApXG4gICAgICB9XG4gICAgICBvcHRzLmVmZm9ydCA9IGxldmVsXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tcmVzdW1lJykge1xuICAgICAgb3B0cy5yZXN1bWUgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLW1heC10b29sLWNhbGxzJykge1xuICAgICAgb3B0cy5tYXhUb29sQ2FsbHMgPSBwYXJzZUludCh0YWtlVmFsdWUoYXJnLCBpKSwgMTApXG4gICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShvcHRzLm1heFRvb2xDYWxscykgfHwgb3B0cy5tYXhUb29sQ2FsbHMgPCAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignLS1tYXgtdG9vbC1jYWxscyByZXF1aXJlcyBhIHBvc2l0aXZlIG51bWJlcicpXG4gICAgICB9XG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tY29ubmVjdCcpIG9wdHMubW9kZSA9ICdjb25uZWN0J1xuICAgIGVsc2UgaWYgKGFyZyA9PT0gJ3VwZGF0ZScgfHwgYXJnID09PSAnLS11cGRhdGUnKSBvcHRzLm1vZGUgPSAndXBkYXRlJ1xuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy1xJyB8fCBhcmcgPT09ICctLXF1aWV0Jykgb3B0cy5xdWlldCA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctaCcgfHwgYXJnID09PSAnLS1oZWxwJykgb3B0cy5tb2RlID0gJ2hlbHAnXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLXYnIHx8IGFyZyA9PT0gJy0tdmVyc2lvbicpIG9wdHMubW9kZSA9ICd2ZXJzaW9uJ1xuICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIGFyZ3VtZW50IFwiJHthcmd9XCJgKVxuICB9XG5cbiAgaWYgKG9wdHMubW9kZSA9PT0gJ2hlYWRsZXNzJyAmJiAhb3B0cy5wcm9tcHQ/LnRyaW0oKSkgdGhyb3cgbmV3IEVycm9yKCctcCByZXF1aXJlcyBhIG5vbi1lbXB0eSBwcm9tcHQnKVxuICByZXR1cm4gb3B0c1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBwYXJzZU9zYzExKHJlc3BvbnNlKSB7XG4gIGNvbnN0IG1hdGNoID0gcmVzcG9uc2UubWF0Y2goL1xcXTExO3JnYjooWzAtOWEtZl0rKVxcLyhbMC05YS1mXSspXFwvKFswLTlhLWZdKykvaSlcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGxcbiAgY29uc3QgY2hhbm5lbCA9IChoZXgpID0+IHBhcnNlSW50KGhleCwgMTYpIC8gKDE2ICoqIGhleC5sZW5ndGggLSAxKVxuICBjb25zdCBsdW1pbmFuY2UgPSAwLjIxMjYgKiBjaGFubmVsKG1hdGNoWzFdKSArIDAuNzE1MiAqIGNoYW5uZWwobWF0Y2hbMl0pICsgMC4wNzIyICogY2hhbm5lbChtYXRjaFszXSlcbiAgcmV0dXJuIGx1bWluYW5jZSA+IDAuNSA/ICdsaWdodCcgOiAnZGFyaydcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW1lRnJvbUNvbG9yZmdiZyh2YWx1ZSkge1xuICBjb25zdCB0b2tlbiA9ICh2YWx1ZSB8fCAnJykuc3BsaXQoJzsnKS5hdCgtMSlcbiAgaWYgKCEvXlxcZCskLy50ZXN0KHRva2VuKSkgcmV0dXJuIG51bGxcbiAgY29uc3QgYmcgPSBOdW1iZXIodG9rZW4pXG4gIHJldHVybiBiZyA9PT0gNyB8fCBiZyA9PT0gMTUgPyAnbGlnaHQnIDogJ2RhcmsnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RUZXJtaW5hbFRoZW1lKHsgdGltZW91dE1zID0gMTUwIH0gPSB7fSkge1xuICBjb25zdCBmYWxsYmFjayA9ICgpID0+IHRoZW1lRnJvbUNvbG9yZmdiZyhwcm9jZXNzLmVudi5DT0xPUkZHQkcpIHx8ICdkYXJrJ1xuICBpZiAoIXByb2Nlc3Muc3RkaW4uaXNUVFkgfHwgIXByb2Nlc3Muc3Rkb3V0LmlzVFRZKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbGxiYWNrKCkpXG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgbGV0IGJ1ZmZlciA9ICcnXG4gICAgbGV0IHNldHRsZWQgPSBmYWxzZVxuICAgIGNvbnN0IHdhc1JhdyA9IHByb2Nlc3Muc3RkaW4uaXNSYXdcblxuICAgIC8vIG5ldmVyIHBhdXNlKCkgaGVyZTogYW4gZXhwbGljaXQgcGF1c2Ugc3RpY2tzLCBhbmQgdHJlbmQncyBtb3VudCBvbmx5XG4gICAgLy8gYXR0YWNoZXMgYSBkYXRhIGxpc3RlbmVyLCB3aGljaCB3aWxsIG5vdCB1bi1wYXVzZSBhbiBleHBsaWNpdGx5XG4gICAgLy8gcGF1c2VkIHN0cmVhbSAtIGlucHV0IHdvdWxkIGJlIGZyb3plbiBmb3IgdGhlIHdob2xlIHNlc3Npb25cbiAgICBjb25zdCBmaW5pc2ggPSAodGhlbWUpID0+IHtcbiAgICAgIGlmIChzZXR0bGVkKSByZXR1cm5cbiAgICAgIHNldHRsZWQgPSB0cnVlXG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICBwcm9jZXNzLnN0ZGluLm9mZignZGF0YScsIG9uRGF0YSlcbiAgICAgIHByb2Nlc3Muc3RkaW4uc2V0UmF3TW9kZSh3YXNSYXcpXG4gICAgICByZXNvbHZlKHRoZW1lKVxuICAgIH1cblxuICAgIGNvbnN0IG9uRGF0YSA9IChjaHVuaykgPT4ge1xuICAgICAgYnVmZmVyICs9IGNodW5rLnRvU3RyaW5nKCdsYXRpbjEnKVxuICAgICAgY29uc3QgdGhlbWUgPSBwYXJzZU9zYzExKGJ1ZmZlcilcbiAgICAgIGlmICh0aGVtZSkgZmluaXNoKHRoZW1lKVxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBmaW5pc2goZmFsbGJhY2soKSksIHRpbWVvdXRNcylcbiAgICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUodHJ1ZSlcbiAgICBwcm9jZXNzLnN0ZGluLm9uKCdkYXRhJywgb25EYXRhKVxuICAgIHByb2Nlc3Muc3RkaW4ucmVzdW1lKClcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXFx4MWJdMTE7P1xceDFiXFxcXCcpXG4gIH0pXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdha2V1cE1hbmFnZXIoeyBvbkZpcmUgPSAoKSA9PiB7fSwgb25DaGFuZ2UgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3Qgd2FrZXVwcyA9IG5ldyBNYXAoKVxuICBsZXQgbmV4dElkID0gMVxuXG4gIHJldHVybiB7XG4gICAgc2NoZWR1bGUoZGVsYXlTZWNvbmRzLCBub3RlKSB7XG4gICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5tYXgoNSwgTWF0aC5yb3VuZChkZWxheVNlY29uZHMpKVxuICAgICAgY29uc3QgaWQgPSBTdHJpbmcobmV4dElkKyspXG4gICAgICBjb25zdCBhdCA9IERhdGUubm93KCkgKyBzZWNvbmRzICogMTAwMFxuICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgd2FrZXVwcy5kZWxldGUoaWQpXG4gICAgICAgIG9uQ2hhbmdlKClcbiAgICAgICAgb25GaXJlKHsgaWQsIG5vdGUsIGF0IH0pXG4gICAgICB9LCBzZWNvbmRzICogMTAwMClcbiAgICAgIHdha2V1cHMuc2V0KGlkLCB7IGlkLCBub3RlLCBhdCwgdGltZXIgfSlcbiAgICAgIG9uQ2hhbmdlKClcbiAgICAgIHJldHVybiB7IGlkLCBhdCwgc2Vjb25kcyB9XG4gICAgfSxcbiAgICBjYW5jZWwoaWQpIHtcbiAgICAgIGNvbnN0IHdha2V1cCA9IHdha2V1cHMuZ2V0KFN0cmluZyhpZCkpXG4gICAgICBpZiAoIXdha2V1cCkgdGhyb3cgbmV3IEVycm9yKGBubyBwZW5kaW5nIHdha2UtdXAgd2l0aCBpZCAke2lkfWApXG4gICAgICBjbGVhclRpbWVvdXQod2FrZXVwLnRpbWVyKVxuICAgICAgd2FrZXVwcy5kZWxldGUoU3RyaW5nKGlkKSlcbiAgICAgIG9uQ2hhbmdlKClcbiAgICAgIHJldHVybiB7IGlkOiB3YWtldXAuaWQsIGNhbmNlbGxlZDogdHJ1ZSB9XG4gICAgfSxcbiAgICBsaXN0KCkge1xuICAgICAgcmV0dXJuIFsuLi53YWtldXBzLnZhbHVlcygpXVxuICAgICAgICAubWFwKCh7IGlkLCBub3RlLCBhdCB9KSA9PiAoeyBpZCwgbm90ZSwgYXQgfSkpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmF0IC0gYi5hdClcbiAgICB9LFxuICAgIHBlbmRpbmcoKSB7XG4gICAgICByZXR1cm4gd2FrZXVwcy5zaXplXG4gICAgfSxcbiAgICBjYW5jZWxBbGwoKSB7XG4gICAgICBmb3IgKGNvbnN0IHdha2V1cCBvZiB3YWtldXBzLnZhbHVlcygpKSBjbGVhclRpbWVvdXQod2FrZXVwLnRpbWVyKVxuICAgICAgd2FrZXVwcy5jbGVhcigpXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jLCBzdGF0U3luYywgd2F0Y2ggfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgZGlybmFtZSwgaXNBYnNvbHV0ZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuY29uc3QgREVCT1VOQ0VfTVMgPSA1MDBcbmNvbnN0IFBPTExfTVMgPSAxNTAwMFxuY29uc3QgR0lUX1RJTUVPVVRfTVMgPSA1MDAwXG5cbmZ1bmN0aW9uIGZpbmRHaXREaXIoc3RhcnREaXIpIHtcbiAgbGV0IGRpciA9IHN0YXJ0RGlyXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gam9pbihkaXIsICcuZ2l0JylcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW5mbyA9IHN0YXRTeW5jKGNhbmRpZGF0ZSlcbiAgICAgIGlmIChpbmZvLmlzRGlyZWN0b3J5KCkpIHJldHVybiBjYW5kaWRhdGVcbiAgICAgIGNvbnN0IHRleHQgPSByZWFkRmlsZVN5bmMoY2FuZGlkYXRlLCAndXRmLTgnKVxuICAgICAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eZ2l0ZGlyOlxccyooLis/KVxccyokL20pXG4gICAgICBpZiAobWF0Y2gpIHJldHVybiBpc0Fic29sdXRlKG1hdGNoWzFdKSA/IG1hdGNoWzFdIDogcmVzb2x2ZShkaXIsIG1hdGNoWzFdKVxuICAgIH0gY2F0Y2gge31cbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcilcbiAgICBpZiAocGFyZW50ID09PSBkaXIpIHJldHVybiBudWxsXG4gICAgZGlyID0gcGFyZW50XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZEJyYW5jaChnaXREaXIpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBoZWFkID0gcmVhZEZpbGVTeW5jKGpvaW4oZ2l0RGlyLCAnSEVBRCcpLCAndXRmLTgnKS50cmltKClcbiAgICBjb25zdCByZWYgPSBoZWFkLm1hdGNoKC9ecmVmOiByZWZzXFwvaGVhZHNcXC8oLispJC8pXG4gICAgcmV0dXJuIHJlZiA/IHJlZlsxXSA6IGhlYWQuc2xpY2UoMCwgNylcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVNob3J0c3RhdChvdXRwdXQpIHtcbiAgY29uc3QgYWRkZWQgPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBpbnNlcnRpb24vKVxuICBjb25zdCByZW1vdmVkID0gb3V0cHV0Lm1hdGNoKC8oXFxkKykgZGVsZXRpb24vKVxuICByZXR1cm4ge1xuICAgIGFkZGVkOiBhZGRlZCA/IE51bWJlcihhZGRlZFsxXSkgOiAwLFxuICAgIHJlbW92ZWQ6IHJlbW92ZWQgPyBOdW1iZXIocmVtb3ZlZFsxXSkgOiAwLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHaXRTZXJ2aWNlKHsgb25DaGFuZ2UgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgbGV0IGVuYWJsZWQgPSBmYWxzZVxuICBsZXQgcm9vdCA9IG51bGxcbiAgbGV0IGdpdERpciA9IG51bGxcbiAgbGV0IGVwb2NoID0gMFxuICBsZXQgd2F0Y2hlciA9IG51bGxcbiAgbGV0IHBvbGwgPSBudWxsXG4gIGxldCBkZWJvdW5jZSA9IG51bGxcbiAgbGV0IGNoaWxkID0gbnVsbFxuICBsZXQgcmVydW4gPSBmYWxzZVxuICBsZXQgY3VycmVudCA9IG51bGxcblxuICBmdW5jdGlvbiB0ZWFyZG93bigpIHtcbiAgICBlcG9jaCArPSAxXG4gICAgd2F0Y2hlcj8uY2xvc2UoKVxuICAgIHdhdGNoZXIgPSBudWxsXG4gICAgaWYgKHBvbGwpIGNsZWFySW50ZXJ2YWwocG9sbClcbiAgICBwb2xsID0gbnVsbFxuICAgIGlmIChkZWJvdW5jZSkgY2xlYXJUaW1lb3V0KGRlYm91bmNlKVxuICAgIGRlYm91bmNlID0gbnVsbFxuICAgIGNoaWxkPy5raWxsKCdTSUdLSUxMJylcbiAgICBjaGlsZCA9IG51bGxcbiAgICByZXJ1biA9IGZhbHNlXG4gICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgIGN1cnJlbnQgPSBudWxsXG4gICAgICBvbkNoYW5nZSgpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0dXAoKSB7XG4gICAgdGVhcmRvd24oKVxuICAgIGlmICghZW5hYmxlZCB8fCAhcm9vdCkgcmV0dXJuXG4gICAgZ2l0RGlyID0gZmluZEdpdERpcihyb290KVxuICAgIGlmICghZ2l0RGlyKSByZXR1cm5cbiAgICBjb25zdCBzdGFydGVkID0gZXBvY2hcbiAgICB0cnkge1xuICAgICAgd2F0Y2hlciA9IHdhdGNoKGdpdERpciwgKCkgPT4ge1xuICAgICAgICBpZiAoZXBvY2ggPT09IHN0YXJ0ZWQpIHJlZnJlc2goKVxuICAgICAgfSlcbiAgICAgIHdhdGNoZXIub24oJ2Vycm9yJywgKCkgPT4ge30pXG4gICAgfSBjYXRjaCB7XG4gICAgICB3YXRjaGVyID0gbnVsbFxuICAgIH1cbiAgICBwb2xsID0gc2V0SW50ZXJ2YWwocnVuLCBQT0xMX01TKVxuICAgIHBvbGwudW5yZWY/LigpXG4gICAgcnVuKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZnJlc2goKSB7XG4gICAgaWYgKCFlbmFibGVkIHx8ICFnaXREaXIgfHwgZGVib3VuY2UpIHJldHVyblxuICAgIGRlYm91bmNlID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkZWJvdW5jZSA9IG51bGxcbiAgICAgIHJ1bigpXG4gICAgfSwgREVCT1VOQ0VfTVMpXG4gICAgZGVib3VuY2UudW5yZWY/LigpXG4gIH1cblxuICBmdW5jdGlvbiBydW4oKSB7XG4gICAgaWYgKCFlbmFibGVkIHx8ICFnaXREaXIgfHwgIXJvb3QpIHJldHVyblxuICAgIGlmIChjaGlsZCkge1xuICAgICAgcmVydW4gPSB0cnVlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3RhcnRlZCA9IGVwb2NoXG4gICAgY29uc3QgYnJhbmNoID0gcmVhZEJyYW5jaChnaXREaXIpXG4gICAgY29uc3QgcHJvYyA9IHNwYXduKCdnaXQnLCBbJy0tbm8tb3B0aW9uYWwtbG9ja3MnLCAnZGlmZicsICdIRUFEJywgJy0tc2hvcnRzdGF0J10sIHtcbiAgICAgIGN3ZDogcm9vdCxcbiAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ2lnbm9yZSddLFxuICAgIH0pXG4gICAgY2hpbGQgPSBwcm9jXG4gICAgbGV0IG91dHB1dCA9ICcnXG4gICAgcHJvYy5zdGRvdXQub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgIG91dHB1dCArPSBjaHVua1xuICAgIH0pXG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gcHJvYy5raWxsKCdTSUdLSUxMJyksIEdJVF9USU1FT1VUX01TKVxuICAgIHRpbWVvdXQudW5yZWY/LigpXG4gICAgbGV0IGZpbmlzaGVkID0gZmFsc2VcbiAgICBjb25zdCBkb25lID0gKGNvZGUpID0+IHtcbiAgICAgIGlmIChmaW5pc2hlZCkgcmV0dXJuXG4gICAgICBmaW5pc2hlZCA9IHRydWVcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KVxuICAgICAgaWYgKGNoaWxkID09PSBwcm9jKSBjaGlsZCA9IG51bGxcbiAgICAgIGlmIChlcG9jaCAhPT0gc3RhcnRlZCkgcmV0dXJuXG4gICAgICBjb25zdCBzdGF0cyA9IGNvZGUgPT09IDAgPyBwYXJzZVNob3J0c3RhdChvdXRwdXQpIDogeyBhZGRlZDogMCwgcmVtb3ZlZDogMCB9XG4gICAgICBjb25zdCBuZXh0ID0gYnJhbmNoID8geyBicmFuY2gsIC4uLnN0YXRzIH0gOiBudWxsXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkobmV4dCkgIT09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnQpKSB7XG4gICAgICAgIGN1cnJlbnQgPSBuZXh0XG4gICAgICAgIG9uQ2hhbmdlKClcbiAgICAgIH1cbiAgICAgIGlmIChyZXJ1bikge1xuICAgICAgICByZXJ1biA9IGZhbHNlXG4gICAgICAgIHJlZnJlc2goKVxuICAgICAgfVxuICAgIH1cbiAgICBwcm9jLm9uKCdjbG9zZScsIGRvbmUpXG4gICAgcHJvYy5vbignZXJyb3InLCAoKSA9PiBkb25lKC0xKSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzOiAoKSA9PiBjdXJyZW50LFxuICAgIHJlZnJlc2gsXG4gICAgcmV0YXJnZXQobmV4dFJvb3QpIHtcbiAgICAgIHJvb3QgPSBuZXh0Um9vdFxuICAgICAgc2V0dXAoKVxuICAgIH0sXG4gICAgc2V0RW5hYmxlZCh2YWx1ZSkge1xuICAgICAgZW5hYmxlZCA9IHZhbHVlID09PSB0cnVlXG4gICAgICBzZXR1cCgpXG4gICAgfSxcbiAgICBkaXNwb3NlOiB0ZWFyZG93bixcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGNyZWF0ZVNpZ25hbCwgTWVudSwgUHJvZ3Jlc3NCYXIsIFNjcm9sbEJveCwgU2hpbW1lciwgU3Bpbm5lciwgVGV4dEFyZWEsIHVzZUZvY3VzLCB1c2VGb2N1c1RyYXAsIHVzZUZyYW1lU3RhdHMsIHVzZUlucHV0LCB1c2VMYXlvdXQsIHVzZU1vdXNlLCB1c2VTZWxlY3Rpb24sIHVzZVRvYXN0IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgbWFrZUV2ZW50IH0gZnJvbSAnLi4vY29yZS9ldmVudHMuanMnXG5pbXBvcnQgeyBjcmVhdGVTZXNzaW9uLCBvcGVuU2Vzc2lvbiwgbG9hZFNlc3Npb24sIGxpc3RTZXNzaW9ucywgZGVsZXRlU2Vzc2lvbiwgZGVsZXRlUHJvamVjdERhdGEgfSBmcm9tICcuLi9jb3JlL3Nlc3Npb24uanMnXG5pbXBvcnQgeyBkZXJpdmVTdGF0ZSwgdXNlckVudHJpZXMsIHJld2luZFN0YXRzIH0gZnJvbSAnLi4vY29yZS9kZXJpdmUuanMnXG5pbXBvcnQgeyBhcHBlbmRQcm9tcHQsIGxvYWRQcm9qZWN0UHJvbXB0cywgbG9hZEdsb2JhbFByb21wdHMgfSBmcm9tICcuLi9jb3JlL2hpc3RvcnkuanMnXG5pbXBvcnQgeyBydW5UdXJuLCBzdW1tYXJpemVUZXh0LCBjb21wYWN0SGlzdG9yeSwgY29tcGFjdFByb2dyZXNzIH0gZnJvbSAnLi4vY29yZS9hZ2VudC5qcydcbmltcG9ydCB7IGNyZWF0ZUFnZW50TWFuYWdlciB9IGZyb20gJy4uL2NvcmUvYWdlbnRzLmpzJ1xuaW1wb3J0IHsgY29tcGFjdGlvblByb21wdCwgZm9ybWF0Q29tcGFjdFN1bW1hcnksIHN1bW1hcnlTZWN0aW9ucyB9IGZyb20gJy4uL2NvcmUvY29tcGFjdGlvbi5qcydcbmltcG9ydCB7IGNyZWF0ZVRvb2xzZXQgfSBmcm9tICcuLi9jb3JlL3Rvb2xzL2luZGV4LmpzJ1xuaW1wb3J0IHsgc2NhblVzZXJUb29scyB9IGZyb20gJy4uL2NvcmUvdXNlci10b29scy5qcydcbmltcG9ydCB7IGNyZWF0ZVNraWxsSW5kZXggfSBmcm9tICcuLi9jb3JlL3NraWxscy5qcydcbmltcG9ydCB7IGNyZWF0ZUNvbW1hbmRJbmRleCB9IGZyb20gJy4uL2NvcmUvY29tbWFuZHMuanMnXG5pbXBvcnQgeyByZXZlcnRFZGl0cywgcmVhcHBseUVkaXRzIH0gZnJvbSAnLi4vY29yZS9yZXdpbmQuanMnXG5pbXBvcnQgeyBidWlsZFN5c3RlbVByb21wdCB9IGZyb20gJy4uL2NvcmUvc3lzdGVtLXByb21wdC5qcydcbmltcG9ydCB7IGNoZWNrRm9yVXBkYXRlLCBmZXRjaExhdGVzdFZlcnNpb24sIG5ld2VyVmVyc2lvbiwgaXNEZXZJbnN0YWxsLCBydW5VcGRhdGUgfSBmcm9tICcuLi9jb3JlL3VwZGF0ZS5qcydcbmltcG9ydCB7IG1lbW9yeUluZGV4IH0gZnJvbSAnLi4vY29yZS9tZW1vcnkuanMnXG5pbXBvcnQgeyB0cmFuc2NyaXB0VG9NYXJrZG93biB9IGZyb20gJy4uL2NvcmUvZXhwb3J0LmpzJ1xuaW1wb3J0IHsgZmluZE1vZGVsLCBlc3RpbWF0ZUNvc3QgfSBmcm9tICcuLi9jb3JlL21vZGVscy5qcydcbmltcG9ydCB7IGFkaG9jTW9kZWwgfSBmcm9tICcuLi9jb3JlL2NhdGFsb2cuanMnXG5pbXBvcnQgeyB3cml0ZUNvbmZpZyB9IGZyb20gJy4uL2NvcmUvY29uZmlnLmpzJ1xuaW1wb3J0IHsgY29ubmVjdE9wZW5BSSwgb3BlbmFpQ3JlZGVudGlhbHMsIG9wZW5haVN0YXR1cywgZGlzY29ubmVjdE9wZW5BSSB9IGZyb20gJy4uL2NvcmUvb3BlbmFpLWF1dGguanMnXG5pbXBvcnQgeyBhZ2VudFNjcmF0Y2hEaXIsIGVuc3VyZURpciB9IGZyb20gJy4uL2NvcmUvcGF0aHMuanMnXG5pbXBvcnQgeyBsb2FkQ29kZXhNb2RlbHMgfSBmcm9tICcuLi9jb3JlL2NvZGV4LW1vZGVscy5qcydcbmltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL2Z1enp5LmpzJ1xuaW1wb3J0IHsgY29tcGxldGlvbkNvbnRleHQsIGFwcGx5Q29tcGxldGlvbiB9IGZyb20gJy4vY29tcGxldGlvbi5qcydcbmltcG9ydCB7IGV4dHJhY3RJbWFnZVBhdGhzLCBtZWRpYVR5cGVGb3IsIGZpbmFsaXplVXNlckNvbnRlbnQsIHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocywgaW5wdXRUZXh0RnJvbUNvbnRlbnQgfSBmcm9tICcuL2F0dGFjaG1lbnRzLmpzJ1xuaW1wb3J0IHsgbGlzdEZpbGVzIH0gZnJvbSAnLi9maWxlcy5qcydcbmltcG9ydCB7IGhpZ2hsaWdodFZlcnNpb24gfSBmcm9tICcuL2hpZ2hsaWdodC5qcydcbmltcG9ydCB7IGNvbXBhY3ROdW1iZXIgfSBmcm9tICcuL2Zvcm1hdC5qcydcbmltcG9ydCB7IEFuaW1hdGVkVmFsdWUgfSBmcm9tICcuL2FuaW1hdGVkLXZhbHVlLmpzeCdcbmltcG9ydCB7IE1lc3NhZ2UsIHVpVGl0bGUgfSBmcm9tICcuL3RyYW5zY3JpcHQuanN4J1xuaW1wb3J0IHsgUXVlc3Rpb25Gb3JtIH0gZnJvbSAnLi9xdWVzdGlvbi1mb3JtLmpzeCdcbmltcG9ydCB7IEVtcHR5U3RhdGUgfSBmcm9tICcuL2VtcHR5LXN0YXRlLmpzeCdcbmltcG9ydCB7IEhlbHAgfSBmcm9tICcuL2hlbHAuanN4J1xuaW1wb3J0IHsgTW9kZWxQYW5lbCwgRWZmb3J0UGFuZWwsIFRoZW1lUGFuZWwsIENvbmZpZ1BhbmVsLCBDb25maXJtUGFuZWwsIEhpc3RvcnlQYW5lbCwgUmV3aW5kUGlja1BhbmVsLCBSZXdpbmRBY3Rpb25QYW5lbCwgUmVzdW1lUGFuZWwsIFByb2plY3RQYW5lbCwgTWNwUGFuZWwsIE1lbW9yeVBhbmVsLCBJbmZvTGlzdFBhbmVsLCBXYWtldXBzUGFuZWwsIENvbm5lY3RQYW5lbCwgdGltZUFnbyB9IGZyb20gJy4vcGFuZWxzLmpzeCdcbmltcG9ydCB7IGFjY2VudCwgc2V0QWNjZW50LCBzZXRQYWxldHRlLCBwYWxldHRlTmFtZSwgcGFsZXR0ZUxpc3QsIERFRkFVTFRfQUNDRU5ULCBGRywgRkdfU09GVCwgTVVURUQsIEZBSU5ULCBQQU5FTF9CRywgUkVELCBHUkVFTiwgSElHSExJR0hUIH0gZnJvbSAnLi90aGVtZS5qcydcblxuY29uc3QgRUZGT1JUX0xFVkVMUyA9IFtcbiAgeyBrZXk6IG51bGwsIGRlc2M6ICdsZXQgdGhlIHByb3ZpZGVyIGRlY2lkZSBob3cgbXVjaCB0byB0aGluaycgfSxcbiAgeyBrZXk6ICdsb3cnLCBkZXNjOiAncXVpY2sgYW5zd2VycywgbWluaW1hbCB0aGlua2luZycgfSxcbiAgeyBrZXk6ICdtZWRpdW0nLCBkZXNjOiAnbW9kZXJhdGUgdGhpbmtpbmcgYnVkZ2V0JyB9LFxuICB7IGtleTogJ2hpZ2gnLCBkZXNjOiAnZ2VuZXJvdXMgdGhpbmtpbmcgYnVkZ2V0JyB9LFxuICB7IGtleTogJ21heCcsIGRlc2M6ICdtYXhpbXVtIHRoaW5raW5nIGJ1ZGdldCcgfSxcbl1cblxuY29uc3QgQ09NTUFORFMgPSBbXG4gIHsgbmFtZTogJ21vZGVsJywgZGVzYzogJ1N3aXRjaCB0aGUgYWN0aXZlIG1vZGVsIGZvciB0aGlzIHNlc3Npb24nIH0sXG4gIHsgbmFtZTogJ2Nvbm5lY3QnLCBkZXNjOiAnU2lnbiBpbiB3aXRoIENoYXRHUFQgdG8gdXNlIGEgQ29kZXggc3Vic2NyaXB0aW9uJyB9LFxuICB7IG5hbWU6ICdlZmZvcnQnLCBkZXNjOiAnU2V0IHRoZSB0aGlua2luZyBlZmZvcnQgZm9yIHRoaXMgc2Vzc2lvbicgfSxcbiAgeyBuYW1lOiAncmVzdW1lJywgZGVzYzogJ1BpY2sgdXAgYSBwcmV2aW91cyBzZXNzaW9uIHdoZXJlIHlvdSBsZWZ0IG9mZicgfSxcbiAgeyBuYW1lOiAnbmV3JywgZGVzYzogJ1N0YXJ0IGEgbmV3IHNlc3Npb24gaW4gdGhpcyBwcm9qZWN0JyB9LFxuICB7IG5hbWU6ICdkZWxldGUnLCBkZXNjOiAnUGVybWFuZW50bHkgZGVsZXRlIHRoZSBjdXJyZW50IHNlc3Npb24gYW5kIHN0YXJ0IGZyZXNoJyB9LFxuICB7IG5hbWU6ICdwcm9qZWN0JywgZGVzYzogJ1N3aXRjaCBwcm9qZWN0czoganVtcCB0byBhbm90aGVyIHByb2plY3QsIHNhbWUgYXMgY3RybCtwJyB9LFxuICB7IG5hbWU6ICdjd2QnLCBkZXNjOiAnU2hvdyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgcHJvamVjdCByb290JyB9LFxuICB7IG5hbWU6ICdza2lsbHMnLCBkZXNjOiAnTGlzdCBldmVyeSBza2lsbDogYnVpbHRpbiwgZ2xvYmFsLCBhbmQgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAnY29tbWFuZHMnLCBkZXNjOiAnTGlzdCBldmVyeSBjb21tYW5kOiBidWlsdGluLCBnbG9iYWwsIGFuZCBwcm9qZWN0JyB9LFxuICB7IG5hbWU6ICd0b29scycsIGRlc2M6ICdMaXN0IGJ1aWx0aW4gYW5kIHVzZXItZGVmaW5lZCB0b29sczsgTUNQIHRvb2xzIGxpdmUgaW4gL21jcCcgfSxcbiAgeyBuYW1lOiAncmV3aW5kJywgZGVzYzogJ1Jlc3RvcmUgdGhlIGNvbnZlcnNhdGlvbiB0byBhIHByZXZpb3VzIG1lc3NhZ2UnIH0sXG4gIHsgbmFtZTogJ2hpc3RvcnknLCBkZXNjOiAnU2VhcmNoIHByb21wdHMgeW91IHByZXZpb3VzbHkgc2VudCcgfSxcbiAgeyBuYW1lOiAncmVuYW1lJywgZGVzYzogJ05hbWUgdGhpcyBzZXNzaW9uOyBvbWl0IHRoZSBuYW1lIHRvIHJlc3RvcmUgaXRzIGF1dG9tYXRpYyB0aXRsZScgfSxcbiAgeyBuYW1lOiAnY29sb3InLCBkZXNjOiAnQ29sb3IgdGhpcyBzZXNzaW9uOiAvY29sb3IgPG5hbWUgb3IgI2hleD4nIH0sXG4gIHsgbmFtZTogJ3RoZW1lJywgZGVzYzogJ1BpY2sgYSBjb2xvciB0aGVtZTsgL3RoZW1lIDxuYW1lPiBhcHBsaWVzIG9uZSBkaXJlY3RseScgfSxcbiAgeyBuYW1lOiAnY29uZmlnJywgZGVzYzogJ0NvbmZpZ3VyZSBwaWNvIGRpc3BsYXkgYW5kIGJlaGF2aW9yJyB9LFxuICB7IG5hbWU6ICdtY3AnLCBkZXNjOiAnTWFuYWdlIE1DUCBzZXJ2ZXJzOiBhZGQsIHRvZ2dsZSwgcmVjb25uZWN0JyB9LFxuICB7IG5hbWU6ICdkZWVwLXJlc2VhcmNoJywgZGVzYzogJ1Jlc2VhcmNoIHdpdGggcGFyYWxsZWwgYWdlbnRzOiAvZGVlcC1yZXNlYXJjaCBbLS1hZ2VudHMgTl0gPHF1ZXN0aW9uPicgfSxcbiAgeyBuYW1lOiAnd2FrZXVwcycsIGRlc2M6ICdWaWV3IGFuZCBjYW5jZWwgc2NoZWR1bGVkIHdha2UtdXBzJyB9LFxuICB7IG5hbWU6ICdtZW1vcnknLCBkZXNjOiAnQnJvd3NlIGFuZCBtYW5hZ2Ugc2F2ZWQgbWVtb3JpZXM6IHByb2plY3QgYW5kIGdsb2JhbCcgfSxcbiAgeyBuYW1lOiAnY29tcGFjdCcsIGRlc2M6ICdTdW1tYXJpemUgdGhlIGNvbnZlcnNhdGlvbiB0byBmcmVlIHRoZSBjb250ZXh0IHdpbmRvdycgfSxcbiAgeyBuYW1lOiAnY2xlYXInLCBkZXNjOiAnQ2xlYXIgdGhlIGNvbnZlcnNhdGlvbiBhbmQgZnJlZSB0aGUgY29udGV4dCB3aW5kb3cnIH0sXG4gIHsgbmFtZTogJ2Nvc3QnLCBkZXNjOiAnU2hvdyB0b2tlbiB1c2FnZSBhbmQgZXN0aW1hdGVkIGNvc3Qgc28gZmFyJyB9LFxuICB7IG5hbWU6ICdjb250ZXh0JywgZGVzYzogXCJTaG93IHdoYXQncyBpbiB0aGUgbW9kZWwncyBjb250ZXh0IGFuZCBob3cgYmlnIGVhY2ggcGllY2UgaXNcIiB9LFxuICB7IG5hbWU6ICdleHBvcnQnLCBkZXNjOiAnU2F2ZSB0aGUgY3VycmVudCBjb252ZXJzYXRpb24gdG8gYSBtYXJrZG93biBmaWxlJyB9LFxuICB7IG5hbWU6ICd1cGRhdGUnLCBkZXNjOiAnVXBkYXRlIHBpY28gdG8gdGhlIGxhdGVzdCByZWxlYXNlIGZyb20gbnBtJyB9LFxuICB7IG5hbWU6ICdoZWxwJywgZGVzYzogJ0xpc3QgZXZlcnkgY29tbWFuZCBhbmQgd2hhdCBpdCBkb2VzJyB9LFxuXVxuXG5jb25zdCBTRVNTSU9OX0NPTE9SUyA9IHtcbiAgcmVkOiAnI2Y4NzE3MScsXG4gIG9yYW5nZTogJyNmYjkyM2MnLFxuICB5ZWxsb3c6ICcjZmFjYzE1JyxcbiAgZ3JlZW46ICcjNkJFNzk1JyxcbiAgdGVhbDogJyMyZGQ0YmYnLFxuICBjeWFuOiAnIzIyZDNlZScsXG4gIGJsdWU6ICcjNjBhNWZhJyxcbiAgcHVycGxlOiAnI2E3OGJmYScsXG4gIHBpbms6ICcjZjQ3MmI2JyxcbiAgZ3JheTogJyM5Y2EzYWYnLFxufVxuXG5jb25zdCBISVNUT1JZX1NDT1BFUyA9IFsnc2Vzc2lvbicsICdwcm9qZWN0JywgJ2V2ZXJ5d2hlcmUnXVxuY29uc3QgTUVNT1JZX1NDT1BFUyA9IFsnYWxsJywgJ3Byb2plY3QnLCAnZ2xvYmFsJ11cbmNvbnN0IFNIRUxMX1NUUklQX01BWCA9IDVcbmNvbnN0IEFHRU5UX1NUUklQX01BWCA9IDVcbmNvbnN0IFNUUklQX1NDUk9MTE9GRiA9IDFcblxuZnVuY3Rpb24gc3RyaXBXaW5kb3dTdGFydChjdXJyZW50LCB0YXJnZXQsIGxlbmd0aCwgc2l6ZSkge1xuICBjb25zdCBtYXggPSBNYXRoLm1heCgwLCBsZW5ndGggLSBzaXplKVxuICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGN1cnJlbnQsIG1heCkpXG4gIGlmICh0YXJnZXQgPCAwKSByZXR1cm4gc3RhcnRcbiAgaWYgKHRhcmdldCA8IHN0YXJ0ICsgU1RSSVBfU0NST0xMT0ZGKSByZXR1cm4gTWF0aC5tYXgoMCwgdGFyZ2V0IC0gU1RSSVBfU0NST0xMT0ZGKVxuICBpZiAodGFyZ2V0ID49IHN0YXJ0ICsgc2l6ZSAtIFNUUklQX1NDUk9MTE9GRikgcmV0dXJuIE1hdGgubWluKG1heCwgdGFyZ2V0IC0gc2l6ZSArIFNUUklQX1NDUk9MTE9GRiArIDEpXG4gIHJldHVybiBzdGFydFxufVxuXG5mdW5jdGlvbiBhZ2VudFRyYW5zY3JpcHQoYWdlbnQpIHtcbiAgaWYgKCFhZ2VudCkgcmV0dXJuIFtdXG4gIGNvbnN0IGl0ZW1zID0gW3sga2luZDogJ3VzZXInLCB0ZXh0OiBhZ2VudC5wcm9tcHQgfV1cbiAgY29uc3QgdG9vbHMgPSBuZXcgTWFwKClcbiAgbGV0IHJlc3BvbnNlID0gJydcblxuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGFnZW50LmV2ZW50cykge1xuICAgIGlmIChldmVudC50eXBlID09PSAnY29udGVudCcpIHJlc3BvbnNlICs9IGV2ZW50LmNvbnRlbnRcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXhlY3V0aW5nJykge1xuICAgICAgY29uc3QgY2FsbCA9IGV2ZW50LmNhbGwgfHwge31cbiAgICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICAgIGtpbmQ6ICd0b29sJyxcbiAgICAgICAgY2FsbElkOiBjYWxsLmlkLFxuICAgICAgICBuYW1lOiBjYWxsLmZ1bmN0aW9uPy5uYW1lIHx8ICd0b29sJyxcbiAgICAgICAgYXJnczogY2FsbC5mdW5jdGlvbj8uYXJndW1lbnRzIHx8IHt9LFxuICAgICAgICB0aXRsZTogY2FsbC5mdW5jdGlvbj8ubmFtZSB8fCAndG9vbCcsXG4gICAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgICBzdGFydGVkQXQ6IGV2ZW50LmF0IHx8IGFnZW50LnVwZGF0ZWRBdCxcbiAgICAgIH1cbiAgICAgIHRvb2xzLnNldChjYWxsLmlkLCBpdGVtKVxuICAgICAgaXRlbXMucHVzaChpdGVtKVxuICAgIH1cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY29tcGxldGUnIHx8IGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykge1xuICAgICAgY29uc3QgaXRlbSA9IHRvb2xzLmdldChldmVudC5jYWxsPy5pZClcbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIGl0ZW0uc3RhdHVzID0gZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXJyb3InID8gJ2Vycm9yJyA6ICdkb25lJ1xuICAgICAgICBpdGVtLmVycm9yID0gZXZlbnQuZXJyb3IgPyBTdHJpbmcoZXZlbnQuZXJyb3IpIDogbnVsbFxuICAgICAgICBpdGVtLmZ1bGxPdXRwdXQgPSBldmVudC5yZXN1bHQgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0eXBlb2YgZXZlbnQucmVzdWx0ID09PSAnc3RyaW5nJyA/IGV2ZW50LnJlc3VsdCA6IEpTT04uc3RyaW5naWZ5KGV2ZW50LnJlc3VsdCwgbnVsbCwgMilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCB0ZXh0ID0gYWdlbnQucmVzdWx0IHx8IHJlc3BvbnNlXG4gIGlmICh0ZXh0KSBpdGVtcy5wdXNoKHsga2luZDogJ2Fzc2lzdGFudCcsIHRleHQsIGludGVycnVwdGVkOiBhZ2VudC5zdGF0dXMgPT09ICdjYW5jZWxsZWQnIH0pXG4gIGVsc2UgaWYgKGFnZW50LmVycm9yKSBpdGVtcy5wdXNoKHsga2luZDogJ2Fzc2lzdGFudCcsIHRleHQ6IGFnZW50LmVycm9yLCBpbnRlcnJ1cHRlZDogdHJ1ZSB9KVxuICByZXR1cm4gaXRlbXNcbn1cblxuZnVuY3Rpb24gYWdlbnRFbGFwc2VkKGFnZW50LCBub3cgPSBEYXRlLm5vdygpKSB7XG4gIGlmICghYWdlbnQuc3RhcnRlZEF0KSByZXR1cm4gJ3dhaXRpbmcnXG4gIGNvbnN0IHNlY29uZHMgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKCgoYWdlbnQuZW5kZWRBdCB8fCBub3cpIC0gYWdlbnQuc3RhcnRlZEF0KSAvIDEwMDApKVxuICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApXG4gIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gNjApXG4gIGlmIChob3VycykgcmV0dXJuIGAke2hvdXJzfWggJHttaW51dGVzICUgNjB9bWBcbiAgaWYgKG1pbnV0ZXMpIHJldHVybiBgJHttaW51dGVzfW0gJHtzZWNvbmRzICUgNjB9c2BcbiAgcmV0dXJuIGAke3NlY29uZHN9c2Bcbn1cblxuZnVuY3Rpb24gYWdlbnRTdGF0dXMoYWdlbnQpIHtcbiAgaWYgKGFnZW50LnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSByZXR1cm4geyBpY29uOiAnJywgbGFiZWw6ICcnLCBjb2xvcjogYWNjZW50KCkgfVxuICBpZiAoYWdlbnQuc3RhdHVzID09PSAncXVldWVkJykgcmV0dXJuIHsgaWNvbjogJ1x1MjVDQycsIGxhYmVsOiAncXVldWVkJywgY29sb3I6IE1VVEVEIH1cbiAgaWYgKGFnZW50LnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHJldHVybiB7IGljb246ICdcdTI1Q0YnLCBsYWJlbDogJycsIGNvbG9yOiBHUkVFTiB9XG4gIGlmIChhZ2VudC5zdGF0dXMgPT09ICdmYWlsZWQnKSByZXR1cm4geyBpY29uOiAnXHUwMEQ3JywgbGFiZWw6ICdmYWlsZWQnLCBjb2xvcjogUkVEIH1cbiAgcmV0dXJuIHsgaWNvbjogJ1x1MjVBMCcsIGxhYmVsOiAnY2FuY2VsbGVkJywgY29sb3I6IE1VVEVEIH1cbn1cblxuZnVuY3Rpb24gQWdlbnRTdHJpcFJvdyh7IHNlbGVjdGVkLCBmb2N1c2VkLCBjaGlsZHJlbiwgb25QcmVzcyB9KSB7XG4gIGNvbnN0IGxheW91dCA9IHVzZUxheW91dCgpXG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgdXNlTW91c2UoKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgaW5zaWRlID0gZXZlbnQueCA+PSBsYXlvdXQueCAmJiBldmVudC54IDwgbGF5b3V0LnggKyBsYXlvdXQud2lkdGggJiYgZXZlbnQueSA+PSBsYXlvdXQueSAmJiBldmVudC55IDwgbGF5b3V0LnkgKyBsYXlvdXQuaGVpZ2h0XG4gICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ21vdmUnKSBzZXRIb3ZlcmVkKGluc2lkZSlcbiAgICBpZiAoaW5zaWRlICYmIGV2ZW50LmFjdGlvbiA9PT0gJ3ByZXNzJyAmJiBldmVudC5idXR0b24gPT09ICdsZWZ0Jykge1xuICAgICAgb25QcmVzcygpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogZm9jdXNlZCA/IGFjY2VudCgpIDogbnVsbCwgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogaG92ZXJlZCgpID8gRkdfU09GVCA6IE1VVEVEIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogc2VsZWN0ZWQgPyBhY2NlbnQoKSA6IE1VVEVELCBib2xkOiBzZWxlY3RlZCB9fT57c2VsZWN0ZWQgPyAnXHUyNzZGICcgOiAnICAnfTwvdGV4dD5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2JveD5cbiAgKVxufVxuXG4vLyBvbmx5IHRoZSBuZXdlc3Qgc2xpY2Ugb2YgYSBsb25nIHRyYW5zY3JpcHQgcmVuZGVyczsgb2xkZXIgaXRlbXMgbG9hZCBpblxuLy8gYmF0Y2hlcyB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgdG8gdGhlIHRvcC4gcmVuZGVyIGNvc3QgaXMgcGVyLWl0ZW0sIHNvIHRoaXNcbi8vIGtlZXBzIGRheS1sb25nIHNlc3Npb25zIGFzIGZhc3QgYXMgZnJlc2ggb25lc1xuY29uc3QgSElTVE9SWV9XSU5ET1cgPSA1MFxuY29uc3QgUkVTVU1FX1NDT1BFUyA9IFsncHJvamVjdCcsICdldmVyeXdoZXJlJ11cblxuZnVuY3Rpb24gY29tcGFjdFRyYW5zY3JpcHRSdW5zKGl0ZW1zLCBhY3RpdmUgPSBmYWxzZSkge1xuICBjb25zdCByZXN1bHQgPSBbXVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDspIHtcbiAgICBpZiAoaXRlbXNbaV0ua2luZCA9PT0gJ3Rvb2wnKSB7XG4gICAgICBsZXQgZW5kID0gaSArIDFcbiAgICAgIHdoaWxlIChlbmQgPCBpdGVtcy5sZW5ndGggJiYgaXRlbXNbZW5kXS5raW5kID09PSAndG9vbCcpIGVuZCsrXG4gICAgICBjb25zdCBydW4gPSBpdGVtcy5zbGljZShpLCBlbmQpXG4gICAgICByZXN1bHQucHVzaChydW4ubGVuZ3RoID09PSAxID8gcnVuWzBdIDogeyBraW5kOiAndG9vbC1ncm91cCcsIHRvb2xzOiBydW4sIGFjdGl2ZTogYWN0aXZlICYmIGVuZCA9PT0gaXRlbXMubGVuZ3RoIH0pXG4gICAgICBpID0gZW5kXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoaXRlbXNbaV0ua2luZCA9PT0gJ25vdGljZScgJiYgaXRlbXNbaV0uYWdlbnRDb21wbGV0aW9uKSB7XG4gICAgICBsZXQgZW5kID0gaSArIDFcbiAgICAgIHdoaWxlIChlbmQgPCBpdGVtcy5sZW5ndGggJiYgaXRlbXNbZW5kXS5raW5kID09PSAnbm90aWNlJyAmJiBpdGVtc1tlbmRdLmFnZW50Q29tcGxldGlvbikgZW5kKytcbiAgICAgIGNvbnN0IHJ1biA9IGl0ZW1zLnNsaWNlKGksIGVuZClcbiAgICAgIHJlc3VsdC5wdXNoKHJ1bi5sZW5ndGggPT09IDEgPyBydW5bMF0gOiB7IGtpbmQ6ICdhZ2VudC1ub3RpY2UtZ3JvdXAnLCBub3RpY2VzOiBydW4gfSlcbiAgICAgIGkgPSBlbmRcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIHJlc3VsdC5wdXNoKGl0ZW1zW2krK10pXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gQXBwKHsgYm9vdCB9KSB7XG4gIGNvbnN0IHsgY3dkLCByb290LCB2ZXJzaW9uLCBtb2RlbHMsIHNraWxscywgbWNwLCB0cmFja2VyLCBzdGFydHVwQ29udGV4dCB9ID0gYm9vdFxuXG4gIGNvbnN0IFtkZXJpdmVkLCBzZXREZXJpdmVkXSA9IGNyZWF0ZVNpZ25hbChkZXJpdmVTdGF0ZShbXSkpXG4gIGNvbnN0IFtvdmVybGF5LCBzZXRPdmVybGF5XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3N0cmVhbWluZywgc2V0U3RyZWFtaW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbdHVyblBoYXNlLCBzZXRUdXJuUGhhc2VdID0gY3JlYXRlU2lnbmFsKCdpZGxlJylcbiAgY29uc3QgW2J1c3ksIHNldEJ1c3ldID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbY29tcGFjdGluZywgc2V0Q29tcGFjdGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wYWN0U3RhdHVzLCBzZXRDb21wYWN0U3RhdHVzXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbc3RhcnRlZEF0LCBzZXRTdGFydGVkQXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtpbnB1dCwgc2V0SW5wdXRdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbbW9kZWwsIHNldE1vZGVsXSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxNb2RlbClcbiAgY29uc3QgW2RlZmF1bHRNb2RlbCwgc2V0RGVmYXVsdE1vZGVsXSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxNb2RlbClcbiAgY29uc3QgW2VmZm9ydCwgc2V0RWZmb3J0XSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxFZmZvcnQpXG4gIGNvbnN0IFtkZWZhdWx0RWZmb3J0LCBzZXREZWZhdWx0RWZmb3J0XSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxFZmZvcnQpXG4gIGNvbnN0IFtzaG93RWZmb3J0UGFuZWwsIHNldFNob3dFZmZvcnRQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93VGhlbWVQYW5lbCwgc2V0U2hvd1RoZW1lUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd0NvbmZpZ1BhbmVsLCBzZXRTaG93Q29uZmlnUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd0RlbGV0ZUNvbmZpcm0sIHNldFNob3dEZWxldGVDb25maXJtXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2Nsb3Vkcywgc2V0Q2xvdWRzXSA9IGNyZWF0ZVNpZ25hbChib290LmNsb3VkcylcbiAgY29uc3QgW2NvbXBhY3RUb29sSGlzdG9yeSwgc2V0Q29tcGFjdFRvb2xIaXN0b3J5XSA9IGNyZWF0ZVNpZ25hbChib290LmNvbXBhY3RUb29sSGlzdG9yeSlcbiAgY29uc3QgW2dpdEZvb3Rlciwgc2V0R2l0Rm9vdGVyXSA9IGNyZWF0ZVNpZ25hbChib290LmdpdEZvb3RlcilcbiAgY29uc3QgW3Jlc2VhcmNoQWdlbnRMaW1pdCwgc2V0UmVzZWFyY2hBZ2VudExpbWl0XSA9IGNyZWF0ZVNpZ25hbChib290LnJlc2VhcmNoQWdlbnRMaW1pdClcbiAgY29uc3QgW3F1ZXN0aW9uUmVxdWVzdCwgc2V0UXVlc3Rpb25SZXF1ZXN0XSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbc2hvd01lbW9yeVBhbmVsLCBzZXRTaG93TWVtb3J5UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbbWVtU2NvcGUsIHNldE1lbVNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbbWVtb3J5TGlzdCwgc2V0TWVtb3J5TGlzdF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFt0aGVtZVByZWYsIHNldFRoZW1lUHJlZl0gPSBjcmVhdGVTaWduYWwoYm9vdC50aGVtZVByZWYgfHwgJ2F1dG8nKVxuICBjb25zdCBbcXVldWVkLCBzZXRRdWV1ZWRdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc2VudCwgc2V0U2VudF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtoaXN0SWR4LCBzZXRIaXN0SWR4XSA9IGNyZWF0ZVNpZ25hbCgtMSlcbiAgY29uc3QgW2NtZEluZGV4LCBzZXRDbWRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2NtZEN5Y2xlLCBzZXRDbWRDeWNsZV0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2ZpbGVJbmRleCwgc2V0RmlsZUluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZmlsZUxpc3QsIHNldEZpbGVMaXN0XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW2ZpbGVzRGlzbWlzc2VkLCBzZXRGaWxlc0Rpc21pc3NlZF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IGNyZWF0ZVNpZ25hbCgnY2hhdCcpXG4gIGNvbnN0IFt2ZXJib3NlLCBzZXRWZXJib3NlXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dNb2RlbFBhbmVsLCBzZXRTaG93TW9kZWxQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93UmVzZWFyY2hNb2RlbFBhbmVsLCBzZXRTaG93UmVzZWFyY2hNb2RlbFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Jlc2VhcmNoTW9kZWxSZXR1cm4sIHNldFJlc2VhcmNoTW9kZWxSZXR1cm5dID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtwZW5kaW5nUmVzZWFyY2gsIHNldFBlbmRpbmdSZXNlYXJjaF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2FnZW50c1ZlcnNpb24sIHNldEFnZW50c1ZlcnNpb25dID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFt2aWV3ZWRBZ2VudElkLCBzZXRWaWV3ZWRBZ2VudElkXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbYWdlbnRXaW5kb3dPZmZzZXQsIHNldEFnZW50V2luZG93T2Zmc2V0XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbc2hvd0hpc3RvcnlQYW5lbCwgc2V0U2hvd0hpc3RvcnlQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtoaXN0U2NvcGUsIHNldEhpc3RTY29wZV0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2hpc3RQcm9tcHRzLCBzZXRIaXN0UHJvbXB0c10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtzaG93UmVzdW1lUGFuZWwsIHNldFNob3dSZXN1bWVQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtyZXN1bWVTY29wZSwgc2V0UmVzdW1lU2NvcGVdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtyZXN1bWVTZXNzaW9ucywgc2V0UmVzdW1lU2Vzc2lvbnNdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbcmVzdW1lTG9hZGluZywgc2V0UmVzdW1lTG9hZGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93TWNwUGFuZWwsIHNldFNob3dNY3BQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93UHJvamVjdFBhbmVsLCBzZXRTaG93UHJvamVjdFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2luZm9QYW5lbCwgc2V0SW5mb1BhbmVsXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbdmlld2VkU2hlbGxJZCwgc2V0Vmlld2VkU2hlbGxJZF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3NoZWxsV2luZG93T2Zmc2V0LCBzZXRTaGVsbFdpbmRvd09mZnNldF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Nob3dXYWtldXBzUGFuZWwsIHNldFNob3dXYWtldXBzUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd0Nvbm5lY3RQYW5lbCwgc2V0U2hvd0Nvbm5lY3RQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFthdXRoUHJvdmlkZXJzLCBzZXRBdXRoUHJvdmlkZXJzXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3NoZWxsc1ZlcnNpb24sIHNldFNoZWxsc1ZlcnNpb25dID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtnaXRWZXJzaW9uLCBzZXRHaXRWZXJzaW9uXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbcHJvamVjdHMsIHNldFByb2plY3RzXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3Byb2plY3RzTG9hZGluZywgc2V0UHJvamVjdHNMb2FkaW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW21jcFNlcnZlcnMsIHNldE1jcFNlcnZlcnNdID0gY3JlYXRlU2lnbmFsKG1jcC5saXN0KCkpXG4gIGNvbnN0IFtjb21wbGV0aW5nLCBzZXRDb21wbGV0aW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2NvbXBJbmRleCwgc2V0Q29tcEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbcmV3aW5kU3RlcCwgc2V0UmV3aW5kU3RlcF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3Jld2luZFRhcmdldCwgc2V0UmV3aW5kVGFyZ2V0XSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbb2Zmc2V0LCBzZXRPZmZzZXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtmb2xsb3csIHNldEZvbGxvd10gPSBjcmVhdGVTaWduYWwodHJ1ZSlcbiAgY29uc3QgW2hpc3RXaW5kb3csIHNldEhpc3RXaW5kb3ddID0gY3JlYXRlU2lnbmFsKEhJU1RPUllfV0lORE9XKVxuXG4gIGNvbnN0IHJlZnMgPSBib290LnJlZnNcbiAgcmVmcy5zZXNzaW9uID8/PSBudWxsXG4gIHJlZnMuYWxsRXZlbnRzID8/PSBbXVxuICByZWZzLnBlcnNpc3RlZCA/Pz0gMFxuICByZWZzLmFib3J0ID0gcmVmcy5hYm9ydCB8fCBudWxsXG4gIHJlZnMucmV3aW5kVW5kbyA9IHJlZnMucmV3aW5kVW5kbyB8fCBudWxsXG4gIHJlZnMucXVpdEF0ID8/PSAwXG4gIHJlZnMuYXR0YWNobWVudHMgPz89IG5ldyBNYXAoKVxuICByZWZzLmltYWdlQ291bnQgPz89IDBcblxuICByZWZzLmFnZW50cyA/Pz0gY3JlYXRlQWdlbnRNYW5hZ2VyKHtcbiAgICBjb25jdXJyZW5jeTogOCxcbiAgICBkZWZhdWx0czogKCkgPT4gKHsgbW9kZWw6IGJvb3QucmVzZWFyY2hNb2RlbCB9KSxcbiAgICBvbkNoYW5nZTogKCkgPT4gc2V0QWdlbnRzVmVyc2lvbigodikgPT4gdiArIDEpLFxuICAgIG9uQ3JlYXRlOiAoYWdlbnQpID0+IHBlcnNpc3QobWFrZUV2ZW50KCdhZ2VudF9zdGFydCcsIHsgYWdlbnRJZDogYWdlbnQuaWQsIGRlc2NyaXB0aW9uOiBhZ2VudC5kZXNjcmlwdGlvbiwgcHJvbXB0OiBhZ2VudC5wcm9tcHQsIG1vZGVsOiBhZ2VudC5tb2RlbCwgcm9sZTogYWdlbnQucm9sZSwgdG9vbHM6IGFnZW50LnRvb2xzIH0pKSxcbiAgICBvbkV2ZW50OiAoYWdlbnQsIGV2ZW50KSA9PiB7XG4gICAgICBpZiAoWyd0b29sX2V4ZWN1dGluZycsICd0b29sX2NvbXBsZXRlJywgJ3Rvb2xfZXJyb3InLCAndXNhZ2UnXS5pbmNsdWRlcyhldmVudC50eXBlKSkgcGVyc2lzdChtYWtlRXZlbnQoJ2FnZW50X2V2ZW50JywgeyBhZ2VudElkOiBhZ2VudC5pZCwgZXZlbnQgfSkpXG4gICAgfSxcbiAgICBvbkZpbmlzaDogKGFnZW50KSA9PiB7XG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnYWdlbnRfcmVzdWx0JywgeyBhZ2VudElkOiBhZ2VudC5pZCwgcmVzdWx0OiBhZ2VudC5yZXN1bHQsIHVzYWdlOiBhZ2VudC51c2FnZSwgaW50ZXJydXB0ZWQ6IGFnZW50LnN0YXR1cyA9PT0gJ2NhbmNlbGxlZCcsIGVycm9yOiBhZ2VudC5lcnJvciB9KSlcbiAgICAgIG5vdGVTeXN0ZW0oYEFnZW50ICR7YWdlbnQuaWR9ICgke2FnZW50LmRlc2NyaXB0aW9ufSkgZmluaXNoZWQgd2l0aCBzdGF0dXMgJHthZ2VudC5zdGF0dXN9LiBJdHMgcmVzdWx0IGlzIHJlYWR5LiBDYWxsIGFnZW50X2NvbGxlY3Qgd2l0aCBpZCAke2FnZW50LmlkfSBiZWZvcmUgZmluaXNoaW5nIHlvdXIgcmVzcG9uc2UuYCwgeyB3YWtlOiB0cnVlLCBhZ2VudElkOiBhZ2VudC5pZCB9KVxuICAgIH0sXG4gICAgcnVuOiBhc3luYyAoYWdlbnQsIHNpZ25hbCwgb25TdHJlYW0pID0+IHtcbiAgICAgIGNvbnN0IHdvcmtlciA9IG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IGFnZW50Lm1vZGVsKVxuICAgICAgaWYgKCF3b3JrZXIgfHwgd29ya2VyLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHRocm93IG5ldyBFcnJvcihgcmVzZWFyY2ggbW9kZWwgdW5hdmFpbGFibGU6ICR7YWdlbnQubW9kZWx9YClcbiAgICAgIGNvbnN0IGF1dGggPSB3b3JrZXIucHJvdmlkZXIgPT09ICdjb2RleCcgPyBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpIDogbnVsbFxuICAgICAgY29uc3Qgc2Vzc2lvbklkID0gcmVmcy5zZXNzaW9uPy5pZFxuICAgICAgaWYgKCFzZXNzaW9uSWQpIHRocm93IG5ldyBFcnJvcignd29ya2VyIHJlcXVpcmVzIGFuIGFjdGl2ZSBzZXNzaW9uJylcbiAgICAgIGNvbnN0IHNjcmF0Y2hwYWQgPSBlbnN1cmVEaXIoYWdlbnRTY3JhdGNoRGlyKHJvb3QsIHNlc3Npb25JZCwgYWdlbnQuaWQpKVxuICAgICAgY29uc3Qgd29ya2VyVG9vbHMgPSBbJ3JlYWQnLCAnd3JpdGUnLCAnZWRpdCcsICdiYXNoJywgJ2dsb2InLCAnZ3JlcCcsICdzaGVsbF9vdXRwdXQnLCAnc2hlbGxfa2lsbCcsICd3ZWJfc2VhcmNoJywgJ3dlYl9mZXRjaCddXG4gICAgICBjb25zdCByZXF1ZXN0ZWRUb29scyA9IGFnZW50LnRvb2xzPy5sZW5ndGggPyBhZ2VudC50b29scy5maWx0ZXIoKG5hbWUpID0+IHdvcmtlclRvb2xzLmluY2x1ZGVzKG5hbWUpKSA6IHdvcmtlclRvb2xzXG4gICAgICBjb25zdCB7IHRvb2xzLCByZWNvcmRlciB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgICAgIGN3ZCxcbiAgICAgICAgZW52OiB7IFBJQ09fU0NSQVRDSFBBRDogc2NyYXRjaHBhZCB9LFxuICAgICAgICB0cmFja2VyLFxuICAgICAgICBzaGVsbHM6IGJvb3Quc2hlbGxzLFxuICAgICAgICBkcmVkZ2U6IGJvb3QuZHJlZGdlLFxuICAgICAgICBzaWduYWwsXG4gICAgICAgIG1heFRvb2xDYWxsczogMzAsXG4gICAgICAgIGFsbG93TmFtZXM6IHJlcXVlc3RlZFRvb2xzLFxuICAgICAgfSlcbiAgICAgIHJldHVybiBydW5UdXJuKHtcbiAgICAgICAgaGlzdG9yeTogW3sgcm9sZTogJ3VzZXInLCBjb250ZW50OiBhZ2VudC5wcm9tcHQgfV0sXG4gICAgICAgIHRvb2xzLFxuICAgICAgICByZWNvcmRlcixcbiAgICAgICAgbW9kZWxOYW1lOiB3b3JrZXIubmFtZSxcbiAgICAgICAgZWZmb3J0OiB3b3JrZXIuZWZmb3J0ID8gJ2xvdycgOiBudWxsLFxuICAgICAgICBhdXRoLFxuICAgICAgICBzeXN0ZW06IGBZb3UgYXJlIGFuIGlzb2xhdGVkIHdvcmtlciBvcGVyYXRpbmcgaW4gdGhlIHVzZXIncyByZWFsIHByb2plY3QuIENvbXBsZXRlIG9ubHkgdGhlIGFzc2lnbmVkIHRhc2sgYW5kIGRvIG5vdCBhc2sgdGhlIHVzZXIgcXVlc3Rpb25zLiBZb3UgbWF5IHJlYWQsIG1vZGlmeSwgYW5kIHRlc3QgcHJvamVjdCBmaWxlcy4gUHV0IGRpc3Bvc2FibGUgc2NyaXB0cywgZ2VuZXJhdGVkIGRhdGEsIGV4cGVyaW1lbnRzLCBhbmQgdGVtcG9yYXJ5IHBhY2thZ2UgaW5zdGFsbHMgaW4geW91ciBzZXNzaW9uLXBlcnNpc3RlbnQgc2NyYXRjaHBhZCBhdCAke3NjcmF0Y2hwYWR9LCBhbHNvIGF2YWlsYWJsZSBhcyAkUElDT19TQ1JBVENIUEFELiBVc2UgcHJpbWFyeSBzb3VyY2VzIHdoZXJlIHBvc3NpYmxlLCBkaXN0aW5ndWlzaCBldmlkZW5jZSBmcm9tIGluZmVyZW5jZSwgYW5kIHJldHVybiBhIGNvbmNpc2Ugc2VsZi1jb250YWluZWQgcmVzdWx0LmAsXG4gICAgICAgIHNpZ25hbCxcbiAgICAgICAgb25TdHJlYW0sXG4gICAgICB9KVxuICAgIH0sXG4gIH0pXG4gIGNvbnN0IGFnZW50cyA9IHJlZnMuYWdlbnRzXG5cbiAgYm9vdC5zZXRNY3BOb3RpZnkoKCkgPT4gc2V0TWNwU2VydmVycyhib290Lm1jcC5saXN0KCkpKVxuICBib290LnNldFNoZWxsc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0V2FrZXVwc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0R2l0Tm90aWZ5KCgpID0+IHNldEdpdFZlcnNpb24oKHYpID0+IHYgKyAxKSlcbiAgYm9vdC5zZXRXYWtldXBzRmlyZSgod2FrZXVwKSA9PiB7XG4gICAgZmxhc2goYHdha2UtdXAgJHt3YWtldXAuaWR9IGZpcmVkYClcbiAgICBub3RlU3lzdGVtKFxuICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSBzY2hlZHVsZWQgd2FrZS11cCAke3dha2V1cC5pZH0gZmlyZWQuIE5vdGUgdG8gc2VsZjogJHt3YWtldXAubm90ZX1gLFxuICAgICAgeyB3YWtlOiB0cnVlIH0sXG4gICAgKVxuICB9KVxuICBib290LnNldFNoZWxsc0V4aXQoKHNoZWxsKSA9PiB7XG4gICAgaWYgKHNoZWxsLmtpbGxlZEJ5ID09PSAnbW9kZWwnKSB7XG4gICAgICBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0ga2lsbGVkYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoc2hlbGwua2lsbGVkQnkgPT09ICd1c2VyJykge1xuICAgICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGtpbGxlZGApXG4gICAgICBub3RlU3lzdGVtKGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHVzZXIgbWFudWFsbHkga2lsbGVkIGJhY2tncm91bmQgc2hlbGwgJHtzaGVsbC5pZH0gKCR7c2hlbGwuZGVzY3JpcHRpb24gfHwgc2hlbGwuY29tbWFuZH0pIGZyb20gdGhlIHNoZWxscyBwYW5lbCAoU0lHVEVSTSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXN0YXJ0IGl0IHVubGVzcyBhc2tlZC5gLCB7IHdha2U6IGZhbHNlIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGV4aXRlZCBcdTAwQjcgY29kZSAke3NoZWxsLmV4aXRDb2RlfWApXG4gICAgY29uc3QgdGFpbCA9IGJvb3Quc2hlbGxzLm91dHB1dChzaGVsbC5pZCwgeyB0YWlsOiAzMCB9KS5vdXRwdXRcbiAgICBjb25zdCBzZWNzID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoKHNoZWxsLmVuZGVkQXQgfHwgRGF0ZS5ub3coKSkgLSBzaGVsbC5zdGFydGVkQXQpIC8gMTAwMCkpXG4gICAgY29uc3QgcmFuID0gc2VjcyA8IDYwID8gYCR7c2Vjc31zYCA6IGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tICR7c2VjcyAlIDYwfXNgXG4gICAgbm90ZVN5c3RlbShcbiAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gYmFja2dyb3VuZCBzaGVsbCAke3NoZWxsLmlkfSAoJHtzaGVsbC5kZXNjcmlwdGlvbiB8fCBzaGVsbC5jb21tYW5kfSkgZXhpdGVkIHdpdGggY29kZSAke3NoZWxsLmV4aXRDb2RlfSBhZnRlciAke3Jhbn0uYCArXG4gICAgICAgICh0YWlsID8gYFxcblJlY2VudCBvdXRwdXQ6XFxuJHt0YWlsfWAgOiAnJyksXG4gICAgICB7IHdha2U6IHRydWUgfSxcbiAgICApXG4gIH0pXG5cbiAgZnVuY3Rpb24gbm90ZVN5c3RlbSh0ZXh0LCB7IHdha2UsIGFnZW50SWQgfSA9IHt9KSB7XG4gICAgcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXMgPz89IFtdXG4gICAgcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXMucHVzaCh7IHRleHQsIHdha2UsIGFnZW50SWQgfSlcbiAgICBmbHVzaFN5c3RlbU5vdGVzKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGZsdXNoU3lzdGVtTm90ZXMoKSB7XG4gICAgaWYgKCFyZWZzLnBlbmRpbmdTeXN0ZW1Ob3Rlcz8ubGVuZ3RoIHx8IGJ1c3koKSB8fCB2aWV3KCkgIT09ICdjaGF0JyB8fCAhcmVmcy5zZXNzaW9uKSByZXR1cm5cbiAgICBjb25zdCBub3RlcyA9IHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzXG4gICAgcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXMgPSBbXVxuICAgIGlmICghbm90ZXMubGVuZ3RoKSByZXR1cm5cbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnc3lzdGVtX25vdGUnLCB7IHRleHQ6IG5vdGVzLm1hcCgobikgPT4gbi50ZXh0KS5qb2luKCdcXG5cXG4nKSB9KSlcbiAgICByZURlcml2ZSgpXG4gICAgaWYgKG5vdGVzLnNvbWUoKG4pID0+IG4ud2FrZSkpIHJ1bkFnZW50VHVybigpXG4gIH1cblxuICBjb25zdCBza2lsbENvbW1hbmRzID0gc2tpbGxzLmxpc3QoKS5tYXAoKHMpID0+ICh7IG5hbWU6IHMubmFtZSwgZGVzYzogYHNraWxsIFx1MDBCNyAke3MuZGVzY3JpcHRpb24gfHwgcy5zb3VyY2V9YCwgc2tpbGw6IHRydWUgfSkpXG4gIGNvbnN0IHVzZXJDb21tYW5kcyA9IGJvb3QuY29tbWFuZHMubGlzdCgpLm1hcCgoYykgPT4gKHsgbmFtZTogYy5uYW1lLCBkZXNjOiBgY29tbWFuZCBcdTAwQjcgJHtjLmRlc2NyaXB0aW9uIHx8IGMuc291cmNlfWAsIGNvbW1hbmQ6IHRydWUgfSkpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBjb25zdCBzaGFkb3dlZCA9IFtdXG4gIGZvciAoY29uc3QgYyBvZiBbLi4uQ09NTUFORFMsIC4uLnNraWxsQ29tbWFuZHMsIC4uLnVzZXJDb21tYW5kc10pIHtcbiAgICBpZiAoYnlOYW1lLmhhcyhjLm5hbWUpKSBzaGFkb3dlZC5wdXNoKGAke2Muc2tpbGwgPyAnc2tpbGwnIDogJ2NvbW1hbmQnfSBcIiR7Yy5uYW1lfVwiYClcbiAgICBlbHNlIGJ5TmFtZS5zZXQoYy5uYW1lLCBjKVxuICB9XG4gIGNvbnN0IGFsbENvbW1hbmRzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV1cbiAgaWYgKHNoYWRvd2VkLmxlbmd0aCAmJiAhcmVmcy53YXJuZWRTaGFkb3dlZCkge1xuICAgIHJlZnMud2FybmVkU2hhZG93ZWQgPSB0cnVlXG4gICAgc2V0VGltZW91dCgoKSA9PiBmbGFzaChgc2hhZG93ZWQgYnkgYW4gZWFybGllciBuYW1lLCByZW5hbWUgdG8gdXNlOiAke3NoYWRvd2VkLmpvaW4oJywgJyl9YCksIDApXG4gIH1cblxuICBjb25zdCB0b2FzdCA9IHVzZVRvYXN0KHtcbiAgICBkdXJhdGlvbjogMzUwMCxcbiAgICBwb3NpdGlvbjogJ3RvcC1yaWdodCcsXG4gICAgcmVuZGVyOiAobWVzc2FnZSkgPT4gPHRleHQgc3R5bGU9e3sgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJywgYm9sZDogdHJ1ZSB9fT57YCAke21lc3NhZ2V9IGB9PC90ZXh0PixcbiAgfSlcblxuICBjb25zdCB1cGRhdGVUb2FzdCA9IHVzZVRvYXN0KHtcbiAgICBkdXJhdGlvbjogODAwMCxcbiAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgIHJlbmRlcjogKG1lc3NhZ2UpID0+IChcbiAgICAgIDxib3ggc3R5bGU9e3sgYmc6IGFjY2VudCgpIH19PlxuICAgICAgICA8U2hpbW1lciBjb2xvcj1cImJsYWNrXCIgaGlnaGxpZ2h0PXtISUdITElHSFR9IGR1cmF0aW9uPXsxNTAwfT57YCAke21lc3NhZ2V9IGB9PC9TaGltbWVyPlxuICAgICAgPC9ib3g+XG4gICAgKSxcbiAgfSlcblxuICBmdW5jdGlvbiBmbGFzaChtc2cpIHtcbiAgICB0b2FzdChtc2cpXG4gIH1cblxuICBpZiAoIXJlZnMudXBkYXRlQ2hlY2tlZCkge1xuICAgIHJlZnMudXBkYXRlQ2hlY2tlZCA9IHRydWVcbiAgICBjaGVja0ZvclVwZGF0ZSh2ZXJzaW9uKS50aGVuKChmb3VuZCkgPT4ge1xuICAgICAgaWYgKCFmb3VuZCkgcmV0dXJuXG4gICAgICB1cGRhdGVUb2FzdChgcGljbyB2JHtmb3VuZC52ZXJzaW9ufSBhdmFpbGFibGUgXHUwMEI3IC91cGRhdGVgKVxuICAgICAgZm91bmQubWFya05vdGlmaWVkKClcbiAgICB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuc3VyZVNlc3Npb24oKSB7XG4gICAgaWYgKCFyZWZzLnNlc3Npb24pIHJlZnMuc2Vzc2lvbiA9IGNyZWF0ZVNlc3Npb24oeyBjd2QsIHJvb3QgfSlcbiAgICB3aGlsZSAocmVmcy5wZXJzaXN0ZWQgPCByZWZzLmFsbEV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIHJlZnMuc2Vzc2lvbi5hcHBlbmQocmVmcy5hbGxFdmVudHNbcmVmcy5wZXJzaXN0ZWRdKVxuICAgICAgcmVmcy5wZXJzaXN0ZWQrK1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBlcnNpc3QoZXZlbnQpIHtcbiAgICByZWZzLmFsbEV2ZW50cy5wdXNoKGV2ZW50KVxuICAgIGlmIChyZWZzLnNlc3Npb24pIHtcbiAgICAgIHJlZnMuc2Vzc2lvbi5hcHBlbmQoZXZlbnQpXG4gICAgICByZWZzLnBlcnNpc3RlZCA9IHJlZnMuYWxsRXZlbnRzLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlRGVyaXZlKCkge1xuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlU3RhdGUocmVmcy5hbGxFdmVudHMpXG4gICAgc2V0RGVyaXZlZChzdGF0ZSlcbiAgICBzZXRBY2NlbnQoc3RhdGUuY29sb3IpXG4gICAgYm9vdC5zZXRUaGVtZT8uKHsgYWNjZW50OiBzdGF0ZS5jb2xvciB8fCBERUZBVUxUX0FDQ0VOVCwgbXV0ZWQ6IE1VVEVEIH0pXG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaFN0cmVhbShpdGVtcykge1xuICAgIGNvbnN0IHRleHQgPSBzdHJlYW1pbmcoKVxuICAgIGlmICh0ZXh0KSBpdGVtcy5wdXNoKHsga2luZDogJ2Fzc2lzdGFudCcsIHRleHQgfSlcbiAgICBzZXRTdHJlYW1pbmcobnVsbClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVUdXJuKHRleHQpIHtcbiAgICBjb25zdCB7IGNvbnRlbnQgfSA9IGZpbmFsaXplVXNlckNvbnRlbnQodGV4dCwgcmVmcy5hdHRhY2htZW50cylcbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZTogeyByb2xlOiAndXNlcicsIGNvbnRlbnQgfSB9KSlcbiAgICBlbnN1cmVTZXNzaW9uKClcbiAgICByZURlcml2ZSgpXG4gICAgYXdhaXQgcnVuQWdlbnRUdXJuKClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1Db21wYWN0aW9uKGluc3RydWN0aW9ucyA9ICcnKSB7XG4gICAgaWYgKGJ1c3koKSB8fCBjb21wYWN0aW5nKCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuICAgIGlmIChzdGF0ZS5wcm92aWRlckhpc3RvcnkubGVuZ3RoIDwgNCkgcmV0dXJuIGZsYXNoKCdub3RoaW5nIHRvIGNvbXBhY3QgeWV0JylcblxuICAgIGxldCBhdXRoID0gbnVsbFxuICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSB7XG4gICAgICBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgaWYgKCFhdXRoKSByZXR1cm4gZmxhc2goJ2NvZGV4IG1vZGVscyBuZWVkIGEgQ2hhdEdQVCBzaWduLWluOiBydW4gL2Nvbm5lY3QnKVxuICAgIH1cblxuICAgIGNvbnN0IGVudHJpZXMgPSB1c2VyRW50cmllcyhzdGF0ZSlcbiAgICBjb25zdCBrZWVwRnJvbSA9IGVudHJpZXMuYXQoLTIpPy5ldmVudElkID8/IGVudHJpZXMuYXQoLTEpPy5ldmVudElkXG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgcmVmcy5hYm9ydCA9IGNvbnRyb2xsZXJcbiAgICBzZXRCdXN5KHRydWUpXG4gICAgc2V0Q29tcGFjdGluZyh0cnVlKVxuICAgIHNldENvbXBhY3RTdGF0dXMobnVsbClcbiAgICBzZXRTdGFydGVkQXQoRGF0ZS5ub3coKSlcbiAgICBsZXQgc3RyZWFtZWQgPSAnJ1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBhd2FpdCBjb21wYWN0SGlzdG9yeSh7XG4gICAgICAgIGhpc3Rvcnk6IHN0YXRlLnByb3ZpZGVySGlzdG9yeSxcbiAgICAgICAgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUsXG4gICAgICAgIGF1dGgsXG4gICAgICAgIHByb21wdDogY29tcGFjdGlvblByb21wdChpbnN0cnVjdGlvbnMpLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvblN0cmVhbTogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjb250ZW50JykgcmV0dXJuXG4gICAgICAgICAgc3RyZWFtZWQgKz0gZXZlbnQuY29udGVudFxuICAgICAgICAgIHNldENvbXBhY3RTdGF0dXMoY29tcGFjdFByb2dyZXNzKHN0cmVhbWVkKSlcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBjb25zdCBzdW1tYXJ5ID0gZm9ybWF0Q29tcGFjdFN1bW1hcnkocmF3KVxuICAgICAgaWYgKCFzdW1tYXJ5KSB0aHJvdyBuZXcgRXJyb3IoJ2VtcHR5IHN1bW1hcnknKVxuICAgICAgaWYgKHN1bW1hcnlTZWN0aW9ucyhzdW1tYXJ5KSA8IDUpIHRocm93IG5ldyBFcnJvcignbWFsZm9ybWVkIHN1bW1hcnksIGNvbnZlcnNhdGlvbiBsZWZ0IHVudG91Y2hlZCcpXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnY29tcGFjdCcsIHsgc3VtbWFyeSwga2VlcEZyb20sIHNlc3Npb25GaWxlOiByZWZzLnNlc3Npb24/LmZpbGUgfHwgbnVsbCB9KSlcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKCdjb21wYWN0ZWQgXHUwMEI3IHJlY2VudCBtZXNzYWdlcyBrZXB0IHZlcmJhdGltJylcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChjb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSBmbGFzaCgnY29tcGFjdGlvbiBjYW5jZWxsZWQnKVxuICAgICAgZWxzZSBmbGFzaChgY29tcGFjdCBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMTAwKX1gKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRDb21wYWN0aW5nKGZhbHNlKVxuICAgICAgc2V0Q29tcGFjdFN0YXR1cyhudWxsKVxuICAgICAgc2V0QnVzeShmYWxzZSlcbiAgICAgIHJlZnMuYWJvcnQgPSBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcSA9IHF1ZXVlZCgpXG4gICAgaWYgKHEubGVuZ3RoID4gMCkge1xuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgaWYgKGNvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHNldElucHV0KHEuam9pbignXFxuJykpXG4gICAgICBlbHNlIGV4ZWN1dGVUdXJuKHEuam9pbignXFxuJykpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbWF5YmVBdXRvQ29tcGFjdCgpIHtcbiAgICBpZiAoYm9vdC5hdXRvQ29tcGFjdCA9PT0gZmFsc2UgfHwgYnVzeSgpIHx8IGNvbXBhY3RpbmcoKSkgcmV0dXJuXG4gICAgY29uc3QgbGltaXQgPSBtb2RlbCgpLmNvbnRleHRcbiAgICBjb25zdCB1c2VkID0gZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnNcbiAgICBpZiAoIWxpbWl0IHx8ICF1c2VkIHx8IGRlcml2ZWQoKS5sYXN0UHJvbXB0TW9kZWwgIT09IG1vZGVsKCkubmFtZSkgcmV0dXJuXG4gICAgY29uc3QgcmF0aW8gPSB1c2VkIC8gbGltaXRcbiAgICBpZiAocmF0aW8gPj0gMC44NSkge1xuICAgICAgZmxhc2goYGNvbnRleHQgJHtNYXRoLnJvdW5kKHJhdGlvICogMTAwKX0lIGZ1bGwgXHUwMEI3IGF1dG8tY29tcGFjdGluZ2ApXG4gICAgICBwZXJmb3JtQ29tcGFjdGlvbigpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuQWdlbnRUdXJuKCkge1xuICAgIGNvbnN0IHJlc2VhcmNoQWdlbnRMaW1pdCA9IHJlZnMubmV4dFJlc2VhcmNoQWdlbnRMaW1pdCB8fCBudWxsXG4gICAgcmVmcy5uZXh0UmVzZWFyY2hBZ2VudExpbWl0ID0gbnVsbFxuICAgIGxldCBhdXRoID0gbnVsbFxuICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSB7XG4gICAgICBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgaWYgKCFhdXRoKSB7XG4gICAgICAgIGZsYXNoKCdjb2RleCBtb2RlbHMgbmVlZCBhIENoYXRHUFQgc2lnbi1pbjogcnVuIC9jb25uZWN0JylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIHNldEZvbGxvdyh0cnVlKVxuICAgIHNldEhpc3RXaW5kb3coSElTVE9SWV9XSU5ET1cpXG4gICAgc2V0QnVzeSh0cnVlKVxuICAgIHNldFR1cm5QaGFzZSgncmVzcG9uZGluZycpXG4gICAgc2V0U3RhcnRlZEF0KERhdGUubm93KCkpXG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgcmVmcy5hYm9ydCA9IGNvbnRyb2xsZXJcbiAgICBjb25zdCBsb2FkZWRCZWZvcmUgPSBuZXcgU2V0KHRyYWNrZXIubG9hZGVkKVxuICAgIGJvb3Quc2tpbGxzID0gYXdhaXQgY3JlYXRlU2tpbGxJbmRleChib290LnJvb3QpLmNhdGNoKCgpID0+IGJvb3Quc2tpbGxzKSA/PyBib290LnNraWxsc1xuICAgIGJvb3QuY29tbWFuZHMgPSBhd2FpdCBjcmVhdGVDb21tYW5kSW5kZXgoYm9vdC5yb290KS5jYXRjaCgoKSA9PiBib290LmNvbW1hbmRzKSA/PyBib290LmNvbW1hbmRzXG4gICAgY29uc3QgZnJlc2hTa2lsbHMgPSBib290LnNraWxsc1xuICAgIGNvbnN0IHVzZXJUb29sU2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KS5jYXRjaCgoKSA9PiAoeyB0b29sczogW10sIGVycm9yczogW10gfSkpXG4gICAgZm9yIChjb25zdCBmYWlsdXJlIG9mIHVzZXJUb29sU2Nhbi5lcnJvcnMpIHtcbiAgICAgIGNvbnN0IGtleSA9IGAke2ZhaWx1cmUuZmlsZX06JHtmYWlsdXJlLmVycm9yfWBcbiAgICAgIGlmICghcmVmcy53YXJuZWRUb29scz8uaGFzKGtleSkpIHtcbiAgICAgICAgOyhyZWZzLndhcm5lZFRvb2xzID8/PSBuZXcgU2V0KCkpLmFkZChrZXkpXG4gICAgICAgIGZsYXNoKGB0b29sIHNraXBwZWQ6ICR7ZmFpbHVyZS5maWxlLnNwbGl0KCcvJykucG9wKCl9IFx1MDBCNyAke2ZhaWx1cmUuZXJyb3J9YClcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyB0b29scywgcmVjb3JkZXIgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgY3dkLFxuICAgICAgdHJhY2tlcixcbiAgICAgIHNraWxsczogZnJlc2hTa2lsbHMsXG4gICAgICBzaGVsbHM6IGJvb3Quc2hlbGxzLFxuICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgIGFnZW50czogYm9vdC5yZXNlYXJjaE1vZGVsID8gYWdlbnRzIDogbnVsbCxcbiAgICAgIGFza1VzZXI6IChxdWVzdGlvbnMpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHNldFF1ZXN0aW9uUmVxdWVzdCh7IHF1ZXN0aW9ucywgcmVzb2x2ZSB9KVxuICAgICAgICBmbS5mb2N1cygncXVlc3Rpb24nKVxuICAgICAgfSksXG4gICAgICBkcmVkZ2U6IGJvb3QuZHJlZGdlLFxuICAgICAgbWNwVG9vbHM6IG1jcC50b29scygpLFxuICAgICAgdXNlclRvb2xzOiB1c2VyVG9vbFNjYW4udG9vbHMsXG4gICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgbWF4QWdlbnRTdGFydHM6IHJlc2VhcmNoQWdlbnRMaW1pdCA/IDEwMCA6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVpcmVBZ2VudFBsYW46ICEhcmVzZWFyY2hBZ2VudExpbWl0LFxuICAgICAgYWxsb3dOYW1lczogcmVzZWFyY2hBZ2VudExpbWl0ID8gWydhZ2VudF9wbGFuJywgJ2FnZW50X3N0YXJ0JywgJ2FnZW50X2xpc3QnLCAnYWdlbnRfY29sbGVjdCcsICdhZ2VudF9jYW5jZWwnXSA6IHVuZGVmaW5lZCxcbiAgICB9KVxuXG4gICAgcmVmcy50dXJuVGhvdWdodHMgPSAnJ1xuICAgIGNvbnN0IG9uU3RyZWFtID0gKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RoaW5raW5nJykge1xuICAgICAgICByZWZzLnR1cm5UaG91Z2h0cyArPSBldmVudC5jb250ZW50XG4gICAgICAgIHNldFR1cm5QaGFzZSgndGhpbmtpbmcnKVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgICAgc2V0VHVyblBoYXNlKCdyZXNwb25kaW5nJylcbiAgICAgICAgc2V0U3RyZWFtaW5nKChzKSA9PiAocyB8fCAnJykgKyBldmVudC5jb250ZW50KVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jYWxsc19yZWFkeScpIHtcbiAgICAgICAgc2V0VHVyblBoYXNlKCd0b29scycpXG4gICAgICAgIHNldE92ZXJsYXkoKG8pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gWy4uLm9dXG4gICAgICAgICAgZmx1c2hTdHJlYW0obmV4dClcbiAgICAgICAgICByZXR1cm4gbmV4dFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9leGVjdXRpbmcnKSB7XG4gICAgICAgIHNldE92ZXJsYXkoKG8pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gWy4uLm9dXG4gICAgICAgICAgZmx1c2hTdHJlYW0obmV4dClcbiAgICAgICAgICBsZXQgYXJncyA9IHt9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGFyZ3MgPSBKU09OLnBhcnNlKGV2ZW50LmNhbGwuZnVuY3Rpb24uYXJndW1lbnRzKVxuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgICBuZXh0LnB1c2goe1xuICAgICAgICAgICAga2luZDogJ3Rvb2wnLFxuICAgICAgICAgICAgY2FsbElkOiBldmVudC5jYWxsLmlkLFxuICAgICAgICAgICAgbmFtZTogZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICAgICAgdGl0bGU6IHVpVGl0bGUoZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lLCBhcmdzKSxcbiAgICAgICAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgICAgICAgc3RhcnRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIG5leHRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY29tcGxldGUnIHx8IGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykge1xuICAgICAgICBib290LmdpdC5yZWZyZXNoKClcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWNvcmRlci5lbnRyaWVzLmF0KC0xKVxuICAgICAgICBzZXRPdmVybGF5KChvKSA9PlxuICAgICAgICAgIG8ubWFwKChpdGVtKSA9PlxuICAgICAgICAgICAgaXRlbS5raW5kID09PSAndG9vbCcgJiYgaXRlbS5jYWxsSWQgPT09IGV2ZW50LmNhbGwuaWRcbiAgICAgICAgICAgICAgPyB7IC4uLml0ZW0sIC4uLihlbnRyeT8uY2FsbElkID09PSBldmVudC5jYWxsLmlkID8gZW50cnkgOiB7fSksIGtpbmQ6ICd0b29sJywgc3RhdHVzOiBlbnRyeT8uc3RhdHVzIHx8ICdkb25lJyB9XG4gICAgICAgICAgICAgIDogaXRlbSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdFxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBydW5UdXJuKHtcbiAgICAgICAgaGlzdG9yeTogZGVyaXZlZCgpLnByb3ZpZGVySGlzdG9yeSxcbiAgICAgICAgdG9vbHMsXG4gICAgICAgIHJlY29yZGVyLFxuICAgICAgICBtb2RlbE5hbWU6IG1vZGVsKCkubmFtZSxcbiAgICAgICAgZWZmb3J0OiBlZmZvcnRBcHBsaWVzKCkgPyBlZmZvcnQoKSA/PyAnYXV0bycgOiBudWxsLFxuICAgICAgICBhdXRoLFxuICAgICAgICBzeXN0ZW06IGJ1aWxkU3lzdGVtUHJvbXB0KHtcbiAgICAgICAgICBjd2QsXG4gICAgICAgICAgY29udGV4dEZpbGVzOiBzdGFydHVwQ29udGV4dC5maWxlcyxcbiAgICAgICAgICBza2lsbHM6IGZyZXNoU2tpbGxzLmxpc3QoKSxcbiAgICAgICAgICBtZW1vcnlJbmRleFRleHQ6IG1lbW9yeUluZGV4KGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSksIGJvb3Qucm9vdCksXG4gICAgICAgIH0pLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvblN0cmVhbSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRPdmVybGF5KFtdKVxuICAgICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgICBzZXRUdXJuUGhhc2UoJ2lkbGUnKVxuICAgICAgc2V0QnVzeShmYWxzZSlcbiAgICAgIHJlZnMuYWJvcnQgPSBudWxsXG4gICAgICBmbGFzaChgZXJyb3I6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMTIwKX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHJlZnMudHVyblRob3VnaHRzKSBwZXJzaXN0KG1ha2VFdmVudCgndGhvdWdodHMnLCB7IHRleHQ6IHJlZnMudHVyblRob3VnaHRzIH0pKVxuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiByZXN1bHQubWVzc2FnZXMpIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlIH0pKVxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgcmVjb3JkZXIuZW50cmllcykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rvb2xfbWV0YScsIGVudHJ5KSlcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgdHJhY2tlci5sb2FkZWQpIHtcbiAgICAgIGlmICghbG9hZGVkQmVmb3JlLmhhcyhwYXRoKSkgcGVyc2lzdChtYWtlRXZlbnQoJ2NvbnRleHRfZmlsZScsIHsgcGF0aCB9KSlcbiAgICB9XG4gICAgaWYgKHJlc3VsdC51c2FnZSkgcGVyc2lzdChtYWtlRXZlbnQoJ3VzYWdlJywgeyBtb2RlbDogbW9kZWwoKS5uYW1lLCB1c2FnZTogcmVzdWx0LnVzYWdlLCBsYXN0UHJvbXB0OiByZXN1bHQubGFzdFByb21wdFRva2VucyB9KSlcbiAgICBpZiAocmVzdWx0LmludGVycnVwdGVkKSBwZXJzaXN0KG1ha2VFdmVudCgnaW50ZXJydXB0Jywge30pKVxuXG4gICAgc2V0T3ZlcmxheShbXSlcbiAgICBzZXRTdHJlYW1pbmcobnVsbClcbiAgICBzZXRUdXJuUGhhc2UoJ2lkbGUnKVxuICAgIHJlRGVyaXZlKClcbiAgICBzZXRCdXN5KGZhbHNlKVxuICAgIHJlZnMuYWJvcnQgPSBudWxsXG4gICAgYm9vdC5naXQucmVmcmVzaCgpXG4gICAgaWYgKHJlc3VsdC5zdGFsbGVkKSB7XG4gICAgICBmbGFzaCgnbW9kZWwgc3RhbGxlZCBcdTAwQjcgdHVybiBpbnRlcnJ1cHRlZCcpXG4gICAgICBub3RlU3lzdGVtKFxuICAgICAgICAnW3N5c3RlbSBub3RpZmljYXRpb25dIHRoZSBwcmV2aW91cyB0dXJuIHdhcyBjdXQgb2ZmIGF1dG9tYXRpY2FsbHk6IHRoZSBtb2RlbCBwcm9kdWNlZCBubyBvdXRwdXQgZm9yIDUgbWludXRlcyAocHJvdmlkZXIgc3RhbGwpLiBXb3JrIG1heSBoYXZlIHN0b3BwZWQgbWlkLXRhc2s7IHBpY2sgdXAgd2hlcmUgaXQgbGVmdCBvZmYuJyxcbiAgICAgICAgeyB3YWtlOiBmYWxzZSB9LFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgICBmbGFzaChgZXJyb3I6ICR7cmVzdWx0LmVycm9yLnNsaWNlKDAsIDEyMCl9YClcbiAgICAgIG5vdGVTeXN0ZW0oXG4gICAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHByZXZpb3VzIHR1cm4gZW5kZWQgd2l0aCBhIHByb3ZpZGVyIGVycm9yOiAke3Jlc3VsdC5lcnJvci5zbGljZSgwLCAzMDApfS4gV29yayBtYXkgaGF2ZSBzdG9wcGVkIG1pZC10YXNrOyBwaWNrIHVwIHdoZXJlIGl0IGxlZnQgb2ZmLmAsXG4gICAgICAgIHsgd2FrZTogZmFsc2UgfSxcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBxID0gcXVldWVkKClcbiAgICBpZiAocS5sZW5ndGggPiAwKSB7XG4gICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICBpZiAocmVzdWx0LmludGVycnVwdGVkKSBzZXRJbnB1dChxLmpvaW4oJ1xcbicpKVxuICAgICAgZWxzZSB7XG4gICAgICAgIGV4ZWN1dGVUdXJuKHEuam9pbignXFxuJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBmbHVzaFN5c3RlbU5vdGVzKClcbiAgICBtYXliZUF1dG9Db21wYWN0KClcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXBsZXRpb25Tb3VyY2UobmFtZSkge1xuICAgIGlmIChuYW1lID09PSAnY29sb3InKSByZXR1cm4gT2JqZWN0LmtleXMoU0VTU0lPTl9DT0xPUlMpXG4gICAgaWYgKG5hbWUgPT09ICd0aGVtZScpIHJldHVybiBbLi4ucGFsZXR0ZUxpc3QoKS5tYXAoKHApID0+IHAua2V5KSwgJ2F1dG8nXVxuICAgIGlmIChuYW1lID09PSAnZWZmb3J0JykgcmV0dXJuIFsnZGVmYXVsdCcsICdsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J11cbiAgICBpZiAobmFtZSA9PT0gJ21vZGVsJykgcmV0dXJuIG1vZGVscy5maWx0ZXIoKG0pID0+IG0uYXZhaWxhYmxlICE9PSBmYWxzZSkubWFwKChtKSA9PiBtLm5hbWUpXG4gICAgY29uc3QgY21kID0gYWxsQ29tbWFuZHMuZmluZCgoYykgPT4gYy5uYW1lID09PSBuYW1lKVxuICAgIGlmIChjbWQ/LnNraWxsIHx8IGNtZD8uY29tbWFuZCkgcmV0dXJuIGZpbGVMaXN0KClcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gZGlzbWlzc0NvbXBsZXRpb24oKSB7XG4gICAgc2V0Q29tcGxldGluZyhmYWxzZSlcbiAgICBzZXRDb21wSW5kZXgoMClcbiAgfVxuXG4gIGZ1bmN0aW9uIGFjY2VwdENvbXBsZXRpb24odmFsdWUsIGN0eCwgY2FuZGlkYXRlKSB7XG4gICAgc2V0SW5wdXQoYXBwbHlDb21wbGV0aW9uKHZhbHVlLCBjdHgsIGNhbmRpZGF0ZSkpXG4gICAgZGlzbWlzc0NvbXBsZXRpb24oKVxuICB9XG5cbiAgZnVuY3Rpb24gc2VuZCh0ZXh0KSB7XG4gICAgaWYgKHZpZXdlZEFnZW50SWQoKSB8fCB2aWV3ZWRTaGVsbElkKCkpIHJldHVyblxuICAgIGNvbnN0IHZhbHVlID0gdGV4dC50cmltKClcbiAgICBpZiAoIXZhbHVlKSByZXR1cm5cbiAgICBkaXNtaXNzQ29tcGxldGlvbigpXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgY29uc3QgW25hbWUsIC4uLnJlc3RdID0gdmFsdWUuc2xpY2UoMSkuc3BsaXQoL1xccysvKVxuICAgICAgY29uc3QgbWF0Y2ggPSBhbGxDb21tYW5kcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBzZXRJbnB1dCgnJylcbiAgICAgICAgcnVuQ29tbWFuZChtYXRjaCwgcmVzdC5qb2luKCcgJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBzZXRTZW50KChzKSA9PiBbLi4ucywgeyB0ZXh0OiB2YWx1ZSwgYXQ6IERhdGUubm93KCkgfV0pXG4gICAgc2V0SGlzdElkeCgtMSlcbiAgICBhcHBlbmRQcm9tcHQocm9vdCwgdmFsdWUpLmNhdGNoKCgpID0+IHt9KVxuICAgIGlmIChidXN5KCkpIHtcbiAgICAgIHNldFF1ZXVlZCgocSkgPT4gWy4uLnEsIHZhbHVlXSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBleGVjdXRlVHVybih2YWx1ZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGludGVycnVwdCgpIHtcbiAgICBpZiAoIWJ1c3koKSkgcmV0dXJuXG4gICAgY29uc3QgcmVxdWVzdCA9IHF1ZXN0aW9uUmVxdWVzdCgpXG4gICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgIHNldFF1ZXN0aW9uUmVxdWVzdChudWxsKVxuICAgICAgcmVmcy5mb2N1c0NvbXBvc2VyQWZ0ZXJRdWVzdGlvbiA9IHRydWVcbiAgICAgIHJlcXVlc3QucmVzb2x2ZSh7IGNhbmNlbGxlZDogdHJ1ZSB9KVxuICAgIH1cbiAgICByZWZzLmFib3J0Py5hYm9ydCgpXG4gIH1cblxuICBjb25zdCBmbXRUb2tlbnMgPSAobikgPT4gKG4gPj0gMTAwMCA/IGAkeyhuIC8gMTAwMCkudG9GaXhlZCgxKX1rYCA6IFN0cmluZyhuKSlcblxuICBhc3luYyBmdW5jdGlvbiByZWZyZXNoTWVtb3JpZXMoKSB7XG4gICAgc2V0TWVtb3J5TGlzdChhd2FpdCBib290Lm1lbW9yeS5saXN0KCkuY2F0Y2goKCkgPT4gW10pKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZm9yZ2V0TWVtb3J5KG0pIHtcbiAgICBjb25zdCBhcm1lZCA9IHJlZnMuZm9yZ2V0QXJtXG4gICAgaWYgKCFhcm1lZCB8fCBhcm1lZC5maWxlICE9PSBtLmZpbGUgfHwgRGF0ZS5ub3coKSAtIGFybWVkLmF0ID4gMzAwMCkge1xuICAgICAgcmVmcy5mb3JnZXRBcm0gPSB7IGZpbGU6IG0uZmlsZSwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgcmV0dXJuIGZsYXNoKGBjdHJsK3ggYWdhaW4gdG8gZm9yZ2V0IFwiJHttLm5hbWV9XCJgKVxuICAgIH1cbiAgICByZWZzLmZvcmdldEFybSA9IG51bGxcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYm9vdC5tZW1vcnkuZm9yZ2V0KG0ubmFtZSlcbiAgICAgIGF3YWl0IHJlZnJlc2hNZW1vcmllcygpXG4gICAgICBmbGFzaChgZm9yZ290ICR7bS5uYW1lfSAoJHttLnNjb3BlfSlgKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGZvcmdldCBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gb3BlbkNvbnRleHRQYW5lbCgpIHtcbiAgICBjb25zdCBlc3QgPSAodGV4dCkgPT4gTWF0aC5yb3VuZChTdHJpbmcodGV4dCkubGVuZ3RoIC8gNClcbiAgICBjb25zdCB0b2sgPSAobikgPT4gYH4ke2ZtdFRva2VucyhuKX0gdG9rYFxuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlZCgpXG5cbiAgICBjb25zdCBtZW1vcnlJbmRleFRleHQgPSBtZW1vcnlJbmRleChhd2FpdCBib290Lm1lbW9yeS5saXN0KCkuY2F0Y2goKCkgPT4gW10pLCBib290LnJvb3QpXG4gICAgY29uc3Qgc2tpbGxMaXN0ID0gYm9vdC5za2lsbHMubGlzdCgpXG4gICAgY29uc3QgZmlsZXMgPSBzdGFydHVwQ29udGV4dC5maWxlc1xuICAgIGNvbnN0IHN5c3RlbUZ1bGwgPSBidWlsZFN5c3RlbVByb21wdCh7IGN3ZCwgY29udGV4dEZpbGVzOiBmaWxlcywgc2tpbGxzOiBza2lsbExpc3QsIG1lbW9yeUluZGV4VGV4dCB9KVxuICAgIGNvbnN0IHN5c3RlbUJhc2UgPSBidWlsZFN5c3RlbVByb21wdCh7IGN3ZCwgY29udGV4dEZpbGVzOiBbXSwgc2tpbGxzOiBbXSwgbWVtb3J5SW5kZXhUZXh0OiAnJyB9KVxuICAgIGNvbnN0IHVzZXJUb29sU2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KS5jYXRjaCgoKSA9PiAoeyB0b29sczogW10sIGVycm9yczogW10gfSkpXG4gICAgY29uc3QgeyB0b29scyB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgICBjd2QsXG4gICAgICB0cmFja2VyLFxuICAgICAgc2tpbGxzOiBib290LnNraWxscyxcbiAgICAgIHNoZWxsczogYm9vdC5zaGVsbHMsXG4gICAgICB3YWtldXBzOiBib290Lndha2V1cHMsXG4gICAgICBtZW1vcnk6IGJvb3QubWVtb3J5LFxuICAgICAgZHJlZGdlOiBib290LmRyZWRnZSxcbiAgICAgIG1jcFRvb2xzOiBtY3AudG9vbHMoKSxcbiAgICAgIHVzZXJUb29sczogdXNlclRvb2xTY2FuLnRvb2xzLFxuICAgIH0pXG4gICAgY29uc3QgdG9vbFRva2VucyA9IGVzdChKU09OLnN0cmluZ2lmeSh0b29scykpXG5cbiAgICBjb25zdCBoaXN0b3J5ID0gc3RhdGUucHJvdmlkZXJIaXN0b3J5XG4gICAgY29uc3QgY29tcGFjdGVkID0gaGlzdG9yeVswXT8ucm9sZSA9PT0gJ3VzZXInXG4gICAgICAmJiBzdGF0ZS5oaXN0b3J5RXZlbnRJZHNbMF0gPT09IG51bGxcbiAgICAgICYmIFN0cmluZyhoaXN0b3J5WzBdLmNvbnRlbnQpLnN0YXJ0c1dpdGgoJ1tzeXN0ZW0gbm90aWZpY2F0aW9uXSBUaGUgZWFybGllciBwb3J0aW9uJylcbiAgICBjb25zdCBzdW1tYXJ5VG9rZW5zID0gY29tcGFjdGVkID8gZXN0KGhpc3RvcnlbMF0uY29udGVudCkgOiAwXG4gICAgY29uc3QgbWVzc2FnZXMgPSBjb21wYWN0ZWQgPyBoaXN0b3J5LnNsaWNlKDEpIDogaGlzdG9yeVxuICAgIGNvbnN0IG1lc3NhZ2VUb2tlbnMgPSBlc3QoSlNPTi5zdHJpbmdpZnkobWVzc2FnZXMpKVxuXG4gICAgY29uc3Qgcm93cyA9IFtcbiAgICAgIHsgbmFtZTogJ3N5c3RlbSBwcm9tcHQnLCBkZXNjOiAnaWRlbnRpdHksIGVudmlyb25tZW50LCB0b29sIGd1aWRhbmNlJywgbm90ZTogdG9rKGVzdChzeXN0ZW1CYXNlKSkgfSxcbiAgICAgIHsgbmFtZTogYHRvb2wgc2NoZW1hcyAoJHt0b29scy5sZW5ndGh9KWAsIGRlc2M6IHRvb2xzLm1hcCgodCkgPT4gdC5uYW1lKS5qb2luKCcgXHUwMEI3ICcpLCBub3RlOiB0b2sodG9vbFRva2VucykgfSxcbiAgICBdXG4gICAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgbmFtZTogYHByb2plY3QgaW5zdHJ1Y3Rpb25zICgke2ZpbGVzLmxlbmd0aH0pYCxcbiAgICAgICAgZGVzYzogZmlsZXMubWFwKChmKSA9PiBmLnBhdGgucmVwbGFjZShgJHtib290LnJvb3R9L2AsICcnKSkuam9pbignLCAnKSxcbiAgICAgICAgbm90ZTogdG9rKGZpbGVzLnJlZHVjZSgoc3VtLCBmKSA9PiBzdW0gKyBlc3QoZi5jb250ZW50KSwgMCkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHNraWxsTGlzdC5sZW5ndGgpIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIG5hbWU6IGBza2lsbHMgaW5kZXggKCR7c2tpbGxMaXN0Lmxlbmd0aH0pYCxcbiAgICAgICAgZGVzYzogc2tpbGxMaXN0Lm1hcCgocykgPT4gcy5uYW1lKS5qb2luKCcsICcpLFxuICAgICAgICBub3RlOiB0b2soZXN0KHNraWxsTGlzdC5tYXAoKHMpID0+IGAtICR7cy5uYW1lfTogJHtzLmRlc2NyaXB0aW9ufWApLmpvaW4oJ1xcbicpKSksXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAobWVtb3J5SW5kZXhUZXh0KSB7XG4gICAgICByb3dzLnB1c2goeyBuYW1lOiAnbWVtb3J5IGluZGV4JywgZGVzYzogJ29uZSBsaW5lIHBlciBzYXZlZCBtZW1vcnknLCBub3RlOiB0b2soZXN0KG1lbW9yeUluZGV4VGV4dCkpIH0pXG4gICAgfVxuICAgIGlmIChjb21wYWN0ZWQpIHtcbiAgICAgIHJvd3MucHVzaCh7IG5hbWU6ICdjb21wYWN0aW9uIHN1bW1hcnknLCBkZXNjOiAnc3RhbmRzIGluIGZvciBldmVyeXRoaW5nIGJlZm9yZSB0aGUgbGFzdCBjb21wYWN0Jywgbm90ZTogdG9rKHN1bW1hcnlUb2tlbnMpIH0pXG4gICAgfVxuICAgIHJvd3MucHVzaCh7XG4gICAgICBuYW1lOiBgY29udmVyc2F0aW9uICgke21lc3NhZ2VzLmxlbmd0aH0gbWVzc2FnZXMpYCxcbiAgICAgIGRlc2M6IGNvbXBhY3RlZCA/ICdrZXB0IHZlcmJhdGltIHNpbmNlIHRoZSBsYXN0IGNvbXBhY3QnIDogJ2V2ZXJ5IG1lc3NhZ2UgdGhpcyBzZXNzaW9uJyxcbiAgICAgIG5vdGU6IHRvayhtZXNzYWdlVG9rZW5zKSxcbiAgICB9KVxuXG4gICAgaWYgKHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgJiYgc3RhdGUubGFzdFByb21wdE1vZGVsID09PSBtb2RlbCgpLm5hbWUpIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIG5hbWU6ICdsYXN0IG1lYXN1cmVkIHJlcXVlc3QnLFxuICAgICAgICBkZXNjOiAncHJvdmlkZXItcmVwb3J0ZWQgaW5wdXQgdG9rZW5zLCB0aGUgbnVtYmVyIGJlaGluZCBjdHggJScsXG4gICAgICAgIG5vdGU6IGAke3N0YXRlLmxhc3RQcm9tcHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gdG9rYCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dFNlZ21lbnRzID0gW1xuICAgICAgeyBsYWJlbDogJ3N5c3RlbScsIHRva2VuczogZXN0KHN5c3RlbUJhc2UpIH0sXG4gICAgICB7IGxhYmVsOiAndG9vbHMnLCB0b2tlbnM6IHRvb2xUb2tlbnMgfSxcbiAgICAgIHsgbGFiZWw6ICdwcm9qZWN0JywgdG9rZW5zOiBNYXRoLm1heCgwLCBlc3Qoc3lzdGVtRnVsbCkgLSBlc3Qoc3lzdGVtQmFzZSkpIH0sXG4gICAgICAuLi4oc3VtbWFyeVRva2VucyA/IFt7IGxhYmVsOiAnc3VtbWFyeScsIHRva2Vuczogc3VtbWFyeVRva2VucyB9XSA6IFtdKSxcbiAgICAgIHsgbGFiZWw6ICdjb252ZXJzYXRpb24nLCB0b2tlbnM6IG1lc3NhZ2VUb2tlbnMgfSxcbiAgICBdLmZpbHRlcigoc2VnbWVudCkgPT4gc2VnbWVudC50b2tlbnMgPiAwKVxuICAgICAgLm1hcCgoc2VnbWVudCwgaSkgPT4gKHsgLi4uc2VnbWVudCwgY29sb3I6IFsnIzY3YjdmZicsICcjYzc5MmVhJywgJyNmN2M2NmEnLCAnI2Y3OGM2YycsICcjNmJlNzk1J11baV0gfSkpXG5cbiAgICBzZXRJbmZvUGFuZWwoe1xuICAgICAgdGl0bGU6IGBDb250ZXh0IFx1MDBCNyAke21vZGVsKCkubmFtZX1gLFxuICAgICAgcm93cyxcbiAgICAgIG92ZXJ2aWV3OiBjb250ZXh0U2VnbWVudHMubGVuZ3RoID8geyBzZWdtZW50czogY29udGV4dFNlZ21lbnRzIH0gOiBudWxsLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB0aGVtZUl0ZW1zID0gKCkgPT4gW1xuICAgIC4uLnBhbGV0dGVMaXN0KCksXG4gICAgeyBrZXk6ICdhdXRvJywgZGVzYzogYGZvbGxvdyB0aGUgdGVybWluYWwgKGRldGVjdGVkOiAke2Jvb3QuZGV0ZWN0ZWRUaGVtZSB8fCAnZGFyayd9KWAgfSxcbiAgXVxuXG4gIGZ1bmN0aW9uIHBhbGV0dGVGb3IocHJlZikge1xuICAgIHJldHVybiBwcmVmID09PSAnYXV0bycgPyBib290LmRldGVjdGVkVGhlbWUgfHwgJ2RhcmsnIDogcHJlZlxuICB9XG5cbiAgZnVuY3Rpb24gcHJldmlld1BhbGV0dGUocHJlZikge1xuICAgIHNldFBhbGV0dGUocGFsZXR0ZUZvcihwcmVmKSlcbiAgICBib290LnNldFRoZW1lPy4oeyBhY2NlbnQ6IGFjY2VudCgpLCBtdXRlZDogTVVURUQgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGFwcGx5VGhlbWVQcmVmKHByZWYpIHtcbiAgICBzZXRUaGVtZVByZWYocHJlZilcbiAgICBwcmV2aWV3UGFsZXR0ZShwcmVmKVxuICAgIHdyaXRlQ29uZmlnKHsgdGhlbWU6IHByZWYgPT09ICdhdXRvJyA/IHVuZGVmaW5lZCA6IHByZWYgfSkuY2F0Y2goKCkgPT4ge30pXG4gICAgZmxhc2gocHJlZiA9PT0gJ2F1dG8nID8gYHRoZW1lOiBhdXRvIFx1MDBCNyBmb2xsb3dpbmcgdGhlIHRlcm1pbmFsICgke3BhbGV0dGVGb3IoJ2F1dG8nKX0pYCA6IGB0aGVtZTogJHtwcmVmfWApXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBydW5Db21tYW5kKGMsIGFyZ3MgPSAnJykge1xuICAgIGlmICh0eXBlb2YgYXJncyAhPT0gJ3N0cmluZycpIGFyZ3MgPSAnJ1xuICAgIHNldElucHV0KCcnKVxuICAgIHNldENtZEN5Y2xlKG51bGwpXG4gICAgaWYgKGMubmFtZSA9PT0gJ3JlbmFtZScpIHtcbiAgICAgIGNvbnN0IGF1dG9tYXRpY1RpdGxlID0gdXNlckVudHJpZXMoZGVyaXZlZCgpKVswXT8udGV4dC50cmltKCkuc2xpY2UoMCwgMjAwKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ3RpdGxlJywgeyB0ZXh0OiBhcmdzIHx8IG51bGwgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGlmIChhcmdzKSBmbGFzaChgc2Vzc2lvbiByZW5hbWVkIHRvIFwiJHthcmdzfVwiYClcbiAgICAgIGVsc2UgaWYgKGF1dG9tYXRpY1RpdGxlKSBmbGFzaChgc2Vzc2lvbiBuYW1lIHJlc2V0IHRvIFwiJHthdXRvbWF0aWNUaXRsZX1cImApXG4gICAgICBlbHNlIGZsYXNoKCdzZXNzaW9uIG5hbWUgcmVzZXQnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb2xvcicpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoU0VTU0lPTl9DT0xPUlMpXG4gICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKFNFU1NJT05fQ09MT1JTKVxuICAgICAgbGV0IHZhbHVlXG4gICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9ICh2YWx1ZXMuaW5kZXhPZihkZXJpdmVkKCkuY29sb3IpICsgMSkgJSB2YWx1ZXMubGVuZ3RoXG4gICAgICAgIHZhbHVlID0gdmFsdWVzW25leHRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IFNFU1NJT05fQ09MT1JTW2FyZ3MudG9Mb3dlckNhc2UoKV0gfHwgKC9eI1swLTlhLWZBLUZdezZ9JC8udGVzdChhcmdzKSA/IGFyZ3MgOiBudWxsKVxuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gZmxhc2goYHVzYWdlOiAvY29sb3IgdG8gY3ljbGUsIG9yIC9jb2xvciA8JHtuYW1lcy5qb2luKCd8Jyl9fCNoZXg+YClcbiAgICAgIH1cbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjb2xvcicsIHsgdmFsdWUgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGNvbnN0IG5hbWUgPSBuYW1lc1t2YWx1ZXMuaW5kZXhPZih2YWx1ZSldXG4gICAgICBmbGFzaChgc2Vzc2lvbiBjb2xvcjogJHtuYW1lIHx8IHZhbHVlfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NvbmZpZycpIHtcbiAgICAgIHNldFNob3dDb25maWdQYW5lbCh0cnVlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICd0aGVtZScpIHtcbiAgICAgIGlmICghYXJncykgcmV0dXJuIHNldFNob3dUaGVtZVBhbmVsKHRydWUpXG4gICAgICBjb25zdCBjaG9pY2UgPSBhcmdzLnRvTG93ZXJDYXNlKClcbiAgICAgIGNvbnN0IHZhbGlkID0gWy4uLnBhbGV0dGVMaXN0KCkubWFwKChwKSA9PiBwLmtleSksICdhdXRvJ11cbiAgICAgIGlmICghdmFsaWQuaW5jbHVkZXMoY2hvaWNlKSkgcmV0dXJuIGZsYXNoKGB0aGVtZTogJHtwYWxldHRlTmFtZSgpfSBcdTAwQjcgL3RoZW1lIDwke3ZhbGlkLmpvaW4oJ3wnKX0+YClcbiAgICAgIGFwcGx5VGhlbWVQcmVmKGNob2ljZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5za2lsbCkge1xuICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHNraWxscy5sb2FkKGMubmFtZSlcbiAgICAgIGlmICghYm9keSkgcmV0dXJuIGZsYXNoKGBjb3VsZCBub3QgbG9hZCBza2lsbCAke2MubmFtZX1gKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ3NraWxsJywgeyBuYW1lOiBjLm5hbWUsIHNvdXJjZTogJ3VzZXInIH0pKVxuICAgICAgc2VuZChgRm9sbG93IHRoZXNlIHNraWxsIGluc3RydWN0aW9ucyBub3cuXFxuXFxuJHtib2R5fWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMuY29tbWFuZCkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJvb3QuY29tbWFuZHMubG9hZChjLm5hbWUsIGFyZ3MpXG4gICAgICBpZiAoIXRleHQpIHJldHVybiBmbGFzaChgY291bGQgbm90IGxvYWQgY29tbWFuZCAke2MubmFtZX1gKVxuICAgICAgc2VuZCh0ZXh0KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb25uZWN0JykgcmV0dXJuIG9wZW5Db25uZWN0UGFuZWwoKVxuICAgIGlmIChjLm5hbWUgPT09ICdkZWVwLXJlc2VhcmNoJykge1xuICAgICAgY29uc3QgbWF0Y2ggPSBhcmdzLm1hdGNoKC9eKD86LS1hZ2VudHMoPzo9fFxccyspKFxcZCspXFxzKyk/KFtcXHNcXFNdKykkLylcbiAgICAgIGNvbnN0IHF1ZXN0aW9uID0gbWF0Y2g/LlsyXT8udHJpbSgpXG4gICAgICBjb25zdCBhZ2VudExpbWl0ID0gbWF0Y2g/LlsxXSA/IE51bWJlcihtYXRjaFsxXSkgOiByZXNlYXJjaEFnZW50TGltaXQoKVxuICAgICAgaWYgKCFxdWVzdGlvbiB8fCAhTnVtYmVyLmlzSW50ZWdlcihhZ2VudExpbWl0KSB8fCBhZ2VudExpbWl0IDwgMSB8fCBhZ2VudExpbWl0ID4gMTAwKSByZXR1cm4gZmxhc2goJ3VzYWdlOiAvZGVlcC1yZXNlYXJjaCBbLS1hZ2VudHMgMS0xMDBdIDxxdWVzdGlvbj4nKVxuICAgICAgaWYgKCFib290LnJlc2VhcmNoTW9kZWwgfHwgIW1vZGVscy5zb21lKChtKSA9PiBtLm5hbWUgPT09IGJvb3QucmVzZWFyY2hNb2RlbCAmJiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpKSB7XG4gICAgICAgIHNldFBlbmRpbmdSZXNlYXJjaCh7IHF1ZXN0aW9uLCBhZ2VudExpbWl0IH0pXG4gICAgICAgIHNldFNob3dSZXNlYXJjaE1vZGVsUGFuZWwodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICByZWZzLm5leHRSZXNlYXJjaEFnZW50TGltaXQgPSBhZ2VudExpbWl0XG4gICAgICBzZW5kKGBDb25kdWN0IGRlZXAgcmVzZWFyY2ggb24gdGhlIGZvbGxvd2luZyBxdWVzdGlvbjogJHtxdWVzdGlvbn1cXG5cXG5GaXJzdCBjYWxsIGFnZW50X3BsYW4uIEludGVycHJldCBhbnkgYWdlbnQtY291bnQgaW5zdHJ1Y3Rpb24gaW4gdGhlIHVzZXIncyBxdWVzdGlvbiBzZW1hbnRpY2FsbHkgYW5kIGRlY2xhcmUgdGhhdCBjb3VudDsgaWYgdGhlIHVzZXIgZ2F2ZSBubyBjb3VudCwgZGVjbGFyZSB0aGUgY29uZmlndXJlZCBkZWZhdWx0IGJ1ZGdldCBvZiAke2FnZW50TGltaXR9LiBUaGVuIHVzZSBhZ2VudF9zdGFydCB3aXRoaW4gdGhhdCBlbmZvcmNlZCBidWRnZXQgdG8gaW52ZXN0aWdhdGUgZGlzdGluY3QgYW5nbGVzIHdpdGggdGhlIGNvbmZpZ3VyZWQgcmVzZWFyY2ggd29ya2VyIG1vZGVsLiBDb2xsZWN0IHdvcmtlcnMgd2l0aCBhZ2VudF9jb2xsZWN0LCBjcml0aWNhbGx5IGV2YWx1YXRlIHRoZWlyIGV2aWRlbmNlLCBhbmQgc3ludGhlc2l6ZSBhIGNvbmNpc2UgY2l0ZWQgcmVwb3J0LiBXaGVuIHRoZSBidWRnZXQgcGVybWl0cywgdXNlIGluZGVwZW5kZW50IHdvcmtlcnMgdG8gY2hlY2sgaW1wb3J0YW50IGRpc3B1dGVkIG9yIHdlYWsgY2xhaW1zLiBEbyBub3QgZGVsZWdhdGUgZmluYWwgc3ludGhlc2lzLiBEbyBub3QgZW1pdCBwcm9ncmVzcyB1cGRhdGVzIHdoaWxlIHJlc2VhcmNoaW5nOyBQaWNvIGRpc3BsYXlzIGFnZW50IGFjdGl2aXR5IGF1dG9tYXRpY2FsbHkuYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnbW9kZWwnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBzZXRTaG93TW9kZWxQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgZXhhY3QgPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBhcmdzKVxuICAgICAgY29uc3QgYWRob2MgPSAhZXhhY3QgJiYgYXJncy5pbmNsdWRlcygnLycpID8gYWRob2NNb2RlbChhcmdzLCBib290LnByb3ZpZGVycykgOiBudWxsXG4gICAgICBjb25zdCBzY29yZWQgPSBleGFjdCB8fCBhZGhvY1xuICAgICAgICA/IFtdXG4gICAgICAgIDogbW9kZWxzXG4gICAgICAgICAgICAubWFwKChtKSA9PiBbZnV6enlTY29yZShhcmdzLCBtLm5hbWUpLCBtXSlcbiAgICAgICAgICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgICBjb25zdCBwaWNrID0gZXhhY3QgfHwgYWRob2MgfHwgc2NvcmVkWzBdPy5bMV1cbiAgICAgIGlmICghcGljaykgcmV0dXJuIGZsYXNoKGBubyBhdmFpbGFibGUgbW9kZWwgbWF0Y2hlcyBcIiR7YXJnc31cImApXG4gICAgICBpZiAocGljay5hdmFpbGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmxhc2goYHNldCAke3BpY2sua2V5SGludH0gaW4geW91ciBlbnZpcm9ubWVudCB0byB1c2UgJHtwaWNrLm5hbWV9YClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtb2RlbF9zd2l0Y2gnLCB7IGZyb206IG1vZGVsKCkubmFtZSwgdG86IHBpY2submFtZSB9KSlcbiAgICAgIHNldE1vZGVsKHBpY2spXG4gICAgICBmbGFzaChhZGhvYyA/IGBtb2RlbCBzZXQgdG8gJHtwaWNrLm5hbWV9IChub3QgaW4gY2F0YWxvZywgcHJpY2luZyB1bmtub3duKWAgOiBgbW9kZWwgc2V0IHRvICR7cGljay5uYW1lfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2VmZm9ydCcpIHtcbiAgICAgIGlmICghZWZmb3J0QXBwbGllcygpKSByZXR1cm4gZmxhc2goYCR7bW9kZWwoKS5uYW1lfSBkb2VzIG5vdCBzdXBwb3J0IGVmZm9ydCBjb250cm9sYClcbiAgICAgIGlmICghYXJncykgcmV0dXJuIHNldFNob3dFZmZvcnRQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgbGV2ZWwgPSBhcmdzLnRvTG93ZXJDYXNlKClcbiAgICAgIGlmIChsZXZlbCA9PT0gJ2RlZmF1bHQnKSByZXR1cm4gc2V0U2Vzc2lvbkVmZm9ydChudWxsKVxuICAgICAgaWYgKCFFRkZPUlRfTEVWRUxTLnNvbWUoKGwpID0+IGwua2V5ID09PSBsZXZlbCkpIHJldHVybiBmbGFzaCgndXNhZ2U6IC9lZmZvcnQgPGRlZmF1bHR8bG93fG1lZGl1bXxoaWdofG1heD4nKVxuICAgICAgcmV0dXJuIHNldFNlc3Npb25FZmZvcnQobGV2ZWwpXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICd1cGRhdGUnKSB7XG4gICAgICBpZiAoaXNEZXZJbnN0YWxsKGltcG9ydC5tZXRhLnVybCkpIHJldHVybiBmbGFzaCgndGhpcyBwaWNvIHJ1bnMgZnJvbSBhIHNvdXJjZSBjaGVja291dCBcdTAwQjcgdXBkYXRlIGl0IHdpdGggZ2l0JylcbiAgICAgIGNvbnN0IGxhdGVzdCA9IGF3YWl0IGZldGNoTGF0ZXN0VmVyc2lvbigpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBpZiAobGF0ZXN0ICYmICFuZXdlclZlcnNpb24odmVyc2lvbiwgbGF0ZXN0KSkgcmV0dXJuIGZsYXNoKGBwaWNvIHYke3ZlcnNpb259IGlzIGFscmVhZHkgdGhlIGxhdGVzdGApXG4gICAgICBmbGFzaChgdXBkYXRpbmcke2xhdGVzdCA/IGAgdG8gdiR7bGF0ZXN0fWAgOiAnJ30uLi5gKVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuVXBkYXRlKClcbiAgICAgIGlmIChyZXN1bHQub2spIHJldHVybiBmbGFzaChgdXBkYXRlZCR7bGF0ZXN0ID8gYCB0byB2JHtsYXRlc3R9YCA6ICcnfSBcdTAwQjcgcmVzdGFydCBwaWNvIHRvIHVzZSBpdGApXG4gICAgICByZXR1cm4gZmxhc2goYHVwZGF0ZSBmYWlsZWQ6ICR7cmVzdWx0Lm91dHB1dC5zbGljZSgwLCAxMDApfWApXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb250ZXh0JykgcmV0dXJuIG9wZW5Db250ZXh0UGFuZWwoKVxuICAgIGlmIChjLm5hbWUgPT09ICdoaXN0b3J5JykgcmV0dXJuIG9wZW5IaXN0b3J5U2VhcmNoKClcbiAgICBpZiAoYy5uYW1lID09PSAnaGVscCcpIHJldHVybiBzZXRWaWV3KCdoZWxwJylcbiAgICBpZiAoYy5uYW1lID09PSAnbWNwJykgcmV0dXJuIHNldFNob3dNY3BQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICd3YWtldXBzJykgcmV0dXJuIHNldFNob3dXYWtldXBzUGFuZWwodHJ1ZSlcbiAgICBpZiAoYy5uYW1lID09PSAnbWVtb3J5Jykge1xuICAgICAgYXdhaXQgcmVmcmVzaE1lbW9yaWVzKClcbiAgICAgIHJldHVybiBzZXRTaG93TWVtb3J5UGFuZWwodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Jlc3VtZScpIHtcbiAgICAgIHNldFNob3dSZXN1bWVQYW5lbCh0cnVlKVxuICAgICAgcmVmcmVzaFNlc3Npb25zKHJlc3VtZVNjb3BlKCkpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Byb2plY3QnKSByZXR1cm4gb3BlblByb2plY3RQYW5lbCgpXG4gICAgaWYgKGMubmFtZSA9PT0gJ2N3ZCcpIHtcbiAgICAgIGNvbnN0IHJvb3ROb3RlID0gYm9vdC5yb290ICE9PSBib290LmN3ZCA/IGAgXHUwMEI3IHByb2plY3Qgcm9vdCAke3Nob3J0ZW5QYXRoKGJvb3Qucm9vdCl9YCA6ICcnXG4gICAgICByZXR1cm4gZmxhc2goYCR7Ym9vdC5kaXNwbGF5Q3dkfSR7cm9vdE5vdGV9YClcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3NraWxscycpIHtcbiAgICAgIHJldHVybiBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogJ1NraWxscycsXG4gICAgICAgIHJvd3M6IHNraWxscy5saXN0KCkubWFwKChzKSA9PiAoeyBuYW1lOiBzLm5hbWUsIGRlc2M6IHMuZGVzY3JpcHRpb24sIG5vdGU6IHMuc291cmNlIH0pKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb21tYW5kcycpIHtcbiAgICAgIHJldHVybiBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogJ0NvbW1hbmRzJyxcbiAgICAgICAgcm93czogW1xuICAgICAgICAgIC4uLkNPTU1BTkRTLm1hcCgoY21kKSA9PiAoeyBuYW1lOiBgLyR7Y21kLm5hbWV9YCwgZGVzYzogY21kLmRlc2MsIG5vdGU6ICdidWlsdGluJyB9KSksXG4gICAgICAgICAgLi4uYm9vdC5jb21tYW5kcy5saXN0KCkubWFwKChjbWQpID0+ICh7IG5hbWU6IGAvJHtjbWQubmFtZX1gLCBkZXNjOiBjbWQuZGVzY3JpcHRpb24sIG5vdGU6IGNtZC5zb3VyY2UgfSkpLFxuICAgICAgICBdLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Rvb2xzJykge1xuICAgICAgY29uc3Qgc2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2Q6IGJvb3QuY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgICAgY29uc3QgeyB0b29sczogYnVpbHRpbnMgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgICBjd2Q6IGJvb3QuY3dkLFxuICAgICAgICB0cmFja2VyLFxuICAgICAgICBza2lsbHMsXG4gICAgICAgIHNoZWxsczogYm9vdC5zaGVsbHMsXG4gICAgICAgIHdha2V1cHM6IGJvb3Qud2FrZXVwcyxcbiAgICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgICAgZHJlZGdlOiBib290LmRyZWRnZSxcbiAgICAgIH0pXG4gICAgICBjb25zdCBtY3BDb3VudCA9IG1jcC50b29scygpLmxlbmd0aFxuICAgICAgc2V0SW5mb1BhbmVsKHtcbiAgICAgICAgdGl0bGU6IGBUb29scyR7bWNwQ291bnQgPyBgIFx1MDBCNyBwbHVzICR7bWNwQ291bnR9IE1DUCAoc2VlIC9tY3ApYCA6ICcnfWAsXG4gICAgICAgIHJvd3M6IFtcbiAgICAgICAgICAuLi5idWlsdGlucy5tYXAoKHQpID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzYzogdC5kZXNjcmlwdGlvbi5zcGxpdCgnXFxuJylbMF0sIG5vdGU6ICdidWlsdGluJyB9KSksXG4gICAgICAgICAgLi4uc2Nhbi50b29scy5tYXAoKHQpID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzYzogdC5kZXNjcmlwdGlvbiwgbm90ZTogYCR7dC5zb3VyY2V9IFx1MDBCNyAke3QuX2ZpbGUuc3BsaXQoJy8nKS5wb3AoKX1gIH0pKSxcbiAgICAgICAgICAuLi5zY2FuLmVycm9ycy5tYXAoKGUpID0+ICh7IG5hbWU6IGUuZmlsZS5zcGxpdCgnLycpLnBvcCgpLCBkZXNjOiBlLmVycm9yLCBub3RlOiAnYnJva2VuJyB9KSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICduZXcnIHx8IGMubmFtZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIGlmIChjLm5hbWUgPT09ICdkZWxldGUnKSB7XG4gICAgICAgIGlmICghcmVmcy5zZXNzaW9uKSByZXR1cm4gZmxhc2goJ25vIGN1cnJlbnQgc2Vzc2lvbiB0byBkZWxldGUnKVxuICAgICAgICBzZXRTaG93RGVsZXRlQ29uZmlybSh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHJlZnMuc2Vzc2lvbiA9IG51bGxcbiAgICAgIHJlZnMuYWxsRXZlbnRzID0gW11cbiAgICAgIHJlZnMucGVyc2lzdGVkID0gMFxuICAgICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgICAgYWdlbnRzLmNsZWFyKClcbiAgICAgIHNldFZpZXdlZEFnZW50SWQobnVsbClcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIHNldFNlbnQoW10pXG4gICAgICBzZXRNb2RlbChkZWZhdWx0TW9kZWwoKSlcbiAgICAgIHNldEVmZm9ydChkZWZhdWx0RWZmb3J0KCkpXG4gICAgICBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgZmxhc2goJ25ldyBzZXNzaW9uJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAncmV3aW5kJykge1xuICAgICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgICAgaWYgKHVzZXJFbnRyaWVzKGRlcml2ZWQoKSkubGVuZ3RoID09PSAwKSByZXR1cm4gZmxhc2goJ25vdGhpbmcgdG8gcmV3aW5kIHlldCcpXG4gICAgICBzZXRSZXdpbmRTdGVwKCdwaWNrJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY2xlYXInKSB7XG4gICAgICBpZiAoYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnY2xlYXInLCB7fSkpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBmbGFzaCgnY29udmVyc2F0aW9uIGNsZWFyZWQnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb21wYWN0JykgcmV0dXJuIHBlcmZvcm1Db21wYWN0aW9uKGFyZ3MpXG4gICAgaWYgKGMubmFtZSA9PT0gJ2Nvc3QnKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHN0YXRlLnVzYWdlQnlNb2RlbClcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZsYXNoKCdubyB1c2FnZSB5ZXQnKVxuICAgICAgY29uc3QgY29zdE9mID0gKGJ5TW9kZWwpID0+XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGJ5TW9kZWwpLnJlZHVjZSgoc3VtLCBbbmFtZSwgdXNhZ2VdKSA9PiBzdW0gKyBlc3RpbWF0ZUNvc3QoZmluZE1vZGVsKG1vZGVscywgbmFtZSksIHVzYWdlKSwgMClcbiAgICAgIGNvbnN0IHNwZW50ID0gY29zdE9mKHN0YXRlLnVzYWdlQnlNb2RlbClcbiAgICAgIGNvbnN0IGFjdGl2ZSA9IGNvc3RPZihzdGF0ZS51c2FnZUFjdGl2ZUJ5TW9kZWwpXG4gICAgICBjb25zdCB7IHByb21wdFRva2VucywgY29tcGxldGlvblRva2VucyB9ID0gc3RhdGUudXNhZ2VcbiAgICAgIGNvbnN0IGJhc2UgPSBgJCR7c3BlbnQudG9GaXhlZCg0KX0gc3BlbnQgXHUwMEI3ICR7cHJvbXB0VG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IGluIFx1MDBCNyAke2NvbXBsZXRpb25Ub2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gb3V0YFxuICAgICAgZmxhc2goc3BlbnQgLSBhY3RpdmUgPiAwLjAwMDA1ID8gYCR7YmFzZX0gXHUwMEI3IGN1cnJlbnQgY29udmVyc2F0aW9uICQke2FjdGl2ZS50b0ZpeGVkKDQpfWAgOiBiYXNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdleHBvcnQnKSB7XG4gICAgICBjb25zdCBmaWxlID0gam9pbihjd2QsIGBwaWNvLWV4cG9ydC0ke0RhdGUubm93KCl9Lm1kYClcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlLCB0cmFuc2NyaXB0VG9NYXJrZG93bihkZXJpdmVkKCkudHJhbnNjcmlwdCwgeyB0aXRsZTogYHBpY28gc2Vzc2lvbiBcdTAwQjcgJHtjd2R9YCB9KSlcbiAgICAgIGZsYXNoKGBleHBvcnRlZCB0byAke2ZpbGV9YClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hBdXRoUHJvdmlkZXJzKCkge1xuICAgIGNvbnN0IG9wZW5haSA9IGF3YWl0IG9wZW5haVN0YXR1cygpLmNhdGNoKCgpID0+ICh7IGNvbm5lY3RlZDogZmFsc2UsIGVtYWlsOiBudWxsIH0pKVxuICAgIHNldEF1dGhQcm92aWRlcnMoW1xuICAgICAgeyBpZDogJ29wZW5haScsIGxhYmVsOiAnT3BlbkFJIFx1MDBCNyBDaGF0R1BUIC8gQ29kZXggcGxhbicsIGNvbm5lY3RlZDogb3BlbmFpLmNvbm5lY3RlZCwgZW1haWw6IG9wZW5haS5lbWFpbCB9LFxuICAgIF0pXG4gIH1cblxuICBmdW5jdGlvbiBvcGVuQ29ubmVjdFBhbmVsKCkge1xuICAgIHNldFNob3dDb25uZWN0UGFuZWwodHJ1ZSlcbiAgICByZWZyZXNoQXV0aFByb3ZpZGVycygpXG4gIH1cblxuICBmdW5jdGlvbiBjb25uZWN0UHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICBpZiAocHJvdmlkZXIuaWQgIT09ICdvcGVuYWknKSByZXR1cm5cbiAgICBzZXRTaG93Q29ubmVjdFBhbmVsKGZhbHNlKVxuICAgIGZsYXNoKCdvcGVuaW5nIHlvdXIgYnJvd3NlciBmb3IgQ2hhdEdQVCBzaWduLWluLi4uJylcbiAgICBjb25uZWN0T3BlbkFJKClcbiAgICAgIC50aGVuKGFzeW5jICh7IGVtYWlsIH0pID0+IHtcbiAgICAgICAgYm9vdC5wcm92aWRlcnMgPSBbLi4ubmV3IFNldChbLi4uYm9vdC5wcm92aWRlcnMsICdjb2RleCddKV1cbiAgICAgICAgY29uc3QgY3JlZHMgPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICAgIGNvbnN0IGNvZGV4ID0gKGF3YWl0IGxvYWRDb2RleE1vZGVscyhjcmVkcykpLm1hcCgobSkgPT4gKHsgLi4ubSwgYXZhaWxhYmxlOiB0cnVlLCBrZXlIaW50OiAnL2Nvbm5lY3QnIH0pKVxuICAgICAgICBib290Lm1vZGVscyA9IFsuLi5ib290Lm1vZGVscy5maWx0ZXIoKG0pID0+IG0ucHJvdmlkZXIgIT09ICdjb2RleCcpLCAuLi5jb2RleF1cbiAgICAgICAgcmVEZXJpdmUoKVxuICAgICAgICBmbGFzaChgY29ubmVjdGVkIGFzICR7ZW1haWwgfHwgJ3lvdXIgQ2hhdEdQVCBhY2NvdW50J30gXHUwMEI3ICR7Y29kZXgubGVuZ3RofSBjb2RleCBtb2RlbHMgdW5sb2NrZWQgaW4gL21vZGVsYClcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4gZmxhc2goYGNvbm5lY3QgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDEyMCl9YCkpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkaXNjb25uZWN0UHJvdmlkZXIocHJvdmlkZXIpIHtcbiAgICBpZiAocHJvdmlkZXIuaWQgIT09ICdvcGVuYWknKSByZXR1cm5cbiAgICBjb25zdCBhcm1lZCA9IHJlZnMuZGlzY29ubmVjdEFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuaWQgIT09IHByb3ZpZGVyLmlkIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuZGlzY29ubmVjdEFybSA9IHsgaWQ6IHByb3ZpZGVyLmlkLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBkaXNjb25uZWN0ICR7cHJvdmlkZXIubGFiZWx9ICh5b3Ugd2lsbCBuZWVkIHRvIHNpZ24gaW4gYWdhaW4pYClcbiAgICB9XG4gICAgcmVmcy5kaXNjb25uZWN0QXJtID0gbnVsbFxuICAgIGF3YWl0IGRpc2Nvbm5lY3RPcGVuQUkoKS5jYXRjaCgoKSA9PiB7fSlcbiAgICBib290LnByb3ZpZGVycyA9IGJvb3QucHJvdmlkZXJzLmZpbHRlcigocCkgPT4gcCAhPT0gJ2NvZGV4JylcbiAgICBib290Lm1vZGVscyA9IGJvb3QubW9kZWxzLm1hcCgobSkgPT4gKG0ucHJvdmlkZXIgPT09ICdjb2RleCcgPyB7IC4uLm0sIGF2YWlsYWJsZTogZmFsc2UgfSA6IG0pKVxuICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSBzZXRNb2RlbChkZWZhdWx0TW9kZWwoKSlcbiAgICByZWZyZXNoQXV0aFByb3ZpZGVycygpXG4gICAgZmxhc2goJ2Rpc2Nvbm5lY3RlZCBmcm9tIENoYXRHUFQnKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVmcmVzaFNlc3Npb25zKHNjb3BlSW5kZXgpIHtcbiAgICBzZXRSZXN1bWVMb2FkaW5nKHRydWUpXG4gICAgbGlzdFNlc3Npb25zKHsgc2NvcGU6IFJFU1VNRV9TQ09QRVNbc2NvcGVJbmRleF0sIHJvb3QgfSlcbiAgICAgIC50aGVuKHNldFJlc3VtZVNlc3Npb25zKVxuICAgICAgLmZpbmFsbHkoKCkgPT4gc2V0UmVzdW1lTG9hZGluZyhmYWxzZSkpXG4gIH1cblxuICBmdW5jdGlvbiBzaG9ydGVuUGF0aChwYXRoKSB7XG4gICAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICAgIHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoaG9tZSkgPyBwYXRoLnJlcGxhY2UoaG9tZSwgJ34nKSA6IHBhdGhcbiAgfVxuXG4gIGZ1bmN0aW9uIG9wZW5Qcm9qZWN0UGFuZWwoKSB7XG4gICAgc2V0U2hvd1Byb2plY3RQYW5lbCh0cnVlKVxuICAgIHNldFByb2plY3RzTG9hZGluZyh0cnVlKVxuICAgIGxpc3RTZXNzaW9ucyh7IHNjb3BlOiAnZXZlcnl3aGVyZScsIHJvb3QgfSlcbiAgICAgIC50aGVuKChtZXRhcykgPT4ge1xuICAgICAgICBjb25zdCBieVJvb3QgPSBuZXcgTWFwKClcbiAgICAgICAgZm9yIChjb25zdCBtIG9mIG1ldGFzKSB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBieVJvb3QuZ2V0KG0uaGVhZGVyLnJvb3QpXG4gICAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgICAgYnlSb290LnNldChtLmhlYWRlci5yb290LCB7XG4gICAgICAgICAgICAgIHJvb3Q6IG0uaGVhZGVyLnJvb3QsXG4gICAgICAgICAgICAgIHBhdGg6IHNob3J0ZW5QYXRoKG0uaGVhZGVyLnJvb3QpLFxuICAgICAgICAgICAgICBsYXRlc3Q6IG0sXG4gICAgICAgICAgICAgIGNvdW50OiAxLFxuICAgICAgICAgICAgICBjdXJyZW50OiBtLmhlYWRlci5yb290ID09PSBib290LnJvb3QsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnRyeS5jb3VudCsrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldFByb2plY3RzKFsuLi5ieVJvb3QudmFsdWVzKCldKVxuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHNldFByb2plY3RzTG9hZGluZyhmYWxzZSkpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkZWxldGVQcm9qZWN0KHApIHtcbiAgICBpZiAocC5jdXJyZW50KSByZXR1cm4gZmxhc2goJ2Nhbm5vdCBkZWxldGUgdGhlIGN1cnJlbnQgcHJvamVjdCBcdTAwQjcgc3dpdGNoIGF3YXkgZmlyc3QnKVxuICAgIGNvbnN0IGFybWVkID0gcmVmcy5wcm9qZWN0RGVsZXRlQXJtXG4gICAgaWYgKCFhcm1lZCB8fCBhcm1lZC5yb290ICE9PSBwLnJvb3QgfHwgRGF0ZS5ub3coKSAtIGFybWVkLmF0ID4gMzAwMCkge1xuICAgICAgcmVmcy5wcm9qZWN0RGVsZXRlQXJtID0geyByb290OiBwLnJvb3QsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGRlbGV0ZSBcIiR7cC5wYXRofVwiIGFuZCBpdHMgJHtwLmNvdW50fSAke3AuY291bnQgPT09IDEgPyAnc2Vzc2lvbicgOiAnc2Vzc2lvbnMnfWApXG4gICAgfVxuICAgIHJlZnMucHJvamVjdERlbGV0ZUFybSA9IG51bGxcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlUHJvamVjdERhdGEocC5yb290KVxuICAgICAgc2V0UHJvamVjdHMoKGxpc3QpID0+IGxpc3QuZmlsdGVyKCh4KSA9PiB4LnJvb3QgIT09IHAucm9vdCkpXG4gICAgICBmbGFzaChgZGVsZXRlZCAke3AucGF0aH0gXHUwMEI3ICR7cC5jb3VudH0gJHtwLmNvdW50ID09PSAxID8gJ3Nlc3Npb24nIDogJ3Nlc3Npb25zJ30gcmVtb3ZlZGApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgZGVsZXRlIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBzd2l0Y2hQcm9qZWN0KG1ldGEpIHtcbiAgICBpZiAoYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzTWNwID0gYm9vdC5tY3BcbiAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCBib290LnJlYnVpbGQobWV0YS5oZWFkZXIucm9vdClcbiAgICAgIHByZXZpb3VzTWNwLmNsb3NlQWxsKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgICBwcm9jZXNzLmNoZGlyKG5leHQuY3dkKVxuICAgICAgT2JqZWN0LmFzc2lnbihib290LCBuZXh0KVxuICAgICAgYm9vdC5naXQucmV0YXJnZXQobmV4dC5yb290KVxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxceDFiXTA7cGljbyBcdTAwQjcgJHtuZXh0LnJvb3Quc3BsaXQoJy8nKS5wb3AoKX1cXHgwN2ApXG4gICAgICBuZXh0Lm1jcC5jb25uZWN0QWxsKClcbiAgICAgIHNldE1jcFNlcnZlcnMobmV4dC5tY3AubGlzdCgpKVxuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgc2V0RmlsZUxpc3QoW10pXG4gICAgICBhd2FpdCByZXN1bWVTZXNzaW9uKG1ldGEpXG4gICAgICBmbGFzaChgc3dpdGNoZWQgdG8gJHtuZXh0LmRpc3BsYXlDd2R9YClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZsYXNoKGBzd2l0Y2ggZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVNlc3Npb25NZXRhKG1ldGEpIHtcbiAgICBjb25zdCBjdXJyZW50ID0gcmVmcy5zZXNzaW9uPy5pZCA9PT0gbWV0YS5oZWFkZXIuaWRcbiAgICBpZiAoY3VycmVudCAmJiBidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICBjb25zdCBhcm1lZCA9IHJlZnMuZGVsZXRlQXJtXG4gICAgaWYgKCFhcm1lZCB8fCBhcm1lZC5maWxlICE9PSBtZXRhLmZpbGUgfHwgRGF0ZS5ub3coKSAtIGFybWVkLmF0ID4gMzAwMCkge1xuICAgICAgcmVmcy5kZWxldGVBcm0gPSB7IGZpbGU6IG1ldGEuZmlsZSwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgcmV0dXJuIGZsYXNoKGBjdHJsK3ggYWdhaW4gdG8gZGVsZXRlIFwiJHttZXRhLnRpdGxlLnNsaWNlKDAsIDUwKX1cImApXG4gICAgfVxuICAgIHJlZnMuZGVsZXRlQXJtID0gbnVsbFxuICAgIGlmIChjdXJyZW50KSB7XG4gICAgICBpZiAoYXdhaXQgY29uZmlybURlbGV0ZUN1cnJlbnRTZXNzaW9uKCkpIHJlZnJlc2hTZXNzaW9ucyhyZXN1bWVTY29wZSgpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkZWxldGVTZXNzaW9uKG1ldGEuZmlsZSlcbiAgICAgIHJlZnJlc2hTZXNzaW9ucyhyZXN1bWVTY29wZSgpKVxuICAgICAgZmxhc2goJ3Nlc3Npb24gZGVsZXRlZCcpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgZGVsZXRlIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZXN1bWVTZXNzaW9uKG1ldGEpIHtcbiAgICBzZXRTaG93UmVzdW1lUGFuZWwoZmFsc2UpXG4gICAgc2V0U2hvd1Byb2plY3RQYW5lbChmYWxzZSlcbiAgICBpZiAobWV0YS5oZWFkZXIucm9vdCAhPT0gYm9vdC5yb290KSByZXR1cm4gc3dpdGNoUHJvamVjdChtZXRhKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGhlYWRlciwgZXZlbnRzIH0gPSBhd2FpdCBsb2FkU2Vzc2lvbihtZXRhLmZpbGUpXG4gICAgICByZWZzLnNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGU6IG1ldGEuZmlsZSwgaGVhZGVyIH0pXG4gICAgICByZWZzLmFsbEV2ZW50cyA9IFsuLi5ldmVudHNdXG4gICAgICByZWZzLnBlcnNpc3RlZCA9IGV2ZW50cy5sZW5ndGhcbiAgICAgIHJlZnMucmV3aW5kVW5kbyA9IG51bGxcbiAgICAgIGFnZW50cy5yZXN0b3JlKGV2ZW50cylcbiAgICAgIHNldFZpZXdlZEFnZW50SWQobnVsbClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGNvbnN0IGNhdGFsb2dNYXRjaCA9IG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IGRlcml2ZWQoKS5tb2RlbCAmJiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpXG4gICAgICBjb25zdCByZXN0b3JlZCA9IGRlcml2ZWQoKS5tb2RlbFxuICAgICAgICAmJiAoY2F0YWxvZ01hdGNoIHx8IGFkaG9jTW9kZWwoZGVyaXZlZCgpLm1vZGVsLCBib290LnByb3ZpZGVycykpXG4gICAgICBpZiAocmVzdG9yZWQpIHtcbiAgICAgICAgc2V0TW9kZWwocmVzdG9yZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRNb2RlbChkZWZhdWx0TW9kZWwoKSlcbiAgICAgICAgaWYgKGRlcml2ZWQoKS5tb2RlbCkgZmxhc2goYG1vZGVsICR7ZGVyaXZlZCgpLm1vZGVsfSB1bmF2YWlsYWJsZSwgdXNpbmcgJHtkZWZhdWx0TW9kZWwoKS5uYW1lfWApXG4gICAgICB9XG4gICAgICBzZXRFZmZvcnQoZGVyaXZlZCgpLmVmZm9ydCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdEVmZm9ydCgpIDogZGVyaXZlZCgpLmVmZm9ydClcbiAgICAgIHNldFNlbnQodXNlckVudHJpZXMoZGVyaXZlZCgpKS5tYXAoKGUpID0+ICh7IHRleHQ6IHJlY2FsbFRleHQoZSksIGF0OiBoZWFkZXIuY3JlYXRlZEF0IH0pKSlcbiAgICAgIHNldEhpc3RXaW5kb3coSElTVE9SWV9XSU5ET1cpXG4gICAgICBzZXRGb2xsb3codHJ1ZSlcbiAgICAgIGZsYXNoKGByZXN1bWVkIFx1MDBCNyAke21ldGEudHVybnN9ICR7bWV0YS50dXJucyA9PT0gMSA/ICd0dXJuJyA6ICd0dXJucyd9IFx1MDBCNyAke3RpbWVBZ28obWV0YS5hdCl9YClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZsYXNoKGByZXN1bWUgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9wZW5IaXN0b3J5U2VhcmNoKCkge1xuICAgIGNvbnN0IHNlc3Npb24gPSBzZW50KClcbiAgICBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKHNlc3Npb24pKVxuICAgIHNldFNob3dIaXN0b3J5UGFuZWwodHJ1ZSlcbiAgICBzZXRIaXN0U2NvcGUoMClcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZHVwZVByb21wdHMocG9vbCkge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KClcbiAgICBjb25zdCBvdXQgPSBbXVxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgWy4uLnBvb2xdLnNvcnQoKGEsIGIpID0+IGIuYXQgLSBhLmF0KSkge1xuICAgICAgaWYgKHNlZW4uaGFzKGVudHJ5LnRleHQpKSBjb250aW51ZVxuICAgICAgc2Vlbi5hZGQoZW50cnkudGV4dClcbiAgICAgIG91dC5wdXNoKGVudHJ5KVxuICAgIH1cbiAgICByZXR1cm4gb3V0XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBzd2l0Y2hIaXN0U2NvcGUobmV4dCkge1xuICAgIHNldEhpc3RTY29wZShuZXh0KVxuICAgIGlmIChuZXh0ID09PSAwKSByZXR1cm4gc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhzZW50KCkpKVxuICAgIGNvbnN0IHByb2plY3QgPSBhd2FpdCBsb2FkUHJvamVjdFByb21wdHMocm9vdClcbiAgICBpZiAobmV4dCA9PT0gMSkgcmV0dXJuIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoWy4uLnNlbnQoKSwgLi4ucHJvamVjdF0pKVxuICAgIGNvbnN0IGdsb2JhbCA9IGF3YWl0IGxvYWRHbG9iYWxQcm9tcHRzKClcbiAgICBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKFsuLi5zZW50KCksIC4uLnByb2plY3QsIC4uLmdsb2JhbF0pKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVJld2luZChvcHQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXdpbmRUYXJnZXQoKVxuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlZCgpXG4gICAgY29uc3QgeyBlZGl0cyB9ID0gcmV3aW5kU3RhdHMoc3RhdGUsIHRhcmdldC5pbmRleClcbiAgICBjb25zdCBlZGl0c0xhYmVsID0gYCR7ZWRpdHMubGVuZ3RofSAke2VkaXRzLmxlbmd0aCA9PT0gMSA/ICdlZGl0JyA6ICdlZGl0cyd9YFxuICAgIGxldCByZXZlcnRlZCA9IFtdXG4gICAgbGV0IHNraXBwZWQgPSBbXVxuXG4gICAgaWYgKG9wdC5rZXkgPT09ICdib3RoJyB8fCBvcHQua2V5ID09PSAnY29kZScpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJldmVydEVkaXRzKGVkaXRzKVxuICAgICAgcmV2ZXJ0ZWQgPSByZXN1bHQucmV2ZXJ0ZWRcbiAgICAgIHNraXBwZWQgPSByZXN1bHQuc2tpcHBlZFxuICAgIH1cblxuICAgIGxldCBzdW1tYXJ5VGV4dCA9IG51bGxcbiAgICBpZiAob3B0LmtleSA9PT0gJ3N1bW1hcnknKSB7XG4gICAgICBjb25zdCB0YWlsID0gc3RhdGUudHJhbnNjcmlwdC5zbGljZSh0YXJnZXQuaW5kZXgpXG4gICAgICBjb25zdCB0ZXh0ID0gdGFpbC5maWx0ZXIoKG0pID0+IG0udGV4dCkubWFwKChtKSA9PiBgJHttLmtpbmR9OiAke20udGV4dH1gKS5qb2luKCdcXG4nKVxuICAgICAgZmxhc2goJ3N1bW1hcml6aW5nLi4uJylcbiAgICAgIGxldCBhdXRoID0gbnVsbFxuICAgICAgaWYgKG1vZGVsKCkucHJvdmlkZXIgPT09ICdjb2RleCcpIGF1dGggPSBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBzdW1tYXJ5VGV4dCA9IGF3YWl0IHN1bW1hcml6ZVRleHQoeyB0ZXh0LCBtb2RlbE5hbWU6IG1vZGVsKCkubmFtZSwgYXV0aCB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGZsYXNoKCdzdW1tYXJ5IG1vZGVsIGNhbGwgZmFpbGVkIFx1MDBCNyBrZXB0IGEgY3J1ZGUgZGlnZXN0IG9mIHRoZSByZXdvdW5kIHR1cm5zJylcbiAgICAgICAgcmV0dXJuIHRhaWwuZmlsdGVyKChtKSA9PiBtLnRleHQpLnNsaWNlKDAsIDMpLm1hcCgobSkgPT4gbS50ZXh0LnNwbGl0KC9cXHMrLykuc2xpY2UoMCwgNikuam9pbignICcpKS5qb2luKCcgXHUwMEI3ICcpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50ID0gbWFrZUV2ZW50KCdyZXdpbmQnLCB7IHRhcmdldDogdGFyZ2V0LmV2ZW50SWQsIG1vZGU6IG9wdC5rZXksIHN1bW1hcnlUZXh0LCByZXZlcnRlZCwgc2tpcHBlZCB9KVxuICAgIHBlcnNpc3QoZXZlbnQpXG4gICAgcmVmcy5yZXdpbmRVbmRvID0geyByZXdpbmRJZDogZXZlbnQuaWQsIGVkaXRzOiBlZGl0cy5maWx0ZXIoKGUpID0+IHJldmVydGVkLmluY2x1ZGVzKGUuY2FsbElkKSkgfVxuICAgIHJlRGVyaXZlKClcbiAgICBpZiAob3B0LmtleSAhPT0gJ2NvZGUnKSBzZXRJbnB1dChyZWNhbGxUZXh0KHRhcmdldCkpXG5cbiAgICBjb25zdCBza2lwcGVkTm90ZSA9IHNraXBwZWQubGVuZ3RoID8gYCBcdTAwQjcgc2tpcHBlZCAke3NraXBwZWQubGVuZ3RofSBkcmlmdGVkYCA6ICcnXG4gICAgaWYgKG9wdC5rZXkgPT09ICdjb2RlJykgZmxhc2goYHJldmVydGVkICR7ZWRpdHNMYWJlbH0sIGNvbnZlcnNhdGlvbiBrZXB0JHtza2lwcGVkTm90ZX0gXHUwMEI3IGN0cmwreiB0byB1bmRvYClcbiAgICBlbHNlIGlmIChvcHQua2V5ID09PSAnc3VtbWFyeScpIGZsYXNoKGByZXdvdW5kIGFuZCBzdW1tYXJpemVkJHtza2lwcGVkTm90ZX0gXHUwMEI3IGN0cmwreiB0byB1bmRvYClcbiAgICBlbHNlIGlmIChvcHQua2V5ID09PSAnYm90aCcpIGZsYXNoKGByZXdvdW5kLCAke2VkaXRzTGFiZWx9IHJldmVydGVkJHtza2lwcGVkTm90ZX0gXHUwMEI3IGN0cmwreiB0byB1bmRvYClcbiAgICBlbHNlIGZsYXNoKGByZXdvdW5kLCBmaWxlIGNoYW5nZXMga2VwdCBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIHNldFJld2luZFN0ZXAobnVsbClcbiAgICBzZXRSZXdpbmRUYXJnZXQobnVsbClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHVuZG9SZXdpbmQoKSB7XG4gICAgY29uc3QgdW5kbyA9IHJlZnMucmV3aW5kVW5kb1xuICAgIGlmICghdW5kbykgcmV0dXJuXG4gICAgY29uc3QgeyBza2lwcGVkIH0gPSBhd2FpdCByZWFwcGx5RWRpdHModW5kby5lZGl0cylcbiAgICBwZXJzaXN0KG1ha2VFdmVudCgncmV3aW5kX3VuZG8nLCB7IHJld2luZElkOiB1bmRvLnJld2luZElkIH0pKVxuICAgIHJlZnMucmV3aW5kVW5kbyA9IG51bGxcbiAgICByZURlcml2ZSgpXG4gICAgZmxhc2goc2tpcHBlZC5sZW5ndGggPyBgcmV3aW5kIHVuZG9uZSBcdTAwQjcgJHtza2lwcGVkLmxlbmd0aH0gZmlsZShzKSBkcmlmdGVkYCA6ICdyZXdpbmQgdW5kb25lJylcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlY2FsbFRleHQoZW50cnkpIHtcbiAgICByZXR1cm4gaW5wdXRUZXh0RnJvbUNvbnRlbnQoZW50cnkuY29udGVudCA/PyBlbnRyeS50ZXh0LCB7XG4gICAgICBhdHRhY2htZW50czogcmVmcy5hdHRhY2htZW50cyxcbiAgICAgIG5leHRJZDogKCkgPT4gKytyZWZzLmltYWdlQ291bnQsXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNvbmZpcm1EZWxldGVDdXJyZW50U2Vzc2lvbigpIHtcbiAgICBjb25zdCBzZXNzaW9uID0gcmVmcy5zZXNzaW9uXG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICBzZXRTaG93RGVsZXRlQ29uZmlybShmYWxzZSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgc2Vzc2lvbi5mbHVzaCgpXG4gICAgICBhd2FpdCBkZWxldGVTZXNzaW9uKHNlc3Npb24uZmlsZSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNldFNob3dEZWxldGVDb25maXJtKGZhbHNlKVxuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmVmcy5zZXNzaW9uID0gbnVsbFxuICAgIHJlZnMuYWxsRXZlbnRzID0gW11cbiAgICByZWZzLnBlcnNpc3RlZCA9IDBcbiAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgc2V0UXVldWVkKFtdKVxuICAgIHNldFNlbnQoW10pXG4gICAgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgc2V0RWZmb3J0KGRlZmF1bHRFZmZvcnQoKSlcbiAgICBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgIHNldFNob3dEZWxldGVDb25maXJtKGZhbHNlKVxuICAgIHJlRGVyaXZlKClcbiAgICBmbGFzaCgnc2Vzc2lvbiBkZWxldGVkJylcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgYW55UGFuZWwgPSAoKSA9PlxuICAgIHNob3dNb2RlbFBhbmVsKCkgfHwgc2hvd1Jlc2VhcmNoTW9kZWxQYW5lbCgpIHx8IHNob3dFZmZvcnRQYW5lbCgpIHx8IHNob3dUaGVtZVBhbmVsKCkgfHwgc2hvd0NvbmZpZ1BhbmVsKCkgfHwgc2hvd0RlbGV0ZUNvbmZpcm0oKSB8fCBzaG93TWVtb3J5UGFuZWwoKSB8fCBzaG93SGlzdG9yeVBhbmVsKCkgfHwgc2hvd1Jlc3VtZVBhbmVsKCkgfHwgc2hvd01jcFBhbmVsKCkgfHxcbiAgICBzaG93UHJvamVjdFBhbmVsKCkgfHwgc2hvd1dha2V1cHNQYW5lbCgpIHx8IHNob3dDb25uZWN0UGFuZWwoKSB8fFxuICAgIGluZm9QYW5lbCgpICE9PSBudWxsIHx8IHJld2luZFN0ZXAoKSAhPT0gbnVsbFxuXG4gIC8vIGV2ZXJ5IGZvY3VzLXRha2luZyBwYW5lbCBkaW1zIHRoZSBjb252ZXJzYXRpb24gYmVoaW5kIGl0OyB0aGUgdGhlbWVcbiAgLy8gcGlja2VyIGlzIHRoZSBvbmUgZXhlbXB0aW9uLCBzaW5jZSBpdHMgam9iIGlzIHByZXZpZXdpbmcgcGFsZXR0ZXMgb25cbiAgLy8gdGhlIHVuZGltbWVkIHVpXG4gIGNvbnN0IGRpbW1pbmdQYW5lbCA9ICgpID0+IGFueVBhbmVsKCkgJiYgIXNob3dUaGVtZVBhbmVsKClcblxuICBmdW5jdGlvbiBjYW5jZWxBZ2VudChhZ2VudCkge1xuICAgIGFnZW50cy5jYW5jZWwoYWdlbnQuaWQpXG4gIH1cblxuICBmdW5jdGlvbiBkaXNtaXNzQWdlbnQoYWdlbnQpIHtcbiAgICBpZiAoIWFnZW50cy5kaXNtaXNzKGFnZW50LmlkKSkgcmV0dXJuXG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ2FnZW50X2Rpc21pc3MnLCB7IGFnZW50SWQ6IGFnZW50LmlkIH0pKVxuICAgIGlmICh2aWV3ZWRBZ2VudElkKCkgPT09IGFnZW50LmlkKSBzZXRWaWV3ZWRBZ2VudElkKG51bGwpXG4gIH1cblxuICBmdW5jdGlvbiBkaXNtaXNzU2hlbGwoc2hlbGwpIHtcbiAgICBib290LnNoZWxscy5kaXNtaXNzKHNoZWxsLmlkKVxuICAgIGlmICh2aWV3ZWRTaGVsbElkKCkgPT09IHNoZWxsLmlkKSBzZXRWaWV3ZWRTaGVsbElkKG51bGwpXG4gIH1cblxuICBmdW5jdGlvbiBraWxsU2hlbGwoc2hlbGwpIHtcbiAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0gYWxyZWFkeSBleGl0ZWRgKVxuICAgIGNvbnN0IGFybWVkID0gcmVmcy5zaGVsbEtpbGxBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSBzaGVsbC5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLnNoZWxsS2lsbEFybSA9IHsgaWQ6IHNoZWxsLmlkLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBraWxsIFwiJHtzaGVsbC5kZXNjcmlwdGlvbiB8fCBgc2hlbGwgJHtzaGVsbC5pZH1gfVwiYClcbiAgICB9XG4gICAgcmVmcy5zaGVsbEtpbGxBcm0gPSBudWxsXG4gICAgYm9vdC5zaGVsbHMua2lsbChzaGVsbC5pZCwgJ3VzZXInKVxuICB9XG5cbiAgY29uc3QgZWZmb3J0QXBwbGllcyA9ICgpID0+ICEhbW9kZWwoKS5lZmZvcnRcblxuICBmdW5jdGlvbiBzZXRTZXNzaW9uRWZmb3J0KG5leHQsIHsgYXNEZWZhdWx0ID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ2VmZm9ydCcsIHsgdG86IG5leHQgfSkpXG4gICAgc2V0RWZmb3J0KG5leHQpXG4gICAgaWYgKGFzRGVmYXVsdCkge1xuICAgICAgc2V0RGVmYXVsdEVmZm9ydChuZXh0KVxuICAgICAgd3JpdGVDb25maWcoeyBkZWZhdWx0RWZmb3J0OiBuZXh0IH0pLmNhdGNoKCgpID0+IHt9KVxuICAgIH1cbiAgICBmbGFzaChgZWZmb3J0OiAke25leHQgPz8gJ2RlZmF1bHQnfSR7YXNEZWZhdWx0ID8gJyBcdTAwQjcgc2F2ZWQgYXMgZGVmYXVsdCcgOiAnJ31gKVxuICB9XG5cbiAgY29uc3QgZm0gPSB1c2VGb2N1cyh7IGluaXRpYWw6ICdpbnB1dCcgfSlcbiAgZm0uaXRlbSgnZmVlZCcpXG4gIGFnZW50c1ZlcnNpb24oKVxuICBjb25zdCBhZ2VudFJvd3MgPSBhZ2VudHMubGlzdCgpXG4gIHNoZWxsc1ZlcnNpb24oKVxuICBjb25zdCBzaGVsbFJvd3MgPSBib290LnNoZWxscy5saXN0KCkuc29ydCgoYSwgYikgPT4gTnVtYmVyKGIuaWQpIC0gTnVtYmVyKGEuaWQpKVxuICBpZiAocXVlc3Rpb25SZXF1ZXN0KCkpIHtcbiAgICBmbS5pdGVtKCdxdWVzdGlvbicpXG4gICAgaWYgKCFmbS5pcygncXVlc3Rpb24nKSkgZm0uZm9jdXMoJ3F1ZXN0aW9uJylcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXZpZXdlZEFnZW50SWQoKSAmJiAhdmlld2VkU2hlbGxJZCgpKSBmbS5pdGVtKCdpbnB1dCcpXG4gICAgaWYgKHNoZWxsUm93cy5sZW5ndGggPiAwKSBmbS5ncm91cCgnc2hlbGwtc3RyaXAnLCB7IGl0ZW1zOiBbJ3NoZWxsLW1haW4nLCAuLi5zaGVsbFJvd3MubWFwKChzKSA9PiBgc2hlbGwtJHtzLmlkfWApXSwgbmF2aWdhdGU6ICdib3RoJywgd3JhcDogdHJ1ZSB9KVxuICAgIGlmIChhZ2VudFJvd3MubGVuZ3RoID4gMCkgZm0uZ3JvdXAoJ2FnZW50LXN0cmlwJywgeyBpdGVtczogWydhZ2VudC1tYWluJywgLi4uYWdlbnRSb3dzLm1hcCgoYSkgPT4gYGFnZW50LSR7YS5pZH1gKV0sIG5hdmlnYXRlOiAnYm90aCcsIHdyYXA6IHRydWUgfSlcbiAgICBpZiAocmVmcy5mb2N1c0NvbXBvc2VyQWZ0ZXJRdWVzdGlvbiAmJiAhdmlld2VkQWdlbnRJZCgpICYmICF2aWV3ZWRTaGVsbElkKCkpIHtcbiAgICAgIHJlZnMuZm9jdXNDb21wb3NlckFmdGVyUXVlc3Rpb24gPSBmYWxzZVxuICAgICAgZm0uZm9jdXMoJ2lucHV0JylcbiAgICB9XG4gIH1cbiAgdXNlRm9jdXNUcmFwKGFueVBhbmVsKCkgfHwgdmlldygpID09PSAnaGVscCcpXG4gIHVzZVNlbGVjdGlvbih7XG4gICAgb25Db3B5OiAodGV4dCkgPT4gZmxhc2goYGNvcGllZCAke3RleHQubGVuZ3RofSAke3RleHQubGVuZ3RoID09PSAxID8gJ2NoYXJhY3RlcicgOiAnY2hhcmFjdGVycyd9YCksXG4gIH0pXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZtLmlzKCdzaGVsbC1zdHJpcCcpICYmIGV2ZW50LmtleSA9PT0gJ3JldHVybicpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGZtLmN1cnJlbnQoKVxuICAgICAgc2V0Vmlld2VkU2hlbGxJZCh0YXJnZXQgPT09ICdzaGVsbC1tYWluJyA/IG51bGwgOiB0YXJnZXQuc2xpY2UoJ3NoZWxsLScubGVuZ3RoKSlcbiAgICAgIHNldEZvbGxvdyh0cnVlKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZm0uaXMoJ3NoZWxsLXN0cmlwJykgJiYgZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4Jykge1xuICAgICAgY29uc3Qgc2hlbGwgPSBmbS5jdXJyZW50KCkgPT09ICdzaGVsbC1tYWluJyA/IG51bGwgOiBzaGVsbFJvd3MuZmluZCgocykgPT4gYHNoZWxsLSR7cy5pZH1gID09PSBmbS5jdXJyZW50KCkpXG4gICAgICBpZiAoc2hlbGwpIHtcbiAgICAgICAgaWYgKHNoZWxsLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSBraWxsU2hlbGwoc2hlbGwpXG4gICAgICAgIGVsc2UgZGlzbWlzc1NoZWxsKHNoZWxsKVxuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZm0uaXMoJ2FnZW50LXN0cmlwJykgJiYgZXZlbnQua2V5ID09PSAncmV0dXJuJykge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZm0uY3VycmVudCgpXG4gICAgICBzZXRWaWV3ZWRBZ2VudElkKHRhcmdldCA9PT0gJ2FnZW50LW1haW4nID8gbnVsbCA6IHRhcmdldC5zbGljZSgnYWdlbnQtJy5sZW5ndGgpKVxuICAgICAgc2V0Rm9sbG93KHRydWUpXG4gICAgICBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZm0uaXMoJ2FnZW50LXN0cmlwJykgJiYgZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4Jykge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZm0uY3VycmVudCgpXG4gICAgICBjb25zdCBhZ2VudCA9IHRhcmdldCA9PT0gJ2FnZW50LW1haW4nID8gbnVsbCA6IGFnZW50cy5nZXQodGFyZ2V0LnNsaWNlKCdhZ2VudC0nLmxlbmd0aCkpXG4gICAgICBpZiAoYWdlbnQpIHtcbiAgICAgICAgaWYgKFsncXVldWVkJywgJ3J1bm5pbmcnXS5pbmNsdWRlcyhhZ2VudC5zdGF0dXMpKSBjYW5jZWxBZ2VudChhZ2VudClcbiAgICAgICAgZWxzZSBkaXNtaXNzQWdlbnQoYWdlbnQpXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnICYmIGJ1c3koKSAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgaW50ZXJydXB0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnYycpIHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICAgIGlmIChub3cgLSByZWZzLnF1aXRBdCA8IDE1MDApIHtcbiAgICAgICAgYm9vdC5zaGVsbHMua2lsbEFsbCgpXG4gICAgICAgIG1jcC50ZXJtaW5hdGVBbGwoKVxuICAgICAgICBwcm9jZXNzLmV4aXQoMClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZnMucXVpdEF0ID0gbm93XG4gICAgICAgIGNvbnN0IHJ1bm5pbmcgPSBib290LnNoZWxscy5ydW5uaW5nKClcbiAgICAgICAgZmxhc2gocnVubmluZyA/IGAke3J1bm5pbmd9ICR7cnVubmluZyA9PT0gMSA/ICdzaGVsbCcgOiAnc2hlbGxzJ30gcnVubmluZyBcdTAwQjcgY3RybCtjIGFnYWluIHRvIGV4aXQgYW5kIGtpbGwgJHtydW5uaW5nID09PSAxID8gJ2l0JyA6ICd0aGVtJ31gIDogJ2N0cmwrYyBhZ2FpbiB0byBleGl0JylcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnbycpIHtcbiAgICAgIHNldFZlcmJvc2UoKHYpID0+ICF2KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdyJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgaWYgKGJ1c3koKSkgZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgICBlbHNlIGlmICh1c2VyRW50cmllcyhkZXJpdmVkKCkpLmxlbmd0aCA9PT0gMCkgZmxhc2goJ25vdGhpbmcgdG8gcmV3aW5kIHlldCcpXG4gICAgICBlbHNlIHNldFJld2luZFN0ZXAoJ3BpY2snKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgc2V0U2hvd1Jlc3VtZVBhbmVsKHRydWUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAndCcgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIHNldFNob3dNb2RlbFBhbmVsKHRydWUpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3AnICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBvcGVuUHJvamVjdFBhbmVsKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAnYicgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIGlmICghZWZmb3J0QXBwbGllcygpKSBmbGFzaChgJHttb2RlbCgpLm5hbWV9IGRvZXMgbm90IHN1cHBvcnQgZWZmb3J0IGNvbnRyb2xgKVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gW251bGwsICdsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J11cbiAgICAgICAgY29uc3QgbmV4dCA9IG9yZGVyWyhvcmRlci5pbmRleE9mKGVmZm9ydCgpID8/IG51bGwpICsgMSkgJSBvcmRlci5sZW5ndGhdXG4gICAgICAgIHNldFNlc3Npb25FZmZvcnQobmV4dClcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgc2hvd0hpc3RvcnlQYW5lbCgpKSB7XG4gICAgICBzd2l0Y2hIaXN0U2NvcGUoKGhpc3RTY29wZSgpICsgMSkgJSBISVNUT1JZX1NDT1BFUy5sZW5ndGgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHNob3dNZW1vcnlQYW5lbCgpKSB7XG4gICAgICBzZXRNZW1TY29wZSgocykgPT4gKHMgKyAxKSAlIE1FTU9SWV9TQ09QRVMubGVuZ3RoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiBzaG93UmVzdW1lUGFuZWwoKSkge1xuICAgICAgY29uc3QgbmV4dCA9IChyZXN1bWVTY29wZSgpICsgMSkgJSBSRVNVTUVfU0NPUEVTLmxlbmd0aFxuICAgICAgc2V0UmVzdW1lU2NvcGUobmV4dClcbiAgICAgIHJlZnJlc2hTZXNzaW9ucyhuZXh0KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd6JyAmJiByZWZzLnJld2luZFVuZG8gJiYgIWJ1c3koKSAmJiB2aWV3KCkgPT09ICdjaGF0Jykge1xuICAgICAgdW5kb1Jld2luZCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBmbXRFbGFwc2VkID0gKHMpID0+IChzIDwgNjAgPyBgJHtzfXNgIDogYCR7TWF0aC5mbG9vcihzIC8gNjApfW0gJHtzICUgNjB9c2ApXG4gIGNvbnN0IGVsYXBzZWQgPSBmbXRFbGFwc2VkKGJ1c3koKSA/IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKERhdGUubm93KCkgLSBzdGFydGVkQXQoKSkgLyAxMDAwKSkgOiAwKVxuXG4gIGNvbnN0IHNsYXNoUXVlcnkgPSBpbnB1dCgpLnN0YXJ0c1dpdGgoJy8nKSA/IGlucHV0KCkuc2xpY2UoMSkgOiBudWxsXG4gIGNvbnN0IHNob3dDb21tYW5kcyA9IHNsYXNoUXVlcnkgIT09IG51bGwgJiYgIXNsYXNoUXVlcnkuaW5jbHVkZXMoJyAnKSAmJiAhYW55UGFuZWwoKVxuICBjb25zdCBtYXRjaGVkQ29tbWFuZHMgPSAhc2hvd0NvbW1hbmRzXG4gICAgPyBbXVxuICAgIDogY21kQ3ljbGUoKVxuICAgICAgPyBjbWRDeWNsZSgpLm1hdGNoZXNcbiAgICAgIDogYWxsQ29tbWFuZHMuZmlsdGVyKChjKSA9PiBjLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNsYXNoUXVlcnkudG9Mb3dlckNhc2UoKSkpXG5cbiAgY29uc3QgYXRNYXRjaCA9IGlucHV0KCkubWF0Y2goLyhefFtcXHMoXSlAKFteXFxzQF0qKSQvKVxuICBjb25zdCBzaG93RmlsZXMgPSBhdE1hdGNoICE9PSBudWxsICYmICFzaG93Q29tbWFuZHMgJiYgIWZpbGVzRGlzbWlzc2VkKCkgJiYgIWFueVBhbmVsKClcbiAgaWYgKHNob3dGaWxlcykge1xuICAgIGxpc3RGaWxlcyhjd2QpLnRoZW4oKGZpbGVzKSA9PiB7XG4gICAgICBpZiAoZmlsZXMgIT09IGZpbGVMaXN0KCkpIHNldEZpbGVMaXN0KGZpbGVzKVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbWF0Y2hlZEZpbGVzID0gc2hvd0ZpbGVzXG4gICAgPyBmaWxlTGlzdCgpXG4gICAgICAgIC5tYXAoKGYpID0+IFtmdXp6eVNjb3JlKGF0TWF0Y2hbMl0sIGYpLCBmXSlcbiAgICAgICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICAgICAgICAubWFwKChbLCBmXSkgPT4gZilcbiAgICA6IFtdXG5cbiAgZnVuY3Rpb24gcGlja0ZpbGUoZikge1xuICAgIGNvbnN0IHYgPSBpbnB1dCgpXG4gICAgY29uc3QgYXQgPSB2Lmxhc3RJbmRleE9mKCdAJylcbiAgICBjb25zdCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVGb3IoZilcbiAgICBjb25zdCBmdWxsID0gam9pbihib290LmN3ZCwgZilcbiAgICBpZiAobWVkaWFUeXBlICYmIGV4aXN0c1N5bmMoZnVsbCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHsrK3JlZnMuaW1hZ2VDb3VudH1dYFxuICAgICAgcmVmcy5hdHRhY2htZW50cy5zZXQocGxhY2Vob2xkZXIsIHsgcGF0aDogZnVsbCwgbWVkaWFUeXBlIH0pXG4gICAgICBzZXRJbnB1dCh2LnNsaWNlKDAsIGF0KSArIHBsYWNlaG9sZGVyICsgJyAnKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJbnB1dCh2LnNsaWNlKDAsIGF0ICsgMSkgKyBmICsgJyAnKVxuICAgIH1cbiAgICBzZXRGaWxlSW5kZXgoMClcbiAgfVxuXG4gIGNvbnN0IGNvbXBDdHggPSBjb21wbGV0aW5nKCkgPyBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlOiBpbnB1dCgpLCByZXNvbHZlOiBjb21wbGV0aW9uU291cmNlIH0pIDogbnVsbFxuICBjb25zdCBzaG93Q29tcGxldGlvbiA9ICEhY29tcEN0eCAmJiBjb21wQ3R4Lm1hdGNoZXMubGVuZ3RoID4gMCAmJiAhc2hvd0NvbW1hbmRzICYmICFzaG93RmlsZXMgJiYgIWFueVBhbmVsKClcblxuICBjb25zdCByZXdpbmRFbnRyaWVzID0gKCkgPT4gdXNlckVudHJpZXMoZGVyaXZlZCgpKVxuICBjb25zdCByZXdpbmRPcHRpb25zID0gKCgpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSByZXdpbmRUYXJnZXQoKVxuICAgIGlmICghdGFyZ2V0KSByZXR1cm4gW11cbiAgICBjb25zdCB7IG1zZ3MsIGVkaXRzIH0gPSByZXdpbmRTdGF0cyhkZXJpdmVkKCksIHRhcmdldC5pbmRleClcbiAgICBjb25zdCBlID0gZWRpdHMubGVuZ3RoXG4gICAgY29uc3QgZWRpdHNMYWJlbCA9IGAke2V9ICR7ZSA9PT0gMSA/ICdlZGl0JyA6ICdlZGl0cyd9YFxuICAgIGNvbnN0IG9wdHMgPSBbXVxuICAgIGlmIChlID4gMCkgb3B0cy5wdXNoKHsga2V5OiAnYm90aCcsIGxhYmVsOiAncmVzdG9yZSBjb2RlIGFuZCBjb252ZXJzYXRpb24nLCBkZXNjOiBgY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgJHtlZGl0c0xhYmVsfSByZXZlcnRlZGAgfSlcbiAgICBvcHRzLnB1c2goe1xuICAgICAga2V5OiAnY2hhdCcsXG4gICAgICBsYWJlbDogZSA+IDAgPyAncmVzdG9yZSBjb252ZXJzYXRpb24gb25seScgOiAncmVzdG9yZSBjb252ZXJzYXRpb24nLFxuICAgICAgZGVzYzogZSA+IDAgPyAnY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgZmlsZSBjaGFuZ2VzIGtlcHQnIDogYGNoYXQgcmV0dXJucyB0byB0aGlzIG1lc3NhZ2UgXHUwMEI3IGRyb3BzICR7bXNnc30gZW50cmllc2AsXG4gICAgfSlcbiAgICBpZiAoZSA+IDApIG9wdHMucHVzaCh7IGtleTogJ2NvZGUnLCBsYWJlbDogJ3Jlc3RvcmUgY29kZSBvbmx5JywgZGVzYzogYGNvbnZlcnNhdGlvbiBrZXB0IFx1MDBCNyAke2VkaXRzTGFiZWx9IHJldmVydGVkYCB9KVxuICAgIG9wdHMucHVzaCh7IGtleTogJ3N1bW1hcnknLCBsYWJlbDogJ3Jld2luZCBhbmQga2VlcCBhIHN1bW1hcnknLCBkZXNjOiAnZHJvcHBlZCBlbnRyaWVzIGNvbGxhcHNlIGludG8gYSBvbmUtbGluZSBub3RlJyB9KVxuICAgIHJldHVybiBvcHRzXG4gIH0pKClcblxuICBjb25zdCB7IHVzYWdlQWN0aXZlOiB1c2FnZSB9ID0gZGVyaXZlZCgpXG4gIGNvbnN0IGNvbnRleHRQZXJjZW50ID0gbW9kZWwoKS5jb250ZXh0ID4gMCAmJiBkZXJpdmVkKCkubGFzdFByb21wdFRva2VucyA+IDAgJiYgZGVyaXZlZCgpLmxhc3RQcm9tcHRNb2RlbCA9PT0gbW9kZWwoKS5uYW1lXG4gICAgPyBNYXRoLm1pbigxMDAsIE1hdGgucm91bmQoKGRlcml2ZWQoKS5sYXN0UHJvbXB0VG9rZW5zIC8gbW9kZWwoKS5jb250ZXh0KSAqIDEwMCkpXG4gICAgOiAwXG4gIGNvbnN0IHZpc2libGVTaGVsbHMgPSBzaGVsbFJvd3NcbiAgY29uc3Qgdmlld2VkU2hlbGwgPSB2aWV3ZWRTaGVsbElkKCkgPyB2aXNpYmxlU2hlbGxzLmZpbmQoKHMpID0+IHMuaWQgPT09IHZpZXdlZFNoZWxsSWQoKSkgOiBudWxsXG4gIGNvbnN0IHNoZWxsU3RyaXBGb2N1cyA9IGZtLmlzKCdzaGVsbC1zdHJpcCcpID8gZm0uY3VycmVudCgpIDogbnVsbFxuICBjb25zdCBmb2N1c2VkU2hlbGxJZCA9IHNoZWxsU3RyaXBGb2N1cyAmJiBzaGVsbFN0cmlwRm9jdXMgIT09ICdzaGVsbC1tYWluJyA/IHNoZWxsU3RyaXBGb2N1cy5zbGljZSgnc2hlbGwtJy5sZW5ndGgpIDogbnVsbFxuICBjb25zdCBmb2N1c2VkU2hlbGwgPSBmb2N1c2VkU2hlbGxJZCA/IHZpc2libGVTaGVsbHMuZmluZCgocykgPT4gcy5pZCA9PT0gZm9jdXNlZFNoZWxsSWQpIDogbnVsbFxuICBjb25zdCBoaW50ZWRTaGVsbCA9IGZvY3VzZWRTaGVsbCB8fCB2aWV3ZWRTaGVsbFxuICBjb25zdCBzaGVsbEFjdGlvbkhpbnQgPSBoaW50ZWRTaGVsbCA/IGBjdHJsK3ggJHtoaW50ZWRTaGVsbC5zdGF0dXMgPT09ICdydW5uaW5nJyA/ICdraWxsJyA6ICdkaXNtaXNzJ31gIDogJydcbiAgY29uc3Qgc2hlbGxXaW5kb3dUYXJnZXQgPSBzaGVsbFN0cmlwRm9jdXMgPT09ICdzaGVsbC1tYWluJyA/IDAgOiB2aXNpYmxlU2hlbGxzLmZpbmRJbmRleCgocykgPT4gcy5pZCA9PT0gKGZvY3VzZWRTaGVsbElkIHx8IHZpZXdlZFNoZWxsSWQoKSkpXG4gIGNvbnN0IHNoZWxsV2luZG93U3RhcnQgPSBzdHJpcFdpbmRvd1N0YXJ0KHNoZWxsV2luZG93T2Zmc2V0KCksIHNoZWxsV2luZG93VGFyZ2V0LCB2aXNpYmxlU2hlbGxzLmxlbmd0aCwgU0hFTExfU1RSSVBfTUFYKVxuICBpZiAoc2hlbGxXaW5kb3dTdGFydCAhPT0gc2hlbGxXaW5kb3dPZmZzZXQoKSkgc2V0U2hlbGxXaW5kb3dPZmZzZXQoc2hlbGxXaW5kb3dTdGFydClcbiAgY29uc3Qgc2hlbGxXaW5kb3cgPSB2aXNpYmxlU2hlbGxzLnNsaWNlKHNoZWxsV2luZG93U3RhcnQsIHNoZWxsV2luZG93U3RhcnQgKyBTSEVMTF9TVFJJUF9NQVgpXG4gIGFnZW50c1ZlcnNpb24oKVxuICBjb25zdCB2aXNpYmxlQWdlbnRzID0gYWdlbnRSb3dzXG4gIGNvbnN0IHZpZXdlZEFnZW50ID0gdmlld2VkQWdlbnRJZCgpID8gYWdlbnRzLmdldCh2aWV3ZWRBZ2VudElkKCkpIDogbnVsbFxuICBjb25zdCBhZ2VudFN0cmlwRm9jdXMgPSBmbS5pcygnYWdlbnQtc3RyaXAnKSA/IGZtLmN1cnJlbnQoKSA6IG51bGxcbiAgY29uc3QgZm9jdXNlZEFnZW50SWQgPSBhZ2VudFN0cmlwRm9jdXMgJiYgYWdlbnRTdHJpcEZvY3VzICE9PSAnYWdlbnQtbWFpbicgPyBhZ2VudFN0cmlwRm9jdXMuc2xpY2UoJ2FnZW50LScubGVuZ3RoKSA6IG51bGxcbiAgY29uc3QgZm9jdXNlZEFnZW50ID0gZm9jdXNlZEFnZW50SWQgPyBhZ2VudHMuZ2V0KGZvY3VzZWRBZ2VudElkKSA6IG51bGxcbiAgY29uc3QgaGludGVkQWdlbnQgPSBmb2N1c2VkQWdlbnQgfHwgdmlld2VkQWdlbnRcbiAgY29uc3QgYWdlbnRBY3Rpb25IaW50ID0gaGludGVkQWdlbnRcbiAgICA/IGBjdHJsK3ggJHtbJ3F1ZXVlZCcsICdydW5uaW5nJ10uaW5jbHVkZXMoaGludGVkQWdlbnQuc3RhdHVzKSA/ICdjYW5jZWwnIDogJ2Rpc21pc3MnfWBcbiAgICA6ICcnXG4gIGNvbnN0IGFnZW50V2luZG93VGFyZ2V0ID0gYWdlbnRTdHJpcEZvY3VzID09PSAnYWdlbnQtbWFpbidcbiAgICA/IDBcbiAgICA6IHZpc2libGVBZ2VudHMuZmluZEluZGV4KChhKSA9PiBhLmlkID09PSAoZm9jdXNlZEFnZW50SWQgfHwgdmlld2VkQWdlbnRJZCgpKSlcbiAgY29uc3QgYWdlbnRXaW5kb3dTdGFydCA9IHN0cmlwV2luZG93U3RhcnQoYWdlbnRXaW5kb3dPZmZzZXQoKSwgYWdlbnRXaW5kb3dUYXJnZXQsIHZpc2libGVBZ2VudHMubGVuZ3RoLCBBR0VOVF9TVFJJUF9NQVgpXG4gIGlmIChhZ2VudFdpbmRvd1N0YXJ0ICE9PSBhZ2VudFdpbmRvd09mZnNldCgpKSBzZXRBZ2VudFdpbmRvd09mZnNldChhZ2VudFdpbmRvd1N0YXJ0KVxuICBjb25zdCBhZ2VudFdpbmRvdyA9IHZpc2libGVBZ2VudHMuc2xpY2UoYWdlbnRXaW5kb3dTdGFydCwgYWdlbnRXaW5kb3dTdGFydCArIEFHRU5UX1NUUklQX01BWClcbiAgY29uc3QgcGVuZGluZ1dha2V1cHMgPSBib290Lndha2V1cHMucGVuZGluZygpXG4gIGdpdFZlcnNpb24oKVxuICBjb25zdCBnaXRJbmZvID0gZ2l0Rm9vdGVyKCkgPyBib290LmdpdC5zdGF0dXMoKSA6IG51bGxcblxuICBpZiAodmlldygpID09PSAnaGVscCcpIHtcbiAgICByZXR1cm4gPEhlbHAgY29tbWFuZHM9e0NPTU1BTkRTfSBvbkNsb3NlPXsoKSA9PiBzZXRWaWV3KCdjaGF0Jyl9IC8+XG4gIH1cblxuICBoaWdobGlnaHRWZXJzaW9uKClcblxuICBjb25zdCBtYWluVHJhbnNjcmlwdCA9IGRlcml2ZWQoKS50cmFuc2NyaXB0XG4gIGxldCBzaGVsbE91dHB1dCA9IG51bGxcbiAgaWYgKHZpZXdlZFNoZWxsKSB7XG4gICAgdHJ5IHsgc2hlbGxPdXRwdXQgPSBib290LnNoZWxscy5vdXRwdXQodmlld2VkU2hlbGwuaWQsIHsgdGFpbDogMjAwMCB9KSB9IGNhdGNoIHt9XG4gIH1cbiAgY29uc3Qgc2hlbGxUcmFuc2NyaXB0ID0gdmlld2VkU2hlbGwgPyBbXG4gICAgeyBraW5kOiAndXNlcicsIHRleHQ6IHZpZXdlZFNoZWxsLmNvbW1hbmQgfSxcbiAgICB7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBzaGVsbE91dHB1dD8ub3V0cHV0IHx8ICdubyBvdXRwdXQgeWV0JyB9LFxuICBdIDogbnVsbFxuICBjb25zdCB0cmFuc2NyaXB0ID0gc2hlbGxUcmFuc2NyaXB0IHx8ICh2aWV3ZWRBZ2VudCA/IGFnZW50VHJhbnNjcmlwdCh2aWV3ZWRBZ2VudCkgOiBtYWluVHJhbnNjcmlwdClcbiAgY29uc3QgaGlkZGVuQ291bnQgPSBNYXRoLm1heCgwLCB0cmFuc2NyaXB0Lmxlbmd0aCAtIGhpc3RXaW5kb3coKSlcbiAgY29uc3QgaXNvbGF0ZWRUcmFuc2NyaXB0ID0gdmlld2VkQWdlbnQgfHwgdmlld2VkU2hlbGxcbiAgY29uc3QgdmlzaWJsZUl0ZW1zID0gaXNvbGF0ZWRUcmFuc2NyaXB0ID8gdHJhbnNjcmlwdC5zbGljZShoaWRkZW5Db3VudCkgOiBbLi4udHJhbnNjcmlwdC5zbGljZShoaWRkZW5Db3VudCksIC4uLm92ZXJsYXkoKV1cbiAgY29uc3QgaXRlbXMgPSBjb21wYWN0VG9vbEhpc3RvcnkoKSA/IGNvbXBhY3RUcmFuc2NyaXB0UnVucyh2aXNpYmxlSXRlbXMsIHZpZXdlZEFnZW50ID8gdmlld2VkQWdlbnQuc3RhdHVzID09PSAncnVubmluZycgOiB2aWV3ZWRTaGVsbCA/IGZhbHNlIDogdHVyblBoYXNlKCkgPT09ICd0b29scycpIDogdmlzaWJsZUl0ZW1zXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJyB9fT5cbiAgICAgIHt0cmFuc2NyaXB0Lmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgZGltOiBkaW1taW5nUGFuZWwoKSB9fT5cbiAgICAgICAgICA8RW1wdHlTdGF0ZSB2ZXJzaW9uPXt2ZXJzaW9ufSBjbG91ZHM9e2Nsb3VkcygpfSAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICkgOiA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgPFNjcm9sbEJveFxuICAgICAgICAgIHN0eWxlPXt7IGZsZXhHcm93OiAxLCBkaW06IGRpbW1pbmdQYW5lbCgpIH19XG4gICAgICAgICAgZm9jdXNlZD17Zm0uaXMoJ2ZlZWQnKX1cbiAgICAgICAgICBzY3JvbGxPZmZzZXQ9e2ZvbGxvdygpID8gMWU5IDogb2Zmc2V0KCl9XG4gICAgICAgICAgb25TY3JvbGw9eyhuZXh0LCBtZXRhKSA9PiB7XG4gICAgICAgICAgc2V0Rm9sbG93KCEhbWV0YT8uYXRCb3R0b20pXG4gICAgICAgICAgLy8gYmFjayBhdCB0aGUgYm90dG9tOiBsb2FkZWQgaGlzdG9yeSBpcyBvZmYtc2NyZWVuLCBzbyByZS1oaWRpbmdcbiAgICAgICAgICAvLyBpdCBpcyBpbnZpc2libGUgYW5kIHJlc3RvcmVzIHRoZSBzbWFsbCByZW5kZXIgd2luZG93XG4gICAgICAgICAgaWYgKG1ldGE/LmF0Qm90dG9tICYmIGhpc3RXaW5kb3coKSA+IEhJU1RPUllfV0lORE9XKSBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgICAgICAgIGlmIChuZXh0ID09PSAwICYmIGhpZGRlbkNvdW50ID4gMCkge1xuICAgICAgICAgICAgLy8ga2VlcCB0aGUgdmlldyBhbmNob3JlZDogZXN0aW1hdGUgdGhlIHJvd3MgdGhlIG5ldyBiYXRjaCBhZGRzXG4gICAgICAgICAgICAvLyBhbmQgc2Nyb2xsIHBhc3QgdGhlbSBzbyB0aGUgY3VycmVudCB0b3AgaXRlbSBzdGF5cyBpbiBwbGFjZVxuICAgICAgICAgICAgY29uc3QgYWRkZWQgPSBNYXRoLm1pbihISVNUT1JZX1dJTkRPVywgaGlkZGVuQ291bnQpXG4gICAgICAgICAgICBjb25zdCBhdmdSb3dzID0gTWF0aC5tYXgoMiwgTWF0aC5yb3VuZCgobWV0YT8ubWF4T2Zmc2V0IHx8IDApIC8gTWF0aC5tYXgoMSwgaXRlbXMubGVuZ3RoKSkpXG4gICAgICAgICAgICBzZXRIaXN0V2luZG93KCh3KSA9PiB3ICsgSElTVE9SWV9XSU5ET1cpXG4gICAgICAgICAgICBzZXRPZmZzZXQoYWRkZWQgKiBhdmdSb3dzKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHNldE9mZnNldChuZXh0KVxuICAgICAgICB9fVxuICAgICAgICBzY3JvbGxiYXJcbiAgICAgID5cbiAgICAgICAge2hpZGRlbkNvdW50ID4gMCAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgaXRhbGljOiB0cnVlIH19PntgXHUyMzAzICR7aGlkZGVuQ291bnQudG9Mb2NhbGVTdHJpbmcoKX0gb2xkZXIgJHtoaWRkZW5Db3VudCA9PT0gMSA/ICdtZXNzYWdlJyA6ICdtZXNzYWdlcyd9IFx1MDBCNyBzY3JvbGwgdG8gdG9wIHRvIGxvYWRgfTwvdGV4dD5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgKX1cbiAgICAgICAge2l0ZW1zLm1hcCgoaXRlbSwgaSkgPT4gPE1lc3NhZ2Uga2V5PXtoaWRkZW5Db3VudCArIGl9IGl0ZW09e2l0ZW19IHZlcmJvc2U9e3ZlcmJvc2UoKX0gLz4pfVxuICAgICAgICAgIHshdmlld2VkQWdlbnQgJiYgc3RyZWFtaW5nKCkgIT09IG51bGwgJiYgc3RyZWFtaW5nKCkgIT09ICcnICYmIChcbiAgICAgICAgICAgIDxNZXNzYWdlIGtleT1cInN0cmVhbWluZ1wiIGl0ZW09e3sga2luZDogJ2Fzc2lzdGFudCcsIHRleHQ6IGAke3N0cmVhbWluZygpfVx1MjU4QmAgfX0gLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1Njcm9sbEJveD5cbiAgICAgICAge2ZtLmlzKCdmZWVkJykgJiYgIWFueVBhbmVsKCkgJiYgKFxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgcG9zaXRpb246ICdhYnNvbHV0ZScsIHRvcDogMCwgbGVmdDogMCwgcmlnaHQ6IDAsIGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogYWNjZW50KCksIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6ICdibGFjaycsIGJvbGQ6IHRydWUgfX0+eydjb252ZXJzYXRpb24nfTwvdGV4dD5cbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiAnYmxhY2snIH19Pnsnai9rIFx1MDBCNyBcdTIxOTEvXHUyMTkzIHNjcm9sbCAgIGcvRyBlbmRzICAgY3RybC11L2QgcGFnZSd9PC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+fVxuXG4gICAgICB7cXVldWVkKCkubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge3F1ZXVlZCgpLm1hcCgocSwgaSkgPT4gKFxuICAgICAgICAgICAgPGJveCBrZXk9e2l9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eydcdTIwM0EgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IE1VVEVEIH19PntxLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIHtpID09PSAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgZGltOiB0cnVlIH19PnsnICBwZW5kaW5nIFx1MDBCNyBcdTIxOTEgdG8gZWRpdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIHtxdWVzdGlvblJlcXVlc3QoKSAmJiAoXG4gICAgICAgIDxRdWVzdGlvbkZvcm1cbiAgICAgICAgICByZXF1ZXN0PXtxdWVzdGlvblJlcXVlc3QoKX1cbiAgICAgICAgICBmb2N1c2VkPXtmbS5pcygncXVlc3Rpb24nKSAmJiAhYW55UGFuZWwoKX1cbiAgICAgICAgICBvblN1Ym1pdD17KGFuc3dlcnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBxdWVzdGlvblJlcXVlc3QoKVxuICAgICAgICAgICAgc2V0UXVlc3Rpb25SZXF1ZXN0KG51bGwpXG4gICAgICAgICAgICByZWZzLmZvY3VzQ29tcG9zZXJBZnRlclF1ZXN0aW9uID0gdHJ1ZVxuICAgICAgICAgICAgcmVxdWVzdC5yZXNvbHZlKHsgYW5zd2VycyB9KVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DYW5jZWw9eygpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBxdWVzdGlvblJlcXVlc3QoKVxuICAgICAgICAgICAgc2V0UXVlc3Rpb25SZXF1ZXN0KG51bGwpXG4gICAgICAgICAgICByZWZzLmZvY3VzQ29tcG9zZXJBZnRlclF1ZXN0aW9uID0gdHJ1ZVxuICAgICAgICAgICAgcmVxdWVzdC5yZXNvbHZlKHsgY2FuY2VsbGVkOiB0cnVlIH0pXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHshdmlld2VkQWdlbnQgJiYgIXZpZXdlZFNoZWxsICYmIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBmbGV4RGlyZWN0aW9uOiAncm93JywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxLCBtYXJnaW5Ub3A6IHRyYW5zY3JpcHQubGVuZ3RoID09PSAwICYmIGNsb3VkcygpID8gMCA6IDEsIGRpbTogZGltbWluZ1BhbmVsKCkgfHwgISFxdWVzdGlvblJlcXVlc3QoKSB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZtLmlzKCdpbnB1dCcpICYmICFhbnlQYW5lbCgpICYmICFxdWVzdGlvblJlcXVlc3QoKSA/IGFjY2VudCgpIDogTVVURUQsIGJvbGQ6IHRydWUgfX0+eydcdTI3NkYnfTwvdGV4dD5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAge2Rlcml2ZWQoKS50aXRsZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBwb3NpdGlvbjogJ2Fic29sdXRlJywgdG9wOiAwLCByaWdodDogMCB9fT5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJnOiBmbS5pcygnaW5wdXQnKSAmJiAhYW55UGFuZWwoKSAmJiAhcXVlc3Rpb25SZXF1ZXN0KCkgPyBhY2NlbnQoKSA6IE1VVEVELCBjb2xvcjogJ2JsYWNrJywgYm9sZDogdHJ1ZSB9fT57YCAke2Rlcml2ZWQoKS50aXRsZX0gYH08L3RleHQ+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICAgIDxUZXh0QXJlYVxuICAgICAgICAgIGNvbG9yPXtGR31cbiAgICAgICAgICBsaW5lQ291bnRlclxuICAgICAgICAgIGZvY3VzZWQ9e2ZtLmlzKCdpbnB1dCcpICYmICFhbnlQYW5lbCgpICYmICFxdWVzdGlvblJlcXVlc3QoKX1cbiAgICAgICAgICB2YWx1ZT17aW5wdXQoKX1cbiAgICAgICAgICBvbkNoYW5nZT17KHYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZCA9IHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocyh2LCB7XG4gICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiByZWZzLmF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgICBuZXh0SWQ6ICgpID0+ICsrcmVmcy5pbWFnZUNvdW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHNldElucHV0KGNvbnZlcnRlZC50ZXh0KVxuICAgICAgICAgICAgc2V0Q21kSW5kZXgoMClcbiAgICAgICAgICAgIHNldENtZEN5Y2xlKG51bGwpXG4gICAgICAgICAgICBzZXRGaWxlSW5kZXgoMClcbiAgICAgICAgICAgIHNldEhpc3RJZHgoLTEpXG4gICAgICAgICAgICBzZXRGaWxlc0Rpc21pc3NlZChmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYnVzeSgpKSBpbnRlcnJ1cHQoKVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHNldENtZEN5Y2xlKG51bGwpXG4gICAgICAgICAgICAgIHNldENvbXBsZXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgIHNldEZpbGVzRGlzbWlzc2VkKHRydWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblN1Ym1pdD17c2VuZH1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd0YWInICYmICFlLmN0cmwgJiYgIWUubWV0YSAmJiBzaG93RmlsZXMgJiYgbWF0Y2hlZEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgcGlja0ZpbGUobWF0Y2hlZEZpbGVzW01hdGgubWluKGZpbGVJbmRleCgpLCBtYXRjaGVkRmlsZXMubGVuZ3RoIC0gMSldKVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndGFiJyAmJiAhZS5jdHJsICYmICFlLm1ldGEgJiYgc2hvd0NvbW1hbmRzICYmIG1hdGNoZWRDb21tYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN5Y2xlID0gY21kQ3ljbGUoKVxuICAgICAgICAgICAgICBpZiAoIWN5Y2xlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihjbWRJbmRleCgpLCBtYXRjaGVkQ29tbWFuZHMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICBzZXRDbWRDeWNsZSh7IG1hdGNoZXM6IG1hdGNoZWRDb21tYW5kcyB9KVxuICAgICAgICAgICAgICAgIHNldENtZEluZGV4KHN0YXJ0KVxuICAgICAgICAgICAgICAgIHNldElucHV0KCcvJyArIG1hdGNoZWRDb21tYW5kc1tzdGFydF0ubmFtZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gKGNtZEluZGV4KCkgKyAxKSAlIGN5Y2xlLm1hdGNoZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgc2V0Q21kSW5kZXgobmV4dClcbiAgICAgICAgICAgICAgICBzZXRJbnB1dCgnLycgKyBjeWNsZS5tYXRjaGVzW25leHRdLm5hbWUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3Bhc3RlJyAmJiBlLnRleHQpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGF0aHMgPSBleHRyYWN0SW1hZ2VQYXRocyhlLnRleHQpXG4gICAgICAgICAgICAgIGlmIChwYXRocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJzID0gcGF0aHMubWFwKChwYXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7KytyZWZzLmltYWdlQ291bnR9XWBcbiAgICAgICAgICAgICAgICAgIHJlZnMuYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGgsIG1lZGlhVHlwZTogbWVkaWFUeXBlRm9yKHBhdGgpIH0pXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGNvbnN0IGF0ID0gZS5jdXJzb3IgPz8gZS52YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgICAgICBzZXRJbnB1dChlLnZhbHVlLnNsaWNlKDAsIGF0KSArIHBsYWNlaG9sZGVycy5qb2luKCcgJykgKyBlLnZhbHVlLnNsaWNlKGF0KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnYmFja3NwYWNlJyAmJiBlLmN1cnNvciA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBlLnZhbHVlLnNsaWNlKDAsIGUuY3Vyc29yKS5tYXRjaCgvXFxbSW1hZ2UgI1xcZCtcXF0kLylcbiAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmVmcy5hdHRhY2htZW50cy5kZWxldGUobWF0Y2hbMF0pXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoZS52YWx1ZS5zbGljZSgwLCBlLmN1cnNvciAtIG1hdGNoWzBdLmxlbmd0aCkgKyBlLnZhbHVlLnNsaWNlKGUuY3Vyc29yKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd0YWInICYmICFlLmN0cmwgJiYgIWUubWV0YSkge1xuICAgICAgICAgICAgICBjb25zdCBjdHggPSBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlOiBlLnZhbHVlLCByZXNvbHZlOiBjb21wbGV0aW9uU291cmNlIH0pXG4gICAgICAgICAgICAgIGlmICghY3R4KSByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgaWYgKCFjb21wbGV0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICBzZXRDb21wbGV0aW5nKHRydWUpXG4gICAgICAgICAgICAgICAgc2V0Q29tcEluZGV4KDApXG4gICAgICAgICAgICAgICAgbGlzdEZpbGVzKGN3ZCkudGhlbigoZmlsZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChmaWxlcyAhPT0gZmlsZUxpc3QoKSkgc2V0RmlsZUxpc3QoZmlsZXMpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdHgubWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgYWNjZXB0Q29tcGxldGlvbihlLnZhbHVlLCBjdHgsIGN0eC5tYXRjaGVzW01hdGgubWluKGNvbXBJbmRleCgpLCBjdHgubWF0Y2hlcy5sZW5ndGggLSAxKV0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmN0cmwgfHwgZS5tZXRhIHx8IHNob3dDb21tYW5kcyB8fCBzaG93RmlsZXMpIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndXAnICYmIGUudmFsdWUgPT09ICcnICYmIHF1ZXVlZCgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgc2V0SW5wdXQocXVldWVkKCkuam9pbignXFxuJykpXG4gICAgICAgICAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJyb3dzaW5nID0gaGlzdElkeCgpID49IDBcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3VwJyAmJiAoYnJvd3NpbmcgfHwgZS52YWx1ZSA9PT0gJycpICYmIGhpc3RJZHgoKSA8IHNlbnQoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSBoaXN0SWR4KCkgKyAxXG4gICAgICAgICAgICAgIHNldEhpc3RJZHgobilcbiAgICAgICAgICAgICAgc2V0SW5wdXQoc2VudCgpW3NlbnQoKS5sZW5ndGggLSAxIC0gbl0udGV4dClcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ2Rvd24nICYmIGJyb3dzaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSBoaXN0SWR4KCkgLSAxXG4gICAgICAgICAgICAgIHNldEhpc3RJZHgobilcbiAgICAgICAgICAgICAgc2V0SW5wdXQobiA8IDAgPyAnJyA6IHNlbnQoKVtzZW50KCkubGVuZ3RoIC0gMSAtIG5dLnRleHQpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9fVxuICAgICAgICAgIHN1Ym1pdE9uRW50ZXJcbiAgICAgICAgICBjbGVhck9uU3VibWl0XG4gICAgICAgICAgbWF4SGVpZ2h0PXs4fVxuICAgICAgICAgIGN1cnNvcj17eyBibGluazogdHJ1ZSwgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJyB9fVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+fVxuXG4gICAgICB7c2hvd0NvbW1hbmRzICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICB7bWF0Y2hlZENvbW1hbmRzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtYXRjaGluZyBjb21tYW5kczwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgICBpdGVtcz17bWF0Y2hlZENvbW1hbmRzfVxuICAgICAgICAgICAgICBzZWxlY3RlZD17Y21kSW5kZXgoKX1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3NldENtZEluZGV4fVxuICAgICAgICAgICAgICBvblN1Ym1pdD17KGMpID0+IHJ1bkNvbW1hbmQoYyl9XG4gICAgICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb21tYW5kc31cbiAgICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgICAgc2Nyb2xsb2ZmPXsyfVxuICAgICAgICAgICAgICByZW5kZXJJdGVtPXsoYywgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogTVVURUQgfX0+e2AvJHtjLm5hbWV9YC5wYWRFbmQobWF0Y2hlZENvbW1hbmRzLnJlZHVjZSgobSwgeCkgPT4gTWF0aC5tYXgobSwgeC5uYW1lLmxlbmd0aCArIDMpLCAxMikpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyAnI2NiZDVlMScgOiBGQUlOVCB9fT57Yy5kZXNjfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0ZpbGVzICYmIG1hdGNoZWRGaWxlcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e21hdGNoZWRGaWxlc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtmaWxlSW5kZXgoKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRGaWxlSW5kZXh9XG4gICAgICAgICAgICBvblN1Ym1pdD17cGlja0ZpbGV9XG4gICAgICAgICAgICBvbkNhbmNlbD17KCkgPT4gc2V0RmlsZXNEaXNtaXNzZWQodHJ1ZSl9XG4gICAgICAgICAgICBmb2N1c2VkPXtzaG93RmlsZXN9XG4gICAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgICAgc2Nyb2xsb2ZmPXsyfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KGYsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHX1NPRlQgfX0+e2Z9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0NvbXBsZXRpb24gJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17Y29tcEN0eC5tYXRjaGVzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e2NvbXBJbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldENvbXBJbmRleH1cbiAgICAgICAgICAgIG9uU3VibWl0PXsoY2FuZGlkYXRlKSA9PiBhY2NlcHRDb21wbGV0aW9uKGlucHV0KCksIGNvbXBDdHgsIGNhbmRpZGF0ZSl9XG4gICAgICAgICAgICBvbkNhbmNlbD17ZGlzbWlzc0NvbXBsZXRpb259XG4gICAgICAgICAgICBmb2N1c2VkPXtzaG93Q29tcGxldGlvbn1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICBzY3JvbGxvZmY9ezJ9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsoY2FuZGlkYXRlLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGR19TT0ZUIH19PntjYW5kaWRhdGV9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuXG4gICAgICB7c2hvd01vZGVsUGFuZWwoKSAmJiAoXG4gICAgICAgIDxNb2RlbFBhbmVsXG4gICAgICAgICAgbW9kZWxzPXttb2RlbHN9XG4gICAgICAgICAgY3VycmVudD17bW9kZWwoKS5uYW1lfVxuICAgICAgICAgIGRlZmF1bHROYW1lPXtkZWZhdWx0TW9kZWwoKS5uYW1lfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dNb2RlbFBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsobSkgPT4ge1xuICAgICAgICAgICAgaWYgKG0uYXZhaWxhYmxlID09PSBmYWxzZSkgcmV0dXJuIGZsYXNoKGBzZXQgJHttLmtleUhpbnR9IGluIHlvdXIgZW52aXJvbm1lbnQgdG8gdXNlICR7bS5uYW1lfWApXG4gICAgICAgICAgICBwZXJzaXN0KG1ha2VFdmVudCgnbW9kZWxfc3dpdGNoJywgeyBmcm9tOiBtb2RlbCgpLm5hbWUsIHRvOiBtLm5hbWUgfSkpXG4gICAgICAgICAgICBzZXRNb2RlbChtKVxuICAgICAgICAgICAgc2V0U2hvd01vZGVsUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBmbGFzaChgbW9kZWwgc2V0IHRvICR7bS5uYW1lfWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBpY2tEZWZhdWx0PXsobSkgPT4ge1xuICAgICAgICAgICAgaWYgKG0uYXZhaWxhYmxlID09PSBmYWxzZSkgcmV0dXJuIGZsYXNoKGBzZXQgJHttLmtleUhpbnR9IGluIHlvdXIgZW52aXJvbm1lbnQgdG8gdXNlICR7bS5uYW1lfWApXG4gICAgICAgICAgICBwZXJzaXN0KG1ha2VFdmVudCgnbW9kZWxfc3dpdGNoJywgeyBmcm9tOiBtb2RlbCgpLm5hbWUsIHRvOiBtLm5hbWUgfSkpXG4gICAgICAgICAgICBzZXRNb2RlbChtKVxuICAgICAgICAgICAgc2V0RGVmYXVsdE1vZGVsKG0pXG4gICAgICAgICAgICB3cml0ZUNvbmZpZyh7IGRlZmF1bHRNb2RlbDogbS5uYW1lIH0pLmNhdGNoKCgpID0+IHt9KVxuICAgICAgICAgICAgc2V0U2hvd01vZGVsUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBmbGFzaChgbW9kZWwgc2V0IHRvICR7bS5uYW1lfSBcdTAwQjcgc2F2ZWQgYXMgZGVmYXVsdGApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93TW9kZWxQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Jlc2VhcmNoTW9kZWxQYW5lbCgpICYmIChcbiAgICAgICAgPE1vZGVsUGFuZWxcbiAgICAgICAgICBtb2RlbHM9e21vZGVscy5maWx0ZXIoKG0pID0+IG0uYXZhaWxhYmxlICE9PSBmYWxzZSl9XG4gICAgICAgICAgY3VycmVudD17Ym9vdC5yZXNlYXJjaE1vZGVsfVxuICAgICAgICAgIGRlZmF1bHROYW1lPXtudWxsfVxuICAgICAgICAgIHRpdGxlPVwiQ2hvb3NlIHJlc2VhcmNoIHdvcmtlciBtb2RlbFwiXG4gICAgICAgICAgaGludD1cImVudGVyOiBzYXZlIHdvcmtlciBtb2RlbCBcdTAwQjcgZXNjOiBjYW5jZWxcIlxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dSZXNlYXJjaE1vZGVsUGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhtKSA9PiB7XG4gICAgICAgICAgICBib290LnJlc2VhcmNoTW9kZWwgPSBtLm5hbWVcbiAgICAgICAgICAgIHdyaXRlQ29uZmlnKHsgbW9kZWxzOiB7IHJlc2VhcmNoV29ya2VyOiBtLm5hbWUgfSB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgICAgICAgIHNldFNob3dSZXNlYXJjaE1vZGVsUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBmbGFzaChgcmVzZWFyY2ggd29ya2VyczogJHttLm5hbWV9YClcbiAgICAgICAgICAgIGNvbnN0IHBlbmRpbmcgPSBwZW5kaW5nUmVzZWFyY2goKVxuICAgICAgICAgICAgY29uc3QgcmV0dXJuVG8gPSByZXNlYXJjaE1vZGVsUmV0dXJuKClcbiAgICAgICAgICAgIHNldFBlbmRpbmdSZXNlYXJjaChudWxsKVxuICAgICAgICAgICAgc2V0UmVzZWFyY2hNb2RlbFJldHVybihudWxsKVxuICAgICAgICAgICAgaWYgKHBlbmRpbmcpIHJ1bkNvbW1hbmQoeyBuYW1lOiAnZGVlcC1yZXNlYXJjaCcgfSwgYC0tYWdlbnRzICR7cGVuZGluZy5hZ2VudExpbWl0fSAke3BlbmRpbmcucXVlc3Rpb259YClcbiAgICAgICAgICAgIGVsc2UgaWYgKHJldHVyblRvID09PSAnY29uZmlnJykgc2V0U2hvd0NvbmZpZ1BhbmVsKHRydWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBpY2tEZWZhdWx0PXsoKSA9PiB7fX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRTaG93UmVzZWFyY2hNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgc2V0UGVuZGluZ1Jlc2VhcmNoKG51bGwpXG4gICAgICAgICAgICBpZiAocmVzZWFyY2hNb2RlbFJldHVybigpID09PSAnY29uZmlnJykgc2V0U2hvd0NvbmZpZ1BhbmVsKHRydWUpXG4gICAgICAgICAgICBzZXRSZXNlYXJjaE1vZGVsUmV0dXJuKG51bGwpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RWZmb3J0UGFuZWwoKSAmJiAoXG4gICAgICAgIDxFZmZvcnRQYW5lbFxuICAgICAgICAgIGxldmVscz17RUZGT1JUX0xFVkVMU31cbiAgICAgICAgICBjdXJyZW50PXtlZmZvcnQoKSA/PyBudWxsfVxuICAgICAgICAgIGRlZmF1bHRMZXZlbD17ZGVmYXVsdEVmZm9ydCgpID8/IG51bGx9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd0VmZm9ydFBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsobCkgPT4ge1xuICAgICAgICAgICAgc2V0U2Vzc2lvbkVmZm9ydChsLmtleSlcbiAgICAgICAgICAgIHNldFNob3dFZmZvcnRQYW5lbChmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uUGlja0RlZmF1bHQ9eyhsKSA9PiB7XG4gICAgICAgICAgICBzZXRTZXNzaW9uRWZmb3J0KGwua2V5LCB7IGFzRGVmYXVsdDogdHJ1ZSB9KVxuICAgICAgICAgICAgc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93VGhlbWVQYW5lbCgpICYmIChcbiAgICAgICAgPFRoZW1lUGFuZWxcbiAgICAgICAgICB0aGVtZXM9e3RoZW1lSXRlbXMoKX1cbiAgICAgICAgICBwcmVmPXt0aGVtZVByZWYoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93VGhlbWVQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KHQpID0+IHtcbiAgICAgICAgICAgIHNldFNob3dUaGVtZVBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgYXBwbHlUaGVtZVByZWYodC5rZXkpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblByZXZpZXc9eyh0KSA9PiBwcmV2aWV3UGFsZXR0ZSh0LmtleSl9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1RoZW1lUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBwcmV2aWV3UGFsZXR0ZSh0aGVtZVByZWYoKSlcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dDb25maWdQYW5lbCgpICYmIChcbiAgICAgICAgPENvbmZpZ1BhbmVsXG4gICAgICAgICAgdmFsdWVzPXt7IGNsb3VkczogY2xvdWRzKCksIGNvbXBhY3RUb29sczogY29tcGFjdFRvb2xIaXN0b3J5KCksIGdpdFN0YXR1czogZ2l0Rm9vdGVyKCksIHJlc2VhcmNoTW9kZWw6IGJvb3QucmVzZWFyY2hNb2RlbCwgcmVzZWFyY2hBZ2VudExpbWl0OiByZXNlYXJjaEFnZW50TGltaXQoKSB9fVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb25maWdQYW5lbCgpfVxuICAgICAgICAgIG9uUGlja1Jlc2VhcmNoTW9kZWw9eygpID0+IHtcbiAgICAgICAgICAgIHNldFJlc2VhcmNoTW9kZWxSZXR1cm4oJ2NvbmZpZycpXG4gICAgICAgICAgICBzZXRTaG93Q29uZmlnUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBzZXRTaG93UmVzZWFyY2hNb2RlbFBhbmVsKHRydWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNoYW5nZT17KG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2Nsb3VkcycpIHtcbiAgICAgICAgICAgICAgc2V0Q2xvdWRzKHZhbHVlKVxuICAgICAgICAgICAgICB3cml0ZUNvbmZpZyh7IGFuaW1hdGlvbjogeyBjbG91ZHM6IHZhbHVlIH0gfSlcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ2dpdFN0YXR1cycpIHtcbiAgICAgICAgICAgICAgc2V0R2l0Rm9vdGVyKHZhbHVlKVxuICAgICAgICAgICAgICBib290LmdpdEZvb3RlciA9IHZhbHVlXG4gICAgICAgICAgICAgIGJvb3QuZ2l0LnNldEVuYWJsZWQodmFsdWUpXG4gICAgICAgICAgICAgIHdyaXRlQ29uZmlnKHsgZGlzcGxheTogeyBnaXRTdGF0dXM6IHZhbHVlIH0gfSlcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3Jlc2VhcmNoQWdlbnRMaW1pdCcpIHtcbiAgICAgICAgICAgICAgc2V0UmVzZWFyY2hBZ2VudExpbWl0KHZhbHVlKVxuICAgICAgICAgICAgICBib290LnJlc2VhcmNoQWdlbnRMaW1pdCA9IHZhbHVlXG4gICAgICAgICAgICAgIHdyaXRlQ29uZmlnKHsgcmVzZWFyY2g6IHsgYWdlbnRMaW1pdDogdmFsdWUgfSB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0Q29tcGFjdFRvb2xIaXN0b3J5KHZhbHVlKVxuICAgICAgICAgICAgICB3cml0ZUNvbmZpZyh7IGRpc3BsYXk6IHsgY29tcGFjdFRvb2xIaXN0b3J5OiB2YWx1ZSB9IH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Q29uZmlnUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dEZWxldGVDb25maXJtKCkgJiYgKFxuICAgICAgICA8Q29uZmlybVBhbmVsXG4gICAgICAgICAgdGl0bGU9XCJEZWxldGUgY3VycmVudCBzZXNzaW9uP1wiXG4gICAgICAgICAgbWVzc2FnZT1cIlRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiBhbmQgaXRzIHBlcnNpc3RlZCBoaXN0b3J5IHdpbGwgYmUgcGVybWFuZW50bHkgZGVsZXRlZC5cIlxuICAgICAgICAgIGNvbmZpcm1MYWJlbD1cIkRlbGV0ZVwiXG4gICAgICAgICAgZm9jdXNlZD17c2hvd0RlbGV0ZUNvbmZpcm0oKX1cbiAgICAgICAgICBvbkNvbmZpcm09e2NvbmZpcm1EZWxldGVDdXJyZW50U2Vzc2lvbn1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RGVsZXRlQ29uZmlybShmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0hpc3RvcnlQYW5lbCgpICYmIChcbiAgICAgICAgPEhpc3RvcnlQYW5lbFxuICAgICAgICAgIHByb21wdHM9e2hpc3RQcm9tcHRzKCl9XG4gICAgICAgICAgc2NvcGVzPXtISVNUT1JZX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXtoaXN0U2NvcGUoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93SGlzdG9yeVBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsodGV4dCkgPT4geyBzZXRJbnB1dCh0ZXh0KTsgc2V0U2hvd0hpc3RvcnlQYW5lbChmYWxzZSkgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93SGlzdG9yeVBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93UmVzdW1lUGFuZWwoKSAmJiAoXG4gICAgICAgIDxSZXN1bWVQYW5lbFxuICAgICAgICAgIHNlc3Npb25zPXtyZXN1bWVTZXNzaW9ucygpfVxuICAgICAgICAgIHNjb3Blcz17UkVTVU1FX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXtyZXN1bWVTY29wZSgpfVxuICAgICAgICAgIGxvYWRpbmc9e3Jlc3VtZUxvYWRpbmcoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93UmVzdW1lUGFuZWwoKX1cbiAgICAgICAgICBjdXJyZW50SWQ9e3JlZnMuc2Vzc2lvbj8uaWR9XG4gICAgICAgICAgb25QaWNrPXsobWV0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGEuaGVhZGVyLmlkID09PSByZWZzLnNlc3Npb24/LmlkKSByZXR1cm4gc2V0U2hvd1Jlc3VtZVBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgcmVzdW1lU2Vzc2lvbihtZXRhKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25EZWxldGU9e2RlbGV0ZVNlc3Npb25NZXRhfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dSZXN1bWVQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd01lbW9yeVBhbmVsKCkgJiYgKFxuICAgICAgICA8TWVtb3J5UGFuZWxcbiAgICAgICAgICBtZW1vcmllcz17bWVtb3J5TGlzdCgpLmZpbHRlcigobSkgPT4gTUVNT1JZX1NDT1BFU1ttZW1TY29wZSgpXSA9PT0gJ2FsbCcgfHwgbS5zY29wZSA9PT0gTUVNT1JZX1NDT1BFU1ttZW1TY29wZSgpXSl9XG4gICAgICAgICAgc2NvcGVzPXtNRU1PUllfU0NPUEVTfVxuICAgICAgICAgIHNjb3BlSW5kZXg9e21lbVNjb3BlKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd01lbW9yeVBhbmVsKCl9XG4gICAgICAgICAgb25Gb3JnZXQ9e2ZvcmdldE1lbW9yeX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93TWVtb3J5UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge2luZm9QYW5lbCgpICYmIChcbiAgICAgICAgPEluZm9MaXN0UGFuZWxcbiAgICAgICAgICB0aXRsZT17aW5mb1BhbmVsKCkudGl0bGV9XG4gICAgICAgICAgcm93cz17aW5mb1BhbmVsKCkucm93c31cbiAgICAgICAgICBvdmVydmlldz17aW5mb1BhbmVsKCkub3ZlcnZpZXd9XG4gICAgICAgICAgZm9jdXNlZD17aW5mb1BhbmVsKCkgIT09IG51bGx9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0SW5mb1BhbmVsKG51bGwpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dQcm9qZWN0UGFuZWwoKSAmJiAoXG4gICAgICAgIDxQcm9qZWN0UGFuZWxcbiAgICAgICAgICBwcm9qZWN0cz17cHJvamVjdHMoKX1cbiAgICAgICAgICBsb2FkaW5nPXtwcm9qZWN0c0xvYWRpbmcoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93UHJvamVjdFBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsocCkgPT4gcmVzdW1lU2Vzc2lvbihwLmxhdGVzdCl9XG4gICAgICAgICAgb25EZWxldGU9e2RlbGV0ZVByb2plY3R9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd1Byb2plY3RQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0Nvbm5lY3RQYW5lbCgpICYmIChcbiAgICAgICAgPENvbm5lY3RQYW5lbFxuICAgICAgICAgIHByb3ZpZGVycz17YXV0aFByb3ZpZGVycygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb25uZWN0UGFuZWwoKX1cbiAgICAgICAgICBvbkNvbm5lY3Q9e2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkRpc2Nvbm5lY3Q9e2Rpc2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Q29ubmVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93V2FrZXVwc1BhbmVsKCkgJiYgKFxuICAgICAgICA8V2FrZXVwc1BhbmVsXG4gICAgICAgICAgd2FrZXVwcz17KHNoZWxsc1ZlcnNpb24oKSwgYm9vdC53YWtldXBzLmxpc3QoKSl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1dha2V1cHNQYW5lbCgpfVxuICAgICAgICAgIG9uQ2FuY2VsPXsodykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXJtZWQgPSByZWZzLndha2V1cENhbmNlbEFybVxuICAgICAgICAgICAgaWYgKCFhcm1lZCB8fCBhcm1lZC5pZCAhPT0gdy5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICAgICAgICAgIHJlZnMud2FrZXVwQ2FuY2VsQXJtID0geyBpZDogdy5pZCwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgICAgICAgICByZXR1cm4gZmxhc2goYGFnYWluIHRvIGNhbmNlbCB3YWtlLXVwICR7dy5pZH0gKCR7dy5ub3RlLnNwbGl0KCdcXG4nKVswXS5zbGljZSgwLCA0MCl9KWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWZzLndha2V1cENhbmNlbEFybSA9IG51bGxcbiAgICAgICAgICAgIGJvb3Qud2FrZXVwcy5jYW5jZWwody5pZClcbiAgICAgICAgICAgIGZsYXNoKGBjYW5jZWxsZWQgd2FrZS11cCAke3cuaWR9YClcbiAgICAgICAgICAgIG5vdGVTeXN0ZW0oXG4gICAgICAgICAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHVzZXIgY2FuY2VsbGVkIHNjaGVkdWxlZCB3YWtlLXVwICR7dy5pZH0gKG5vdGUgd2FzOiAke3cubm90ZS5yZXBsYWNlKC9cXG4vZywgJyAnKX0pLiBUaGlzIHdhcyBkZWxpYmVyYXRlOyBkbyBub3QgcmVzY2hlZHVsZSBpdCB1bmxlc3MgYXNrZWQuYCxcbiAgICAgICAgICAgICAgeyB3YWtlOiBmYWxzZSB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd1dha2V1cHNQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd01jcFBhbmVsKCkgJiYgKFxuICAgICAgICA8TWNwUGFuZWxcbiAgICAgICAgICBzZXJ2ZXJzPXttY3BTZXJ2ZXJzKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd01jcFBhbmVsKCl9XG4gICAgICAgICAgb25Ub2dnbGU9eyhuYW1lKSA9PiBtY3AudG9nZ2xlKG5hbWUpfVxuICAgICAgICAgIG9uUmVjb25uZWN0PXsobmFtZSkgPT4gbWNwLnJlY29ubmVjdChuYW1lKX1cbiAgICAgICAgICBvblJlbW92ZT17KG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFybWVkID0gcmVmcy5tY3BSZW1vdmVBcm1cbiAgICAgICAgICAgIGlmICghYXJtZWQgfHwgYXJtZWQubmFtZSAhPT0gbmFtZSB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICAgICAgICAgIHJlZnMubWNwUmVtb3ZlQXJtID0geyBuYW1lLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICAgICAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIHJlbW92ZSBcIiR7bmFtZX1cIiBhbmQgaXRzIGNvbmZpZ2ApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWZzLm1jcFJlbW92ZUFybSA9IG51bGxcbiAgICAgICAgICAgIG1jcC5yZW1vdmUobmFtZSlcbiAgICAgICAgICAgIGZsYXNoKGByZW1vdmVkIG1jcCBzZXJ2ZXIgJHtuYW1lfWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkFkZD17KG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgICAgICAgICBtY3AuYWRkKG5hbWUsIGNvbW1hbmQsIHNjb3BlKVxuICAgICAgICAgICAgZmxhc2goYGFkZGVkICR7bmFtZX0gKCR7c2NvcGV9KWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkVkaXQ9eyhuYW1lLCBjb21tYW5kKSA9PiB7XG4gICAgICAgICAgICBtY3AudXBkYXRlKG5hbWUsIGNvbW1hbmQpXG4gICAgICAgICAgICBmbGFzaChgdXBkYXRlZCAke25hbWV9YClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uSW52YWxpZD17Zmxhc2h9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01jcFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtyZXdpbmRTdGVwKCkgPT09ICdwaWNrJyAmJiAoXG4gICAgICAgIDxSZXdpbmRQaWNrUGFuZWxcbiAgICAgICAgICBlbnRyaWVzPXtbLi4ucmV3aW5kRW50cmllcygpXS5yZXZlcnNlKCl9XG4gICAgICAgICAgc3RhdHM9eyhpbmRleCkgPT4gcmV3aW5kU3RhdHMoZGVyaXZlZCgpLCBpbmRleCl9XG4gICAgICAgICAgZm9jdXNlZD17cmV3aW5kU3RlcCgpID09PSAncGljayd9XG4gICAgICAgICAgb25QaWNrPXsoZW50cnkpID0+IHsgc2V0UmV3aW5kVGFyZ2V0KGVudHJ5KTsgc2V0UmV3aW5kU3RlcCgnYWN0aW9uJykgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRSZXdpbmRTdGVwKG51bGwpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Jld2luZFN0ZXAoKSA9PT0gJ2FjdGlvbicgJiYgcmV3aW5kVGFyZ2V0KCkgJiYgKFxuICAgICAgICA8UmV3aW5kQWN0aW9uUGFuZWxcbiAgICAgICAgICB0YXJnZXQ9e3Jld2luZFRhcmdldCgpfVxuICAgICAgICAgIG9wdGlvbnM9e3Jld2luZE9wdGlvbnN9XG4gICAgICAgICAgZm9jdXNlZD17cmV3aW5kU3RlcCgpID09PSAnYWN0aW9uJ31cbiAgICAgICAgICBvblN1Ym1pdD17cGVyZm9ybVJld2luZH1cbiAgICAgICAgICBvbkJhY2s9eygpID0+IHNldFJld2luZFN0ZXAoJ3BpY2snKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHt2aXNpYmxlU2hlbGxzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgZW50ZXIgdmlldyR7c2hlbGxBY3Rpb25IaW50ID8gYCBcdTAwQjcgJHtzaGVsbEFjdGlvbkhpbnR9YCA6ICcnfSBcdTAwQjcgai9rIG1vdmVgfTwvdGV4dD5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgICA8QWdlbnRTdHJpcFJvdyBzZWxlY3RlZD17IXZpZXdlZFNoZWxsfSBmb2N1c2VkPXtmbS5jdXJyZW50KCkgPT09ICdzaGVsbC1tYWluJ30gb25QcmVzcz17KCkgPT4geyBmbS5mb2N1cygnc2hlbGwtbWFpbicpOyBzZXRWaWV3ZWRTaGVsbElkKG51bGwpOyBzZXRGb2xsb3codHJ1ZSkgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogZm0uY3VycmVudCgpID09PSAnc2hlbGwtbWFpbicgPyAnYmxhY2snIDogYWNjZW50KCkgfX0+eydcdTI1Q0YgJ308L3RleHQ+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogZm0uY3VycmVudCgpID09PSAnc2hlbGwtbWFpbicgPyAnYmxhY2snIDogIXZpZXdlZFNoZWxsID8gRkcgOiBNVVRFRCB9fT57J21haW4nfTwvdGV4dD5cbiAgICAgICAgICA8L0FnZW50U3RyaXBSb3c+XG4gICAgICAgICAge3NoZWxsV2luZG93Lm1hcCgocykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9jdXNlZCA9IGZtLmN1cnJlbnQoKSA9PT0gYHNoZWxsLSR7cy5pZH1gXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHZpZXdlZFNoZWxsSWQoKSA9PT0gcy5pZFxuICAgICAgICAgICAgY29uc3QgZWxhcHNlZCA9IGFnZW50RWxhcHNlZCh7IHN0YXJ0ZWRBdDogcy5zdGFydGVkQXQsIGVuZGVkQXQ6IHMuZW5kZWRBdCB9KVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEFnZW50U3RyaXBSb3cga2V5PXtzLmlkfSBzZWxlY3RlZD17c2VsZWN0ZWR9IGZvY3VzZWQ9e2ZvY3VzZWR9IG9uUHJlc3M9eygpID0+IHsgZm0uZm9jdXMoYHNoZWxsLSR7cy5pZH1gKTsgc2V0Vmlld2VkU2hlbGxJZChzLmlkKTsgc2V0Rm9sbG93KHRydWUpIH19PlxuICAgICAgICAgICAgICAgIHtzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gPFNwaW5uZXIgY29sb3I9e2ZvY3VzZWQgPyAnYmxhY2snIDogYWNjZW50KCl9IHZhcmlhbnQ9XCJkb3RzXCIgLz4gOiA8dGV4dCBzdHlsZT17eyBjb2xvcjogZm9jdXNlZCA/ICdibGFjaycgOiBzLmV4aXRDb2RlID09PSAwID8gR1JFRU4gOiBSRUQgfX0+e3MuZXhpdENvZGUgPT09IDAgPyAnXHUyNUNGJyA6ICdcdTAwRDcnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgPHRleHQ+eycgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogc2VsZWN0ZWQgPyBGRyA6IE1VVEVEIH19Pntgc2hlbGwgWyR7cy5pZH1dICBgfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogTVVURUQgfX0+e3MuZGVzY3JpcHRpb24gfHwgcy5jb21tYW5kLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogZm9jdXNlZCA/ICdibGFjaycgOiBNVVRFRCB9fT57YCAgJHtzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gJycgOiBgZXhpdCAke3MuZXhpdENvZGV9IFx1MDBCNyBgfSR7ZWxhcHNlZH1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9BZ2VudFN0cmlwUm93PlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pfVxuICAgICAgICAgIHt2aXNpYmxlU2hlbGxzLmxlbmd0aCA+IFNIRUxMX1NUUklQX01BWCAmJiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2AgICR7c2hlbGxXaW5kb3dTdGFydCA+IDAgPyBgXHUyMTkxICR7c2hlbGxXaW5kb3dTdGFydH1gIDogJyd9JHtzaGVsbFdpbmRvd1N0YXJ0ID4gMCAmJiBzaGVsbFdpbmRvd1N0YXJ0ICsgc2hlbGxXaW5kb3cubGVuZ3RoIDwgdmlzaWJsZVNoZWxscy5sZW5ndGggPyAnIFx1MDBCNyAnIDogJyd9JHtzaGVsbFdpbmRvd1N0YXJ0ICsgc2hlbGxXaW5kb3cubGVuZ3RoIDwgdmlzaWJsZVNoZWxscy5sZW5ndGggPyBgXHUyMTkzICR7dmlzaWJsZVNoZWxscy5sZW5ndGggLSBzaGVsbFdpbmRvd1N0YXJ0IC0gc2hlbGxXaW5kb3cubGVuZ3RofWAgOiAnJ30gbW9yZWB9PC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Zpc2libGVBZ2VudHMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywganVzdGlmeUNvbnRlbnQ6ICdmbGV4LWVuZCcgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2BlbnRlciB2aWV3JHthZ2VudEFjdGlvbkhpbnQgPyBgIFx1MDBCNyAke2FnZW50QWN0aW9uSGludH1gIDogJyd9IFx1MDBCNyBqL2sgbW92ZWB9PC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICAgIDxBZ2VudFN0cmlwUm93IHNlbGVjdGVkPXshdmlld2VkQWdlbnR9IGZvY3VzZWQ9e2ZtLmN1cnJlbnQoKSA9PT0gJ2FnZW50LW1haW4nfSBvblByZXNzPXsoKSA9PiB7IGZtLmZvY3VzKCdhZ2VudC1tYWluJyk7IHNldFZpZXdlZEFnZW50SWQobnVsbCk7IHNldEZvbGxvdyh0cnVlKTsgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVykgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogZm0uY3VycmVudCgpID09PSAnYWdlbnQtbWFpbicgPyAnYmxhY2snIDogYWNjZW50KCkgfX0+eydcdTI1Q0YgJ308L3RleHQ+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogZm0uY3VycmVudCgpID09PSAnYWdlbnQtbWFpbicgPyAnYmxhY2snIDogIXZpZXdlZEFnZW50ID8gRkcgOiBNVVRFRCB9fT57J21haW4nfTwvdGV4dD5cbiAgICAgICAgICA8L0FnZW50U3RyaXBSb3c+XG4gICAgICAgICAge2FnZW50V2luZG93Lm1hcCgoYSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gYWdlbnRTdGF0dXMoYSlcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWQgPSBmbS5jdXJyZW50KCkgPT09IGBhZ2VudC0ke2EuaWR9YFxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEFnZW50U3RyaXBSb3cga2V5PXthLmlkfSBzZWxlY3RlZD17dmlld2VkQWdlbnRJZCgpID09PSBhLmlkfSBmb2N1c2VkPXtmb2N1c2VkfSBvblByZXNzPXsoKSA9PiB7IGZtLmZvY3VzKGBhZ2VudC0ke2EuaWR9YCk7IHNldFZpZXdlZEFnZW50SWQoYS5pZCk7IHNldEZvbGxvdyh0cnVlKTsgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVykgfX0+XG4gICAgICAgICAgICAgICAge2Euc3RhdHVzID09PSAncnVubmluZycgPyA8U3Bpbm5lciBjb2xvcj17Zm9jdXNlZCA/ICdibGFjaycgOiBhY2NlbnQoKX0gdmFyaWFudD1cImRvdHNcIiAvPiA6IDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBmb2N1c2VkID8gJ2JsYWNrJyA6IHN0YXR1cy5jb2xvciB9fT57c3RhdHVzLmljb259PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICA8dGV4dD57JyAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogZm9jdXNlZCA/ICdibGFjaycgOiB2aWV3ZWRBZ2VudElkKCkgPT09IGEuaWQgPyBGRyA6IE1VVEVEIH19PntgJHthLnJvbGUgfHwgJ2FnZW50J30gWyR7YS5pZH1dICBgfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogTVVURUQgfX0+e2EuZGVzY3JpcHRpb259PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIHtzdGF0dXMubGFiZWwgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogc3RhdHVzLmNvbG9yIH19PntgICAke3N0YXR1cy5sYWJlbH1gfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogTVVURUQgfX0+e2Ake3N0YXR1cy5sYWJlbCA/ICcgXHUwMEI3JyA6ICcgICd9ICR7YWdlbnRFbGFwc2VkKGEpfSBcdTAwQjcgXHUyMTkzIGB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDxBbmltYXRlZFZhbHVlIHZhbHVlPXthLnVzYWdlPy50b3RhbFRva2VucyB8fCBhLnVzYWdlPy5wcm9tcHRUb2tlbnMgfHwgMH0gY29sb3I9e2ZvY3VzZWQgPyAnYmxhY2snIDogTVVURUR9IGhpZ2hsaWdodD17Zm9jdXNlZCA/ICdibGFjaycgOiBhY2NlbnQoKX0gZm9ybWF0PXsobikgPT4gYCR7Y29tcGFjdE51bWJlcihuKX0gdG9rZW5zYH0gLz5cbiAgICAgICAgICAgICAgPC9BZ2VudFN0cmlwUm93PlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pfVxuICAgICAgICAgIHt2aXNpYmxlQWdlbnRzLmxlbmd0aCA+IEFHRU5UX1NUUklQX01BWCAmJiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2AgICR7YWdlbnRXaW5kb3dTdGFydCA+IDAgPyBgXHUyMTkxICR7YWdlbnRXaW5kb3dTdGFydH1gIDogJyd9JHthZ2VudFdpbmRvd1N0YXJ0ID4gMCAmJiBhZ2VudFdpbmRvd1N0YXJ0ICsgYWdlbnRXaW5kb3cubGVuZ3RoIDwgdmlzaWJsZUFnZW50cy5sZW5ndGggPyAnIFx1MDBCNyAnIDogJyd9JHthZ2VudFdpbmRvd1N0YXJ0ICsgYWdlbnRXaW5kb3cubGVuZ3RoIDwgdmlzaWJsZUFnZW50cy5sZW5ndGggPyBgXHUyMTkzICR7dmlzaWJsZUFnZW50cy5sZW5ndGggLSBhZ2VudFdpbmRvd1N0YXJ0IC0gYWdlbnRXaW5kb3cubGVuZ3RofWAgOiAnJ30gbW9yZWB9PC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge2dpdEluZm8/LmJyYW5jaCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIHBhZGRpbmdYOiAyLCBnYXA6IDEsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57Z2l0SW5mby5icmFuY2h9PC90ZXh0PlxuICAgICAgICAgIHtnaXRJbmZvLmFkZGVkID4gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogR1JFRU4gfX0+e2ArJHtnaXRJbmZvLmFkZGVkfWB9PC90ZXh0Pn1cbiAgICAgICAgICB7Z2l0SW5mby5yZW1vdmVkID4gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogUkVEIH19PntgLSR7Z2l0SW5mby5yZW1vdmVkfWB9PC90ZXh0Pn1cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBwYWRkaW5nWDogMiwgZ2FwOiAxLCBtYXJnaW5Ub3A6IGdpdEluZm8/LmJyYW5jaCA/IDAgOiAxIH19PlxuICAgICAgICB7YnVzeSgpXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8U2hpbW1lciBjb2xvcj17YWNjZW50KCl9IGhpZ2hsaWdodD17SElHSExJR0hUfSBkdXJhdGlvbj17MTUwMH0gcmV2ZXJzZT5cbiAgICAgICAgICAgICAgICB7Y29tcGFjdGluZygpXG4gICAgICAgICAgICAgICAgICA/IGNvbXBhY3RTdGF0dXMoKT8ucGhhc2UgPT09ICd3cml0aW5nJyA/IGBDb21wYWN0aW5nIFx1MDBCNyB3cml0aW5nICR7Y29tcGFjdFN0YXR1cygpLnNlY3Rpb259LzhgIDogJ0NvbXBhY3RpbmcgXHUwMEI3IGFuYWx5emluZydcbiAgICAgICAgICAgICAgICAgIDogdHVyblBoYXNlKCkgPT09ICd0aGlua2luZycgPyAnVGhpbmtpbmcnIDogdHVyblBoYXNlKCkgPT09ICd0b29scycgPyAnV29ya2luZycgOiAnUmVzcG9uZGluZyd9XG4gICAgICAgICAgICAgIDwvU2hpbW1lcj5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICgke2VsYXBzZWR9JHtjb21wYWN0U3RhdHVzKCkgPyBgIFx1MDBCNyBcdTIxOTMgJHtmbXRUb2tlbnMoTWF0aC5yb3VuZChjb21wYWN0U3RhdHVzKCkuY2hhcnMgLyA0KSl9IHRva2Vuc2AgOiAnJ30pIFx1MDBCNyBlc2MgdG8gaW50ZXJydXB0YH08L3RleHQ+XG4gICAgICAgICAgICAgIHtjb21wYWN0U3RhdHVzKCk/LnBoYXNlID09PSAnd3JpdGluZycgJiYgKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIG1hcmdpbkxlZnQ6IDEsIHdpZHRoOiAxNiB9fT5cbiAgICAgICAgICAgICAgICAgIDxQcm9ncmVzc0JhciB2YXJpYW50PVwidGhpblwiIHZhbHVlPXtjb21wYWN0U3RhdHVzKCkuc2VjdGlvbiAvIDh9IHdpZHRoPXsxNn0gcGVyY2VudGFnZT17ZmFsc2V9IGNvbG9yPXthY2NlbnQoKX0gLz5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgIClcbiAgICAgICAgICA6IDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2Jvb3QuZGlzcGxheUN3ZH08L3RleHQ+fVxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgIHtwcm9jZXNzLmVudi5QSUNPX1BFUkYgJiYgKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGF0cyA9IHVzZUZyYW1lU3RhdHMoKVxuICAgICAgICAgIHJldHVybiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2BcdTIzRjEgJHsoc3RhdHMucmVuZGVyTXMgPz8gMCkudG9GaXhlZCgxKX1tcyBcdTAwQjcgJHtzdGF0cy5mcHN9ZnBzIFx1MDBCNyAke2Rlcml2ZWQoKS50cmFuc2NyaXB0Lmxlbmd0aH0gaXRlbXNgfTwvdGV4dD5cbiAgICAgICAgfSkoKX1cbiAgICAgICAge3BlbmRpbmdXYWtldXBzID4gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2BcdTIzRjAgJHtwZW5kaW5nV2FrZXVwc31gfTwvdGV4dD59XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57bW9kZWwoKS5uYW1lfTwvdGV4dD5cbiAgICAgICAge2VmZm9ydEFwcGxpZXMoKSAmJiBlZmZvcnQoKSAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2BcdTAwQjcgJHtlZmZvcnQoKX1gfTwvdGV4dD59XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT5cdTIxOTE8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgPEFuaW1hdGVkVmFsdWUgdmFsdWU9e3VzYWdlLnByb21wdFRva2Vuc30gY29sb3I9e01VVEVEfSBoaWdobGlnaHQ9e2FjY2VudCgpfSBmb3JtYXQ9e2NvbXBhY3ROdW1iZXJ9IC8+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PiBpbjwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT5cdTIxOTM8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgPEFuaW1hdGVkVmFsdWUgdmFsdWU9e3VzYWdlLmNvbXBsZXRpb25Ub2tlbnN9IGNvbG9yPXtNVVRFRH0gaGlnaGxpZ2h0PXthY2NlbnQoKX0gZm9ybWF0PXtjb21wYWN0TnVtYmVyfSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT4gb3V0PC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgICAge3VzYWdlLnRob3VnaHRUb2tlbnMgPiAwICYmIDxBbmltYXRlZFZhbHVlIHZhbHVlPXt1c2FnZS50aG91Z2h0VG9rZW5zfSBjb2xvcj17TVVURUR9IGhpZ2hsaWdodD17YWNjZW50KCl9IGZvcm1hdD17KG4pID0+IGBcdTI3MjYgJHtNYXRoLnJvdW5kKG4pLnRvTG9jYWxlU3RyaW5nKCl9IHRoaW5rYH0gLz59XG4gICAgICAgIHtjb250ZXh0UGVyY2VudCA+IDAgJiYgPEFuaW1hdGVkVmFsdWUgdmFsdWU9e2NvbnRleHRQZXJjZW50fSBjb2xvcj17Y29udGV4dFBlcmNlbnQgPj0gODAgPyBSRUQgOiBNVVRFRH0gaGlnaGxpZ2h0PXthY2NlbnQoKX0gZm9ybWF0PXsobikgPT4gYGN0eCAke01hdGgucm91bmQobil9JWB9IC8+fVxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cbiIsICJpbXBvcnQgeyBhcHBlbmRGaWxlLCByZWFkRmlsZSwgcmVhZGRpciB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUsIHByb2plY3REaXIsIHByb2plY3RIaXN0b3J5RmlsZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuY29uc3QgTUFYX1BST01QVFNfUEVSX1NDT1BFID0gMTAwMFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwZW5kUHJvbXB0KHJvb3QsIHRleHQpIHtcbiAgZW5zdXJlRGlyKHByb2plY3REaXIocm9vdCkpXG4gIGF3YWl0IGFwcGVuZEZpbGUocHJvamVjdEhpc3RvcnlGaWxlKHJvb3QpLCBKU09OLnN0cmluZ2lmeSh7IHRleHQsIGF0OiBEYXRlLm5vdygpIH0pICsgJ1xcbicpXG59XG5cbmZ1bmN0aW9uIHBhcnNlUHJvbXB0TGluZXModGV4dCkge1xuICByZXR1cm4gdGV4dFxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAubWFwKChsaW5lKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbGluZS50cmltKCkgPyBKU09OLnBhcnNlKGxpbmUpIDogbnVsbFxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRQcm9tcHRzKGZpbGUsIHNjb3BlKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZW50cmllcyA9IHBhcnNlUHJvbXB0TGluZXMoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gICAgcmV0dXJuIGVudHJpZXNcbiAgICAgIC5maWx0ZXIoKGUpID0+IHR5cGVvZiBlLnRleHQgPT09ICdzdHJpbmcnICYmIGUudGV4dC50cmltKCkpXG4gICAgICAuc2xpY2UoLU1BWF9QUk9NUFRTX1BFUl9TQ09QRSlcbiAgICAgIC5tYXAoKGUpID0+ICh7IHRleHQ6IGUudGV4dCwgYXQ6IGUuYXQgfHwgMCwgc2NvcGUgfSkpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdFByb21wdHMocm9vdCkge1xuICByZXR1cm4gcmVhZFByb21wdHMocHJvamVjdEhpc3RvcnlGaWxlKHJvb3QpLCAncHJvamVjdCcpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkR2xvYmFsUHJvbXB0cygpIHtcbiAgY29uc3QgcHJvamVjdHNEaXIgPSBqb2luKHBpY29Ib21lKCksICdwcm9qZWN0cycpXG4gIGxldCBwcm9qZWN0cyA9IFtdXG4gIHRyeSB7XG4gICAgcHJvamVjdHMgPSBhd2FpdCByZWFkZGlyKHByb2plY3RzRGlyKVxuICB9IGNhdGNoIHt9XG4gIGNvbnN0IG5lc3RlZCA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHByb2plY3RzLm1hcCgocCkgPT4gcmVhZFByb21wdHMoam9pbihwcm9qZWN0c0RpciwgcCwgJ2hpc3RvcnkuanNvbmwnKSwgJ2V2ZXJ5d2hlcmUnKSksXG4gIClcbiAgcmV0dXJuIG5lc3RlZC5mbGF0KCkuc29ydCgoYSwgYikgPT4gYi5hdCAtIGEuYXQpLnNsaWNlKDAsIE1BWF9QUk9NUFRTX1BFUl9TQ09QRSlcbn1cbiIsICJpbXBvcnQgeyBnZXRUZXh0IH0gZnJvbSAnQHByc20vYWknXG5cbmV4cG9ydCBmdW5jdGlvbiByZXN1bHRUZXh0KG1lc3NhZ2VzID0gW10pIHtcbiAgZm9yIChsZXQgaSA9IG1lc3NhZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKG1lc3NhZ2VzW2ldLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gZ2V0VGV4dChtZXNzYWdlc1tpXS5jb250ZW50IHx8ICcnKS50cmltKClcbiAgICAgIGlmICh0ZXh0KSByZXR1cm4gdGV4dFxuICAgIH1cbiAgfVxuICByZXR1cm4gJydcbn1cblxuZnVuY3Rpb24gcmVzdG9yZWRBZ2VudChkYXRhLCBhdCkge1xuICByZXR1cm4ge1xuICAgIGlkOiBTdHJpbmcoZGF0YS5hZ2VudElkKSxcbiAgICBkZXNjcmlwdGlvbjogZGF0YS5kZXNjcmlwdGlvbiB8fCBkYXRhLnByb21wdD8uc2xpY2UoMCwgODApIHx8IGBhZ2VudCAke2RhdGEuYWdlbnRJZH1gLFxuICAgIHByb21wdDogZGF0YS5wcm9tcHQgfHwgJycsXG4gICAgbW9kZWw6IGRhdGEubW9kZWwgfHwgbnVsbCxcbiAgICByb2xlOiBkYXRhLnJvbGUgfHwgJ3dvcmtlcicsXG4gICAgcGFyZW50SWQ6IGRhdGEucGFyZW50SWQgfHwgbnVsbCxcbiAgICB0b29sczogZGF0YS50b29scyB8fCBbXSxcbiAgICBzdGF0dXM6ICdjYW5jZWxsZWQnLFxuICAgIGNyZWF0ZWRBdDogYXQsXG4gICAgdXBkYXRlZEF0OiBhdCxcbiAgICBzdGFydGVkQXQ6IGF0LFxuICAgIGVuZGVkQXQ6IGF0LFxuICAgIGV2ZW50czogW10sXG4gICAgcmVzdWx0OiAnJyxcbiAgICBlcnJvcjogbnVsbCxcbiAgICB1c2FnZTogbnVsbCxcbiAgICBvcHRpb25zOiBkYXRhLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VBZ2VudEV2ZW50cyhldmVudHMgPSBbXSkge1xuICBjb25zdCBhZ2VudHMgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCByZWNvcmQgb2YgZXZlbnRzKSB7XG4gICAgY29uc3QgZGF0YSA9IHJlY29yZC5kYXRhIHx8IHt9XG4gICAgY29uc3QgaWQgPSBTdHJpbmcoZGF0YS5hZ2VudElkIHx8ICcnKVxuICAgIGlmICghaWQpIGNvbnRpbnVlXG4gICAgaWYgKHJlY29yZC50eXBlID09PSAnYWdlbnRfc3RhcnQnKSB7XG4gICAgICBhZ2VudHMuc2V0KGlkLCByZXN0b3JlZEFnZW50KGRhdGEsIHJlY29yZC5hdCkpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09ICdhZ2VudF9kaXNtaXNzJykge1xuICAgICAgYWdlbnRzLmRlbGV0ZShpZClcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGFnZW50ID0gYWdlbnRzLmdldChpZClcbiAgICBpZiAoIWFnZW50KSBjb250aW51ZVxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gJ2FnZW50X2V2ZW50Jykge1xuICAgICAgYWdlbnQuZXZlbnRzLnB1c2goZGF0YS5ldmVudClcbiAgICAgIGFnZW50LnVwZGF0ZWRBdCA9IHJlY29yZC5hdFxuICAgICAgaWYgKGRhdGEuZXZlbnQ/LnR5cGUgPT09ICd1c2FnZScpIGFnZW50LnVzYWdlID0gZGF0YS5ldmVudC51c2FnZVxuICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09ICdhZ2VudF9yZXN1bHQnKSB7XG4gICAgICBhZ2VudC5yZXN1bHQgPSBkYXRhLnJlc3VsdCB8fCByZXN1bHRUZXh0KGRhdGEubWVzc2FnZXMpXG4gICAgICBhZ2VudC51c2FnZSA9IGRhdGEudXNhZ2UgfHwgYWdlbnQudXNhZ2VcbiAgICAgIGFnZW50LmVycm9yID0gZGF0YS5lcnJvciB8fCBudWxsXG4gICAgICBhZ2VudC5zdGF0dXMgPSBkYXRhLmVycm9yID8gJ2ZhaWxlZCcgOiBkYXRhLmludGVycnVwdGVkID8gJ2NhbmNlbGxlZCcgOiAnY29tcGxldGVkJ1xuICAgICAgYWdlbnQudXBkYXRlZEF0ID0gcmVjb3JkLmF0XG4gICAgICBhZ2VudC5lbmRlZEF0ID0gcmVjb3JkLmF0XG4gICAgfVxuICB9XG4gIGNvbnN0IHJlc3RvcmVkID0gWy4uLmFnZW50cy52YWx1ZXMoKV1cbiAgZm9yIChjb25zdCBhZ2VudCBvZiByZXN0b3JlZCkge1xuICAgIGFnZW50LmRvbmUgPSBQcm9taXNlLnJlc29sdmUoYWdlbnQpXG4gICAgYWdlbnQucmVzb2x2ZSA9ICgpID0+IHt9XG4gIH1cbiAgcmV0dXJuIHJlc3RvcmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZ2VudE1hbmFnZXIoeyBydW4sIGNvbmN1cnJlbmN5ID0gOCwgb25DaGFuZ2UgPSAoKSA9PiB7fSwgb25DcmVhdGUgPSAoKSA9PiB7fSwgb25FdmVudCA9ICgpID0+IHt9LCBvbkZpbmlzaCA9ICgpID0+IHt9LCBkZWZhdWx0cyA9ICgpID0+ICh7fSkgfSA9IHt9KSB7XG4gIGNvbnN0IGFnZW50cyA9IG5ldyBNYXAoKVxuICBjb25zdCBxdWV1ZSA9IFtdXG4gIGxldCBuZXh0SWQgPSAxXG4gIGxldCBhY3RpdmUgPSAwXG4gIGxldCBnZW5lcmF0aW9uID0gMFxuXG4gIGNvbnN0IGNoYW5nZWQgPSAoKSA9PiBvbkNoYW5nZSgpXG5cbiAgZnVuY3Rpb24gcHVtcCgpIHtcbiAgICB3aGlsZSAoYWN0aXZlIDwgY29uY3VycmVuY3kgJiYgcXVldWUubGVuZ3RoKSB7XG4gICAgICBjb25zdCBhZ2VudCA9IHF1ZXVlLnNoaWZ0KClcbiAgICAgIGlmIChhZ2VudC5zdGF0dXMgIT09ICdxdWV1ZWQnKSBjb250aW51ZVxuICAgICAgYWdlbnQuc3RhdHVzID0gJ3J1bm5pbmcnXG4gICAgICBhZ2VudC5zdGFydGVkQXQgPSBEYXRlLm5vdygpXG4gICAgICBhZ2VudC5nZW5lcmF0aW9uID0gZ2VuZXJhdGlvblxuICAgICAgYWN0aXZlKytcbiAgICAgIGNoYW5nZWQoKVxuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiBydW4oYWdlbnQsIGFnZW50LmNvbnRyb2xsZXIuc2lnbmFsLCAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGFnZW50LmdlbmVyYXRpb24gIT09IGdlbmVyYXRpb24pIHJldHVyblxuICAgICAgICBhZ2VudC5ldmVudHMucHVzaChldmVudClcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd1c2FnZScpIGFnZW50LnVzYWdlID0gZXZlbnQudXNhZ2VcbiAgICAgICAgYWdlbnQudXBkYXRlZEF0ID0gRGF0ZS5ub3coKVxuICAgICAgICBvbkV2ZW50KGFnZW50LCBldmVudClcbiAgICAgICAgY2hhbmdlZCgpXG4gICAgICB9KSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChhZ2VudC5nZW5lcmF0aW9uICE9PSBnZW5lcmF0aW9uKSByZXR1cm5cbiAgICAgICAgYWdlbnQucmVzdWx0ID0gdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiByZXN1bHRUZXh0KHJlc3VsdD8ubWVzc2FnZXMpXG4gICAgICAgIGFnZW50LnVzYWdlID0gcmVzdWx0Py51c2FnZSB8fCBhZ2VudC51c2FnZVxuICAgICAgICBhZ2VudC5lcnJvciA9IHJlc3VsdD8uZXJyb3IgfHwgbnVsbFxuICAgICAgICBhZ2VudC5zdGF0dXMgPSBhZ2VudC5lcnJvciA/ICdmYWlsZWQnIDogcmVzdWx0Py5pbnRlcnJ1cHRlZCA/ICdjYW5jZWxsZWQnIDogJ2NvbXBsZXRlZCdcbiAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBpZiAoYWdlbnQuZ2VuZXJhdGlvbiAhPT0gZ2VuZXJhdGlvbikgcmV0dXJuXG4gICAgICAgIGFnZW50LmVycm9yID0gU3RyaW5nKGVycm9yPy5tZXNzYWdlIHx8IGVycm9yKVxuICAgICAgICBhZ2VudC5zdGF0dXMgPSBhZ2VudC5jb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkID8gJ2NhbmNlbGxlZCcgOiAnZmFpbGVkJ1xuICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmIChhZ2VudC5nZW5lcmF0aW9uICE9PSBnZW5lcmF0aW9uKSByZXR1cm4gYWdlbnQucmVzb2x2ZShhZ2VudClcbiAgICAgICAgYWdlbnQuZW5kZWRBdCA9IERhdGUubm93KClcbiAgICAgICAgYWN0aXZlLS1cbiAgICAgICAgb25GaW5pc2goYWdlbnQpXG4gICAgICAgIGNoYW5nZWQoKVxuICAgICAgICBhZ2VudC5yZXNvbHZlKGFnZW50KVxuICAgICAgICBwdW1wKClcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnQob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRzKCksIC4uLm9wdGlvbnMgfVxuICAgIGNvbnN0IGlkID0gU3RyaW5nKG5leHRJZCsrKVxuICAgIGxldCByZXNvbHZlXG4gICAgY29uc3QgZG9uZSA9IG5ldyBQcm9taXNlKChyKSA9PiB7IHJlc29sdmUgPSByIH0pXG4gICAgaWYgKCFvcHRpb25zLnByb21wdD8udHJpbSgpKSB0aHJvdyBuZXcgRXJyb3IoJ2FnZW50IHByb21wdCBpcyByZXF1aXJlZCcpXG4gICAgY29uc3QgYWdlbnQgPSB7XG4gICAgICBpZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uIHx8IG9wdGlvbnMucHJvbXB0LnNsaWNlKDAsIDgwKSxcbiAgICAgIHByb21wdDogb3B0aW9ucy5wcm9tcHQsXG4gICAgICBtb2RlbDogb3B0aW9ucy5tb2RlbCxcbiAgICAgIHJvbGU6IG9wdGlvbnMucm9sZSB8fCAnd29ya2VyJyxcbiAgICAgIHBhcmVudElkOiBvcHRpb25zLnBhcmVudElkIHx8IG51bGwsXG4gICAgICB0b29sczogb3B0aW9ucy50b29scyB8fCBbXSxcbiAgICAgIHN0YXR1czogJ3F1ZXVlZCcsXG4gICAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXG4gICAgICB1cGRhdGVkQXQ6IERhdGUubm93KCksXG4gICAgICBzdGFydGVkQXQ6IG51bGwsXG4gICAgICBlbmRlZEF0OiBudWxsLFxuICAgICAgZXZlbnRzOiBbXSxcbiAgICAgIHJlc3VsdDogJycsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIHVzYWdlOiBudWxsLFxuICAgICAgY29udHJvbGxlcjogbmV3IEFib3J0Q29udHJvbGxlcigpLFxuICAgICAgcmVzb2x2ZSxcbiAgICAgIGRvbmUsXG4gICAgICBvcHRpb25zLFxuICAgIH1cbiAgICBhZ2VudHMuc2V0KGlkLCBhZ2VudClcbiAgICBvbkNyZWF0ZShhZ2VudClcbiAgICBxdWV1ZS5wdXNoKGFnZW50KVxuICAgIGNoYW5nZWQoKVxuICAgIHB1bXAoKVxuICAgIHJldHVybiBhZ2VudFxuICB9XG5cbiAgZnVuY3Rpb24gcmVzdG9yZShldmVudHMpIHtcbiAgICBnZW5lcmF0aW9uKytcbiAgICBmb3IgKGNvbnN0IGFnZW50IG9mIGFnZW50cy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGFnZW50LnN0YXR1cyA9PT0gJ3F1ZXVlZCcpIGFnZW50LnJlc29sdmUoYWdlbnQpXG4gICAgICBlbHNlIGlmIChhZ2VudC5zdGF0dXMgPT09ICdydW5uaW5nJykgYWdlbnQuY29udHJvbGxlci5hYm9ydCgpXG4gICAgfVxuICAgIGFnZW50cy5jbGVhcigpXG4gICAgcXVldWUubGVuZ3RoID0gMFxuICAgIGFjdGl2ZSA9IDBcbiAgICBsZXQgbWF4SWQgPSAwXG4gICAgZm9yIChjb25zdCBhZ2VudCBvZiByZWR1Y2VBZ2VudEV2ZW50cyhldmVudHMpKSB7XG4gICAgICBhZ2VudHMuc2V0KGFnZW50LmlkLCBhZ2VudClcbiAgICAgIG1heElkID0gTWF0aC5tYXgobWF4SWQsIE51bWJlcihhZ2VudC5pZCkgfHwgMClcbiAgICB9XG4gICAgbmV4dElkID0gbWF4SWQgKyAxXG4gICAgY2hhbmdlZCgpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXJ0LFxuICAgIHJlc3RvcmUsXG4gICAgY2xlYXI6ICgpID0+IHJlc3RvcmUoW10pLFxuICAgIGdldDogKGlkKSA9PiBhZ2VudHMuZ2V0KFN0cmluZyhpZCkpIHx8IG51bGwsXG4gICAgbGlzdDogKCkgPT4gWy4uLmFnZW50cy52YWx1ZXMoKV0uc29ydCgoYSwgYikgPT4gTnVtYmVyKGIuaWQpIC0gTnVtYmVyKGEuaWQpKSxcbiAgICBjb2xsZWN0OiBhc3luYyAoaWRzKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGF3YWl0IFByb21pc2UuYWxsKGlkcy5tYXAoKGlkKSA9PiBhZ2VudHMuZ2V0KFN0cmluZyhpZCkpPy5kb25lKS5maWx0ZXIoQm9vbGVhbikpXG4gICAgICBjb25zdCBhdCA9IERhdGUubm93KClcbiAgICAgIGZvciAoY29uc3QgYWdlbnQgb2Ygc2VsZWN0ZWQpIGFnZW50LmNvbGxlY3RlZEF0ID0gYXRcbiAgICAgIGNoYW5nZWQoKVxuICAgICAgcmV0dXJuIHNlbGVjdGVkXG4gICAgfSxcbiAgICBkaXNtaXNzKGlkKSB7XG4gICAgICBjb25zdCBhZ2VudCA9IGFnZW50cy5nZXQoU3RyaW5nKGlkKSlcbiAgICAgIGlmICghYWdlbnQgfHwgWydxdWV1ZWQnLCAncnVubmluZyddLmluY2x1ZGVzKGFnZW50LnN0YXR1cykpIHJldHVybiBmYWxzZVxuICAgICAgYWdlbnRzLmRlbGV0ZShTdHJpbmcoaWQpKVxuICAgICAgY2hhbmdlZCgpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sXG4gICAgY2FuY2VsKGlkKSB7XG4gICAgICBjb25zdCBhZ2VudCA9IGFnZW50cy5nZXQoU3RyaW5nKGlkKSlcbiAgICAgIGlmICghYWdlbnQgfHwgWydjb21wbGV0ZWQnLCAnZmFpbGVkJywgJ2NhbmNlbGxlZCddLmluY2x1ZGVzKGFnZW50LnN0YXR1cykpIHJldHVybiBmYWxzZVxuICAgICAgaWYgKGFnZW50LnN0YXR1cyA9PT0gJ3F1ZXVlZCcpIHtcbiAgICAgICAgYWdlbnQuc3RhdHVzID0gJ2NhbmNlbGxlZCdcbiAgICAgICAgYWdlbnQuZW5kZWRBdCA9IERhdGUubm93KClcbiAgICAgICAgb25GaW5pc2goYWdlbnQpXG4gICAgICAgIGFnZW50LnJlc29sdmUoYWdlbnQpXG4gICAgICAgIGNoYW5nZWQoKVxuICAgICAgfSBlbHNlIGFnZW50LmNvbnRyb2xsZXIuYWJvcnQoKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LFxuICAgIGNhbmNlbEFsbCgpIHtcbiAgICAgIGZvciAoY29uc3QgYWdlbnQgb2YgYWdlbnRzLnZhbHVlcygpKSB0aGlzLmNhbmNlbChhZ2VudC5pZClcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZGRpciwgc3RhdCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJ1xuaW1wb3J0IHsgcGljb0hvbWUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsVG9vbHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICd0b29scycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0VG9vbHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAndG9vbHMnKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZSh0b29sLCBmaWxlKSB7XG4gIGlmICghdG9vbCB8fCB0eXBlb2YgdG9vbCAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcignZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgdG9vbCBvYmplY3QnKVxuICBpZiAodHlwZW9mIHRvb2wubmFtZSAhPT0gJ3N0cmluZycgfHwgIXRvb2wubmFtZSkgdGhyb3cgbmV3IEVycm9yKCd0b29sLm5hbWUgbXVzdCBiZSBhIHN0cmluZycpXG4gIGlmICh0eXBlb2YgdG9vbC5kZXNjcmlwdGlvbiAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcigndG9vbC5kZXNjcmlwdGlvbiBtdXN0IGJlIGEgc3RyaW5nJylcbiAgaWYgKHR5cGVvZiB0b29sLmV4ZWN1dGUgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcigndG9vbC5leGVjdXRlIG11c3QgYmUgYSBmdW5jdGlvbicpXG4gIGlmICghdG9vbC5zY2hlbWEgfHwgdHlwZW9mIHRvb2wuc2NoZW1hICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCd0b29sLnNjaGVtYSBtdXN0IGJlIGFuIG9iamVjdCcpXG4gIHJldHVybiB7IC4uLnRvb2wsIF9maWxlOiBmaWxlIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZFRvb2woZmlsZSwgY29udGV4dCkge1xuICBjb25zdCB7IG10aW1lTXMgfSA9IGF3YWl0IHN0YXQoZmlsZSlcbiAgY29uc3QgbW9kdWxlID0gYXdhaXQgaW1wb3J0KGAke3BhdGhUb0ZpbGVVUkwoZmlsZSkuaHJlZn0/dj0ke210aW1lTXN9YClcbiAgY29uc3QgZXhwb3J0ZWQgPSBtb2R1bGUuZGVmYXVsdFxuICBjb25zdCB0b29sID0gdHlwZW9mIGV4cG9ydGVkID09PSAnZnVuY3Rpb24nID8gYXdhaXQgZXhwb3J0ZWQoY29udGV4dCkgOiBleHBvcnRlZFxuICByZXR1cm4gdmFsaWRhdGUodG9vbCwgZmlsZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIGNvbnRleHQsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHRvb2xzOiBbXSwgZXJyb3JzOiBbXSB9XG4gIH1cbiAgY29uc3QgdG9vbHMgPSBbXVxuICBjb25zdCBlcnJvcnMgPSBbXVxuICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIW5hbWUuZW5kc1dpdGgoJy5qcycpICYmICFuYW1lLmVuZHNXaXRoKCcubWpzJykpIGNvbnRpbnVlXG4gICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBuYW1lKVxuICAgIHRyeSB7XG4gICAgICB0b29scy5wdXNoKHsgLi4uKGF3YWl0IGxvYWRUb29sKGZpbGUsIGNvbnRleHQpKSwgc291cmNlIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnJvcnMucHVzaCh7IGZpbGUsIGVycm9yOiBTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAyMDApIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHRvb2xzLCBlcnJvcnMgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2NhblVzZXJUb29scyh7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB7IGN3ZCwgcm9vdCB9XG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsVG9vbHNEaXIoKSwgY29udGV4dCwgJ2dsb2JhbCcpXG4gIGNvbnN0IHByb2plY3QgPSBhd2FpdCBzY2FuRGlyKHByb2plY3RUb29sc0Rpcihyb290KSwgY29udGV4dCwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCB0b29sIG9mIFsuLi5nbG9iYWwudG9vbHMsIC4uLnByb2plY3QudG9vbHNdKSBieU5hbWUuc2V0KHRvb2wubmFtZSwgdG9vbClcbiAgcmV0dXJuIHsgdG9vbHM6IFsuLi5ieU5hbWUudmFsdWVzKCldLCBlcnJvcnM6IFsuLi5nbG9iYWwuZXJyb3JzLCAuLi5wcm9qZWN0LmVycm9yc10gfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VycmVudChwYXRoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWRGaWxlKHBhdGgsICd1dGYtOCcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldmVydEVkaXRzKGVkaXRzKSB7XG4gIGNvbnN0IHJldmVydGVkID0gW11cbiAgY29uc3Qgc2tpcHBlZCA9IFtdXG4gIGZvciAoY29uc3QgZWRpdCBvZiBbLi4uZWRpdHNdLnJldmVyc2UoKSkge1xuICAgIGNvbnN0IHsgcGF0aCwgYmVmb3JlLCBhZnRlciB9ID0gZWRpdC5yZXZlcnRcbiAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgcmVhZEN1cnJlbnQocGF0aClcbiAgICBpZiAoY3VycmVudCA9PT0gYWZ0ZXIpIHtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLCBiZWZvcmUsICd1dGYtOCcpXG4gICAgICByZXZlcnRlZC5wdXNoKGVkaXQuY2FsbElkKVxuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBwYXRoLCBjYWxsSWQ6IGVkaXQuY2FsbElkLCByZWFzb246ICdmaWxlIGNoYW5nZWQgc2luY2UgZWRpdCcgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcmV2ZXJ0ZWQsIHNraXBwZWQgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhcHBseUVkaXRzKGVkaXRzKSB7XG4gIGNvbnN0IHJlYXBwbGllZCA9IFtdXG4gIGNvbnN0IHNraXBwZWQgPSBbXVxuICBmb3IgKGNvbnN0IGVkaXQgb2YgZWRpdHMpIHtcbiAgICBjb25zdCB7IHBhdGgsIGJlZm9yZSwgYWZ0ZXIgfSA9IGVkaXQucmV2ZXJ0XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlYWRDdXJyZW50KHBhdGgpXG4gICAgaWYgKGN1cnJlbnQgPT09IGJlZm9yZSkge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGgsIGFmdGVyLCAndXRmLTgnKVxuICAgICAgcmVhcHBsaWVkLnB1c2goZWRpdC5jYWxsSWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNraXBwZWQucHVzaCh7IHBhdGgsIGNhbGxJZDogZWRpdC5jYWxsSWQsIHJlYXNvbjogJ2ZpbGUgY2hhbmdlZCBzaW5jZSByZXZlcnQnIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJlYXBwbGllZCwgc2tpcHBlZCB9XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHRyYW5zY3JpcHRUb01hcmtkb3duKHRyYW5zY3JpcHQsIHsgdGl0bGUgPSAncGljbyBzZXNzaW9uJyB9ID0ge30pIHtcbiAgY29uc3QgcGFydHMgPSBbYCMgJHt0aXRsZX1gLCAnJ11cbiAgZm9yIChjb25zdCBpdGVtIG9mIHRyYW5zY3JpcHQpIHtcbiAgICBpZiAoaXRlbS5raW5kID09PSAndXNlcicpIHtcbiAgICAgIHBhcnRzLnB1c2goJyMjIFlvdScsICcnLCBpdGVtLnRleHQsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgcGFydHMucHVzaChpdGVtLmludGVycnVwdGVkID8gYCR7aXRlbS50ZXh0fVxcblxcbiooaW50ZXJydXB0ZWQpKmAgOiBpdGVtLnRleHQsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAndG9vbCcpIHtcbiAgICAgIGNvbnN0IGxhYmVsID0gaXRlbS5kaWZmID8gYCAoKyR7aXRlbS5kaWZmLmFkZGl0aW9uc30gLSR7aXRlbS5kaWZmLmRlbGV0aW9uc30pYCA6ICcnXG4gICAgICBwYXJ0cy5wdXNoKGA+ICR7aXRlbS5zdGF0dXMgPT09ICdyZXZlcnRlZCcgPyAnXHUyMUE5JyA6ICdcdTI3MTMnfSBcXGAke2l0ZW0ubmFtZX1cXGAgJHtpdGVtLnRpdGxlfSR7bGFiZWx9YCwgJycpXG4gICAgfSBlbHNlIGlmIChpdGVtLmtpbmQgPT09ICdzdW1tYXJ5Jykge1xuICAgICAgcGFydHMucHVzaChgPiBzdW1tYXJ5OiAke2l0ZW0udGV4dH1gLCAnJylcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpXG59XG4iLCAiaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vZnV6enkuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlLCByZXNvbHZlIH0pIHtcbiAgaWYgKHZhbHVlLmluY2x1ZGVzKCdcXG4nKSkgcmV0dXJuIG51bGxcbiAgY29uc3QgbSA9IHZhbHVlLm1hdGNoKC9eXFwvKFxcUyspICguKikkLylcbiAgaWYgKCFtKSByZXR1cm4gbnVsbFxuICBjb25zdCBzb3VyY2UgPSByZXNvbHZlKG1bMV0udG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFzb3VyY2UgfHwgc291cmNlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcbiAgY29uc3QgdG9rZW5zID0gbVsyXS5zcGxpdCgnICcpXG4gIGNvbnN0IHBhcnRpYWwgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdXG4gIGNvbnN0IG1hdGNoZXMgPSBzb3VyY2VcbiAgICAubWFwKChzKSA9PiBbZnV6enlTY29yZShwYXJ0aWFsLCBzKSwgc10pXG4gICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgLm1hcCgoWywgc10pID0+IHMpXG4gIHJldHVybiB7IHBhcnRpYWwsIG1hdGNoZXMsIHN0YXJ0OiB2YWx1ZS5sZW5ndGggLSBwYXJ0aWFsLmxlbmd0aCB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNvbXBsZXRpb24odmFsdWUsIGN0eCwgY2FuZGlkYXRlKSB7XG4gIHJldHVybiB2YWx1ZS5zbGljZSgwLCBjdHguc3RhcnQpICsgY2FuZGlkYXRlICsgJyAnXG59XG4iLCAiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZmcgZnJvbSAnZmFzdC1nbG9iJ1xuXG5jb25zdCBNQVhfRklMRVMgPSA1MDAwXG5jb25zdCBUVEwgPSA1MDAwXG5cbmxldCBjYWNoZWQgPSB7IGF0OiAwLCBjd2Q6IG51bGwsIGZpbGVzOiBbXSB9XG5jb25zdCBwZW5kaW5nID0gbmV3IE1hcCgpXG5cbmZ1bmN0aW9uIHJpcGdyZXBGaWxlcyhjd2QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFsnLS1maWxlcycsICctLWhpZGRlbicsICctLWdsb2InLCAnISoqLy5naXQvKionLCAnLS1zb3J0cj1tb2RpZmllZCddXG4gICAgZXhlY0ZpbGUoJ3JnJywgYXJncywgeyBjd2QsIG1heEJ1ZmZlcjogNTAgKiAxMDI0ICogMTAyNCB9LCAoZXJyLCBzdGRvdXQpID0+IHtcbiAgICAgIHJlc29sdmUoZXJyICYmICFzdGRvdXQgPyBudWxsIDogc3Rkb3V0LnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbikpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RGaWxlcyhjd2QpIHtcbiAgaWYgKGNhY2hlZC5jd2QgPT09IGN3ZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNhY2hlZC5maWxlcylcbiAgaWYgKHBlbmRpbmcuaGFzKGN3ZCkpIHJldHVybiBwZW5kaW5nLmdldChjd2QpXG5cbiAgY29uc3QgcmVxdWVzdCA9IChhc3luYyAoKSA9PiB7XG4gICAgbGV0IGZpbGVzID0gYXdhaXQgcmlwZ3JlcEZpbGVzKGN3ZClcbiAgICBpZiAoIWZpbGVzKSB7XG4gICAgICBmaWxlcyA9IGF3YWl0IGZnKCcqKi8qJywge1xuICAgICAgICBjd2QsXG4gICAgICAgIG9ubHlGaWxlczogdHJ1ZSxcbiAgICAgICAgZG90OiB0cnVlLFxuICAgICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqLy5naXQvKionXSxcbiAgICAgIH0pLmNhdGNoKCgpID0+IFtdKVxuICAgIH1cbiAgICBjYWNoZWQgPSB7IGF0OiBEYXRlLm5vdygpLCBjd2QsIGZpbGVzOiBmaWxlcy5zbGljZSgwLCBNQVhfRklMRVMpIH1cbiAgICByZXR1cm4gY2FjaGVkLmZpbGVzXG4gIH0pKCkuZmluYWxseSgoKSA9PiBwZW5kaW5nLmRlbGV0ZShjd2QpKVxuXG4gIHBlbmRpbmcuc2V0KGN3ZCwgcmVxdWVzdClcbiAgcmV0dXJuIHJlcXVlc3Rcbn1cbiIsICJpbXBvcnQgeyBjb2RlVG9BTlNJIH0gZnJvbSAnQHNoaWtpanMvY2xpJ1xuaW1wb3J0IHsgY3JlYXRlU2lnbmFsIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgc2hpa2lUaGVtZSB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IExBTkdTID0ge1xuICBqczogJ2pzJywgbWpzOiAnanMnLCBjanM6ICdqcycsIGpzeDogJ2pzeCcsIHRzOiAndHMnLCB0c3g6ICd0c3gnLFxuICBqc29uOiAnanNvbicsIGpzb25sOiAnanNvbicsIG1kOiAnbWQnLCBweTogJ3B5dGhvbicsIHJiOiAncnVieScsIGdvOiAnZ28nLFxuICByczogJ3J1c3QnLCBjOiAnYycsIGg6ICdjJywgY3BwOiAnY3BwJywgamF2YTogJ2phdmEnLCBjc3M6ICdjc3MnLFxuICBodG1sOiAnaHRtbCcsIHZ1ZTogJ3Z1ZScsIHNoOiAnYmFzaCcsIGJhc2g6ICdiYXNoJywgenNoOiAnYmFzaCcsXG4gIHltbDogJ3lhbWwnLCB5YW1sOiAneWFtbCcsIHRvbWw6ICd0b21sJywgc3FsOiAnc3FsJywgc3ZlbHRlOiAnc3ZlbHRlJyxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhbmdGb3JQYXRoKHBhdGgpIHtcbiAgY29uc3QgZXh0ID0gU3RyaW5nKHBhdGgpLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKVxuICByZXR1cm4gTEFOR1NbZXh0XSB8fCAndHh0J1xufVxuXG5jb25zdCBjYWNoZSA9IG5ldyBNYXAoKVxuY29uc3QgcGVuZGluZyA9IG5ldyBTZXQoKVxuY29uc3QgZmFpbGVkID0gbmV3IFNldCgpXG5jb25zdCBbdmVyc2lvbiwgc2V0VmVyc2lvbl0gPSBjcmVhdGVTaWduYWwoMClcblxuZXhwb3J0IGNvbnN0IGhpZ2hsaWdodFZlcnNpb24gPSB2ZXJzaW9uXG5cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHQoY29kZSwgbGFuZykge1xuICBjb25zdCBzYWZlTGFuZyA9IGxhbmcgJiYgIWZhaWxlZC5oYXMobGFuZykgPyBsYW5nIDogJ3R4dCdcbiAgY29uc3QgdGhlbWUgPSBzaGlraVRoZW1lKClcbiAgcmV0dXJuIGNvZGVcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9XFxuJHtzYWZlTGFuZ31cXG4ke2xpbmV9YFxuICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSByZXR1cm4gY2FjaGUuZ2V0KGtleSlcbiAgICAgIHdhcm0obGluZSwgc2FmZUxhbmcsIHRoZW1lLCBrZXkpXG4gICAgICByZXR1cm4gbGluZVxuICAgIH0pXG4gICAgLmpvaW4oJ1xcbicpXG59XG5cbmZ1bmN0aW9uIHdhcm0obGluZSwgbGFuZywgdGhlbWUsIGtleSkge1xuICBpZiAocGVuZGluZy5oYXMoa2V5KSkgcmV0dXJuXG4gIHBlbmRpbmcuYWRkKGtleSlcbiAgY29kZVRvQU5TSShsaW5lLCBsYW5nLCB0aGVtZSlcbiAgICAudGhlbigoYW5zaSkgPT4gY2FjaGUuc2V0KGtleSwgYW5zaS5yZXBsYWNlKC9cXG4kLywgJycpKSlcbiAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgZmFpbGVkLmFkZChsYW5nKVxuICAgICAgY2FjaGUuc2V0KGtleSwgbGluZSlcbiAgICB9KVxuICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgIHBlbmRpbmcuZGVsZXRlKGtleSlcbiAgICAgIHNldFZlcnNpb24oKHYpID0+IHYgKyAxKVxuICAgIH0pXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuXG5jb25zdCBQQUxFVFRFUyA9IHtcbiAgZGFyazoge1xuICAgIGRlc2M6ICdsaWdodCB0ZXh0IGZvciBkYXJrIHRlcm1pbmFscycsXG4gICAgYWNjZW50OiAnIzIyZDNlZScsXG4gICAgZmc6ICcjZTVlN2ViJyxcbiAgICBmZ1NvZnQ6ICcjOWNhM2FmJyxcbiAgICBtdXRlZDogJyM2YjcyODAnLFxuICAgIGZhaW50OiAnIzRiNTU2MycsXG4gICAgcGFuZWxCZzogJyMxZTFlMjInLFxuICAgIHNlbGVjdEJnOiAnIzM3NDE1MScsXG4gICAgcmVkOiAnI2Y4NzE3MScsXG4gICAgZ3JlZW46ICcjNGFkZTgwJyxcbiAgICBoaWdobGlnaHQ6ICcjZmZmZmZmJyxcbiAgICBzaGlraTogJ25vcmQnLFxuICB9LFxuICBsaWdodDoge1xuICAgIGRlc2M6ICdkYXJrIHRleHQgZm9yIGxpZ2h0IHRlcm1pbmFscycsXG4gICAgYWNjZW50OiAnIzBmOWQ2MycsXG4gICAgZmc6ICcjMWYyNDMwJyxcbiAgICBmZ1NvZnQ6ICcjNGI1NTYzJyxcbiAgICBtdXRlZDogJyM2YjcyODAnLFxuICAgIGZhaW50OiAnI2EzYThiMycsXG4gICAgcGFuZWxCZzogJyNlOWU5ZWUnLFxuICAgIHNlbGVjdEJnOiAnI2Q0ZDRkYycsXG4gICAgcmVkOiAnI2RjMjYyNicsXG4gICAgZ3JlZW46ICcjMTZhMzRhJyxcbiAgICBoaWdobGlnaHQ6ICcjMTExODI3JyxcbiAgICBzaGlraTogJ2dpdGh1Yi1saWdodCcsXG4gIH0sXG4gIG5vcmQ6IHtcbiAgICBkZXNjOiAnYXJjdGljIGJsdWVzIG9uIHBvbGFyIG5pZ2h0JyxcbiAgICBhY2NlbnQ6ICcjODhjMGQwJyxcbiAgICBmZzogJyNkOGRlZTknLFxuICAgIGZnU29mdDogJyNhYWIyYzQnLFxuICAgIG11dGVkOiAnIzdiODhhMScsXG4gICAgZmFpbnQ6ICcjNjE2ZTg4JyxcbiAgICBwYW5lbEJnOiAnIzNiNDI1MicsXG4gICAgc2VsZWN0Qmc6ICcjNDM0YzVlJyxcbiAgICByZWQ6ICcjYmY2MTZhJyxcbiAgICBncmVlbjogJyNhM2JlOGMnLFxuICAgIGhpZ2hsaWdodDogJyNlY2VmZjQnLFxuICAgIHNoaWtpOiAnbm9yZCcsXG4gIH0sXG59XG5cbmV4cG9ydCBsZXQgREVGQVVMVF9BQ0NFTlQgPSBQQUxFVFRFUy5kYXJrLmFjY2VudFxuZXhwb3J0IGxldCBGRyA9IFBBTEVUVEVTLmRhcmsuZmdcbmV4cG9ydCBsZXQgRkdfU09GVCA9IFBBTEVUVEVTLmRhcmsuZmdTb2Z0XG5leHBvcnQgbGV0IE1VVEVEID0gUEFMRVRURVMuZGFyay5tdXRlZFxuZXhwb3J0IGxldCBGQUlOVCA9IFBBTEVUVEVTLmRhcmsuZmFpbnRcbmV4cG9ydCBsZXQgUEFORUxfQkcgPSBQQUxFVFRFUy5kYXJrLnBhbmVsQmdcbmV4cG9ydCBsZXQgU0VMRUNUX0JHID0gUEFMRVRURVMuZGFyay5zZWxlY3RCZ1xuZXhwb3J0IGxldCBSRUQgPSBQQUxFVFRFUy5kYXJrLnJlZFxuZXhwb3J0IGxldCBHUkVFTiA9IFBBTEVUVEVTLmRhcmsuZ3JlZW5cbmV4cG9ydCBsZXQgSElHSExJR0hUID0gUEFMRVRURVMuZGFyay5oaWdobGlnaHRcblxubGV0IGN1cnJlbnRQYWxldHRlID0gJ2RhcmsnXG5sZXQgZXhwbGljaXRBY2NlbnQgPSBudWxsXG5cbmNvbnN0IFthY2NlbnRWYWx1ZSwgc2V0QWNjZW50VmFsdWVdID0gY3JlYXRlU2lnbmFsKERFRkFVTFRfQUNDRU5UKVxuXG5leHBvcnQgY29uc3QgYWNjZW50ID0gYWNjZW50VmFsdWVcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFjY2VudChjb2xvcikge1xuICBleHBsaWNpdEFjY2VudCA9IGNvbG9yIHx8IG51bGxcbiAgc2V0QWNjZW50VmFsdWUoZXhwbGljaXRBY2NlbnQgfHwgREVGQVVMVF9BQ0NFTlQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYWxldHRlKG5hbWUpIHtcbiAgY3VycmVudFBhbGV0dGUgPSBQQUxFVFRFU1tuYW1lXSA/IG5hbWUgOiAnZGFyaydcbiAgY29uc3QgcCA9IFBBTEVUVEVTW2N1cnJlbnRQYWxldHRlXVxuICBERUZBVUxUX0FDQ0VOVCA9IHAuYWNjZW50XG4gIEZHID0gcC5mZ1xuICBGR19TT0ZUID0gcC5mZ1NvZnRcbiAgTVVURUQgPSBwLm11dGVkXG4gIEZBSU5UID0gcC5mYWludFxuICBQQU5FTF9CRyA9IHAucGFuZWxCZ1xuICBTRUxFQ1RfQkcgPSBwLnNlbGVjdEJnXG4gIFJFRCA9IHAucmVkXG4gIEdSRUVOID0gcC5ncmVlblxuICBISUdITElHSFQgPSBwLmhpZ2hsaWdodFxuICBzZXRBY2NlbnRWYWx1ZShleHBsaWNpdEFjY2VudCB8fCBwLmFjY2VudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhbGV0dGVOYW1lKCkge1xuICByZXR1cm4gY3VycmVudFBhbGV0dGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhbGV0dGVMaXN0KCkge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoUEFMRVRURVMpLm1hcCgoW2tleSwgcF0pID0+ICh7IGtleSwgZGVzYzogcC5kZXNjIH0pKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hpa2lUaGVtZSgpIHtcbiAgcmV0dXJuIFBBTEVUVEVTW2N1cnJlbnRQYWxldHRlXS5zaGlraVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjb21wYWN0TnVtYmVyKHZhbHVlKSB7XG4gIGNvbnN0IG4gPSBNYXRoLnJvdW5kKHZhbHVlKVxuICBpZiAoTWF0aC5hYnMobikgPj0gMV8wMDBfMDAwKSByZXR1cm4gYCR7KG4gLyAxXzAwMF8wMDApLnRvRml4ZWQoMSl9bWBcbiAgaWYgKE1hdGguYWJzKG4pID49IDFfMDAwKSByZXR1cm4gYCR7KG4gLyAxXzAwMCkudG9GaXhlZCgxKX1rYFxuICByZXR1cm4gU3RyaW5nKG4pXG59XG4iLCAiaW1wb3J0IHsgZWFzZSwgbGluZWFyLCB1c2VBbmltYXRlZCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcblxuZnVuY3Rpb24gdG9SZ2IoY29sb3IpIHtcbiAgaWYgKGNvbG9yPy5zdGFydHNXaXRoKCcjJykgJiYgY29sb3IubGVuZ3RoID09PSA3KSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KGNvbG9yLnNsaWNlKDEsIDMpLCAxNiksXG4gICAgICBwYXJzZUludChjb2xvci5zbGljZSgzLCA1KSwgMTYpLFxuICAgICAgcGFyc2VJbnQoY29sb3Iuc2xpY2UoNSwgNyksIDE2KSxcbiAgICBdXG4gIH1cbiAgcmV0dXJuIFsxMjcsIDEyNywgMTI3XVxufVxuXG5mdW5jdGlvbiBtaXhDb2xvcihmcm9tLCB0bywgYW1vdW50KSB7XG4gIGNvbnN0IGEgPSB0b1JnYihmcm9tKVxuICBjb25zdCBiID0gdG9SZ2IodG8pXG4gIGNvbnN0IGNoYW5uZWxzID0gYS5tYXAoKHZhbHVlLCBpKSA9PiBNYXRoLnJvdW5kKHZhbHVlICsgKGJbaV0gLSB2YWx1ZSkgKiBhbW91bnQpKVxuICByZXR1cm4gYCMke2NoYW5uZWxzLm1hcCgodmFsdWUpID0+IHZhbHVlLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKX1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBbmltYXRlZFZhbHVlKHsgdmFsdWUsIGluaXRpYWwgPSB2YWx1ZSwgZHVyYXRpb24gPSAxMDAwLCBjb2xvciwgaGlnaGxpZ2h0LCBmb3JtYXQgPSBTdHJpbmcgfSkge1xuICBjb25zdCBkaXNwbGF5ZWQgPSB1c2VBbmltYXRlZChpbml0aWFsLCBlYXNlKGR1cmF0aW9uKSlcbiAgY29uc3QgZ2xvdyA9IHVzZUFuaW1hdGVkKDAsIGVhc2UoZHVyYXRpb24sIGxpbmVhcikpXG5cbiAgaWYgKHZhbHVlICE9PSBkaXNwbGF5ZWQuX2FuaW0udGFyZ2V0KSB7XG4gICAgZGlzcGxheWVkLnNldCh2YWx1ZSlcbiAgICBnbG93LnNuYXAoMSlcbiAgICBnbG93LnNldCgwKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogbWl4Q29sb3IoY29sb3IsIGhpZ2hsaWdodCwgZ2xvdygpKSB9fT5cbiAgICAgIHtmb3JtYXQoZGlzcGxheWVkKCkpfVxuICAgIDwvdGV4dD5cbiAgKVxufVxuIiwgImltcG9ydCB7IERpZmYsIGVhc2UsIEhvcml6b250YWxTY3JvbGxCb3gsIGxpbmVhciwgTWFya2Rvd24sIFNwaW5uZXIsIHVzZUFuaW1hdGVkIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGRywgRkdfU09GVCwgTVVURUQsIEZBSU5ULCBQQU5FTF9CRywgUkVEIH0gZnJvbSAnLi90aGVtZS5qcydcbmltcG9ydCB7IGhpZ2hsaWdodCwgbGFuZ0ZvclBhdGggfSBmcm9tICcuL2hpZ2hsaWdodC5qcydcblxuZXhwb3J0IHsgZGVmYXVsdFRpdGxlIGFzIHVpVGl0bGUgfSBmcm9tICcuLi9jb3JlL3Rvb2xzL3JlY29yZGVyLmpzJ1xuXG5mdW5jdGlvbiBNYXJrZG93blNuaXBwZXQoeyB2YWx1ZSwgbGFuZ3VhZ2UsIGhpZ2hsaWdodDogaGlnaGxpZ2h0Q29kZSwgY29kZUJnIH0pIHtcbiAgY29uc3Qgc2hvd24gPSBoaWdobGlnaHRDb2RlID8gaGlnaGxpZ2h0Q29kZSh2YWx1ZSwgbGFuZ3VhZ2UpIDogdmFsdWVcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGJnOiBjb2RlQmcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgPHRleHQ+e3Nob3dufTwvdGV4dD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiBDb2RlU25pcHBldCh7IHZhbHVlLCBsYW5ndWFnZSwgaGlnaGxpZ2h0OiBoaWdobGlnaHRDb2RlLCBjb2RlQmcgfSkge1xuICBjb25zdCBzaG93biA9IGhpZ2hsaWdodENvZGUgPyBoaWdobGlnaHRDb2RlKHZhbHVlLCBsYW5ndWFnZSkgOiB2YWx1ZVxuICBjb25zdCBjb250ZW50V2lkdGggPSBNYXRoLm1heCgwLCAuLi52YWx1ZS5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBbLi4ubGluZV0ubGVuZ3RoKSkgKyAyXG4gIHJldHVybiAoXG4gICAgPEhvcml6b250YWxTY3JvbGxCb3ggY29udGVudFdpZHRoPXtjb250ZW50V2lkdGh9IHN0eWxlPXt7IGJnOiBjb2RlQmcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAge3Nob3duLnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUsIGtleSkgPT4gKFxuICAgICAgICAgIDx0ZXh0IGtleT17a2V5fSBzdHlsZT17eyBvdmVyZmxvdzogJ25vd3JhcCcgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgKSl9XG4gICAgICA8L2JveD5cbiAgICA8L0hvcml6b250YWxTY3JvbGxCb3g+XG4gIClcbn1cblxuZnVuY3Rpb24gVHJhbnNjcmlwdENvZGVCbG9jayhwcm9wcykge1xuICBjb25zdCBsYW5ndWFnZSA9IHByb3BzLmxhbmd1YWdlPy50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IENvbXBvbmVudCA9IGxhbmd1YWdlID09PSAnbWQnIHx8IGxhbmd1YWdlID09PSAnbWFya2Rvd24nID8gTWFya2Rvd25TbmlwcGV0IDogQ29kZVNuaXBwZXRcbiAgcmV0dXJuIDxDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBkaWZmUHJldmlld0xpbmVzKGRpZmYsIHJldmVydCkge1xuICBpZiAoZGlmZj8uaHVua3M/Lmxlbmd0aCkgcmV0dXJuIGRpZmYuaHVua3MucmVkdWNlKChzdW0sIGgpID0+IHN1bSArIGgubGluZXMubGVuZ3RoLCAwKVxuICAvLyBldmVudHMgcmVjb3JkZWQgYmVmb3JlIGNyZWF0ZWQtZmlsZSB3cml0ZXMgY2FycmllZCBodW5rczogc2l6ZSBmcm9tIHRoZSBjb250ZW50IGl0c2VsZlxuICByZXR1cm4gTWF0aC5tYXgoU3RyaW5nKHJldmVydD8uYWZ0ZXIgfHwgJycpLnNwbGl0KCdcXG4nKS5sZW5ndGgsIFN0cmluZyhyZXZlcnQ/LmJlZm9yZSB8fCAnJykuc3BsaXQoJ1xcbicpLmxlbmd0aCwgMilcbn1cblxuZnVuY3Rpb24gZm10RHVyYXRpb24obXMpIHtcbiAgaWYgKG1zIDwgNjAwMDApIHJldHVybiBgJHsobXMgLyAxMDAwKS50b0ZpeGVkKDIpfXNgXG4gIGNvbnN0IHNlY3MgPSBNYXRoLnJvdW5kKG1zIC8gMTAwMClcbiAgcmV0dXJuIGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tICR7c2VjcyAlIDYwfXNgXG59XG5cbmZ1bmN0aW9uIGZtdFJ1bm5pbmcobXMpIHtcbiAgY29uc3Qgc2VjcyA9IE1hdGguZmxvb3IobXMgLyAxMDAwKVxuICByZXR1cm4gc2VjcyA8IDYwID8gYCR7c2Vjc31zYCA6IGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tICR7c2VjcyAlIDYwfXNgXG59XG5cbmZ1bmN0aW9uIG1peENvbG9yKGZyb20sIHRvLCBhbW91bnQpIHtcbiAgY29uc3QgcmdiID0gKGNvbG9yKSA9PiBjb2xvcj8uc3RhcnRzV2l0aCgnIycpICYmIGNvbG9yLmxlbmd0aCA9PT0gN1xuICAgID8gWzEsIDMsIDVdLm1hcCgoaSkgPT4gcGFyc2VJbnQoY29sb3Iuc2xpY2UoaSwgaSArIDIpLCAxNikpXG4gICAgOiBbMTI3LCAxMjcsIDEyN11cbiAgY29uc3QgYSA9IHJnYihmcm9tKVxuICBjb25zdCBiID0gcmdiKHRvKVxuICByZXR1cm4gYCMke2EubWFwKCh2YWx1ZSwgaSkgPT4gTWF0aC5yb3VuZCh2YWx1ZSArIChiW2ldIC0gdmFsdWUpICogYW1vdW50KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyl9YFxufVxuXG5mdW5jdGlvbiBUb29sR3JvdXAoeyBpdGVtLCB2ZXJib3NlIH0pIHtcbiAgY29uc3QgbGF0ZXN0Q2FsbElkID0gaXRlbS50b29scy5hdCgtMSk/LmNhbGxJZFxuICBjb25zdCBnbG93ID0gdXNlQW5pbWF0ZWQoMCwgZWFzZSg1MDAsIGxpbmVhcikpXG4gIGlmIChsYXRlc3RDYWxsSWQgIT09IGdsb3cuX2NhbGxJZCkge1xuICAgIGdsb3cuX2NhbGxJZCA9IGxhdGVzdENhbGxJZFxuICAgIGlmIChpdGVtLmFjdGl2ZSkge1xuICAgICAgZ2xvdy5zbmFwKDEpXG4gICAgICBnbG93LnNldCgwKVxuICAgIH1cbiAgfVxuXG4gIGlmICh2ZXJib3NlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgIHtpdGVtLnRvb2xzLm1hcCgodG9vbCwgaSkgPT4gPFRvb2xDYXJkIGtleT17aX0gey4uLnRvb2x9IHZlcmJvc2Ugc2hvd0V4cGFuZEhpbnQ9e2ZhbHNlfSAvPil9XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBjb25zdCBjb3VudHMgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCB0b29sIG9mIGl0ZW0udG9vbHMpIGNvdW50cy5zZXQodG9vbC5uYW1lLCAoY291bnRzLmdldCh0b29sLm5hbWUpIHx8IDApICsgMSlcbiAgY29uc3QgZW50cmllcyA9IFsuLi5jb3VudHNdXG4gIGNvbnN0IHRvdGFsTXMgPSBpdGVtLnRvb2xzLnJlZHVjZSgoc3VtLCB0b29sKSA9PiBzdW0gKyAodG9vbC5kdXJhdGlvbk1zIHx8IDApLCAwKVxuICBjb25zdCBsYXRlc3ROYW1lID0gaXRlbS50b29scy5hdCgtMSk/Lm5hbWVcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgIHtpdGVtLmFjdGl2ZSA/IDxTcGlubmVyIGNvbG9yPXthY2NlbnQoKX0gLz4gOiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+XHUyNzEzPC90ZXh0Pn1cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgZmxleFdyYXA6ICd3cmFwJywgZmxleEdyb3c6IDEsIG1hcmdpblJpZ2h0OiAyIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBpdGVtLmFjdGl2ZSA/IEZHIDogTVVURUQgfX0+IENhbGxlZCA8L3RleHQ+XG4gICAgICAgICAge2VudHJpZXMubWFwKChbbmFtZSwgY291bnRdLCBpKSA9PiAoXG4gICAgICAgICAgICA8dGV4dCBrZXk9e25hbWV9IHN0eWxlPXt7IGNvbG9yOiBpdGVtLmFjdGl2ZSAmJiBuYW1lID09PSBsYXRlc3ROYW1lID8gbWl4Q29sb3IoRkcsIGFjY2VudCgpLCBnbG93KCkpIDogaXRlbS5hY3RpdmUgPyBGRyA6IE1VVEVEIH19PlxuICAgICAgICAgICAgICB7YCR7aSA/ICcsICcgOiAnJ30ke25hbWV9JHtjb3VudCA9PT0gMSA/ICcnIDogYCAke2NvdW50fSB0aW1lc2B9YH1cbiAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHt0b3RhbE1zID4gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIGZsZXhTaHJpbms6IDAgfX0+e2ZtdER1cmF0aW9uKHRvdGFsTXMpfTwvdGV4dD59XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiBUb29sQ2FyZCh7IG5hbWUsIHRpdGxlLCBzdGF0dXMsIGRpZmYsIHJldmVydCwgZnVsbE91dHB1dCwgZXJyb3IsIGJhY2tncm91bmQsIHZlcmJvc2UsIHNob3dFeHBhbmRIaW50ID0gdHJ1ZSwgc3RhcnRlZEF0LCBkdXJhdGlvbk1zIH0pIHtcbiAgY29uc3QgcnVubmluZyA9IHN0YXR1cyA9PT0gJ3J1bm5pbmcnXG4gIGNvbnN0IGludGVycnVwdGVkID0gc3RhdHVzID09PSAnaW50ZXJydXB0ZWQnXG4gIGNvbnN0IHJldmVydGVkID0gc3RhdHVzID09PSAncmV2ZXJ0ZWQnXG4gIGNvbnN0IGZhaWxlZCA9IHN0YXR1cyA9PT0gJ2Vycm9yJ1xuICBjb25zdCBvdXRMaW5lcyA9IGZ1bGxPdXRwdXQgPyBmdWxsT3V0cHV0LnNwbGl0KCdcXG4nKSA6IG51bGxcblxuICBjb25zdCBlbGFwc2VkID0gcnVubmluZyAmJiBzdGFydGVkQXQgPyBEYXRlLm5vdygpIC0gc3RhcnRlZEF0IDogMFxuICBjb25zdCB0b29rID0gIXJ1bm5pbmcgJiYgIWJhY2tncm91bmQgJiYgZHVyYXRpb25NcyAhPSBudWxsID8gZm10RHVyYXRpb24oZHVyYXRpb25NcykgOiBudWxsXG5cbiAgY29uc3QgaW5mbyA9IHJ1bm5pbmcgPyAoZWxhcHNlZCA+PSA1MDAwID8gYHJ1bm5pbmcgKCR7Zm10UnVubmluZyhlbGFwc2VkKX0pYCA6ICdydW5uaW5nJylcbiAgICA6IGludGVycnVwdGVkID8gJ2ludGVycnVwdGVkJ1xuICAgIDogcmV2ZXJ0ZWQgPyAncmV2ZXJ0ZWQnXG4gICAgOiBmYWlsZWQgPyBgZmFpbGVkJHt0b29rID8gYCBcdTAwQjcgJHt0b29rfWAgOiAnJ31gXG4gICAgOiBiYWNrZ3JvdW5kID8gJ2JhY2tncm91bmQgXHUwMEI3IC9zaGVsbHMnXG4gICAgOiBkaWZmID8gYCske2RpZmYuYWRkaXRpb25zfSAtJHtkaWZmLmRlbGV0aW9uc30ke3Rvb2sgPyBgIFx1MDBCNyAke3Rvb2t9YCA6ICcnfWBcbiAgICA6IG91dExpbmVzID8gYCR7b3V0TGluZXMubGVuZ3RofSAke291dExpbmVzLmxlbmd0aCA9PT0gMSA/ICdsaW5lJyA6ICdsaW5lcyd9JHt0b29rID8gYCBcdTAwQjcgJHt0b29rfWAgOiAnJ30ke3Nob3dFeHBhbmRIaW50ID8gJyBcdTAwQjcgY3RybCtvJyA6ICcnfWBcbiAgICA6IGBkb25lJHt0b29rID8gYCBcdTAwQjcgJHt0b29rfWAgOiAnJ31gXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICB7cnVubmluZ1xuICAgICAgICAgID8gPFNwaW5uZXIgY29sb3I9e2FjY2VudCgpfSAvPlxuICAgICAgICAgIDogPHRleHQgc3R5bGU9e3sgY29sb3I6IGludGVycnVwdGVkIHx8IGZhaWxlZCA/IFJFRCA6IHJldmVydGVkID8gTVVURUQgOiBhY2NlbnQoKSB9fT57aW50ZXJydXB0ZWQgPyAnXHUyNzE3JyA6IGZhaWxlZCA/ICdcdTI3MTcnIDogcmV2ZXJ0ZWQgPyAnXHUyMUE5JyA6ICdcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCR7bmFtZS5wYWRFbmQoNSl9IGB9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGRyB9fT57dGl0bGUgfHwgbmFtZX08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7aW5mb31gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgICAge2ZhaWxlZCAmJiBlcnJvciAmJiAoXG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2AgICR7ZXJyb3J9YH08L3RleHQ+XG4gICAgICApfVxuICAgICAge3JldmVydCAmJiAhcnVubmluZyAmJiAhcmV2ZXJ0ZWQgJiYgIShkaWZmICYmIGRpZmYuYWRkaXRpb25zID09PSAwICYmIGRpZmYuZGVsZXRpb25zID09PSAwKSAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogTWF0aC5taW4oZGlmZlByZXZpZXdMaW5lcyhkaWZmLCByZXZlcnQpICsgMSwgMTIpLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPERpZmZcbiAgICAgICAgICAgIGJlZm9yZT17cmV2ZXJ0LmJlZm9yZX1cbiAgICAgICAgICAgIGFmdGVyPXtyZXZlcnQuYWZ0ZXJ9XG4gICAgICAgICAgICBsYW5ndWFnZT17bGFuZ0ZvclBhdGgocmV2ZXJ0LnBhdGgpfVxuICAgICAgICAgICAgaGlnaGxpZ2h0PXtoaWdobGlnaHR9XG4gICAgICAgICAgICBjb250ZXh0PXszfVxuICAgICAgICAgICAgZm9sZHM9e2ZhbHNlfVxuICAgICAgICAgICAgZm9jdXNlZD17ZmFsc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXI9e2ZhbHNlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICAgIHtvdXRMaW5lcyAmJiB2ZXJib3NlICYmICFydW5uaW5nICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCQgJHt0aXRsZX1gfTwvdGV4dD5cbiAgICAgICAgICB7b3V0TGluZXMuc2xpY2UoMCwgMjAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAge291dExpbmVzLmxlbmd0aCA+IDIwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtvdXRMaW5lcy5sZW5ndGggLSAyMDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVzc2FnZSh7IGl0ZW0sIHZlcmJvc2UgfSkge1xuICBpZiAoaXRlbS5raW5kID09PSAndG9vbC1ncm91cCcpIHJldHVybiA8VG9vbEdyb3VwIGl0ZW09e2l0ZW19IHZlcmJvc2U9e3ZlcmJvc2V9IC8+XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ2FnZW50LW5vdGljZS1ncm91cCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBpdGFsaWM6IHRydWUgfX0+e2BcdTI2OTkgJHtpdGVtLm5vdGljZXMubGVuZ3RofSBhZ2VudHMgZmluaXNoZWRgfTwvdGV4dD5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnY3RybCtvJ308L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2l0ZW0ubm90aWNlcy5tYXAoKG5vdGljZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZUIH19Pntub3RpY2UudGV4dC5yZXBsYWNlKC9eXFxbc3lzdGVtIG5vdGlmaWNhdGlvblxcXVxccyovLCAnJyl9PC90ZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndG9vbCcpIHtcbiAgICByZXR1cm4gPFRvb2xDYXJkIHsuLi5pdGVtfSB2ZXJib3NlPXt2ZXJib3NlfSAvPlxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3N1bW1hcnknKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntpdGVtLnNvdXJjZSA9PT0gJ2NvbXBhY3QnID8gJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyBjb252ZXJzYXRpb24gY29tcGFjdGVkIGFib3ZlIHRoaXMgcG9pbnQnIDogJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyByZXdvdW5kIGNvbnZlcnNhdGlvbid9PC90ZXh0PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake2xpbmVzLmxlbmd0aH0gJHtsaW5lcy5sZW5ndGggPT09IDEgPyAnbGluZScgOiAnbGluZXMnfSBcdTAwQjcgY3RybCtvYH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2xpbmVzLnNsaWNlKDAsIDUwMCkubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgICAge2xpbmVzLmxlbmd0aCA+IDUwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtsaW5lcy5sZW5ndGggLSA1MDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndGhvdWdodHMnKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PnsnXHUyNzI2IHRob3VnaHRzJ308L3RleHQ+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCR7bGluZXMubGVuZ3RofSAke2xpbmVzLmxlbmd0aCA9PT0gMSA/ICdsaW5lJyA6ICdsaW5lcyd9IFx1MDBCNyBjdHJsK29gfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHt2ZXJib3NlICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgICB7bGluZXMuc2xpY2UoMCwgMzAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgaXRhbGljOiB0cnVlIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPiAzMDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyMDI2ICR7bGluZXMubGVuZ3RoIC0gMzAwfSBtb3JlIGxpbmVzYH08L3RleHQ+fVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ25vdGljZScpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNjk5ICR7aXRlbS50ZXh0LnJlcGxhY2UoL15cXFtzeXN0ZW0gbm90aWZpY2F0aW9uXFxdXFxzKi8sICcnKX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdza2lsbCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNzI2IHNraWxsOiAke2l0ZW0ubmFtZX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICd1c2VyJykge1xuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBwYWRkaW5nWTogMSB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e2l0ZW0udGV4dH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgdGV4dCA9IGl0ZW0uaW50ZXJydXB0ZWQgPyBgJHtpdGVtLnRleHR9ICooaW50ZXJydXB0ZWQpKmAgOiBpdGVtLnRleHRcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8TWFya2Rvd24gdGV4dD17dGV4dH0gaGlnaGxpZ2h0PXtoaWdobGlnaHR9IGNvZGVCZz17bnVsbH0gY29kZUJsb2NrPXtUcmFuc2NyaXB0Q29kZUJsb2NrfSAvPlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCBCdXR0b24sIFRleHRJbnB1dCwgdXNlSW5wdXQgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZBSU5ULCBGRywgRkdfU09GVCwgTVVURUQsIFBBTkVMX0JHLCBTRUxFQ1RfQkcgfSBmcm9tICcuL3RoZW1lLmpzJ1xuXG5mdW5jdGlvbiBhbnN3ZXJUZXh0KHF1ZXN0aW9uLCBhbnN3ZXIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5qb2luKCcsICcpXG4gIHJldHVybiBhbnN3ZXIgfHwgJ05vdCBhbnN3ZXJlZCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFF1ZXN0aW9uRm9ybSh7IHJlcXVlc3QsIGZvY3VzZWQsIG9uU3VibWl0LCBvbkNhbmNlbCB9KSB7XG4gIGNvbnN0IHF1ZXN0aW9ucyA9IHJlcXVlc3QucXVlc3Rpb25zXG4gIGNvbnN0IHJldmlld2luZyA9IHF1ZXN0aW9ucy5sZW5ndGggPiAxXG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbYW5zd2Vycywgc2V0QW5zd2Vyc10gPSBjcmVhdGVTaWduYWwoe30pXG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2N1c3RvbSwgc2V0Q3VzdG9tXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Jldmlldywgc2V0UmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2NvbnRyb2wsIHNldENvbnRyb2xdID0gY3JlYXRlU2lnbmFsKCdhbnN3ZXInKVxuXG4gIGNvbnN0IHF1ZXN0aW9uID0gKCkgPT4gcXVlc3Rpb25zW3N0ZXAoKV1cbiAgY29uc3Qgb3B0aW9ucyA9ICgpID0+IHF1ZXN0aW9uKCkub3B0aW9ucyB8fCBbXVxuICBjb25zdCByb3dzID0gKCkgPT4gWy4uLm9wdGlvbnMoKSwgLi4uKHF1ZXN0aW9uKCkuYWxsb3dPdGhlciA9PT0gZmFsc2UgPyBbXSA6IFt7IGxhYmVsOiAnT3RoZXInLCBvdGhlcjogdHJ1ZSB9XSldXG4gIGNvbnN0IHNlbGVjdGVkID0gKGxhYmVsKSA9PiAoYW5zd2VycygpW3F1ZXN0aW9uKCkuaWRdIHx8IFtdKS5pbmNsdWRlcyhsYWJlbClcbiAgY29uc3Qgb3RoZXJBbnN3ZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2VycygpW3F1ZXN0aW9uKCkuaWRdXG4gICAgY29uc3QgbGFiZWxzID0gbmV3IFNldChvcHRpb25zKCkubWFwKChvcHRpb24pID0+IG9wdGlvbi5sYWJlbCkpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5maW5kKCh2YWx1ZSkgPT4gIWxhYmVscy5oYXModmFsdWUpKSB8fCAnJ1xuICAgIHJldHVybiBhbnN3ZXIgJiYgIWxhYmVscy5oYXMoYW5zd2VyKSA/IGFuc3dlciA6ICcnXG4gIH1cblxuICBmdW5jdGlvbiBzZXRBbnN3ZXIodmFsdWUpIHtcbiAgICBzZXRBbnN3ZXJzKChjdXJyZW50KSA9PiAoeyAuLi5jdXJyZW50LCBbcXVlc3Rpb24oKS5pZF06IHZhbHVlIH0pKVxuICB9XG5cbiAgZnVuY3Rpb24gYWR2YW5jZSgpIHtcbiAgICBzZXRDdXN0b20oZmFsc2UpXG4gICAgc2V0Q3Vyc29yKDApXG4gICAgc2V0Q29udHJvbCgnYW5zd2VyJylcbiAgICBpZiAoc3RlcCgpIDwgcXVlc3Rpb25zLmxlbmd0aCAtIDEpIHNldFN0ZXAoc3RlcCgpICsgMSlcbiAgICBlbHNlIGlmIChyZXZpZXdpbmcpIHsgc2V0Q3Vyc29yKHF1ZXN0aW9ucy5sZW5ndGgpOyBzZXRSZXZpZXcodHJ1ZSkgfVxuICAgIGVsc2UgZmluaXNoKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmlzaCgpIHtcbiAgICBvblN1Ym1pdChxdWVzdGlvbnMubWFwKChpdGVtKSA9PiAoeyBpZDogaXRlbS5pZCwgcXVlc3Rpb246IGl0ZW0ucXVlc3Rpb24sIGFuc3dlcjogYW5zd2VycygpW2l0ZW0uaWRdID8/ICcnIH0pKSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHN1Ym1pdFRleHQodmFsdWUpIHtcbiAgICBjb25zdCBhbnN3ZXIgPSB2YWx1ZS50cmltKClcbiAgICBpZiAoIWFuc3dlcikgcmV0dXJuXG4gICAgc2V0QW5zd2VyKGFuc3dlcilcbiAgICBpZiAocXVlc3Rpb25zLmxlbmd0aCA9PT0gMSkgb25TdWJtaXQoW3sgaWQ6IGl0ZW0uaWQsIHF1ZXN0aW9uOiBpdGVtLnF1ZXN0aW9uLCBhbnN3ZXIgfV0pXG4gICAgZWxzZSBhZHZhbmNlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHN1Ym1pdE90aGVyKHZhbHVlKSB7XG4gICAgY29uc3QgYW5zd2VyID0gdmFsdWUudHJpbSgpXG4gICAgY29uc3Qga25vd24gPSBuZXcgU2V0KChpdGVtLm9wdGlvbnMgfHwgW10pLm1hcCgob3B0aW9uKSA9PiBvcHRpb24ubGFiZWwpKVxuICAgIGNvbnN0IGNob2ljZXMgPSBpdGVtLnR5cGUgPT09ICdtdWx0aScgPyAoYW5zd2VycygpW2l0ZW0uaWRdIHx8IFtdKS5maWx0ZXIoKGVudHJ5KSA9PiBrbm93bi5oYXMoZW50cnkpKSA6IFtdXG4gICAgY29uc3QgbmV4dEFuc3dlciA9IGl0ZW0udHlwZSA9PT0gJ211bHRpJyA/IFsuLi5jaG9pY2VzLCAuLi4oYW5zd2VyID8gW2Fuc3dlcl0gOiBbXSldIDogYW5zd2VyXG4gICAgc2V0QW5zd2VyKG5leHRBbnN3ZXIpXG4gICAgc2V0Q3VzdG9tKGZhbHNlKVxuICAgIGlmIChpdGVtLnR5cGUgPT09ICdzaW5nbGUnICYmIGFuc3dlcikge1xuICAgICAgaWYgKHF1ZXN0aW9ucy5sZW5ndGggPT09IDEpIG9uU3VibWl0KFt7IGlkOiBpdGVtLmlkLCBxdWVzdGlvbjogaXRlbS5xdWVzdGlvbiwgYW5zd2VyIH1dKVxuICAgICAgZWxzZSBhZHZhbmNlKClcbiAgICB9XG4gIH1cblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBpZiAoY3VzdG9tKCkpIHsgc2V0Q3VzdG9tKGZhbHNlKTsgc2V0Q29udHJvbCgnYW5zd2VyJykgfVxuICAgICAgZWxzZSBpZiAocmV2aWV3KCkpIHNldFJldmlldyhmYWxzZSlcbiAgICAgIGVsc2Ugb25DYW5jZWwoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocmV2aWV3KCkpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICd1cCcgfHwgZXZlbnQua2V5ID09PSAnaycpIHNldEN1cnNvcihNYXRoLm1heCgwLCBjdXJzb3IoKSAtIDEpKVxuICAgICAgZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnZG93bicgfHwgZXZlbnQua2V5ID09PSAnaicpIHNldEN1cnNvcihNYXRoLm1pbihxdWVzdGlvbnMubGVuZ3RoLCBjdXJzb3IoKSArIDEpKVxuICAgICAgZWxzZSBpZiAoZXZlbnQua2V5ID09PSAncmV0dXJuJykge1xuICAgICAgICBpZiAoY3Vyc29yKCkgPT09IHF1ZXN0aW9ucy5sZW5ndGgpIGZpbmlzaCgpXG4gICAgICAgIGVsc2UgeyBzZXRTdGVwKGN1cnNvcigpKTsgc2V0Q3Vyc29yKDApOyBzZXRDb250cm9sKCdhbnN3ZXInKTsgc2V0UmV2aWV3KGZhbHNlKSB9XG4gICAgICB9IGVsc2UgcmV0dXJuXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChzdGVwKCkgPiAwICYmIChldmVudC5rZXkgPT09ICd0YWInIHx8IGV2ZW50LmtleSA9PT0gJ3NoaWZ0LXRhYicpKSB7XG4gICAgICBzZXRDb250cm9sKGNvbnRyb2woKSA9PT0gJ2JhY2snID8gJ2Fuc3dlcicgOiAnYmFjaycpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjb250cm9sKCkgPT09ICdiYWNrJykgcmV0dXJuXG4gICAgaWYgKGN1c3RvbSgpKSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAndGFiJyB8fCBldmVudC5rZXkgPT09ICdzaGlmdC10YWInKSB7XG4gICAgICAgIHNldEN1c3RvbShmYWxzZSlcbiAgICAgICAgc2V0Q29udHJvbCgnYW5zd2VyJylcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocXVlc3Rpb24oKT8udHlwZSA9PT0gJ3RleHQnKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAndXAnIHx8IGV2ZW50LmtleSA9PT0gJ2snKSBzZXRDdXJzb3IoTWF0aC5tYXgoMCwgY3Vyc29yKCkgLSAxKSlcbiAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdkb3duJyB8fCBldmVudC5rZXkgPT09ICdqJykgc2V0Q3Vyc29yKE1hdGgubWluKHJvd3MoKS5sZW5ndGggLSAxLCBjdXJzb3IoKSArIDEpKVxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ3NwYWNlJyAmJiBxdWVzdGlvbigpLnR5cGUgPT09ICdtdWx0aScpIHtcbiAgICAgIGNvbnN0IHJvdyA9IHJvd3MoKVtjdXJzb3IoKV1cbiAgICAgIGlmIChyb3cub3RoZXIpIHtcbiAgICAgICAgaWYgKG90aGVyQW5zd2VyKCkpIHtcbiAgICAgICAgICBjb25zdCBrbm93biA9IG5ldyBTZXQob3B0aW9ucygpLm1hcCgob3B0aW9uKSA9PiBvcHRpb24ubGFiZWwpKVxuICAgICAgICAgIHNldEFuc3dlcigoYW5zd2VycygpW3F1ZXN0aW9uKCkuaWRdIHx8IFtdKS5maWx0ZXIoKGVudHJ5KSA9PiBrbm93bi5oYXMoZW50cnkpKSlcbiAgICAgICAgICBzZXRDdXN0b20oZmFsc2UpXG4gICAgICAgIH0gZWxzZSBzZXRDdXN0b20odHJ1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhbnN3ZXJzKClbcXVlc3Rpb24oKS5pZF0gfHwgW11cbiAgICAgICAgc2V0QW5zd2VyKGN1cnJlbnQuaW5jbHVkZXMocm93LmxhYmVsKSA/IGN1cnJlbnQuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09IHJvdy5sYWJlbCkgOiBbLi4uY3VycmVudCwgcm93LmxhYmVsXSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ3JldHVybicpIHtcbiAgICAgIGNvbnN0IHJvdyA9IHJvd3MoKVtjdXJzb3IoKV1cbiAgICAgIGlmIChxdWVzdGlvbigpLnR5cGUgPT09ICdtdWx0aScpIGFkdmFuY2UoKVxuICAgICAgZWxzZSBpZiAocm93Lm90aGVyKSBzZXRDdXN0b20odHJ1ZSlcbiAgICAgIGVsc2Uge1xuICAgICAgICBzZXRBbnN3ZXIocm93LmxhYmVsKVxuICAgICAgICBpZiAocXVlc3Rpb25zLmxlbmd0aCA9PT0gMSkgb25TdWJtaXQoW3sgaWQ6IHF1ZXN0aW9uKCkuaWQsIHF1ZXN0aW9uOiBxdWVzdGlvbigpLnF1ZXN0aW9uLCBhbnN3ZXI6IHJvdy5sYWJlbCB9XSlcbiAgICAgICAgZWxzZSBhZHZhbmNlKClcbiAgICAgIH1cbiAgICB9IGVsc2UgcmV0dXJuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgfSlcblxuICBpZiAocmV2aWV3KCkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMiwgcGFkZGluZ1k6IDEsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+UmV2aWV3IGFuc3dlcnM8L3RleHQ+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5lbnRlcjogZWRpdCBvciBzdWJtaXQgXHUwMEI3IGVzYzogYmFjazwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHtxdWVzdGlvbnMubWFwKChpdGVtLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGJnOiBjdXJzb3IoKSA9PT0gaW5kZXggPyBTRUxFQ1RfQkcgOiB1bmRlZmluZWQsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGN1cnNvcigpID09PSBpbmRleCA/IGFjY2VudCgpIDogRkcgfX0+e2l0ZW0ucXVlc3Rpb259PC90ZXh0PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PnthbnN3ZXJUZXh0KGl0ZW0sIGFuc3dlcnMoKVtpdGVtLmlkXSl9PC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApKX1cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgYmc6IGN1cnNvcigpID09PSBxdWVzdGlvbnMubGVuZ3RoID8gYWNjZW50KCkgOiB1bmRlZmluZWQsIGNvbG9yOiBjdXJzb3IoKSA9PT0gcXVlc3Rpb25zLmxlbmd0aCA/ICdibGFjaycgOiBGRywgYm9sZDogdHJ1ZSB9fT4gU3VibWl0IGFuc3dlcnMgPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaXRlbSA9IHF1ZXN0aW9uKClcbiAgY29uc3QgcHJvZ3Jlc3MgPSBxdWVzdGlvbnMubGVuZ3RoID4gMSA/IGAke3N0ZXAoKSArIDF9IG9mICR7cXVlc3Rpb25zLmxlbmd0aH1gIDogJ1F1ZXN0aW9uJ1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICB7c3RlcCgpID4gMCAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgbGFiZWw9XCJCYWNrXCJcbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBjb250cm9sKCkgPT09ICdiYWNrJ31cbiAgICAgICAgICAgICAgb25QcmVzcz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFN0ZXAoc3RlcCgpIC0gMSlcbiAgICAgICAgICAgICAgICBzZXRDdXJzb3IoMClcbiAgICAgICAgICAgICAgICBzZXRDdXN0b20oZmFsc2UpXG4gICAgICAgICAgICAgICAgc2V0Q29udHJvbCgnYW5zd2VyJylcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dGV4dD4gIDwvdGV4dD5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgKX1cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19Pntwcm9ncmVzc308L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntpdGVtLnR5cGUgPT09ICdtdWx0aScgPyAnc3BhY2U6IHNlbGVjdCBcdTAwQjcgZW50ZXI6IGNvbnRpbnVlJyA6ICdlbnRlcjogYW5zd2VyJ30gXHUwMEI3IGVzYzogY2FuY2VsPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcsIGJvbGQ6IHRydWUgfX0+e2l0ZW0ucXVlc3Rpb259PC90ZXh0PlxuICAgICAge2l0ZW0uZGVzY3JpcHRpb24gJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntpdGVtLmRlc2NyaXB0aW9ufTwvdGV4dD59XG4gICAgICB7aXRlbS50eXBlID09PSAndGV4dCcgPyAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFNFTEVDVF9CRywgcGFkZGluZ1g6IDEsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8VGV4dElucHV0XG4gICAgICAgICAgICBrZXk9e2Ake2l0ZW0uaWR9OnRleHRgfVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBjb250cm9sKCkgPT09ICdhbnN3ZXInfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIHlvdXIgYW5zd2VyXCJcbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZT17dHlwZW9mIGFuc3dlcnMoKVtpdGVtLmlkXSA9PT0gJ3N0cmluZycgPyBhbnN3ZXJzKClbaXRlbS5pZF0gOiAnJ31cbiAgICAgICAgICAgIG9uU3VibWl0PXtzdWJtaXRUZXh0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKSA6IChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtyb3dzKCkubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogY3Vyc29yKCkgPT09IGluZGV4ID8gU0VMRUNUX0JHIDogdW5kZWZpbmVkLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGN1cnNvcigpID09PSBpbmRleCA/IGFjY2VudCgpIDogRkdfU09GVCB9fT5cbiAgICAgICAgICAgICAgICB7aXRlbS50eXBlID09PSAnbXVsdGknXG4gICAgICAgICAgICAgICAgICA/IGAke29wdGlvbi5vdGhlciA/IChvdGhlckFuc3dlcigpID8gJ1t4XScgOiAnWyBdJykgOiAoc2VsZWN0ZWQob3B0aW9uLmxhYmVsKSA/ICdbeF0nIDogJ1sgXScpfSBgXG4gICAgICAgICAgICAgICAgICA6IGAke2N1cnNvcigpID09PSBpbmRleCA/ICdcdTIwM0EnIDogJyAnfSBgfXtvcHRpb24ubGFiZWx9XG4gICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAge29wdGlvbi5kZXNjcmlwdGlvbiAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgXHUwMEI3ICR7b3B0aW9uLmRlc2NyaXB0aW9ufWB9PC90ZXh0Pn1cbiAgICAgICAgICAgICAge29wdGlvbi5vdGhlciAmJiAoY3VzdG9tKCkgfHwgb3RoZXJBbnN3ZXIoKSkgJiYgKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IGN1c3RvbSgpID8gUEFORUxfQkcgOiB1bmRlZmluZWQsIHBhZGRpbmdMZWZ0OiA0IH19PlxuICAgICAgICAgICAgICAgICAgPFRleHRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2l0ZW0uaWR9Om90aGVyYH1cbiAgICAgICAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBjdXN0b20oKX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIGFub3RoZXIgYW5zd2VyXCJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlPXtvdGhlckFuc3dlcigpfVxuICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17c3VibWl0T3RoZXJ9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICA8L2JveD5cbiAgKVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNpZ25hbCwgdXNlSW50ZXJ2YWwsIHVzZU1vdXNlLCB1c2VSZXNpemUgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZBSU5UIH0gZnJvbSAnLi90aGVtZS5qcydcblxuZnVuY3Rpb24gRW1wdHlDbG91ZCh7IHdpZHRoLCBoZWlnaHQsIHZlcnNpb24gfSkge1xuICBjb25zdCBbcGhhc2UsIHNldFBoYXNlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbd2FrZSwgc2V0V2FrZV0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGxldCBwcmV2aW91cyA9IG51bGxcblxuICB1c2VNb3VzZSgoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQuYWN0aW9uICE9PSAnbW92ZScgJiYgZXZlbnQuYWN0aW9uICE9PSAnZHJhZycpIHJldHVyblxuICAgIGNvbnN0IHggPSBldmVudC54XG4gICAgY29uc3QgeSA9IGV2ZW50LnlcbiAgICBpZiAoeCA8IDAgfHwgeCA+PSB3aWR0aCB8fCB5IDwgMCB8fCB5ID49IGhlaWdodCkgcmV0dXJuXG4gICAgY29uc3QgZHggPSBwcmV2aW91cyA/IHggLSBwcmV2aW91cy54IDogMFxuICAgIGNvbnN0IGR5ID0gcHJldmlvdXMgPyB5IC0gcHJldmlvdXMueSA6IDBcbiAgICBwcmV2aW91cyA9IHsgeCwgeSB9XG4gICAgY29uc3Qgc3BlZWQgPSBNYXRoLmh5cG90KGR4ICogMC41LCBkeSlcbiAgICBpZiAoc3BlZWQgPT09IDApIHJldHVyblxuICAgIHNldFdha2UocG9pbnRzID0+IFsuLi5wb2ludHMuc2xpY2UoLTIwKSwgeyB4LCB5LCBkeCwgZHksIHNwZWVkOiBNYXRoLm1pbig0LCBzcGVlZCksIGFnZTogMCB9XSlcbiAgfSlcblxuICB1c2VJbnRlcnZhbCgoKSA9PiB7XG4gICAgc2V0UGhhc2UodmFsdWUgPT4gdmFsdWUgKyAwLjE2KVxuICAgIHNldFdha2UocG9pbnRzID0+IHBvaW50cy5tYXAocG9pbnQgPT4gKHsgLi4ucG9pbnQsIGFnZTogcG9pbnQuYWdlICsgMSB9KSkuZmlsdGVyKHBvaW50ID0+IHBvaW50LmFnZSA8IDE4KSlcbiAgfSwgOTApXG5cbiAgY29uc3QgZ2x5cGhzID0gJyAgXHUwMEI3XHUwMEI3OjorKyoqXHUyNTkxXHUyNTkyJ1xuICBjb25zdCByb3dzID0gW11cbiAgY29uc3QgYmFzZSA9IGFjY2VudCgpXG4gIGNvbnN0IHJnYiA9IC9eIyhbMC05YS1mXXs2fSkkL2kuZXhlYyhiYXNlKVxuICBjb25zdCBuZWlnaGJvcmluZyA9IHJnYlxuICAgID8gYCMke1tcbiAgICAgIE1hdGgubWF4KDAsIHBhcnNlSW50KHJnYlsxXS5zbGljZSgwLCAyKSwgMTYpIC0gMTgpLFxuICAgICAgTWF0aC5taW4oMjU1LCBwYXJzZUludChyZ2JbMV0uc2xpY2UoMiwgNCksIDE2KSArIDgpLFxuICAgICAgTWF0aC5taW4oMjU1LCBwYXJzZUludChyZ2JbMV0uc2xpY2UoNCwgNiksIDE2KSArIDI0KSxcbiAgICBdLm1hcCh2YWx1ZSA9PiB2YWx1ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyl9YFxuICAgIDogYmFzZVxuXG4gIGZvciAobGV0IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHtcbiAgICBjb25zdCByb3cgPSBbXVxuICAgIGZvciAobGV0IHggPSAwOyB4IDwgd2lkdGg7IHgrKykge1xuICAgICAgY29uc3QgcCA9IHBoYXNlKClcbiAgICAgIGNvbnN0IGJyb2FkID0gTWF0aC5zaW4oeCAqIDAuMDggKyBwKSArIE1hdGguc2luKHkgKiAwLjI5IC0gcCAqIDAuNykgKyBNYXRoLnNpbigoeCArIHkpICogMC4wNSArIHAgKiAwLjM1KVxuICAgICAgY29uc3Qgd2lzcHMgPSBNYXRoLnNpbih4ICogMC4xOSAtIHkgKiAwLjExIC0gcCAqIDAuNTUpICsgTWF0aC5zaW4oeCAqIDAuMDMgKyB5ICogMC40MyArIHAgKiAwLjQpXG4gICAgICBjb25zdCBwb2NrZXRzID0gTWF0aC5zaW4oeCAqIDAuMzEgKyBwICogMC44KSAqIE1hdGguc2luKHkgKiAwLjQ3IC0gcCAqIDAuMylcbiAgICAgIGxldCBicm9hZERpc3BsYWNlbWVudCA9IDBcbiAgICAgIGxldCB3aXNwRGlzcGxhY2VtZW50ID0gMFxuICAgICAgbGV0IGludGVyYWN0aW9uID0gMFxuICAgICAgZm9yIChjb25zdCBwb2ludCBvZiB3YWtlKCkpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5oeXBvdChwb2ludC5keCAqIDAuNSwgcG9pbnQuZHkpIHx8IDFcbiAgICAgICAgY29uc3QgdXggPSBwb2ludC5keCAqIDAuNSAvIGxlbmd0aFxuICAgICAgICBjb25zdCB1eSA9IHBvaW50LmR5IC8gbGVuZ3RoXG4gICAgICAgIGNvbnN0IHJ4ID0gKHggLSBwb2ludC54KSAqIDAuNVxuICAgICAgICBjb25zdCByeSA9IHkgLSBwb2ludC55XG4gICAgICAgIGNvbnN0IGFsb25nID0gcnggKiB1eCArIHJ5ICogdXlcbiAgICAgICAgY29uc3QgYWNyb3NzID0gLXJ4ICogdXkgKyByeSAqIHV4XG4gICAgICAgIGNvbnN0IHRyYWlsaW5nID0gYWxvbmcgPD0gMiAmJiBhbG9uZyA+PSAtMTggLSBwb2ludC5zcGVlZCAqIDNcbiAgICAgICAgaWYgKCF0cmFpbGluZykgY29udGludWVcbiAgICAgICAgY29uc3QgYWdlID0gMSAtIHBvaW50LmFnZSAvIDE4XG4gICAgICAgIGNvbnN0IHRyYWlsID0gTWF0aC5leHAoLU1hdGgucG93KChhbG9uZyArIDQgKyBwb2ludC5hZ2UgKiAwLjM1KSAvICg3ICsgcG9pbnQuc3BlZWQgKiAyKSwgMikpXG4gICAgICAgIGNvbnN0IGNlbnRlciA9IE1hdGguZXhwKC0oYWNyb3NzICogYWNyb3NzKSAvIDUpXG4gICAgICAgIGNvbnN0IGVkZ2VzID0gTWF0aC5leHAoLU1hdGgucG93KE1hdGguYWJzKGFjcm9zcykgLSAzLjIsIDIpIC8gMylcbiAgICAgICAgY29uc3QgZm9yY2UgPSBhZ2UgKiB0cmFpbCAqICgwLjUgKyBwb2ludC5zcGVlZCAqIDAuNDUpXG4gICAgICAgIGNvbnN0IHJhZGlhbERpc3RhbmNlID0gTWF0aC5zcXJ0KHJ4ICogcnggKyByeSAqIHJ5KVxuICAgICAgICBjb25zdCByaXBwbGVFbnZlbG9wZSA9IE1hdGguZXhwKC0ocmFkaWFsRGlzdGFuY2UgKiByYWRpYWxEaXN0YW5jZSkgLyAoMzUgKyBwb2ludC5zcGVlZCAqIDEyKSlcbiAgICAgICAgY29uc3QgcmlwcGxlID0gTWF0aC5zaW4ocmFkaWFsRGlzdGFuY2UgKiAxLjM1IC0gcG9pbnQuYWdlICogMC43NSkgKiByaXBwbGVFbnZlbG9wZSAqIGFnZVxuICAgICAgICB3aXNwRGlzcGxhY2VtZW50ICs9IChlZGdlcyAqIDAuOSAtIGNlbnRlcikgKiBmb3JjZSAqIDEuNSArIHJpcHBsZSAqICgxLjIgKyBwb2ludC5zcGVlZCAqIDAuMjUpXG4gICAgICAgIGJyb2FkRGlzcGxhY2VtZW50ICs9IChlZGdlcyAqIDAuNDUgLSBjZW50ZXIgKiAwLjM1KSAqIGZvcmNlICogMC41NSArIHJpcHBsZSAqIDAuMjVcbiAgICAgICAgaW50ZXJhY3Rpb24gPSBNYXRoLm1heChpbnRlcmFjdGlvbiwgTWF0aC5hYnMocmlwcGxlKSAqICgwLjUgKyBwb2ludC5zcGVlZCAqIDAuMTUpKVxuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCAoXG4gICAgICAgIGJyb2FkICsgYnJvYWREaXNwbGFjZW1lbnQgKyAod2lzcHMgKyB3aXNwRGlzcGxhY2VtZW50KSAqIDAuNjUgKyBwb2NrZXRzICogMC44ICsgMy4yXG4gICAgICApIC8gNy40KSlcbiAgICAgIGNvbnN0IGluZGV4ID0gTWF0aC5taW4oZ2x5cGhzLmxlbmd0aCAtIDEsIE1hdGguZmxvb3IodmFsdWUgKiBnbHlwaHMubGVuZ3RoKSlcbiAgICAgIHJvdy5wdXNoKHsgZ2x5cGg6IGdseXBoc1tpbmRleF0sIGNvbG9yOiBpbnRlcmFjdGlvbiA+IDAuMTYgPyBuZWlnaGJvcmluZyA6IGJhc2UsIGRpbTogaW5kZXggPCA4IH0pXG4gICAgfVxuICAgIHJvd3MucHVzaChyb3cpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxIH19PlxuICAgICAge3Jvd3MubWFwKChyb3csIGkpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBpID09PSAxID8gJ3BpY28nIDogaSA9PT0gMiA/IGB2JHt2ZXJzaW9ufWAgOiAnJ1xuICAgICAgICBjb25zdCBpbkJyYW5kQm94ID0gaSA+PSAxICYmIGkgPD0gMlxuICAgICAgICBjb25zdCBib3hTdGFydCA9IDFcbiAgICAgICAgY29uc3QgYm94V2lkdGggPSBgdiR7dmVyc2lvbn1gLmxlbmd0aCArIDJcbiAgICAgICAgY29uc3QgY2xvdWQgPSAoY2VsbHMpID0+IGNlbGxzLm1hcCgoY2VsbCwgeCkgPT4gKFxuICAgICAgICAgIDx0ZXh0IGtleT17eH0gc3R5bGU9e3sgY29sb3I6IGNlbGwuY29sb3IsIGRpbTogY2VsbC5kaW0gfX0+e2NlbGwuZ2x5cGh9PC90ZXh0PlxuICAgICAgICApKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxib3gga2V5PXtpfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxLCBvdmVyZmxvdzogJ2NsaXAnIH19PlxuICAgICAgICAgICAge2luQnJhbmRCb3ggJiYgY2xvdWQocm93LnNsaWNlKDAsIGJveFN0YXJ0KSl9XG4gICAgICAgICAgICB7aW5CcmFuZEJveCAmJiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgd2lkdGg6IGJveFdpZHRoLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICB7bGFiZWwgJiYgPHRleHQgc3R5bGU9e3sgYm9sZDogaSA9PT0gMSwgY29sb3I6IGkgPT09IDEgPyBhY2NlbnQoKSA6IEZBSU5UIH19PntsYWJlbH08L3RleHQ+fVxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Y2xvdWQocm93LnNsaWNlKGluQnJhbmRCb3ggPyBib3hTdGFydCArIGJveFdpZHRoIDogMCkpfVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApXG4gICAgICB9KX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRW1wdHlTdGF0ZSh7IHZlcnNpb24sIGNsb3VkcyA9IGZhbHNlIH0pIHtcbiAgY29uc3QgW3NpemUsIHNldFNpemVdID0gY3JlYXRlU2lnbmFsKHsgd2lkdGg6IHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMgfHwgODAsIGhlaWdodDogcHJvY2Vzcy5zdGRvdXQucm93cyB8fCAyNCB9KVxuICB1c2VSZXNpemUoc2V0U2l6ZSlcbiAgY29uc3Qgd2lkdGggPSBNYXRoLm1heCgxLCBzaXplKCkud2lkdGgpXG4gIGNvbnN0IGhlaWdodCA9IE1hdGgubWF4KDEsIHNpemUoKS5oZWlnaHQgLSA0KVxuICBpZiAoIWNsb3Vkcykge1xuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJvbGQ6IHRydWUsIGNvbG9yOiBhY2NlbnQoKSB9fT57JyAgcGljbyd9PC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgIHYke3ZlcnNpb259YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoLCBoZWlnaHQgfX0+XG4gICAgICA8RW1wdHlDbG91ZCB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fSB2ZXJzaW9uPXt2ZXJzaW9ufSAvPlxuICAgIDwvYm94PlxuICApXG59XG5cbiIsICJpbXBvcnQgeyBNYXJrZG93biwgU2Nyb2xsQm94LCB1c2VJbnB1dCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IGFjY2VudCwgRkFJTlQgfSBmcm9tICcuL3RoZW1lLmpzJ1xuXG5jb25zdCBIRUxQX1RFWFQgPSAoY29tbWFuZHMpID0+IGBwaWNvIGlzIGEgY29kaW5nIGFnZW50IGluIHlvdXIgdGVybWluYWwuIEl0IHJlYWRzLCBlZGl0cywgYW5kIHNlYXJjaGVzIGZpbGVzLCBydW5zIGNvbW1hbmRzLCBhbmQgc3RyZWFtcyBpdHMgd29yayBpbnRvIHRoaXMgdHJhbnNjcmlwdC5cblxuIyMgQ29tbWFuZHNcblxuVHlwZSBcXGAvXFxgIGluIHRoZSBjb21wb3NlciB0byBmaWx0ZXIgdGhlc2UgYXMgeW91IHR5cGUuXG5cbiR7Y29tbWFuZHMubWFwKChjKSA9PiBgLSBcXGAvJHtjLm5hbWV9XFxgIC0gJHtjLmRlc2N9YCkuam9pbignXFxuJyl9XG5cblR3byBraW5kcyBvZiB1c2VyLWRlZmluZWQgZW50cmllcyBqb2luIHRoaXMgbWVudTpcblxuLSAqKmNvbW1hbmRzKiogKFxcYH4vLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgIG9yIFxcYC5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCk6IHByb21wdCB0ZW1wbGF0ZXMgeW91IGludm9rZSBhcyBcXGAvPG5hbWU+IFthcmdzXVxcYC4gXFxgJEFSR1VNRU5UU1xcYCBpbiB0aGUgYm9keSBpcyByZXBsYWNlZCB3aXRoIHdoYXRldmVyIGZvbGxvd3MgdGhlIGNvbW1hbmQ7IHdpdGhvdXQgYSBwbGFjZWhvbGRlciwgYXJncyBhcmUgYXBwZW5kZWQuIFRoZSBtb2RlbCBuZXZlciBzZWVzIHRoZXNlIHVudGlsIHlvdSBydW4gb25lLlxuLSAqKnNraWxscyoqIChcXGB+Ly5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGAgb3IgXFxgLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCk6IGNhcGFiaWxpdGllcyB3aXRoIGEgbmFtZSBhbmQgZGVzY3JpcHRpb24uIFlvdSBjYW4gaW52b2tlIHRoZW0gbGlrZSBjb21tYW5kcywgYW5kIHRoZSBhZ2VudCBjYW4gYWxzbyBkaXNjb3ZlciBhbmQgbG9hZCB0aGVtIGl0c2VsZiB2aWEgdGhlIHNraWxsIHRvb2wuXG4tICoqdG9vbHMqKiAoXFxgfi8ucGljby90b29scy88bmFtZT4uanNcXGAgb3IgXFxgLnBpY28vdG9vbHMvPG5hbWU+LmpzXFxgKTogRVMgbW9kdWxlcyBkZWZhdWx0LWV4cG9ydGluZyBcXGB7IG5hbWUsIGRlc2NyaXB0aW9uLCBzY2hlbWEsIGV4ZWN1dGUgfVxcYCAob3IgYSBmYWN0b3J5IHJlY2VpdmluZyBcXGB7IGN3ZCwgcm9vdCB9XFxgKS4gVGhleSBqb2luIHRoZSBhZ2VudCdzIHRvb2xzZXQgYW5kIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gZWRpdHMgYXBwbHkgb24gdGhlIG5leHQgbWVzc2FnZS4gQXNrIHRoZSBhZ2VudCB0byBidWlsZCBvbmUgZm9yIHlvdTogdGhlIGJ1aWx0LWluIFxcYC9uZXctdG9vbFxcYCBza2lsbCB0ZWFjaGVzIGl0IHRoZSBmb3JtYXQuXG5cbkluIHRoZSBNQ1AgcGFuZWw6IGVudGVyIGVuYWJsZXMvZGlzYWJsZXMgYSBzZXJ2ZXIgKGRpc2FibGVkIGlzIHN0aWNreSBhY3Jvc3MgcmVzdGFydHMgLSBjb25maWcga2VwdCwgbm8gY29ubmVjdGlvbiwgbm8gdG9vbHMgb2ZmZXJlZCB0byB0aGUgbW9kZWwsIHBlciBwcm9qZWN0KSwgXFxgdFxcYCBsaXN0cyBpdHMgdG9vbHMsIFxcYHJcXGAgcmVjb25uZWN0cywgXFxgYVxcYCBhZGRzLCBcXGBjdHJsK3hcXGAgcmVtb3ZlcyAocHJlc3MgdHdpY2UpLiBVbmZpbHRlcmVkIGxpc3RzIChlZmZvcnQsIHJld2luZCBvcHRpb25zLCBNQ1ApIGFsc28gbW92ZSB3aXRoIFxcYGpcXGAvXFxga1xcYCBhbmQganVtcCB3aXRoIFxcYGdcXGAvXFxgR1xcYC5cblxuIyMgQ29tcG9zZXJcblxuLSBcXGBlbnRlclxcYCBzZW5kcywgXFxgc2hpZnQrZW50ZXJcXGAgaW5zZXJ0cyBhIG5ld2xpbmVcbi0gXFxgQFxcYCBvcGVucyBhIGZ1enp5IGZpbGUgcGlja2VyOyBlbnRlciBpbnNlcnRzIHRoZSBzZWxlY3RlZCBwYXRoXG4tIGRyYWcgYW4gaW1hZ2UgZmlsZSBpbnRvIHRoZSB0ZXJtaW5hbCB0byBhdHRhY2ggaXQ6IGl0IGFwcGVhcnMgaW5saW5lIGFzIFxcYFtJbWFnZSAjTl1cXGAsIGV4YWN0bHkgd2hlcmUgeW91ciBjdXJzb3IgaXMsIHNvIGltYWdlcyBjYW4gc2l0IGJldHdlZW4gc2VudGVuY2VzOyBiYWNrc3BhY2UgYWZ0ZXIgb25lIHJlbW92ZXMgdGhlIHdob2xlIGF0dGFjaG1lbnRcbi0gXFxgdGFiXFxgIGNvbXBsZXRlczogXFxgL3N1bW08dGFiPlxcYCBmaW5pc2hlcyB0aGUgY29tbWFuZCBuYW1lIGFuZCBjeWNsZXMgdGhyb3VnaCBtYXRjaGVzIG9uIHJlcGVhdDsgYWZ0ZXIgYW4gYXJndW1lbnQgc3BhY2UgaXQgY29tcGxldGVzIHZhbHVlcyAoXFxgL21vZGVsIGZsYTx0YWI+XFxgLCBcXGAvY29sb3IgPHRhYj5cXGAsIFxcYC9lZmZvcnQgPHRhYj5cXGApIGFuZCBmaWxlIHBhdGhzIGZvciBza2lsbHMgYW5kIGNvbW1hbmRzLiBLZWVwIHR5cGluZyB0byBuYXJyb3csIHRhYiBvciBlbnRlciBpbnNlcnRzXG4tIFxcYHVwXFxgIGFuZCBcXGBkb3duXFxgIG9uIGFuIGVtcHR5IGNvbXBvc2VyIHJlY2FsbCBtZXNzYWdlcyB5b3UgYWxyZWFkeSBzZW50XG4tIFxcYGN0cmwrclxcYCBvcGVucyByZXdpbmQgKHNhbWUgYXMgXFxgL3Jld2luZFxcYCk7IFxcYC9oaXN0b3J5XFxgIGZ1enp5LXNlYXJjaGVzIHlvdXIgb2xkIHByb21wdHMgYW5kIHB1dHMgdGhlIHNlbGVjdGVkIG9uZSBiYWNrIGluIHRoZSBjb21wb3NlclxuLSBcXGBjdHJsK3NcXGAgb3BlbnMgdGhlIHNlc3Npb24gcGlja2VyIChzYW1lIGFzIFxcYC9yZXN1bWVcXGApOyBcXGBjdHJsK3RcXGAgb3BlbnMgdGhlIG1vZGVsIHBpY2tlclxuLSBcXGBjdHJsK3BcXGAgc3dpdGNoZXMgcHJvamVjdHM6IHBpY2sgb25lIGFuZCBwaWNvIGp1bXBzIHRvIGl0cyBtb3N0IHJlY2VudCBzZXNzaW9uLCBjaGFuZ2luZyB0aGUgd29ya2luZyBkaXJlY3RvcnksIHRvb2xzLCBjb250ZXh0LCBhbmQgTUNQIHNlcnZlcnMgdG8gbWF0Y2g7IFxcYGN0cmwreFxcYCB0d2ljZSBkZWxldGVzIGEgcHJvamVjdCdzIHBpY28gaGlzdG9yeSAoYWxsIGl0cyBzZXNzaW9ucyBhbmQgbWVtb3JpZXMpOyBcXGAvbmV3XFxgIHN0YXJ0cyBhIGZyZXNoIHNlc3Npb24gaW4gdGhlIGN1cnJlbnQgcHJvamVjdFxuLSBcXGBjdHJsK2JcXGAgY3ljbGVzIHRoaW5raW5nIGVmZm9ydCAoZGVmYXVsdCwgbG93LCBtZWRpdW0sIGhpZ2gsIG1heCkgb24gbW9kZWxzIHRoYXQgc3VwcG9ydCBpdDsgXFxgL2VmZm9ydFxcYCBvcGVucyB0aGUgZnVsbCBwaWNrZXJcbi0gaW5zaWRlIGEgc2VhcmNoIHBhbmVsLCBcXGBjdHJsK3NcXGAgY3ljbGVzIHRoZSBzY29wZSBpbnN0ZWFkOiB0aGlzIHNlc3Npb24sIHRoaXMgcHJvamVjdCwgb3IgZXZlcnl3aGVyZVxuLSBcXGAvcmV3aW5kXFxgIHJlc3RvcmVzIHRoZSBjb252ZXJzYXRpb24gdG8gYW4gZWFybGllciBtZXNzYWdlOyBhIHJld2luZCBjYW4gYmUgdW5kb25lIHdpdGggXFxgY3RybCt6XFxgXG4tIG1lc3NhZ2VzIHNlbnQgd2hpbGUgdGhlIGFnZW50IGlzIHJlc3BvbmRpbmcgcXVldWUgdXAgYWJvdmUgdGhlIGNvbXBvc2VyIGFuZCBhcmUgZGVsaXZlcmVkIGFzIG9uZSBtZXNzYWdlIHdoZW4gdGhlIHR1cm4gZmluaXNoZXM7IFxcYHVwXFxgIHB1bGxzIHRoZW0gYmFjayBmb3IgZWRpdGluZ1xuLSBcXGBlc2NcXGAgaW50ZXJydXB0cyBhIHN0cmVhbWluZyByZXNwb25zZSwgb3IgY2xlYXJzIHRoZSBjb21wb3NlciB3aGVuIGlkbGVcblxuIyMgTW92aW5nIGFyb3VuZFxuXG4tIFxcYHRhYlxcYCBzd2l0Y2hlcyBmb2N1cyBiZXR3ZWVuIHRoZSB0cmFuc2NyaXB0IGFuZCB0aGUgY29tcG9zZXJcbi0gd2l0aCB0aGUgdHJhbnNjcmlwdCBmb2N1c2VkLCBcXGB1cFxcYC9cXGBkb3duXFxgL1xcYGpcXGAvXFxga1xcYCBzY3JvbGwgYW5kIFxcYGdcXGAvXFxgR1xcYCBqdW1wIHRvIHRoZSBlbmRzXG4tIGxvbmcgc2Vzc2lvbnMgcmVuZGVyIG9ubHkgdGhlIG5ld2VzdCA1MCBtZXNzYWdlczsgc2Nyb2xsaW5nIHRvIHRoZSB2ZXJ5IHRvcCBsb2FkcyBvbGRlciBvbmVzIGluIGJhdGNoZXMgKHRoZSB0b3AgbGluZSBzaG93cyBob3cgbWFueSBhcmUgaGlkZGVuKVxuLSBcXGBjdHJsK29cXGAgZXhwYW5kcyBhbmQgY29sbGFwc2VzIHRvb2wgb3V0cHV0IGluIHRoZSB0cmFuc2NyaXB0XG4tIHRoZSBtb3VzZSB3aGVlbCBzY3JvbGxzOyBjbGljay1kcmFnIHNlbGVjdHMgdGV4dCBhbmQgY29waWVzIGl0IG9uIHJlbGVhc2Vcbi0gXFxgY3RybCtjXFxgIHR3aWNlIGV4aXRzXG5cbiMjIFNoZWxsc1xuXG5UaGUgYWdlbnQgY2FuIHJ1biBsb25nLWxpdmVkIHByb2Nlc3NlcyAoZGV2IHNlcnZlcnMsIHdhdGNoZXJzKSB3aXRoIFxcYGJhc2ggYmFja2dyb3VuZDogdHJ1ZVxcYCwgdGhlbiByZWFkIHRoZWlyIG91dHB1dCBhbmQgc3RvcCB0aGVtIGl0c2VsZi4gXFxgL3NoZWxsc1xcYCBsaXN0cyB0aGVtOiBlbnRlciBvcGVucyBhIGxpdmUgb3V0cHV0IHZpZXcsIGFuZCBcXGBjdHJsK3hcXGAgcmVtb3ZlcyB0aGUgc2VsZWN0ZWQgcm93IC0ga2lsbGluZyBhIHJ1bm5pbmcgc2hlbGwgKHByZXNzIHR3aWNlKSBvciBkaXNtaXNzaW5nIGEgZGVhZCBvbmUgKHNpbmdsZSBwcmVzcykuIEEgXFxgXHUyNjk5IE5cXGAgaW4gdGhlIGZvb3RlciBzaG93cyBob3cgbWFueSBhcmUgcnVubmluZy4gV2hlbiBhIHNoZWxsIGV4aXRzIG9uIGl0cyBvd24sIHRoZSBhZ2VudCBpcyBub3RpZmllZCBhbmQgcmVzcG9uZHM7IHNoZWxscyBkaWUgd2l0aCBwaWNvLCBhbmQgcXVpdHRpbmcgd2FybnMgeW91IGlmIGFueSBhcmUgc3RpbGwgdXAuXG5cbiMjIFN1YnNjcmlwdGlvbnNcblxuXFxgL2Nvbm5lY3RcXGAgbGlzdHMgc3Vic2NyaXB0aW9uIHByb3ZpZGVycyB5b3UgY2FuIHNpZ24gaW4gd2l0aCBpbnN0ZWFkIG9mIEFQSSBrZXlzLiBPcGVuQUkgKENoYXRHUFQgLyBDb2RleCBwbGFuKSBzaWducyBpbiB0aHJvdWdoIHlvdXIgYnJvd3NlciB2aWEgT0F1dGg7IHRva2VucyBhcmUgc3RvcmVkIGluIFxcYH4vLnBpY28vYXV0aC5qc29uXFxgIGFuZCByZWZyZXNoZWQgYXV0b21hdGljYWxseSwgc28geW91IHNpZ24gaW4gb25jZS4gT25jZSBjb25uZWN0ZWQsIGNvZGV4IG1vZGVscyBhcHBlYXIgaW4gXFxgL21vZGVsXFxgLCBiaWxsZWQgdG8geW91ciBwbGFuLiBcXGBkXFxgIGluIHRoZSBwYW5lbCBkaXNjb25uZWN0cy5cblxuIyMgV2ViIHNlYXJjaFxuXG5XaXRoIGEgW2RyZWRnZV0oaHR0cHM6Ly9naXRodWIuY29tL2pvbmF0aGFucHllcnMvZHJlZGdlKSBlbmRwb2ludCBjb25maWd1cmVkLCB0aGUgYWdlbnQgZ2V0cyB0d28gZXh0cmEgdG9vbHM6IFxcYHdlYl9zZWFyY2hcXGAgKHJhbmtlZCByZXN1bHRzLCBHb29nbGUtc3R5bGUgb3BlcmF0b3JzKSBhbmQgXFxgd2ViX2ZldGNoXFxgIChhbnkgdXJsIGFzIGNsZWFuIHBhZ2luYXRlZCBtYXJrZG93biwgaW5jbHVkaW5nIHBkZiBhbmQgZG9jeCkuIENvbmZpZ3VyZSBpdCBhcyBcXGBcImRyZWRnZVwiOiB7IFwidXJsXCI6IFwiLi4uXCIsIFwiYXBpS2V5XCI6IFwiLi4uXCIgfVxcYCBpbiBcXGB+Ly5waWNvL2NvbmZpZy5qc29uXFxgLCBvciB3aXRoIFxcYERSRURHRV9VUkxcXGAgYW5kIFxcYERSRURHRV9BUElfS0VZXFxgLiBXaXRob3V0IGEgY29uZmlndXJlZCBlbmRwb2ludCB0aGUgdG9vbHMgYXJlIG5vdCBvZmZlcmVkIHRvIHRoZSBtb2RlbCBhdCBhbGwuXG5cbiMjIE1lbW9yeVxuXG5UaGUgYWdlbnQgc2F2ZXMgZHVyYWJsZSBmYWN0cyB3aXRoIHRoZSByZW1lbWJlciB0b29sOiBvbmUgZmlsZSBwZXIgbWVtb3J5IHVuZGVyIFxcYH4vLnBpY28vbWVtb3J5XFxgIChnbG9iYWwpIG9yIHRoZSBwcm9qZWN0J3MgZGlyZWN0b3J5IGluIFxcYH4vLnBpY28vcHJvamVjdHNcXGAuIE9ubHkgYSBvbmUtbGluZSBpbmRleCBpcyBpbiBpdHMgY29udGV4dDsgaXQgbG9hZHMgYSBzcGVjaWZpYyBtZW1vcnkgd2l0aCB0aGUgcmVjYWxsIHRvb2wgd2hlbiByZWxldmFudC4gXFxgL21lbW9yeVxcYCBsaXN0cyBldmVyeXRoaW5nIGl0IGtub3dzIHdpdGggYSBjb250ZW50IHByZXZpZXc6IFxcYGN0cmwrc1xcYCBjeWNsZXMgdGhlIHNjb3BlIGZpbHRlciAoYWxsLCBwcm9qZWN0LCBnbG9iYWwpIGFuZCBcXGBjdHJsK3hcXGAgdHdpY2UgZm9yZ2V0cyB0aGUgc2VsZWN0ZWQgbWVtb3J5LiBZb3UgY2FuIGFsc28gYXNrIHRoZSBhZ2VudCB0byByZW1lbWJlciwgZm9yZ2V0LCBvciBjbGVhbiB1cCBpdHMgbWVtb3JpZXMgaW4gcGxhaW4gbGFuZ3VhZ2UuXG5cbiMjIFdha2UtdXBzXG5cblRoZSBhZ2VudCBjYW4gc2NoZWR1bGUgb25lLXRpbWUgd2FrZS11cHMgZm9yIGl0c2VsZiB3aXRoIHRoZSBzY2hlZHVsZV93YWtldXAgdG9vbDogYWZ0ZXIgdGhlIGRlbGF5IGl0IHJlY2VpdmVzIGl0cyBvd24gbm90ZSBhcyBhIHN5c3RlbSBub3RpZmljYXRpb24gYW5kIGFjdHMgb24gaXQuIFJlY3VycmluZyBsb29wcyBhcmUganVzdCB0aGUgYWdlbnQgcmVzY2hlZHVsaW5nIGF0IHRoZSBlbmQgb2YgZWFjaCB3YWtlLXVwLiBcXGAvd2FrZXVwc1xcYCBsaXN0cyBwZW5kaW5nIG9uZXMgd2l0aCBsaXZlIGNvdW50ZG93bnM7IGVudGVyIG9yIFxcYGN0cmwreFxcYCBjYW5jZWxzIChwcmVzcyB0d2ljZSkuIEEgXFxgXHUyM0YwIE5cXGAgaW4gdGhlIGZvb3RlciBzaG93cyBob3cgbWFueSBhcmUgcGVuZGluZy4gV2FrZS11cHMgbGl2ZSBpbiBtZW1vcnkgYW5kIGFyZSBsb3N0IHdoZW4gcGljbyBleGl0cy5cblxuIyMgQXBwZWFyYW5jZVxuXG5waWNvIHBpY2tzIGEgbGlnaHQgb3IgZGFyayBwYWxldHRlIGF0IHN0YXJ0dXAgYnkgYXNraW5nIHRoZSB0ZXJtaW5hbCBmb3IgaXRzIGJhY2tncm91bmQgY29sb3IgKE9TQyAxMSksIHNvIGl0IG1hdGNoZXMgd2hhdGV2ZXIgdGhlbWUgeW91ciB0ZXJtaW5hbCB1c2VzLiBcXGAvdGhlbWVcXGAgb3BlbnMgYSBwaWNrZXIgdGhhdCBwcmV2aWV3cyBlYWNoIHRoZW1lIGFzIHlvdSBtb3ZlIGFuZCBwZXJzaXN0cyB5b3VyIGNob2ljZSBpbiBcXGB+Ly5waWNvL2NvbmZpZy5qc29uXFxgOyBcXGAvdGhlbWUgbGlnaHRcXGAsIFxcYC90aGVtZSBkYXJrXFxgLCBvciBcXGAvdGhlbWUgYXV0b1xcYCBhcHBsaWVzIG9uZSBkaXJlY3RseS4gXFxgL2NvbG9yXFxgIHRpbnRzIGEgc2luZ2xlIHNlc3Npb24ncyBhY2NlbnQgYW5kIGlzIGluZGVwZW5kZW50IG9mIHRoZSBwYWxldHRlLlxuXG4jIyBDb250ZXh0XG5cbnBpY28gcmVhZHMgQUdFTlRTLm1kIGZpbGVzIGF1dG9tYXRpY2FsbHk6IGEgZ2xvYmFsIG9uZSBmcm9tIH4vLnBpY28sIHRoZW4gZXZlcnkgYW5jZXN0b3Igb2YgeW91ciB3b3JraW5nIGRpcmVjdG9yeSB1cCB0byB0aGUgZ2l0IHJvb3QuIERlZXBlciBmaWxlcyB3aW4uIEFHRU5UUy5tZCBmaWxlcyBpbiBzdWJkaXJlY3RvcmllcyBsb2FkIGxhemlseSB0aGUgZmlyc3QgdGltZSBhIHRvb2wgdG91Y2hlcyB0aGF0IHN1YnRyZWUuIEluIGFueSBwcm9qZWN0IGRpcmVjdG9yeSB3aXRob3V0IGFuIEFHRU5UUy5tZCwgYSBDTEFVREUubWQgaXMgaG9ub3JlZCBhcyBhIGZhbGxiYWNrIHNvIGV4aXN0aW5nIHJlcG9zIHdvcmsgdW5jaGFuZ2VkOyBBR0VOVFMubWQgYWx3YXlzIHdpbnMgd2hlbiBib3RoIGV4aXN0LCBhbmQgdGhlIGZhbGxiYWNrIG5ldmVyIGFwcGxpZXMgdG8gdGhlIGdsb2JhbCBmaWxlLlxuXG5TZXNzaW9ucyBhcmUgc3RvcmVkIHVuZGVyIH4vLnBpY28gYXMganNvbmwgZXZlbnQgbG9nczsgXFxgL3Jlc3VtZVxcYCBmb2xkcyBvbmUgYmFjayBpbnRvIGV4YWN0bHkgdGhpcyB2aWV3LlxuXG5cXGAvY29udGV4dFxcYCBicmVha3MgZG93biB3aGF0IHRoZSBuZXh0IHJlcXVlc3Qgd2lsbCBjb250YWluIC0gc3lzdGVtIHByb21wdCwgdG9vbCBzY2hlbWFzLCBwcm9qZWN0IGluc3RydWN0aW9ucywgbWVtb3J5IGluZGV4LCBjb21wYWN0aW9uIHN1bW1hcnksIGFuZCBjb252ZXJzYXRpb24gLSB3aXRoIGFuIGVzdGltYXRlZCBzaXplIGZvciBlYWNoIHBpZWNlIG5leHQgdG8gdGhlIHByb3ZpZGVyLW1lYXN1cmVkIHRvdGFsLlxuXG5UaGUgZm9vdGVyJ3MgXFxgY3R4ICVcXGAgc2hvd3MgaG93IGZ1bGwgdGhlIG1vZGVsJ3MgY29udGV4dCBpcy4gQXQgODUlIHBpY28gYXV0by1jb21wYWN0czogdGhlIG9sZGVyIGNvbnZlcnNhdGlvbiBpcyBzdW1tYXJpemVkIGluIGEgc3RydWN0dXJlZCBmb3JtLCB0aGUgbW9zdCByZWNlbnQgdHVybnMgYXJlIGtlcHQgdmVyYmF0aW0sIGFuZCB0aGUgbW9kZWwgaXMgdG9sZCB3aGVyZSB0aGUgZnVsbCBzZXNzaW9uIGZpbGUgbGl2ZXMgc28gaXQgY2FuIHJlYWQgZXhhY3QgZGV0YWlscyBiYWNrIG9uIGRlbWFuZC4gTm90aGluZyB2aXNpYmxlIGNoYW5nZXMgaW4gdGhlIHRyYW5zY3JpcHQsIGFuZCByZXdpbmQgc3RpbGwgd29ya3MgYWNyb3NzIGl0LiBcXGAvY29tcGFjdFxcYCBydW5zIGl0IG1hbnVhbGx5IGFuZCB0YWtlcyBvcHRpb25hbCBmb2N1cyBpbnN0cnVjdGlvbnMgKFxcYC9jb21wYWN0IGZvY3VzIG9uIHRoZSBBUEkgY2hhbmdlc1xcYCkuIFNldCBcXGBcImF1dG9Db21wYWN0XCI6IGZhbHNlXFxgIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGAgdG8gZGlzYWJsZSB0aGUgYXV0b21hdGljIHRyaWdnZXIuXG5cbi0tLVxuXG4qZXNjIHRha2VzIHlvdSBiYWNrIHRvIHRoZSBjb252ZXJzYXRpb24qYFxuXG5leHBvcnQgZnVuY3Rpb24gSGVscCh7IGNvbW1hbmRzLCBvbkNsb3NlIH0pIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PnBpY28gXHUwMEI3IGhlbHA8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Plx1MjE5MVx1MjE5MyBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkIHNjcm9sbGJhcj5cbiAgICAgICAgPE1hcmtkb3duIHRleHQ9e0hFTFBfVEVYVChjb21tYW5kcyl9IGNvZGVCZz17bnVsbH0gLz5cbiAgICAgIDwvU2Nyb2xsQm94PlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCBCdXR0b24sIENoZWNrYm94LCBlYXNlLCBNZW51LCBQaWNrTGlzdCwgUmFkaW8sIFNjcm9sbEJveCwgVGV4dElucHV0LCB1c2VBbmltYXRlZCwgdXNlRm9jdXMsIHVzZUlucHV0LCB1c2VJbnRlcnZhbCwgdXNlTGF5b3V0IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGRywgRkdfU09GVCwgTVVURUQsIEZBSU5ULCBQQU5FTF9CRywgU0VMRUNUX0JHLCBSRUQsIEdSRUVOIH0gZnJvbSAnLi90aGVtZS5qcydcbmltcG9ydCB7IEFuaW1hdGVkVmFsdWUgfSBmcm9tICcuL2FuaW1hdGVkLXZhbHVlLmpzeCdcbmltcG9ydCB7IGNvbXBhY3ROdW1iZXIgfSBmcm9tICcuL2Zvcm1hdC5qcydcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vZnV6enkuanMnXG5pbXBvcnQgeyBmb3JtYXRIdHRwU2VydmVyU3BlYywgcGFyc2VTZXJ2ZXJTcGVjLCByZWRhY3RTZXJ2ZXJTcGVjLCBSRURBQ1RFRF9IRUFERVIgfSBmcm9tICcuLi9jb3JlL21jcC5qcydcblxuZnVuY3Rpb24gc2hvcnRlbkhvbWUocGF0aCkge1xuICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gIHJldHVybiBTdHJpbmcocGF0aCkuc3RhcnRzV2l0aChob21lKSA/IFN0cmluZyhwYXRoKS5yZXBsYWNlKGhvbWUsICd+JykgOiBTdHJpbmcocGF0aClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVBZ28oYXQpIHtcbiAgY29uc3QgcyA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKERhdGUubm93KCkgLSBhdCkgLyAxMDAwKSlcbiAgaWYgKHMgPCA2MCkgcmV0dXJuIGAke3N9cyBhZ29gXG4gIGNvbnN0IG0gPSBNYXRoLmZsb29yKHMgLyA2MClcbiAgaWYgKG0gPCA2MCkgcmV0dXJuIGAke219bSBhZ29gXG4gIGNvbnN0IGggPSBNYXRoLmZsb29yKG0gLyA2MClcbiAgaWYgKGggPCAyNCkgcmV0dXJuIGAke2h9aCBhZ29gXG4gIHJldHVybiBgJHtNYXRoLmZsb29yKGggLyAyNCl9ZCBhZ29gXG59XG5cbmZ1bmN0aW9uIFBhbmVsRnJhbWUoeyB0aXRsZSwgaGludCwgcmlnaHQsIGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEsIGJnOiBQQU5FTF9CRyB9fT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBwYWRkaW5nVG9wOiAxIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSwgYm9sZDogdHJ1ZSB9fT57dGl0bGV9PC90ZXh0PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICB7cmlnaHR9XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2hpbnR9PC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogU0VMRUNUX0JHLCBvdmVyZmxvdzogJ2NsaXAnIH19PnsnXHUyNTAwJy5yZXBlYXQocHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCl9PC90ZXh0PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIHBhZGRpbmdCb3R0b206IDEgfX0+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25maXJtUGFuZWwoeyB0aXRsZSwgbWVzc2FnZSwgY29uZmlybUxhYmVsID0gJ0NvbmZpcm0nLCBmb2N1c2VkLCBvbkNvbmZpcm0sIG9uQ2xvc2UgfSkge1xuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNsb3NlKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdyZXR1cm4nKSB7XG4gICAgICBvbkNvbmZpcm0oKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT17dGl0bGV9IGhpbnQ9e2BlbnRlcjogJHtjb25maXJtTGFiZWwudG9Mb3dlckNhc2UoKX0gXHUwMEI3IGVzYzogY2FuY2VsYH0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57bWVzc2FnZX08L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBSRUQsIGJvbGQ6IHRydWUgfX0+VGhpcyBjYW5ub3QgYmUgdW5kb25lLjwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5mdW5jdGlvbiBDb25maWdGaWVsZCh7IGZpZWxkLCB2YWx1ZSwgZm9jdXNlZCwgZm0sIG9uQ2hhbmdlIH0pIHtcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0KClcbiAgZm0uaXRlbShmaWVsZC5uYW1lLCBsYXlvdXQpXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luQm90dG9tOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPENoZWNrYm94IGNoZWNrZWQ9e3ZhbHVlfSBsYWJlbD17ZmllbGQubGFiZWx9IGZvY3VzZWQ9e2ZvY3VzZWR9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2ZpZWxkLnBhdGh9PC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICAgJHtmaWVsZC5kZXNjfWB9PC90ZXh0PlxuICAgIDwvYm94PlxuICApXG59XG5cbmZ1bmN0aW9uIENvbmZpZ051bWJlckZpZWxkKHsgdmFsdWUsIGZvY3VzZWQsIGZtLCBvbkNoYW5nZSB9KSB7XG4gIGNvbnN0IGxheW91dCA9IHVzZUxheW91dCgpXG4gIGZtLml0ZW0oJ3Jlc2VhcmNoQWdlbnRMaW1pdCcsIGxheW91dClcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Cb3R0b206IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IHdpZHRoOiA1IH19PlxuICAgICAgICAgIDxUZXh0SW5wdXRcbiAgICAgICAgICAgIGtleT17U3RyaW5nKHZhbHVlKX1cbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZT17U3RyaW5nKHZhbHVlKX1cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHRleHQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHRleHQpXG4gICAgICAgICAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlZCkpIG9uQ2hhbmdlKE1hdGgubWF4KDEsIE1hdGgubWluKDEwMCwgcGFyc2VkKSkpXG4gICAgICAgICAgICAgIGVsc2Ugb25DaGFuZ2UodmFsdWUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+IFJlc2VhcmNoIGFnZW50IGxpbWl0PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5yZXNlYXJjaC5hZ2VudExpbWl0PC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+ICAgIE1heGltdW0gYWdlbnRzIHBlciBkZWVwIHJlc2VhcmNoIHJ1biAoMS0xMDApPC90ZXh0PlxuICAgIDwvYm94PlxuICApXG59XG5cbmZ1bmN0aW9uIENvbmZpZ01vZGVsRmllbGQoeyBtb2RlbCwgZm9jdXNlZCwgZm0sIG9uUGljayB9KSB7XG4gIGNvbnN0IGxheW91dCA9IHVzZUxheW91dCgpXG4gIGZtLml0ZW0oJ3Jlc2VhcmNoTW9kZWwnLCBsYXlvdXQpXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luQm90dG9tOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPEJ1dHRvbiBsYWJlbD1cIlJlc2VhcmNoIHdvcmtlciBtb2RlbFwiIGZvY3VzZWQ9e2ZvY3VzZWR9IG9uUHJlc3M9e29uUGlja30gLz5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bW9kZWxzLnJlc2VhcmNoV29ya2VyPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICAgJHttb2RlbCB8fCAnTm90IGNvbmZpZ3VyZWQnfSBcdTAwQjcgbW9kZWwgdXNlZCBieSBiYWNrZ3JvdW5kIHJlc2VhcmNoIGFnZW50c2B9PC90ZXh0PlxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25maWdQYW5lbCh7IHZhbHVlcywgZm9jdXNlZCwgb25DaGFuZ2UsIG9uUGlja1Jlc2VhcmNoTW9kZWwsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBmbSA9IHVzZUZvY3VzKHsgaW5pdGlhbDogJ2Nsb3VkcycgfSlcbiAgY29uc3QgZmllbGRzID0gW1xuICAgIHsgbmFtZTogJ2Nsb3VkcycsIGxhYmVsOiAnQ2xvdWQgYW5pbWF0aW9uJywgZGVzYzogJ1Nob3cgYW5pbWF0ZWQgY2xvdWRzIG9uIHRoZSBlbXB0eSBzY3JlZW4nLCBwYXRoOiAnYW5pbWF0aW9uLmNsb3VkcycgfSxcbiAgICB7IG5hbWU6ICdjb21wYWN0VG9vbHMnLCBsYWJlbDogJ0NvbXBhY3QgdG9vbCBoaXN0b3J5JywgZGVzYzogJ1N1bW1hcml6ZSBjb25zZWN1dGl2ZSB0b29sIGNhbGxzIGluIG9uZSByb3cnLCBwYXRoOiAnZGlzcGxheS5jb21wYWN0VG9vbEhpc3RvcnknIH0sXG4gICAgeyBuYW1lOiAnZ2l0U3RhdHVzJywgbGFiZWw6ICdHaXQgaW4gZm9vdGVyJywgZGVzYzogJ1Nob3cgYnJhbmNoIGFuZCBjaGFuZ2VkIGxpbmUgY291bnRzIGluIHRoZSBmb290ZXInLCBwYXRoOiAnZGlzcGxheS5naXRTdGF0dXMnIH0sXG4gIF1cblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNsb3NlKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJDb25maWd1cmF0aW9uXCIgaGludD1cInRhYjogbmV4dCBzZXR0aW5nIFx1MDBCNyBzcGFjZS9lbnRlcjogY2hhbmdlIFx1MDBCNyBlc2M6IGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGhlaWdodDogMTIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPFNjcm9sbEJveCBmb2N1c2VkPXtmYWxzZX0gc2Nyb2xsYmFyIGZvbGxvd0ZvY3VzPXtmbX0gZm9jdXNQYWRkaW5nPXsxfT5cbiAgICAgICAgICB7ZmllbGRzLm1hcCgoZmllbGQpID0+IChcbiAgICAgICAgICAgIDxDb25maWdGaWVsZFxuICAgICAgICAgICAgICBrZXk9e2ZpZWxkLm5hbWV9XG4gICAgICAgICAgICAgIGZpZWxkPXtmaWVsZH1cbiAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tmaWVsZC5uYW1lXX1cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcyhmaWVsZC5uYW1lKX1cbiAgICAgICAgICAgICAgZm09e2ZtfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBvbkNoYW5nZShmaWVsZC5uYW1lLCB2YWx1ZSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICAgIDxDb25maWdNb2RlbEZpZWxkIG1vZGVsPXt2YWx1ZXMucmVzZWFyY2hNb2RlbH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygncmVzZWFyY2hNb2RlbCcpfSBmbT17Zm19IG9uUGljaz17b25QaWNrUmVzZWFyY2hNb2RlbH0gLz5cbiAgICAgICAgICA8Q29uZmlnTnVtYmVyRmllbGQgdmFsdWU9e3ZhbHVlcy5yZXNlYXJjaEFnZW50TGltaXR9IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ3Jlc2VhcmNoQWdlbnRMaW1pdCcpfSBmbT17Zm19IG9uQ2hhbmdlPXsodmFsdWUpID0+IG9uQ2hhbmdlKCdyZXNlYXJjaEFnZW50TGltaXQnLCB2YWx1ZSl9IC8+XG4gICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY29wZVRhYnMoeyBzY29wZXMsIGFjdGl2ZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgIHtzY29wZXMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgIDx0ZXh0IGtleT17c30gc3R5bGU9e3sgY29sb3I6IGkgPT09IGFjdGl2ZSA/IGFjY2VudCgpIDogRkFJTlQsIGJvbGQ6IGkgPT09IGFjdGl2ZSB9fT57YCR7aSA+IDAgPyAnICAnIDogJyd9JHtzfWB9PC90ZXh0PlxuICAgICAgKSl9XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vZGVsUGFuZWwoeyBtb2RlbHMsIGN1cnJlbnQsIGRlZmF1bHROYW1lLCBmb2N1c2VkLCBvblBpY2ssIG9uUGlja0RlZmF1bHQsIG9uQ2xvc2UsIHRpdGxlID0gJ1NlbGVjdCBtb2RlbCcsIGhpbnQgPSAnZW50ZXI6IHRoaXMgc2Vzc2lvbiBcdTAwQjcgY3RybCtzOiBzZXQgYXMgZGVmYXVsdCBcdTAwQjcgZXNjOiBjbG9zZScgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKG1vZGVsc1swXSB8fCBudWxsKVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgY3Vyc29yKCkpIHtcbiAgICAgIG9uUGlja0RlZmF1bHQoY3Vyc29yKCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPXt0aXRsZX0gaGludD17aGludH0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICBpdGVtcz17bW9kZWxzfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbW9kZWxzLi4uXCJcbiAgICAgICAgICBmaWx0ZXI9eyhxLCBtKSA9PiBmdXp6eVNjb3JlKHEsIG0ubmFtZSkgPj0gMH1cbiAgICAgICAgICBvbkN1cnNvckNoYW5nZT17c2V0Q3Vyc29yfVxuICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgIGl0ZW1IZWlnaHQ9ezJ9XG4gICAgICAgICAgc2Nyb2xsb2ZmPXsxfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9mZiA9IG0uYXZhaWxhYmxlID09PSBmYWxzZVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgYm9sZDogIW9mZiwgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IG9mZiA/IE1VVEVEIDogRkcgfX0+e20ubmFtZX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICB7bS5uYW1lID09PSBjdXJyZW50ICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBhY2NlbnQoKSB9fT57JyBcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICB7bS5uYW1lID09PSBkZWZhdWx0TmFtZSAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogTVVURUQgfX0+eycgXHUwMEI3IGRlZmF1bHQnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogTVVURUQgfX0+XG4gICAgICAgICAgICAgICAgICAgIHtvZmYgPyBgbmVlZHMgJHttLmtleUhpbnR9YCA6IG0ucHJpY2UgPyBgJCR7bS5wcmljZS5pbn0gaW4gXHUwMEI3ICQke20ucHJpY2Uub3V0fSBvdXRgIDogbS5wcm92aWRlciA9PT0gJ2NvZGV4JyA/ICdzdWJzY3JpcHRpb24nIDogJ3ByaWNlIHVua25vd24nfVxuICAgICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBNVVRFRCB9fT57bS5kZXNjfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGlzdG9yeVBhbmVsKHsgcHJvbXB0cywgc2NvcGVzLCBzY29wZUluZGV4LCBmb2N1c2VkLCBvblBpY2ssIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwocHJvbXB0c1swXSB8fCBudWxsKVxuICBjb25zdCBbcXVlcnksIHNldFF1ZXJ5XSA9IGNyZWF0ZVNpZ25hbCgnJylcbiAgY29uc3QgYW55TWF0Y2ggPSBwcm9tcHRzLnNvbWUoKHApID0+IGZ1enp5U2NvcmUocXVlcnkoKSwgcC50ZXh0KSA+PSAwKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiU2VhcmNoIHByb21wdHNcIlxuICAgICAgaGludD1cIlx1MjE5MVx1MjE5MyB0byBtb3ZlIFx1MDBCNyBjdHJsK3Mgc2NvcGUgXHUwMEI3IGVudGVyIHRvIGVkaXQgXHUwMEI3IGVzYyB0byBjbG9zZVwiXG4gICAgICByaWdodD17PFNjb3BlVGFicyBzY29wZXM9e3Njb3Blc30gYWN0aXZlPXtzY29wZUluZGV4fSAvPn1cbiAgICA+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e3Byb21wdHN9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgcHJvbXB0cy4uLlwiXG4gICAgICAgICAgICBmaWx0ZXI9eyhxLCBwKSA9PiBmdXp6eVNjb3JlKHEsIHAudGV4dCkgPj0gMH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRRdWVyeX1cbiAgICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXsocCkgPT4gc2V0UHJldmlldyhwKX1cbiAgICAgICAgICAgIG9uU3VibWl0PXsocCkgPT4gb25QaWNrKHAudGV4dCl9XG4gICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHAsIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkcgfX0+e3AudGV4dC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHt0aW1lQWdvKHAuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHthbnlNYXRjaCAmJiBwcmV2aWV3KCkgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e3ByZXZpZXcoKS50ZXh0LnNsaWNlKDAsIDIwMDApfTwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIG1hdGNoaW5nIHByb21wdHM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJld2luZFBpY2tQYW5lbCh7IGVudHJpZXMsIHN0YXRzLCBmb2N1c2VkLCBvblBpY2ssIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwoZW50cmllc1swXSB8fCBudWxsKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJSZXdpbmQgdG8gYSBtZXNzYWdlXCIgaGludD1cIlx1MjE5MVx1MjE5MyB0byBtb3ZlIFx1MDBCNyBlbnRlciB0byBjaG9vc2UgXHUwMEI3IGVzYyB0byBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtlbnRyaWVzfVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIG1lc3NhZ2VzLi4uXCJcbiAgICAgICAgICAgIGZpbHRlcj17KHEsIG0pID0+IGZ1enp5U2NvcmUocSwgbS50ZXh0KSA+PSAwfVxuICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhtKSA9PiBzZXRQcmV2aWV3KG0pfVxuICAgICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsobSwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57bS50ZXh0LnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke3N0YXRzKG0uaW5kZXgpLm1zZ3N9IGFmdGVyYH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge3ByZXZpZXcoKSA/IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YHJld2luZGluZyBoZXJlIGRyb3BzICR7c3RhdHMocHJldmlldygpLmluZGV4KS5tc2dzfSBlbnRyaWVzYH08L3RleHQ+XG4gICAgICAgICAgICAgIHtzdGF0cyhwcmV2aWV3KCkuaW5kZXgpLmVkaXRzLm1hcCgobSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICBcdTIxQTkgJHttLnRpdGxlfWB9PC90ZXh0PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntwcmV2aWV3KCkudGV4dC5zbGljZSgwLCAyMDAwKX08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIG1hdGNoaW5nIG1lc3NhZ2VzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXdpbmRBY3Rpb25QYW5lbCh7IHRhcmdldCwgb3B0aW9ucywgZm9jdXNlZCwgb25TdWJtaXQsIG9uQmFjayB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSwgYm9sZDogdHJ1ZSB9fT5SZXdpbmQgb3B0aW9uczwvdGV4dD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57J3RvOiAnfTwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogRkdfU09GVCB9fT57dGFyZ2V0LnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8TWVudVxuICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICBpdGVtcz17b3B0aW9uc31cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG1heFZpc2libGU9ezR9XG4gICAgICAgICAgaXRlbUhlaWdodD17Mn1cbiAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgdmltS2V5c1xuICAgICAgICAgIG9uU3VibWl0PXtvblN1Ym1pdH1cbiAgICAgICAgICBvbkNhbmNlbD17b25CYWNrfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyhvLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e28ubGFiZWx9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke28uZGVzY31gfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5lbnRlciB0byBjb25maXJtIFx1MDBCNyBlc2MgdG8gcGljayBhIGRpZmZlcmVudCBtZXNzYWdlPC90ZXh0PlxuICAgIDwvYm94PlxuICApXG59XG5cbmZ1bmN0aW9uIHVzZUVzY2FwZShmb2N1c2VkLCBvbkNsb3NlKSB7XG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCgpKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DbG9zZSgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3VtZVBhbmVsKHsgc2Vzc2lvbnMsIHNjb3Blcywgc2NvcGVJbmRleCwgbG9hZGluZywgZm9jdXNlZCwgY3VycmVudElkLCBvblBpY2ssIG9uRGVsZXRlLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKHNlc3Npb25zWzBdIHx8IG51bGwpXG4gIGNvbnN0IHNlbGVjdGVkU2Vzc2lvbiA9ICgpID0+IHtcbiAgICBpZiAobG9hZGluZykgcmV0dXJuIG51bGxcbiAgICBjb25zdCBzZWxlY3RlZCA9IHByZXZpZXcoKVxuICAgIHJldHVybiBzZXNzaW9ucy5pbmNsdWRlcyhzZWxlY3RlZCkgPyBzZWxlY3RlZCA6IG51bGxcbiAgfVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBjb25zdCBzZWxlY3RlZCA9IHNlbGVjdGVkU2Vzc2lvbigpXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcgJiYgc2VsZWN0ZWQpIHtcbiAgICAgIG9uRGVsZXRlKHNlbGVjdGVkKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJSZXN1bWUgYSBzZXNzaW9uXCJcbiAgICAgIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgY3RybCtzIHNjb3BlIFx1MDBCNyBlbnRlciB0byByZXN1bWUgXHUwMEI3IGN0cmwreCBkZWxldGUgXHUwMEI3IGVzYyB0byBjbG9zZVwiXG4gICAgICByaWdodD17PFNjb3BlVGFicyBzY29wZXM9e3Njb3Blc30gYWN0aXZlPXtzY29wZUluZGV4fSAvPn1cbiAgICA+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PmxvYWRpbmcgc2Vzc2lvbnMuLi48L3RleHQ+XG4gICAgICAgICAgKSA6IHNlc3Npb25zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBzZXNzaW9ucyBoZXJlIHlldDwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e3Nlc3Npb25zfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmICFsb2FkaW5nfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBzZXNzaW9ucy4uLlwiXG4gICAgICAgICAgICAgIGZpbHRlcj17KHEsIHMpID0+IGZ1enp5U2NvcmUocSwgcy50aXRsZSkgPj0gMH1cbiAgICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhzKSA9PiBzZXRQcmV2aWV3KHMpfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KHMsIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgICB7cy5jb2xvciAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogcy5jb2xvciB9fT57J1x1MjVBQSAnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkcgfX0+e3MudGl0bGUucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICB7cy5oZWFkZXIuaWQgPT09IGN1cnJlbnRJZCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogYWNjZW50KCksIGRpbTogIXNlbGVjdGVkIH19PiBjdXJyZW50PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7dGltZUFnbyhzLmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHtzZWxlY3RlZFNlc3Npb24oKSA/IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCR7c2VsZWN0ZWRTZXNzaW9uKCkudHVybnN9ICR7c2VsZWN0ZWRTZXNzaW9uKCkudHVybnMgPT09IDEgPyAndHVybicgOiAndHVybnMnfSBcdTAwQjcgJHt0aW1lQWdvKHNlbGVjdGVkU2Vzc2lvbigpLmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57c2VsZWN0ZWRTZXNzaW9uKCkuaGVhZGVyLnJvb3R9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e3NlbGVjdGVkU2Vzc2lvbigpLnRpdGxlLnNsaWNlKDAsIDUwMCl9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBzZXNzaW9uczwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVtb3J5UGFuZWwoeyBtZW1vcmllcywgc2NvcGVzLCBzY29wZUluZGV4LCBmb2N1c2VkLCBvbkZvcmdldCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtjdXJzb3JJdGVtLCBzZXRDdXJzb3JJdGVtXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbcGFuZSwgc2V0UGFuZV0gPSBjcmVhdGVTaWduYWwoJ2xpc3QnKVxuICBjb25zdCBwcmV2aWV3ID0gbWVtb3JpZXMuaW5jbHVkZXMoY3Vyc29ySXRlbSgpKSA/IGN1cnNvckl0ZW0oKSA6IG1lbW9yaWVzWzBdIHx8IG51bGxcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ3RhYicgJiYgIWV2ZW50LmN0cmwgJiYgIWV2ZW50Lm1ldGEpIHtcbiAgICAgIHNldFBhbmUoKHApID0+IChwID09PSAnbGlzdCcgPyAncHJldmlldycgOiAnbGlzdCcpKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4JyAmJiBwcmV2aWV3KSB7XG4gICAgICBvbkZvcmdldChwcmV2aWV3KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJNZW1vcnlcIlxuICAgICAgaGludD1cIlx1MjE5MVx1MjE5MyB0byBtb3ZlIFx1MDBCNyB0YWI6IGZvY3VzIHByZXZpZXcgXHUwMEI3IGN0cmwrcyBzY29wZSBcdTAwQjcgY3RybCt4IGZvcmdldCAodHdpY2UpIFx1MDBCNyBlc2MgdG8gY2xvc2VcIlxuICAgICAgcmlnaHQ9ezxTY29wZVRhYnMgc2NvcGVzPXtzY29wZXN9IGFjdGl2ZT17c2NvcGVJbmRleH0gLz59XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICB7bWVtb3JpZXMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIG1lbW9yaWVzIGhlcmUgeWV0PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgICBpdGVtcz17bWVtb3JpZXN9XG4gICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWQgJiYgcGFuZSgpID09PSAnbGlzdCd9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIG1lbW9yaWVzLi4uXCJcbiAgICAgICAgICAgICAgZmlsdGVyPXsocSwgbSkgPT4gZnV6enlTY29yZShxLCBgJHttLm5hbWV9ICR7bS5kZXNjcmlwdGlvbn1gKSA+PSAwfVxuICAgICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17c2V0Q3Vyc29ySXRlbX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9eygpID0+IHt9fVxuICAgICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KG0sIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkcgfX0+e20ubmFtZX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7bS5zY29wZX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHtwcmV2aWV3ID8gKFxuICAgICAgICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkPXtmb2N1c2VkICYmIHBhbmUoKSA9PT0gJ3ByZXZpZXcnfSBzY3JvbGxiYXI+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntwcmV2aWV3LmRlc2NyaXB0aW9uIHx8ICdubyBkZXNjcmlwdGlvbid9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkdfU09GVCB9fT57cHJldmlldy5ib2R5fTwvdGV4dD5cbiAgICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWVtb3JpZXM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVmZm9ydFBhbmVsKHsgbGV2ZWxzLCBjdXJyZW50LCBkZWZhdWx0TGV2ZWwsIGZvY3VzZWQsIG9uUGljaywgb25QaWNrRGVmYXVsdCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgaXRlbXMgPSBsZXZlbHNcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnKSB7XG4gICAgICBvblBpY2tEZWZhdWx0KGl0ZW1zW2N1cnNvcigpXSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGxhYmVsID0gKGwpID0+IChsLmtleSA9PT0gbnVsbCA/ICdkZWZhdWx0JyA6IGwua2V5KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJUaGlua2luZyBlZmZvcnRcIiBoaW50PVwiai9rIHRvIG1vdmUgXHUwMEI3IGVudGVyOiB0aGlzIHNlc3Npb24gXHUwMEI3IGN0cmwrczogc2V0IGFzIGRlZmF1bHQgXHUwMEI3IGVzYzogY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICAgIHNlbGVjdGVkPXtjdXJzb3IoKX1cbiAgICAgICAgICBvblNlbGVjdD17c2V0Q3Vyc29yfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICByZW5kZXJJdGVtPXsobCwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2xhYmVsKGwpLnBhZEVuZChNYXRoLm1heCgxMCwgbGFiZWwobCkubGVuZ3RoICsgMSkpfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntsLmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICB7bC5rZXkgPT09IGN1cnJlbnQgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogTVVURUQgfX0+eycgIFx1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAge2wua2V5ID09PSBkZWZhdWx0TGV2ZWwgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnICBcdTAwQjcgZGVmYXVsdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUGFuZWwoeyB0aGVtZXMsIHByZWYsIGZvY3VzZWQsIG9uUGljaywgb25QcmV2aWV3LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2N1cnNvciwgc2V0Q3Vyc29yXSA9IGNyZWF0ZVNpZ25hbChNYXRoLm1heCgwLCB0aGVtZXMuZmluZEluZGV4KCh0KSA9PiB0LmtleSA9PT0gcHJlZikpKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJUaGVtZVwiIGhpbnQ9XCJqL2sgdG8gbW92ZSBhbmQgcHJldmlldyBcdTAwQjcgZW50ZXIgdG8gYXBwbHkgXHUwMEI3IGVzYzogY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBpdGVtcz17dGhlbWVzfVxuICAgICAgICAgIHNlbGVjdGVkPXtjdXJzb3IoKX1cbiAgICAgICAgICBvblNlbGVjdD17KGkpID0+IHtcbiAgICAgICAgICAgIHNldEN1cnNvcihpKVxuICAgICAgICAgICAgb25QcmV2aWV3KHRoZW1lc1tpXSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17Nn1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICByZW5kZXJJdGVtPXsodCwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e3Qua2V5LnBhZEVuZChNYXRoLm1heCgxMCwgdC5rZXkubGVuZ3RoICsgMSkpfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pnt0LmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICB7dC5rZXkgPT09IHByZWYgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogTVVURUQgfX0+eycgIFx1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZnVuY3Rpb24gQ29udGV4dE92ZXJ2aWV3KHsgb3ZlcnZpZXcgfSkge1xuICBjb25zdCByZXZlYWwgPSB1c2VBbmltYXRlZCgwLCBlYXNlKDcwMCkpXG4gIGNvbnN0IGxheW91dCA9IHVzZUxheW91dCgpXG4gIHJldmVhbC5zZXQoMSlcbiAgY29uc3Qgd2lkdGggPSBNYXRoLm1heCgxLCBsYXlvdXQud2lkdGggfHwgMSlcbiAgY29uc3QgdmlzaWJsZSA9IE1hdGgucm91bmQod2lkdGggKiByZXZlYWwoKSlcbiAgY29uc3QgdG90YWwgPSBvdmVydmlldy5zZWdtZW50cy5yZWR1Y2UoKHN1bSwgc2VnbWVudCkgPT4gc3VtICsgc2VnbWVudC50b2tlbnMsIDApXG4gIGxldCBib3VuZGFyeSA9IDBcbiAgY29uc3QgY2VsbHMgPSBbXVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgd2lkdGg7IGkrKykge1xuICAgIGNvbnN0IHNlZ21lbnQgPSBvdmVydmlldy5zZWdtZW50cy5maW5kKChpdGVtKSA9PiB7XG4gICAgICBib3VuZGFyeSArPSBpdGVtLnRva2VucyAvIHRvdGFsICogd2lkdGhcbiAgICAgIHJldHVybiBpIDwgYm91bmRhcnlcbiAgICB9KVxuICAgIGJvdW5kYXJ5ID0gMFxuICAgIGNlbGxzLnB1c2goXG4gICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBpID49IHZpc2libGUgPyBQQU5FTF9CRyA6IHNlZ21lbnQ/LmNvbG9yIHx8IEZBSU5UIH19PlxuICAgICAgICB7aSA+PSB2aXNpYmxlID8gJyAnIDogc2VnbWVudCA/ICdcdTI1ODgnIDogJ1x1MjU5MSd9XG4gICAgICA8L3RleHQ+LFxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT57Y2VsbHN9PC9ib3g+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBmbGV4V3JhcDogJ3dyYXAnIH19PlxuICAgICAgICB7b3ZlcnZpZXcuc2VnbWVudHMubWFwKChzZWdtZW50KSA9PiAoXG4gICAgICAgICAgPGJveCBrZXk9e3NlZ21lbnQubGFiZWx9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBtYXJnaW5SaWdodDogMiB9fT5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWdtZW50LmNvbG9yIH19Plx1MjVBMDwvdGV4dD5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCAke3NlZ21lbnQubGFiZWx9IGB9PC90ZXh0PlxuICAgICAgICAgICAgPEFuaW1hdGVkVmFsdWVcbiAgICAgICAgICAgICAgdmFsdWU9e3NlZ21lbnQudG9rZW5zfVxuICAgICAgICAgICAgICBpbml0aWFsPXswfVxuICAgICAgICAgICAgICBkdXJhdGlvbj17MjAwMH1cbiAgICAgICAgICAgICAgY29sb3I9e0ZBSU5UfVxuICAgICAgICAgICAgICBoaWdobGlnaHQ9e2FjY2VudCgpfVxuICAgICAgICAgICAgICBmb3JtYXQ9eyh0b2tlbnMpID0+IHRva2VucyA8IDEwMDAgPyBgJHtNYXRoLnJvdW5kKHRva2Vucyl9IHRva2AgOiBgJHsodG9rZW5zIC8gMTAwMCkudG9GaXhlZCgxKX1rYH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICkpfVxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEluZm9MaXN0UGFuZWwoeyB0aXRsZSwgcm93cywgb3ZlcnZpZXcsIGZvY3VzZWQsIG9uQ2xvc2UgfSkge1xuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPXt0aXRsZX0gaGludD1cImovayBvciBcdTIxOTFcdTIxOTMgdG8gc2Nyb2xsIFx1MDBCNyBlc2MgY2xvc2VcIj5cbiAgICAgIHtvdmVydmlldyAmJiA8Q29udGV4dE92ZXJ2aWV3IG92ZXJ2aWV3PXtvdmVydmlld30gLz59XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDE0LCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHtyb3dzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm90aGluZyBoZXJlIHlldDwvdGV4dD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8U2Nyb2xsQm94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IGZvY3VzZWQ9e2ZvY3VzZWR9IHNjcm9sbGJhcj5cbiAgICAgICAgICAgIHtyb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxib3gga2V5PXtgJHtyb3cubmFtZX0tJHtpfWB9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IGkgPT09IDAgPyAwIDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19Pntyb3cubmFtZX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgICAgICAgICB7cm93Lm5vdGUgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pntyb3cubm90ZX08L3RleHQ+fVxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57cm93LmRlc2MgfHwgJ25vIGRlc2NyaXB0aW9uJ308L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFByb2plY3RQYW5lbCh7IHByb2plY3RzLCBsb2FkaW5nLCBmb2N1c2VkLCBvblBpY2ssIG9uRGVsZXRlLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKHByb2plY3RzWzBdIHx8IG51bGwpXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnICYmIHByZXZpZXcoKSkge1xuICAgICAgb25EZWxldGUocHJldmlldygpKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlN3aXRjaCBwcm9qZWN0XCIgaGludD1cIlx1MjE5MVx1MjE5MyB0byBtb3ZlIFx1MDBCNyBlbnRlciB0byBqdW1wIHRvIGl0cyBsYXN0IHNlc3Npb24gXHUwMEI3IGN0cmwreCBkZWxldGUgXHUwMEI3IGVzYyB0byBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT5sb2FkaW5nIHByb2plY3RzLi4uPC90ZXh0PlxuICAgICAgICAgICkgOiBwcm9qZWN0cy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8ga25vd24gcHJvamVjdHMgeWV0PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgICBpdGVtcz17cHJvamVjdHN9XG4gICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWQgJiYgIWxvYWRpbmd9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIHByb2plY3RzLi4uXCJcbiAgICAgICAgICAgICAgZmlsdGVyPXsocSwgcCkgPT4gZnV6enlTY29yZShxLCBwLnBhdGgpID49IDB9XG4gICAgICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXsocCkgPT4gc2V0UHJldmlldyhwKX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICAgIHJlbmRlckl0ZW09eyhwLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgICAge3AubGF0ZXN0LmNvbG9yICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBwLmxhdGVzdC5jb2xvciB9fT57J1x1MjVBQSAnfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkcgfX0+e3AucGF0aH08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7cC5jdXJyZW50ID8gJ2N1cnJlbnQgXHUwMEI3ICcgOiAnJ30ke3RpbWVBZ28ocC5sYXRlc3QuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge3ByZXZpZXcoKSA/IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRywgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e3ByZXZpZXcoKS5wYXRofTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgJHtwcmV2aWV3KCkuY291bnR9ICR7cHJldmlldygpLmNvdW50ID09PSAxID8gJ3Nlc3Npb24nIDogJ3Nlc3Npb25zJ30gXHUwMEI3ICR7dGltZUFnbyhwcmV2aWV3KCkubGF0ZXN0LmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntgbGFzdDogJHtwcmV2aWV3KCkubGF0ZXN0LnRpdGxlLnJlcGxhY2UoL1xcbi9nLCAnICcpfWB9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBwcm9qZWN0czwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ29ubmVjdFBhbmVsKHsgcHJvdmlkZXJzLCBmb2N1c2VkLCBvbkNvbm5lY3QsIG9uRGlzY29ubmVjdCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtpbmRleCwgc2V0SW5kZXhdID0gY3JlYXRlU2lnbmFsKDApXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuXG4gIGNvbnN0IHNlbGVjdGVkID0gKCkgPT4gcHJvdmlkZXJzW01hdGgubWluKGluZGV4KCksIHByb3ZpZGVycy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgY29uc3QgcCA9IHNlbGVjdGVkKClcbiAgICBpZiAocCAmJiBldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnICYmIHAuY29ubmVjdGVkKSB7XG4gICAgICBvbkRpc2Nvbm5lY3QocClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJDb25uZWN0IGEgc3Vic2NyaXB0aW9uXCIgaGludD1cImVudGVyIHNpZ24gaW4gXHUwMEI3IGN0cmwreCBkaXNjb25uZWN0ICh0d2ljZSkgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8TWVudVxuICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICBpdGVtcz17cHJvdmlkZXJzfVxuICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgIG9uU2VsZWN0PXtzZXRJbmRleH1cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgdmltS2V5c1xuICAgICAgICAgIG9uU3VibWl0PXsocCkgPT4gb25Db25uZWN0KHApfVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyhwLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogcC5jb25uZWN0ZWQgPyBhY2NlbnQoKSA6IE1VVEVEIH19PntwLmNvbm5lY3RlZCA/ICdcdTI1QUEnIDogJ1x1MjVBQid9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57YCAke3AubGFiZWx9ICBgfTwvdGV4dD5cbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogTVVURUQgfX0+XG4gICAgICAgICAgICAgICAgICB7cC5jb25uZWN0ZWQgPyBgY29ubmVjdGVkJHtwLmVtYWlsID8gYCBhcyAke3AuZW1haWx9YCA6ICcnfWAgOiAnbm90IGNvbm5lY3RlZCd9XG4gICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdha2V1cHNQYW5lbCh7IHdha2V1cHMsIGZvY3VzZWQsIG9uQ2FuY2VsLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3RpY2ssIHNldFRpY2tdID0gY3JlYXRlU2lnbmFsKDApXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnRlcnZhbCgoKSA9PiBzZXRUaWNrKCh0KSA9PiB0ICsgMSksIDEwMDApXG4gIHZvaWQgdGljaygpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiB3YWtldXBzW01hdGgubWluKGluZGV4KCksIHdha2V1cHMubGVuZ3RoIC0gMSldIHx8IG51bGxcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGNvbnN0IHcgPSBzZWxlY3RlZCgpXG4gICAgaWYgKHcgJiYgZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4Jykge1xuICAgICAgb25DYW5jZWwodylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGNvdW50ZG93biA9IChhdCkgPT4ge1xuICAgIGNvbnN0IHNlY3MgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKChhdCAtIERhdGUubm93KCkpIC8gMTAwMCkpXG4gICAgaWYgKHNlY3MgPCA2MCkgcmV0dXJuIGBpbiAke3NlY3N9c2BcbiAgICBjb25zdCBtaW5zID0gTWF0aC5mbG9vcihzZWNzIC8gNjApXG4gICAgaWYgKG1pbnMgPCA2MCkgcmV0dXJuIGBpbiAke21pbnN9bSAke3NlY3MgJSA2MH1zYFxuICAgIHJldHVybiBgaW4gJHtNYXRoLmZsb29yKG1pbnMgLyA2MCl9aCAke21pbnMgJSA2MH1tYFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlNjaGVkdWxlZCB3YWtlLXVwc1wiIGhpbnQ9XCJqL2sgdG8gbW92ZSBcdTAwQjcgZW50ZXIgb3IgY3RybCt4IGNhbmNlbCAodHdpY2UpIFx1MDBCNyBlc2MgY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge3dha2V1cHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBwZW5kaW5nIHdha2UtdXBzIFx1MDBCNyB0aGUgYWdlbnQgc2NoZWR1bGVzIHRoZW0gd2l0aCBzY2hlZHVsZV93YWtldXA8L3RleHQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXt3YWtldXBzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0SW5kZXh9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIGl0ZW1IZWlnaHQ9ezJ9XG4gICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgICBvblN1Ym1pdD17KHcpID0+IG9uQ2FuY2VsKHcpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsodywgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2BcdTIzRjAgJHt3LmlkfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19Pntjb3VudGRvd24ody5hdCl9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke25ldyBEYXRlKHcuYXQpLnRvTG9jYWxlVGltZVN0cmluZygpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSwgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eycgICAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IEZHX1NPRlQgfX0+e3cubm90ZS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmNvbnN0IE1DUF9TVEFUVVMgPSB7XG4gIGNvbm5lY3RlZDogeyBpY29uOiAnXHUyNUFBJywgY29sb3I6IGFjY2VudCgpIH0sXG4gIGNvbm5lY3Rpbmc6IHsgaWNvbjogJ1x1MjVDQycsIGNvbG9yOiAnI2ZiYmYyNCcgfSxcbiAgZXJyb3I6IHsgaWNvbjogJ1x1MjcxNycsIGNvbG9yOiBSRUQgfSxcbiAgZGlzYWJsZWQ6IHsgaWNvbjogJ1x1MjVBQicsIGNvbG9yOiBGQUlOVCB9LFxuICBpZGxlOiB7IGljb246ICdcdTI1QUInLCBjb2xvcjogTVVURUQgfSxcbn1cblxuZnVuY3Rpb24gRm9ybUZpZWxkKHsgbGFiZWwsIGFjdGl2ZSwgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGQUlOVCB9fT57bGFiZWx9PC90ZXh0PlxuICAgICAge2NoaWxkcmVufVxuICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiBNY3BTZXJ2ZXJGb3JtKHsgZm9jdXNlZCwgc2VydmVyLCBvblNhdmUsIG9uSW52YWxpZCwgb25DYW5jZWwgfSkge1xuICBjb25zdCBpbml0aWFsID0gc2VydmVyID8gcGFyc2VTZXJ2ZXJTcGVjKHNlcnZlci5jb21tYW5kKSA6IG51bGxcbiAgY29uc3QgZWRpdGluZyA9ICEhc2VydmVyXG4gIGNvbnN0IFtuYW1lLCBzZXROYW1lXSA9IGNyZWF0ZVNpZ25hbChzZXJ2ZXI/Lm5hbWUgfHwgJycpXG4gIGNvbnN0IFtzY29wZSwgc2V0U2NvcGVdID0gY3JlYXRlU2lnbmFsKHNlcnZlcj8uc2NvcGUgfHwgJ2dsb2JhbCcpXG4gIGNvbnN0IFt0cmFuc3BvcnQsIHNldFRyYW5zcG9ydF0gPSBjcmVhdGVTaWduYWwoaW5pdGlhbD8udHlwZSB8fCAnc3RkaW8nKVxuICBjb25zdCBbdGFyZ2V0LCBzZXRUYXJnZXRdID0gY3JlYXRlU2lnbmFsKGluaXRpYWw/LnR5cGUgPT09ICdodHRwJyA/IGluaXRpYWwudXJsIDogc2VydmVyPy5jb21tYW5kIHx8ICcnKVxuICBjb25zdCBpbml0aWFsSGVhZGVycyA9IGluaXRpYWw/LnR5cGUgPT09ICdodHRwJ1xuICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5rZXlzKGluaXRpYWwuaGVhZGVycykubWFwKChuYW1lKSA9PiBbbmFtZSwgUkVEQUNURURfSEVBREVSXSkpXG4gICAgOiB7fVxuICBjb25zdCBbaGVhZGVycywgc2V0SGVhZGVyc10gPSBjcmVhdGVTaWduYWwoZm9ybWF0SHR0cFNlcnZlclNwZWMoJycsIGluaXRpYWxIZWFkZXJzKS50cmltKCkpXG5cbiAgY29uc3QgZm0gPSB1c2VGb2N1cyh7IGluaXRpYWw6IGVkaXRpbmcgPyAndHJhbnNwb3J0JyA6ICduYW1lJyB9KVxuICBpZiAoIWVkaXRpbmcpIHtcbiAgICBmbS5pdGVtKCduYW1lJylcbiAgICBmbS5pdGVtKCdzY29wZScpXG4gIH1cbiAgZm0uaXRlbSgndHJhbnNwb3J0JylcbiAgZm0uaXRlbSgndGFyZ2V0JylcbiAgaWYgKHRyYW5zcG9ydCgpID09PSAnaHR0cCcpIGZtLml0ZW0oJ2hlYWRlcnMnKVxuICBmbS5pdGVtKCdzYXZlJylcbiAgZm0uaXRlbSgnY2FuY2VsJylcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNhbmNlbCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBodHRwID0gdHJhbnNwb3J0KCkgPT09ICdodHRwJ1xuXG4gIGNvbnN0IHN1Ym1pdCA9ICgpID0+IHtcbiAgICBjb25zdCBzZXJ2ZXJOYW1lID0gbmFtZSgpLnRyaW0oKVxuICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0KCkudHJpbSgpXG4gICAgaWYgKCFzZXJ2ZXJOYW1lIHx8IC9cXHMvLnRlc3Qoc2VydmVyTmFtZSkpIHJldHVybiBvbkludmFsaWQoJ25hbWUgaXMgcmVxdWlyZWQgYW5kIGNhbm5vdCBjb250YWluIHNwYWNlcycpXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG9uSW52YWxpZChodHRwID8gJ3VybCBpcyByZXF1aXJlZCcgOiAnY29tbWFuZCBpcyByZXF1aXJlZCcpXG4gICAgaWYgKGh0dHAgJiYgIS9eaHR0cHM/OlxcL1xcLy8udGVzdCh2YWx1ZSkpIHJldHVybiBvbkludmFsaWQoJ3VybCBtdXN0IHN0YXJ0IHdpdGggaHR0cDovLyBvciBodHRwczovLycpXG4gICAgaWYgKCFodHRwICYmIC9eaHR0cHM/OlxcL1xcLy8udGVzdCh2YWx1ZSkpIHJldHVybiBvbkludmFsaWQoJ2Egc3RkaW8gY29tbWFuZCBjYW5ub3Qgc3RhcnQgd2l0aCBhIHVybDsgcGljayB0aGUgaHR0cCB0cmFuc3BvcnQnKVxuICAgIGNvbnN0IGV4dHJhID0gaGVhZGVycygpLnRyaW0oKVxuICAgIGxldCBzcGVjID0gaHR0cCAmJiBleHRyYSA/IGAke3ZhbHVlfSAke2V4dHJhfWAgOiB2YWx1ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVNlcnZlclNwZWMoc3BlYylcbiAgICAgIGlmIChwYXJzZWQudHlwZSA9PT0gJ2h0dHAnICYmIGluaXRpYWw/LnR5cGUgPT09ICdodHRwJykge1xuICAgICAgICBmb3IgKGNvbnN0IFtoZWFkZXIsIGhlYWRlclZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWQuaGVhZGVycykpIHtcbiAgICAgICAgICBpZiAoaGVhZGVyVmFsdWUgPT09IFJFREFDVEVEX0hFQURFUiAmJiBpbml0aWFsLmhlYWRlcnNbaGVhZGVyXSAhPT0gdW5kZWZpbmVkKSBwYXJzZWQuaGVhZGVyc1toZWFkZXJdID0gaW5pdGlhbC5oZWFkZXJzW2hlYWRlcl1cbiAgICAgICAgfVxuICAgICAgICBzcGVjID0gZm9ybWF0SHR0cFNlcnZlclNwZWMocGFyc2VkLnVybCwgcGFyc2VkLmhlYWRlcnMpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gb25JbnZhbGlkKGVyci5tZXNzYWdlKVxuICAgIH1cbiAgICBvblNhdmUoc2VydmVyTmFtZSwgc3BlYywgc2NvcGUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgeyFlZGl0aW5nICYmIChcbiAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cIm5hbWVcIiBhY3RpdmU9e2ZtLmlzKCduYW1lJyl9PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgIDxUZXh0SW5wdXQgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnbmFtZScpfSBwbGFjZWhvbGRlcj1cImxpbmVhclwiIG9uQ2hhbmdlPXtzZXROYW1lfSAvPlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgICl9XG4gICAgICB7IWVkaXRpbmcgJiYgKFxuICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwic2NvcGVcIiBhY3RpdmU9e2ZtLmlzKCdzY29wZScpfT5cbiAgICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydnbG9iYWwnLCAncHJvamVjdCddfSBzZWxlY3RlZD17c2NvcGUoKX0gb25DaGFuZ2U9e3NldFNjb3BlfSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdzY29wZScpfSAvPlxuICAgICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgICl9XG4gICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwidHJhbnNwb3J0XCIgYWN0aXZlPXtmbS5pcygndHJhbnNwb3J0Jyl9PlxuICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydzdGRpbycsICdodHRwJ119IHNlbGVjdGVkPXt0cmFuc3BvcnQoKX0gb25DaGFuZ2U9e3NldFRyYW5zcG9ydH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndHJhbnNwb3J0Jyl9IC8+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9e2h0dHAgPyAndXJsJyA6ICdjb21tYW5kJ30gYWN0aXZlPXtmbS5pcygndGFyZ2V0Jyl9PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgPFRleHRJbnB1dFxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndGFyZ2V0Jyl9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aHR0cCA/ICdodHRwczovL21jcC5saW5lYXIuYXBwL21jcCcgOiAnbnB4IC15IEBtb2RlbGNvbnRleHRwcm90b2NvbC9zZXJ2ZXItZmlsZXN5c3RlbSAvdG1wJ31cbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZT17dGFyZ2V0KCl9XG4gICAgICAgICAgICBvbkNoYW5nZT17c2V0VGFyZ2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICB7aHR0cCAmJiAoXG4gICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJoZWFkZXJzIFx1MDBCNyBvcHRpb25hbFwiIGFjdGl2ZT17Zm0uaXMoJ2hlYWRlcnMnKX0+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgPFRleHRJbnB1dCBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdoZWFkZXJzJyl9IHBsYWNlaG9sZGVyPSdBdXRob3JpemF0aW9uPVwiQmVhcmVyIC4uLlwiIFgtVGVhbT1cImNvcmVcIicgaW5pdGlhbFZhbHVlPXtoZWFkZXJzKCl9IG9uQ2hhbmdlPXtzZXRIZWFkZXJzfSAvPlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgICl9XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8QnV0dG9uIGxhYmVsPXtlZGl0aW5nID8gJ3NhdmUnIDogJ2FkZCd9IG9uUHJlc3M9e3N1Ym1pdH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnc2F2ZScpfSAvPlxuICAgICAgICA8dGV4dD4gIDwvdGV4dD5cbiAgICAgICAgPEJ1dHRvbiBsYWJlbD1cImNhbmNlbFwiIG9uUHJlc3M9e29uQ2FuY2VsfSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdjYW5jZWwnKX0gdmFyaWFudD1cImRpbVwiIC8+XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTWNwUGFuZWwoeyBzZXJ2ZXJzLCBmb2N1c2VkLCBvblRvZ2dsZSwgb25SZWNvbm5lY3QsIG9uUmVtb3ZlLCBvbkFkZCwgb25FZGl0LCBvbkludmFsaWQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbZm9ybSwgc2V0Rm9ybV0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3ZpZXdpbmcsIHNldFZpZXdpbmddID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkICYmICFmb3JtKCksICgpID0+ICh2aWV3aW5nKCkgPyBzZXRWaWV3aW5nKG51bGwpIDogb25DbG9zZSgpKSlcblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHNlcnZlcnNbTWF0aC5taW4oaW5kZXgoKSwgc2VydmVycy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuICBjb25zdCB2aWV3ZWQgPSAoKSA9PiBzZXJ2ZXJzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gdmlld2luZygpKSB8fCBudWxsXG5cbiAgaWYgKHZpZXdpbmcoKSAmJiB2aWV3ZWQoKSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHZpZXdlZCgpXG4gICAgY29uc3QgZGVzY3JpYmUgPSAodCkgPT4gdC5kZXNjcmlwdGlvbi5yZXBsYWNlKC9eXFxbW15cXF1dKlxcXVxccyovLCAnJykudHJpbSgpIHx8ICdubyBkZXNjcmlwdGlvbidcbiAgICByZXR1cm4gKFxuICAgICAgPFBhbmVsRnJhbWVcbiAgICAgICAgdGl0bGU9e2BNQ1Agc2VydmVycyBcdTAwQjcgJHtzZXJ2ZXIubmFtZX0gXHUwMEI3ICR7c2VydmVyLnRvb2xzLmxlbmd0aH0gJHtzZXJ2ZXIudG9vbHMubGVuZ3RoID09PSAxID8gJ3Rvb2wnIDogJ3Rvb2xzJ31gfVxuICAgICAgICBoaW50PVwiai9rIG9yIFx1MjE5MVx1MjE5MyB0byBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrIHRvIHNlcnZlcnNcIlxuICAgICAgPlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDE0LCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge3NlcnZlci50b29scy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gdG9vbHMgcmVwb3J0ZWQgXHUwMEI3IGlzIHRoZSBzZXJ2ZXIgY29ubmVjdGVkPzwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkPXtmb2N1c2VkfSBzY3JvbGxiYXI+XG4gICAgICAgICAgICAgIHtzZXJ2ZXIudG9vbHMubWFwKCh0LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBrZXk9e3QubmFtZX0gc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogaSA9PT0gMCA/IDAgOiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19Pnt0Lm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntkZXNjcmliZSh0KX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L1BhbmVsRnJhbWU+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJNQ1Agc2VydmVyc1wiXG4gICAgICBoaW50PXtmb3JtKClcbiAgICAgICAgPyAndGFiIG1vdmVzIGJldHdlZW4gZmllbGRzIFx1MDBCNyBqL2sgKyBzcGFjZSBwaWNrcyBhIHJhZGlvIG9wdGlvbiBcdTAwQjcgZXNjIGNhbmNlbHMnXG4gICAgICAgIDogJ2VudGVyIGVuYWJsZS9kaXNhYmxlIFx1MDBCNyB0IHRvb2xzIFx1MDBCNyBlIGVkaXQgXHUwMEI3IHIgcmVjb25uZWN0IFx1MDBCNyBhIGFkZCBcdTAwQjcgY3RybCt4IHJlbW92ZSAodHdpY2UpIFx1MDBCNyBlc2MgY2xvc2UnfVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge2Zvcm0oKSA/IChcbiAgICAgICAgICA8TWNwU2VydmVyRm9ybVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIHNlcnZlcj17Zm9ybSgpID09PSAnYWRkJyA/IG51bGwgOiBmb3JtKCl9XG4gICAgICAgICAgICBvblNhdmU9eyhuYW1lLCBzcGVjLCBzY29wZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZm9ybSgpID09PSAnYWRkJykgb25BZGQobmFtZSwgc3BlYywgc2NvcGUpXG4gICAgICAgICAgICAgIGVsc2Ugb25FZGl0KG5hbWUsIHNwZWMpXG4gICAgICAgICAgICAgIHNldEZvcm0obnVsbClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkludmFsaWQ9e29uSW52YWxpZH1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRGb3JtKG51bGwpfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiBzZXJ2ZXJzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gTUNQIHNlcnZlcnMgY29uZmlndXJlZCBcdTAwQjcgcHJlc3MgYSB0byBhZGQgb25lPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17c2VydmVyc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhzKSA9PiBvblRvZ2dsZShzLm5hbWUpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsocywgeyBhY3RpdmUgfSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzdCA9IE1DUF9TVEFUVVNbcy5zdGF0dXNdIHx8IE1DUF9TVEFUVVMuaWRsZVxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc3QuY29sb3IgfX0+e3N0Lmljb259PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57YCAke3MubmFtZS5wYWRFbmQoTWF0aC5tYXgoMTQsIHMubmFtZS5sZW5ndGggKyAxKSl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHMuc3RhdHVzID09PSAnZXJyb3InID8gUkVEIDogTVVURUQgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cy5zdGF0dXMgPT09ICdlcnJvcicgPyBzLmVycm9yIDogcy5zdGF0dXMgPT09ICdjb25uZWN0ZWQnID8gYCR7cy50b29sQ291bnR9IHRvb2xzYCA6IHMuc3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQ+eycgICAgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGQUlOVCB9fT57c2hvcnRlbkhvbWUocmVkYWN0U2VydmVyU3BlYyhzLmNvbW1hbmQpKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7cy5zY29wZSA9PT0gJ3Byb2plY3QnID8gJ3Byb2plY3QnIDogJ2dsb2JhbCd9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgICB7IWZvcm0oKSAmJiAoXG4gICAgICAgIDxNY3BLZXlzXG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBvbktleT17KGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcyA9IHNlbGVjdGVkKClcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdhJykgc2V0Rm9ybSgnYWRkJylcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAnZScpIHNldEZvcm0ocylcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAncicpIG9uUmVjb25uZWN0KHMubmFtZSlcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAncmVtb3ZlJykgb25SZW1vdmUocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICd0Jykgc2V0Vmlld2luZyhzLm5hbWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmZ1bmN0aW9uIE1jcEtleXMoeyBmb2N1c2VkLCBvbktleSB9KSB7XG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcpIHtcbiAgICAgIG9uS2V5KCdyZW1vdmUnKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIWV2ZW50LmN0cmwgJiYgWydhJywgJ2UnLCAncicsICd0J10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgb25LZXkoZXZlbnQua2V5KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG4gIHJldHVybiBudWxsXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7OztBQUFBLFNBQVMsZUFBZTtBQVNqQixTQUFTLGFBQWEsTUFBTSxRQUFRLEtBQUs7QUFDOUMsUUFBTUEsUUFBTyxDQUFDO0FBQ2QsYUFBVyxLQUFLLFdBQVc7QUFDekIsVUFBTSxPQUFPLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUNyQyxRQUFJLEtBQU0sQ0FBQUEsTUFBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUk7QUFBQSxFQUNqQztBQUNBLFNBQU9BO0FBQ1Q7QUFFTyxTQUFTLFVBQVVBLE9BQU07QUFDOUIsVUFBUUEsS0FBSTtBQUNaLFNBQU8sT0FBTyxLQUFLQSxLQUFJO0FBQ3pCO0FBRU8sU0FBUyxRQUFRLFlBQVk7QUFDbEMsU0FBTyxVQUFVLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLFlBQVksQ0FBQztBQUMxRjtBQXpCQSxJQUVNO0FBRk47QUFBQTtBQUVBLElBQU0sWUFBWTtBQUFBLE1BQ2hCLEVBQUUsSUFBSSxVQUFVLE9BQU8sVUFBVSxLQUFLLENBQUMsa0JBQWtCLG1CQUFtQixFQUFFO0FBQUEsTUFDOUUsRUFBRSxJQUFJLGFBQWEsT0FBTyxVQUFVLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtBQUFBLE1BQy9ELEVBQUUsSUFBSSxVQUFVLE9BQU8sVUFBVSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7QUFBQSxNQUN6RCxFQUFFLElBQUksT0FBTyxPQUFPLFFBQVEsS0FBSyxDQUFDLGFBQWEsRUFBRTtBQUFBLElBQ25EO0FBQUE7QUFBQTs7O0FDUE8sU0FBUyxVQUFVQyxTQUFRLE1BQU07QUFDdEMsU0FBT0EsUUFBTyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSSxLQUFLO0FBQ2hEO0FBRU8sU0FBUyxhQUFhQSxTQUFRO0FBQ25DLFNBQU9BLFFBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxjQUFjLEtBQUssS0FBSztBQUN0RDtBQUVPLFNBQVMsYUFBYUMsUUFBTyxPQUFPO0FBQ3pDLE1BQUksQ0FBQ0EsUUFBTyxTQUFTLENBQUMsTUFBTyxRQUFPO0FBQ3BDLFFBQU0sVUFBVSxNQUFNLGdCQUFnQixLQUFLQSxPQUFNLE1BQU07QUFDdkQsUUFBTSxXQUFXLE1BQU0sb0JBQW9CLEtBQUtBLE9BQU0sTUFBTTtBQUM1RCxVQUFRLFNBQVMsV0FBVztBQUM5QjtBQWJBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSxTQUFTLFlBQVksaUJBQWlCO0FBQ3RDLFNBQVMsZUFBZTtBQUN4QixTQUFTLFNBQVMsTUFBTSxlQUFlO0FBRWhDLFNBQVMsV0FBVztBQUN6QixTQUFPLFFBQVEsSUFBSSxhQUFhLEtBQUssUUFBUSxHQUFHLE9BQU87QUFDekQ7QUFFTyxTQUFTLFdBQVcsTUFBTTtBQUMvQixTQUFPLFFBQVEsSUFBSSxFQUFFLFFBQVEsV0FBVyxHQUFHO0FBQzdDO0FBRU8sU0FBUyxnQkFBZ0IsS0FBSztBQUNuQyxNQUFJLE1BQU0sUUFBUSxHQUFHO0FBQ3JCLFFBQU0sT0FBTyxRQUFRO0FBQ3JCLFNBQU8sTUFBTTtBQUNYLFFBQUksV0FBVyxLQUFLLEtBQUssTUFBTSxDQUFDLEVBQUcsUUFBTztBQUMxQyxVQUFNLFNBQVMsUUFBUSxHQUFHO0FBQzFCLFFBQUksV0FBVyxPQUFPLFFBQVEsS0FBTSxRQUFPLFFBQVEsR0FBRztBQUN0RCxVQUFNO0FBQUEsRUFDUjtBQUNGO0FBRU8sU0FBUyxXQUFXLE1BQU07QUFDL0IsU0FBTyxLQUFLLFNBQVMsR0FBRyxZQUFZLFdBQVcsSUFBSSxDQUFDO0FBQ3REO0FBRU8sU0FBUyxZQUFZLE1BQU07QUFDaEMsU0FBTyxLQUFLLFdBQVcsSUFBSSxHQUFHLFVBQVU7QUFDMUM7QUFFTyxTQUFTLGtCQUFrQixNQUFNLFdBQVc7QUFDakQsU0FBTyxLQUFLLFdBQVcsSUFBSSxHQUFHLGVBQWUsU0FBUztBQUN4RDtBQUVPLFNBQVMsZ0JBQWdCLE1BQU0sV0FBVyxTQUFTO0FBQ3hELFNBQU8sS0FBSyxrQkFBa0IsTUFBTSxTQUFTLEdBQUcsU0FBUyxPQUFPLEVBQUU7QUFDcEU7QUFFTyxTQUFTLG1CQUFtQixNQUFNO0FBQ3ZDLFNBQU8sS0FBSyxXQUFXLElBQUksR0FBRyxlQUFlO0FBQy9DO0FBRU8sU0FBUyxlQUFlLE1BQU07QUFDbkMsU0FBTyxLQUFLLFdBQVcsSUFBSSxHQUFHLFVBQVU7QUFDMUM7QUFFTyxTQUFTLGdCQUFnQjtBQUM5QixTQUFPLEtBQUssU0FBUyxHQUFHLFVBQVU7QUFDcEM7QUFFTyxTQUFTLGtCQUFrQjtBQUNoQyxTQUFPLEtBQUssU0FBUyxHQUFHLFFBQVE7QUFDbEM7QUFFTyxTQUFTLGlCQUFpQixNQUFNO0FBQ3JDLFNBQU8sS0FBSyxNQUFNLFNBQVMsUUFBUTtBQUNyQztBQUVPLFNBQVMsbUJBQW1CO0FBQ2pDLFNBQU8sS0FBSyxTQUFTLEdBQUcsV0FBVztBQUNyQztBQUVPLFNBQVMsVUFBVSxLQUFLO0FBQzdCLFlBQVUsS0FBSyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQ2xDLFNBQU87QUFDVDtBQWxFQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUE7QUFBQTtBQUFBO0FBQUEsaUNBQUMsUUFBUyxFQUFDLFFBQVMsRUFBQywwQkFBeUIsRUFBQyxJQUFLLDBCQUF5QixNQUFPLGVBQWMsYUFBYyx1RkFBc0YsUUFBUyxnQkFBZSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEdBQUUsV0FBWSxPQUFNLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxRQUFPLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFNLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsZ0NBQStCLEVBQUMsSUFBSyxnQ0FBK0IsTUFBTyxnQ0FBK0IsYUFBYyxpRkFBZ0YsUUFBUyxnQkFBZSxZQUFhLE9BQU0sV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxNQUFNLEdBQUUsUUFBUyxDQUFDLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxNQUFLLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxHQUFFLEVBQUMsR0FBRSx5QkFBd0IsRUFBQyxJQUFLLHlCQUF3QixNQUFPLHlCQUF3QixhQUFjLDJFQUEwRSxRQUFTLHFCQUFvQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxXQUFVLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEtBQUksWUFBYSxPQUFNLGFBQWMsSUFBRyxFQUFDLEdBQUUsb0JBQW1CLEVBQUMsSUFBSyxvQkFBbUIsTUFBTyxvQkFBbUIsYUFBYyx3RUFBdUUsUUFBUyxnQkFBZSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxXQUFVLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEdBQUUsWUFBYSxNQUFLLGFBQWMsSUFBRyxFQUFDLEdBQUUsc0JBQXFCLEVBQUMsSUFBSyxzQkFBcUIsTUFBTyxzQkFBcUIsYUFBYywrRUFBOEUsUUFBUyxTQUFRLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFNBQVEsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE1BQUssT0FBUSxFQUFDLFNBQVUsUUFBTyxRQUFTLE1BQUssRUFBQyxHQUFFLG9CQUFtQixFQUFDLElBQUssb0JBQW1CLE1BQU8sb0JBQW1CLGFBQWMsOEVBQTZFLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsS0FBSSxHQUFFLFFBQVMsY0FBYSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLE1BQUssRUFBQyxHQUFFLHdCQUF1QixFQUFDLElBQUssd0JBQXVCLE1BQU8sd0JBQXVCLGFBQWMsc0ZBQXFGLFFBQVMsY0FBYSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxRQUFTLGNBQWEsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLE9BQVEsQ0FBQyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxJQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxJQUFHLEVBQUMsRUFBQyxHQUFFLGlDQUFnQyxFQUFDLElBQUssaUNBQWdDLE1BQU8saUNBQWdDLGFBQWMsbUVBQWtFLFFBQVMscUJBQW9CLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFdBQVUsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxRQUFTLGNBQWEsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEtBQUksWUFBYSxPQUFNLGFBQWMsSUFBRyxFQUFDLEdBQUUsa0JBQWlCLEVBQUMsSUFBSyxrQkFBaUIsTUFBTyxrQkFBaUIsYUFBYyw4RUFBNkUsUUFBUyxTQUFRLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFNBQVEsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE1BQUssT0FBUSxFQUFDLFNBQVUsUUFBTyxRQUFTLE1BQUssRUFBQyxHQUFFLDhCQUE2QixFQUFDLElBQUssOEJBQTZCLE1BQU8sbUJBQWtCLGFBQWMsK0VBQThFLFFBQVMsY0FBYSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEdBQUUsV0FBWSxPQUFNLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxRQUFPLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxRQUFPLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLEVBQUMsR0FBRSx3QkFBdUIsRUFBQyxJQUFLLHdCQUF1QixNQUFPLHdCQUF1QixhQUFjLHFGQUFvRixRQUFTLFVBQVMsWUFBYSxPQUFNLFdBQVksT0FBTSxXQUFZLE9BQU0sYUFBYyxPQUFNLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsTUFBTSxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsTUFBSyxRQUFTLEVBQUMsR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsRUFBQyxFQUFDLEdBQUUseUJBQXdCLEVBQUMsSUFBSyx5QkFBd0IsTUFBTyx5QkFBd0IsYUFBYyxtRUFBa0UsUUFBUyxxQkFBb0IsWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsS0FBSSxHQUFFLFFBQVMsY0FBYSxNQUFPLEVBQUMsT0FBUSxPQUFNLFFBQVMsSUFBRyxFQUFDLEdBQUUsOEJBQTZCLEVBQUMsSUFBSyw4QkFBNkIsTUFBTyw4QkFBNkIsYUFBYyxpRkFBZ0YsUUFBUyxnQkFBZSxZQUFhLE9BQU0sV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxNQUFNLEdBQUUsUUFBUyxDQUFDLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxNQUFLLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLEVBQUMsR0FBRSx5QkFBd0IsRUFBQyxJQUFLLHlCQUF3QixNQUFPLHlCQUF3QixhQUFjLHNFQUFxRSxRQUFTLHFCQUFvQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxTQUFRLEdBQUUsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksS0FBTSxNQUFLLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxLQUFJLFlBQWEsTUFBSyxhQUFjLElBQUcsRUFBQyxHQUFFLGtCQUFpQixFQUFDLElBQUssa0JBQWlCLE1BQU8sa0JBQWlCLGFBQWMsNkVBQTRFLFFBQVMsY0FBYSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLEtBQU0sTUFBSyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsSUFBRyxZQUFhLE9BQU0sT0FBUSxDQUFDLEVBQUMsT0FBUSxLQUFJLFFBQVMsSUFBRyxZQUFhLE1BQUssTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLElBQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxLQUFJLFFBQVMsSUFBRyxZQUFhLEtBQUksRUFBQyxFQUFDLEdBQUUsNkJBQTRCLEVBQUMsSUFBSyw2QkFBNEIsTUFBTyw2QkFBNEIsYUFBYyxrR0FBaUcsUUFBUyxVQUFTLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsR0FBRSxXQUFZLE9BQU0sYUFBYyxNQUFLLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsT0FBTyxHQUFFLFFBQVMsQ0FBQyxPQUFPLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsUUFBTyxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxFQUFDLEdBQUUsa0NBQWlDLEVBQUMsSUFBSyxrQ0FBaUMsTUFBTyxpQkFBZ0IsYUFBYyxrRkFBaUYsUUFBUyxnQkFBZSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxXQUFVLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxPQUFNLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLFFBQU8sT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU0sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEdBQUUsRUFBQyxHQUFFLDBCQUF5QixFQUFDLElBQUssMEJBQXlCLE1BQU8sMEJBQXlCLGFBQWMsc0ZBQXFGLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsV0FBVSxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxHQUFFLFlBQWEsTUFBSyxhQUFjLEVBQUMsRUFBQyxHQUFFLHNDQUFxQyxFQUFDLElBQUssc0NBQXFDLE1BQU8sdUNBQXNDLGFBQWMsZ0ZBQStFLFFBQVMsY0FBYSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxPQUFRLENBQUMsRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sSUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsSUFBRyxFQUFDLEVBQUMsR0FBRSx1QkFBc0IsRUFBQyxJQUFLLHVCQUFzQixNQUFPLHVCQUFzQixhQUFjLHdFQUF1RSxRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFdBQVUsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsU0FBUSxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLE1BQUssYUFBYyxJQUFHLEVBQUMsR0FBRSxvQkFBbUIsRUFBQyxJQUFLLG9CQUFtQixNQUFPLG9CQUFtQixhQUFjLDRFQUEyRSxRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFNBQVEsR0FBRSxFQUFDLE1BQU8saUJBQWdCLEtBQU0sR0FBRSxLQUFNLE1BQUssQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEtBQUksWUFBYSxNQUFLLGFBQWMsRUFBQyxFQUFDLEdBQUUsNEJBQTJCLEVBQUMsSUFBSyw0QkFBMkIsTUFBTyw0QkFBMkIsYUFBYywyRUFBMEUsUUFBUyxxQkFBb0IsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsV0FBVSxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxLQUFJLFlBQWEsT0FBTSxhQUFjLElBQUcsRUFBQyxHQUFFLDBCQUF5QixFQUFDLElBQUssMEJBQXlCLE1BQU8sMEJBQXlCLGFBQWMsaUZBQWdGLFFBQVMsY0FBYSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLFNBQVEsU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxPQUFRLENBQUMsRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sSUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsSUFBRyxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsV0FBWSxFQUFDLFFBQVMsRUFBQyxtQkFBa0IsRUFBQyxJQUFLLG1CQUFrQixNQUFPLG1CQUFrQixhQUFjLG1GQUFrRixRQUFTLGVBQWMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLE1BQU0sR0FBRSxjQUFlLEVBQUMsT0FBUSxFQUFDLE1BQU8sRUFBQyxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsYUFBYyxLQUFJLEdBQUUsVUFBVyxFQUFDLE1BQU8sRUFBQyxPQUFRLE9BQU0sR0FBRSxTQUFVLEVBQUMsa0JBQWlCLHVCQUFzQixFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEdBQUUsbUJBQWtCLEVBQUMsSUFBSyxtQkFBa0IsTUFBTyw0QkFBMkIsYUFBYyw2RUFBNEUsUUFBUyxlQUFjLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLEtBQUssR0FBRSxRQUFTLGNBQWEsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsTUFBSyxFQUFDLEdBQUUscUJBQW9CLEVBQUMsSUFBSyxxQkFBb0IsTUFBTyxxQkFBb0IsYUFBYyxxRkFBb0YsUUFBUyxpQkFBZ0IsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sS0FBSyxFQUFDLEdBQUUsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSw0QkFBMkIsRUFBQyxJQUFLLDRCQUEyQixNQUFPLG1CQUFrQixhQUFjLDZFQUE0RSxRQUFTLGVBQWMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsS0FBSyxHQUFFLFFBQVMsY0FBYSxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxNQUFLLEVBQUMsR0FBRSxvQkFBbUIsRUFBQyxJQUFLLG9CQUFtQixNQUFPLDZCQUE0QixhQUFjLDhFQUE2RSxRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLEtBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSw0QkFBMkIsRUFBQyxJQUFLLDRCQUEyQixNQUFPLG1CQUFrQixhQUFjLDZFQUE0RSxRQUFTLGVBQWMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxHQUFFLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxLQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEdBQUUsOEJBQTZCLEVBQUMsSUFBSyw4QkFBNkIsTUFBTyxxQkFBb0IsYUFBYyxpRkFBZ0YsUUFBUyxpQkFBZ0IsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFRLFFBQVMsS0FBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLEtBQUksRUFBQyxHQUFFLGtCQUFpQixFQUFDLElBQUssa0JBQWlCLE1BQU8sa0JBQWlCLGFBQWMsK0VBQThFLFFBQVMsZ0JBQWUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFRLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxhQUFjLEtBQUksRUFBQyxHQUFFLG1CQUFrQixFQUFDLElBQUssbUJBQWtCLE1BQU8sbUJBQWtCLGFBQWMsZ0ZBQStFLFFBQVMsaUJBQWdCLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFNBQVEsR0FBRSxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxJQUFHLEVBQUMsR0FBRSw2QkFBNEIsRUFBQyxJQUFLLDZCQUE0QixNQUFPLG9CQUFtQixhQUFjLHVGQUFzRixRQUFTLGdCQUFlLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLGlCQUFnQixLQUFNLEtBQUksQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLEtBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSxtQkFBa0IsRUFBQyxJQUFLLG1CQUFrQixNQUFPLDRCQUEyQixhQUFjLDZFQUE0RSxRQUFTLGVBQWMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxHQUFFLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxLQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEdBQUUsbUJBQWtCLEVBQUMsSUFBSyxtQkFBa0IsTUFBTyxtQkFBa0IsYUFBYywyRUFBMEUsUUFBUyxlQUFjLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxRQUFPLFNBQVEsS0FBSyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLEtBQUksWUFBYSxHQUFFLGFBQWMsS0FBSSxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsT0FBUSxPQUFNLEdBQUUsU0FBVSxFQUFDLGtCQUFpQix1QkFBc0IsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLEtBQUksRUFBQyxHQUFFLG1CQUFrQixFQUFDLElBQUssbUJBQWtCLE1BQU8sbUJBQWtCLGFBQWMsK0VBQThFLFFBQVMsZUFBYyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsUUFBTyxLQUFLLEVBQUMsR0FBRSxFQUFDLE1BQU8saUJBQWdCLEtBQU0sS0FBSSxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFRLFFBQVMsTUFBTSxHQUFFLGNBQWUsRUFBQyxPQUFRLEVBQUMsTUFBTyxFQUFDLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxLQUFJLFlBQWEsR0FBRSxhQUFjLEtBQUksR0FBRSxVQUFXLEVBQUMsTUFBTyxFQUFDLE9BQVEsT0FBTSxHQUFFLFNBQVUsRUFBQyxrQkFBaUIsdUJBQXNCLEVBQUMsRUFBQyxFQUFDLEVBQUMsR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsR0FBRSxxQkFBb0IsRUFBQyxJQUFLLHFCQUFvQixNQUFPLDhCQUE2QixhQUFjLGlGQUFnRixRQUFTLGlCQUFnQixZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxpQkFBZ0IsS0FBTSxLQUFJLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxLQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxFQUFDLEVBQUMsRUFBQyxHQUFFLFFBQVMsRUFBQyxRQUFTLEVBQUMsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYyx1RkFBc0YsUUFBUyxhQUFZLFlBQWEsT0FBTSxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYyxrRkFBaUYsUUFBUyxXQUFVLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBUSxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxJQUFHLFFBQVMsS0FBSSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sTUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLEVBQUMsRUFBQyxHQUFFLElBQUssRUFBQyxJQUFLLE1BQUssTUFBTyxNQUFLLGFBQWMsK0VBQThFLFFBQVMsS0FBSSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxJQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxJQUFHLEVBQUMsR0FBRSxXQUFVLEVBQUMsSUFBSyxXQUFVLE1BQU8sV0FBVSxhQUFjLHlFQUF3RSxRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsUUFBTyxPQUFNLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBUSxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxJQUFHLEdBQUUsVUFBVyxFQUFDLE1BQU8sRUFBQyxjQUFlLFdBQVUsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxJQUFHLFlBQWEsTUFBSyxPQUFRLENBQUMsRUFBQyxPQUFRLEdBQUUsUUFBUyxNQUFLLFlBQWEsS0FBSSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sTUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLEdBQUUsUUFBUyxNQUFLLFlBQWEsSUFBRyxFQUFDLEVBQUMsR0FBRSx5QkFBd0IsRUFBQyxJQUFLLHlCQUF3QixNQUFPLHlCQUF3QixhQUFjLG9GQUFtRixRQUFTLFVBQVMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsUUFBUSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssYUFBYyxPQUFNLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsSUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLFlBQWEsSUFBRyxFQUFDLEdBQUUsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYyxnRkFBK0UsUUFBUyxXQUFVLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsT0FBTSxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQVEsT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxLQUFJLE9BQVEsQ0FBQyxFQUFDLE9BQVEsSUFBRyxRQUFTLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLE1BQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxFQUFDLEVBQUMsR0FBRSxnQkFBZSxFQUFDLElBQUssZ0JBQWUsTUFBTyxnQkFBZSxhQUFjLDBFQUF5RSxRQUFTLFlBQVcsWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEtBQUksWUFBYSxJQUFHLEVBQUMsR0FBRSxvQkFBbUIsRUFBQyxJQUFLLG9CQUFtQixNQUFPLG9CQUFtQixhQUFjLDBHQUF5RyxRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsV0FBVSxPQUFNLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsT0FBTSxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsT0FBTyxHQUFFLFFBQVMsQ0FBQyxRQUFPLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFPLE9BQVEsTUFBTSxRQUFTLEtBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxJQUFHLGNBQWUsR0FBRSxFQUFDLEdBQUUsdUJBQXNCLEVBQUMsSUFBSyx1QkFBc0IsTUFBTyx5QkFBd0IsYUFBYyxtRkFBa0YsUUFBUyxPQUFNLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBTyxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsSUFBRyxZQUFhLE1BQUssRUFBQyxHQUFFLElBQUssRUFBQyxJQUFLLE1BQUssTUFBTyxNQUFLLGFBQWMsMEVBQXlFLFFBQVMsS0FBSSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxJQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxJQUFHLEVBQUMsR0FBRSxjQUFhLEVBQUMsSUFBSyxjQUFhLE1BQU8sY0FBYSxhQUFjLDJFQUEwRSxRQUFTLFlBQVcsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsV0FBVSxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsR0FBRSxZQUFhLE1BQUssRUFBQyxHQUFFLHVCQUFzQixFQUFDLElBQUssdUJBQXNCLE1BQU8sdUJBQXNCLGFBQWMsdUZBQXNGLFFBQVMsbUJBQWtCLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLFFBQU8sT0FBTyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sT0FBUSxLQUFPLFFBQVMsS0FBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsZ0JBQWUsRUFBQyxJQUFLLGdCQUFlLE1BQU8sZ0JBQWUsYUFBYywrRUFBOEUsUUFBUyxZQUFXLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLFFBQU8sT0FBTyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxjQUFlLEVBQUMsT0FBUSxFQUFDLE1BQU8sRUFBQyxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLEtBQUksR0FBRSxVQUFXLEVBQUMsTUFBTyxFQUFDLGNBQWUsV0FBVSxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEtBQUksWUFBYSxNQUFLLEVBQUMsR0FBRSxVQUFTLEVBQUMsSUFBSyxVQUFTLE1BQU8sVUFBUyxhQUFjLDBFQUF5RSxRQUFTLFNBQVEsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLElBQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsSUFBRyxFQUFDLEdBQUUsaUJBQWdCLEVBQUMsSUFBSyxpQkFBZ0IsTUFBTyxpQkFBZ0IsYUFBYyxvRUFBbUUsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBUSxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsS0FBSSxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsY0FBZSxXQUFVLEVBQUMsRUFBQyxHQUFFLEtBQU0sRUFBQyxVQUFXLEVBQUMsTUFBTyxFQUFDLFdBQVksRUFBQyxNQUFPLE1BQUssRUFBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsWUFBYSxNQUFLLGFBQWMsT0FBTSxPQUFRLENBQUMsRUFBQyxPQUFRLEdBQUUsUUFBUyxNQUFLLFlBQWEsS0FBSSxhQUFjLE1BQUssTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLE1BQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxHQUFFLFFBQVMsTUFBSyxZQUFhLEtBQUksYUFBYyxLQUFJLEVBQUMsRUFBQyxHQUFFLG9CQUFtQixFQUFDLElBQUssb0JBQW1CLE1BQU8sb0JBQW1CLGFBQWMsa0ZBQWlGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE9BQU0sY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxRQUFPLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxHQUFFLE9BQVEsR0FBRSxRQUFTLEVBQUMsRUFBQyxHQUFFLGlCQUFnQixFQUFDLElBQUssaUJBQWdCLE1BQU8saUJBQWdCLGFBQWMsdUZBQXNGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsSUFBRyxZQUFhLE1BQUssRUFBQyxHQUFFLHFCQUFvQixFQUFDLElBQUsscUJBQW9CLE1BQU8scUJBQW9CLGFBQWMsdUZBQXNGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsUUFBTyxPQUFPLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsdUJBQXNCLEVBQUMsSUFBSyx1QkFBc0IsTUFBTyxnQkFBZSxhQUFjLGtGQUFpRixRQUFTLGFBQVksWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsUUFBUSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFPLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsV0FBVSxFQUFDLElBQUssV0FBVSxNQUFPLFdBQVUsYUFBYyw2RUFBNEUsUUFBUyxVQUFTLFlBQWEsT0FBTSxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxNQUFNLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLFFBQVMsSUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxLQUFJLFlBQWEsS0FBSSxFQUFDLEdBQUUsaUJBQWdCLEVBQUMsSUFBSyxpQkFBZ0IsTUFBTyxpQkFBZ0IsYUFBYyw4RUFBNkUsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsU0FBUSxFQUFDLElBQUssU0FBUSxNQUFPLFNBQVEsYUFBYyw2RUFBNEUsUUFBUyxPQUFNLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxNQUFLLG1CQUFvQixPQUFNLGFBQWMsTUFBSyxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE1BQUssUUFBUyxLQUFJLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLEdBQUUsRUFBQyxHQUFFLGdCQUFlLEVBQUMsSUFBSyxnQkFBZSxNQUFPLGdCQUFlLGFBQWMsNkVBQTRFLFFBQVMsWUFBVyxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLE1BQUssWUFBYSxLQUFJLEVBQUMsR0FBRSxXQUFVLEVBQUMsSUFBSyxXQUFVLE1BQU8sV0FBVSxhQUFjLG1GQUFrRixRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLFNBQVEsUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxJQUFHLEVBQUMsR0FBRSxxQkFBb0IsRUFBQyxJQUFLLHFCQUFvQixNQUFPLHVCQUFzQixhQUFjLDZFQUE0RSxRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFPLFFBQVMsS0FBSSxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLEVBQUMsR0FBRSxxQkFBb0IsRUFBQyxJQUFLLHFCQUFvQixNQUFPLHVCQUFzQixhQUFjLDZFQUE0RSxRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFPLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxJQUFHLFlBQWEsS0FBSSxFQUFDLEdBQUUsaUJBQWdCLEVBQUMsSUFBSyxpQkFBZ0IsTUFBTyxpQkFBZ0IsYUFBYywwRUFBeUUsUUFBUyxPQUFNLFlBQWEsT0FBTSxXQUFZLE9BQU0sV0FBWSxPQUFNLG1CQUFvQixPQUFNLGFBQWMsTUFBSyxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU0sUUFBUyxLQUFJLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEtBQUksWUFBYSxFQUFDLEVBQUMsR0FBRSxnQkFBZSxFQUFDLElBQUssZ0JBQWUsTUFBTyxnQkFBZSxhQUFjLCtFQUE4RSxRQUFTLFlBQVcsWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxTQUFRLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxLQUFJLFlBQWEsTUFBSyxFQUFDLEdBQUUsaUJBQWdCLEVBQUMsSUFBSyxpQkFBZ0IsTUFBTyxpQkFBZ0IsYUFBYyxrRkFBaUYsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLFFBQU8sT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEdBQUUsT0FBUSxHQUFFLFFBQVMsRUFBQyxFQUFDLEdBQUUsaUJBQWdCLEVBQUMsSUFBSyxpQkFBZ0IsTUFBTyxpQkFBZ0IsYUFBYyx1RkFBc0YsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLE9BQU0sVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsSUFBRyxZQUFhLE1BQUssRUFBQyxHQUFFLDBCQUF5QixFQUFDLElBQUssMEJBQXlCLE1BQU8sMEJBQXlCLGFBQWMscUZBQW9GLFFBQVMsa0JBQWlCLFlBQWEsT0FBTSxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE1BQUssUUFBUyxLQUFJLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEVBQUMsRUFBQyxHQUFFLHNCQUFxQixFQUFDLElBQUssc0JBQXFCLE1BQU8sc0JBQXFCLGFBQWMsdUZBQXNGLFFBQVMsYUFBWSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxPQUFNLFVBQVMsTUFBTSxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsR0FBRSxZQUFhLE1BQUssRUFBQyxHQUFFLHVCQUFzQixFQUFDLElBQUssdUJBQXNCLE1BQU8sZ0JBQWUsYUFBYyxtRkFBa0YsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQVEsRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBTyxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsSUFBRyxZQUFhLE1BQUssRUFBQyxHQUFFLFNBQVEsRUFBQyxJQUFLLFNBQVEsTUFBTyxTQUFRLGFBQWMsK0VBQThFLFFBQVMsT0FBTSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxXQUFVLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUscUJBQW9CLEVBQUMsSUFBSyxxQkFBb0IsTUFBTyx1QkFBc0IsYUFBYyxtRkFBa0YsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsR0FBRSxXQUFZLE9BQU0sbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFPLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsSUFBRyxZQUFhLE1BQUssRUFBQyxHQUFFLDBCQUF5QixFQUFDLElBQUssMEJBQXlCLE1BQU8sMEJBQXlCLGFBQWMscUZBQW9GLFFBQVMsa0JBQWlCLFlBQWEsT0FBTSxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE1BQUssUUFBUyxLQUFJLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLEVBQUMsRUFBQyxHQUFFLDBCQUF5QixFQUFDLElBQUssMEJBQXlCLE1BQU8sMEJBQXlCLGFBQWMscUZBQW9GLFFBQVMsa0JBQWlCLFlBQWEsT0FBTSxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE1BQUssUUFBUyxLQUFJLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEVBQUMsRUFBQyxHQUFFLGVBQWMsRUFBQyxJQUFLLGVBQWMsTUFBTyxlQUFjLGFBQWMsK0VBQThFLFFBQVMsWUFBVyxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBTyxRQUFTLE1BQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsS0FBSSxZQUFhLE1BQUssRUFBQyxHQUFFLFdBQVUsRUFBQyxJQUFLLFdBQVUsTUFBTyxXQUFVLGFBQWMsOEVBQTZFLFFBQVMsT0FBTSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsTUFBSyxFQUFDLEdBQUUsV0FBVSxFQUFDLElBQUssV0FBVSxNQUFPLFdBQVUsYUFBYyx1RkFBc0YsUUFBUyxXQUFVLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLFFBQU8sU0FBUSxLQUFLLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBUSxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsY0FBZSxFQUFDLE9BQVEsRUFBQyxNQUFPLEVBQUMsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxHQUFFLGFBQWMsS0FBSSxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsY0FBZSxXQUFVLEVBQUMsRUFBQyxHQUFFLEtBQU0sRUFBQyxVQUFXLEVBQUMsTUFBTyxFQUFDLFdBQVksRUFBQyxNQUFPLE1BQUssRUFBQyxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxLQUFJLGFBQWMsTUFBSyxPQUFRLENBQUMsRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxhQUFjLE1BQUssTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLE1BQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsYUFBYyxLQUFJLEVBQUMsRUFBQyxHQUFFLG9CQUFtQixFQUFDLElBQUssb0JBQW1CLE1BQU8sb0JBQW1CLGFBQWMsb0ZBQW1GLFFBQVMsS0FBSSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxhQUFjLE9BQU0sV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxJQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxJQUFHLEVBQUMsR0FBRSxxQkFBb0IsRUFBQyxJQUFLLHFCQUFvQixNQUFPLHVCQUFzQixhQUFjLDZFQUE0RSxRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFPLFFBQVMsTUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLEtBQUksUUFBUyxJQUFHLFlBQWEsS0FBSSxFQUFDLEdBQUUsY0FBYSxFQUFDLElBQUssY0FBYSxNQUFPLGNBQWEsYUFBYywwRUFBeUUsUUFBUyxZQUFXLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFdBQVUsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEtBQUksWUFBYSxLQUFLLEVBQUMsR0FBRSxXQUFVLEVBQUMsSUFBSyxXQUFVLE1BQU8sV0FBVSxhQUFjLG1FQUFrRSxRQUFTLFVBQVMsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLElBQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxLQUFJLFFBQVMsS0FBSSxZQUFhLE1BQUssRUFBQyxHQUFFLGVBQWMsRUFBQyxJQUFLLGVBQWMsTUFBTyxlQUFjLGFBQWMsMEVBQXlFLFFBQVMsT0FBTSxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksTUFBSyxtQkFBb0IsT0FBTSxhQUFjLE1BQUssV0FBWSxXQUFVLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sUUFBUyxLQUFJLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLEdBQUUsRUFBQyxHQUFFLFdBQVUsRUFBQyxJQUFLLFdBQVUsTUFBTyxXQUFVLGFBQWMscUZBQW9GLFFBQVMsT0FBTSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLElBQUcsWUFBYSxNQUFLLEVBQUMsR0FBRSxVQUFTLEVBQUMsSUFBSyxVQUFTLE1BQU8sVUFBUyxhQUFjLDhFQUE2RSxRQUFTLE9BQU0sWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLFdBQVksV0FBVSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQU8sUUFBUyxNQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsS0FBSSxRQUFTLElBQUcsWUFBYSxLQUFJLEVBQUMsR0FBRSxnQkFBZSxFQUFDLElBQUssZ0JBQWUsTUFBTyxnQkFBZSxhQUFjLGdFQUErRCxRQUFTLFlBQVcsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsUUFBTyxPQUFNLFVBQVMsUUFBTyxTQUFRLEtBQUssRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxPQUFRLE9BQVEsT0FBTyxRQUFTLE1BQU0sR0FBRSxjQUFlLEVBQUMsT0FBUSxFQUFDLE1BQU8sRUFBQyxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksYUFBYyxJQUFHLEdBQUUsVUFBVyxFQUFDLE1BQU8sRUFBQyxjQUFlLFdBQVUsRUFBQyxFQUFDLEdBQUUsS0FBTSxFQUFDLFVBQVcsRUFBQyxNQUFPLEVBQUMsV0FBWSxFQUFDLE1BQU8sTUFBSyxFQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUMsR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxZQUFhLEtBQUksYUFBYyxNQUFLLE9BQVEsQ0FBQyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxLQUFJLGFBQWMsS0FBSSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sTUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLEdBQUUsUUFBUyxHQUFFLFlBQWEsS0FBSSxhQUFjLElBQUcsRUFBQyxFQUFDLEdBQUUsd0JBQXVCLEVBQUMsSUFBSyx3QkFBdUIsTUFBTyx3QkFBdUIsYUFBYyxrRkFBaUYsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLFFBQU8sT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEdBQUUsT0FBUSxHQUFFLFFBQVMsRUFBQyxFQUFDLEdBQUUsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYyx3RkFBdUYsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxHQUFFLE9BQVEsR0FBRSxRQUFTLEVBQUMsRUFBQyxHQUFFLGFBQVksRUFBQyxJQUFLLGFBQVksTUFBTyxhQUFZLGFBQWMsK0VBQThFLFFBQVMsV0FBVSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxHQUFFLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE9BQU0sV0FBWSxjQUFhLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLE9BQU8sR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLEVBQUMsR0FBRSxlQUFjLEVBQUMsSUFBSyxlQUFjLE1BQU8sZUFBYyxhQUFjLDhFQUE2RSxRQUFTLFdBQVUsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsVUFBUyxRQUFPLE9BQU8sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixPQUFNLGFBQWMsT0FBTSxXQUFZLGNBQWEsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsRUFBQyxHQUFFLGVBQWMsRUFBQyxJQUFLLGVBQWMsTUFBTyxlQUFjLGFBQWMsdUZBQXNGLFFBQVMsV0FBVSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLFNBQVEsS0FBSyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQVEsT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLGNBQWUsRUFBQyxPQUFRLEVBQUMsTUFBTyxFQUFDLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxhQUFjLEtBQUksR0FBRSxVQUFXLEVBQUMsTUFBTyxFQUFDLGNBQWUsV0FBVSxFQUFDLEVBQUMsR0FBRSxLQUFNLEVBQUMsVUFBVyxFQUFDLE1BQU8sRUFBQyxXQUFZLEVBQUMsTUFBTyxNQUFLLEVBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLE1BQUssT0FBUSxDQUFDLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsYUFBYyxNQUFLLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxNQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxHQUFFLGFBQWMsS0FBSSxFQUFDLEVBQUMsR0FBRSxVQUFTLEVBQUMsSUFBSyxVQUFTLE1BQU8sVUFBUyxhQUFjLDZFQUE0RSxRQUFTLFNBQVEsWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsT0FBTSxXQUFZLFdBQVUsY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxRQUFTLElBQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxJQUFHLFFBQVMsR0FBRSxFQUFDLEdBQUUsV0FBVSxFQUFDLElBQUssV0FBVSxNQUFPLFdBQVUsYUFBYywrRUFBOEUsUUFBUyxPQUFNLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLFFBQU8sT0FBTyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQVEsT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLGNBQWUsRUFBQyxPQUFRLEVBQUMsTUFBTyxFQUFDLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxJQUFHLFlBQWEsS0FBSSxHQUFFLFVBQVcsRUFBQyxNQUFPLEVBQUMsY0FBZSxXQUFVLEVBQUMsRUFBQyxFQUFDLEVBQUMsR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLE1BQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEVBQUMsRUFBQyxFQUFDLEdBQUUsZUFBYyxFQUFDLElBQUssZUFBYyxNQUFPLGVBQWMsYUFBYyxrRkFBaUYsUUFBUyxhQUFZLFlBQWEsTUFBSyxXQUFZLE9BQU0sV0FBWSxPQUFNLGFBQWMsT0FBTSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxPQUFPLEdBQUUsUUFBUyxDQUFDLE9BQU8sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxHQUFFLE9BQVEsR0FBRSxRQUFTLEVBQUMsR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsSUFBRyxZQUFhLEtBQUksRUFBQyxFQUFDLEVBQUMsR0FBRSxLQUFNLEVBQUMsUUFBUyxFQUFDLHNCQUFxQixFQUFDLElBQUssc0JBQXFCLE1BQU8sc0JBQXFCLGFBQWMsa0ZBQWlGLFFBQVMsUUFBTyxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE9BQU0sY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsT0FBTyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE1BQUssUUFBUyxFQUFDLEVBQUMsR0FBRSw4QkFBNkIsRUFBQyxJQUFLLDhCQUE2QixNQUFPLDhCQUE2QixhQUFjLGtGQUFpRixRQUFTLFFBQU8sWUFBYSxNQUFLLFdBQVksT0FBTSxXQUFZLE9BQU0sYUFBYyxPQUFNLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxTQUFRLEtBQUssRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFLLFFBQVMsRUFBQyxFQUFDLEdBQUUsNEJBQTJCLEVBQUMsSUFBSyw0QkFBMkIsTUFBTyx5QkFBd0IsYUFBYyx3RUFBdUUsUUFBUyxRQUFPLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLElBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsS0FBSSxZQUFhLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLElBQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLElBQUcsRUFBQyxFQUFDLEdBQUUsa0JBQWlCLEVBQUMsSUFBSyxrQkFBaUIsTUFBTyxrQkFBaUIsYUFBYyw0RUFBMkUsUUFBUyxjQUFhLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxNQUFLLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsT0FBTyxRQUFTLE1BQU0sR0FBRSxNQUFPLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxZQUFhLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxZQUFhLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLElBQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxHQUFFLFFBQVMsR0FBRSxZQUFhLElBQUcsRUFBQyxFQUFDLEdBQUUsWUFBVyxFQUFDLElBQUssWUFBVyxNQUFPLFlBQVcsYUFBYyw0RUFBMkUsUUFBUyxRQUFPLFlBQWEsTUFBSyxXQUFZLE1BQUssbUJBQW9CLENBQUMsRUFBQyxNQUFPLFVBQVMsUUFBUyxDQUFDLFFBQU8sT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQVEsUUFBUyxJQUFLLEdBQUUsTUFBTyxFQUFDLE9BQVEsTUFBSyxRQUFTLEtBQUksWUFBYSxLQUFJLE9BQVEsQ0FBQyxFQUFDLE9BQVEsS0FBSSxRQUFTLEdBQUUsWUFBYSxLQUFJLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxJQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsS0FBSSxRQUFTLEdBQUUsWUFBYSxJQUFHLEVBQUMsRUFBQyxHQUFFLGdDQUErQixFQUFDLElBQUssZ0NBQStCLE1BQU8sNkJBQTRCLGFBQWMsMkVBQTBFLFFBQVMsUUFBTyxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksTUFBSyxtQkFBb0IsTUFBSyxhQUFjLE1BQUssY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLE1BQU0sRUFBQyxHQUFFLGNBQWUsT0FBTSxPQUFRLEVBQUMsU0FBVSxLQUFRLFFBQVMsSUFBSyxHQUFFLE1BQU8sRUFBQyxPQUFRLE1BQUssUUFBUyxLQUFJLFlBQWEsS0FBSSxPQUFRLENBQUMsRUFBQyxPQUFRLEtBQUksUUFBUyxHQUFFLFlBQWEsS0FBSSxNQUFPLEVBQUMsTUFBTyxXQUFVLE1BQU8sSUFBTSxFQUFDLENBQUMsR0FBRSxtQkFBb0IsRUFBQyxPQUFRLEtBQUksUUFBUyxHQUFFLFlBQWEsSUFBRyxFQUFDLEVBQUMsR0FBRSxZQUFXLEVBQUMsSUFBSyxZQUFXLE1BQU8sWUFBVyxhQUFjLG1GQUFrRixRQUFTLFFBQU8sWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLE1BQU0sRUFBQyxDQUFDLEdBQUUsV0FBWSxNQUFLLG1CQUFvQixNQUFLLGFBQWMsTUFBSyxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQU8sUUFBUyxJQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsR0FBRSxRQUFTLEdBQUUsWUFBYSxLQUFJLE9BQVEsQ0FBQyxFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxHQUFFLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxJQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsR0FBRSxRQUFTLElBQUcsWUFBYSxFQUFDLEVBQUMsRUFBQyxHQUFFLHNCQUFxQixFQUFDLElBQUssc0JBQXFCLE1BQU8sc0JBQXFCLGFBQWMsa0ZBQWlGLFFBQVMsUUFBTyxZQUFhLE1BQUssV0FBWSxPQUFNLFdBQVksT0FBTSxhQUFjLE9BQU0sY0FBZSxjQUFhLGNBQWUsY0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sU0FBUSxLQUFLLEdBQUUsUUFBUyxDQUFDLFNBQVEsS0FBSyxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLEtBQUssUUFBUyxFQUFDLEVBQUMsR0FBRSw4QkFBNkIsRUFBQyxJQUFLLDhCQUE2QixNQUFPLHlCQUF3QixhQUFjLDJFQUEwRSxRQUFTLFFBQU8sWUFBYSxNQUFLLFdBQVksTUFBSyxtQkFBb0IsQ0FBQyxFQUFDLE1BQU8sVUFBUyxRQUFTLENBQUMsT0FBTSxVQUFTLFFBQU8sT0FBTyxFQUFDLENBQUMsR0FBRSxXQUFZLE9BQU0sbUJBQW9CLE1BQUssYUFBYyxNQUFLLGNBQWUsY0FBYSxjQUFlLGNBQWEsWUFBYSxFQUFDLE9BQVEsQ0FBQyxRQUFPLFNBQVEsS0FBSyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBUSxRQUFTLElBQUssR0FBRSxNQUFPLEVBQUMsT0FBUSxNQUFLLFFBQVMsS0FBSSxZQUFhLEtBQUksT0FBUSxDQUFDLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLEtBQUksTUFBTyxFQUFDLE1BQU8sV0FBVSxNQUFPLElBQU0sRUFBQyxDQUFDLEdBQUUsbUJBQW9CLEVBQUMsT0FBUSxLQUFJLFFBQVMsR0FBRSxZQUFhLElBQUcsRUFBQyxFQUFDLEVBQUMsRUFBQyxFQUFDO0FBQUE7QUFBQTs7O0FDQXh0OUQsU0FBUyxVQUFVLGlCQUFpQjtBQUNwQyxTQUFTLFFBQUFDLGFBQVk7QUFRckIsU0FBUyxZQUFZO0FBQ25CLFNBQU9BLE1BQUssU0FBUyxHQUFHLG1CQUFtQjtBQUM3QztBQUVBLFNBQVMsT0FBTyxNQUFNO0FBQ3BCLFFBQU0sTUFBTSxDQUFDO0FBQ2IsYUFBVyxZQUFZLFdBQVc7QUFDaEMsUUFBSSxLQUFLLFFBQVEsR0FBRyxPQUFRLEtBQUksUUFBUSxJQUFJLEVBQUUsUUFBUSxLQUFLLFFBQVEsRUFBRSxPQUFPO0FBQUEsRUFDOUU7QUFDQSxTQUFPO0FBQ1Q7QUFFQSxlQUFlLFlBQVk7QUFDekIsTUFBSTtBQUNGLFdBQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsRUFDeEQsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFQSxlQUFzQixlQUFlLEVBQUUsVUFBVSxNQUFNLElBQUksQ0FBQyxHQUFHO0FBQzdELFFBQU0sV0FBVyxNQUFNLFFBQVEsV0FBVztBQUMxQyxNQUFJLENBQUMsU0FBUyxHQUFJLE9BQU0sSUFBSSxNQUFNLHlCQUF5QixTQUFTLE1BQU0sRUFBRTtBQUM1RSxRQUFNQyxhQUFZLE9BQU8sTUFBTSxTQUFTLEtBQUssQ0FBQztBQUM5QyxZQUFVLFNBQVMsQ0FBQztBQUNwQixRQUFNLFVBQVUsVUFBVSxHQUFHLEtBQUssVUFBVSxFQUFFLElBQUksS0FBSyxJQUFJLEdBQUcsV0FBQUEsV0FBVSxDQUFDLENBQUM7QUFDMUUsU0FBT0E7QUFDVDtBQUVBLGVBQXNCLFlBQVksRUFBRSxVQUFVLE1BQU0sSUFBSSxDQUFDLEdBQUc7QUFDMUQsUUFBTUMsVUFBUyxNQUFNLFVBQVU7QUFDL0IsTUFBSUEsV0FBVSxLQUFLLElBQUksSUFBSUEsUUFBTyxLQUFLLElBQUssUUFBT0EsUUFBTztBQUMxRCxpQkFBZSxFQUFFLFFBQVEsQ0FBQyxFQUFFLE1BQU0sTUFBTTtBQUFBLEVBQUMsQ0FBQztBQUMxQyxTQUFPQSxTQUFRLGFBQWE7QUFDOUI7QUFRTyxTQUFTLGNBQWNELFlBQVcsYUFBYTtBQUNwRCxRQUFNLFFBQVEsVUFBVSxPQUFPLENBQUMsTUFBTSxZQUFZLFNBQVMsQ0FBQyxDQUFDO0FBQzdELFFBQU1FLFVBQVMsQ0FBQztBQUNoQixhQUFXLFlBQVksT0FBTztBQUM1QixVQUFNLFVBQVUsT0FBTyxRQUFRRixXQUFVLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxFQUM3RCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxVQUFVLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQ3ZELEtBQUssQ0FBQyxHQUFHLE1BQU0sT0FBTyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLGNBQWMsT0FBTyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7QUFDaEcsZUFBVyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVM7QUFDN0IsTUFBQUUsUUFBTyxLQUFLO0FBQUEsUUFDVixNQUFNLEdBQUcsUUFBUSxJQUFJLEVBQUU7QUFBQSxRQUN2QjtBQUFBLFFBQ0EsTUFBTSxFQUFFLGVBQWUsRUFBRSxRQUFRO0FBQUEsUUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLFNBQVMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLE9BQU8sS0FBSyxFQUFFLEtBQUssT0FBTyxJQUFJO0FBQUEsUUFDbkYsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUFBO0FBQUE7QUFBQSxRQUdaLFNBQVMsRUFBRSxPQUFPLFNBQVMsRUFBRSxPQUFPLFdBQVc7QUFBQSxNQUNqRCxDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDQSxTQUFPQTtBQUNUO0FBRU8sU0FBUyxXQUFXLE1BQU0sYUFBYTtBQUM1QyxRQUFNLFFBQVEsS0FBSyxNQUFNLHNCQUFzQjtBQUMvQyxNQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksU0FBUyxNQUFNLENBQUMsQ0FBQyxFQUFHLFFBQU87QUFDdEQsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLFVBQVUsTUFBTSxDQUFDO0FBQUEsSUFDakIsTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLEVBQ1g7QUFDRjtBQXJGQSxJQUtNLGFBQ0EsV0FDQSxLQXNDQSxXQUlBO0FBakROO0FBQUE7QUFFQTtBQUNBO0FBRUEsSUFBTSxjQUFjO0FBQ3BCLElBQU0sWUFBWSxDQUFDLFVBQVUsYUFBYSxVQUFVLEtBQUs7QUFDekQsSUFBTSxNQUFNLEtBQUssS0FBSyxLQUFLO0FBc0MzQixJQUFNLFlBQVksQ0FBQyxNQUNqQixFQUFFLGNBQWMsU0FDZixDQUFDLEVBQUUsY0FBZSxFQUFFLFdBQVcsT0FBTyxTQUFTLE1BQU0sS0FBSyxFQUFFLFdBQVcsUUFBUSxTQUFTLE1BQU07QUFFakcsSUFBTSxpQkFBaUIsQ0FBQyxPQUFPLFVBQVUsS0FBSyxFQUFFO0FBQUE7QUFBQTs7O0FDakRoRCxTQUFTLFlBQUFDLFdBQVUsYUFBQUMsa0JBQWlCO0FBQ3BDLFNBQVMsUUFBQUMsYUFBWTtBQVFyQixTQUFTQyxhQUFZO0FBQ25CLFNBQU9ELE1BQUssU0FBUyxHQUFHLHlCQUF5QjtBQUNuRDtBQUVPLFNBQVMsZUFBZSxTQUFTO0FBQ3RDLFNBQU8sUUFBUSxJQUFJLENBQUMsT0FBTztBQUFBLElBQ3pCLE1BQU0sU0FBUyxFQUFFLElBQUk7QUFBQSxJQUNyQixVQUFVO0FBQUEsSUFDVixNQUFNLEdBQUcsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLElBQUk7QUFBQSxJQUMzQyxPQUFPO0FBQUEsSUFDUCxRQUFRO0FBQUEsSUFDUixTQUFTLEVBQUUsa0JBQWtCO0FBQUEsRUFDL0IsRUFBRTtBQUNKO0FBRUEsZUFBc0IsZ0JBQWdCLGFBQWE7QUFDakQsTUFBSUUsVUFBUztBQUNiLE1BQUk7QUFDRixJQUFBQSxVQUFTLEtBQUssTUFBTSxNQUFNSixVQUFTRyxXQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsRUFDMUQsUUFBUTtBQUFBLEVBQUM7QUFDVCxNQUFJQyxXQUFVLEtBQUssSUFBSSxJQUFJQSxRQUFPLEtBQUtDLEtBQUssUUFBTyxlQUFlRCxRQUFPLE1BQU07QUFDL0UsTUFBSSxDQUFDLFlBQWEsUUFBTyxlQUFlQSxTQUFRLFVBQVUsQ0FBQyxDQUFDO0FBRTVELE1BQUk7QUFDRixVQUFNLFdBQVcsTUFBTSxNQUFNLFlBQVk7QUFBQSxNQUN2QyxTQUFTO0FBQUEsUUFDUCxlQUFlLFVBQVUsWUFBWSxNQUFNO0FBQUEsUUFDM0MsR0FBRyxZQUFZO0FBQUEsUUFDZixZQUFZO0FBQUEsTUFDZDtBQUFBLElBQ0YsQ0FBQztBQUNELFFBQUksQ0FBQyxTQUFTLEdBQUksT0FBTSxJQUFJLE1BQU0sT0FBTyxTQUFTLE1BQU0sQ0FBQztBQUN6RCxVQUFNLE9BQU8sTUFBTSxTQUFTLEtBQUs7QUFDakMsVUFBTUUsV0FBVSxLQUFLLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPO0FBQUEsTUFDN0MsTUFBTSxFQUFFO0FBQUEsTUFDUixhQUFhLEVBQUU7QUFBQSxNQUNmLE9BQU8sRUFBRSxTQUFTLEVBQUU7QUFBQSxNQUNwQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0I7QUFBQSxJQUM5RCxFQUFFO0FBQ0YsUUFBSUEsUUFBTyxXQUFXLEVBQUcsT0FBTSxJQUFJLE1BQU0sa0JBQWtCO0FBQzNELGNBQVUsU0FBUyxDQUFDO0FBQ3BCLFVBQU1MLFdBQVVFLFdBQVUsR0FBRyxLQUFLLFVBQVUsRUFBRSxJQUFJLEtBQUssSUFBSSxHQUFHLFFBQUFHLFFBQU8sQ0FBQyxDQUFDO0FBQ3ZFLFdBQU8sZUFBZUEsT0FBTTtBQUFBLEVBQzlCLFFBQVE7QUFDTixXQUFPLGVBQWVGLFNBQVEsVUFBVSxDQUFDLENBQUM7QUFBQSxFQUM1QztBQUNGO0FBdkRBLElBTU0sWUFDQUM7QUFQTjtBQUFBO0FBRUE7QUFJQSxJQUFNLGFBQWE7QUFDbkIsSUFBTUEsT0FBTSxLQUFLLEtBQUssS0FBSztBQUFBO0FBQUE7OztBQ1AzQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsYUFBYSxrQkFBa0I7QUFDeEMsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxZQUFBRSxXQUFVLGFBQUFDLFlBQVcsYUFBYTtBQUMzQyxTQUFTLFFBQUFDLGFBQVk7QUFXckIsU0FBUyxXQUFXO0FBQ2xCLFNBQU9BLE1BQUssU0FBUyxHQUFHLFdBQVc7QUFDckM7QUFFQSxTQUFTLFVBQVUsUUFBUTtBQUN6QixTQUFPLE9BQU8sU0FBUyxRQUFRLEVBQUUsUUFBUSxPQUFPLEdBQUcsRUFBRSxRQUFRLE9BQU8sR0FBRyxFQUFFLFFBQVEsT0FBTyxFQUFFO0FBQzVGO0FBRU8sU0FBUyxnQkFBZ0IsT0FBTztBQUNyQyxNQUFJO0FBQ0YsVUFBTSxVQUFVLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQyxXQUFPLEtBQUssTUFBTSxPQUFPLEtBQUssU0FBUyxXQUFXLEVBQUUsU0FBUyxPQUFPLENBQUM7QUFBQSxFQUN2RSxRQUFRO0FBQ04sV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUNGO0FBRU8sU0FBUyxvQkFBb0IsUUFBUTtBQUMxQyxTQUFPLE9BQU8sNkJBQTZCLEdBQUcsc0JBQXNCLE9BQU8sc0JBQXNCO0FBQ25HO0FBRUEsZUFBZSxXQUFXO0FBQ3hCLE1BQUk7QUFDRixXQUFPLEtBQUssTUFBTSxNQUFNRixVQUFTLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFBQSxFQUN2RCxRQUFRO0FBQ04sV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUNGO0FBRUEsZUFBZSxVQUFVLE1BQU07QUFDN0IsWUFBVSxTQUFTLENBQUM7QUFDcEIsUUFBTUMsV0FBVSxTQUFTLEdBQUcsS0FBSyxVQUFVLE1BQU0sTUFBTSxDQUFDLElBQUksSUFBSTtBQUNoRSxRQUFNLE1BQU0sU0FBUyxHQUFHLEdBQUs7QUFDL0I7QUFFQSxlQUFlLGFBQWEsUUFBUTtBQUNsQyxRQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVc7QUFBQSxJQUN0QyxRQUFRO0FBQUEsSUFDUixTQUFTLEVBQUUsZ0JBQWdCLG9DQUFvQztBQUFBLElBQy9ELE1BQU0sSUFBSSxnQkFBZ0IsTUFBTSxFQUFFLFNBQVM7QUFBQSxFQUM3QyxDQUFDO0FBQ0QsTUFBSSxDQUFDLFNBQVMsSUFBSTtBQUNoQixVQUFNLElBQUksTUFBTSx5QkFBeUIsU0FBUyxNQUFNLElBQUksTUFBTSxTQUFTLEtBQUssQ0FBQyxFQUFFO0FBQUEsRUFDckY7QUFDQSxTQUFPLFNBQVMsS0FBSztBQUN2QjtBQUVBLFNBQVMsWUFBWSxNQUFNLFFBQVE7QUFDakMsUUFBTSxTQUFTLE9BQU8sV0FBVyxnQkFBZ0IsT0FBTyxRQUFRLElBQUksQ0FBQztBQUNyRSxPQUFLLFNBQVM7QUFBQSxJQUNaLGNBQWMsT0FBTztBQUFBLElBQ3JCLGVBQWUsT0FBTyxpQkFBaUIsS0FBSyxRQUFRO0FBQUEsSUFDcEQsVUFBVSxPQUFPLFlBQVksS0FBSyxRQUFRO0FBQUEsSUFDMUMsWUFBWSxvQkFBb0IsTUFBTSxLQUFLLEtBQUssUUFBUSxjQUFjO0FBQUEsSUFDdEUsT0FBTyxPQUFPLFNBQVMsS0FBSyxRQUFRLFNBQVM7QUFBQSxJQUM3QyxZQUFZLEtBQUssSUFBSSxLQUFLLE9BQU8sY0FBYyxRQUFRO0FBQUEsRUFDekQ7QUFDQSxTQUFPO0FBQ1Q7QUFFQSxlQUFzQixjQUFjLEVBQUUsY0FBYyxNQUFNLFlBQVksSUFBSSxLQUFLLEtBQU0sUUFBUSxNQUFNO0FBQUMsRUFBRSxJQUFJLENBQUMsR0FBRztBQUM1RyxRQUFNLFdBQVcsVUFBVSxZQUFZLEVBQUUsQ0FBQztBQUMxQyxRQUFNLFlBQVksVUFBVSxXQUFXLFFBQVEsRUFBRSxPQUFPLFFBQVEsRUFBRSxPQUFPLENBQUM7QUFDMUUsUUFBTSxRQUFRLFVBQVUsWUFBWSxFQUFFLENBQUM7QUFFdkMsUUFBTSxNQUFNLEdBQUcsUUFBUSxJQUFJLElBQUksZ0JBQWdCO0FBQUEsSUFDN0MsZUFBZTtBQUFBLElBQ2YsV0FBVztBQUFBLElBQ1gsY0FBYztBQUFBLElBQ2QsT0FBTztBQUFBLElBQ1AsZ0JBQWdCO0FBQUEsSUFDaEIsdUJBQXVCO0FBQUEsSUFDdkI7QUFBQSxJQUNBLFFBQVE7QUFBQSxJQUNSLDRCQUE0QjtBQUFBLElBQzVCLDJCQUEyQjtBQUFBLElBQzNCLFlBQVk7QUFBQSxFQUNkLENBQUMsRUFBRSxTQUFTLENBQUM7QUFFYixRQUFNLE9BQU8sTUFBTSxJQUFJLFFBQVEsQ0FBQ0UsVUFBUyxXQUFXO0FBQ2xELFVBQU0sU0FBUyxhQUFhLENBQUMsS0FBSyxRQUFRO0FBQ3hDLFlBQU0sYUFBYSxJQUFJLElBQUksSUFBSSxLQUFLLG9CQUFvQixhQUFhLEVBQUU7QUFDdkUsVUFBSSxXQUFXLGFBQWEsa0JBQWtCO0FBQzVDLFlBQUksVUFBVSxHQUFHLEVBQUUsSUFBSTtBQUN2QjtBQUFBLE1BQ0Y7QUFDQSxZQUFNLFdBQVcsV0FBVyxhQUFhLElBQUksT0FBTztBQUNwRCxZQUFNLFVBQVUsV0FBVyxhQUFhLElBQUksTUFBTTtBQUNsRCxZQUFNLFdBQVcsV0FBVyxhQUFhLElBQUksT0FBTztBQUNwRCxVQUFJLFVBQVUsS0FBSyxFQUFFLGdCQUFnQixZQUFZLENBQUM7QUFDbEQsVUFBSTtBQUFBLFFBQ0YsV0FBVyxhQUFhLFFBQ3BCLGdIQUNBO0FBQUEsTUFDTjtBQUNBLGNBQVE7QUFDUixVQUFJLFNBQVUsUUFBTyxJQUFJLE1BQU0seUJBQXlCLFFBQVEsRUFBRSxDQUFDO0FBQUEsZUFDMUQsQ0FBQyxXQUFXLGFBQWEsTUFBTyxRQUFPLElBQUksTUFBTSxzREFBc0QsQ0FBQztBQUFBLFVBQzVHLENBQUFBLFNBQVEsT0FBTztBQUFBLElBQ3RCLENBQUM7QUFFRCxVQUFNLFFBQVEsV0FBVyxNQUFNO0FBQzdCLGNBQVE7QUFDUixhQUFPLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUFBLElBQ3ZDLEdBQUcsU0FBUztBQUVaLGFBQVMsVUFBVTtBQUNqQixtQkFBYSxLQUFLO0FBQ2xCLGFBQU8sTUFBTTtBQUFBLElBQ2Y7QUFFQSxXQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVE7QUFDMUIsY0FBUTtBQUNSLGFBQU8sSUFBSSxTQUFTLGVBQWUsSUFBSSxNQUFNLFFBQVEsYUFBYSxtREFBbUQsSUFBSSxHQUFHO0FBQUEsSUFDOUgsQ0FBQztBQUNELFdBQU8sT0FBTyxlQUFlLGFBQWEsTUFBTTtBQUM5QyxZQUFNLEdBQUc7QUFDVCxVQUFJLFlBQWEsVUFBUyxRQUFRLENBQUMsR0FBRyxHQUFHLE1BQU07QUFBQSxNQUFDLENBQUM7QUFBQSxJQUNuRCxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBRUQsUUFBTSxTQUFTLE1BQU0sYUFBYTtBQUFBLElBQ2hDLFlBQVk7QUFBQSxJQUNaO0FBQUEsSUFDQSxjQUFjO0FBQUEsSUFDZCxXQUFXO0FBQUEsSUFDWCxlQUFlO0FBQUEsRUFDakIsQ0FBQztBQUVELFFBQU0sT0FBTyxZQUFZLE1BQU0sU0FBUyxHQUFHLE1BQU07QUFDakQsUUFBTSxVQUFVLElBQUk7QUFDcEIsU0FBTyxFQUFFLE9BQU8sS0FBSyxPQUFPLE9BQU8sV0FBVyxLQUFLLE9BQU8sV0FBVztBQUN2RTtBQUVBLGVBQXNCLG9CQUFvQjtBQUN4QyxRQUFNLE9BQU8sTUFBTSxTQUFTO0FBQzVCLFFBQU0sU0FBUyxLQUFLO0FBQ3BCLE1BQUksQ0FBQyxRQUFRLGFBQWMsUUFBTztBQUVsQyxNQUFJLEtBQUssSUFBSSxLQUFLLE9BQU8sY0FBYyxLQUFLLGlCQUFpQjtBQUMzRCxRQUFJLENBQUMsT0FBTyxjQUFlLFFBQU87QUFDbEMsVUFBTSxTQUFTLE1BQU0sYUFBYTtBQUFBLE1BQ2hDLFlBQVk7QUFBQSxNQUNaLGVBQWUsT0FBTztBQUFBLE1BQ3RCLFdBQVc7QUFBQSxNQUNYLE9BQU87QUFBQSxJQUNULENBQUM7QUFDRCxVQUFNLFlBQVksWUFBWSxNQUFNLE1BQU07QUFDMUMsVUFBTSxVQUFVLFNBQVM7QUFDekIsV0FBTyxnQkFBZ0IsVUFBVSxNQUFNO0FBQUEsRUFDekM7QUFDQSxTQUFPLGdCQUFnQixNQUFNO0FBQy9CO0FBRUEsU0FBUyxnQkFBZ0IsUUFBUTtBQUMvQixTQUFPO0FBQUEsSUFDTCxRQUFRLE9BQU87QUFBQSxJQUNmLFNBQVMsT0FBTyxhQUFhLEVBQUUsc0JBQXNCLE9BQU8sV0FBVyxJQUFJLENBQUM7QUFBQSxJQUM1RSxPQUFPLE9BQU87QUFBQSxFQUNoQjtBQUNGO0FBRUEsZUFBc0Isa0JBQWtCO0FBQ3RDLFFBQU0sT0FBTyxNQUFNLFNBQVM7QUFDNUIsU0FBTyxDQUFDLEVBQUUsS0FBSyxRQUFRLGdCQUFnQixLQUFLLFFBQVE7QUFDdEQ7QUFFQSxlQUFzQixlQUFlO0FBQ25DLFFBQU0sT0FBTyxNQUFNLFNBQVM7QUFDNUIsU0FBTztBQUFBLElBQ0wsV0FBVyxDQUFDLEVBQUUsS0FBSyxRQUFRLGdCQUFnQixLQUFLLFFBQVE7QUFBQSxJQUN4RCxPQUFPLEtBQUssUUFBUSxTQUFTO0FBQUEsRUFDL0I7QUFDRjtBQUVBLGVBQXNCLG1CQUFtQjtBQUN2QyxRQUFNLE9BQU8sTUFBTSxTQUFTO0FBQzVCLFNBQU8sS0FBSztBQUNaLFFBQU0sVUFBVSxJQUFJO0FBQ3RCO0FBbE1BLElBT00sV0FDQSxVQUNBLFdBQ0EsZUFDQSxjQUNBLE9BQ0E7QUFiTjtBQUFBO0FBS0E7QUFFQSxJQUFNLFlBQVk7QUFDbEIsSUFBTSxXQUFXO0FBQ2pCLElBQU0sWUFBWTtBQUNsQixJQUFNLGdCQUFnQjtBQUN0QixJQUFNLGVBQWUsb0JBQW9CLGFBQWE7QUFDdEQsSUFBTSxRQUFRO0FBQ2QsSUFBTSxrQkFBa0IsSUFBSSxLQUFLO0FBQUE7QUFBQTs7O0FDYmpDLFNBQVMsWUFBQUMsV0FBVSxhQUFBQyxrQkFBaUI7QUFDcEMsU0FBUyxRQUFBQyxhQUFZO0FBR3JCLFNBQVMsYUFBYTtBQUNwQixTQUFPQSxNQUFLLFNBQVMsR0FBRyxhQUFhO0FBQ3ZDO0FBRUEsZUFBc0IsYUFBYTtBQUNqQyxNQUFJO0FBQ0YsV0FBTyxLQUFLLE1BQU0sTUFBTUYsVUFBUyxXQUFXLEdBQUcsT0FBTyxDQUFDO0FBQUEsRUFDekQsUUFBUTtBQUNOLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFDRjtBQUVBLFNBQVMsWUFBWSxNQUFNLE9BQU87QUFDaEMsUUFBTSxTQUFTLEVBQUUsR0FBRyxLQUFLO0FBQ3pCLGFBQVcsQ0FBQyxLQUFLLEtBQUssS0FBSyxPQUFPLFFBQVEsS0FBSyxHQUFHO0FBQ2hELFdBQU8sR0FBRyxJQUFJLFNBQVMsT0FBTyxVQUFVLFlBQVksQ0FBQyxNQUFNLFFBQVEsS0FBSyxJQUNwRSxZQUFZLEtBQUssR0FBRyxLQUFLLE9BQU8sS0FBSyxHQUFHLE1BQU0sV0FBVyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUM5RTtBQUFBLEVBQ047QUFDQSxTQUFPO0FBQ1Q7QUFFQSxlQUFzQixZQUFZLE9BQU87QUFDdkMsUUFBTUcsVUFBUyxZQUFZLE1BQU0sV0FBVyxHQUFHLEtBQUs7QUFDcEQsWUFBVSxTQUFTLENBQUM7QUFDcEIsUUFBTUYsV0FBVSxXQUFXLEdBQUcsS0FBSyxVQUFVRSxTQUFRLE1BQU0sQ0FBQyxJQUFJLElBQUk7QUFDcEUsU0FBT0E7QUFDVDtBQS9CQTtBQUFBO0FBRUE7QUFBQTtBQUFBOzs7QUNGQSxTQUFTLGNBQUFDLGFBQVksb0JBQW9CO0FBQ3pDLFNBQVMsV0FBQUMsZ0JBQWU7QUFDeEIsU0FBUyxXQUFBQyxVQUFTLFFBQUFDLE9BQU0sV0FBQUMsZ0JBQWU7QUFHdkMsU0FBUyxhQUFhLE1BQU07QUFDMUIsTUFBSTtBQUNGLFdBQU9KLFlBQVcsSUFBSSxJQUFJLGFBQWEsTUFBTSxPQUFPLElBQUk7QUFBQSxFQUMxRCxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVPLFNBQVMsZUFBZSxLQUFLO0FBQ2xDLE1BQUksTUFBTUksU0FBUSxHQUFHO0FBQ3JCLFFBQU0sT0FBT0gsU0FBUTtBQUNyQixTQUFPLE1BQU07QUFDWCxRQUFJRCxZQUFXRyxNQUFLLEtBQUssTUFBTSxDQUFDLEtBQUssUUFBUSxLQUFNLFFBQU87QUFDMUQsVUFBTSxTQUFTRCxTQUFRLEdBQUc7QUFDMUIsUUFBSSxXQUFXLElBQUssUUFBT0UsU0FBUSxHQUFHO0FBQ3RDLFVBQU07QUFBQSxFQUNSO0FBQ0Y7QUFFQSxTQUFTLGFBQWEsS0FBSyxTQUFTO0FBQ2xDLFFBQU0sT0FBTyxDQUFDO0FBQ2QsTUFBSSxNQUFNQSxTQUFRLEdBQUc7QUFDckIsU0FBTyxNQUFNO0FBQ1gsU0FBSyxRQUFRLEdBQUc7QUFDaEIsUUFBSSxRQUFRLFFBQVM7QUFDckIsVUFBTSxTQUFTRixTQUFRLEdBQUc7QUFDMUIsUUFBSSxXQUFXLElBQUs7QUFDcEIsVUFBTTtBQUFBLEVBQ1I7QUFDQSxTQUFPO0FBQ1Q7QUFNQSxTQUFTLGVBQWUsS0FBSztBQUMzQixRQUFNLFNBQVNDLE1BQUssS0FBSyxXQUFXO0FBQ3BDLFFBQU0sZ0JBQWdCLGFBQWEsTUFBTTtBQUN6QyxNQUFJLGNBQWUsUUFBTyxFQUFFLE1BQU0sUUFBUSxTQUFTLGNBQWM7QUFDakUsUUFBTSxTQUFTQSxNQUFLLEtBQUssV0FBVztBQUNwQyxRQUFNLGdCQUFnQixhQUFhLE1BQU07QUFDekMsTUFBSSxjQUFlLFFBQU8sRUFBRSxNQUFNLFFBQVEsU0FBUyxjQUFjO0FBQ2pFLFNBQU87QUFDVDtBQUVPLFNBQVMsbUJBQW1CLEtBQUs7QUFDdEMsUUFBTSxVQUFVLGVBQWUsR0FBRztBQUNsQyxRQUFNLFFBQVEsQ0FBQztBQUNmLFFBQU0sZ0JBQWdCLGFBQWEsaUJBQWlCLENBQUM7QUFDckQsTUFBSSxjQUFlLE9BQU0sS0FBSyxFQUFFLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxjQUFjLENBQUM7QUFDbEYsYUFBVyxPQUFPLGFBQWEsS0FBSyxPQUFPLEdBQUc7QUFDNUMsVUFBTSxRQUFRLGVBQWUsR0FBRztBQUNoQyxRQUFJLE1BQU8sT0FBTSxLQUFLLEtBQUs7QUFBQSxFQUM3QjtBQUNBLFNBQU8sRUFBRSxPQUFPLFFBQVE7QUFDMUI7QUFFTyxTQUFTLHFCQUFxQixFQUFFLFNBQVMsT0FBTyxHQUFHO0FBQ3hELFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxNQUFNLFVBQVU7QUFDZCxZQUFNLFNBQVNELFNBQVFFLFNBQVEsUUFBUSxDQUFDO0FBQ3hDLFVBQUksQ0FBQyxPQUFPLFdBQVcsT0FBTyxFQUFHLFFBQU8sQ0FBQztBQUN6QyxZQUFNLFFBQVEsQ0FBQztBQUNmLGlCQUFXLE9BQU8sYUFBYSxRQUFRLE9BQU8sR0FBRztBQUMvQyxZQUFJLE9BQU8sSUFBSUQsTUFBSyxLQUFLLFdBQVcsQ0FBQyxLQUFLLE9BQU8sSUFBSUEsTUFBSyxLQUFLLFdBQVcsQ0FBQyxFQUFHO0FBQzlFLGNBQU0sUUFBUSxlQUFlLEdBQUc7QUFDaEMsWUFBSSxPQUFPO0FBQ1QsaUJBQU8sSUFBSSxNQUFNLElBQUk7QUFDckIsZ0JBQU0sS0FBSyxLQUFLO0FBQUEsUUFDbEI7QUFBQSxNQUNGO0FBQ0EsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBQ0Y7QUFqRkE7QUFBQTtBQUdBO0FBQUE7QUFBQTs7O0FDSEEsU0FBUyxZQUFBRSxXQUFVLGVBQWU7QUFDbEMsU0FBUyxRQUFBQyxhQUFZO0FBR2QsU0FBUyxpQkFBaUIsTUFBTTtBQUNyQyxRQUFNLFFBQVEsS0FBSyxNQUFNLDBCQUEwQjtBQUNuRCxNQUFJLENBQUMsTUFBTyxRQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxLQUFLO0FBQzFDLFFBQU0sT0FBTyxDQUFDO0FBQ2QsYUFBVyxRQUFRLE1BQU0sQ0FBQyxFQUFFLE1BQU0sSUFBSSxHQUFHO0FBQ3ZDLFVBQU0sTUFBTSxLQUFLLFFBQVEsR0FBRztBQUM1QixRQUFJLFFBQVEsR0FBSTtBQUNoQixTQUFLLEtBQUssTUFBTSxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sTUFBTSxDQUFDLEVBQUUsS0FBSztBQUFBLEVBQzdEO0FBQ0EsU0FBTyxFQUFFLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFO0FBQ25EO0FBRUEsZUFBZSxRQUFRLEtBQUssUUFBUTtBQUNsQyxNQUFJLFFBQVEsQ0FBQztBQUNiLE1BQUk7QUFDRixZQUFRLE1BQU0sUUFBUSxLQUFLLEVBQUUsZUFBZSxLQUFLLENBQUM7QUFBQSxFQUNwRCxRQUFRO0FBQ04sV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUNBLFFBQU0sU0FBUyxDQUFDO0FBQ2hCLGFBQVcsU0FBUyxPQUFPO0FBQ3pCLFFBQUksQ0FBQyxNQUFNLFlBQVksRUFBRztBQUMxQixVQUFNLE9BQU9BLE1BQUssS0FBSyxNQUFNLE1BQU0sVUFBVTtBQUM3QyxRQUFJO0FBQ0YsWUFBTSxFQUFFLEtBQUssSUFBSSxpQkFBaUIsTUFBTUQsVUFBUyxNQUFNLE9BQU8sQ0FBQztBQUMvRCxhQUFPLEtBQUs7QUFBQSxRQUNWLE1BQU0sS0FBSyxRQUFRLE1BQU07QUFBQSxRQUN6QixhQUFhLEtBQUssZUFBZTtBQUFBLFFBQ2pDO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsUUFBUTtBQUFBLElBQUM7QUFBQSxFQUNYO0FBQ0EsU0FBTztBQUNUO0FBd0ZBLGVBQXNCLGlCQUFpQixNQUFNO0FBQzNDLFFBQU0sVUFBVTtBQUFBLElBQ2Q7QUFBQSxNQUNFLE1BQU07QUFBQSxNQUNOLGFBQWE7QUFBQSxNQUNiLFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQTtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sYUFBYTtBQUFBLE1BQ2IsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBO0FBQUEsTUFDRSxNQUFNO0FBQUEsTUFDTixhQUFhO0FBQUEsTUFDYixRQUFRO0FBQUEsTUFDUixNQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFDQSxRQUFNLFNBQVMsTUFBTSxRQUFRLGdCQUFnQixHQUFHLFFBQVE7QUFDeEQsUUFBTSxVQUFVLE1BQU0sUUFBUSxpQkFBaUIsSUFBSSxHQUFHLFNBQVM7QUFDL0QsUUFBTSxTQUFTLG9CQUFJLElBQUk7QUFDdkIsYUFBVyxTQUFTLENBQUMsR0FBRyxTQUFTLEdBQUcsUUFBUSxHQUFHLE9BQU8sRUFBRyxRQUFPLElBQUksTUFBTSxNQUFNLEtBQUs7QUFDckYsUUFBTSxTQUFTLENBQUMsR0FBRyxPQUFPLE9BQU8sQ0FBQztBQUVsQyxTQUFPO0FBQUEsSUFDTCxNQUFNLE1BQU07QUFBQSxJQUNaLE1BQU0sS0FBSyxNQUFNO0FBQ2YsWUFBTSxRQUFRLE9BQU8sSUFBSSxJQUFJO0FBQzdCLFVBQUksQ0FBQyxNQUFPLFFBQU87QUFDbkIsVUFBSSxNQUFNLEtBQU0sUUFBTyxNQUFNO0FBQzdCLFlBQU0sRUFBRSxLQUFLLElBQUksaUJBQWlCLE1BQU1BLFVBQVMsTUFBTSxNQUFNLE9BQU8sQ0FBQztBQUNyRSxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDRjtBQW5LQSxJQXdDTSxVQUlBLGdCQXFDQSxpQkF1QkE7QUF4R047QUFBQTtBQUVBO0FBc0NBLElBQU0sV0FBVztBQUFBO0FBQUE7QUFJakIsSUFBTSxpQkFBaUI7QUFBQTtBQUFBLEVBRXJCLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQ1YsSUFBTSxrQkFBa0I7QUFBQTtBQUFBLEVBRXRCLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFCVixJQUFNLG9CQUFvQjtBQUFBO0FBQUEsRUFFeEIsUUFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQzFHVixTQUFTLFlBQUFFLFdBQVUsV0FBQUMsZ0JBQWU7QUFDbEMsU0FBUyxRQUFBQyxhQUFZO0FBSWQsU0FBUyxvQkFBb0I7QUFDbEMsU0FBT0EsTUFBSyxTQUFTLEdBQUcsVUFBVTtBQUNwQztBQUVPLFNBQVMsbUJBQW1CLE1BQU07QUFDdkMsU0FBT0EsTUFBSyxNQUFNLFNBQVMsVUFBVTtBQUN2QztBQUVBLGVBQWVDLFNBQVEsS0FBSyxRQUFRO0FBQ2xDLE1BQUksUUFBUSxDQUFDO0FBQ2IsTUFBSTtBQUNGLFlBQVEsTUFBTUYsU0FBUSxHQUFHO0FBQUEsRUFDM0IsUUFBUTtBQUNOLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFDQSxRQUFNLFdBQVcsQ0FBQztBQUNsQixhQUFXLFFBQVEsT0FBTztBQUN4QixRQUFJLENBQUMsS0FBSyxTQUFTLEtBQUssRUFBRztBQUMzQixRQUFJO0FBQ0YsWUFBTSxFQUFFLEtBQUssSUFBSSxpQkFBaUIsTUFBTUQsVUFBU0UsTUFBSyxLQUFLLElBQUksR0FBRyxPQUFPLENBQUM7QUFDMUUsZUFBUyxLQUFLO0FBQUEsUUFDWixNQUFNLEtBQUssTUFBTSxHQUFHLEVBQUU7QUFBQSxRQUN0QixhQUFhLEtBQUssZUFBZTtBQUFBLFFBQ2pDO0FBQUEsUUFDQSxNQUFNQSxNQUFLLEtBQUssSUFBSTtBQUFBLE1BQ3RCLENBQUM7QUFBQSxJQUNILFFBQVE7QUFBQSxJQUFDO0FBQUEsRUFDWDtBQUNBLFNBQU87QUFDVDtBQUVPLFNBQVMsY0FBYyxNQUFNLE1BQU07QUFDeEMsU0FBTyxLQUFLLFNBQVMsWUFBWSxJQUM3QixLQUFLLFdBQVcsY0FBYyxJQUFJLElBQ2xDLE9BQ0UsR0FBRyxLQUFLLEtBQUssQ0FBQztBQUFBO0FBQUEsRUFBTyxJQUFJLEtBQ3pCO0FBQ1I7QUFFQSxlQUFzQixtQkFBbUIsTUFBTTtBQUM3QyxRQUFNLFNBQVMsTUFBTUMsU0FBUSxrQkFBa0IsR0FBRyxRQUFRO0FBQzFELFFBQU0sVUFBVSxNQUFNQSxTQUFRLG1CQUFtQixJQUFJLEdBQUcsU0FBUztBQUNqRSxRQUFNLFNBQVMsb0JBQUksSUFBSTtBQUN2QixhQUFXLFdBQVcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxPQUFPLEVBQUcsUUFBTyxJQUFJLFFBQVEsTUFBTSxPQUFPO0FBQy9FLFFBQU0sV0FBVyxDQUFDLEdBQUcsT0FBTyxPQUFPLENBQUM7QUFFcEMsU0FBTztBQUFBLElBQ0wsTUFBTSxNQUFNO0FBQUEsSUFDWixNQUFNLEtBQUssTUFBTSxPQUFPLElBQUk7QUFDMUIsWUFBTSxVQUFVLE9BQU8sSUFBSSxJQUFJO0FBQy9CLFVBQUksQ0FBQyxRQUFTLFFBQU87QUFDckIsWUFBTSxFQUFFLEtBQUssSUFBSSxpQkFBaUIsTUFBTUgsVUFBUyxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBQ3ZFLGFBQU8sY0FBYyxLQUFLLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQztBQUFBLElBQy9DO0FBQUEsRUFDRjtBQUNGO0FBNURBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTs7O0FDSEEsU0FBUyxZQUFBSSxXQUFVLGFBQUFDLGtCQUFpQjtBQUNwQyxTQUFTLGtCQUFrQjtBQUczQixTQUFTLFNBQVMsS0FBSztBQUNyQixRQUFNLFNBQVMsQ0FBQztBQUNoQixRQUFNLEtBQUs7QUFDWCxNQUFJO0FBQ0osU0FBUSxJQUFJLEdBQUcsS0FBSyxHQUFHLEdBQUk7QUFDekIsUUFBSSxFQUFFLENBQUMsTUFBTSxVQUFhLEVBQUUsQ0FBQyxNQUFNLE9BQVcsUUFBTyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFO0FBQUEsUUFDcEYsUUFBTyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFDdkM7QUFDQSxTQUFPO0FBQ1Q7QUFFTyxTQUFTLGFBQWEsS0FBSztBQUNoQyxRQUFNLFNBQVMsU0FBUyxHQUFHO0FBRTNCLFFBQU0sTUFBTSxDQUFDO0FBQ2IsU0FBTyxPQUFPLFVBQVUsMkJBQTJCLEtBQUssT0FBTyxDQUFDLENBQUMsR0FBRztBQUNsRSxVQUFNLE1BQU0sT0FBTyxDQUFDLEVBQUUsUUFBUSxHQUFHO0FBQ2pDLFFBQUksT0FBTyxDQUFDLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELFdBQU8sTUFBTTtBQUFBLEVBQ2Y7QUFDQSxNQUFJLENBQUMsT0FBTyxPQUFRLE9BQU0sSUFBSSxNQUFNLGVBQWU7QUFDbkQsU0FBTyxFQUFFLFNBQVMsT0FBTyxDQUFDLEdBQUcsTUFBTSxPQUFPLE1BQU0sQ0FBQyxHQUFHLElBQUk7QUFDMUQ7QUFFTyxTQUFTLGdCQUFnQixLQUFLO0FBQ25DLFFBQU0sU0FBUyxTQUFTLEdBQUc7QUFDM0IsTUFBSSxDQUFDLGVBQWUsS0FBSyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUcsUUFBTyxFQUFFLE1BQU0sU0FBUyxHQUFHLGFBQWEsR0FBRyxFQUFFO0FBRXhGLFFBQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJO0FBQ3ZCLFFBQU0sVUFBVSxDQUFDO0FBQ2pCLGFBQVcsU0FBUyxNQUFNO0FBQ3hCLFVBQU0sTUFBTSxNQUFNLFFBQVEsR0FBRztBQUM3QixRQUFJLE1BQU0sRUFBRyxPQUFNLElBQUksTUFBTSxrRUFBa0UsS0FBSyxHQUFHO0FBQ3ZHLFlBQVEsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksTUFBTSxNQUFNLE1BQU0sQ0FBQztBQUFBLEVBQ3BEO0FBQ0EsU0FBTyxFQUFFLE1BQU0sUUFBUSxLQUFLLFFBQVE7QUFDdEM7QUFJTyxTQUFTLGtCQUFrQixNQUFNO0FBQ3RDLFNBQU8sMEZBQTBGLEtBQUssSUFBSTtBQUM1RztBQUVBLFNBQVMsaUJBQWlCLE9BQU87QUFDL0IsTUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUcsUUFBTztBQUNwQyxNQUFJLENBQUMsTUFBTSxTQUFTLEdBQUcsRUFBRyxRQUFPLElBQUksS0FBSztBQUMxQyxNQUFJLENBQUMsTUFBTSxTQUFTLEdBQUcsRUFBRyxRQUFPLElBQUksS0FBSztBQUMxQyxRQUFNLElBQUksTUFBTSw0REFBNEQ7QUFDOUU7QUFFTyxTQUFTLHFCQUFxQixLQUFLLFNBQVM7QUFDakQsUUFBTSxTQUFTLE9BQU8sUUFBUSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksaUJBQWlCLEtBQUssQ0FBQyxFQUFFO0FBQ2xHLFNBQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssR0FBRztBQUNsQztBQUVPLFNBQVMsaUJBQWlCLFNBQVM7QUFDeEMsTUFBSTtBQUNKLE1BQUk7QUFDRixXQUFPLGdCQUFnQixPQUFPO0FBQUEsRUFDaEMsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxLQUFLLFNBQVMsT0FBUSxRQUFPO0FBQ2pDLFFBQU0sVUFBVSxPQUFPLFlBQVksT0FBTyxRQUFRLEtBQUssT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsSUFBSSxJQUFJLGtCQUFrQixLQUFLLENBQUMsQ0FBQztBQUNqSixTQUFPLHFCQUFxQixLQUFLLEtBQUssT0FBTztBQUMvQztBQUVBLGVBQWUsU0FBUyxNQUFNLFVBQVU7QUFDdEMsTUFBSTtBQUNGLFdBQU8sS0FBSyxNQUFNLE1BQU1ELFVBQVMsTUFBTSxPQUFPLENBQUM7QUFBQSxFQUNqRCxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVPLFNBQVMsZUFBZTtBQUM3QixTQUFPLFNBQVMsY0FBYyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUNsRDtBQUVBLGVBQXNCLGNBQWMsVUFBVTtBQUM1QyxZQUFVLFNBQVMsQ0FBQztBQUNwQixRQUFNQyxXQUFVLGNBQWMsR0FBRyxLQUFLLFVBQVUsVUFBVSxNQUFNLENBQUMsSUFBSSxJQUFJO0FBQzNFO0FBRUEsZUFBc0Isa0JBQWtCLE1BQU07QUFDNUMsUUFBTUMsVUFBUyxNQUFNLFNBQVMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELFNBQU8sRUFBRSxVQUFVQSxRQUFPLFlBQVksQ0FBQyxHQUFHLFNBQVNBLFFBQU8sV0FBVyxDQUFDLEVBQUU7QUFDMUU7QUFFQSxlQUFzQixtQkFBbUIsTUFBTUEsU0FBUTtBQUNyRCxZQUFVLFdBQVcsSUFBSSxDQUFDO0FBQzFCLFFBQU1ELFdBQVUsZUFBZSxJQUFJLEdBQUcsS0FBSyxVQUFVQyxTQUFRLE1BQU0sQ0FBQyxJQUFJLElBQUk7QUFDOUU7QUFFQSxlQUFzQixtQkFBbUIsU0FBUztBQUNoRCxRQUFNLE9BQU8sZ0JBQWdCLE9BQU87QUFDcEMsTUFBSSxLQUFLLFNBQVMsUUFBUTtBQUN4QixVQUFNLEVBQUUsOEJBQThCLElBQUksTUFBTSxPQUFPLG9EQUFvRDtBQUMzRyxVQUFNQyxTQUFRLENBQUMsS0FBSyxTQUFTLE1BQU0sV0FBVyxRQUMxQyxRQUFRLFFBQVEsSUFBSSxTQUFTLE1BQU0sRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLElBQ25ELFdBQVcsTUFBTSxLQUFLLElBQUk7QUFDOUIsV0FBTyxJQUFJLDhCQUE4QixJQUFJLElBQUksS0FBSyxHQUFHLEdBQUc7QUFBQSxNQUMxRCxhQUFhLE9BQU8sS0FBSyxLQUFLLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxLQUFLLFFBQVEsSUFBSTtBQUFBLE1BQzVFLE9BQUFBO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUNBLFFBQU0sRUFBRSxxQkFBcUIsSUFBSSxNQUFNLE9BQU8sMkNBQTJDO0FBQ3pGLFNBQU8sSUFBSSxxQkFBcUI7QUFBQSxJQUM5QixTQUFTLEtBQUs7QUFBQSxJQUNkLE1BQU0sS0FBSztBQUFBLElBQ1gsS0FBSyxFQUFFLEdBQUcsUUFBUSxLQUFLLEdBQUcsS0FBSyxJQUFJO0FBQUEsSUFDbkMsUUFBUTtBQUFBLEVBQ1YsQ0FBQztBQUNIO0FBRUEsZUFBc0IsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLE1BQU07QUFBQyxFQUFFLEdBQUc7QUFDcEUsUUFBTSxXQUFXLE1BQU0sYUFBYTtBQUNwQyxRQUFNLGdCQUFnQixNQUFNLGtCQUFrQixJQUFJO0FBQ2xELFFBQU0sVUFBVSxvQkFBSSxJQUFJO0FBRXhCLFFBQU0sV0FBVyxDQUFDLE1BQU0sU0FBU0MsV0FBVTtBQUN6QyxZQUFRLElBQUksTUFBTTtBQUFBLE1BQ2hCO0FBQUEsTUFDQTtBQUFBLE1BQ0EsT0FBQUE7QUFBQSxNQUNBLFNBQVMsQ0FBQyxjQUFjLFNBQVMsSUFBSTtBQUFBLE1BQ3JDLFFBQVEsY0FBYyxTQUFTLElBQUksSUFBSSxhQUFhO0FBQUEsTUFDcEQsT0FBTztBQUFBLE1BQ1AsWUFBWTtBQUFBLE1BQ1osV0FBVztBQUFBLElBQ2IsQ0FBQztBQUFBLEVBQ0g7QUFDQSxhQUFXLENBQUMsTUFBTSxPQUFPLEtBQUssT0FBTyxRQUFRLFNBQVMsT0FBTyxFQUFHLFVBQVMsTUFBTSxTQUFTLFFBQVE7QUFDaEcsYUFBVyxDQUFDLE1BQU0sT0FBTyxLQUFLLE9BQU8sUUFBUSxjQUFjLE9BQU8sRUFBRyxVQUFTLE1BQU0sU0FBUyxTQUFTO0FBRXRHLGlCQUFlLFFBQVEsTUFBTTtBQUMzQixVQUFNLFNBQVMsUUFBUSxJQUFJLElBQUk7QUFDL0IsUUFBSSxDQUFDLE9BQVE7QUFDYixXQUFPLFNBQVM7QUFDaEIsV0FBTyxRQUFRO0FBQ2YsYUFBUztBQUNULFFBQUk7QUFDRixhQUFPLFlBQVksTUFBTSxtQkFBbUIsT0FBTyxPQUFPO0FBQzFELGFBQU8sYUFBYSxNQUFNLFdBQVc7QUFBQSxRQUNuQztBQUFBLFFBQ0EsV0FBVyxNQUFNLE9BQU87QUFBQSxNQUMxQixDQUFDO0FBQ0QsYUFBTyxTQUFTO0FBQUEsSUFDbEIsU0FBUyxLQUFLO0FBQ1osYUFBTyxTQUFTO0FBQ2hCLGFBQU8sUUFBUSxPQUFPLElBQUksV0FBVyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUc7QUFDdEQsYUFBTyxhQUFhO0FBQ3BCLGFBQU8sWUFBWTtBQUFBLElBQ3JCO0FBQ0EsYUFBUztBQUFBLEVBQ1g7QUFFQSxpQkFBZSxXQUFXLE1BQU07QUFDOUIsVUFBTSxTQUFTLFFBQVEsSUFBSSxJQUFJO0FBQy9CLFFBQUksUUFBUSxZQUFZO0FBQ3RCLFlBQU0sT0FBTyxXQUFXLE1BQU0sRUFBRSxNQUFNLE1BQU07QUFBQSxNQUFDLENBQUM7QUFDOUMsYUFBTyxhQUFhO0FBQUEsSUFDdEI7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUFBLElBQ0wsYUFBYTtBQUNYLFlBQU1DLFdBQVUsQ0FBQztBQUNqQixpQkFBVyxVQUFVLFFBQVEsT0FBTyxHQUFHO0FBQ3JDLFlBQUksT0FBTyxRQUFTLENBQUFBLFNBQVEsS0FBSyxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQUEsTUFDdkQ7QUFDQSxhQUFPLFFBQVEsV0FBV0EsUUFBTztBQUFBLElBQ25DO0FBQUEsSUFDQSxNQUFNLElBQUksTUFBTSxTQUFTRCxTQUFRLFVBQVU7QUFDekMsVUFBSUEsV0FBVSxXQUFXO0FBQ3ZCLGNBQU1GLFVBQVMsTUFBTSxrQkFBa0IsSUFBSTtBQUMzQyxRQUFBQSxRQUFPLFFBQVEsSUFBSSxJQUFJO0FBQ3ZCLGNBQU0sbUJBQW1CLE1BQU1BLE9BQU07QUFBQSxNQUN2QyxPQUFPO0FBQ0wsY0FBTUksWUFBVyxNQUFNLGFBQWE7QUFDcEMsUUFBQUEsVUFBUyxRQUFRLElBQUksSUFBSTtBQUN6QixjQUFNLGNBQWNBLFNBQVE7QUFBQSxNQUM5QjtBQUNBLGNBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxTQUFTLE9BQUFGLFFBQU8sU0FBUyxNQUFNLFFBQVEsUUFBUSxPQUFPLE1BQU0sWUFBWSxNQUFNLFdBQVcsS0FBSyxDQUFDO0FBQ3pILFlBQU0sUUFBUSxJQUFJO0FBQUEsSUFDcEI7QUFBQSxJQUNBLE1BQU0sT0FBTyxNQUFNLFNBQVM7QUFDMUIsWUFBTSxTQUFTLFFBQVEsSUFBSSxJQUFJO0FBQy9CLFVBQUksQ0FBQyxPQUFRO0FBQ2IsVUFBSSxPQUFPLFVBQVUsV0FBVztBQUM5QixjQUFNRixVQUFTLE1BQU0sa0JBQWtCLElBQUk7QUFDM0MsUUFBQUEsUUFBTyxRQUFRLElBQUksSUFBSTtBQUN2QixjQUFNLG1CQUFtQixNQUFNQSxPQUFNO0FBQUEsTUFDdkMsT0FBTztBQUNMLGNBQU1JLFlBQVcsTUFBTSxhQUFhO0FBQ3BDLFFBQUFBLFVBQVMsUUFBUSxJQUFJLElBQUk7QUFDekIsY0FBTSxjQUFjQSxTQUFRO0FBQUEsTUFDOUI7QUFDQSxZQUFNLFdBQVcsSUFBSTtBQUNyQixhQUFPLFVBQVU7QUFDakIsYUFBTyxTQUFTLE9BQU8sVUFBVSxTQUFTO0FBQzFDLGFBQU8sUUFBUTtBQUNmLGVBQVM7QUFDVCxVQUFJLE9BQU8sUUFBUyxPQUFNLFFBQVEsSUFBSTtBQUFBLElBQ3hDO0FBQUEsSUFDQSxNQUFNLE9BQU8sTUFBTTtBQUNqQixZQUFNRixTQUFRLFFBQVEsSUFBSSxJQUFJLEdBQUc7QUFDakMsVUFBSUEsV0FBVSxXQUFXO0FBQ3ZCLGNBQU1GLFVBQVMsTUFBTSxrQkFBa0IsSUFBSTtBQUMzQyxlQUFPQSxRQUFPLFFBQVEsSUFBSTtBQUMxQixjQUFNLG1CQUFtQixNQUFNQSxPQUFNO0FBQUEsTUFDdkMsT0FBTztBQUNMLGNBQU1JLFlBQVcsTUFBTSxhQUFhO0FBQ3BDLGVBQU9BLFVBQVMsUUFBUSxJQUFJO0FBQzVCLGNBQU0sY0FBY0EsU0FBUTtBQUFBLE1BQzlCO0FBQ0EsWUFBTSxXQUFXLElBQUk7QUFDckIsY0FBUSxPQUFPLElBQUk7QUFDbkIsZUFBUztBQUFBLElBQ1g7QUFBQSxJQUNBLE1BQU0sT0FBTyxNQUFNO0FBQ2pCLFlBQU0sU0FBUyxRQUFRLElBQUksSUFBSTtBQUMvQixVQUFJLENBQUMsT0FBUTtBQUNiLFlBQU1KLFVBQVMsTUFBTSxrQkFBa0IsSUFBSTtBQUMzQyxVQUFJLE9BQU8sU0FBUztBQUdsQixlQUFPLFVBQVU7QUFDakIsZUFBTyxTQUFTO0FBQ2hCLGlCQUFTO0FBQ1QsUUFBQUEsUUFBTyxTQUFTLElBQUksSUFBSTtBQUN4QixjQUFNLG1CQUFtQixNQUFNQSxPQUFNO0FBQ3JDLG1CQUFXLElBQUksRUFBRSxNQUFNLE1BQU07QUFBQSxRQUFDLENBQUM7QUFBQSxNQUNqQyxPQUFPO0FBQ0wsZUFBTyxVQUFVO0FBQ2pCLGVBQU9BLFFBQU8sU0FBUyxJQUFJO0FBQzNCLGNBQU0sbUJBQW1CLE1BQU1BLE9BQU07QUFDckMsY0FBTSxRQUFRLElBQUk7QUFBQSxNQUNwQjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFVBQVUsTUFBTTtBQUNkLGFBQU8sV0FBVyxJQUFJLEVBQUUsS0FBSyxNQUFNLFFBQVEsSUFBSSxDQUFDO0FBQUEsSUFDbEQ7QUFBQSxJQUNBLE9BQU87QUFDTCxhQUFPLENBQUMsR0FBRyxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPO0FBQUEsUUFDdkMsTUFBTSxFQUFFO0FBQUEsUUFDUixTQUFTLEVBQUU7QUFBQSxRQUNYLE9BQU8sRUFBRTtBQUFBLFFBQ1QsU0FBUyxFQUFFO0FBQUEsUUFDWCxRQUFRLEVBQUU7QUFBQSxRQUNWLE9BQU8sRUFBRTtBQUFBLFFBQ1QsV0FBVyxFQUFFLFlBQVksTUFBTSxVQUFVO0FBQUEsUUFDekMsUUFBUSxFQUFFLFlBQVksU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLEVBQUUsZUFBZSxHQUFHLEVBQUU7QUFBQSxNQUNwRyxFQUFFO0FBQUEsSUFDSjtBQUFBLElBQ0EsUUFBUTtBQUNOLGFBQU8sQ0FBQyxHQUFHLFFBQVEsT0FBTyxDQUFDLEVBQ3hCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUMxQixRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSztBQUFBLElBQ3RDO0FBQUEsSUFDQSxXQUFXO0FBQ1QsYUFBTyxRQUFRLFdBQVcsQ0FBQyxHQUFHLFFBQVEsS0FBSyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUM7QUFBQSxJQUMvRDtBQUFBLElBQ0EsZUFBZTtBQUNiLGlCQUFXLFVBQVUsUUFBUSxPQUFPLEdBQUc7QUFDckMsY0FBTSxNQUFNLE9BQU8sV0FBVztBQUM5QixZQUFJLEtBQUs7QUFDUCxjQUFJO0FBQ0Ysb0JBQVEsS0FBSyxLQUFLLFNBQVM7QUFBQSxVQUM3QixRQUFRO0FBQUEsVUFBQztBQUFBLFFBQ1g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjtBQXZSQSxJQTBDYTtBQTFDYjtBQUFBO0FBRUE7QUF3Q08sSUFBTSxrQkFBa0I7QUFBQTtBQUFBOzs7QUMxQy9CLFNBQVMsWUFBQUssV0FBVSxXQUFBQyxVQUFTLGFBQUFDLFlBQVcsT0FBTyxjQUFjO0FBQzVELFNBQVMsUUFBQUMsYUFBWTtBQUlkLFNBQVMsa0JBQWtCO0FBQ2hDLFNBQU9BLE1BQUssU0FBUyxHQUFHLFFBQVE7QUFDbEM7QUFFTyxTQUFTLGlCQUFpQixNQUFNO0FBQ3JDLFNBQU9BLE1BQUssV0FBVyxJQUFJLEdBQUcsUUFBUTtBQUN4QztBQUVPLFNBQVMsUUFBUSxNQUFNO0FBQzVCLFFBQU0sT0FBTyxPQUFPLElBQUksRUFDckIsWUFBWSxFQUNaLFFBQVEsZUFBZSxHQUFHLEVBQzFCLFFBQVEsWUFBWSxFQUFFLEVBQ3RCLE1BQU0sR0FBRyxFQUFFO0FBQ2QsTUFBSSxDQUFDLEtBQU0sT0FBTSxJQUFJLE1BQU0sNkNBQTZDO0FBQ3hFLFNBQU87QUFDVDtBQUVBLGVBQWVDLFNBQVEsS0FBS0MsUUFBTztBQUNqQyxNQUFJLFFBQVEsQ0FBQztBQUNiLE1BQUk7QUFDRixZQUFRLE1BQU1KLFNBQVEsR0FBRztBQUFBLEVBQzNCLFFBQVE7QUFDTixXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0EsUUFBTSxXQUFXLENBQUM7QUFDbEIsYUFBVyxRQUFRLE9BQU87QUFDeEIsUUFBSSxDQUFDLEtBQUssU0FBUyxLQUFLLEVBQUc7QUFDM0IsUUFBSTtBQUNGLFlBQU0sRUFBRSxNQUFNLEtBQUssSUFBSSxpQkFBaUIsTUFBTUQsVUFBU0csTUFBSyxLQUFLLElBQUksR0FBRyxPQUFPLENBQUM7QUFDaEYsZUFBUyxLQUFLO0FBQUEsUUFDWixNQUFNLEtBQUssUUFBUSxLQUFLLE1BQU0sR0FBRyxFQUFFO0FBQUEsUUFDbkMsYUFBYSxLQUFLLGVBQWU7QUFBQSxRQUNqQyxPQUFBRTtBQUFBLFFBQ0EsTUFBTUYsTUFBSyxLQUFLLElBQUk7QUFBQSxRQUNwQixNQUFNLEtBQUssS0FBSztBQUFBLE1BQ2xCLENBQUM7QUFBQSxJQUNILFFBQVE7QUFBQSxJQUFDO0FBQUEsRUFDWDtBQUNBLFNBQU87QUFDVDtBQUVPLFNBQVMsYUFBYSxNQUFNO0FBQ2pDLFFBQU0sU0FBUyxDQUFDRSxXQUFXQSxXQUFVLFdBQVcsZ0JBQWdCLElBQUksaUJBQWlCLElBQUk7QUFFekYsU0FBTztBQUFBLElBQ0wsTUFBTSxPQUFPO0FBQ1gsWUFBTSxTQUFTLE1BQU1ELFNBQVEsZ0JBQWdCLEdBQUcsUUFBUTtBQUN4RCxZQUFNLFVBQVUsTUFBTUEsU0FBUSxpQkFBaUIsSUFBSSxHQUFHLFNBQVM7QUFDL0QsYUFBTyxDQUFDLEdBQUcsU0FBUyxHQUFHLE1BQU07QUFBQSxJQUMvQjtBQUFBLElBQ0EsTUFBTSxTQUFTLEVBQUUsTUFBTSxhQUFhLFNBQVMsT0FBQUMsU0FBUSxVQUFVLEdBQUc7QUFDaEUsVUFBSSxDQUFDLENBQUMsV0FBVyxRQUFRLEVBQUUsU0FBU0EsTUFBSyxFQUFHLE9BQU0sSUFBSSxNQUFNLGlDQUFpQztBQUM3RixZQUFNLE9BQU8sUUFBUSxJQUFJO0FBQ3pCLFlBQU0sTUFBTSxPQUFPQSxNQUFLO0FBQ3hCLFlBQU0sTUFBTSxLQUFLLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDcEMsWUFBTSxPQUFPRixNQUFLLEtBQUssR0FBRyxJQUFJLEtBQUs7QUFDbkMsWUFBTSxPQUFPO0FBQUEsUUFBYyxJQUFJO0FBQUEsZUFBa0IsT0FBTyxXQUFXLEVBQUUsUUFBUSxPQUFPLEdBQUcsQ0FBQztBQUFBO0FBQUEsRUFBVSxPQUFPO0FBQUE7QUFDekcsWUFBTUQsV0FBVSxNQUFNLE1BQU0sT0FBTztBQUNuQyxhQUFPLEVBQUUsTUFBTSxNQUFNLE9BQUFHLFFBQU8sS0FBSztBQUFBLElBQ25DO0FBQUEsSUFDQSxNQUFNLE9BQU8sTUFBTTtBQUNqQixZQUFNLFdBQVcsTUFBTSxLQUFLLEtBQUs7QUFDakMsWUFBTSxTQUFTLFNBQVMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFDbkQsVUFBSSxDQUFDLE9BQVEsT0FBTSxJQUFJLE1BQU0sb0JBQW9CLElBQUksR0FBRztBQUN4RCxZQUFNLE9BQU8sT0FBTyxJQUFJO0FBQ3hCLGFBQU8sRUFBRSxNQUFNLE9BQU8sTUFBTSxPQUFPLE9BQU8sTUFBTTtBQUFBLElBQ2xEO0FBQUEsSUFDQSxNQUFNLE9BQU8sTUFBTTtBQUNqQixZQUFNLFdBQVcsTUFBTSxLQUFLLEtBQUs7QUFDakMsWUFBTSxTQUFTLFNBQVMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFDbkQsVUFBSSxDQUFDLFFBQVE7QUFDWCxjQUFNLFFBQVEsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLElBQUksS0FBSztBQUN4RCxjQUFNLElBQUksTUFBTSxvQkFBb0IsSUFBSSxzQkFBc0IsS0FBSyxFQUFFO0FBQUEsTUFDdkU7QUFDQSxhQUFPLEVBQUUsTUFBTSxPQUFPLE1BQU0sT0FBTyxPQUFPLE9BQU8sTUFBTSxPQUFPLE1BQU0sU0FBUyxPQUFPLEtBQUs7QUFBQSxJQUMzRjtBQUFBLEVBQ0Y7QUFDRjtBQUVPLFNBQVMsWUFBWSxVQUFVLE1BQU07QUFDMUMsTUFBSSxTQUFTLFdBQVcsR0FBRztBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUNBLFFBQU0sUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBRSxLQUFLLE1BQU0sRUFBRSxXQUFXLEVBQUU7QUFDOUUsU0FBTztBQUFBLElBQ0wsdU9BQXVPLGlCQUFpQixJQUFJLENBQUMsUUFBUSxnQkFBZ0IsQ0FBQztBQUFBLElBQ3RSLEdBQUc7QUFBQSxFQUNMLEVBQUUsS0FBSyxJQUFJO0FBQ2I7QUE5RkE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBOzs7QUNIQSxTQUFTLFdBQUFDLGdCQUFlO0FBUXhCLGVBQXNCLGlCQUFpQixLQUFLLEVBQUUsY0FBYyxNQUFNO0FBQUMsRUFBRSxJQUFJLENBQUMsR0FBRztBQUMzRSxRQUFNLE9BQU9BLFNBQVE7QUFDckIsUUFBTSxPQUFPLGdCQUFnQixHQUFHO0FBQ2hDLFFBQU0saUJBQWlCLG1CQUFtQixHQUFHO0FBQzdDLFFBQU0sVUFBVSxxQkFBcUI7QUFBQSxJQUNuQyxTQUFTLGVBQWU7QUFBQSxJQUN4QixRQUFRLElBQUksSUFBSSxlQUFlLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7QUFBQSxFQUN6RCxDQUFDO0FBQ0QsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQSxZQUFZLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxRQUFRLE1BQU0sR0FBRyxJQUFJO0FBQUEsSUFDNUQ7QUFBQSxJQUNBO0FBQUEsSUFDQSxRQUFRLE1BQU0saUJBQWlCLElBQUk7QUFBQSxJQUNuQyxVQUFVLE1BQU0sbUJBQW1CLElBQUk7QUFBQSxJQUN2QyxLQUFLLE1BQU0saUJBQWlCLEVBQUUsTUFBTSxVQUFVLFlBQVksQ0FBQztBQUFBLElBQzNELFFBQVEsYUFBYSxJQUFJO0FBQUEsRUFDM0I7QUFDRjtBQTNCQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTs7O0FDSE8sU0FBUyxjQUFjQyxVQUFTLENBQUMsR0FBRyxNQUFNLFFBQVEsS0FBSztBQUM1RCxRQUFNLE1BQU0sSUFBSSxjQUFjQSxRQUFPLFFBQVEsT0FBTztBQUNwRCxNQUFJLENBQUMsSUFBSyxRQUFPO0FBQ2pCLFNBQU87QUFBQSxJQUNMLEtBQUssSUFBSSxRQUFRLFFBQVEsRUFBRTtBQUFBLElBQzNCLFFBQVEsSUFBSSxrQkFBa0JBLFFBQU8sUUFBUSxVQUFVO0FBQUEsRUFDekQ7QUFDRjtBQUlBLGVBQWUsS0FBSyxRQUFRLE1BQU0sUUFBUSxRQUFRO0FBQ2hELFFBQU0sUUFBUSxJQUFJLGdCQUFnQixNQUFNO0FBR3hDLFFBQU0sVUFBVSxDQUFDLFlBQVksUUFBUSxlQUFlLEdBQUcsR0FBSSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBRTtBQUNsRixRQUFNLFdBQVcsTUFBTSxNQUFNLEdBQUcsT0FBTyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSTtBQUFBLElBQzVELFFBQVEsWUFBWSxJQUFJLE9BQU87QUFBQSxJQUMvQixTQUFTLE9BQU8sU0FBUyxFQUFFLGVBQWUsVUFBVSxPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFBQSxFQUMzRSxDQUFDO0FBQ0QsUUFBTSxPQUFPLE1BQU0sU0FBUyxLQUFLLEVBQUUsTUFBTSxNQUFNLElBQUk7QUFDbkQsTUFBSSxDQUFDLEtBQU0sT0FBTSxJQUFJLE1BQU0sd0JBQXdCLFNBQVMsTUFBTSxzQkFBc0I7QUFDeEYsU0FBTztBQUNUO0FBRU8sU0FBUyxlQUFlLEVBQUUsUUFBUSxVQUFVLE9BQU8sR0FBRztBQUMzRCxTQUFPO0FBQUEsSUFDTDtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sYUFDRTtBQUFBLE1BQ0YsUUFBUTtBQUFBLFFBQ04sR0FBRyxFQUFFLE1BQU0sVUFBVSxhQUFhLG1CQUFtQjtBQUFBLE1BQ3ZEO0FBQUEsTUFDQSxTQUFTLE9BQU8sRUFBRSxFQUFFLE1BQU07QUFDeEIsaUJBQVMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzNCLGNBQU0sT0FBTyxNQUFNLEtBQUssUUFBUSxXQUFXLEVBQUUsRUFBRSxHQUFHLE1BQU07QUFDeEQsWUFBSSxDQUFDLEtBQUssR0FBSSxPQUFNLElBQUksTUFBTSxLQUFLLE9BQU8sV0FBVyxlQUFlO0FBQ3BFLGNBQU0sV0FBVyxLQUFLLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPO0FBQUEsVUFDL0MsT0FBTyxFQUFFO0FBQUEsVUFDVCxLQUFLLEVBQUU7QUFBQSxVQUNQLFNBQVMsRUFBRTtBQUFBLFVBQ1gsUUFBUSxFQUFFO0FBQUEsUUFDWixFQUFFO0FBQ0YsWUFBSSxRQUFRLFdBQVcsR0FBRztBQUN4QixnQkFBTSxZQUFZLEtBQUssWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssSUFBSTtBQUNyRixpQkFBTyxFQUFFLFNBQVMsTUFBTSxXQUFXLDZCQUEwQixRQUFRLEtBQUssYUFBYTtBQUFBLFFBQ3pGO0FBQ0EsZUFBTyxFQUFFLFFBQVE7QUFBQSxNQUNuQjtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsTUFDRSxNQUFNO0FBQUEsTUFDTixhQUNFO0FBQUEsTUFDRixRQUFRO0FBQUEsUUFDTixLQUFLLEVBQUUsTUFBTSxVQUFVLGFBQWEsbUJBQW1CO0FBQUEsUUFDdkQsUUFBUSxFQUFFLE1BQU0sVUFBVSxhQUFhLCtEQUErRCxVQUFVLEtBQUs7QUFBQSxRQUNySCxVQUFVLEVBQUUsTUFBTSxVQUFVLGFBQWEscUNBQXFDLG1CQUFtQixTQUFTLGVBQWUsSUFBSSxVQUFVLEtBQUs7QUFBQSxNQUM5STtBQUFBLE1BQ0EsU0FBUyxPQUFPLEVBQUUsS0FBSyxRQUFRLFNBQVMsTUFBTTtBQUM1QyxpQkFBUyxNQUFNLEVBQUUsT0FBTyxJQUFJLFFBQVEsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDdEUsY0FBTSxRQUFRLEtBQUssSUFBSSxpQkFBaUIsS0FBSyxJQUFJLEtBQU0sWUFBWSxtQkFBbUIsQ0FBQztBQUN2RixjQUFNLE9BQU8sTUFBTSxLQUFLLFFBQVEsVUFBVSxFQUFFLEtBQUssVUFBVSxPQUFPLEdBQUksVUFBVSxFQUFFLE9BQU8sRUFBRyxHQUFHLE1BQU07QUFDckcsWUFBSSxDQUFDLEtBQUssSUFBSTtBQUNaLGdCQUFNLEVBQUUsTUFBTSxTQUFTLFVBQVUsSUFBSSxLQUFLLFNBQVMsQ0FBQztBQUNwRCxnQkFBTSxJQUFJLE1BQU0sR0FBRyxRQUFRLGNBQWMsS0FBSyxXQUFXLEdBQUcsR0FBRyxZQUFZLGlCQUFpQixFQUFFLEVBQUU7QUFBQSxRQUNsRztBQUNBLGNBQU0sRUFBRSxVQUFVLFVBQVUsV0FBVyxJQUFJLEtBQUs7QUFDaEQsZUFBTztBQUFBLFVBQ0w7QUFBQSxVQUNBLE9BQU8sVUFBVSxTQUFTO0FBQUEsVUFDMUIsVUFBVSxVQUFVLGFBQWE7QUFBQSxVQUNqQyxHQUFJLFlBQVksZUFBZSxLQUFLLEVBQUUsT0FBTyxHQUFHLFdBQVcsY0FBYyxDQUFDLE9BQU8sV0FBVyxZQUFZLEdBQUc7QUFBQSxVQUMzRyxHQUFJLFlBQVksZUFBZSxFQUFFLGFBQWEsV0FBVyxZQUFZO0FBQUEsUUFDdkU7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjtBQWxGQSxJQUFNLHFCQUNBLGlCQVdBO0FBWk47QUFBQTtBQUFBLElBQU0sc0JBQXNCO0FBQzVCLElBQU0sa0JBQWtCO0FBV3hCLElBQU0sa0JBQWtCO0FBQUE7QUFBQTs7O0FDWnhCLFNBQVMsYUFBYTtBQUlmLFNBQVMsbUJBQW1CLEVBQUUsV0FBVyxNQUFNO0FBQUMsR0FBRyxTQUFTLE1BQU07QUFBQyxFQUFFLElBQUksQ0FBQyxHQUFHO0FBQ2xGLFFBQU1DLFVBQVMsb0JBQUksSUFBSTtBQUN2QixNQUFJLFNBQVM7QUFFYixXQUFTLFdBQVcsT0FBTztBQUN6QixXQUFPO0FBQUEsTUFDTCxJQUFJLE1BQU07QUFBQSxNQUNWLFNBQVMsTUFBTTtBQUFBLE1BQ2YsYUFBYSxNQUFNO0FBQUEsTUFDbkIsS0FBSyxNQUFNO0FBQUEsTUFDWCxRQUFRLE1BQU07QUFBQSxNQUNkLFVBQVUsTUFBTTtBQUFBLE1BQ2hCLFdBQVcsTUFBTTtBQUFBLE1BQ2pCLFNBQVMsTUFBTTtBQUFBLE1BQ2YsVUFBVSxNQUFNO0FBQUEsTUFDaEIsVUFBVSxNQUFNLE1BQU0sR0FBRyxFQUFFLEtBQUs7QUFBQSxNQUNoQyxXQUFXLE1BQU0sTUFBTTtBQUFBLElBQ3pCO0FBQUEsRUFDRjtBQUVBLFdBQVMsTUFBTSxTQUFTLEVBQUUsS0FBSyxLQUFLLFlBQVksSUFBSSxDQUFDLEdBQUc7QUFDdEQsVUFBTSxLQUFLLE9BQU8sUUFBUTtBQUMxQixVQUFNLFFBQVEsTUFBTSxTQUFTO0FBQUEsTUFDM0IsT0FBTztBQUFBLE1BQ1AsS0FBSyxPQUFPLFFBQVEsSUFBSTtBQUFBLE1BQ3hCLEtBQUssRUFBRSxHQUFHLFFBQVEsS0FBSyxHQUFHLEtBQUssYUFBYSxLQUFLLFVBQVUsSUFBSTtBQUFBLE1BQy9ELE9BQU8sQ0FBQyxVQUFVLFFBQVEsTUFBTTtBQUFBLElBQ2xDLENBQUM7QUFDRCxVQUFNLFFBQVE7QUFBQSxNQUNaO0FBQUEsTUFDQTtBQUFBLE1BQ0EsYUFBYSxlQUFlO0FBQUEsTUFDNUIsS0FBSyxPQUFPLFFBQVEsSUFBSTtBQUFBLE1BQ3hCO0FBQUEsTUFDQSxRQUFRO0FBQUEsTUFDUixVQUFVO0FBQUEsTUFDVixXQUFXLEtBQUssSUFBSTtBQUFBLE1BQ3BCLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLE9BQU8sQ0FBQztBQUFBLE1BQ1IsU0FBUztBQUFBLElBQ1g7QUFFQSxVQUFNLE9BQU8sQ0FBQyxVQUFVO0FBQ3RCLFlBQU0sT0FBTyxNQUFNLFVBQVUsTUFBTSxTQUFTO0FBQzVDLFlBQU0sUUFBUSxLQUFLLE1BQU0sSUFBSTtBQUM3QixZQUFNLFVBQVUsTUFBTSxJQUFJLEtBQUs7QUFDL0IsWUFBTSxNQUFNLEtBQUssR0FBRyxLQUFLO0FBQ3pCLFVBQUksTUFBTSxNQUFNLFNBQVMsVUFBVyxPQUFNLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxTQUFTLFNBQVM7QUFDeEYsZUFBUztBQUFBLElBQ1g7QUFDQSxVQUFNLE9BQU8sR0FBRyxRQUFRLElBQUk7QUFDNUIsVUFBTSxPQUFPLEdBQUcsUUFBUSxJQUFJO0FBQzVCLFVBQU0sR0FBRyxTQUFTLENBQUMsUUFBUTtBQUN6QixXQUFLLHFCQUFxQixJQUFJLE9BQU87QUFBQSxDQUFLO0FBQUEsSUFDNUMsQ0FBQztBQUNELFVBQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxXQUFXO0FBQ2pDLFVBQUksTUFBTSxTQUFTO0FBQ2pCLGNBQU0sTUFBTSxLQUFLLE1BQU0sT0FBTztBQUM5QixjQUFNLFVBQVU7QUFBQSxNQUNsQjtBQUNBLFlBQU0sU0FBUztBQUNmLFlBQU0sV0FBVyxTQUFTLFNBQVMsSUFBSTtBQUN2QyxZQUFNLFVBQVUsS0FBSyxJQUFJO0FBQ3pCLGVBQVM7QUFDVCxhQUFPLFdBQVcsS0FBSyxDQUFDO0FBQUEsSUFDMUIsQ0FBQztBQUVELElBQUFBLFFBQU8sSUFBSSxJQUFJLEtBQUs7QUFDcEIsYUFBUztBQUNULFdBQU8sRUFBRSxHQUFHO0FBQUEsRUFDZDtBQUVBLFdBQVMsSUFBSSxJQUFJO0FBQ2YsVUFBTSxRQUFRQSxRQUFPLElBQUksT0FBTyxFQUFFLENBQUM7QUFDbkMsUUFBSSxDQUFDLE1BQU8sT0FBTSxJQUFJLE1BQU0sb0JBQW9CLEVBQUUsK0VBQStFO0FBQ2pJLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLE9BQU8sSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRztBQUM5QixZQUFNLFFBQVEsSUFBSSxFQUFFO0FBQ3BCLGFBQU87QUFBQSxRQUNMLElBQUksTUFBTTtBQUFBLFFBQ1YsU0FBUyxNQUFNO0FBQUEsUUFDZixRQUFRLE1BQU07QUFBQSxRQUNkLFVBQVUsTUFBTTtBQUFBLFFBQ2hCLFFBQVEsTUFBTSxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJO0FBQUEsUUFDMUMsWUFBWSxNQUFNLE1BQU07QUFBQSxNQUMxQjtBQUFBLElBQ0Y7QUFBQSxJQUNBLEtBQUssSUFBSSxLQUFLLFNBQVM7QUFDckIsWUFBTSxRQUFRLElBQUksRUFBRTtBQUNwQixVQUFJLE1BQU0sV0FBVyxVQUFXLFFBQU8sRUFBRSxJQUFJLE1BQU0sSUFBSSxRQUFRLE1BQU0sUUFBUSxVQUFVLE1BQU0sU0FBUztBQUN0RyxZQUFNLFdBQVc7QUFDakIsWUFBTSxNQUFNLEtBQUssU0FBUztBQUMxQixpQkFBVyxNQUFNO0FBQ2YsWUFBSSxNQUFNLFdBQVcsVUFBVyxPQUFNLE1BQU0sS0FBSyxTQUFTO0FBQUEsTUFDNUQsR0FBRyxHQUFJLEVBQUUsTUFBTTtBQUNmLGFBQU8sRUFBRSxJQUFJLE1BQU0sSUFBSSxRQUFRLFVBQVU7QUFBQSxJQUMzQztBQUFBLElBQ0EsUUFBUSxJQUFJO0FBQ1YsWUFBTSxRQUFRQSxRQUFPLElBQUksT0FBTyxFQUFFLENBQUM7QUFDbkMsVUFBSSxTQUFTLE1BQU0sV0FBVyxVQUFVO0FBQ3RDLFFBQUFBLFFBQU8sT0FBTyxPQUFPLEVBQUUsQ0FBQztBQUN4QixpQkFBUztBQUFBLE1BQ1g7QUFBQSxJQUNGO0FBQUEsSUFDQSxPQUFPO0FBQ0wsYUFBTyxDQUFDLEdBQUdBLFFBQU8sT0FBTyxDQUFDLEVBQUUsSUFBSSxVQUFVO0FBQUEsSUFDNUM7QUFBQSxJQUNBLFVBQVU7QUFDUixhQUFPLENBQUMsR0FBR0EsUUFBTyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsU0FBUyxFQUFFO0FBQUEsSUFDcEU7QUFBQSxJQUNBLFVBQVU7QUFDUixpQkFBVyxTQUFTQSxRQUFPLE9BQU8sR0FBRztBQUNuQyxZQUFJLE1BQU0sV0FBVyxXQUFXO0FBQzlCLGdCQUFNLFdBQVc7QUFDakIsY0FBSTtBQUNGLGtCQUFNLE1BQU0sS0FBSyxTQUFTO0FBQUEsVUFDNUIsUUFBUTtBQUFBLFVBQUM7QUFBQSxRQUNYO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFsSUEsSUFFTTtBQUZOO0FBQUE7QUFFQSxJQUFNLFlBQVk7QUFBQTtBQUFBOzs7QUNGbEIsU0FBUyxrQkFBa0I7QUFJcEIsU0FBUyxVQUFVLE1BQU0sT0FBTyxDQUFDLEdBQUc7QUFDekMsU0FBTyxFQUFFLElBQUksV0FBVyxHQUFHLElBQUksS0FBSyxJQUFJLEdBQUcsTUFBTSxLQUFLO0FBQ3hEO0FBRU8sU0FBUyxXQUFXLEVBQUUsS0FBSyxLQUFLLEdBQUc7QUFDeEMsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLElBQ1QsSUFBSSxXQUFXO0FBQUEsSUFDZjtBQUFBLElBQ0E7QUFBQSxJQUNBLFdBQVcsS0FBSyxJQUFJO0FBQUEsRUFDdEI7QUFDRjtBQUVPLFNBQVMsY0FBYyxPQUFPO0FBQ25DLFNBQU8sS0FBSyxVQUFVLEtBQUssSUFBSTtBQUNqQztBQUVPLFNBQVMsVUFBVSxNQUFNO0FBQzlCLFFBQU0sVUFBVSxLQUFLLEtBQUs7QUFDMUIsTUFBSSxDQUFDLFFBQVMsUUFBTztBQUNyQixNQUFJO0FBQ0YsVUFBTSxTQUFTLEtBQUssTUFBTSxPQUFPO0FBQ2pDLFdBQU8sVUFBVSxPQUFPLE9BQU8sU0FBUyxXQUFXLFNBQVM7QUFBQSxFQUM5RCxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVPLFNBQVMsV0FBVyxNQUFNO0FBQy9CLFNBQU8sS0FBSyxNQUFNLElBQUksRUFBRSxJQUFJLFNBQVMsRUFBRSxPQUFPLE9BQU87QUFDdkQ7QUFwQ0EsSUFFYTtBQUZiO0FBQUE7QUFFTyxJQUFNLGtCQUFrQjtBQUFBO0FBQUE7OztBQ0YvQixTQUFTLFlBQVksWUFBQUMsV0FBVSxXQUFBQyxVQUFTLElBQUksWUFBWTtBQUN4RCxTQUFTLFVBQVUsV0FBQUMsVUFBUyxRQUFBQyxjQUFZO0FBSWpDLFNBQVMsY0FBYyxFQUFFLEtBQUssS0FBSyxHQUFHO0FBQzNDLFFBQU0sU0FBUyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUM7QUFDdkMsUUFBTSxPQUFPQSxPQUFLLFVBQVUsWUFBWSxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sRUFBRSxRQUFRO0FBQ3BFLFFBQU0sVUFBVSxZQUFZLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUMsVUFBUSxPQUFPLE1BQU07QUFDckIsU0FBTztBQUNUO0FBRU8sU0FBUyxZQUFZLEVBQUUsTUFBTSxPQUFPLEdBQUc7QUFDNUMsTUFBSSxRQUFRLFFBQVEsUUFBUTtBQUM1QixTQUFPO0FBQUEsSUFDTCxJQUFJLE9BQU87QUFBQSxJQUNYO0FBQUEsSUFDQTtBQUFBLElBQ0EsT0FBTyxPQUFPO0FBQ1osY0FBUSxNQUFNLEtBQUssTUFBTSxXQUFXLE1BQU0sY0FBYyxLQUFLLENBQUMsQ0FBQztBQUMvRCxhQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0EsUUFBUTtBQUNOLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBRUEsZUFBc0IsWUFBWSxNQUFNO0FBQ3RDLFFBQU0sU0FBUyxXQUFXLE1BQU1ILFVBQVMsTUFBTSxPQUFPLENBQUM7QUFDdkQsUUFBTSxTQUFTLE9BQU8sQ0FBQyxHQUFHLFNBQVMsWUFBWSxPQUFPLE1BQU0sSUFBSTtBQUNoRSxNQUFJLENBQUMsT0FBUSxPQUFNLElBQUksTUFBTSw0QkFBNEIsSUFBSSxFQUFFO0FBQy9ELFNBQU8sRUFBRSxRQUFRLE9BQU87QUFDMUI7QUFFQSxlQUFlLFlBQVksTUFBTTtBQUMvQixRQUFNLENBQUMsTUFBTSxNQUFNLElBQUksTUFBTSxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksR0FBR0EsVUFBUyxNQUFNLE9BQU8sQ0FBQyxDQUFDO0FBQzlFLFFBQU0sUUFBUSxPQUFPLE1BQU0sSUFBSTtBQUMvQixRQUFNLFNBQVMsVUFBVSxNQUFNLENBQUMsQ0FBQztBQUNqQyxNQUFJLENBQUMsVUFBVSxPQUFPLFNBQVMsVUFBVyxRQUFPO0FBQ2pELE1BQUksaUJBQWlCO0FBQ3JCLE1BQUksY0FBYztBQUNsQixNQUFJLFFBQVE7QUFDWixNQUFJLFFBQVE7QUFDWixhQUFXLFFBQVEsTUFBTSxNQUFNLENBQUMsR0FBRztBQUNqQyxVQUFNLFFBQVEsVUFBVSxJQUFJO0FBQzVCLFFBQUksQ0FBQyxNQUFPO0FBQ1osUUFBSSxNQUFNLFNBQVMsUUFBUyxlQUFjLE1BQU0sS0FBSztBQUNyRCxRQUFJLE1BQU0sU0FBUyxRQUFTLFNBQVEsTUFBTSxLQUFLO0FBQy9DLFFBQUksTUFBTSxTQUFTLGFBQWEsTUFBTSxLQUFLLFNBQVMsU0FBUyxRQUFRO0FBQ25FO0FBQ0EsWUFBTSxVQUFVLE1BQU0sS0FBSyxRQUFRO0FBQ25DLFlBQU0sT0FBTyxNQUFNLFFBQVEsT0FBTyxJQUM5QixRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLElBQ3BFLE9BQU8sT0FBTztBQUNsQixVQUFJLENBQUMsa0JBQWtCLEtBQUssS0FBSyxFQUFHLGtCQUFpQixLQUFLLEtBQUssRUFBRSxNQUFNLEdBQUcsR0FBRztBQUFBLElBQy9FO0FBQUEsRUFDRjtBQUNBLFFBQU0sUUFBUSxlQUFlO0FBQzdCLE1BQUksQ0FBQyxNQUFPLFFBQU87QUFDbkIsU0FBTyxFQUFFLE1BQU0sUUFBUSxPQUFPLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUTtBQUMvRDtBQUVBLGVBQWUsUUFBUSxLQUFLO0FBQzFCLE1BQUk7QUFDRixVQUFNLFFBQVEsTUFBTUMsU0FBUSxHQUFHO0FBQy9CLFdBQU8sTUFBTSxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU1FLE9BQUssS0FBSyxDQUFDLENBQUM7QUFBQSxFQUMxRSxRQUFRO0FBQ04sV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUNGO0FBRUEsZUFBc0IsY0FBYyxNQUFNO0FBQ3hDLFFBQU0sWUFBWSxTQUFTLE1BQU0sUUFBUTtBQUN6QyxRQUFNLFVBQVVELFNBQVFBLFNBQVEsSUFBSSxDQUFDO0FBQ3JDLFFBQU0sR0FBRyxJQUFJO0FBQ2IsUUFBTSxHQUFHQyxPQUFLLFNBQVMsZUFBZSxTQUFTLEdBQUcsRUFBRSxXQUFXLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFDcEY7QUFFTyxTQUFTLGtCQUFrQixNQUFNO0FBQ3RDLFNBQU8sR0FBRyxXQUFXLElBQUksR0FBRyxFQUFFLFdBQVcsTUFBTSxPQUFPLEtBQUssQ0FBQztBQUM5RDtBQUVBLGVBQXNCLGFBQWEsRUFBRSxPQUFBQyxRQUFPLEtBQUssR0FBRztBQUNsRCxNQUFJLFFBQVEsQ0FBQztBQUNiLE1BQUlBLFdBQVUsY0FBYztBQUMxQixVQUFNLGNBQWNELE9BQUssU0FBUyxHQUFHLFVBQVU7QUFDL0MsUUFBSSxXQUFXLENBQUM7QUFDaEIsUUFBSTtBQUNGLGlCQUFXLE1BQU1GLFNBQVEsV0FBVztBQUFBLElBQ3RDLFFBQVE7QUFBQSxJQUFDO0FBQ1QsVUFBTSxTQUFTLE1BQU0sUUFBUTtBQUFBLE1BQzNCLFNBQVMsSUFBSSxDQUFDLE1BQU0sUUFBUUUsT0FBSyxhQUFhLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFBQSxJQUMvRDtBQUNBLFlBQVEsT0FBTyxLQUFLO0FBQUEsRUFDdEIsT0FBTztBQUNMLFlBQVEsTUFBTSxRQUFRLFlBQVksSUFBSSxDQUFDO0FBQUEsRUFDekM7QUFDQSxRQUFNLFFBQVEsTUFBTSxRQUFRLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsRUFBRSxNQUFNLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDbEYsU0FBTyxNQUFNLE9BQU8sT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUN6RDtBQXJHQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7OztBQ0hPLFNBQVMsaUJBQWlCLHFCQUFxQixJQUFJO0FBQ3hELE1BQUksU0FBUztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQmIsTUFBSSxtQkFBbUIsS0FBSyxHQUFHO0FBQzdCLGNBQVU7QUFBQTtBQUFBO0FBQUEsRUFBaUMsbUJBQW1CLEtBQUssQ0FBQztBQUFBLEVBQ3RFO0FBQ0EsU0FBTztBQUNUO0FBRU8sU0FBUyxxQkFBcUIsS0FBSztBQUN4QyxNQUFJLFlBQVksSUFBSSxRQUFRLGtDQUFrQyxFQUFFO0FBQ2hFLFFBQU0sUUFBUSxVQUFVLE1BQU0sc0NBQXNDO0FBQ3BFLE1BQUksT0FBTztBQUNULGdCQUFZLE1BQU0sQ0FBQztBQUFBLEVBQ3JCLFdBQVcsVUFBVSxTQUFTLFlBQVksR0FBRztBQUczQyxVQUFNLFFBQVEsVUFBVSxPQUFPLFNBQVM7QUFDeEMsZ0JBQVksU0FBUyxJQUFJLFVBQVUsTUFBTSxLQUFLLElBQUk7QUFBQSxFQUNwRDtBQUNBLFNBQU8sVUFBVSxRQUFRLFVBQVUsTUFBTSxFQUFFLEtBQUs7QUFDbEQ7QUFFTyxTQUFTLGdCQUFnQixNQUFNO0FBQ3BDLFVBQVEsS0FBSyxNQUFNLFlBQVksS0FBSyxDQUFDLEdBQUc7QUFDMUM7QUFFTyxTQUFTLG9CQUFvQixTQUFTLEVBQUUsYUFBYSxXQUFXLElBQUksQ0FBQyxHQUFHO0FBQzdFLE1BQUksT0FBTztBQUFBO0FBQUEsRUFBaUksT0FBTztBQUNuSixNQUFJLGFBQWE7QUFDZixZQUFRO0FBQUE7QUFBQSxzREFBMkQsV0FBVztBQUFBLEVBQ2hGO0FBQ0EsTUFBSSxZQUFZO0FBQ2QsWUFBUTtBQUFBO0FBQUE7QUFBQSxFQUNWO0FBQ0EsVUFBUTtBQUFBO0FBQUE7QUFDUixTQUFPO0FBQ1Q7QUF0REE7QUFBQTtBQUFBO0FBQUE7OztBQ1lBLFNBQVMsc0JBQXNCLFNBQVM7QUFDdEMsUUFBTSxjQUFjLENBQUM7QUFDckIsVUFBUSxRQUFRLENBQUMsU0FBUyxNQUFNO0FBQzlCLFFBQUksUUFBUSxTQUFTLE9BQVEsYUFBWSxLQUFLLENBQUM7QUFBQSxFQUNqRCxDQUFDO0FBQ0QsUUFBTSxTQUFTLFlBQVksR0FBRyxDQUFDLHNCQUFzQjtBQUNyRCxNQUFJLFdBQVcsT0FBVyxRQUFPO0FBQ2pDLFNBQU8sUUFBUSxJQUFJLENBQUMsU0FBUyxNQUFNO0FBQ2pDLFFBQUksS0FBSyxVQUFVLFFBQVEsU0FBUyxPQUFRLFFBQU87QUFDbkQsVUFBTSxVQUFVLE9BQU8sUUFBUSxXQUFXLEVBQUU7QUFDNUMsUUFBSSxRQUFRLFNBQVMsZ0JBQWlCLFFBQU87QUFDN0MsV0FBTztBQUFBLE1BQ0wsR0FBRztBQUFBLE1BQ0gsU0FBUyx3Q0FBd0MsUUFBUSxPQUFPLGVBQWUsQ0FBQztBQUFBLElBQ2xGO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFFQSxTQUFTLGNBQWMsUUFBUTtBQUM3QixRQUFNLFdBQVcsb0JBQUksSUFBSTtBQUN6QixhQUFXLEtBQUssUUFBUTtBQUN0QixRQUFJLEVBQUUsU0FBUyxjQUFlLFVBQVMsSUFBSSxFQUFFLEtBQUssUUFBUTtBQUFBLEVBQzVEO0FBQ0EsU0FBTyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxZQUFZLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDO0FBQ3hFO0FBRUEsU0FBUyxXQUFXLFFBQVE7QUFDMUIsUUFBTSxVQUFVLG9CQUFJLElBQUk7QUFDeEIsUUFBTSxRQUFRLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckQsYUFBVyxVQUFVLGNBQWMsTUFBTSxHQUFHO0FBQzFDLFFBQUksQ0FBQyxlQUFlLFNBQVMsT0FBTyxLQUFLLElBQUksRUFBRztBQUNoRCxVQUFNLE9BQU8sTUFBTSxJQUFJLE9BQU8sS0FBSyxNQUFNO0FBQ3pDLFVBQU0sS0FBSyxNQUFNLElBQUksT0FBTyxFQUFFO0FBQzlCLFFBQUksU0FBUyxVQUFhLE9BQU8sT0FBVztBQUM1QyxhQUFTLElBQUksTUFBTSxJQUFJLElBQUksSUFBSyxTQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUFBLEVBQzFEO0FBQ0EsU0FBTztBQUNUO0FBRUEsU0FBUyxhQUFhLE9BQU8sT0FBTztBQUNsQyxRQUFNLGdCQUFnQixNQUFNLGdCQUFnQjtBQUM1QyxRQUFNLG9CQUFvQixNQUFNLG9CQUFvQjtBQUNwRCxRQUFNLGVBQWUsTUFBTSxlQUFlO0FBQzFDLFFBQU0sZ0JBQWdCLE1BQU0sZ0JBQWdCO0FBQzVDLFFBQU0saUJBQWlCLE1BQU0saUJBQWlCO0FBQ2hEO0FBRUEsU0FBUyxhQUFhO0FBQ3BCLFNBQU8sRUFBRSxjQUFjLEdBQUcsa0JBQWtCLEdBQUcsYUFBYSxHQUFHLGNBQWMsR0FBRyxlQUFlLEVBQUU7QUFDbkc7QUFFQSxTQUFTRSxXQUFVLEtBQUs7QUFDdEIsTUFBSTtBQUNGLFdBQU8sS0FBSyxNQUFNLEdBQUc7QUFBQSxFQUN2QixRQUFRO0FBQ04sV0FBTyxFQUFFLE1BQU0sSUFBSTtBQUFBLEVBQ3JCO0FBQ0Y7QUFFQSxTQUFTLFlBQVksT0FBTyxTQUFTLFNBQVM7QUFDNUMsUUFBTSxnQkFBZ0IsS0FBSyxPQUFPO0FBQ2xDLFFBQU0sZ0JBQWdCLEtBQUssT0FBTztBQUNwQztBQUVBLFNBQVMsWUFBWSxPQUFPLE9BQU87QUFDakMsUUFBTSxVQUFVLE1BQU0sS0FBSztBQUMzQixNQUFJLENBQUMsV0FBVyxRQUFRLFNBQVMsU0FBVTtBQUMzQyxjQUFZLE9BQU8sU0FBUyxNQUFNLEVBQUU7QUFFcEMsTUFBSSxRQUFRLFNBQVMsUUFBUTtBQUMzQixVQUFNLE9BQU8sTUFBTSxRQUFRLFFBQVEsT0FBTyxJQUN0QyxRQUFRLFFBQ0wsSUFBSSxDQUFDLE1BQU8sRUFBRSxTQUFTLFNBQVMsRUFBRSxPQUFPLFdBQVcsT0FBTyxFQUFFLFFBQVEsUUFBUSxFQUFFLEVBQUUsTUFBTSxHQUFHLEVBQUUsSUFBSSxLQUFLLFVBQVUsR0FBSSxFQUNuSCxLQUFLLEVBQUUsSUFDVixPQUFPLFFBQVEsT0FBTztBQUMxQixVQUFNLFdBQVcsS0FBSyxFQUFFLE1BQU0sUUFBUSxNQUFNLFNBQVMsUUFBUSxTQUFTLFNBQVMsTUFBTSxHQUFHLENBQUM7QUFDekY7QUFBQSxFQUNGO0FBQ0EsTUFBSSxRQUFRLFNBQVMsYUFBYTtBQUNoQyxRQUFJLFFBQVEsU0FBUztBQUNuQixZQUFNLFdBQVcsS0FBSyxFQUFFLE1BQU0sYUFBYSxNQUFNLFFBQVEsU0FBUyxPQUFPLE1BQU0sTUFBTSxDQUFDO0FBQUEsSUFDeEY7QUFDQSxlQUFXQyxTQUFRLFFBQVEsY0FBYyxDQUFDLEdBQUc7QUFDM0MsWUFBTSxPQUFPO0FBQUEsUUFDWCxNQUFNO0FBQUEsUUFDTixRQUFRQSxNQUFLO0FBQUEsUUFDYixNQUFNQSxNQUFLLFNBQVM7QUFBQSxRQUNwQixNQUFNRCxXQUFVQyxNQUFLLFNBQVMsU0FBUztBQUFBLFFBQ3ZDLE9BQU9BLE1BQUssU0FBUztBQUFBLFFBQ3JCLFFBQVE7QUFBQSxRQUNSLFNBQVMsTUFBTTtBQUFBLE1BQ2pCO0FBQ0EsWUFBTSxXQUFXLEtBQUssSUFBSTtBQUMxQixZQUFNLFVBQVUsSUFBSUEsTUFBSyxJQUFJLElBQUk7QUFBQSxJQUNuQztBQUNBO0FBQUEsRUFDRjtBQUNBLE1BQUksUUFBUSxTQUFTLFFBQVE7QUFDM0IsVUFBTSxPQUFPLE1BQU0sVUFBVSxJQUFJLFFBQVEsWUFBWTtBQUNyRCxRQUFJLEtBQU0sTUFBSyxhQUFhLE9BQU8sUUFBUSxPQUFPO0FBQUEsRUFDcEQ7QUFDRjtBQUVBLFNBQVMsV0FBVyxPQUFPLE9BQU87QUFDaEMsUUFBTSxFQUFFLE1BQU0sYUFBYSxXQUFXLENBQUMsRUFBRSxJQUFJLE1BQU07QUFDbkQsYUFBVyxVQUFVLFVBQVU7QUFDN0IsVUFBTSxPQUFPLE1BQU0sVUFBVSxJQUFJLE1BQU07QUFDdkMsUUFBSSxLQUFNLE1BQUssU0FBUztBQUFBLEVBQzFCO0FBQ0EsTUFBSSxTQUFTLGFBQWEsYUFBYTtBQUNyQyxVQUFNLFdBQVcsS0FBSyxFQUFFLE1BQU0sV0FBVyxRQUFRLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDOUUsZ0JBQVksT0FBTztBQUFBLE1BQ2pCLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxFQUEwQyxXQUFXO0FBQUEsSUFDaEUsR0FBRyxNQUFNLEVBQUU7QUFBQSxFQUNiO0FBQ0Y7QUFFTyxTQUFTLFlBQVksUUFBUTtBQUNsQyxRQUFNLFVBQVUsV0FBVyxNQUFNO0FBQ2pDLFFBQU0sc0JBQXNCLElBQUk7QUFBQSxJQUM5QixPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLFFBQVE7QUFBQSxFQUMzRTtBQUVBLFFBQU0sUUFBUTtBQUFBLElBQ1osWUFBWSxDQUFDO0FBQUEsSUFDYixpQkFBaUIsQ0FBQztBQUFBLElBQ2xCLGlCQUFpQixDQUFDO0FBQUEsSUFDbEIsT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLElBQ1IsT0FBTyxXQUFXO0FBQUEsSUFDbEIsY0FBYyxDQUFDO0FBQUEsSUFDZixhQUFhLFdBQVc7QUFBQSxJQUN4QixvQkFBb0IsQ0FBQztBQUFBLElBQ3JCLGtCQUFrQjtBQUFBLElBQ2xCLGlCQUFpQjtBQUFBLElBQ2pCLGVBQWUsb0JBQUksSUFBSTtBQUFBLElBQ3ZCLFdBQVcsb0JBQUksSUFBSTtBQUFBLEVBQ3JCO0FBRUEsYUFBVyxTQUFTLFFBQVE7QUFDMUIsUUFBSSxNQUFNLFNBQVMsU0FBUztBQUMxQixtQkFBYSxNQUFNLE9BQU8sTUFBTSxLQUFLLEtBQUs7QUFDMUMsWUFBTSxVQUFXLE1BQU0sYUFBYSxNQUFNLEtBQUssS0FBSyxNQUFNLFdBQVc7QUFDckUsbUJBQWEsU0FBUyxNQUFNLEtBQUssS0FBSztBQUN0QyxVQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sRUFBRSxHQUFHO0FBQzFCLHFCQUFhLE1BQU0sYUFBYSxNQUFNLEtBQUssS0FBSztBQUNoRCxjQUFNLGdCQUFpQixNQUFNLG1CQUFtQixNQUFNLEtBQUssS0FBSyxNQUFNLFdBQVc7QUFDakYscUJBQWEsZUFBZSxNQUFNLEtBQUssS0FBSztBQUc1QyxZQUFJLE1BQU0sS0FBSyxlQUFlLFFBQVc7QUFDdkMsZ0JBQU0sbUJBQW1CLE1BQU0sS0FBSztBQUNwQyxnQkFBTSxrQkFBa0IsTUFBTSxLQUFLO0FBQUEsUUFDckM7QUFBQSxNQUNGO0FBQ0E7QUFBQSxJQUNGO0FBQ0EsUUFBSSxRQUFRLElBQUksTUFBTSxFQUFFLEVBQUc7QUFFM0IsWUFBUSxNQUFNLE1BQU07QUFBQSxNQUNsQixLQUFLO0FBQ0gsb0JBQVksT0FBTyxLQUFLO0FBQ3hCO0FBQUEsTUFDRixLQUFLLGFBQWE7QUFDaEIsY0FBTSxPQUFPLE1BQU0sVUFBVSxJQUFJLE1BQU0sS0FBSyxNQUFNO0FBQ2xELFlBQUksS0FBTSxRQUFPLE9BQU8sTUFBTSxNQUFNLE1BQU0sRUFBRSxNQUFNLFFBQVEsUUFBUSxLQUFLLE9BQU8sQ0FBQztBQUMvRTtBQUFBLE1BQ0Y7QUFBQSxNQUNBLEtBQUssYUFBYTtBQUNoQixjQUFNLE9BQU8sTUFBTSxXQUFXLEdBQUcsRUFBRTtBQUNuQyxZQUFJLE1BQU0sU0FBUyxZQUFhLE1BQUssY0FBYztBQUNuRCxZQUFJLE1BQU0sU0FBUyxVQUFVLEtBQUssV0FBVyxVQUFXLE1BQUssU0FBUztBQUN0RTtBQUFBLE1BQ0Y7QUFBQSxNQUNBLEtBQUs7QUFDSCxjQUFNLFFBQVEsTUFBTSxLQUFLO0FBQ3pCO0FBQUEsTUFDRixLQUFLO0FBQ0gsY0FBTSxTQUFTLE1BQU0sS0FBSztBQUMxQjtBQUFBLE1BQ0YsS0FBSztBQUNILGNBQU0sUUFBUSxNQUFNLEtBQUs7QUFDekI7QUFBQSxNQUNGLEtBQUs7QUFDSCxjQUFNLFFBQVEsTUFBTSxLQUFLO0FBQ3pCO0FBQUEsTUFDRixLQUFLO0FBQ0gsWUFBSSxDQUFDLG9CQUFvQixJQUFJLE1BQU0sRUFBRSxFQUFHLFlBQVcsT0FBTyxLQUFLO0FBQy9EO0FBQUEsTUFDRixLQUFLLFdBQVc7QUFDZCxjQUFNLEVBQUUsU0FBUyxVQUFVLFlBQVksSUFBSSxNQUFNO0FBQ2pELFlBQUksYUFBYSxVQUFhLGFBQWE7QUFDekMsZ0JBQU0sTUFBTSxXQUFXLE1BQU0sZ0JBQWdCLFFBQVEsUUFBUSxJQUFJO0FBQ2pFLGdCQUFNLE9BQU8sT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDNUQsZ0JBQU0sVUFBVSxPQUFPLElBQUksTUFBTSxnQkFBZ0IsTUFBTSxHQUFHLElBQUksQ0FBQztBQUMvRCxnQkFBTSxrQkFBa0I7QUFBQSxZQUN0QixFQUFFLE1BQU0sUUFBUSxTQUFTLG9CQUFvQixTQUFTLEVBQUUsYUFBYSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUMsRUFBRTtBQUFBLFlBQ3BHLEdBQUc7QUFBQSxVQUNMO0FBQ0EsZ0JBQU0sa0JBQWtCLENBQUMsTUFBTSxHQUFHLE9BQU87QUFBQSxRQUMzQyxPQUFPO0FBQ0wsZ0JBQU0sa0JBQWtCO0FBQUEsWUFDdEIsRUFBRSxNQUFNLFFBQVEsU0FBUztBQUFBLEVBQTJCLE9BQU8sR0FBRztBQUFBLFlBQzlELEVBQUUsTUFBTSxhQUFhLFNBQVMsd0NBQXdDO0FBQUEsVUFDeEU7QUFDQSxnQkFBTSxrQkFBa0IsQ0FBQyxNQUFNLElBQUk7QUFBQSxRQUNyQztBQUNBLGNBQU0sV0FBVyxLQUFLLEVBQUUsTUFBTSxXQUFXLFFBQVEsV0FBVyxNQUFNLFFBQVEsQ0FBQztBQUMzRSxjQUFNLG1CQUFtQjtBQUN6QjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLEtBQUs7QUFDSCxjQUFNLGFBQWEsQ0FBQztBQUNwQixjQUFNLGtCQUFrQixDQUFDO0FBQ3pCLGNBQU0sa0JBQWtCLENBQUM7QUFDekIsY0FBTSxZQUFZLG9CQUFJLElBQUk7QUFDMUIsY0FBTSxtQkFBbUI7QUFDekI7QUFBQSxNQUNGLEtBQUs7QUFDSCxjQUFNLGNBQWMsSUFBSSxNQUFNLEtBQUssSUFBSTtBQUN2QztBQUFBLE1BQ0YsS0FBSztBQUNILGNBQU0sV0FBVyxLQUFLLEVBQUUsTUFBTSxTQUFTLE1BQU0sTUFBTSxLQUFLLEtBQUssQ0FBQztBQUM5RDtBQUFBLE1BQ0YsS0FBSztBQUNILGNBQU0sV0FBVyxLQUFLLEVBQUUsTUFBTSxZQUFZLE1BQU0sTUFBTSxLQUFLLEtBQUssQ0FBQztBQUNqRTtBQUFBLE1BQ0YsS0FBSztBQUFBLE1BQ0wsS0FBSyxlQUFlO0FBQ2xCLG9CQUFZLE9BQU8sRUFBRSxNQUFNLFFBQVEsU0FBUyxNQUFNLEtBQUssS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUN2RSxjQUFNLFFBQVEsTUFBTSxLQUFLLEtBQUssTUFBTSxJQUFJLEVBQUUsT0FBTyxPQUFPO0FBQ3hELGNBQU0sbUJBQW1CLE1BQU0sT0FBTyxDQUFDLFNBQVMsMENBQTBDLEtBQUssSUFBSSxDQUFDO0FBQ3BHLFlBQUksaUJBQWlCLFFBQVE7QUFDM0IscUJBQVcsUUFBUSxpQkFBa0IsT0FBTSxXQUFXLEtBQUssRUFBRSxNQUFNLFVBQVUsTUFBTSxpQkFBaUIsS0FBSyxDQUFDO0FBQUEsUUFDNUcsT0FBTztBQUNMLGdCQUFNLFdBQVcsS0FBSyxFQUFFLE1BQU0sVUFBVSxNQUFNLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQztBQUFBLFFBQ2hFO0FBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGtCQUFrQixzQkFBc0IsTUFBTSxlQUFlO0FBQ25FLFNBQU87QUFDVDtBQUVPLFNBQVMsWUFBWSxPQUFPO0FBQ2pDLFFBQU0sVUFBVSxDQUFDO0FBQ2pCLFFBQU0sV0FBVyxRQUFRLENBQUMsTUFBTSxVQUFVO0FBQ3hDLFFBQUksS0FBSyxTQUFTLE9BQVEsU0FBUSxLQUFLLEVBQUUsTUFBTSxLQUFLLE1BQU0sU0FBUyxLQUFLLFNBQVMsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDO0FBQUEsRUFDakgsQ0FBQztBQUNELFNBQU87QUFDVDtBQUVPLFNBQVMsWUFBWSxPQUFPLE9BQU87QUFDeEMsUUFBTSxPQUFPLE1BQU0sV0FBVyxNQUFNLEtBQUs7QUFDekMsU0FBTztBQUFBLElBQ0wsTUFBTSxLQUFLO0FBQUEsSUFDWCxPQUFPLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxVQUFVO0FBQUEsRUFDcEY7QUFDRjtBQWpSQSxJQUVNLGdCQU9BLGlCQUNBO0FBVk47QUFBQTtBQUFBO0FBRUEsSUFBTSxpQkFBaUIsQ0FBQyxRQUFRLFFBQVEsU0FBUztBQU9qRCxJQUFNLGtCQUFrQjtBQUN4QixJQUFNLHlCQUF5QjtBQUFBO0FBQUE7OztBQ1YvQixTQUFTLFlBQUFDLGtCQUFnQjtBQUN6QixTQUFTLFNBQVMsT0FBTyxPQUFPLGVBQWUsU0FBUyxlQUFlO0FBRXZFLGVBQWUsWUFBWSxNQUFNO0FBQy9CLE1BQUksS0FBSyxTQUFTLFdBQVcsS0FBSyxRQUFRLFNBQVMsT0FBUSxRQUFPO0FBQ2xFLE1BQUk7QUFDRixVQUFNLE9BQU8sTUFBTUEsV0FBUyxLQUFLLE9BQU8sSUFBSTtBQUM1QyxXQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixRQUFRLEVBQUUsTUFBTSxVQUFVLFdBQVcsS0FBSyxPQUFPLFdBQVcsTUFBTSxLQUFLLFNBQVMsUUFBUSxFQUFFO0FBQUEsSUFDNUY7QUFBQSxFQUNGLFFBQVE7QUFDTixXQUFPLEVBQUUsTUFBTSxRQUFRLE1BQU0sdUJBQXVCLEtBQUssT0FBTyxJQUFJLElBQUk7QUFBQSxFQUMxRTtBQUNGO0FBRU8sU0FBUyxjQUFjLFNBQVM7QUFDckMsU0FBTyxRQUFRO0FBQUEsSUFDYixRQUFRO0FBQUEsTUFBSSxPQUFPLFlBQ2pCLE1BQU0sUUFBUSxRQUFRLE9BQU8sSUFDekIsRUFBRSxHQUFHLFNBQVMsU0FBUyxNQUFNLFFBQVEsSUFBSSxRQUFRLFFBQVEsSUFBSSxXQUFXLENBQUMsRUFBRSxJQUMzRTtBQUFBLElBQ047QUFBQSxFQUNGO0FBQ0Y7QUFNQSxlQUFzQixlQUFlLEVBQUUsU0FBUyxXQUFXLE1BQU0sUUFBUSxRQUFRLFNBQVMsR0FBRztBQUMzRixRQUFNLE1BQU0sTUFBTTtBQUFBLElBQ2hCLE1BQU07QUFBQSxNQUNKLE9BQU87QUFBQSxNQUNQLEdBQUksTUFBTSxVQUFVLEVBQUUsUUFBUSxLQUFLLE9BQU87QUFBQSxNQUMxQyxHQUFJLE1BQU0sV0FBVyxFQUFFLFNBQVMsS0FBSyxRQUFRO0FBQUEsSUFDL0MsQ0FBQztBQUFBLEVBQ0gsRUFBRTtBQUFBLElBQ0EsU0FBUyxDQUFDLEdBQUcsUUFBUSxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsUUFBUSxHQUFHLEVBQUUsTUFBTSxRQUFRLFNBQVMsT0FBTyxDQUFDO0FBQUEsSUFDMUYsT0FBTyxDQUFDO0FBQUEsSUFDUixhQUFhO0FBQUEsSUFDYixHQUFJLFlBQVksRUFBRSxRQUFRLFNBQVM7QUFBQSxFQUNyQyxDQUFDO0FBQ0QsTUFBSSxRQUFRLFFBQVMsT0FBTSxJQUFJLE1BQU0sc0JBQXNCO0FBQzNELFNBQU8sUUFBUSxJQUFJLGNBQWMsV0FBVyxFQUFFLEVBQUUsS0FBSztBQUN2RDtBQUlPLFNBQVMsZ0JBQWdCLFVBQVU7QUFDeEMsUUFBTSxRQUFRLFNBQVM7QUFDdkIsUUFBTSxnQkFBZ0IsU0FBUyxNQUFNLGFBQWEsRUFBRSxDQUFDLEtBQUssU0FBUyxNQUFNLFdBQVcsRUFBRSxDQUFDO0FBQ3ZGLE1BQUksa0JBQWtCLE9BQVcsUUFBTyxFQUFFLE9BQU8sYUFBYSxTQUFTLEdBQUcsTUFBTTtBQUNoRixRQUFNLFlBQVksY0FBYyxNQUFNLGVBQWUsS0FBSyxDQUFDLEdBQUc7QUFDOUQsTUFBSSxhQUFhLEVBQUcsUUFBTyxFQUFFLE9BQU8sYUFBYSxTQUFTLEdBQUcsTUFBTTtBQUNuRSxTQUFPLEVBQUUsT0FBTyxXQUFXLFNBQVMsS0FBSyxJQUFJLEdBQUcsUUFBUSxHQUFHLE1BQU07QUFDbkU7QUFFQSxlQUFzQixjQUFjLEVBQUUsTUFBTSxXQUFXLEtBQUssR0FBRztBQUM3RCxRQUFNLE1BQU0sTUFBTTtBQUFBLElBQ2hCLE1BQU07QUFBQSxNQUNKLE9BQU87QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLEdBQUksTUFBTSxVQUFVLEVBQUUsUUFBUSxLQUFLLE9BQU87QUFBQSxNQUMxQyxHQUFJLE1BQU0sV0FBVyxFQUFFLFNBQVMsS0FBSyxRQUFRO0FBQUEsSUFDL0MsQ0FBQztBQUFBLEVBQ0gsRUFBRSxLQUFLLE1BQU0sR0FBRyxHQUFLLENBQUM7QUFDdEIsU0FBTyxRQUFRLElBQUksY0FBYyxXQUFXLEVBQUUsRUFBRSxLQUFLO0FBQ3ZEO0FBRUEsZUFBc0IsUUFBUSxFQUFFLFNBQVMsT0FBTyxVQUFVLFdBQVcsUUFBUSxNQUFNLFFBQVEsUUFBUSxVQUFVLFVBQVUsU0FBUyxHQUFHO0FBQ2pJLFFBQU0sWUFBWSxDQUFDO0FBQ25CLE1BQUksWUFBWTtBQUNoQixNQUFJLFlBQVk7QUFDaEIsTUFBSSxVQUFVO0FBSWQsTUFBSSxtQkFBbUI7QUFDdkIsTUFBSSxtQkFBbUI7QUFFdkIsUUFBTSxXQUFXLElBQUksZ0JBQWdCO0FBQ3JDLFFBQU0sY0FBYyxNQUFNLFNBQVMsTUFBTTtBQUN6QyxNQUFJLFFBQVEsUUFBUyxVQUFTLE1BQU07QUFBQSxNQUMvQixTQUFRLGlCQUFpQixTQUFTLGFBQWEsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUVsRSxNQUFJLFdBQVc7QUFDZixRQUFNLE1BQU0sTUFBTTtBQUNoQixpQkFBYSxRQUFRO0FBQ3JCLGVBQVcsV0FBVyxNQUFNO0FBQzFCLGdCQUFVO0FBQ1YsZUFBUyxNQUFNO0FBQUEsSUFDakIsR0FBRyxPQUFPO0FBQUEsRUFDWjtBQUVBLFFBQU0sU0FBUyxDQUFDLFVBQVU7QUFDeEIsUUFBSSxNQUFNLFNBQVMsa0JBQWtCO0FBS25DLG1CQUFhLFFBQVE7QUFDckIsZUFBUyxjQUFjLE1BQU07QUFDN0IsaUJBQVcsS0FBSztBQUNoQjtBQUFBLElBQ0Y7QUFDQSxRQUFJO0FBQ0osUUFBSSxNQUFNLFNBQVMsV0FBVztBQUM1QixtQkFBYSxNQUFNO0FBQUEsSUFDckIsV0FBVyxNQUFNLFNBQVMsb0JBQW9CO0FBQzVDLGdCQUFVLEtBQUssRUFBRSxNQUFNLGFBQWEsU0FBUyxXQUFXLFlBQVksTUFBTSxNQUFNLENBQUM7QUFDakYsa0JBQVk7QUFBQSxJQUNkLFdBQVcsTUFBTSxTQUFTLGlCQUFpQjtBQUN6QyxnQkFBVSxLQUFLLEVBQUUsTUFBTSxRQUFRLGNBQWMsTUFBTSxLQUFLLElBQUksU0FBUyxLQUFLLFVBQVUsTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUFBLElBQ3JHLFdBQVcsTUFBTSxTQUFTLGNBQWM7QUFDdEMsZ0JBQVUsS0FBSyxFQUFFLE1BQU0sUUFBUSxjQUFjLE1BQU0sS0FBSyxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsT0FBTyxNQUFNLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFBQSxJQUMvRyxXQUFXLE1BQU0sU0FBUyxTQUFTO0FBQ2pDLGtCQUFZLE1BQU07QUFDbEIsWUFBTSxTQUFTLE1BQU0sT0FBTyxnQkFBZ0I7QUFDNUMseUJBQW1CLEtBQUssSUFBSSxHQUFHLFNBQVMsZ0JBQWdCO0FBQ3hELHlCQUFtQjtBQUFBLElBQ3JCO0FBQ0EsZUFBVyxLQUFLO0FBQUEsRUFDbEI7QUFFQSxRQUFNLE9BQU8sUUFBUTtBQUNyQixRQUFNLE9BQU87QUFBQSxJQUNYO0FBQUEsTUFDRSxFQUFFLFNBQVMsUUFBUSxjQUFjLFFBQVEsT0FBTyxPQUFPLGNBQWMsR0FBRyxPQUFPO0FBQUEsTUFDL0UsQ0FBQyxRQUNDLE1BQU07QUFBQSxRQUNKLE9BQU87QUFBQSxRQUNQLEdBQUksVUFBVSxFQUFFLE9BQU87QUFBQSxRQUN2QixHQUFJLE1BQU0sVUFBVSxFQUFFLFFBQVEsS0FBSyxPQUFPO0FBQUEsUUFDMUMsR0FBSSxNQUFNLFdBQVcsRUFBRSxTQUFTLEtBQUssUUFBUTtBQUFBLE1BQy9DLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxhQUFhLFNBQVMsT0FBTyxDQUFDO0FBQUEsSUFDL0M7QUFBQSxFQUNGO0FBRUEsUUFBTSxrQkFBa0IsTUFBTTtBQUM1QixVQUFNLFdBQVcsQ0FBQyxHQUFHLFNBQVM7QUFDOUIsUUFBSSxVQUFXLFVBQVMsS0FBSyxFQUFFLE1BQU0sYUFBYSxTQUFTLFVBQVUsQ0FBQztBQUN0RSxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0YsVUFBTSxNQUFNLE1BQU0sS0FBSyxFQUFFLFNBQVMsTUFBTSxjQUFjLE9BQU8sR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQzNFLFVBQU0sY0FBYyxDQUFDLENBQUMsUUFBUSxXQUFXO0FBQ3pDLFFBQUksYUFBYTtBQUNmLGFBQU8sRUFBRSxVQUFVLGdCQUFnQixHQUFHLE9BQU8sV0FBVyxrQkFBa0IsYUFBYSxRQUFRO0FBQUEsSUFDakc7QUFDQSxVQUFNLFdBQVcsSUFBSSxRQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxRQUFRLEVBQUUsTUFBTSxJQUFJO0FBQzFFLFdBQU8sRUFBRSxVQUFVLE9BQU8sSUFBSSxTQUFTLE1BQU0sa0JBQWtCLGFBQWEsT0FBTyxTQUFTLE1BQU07QUFBQSxFQUNwRyxTQUFTLEtBQUs7QUFDWixRQUFJLElBQUksU0FBUyxnQkFBZ0IsU0FBUyxPQUFPLFNBQVM7QUFDeEQsYUFBTyxFQUFFLFVBQVUsZ0JBQWdCLEdBQUcsT0FBTyxXQUFXLGtCQUFrQixhQUFhLE1BQU0sUUFBUTtBQUFBLElBQ3ZHO0FBR0EsV0FBTyxFQUFFLFVBQVUsZ0JBQWdCLEdBQUcsT0FBTyxXQUFXLGtCQUFrQixhQUFhLE1BQU0sU0FBUyxPQUFPLE9BQU8sT0FBTyxJQUFJLFdBQVcsR0FBRyxFQUFFO0FBQUEsRUFDakosVUFBRTtBQUNBLGlCQUFhLFFBQVE7QUFDckIsWUFBUSxvQkFBb0IsU0FBUyxXQUFXO0FBQUEsRUFDbEQ7QUFDRjtBQXJLQSxJQTRCTTtBQTVCTjtBQUFBO0FBNEJBLElBQU0sV0FBVztBQUFBO0FBQUE7OztBQzVCVixTQUFTLGFBQWEsTUFBTSxPQUFPLENBQUMsR0FBRztBQUM1QyxRQUFNLFlBQVksS0FBSyxRQUFRLEtBQUssV0FBVyxLQUFLLFdBQVcsS0FBSyxPQUFPLEtBQUs7QUFDaEYsTUFBSSxPQUFPLGNBQWMsWUFBWSxVQUFXLFFBQU87QUFDdkQsUUFBTSxNQUFNLEtBQUssVUFBVSxJQUFJO0FBQy9CLE1BQUksQ0FBQyxPQUFPLFFBQVEsS0FBTSxRQUFPO0FBQ2pDLFNBQU8sSUFBSSxTQUFTLEtBQUssSUFBSSxNQUFNLEdBQUcsRUFBRSxJQUFJLFdBQU07QUFDcEQ7QUFFTyxTQUFTLGlCQUFpQjtBQUMvQixTQUFPO0FBQUEsSUFDTCxhQUFhO0FBQUEsSUFDYixTQUFTLENBQUM7QUFBQSxJQUNWLFNBQVM7QUFBQSxJQUNULE1BQU0sTUFBTSxNQUFNO0FBQ2hCLFdBQUssVUFBVTtBQUFBLFFBQ2IsUUFBUSxLQUFLLGFBQWEsTUFBTTtBQUFBLFFBQ2hDO0FBQUEsUUFDQSxPQUFPLGFBQWEsTUFBTSxJQUFJO0FBQUEsUUFDOUIsUUFBUTtBQUFBLFFBQ1IsV0FBVyxLQUFLLElBQUk7QUFBQSxNQUN0QjtBQUFBLElBQ0Y7QUFBQSxJQUNBLE1BQU0sUUFBUTtBQUNaLFVBQUksS0FBSyxRQUFTLFFBQU8sT0FBTyxLQUFLLFNBQVMsTUFBTTtBQUFBLElBQ3REO0FBQUEsSUFDQSxLQUFLLFNBQVMsQ0FBQyxHQUFHO0FBQ2hCLFVBQUksQ0FBQyxLQUFLLFFBQVM7QUFDbkIsYUFBTyxPQUFPLEtBQUssU0FBUyxRQUFRO0FBQUEsUUFDbEMsWUFBWSxLQUFLLElBQUksSUFBSSxLQUFLLFFBQVE7QUFBQSxNQUN4QyxDQUFDO0FBQ0QsYUFBTyxLQUFLLFFBQVE7QUFDcEIsVUFBSSxLQUFLLFFBQVEsWUFBWSxTQUFTLEtBQVE7QUFDNUMsYUFBSyxRQUFRLGFBQWEsS0FBSyxRQUFRLFdBQVcsTUFBTSxHQUFHLEdBQU0sSUFBSTtBQUFBLE1BQ3ZFO0FBQ0EsV0FBSyxRQUFRLEtBQUssS0FBSyxPQUFPO0FBQzlCLFdBQUssVUFBVTtBQUFBLElBQ2pCO0FBQUEsRUFDRjtBQUNGO0FBRU8sU0FBUyxTQUFTLFVBQVUsTUFBTSxJQUFJO0FBQzNDLFNBQU8sT0FBTyxTQUFTO0FBQ3JCLGFBQVMsTUFBTSxNQUFNLElBQUk7QUFDekIsUUFBSTtBQUNGLFlBQU0sU0FBUyxNQUFNLEdBQUcsSUFBSTtBQUM1QixVQUFJLENBQUMsU0FBUyxTQUFTLGNBQWMsV0FBVyxRQUFXO0FBQ3pELGlCQUFTLE1BQU07QUFBQSxVQUNiLFlBQVksT0FBTyxXQUFXLFdBQVcsU0FBUyxLQUFLLFVBQVUsUUFBUSxNQUFNLENBQUM7QUFBQSxRQUNsRixDQUFDO0FBQUEsTUFDSDtBQUNBLGVBQVMsS0FBSztBQUNkLGFBQU87QUFBQSxJQUNULFNBQVMsS0FBSztBQUNaLGVBQVMsS0FBSyxFQUFFLFFBQVEsU0FBUyxPQUFPLE9BQU8sSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3BFLFlBQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUNGO0FBekRBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSxTQUFTLFlBQUFDLGtCQUFnQjtBQUN6QixTQUFTLFdBQUFDLGdCQUFlO0FBS3hCLFNBQVMsU0FBUyxRQUFRO0FBQ3hCLFFBQU0sTUFBTSxLQUFLLElBQUksT0FBTyxRQUFRLEdBQUk7QUFDeEMsV0FBUyxJQUFJLEdBQUcsSUFBSSxLQUFLLEtBQUs7QUFDNUIsUUFBSSxPQUFPLENBQUMsTUFBTSxFQUFHLFFBQU87QUFBQSxFQUM5QjtBQUNBLFNBQU87QUFDVDtBQUVPLFNBQVMsV0FBVyxFQUFFLEtBQUssVUFBVSxRQUFRLEdBQUc7QUFDckQsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sYUFBYTtBQUFBLElBQ2IsUUFBUTtBQUFBLE1BQ04sTUFBTSxFQUFFLE1BQU0sVUFBVSxhQUFhLDJEQUEyRDtBQUFBLE1BQ2hHLFFBQVEsRUFBRSxNQUFNLFVBQVUsYUFBYSxnQ0FBZ0MsVUFBVSxLQUFLO0FBQUEsTUFDdEYsT0FBTyxFQUFFLE1BQU0sVUFBVSxhQUFhLHVCQUF1QixVQUFVLEtBQUs7QUFBQSxJQUM5RTtBQUFBLElBQ0EsU0FBUyxPQUFPLEVBQUUsTUFBTSxTQUFTLEdBQUcsUUFBUUMsV0FBVSxNQUFNO0FBQzFELFlBQU0sT0FBT0QsU0FBUSxLQUFLLElBQUk7QUFDOUIsZUFBUyxNQUFNLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDOUIsWUFBTSxNQUFNLE1BQU1ELFdBQVMsSUFBSTtBQUMvQixVQUFJLFNBQVMsR0FBRyxFQUFHLE9BQU0sSUFBSSxNQUFNLEdBQUcsSUFBSSxtQkFBbUI7QUFDN0QsWUFBTSxRQUFRLElBQUksU0FBUyxPQUFPLEVBQUUsTUFBTSxJQUFJO0FBRTlDLFlBQU0sUUFBUSxLQUFLLElBQUksR0FBRyxTQUFTLENBQUM7QUFDcEMsWUFBTSxRQUFRLEtBQUssSUFBSSxPQUFPRSxVQUFTO0FBQ3ZDLFlBQU0sU0FBUyxNQUFNLE1BQU0sT0FBTyxRQUFRLEtBQUs7QUFDL0MsWUFBTSxXQUFXLE9BQ2QsSUFBSSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsSUFBSSxDQUFDLElBQUssS0FBSyxTQUFTLGtCQUFrQixLQUFLLE1BQU0sR0FBRyxlQUFlLElBQUksV0FBTSxJQUFJLEVBQUUsRUFDbkgsS0FBSyxJQUFJO0FBRVosZUFBUyxNQUFNLEVBQUUsWUFBWSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDaEQsWUFBTSxTQUFTLEVBQUUsU0FBUyxVQUFVLFlBQVksTUFBTSxPQUFPO0FBQzdELFVBQUksUUFBUSxRQUFRLE1BQU0sUUFBUTtBQUNoQyxlQUFPLE9BQU8saUJBQWlCLFFBQVEsQ0FBQyxJQUFJLFFBQVEsT0FBTyxNQUFNLE9BQU8sTUFBTSxNQUFNO0FBQUEsTUFDdEY7QUFDQSxZQUFNLFVBQVUsUUFBUSxNQUFNLElBQUk7QUFDbEMsVUFBSSxRQUFRLE9BQVEsUUFBTyx5QkFBeUI7QUFDcEQsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBQ0Y7QUEvQ0EsSUFHTUEsWUFDQTtBQUpOO0FBQUE7QUFHQSxJQUFNQSxhQUFZO0FBQ2xCLElBQU0sa0JBQWtCO0FBQUE7QUFBQTs7O0FDSnhCLFNBQVMsdUJBQXVCO0FBRXpCLFNBQVMsU0FBUyxNQUFNLFNBQVMsU0FBUyxlQUFlLEdBQUc7QUFDakUsUUFBTSxRQUFRLGdCQUFnQixNQUFNLE1BQU0sU0FBUyxTQUFTLElBQUksSUFBSSxFQUFFLFNBQVMsYUFBYSxDQUFDO0FBQzdGLE1BQUksWUFBWTtBQUNoQixNQUFJLFlBQVk7QUFDaEIsUUFBTSxRQUFRLE1BQU0sTUFBTSxJQUFJLENBQUMsT0FBTztBQUFBLElBQ3BDLFVBQVUsRUFBRTtBQUFBLElBQ1osVUFBVSxFQUFFO0FBQUEsSUFDWixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsU0FBUztBQUMzQixZQUFNLE9BQU8sS0FBSyxDQUFDLE1BQU0sTUFBTSxXQUFXLEtBQUssQ0FBQyxNQUFNLE1BQU0sUUFBUTtBQUNwRSxVQUFJLFNBQVMsTUFBTztBQUNwQixVQUFJLFNBQVMsU0FBVTtBQUN2QixhQUFPLEVBQUUsTUFBTSxNQUFNLEtBQUssTUFBTSxDQUFDLEVBQUU7QUFBQSxJQUNyQyxDQUFDO0FBQUEsRUFDSCxFQUFFO0FBQ0YsU0FBTyxFQUFFLE1BQU0sT0FBTyxXQUFXLFVBQVU7QUFDN0M7QUFqQkE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLFNBQVMsU0FBQUMsUUFBTyxZQUFBQyxZQUFVLGFBQUFDLGtCQUFpQjtBQUMzQyxTQUFTLFdBQUFDLFVBQVMsV0FBQUMsZ0JBQWU7QUFHMUIsU0FBUyxZQUFZLEVBQUUsS0FBSyxVQUFVLFFBQVEsR0FBRztBQUN0RCxTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixhQUFhO0FBQUEsSUFDYixRQUFRO0FBQUEsTUFDTixNQUFNLEVBQUUsTUFBTSxVQUFVLGFBQWEsMkRBQTJEO0FBQUEsTUFDaEcsU0FBUyxFQUFFLE1BQU0sVUFBVSxhQUFhLGlDQUFpQztBQUFBLElBQzNFO0FBQUEsSUFDQSxTQUFTLE9BQU8sRUFBRSxNQUFNLFFBQVEsTUFBTTtBQUNwQyxZQUFNLE9BQU9BLFNBQVEsS0FBSyxJQUFJO0FBQzlCLGVBQVMsTUFBTSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQzlCLFlBQU1KLE9BQU1HLFNBQVEsSUFBSSxHQUFHLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDOUMsVUFBSSxTQUFTO0FBQ2IsVUFBSTtBQUNGLGlCQUFTLE1BQU1GLFdBQVMsTUFBTSxPQUFPO0FBQUEsTUFDdkMsUUFBUTtBQUFBLE1BQUM7QUFFVCxVQUFJLFdBQVcsU0FBUztBQUN0QixlQUFPLEVBQUUsSUFBSSxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sd0NBQXdDO0FBQUEsTUFDMUY7QUFDQSxZQUFNQyxXQUFVLE1BQU0sU0FBUyxPQUFPO0FBRXRDLFlBQU0sU0FBUyxFQUFFLElBQUksTUFBTSxLQUFLO0FBQ2hDLFVBQUksV0FBVyxNQUFNO0FBQ25CLGNBQU0sT0FBTyxTQUFTLE1BQU0sUUFBUSxPQUFPO0FBQzNDLGlCQUFTLE1BQU0sRUFBRSxNQUFNLFFBQVEsRUFBRSxNQUFNLE1BQU0sUUFBUSxPQUFPLFFBQVEsRUFBRSxDQUFDO0FBQ3ZFLGVBQU8sWUFBWSxLQUFLO0FBQ3hCLGVBQU8sWUFBWSxLQUFLO0FBQUEsTUFDMUIsT0FBTztBQUNMLGNBQU0sT0FBTyxTQUFTLE1BQU0sSUFBSSxPQUFPO0FBQ3ZDLGlCQUFTLE1BQU0sRUFBRSxNQUFNLFFBQVEsRUFBRSxNQUFNLE1BQU0sUUFBUSxJQUFJLE9BQU8sUUFBUSxHQUFHLFNBQVMsS0FBSyxDQUFDO0FBQzFGLGVBQU8sWUFBWSxLQUFLO0FBQ3hCLGVBQU8sVUFBVTtBQUFBLE1BQ25CO0FBQ0EsWUFBTSxVQUFVLFFBQVEsTUFBTSxJQUFJO0FBQ2xDLFVBQUksUUFBUSxPQUFRLFFBQU8seUJBQXlCO0FBQ3BELGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBM0NBO0FBQUE7QUFFQTtBQUFBO0FBQUE7OztBQ0ZBLFNBQVMsWUFBQUcsWUFBVSxhQUFBQyxrQkFBaUI7QUFDcEMsU0FBUyxXQUFBQyxnQkFBZTtBQVV4QixTQUFTLE9BQU8sU0FBUyxLQUFLLE1BQU07QUFDbEMsTUFBSSxRQUFRLFFBQVEsUUFBUSxHQUFHO0FBQy9CLE1BQUksVUFBVSxJQUFJO0FBQ2hCLFFBQUksUUFBUSxRQUFRLEtBQUssUUFBUSxDQUFDLE1BQU0sSUFBSTtBQUMxQyxZQUFNLElBQUksTUFBTSxvQ0FBb0MsSUFBSSxzREFBc0Q7QUFBQSxJQUNoSDtBQUNBLFdBQU8sRUFBRSxPQUFPLFFBQVEsSUFBSSxRQUFRLFFBQVE7QUFBQSxFQUM5QztBQUVBLFFBQU0sZ0JBQWdCLFVBQVUsT0FBTztBQUN2QyxRQUFNLFlBQVksVUFBVSxHQUFHO0FBQy9CLFVBQVEsY0FBYyxRQUFRLFNBQVM7QUFDdkMsTUFBSSxVQUFVLEdBQUksT0FBTSxJQUFJLE1BQU0sdUJBQXVCLElBQUksRUFBRTtBQUMvRCxNQUFJLGNBQWMsUUFBUSxXQUFXLFFBQVEsQ0FBQyxNQUFNLElBQUk7QUFDdEQsVUFBTSxJQUFJLE1BQU0sb0NBQW9DLElBQUksc0RBQXNEO0FBQUEsRUFDaEg7QUFDQSxTQUFPLEVBQUUsT0FBTyxRQUFRLFVBQVUsUUFBUSxTQUFTLGNBQWM7QUFDbkU7QUFFTyxTQUFTLFdBQVcsRUFBRSxLQUFLLFVBQVUsUUFBUSxHQUFHO0FBQ3JELFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLGFBQWE7QUFBQSxJQUNiLFFBQVE7QUFBQSxNQUNOLE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSwyREFBMkQ7QUFBQSxNQUNoRyxTQUFTLEVBQUUsTUFBTSxVQUFVLGFBQWEsb0RBQW9EO0FBQUEsTUFDNUYsU0FBUyxFQUFFLE1BQU0sVUFBVSxhQUFhLG1CQUFtQjtBQUFBLE1BQzNELFlBQVksRUFBRSxNQUFNLFdBQVcsYUFBYSw0QkFBNEIsVUFBVSxLQUFLO0FBQUEsSUFDekY7QUFBQSxJQUNBLFNBQVMsT0FBTyxFQUFFLE1BQU0sU0FBUyxTQUFTLFdBQVcsTUFBTTtBQUN6RCxZQUFNLE9BQU9BLFNBQVEsS0FBSyxJQUFJO0FBQzlCLGVBQVMsTUFBTSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQzlCLFlBQU0sU0FBUyxNQUFNRixXQUFTLE1BQU0sT0FBTztBQUUzQyxVQUFJO0FBQ0osVUFBSSxZQUFZO0FBQ2QsWUFBSSxDQUFDLE9BQU8sU0FBUyxPQUFPLEVBQUcsT0FBTSxJQUFJLE1BQU0sdUJBQXVCLElBQUksRUFBRTtBQUM1RSxnQkFBUSxPQUFPLE1BQU0sT0FBTyxFQUFFLEtBQUssT0FBTztBQUFBLE1BQzVDLE9BQU87QUFDTCxjQUFNLEVBQUUsT0FBTyxRQUFRLFFBQVEsSUFBSSxPQUFPLFFBQVEsU0FBUyxJQUFJO0FBQy9ELGdCQUFRLFFBQVEsTUFBTSxHQUFHLEtBQUssSUFBSSxVQUFVLFFBQVEsTUFBTSxRQUFRLE1BQU07QUFBQSxNQUMxRTtBQUVBLFlBQU1DLFdBQVUsTUFBTSxPQUFPLE9BQU87QUFDcEMsWUFBTSxPQUFPLFNBQVMsTUFBTSxRQUFRLEtBQUs7QUFDekMsZUFBUyxNQUFNLEVBQUUsTUFBTSxRQUFRLEVBQUUsTUFBTSxNQUFNLFFBQVEsTUFBTSxFQUFFLENBQUM7QUFFOUQsWUFBTSxTQUFTLEVBQUUsSUFBSSxNQUFNLE1BQU0sV0FBVyxLQUFLLFdBQVcsV0FBVyxLQUFLLFVBQVU7QUFDdEYsWUFBTSxVQUFVLFFBQVEsTUFBTSxJQUFJO0FBQ2xDLFVBQUksUUFBUSxPQUFRLFFBQU8seUJBQXlCO0FBQ3BELGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBaEVBLElBSU07QUFKTjtBQUFBO0FBRUE7QUFFQSxJQUFNLFlBQVksQ0FBQyxNQUNqQixFQUNHLFFBQVEsVUFBVSxFQUFFLEVBQ3BCLFFBQVEsU0FBUyxHQUFHLEVBQ3BCLFFBQVEsU0FBUyxHQUFHLEVBQ3BCLFFBQVEsU0FBUyxHQUFHO0FBQUE7QUFBQTs7O0FDVHpCLFNBQVMsWUFBWTtBQUlyQixTQUFTLE9BQU8sTUFBTTtBQUNwQixNQUFJLEtBQUssVUFBVSxpQkFBa0IsUUFBTztBQUM1QyxTQUFPLEtBQUssTUFBTSxHQUFHLGdCQUFnQixJQUFJO0FBQUEsdUJBQTBCLGdCQUFnQjtBQUNyRjtBQUVPLFNBQVMsV0FBVyxFQUFFLEtBQUssS0FBSyxVQUFVLFFBQVEsUUFBQUUsUUFBTyxHQUFHO0FBQ2pFLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLGFBQWE7QUFBQSxJQUNiLFFBQVE7QUFBQSxNQUNOLFNBQVMsRUFBRSxNQUFNLFVBQVUsYUFBYSxxQkFBcUI7QUFBQSxNQUM3RCxTQUFTLEVBQUUsTUFBTSxVQUFVLGFBQWEsbUdBQW1HLFVBQVUsS0FBSztBQUFBLE1BQzFKLFlBQVksRUFBRSxNQUFNLFdBQVcsYUFBYSwyREFBMkQsVUFBVSxLQUFLO0FBQUEsTUFDdEgsYUFBYSxFQUFFLE1BQU0sVUFBVSxhQUFhLG1JQUFtSSxVQUFVLEtBQUs7QUFBQSxJQUNoTTtBQUFBLElBQ0EsU0FBUyxDQUFDLEVBQUUsU0FBUyxTQUFTLFlBQVksWUFBWSxNQUFNO0FBQzFELFVBQUksY0FBY0EsU0FBUTtBQUN4QixpQkFBUyxNQUFNLEVBQUUsT0FBTyxlQUFlLFNBQVMsWUFBWSxLQUFLLENBQUM7QUFDbEUsY0FBTSxFQUFFLEdBQUcsSUFBSUEsUUFBTyxNQUFNLFNBQVMsRUFBRSxLQUFLLEtBQUssWUFBWSxDQUFDO0FBQzlELGVBQU8sRUFBRSxTQUFTLElBQUksUUFBUSxVQUFVO0FBQUEsTUFDMUM7QUFDQSxhQUFPLElBQUksUUFBUSxDQUFDQyxhQUFZO0FBQzlCLGlCQUFTLE1BQU0sRUFBRSxPQUFPLFFBQVEsQ0FBQztBQUNqQyxjQUFNLFFBQVE7QUFBQSxVQUNaO0FBQUEsVUFDQTtBQUFBLFlBQ0U7QUFBQSxZQUNBLFNBQVMsV0FBVztBQUFBLFlBQ3BCLFdBQVcsS0FBSyxPQUFPO0FBQUEsWUFDdkIsS0FBSyxFQUFFLEdBQUcsUUFBUSxLQUFLLEdBQUcsS0FBSyxhQUFhLEtBQUssVUFBVSxJQUFJO0FBQUEsVUFDakU7QUFBQSxVQUNBLENBQUMsS0FBSyxRQUFRLFdBQVc7QUFDdkIsa0JBQU0sV0FBVyxNQUFPLE9BQU8sSUFBSSxTQUFTLFdBQVcsSUFBSSxPQUFPLElBQUs7QUFDdkUsa0JBQU0sS0FBSyxXQUFXO0FBQ3RCLGtCQUFNLFdBQVcsQ0FBQyxDQUFDLEtBQUssVUFBVSxJQUFJLFFBQVEsUUFBUSxDQUFDLFFBQVE7QUFDL0QscUJBQVMsTUFBTSxFQUFFLFlBQVksQ0FBQyxRQUFRLE1BQU0sRUFBRSxPQUFPLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO0FBQzFFLFlBQUFBLFNBQVE7QUFBQSxjQUNOLFFBQVEsT0FBTyxVQUFVLEVBQUU7QUFBQSxjQUMzQixRQUFRLE9BQU8sVUFBVSxFQUFFO0FBQUEsY0FDM0I7QUFBQSxjQUNBLEdBQUksWUFBWTtBQUFBLGdCQUNkLFVBQVU7QUFBQSxnQkFDVixNQUFNLGlCQUFpQixFQUFFO0FBQUEsY0FDM0I7QUFBQSxZQUNGLENBQUM7QUFBQSxVQUNIO0FBQUEsUUFDRjtBQUNBLFlBQUksUUFBUTtBQUNWLGNBQUksT0FBTyxTQUFTO0FBQ2xCLGtCQUFNLEtBQUs7QUFDWDtBQUFBLFVBQ0Y7QUFDQSxpQkFBTyxpQkFBaUIsU0FBUyxNQUFNLE1BQU0sS0FBSyxHQUFHLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFBQSxRQUNyRTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0Y7QUE3REEsSUFFTTtBQUZOO0FBQUE7QUFFQSxJQUFNLG1CQUFtQjtBQUFBO0FBQUE7OztBQ0Z6QixTQUFTLFlBQUFDLGlCQUFnQjtBQUN6QixPQUFPLFFBQVE7QUFJZixTQUFTLFlBQVksU0FBUyxLQUFLO0FBQ2pDLFNBQU8sSUFBSSxRQUFRLENBQUNDLGFBQVk7QUFDOUIsVUFBTSxPQUFPLENBQUMsV0FBVyxZQUFZLFVBQVUsU0FBUyxVQUFVLHVCQUF1QixVQUFVLGFBQWE7QUFDaEgsSUFBQUQsVUFBUyxNQUFNLE1BQU0sRUFBRSxLQUFLLFdBQVcsS0FBSyxPQUFPLEtBQUssR0FBRyxDQUFDLEtBQUssV0FBVztBQUMxRSxVQUFJLE9BQU8sSUFBSSxTQUFTLEVBQUcsQ0FBQUMsU0FBUSxJQUFJO0FBQUEsVUFDbEMsQ0FBQUEsU0FBUSxTQUFTLE9BQU8sTUFBTSxJQUFJLEVBQUUsT0FBTyxPQUFPLElBQUksQ0FBQyxDQUFDO0FBQUEsSUFDL0QsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIO0FBRU8sU0FBUyxXQUFXLEVBQUUsS0FBSyxTQUFTLEdBQUc7QUFDNUMsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sYUFBYTtBQUFBLElBQ2IsUUFBUTtBQUFBLE1BQ04sU0FBUyxFQUFFLE1BQU0sVUFBVSxhQUFhLGlDQUFpQztBQUFBLE1BQ3pFLFlBQVksRUFBRSxNQUFNLFVBQVUsYUFBYSxzQ0FBc0MsVUFBVSxLQUFLO0FBQUEsSUFDbEc7QUFBQSxJQUNBLFNBQVMsT0FBTyxFQUFFLFNBQVMsYUFBYSxZQUFZLE1BQU07QUFDeEQsZUFBUyxNQUFNLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFDakMsVUFBSSxRQUFRLE1BQU0sWUFBWSxTQUFTLEdBQUc7QUFDMUMsVUFBSSxVQUFVLE1BQU07QUFDbEIsZ0JBQVEsTUFBTSxHQUFHLFNBQVM7QUFBQSxVQUN4QjtBQUFBLFVBQ0EsS0FBSztBQUFBLFVBQ0wsUUFBUSxDQUFDLHNCQUFzQixZQUFZO0FBQUEsUUFDN0MsQ0FBQztBQUFBLE1BQ0g7QUFDQSxlQUFTLE1BQU0sRUFBRSxZQUFZLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUMvQyxhQUFPO0FBQUEsUUFDTCxPQUFPLE1BQU0sTUFBTSxHQUFHLFVBQVU7QUFBQSxRQUNoQyxZQUFZLE1BQU07QUFBQSxRQUNsQixXQUFXLE1BQU0sU0FBUztBQUFBLE1BQzVCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjtBQXpDQSxJQUdNO0FBSE47QUFBQTtBQUdBLElBQU0sY0FBYztBQUFBO0FBQUE7OztBQ0hwQixTQUFTLFlBQUFDLGlCQUFnQjtBQUN6QixTQUFTLFVBQVUsV0FBQUMsZ0JBQWU7QUFJbEMsU0FBUyxXQUFXLE1BQU0sS0FBSztBQUM3QixTQUFPLElBQUksUUFBUSxDQUFDLFNBQVM7QUFDM0IsSUFBQUQsVUFBUyxNQUFNLE1BQU0sRUFBRSxLQUFLLFdBQVcsS0FBSyxPQUFPLEtBQUssR0FBRyxDQUFDLEtBQUssV0FBVztBQUMxRSxXQUFLLE9BQU8sQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO0FBQUEsSUFDekMsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIO0FBRU8sU0FBUyxXQUFXLEVBQUUsS0FBSyxTQUFTLEdBQUc7QUFDNUMsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sYUFBYTtBQUFBLElBQ2IsUUFBUTtBQUFBLE1BQ04sU0FBUyxFQUFFLE1BQU0sVUFBVSxhQUFhLGdCQUFnQjtBQUFBLE1BQ3hELE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSxrRUFBa0UsVUFBVSxLQUFLO0FBQUEsTUFDdEgsTUFBTSxFQUFFLE1BQU0sVUFBVSxNQUFNLENBQUMsV0FBVyxTQUFTLE9BQU8sR0FBRyxVQUFVLEtBQUs7QUFBQSxNQUM1RSxNQUFNLEVBQUUsTUFBTSxVQUFVLGFBQWEsbUNBQW1DLFVBQVUsS0FBSztBQUFBLE1BQ3ZGLFlBQVksRUFBRSxNQUFNLFdBQVcsVUFBVSxLQUFLO0FBQUEsTUFDOUMsU0FBUyxFQUFFLE1BQU0sVUFBVSxhQUFhLG1DQUFtQyxVQUFVLEtBQUs7QUFBQSxNQUMxRixXQUFXLEVBQUUsTUFBTSxXQUFXLGFBQWEsZ0NBQWdDLFVBQVUsS0FBSztBQUFBLE1BQzFGLE9BQU8sRUFBRSxNQUFNLFVBQVUsYUFBYSw0QkFBNEIsVUFBVSxLQUFLO0FBQUEsSUFDbkY7QUFBQSxJQUNBLFNBQVMsT0FBTyxFQUFFLFNBQVMsTUFBTSxPQUFPLFdBQVcsTUFBTSxZQUFZLFNBQVMsV0FBVyxRQUFRRSxhQUFZLE1BQU07QUFDakgsZUFBUyxNQUFNLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFDakMsWUFBTSxPQUFPLENBQUMsZ0JBQWdCLGlCQUFpQixpQkFBaUIsT0FBTyxZQUFZLFVBQVUsYUFBYTtBQUUxRyxVQUFJLFNBQVMsUUFBUyxNQUFLLEtBQUssc0JBQXNCO0FBQUEsZUFDN0MsU0FBUyxRQUFTLE1BQUssS0FBSyxTQUFTO0FBQUEsVUFDekMsTUFBSyxLQUFLLGVBQWU7QUFFOUIsVUFBSSxXQUFZLE1BQUssS0FBSyxlQUFlO0FBQ3pDLFVBQUksVUFBVyxNQUFLLEtBQUssZUFBZSxvQkFBb0I7QUFDNUQsVUFBSSxLQUFNLE1BQUssS0FBSyxVQUFVLElBQUk7QUFDbEMsVUFBSSxTQUFTLGFBQWEsUUFBUyxNQUFLLEtBQUssTUFBTSxPQUFPLE9BQU8sQ0FBQztBQUVsRSxXQUFLLEtBQUssUUFBUSxXQUFXLEdBQUcsSUFBSSxPQUFPLE1BQU0sT0FBTztBQUN4RCxXQUFLLEtBQUssT0FBT0QsU0FBUSxLQUFLLElBQUksSUFBSSxHQUFHO0FBRXpDLFlBQU0sU0FBUyxNQUFNLFdBQVcsTUFBTSxHQUFHO0FBQ3pDLFlBQU0sUUFBUSxPQUFPLE1BQU0sSUFBSSxFQUFFLE9BQU8sT0FBTztBQUMvQyxlQUFTLE1BQU0sRUFBRSxZQUFZLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUUvQyxZQUFNLGFBQWEsQ0FBQyxTQUFTO0FBQzNCLFlBQUksU0FBUyxRQUFTLFFBQU8sU0FBUyxLQUFLLElBQUk7QUFDL0MsY0FBTSxJQUFJLEtBQUssTUFBTSxrQkFBa0I7QUFDdkMsZUFBTyxJQUFJLEdBQUcsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLO0FBQUEsTUFDaEQ7QUFDQSxZQUFNLFVBQVUsTUFBTSxJQUFJLFVBQVUsRUFBRSxNQUFNLEdBQUcsS0FBSztBQUNwRCxhQUFPLEVBQUUsU0FBUyxNQUFNLGNBQWMsTUFBTSxRQUFRLFdBQVcsTUFBTSxTQUFTLE1BQU07QUFBQSxJQUN0RjtBQUFBLEVBQ0Y7QUFDRjtBQXhEQSxJQUdNQztBQUhOO0FBQUE7QUFHQSxJQUFNQSxlQUFjO0FBQUE7QUFBQTs7O0FDTWIsU0FBUyxjQUFjLEVBQUUsS0FBSyxLQUFLLFNBQVMsUUFBUSxRQUFBQyxTQUFRLFNBQUFDLFVBQVMsUUFBUSxRQUFRLFNBQVMsUUFBUSxXQUFXLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxRQUFRLGNBQWMsZ0JBQWdCLG1CQUFtQixPQUFPLFdBQVcsR0FBRztBQUN4TixRQUFNLFdBQVcsZUFBZTtBQUNoQyxNQUFJLGNBQWM7QUFDbEIsTUFBSSxxQkFBcUIsbUJBQW1CLE9BQU87QUFDbkQsUUFBTSxPQUFPLEVBQUUsS0FBSyxLQUFLLFVBQVUsU0FBUyxRQUFRLFFBQUFELFFBQU87QUFFM0QsUUFBTSxRQUFRO0FBQUEsSUFDWixXQUFXLElBQUk7QUFBQSxJQUNmLFlBQVksSUFBSTtBQUFBLElBQ2hCLFdBQVcsSUFBSTtBQUFBLElBQ2YsV0FBVyxJQUFJO0FBQUEsSUFDZixXQUFXLElBQUk7QUFBQSxJQUNmLFdBQVcsSUFBSTtBQUFBLEVBQ2pCO0FBRUEsTUFBSSxRQUFRO0FBQ1YsVUFBTSxLQUFLLEdBQUcsZUFBZSxFQUFFLFFBQVEsVUFBVSxPQUFPLENBQUMsQ0FBQztBQUFBLEVBQzVEO0FBRUEsTUFBSUEsU0FBUTtBQUNWLFVBQU07QUFBQSxNQUNKO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixhQUFhO0FBQUEsUUFDYixRQUFRO0FBQUEsVUFDTixJQUFJLEVBQUUsTUFBTSxVQUFVLGFBQWEsZUFBZTtBQUFBLFVBQ2xELE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSxrREFBa0QsVUFBVSxLQUFLO0FBQUEsUUFDeEc7QUFBQSxRQUNBLFNBQVMsQ0FBQyxFQUFFLElBQUksT0FBTyxJQUFJLE1BQU1BLFFBQU8sT0FBTyxJQUFJLEVBQUUsTUFBTSxLQUFLLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUFBLE1BQ2xGO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sYUFBYTtBQUFBLFFBQ2IsUUFBUTtBQUFBLFVBQ04sSUFBSSxFQUFFLE1BQU0sVUFBVSxhQUFhLGVBQWU7QUFBQSxRQUNwRDtBQUFBLFFBQ0EsU0FBUyxDQUFDLEVBQUUsR0FBRyxNQUFNQSxRQUFPLEtBQUssSUFBSSxPQUFPO0FBQUEsTUFDOUM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE1BQUlDLFVBQVM7QUFDWCxVQUFNO0FBQUEsTUFDSjtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sYUFBYTtBQUFBLFFBQ2IsUUFBUTtBQUFBLFVBQ04sY0FBYyxFQUFFLE1BQU0sVUFBVSxhQUFhLDhCQUE4QjtBQUFBLFVBQzNFLE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSwyREFBMkQ7QUFBQSxRQUNsRztBQUFBLFFBQ0EsU0FBUyxDQUFDLEVBQUUsY0FBYyxLQUFLLE1BQU07QUFDbkMsZ0JBQU0sRUFBRSxJQUFJLElBQUksUUFBUSxJQUFJQSxTQUFRLFNBQVMsY0FBYyxJQUFJO0FBQy9ELGlCQUFPLEVBQUUsVUFBVSxJQUFJLFNBQVMsSUFBSSxLQUFLLEVBQUUsRUFBRSxTQUFTLEdBQUcsV0FBVyxRQUFRO0FBQUEsUUFDOUU7QUFBQSxNQUNGO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sYUFBYTtBQUFBLFFBQ2IsUUFBUTtBQUFBLFVBQ04sSUFBSSxFQUFFLE1BQU0sVUFBVSxhQUFhLGlCQUFpQjtBQUFBLFFBQ3REO0FBQUEsUUFDQSxTQUFTLENBQUMsRUFBRSxHQUFHLE1BQU1BLFNBQVEsT0FBTyxFQUFFO0FBQUEsTUFDeEM7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixhQUFhO0FBQUEsUUFDYixRQUFRLENBQUM7QUFBQSxRQUNULFNBQVMsT0FBTztBQUFBLFVBQ2QsU0FBU0EsU0FBUSxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87QUFBQSxZQUNsQyxJQUFJLEVBQUU7QUFBQSxZQUNOLFNBQVMsSUFBSSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVM7QUFBQSxZQUNqQyxXQUFXLEtBQUssSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFLEtBQUssS0FBSyxJQUFJLEtBQUssR0FBSSxDQUFDO0FBQUEsWUFDN0QsTUFBTSxFQUFFO0FBQUEsVUFDVixFQUFFO0FBQUEsUUFDSjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE1BQUksU0FBUztBQUNYLFVBQU0sS0FBSztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sYUFBYTtBQUFBLE1BQ2IsUUFBUTtBQUFBLFFBQ04sV0FBVztBQUFBLFVBQ1QsTUFBTTtBQUFBLFVBQ04sYUFBYTtBQUFBLFVBQ2IsT0FBTztBQUFBLFlBQ0wsTUFBTTtBQUFBLFlBQ04sWUFBWTtBQUFBLGNBQ1YsSUFBSSxFQUFFLE1BQU0sVUFBVSxhQUFhLDBCQUEwQjtBQUFBLGNBQzdELFVBQVUsRUFBRSxNQUFNLFVBQVUsYUFBYSxtQ0FBbUM7QUFBQSxjQUM1RSxhQUFhLEVBQUUsTUFBTSxVQUFVLGFBQWEsNkNBQTZDLFVBQVUsS0FBSztBQUFBLGNBQ3hHLE1BQU0sRUFBRSxNQUFNLFVBQVUsTUFBTSxDQUFDLFVBQVUsU0FBUyxNQUFNLEdBQUcsYUFBYSxpQkFBaUI7QUFBQSxjQUN6RixTQUFTO0FBQUEsZ0JBQ1AsTUFBTTtBQUFBLGdCQUFTLFVBQVU7QUFBQSxnQkFBTSxhQUFhO0FBQUEsZ0JBQzVDLE9BQU87QUFBQSxrQkFDTCxNQUFNO0FBQUEsa0JBQ04sWUFBWTtBQUFBLG9CQUNWLE9BQU8sRUFBRSxNQUFNLFNBQVM7QUFBQSxvQkFDeEIsYUFBYSxFQUFFLE1BQU0sVUFBVSxVQUFVLEtBQUs7QUFBQSxrQkFDaEQ7QUFBQSxrQkFDQSxVQUFVLENBQUMsT0FBTztBQUFBLGdCQUNwQjtBQUFBLGNBQ0Y7QUFBQSxjQUNBLFlBQVksRUFBRSxNQUFNLFdBQVcsVUFBVSxNQUFNLGFBQWEsK0RBQStEO0FBQUEsWUFDN0g7QUFBQSxZQUNBLFVBQVUsQ0FBQyxNQUFNLFlBQVksTUFBTTtBQUFBLFVBQ3JDO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLFNBQVMsQ0FBQyxFQUFFLFVBQVUsTUFBTTtBQUMxQixZQUFJLENBQUMsTUFBTSxRQUFRLFNBQVMsS0FBSyxVQUFVLFdBQVcsS0FBSyxVQUFVLFNBQVMsR0FBSSxPQUFNLElBQUksTUFBTSxrQ0FBa0M7QUFDcEksY0FBTSxNQUFNLG9CQUFJLElBQUk7QUFDcEIsbUJBQVcsWUFBWSxXQUFXO0FBQ2hDLGNBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxTQUFTLEVBQUUsRUFBRyxPQUFNLElBQUksTUFBTSwyQ0FBMkM7QUFDN0csY0FBSSxDQUFDLFNBQVMsVUFBVSxLQUFLLEVBQUcsT0FBTSxJQUFJLE1BQU0sWUFBWSxTQUFTLEVBQUUsZ0JBQWdCO0FBQ3ZGLGNBQUksQ0FBQyxDQUFDLFVBQVUsU0FBUyxNQUFNLEVBQUUsU0FBUyxTQUFTLElBQUksRUFBRyxPQUFNLElBQUksTUFBTSxZQUFZLFNBQVMsRUFBRSxzQkFBc0I7QUFDdkgsY0FBSSxTQUFTLFNBQVMsV0FBVyxDQUFDLE1BQU0sUUFBUSxTQUFTLE9BQU8sS0FBSyxTQUFTLFFBQVEsV0FBVyxHQUFJLE9BQU0sSUFBSSxNQUFNLFlBQVksU0FBUyxFQUFFLDRCQUE0QjtBQUN4SyxjQUFJLElBQUksU0FBUyxFQUFFO0FBQUEsUUFDckI7QUFDQSxlQUFPLFFBQVEsU0FBUztBQUFBLE1BQzFCO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLE1BQUksUUFBUTtBQUNWLFVBQU07QUFBQSxNQUNKO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixhQUFhO0FBQUEsUUFDYixRQUFRO0FBQUEsVUFDTixPQUFPLEVBQUUsTUFBTSxXQUFXLGFBQWEsNkJBQTZCLGtCQUFrQixHQUFHLElBQUk7QUFBQSxVQUM3RixRQUFRLEVBQUUsTUFBTSxVQUFVLGFBQWEsZ0ZBQWdGO0FBQUEsUUFDekg7QUFBQSxRQUNBLFNBQVMsQ0FBQyxFQUFFLE9BQU8sT0FBTyxNQUFNO0FBQzlCLGdCQUFNLFVBQVUsa0JBQWtCO0FBQ2xDLGNBQUksQ0FBQyxPQUFPLFVBQVUsS0FBSyxLQUFLLFFBQVEsS0FBSyxRQUFRLFFBQVMsT0FBTSxJQUFJLE1BQU0sc0NBQXNDLE9BQU8sRUFBRTtBQUM3SCxjQUFJLGNBQWMsRUFBRyxPQUFNLElBQUksTUFBTSxzREFBc0Q7QUFDM0YsK0JBQXFCO0FBQ3JCLGlCQUFPLEVBQUUsWUFBWSxPQUFPLE9BQU87QUFBQSxRQUNyQztBQUFBLE1BQ0Y7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixhQUFhO0FBQUEsUUFDYixRQUFRO0FBQUEsVUFDTixRQUFRLEVBQUUsTUFBTSxVQUFVLGFBQWEsbURBQW1EO0FBQUEsVUFDMUYsYUFBYSxFQUFFLE1BQU0sVUFBVSxhQUFhLGdDQUFnQztBQUFBLFVBQzVFLE9BQU8sRUFBRSxNQUFNLFNBQVMsT0FBTyxFQUFFLE1BQU0sU0FBUyxHQUFHLGFBQWEsNkRBQTZELFVBQVUsS0FBSztBQUFBLFFBQzlJO0FBQUEsUUFDQSxTQUFTLENBQUMsRUFBRSxRQUFRLGFBQWEsT0FBQUMsT0FBTSxNQUFNO0FBQzNDLGNBQUksc0JBQXNCLEtBQU0sT0FBTSxJQUFJLE1BQU0saURBQWlEO0FBQ2pHLGNBQUksZUFBZSxtQkFBb0IsT0FBTSxJQUFJLE1BQU0scUNBQXFDLGtCQUFrQiw2REFBNkQ7QUFDM0s7QUFDQSxnQkFBTSxRQUFRLE9BQU8sTUFBTSxFQUFFLFFBQVEsYUFBYSxPQUFBQSxPQUFNLENBQUM7QUFDekQsaUJBQU8sRUFBRSxTQUFTLE1BQU0sSUFBSSxRQUFRLE1BQU0sUUFBUSxPQUFPLE1BQU0sTUFBTTtBQUFBLFFBQ3ZFO0FBQUEsTUFDRjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGFBQWE7QUFBQSxRQUNiLFFBQVEsQ0FBQztBQUFBLFFBQ1QsU0FBUyxPQUFPLEVBQUUsUUFBUSxPQUFPLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLGFBQWEsT0FBQUMsUUFBTyxPQUFPLE9BQU8sRUFBRSxJQUFJLGFBQWEsT0FBQUEsUUFBTyxPQUFPLEVBQUUsRUFBRTtBQUFBLE1BQzVIO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sYUFBYTtBQUFBLFFBQ2IsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsT0FBTyxFQUFFLE1BQU0sU0FBUyxHQUFHLGFBQWEscUNBQXFDLEVBQUU7QUFBQSxRQUMvRyxTQUFTLE9BQU8sRUFBRSxJQUFJLE9BQU8sRUFBRSxTQUFTLE1BQU0sT0FBTyxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLFFBQVEsUUFBUSxNQUFNLE9BQU8sRUFBRSxJQUFJLFFBQVEsUUFBUSxNQUFNLEVBQUUsRUFBRTtBQUFBLE1BQzdJO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sYUFBYTtBQUFBLFFBQ2IsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsYUFBYSxXQUFXLEVBQUU7QUFBQSxRQUMxRCxTQUFTLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxXQUFXLE9BQU8sT0FBTyxFQUFFLEVBQUU7QUFBQSxNQUN2RDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsTUFBSSxRQUFRO0FBQ1YsVUFBTTtBQUFBLE1BQ0o7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGFBQWE7QUFBQSxRQUNiLFFBQVE7QUFBQSxVQUNOLE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSw4QkFBOEI7QUFBQSxVQUNuRSxhQUFhLEVBQUUsTUFBTSxVQUFVLGFBQWEsaUZBQWlGO0FBQUEsVUFDN0gsU0FBUyxFQUFFLE1BQU0sVUFBVSxhQUFhLG9CQUFvQjtBQUFBLFVBQzVELE9BQU8sRUFBRSxNQUFNLFVBQVUsTUFBTSxDQUFDLFdBQVcsUUFBUSxHQUFHLFVBQVUsS0FBSztBQUFBLFFBQ3ZFO0FBQUEsUUFDQSxTQUFTLE9BQU8sRUFBRSxNQUFNLGFBQWEsU0FBUyxPQUFBQyxPQUFNLE1BQU07QUFDeEQsZ0JBQU0sUUFBUSxNQUFNLE9BQU8sU0FBUyxFQUFFLE1BQU0sYUFBYSxTQUFTLE9BQUFBLE9BQU0sQ0FBQztBQUN6RSxtQkFBUyxNQUFNLEVBQUUsT0FBTyxHQUFHLE1BQU0sSUFBSSxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDMUQsaUJBQU87QUFBQSxRQUNUO0FBQUEsTUFDRjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGFBQWE7QUFBQSxRQUNiLFFBQVE7QUFBQSxVQUNOLE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSxpQ0FBaUM7QUFBQSxRQUN4RTtBQUFBLFFBQ0EsU0FBUyxPQUFPLEVBQUUsS0FBSyxNQUFNO0FBQzNCLGdCQUFNLFFBQVEsTUFBTSxPQUFPLE9BQU8sSUFBSTtBQUN0QyxtQkFBUyxNQUFNLEVBQUUsT0FBTyxNQUFNLEtBQUssQ0FBQztBQUNwQyxpQkFBTztBQUFBLFFBQ1Q7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxNQUFJLFFBQVEsS0FBSyxFQUFFLFFBQVE7QUFDekIsVUFBTSxLQUFLO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixhQUFhO0FBQUEsRUFBd0UsT0FDbEYsS0FBSyxFQUNMLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFDMUMsS0FBSyxJQUFJLENBQUM7QUFBQSxNQUNiLFFBQVE7QUFBQSxRQUNOLE1BQU0sRUFBRSxNQUFNLFVBQVUsYUFBYSxhQUFhO0FBQUEsTUFDcEQ7QUFBQSxNQUNBLFNBQVMsT0FBTyxFQUFFLEtBQUssTUFBTTtBQUMzQixpQkFBUyxNQUFNLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDOUIsY0FBTSxPQUFPLE1BQU0sT0FBTyxLQUFLLElBQUk7QUFDbkMsWUFBSSxDQUFDLEtBQU0sT0FBTSxJQUFJLE1BQU0sa0JBQWtCLElBQUksRUFBRTtBQUNuRCxlQUFPLEVBQUUsY0FBYyxLQUFLO0FBQUEsTUFDOUI7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBRUEsUUFBTSxTQUFTLG9CQUFJLElBQUk7QUFDdkIsYUFBVyxRQUFRLENBQUMsR0FBRyxPQUFPLEdBQUcsV0FBVyxHQUFHLFFBQVEsR0FBRztBQUN4RCxRQUFJLGNBQWMsQ0FBQyxXQUFXLFNBQVMsS0FBSyxJQUFJLEVBQUc7QUFDbkQsUUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLElBQUksRUFBRyxRQUFPLElBQUksS0FBSyxNQUFNLElBQUk7QUFBQSxFQUN4RDtBQUNBLFFBQU0sUUFBUSxDQUFDLEdBQUcsT0FBTyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVTtBQUFBLElBQ2hELEdBQUc7QUFBQSxJQUNILFNBQVMsU0FBUyxVQUFVLEtBQUssTUFBTSxPQUFPLFNBQVM7QUFDckQsVUFBSSxnQkFBZ0IsU0FBUyxRQUFRLFVBQVUsY0FBYztBQUMzRCxjQUFNLElBQUksTUFBTSxrR0FBa0c7QUFBQSxNQUNwSDtBQUNBLGFBQU8sS0FBSyxRQUFRLElBQUk7QUFBQSxJQUMxQixDQUFDO0FBQUEsRUFDSCxFQUFFO0FBRUYsU0FBTyxFQUFFLE9BQU8sU0FBUztBQUMzQjtBQWhRQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7OztBQ1BBLFNBQVMsVUFBVSxNQUFNLGVBQWU7QUFRakMsU0FBUyxrQkFBa0IsRUFBRSxLQUFLLGVBQWUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLGtCQUFrQixHQUFHLEdBQUc7QUFDL0YsUUFBTSxNQUFNLG9CQUFJLEtBQUs7QUFDckIsUUFBTSxRQUFRO0FBQUEsSUFDWjtBQUFBLElBQ0E7QUFBQSxJQUNBLHNCQUFzQixHQUFHO0FBQUEsSUFDekIsYUFBYSxlQUFlLFNBQVMsQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUFBLElBQ3JELDBCQUEwQixJQUFJLFNBQVMsQ0FBQztBQUFBLElBQ3hDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBRUEsTUFBSSxpQkFBaUI7QUFDbkIsVUFBTSxLQUFLLElBQUksZUFBZTtBQUFBLEVBQ2hDO0FBRUEsTUFBSSxPQUFPLFFBQVE7QUFDakIsVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQSxHQUFHLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksS0FBSyxFQUFFLFdBQVcsRUFBRTtBQUFBLElBQ3REO0FBQUEsRUFDRjtBQUVBLGFBQVcsUUFBUSxjQUFjO0FBQy9CLFVBQU0sS0FBSyxJQUFJLDZCQUE2QixLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssUUFBUSxLQUFLLENBQUM7QUFBQSxFQUNuRjtBQUVBLFNBQU8sTUFBTSxLQUFLLElBQUk7QUFDeEI7QUE1Q0EsSUFFTTtBQUZOO0FBQUE7QUFFQSxJQUFNLGlCQUFpQjtBQUFBLE1BQ3JCLFFBQVEsaUJBQWlCLEtBQUssQ0FBQyxZQUFZLFFBQVEsQ0FBQztBQUFBLE1BQ3BELE9BQU8sVUFBVSxLQUFLLENBQUMsWUFBWSxRQUFRLENBQUM7QUFBQSxNQUM1QyxPQUFPLFlBQVksS0FBSyxDQUFDO0FBQUEsSUFDM0I7QUFBQTtBQUFBOzs7QUNOQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBUyxRQUFBQyxhQUFZO0FBQ3JCLFNBQVMsWUFBQUMsWUFBVSxhQUFBQyxtQkFBaUI7QUFDcEMsU0FBUyxRQUFBQyxjQUFZO0FBTXJCLFNBQVMsWUFBWTtBQUNuQixTQUFPQSxPQUFLLFNBQVMsR0FBRyxtQkFBbUI7QUFDN0M7QUFFQSxlQUFlLFlBQVk7QUFDekIsTUFBSTtBQUNGLFdBQU8sS0FBSyxNQUFNLE1BQU1GLFdBQVMsVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUFBLEVBQ3hELFFBQVE7QUFDTixXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7QUFFQSxlQUFlLFdBQVcsT0FBTztBQUMvQixRQUFNLFFBQVEsRUFBRSxHQUFJLE1BQU0sVUFBVSxHQUFJLEdBQUcsTUFBTTtBQUNqRCxZQUFVLFNBQVMsQ0FBQztBQUNwQixRQUFNQyxZQUFVLFVBQVUsR0FBRyxLQUFLLFVBQVUsS0FBSyxJQUFJLElBQUk7QUFDM0Q7QUFFQSxlQUFzQixtQkFBbUIsRUFBRSxZQUFZLElBQUssSUFBSSxDQUFDLEdBQUc7QUFDbEUsTUFBSSxRQUFRLElBQUksaUJBQWtCLFFBQU8sUUFBUSxJQUFJO0FBQ3JELFFBQU0sV0FBVyxNQUFNLE1BQU0sY0FBYyxFQUFFLFFBQVEsWUFBWSxRQUFRLFNBQVMsRUFBRSxDQUFDO0FBQ3JGLFFBQU0sT0FBTyxNQUFNLFNBQVMsS0FBSztBQUNqQyxTQUFPLEtBQUssV0FBVztBQUN6QjtBQUVPLFNBQVMsYUFBYSxTQUFTLFFBQVE7QUFDNUMsTUFBSSxDQUFDLFVBQVUsV0FBVyxRQUFTLFFBQU87QUFDMUMsUUFBTSxRQUFRLENBQUMsTUFBTSxPQUFPLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxLQUFLLENBQUM7QUFDekUsUUFBTSxNQUFNLE1BQU0sT0FBTztBQUN6QixRQUFNLE9BQU8sTUFBTSxNQUFNO0FBQ3pCLFdBQVMsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLO0FBQzFCLFNBQUssS0FBSyxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFJLFFBQU87QUFDM0MsU0FBSyxLQUFLLENBQUMsS0FBSyxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUksUUFBTztBQUFBLEVBQzdDO0FBQ0EsU0FBTztBQUNUO0FBS0EsZUFBc0IsZUFBZSxnQkFBZ0I7QUFDbkQsUUFBTSxPQUFPLENBQUMsQ0FBQyxRQUFRLElBQUk7QUFDM0IsUUFBTSxRQUFRLE1BQU0sVUFBVTtBQUM5QixNQUFJLENBQUMsUUFBUSxNQUFNLGFBQWEsS0FBSyxJQUFJLElBQUksTUFBTSxZQUFZLGtCQUFtQixRQUFPO0FBRXpGLE1BQUksU0FBUztBQUNiLE1BQUk7QUFDRixhQUFTLE1BQU0sbUJBQW1CO0FBQUEsRUFDcEMsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNULFVBQUU7QUFDQSxRQUFJLENBQUMsS0FBTSxPQUFNLFdBQVcsRUFBRSxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLE1BQU07QUFBQSxJQUFDLENBQUM7QUFBQSxFQUN2RTtBQUVBLFFBQU0sUUFBUSxhQUFhLGdCQUFnQixNQUFNO0FBQ2pELE1BQUksQ0FBQyxNQUFPLFFBQU87QUFDbkIsTUFBSSxDQUFDLFFBQVEsTUFBTSxvQkFBb0IsTUFBTyxRQUFPO0FBQ3JELFNBQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxJQUNULGNBQWMsTUFBTyxPQUFPLFFBQVEsUUFBUSxJQUFJLFdBQVcsRUFBRSxpQkFBaUIsTUFBTSxDQUFDLEVBQUUsTUFBTSxNQUFNO0FBQUEsSUFBQyxDQUFDO0FBQUEsRUFDdkc7QUFDRjtBQUVPLFNBQVMsYUFBYSxVQUFVO0FBQ3JDLFNBQU8sQ0FBQyxPQUFPLFFBQVEsRUFBRSxTQUFTLGdCQUFnQjtBQUNwRDtBQUVPLFNBQVMsWUFBWTtBQUMxQixTQUFPLElBQUksUUFBUSxDQUFDRSxhQUFZO0FBQzlCLElBQUFKLE1BQUssa0NBQWtDLEVBQUUsU0FBUyxLQUFPLEdBQUcsQ0FBQyxLQUFLLFFBQVEsV0FBVztBQUNuRixNQUFBSSxTQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssUUFBUSxDQUFDLFFBQVEsTUFBTSxFQUFFLE9BQU8sT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFBQSxJQUNoRyxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFqRkEsSUFLTSxtQkFDQTtBQU5OO0FBQUE7QUFHQTtBQUVBLElBQU0sb0JBQW9CLElBQUksS0FBSyxLQUFLO0FBQ3hDLElBQU0sZUFBZTtBQUFBO0FBQUE7OztBQ05kLFNBQVMsV0FBVyxPQUFPLE1BQU07QUFDdEMsUUFBTSxJQUFJLE1BQU0sWUFBWTtBQUM1QixRQUFNLElBQUksS0FBSyxZQUFZO0FBQzNCLE1BQUksQ0FBQyxFQUFHLFFBQU87QUFDZixNQUFJLE9BQU87QUFDWCxXQUFTLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxJQUFJLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHO0FBQ2xGLFFBQUksUUFBUTtBQUNaLFFBQUksT0FBTztBQUNYLFFBQUksVUFBVTtBQUNkLGVBQVcsTUFBTSxHQUFHO0FBQ2xCLFlBQU0sSUFBSSxFQUFFLFFBQVEsSUFBSSxTQUFTLEtBQUssUUFBUSxPQUFPLENBQUM7QUFDdEQsVUFBSSxNQUFNLElBQUk7QUFDWixrQkFBVTtBQUNWO0FBQUEsTUFDRjtBQUNBLFVBQUksU0FBUyxNQUFNLE1BQU0sT0FBTyxFQUFHLFVBQVM7QUFDNUMsVUFBSSxNQUFNLEtBQUssT0FBTyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRyxVQUFTO0FBQ25ELGVBQVM7QUFDVCxhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksV0FBVyxRQUFRLEtBQU0sUUFBTztBQUFBLEVBQ3RDO0FBQ0EsTUFBSSxPQUFPLEVBQUcsUUFBTztBQUNyQixRQUFNLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxHQUFHLElBQUksQ0FBQztBQUMzQyxNQUFJLEtBQUssV0FBVyxDQUFDLEVBQUcsU0FBUTtBQUFBLFdBQ3ZCLEtBQUssU0FBUyxDQUFDLEVBQUcsU0FBUTtBQUFBLFdBQzFCLEVBQUUsU0FBUyxDQUFDLEVBQUcsU0FBUTtBQUNoQyxTQUFPLE9BQU8sRUFBRSxTQUFTO0FBQzNCO0FBNUJBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSxTQUFTLGNBQUFDLG1CQUFrQjtBQVlwQixTQUFTLGFBQWEsTUFBTTtBQUNqQyxTQUFPLFlBQVksS0FBSyxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUs7QUFDN0Q7QUFFQSxTQUFTLFFBQVEsT0FBTztBQUN0QixNQUFJLFNBQVMsS0FBSyxLQUFLLEtBQUssU0FBUyxLQUFLLEtBQUssRUFBRyxRQUFPLE1BQU0sTUFBTSxHQUFHLEVBQUU7QUFDMUUsU0FBTyxNQUFNLFFBQVEsUUFBUSxHQUFHO0FBQ2xDO0FBRUEsU0FBUyxPQUFPLE9BQU87QUFDckIsUUFBTSxNQUFNLFFBQVEsTUFBTSxLQUFLLENBQUM7QUFDaEMsTUFBSSxJQUFJLFdBQVcsU0FBUyxHQUFHO0FBQzdCLFFBQUk7QUFDRixhQUFPLG1CQUFtQixJQUFJLE1BQU0sVUFBVSxNQUFNLENBQUM7QUFBQSxJQUN2RCxRQUFRO0FBQ04sYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBRU8sU0FBUyxrQkFBa0IsTUFBTSxTQUFTQSxhQUFZO0FBQzNELFFBQU0sU0FBUyxLQUFLLEtBQUssRUFBRSxNQUFNLHNDQUFzQztBQUN2RSxNQUFJLENBQUMsVUFBVSxPQUFPLFdBQVcsRUFBRyxRQUFPLENBQUM7QUFDNUMsUUFBTSxRQUFRLENBQUM7QUFDZixhQUFXLFNBQVMsUUFBUTtBQUMxQixVQUFNLE9BQU8sT0FBTyxLQUFLO0FBQ3pCLFFBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXLEdBQUcsRUFBRyxRQUFPLENBQUM7QUFDNUMsUUFBSSxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUcsUUFBTyxDQUFDO0FBQ2xELFVBQU0sS0FBSyxJQUFJO0FBQUEsRUFDakI7QUFDQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLHNCQUFzQixNQUFNLFNBQVNBLGFBQVk7QUFDL0QsUUFBTSxRQUFRLENBQUM7QUFDZixNQUFJLE9BQU87QUFDWCxhQUFXLFNBQVMsS0FBSyxTQUFTLGFBQWEsR0FBRztBQUNoRCxVQUFNLE9BQU8sTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLEVBQUUsUUFBUSxRQUFRLEdBQUc7QUFDckQsVUFBTSxZQUFZLGFBQWEsSUFBSTtBQUNuQyxRQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxFQUFHO0FBQ2pDLFFBQUksTUFBTSxRQUFRLEtBQU0sT0FBTSxLQUFLLEVBQUUsTUFBTSxRQUFRLE1BQU0sS0FBSyxNQUFNLE1BQU0sTUFBTSxLQUFLLEVBQUUsQ0FBQztBQUN4RixVQUFNLEtBQUssRUFBRSxNQUFNLFNBQVMsUUFBUSxFQUFFLE1BQU0sUUFBUSxNQUFNLFVBQVUsRUFBRSxDQUFDO0FBQ3ZFLFdBQU8sTUFBTSxRQUFRLE1BQU0sQ0FBQyxFQUFFO0FBQUEsRUFDaEM7QUFDQSxNQUFJLE1BQU0sV0FBVyxFQUFHLFFBQU87QUFDL0IsUUFBTSxPQUFPLEtBQUssTUFBTSxJQUFJO0FBQzVCLE1BQUksS0FBTSxPQUFNLEtBQUssRUFBRSxNQUFNLFFBQVEsTUFBTSxLQUFLLENBQUM7QUFDakQsU0FBTztBQUNUO0FBRU8sU0FBUyxpQkFBaUIsTUFBTSxhQUFhO0FBQ2xELFFBQU0sUUFBUSxDQUFDO0FBQ2YsTUFBSSxPQUFPO0FBQ1gsUUFBTSxPQUFPLENBQUM7QUFDZCxhQUFXLFNBQVMsS0FBSyxTQUFTLGlCQUFpQixHQUFHO0FBQ3BELFVBQU0sYUFBYSxZQUFZLElBQUksTUFBTSxDQUFDLENBQUM7QUFDM0MsUUFBSSxDQUFDLFdBQVk7QUFDakIsVUFBTSxTQUFTLEtBQUssTUFBTSxNQUFNLE1BQU0sS0FBSztBQUMzQyxRQUFJLE9BQVEsT0FBTSxLQUFLLEVBQUUsTUFBTSxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBQ3JELFVBQU0sS0FBSztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sUUFBUSxFQUFFLE1BQU0sUUFBUSxNQUFNLFdBQVcsTUFBTSxXQUFXLFdBQVcsVUFBVTtBQUFBLElBQ2pGLENBQUM7QUFDRCxTQUFLLEtBQUssTUFBTSxDQUFDLENBQUM7QUFDbEIsV0FBTyxNQUFNLFFBQVEsTUFBTSxDQUFDLEVBQUU7QUFBQSxFQUNoQztBQUNBLE1BQUksTUFBTSxXQUFXLEVBQUcsUUFBTyxFQUFFLFNBQVMsTUFBTSxLQUFLO0FBQ3JELFFBQU0sT0FBTyxLQUFLLE1BQU0sSUFBSTtBQUM1QixNQUFJLEtBQU0sT0FBTSxLQUFLLEVBQUUsTUFBTSxRQUFRLE1BQU0sS0FBSyxDQUFDO0FBQ2pELFNBQU8sRUFBRSxTQUFTLE9BQU8sS0FBSztBQUNoQztBQUVPLFNBQVMseUJBQXlCLE1BQU0sRUFBRSxhQUFhLFFBQVEsU0FBU0EsWUFBVyxHQUFHO0FBQzNGLFFBQU0sUUFBUSxzQkFBc0IsTUFBTSxNQUFNO0FBQ2hELE1BQUksQ0FBQyxNQUFPLFFBQU8sRUFBRSxNQUFNLFNBQVMsTUFBTTtBQUMxQyxNQUFJLE1BQU07QUFDVixhQUFXLFFBQVEsT0FBTztBQUN4QixRQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCLGFBQU8sS0FBSztBQUFBLElBQ2QsT0FBTztBQUNMLFlBQU0sY0FBYyxXQUFXLE9BQU8sQ0FBQztBQUN2QyxrQkFBWSxJQUFJLGFBQWEsRUFBRSxNQUFNLEtBQUssT0FBTyxNQUFNLFdBQVcsS0FBSyxPQUFPLFVBQVUsQ0FBQztBQUN6RixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDQSxTQUFPLEVBQUUsTUFBTSxLQUFLLFNBQVMsS0FBSztBQUNwQztBQUVPLFNBQVMscUJBQXFCLFNBQVMsRUFBRSxhQUFhLE9BQU8sR0FBRztBQUNyRSxNQUFJLENBQUMsTUFBTSxRQUFRLE9BQU8sRUFBRyxRQUFPLE9BQU8sT0FBTztBQUNsRCxNQUFJLE1BQU07QUFDVixhQUFXLFFBQVEsU0FBUztBQUMxQixRQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCLGFBQU8sS0FBSztBQUFBLElBQ2QsV0FBVyxLQUFLLFNBQVMsV0FBVyxLQUFLLFFBQVEsTUFBTTtBQUNyRCxZQUFNLGNBQWMsV0FBVyxPQUFPLENBQUM7QUFDdkMsa0JBQVksSUFBSSxhQUFhLEVBQUUsTUFBTSxLQUFLLE9BQU8sTUFBTSxXQUFXLEtBQUssT0FBTyxVQUFVLENBQUM7QUFDekYsYUFBTztBQUFBLElBQ1QsT0FBTztBQUNMLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQUVPLFNBQVMsb0JBQW9CLE1BQU0sYUFBYSxTQUFTQSxhQUFZO0FBQzFFLFFBQU0sRUFBRSxTQUFTLEtBQUssSUFBSSxpQkFBaUIsTUFBTSxXQUFXO0FBQzVELFFBQU0sUUFBUSxNQUFNLFFBQVEsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLE1BQU0sUUFBUSxNQUFNLFFBQVEsQ0FBQztBQUNqRixRQUFNLFdBQVcsQ0FBQztBQUNsQixhQUFXLFFBQVEsT0FBTztBQUN4QixRQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCLGVBQVMsS0FBSyxJQUFJO0FBQ2xCO0FBQUEsSUFDRjtBQUNBLFVBQU0sUUFBUSxzQkFBc0IsS0FBSyxNQUFNLE1BQU07QUFDckQsUUFBSSxNQUFPLFVBQVMsS0FBSyxHQUFHLEtBQUs7QUFBQSxRQUM1QixVQUFTLEtBQUssSUFBSTtBQUFBLEVBQ3pCO0FBQ0EsTUFBSSxTQUFTLFdBQVcsS0FBSyxTQUFTLENBQUMsRUFBRSxTQUFTLE9BQVEsUUFBTyxFQUFFLFNBQVMsU0FBUyxDQUFDLEVBQUUsTUFBTSxLQUFLO0FBQ25HLFNBQU8sRUFBRSxTQUFTLFVBQVUsS0FBSztBQUNuQztBQTVJQSxJQUdNLGFBZ0RBO0FBbkROO0FBQUE7QUFHQSxJQUFNLGNBQWM7QUFBQSxNQUNsQixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsSUFDUDtBQXlDQSxJQUFNLGdCQUFnQjtBQUFBO0FBQUE7OztBQ25EdEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFTLFFBQUFDLGNBQVk7QUFxQnJCLFNBQVMsYUFBYUMsU0FBUUMsWUFBVyxNQUFNO0FBQzdDLE1BQUksQ0FBQyxLQUFNLFFBQU87QUFDbEIsUUFBTSxRQUFRRCxRQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJO0FBQ2hELE1BQUksTUFBTyxRQUFPO0FBQ2xCLE1BQUksS0FBSyxTQUFTLEdBQUcsRUFBRyxRQUFPLFdBQVcsTUFBTUMsVUFBUztBQUN6RCxRQUFNLFNBQVNELFFBQ1osT0FBTyxDQUFDLE1BQU0sRUFBRSxjQUFjLEtBQUssRUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQ3hDLE9BQU8sQ0FBQyxDQUFDLEtBQUssTUFBTSxTQUFTLENBQUMsRUFDOUIsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM3QixTQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSztBQUMzQjtBQUVBLGVBQWUsWUFBWTtBQUN6QixNQUFJLFFBQVEsTUFBTSxNQUFPLFFBQU87QUFDaEMsTUFBSSxPQUFPO0FBQ1gsbUJBQWlCLFNBQVMsUUFBUSxPQUFPO0FBQ3ZDLFlBQVE7QUFDUixRQUFJLEtBQUssU0FBUyxJQUFRO0FBQUEsRUFDNUI7QUFDQSxTQUFPLEtBQUssTUFBTSxHQUFHLEdBQU07QUFDN0I7QUFFQSxlQUFzQixZQUFZLE1BQU07QUFDdEMsUUFBTSxZQUFZLEtBQUssSUFBSTtBQUMzQixRQUFNLE1BQU0sS0FBSyxRQUFRLE1BQU07QUFBQSxFQUFDLElBQUksQ0FBQyxTQUFTLFFBQVEsT0FBTyxNQUFNLE9BQU8sSUFBSTtBQUU5RSxRQUFNRSxXQUFVLE1BQU0sZ0JBQWdCO0FBQ3RDLFFBQU1ELGFBQVksQ0FBQyxHQUFHLFVBQVUsYUFBYSxDQUFDLEdBQUcsR0FBSUMsV0FBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUU7QUFDOUUsTUFBSUQsV0FBVSxXQUFXLEdBQUc7QUFDMUIsWUFBUSxPQUFPLE1BQU0seUVBQXlFO0FBQzlGLFdBQU87QUFBQSxFQUNUO0FBQ0EsUUFBTUUsZUFBYyxNQUFNLFlBQVk7QUFDdEMsUUFBTUMsY0FBYUYsV0FBVSxNQUFNLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxJQUFJLElBQUk7QUFDM0UsUUFBTUYsVUFBUztBQUFBLElBQ2IsR0FBRyxjQUFjRyxjQUFhLENBQUMsVUFBVSxhQUFhLFVBQVUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU87QUFBQSxNQUNsRixHQUFHO0FBQUEsTUFDSCxXQUFXRixXQUFVLFNBQVMsRUFBRSxRQUFRO0FBQUEsSUFDMUMsRUFBRTtBQUFBLElBQ0YsSUFBSSxNQUFNLGdCQUFnQkcsV0FBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFdBQVdGLFNBQVEsRUFBRTtBQUFBLEVBQ2xGO0FBQ0EsUUFBTUcsVUFBUyxNQUFNLFdBQVc7QUFFaEMsUUFBTUMsU0FBUSxhQUFhTixTQUFRQyxZQUFXLEtBQUssS0FBSyxLQUNsREksUUFBTyxnQkFBZ0JMLFFBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTSyxRQUFPLGdCQUFnQixFQUFFLFNBQVMsS0FDeEYsYUFBYUwsT0FBTTtBQUN4QixNQUFJLENBQUNNLFVBQVNBLE9BQU0sY0FBYyxPQUFPO0FBQ3ZDLFlBQVEsT0FBTyxNQUFNLHdCQUF3QixLQUFLLFFBQVEsY0FBYyxLQUFLLEtBQUssTUFBTSxFQUFFO0FBQUEsQ0FBSTtBQUM5RixXQUFPO0FBQUEsRUFDVDtBQUNBLFFBQU0sU0FBUyxLQUFLLFdBQVdBLE9BQU0sU0FBUyxTQUFTO0FBRXZELFFBQU1DLFFBQU8sTUFBTSxpQkFBaUIsUUFBUSxJQUFJLENBQUM7QUFDakQsUUFBTSxRQUFRLEtBQUssQ0FBQ0EsTUFBSyxJQUFJLFdBQVcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLFFBQU1DLFVBQVMsbUJBQW1CO0FBRWxDLE1BQUk7QUFDSixNQUFJLFNBQVMsQ0FBQztBQUNkLE1BQUksS0FBSyxRQUFRO0FBQ2YsVUFBTSxPQUFPLEtBQUssT0FBTyxTQUFTLEdBQUcsSUFBSSxLQUFLLFNBQVNULE9BQUssWUFBWVEsTUFBSyxJQUFJLEdBQUcsR0FBRyxLQUFLLE1BQU0sUUFBUTtBQUMxRyxVQUFNLFNBQVMsTUFBTSxZQUFZLElBQUk7QUFDckMsY0FBVSxZQUFZLEVBQUUsTUFBTSxRQUFRLE9BQU8sT0FBTyxDQUFDO0FBQ3JELGFBQVMsT0FBTztBQUFBLEVBQ2xCLE9BQU87QUFDTCxjQUFVLGNBQWMsRUFBRSxLQUFLQSxNQUFLLEtBQUssTUFBTUEsTUFBSyxLQUFLLENBQUM7QUFBQSxFQUM1RDtBQUVBLFFBQU0sVUFBVSxDQUFDLFVBQVU7QUFDekIsV0FBTyxLQUFLLEtBQUs7QUFDakIsWUFBUSxPQUFPLEtBQUs7QUFDcEIsUUFBSSxLQUFLLFdBQVksU0FBUSxPQUFPLE1BQU0sS0FBSyxVQUFVLEtBQUssSUFBSSxJQUFJO0FBQUEsRUFDeEU7QUFFQSxRQUFNLFlBQVksTUFBTSxVQUFVO0FBQ2xDLFFBQU0sYUFBYSxZQUFZLEdBQUcsS0FBSyxNQUFNO0FBQUE7QUFBQTtBQUFBLEVBQXNCLFNBQVMsS0FBSyxLQUFLO0FBQ3RGLFFBQU0sRUFBRSxRQUFRLElBQUksb0JBQW9CLFlBQVksb0JBQUksSUFBSSxDQUFDO0FBQzdELFVBQVEsVUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBRXBFLFFBQU0sVUFBVSxZQUFZLE1BQU07QUFDbEMsUUFBTSxlQUFlLElBQUksSUFBSUEsTUFBSyxRQUFRLE1BQU07QUFDaEQsUUFBTSxFQUFFLE9BQU8sU0FBUyxJQUFJLGNBQWM7QUFBQSxJQUN4QyxLQUFLQSxNQUFLO0FBQUEsSUFDVixTQUFTQSxNQUFLO0FBQUEsSUFDZCxRQUFRQSxNQUFLO0FBQUEsSUFDYixRQUFBQztBQUFBLElBQ0EsUUFBUUQsTUFBSztBQUFBLElBQ2IsUUFBUSxjQUFjRixPQUFNO0FBQUEsSUFDNUIsVUFBVUUsTUFBSyxJQUFJLE1BQU07QUFBQSxJQUN6QixXQUFXLENBQUM7QUFBQSxJQUNaLGNBQWMsS0FBSyxnQkFBZ0I7QUFBQSxFQUNyQyxDQUFDO0FBRUQsTUFBSSxPQUFPO0FBQ1gsTUFBSUQsT0FBTSxhQUFhLFNBQVM7QUFDOUIsV0FBTyxNQUFNLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxJQUFJO0FBQ2pELFFBQUksQ0FBQyxNQUFNO0FBQ1QsY0FBUSxPQUFPLE1BQU0sa0VBQWtFO0FBQ3ZGLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLE1BQUksYUFBVUEsT0FBTSxJQUFJLEdBQUcsU0FBUyxTQUFNLE1BQU0sS0FBSyxFQUFFLGlCQUFjLFFBQVEsRUFBRSxFQUFFO0FBQ2pGLE1BQUksV0FBVztBQUNmLFFBQU0sU0FBUyxNQUFNLFFBQVE7QUFBQSxJQUMzQixTQUFTLFFBQVE7QUFBQSxJQUNqQjtBQUFBLElBQ0E7QUFBQSxJQUNBLFdBQVdBLE9BQU07QUFBQSxJQUNqQjtBQUFBLElBQ0E7QUFBQSxJQUNBLFFBQVEsa0JBQWtCO0FBQUEsTUFDeEIsS0FBS0MsTUFBSztBQUFBLE1BQ1YsY0FBY0EsTUFBSyxlQUFlO0FBQUEsTUFDbEMsUUFBUUEsTUFBSyxPQUFPLEtBQUs7QUFBQSxNQUN6QixpQkFBaUIsWUFBWSxNQUFNQSxNQUFLLE9BQU8sS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDLENBQUMsR0FBR0EsTUFBSyxJQUFJO0FBQUEsSUFDbEYsQ0FBQztBQUFBLElBQ0QsVUFBVSxDQUFDLFVBQVU7QUFDbkIsVUFBSSxNQUFNLFNBQVMsV0FBWSxhQUFZLE1BQU07QUFDakQsVUFBSSxNQUFNLFNBQVMsaUJBQWlCO0FBQ2xDLGNBQU0sUUFBUSxTQUFTLFFBQVEsR0FBRyxFQUFFO0FBQ3BDLFlBQUksWUFBTyxPQUFPLFFBQVEsTUFBTSxLQUFLLFNBQVMsSUFBSSxLQUFLLE9BQU8sU0FBUyxFQUFFLEVBQUU7QUFBQSxNQUM3RTtBQUNBLFVBQUksTUFBTSxTQUFTLGFBQWMsS0FBSSxZQUFPLE1BQU0sS0FBSyxTQUFTLElBQUksS0FBSyxNQUFNLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0FBQUEsSUFDdEc7QUFBQSxFQUNGLENBQUM7QUFFRCxNQUFJLFNBQVUsU0FBUSxVQUFVLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDO0FBQy9ELGFBQVcsV0FBVyxPQUFPLFNBQVUsU0FBUSxVQUFVLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNoRixhQUFXLFNBQVMsU0FBUyxRQUFTLFNBQVEsVUFBVSxhQUFhLEtBQUssQ0FBQztBQUMzRSxhQUFXLFFBQVFBLE1BQUssUUFBUSxRQUFRO0FBQ3RDLFFBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFHLFNBQVEsVUFBVSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUFBLEVBQzFFO0FBQ0EsTUFBSSxPQUFPLE1BQU8sU0FBUSxVQUFVLFNBQVMsRUFBRSxPQUFPRCxPQUFNLE1BQU0sT0FBTyxPQUFPLE9BQU8sWUFBWSxPQUFPLGlCQUFpQixDQUFDLENBQUM7QUFDN0gsTUFBSSxPQUFPLFlBQWEsU0FBUSxVQUFVLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFFMUQsUUFBTSxVQUFVRSxRQUFPLFFBQVE7QUFDL0IsTUFBSSxVQUFVLEVBQUcsS0FBSSxhQUFhLE9BQU8sb0JBQW9CLFlBQVksSUFBSSxLQUFLLEdBQUcsRUFBRTtBQUN2RixFQUFBQSxRQUFPLFFBQVE7QUFDZixRQUFNRCxNQUFLLElBQUksU0FBUyxFQUFFLE1BQU0sTUFBTTtBQUFBLEVBQUMsQ0FBQztBQUV4QyxRQUFNLE9BQU8sT0FBTyxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxlQUFlLE9BQU8sRUFBRSxZQUFZLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsV0FBVztBQUNwSSxRQUFNLFVBQVU7QUFBQSxJQUNkO0FBQUEsSUFDQSxTQUFTLFFBQVE7QUFBQSxJQUNqQixhQUFhLFFBQVE7QUFBQSxJQUNyQixPQUFPRCxPQUFNO0FBQUEsSUFDYixPQUFPLE9BQU87QUFBQSxJQUNkLE1BQU0sYUFBYSxVQUFVTixTQUFRTSxPQUFNLElBQUksR0FBRyxPQUFPLEtBQUs7QUFBQSxJQUM5RCxXQUFXLFNBQVMsUUFBUTtBQUFBLElBQzVCLGFBQWEsT0FBTztBQUFBLElBQ3BCLFlBQVksS0FBSyxJQUFJLElBQUk7QUFBQSxFQUMzQjtBQUVBLE1BQUksS0FBSyxLQUFNLFNBQVEsT0FBTyxNQUFNLEtBQUssVUFBVSxPQUFPLElBQUksSUFBSTtBQUFBLFdBQ3pELEtBQUssV0FBWSxTQUFRLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRSxNQUFNLFVBQVUsR0FBRyxTQUFTLE1BQU0sUUFBVyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJO0FBQUEsTUFDaEksU0FBUSxPQUFPLE1BQU0sT0FBTyxJQUFJO0FBRXJDLFNBQU8sT0FBTyxjQUFjLElBQUk7QUFDbEM7QUFwTEE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTs7O0FDbkJBLFNBQVMsZ0JBQUFHLHFCQUFvQjtBQUM3QixTQUFTLGFBQWE7OztBQ0RmLElBQU0sUUFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQmQsU0FBUyxVQUFVLE1BQU07QUFDOUIsUUFBTSxPQUFPLEVBQUUsTUFBTSxjQUFjO0FBQ25DLFFBQU0sWUFBWSxDQUFDLE1BQU0sTUFBTTtBQUM3QixRQUFJLElBQUksS0FBSyxLQUFLLE9BQVEsT0FBTSxJQUFJLE1BQU0sR0FBRyxJQUFJLG1CQUFtQjtBQUNwRSxXQUFPLEtBQUssSUFBSSxDQUFDO0FBQUEsRUFDbkI7QUFFQSxXQUFTLElBQUksR0FBRyxJQUFJLEtBQUssUUFBUSxLQUFLO0FBQ3BDLFVBQU0sTUFBTSxLQUFLLENBQUM7QUFDbEIsUUFBSSxRQUFRLFFBQVEsUUFBUSxXQUFXO0FBQ3JDLFdBQUssT0FBTztBQUNaLFdBQUssU0FBUyxVQUFVLEtBQUssQ0FBQztBQUM5QjtBQUFBLElBQ0YsV0FBVyxRQUFRLFNBQVUsTUFBSyxPQUFPO0FBQUEsYUFDaEMsUUFBUSxnQkFBaUIsTUFBSyxhQUFhO0FBQUEsYUFDM0MsUUFBUSxRQUFRLFFBQVEsV0FBVztBQUMxQyxXQUFLLFFBQVEsVUFBVSxLQUFLLENBQUM7QUFDN0I7QUFBQSxJQUNGLFdBQVcsUUFBUSxZQUFZO0FBQzdCLFlBQU0sUUFBUSxVQUFVLEtBQUssQ0FBQztBQUM5QixVQUFJLENBQUMsQ0FBQyxRQUFRLE9BQU8sVUFBVSxRQUFRLEtBQUssRUFBRSxTQUFTLEtBQUssR0FBRztBQUM3RCxjQUFNLElBQUksTUFBTSxtQkFBbUIsS0FBSyxpQ0FBaUM7QUFBQSxNQUMzRTtBQUNBLFdBQUssU0FBUztBQUNkO0FBQUEsSUFDRixXQUFXLFFBQVEsWUFBWTtBQUM3QixXQUFLLFNBQVMsVUFBVSxLQUFLLENBQUM7QUFDOUI7QUFBQSxJQUNGLFdBQVcsUUFBUSxvQkFBb0I7QUFDckMsV0FBSyxlQUFlLFNBQVMsVUFBVSxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ2xELFVBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxZQUFZLEtBQUssS0FBSyxlQUFlLEdBQUc7QUFDaEUsY0FBTSxJQUFJLE1BQU0sNkNBQTZDO0FBQUEsTUFDL0Q7QUFDQTtBQUFBLElBQ0YsV0FBVyxRQUFRLFlBQWEsTUFBSyxPQUFPO0FBQUEsYUFDbkMsUUFBUSxZQUFZLFFBQVEsV0FBWSxNQUFLLE9BQU87QUFBQSxhQUNwRCxRQUFRLFFBQVEsUUFBUSxVQUFXLE1BQUssUUFBUTtBQUFBLGFBQ2hELFFBQVEsUUFBUSxRQUFRLFNBQVUsTUFBSyxPQUFPO0FBQUEsYUFDOUMsUUFBUSxRQUFRLFFBQVEsWUFBYSxNQUFLLE9BQU87QUFBQSxRQUNyRCxPQUFNLElBQUksTUFBTSxxQkFBcUIsR0FBRyxHQUFHO0FBQUEsRUFDbEQ7QUFFQSxNQUFJLEtBQUssU0FBUyxjQUFjLENBQUMsS0FBSyxRQUFRLEtBQUssRUFBRyxPQUFNLElBQUksTUFBTSxnQ0FBZ0M7QUFDdEcsU0FBTztBQUNUOzs7QUQvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUVSTyxTQUFTLFdBQVcsVUFBVTtBQUNuQyxRQUFNLFFBQVEsU0FBUyxNQUFNLGlEQUFpRDtBQUM5RSxNQUFJLENBQUMsTUFBTyxRQUFPO0FBQ25CLFFBQU0sVUFBVSxDQUFDLFFBQVEsU0FBUyxLQUFLLEVBQUUsS0FBSyxNQUFNLElBQUksU0FBUztBQUNqRSxRQUFNLFlBQVksU0FBUyxRQUFRLE1BQU0sQ0FBQyxDQUFDLElBQUksU0FBUyxRQUFRLE1BQU0sQ0FBQyxDQUFDLElBQUksU0FBUyxRQUFRLE1BQU0sQ0FBQyxDQUFDO0FBQ3JHLFNBQU8sWUFBWSxNQUFNLFVBQVU7QUFDckM7QUFFTyxTQUFTLG1CQUFtQixPQUFPO0FBQ3hDLFFBQU0sU0FBUyxTQUFTLElBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQzVDLE1BQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFHLFFBQU87QUFDakMsUUFBTSxLQUFLLE9BQU8sS0FBSztBQUN2QixTQUFPLE9BQU8sS0FBSyxPQUFPLEtBQUssVUFBVTtBQUMzQztBQUVPLFNBQVMsb0JBQW9CLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQyxHQUFHO0FBQzVELFFBQU0sV0FBVyxNQUFNLG1CQUFtQixRQUFRLElBQUksU0FBUyxLQUFLO0FBQ3BFLE1BQUksQ0FBQyxRQUFRLE1BQU0sU0FBUyxDQUFDLFFBQVEsT0FBTyxNQUFPLFFBQU8sUUFBUSxRQUFRLFNBQVMsQ0FBQztBQUVwRixTQUFPLElBQUksUUFBUSxDQUFDQyxhQUFZO0FBQzlCLFFBQUksU0FBUztBQUNiLFFBQUksVUFBVTtBQUNkLFVBQU0sU0FBUyxRQUFRLE1BQU07QUFLN0IsVUFBTSxTQUFTLENBQUNDLFdBQVU7QUFDeEIsVUFBSSxRQUFTO0FBQ2IsZ0JBQVU7QUFDVixtQkFBYSxLQUFLO0FBQ2xCLGNBQVEsTUFBTSxJQUFJLFFBQVEsTUFBTTtBQUNoQyxjQUFRLE1BQU0sV0FBVyxNQUFNO0FBQy9CLE1BQUFELFNBQVFDLE1BQUs7QUFBQSxJQUNmO0FBRUEsVUFBTSxTQUFTLENBQUMsVUFBVTtBQUN4QixnQkFBVSxNQUFNLFNBQVMsUUFBUTtBQUNqQyxZQUFNQSxTQUFRLFdBQVcsTUFBTTtBQUMvQixVQUFJQSxPQUFPLFFBQU9BLE1BQUs7QUFBQSxJQUN6QjtBQUVBLFVBQU0sUUFBUSxXQUFXLE1BQU0sT0FBTyxTQUFTLENBQUMsR0FBRyxTQUFTO0FBQzVELFlBQVEsTUFBTSxXQUFXLElBQUk7QUFDN0IsWUFBUSxNQUFNLEdBQUcsUUFBUSxNQUFNO0FBQy9CLFlBQVEsTUFBTSxPQUFPO0FBQ3JCLFlBQVEsT0FBTyxNQUFNLGlCQUFpQjtBQUFBLEVBQ3hDLENBQUM7QUFDSDs7O0FGdENBO0FBQ0E7QUFDQTs7O0FHWk8sU0FBUyxvQkFBb0IsRUFBRSxTQUFTLE1BQU07QUFBQyxHQUFHLFdBQVcsTUFBTTtBQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUc7QUFDbkYsUUFBTUMsV0FBVSxvQkFBSSxJQUFJO0FBQ3hCLE1BQUksU0FBUztBQUViLFNBQU87QUFBQSxJQUNMLFNBQVMsY0FBYyxNQUFNO0FBQzNCLFlBQU0sVUFBVSxLQUFLLElBQUksR0FBRyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BELFlBQU0sS0FBSyxPQUFPLFFBQVE7QUFDMUIsWUFBTSxLQUFLLEtBQUssSUFBSSxJQUFJLFVBQVU7QUFDbEMsWUFBTSxRQUFRLFdBQVcsTUFBTTtBQUM3QixRQUFBQSxTQUFRLE9BQU8sRUFBRTtBQUNqQixpQkFBUztBQUNULGVBQU8sRUFBRSxJQUFJLE1BQU0sR0FBRyxDQUFDO0FBQUEsTUFDekIsR0FBRyxVQUFVLEdBQUk7QUFDakIsTUFBQUEsU0FBUSxJQUFJLElBQUksRUFBRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUM7QUFDdkMsZUFBUztBQUNULGFBQU8sRUFBRSxJQUFJLElBQUksUUFBUTtBQUFBLElBQzNCO0FBQUEsSUFDQSxPQUFPLElBQUk7QUFDVCxZQUFNLFNBQVNBLFNBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNyQyxVQUFJLENBQUMsT0FBUSxPQUFNLElBQUksTUFBTSw4QkFBOEIsRUFBRSxFQUFFO0FBQy9ELG1CQUFhLE9BQU8sS0FBSztBQUN6QixNQUFBQSxTQUFRLE9BQU8sT0FBTyxFQUFFLENBQUM7QUFDekIsZUFBUztBQUNULGFBQU8sRUFBRSxJQUFJLE9BQU8sSUFBSSxXQUFXLEtBQUs7QUFBQSxJQUMxQztBQUFBLElBQ0EsT0FBTztBQUNMLGFBQU8sQ0FBQyxHQUFHQSxTQUFRLE9BQU8sQ0FBQyxFQUN4QixJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sR0FBRyxPQUFPLEVBQUUsSUFBSSxNQUFNLEdBQUcsRUFBRSxFQUM1QyxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7QUFBQSxJQUMvQjtBQUFBLElBQ0EsVUFBVTtBQUNSLGFBQU9BLFNBQVE7QUFBQSxJQUNqQjtBQUFBLElBQ0EsWUFBWTtBQUNWLGlCQUFXLFVBQVVBLFNBQVEsT0FBTyxFQUFHLGNBQWEsT0FBTyxLQUFLO0FBQ2hFLE1BQUFBLFNBQVEsTUFBTTtBQUFBLElBQ2hCO0FBQUEsRUFDRjtBQUNGOzs7QUN2Q0EsU0FBUyxTQUFBQyxjQUFhO0FBQ3RCLFNBQVMsZ0JBQUFDLGVBQWMsVUFBVSxhQUFhO0FBQzlDLFNBQVMsV0FBQUMsVUFBUyxZQUFZLFFBQUFDLFFBQU0sV0FBQUMsZ0JBQWU7QUFFbkQsSUFBTSxjQUFjO0FBQ3BCLElBQU0sVUFBVTtBQUNoQixJQUFNLGlCQUFpQjtBQUV2QixTQUFTLFdBQVcsVUFBVTtBQUM1QixNQUFJLE1BQU07QUFDVixTQUFPLE1BQU07QUFDWCxVQUFNLFlBQVlELE9BQUssS0FBSyxNQUFNO0FBQ2xDLFFBQUk7QUFDRixZQUFNLE9BQU8sU0FBUyxTQUFTO0FBQy9CLFVBQUksS0FBSyxZQUFZLEVBQUcsUUFBTztBQUMvQixZQUFNLE9BQU9GLGNBQWEsV0FBVyxPQUFPO0FBQzVDLFlBQU0sUUFBUSxLQUFLLE1BQU0sdUJBQXVCO0FBQ2hELFVBQUksTUFBTyxRQUFPLFdBQVcsTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSUcsU0FBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0FBQUEsSUFDM0UsUUFBUTtBQUFBLElBQUM7QUFDVCxVQUFNLFNBQVNGLFNBQVEsR0FBRztBQUMxQixRQUFJLFdBQVcsSUFBSyxRQUFPO0FBQzNCLFVBQU07QUFBQSxFQUNSO0FBQ0Y7QUFFQSxTQUFTLFdBQVcsUUFBUTtBQUMxQixNQUFJO0FBQ0YsVUFBTSxPQUFPRCxjQUFhRSxPQUFLLFFBQVEsTUFBTSxHQUFHLE9BQU8sRUFBRSxLQUFLO0FBQzlELFVBQU0sTUFBTSxLQUFLLE1BQU0sMEJBQTBCO0FBQ2pELFdBQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sR0FBRyxDQUFDO0FBQUEsRUFDdkMsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFQSxTQUFTLGVBQWUsUUFBUTtBQUM5QixRQUFNLFFBQVEsT0FBTyxNQUFNLGlCQUFpQjtBQUM1QyxRQUFNLFVBQVUsT0FBTyxNQUFNLGdCQUFnQjtBQUM3QyxTQUFPO0FBQUEsSUFDTCxPQUFPLFFBQVEsT0FBTyxNQUFNLENBQUMsQ0FBQyxJQUFJO0FBQUEsSUFDbEMsU0FBUyxVQUFVLE9BQU8sUUFBUSxDQUFDLENBQUMsSUFBSTtBQUFBLEVBQzFDO0FBQ0Y7QUFFTyxTQUFTLGlCQUFpQixFQUFFLFdBQVcsTUFBTTtBQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUc7QUFDN0QsTUFBSSxVQUFVO0FBQ2QsTUFBSSxPQUFPO0FBQ1gsTUFBSSxTQUFTO0FBQ2IsTUFBSSxRQUFRO0FBQ1osTUFBSSxVQUFVO0FBQ2QsTUFBSSxPQUFPO0FBQ1gsTUFBSSxXQUFXO0FBQ2YsTUFBSSxRQUFRO0FBQ1osTUFBSSxRQUFRO0FBQ1osTUFBSSxVQUFVO0FBRWQsV0FBUyxXQUFXO0FBQ2xCLGFBQVM7QUFDVCxhQUFTLE1BQU07QUFDZixjQUFVO0FBQ1YsUUFBSSxLQUFNLGVBQWMsSUFBSTtBQUM1QixXQUFPO0FBQ1AsUUFBSSxTQUFVLGNBQWEsUUFBUTtBQUNuQyxlQUFXO0FBQ1gsV0FBTyxLQUFLLFNBQVM7QUFDckIsWUFBUTtBQUNSLFlBQVE7QUFDUixRQUFJLFNBQVM7QUFDWCxnQkFBVTtBQUNWLGVBQVM7QUFBQSxJQUNYO0FBQUEsRUFDRjtBQUVBLFdBQVMsUUFBUTtBQUNmLGFBQVM7QUFDVCxRQUFJLENBQUMsV0FBVyxDQUFDLEtBQU07QUFDdkIsYUFBUyxXQUFXLElBQUk7QUFDeEIsUUFBSSxDQUFDLE9BQVE7QUFDYixVQUFNLFVBQVU7QUFDaEIsUUFBSTtBQUNGLGdCQUFVLE1BQU0sUUFBUSxNQUFNO0FBQzVCLFlBQUksVUFBVSxRQUFTLFNBQVE7QUFBQSxNQUNqQyxDQUFDO0FBQ0QsY0FBUSxHQUFHLFNBQVMsTUFBTTtBQUFBLE1BQUMsQ0FBQztBQUFBLElBQzlCLFFBQVE7QUFDTixnQkFBVTtBQUFBLElBQ1o7QUFDQSxXQUFPLFlBQVksS0FBSyxPQUFPO0FBQy9CLFNBQUssUUFBUTtBQUNiLFFBQUk7QUFBQSxFQUNOO0FBRUEsV0FBUyxVQUFVO0FBQ2pCLFFBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxTQUFVO0FBQ3JDLGVBQVcsV0FBVyxNQUFNO0FBQzFCLGlCQUFXO0FBQ1gsVUFBSTtBQUFBLElBQ04sR0FBRyxXQUFXO0FBQ2QsYUFBUyxRQUFRO0FBQUEsRUFDbkI7QUFFQSxXQUFTLE1BQU07QUFDYixRQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFNO0FBQ2xDLFFBQUksT0FBTztBQUNULGNBQVE7QUFDUjtBQUFBLElBQ0Y7QUFDQSxVQUFNLFVBQVU7QUFDaEIsVUFBTSxTQUFTLFdBQVcsTUFBTTtBQUNoQyxVQUFNLE9BQU9ILE9BQU0sT0FBTyxDQUFDLHVCQUF1QixRQUFRLFFBQVEsYUFBYSxHQUFHO0FBQUEsTUFDaEYsS0FBSztBQUFBLE1BQ0wsT0FBTyxDQUFDLFVBQVUsUUFBUSxRQUFRO0FBQUEsSUFDcEMsQ0FBQztBQUNELFlBQVE7QUFDUixRQUFJLFNBQVM7QUFDYixTQUFLLE9BQU8sR0FBRyxRQUFRLENBQUMsVUFBVTtBQUNoQyxnQkFBVTtBQUFBLElBQ1osQ0FBQztBQUNELFVBQU0sVUFBVSxXQUFXLE1BQU0sS0FBSyxLQUFLLFNBQVMsR0FBRyxjQUFjO0FBQ3JFLFlBQVEsUUFBUTtBQUNoQixRQUFJLFdBQVc7QUFDZixVQUFNLE9BQU8sQ0FBQyxTQUFTO0FBQ3JCLFVBQUksU0FBVTtBQUNkLGlCQUFXO0FBQ1gsbUJBQWEsT0FBTztBQUNwQixVQUFJLFVBQVUsS0FBTSxTQUFRO0FBQzVCLFVBQUksVUFBVSxRQUFTO0FBQ3ZCLFlBQU0sUUFBUSxTQUFTLElBQUksZUFBZSxNQUFNLElBQUksRUFBRSxPQUFPLEdBQUcsU0FBUyxFQUFFO0FBQzNFLFlBQU0sT0FBTyxTQUFTLEVBQUUsUUFBUSxHQUFHLE1BQU0sSUFBSTtBQUM3QyxVQUFJLEtBQUssVUFBVSxJQUFJLE1BQU0sS0FBSyxVQUFVLE9BQU8sR0FBRztBQUNwRCxrQkFBVTtBQUNWLGlCQUFTO0FBQUEsTUFDWDtBQUNBLFVBQUksT0FBTztBQUNULGdCQUFRO0FBQ1IsZ0JBQVE7QUFBQSxNQUNWO0FBQUEsSUFDRjtBQUNBLFNBQUssR0FBRyxTQUFTLElBQUk7QUFDckIsU0FBSyxHQUFHLFNBQVMsTUFBTSxLQUFLLEVBQUUsQ0FBQztBQUFBLEVBQ2pDO0FBRUEsU0FBTztBQUFBLElBQ0wsUUFBUSxNQUFNO0FBQUEsSUFDZDtBQUFBLElBQ0EsU0FBUyxVQUFVO0FBQ2pCLGFBQU87QUFDUCxZQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsV0FBVyxPQUFPO0FBQ2hCLGdCQUFVLFVBQVU7QUFDcEIsWUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLFNBQVM7QUFBQSxFQUNYO0FBQ0Y7OztBQ3RKQTtBQUNBO0FBQ0E7QUFQQSxTQUFTLGNBQUFLLG1CQUFrQjtBQUMzQixTQUFTLGFBQUFDLG1CQUFpQjtBQUMxQixTQUFTLFdBQUFDLGdCQUFlO0FBQ3hCLFNBQVMsUUFBQUMsY0FBWTtBQUNyQixTQUFTLGdCQUFBQyxlQUFjLFFBQUFDLE9BQU0sYUFBYSxhQUFBQyxZQUFXLFNBQVMsV0FBQUMsVUFBUyxVQUFVLFlBQUFDLFdBQVUsY0FBYyxlQUFlLFlBQUFDLFdBQVUsYUFBQUMsWUFBVyxZQUFBQyxXQUFVLGNBQWMsZ0JBQWdCOzs7QUNGckw7QUFGQSxTQUFTLGNBQUFDLGFBQVksWUFBQUMsWUFBVSxXQUFBQyxnQkFBZTtBQUM5QyxTQUFTLFFBQUFDLGNBQVk7QUFHckIsSUFBTSx3QkFBd0I7QUFFOUIsZUFBc0IsYUFBYSxNQUFNLE1BQU07QUFDN0MsWUFBVSxXQUFXLElBQUksQ0FBQztBQUMxQixRQUFNSCxZQUFXLG1CQUFtQixJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUUsTUFBTSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJO0FBQzVGO0FBRUEsU0FBUyxpQkFBaUIsTUFBTTtBQUM5QixTQUFPLEtBQ0osTUFBTSxJQUFJLEVBQ1YsSUFBSSxDQUFDLFNBQVM7QUFDYixRQUFJO0FBQ0YsYUFBTyxLQUFLLEtBQUssSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJO0FBQUEsSUFDMUMsUUFBUTtBQUNOLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRixDQUFDLEVBQ0EsT0FBTyxPQUFPO0FBQ25CO0FBRUEsZUFBZSxZQUFZLE1BQU1JLFFBQU87QUFDdEMsTUFBSTtBQUNGLFVBQU0sVUFBVSxpQkFBaUIsTUFBTUgsV0FBUyxNQUFNLE9BQU8sQ0FBQztBQUM5RCxXQUFPLFFBQ0osT0FBTyxDQUFDLE1BQU0sT0FBTyxFQUFFLFNBQVMsWUFBWSxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQ3pELE1BQU0sQ0FBQyxxQkFBcUIsRUFDNUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsTUFBTSxHQUFHLE9BQUFHLE9BQU0sRUFBRTtBQUFBLEVBQ3hELFFBQVE7QUFDTixXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7QUFFTyxTQUFTLG1CQUFtQixNQUFNO0FBQ3ZDLFNBQU8sWUFBWSxtQkFBbUIsSUFBSSxHQUFHLFNBQVM7QUFDeEQ7QUFFQSxlQUFzQixvQkFBb0I7QUFDeEMsUUFBTSxjQUFjRCxPQUFLLFNBQVMsR0FBRyxVQUFVO0FBQy9DLE1BQUksV0FBVyxDQUFDO0FBQ2hCLE1BQUk7QUFDRixlQUFXLE1BQU1ELFNBQVEsV0FBVztBQUFBLEVBQ3RDLFFBQVE7QUFBQSxFQUFDO0FBQ1QsUUFBTSxTQUFTLE1BQU0sUUFBUTtBQUFBLElBQzNCLFNBQVMsSUFBSSxDQUFDLE1BQU0sWUFBWUMsT0FBSyxhQUFhLEdBQUcsZUFBZSxHQUFHLFlBQVksQ0FBQztBQUFBLEVBQ3RGO0FBQ0EsU0FBTyxPQUFPLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEdBQUcscUJBQXFCO0FBQ2pGOzs7QUR6Q0E7OztBRVRBLFNBQVMsV0FBQUUsZ0JBQWU7QUFFakIsU0FBUyxXQUFXLFdBQVcsQ0FBQyxHQUFHO0FBQ3hDLFdBQVMsSUFBSSxTQUFTLFNBQVMsR0FBRyxLQUFLLEdBQUcsS0FBSztBQUM3QyxRQUFJLFNBQVMsQ0FBQyxFQUFFLFNBQVMsYUFBYTtBQUNwQyxZQUFNLE9BQU9BLFNBQVEsU0FBUyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsS0FBSztBQUNyRCxVQUFJLEtBQU0sUUFBTztBQUFBLElBQ25CO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQUVBLFNBQVMsY0FBYyxNQUFNLElBQUk7QUFDL0IsU0FBTztBQUFBLElBQ0wsSUFBSSxPQUFPLEtBQUssT0FBTztBQUFBLElBQ3ZCLGFBQWEsS0FBSyxlQUFlLEtBQUssUUFBUSxNQUFNLEdBQUcsRUFBRSxLQUFLLFNBQVMsS0FBSyxPQUFPO0FBQUEsSUFDbkYsUUFBUSxLQUFLLFVBQVU7QUFBQSxJQUN2QixPQUFPLEtBQUssU0FBUztBQUFBLElBQ3JCLE1BQU0sS0FBSyxRQUFRO0FBQUEsSUFDbkIsVUFBVSxLQUFLLFlBQVk7QUFBQSxJQUMzQixPQUFPLEtBQUssU0FBUyxDQUFDO0FBQUEsSUFDdEIsUUFBUTtBQUFBLElBQ1IsV0FBVztBQUFBLElBQ1gsV0FBVztBQUFBLElBQ1gsV0FBVztBQUFBLElBQ1gsU0FBUztBQUFBLElBQ1QsUUFBUSxDQUFDO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsSUFDUCxPQUFPO0FBQUEsSUFDUCxTQUFTO0FBQUEsRUFDWDtBQUNGO0FBRU8sU0FBUyxrQkFBa0IsU0FBUyxDQUFDLEdBQUc7QUFDN0MsUUFBTSxTQUFTLG9CQUFJLElBQUk7QUFDdkIsYUFBVyxVQUFVLFFBQVE7QUFDM0IsVUFBTSxPQUFPLE9BQU8sUUFBUSxDQUFDO0FBQzdCLFVBQU0sS0FBSyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ3BDLFFBQUksQ0FBQyxHQUFJO0FBQ1QsUUFBSSxPQUFPLFNBQVMsZUFBZTtBQUNqQyxhQUFPLElBQUksSUFBSSxjQUFjLE1BQU0sT0FBTyxFQUFFLENBQUM7QUFDN0M7QUFBQSxJQUNGO0FBQ0EsUUFBSSxPQUFPLFNBQVMsaUJBQWlCO0FBQ25DLGFBQU8sT0FBTyxFQUFFO0FBQ2hCO0FBQUEsSUFDRjtBQUNBLFVBQU0sUUFBUSxPQUFPLElBQUksRUFBRTtBQUMzQixRQUFJLENBQUMsTUFBTztBQUNaLFFBQUksT0FBTyxTQUFTLGVBQWU7QUFDakMsWUFBTSxPQUFPLEtBQUssS0FBSyxLQUFLO0FBQzVCLFlBQU0sWUFBWSxPQUFPO0FBQ3pCLFVBQUksS0FBSyxPQUFPLFNBQVMsUUFBUyxPQUFNLFFBQVEsS0FBSyxNQUFNO0FBQUEsSUFDN0QsV0FBVyxPQUFPLFNBQVMsZ0JBQWdCO0FBQ3pDLFlBQU0sU0FBUyxLQUFLLFVBQVUsV0FBVyxLQUFLLFFBQVE7QUFDdEQsWUFBTSxRQUFRLEtBQUssU0FBUyxNQUFNO0FBQ2xDLFlBQU0sUUFBUSxLQUFLLFNBQVM7QUFDNUIsWUFBTSxTQUFTLEtBQUssUUFBUSxXQUFXLEtBQUssY0FBYyxjQUFjO0FBQ3hFLFlBQU0sWUFBWSxPQUFPO0FBQ3pCLFlBQU0sVUFBVSxPQUFPO0FBQUEsSUFDekI7QUFBQSxFQUNGO0FBQ0EsUUFBTSxXQUFXLENBQUMsR0FBRyxPQUFPLE9BQU8sQ0FBQztBQUNwQyxhQUFXLFNBQVMsVUFBVTtBQUM1QixVQUFNLE9BQU8sUUFBUSxRQUFRLEtBQUs7QUFDbEMsVUFBTSxVQUFVLE1BQU07QUFBQSxJQUFDO0FBQUEsRUFDekI7QUFDQSxTQUFPO0FBQ1Q7QUFFTyxTQUFTLG1CQUFtQixFQUFFLEtBQUssY0FBYyxHQUFHLFdBQVcsTUFBTTtBQUFDLEdBQUcsV0FBVyxNQUFNO0FBQUMsR0FBRyxVQUFVLE1BQU07QUFBQyxHQUFHLFdBQVcsTUFBTTtBQUFDLEdBQUcsV0FBVyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRztBQUMxSyxRQUFNLFNBQVMsb0JBQUksSUFBSTtBQUN2QixRQUFNLFFBQVEsQ0FBQztBQUNmLE1BQUksU0FBUztBQUNiLE1BQUksU0FBUztBQUNiLE1BQUksYUFBYTtBQUVqQixRQUFNLFVBQVUsTUFBTSxTQUFTO0FBRS9CLFdBQVMsT0FBTztBQUNkLFdBQU8sU0FBUyxlQUFlLE1BQU0sUUFBUTtBQUMzQyxZQUFNLFFBQVEsTUFBTSxNQUFNO0FBQzFCLFVBQUksTUFBTSxXQUFXLFNBQVU7QUFDL0IsWUFBTSxTQUFTO0FBQ2YsWUFBTSxZQUFZLEtBQUssSUFBSTtBQUMzQixZQUFNLGFBQWE7QUFDbkI7QUFDQSxjQUFRO0FBQ1IsY0FBUSxRQUFRLEVBQUUsS0FBSyxNQUFNLElBQUksT0FBTyxNQUFNLFdBQVcsUUFBUSxDQUFDLFVBQVU7QUFDMUUsWUFBSSxNQUFNLGVBQWUsV0FBWTtBQUNyQyxjQUFNLE9BQU8sS0FBSyxLQUFLO0FBQ3ZCLFlBQUksTUFBTSxTQUFTLFFBQVMsT0FBTSxRQUFRLE1BQU07QUFDaEQsY0FBTSxZQUFZLEtBQUssSUFBSTtBQUMzQixnQkFBUSxPQUFPLEtBQUs7QUFDcEIsZ0JBQVE7QUFBQSxNQUNWLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXO0FBQ25CLFlBQUksTUFBTSxlQUFlLFdBQVk7QUFDckMsY0FBTSxTQUFTLE9BQU8sV0FBVyxXQUFXLFNBQVMsV0FBVyxRQUFRLFFBQVE7QUFDaEYsY0FBTSxRQUFRLFFBQVEsU0FBUyxNQUFNO0FBQ3JDLGNBQU0sUUFBUSxRQUFRLFNBQVM7QUFDL0IsY0FBTSxTQUFTLE1BQU0sUUFBUSxXQUFXLFFBQVEsY0FBYyxjQUFjO0FBQUEsTUFDOUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxVQUFVO0FBQ2xCLFlBQUksTUFBTSxlQUFlLFdBQVk7QUFDckMsY0FBTSxRQUFRLE9BQU8sT0FBTyxXQUFXLEtBQUs7QUFDNUMsY0FBTSxTQUFTLE1BQU0sV0FBVyxPQUFPLFVBQVUsY0FBYztBQUFBLE1BQ2pFLENBQUMsRUFBRSxRQUFRLE1BQU07QUFDZixZQUFJLE1BQU0sZUFBZSxXQUFZLFFBQU8sTUFBTSxRQUFRLEtBQUs7QUFDL0QsY0FBTSxVQUFVLEtBQUssSUFBSTtBQUN6QjtBQUNBLGlCQUFTLEtBQUs7QUFDZCxnQkFBUTtBQUNSLGNBQU0sUUFBUSxLQUFLO0FBQ25CLGFBQUs7QUFBQSxNQUNQLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUVBLFdBQVMsTUFBTSxTQUFTO0FBQ3RCLGNBQVUsRUFBRSxHQUFHLFNBQVMsR0FBRyxHQUFHLFFBQVE7QUFDdEMsVUFBTSxLQUFLLE9BQU8sUUFBUTtBQUMxQixRQUFJQztBQUNKLFVBQU0sT0FBTyxJQUFJLFFBQVEsQ0FBQyxNQUFNO0FBQUUsTUFBQUEsV0FBVTtBQUFBLElBQUUsQ0FBQztBQUMvQyxRQUFJLENBQUMsUUFBUSxRQUFRLEtBQUssRUFBRyxPQUFNLElBQUksTUFBTSwwQkFBMEI7QUFDdkUsVUFBTSxRQUFRO0FBQUEsTUFDWjtBQUFBLE1BQ0EsYUFBYSxRQUFRLGVBQWUsUUFBUSxPQUFPLE1BQU0sR0FBRyxFQUFFO0FBQUEsTUFDOUQsUUFBUSxRQUFRO0FBQUEsTUFDaEIsT0FBTyxRQUFRO0FBQUEsTUFDZixNQUFNLFFBQVEsUUFBUTtBQUFBLE1BQ3RCLFVBQVUsUUFBUSxZQUFZO0FBQUEsTUFDOUIsT0FBTyxRQUFRLFNBQVMsQ0FBQztBQUFBLE1BQ3pCLFFBQVE7QUFBQSxNQUNSLFdBQVcsS0FBSyxJQUFJO0FBQUEsTUFDcEIsV0FBVyxLQUFLLElBQUk7QUFBQSxNQUNwQixXQUFXO0FBQUEsTUFDWCxTQUFTO0FBQUEsTUFDVCxRQUFRLENBQUM7QUFBQSxNQUNULFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxNQUNQLFlBQVksSUFBSSxnQkFBZ0I7QUFBQSxNQUNoQyxTQUFBQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUNBLFdBQU8sSUFBSSxJQUFJLEtBQUs7QUFDcEIsYUFBUyxLQUFLO0FBQ2QsVUFBTSxLQUFLLEtBQUs7QUFDaEIsWUFBUTtBQUNSLFNBQUs7QUFDTCxXQUFPO0FBQUEsRUFDVDtBQUVBLFdBQVMsUUFBUSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBVyxTQUFTLE9BQU8sT0FBTyxHQUFHO0FBQ25DLFVBQUksTUFBTSxXQUFXLFNBQVUsT0FBTSxRQUFRLEtBQUs7QUFBQSxlQUN6QyxNQUFNLFdBQVcsVUFBVyxPQUFNLFdBQVcsTUFBTTtBQUFBLElBQzlEO0FBQ0EsV0FBTyxNQUFNO0FBQ2IsVUFBTSxTQUFTO0FBQ2YsYUFBUztBQUNULFFBQUksUUFBUTtBQUNaLGVBQVcsU0FBUyxrQkFBa0IsTUFBTSxHQUFHO0FBQzdDLGFBQU8sSUFBSSxNQUFNLElBQUksS0FBSztBQUMxQixjQUFRLEtBQUssSUFBSSxPQUFPLE9BQU8sTUFBTSxFQUFFLEtBQUssQ0FBQztBQUFBLElBQy9DO0FBQ0EsYUFBUyxRQUFRO0FBQ2pCLFlBQVE7QUFBQSxFQUNWO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQSxPQUFPLE1BQU0sUUFBUSxDQUFDLENBQUM7QUFBQSxJQUN2QixLQUFLLENBQUMsT0FBTyxPQUFPLElBQUksT0FBTyxFQUFFLENBQUMsS0FBSztBQUFBLElBQ3ZDLE1BQU0sTUFBTSxDQUFDLEdBQUcsT0FBTyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLE9BQU8sRUFBRSxFQUFFLElBQUksT0FBTyxFQUFFLEVBQUUsQ0FBQztBQUFBLElBQzNFLFNBQVMsT0FBTyxRQUFRO0FBQ3RCLFlBQU0sV0FBVyxNQUFNLFFBQVEsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxPQUFPLE9BQU8sQ0FBQztBQUNoRyxZQUFNLEtBQUssS0FBSyxJQUFJO0FBQ3BCLGlCQUFXLFNBQVMsU0FBVSxPQUFNLGNBQWM7QUFDbEQsY0FBUTtBQUNSLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxRQUFRLElBQUk7QUFDVixZQUFNLFFBQVEsT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ25DLFVBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxTQUFTLEVBQUUsU0FBUyxNQUFNLE1BQU0sRUFBRyxRQUFPO0FBQ25FLGFBQU8sT0FBTyxPQUFPLEVBQUUsQ0FBQztBQUN4QixjQUFRO0FBQ1IsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLE9BQU8sSUFBSTtBQUNULFlBQU0sUUFBUSxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7QUFDbkMsVUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLFVBQVUsV0FBVyxFQUFFLFNBQVMsTUFBTSxNQUFNLEVBQUcsUUFBTztBQUNsRixVQUFJLE1BQU0sV0FBVyxVQUFVO0FBQzdCLGNBQU0sU0FBUztBQUNmLGNBQU0sVUFBVSxLQUFLLElBQUk7QUFDekIsaUJBQVMsS0FBSztBQUNkLGNBQU0sUUFBUSxLQUFLO0FBQ25CLGdCQUFRO0FBQUEsTUFDVixNQUFPLE9BQU0sV0FBVyxNQUFNO0FBQzlCLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxZQUFZO0FBQ1YsaUJBQVcsU0FBUyxPQUFPLE9BQU8sRUFBRyxNQUFLLE9BQU8sTUFBTSxFQUFFO0FBQUEsSUFDM0Q7QUFBQSxFQUNGO0FBQ0Y7OztBRnJNQTtBQUNBOzs7QUdUQTtBQUhBLFNBQVMsV0FBQUMsVUFBUyxRQUFBQyxhQUFZO0FBQzlCLFNBQVMsUUFBQUMsY0FBWTtBQUNyQixTQUFTLHFCQUFxQjtBQUd2QixTQUFTLGlCQUFpQjtBQUMvQixTQUFPQSxPQUFLLFNBQVMsR0FBRyxPQUFPO0FBQ2pDO0FBRU8sU0FBUyxnQkFBZ0IsTUFBTTtBQUNwQyxTQUFPQSxPQUFLLE1BQU0sU0FBUyxPQUFPO0FBQ3BDO0FBRUEsU0FBUyxTQUFTLE1BQU0sTUFBTTtBQUM1QixNQUFJLENBQUMsUUFBUSxPQUFPLFNBQVMsU0FBVSxPQUFNLElBQUksTUFBTSxxQ0FBcUM7QUFDNUYsTUFBSSxPQUFPLEtBQUssU0FBUyxZQUFZLENBQUMsS0FBSyxLQUFNLE9BQU0sSUFBSSxNQUFNLDRCQUE0QjtBQUM3RixNQUFJLE9BQU8sS0FBSyxnQkFBZ0IsU0FBVSxPQUFNLElBQUksTUFBTSxtQ0FBbUM7QUFDN0YsTUFBSSxPQUFPLEtBQUssWUFBWSxXQUFZLE9BQU0sSUFBSSxNQUFNLGlDQUFpQztBQUN6RixNQUFJLENBQUMsS0FBSyxVQUFVLE9BQU8sS0FBSyxXQUFXLFNBQVUsT0FBTSxJQUFJLE1BQU0sK0JBQStCO0FBQ3BHLFNBQU8sRUFBRSxHQUFHLE1BQU0sT0FBTyxLQUFLO0FBQ2hDO0FBRUEsZUFBZSxTQUFTLE1BQU0sU0FBUztBQUNyQyxRQUFNLEVBQUUsUUFBUSxJQUFJLE1BQU1ELE1BQUssSUFBSTtBQUNuQyxRQUFNLFNBQVMsTUFBTSxPQUFPLEdBQUcsY0FBYyxJQUFJLEVBQUUsSUFBSSxNQUFNLE9BQU87QUFDcEUsUUFBTSxXQUFXLE9BQU87QUFDeEIsUUFBTSxPQUFPLE9BQU8sYUFBYSxhQUFhLE1BQU0sU0FBUyxPQUFPLElBQUk7QUFDeEUsU0FBTyxTQUFTLE1BQU0sSUFBSTtBQUM1QjtBQUVBLGVBQWVFLFNBQVEsS0FBSyxTQUFTLFFBQVE7QUFDM0MsTUFBSSxRQUFRLENBQUM7QUFDYixNQUFJO0FBQ0YsWUFBUSxNQUFNSCxTQUFRLEdBQUc7QUFBQSxFQUMzQixRQUFRO0FBQ04sV0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFO0FBQUEsRUFDakM7QUFDQSxRQUFNLFFBQVEsQ0FBQztBQUNmLFFBQU0sU0FBUyxDQUFDO0FBQ2hCLGFBQVcsUUFBUSxPQUFPO0FBQ3hCLFFBQUksQ0FBQyxLQUFLLFNBQVMsS0FBSyxLQUFLLENBQUMsS0FBSyxTQUFTLE1BQU0sRUFBRztBQUNyRCxVQUFNLE9BQU9FLE9BQUssS0FBSyxJQUFJO0FBQzNCLFFBQUk7QUFDRixZQUFNLEtBQUssRUFBRSxHQUFJLE1BQU0sU0FBUyxNQUFNLE9BQU8sR0FBSSxPQUFPLENBQUM7QUFBQSxJQUMzRCxTQUFTLEtBQUs7QUFDWixhQUFPLEtBQUssRUFBRSxNQUFNLE9BQU8sT0FBTyxJQUFJLFdBQVcsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUFBLElBQ3ZFO0FBQUEsRUFDRjtBQUNBLFNBQU8sRUFBRSxPQUFPLE9BQU87QUFDekI7QUFFQSxlQUFzQixjQUFjLEVBQUUsS0FBSyxLQUFLLEdBQUc7QUFDakQsUUFBTSxVQUFVLEVBQUUsS0FBSyxLQUFLO0FBQzVCLFFBQU0sU0FBUyxNQUFNQyxTQUFRLGVBQWUsR0FBRyxTQUFTLFFBQVE7QUFDaEUsUUFBTSxVQUFVLE1BQU1BLFNBQVEsZ0JBQWdCLElBQUksR0FBRyxTQUFTLFNBQVM7QUFDdkUsUUFBTSxTQUFTLG9CQUFJLElBQUk7QUFDdkIsYUFBVyxRQUFRLENBQUMsR0FBRyxPQUFPLE9BQU8sR0FBRyxRQUFRLEtBQUssRUFBRyxRQUFPLElBQUksS0FBSyxNQUFNLElBQUk7QUFDbEYsU0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsT0FBTyxRQUFRLEdBQUcsUUFBUSxNQUFNLEVBQUU7QUFDdEY7OztBSDVDQTtBQUNBOzs7QUlmQSxTQUFTLFlBQUFDLFlBQVUsYUFBQUMsa0JBQWlCO0FBRXBDLGVBQWUsWUFBWSxNQUFNO0FBQy9CLE1BQUk7QUFDRixXQUFPLE1BQU1ELFdBQVMsTUFBTSxPQUFPO0FBQUEsRUFDckMsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFQSxlQUFzQixZQUFZLE9BQU87QUFDdkMsUUFBTSxXQUFXLENBQUM7QUFDbEIsUUFBTSxVQUFVLENBQUM7QUFDakIsYUFBVyxRQUFRLENBQUMsR0FBRyxLQUFLLEVBQUUsUUFBUSxHQUFHO0FBQ3ZDLFVBQU0sRUFBRSxNQUFNLFFBQVEsTUFBTSxJQUFJLEtBQUs7QUFDckMsVUFBTSxVQUFVLE1BQU0sWUFBWSxJQUFJO0FBQ3RDLFFBQUksWUFBWSxPQUFPO0FBQ3JCLFlBQU1DLFdBQVUsTUFBTSxRQUFRLE9BQU87QUFDckMsZUFBUyxLQUFLLEtBQUssTUFBTTtBQUFBLElBQzNCLE9BQU87QUFDTCxjQUFRLEtBQUssRUFBRSxNQUFNLFFBQVEsS0FBSyxRQUFRLFFBQVEsMEJBQTBCLENBQUM7QUFBQSxJQUMvRTtBQUFBLEVBQ0Y7QUFDQSxTQUFPLEVBQUUsVUFBVSxRQUFRO0FBQzdCO0FBRUEsZUFBc0IsYUFBYSxPQUFPO0FBQ3hDLFFBQU0sWUFBWSxDQUFDO0FBQ25CLFFBQU0sVUFBVSxDQUFDO0FBQ2pCLGFBQVcsUUFBUSxPQUFPO0FBQ3hCLFVBQU0sRUFBRSxNQUFNLFFBQVEsTUFBTSxJQUFJLEtBQUs7QUFDckMsVUFBTSxVQUFVLE1BQU0sWUFBWSxJQUFJO0FBQ3RDLFFBQUksWUFBWSxRQUFRO0FBQ3RCLFlBQU1BLFdBQVUsTUFBTSxPQUFPLE9BQU87QUFDcEMsZ0JBQVUsS0FBSyxLQUFLLE1BQU07QUFBQSxJQUM1QixPQUFPO0FBQ0wsY0FBUSxLQUFLLEVBQUUsTUFBTSxRQUFRLEtBQUssUUFBUSxRQUFRLDRCQUE0QixDQUFDO0FBQUEsSUFDakY7QUFBQSxFQUNGO0FBQ0EsU0FBTyxFQUFFLFdBQVcsUUFBUTtBQUM5Qjs7O0FKdkJBO0FBQ0E7QUFDQTs7O0FLbkJPLFNBQVMscUJBQXFCLFlBQVksRUFBRSxRQUFRLGVBQWUsSUFBSSxDQUFDLEdBQUc7QUFDaEYsUUFBTSxRQUFRLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtBQUMvQixhQUFXLFFBQVEsWUFBWTtBQUM3QixRQUFJLEtBQUssU0FBUyxRQUFRO0FBQ3hCLFlBQU0sS0FBSyxVQUFVLElBQUksS0FBSyxNQUFNLEVBQUU7QUFBQSxJQUN4QyxXQUFXLEtBQUssU0FBUyxhQUFhO0FBQ3BDLFlBQU0sS0FBSyxLQUFLLGNBQWMsR0FBRyxLQUFLLElBQUk7QUFBQTtBQUFBLG1CQUF3QixLQUFLLE1BQU0sRUFBRTtBQUFBLElBQ2pGLFdBQVcsS0FBSyxTQUFTLFFBQVE7QUFDL0IsWUFBTSxRQUFRLEtBQUssT0FBTyxNQUFNLEtBQUssS0FBSyxTQUFTLEtBQUssS0FBSyxLQUFLLFNBQVMsTUFBTTtBQUNqRixZQUFNLEtBQUssS0FBSyxLQUFLLFdBQVcsYUFBYSxXQUFNLFFBQUcsTUFBTSxLQUFLLElBQUksTUFBTSxLQUFLLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRTtBQUFBLElBQ3JHLFdBQVcsS0FBSyxTQUFTLFdBQVc7QUFDbEMsWUFBTSxLQUFLLGNBQWMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUFBLElBQzFDO0FBQUEsRUFDRjtBQUNBLFNBQU8sTUFBTSxLQUFLLElBQUk7QUFDeEI7OztBTE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QU0zQkE7QUFFTyxTQUFTLGtCQUFrQixFQUFFLE9BQU8sU0FBQUMsU0FBUSxHQUFHO0FBQ3BELE1BQUksTUFBTSxTQUFTLElBQUksRUFBRyxRQUFPO0FBQ2pDLFFBQU0sSUFBSSxNQUFNLE1BQU0sZ0JBQWdCO0FBQ3RDLE1BQUksQ0FBQyxFQUFHLFFBQU87QUFDZixRQUFNLFNBQVNBLFNBQVEsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDO0FBQ3pDLE1BQUksQ0FBQyxVQUFVLE9BQU8sV0FBVyxFQUFHLFFBQU87QUFDM0MsUUFBTSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE1BQU0sR0FBRztBQUM3QixRQUFNLFVBQVUsT0FBTyxPQUFPLFNBQVMsQ0FBQztBQUN4QyxRQUFNLFVBQVUsT0FDYixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3RDLE9BQU8sQ0FBQyxDQUFDLEtBQUssTUFBTSxTQUFTLENBQUMsRUFDOUIsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUMxQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ25CLFNBQU8sRUFBRSxTQUFTLFNBQVMsT0FBTyxNQUFNLFNBQVMsUUFBUSxPQUFPO0FBQ2xFO0FBRU8sU0FBUyxnQkFBZ0IsT0FBTyxLQUFLLFdBQVc7QUFDckQsU0FBTyxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssSUFBSSxZQUFZO0FBQ2pEOzs7QU5TQTs7O0FPN0JBLFNBQVMsWUFBQUMsaUJBQWdCO0FBQ3pCLE9BQU9DLFNBQVE7QUFFZixJQUFNLFlBQVk7QUFDbEIsSUFBTUMsT0FBTTtBQUVaLElBQUksU0FBUyxFQUFFLElBQUksR0FBRyxLQUFLLE1BQU0sT0FBTyxDQUFDLEVBQUU7QUFDM0MsSUFBTSxVQUFVLG9CQUFJLElBQUk7QUFFeEIsU0FBUyxhQUFhLEtBQUs7QUFDekIsU0FBTyxJQUFJLFFBQVEsQ0FBQ0MsYUFBWTtBQUM5QixVQUFNLE9BQU8sQ0FBQyxXQUFXLFlBQVksVUFBVSxlQUFlLGtCQUFrQjtBQUNoRixJQUFBSCxVQUFTLE1BQU0sTUFBTSxFQUFFLEtBQUssV0FBVyxLQUFLLE9BQU8sS0FBSyxHQUFHLENBQUMsS0FBSyxXQUFXO0FBQzFFLE1BQUFHLFNBQVEsT0FBTyxDQUFDLFNBQVMsT0FBTyxPQUFPLE1BQU0sSUFBSSxFQUFFLE9BQU8sT0FBTyxDQUFDO0FBQUEsSUFDcEUsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIO0FBRU8sU0FBUyxVQUFVLEtBQUs7QUFDN0IsTUFBSSxPQUFPLFFBQVEsT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUtELEtBQUssUUFBTyxRQUFRLFFBQVEsT0FBTyxLQUFLO0FBQzNGLE1BQUksUUFBUSxJQUFJLEdBQUcsRUFBRyxRQUFPLFFBQVEsSUFBSSxHQUFHO0FBRTVDLFFBQU0sV0FBVyxZQUFZO0FBQzNCLFFBQUksUUFBUSxNQUFNLGFBQWEsR0FBRztBQUNsQyxRQUFJLENBQUMsT0FBTztBQUNWLGNBQVEsTUFBTUQsSUFBRyxRQUFRO0FBQUEsUUFDdkI7QUFBQSxRQUNBLFdBQVc7QUFBQSxRQUNYLEtBQUs7QUFBQSxRQUNMLFFBQVEsQ0FBQyxzQkFBc0IsWUFBWTtBQUFBLE1BQzdDLENBQUMsRUFBRSxNQUFNLE1BQU0sQ0FBQyxDQUFDO0FBQUEsSUFDbkI7QUFDQSxhQUFTLEVBQUUsSUFBSSxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU8sTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFO0FBQ2pFLFdBQU8sT0FBTztBQUFBLEVBQ2hCLEdBQUcsRUFBRSxRQUFRLE1BQU0sUUFBUSxPQUFPLEdBQUcsQ0FBQztBQUV0QyxVQUFRLElBQUksS0FBSyxPQUFPO0FBQ3hCLFNBQU87QUFDVDs7O0FDdENBLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMsZ0JBQUFHLHFCQUFvQjs7O0FDRDdCLFNBQVMsb0JBQW9CO0FBRTdCLElBQU0sV0FBVztBQUFBLEVBQ2YsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsSUFBSTtBQUFBLElBQ0osUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLElBQ1YsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsV0FBVztBQUFBLElBQ1gsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLElBQUk7QUFBQSxJQUNKLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxJQUNQLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxJQUNWLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLFdBQVc7QUFBQSxJQUNYLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixRQUFRO0FBQUEsSUFDUixJQUFJO0FBQUEsSUFDSixRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsSUFDUCxPQUFPO0FBQUEsSUFDUCxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsSUFDUCxXQUFXO0FBQUEsSUFDWCxPQUFPO0FBQUEsRUFDVDtBQUNGO0FBRU8sSUFBSSxpQkFBaUIsU0FBUyxLQUFLO0FBQ25DLElBQUksS0FBSyxTQUFTLEtBQUs7QUFDdkIsSUFBSSxVQUFVLFNBQVMsS0FBSztBQUM1QixJQUFJLFFBQVEsU0FBUyxLQUFLO0FBQzFCLElBQUksUUFBUSxTQUFTLEtBQUs7QUFDMUIsSUFBSSxXQUFXLFNBQVMsS0FBSztBQUM3QixJQUFJLFlBQVksU0FBUyxLQUFLO0FBQzlCLElBQUksTUFBTSxTQUFTLEtBQUs7QUFDeEIsSUFBSSxRQUFRLFNBQVMsS0FBSztBQUMxQixJQUFJLFlBQVksU0FBUyxLQUFLO0FBRXJDLElBQUksaUJBQWlCO0FBQ3JCLElBQUksaUJBQWlCO0FBRXJCLElBQU0sQ0FBQyxhQUFhLGNBQWMsSUFBSSxhQUFhLGNBQWM7QUFFMUQsSUFBTSxTQUFTO0FBRWYsU0FBUyxVQUFVLE9BQU87QUFDL0IsbUJBQWlCLFNBQVM7QUFDMUIsaUJBQWUsa0JBQWtCLGNBQWM7QUFDakQ7QUFFTyxTQUFTLFdBQVcsTUFBTTtBQUMvQixtQkFBaUIsU0FBUyxJQUFJLElBQUksT0FBTztBQUN6QyxRQUFNLElBQUksU0FBUyxjQUFjO0FBQ2pDLG1CQUFpQixFQUFFO0FBQ25CLE9BQUssRUFBRTtBQUNQLFlBQVUsRUFBRTtBQUNaLFVBQVEsRUFBRTtBQUNWLFVBQVEsRUFBRTtBQUNWLGFBQVcsRUFBRTtBQUNiLGNBQVksRUFBRTtBQUNkLFFBQU0sRUFBRTtBQUNSLFVBQVEsRUFBRTtBQUNWLGNBQVksRUFBRTtBQUNkLGlCQUFlLGtCQUFrQixFQUFFLE1BQU07QUFDM0M7QUFFTyxTQUFTLGNBQWM7QUFDNUIsU0FBTztBQUNUO0FBRU8sU0FBUyxjQUFjO0FBQzVCLFNBQU8sT0FBTyxRQUFRLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssRUFBRTtBQUMzRTtBQUVPLFNBQVMsYUFBYTtBQUMzQixTQUFPLFNBQVMsY0FBYyxFQUFFO0FBQ2xDOzs7QUQ1RkEsSUFBTSxRQUFRO0FBQUEsRUFDWixJQUFJO0FBQUEsRUFBTSxLQUFLO0FBQUEsRUFBTSxLQUFLO0FBQUEsRUFBTSxLQUFLO0FBQUEsRUFBTyxJQUFJO0FBQUEsRUFBTSxLQUFLO0FBQUEsRUFDM0QsTUFBTTtBQUFBLEVBQVEsT0FBTztBQUFBLEVBQVEsSUFBSTtBQUFBLEVBQU0sSUFBSTtBQUFBLEVBQVUsSUFBSTtBQUFBLEVBQVEsSUFBSTtBQUFBLEVBQ3JFLElBQUk7QUFBQSxFQUFRLEdBQUc7QUFBQSxFQUFLLEdBQUc7QUFBQSxFQUFLLEtBQUs7QUFBQSxFQUFPLE1BQU07QUFBQSxFQUFRLEtBQUs7QUFBQSxFQUMzRCxNQUFNO0FBQUEsRUFBUSxLQUFLO0FBQUEsRUFBTyxJQUFJO0FBQUEsRUFBUSxNQUFNO0FBQUEsRUFBUSxLQUFLO0FBQUEsRUFDekQsS0FBSztBQUFBLEVBQVEsTUFBTTtBQUFBLEVBQVEsTUFBTTtBQUFBLEVBQVEsS0FBSztBQUFBLEVBQU8sUUFBUTtBQUMvRDtBQUVPLFNBQVMsWUFBWSxNQUFNO0FBQ2hDLFFBQU0sTUFBTSxPQUFPLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWTtBQUN0RCxTQUFPLE1BQU0sR0FBRyxLQUFLO0FBQ3ZCO0FBRUEsSUFBTSxRQUFRLG9CQUFJLElBQUk7QUFDdEIsSUFBTUMsV0FBVSxvQkFBSSxJQUFJO0FBQ3hCLElBQU0sU0FBUyxvQkFBSSxJQUFJO0FBQ3ZCLElBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUMsY0FBYSxDQUFDO0FBRXJDLElBQU0sbUJBQW1CO0FBRXpCLFNBQVMsVUFBVSxNQUFNLE1BQU07QUFDcEMsUUFBTSxXQUFXLFFBQVEsQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU87QUFDcEQsUUFBTUMsU0FBUSxXQUFXO0FBQ3pCLFNBQU8sS0FDSixNQUFNLElBQUksRUFDVixJQUFJLENBQUMsU0FBUztBQUNiLFVBQU0sTUFBTSxHQUFHQSxNQUFLO0FBQUEsRUFBSyxRQUFRO0FBQUEsRUFBSyxJQUFJO0FBQzFDLFFBQUksTUFBTSxJQUFJLEdBQUcsRUFBRyxRQUFPLE1BQU0sSUFBSSxHQUFHO0FBQ3hDLFNBQUssTUFBTSxVQUFVQSxRQUFPLEdBQUc7QUFDL0IsV0FBTztBQUFBLEVBQ1QsQ0FBQyxFQUNBLEtBQUssSUFBSTtBQUNkO0FBRUEsU0FBUyxLQUFLLE1BQU0sTUFBTUEsUUFBTyxLQUFLO0FBQ3BDLE1BQUlGLFNBQVEsSUFBSSxHQUFHLEVBQUc7QUFDdEIsRUFBQUEsU0FBUSxJQUFJLEdBQUc7QUFDZixhQUFXLE1BQU0sTUFBTUUsTUFBSyxFQUN6QixLQUFLLENBQUMsU0FBUyxNQUFNLElBQUksS0FBSyxLQUFLLFFBQVEsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUN0RCxNQUFNLE1BQU07QUFDWCxXQUFPLElBQUksSUFBSTtBQUNmLFVBQU0sSUFBSSxLQUFLLElBQUk7QUFBQSxFQUNyQixDQUFDLEVBQ0EsUUFBUSxNQUFNO0FBQ2IsSUFBQUYsU0FBUSxPQUFPLEdBQUc7QUFDbEIsZUFBVyxDQUFDLE1BQU0sSUFBSSxDQUFDO0FBQUEsRUFDekIsQ0FBQztBQUNMOzs7QUVuRE8sU0FBUyxjQUFjLE9BQU87QUFDbkMsUUFBTSxJQUFJLEtBQUssTUFBTSxLQUFLO0FBQzFCLE1BQUksS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFXLFFBQU8sSUFBSSxJQUFJLEtBQVcsUUFBUSxDQUFDLENBQUM7QUFDbEUsTUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLElBQU8sUUFBTyxJQUFJLElBQUksS0FBTyxRQUFRLENBQUMsQ0FBQztBQUMxRCxTQUFPLE9BQU8sQ0FBQztBQUNqQjs7O0FDTEEsU0FBUyxNQUFNLFFBQVEsbUJBQW1CO0FBK0J0QztBQTdCSixTQUFTLE1BQU0sT0FBTztBQUNwQixNQUFJLE9BQU8sV0FBVyxHQUFHLEtBQUssTUFBTSxXQUFXLEdBQUc7QUFDaEQsV0FBTztBQUFBLE1BQ0wsU0FBUyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRTtBQUFBLE1BQzlCLFNBQVMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUU7QUFBQSxNQUM5QixTQUFTLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQUEsSUFDaEM7QUFBQSxFQUNGO0FBQ0EsU0FBTyxDQUFDLEtBQUssS0FBSyxHQUFHO0FBQ3ZCO0FBRUEsU0FBUyxTQUFTLE1BQU0sSUFBSSxRQUFRO0FBQ2xDLFFBQU0sSUFBSSxNQUFNLElBQUk7QUFDcEIsUUFBTSxJQUFJLE1BQU0sRUFBRTtBQUNsQixRQUFNLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxNQUFNLEtBQUssTUFBTSxTQUFTLEVBQUUsQ0FBQyxJQUFJLFNBQVMsTUFBTSxDQUFDO0FBQ2hGLFNBQU8sSUFBSSxTQUFTLElBQUksQ0FBQyxVQUFVLE1BQU0sU0FBUyxFQUFFLEVBQUUsU0FBUyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ2xGO0FBRU8sU0FBUyxjQUFjLEVBQUUsT0FBTyxVQUFVLE9BQU8sV0FBVyxLQUFNLE9BQU8sV0FBQUcsWUFBVyxTQUFTLE9BQU8sR0FBRztBQUM1RyxRQUFNLFlBQVksWUFBWSxTQUFTLEtBQUssUUFBUSxDQUFDO0FBQ3JELFFBQU0sT0FBTyxZQUFZLEdBQUcsS0FBSyxVQUFVLE1BQU0sQ0FBQztBQUVsRCxNQUFJLFVBQVUsVUFBVSxNQUFNLFFBQVE7QUFDcEMsY0FBVSxJQUFJLEtBQUs7QUFDbkIsU0FBSyxLQUFLLENBQUM7QUFDWCxTQUFLLElBQUksQ0FBQztBQUFBLEVBQ1o7QUFFQSxTQUNFLG9CQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPQSxZQUFXLEtBQUssQ0FBQyxFQUFFLEdBQ3RELGlCQUFPLFVBQVUsQ0FBQyxHQUNyQjtBQUVKOzs7QUNuQ0EsU0FBUyxNQUFNLFFBQUFDLE9BQU0scUJBQXFCLFVBQUFDLFNBQVEsVUFBVSxTQUFTLGVBQUFDLG9CQUFtQjtBQUl4RjtBQU1NLGdCQUFBQyxNQWdGRSxZQWhGRjtBQUpOLFNBQVMsZ0JBQWdCLEVBQUUsT0FBTyxVQUFVLFdBQVcsZUFBZSxPQUFPLEdBQUc7QUFDOUUsUUFBTSxRQUFRLGdCQUFnQixjQUFjLE9BQU8sUUFBUSxJQUFJO0FBQy9ELFNBQ0UsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsSUFBSSxRQUFRLFVBQVUsRUFBRSxHQUNwQywwQkFBQUEsS0FBQyxVQUFNLGlCQUFNLEdBQ2Y7QUFFSjtBQUVBLFNBQVMsWUFBWSxFQUFFLE9BQU8sVUFBVSxXQUFXLGVBQWUsT0FBTyxHQUFHO0FBQzFFLFFBQU0sUUFBUSxnQkFBZ0IsY0FBYyxPQUFPLFFBQVEsSUFBSTtBQUMvRCxRQUFNLGVBQWUsS0FBSyxJQUFJLEdBQUcsR0FBRyxNQUFNLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7QUFDekYsU0FDRSxnQkFBQUEsS0FBQyx1QkFBb0IsY0FBNEIsT0FBTyxFQUFFLElBQUksUUFBUSxVQUFVLEVBQUUsR0FDaEYsMEJBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ25DLGdCQUFNLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLFFBQzVCLGdCQUFBQSxLQUFDLFVBQWUsT0FBTyxFQUFFLFVBQVUsU0FBUyxHQUFJLGtCQUFRLE9BQTdDLEdBQWlELENBQzdELEdBQ0gsR0FDRjtBQUVKO0FBRUEsU0FBUyxvQkFBb0IsT0FBTztBQUNsQyxRQUFNLFdBQVcsTUFBTSxVQUFVLFlBQVk7QUFDN0MsUUFBTSxZQUFZLGFBQWEsUUFBUSxhQUFhLGFBQWEsa0JBQWtCO0FBQ25GLFNBQU8sZ0JBQUFBLEtBQUMsYUFBVyxHQUFHLE9BQU87QUFDL0I7QUFFQSxTQUFTLGlCQUFpQixNQUFNLFFBQVE7QUFDdEMsTUFBSSxNQUFNLE9BQU8sT0FBUSxRQUFPLEtBQUssTUFBTSxPQUFPLENBQUMsS0FBSyxNQUFNLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVyRixTQUFPLEtBQUssSUFBSSxPQUFPLFFBQVEsU0FBUyxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsUUFBUSxPQUFPLFFBQVEsVUFBVSxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsUUFBUSxDQUFDO0FBQ3BIO0FBRUEsU0FBUyxZQUFZLElBQUk7QUFDdkIsTUFBSSxLQUFLLElBQU8sUUFBTyxJQUFJLEtBQUssS0FBTSxRQUFRLENBQUMsQ0FBQztBQUNoRCxRQUFNLE9BQU8sS0FBSyxNQUFNLEtBQUssR0FBSTtBQUNqQyxTQUFPLEdBQUcsS0FBSyxNQUFNLE9BQU8sRUFBRSxDQUFDLEtBQUssT0FBTyxFQUFFO0FBQy9DO0FBRUEsU0FBUyxXQUFXLElBQUk7QUFDdEIsUUFBTSxPQUFPLEtBQUssTUFBTSxLQUFLLEdBQUk7QUFDakMsU0FBTyxPQUFPLEtBQUssR0FBRyxJQUFJLE1BQU0sR0FBRyxLQUFLLE1BQU0sT0FBTyxFQUFFLENBQUMsS0FBSyxPQUFPLEVBQUU7QUFDeEU7QUFFQSxTQUFTQyxVQUFTLE1BQU0sSUFBSSxRQUFRO0FBQ2xDLFFBQU0sTUFBTSxDQUFDLFVBQVUsT0FBTyxXQUFXLEdBQUcsS0FBSyxNQUFNLFdBQVcsSUFDOUQsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLFNBQVMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQ3hELENBQUMsS0FBSyxLQUFLLEdBQUc7QUFDbEIsUUFBTSxJQUFJLElBQUksSUFBSTtBQUNsQixRQUFNLElBQUksSUFBSSxFQUFFO0FBQ2hCLFNBQU8sSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLE1BQU0sS0FBSyxNQUFNLFNBQVMsRUFBRSxDQUFDLElBQUksU0FBUyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsU0FBUyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3BIO0FBRUEsU0FBUyxVQUFVLEVBQUUsTUFBTSxRQUFRLEdBQUc7QUFDcEMsUUFBTSxlQUFlLEtBQUssTUFBTSxHQUFHLEVBQUUsR0FBRztBQUN4QyxRQUFNLE9BQU9DLGFBQVksR0FBR0MsTUFBSyxLQUFLQyxPQUFNLENBQUM7QUFDN0MsTUFBSSxpQkFBaUIsS0FBSyxTQUFTO0FBQ2pDLFNBQUssVUFBVTtBQUNmLFFBQUksS0FBSyxRQUFRO0FBQ2YsV0FBSyxLQUFLLENBQUM7QUFDWCxXQUFLLElBQUksQ0FBQztBQUFBLElBQ1o7QUFBQSxFQUNGO0FBRUEsTUFBSSxTQUFTO0FBQ1gsV0FDRSxnQkFBQUosS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFNBQVMsR0FDbkMsZUFBSyxNQUFNLElBQUksQ0FBQyxNQUFNLE1BQU0sZ0JBQUFBLEtBQUMsWUFBa0IsR0FBRyxNQUFNLFNBQU8sTUFBQyxnQkFBZ0IsU0FBckMsQ0FBNEMsQ0FBRSxHQUM1RjtBQUFBLEVBRUo7QUFFQSxRQUFNLFNBQVMsb0JBQUksSUFBSTtBQUN2QixhQUFXLFFBQVEsS0FBSyxNQUFPLFFBQU8sSUFBSSxLQUFLLE9BQU8sT0FBTyxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQztBQUNyRixRQUFNLFVBQVUsQ0FBQyxHQUFHLE1BQU07QUFDMUIsUUFBTSxVQUFVLEtBQUssTUFBTSxPQUFPLENBQUMsS0FBSyxTQUFTLE9BQU8sS0FBSyxjQUFjLElBQUksQ0FBQztBQUNoRixRQUFNLGFBQWEsS0FBSyxNQUFNLEdBQUcsRUFBRSxHQUFHO0FBQ3RDLFNBQ0UscUJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsRUFBRSxHQUNqRDtBQUFBLG9CQUFBQSxLQUFDLFVBQUssZUFBQztBQUFBLElBQ1AscUJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLFlBQVksYUFBYSxHQUMxRDtBQUFBLFdBQUssU0FBUyxnQkFBQUEsS0FBQyxXQUFRLE9BQU8sT0FBTyxHQUFHLElBQUssZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsb0JBQUM7QUFBQSxNQUM5RSxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE9BQU8sVUFBVSxRQUFRLFVBQVUsR0FBRyxhQUFhLEVBQUUsR0FDaEY7QUFBQSx3QkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLEtBQUssU0FBUyxLQUFLLE1BQU0sR0FBRyxzQkFBUTtBQUFBLFFBQ3pELFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsTUFDM0IsZ0JBQUFBLEtBQUMsVUFBZ0IsT0FBTyxFQUFFLE9BQU8sS0FBSyxVQUFVLFNBQVMsYUFBYUMsVUFBUyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsS0FBSyxNQUFNLEdBQzdILGFBQUcsSUFBSSxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsVUFBVSxJQUFJLEtBQUssSUFBSSxLQUFLLFFBQVEsTUFEdEQsSUFFWCxDQUNEO0FBQUEsU0FDSDtBQUFBLE1BQ0MsVUFBVSxLQUFLLGdCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxZQUFZLEVBQUUsR0FBSSxzQkFBWSxPQUFPLEdBQUU7QUFBQSxPQUN0RjtBQUFBLEtBQ0Y7QUFFSjtBQUVBLFNBQVMsU0FBUyxFQUFFLE1BQU0sT0FBTyxRQUFRLE1BQU0sUUFBUSxZQUFZLE9BQU8sWUFBWSxTQUFTLGlCQUFpQixNQUFNLFdBQVcsV0FBVyxHQUFHO0FBQzdJLFFBQU0sVUFBVSxXQUFXO0FBQzNCLFFBQU0sY0FBYyxXQUFXO0FBQy9CLFFBQU0sV0FBVyxXQUFXO0FBQzVCLFFBQU1LLFVBQVMsV0FBVztBQUMxQixRQUFNLFdBQVcsYUFBYSxXQUFXLE1BQU0sSUFBSSxJQUFJO0FBRXZELFFBQU0sVUFBVSxXQUFXLFlBQVksS0FBSyxJQUFJLElBQUksWUFBWTtBQUNoRSxRQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxjQUFjLE9BQU8sWUFBWSxVQUFVLElBQUk7QUFFdkYsUUFBTSxPQUFPLFVBQVcsV0FBVyxNQUFPLFlBQVksV0FBVyxPQUFPLENBQUMsTUFBTSxZQUMzRSxjQUFjLGdCQUNkLFdBQVcsYUFDWEEsVUFBUyxTQUFTLE9BQU8sU0FBTSxJQUFJLEtBQUssRUFBRSxLQUMxQyxhQUFhLDRCQUNiLE9BQU8sSUFBSSxLQUFLLFNBQVMsS0FBSyxLQUFLLFNBQVMsR0FBRyxPQUFPLFNBQU0sSUFBSSxLQUFLLEVBQUUsS0FDdkUsV0FBVyxHQUFHLFNBQVMsTUFBTSxJQUFJLFNBQVMsV0FBVyxJQUFJLFNBQVMsT0FBTyxHQUFHLE9BQU8sU0FBTSxJQUFJLEtBQUssRUFBRSxHQUFHLGlCQUFpQixpQkFBYyxFQUFFLEtBQ3hJLE9BQU8sT0FBTyxTQUFNLElBQUksS0FBSyxFQUFFO0FBRW5DLFNBQ0UscUJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsRUFBRSxHQUNqRDtBQUFBLG9CQUFBTCxLQUFDLFVBQUssZUFBQztBQUFBLElBQ1AscUJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2hDO0FBQUEsZ0JBQ0csZ0JBQUFBLEtBQUMsV0FBUSxPQUFPLE9BQU8sR0FBRyxJQUMxQixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLGVBQWVLLFVBQVMsTUFBTSxXQUFXLFFBQVEsT0FBTyxFQUFFLEdBQUksd0JBQWMsV0FBTUEsVUFBUyxXQUFNLFdBQVcsV0FBTSxVQUFJO0FBQUEsTUFDaEosZ0JBQUFMLEtBQUMsVUFBSyxlQUFDO0FBQUEsTUFDUCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxhQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsS0FBSTtBQUFBLE1BQ3JELGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEVBQUUsR0FDbkMsMEJBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsVUFBVSxZQUFZLE9BQU8sR0FBRyxHQUFJLG1CQUFTLE1BQUssR0FDbkU7QUFBQSxNQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGVBQUssSUFBSSxJQUFHO0FBQUEsT0FDOUM7QUFBQSxJQUNDSyxXQUFVLFNBQ1QsZ0JBQUFMLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLFVBQVUsV0FBVyxHQUFJLGVBQUssS0FBSyxJQUFHO0FBQUEsSUFFcEUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxLQUFLLGNBQWMsS0FBSyxLQUFLLGNBQWMsTUFDdkYsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFFBQVEsS0FBSyxJQUFJLGlCQUFpQixNQUFNLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FDNUcsMEJBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxRQUFRLE9BQU87QUFBQSxRQUNmLE9BQU8sT0FBTztBQUFBLFFBQ2QsVUFBVSxZQUFZLE9BQU8sSUFBSTtBQUFBLFFBQ2pDO0FBQUEsUUFDQSxTQUFTO0FBQUEsUUFDVCxPQUFPO0FBQUEsUUFDUCxTQUFTO0FBQUEsUUFDVCxXQUFXO0FBQUE7QUFBQSxJQUNiLEdBQ0Y7QUFBQSxJQUVELFlBQVksV0FBVyxDQUFDLFdBQ3ZCLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUM3RTtBQUFBLHNCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGVBQUssS0FBSyxJQUFHO0FBQUEsTUFDNUMsU0FBUyxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLE1BQ2pDLGdCQUFBQSxLQUFDLFVBQWEsT0FBTyxFQUFFLE9BQU8sU0FBUyxVQUFVLFdBQVcsR0FBSSxrQkFBUSxPQUE3RCxDQUFpRSxDQUM3RTtBQUFBLE1BQ0EsU0FBUyxTQUFTLE9BQU8sZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksb0JBQUssU0FBUyxTQUFTLEdBQUcsZUFBYztBQUFBLE9BQ3BHO0FBQUEsS0FFSjtBQUVKO0FBRU8sU0FBUyxRQUFRLEVBQUUsTUFBTSxRQUFRLEdBQUc7QUFDekMsTUFBSSxLQUFLLFNBQVMsYUFBYyxRQUFPLGdCQUFBQSxLQUFDLGFBQVUsTUFBWSxTQUFrQjtBQUVoRixNQUFJLEtBQUssU0FBUyxzQkFBc0I7QUFDdEMsV0FDRSxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxFQUFFLEdBQ2pEO0FBQUEsc0JBQUFBLEtBQUMsVUFBSyxlQUFDO0FBQUEsTUFDUCxxQkFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSx3QkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sUUFBUSxLQUFLLEdBQUksb0JBQUssS0FBSyxRQUFRLE1BQU0sb0JBQW1CO0FBQUEsUUFDekYsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxRQUM3QixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxvQkFBUztBQUFBLFNBQzNDO0FBQUEsTUFDQyxXQUNDLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUM1RSxlQUFLLFFBQVEsSUFBSSxDQUFDLFFBQVEsTUFDekIsZ0JBQUFBLEtBQUMsVUFBYSxPQUFPLEVBQUUsT0FBTyxRQUFRLEdBQUksaUJBQU8sS0FBSyxRQUFRLCtCQUErQixFQUFFLEtBQXBGLENBQXNGLENBQ2xHLEdBQ0g7QUFBQSxPQUVKO0FBQUEsRUFFSjtBQUVBLE1BQUksS0FBSyxTQUFTLFFBQVE7QUFDeEIsV0FBTyxnQkFBQUEsS0FBQyxZQUFVLEdBQUcsTUFBTSxTQUFrQjtBQUFBLEVBQy9DO0FBRUEsTUFBSSxLQUFLLFNBQVMsV0FBVztBQUMzQixVQUFNLFFBQVEsS0FBSyxLQUFLLE1BQU0sSUFBSTtBQUNsQyxXQUNFLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEVBQUUsR0FDakQ7QUFBQSxzQkFBQUEsS0FBQyxVQUFLLGVBQUM7QUFBQSxNQUNQLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLHdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxRQUFRLEtBQUssR0FBSSxlQUFLLFdBQVcsWUFBWSxnRUFBd0QsNENBQW1DO0FBQUEsUUFDckssZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxRQUM3QixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxhQUFHLE1BQU0sTUFBTSxJQUFJLE1BQU0sV0FBVyxJQUFJLFNBQVMsT0FBTyxnQkFBWTtBQUFBLFNBQ3RHO0FBQUEsTUFDQyxXQUNDLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUM1RTtBQUFBLGNBQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxNQUM5QixnQkFBQUEsS0FBQyxVQUFhLE9BQU8sRUFBRSxPQUFPLFFBQVEsR0FBSSxrQkFBUSxPQUF2QyxDQUEyQyxDQUN2RDtBQUFBLFFBQ0EsTUFBTSxTQUFTLE9BQU8sZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksb0JBQUssTUFBTSxTQUFTLEdBQUcsZUFBYztBQUFBLFNBQzlGO0FBQUEsT0FFSjtBQUFBLEVBRUo7QUFFQSxNQUFJLEtBQUssU0FBUyxZQUFZO0FBQzVCLFVBQU0sUUFBUSxLQUFLLEtBQUssTUFBTSxJQUFJO0FBQ2xDLFdBQ0UscUJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsRUFBRSxHQUNqRDtBQUFBLHNCQUFBQSxLQUFDLFVBQUssZUFBQztBQUFBLE1BQ1AscUJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsd0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLFFBQVEsS0FBSyxHQUFJLDZCQUFhO0FBQUEsUUFDM0QsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxRQUM3QixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxhQUFHLE1BQU0sTUFBTSxJQUFJLE1BQU0sV0FBVyxJQUFJLFNBQVMsT0FBTyxnQkFBWTtBQUFBLFNBQ3RHO0FBQUEsTUFDQyxXQUNDLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUM1RTtBQUFBLGNBQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxNQUM5QixnQkFBQUEsS0FBQyxVQUFhLE9BQU8sRUFBRSxPQUFPLFNBQVMsUUFBUSxLQUFLLEdBQUksa0JBQVEsT0FBckQsQ0FBeUQsQ0FDckU7QUFBQSxRQUNBLE1BQU0sU0FBUyxPQUFPLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLG9CQUFLLE1BQU0sU0FBUyxHQUFHLGVBQWM7QUFBQSxTQUM5RjtBQUFBLE9BRUo7QUFBQSxFQUVKO0FBRUEsTUFBSSxLQUFLLFNBQVMsVUFBVTtBQUMxQixXQUNFLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEVBQUUsR0FDakQ7QUFBQSxzQkFBQUEsS0FBQyxVQUFLLGVBQUM7QUFBQSxNQUNQLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxRQUFRLEtBQUssR0FBSSxvQkFBSyxLQUFLLEtBQUssUUFBUSwrQkFBK0IsRUFBRSxDQUFDLElBQUc7QUFBQSxPQUM1RztBQUFBLEVBRUo7QUFFQSxNQUFJLEtBQUssU0FBUyxTQUFTO0FBQ3pCLFdBQ0UscUJBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsRUFBRSxHQUNqRDtBQUFBLHNCQUFBQSxLQUFDLFVBQUssZUFBQztBQUFBLE1BQ1AsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLFFBQVEsS0FBSyxHQUFJLDJCQUFZLEtBQUssSUFBSSxJQUFHO0FBQUEsT0FDeEU7QUFBQSxFQUVKO0FBRUEsTUFBSSxLQUFLLFNBQVMsUUFBUTtBQUN4QixXQUNFLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsU0FBUyxHQUNwQztBQUFBLHNCQUFBQSxLQUFDLFVBQUssZUFBQztBQUFBLE1BQ1AsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsSUFBSSxVQUFVLGVBQWUsVUFBVSxVQUFVLEdBQUcsVUFBVSxFQUFFLEdBQzVFLDBCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sR0FBRyxHQUFJLGVBQUssTUFBSyxHQUN6QztBQUFBLE9BQ0Y7QUFBQSxFQUVKO0FBRUEsUUFBTSxPQUFPLEtBQUssY0FBYyxHQUFHLEtBQUssSUFBSSxxQkFBcUIsS0FBSztBQUN0RSxTQUNFLHFCQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEVBQUUsR0FDakQ7QUFBQSxvQkFBQUEsS0FBQyxVQUFLLGVBQUM7QUFBQSxJQUNQLGdCQUFBQSxLQUFDLFlBQVMsTUFBWSxXQUFzQixRQUFRLE1BQU0sV0FBVyxxQkFBcUI7QUFBQSxLQUM1RjtBQUVKOzs7QUNsUkEsU0FBUyxnQkFBQU0sZUFBYyxRQUFRLFdBQVcsZ0JBQWdCO0FBbUlsRCxTQUNFLE9BQUFDLE1BREYsUUFBQUMsYUFBQTtBQWhJUixTQUFTLFdBQVcsVUFBVSxRQUFRO0FBQ3BDLE1BQUksTUFBTSxRQUFRLE1BQU0sRUFBRyxRQUFPLE9BQU8sS0FBSyxJQUFJO0FBQ2xELFNBQU8sVUFBVTtBQUNuQjtBQUVPLFNBQVMsYUFBYSxFQUFFLFNBQVMsU0FBUyxVQUFVLFNBQVMsR0FBRztBQUNyRSxRQUFNLFlBQVksUUFBUTtBQUMxQixRQUFNLFlBQVksVUFBVSxTQUFTO0FBQ3JDLFFBQU0sQ0FBQyxNQUFNLE9BQU8sSUFBSUMsY0FBYSxDQUFDO0FBQ3RDLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUEsY0FBYSxDQUFDLENBQUM7QUFDN0MsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJQSxjQUFhLENBQUM7QUFDMUMsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJQSxjQUFhLEtBQUs7QUFDOUMsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJQSxjQUFhLEtBQUs7QUFDOUMsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJQSxjQUFhLFFBQVE7QUFFbkQsUUFBTSxXQUFXLE1BQU0sVUFBVSxLQUFLLENBQUM7QUFDdkMsUUFBTSxVQUFVLE1BQU0sU0FBUyxFQUFFLFdBQVcsQ0FBQztBQUM3QyxRQUFNLE9BQU8sTUFBTSxDQUFDLEdBQUcsUUFBUSxHQUFHLEdBQUksU0FBUyxFQUFFLGVBQWUsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sU0FBUyxPQUFPLEtBQUssQ0FBQyxDQUFFO0FBQy9HLFFBQU0sV0FBVyxDQUFDLFdBQVcsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLFNBQVMsS0FBSztBQUMzRSxRQUFNLGNBQWMsTUFBTTtBQUN4QixVQUFNLFNBQVMsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFO0FBQ3RDLFVBQU0sU0FBUyxJQUFJLElBQUksUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLE9BQU8sS0FBSyxDQUFDO0FBQzlELFFBQUksTUFBTSxRQUFRLE1BQU0sRUFBRyxRQUFPLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUs7QUFDaEYsV0FBTyxVQUFVLENBQUMsT0FBTyxJQUFJLE1BQU0sSUFBSSxTQUFTO0FBQUEsRUFDbEQ7QUFFQSxXQUFTLFVBQVUsT0FBTztBQUN4QixlQUFXLENBQUMsYUFBYSxFQUFFLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFO0FBQUEsRUFDbEU7QUFFQSxXQUFTLFVBQVU7QUFDakIsY0FBVSxLQUFLO0FBQ2YsY0FBVSxDQUFDO0FBQ1gsZUFBVyxRQUFRO0FBQ25CLFFBQUksS0FBSyxJQUFJLFVBQVUsU0FBUyxFQUFHLFNBQVEsS0FBSyxJQUFJLENBQUM7QUFBQSxhQUM1QyxXQUFXO0FBQUUsZ0JBQVUsVUFBVSxNQUFNO0FBQUcsZ0JBQVUsSUFBSTtBQUFBLElBQUUsTUFDOUQsUUFBTztBQUFBLEVBQ2Q7QUFFQSxXQUFTLFNBQVM7QUFDaEIsYUFBUyxVQUFVLElBQUksQ0FBQ0MsV0FBVSxFQUFFLElBQUlBLE1BQUssSUFBSSxVQUFVQSxNQUFLLFVBQVUsUUFBUSxRQUFRLEVBQUVBLE1BQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQUEsRUFDaEg7QUFFQSxXQUFTLFdBQVcsT0FBTztBQUN6QixVQUFNLFNBQVMsTUFBTSxLQUFLO0FBQzFCLFFBQUksQ0FBQyxPQUFRO0FBQ2IsY0FBVSxNQUFNO0FBQ2hCLFFBQUksVUFBVSxXQUFXLEVBQUcsVUFBUyxDQUFDLEVBQUUsSUFBSSxLQUFLLElBQUksVUFBVSxLQUFLLFVBQVUsT0FBTyxDQUFDLENBQUM7QUFBQSxRQUNsRixTQUFRO0FBQUEsRUFDZjtBQUVBLFdBQVMsWUFBWSxPQUFPO0FBQzFCLFVBQU0sU0FBUyxNQUFNLEtBQUs7QUFDMUIsVUFBTSxRQUFRLElBQUksS0FBSyxLQUFLLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLE9BQU8sS0FBSyxDQUFDO0FBQ3hFLFVBQU0sVUFBVSxLQUFLLFNBQVMsV0FBVyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQzFHLFVBQU0sYUFBYSxLQUFLLFNBQVMsVUFBVSxDQUFDLEdBQUcsU0FBUyxHQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFFLElBQUk7QUFDdkYsY0FBVSxVQUFVO0FBQ3BCLGNBQVUsS0FBSztBQUNmLFFBQUksS0FBSyxTQUFTLFlBQVksUUFBUTtBQUNwQyxVQUFJLFVBQVUsV0FBVyxFQUFHLFVBQVMsQ0FBQyxFQUFFLElBQUksS0FBSyxJQUFJLFVBQVUsS0FBSyxVQUFVLE9BQU8sQ0FBQyxDQUFDO0FBQUEsVUFDbEYsU0FBUTtBQUFBLElBQ2Y7QUFBQSxFQUNGO0FBRUEsV0FBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxDQUFDLFFBQVM7QUFDZCxRQUFJLE1BQU0sUUFBUSxVQUFVO0FBQzFCLFVBQUksT0FBTyxHQUFHO0FBQUUsa0JBQVUsS0FBSztBQUFHLG1CQUFXLFFBQVE7QUFBQSxNQUFFLFdBQzlDLE9BQU8sRUFBRyxXQUFVLEtBQUs7QUFBQSxVQUM3QixVQUFTO0FBQ2QsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxPQUFPLEdBQUc7QUFDWixVQUFJLE1BQU0sUUFBUSxRQUFRLE1BQU0sUUFBUSxJQUFLLFdBQVUsS0FBSyxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztBQUFBLGVBQ3ZFLE1BQU0sUUFBUSxVQUFVLE1BQU0sUUFBUSxJQUFLLFdBQVUsS0FBSyxJQUFJLFVBQVUsUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDO0FBQUEsZUFDN0YsTUFBTSxRQUFRLFVBQVU7QUFDL0IsWUFBSSxPQUFPLE1BQU0sVUFBVSxPQUFRLFFBQU87QUFBQSxhQUNyQztBQUFFLGtCQUFRLE9BQU8sQ0FBQztBQUFHLG9CQUFVLENBQUM7QUFBRyxxQkFBVyxRQUFRO0FBQUcsb0JBQVUsS0FBSztBQUFBLFFBQUU7QUFBQSxNQUNqRixNQUFPO0FBQ1AsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxLQUFLLElBQUksTUFBTSxNQUFNLFFBQVEsU0FBUyxNQUFNLFFBQVEsY0FBYztBQUNwRSxpQkFBVyxRQUFRLE1BQU0sU0FBUyxXQUFXLE1BQU07QUFDbkQsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxRQUFRLE1BQU0sT0FBUTtBQUMxQixRQUFJLE9BQU8sR0FBRztBQUNaLFVBQUksTUFBTSxRQUFRLFNBQVMsTUFBTSxRQUFRLGFBQWE7QUFDcEQsa0JBQVUsS0FBSztBQUNmLG1CQUFXLFFBQVE7QUFDbkIsY0FBTSxnQkFBZ0I7QUFBQSxNQUN4QjtBQUNBO0FBQUEsSUFDRjtBQUNBLFFBQUksU0FBUyxHQUFHLFNBQVMsT0FBUTtBQUNqQyxRQUFJLE1BQU0sUUFBUSxRQUFRLE1BQU0sUUFBUSxJQUFLLFdBQVUsS0FBSyxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztBQUFBLGFBQ3ZFLE1BQU0sUUFBUSxVQUFVLE1BQU0sUUFBUSxJQUFLLFdBQVUsS0FBSyxJQUFJLEtBQUssRUFBRSxTQUFTLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztBQUFBLGFBQzlGLE1BQU0sUUFBUSxXQUFXLFNBQVMsRUFBRSxTQUFTLFNBQVM7QUFDN0QsWUFBTSxNQUFNLEtBQUssRUFBRSxPQUFPLENBQUM7QUFDM0IsVUFBSSxJQUFJLE9BQU87QUFDYixZQUFJLFlBQVksR0FBRztBQUNqQixnQkFBTSxRQUFRLElBQUksSUFBSSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsT0FBTyxLQUFLLENBQUM7QUFDN0QscUJBQVcsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQztBQUM5RSxvQkFBVSxLQUFLO0FBQUEsUUFDakIsTUFBTyxXQUFVLElBQUk7QUFBQSxNQUN2QixPQUFPO0FBQ0wsY0FBTSxVQUFVLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFDN0Msa0JBQVUsUUFBUSxTQUFTLElBQUksS0FBSyxJQUFJLFFBQVEsT0FBTyxDQUFDLFVBQVUsVUFBVSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLEtBQUssQ0FBQztBQUFBLE1BQ2xIO0FBQUEsSUFDRixXQUFXLE1BQU0sUUFBUSxVQUFVO0FBQ2pDLFlBQU0sTUFBTSxLQUFLLEVBQUUsT0FBTyxDQUFDO0FBQzNCLFVBQUksU0FBUyxFQUFFLFNBQVMsUUFBUyxTQUFRO0FBQUEsZUFDaEMsSUFBSSxNQUFPLFdBQVUsSUFBSTtBQUFBLFdBQzdCO0FBQ0gsa0JBQVUsSUFBSSxLQUFLO0FBQ25CLFlBQUksVUFBVSxXQUFXLEVBQUcsVUFBUyxDQUFDLEVBQUUsSUFBSSxTQUFTLEVBQUUsSUFBSSxVQUFVLFNBQVMsRUFBRSxVQUFVLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQztBQUFBLFlBQ3pHLFNBQVE7QUFBQSxNQUNmO0FBQUEsSUFDRixNQUFPO0FBQ1AsVUFBTSxnQkFBZ0I7QUFBQSxFQUN4QixDQUFDO0FBRUQsTUFBSSxPQUFPLEdBQUc7QUFDWixXQUNFLGdCQUFBRixNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLFVBQVUsVUFBVSxHQUFHLFVBQVUsR0FBRyxXQUFXLEVBQUUsR0FDMUY7QUFBQSxzQkFBQUEsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSx3QkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sR0FBRyxNQUFNLEtBQUssR0FBRyw0QkFBYztBQUFBLFFBQzVELGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHO0FBQUEsUUFDN0IsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsa0RBQWlDO0FBQUEsU0FDbEU7QUFBQSxNQUNDLFVBQVUsSUFBSSxDQUFDRyxPQUFNLFVBQ3BCLGdCQUFBRixNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLE9BQU8sTUFBTSxRQUFRLFlBQVksUUFBVyxVQUFVLEVBQUUsR0FDakc7QUFBQSx3QkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sTUFBTSxRQUFRLE9BQU8sSUFBSSxHQUFHLEdBQUksVUFBQUcsTUFBSyxVQUFTO0FBQUEsUUFDM0UsZ0JBQUFILEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUkscUJBQVdHLE9BQU0sUUFBUSxFQUFFQSxNQUFLLEVBQUUsQ0FBQyxHQUFFO0FBQUEsU0FDdkUsQ0FDRDtBQUFBLE1BQ0QsZ0JBQUFILEtBQUMsVUFBSyxPQUFPLEVBQUUsSUFBSSxPQUFPLE1BQU0sVUFBVSxTQUFTLE9BQU8sSUFBSSxRQUFXLE9BQU8sT0FBTyxNQUFNLFVBQVUsU0FBUyxVQUFVLElBQUksTUFBTSxLQUFLLEdBQUcsOEJBQWdCO0FBQUEsT0FDOUo7QUFBQSxFQUVKO0FBRUEsUUFBTSxPQUFPLFNBQVM7QUFDdEIsUUFBTSxXQUFXLFVBQVUsU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsT0FBTyxVQUFVLE1BQU0sS0FBSztBQUNqRixTQUNFLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLFVBQVUsVUFBVSxHQUFHLFVBQVUsR0FBRyxXQUFXLEVBQUUsR0FDMUY7QUFBQSxvQkFBQUEsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDaEM7QUFBQSxXQUFLLElBQUksS0FDUixnQkFBQUEsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSx3QkFBQUQ7QUFBQSxVQUFDO0FBQUE7QUFBQSxZQUNDLE9BQU07QUFBQSxZQUNOLFNBQVMsV0FBVyxRQUFRLE1BQU07QUFBQSxZQUNsQyxTQUFTLE1BQU07QUFDYixzQkFBUSxLQUFLLElBQUksQ0FBQztBQUNsQix3QkFBVSxDQUFDO0FBQ1gsd0JBQVUsS0FBSztBQUNmLHlCQUFXLFFBQVE7QUFBQSxZQUNyQjtBQUFBO0FBQUEsUUFDRjtBQUFBLFFBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxnQkFBRTtBQUFBLFNBQ1Y7QUFBQSxNQUVGLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxHQUFHLE1BQU0sS0FBSyxHQUFJLG9CQUFTO0FBQUEsTUFDeEQsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxNQUM3QixnQkFBQUMsTUFBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSTtBQUFBLGFBQUssU0FBUyxVQUFVLHVDQUFvQztBQUFBLFFBQWdCO0FBQUEsU0FBYztBQUFBLE9BQzVIO0FBQUEsSUFDQSxnQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxLQUFLLEdBQUksZUFBSyxVQUFTO0FBQUEsSUFDdEQsS0FBSyxlQUFlLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGVBQUssYUFBWTtBQUFBLElBQ3JFLEtBQUssU0FBUyxTQUNiLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLElBQUksV0FBVyxVQUFVLEdBQUcsV0FBVyxFQUFFLEdBQ3JELDBCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBRUMsU0FBUyxXQUFXLFFBQVEsTUFBTTtBQUFBLFFBQ2xDLGFBQVk7QUFBQSxRQUNaLGNBQWMsT0FBTyxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUk7QUFBQSxRQUM1RSxVQUFVO0FBQUE7QUFBQSxNQUpMLEdBQUcsS0FBSyxFQUFFO0FBQUEsSUFLakIsR0FDRixJQUVBLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxXQUFXLEVBQUUsR0FDakQsZUFBSyxFQUFFLElBQUksQ0FBQyxRQUFRLFVBQ25CLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxJQUFJLE9BQU8sTUFBTSxRQUFRLFlBQVksUUFBVyxVQUFVLEVBQUUsR0FDakc7QUFBQSxzQkFBQUEsTUFBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sTUFBTSxRQUFRLE9BQU8sSUFBSSxRQUFRLEdBQzNEO0FBQUEsYUFBSyxTQUFTLFVBQ1gsR0FBRyxPQUFPLFFBQVMsWUFBWSxJQUFJLFFBQVEsUUFBVSxTQUFTLE9BQU8sS0FBSyxJQUFJLFFBQVEsS0FBTSxNQUM1RixHQUFHLE9BQU8sTUFBTSxRQUFRLFdBQU0sR0FBRztBQUFBLFFBQUssT0FBTztBQUFBLFNBQ25EO0FBQUEsTUFDQyxPQUFPLGVBQWUsZ0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksbUJBQU0sT0FBTyxXQUFXLElBQUc7QUFBQSxNQUNqRixPQUFPLFVBQVUsT0FBTyxLQUFLLFlBQVksTUFDeEMsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsSUFBSSxPQUFPLElBQUksV0FBVyxRQUFXLGFBQWEsRUFBRSxHQUNoRSwwQkFBQUE7QUFBQSxRQUFDO0FBQUE7QUFBQSxVQUVDLFNBQVMsV0FBVyxPQUFPO0FBQUEsVUFDM0IsYUFBWTtBQUFBLFVBQ1osY0FBYyxZQUFZO0FBQUEsVUFDMUIsVUFBVTtBQUFBO0FBQUEsUUFKTCxHQUFHLEtBQUssRUFBRTtBQUFBLE1BS2pCLEdBQ0Y7QUFBQSxPQUVKLENBQ0QsR0FDSDtBQUFBLEtBRUo7QUFFSjs7O0FDbE5BLFNBQVMsZ0JBQUFJLGVBQWMsYUFBYSxVQUFVLGlCQUFpQjtBQXVGckQsZ0JBQUFDLE1BR0EsUUFBQUMsYUFIQTtBQXBGVixTQUFTLFdBQVcsRUFBRSxPQUFPLFFBQVEsU0FBQUMsU0FBUSxHQUFHO0FBQzlDLFFBQU0sQ0FBQyxPQUFPLFFBQVEsSUFBSUMsY0FBYSxDQUFDO0FBQ3hDLFFBQU0sQ0FBQyxNQUFNLE9BQU8sSUFBSUEsY0FBYSxDQUFDLENBQUM7QUFDdkMsTUFBSSxXQUFXO0FBRWYsV0FBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxNQUFNLFdBQVcsVUFBVSxNQUFNLFdBQVcsT0FBUTtBQUN4RCxVQUFNLElBQUksTUFBTTtBQUNoQixVQUFNLElBQUksTUFBTTtBQUNoQixRQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssT0FBUTtBQUNqRCxVQUFNLEtBQUssV0FBVyxJQUFJLFNBQVMsSUFBSTtBQUN2QyxVQUFNLEtBQUssV0FBVyxJQUFJLFNBQVMsSUFBSTtBQUN2QyxlQUFXLEVBQUUsR0FBRyxFQUFFO0FBQ2xCLFVBQU0sUUFBUSxLQUFLLE1BQU0sS0FBSyxLQUFLLEVBQUU7QUFDckMsUUFBSSxVQUFVLEVBQUc7QUFDakIsWUFBUSxZQUFVLENBQUMsR0FBRyxPQUFPLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUksSUFBSSxPQUFPLEtBQUssSUFBSSxHQUFHLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFDL0YsQ0FBQztBQUVELGNBQVksTUFBTTtBQUNoQixhQUFTLFdBQVMsUUFBUSxJQUFJO0FBQzlCLFlBQVEsWUFBVSxPQUFPLElBQUksWUFBVSxFQUFFLEdBQUcsT0FBTyxLQUFLLE1BQU0sTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLFdBQVMsTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUFBLEVBQzNHLEdBQUcsRUFBRTtBQUVMLFFBQU0sU0FBUztBQUNmLFFBQU0sT0FBTyxDQUFDO0FBQ2QsUUFBTSxPQUFPLE9BQU87QUFDcEIsUUFBTSxNQUFNLG9CQUFvQixLQUFLLElBQUk7QUFDekMsUUFBTSxjQUFjLE1BQ2hCLElBQUk7QUFBQSxJQUNKLEtBQUssSUFBSSxHQUFHLFNBQVMsSUFBSSxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRTtBQUFBLElBQ2pELEtBQUssSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztBQUFBLElBQ2xELEtBQUssSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRTtBQUFBLEVBQ3JELEVBQUUsSUFBSSxXQUFTLE1BQU0sU0FBUyxFQUFFLEVBQUUsU0FBUyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQzFEO0FBRUosV0FBUyxJQUFJLEdBQUcsSUFBSSxRQUFRLEtBQUs7QUFDL0IsVUFBTSxNQUFNLENBQUM7QUFDYixhQUFTLElBQUksR0FBRyxJQUFJLE9BQU8sS0FBSztBQUM5QixZQUFNLElBQUksTUFBTTtBQUNoQixZQUFNLFFBQVEsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEdBQUcsSUFBSSxLQUFLLEtBQUssSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJO0FBQ3hHLFlBQU0sUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksT0FBTyxJQUFJLEdBQUc7QUFDL0YsWUFBTSxVQUFVLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEdBQUc7QUFDMUUsVUFBSSxvQkFBb0I7QUFDeEIsVUFBSSxtQkFBbUI7QUFDdkIsVUFBSSxjQUFjO0FBQ2xCLGlCQUFXLFNBQVMsS0FBSyxHQUFHO0FBQzFCLGNBQU0sU0FBUyxLQUFLLE1BQU0sTUFBTSxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUs7QUFDdkQsY0FBTSxLQUFLLE1BQU0sS0FBSyxNQUFNO0FBQzVCLGNBQU0sS0FBSyxNQUFNLEtBQUs7QUFDdEIsY0FBTSxNQUFNLElBQUksTUFBTSxLQUFLO0FBQzNCLGNBQU0sS0FBSyxJQUFJLE1BQU07QUFDckIsY0FBTSxRQUFRLEtBQUssS0FBSyxLQUFLO0FBQzdCLGNBQU0sU0FBUyxDQUFDLEtBQUssS0FBSyxLQUFLO0FBQy9CLGNBQU0sV0FBVyxTQUFTLEtBQUssU0FBUyxNQUFNLE1BQU0sUUFBUTtBQUM1RCxZQUFJLENBQUMsU0FBVTtBQUNmLGNBQU0sTUFBTSxJQUFJLE1BQU0sTUFBTTtBQUM1QixjQUFNLFFBQVEsS0FBSyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLE1BQU0sU0FBUyxJQUFJLE1BQU0sUUFBUSxJQUFJLENBQUMsQ0FBQztBQUMzRixjQUFNLFNBQVMsS0FBSyxJQUFJLEVBQUUsU0FBUyxVQUFVLENBQUM7QUFDOUMsY0FBTSxRQUFRLEtBQUssSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDL0QsY0FBTSxRQUFRLE1BQU0sU0FBUyxNQUFNLE1BQU0sUUFBUTtBQUNqRCxjQUFNLGlCQUFpQixLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRTtBQUNsRCxjQUFNLGlCQUFpQixLQUFLLElBQUksRUFBRSxpQkFBaUIsbUJBQW1CLEtBQUssTUFBTSxRQUFRLEdBQUc7QUFDNUYsY0FBTSxTQUFTLEtBQUssSUFBSSxpQkFBaUIsT0FBTyxNQUFNLE1BQU0sSUFBSSxJQUFJLGlCQUFpQjtBQUNyRiw2QkFBcUIsUUFBUSxNQUFNLFVBQVUsUUFBUSxNQUFNLFVBQVUsTUFBTSxNQUFNLFFBQVE7QUFDekYsOEJBQXNCLFFBQVEsT0FBTyxTQUFTLFFBQVEsUUFBUSxPQUFPLFNBQVM7QUFDOUUsc0JBQWMsS0FBSyxJQUFJLGFBQWEsS0FBSyxJQUFJLE1BQU0sS0FBSyxNQUFNLE1BQU0sUUFBUSxLQUFLO0FBQUEsTUFDbkY7QUFDQSxZQUFNLFFBQVEsS0FBSyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQ2pDLFFBQVEscUJBQXFCLFFBQVEsb0JBQW9CLE9BQU8sVUFBVSxNQUFNLE9BQzlFLEdBQUcsQ0FBQztBQUNSLFlBQU0sUUFBUSxLQUFLLElBQUksT0FBTyxTQUFTLEdBQUcsS0FBSyxNQUFNLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFDM0UsVUFBSSxLQUFLLEVBQUUsT0FBTyxPQUFPLEtBQUssR0FBRyxPQUFPLGNBQWMsT0FBTyxjQUFjLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztBQUFBLElBQ25HO0FBQ0EsU0FBSyxLQUFLLEdBQUc7QUFBQSxFQUNmO0FBRUEsU0FDRSxnQkFBQUgsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxFQUFFLEdBQ2hELGVBQUssSUFBSSxDQUFDLEtBQUssTUFBTTtBQUNwQixVQUFNLFFBQVEsTUFBTSxJQUFJLFNBQVMsTUFBTSxJQUFJLElBQUlFLFFBQU8sS0FBSztBQUMzRCxVQUFNLGFBQWEsS0FBSyxLQUFLLEtBQUs7QUFDbEMsVUFBTSxXQUFXO0FBQ2pCLFVBQU0sV0FBVyxJQUFJQSxRQUFPLEdBQUcsU0FBUztBQUN4QyxVQUFNLFFBQVEsQ0FBQyxVQUFVLE1BQU0sSUFBSSxDQUFDLE1BQU0sTUFDeEMsZ0JBQUFGLEtBQUMsVUFBYSxPQUFPLEVBQUUsT0FBTyxLQUFLLE9BQU8sS0FBSyxLQUFLLElBQUksR0FBSSxlQUFLLFNBQXRELENBQTRELENBQ3hFO0FBQ0QsV0FDRSxnQkFBQUMsTUFBQyxTQUFZLE9BQU8sRUFBRSxlQUFlLE9BQU8sUUFBUSxHQUFHLFVBQVUsT0FBTyxHQUNyRTtBQUFBLG9CQUFjLE1BQU0sSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQUEsTUFDMUMsY0FDQyxnQkFBQUQsS0FBQyxTQUFJLE9BQU8sRUFBRSxPQUFPLFVBQVUsVUFBVSxFQUFFLEdBQ3hDLG1CQUFTLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE1BQU0sTUFBTSxHQUFHLE9BQU8sTUFBTSxJQUFJLE9BQU8sSUFBSSxNQUFNLEdBQUksaUJBQU0sR0FDdEY7QUFBQSxNQUVELE1BQU0sSUFBSSxNQUFNLGFBQWEsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUFBLFNBUDlDLENBUVY7QUFBQSxFQUVKLENBQUMsR0FDSDtBQUVKO0FBRU8sU0FBUyxXQUFXLEVBQUUsU0FBQUUsVUFBUyxTQUFTLE1BQU0sR0FBRztBQUN0RCxRQUFNLENBQUMsTUFBTSxPQUFPLElBQUlDLGNBQWEsRUFBRSxPQUFPLFFBQVEsT0FBTyxXQUFXLElBQUksUUFBUSxRQUFRLE9BQU8sUUFBUSxHQUFHLENBQUM7QUFDL0csWUFBVSxPQUFPO0FBQ2pCLFFBQU0sUUFBUSxLQUFLLElBQUksR0FBRyxLQUFLLEVBQUUsS0FBSztBQUN0QyxRQUFNLFNBQVMsS0FBSyxJQUFJLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQztBQUM1QyxNQUFJLENBQUMsUUFBUTtBQUNYLFdBQ0UsZ0JBQUFGLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsRUFBRSxHQUNsRDtBQUFBLHNCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE1BQU0sTUFBTSxPQUFPLE9BQU8sRUFBRSxHQUFJLG9CQUFTO0FBQUEsTUFDeEQsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksZ0JBQU1FLFFBQU8sSUFBRztBQUFBLE9BQ2xEO0FBQUEsRUFFSjtBQUVBLFNBQ0UsZ0JBQUFGLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLE9BQU8sT0FBTyxHQUNuRCwwQkFBQUEsS0FBQyxjQUFXLE9BQWMsUUFBZ0IsU0FBU0UsVUFBUyxHQUM5RDtBQUVKOzs7QUM1SEEsU0FBUyxZQUFBRSxXQUFVLFdBQVcsWUFBQUMsaUJBQWdCO0FBNEZ4QyxTQUNFLE9BQUFDLE1BREYsUUFBQUMsYUFBQTtBQXpGTixJQUFNLFlBQVksQ0FBQyxhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTTlCLFNBQVMsSUFBSSxDQUFDLE1BQU0sUUFBUSxFQUFFLElBQUksUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlFekQsU0FBUyxLQUFLLEVBQUUsVUFBVSxRQUFRLEdBQUc7QUFDMUMsRUFBQUMsVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxNQUFNLFFBQVEsVUFBVTtBQUMxQixjQUFRO0FBQ1IsWUFBTSxnQkFBZ0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUVELFNBQ0UsZ0JBQUFELE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFFBQVEsUUFBUSxVQUFVLEdBQUcsVUFBVSxFQUFFLEdBQzlFO0FBQUEsb0JBQUFBLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsc0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEdBQUcsTUFBTSxLQUFLLEdBQUcsNEJBQVc7QUFBQSxNQUN6RCxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRztBQUFBLE1BQzdCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLCtDQUFvQjtBQUFBLE9BQ3JEO0FBQUEsSUFDQSxnQkFBQUEsS0FBQyxVQUFLLGVBQUM7QUFBQSxJQUNQLGdCQUFBQSxLQUFDLGFBQVUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLFNBQU8sTUFBQyxXQUFTLE1BQ2xELDBCQUFBQSxLQUFDRyxXQUFBLEVBQVMsTUFBTSxVQUFVLFFBQVEsR0FBRyxRQUFRLE1BQU0sR0FDckQ7QUFBQSxLQUNGO0FBRUo7OztBQ3ZHQSxTQUFTLGdCQUFBQyxlQUFjLFVBQUFDLFNBQVEsVUFBVSxRQUFBQyxPQUFNLE1BQU0sVUFBVSxPQUFPLGFBQUFDLFlBQVcsYUFBQUMsWUFBVyxlQUFBQyxjQUFhLFVBQVUsWUFBQUMsV0FBVSxlQUFBQyxjQUFhLGlCQUFpQjtBQUszSjtBQUNBO0FBRkEsU0FBUyxXQUFBQyxnQkFBZTtBQXVCaEIsU0FDRSxPQUFBQyxNQURGLFFBQUFDLGFBQUE7QUFuQlIsU0FBUyxZQUFZLE1BQU07QUFDekIsUUFBTSxPQUFPRixTQUFRO0FBQ3JCLFNBQU8sT0FBTyxJQUFJLEVBQUUsV0FBVyxJQUFJLElBQUksT0FBTyxJQUFJLEVBQUUsUUFBUSxNQUFNLEdBQUcsSUFBSSxPQUFPLElBQUk7QUFDdEY7QUFFTyxTQUFTLFFBQVEsSUFBSTtBQUMxQixRQUFNLElBQUksS0FBSyxJQUFJLEdBQUcsS0FBSyxPQUFPLEtBQUssSUFBSSxJQUFJLE1BQU0sR0FBSSxDQUFDO0FBQzFELE1BQUksSUFBSSxHQUFJLFFBQU8sR0FBRyxDQUFDO0FBQ3ZCLFFBQU0sSUFBSSxLQUFLLE1BQU0sSUFBSSxFQUFFO0FBQzNCLE1BQUksSUFBSSxHQUFJLFFBQU8sR0FBRyxDQUFDO0FBQ3ZCLFFBQU0sSUFBSSxLQUFLLE1BQU0sSUFBSSxFQUFFO0FBQzNCLE1BQUksSUFBSSxHQUFJLFFBQU8sR0FBRyxDQUFDO0FBQ3ZCLFNBQU8sR0FBRyxLQUFLLE1BQU0sSUFBSSxFQUFFLENBQUM7QUFDOUI7QUFFQSxTQUFTLFdBQVcsRUFBRSxPQUFPLE1BQU0sT0FBTyxTQUFTLEdBQUc7QUFDcEQsU0FDRSxnQkFBQUUsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsV0FBVyxHQUFHLElBQUksU0FBUyxHQUNoRTtBQUFBLG9CQUFBQSxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEdBQUcsWUFBWSxFQUFFLEdBQ2hFO0FBQUEsc0JBQUFBLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsd0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEdBQUcsTUFBTSxLQUFLLEdBQUksaUJBQU07QUFBQSxRQUNyRCxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRztBQUFBLFFBQzVCO0FBQUEsU0FDSDtBQUFBLE1BQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksZ0JBQUs7QUFBQSxPQUN2QztBQUFBLElBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsT0FBTyxHQUFJLG1CQUFJLE9BQU8sUUFBUSxPQUFPLFdBQVcsRUFBRSxHQUFFO0FBQUEsSUFDL0YsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsR0FBRyxlQUFlLEVBQUUsR0FDbEUsVUFDSDtBQUFBLEtBQ0Y7QUFFSjtBQUVPLFNBQVMsYUFBYSxFQUFFLE9BQU8sU0FBUyxlQUFlLFdBQVcsU0FBUyxXQUFXLFFBQVEsR0FBRztBQUN0RyxFQUFBRSxVQUFTLENBQUMsVUFBVTtBQUNsQixRQUFJLENBQUMsUUFBUztBQUNkLFFBQUksTUFBTSxRQUFRLFVBQVU7QUFDMUIsY0FBUTtBQUNSLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEIsV0FBVyxNQUFNLFFBQVEsVUFBVTtBQUNqQyxnQkFBVTtBQUNWLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFFRCxTQUNFLGdCQUFBRixLQUFDLGNBQVcsT0FBYyxNQUFNLFVBQVUsYUFBYSxZQUFZLENBQUMscUJBQ2xFLDBCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxXQUFXLEVBQUUsR0FDbEQ7QUFBQSxvQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLEdBQUcsR0FBSSxtQkFBUTtBQUFBLElBQ3JDLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sS0FBSyxNQUFNLEtBQUssR0FBRyxvQ0FBc0I7QUFBQSxLQUNqRSxHQUNGO0FBRUo7QUFFQSxTQUFTLFlBQVksRUFBRSxPQUFPLE9BQU8sU0FBUyxJQUFJLFNBQVMsR0FBRztBQUM1RCxRQUFNLFNBQVMsVUFBVTtBQUN6QixLQUFHLEtBQUssTUFBTSxNQUFNLE1BQU07QUFDMUIsU0FDRSxnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsY0FBYyxFQUFFLEdBQ3JEO0FBQUEsb0JBQUFBLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsc0JBQUFELEtBQUMsWUFBUyxTQUFTLE9BQU8sT0FBTyxNQUFNLE9BQU8sU0FBa0IsVUFBb0I7QUFBQSxNQUNwRixnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRztBQUFBLE1BQzdCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGdCQUFNLE1BQUs7QUFBQSxPQUM3QztBQUFBLElBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksaUJBQU8sTUFBTSxJQUFJLElBQUc7QUFBQSxLQUN0RDtBQUVKO0FBRUEsU0FBUyxrQkFBa0IsRUFBRSxPQUFPLFNBQVMsSUFBSSxTQUFTLEdBQUc7QUFDM0QsUUFBTSxTQUFTLFVBQVU7QUFDekIsS0FBRyxLQUFLLHNCQUFzQixNQUFNO0FBQ3BDLFNBQ0UsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLGNBQWMsRUFBRSxHQUNyRDtBQUFBLG9CQUFBQSxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLHNCQUFBRCxLQUFDLFNBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUNyQiwwQkFBQUE7QUFBQSxRQUFDRztBQUFBLFFBQUE7QUFBQSxVQUVDLGNBQWMsT0FBTyxLQUFLO0FBQUEsVUFDMUI7QUFBQSxVQUNBLFVBQVUsQ0FBQyxTQUFTO0FBQ2xCLGtCQUFNLFNBQVMsT0FBTyxJQUFJO0FBQzFCLGdCQUFJLE9BQU8sVUFBVSxNQUFNLEVBQUcsVUFBUyxLQUFLLElBQUksR0FBRyxLQUFLLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztBQUFBLGdCQUNwRSxVQUFTLEtBQUs7QUFBQSxVQUNyQjtBQUFBO0FBQUEsUUFQSyxPQUFPLEtBQUs7QUFBQSxNQVFuQixHQUNGO0FBQUEsTUFDQSxnQkFBQUgsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLEdBQUcsR0FBRyxtQ0FBcUI7QUFBQSxNQUNqRCxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRztBQUFBLE1BQzdCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLGlDQUFtQjtBQUFBLE9BQ3BEO0FBQUEsSUFDQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyw4REFBZ0Q7QUFBQSxLQUNqRjtBQUVKO0FBRUEsU0FBUyxpQkFBaUIsRUFBRSxPQUFBSSxRQUFPLFNBQVMsSUFBSSxPQUFPLEdBQUc7QUFDeEQsUUFBTSxTQUFTLFVBQVU7QUFDekIsS0FBRyxLQUFLLGlCQUFpQixNQUFNO0FBQy9CLFNBQ0UsZ0JBQUFILE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLGNBQWMsRUFBRSxHQUNyRDtBQUFBLG9CQUFBQSxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLHNCQUFBRCxLQUFDSyxTQUFBLEVBQU8sT0FBTSx5QkFBd0IsU0FBa0IsU0FBUyxRQUFRO0FBQUEsTUFDekUsZ0JBQUFMLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxNQUM3QixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxtQ0FBcUI7QUFBQSxPQUN0RDtBQUFBLElBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksaUJBQU9JLFVBQVMsZ0JBQWdCLGtEQUE4QztBQUFBLEtBQ2hIO0FBRUo7QUFFTyxTQUFTLFlBQVksRUFBRSxRQUFRLFNBQVMsVUFBVSxxQkFBcUIsUUFBUSxHQUFHO0FBQ3ZGLFFBQU0sS0FBSyxTQUFTLEVBQUUsU0FBUyxTQUFTLENBQUM7QUFDekMsUUFBTSxTQUFTO0FBQUEsSUFDYixFQUFFLE1BQU0sVUFBVSxPQUFPLG1CQUFtQixNQUFNLDRDQUE0QyxNQUFNLG1CQUFtQjtBQUFBLElBQ3ZILEVBQUUsTUFBTSxnQkFBZ0IsT0FBTyx3QkFBd0IsTUFBTSwrQ0FBK0MsTUFBTSw2QkFBNkI7QUFBQSxJQUMvSSxFQUFFLE1BQU0sYUFBYSxPQUFPLGlCQUFpQixNQUFNLHFEQUFxRCxNQUFNLG9CQUFvQjtBQUFBLEVBQ3BJO0FBRUEsRUFBQUYsVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxDQUFDLFFBQVM7QUFDZCxRQUFJLE1BQU0sUUFBUSxVQUFVO0FBQzFCLGNBQVE7QUFDUixZQUFNLGdCQUFnQjtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBRUQsU0FDRSxnQkFBQUYsS0FBQyxjQUFXLE9BQU0saUJBQWdCLE1BQUssOERBQ3JDLDBCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFFBQVEsSUFBSSxXQUFXLEVBQUUsR0FDckMsMEJBQUFDLE1BQUNLLFlBQUEsRUFBVSxTQUFTLE9BQU8sV0FBUyxNQUFDLGFBQWEsSUFBSSxjQUFjLEdBQ2pFO0FBQUEsV0FBTyxJQUFJLENBQUMsVUFDWCxnQkFBQU47QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUVDO0FBQUEsUUFDQSxPQUFPLE9BQU8sTUFBTSxJQUFJO0FBQUEsUUFDeEIsU0FBUyxXQUFXLEdBQUcsR0FBRyxNQUFNLElBQUk7QUFBQSxRQUNwQztBQUFBLFFBQ0EsVUFBVSxDQUFDLFVBQVUsU0FBUyxNQUFNLE1BQU0sS0FBSztBQUFBO0FBQUEsTUFMMUMsTUFBTTtBQUFBLElBTWIsQ0FDRDtBQUFBLElBQ0QsZ0JBQUFBLEtBQUMsb0JBQWlCLE9BQU8sT0FBTyxlQUFlLFNBQVMsV0FBVyxHQUFHLEdBQUcsZUFBZSxHQUFHLElBQVEsUUFBUSxxQkFBcUI7QUFBQSxJQUNoSSxnQkFBQUEsS0FBQyxxQkFBa0IsT0FBTyxPQUFPLG9CQUFvQixTQUFTLFdBQVcsR0FBRyxHQUFHLG9CQUFvQixHQUFHLElBQVEsVUFBVSxDQUFDLFVBQVUsU0FBUyxzQkFBc0IsS0FBSyxHQUFHO0FBQUEsS0FDNUssR0FDRixHQUNGO0FBRUo7QUFFTyxTQUFTLFVBQVUsRUFBRSxRQUFRLE9BQU8sR0FBRztBQUM1QyxTQUNFLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNoQyxpQkFBTyxJQUFJLENBQUMsR0FBRyxNQUNkLGdCQUFBQSxLQUFDLFVBQWEsT0FBTyxFQUFFLE9BQU8sTUFBTSxTQUFTLE9BQU8sSUFBSSxPQUFPLE1BQU0sTUFBTSxPQUFPLEdBQUksYUFBRyxJQUFJLElBQUksT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFuRyxDQUFzRyxDQUNsSCxHQUNIO0FBRUo7QUFFTyxTQUFTLFdBQVcsRUFBRSxRQUFBTyxTQUFRLFNBQVMsYUFBYSxTQUFTLFFBQVEsZUFBZSxTQUFTLFFBQVEsZ0JBQWdCLE9BQU8sa0VBQTRELEdBQUc7QUFDaE0sUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJQyxjQUFhRCxRQUFPLENBQUMsS0FBSyxJQUFJO0FBRTFELEVBQUFMLFVBQVMsQ0FBQyxVQUFVO0FBQ2xCLFFBQUksQ0FBQyxRQUFTO0FBQ2QsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLE9BQU8sT0FBTyxHQUFHO0FBQy9DLG9CQUFjLE9BQU8sQ0FBQztBQUN0QixZQUFNLGdCQUFnQjtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBRUQsU0FDRSxnQkFBQUYsS0FBQyxjQUFXLE9BQWMsTUFDeEIsMEJBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFFBQVEsSUFBSSxXQUFXLEVBQUUsR0FDOUQsMEJBQUFBO0FBQUEsSUFBQztBQUFBO0FBQUEsTUFDQyxTQUFPO0FBQUEsTUFDUCxPQUFPTztBQUFBLE1BQ1A7QUFBQSxNQUNBLGFBQVk7QUFBQSxNQUNaLFFBQVEsQ0FBQyxHQUFHLE1BQU0sV0FBVyxHQUFHLEVBQUUsSUFBSSxLQUFLO0FBQUEsTUFDM0MsZ0JBQWdCO0FBQUEsTUFDaEIsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsV0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLE1BQ0wsWUFBWTtBQUFBLE1BQ1osV0FBVztBQUFBLE1BQ1gsWUFBWSxDQUFDLEdBQUcsRUFBRSxVQUFVLFNBQVMsRUFBRSxNQUFNO0FBQzNDLGNBQU0sTUFBTSxFQUFFLGNBQWM7QUFDNUIsZUFDRSxnQkFBQU4sTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsSUFBSSxXQUFZLElBQUksT0FBTyxJQUFJLFlBQWEsTUFBTSxVQUFVLEVBQUUsR0FDbkc7QUFBQSwwQkFBQUEsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSw0QkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxPQUFPLFdBQVcsVUFBVSxNQUFNLFFBQVEsR0FBRyxHQUFJLFlBQUUsTUFBSztBQUFBLFlBQ2xGLEVBQUUsU0FBUyxXQUFXLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sV0FBVyxVQUFVLE9BQU8sRUFBRSxHQUFJLHFCQUFLO0FBQUEsWUFDbkYsRUFBRSxTQUFTLGVBQWUsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsTUFBTSxHQUFJLDJCQUFhO0FBQUEsWUFDN0YsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxZQUM3QixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFdBQVcsVUFBVSxNQUFNLEdBQzlDLGdCQUFNLFNBQVMsRUFBRSxPQUFPLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsYUFBYSxVQUFVLGlCQUFpQixpQkFDaEk7QUFBQSxhQUNGO0FBQUEsVUFDQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFdBQVcsVUFBVSxNQUFNLEdBQUksWUFBRSxNQUFLO0FBQUEsV0FDOUQ7QUFBQSxNQUVKO0FBQUE7QUFBQSxFQUNGLEdBQ0YsR0FDRjtBQUVKO0FBRU8sU0FBUyxhQUFhLEVBQUUsU0FBUyxRQUFRLFlBQVksU0FBUyxRQUFRLFFBQVEsR0FBRztBQUN0RixRQUFNLENBQUMsU0FBUyxVQUFVLElBQUlRLGNBQWEsUUFBUSxDQUFDLEtBQUssSUFBSTtBQUM3RCxRQUFNLENBQUMsT0FBTyxRQUFRLElBQUlBLGNBQWEsRUFBRTtBQUN6QyxRQUFNLFdBQVcsUUFBUSxLQUFLLENBQUMsTUFBTSxXQUFXLE1BQU0sR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDO0FBRXJFLFNBQ0UsZ0JBQUFSO0FBQUEsSUFBQztBQUFBO0FBQUEsTUFDQyxPQUFNO0FBQUEsTUFDTixNQUFLO0FBQUEsTUFDTCxPQUFPLGdCQUFBQSxLQUFDLGFBQVUsUUFBZ0IsUUFBUSxZQUFZO0FBQUEsTUFFdEQsMEJBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLFFBQVEsSUFBSSxXQUFXLEdBQUcsS0FBSyxFQUFFLEdBQ25FO0FBQUEsd0JBQUFELEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLE9BQU8sTUFBTSxHQUNsRCwwQkFBQUE7QUFBQSxVQUFDO0FBQUE7QUFBQSxZQUNDLFNBQU87QUFBQSxZQUNQLE9BQU87QUFBQSxZQUNQO0FBQUEsWUFDQSxhQUFZO0FBQUEsWUFDWixRQUFRLENBQUMsR0FBRyxNQUFNLFdBQVcsR0FBRyxFQUFFLElBQUksS0FBSztBQUFBLFlBQzNDLFVBQVU7QUFBQSxZQUNWLGdCQUFnQixDQUFDLE1BQU0sV0FBVyxDQUFDO0FBQUEsWUFDbkMsVUFBVSxDQUFDLE1BQU0sT0FBTyxFQUFFLElBQUk7QUFBQSxZQUM5QixVQUFVO0FBQUEsWUFDVixXQUFTO0FBQUEsWUFDVCxLQUFLO0FBQUEsWUFDTCxZQUFZLENBQUMsR0FBRyxFQUFFLFVBQVUsU0FBUyxFQUFFLE1BQ3JDLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsT0FBTyxJQUFJLFdBQVksSUFBSSxPQUFPLElBQUksWUFBYSxNQUFNLFVBQVUsRUFBRSxHQUNoRztBQUFBLDhCQUFBRCxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEVBQUUsR0FDbkMsMEJBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsVUFBVSxZQUFZLE9BQU8sV0FBVyxVQUFVLEdBQUcsR0FBSSxZQUFFLEtBQUssUUFBUSxPQUFPLEdBQUcsR0FBRSxHQUNyRztBQUFBLGNBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsT0FBTyxLQUFLLENBQUMsU0FBUyxHQUFJLGVBQUssUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFHO0FBQUEsZUFDNUY7QUFBQTtBQUFBLFFBRUosR0FDRjtBQUFBLFFBQ0EsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsR0FBRyxJQUFJLFVBQVUsVUFBVSxFQUFFLEdBQzNFLHNCQUFZLFFBQVEsSUFDbkIsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxHQUFHLEdBQUksa0JBQVEsRUFBRSxLQUFLLE1BQU0sR0FBRyxHQUFJLEdBQUUsSUFFM0QsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsaUNBQW1CLEdBRXREO0FBQUEsU0FDRjtBQUFBO0FBQUEsRUFDRjtBQUVKO0FBRU8sU0FBUyxnQkFBZ0IsRUFBRSxTQUFTLE9BQU8sU0FBUyxRQUFRLFFBQVEsR0FBRztBQUM1RSxRQUFNLENBQUMsU0FBUyxVQUFVLElBQUlRLGNBQWEsUUFBUSxDQUFDLEtBQUssSUFBSTtBQUU3RCxTQUNFLGdCQUFBUixLQUFDLGNBQVcsT0FBTSx1QkFBc0IsTUFBSywrREFDM0MsMEJBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLFFBQVEsSUFBSSxXQUFXLEdBQUcsS0FBSyxFQUFFLEdBQ25FO0FBQUEsb0JBQUFELEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLE9BQU8sTUFBTSxHQUNsRCwwQkFBQUE7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFNBQU87QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQO0FBQUEsUUFDQSxhQUFZO0FBQUEsUUFDWixRQUFRLENBQUMsR0FBRyxNQUFNLFdBQVcsR0FBRyxFQUFFLElBQUksS0FBSztBQUFBLFFBQzNDLGdCQUFnQixDQUFDLE1BQU0sV0FBVyxDQUFDO0FBQUEsUUFDbkMsVUFBVTtBQUFBLFFBQ1YsVUFBVTtBQUFBLFFBQ1YsV0FBUztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsWUFBWSxDQUFDLEdBQUcsRUFBRSxVQUFVLFNBQVMsRUFBRSxNQUNyQyxnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE9BQU8sSUFBSSxXQUFZLElBQUksT0FBTyxJQUFJLFlBQWEsTUFBTSxVQUFVLEVBQUUsR0FDaEc7QUFBQSwwQkFBQUQsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEdBQUcsUUFBUSxFQUFFLEdBQ25DLDBCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLFVBQVUsWUFBWSxPQUFPLFdBQVcsVUFBVSxHQUFHLEdBQUksWUFBRSxLQUFLLFFBQVEsT0FBTyxHQUFHLEdBQUUsR0FDckc7QUFBQSxVQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sV0FBVyxVQUFVLE9BQU8sS0FBSyxDQUFDLFNBQVMsR0FBSSxlQUFLLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxVQUFTO0FBQUEsV0FDeEc7QUFBQTtBQUFBLElBRUosR0FDRjtBQUFBLElBQ0EsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsR0FBRyxJQUFJLFVBQVUsVUFBVSxFQUFFLEdBQzNFLGtCQUFRLElBQ1AsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsc0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksa0NBQXdCLE1BQU0sUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLFlBQVc7QUFBQSxNQUM3RixNQUFNLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxNQUNwQyxnQkFBQUEsS0FBQyxVQUFhLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxzQkFBTyxFQUFFLEtBQUssTUFBM0MsQ0FBOEMsQ0FDMUQ7QUFBQSxNQUNELGdCQUFBQSxLQUFDLFVBQUssZUFBQztBQUFBLE1BQ1AsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxHQUFHLEdBQUksa0JBQVEsRUFBRSxLQUFLLE1BQU0sR0FBRyxHQUFJLEdBQUU7QUFBQSxPQUM3RCxJQUVBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLGtDQUFvQixHQUV2RDtBQUFBLEtBQ0YsR0FDRjtBQUVKO0FBRU8sU0FBUyxrQkFBa0IsRUFBRSxRQUFRLFNBQVMsU0FBUyxVQUFVLE9BQU8sR0FBRztBQUNoRixTQUNFLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEdBQUcsV0FBVyxFQUFFLEdBQy9EO0FBQUEsb0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEdBQUcsTUFBTSxLQUFLLEdBQUcsNEJBQWM7QUFBQSxJQUM1RCxnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSxzQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxrQkFBTztBQUFBLE1BQ3ZDLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEVBQUUsR0FDbkMsMEJBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsVUFBVSxZQUFZLE9BQU8sUUFBUSxHQUFJLGlCQUFPLEtBQUssUUFBUSxPQUFPLEdBQUcsR0FBRSxHQUMxRjtBQUFBLE9BQ0Y7QUFBQSxJQUNBLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxXQUFXLEVBQUUsR0FDbEQsMEJBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxTQUFPO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUDtBQUFBLFFBQ0EsWUFBWTtBQUFBLFFBQ1osWUFBWTtBQUFBLFFBQ1osS0FBSztBQUFBLFFBQ0wsU0FBTztBQUFBLFFBQ1A7QUFBQSxRQUNBLFVBQVU7QUFBQSxRQUNWLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxNQUN2QixnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFNBQVMsR0FDcEM7QUFBQSwwQkFBQUEsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSw0QkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLG1CQUFTLFlBQU8sTUFBSztBQUFBLFlBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksR0FBRyxHQUFJLFlBQUUsT0FBTTtBQUFBLGFBQzNEO0FBQUEsVUFDQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxlQUFLLEVBQUUsSUFBSSxJQUFHO0FBQUEsV0FDaEQ7QUFBQTtBQUFBLElBRUosR0FDRjtBQUFBLElBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsbUVBQWtEO0FBQUEsS0FDbkY7QUFFSjtBQUVBLFNBQVMsVUFBVSxTQUFTLFNBQVM7QUFDbkMsRUFBQUUsVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxDQUFDLFFBQVEsRUFBRztBQUNoQixRQUFJLE1BQU0sUUFBUSxVQUFVO0FBQzFCLGNBQVE7QUFDUixZQUFNLGdCQUFnQjtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFFTyxTQUFTLFlBQVksRUFBRSxVQUFVLFFBQVEsWUFBWSxTQUFTLFNBQVMsV0FBVyxRQUFRLFVBQVUsUUFBUSxHQUFHO0FBQ3BILFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSU0sY0FBYSxTQUFTLENBQUMsS0FBSyxJQUFJO0FBQzlELFFBQU0sa0JBQWtCLE1BQU07QUFDNUIsUUFBSSxRQUFTLFFBQU87QUFDcEIsVUFBTSxXQUFXLFFBQVE7QUFDekIsV0FBTyxTQUFTLFNBQVMsUUFBUSxJQUFJLFdBQVc7QUFBQSxFQUNsRDtBQUNBLFlBQVUsTUFBTSxTQUFTLE9BQU87QUFDaEMsRUFBQU4sVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxDQUFDLFFBQVM7QUFDZCxVQUFNLFdBQVcsZ0JBQWdCO0FBQ2pDLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxPQUFPLFVBQVU7QUFDL0MsZUFBUyxRQUFRO0FBQ2pCLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFFRCxTQUNFLGdCQUFBRjtBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsT0FBTTtBQUFBLE1BQ04sTUFBSztBQUFBLE1BQ0wsT0FBTyxnQkFBQUEsS0FBQyxhQUFVLFFBQWdCLFFBQVEsWUFBWTtBQUFBLE1BRXRELDBCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsT0FBTyxRQUFRLElBQUksV0FBVyxHQUFHLEtBQUssRUFBRSxHQUNuRTtBQUFBLHdCQUFBRCxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxPQUFPLE1BQU0sR0FDakQsb0JBQ0MsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsaUNBQW1CLElBQ2hELFNBQVMsV0FBVyxJQUN0QixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxrQ0FBb0IsSUFFbkQsZ0JBQUFBO0FBQUEsVUFBQztBQUFBO0FBQUEsWUFDQyxTQUFPO0FBQUEsWUFDUCxPQUFPO0FBQUEsWUFDUCxTQUFTLFdBQVcsQ0FBQztBQUFBLFlBQ3JCLGFBQVk7QUFBQSxZQUNaLFFBQVEsQ0FBQyxHQUFHLE1BQU0sV0FBVyxHQUFHLEVBQUUsS0FBSyxLQUFLO0FBQUEsWUFDNUMsZ0JBQWdCLENBQUMsTUFBTSxXQUFXLENBQUM7QUFBQSxZQUNuQyxVQUFVO0FBQUEsWUFDVixVQUFVO0FBQUEsWUFDVixXQUFTO0FBQUEsWUFDVCxLQUFLO0FBQUEsWUFDTCxZQUFZLENBQUMsR0FBRyxFQUFFLFVBQVUsU0FBUyxFQUFFLE1BQ3JDLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsT0FBTyxJQUFJLFdBQVksSUFBSSxPQUFPLElBQUksWUFBYSxNQUFNLFVBQVUsRUFBRSxHQUMvRjtBQUFBLGdCQUFFLFNBQVMsZ0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsRUFBRSxNQUFNLEdBQUkscUJBQUs7QUFBQSxjQUN4RSxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEdBQUcsUUFBUSxFQUFFLEdBQ25DLDBCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLFVBQVUsWUFBWSxPQUFPLFdBQVcsVUFBVSxHQUFHLEdBQUksWUFBRSxNQUFNLFFBQVEsT0FBTyxHQUFHLEdBQUUsR0FDdEc7QUFBQSxjQUNDLEVBQUUsT0FBTyxPQUFPLGFBQWEsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsc0JBQVE7QUFBQSxjQUM3RyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFdBQVcsVUFBVSxPQUFPLEtBQUssQ0FBQyxTQUFTLEdBQUksZUFBSyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUc7QUFBQSxlQUM1RjtBQUFBO0FBQUEsUUFFSixHQUVKO0FBQUEsUUFDQSxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLElBQUksVUFBVSxVQUFVLEVBQUUsR0FDM0UsMEJBQWdCLElBQ2YsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsMEJBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksYUFBRyxnQkFBZ0IsRUFBRSxLQUFLLElBQUksZ0JBQWdCLEVBQUUsVUFBVSxJQUFJLFNBQVMsT0FBTyxTQUFNLFFBQVEsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUc7QUFBQSxVQUNwSixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sVUFBVSxXQUFXLEdBQUksMEJBQWdCLEVBQUUsT0FBTyxNQUFLO0FBQUEsVUFDcEYsZ0JBQUFBLEtBQUMsVUFBSyxlQUFDO0FBQUEsVUFDUCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLEdBQUcsR0FBSSwwQkFBZ0IsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLEdBQUU7QUFBQSxXQUNyRSxJQUVBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLHlCQUFXLEdBRTlDO0FBQUEsU0FDRjtBQUFBO0FBQUEsRUFDRjtBQUVKO0FBRU8sU0FBUyxZQUFZLEVBQUUsVUFBVSxRQUFRLFlBQVksU0FBUyxVQUFVLFFBQVEsR0FBRztBQUN4RixRQUFNLENBQUMsWUFBWSxhQUFhLElBQUlRLGNBQWEsSUFBSTtBQUNyRCxRQUFNLENBQUMsTUFBTSxPQUFPLElBQUlBLGNBQWEsTUFBTTtBQUMzQyxRQUFNLFVBQVUsU0FBUyxTQUFTLFdBQVcsQ0FBQyxJQUFJLFdBQVcsSUFBSSxTQUFTLENBQUMsS0FBSztBQUNoRixZQUFVLE1BQU0sU0FBUyxPQUFPO0FBQ2hDLEVBQUFOLFVBQVMsQ0FBQyxVQUFVO0FBQ2xCLFFBQUksQ0FBQyxRQUFTO0FBQ2QsUUFBSSxNQUFNLFFBQVEsU0FBUyxDQUFDLE1BQU0sUUFBUSxDQUFDLE1BQU0sTUFBTTtBQUNyRCxjQUFRLENBQUMsTUFBTyxNQUFNLFNBQVMsWUFBWSxNQUFPO0FBQ2xELFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxPQUFPLFNBQVM7QUFDOUMsZUFBUyxPQUFPO0FBQ2hCLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFFRCxTQUNFLGdCQUFBRjtBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsT0FBTTtBQUFBLE1BQ04sTUFBSztBQUFBLE1BQ0wsT0FBTyxnQkFBQUEsS0FBQyxhQUFVLFFBQWdCLFFBQVEsWUFBWTtBQUFBLE1BRXRELDBCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsT0FBTyxRQUFRLElBQUksV0FBVyxHQUFHLEtBQUssRUFBRSxHQUNuRTtBQUFBLHdCQUFBRCxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxPQUFPLE1BQU0sR0FDakQsbUJBQVMsV0FBVyxJQUNuQixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxrQ0FBb0IsSUFFbkQsZ0JBQUFBO0FBQUEsVUFBQztBQUFBO0FBQUEsWUFDQyxTQUFPO0FBQUEsWUFDUCxPQUFPO0FBQUEsWUFDUCxTQUFTLFdBQVcsS0FBSyxNQUFNO0FBQUEsWUFDL0IsYUFBWTtBQUFBLFlBQ1osUUFBUSxDQUFDLEdBQUcsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLO0FBQUEsWUFDakUsZ0JBQWdCO0FBQUEsWUFDaEIsVUFBVSxNQUFNO0FBQUEsWUFBQztBQUFBLFlBQ2pCLFVBQVU7QUFBQSxZQUNWLFdBQVM7QUFBQSxZQUNULEtBQUs7QUFBQSxZQUNMLFlBQVksQ0FBQyxHQUFHLEVBQUUsVUFBVSxTQUFTLEVBQUUsTUFDckMsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLElBQUksV0FBWSxJQUFJLE9BQU8sSUFBSSxZQUFhLE1BQU0sVUFBVSxFQUFFLEdBQ2hHO0FBQUEsOEJBQUFELEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxHQUNuQywwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxXQUFXLFVBQVUsR0FBRyxHQUFJLFlBQUUsTUFBSyxHQUNqRjtBQUFBLGNBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsT0FBTyxLQUFLLENBQUMsU0FBUyxHQUFJLGVBQUssRUFBRSxLQUFLLElBQUc7QUFBQSxlQUN0RjtBQUFBO0FBQUEsUUFFSixHQUVKO0FBQUEsUUFDQSxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLElBQUksVUFBVSxVQUFVLEVBQUUsR0FDM0Usb0JBQ0MsZ0JBQUFDLE1BQUNLLFlBQUEsRUFBVSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsU0FBUyxXQUFXLEtBQUssTUFBTSxXQUFXLFdBQVMsTUFDcEY7QUFBQSwwQkFBQU4sS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sUUFBUSxLQUFLLEdBQUksa0JBQVEsZUFBZSxrQkFBaUI7QUFBQSxVQUN0RixnQkFBQUEsS0FBQyxVQUFLLGVBQUM7QUFBQSxVQUNQLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sUUFBUSxHQUFJLGtCQUFRLE1BQUs7QUFBQSxXQUNqRCxJQUVBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLHlCQUFXLEdBRTlDO0FBQUEsU0FDRjtBQUFBO0FBQUEsRUFDRjtBQUVKO0FBRU8sU0FBUyxZQUFZLEVBQUUsUUFBUSxTQUFTLGNBQWMsU0FBUyxRQUFRLGVBQWUsUUFBUSxHQUFHO0FBQ3RHLFFBQU0sQ0FBQyxRQUFRLFNBQVMsSUFBSVEsY0FBYSxDQUFDO0FBQzFDLFFBQU0sUUFBUTtBQUVkLEVBQUFOLFVBQVMsQ0FBQyxVQUFVO0FBQ2xCLFFBQUksQ0FBQyxRQUFTO0FBQ2QsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLEtBQUs7QUFDbkMsb0JBQWMsTUFBTSxPQUFPLENBQUMsQ0FBQztBQUM3QixZQUFNLGdCQUFnQjtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBRUQsUUFBTSxRQUFRLENBQUMsTUFBTyxFQUFFLFFBQVEsT0FBTyxZQUFZLEVBQUU7QUFFckQsU0FDRSxnQkFBQUYsS0FBQyxjQUFXLE9BQU0sbUJBQWtCLE1BQUssb0ZBQ3ZDLDBCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxXQUFXLEVBQUUsR0FDbEQsMEJBQUFBO0FBQUEsSUFBQztBQUFBO0FBQUEsTUFDQyxTQUFPO0FBQUEsTUFDUDtBQUFBLE1BQ0EsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVTtBQUFBLE1BQ1Y7QUFBQSxNQUNBLFlBQVk7QUFBQSxNQUNaLFNBQU87QUFBQSxNQUNQLFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxNQUN2QixnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSx3QkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLG1CQUFTLFlBQU8sTUFBSztBQUFBLFFBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksR0FBRyxHQUFJLGdCQUFNLENBQUMsRUFBRSxPQUFPLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUU7QUFBQSxRQUNwRyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxZQUFFLE1BQUs7QUFBQSxRQUN0QyxFQUFFLFFBQVEsV0FBVyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsT0FBTyxJQUFJLE1BQU0sR0FBSSxzQkFBTTtBQUFBLFFBQy9FLEVBQUUsUUFBUSxnQkFBZ0IsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksNEJBQWM7QUFBQSxTQUMzRTtBQUFBO0FBQUEsRUFFSixHQUNGLEdBQ0Y7QUFFSjtBQUVPLFNBQVMsV0FBVyxFQUFFLFFBQVEsTUFBTSxTQUFTLFFBQVEsV0FBVyxRQUFRLEdBQUc7QUFDaEYsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJUSxjQUFhLEtBQUssSUFBSSxHQUFHLE9BQU8sVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDO0FBRTdGLFNBQ0UsZ0JBQUFSLEtBQUMsY0FBVyxPQUFNLFNBQVEsTUFBSywrREFDN0IsMEJBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsRUFBRSxHQUNsRCwwQkFBQUE7QUFBQSxJQUFDO0FBQUE7QUFBQSxNQUNDLE9BQU87QUFBQSxNQUNQLFVBQVUsT0FBTztBQUFBLE1BQ2pCLFVBQVUsQ0FBQyxNQUFNO0FBQ2Ysa0JBQVUsQ0FBQztBQUNYLGtCQUFVLE9BQU8sQ0FBQyxDQUFDO0FBQUEsTUFDckI7QUFBQSxNQUNBO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixTQUFPO0FBQUEsTUFDUCxVQUFVO0FBQUEsTUFDVixVQUFVO0FBQUEsTUFDVixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sTUFDdkIsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsd0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEVBQUUsR0FBSSxtQkFBUyxZQUFPLE1BQUs7QUFBQSxRQUN4RCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsT0FBTyxJQUFJLEdBQUcsR0FBSSxZQUFFLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRTtBQUFBLFFBQzlGLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLFlBQUUsTUFBSztBQUFBLFFBQ3RDLEVBQUUsUUFBUSxRQUFRLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksTUFBTSxHQUFJLHNCQUFNO0FBQUEsU0FDL0U7QUFBQTtBQUFBLEVBRUosR0FDRixHQUNGO0FBRUo7QUFFQSxTQUFTLGdCQUFnQixFQUFFLFNBQVMsR0FBRztBQUNyQyxRQUFNLFNBQVNTLGFBQVksR0FBR0MsTUFBSyxHQUFHLENBQUM7QUFDdkMsUUFBTSxTQUFTLFVBQVU7QUFDekIsU0FBTyxJQUFJLENBQUM7QUFDWixRQUFNLFFBQVEsS0FBSyxJQUFJLEdBQUcsT0FBTyxTQUFTLENBQUM7QUFDM0MsUUFBTSxVQUFVLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQztBQUMzQyxRQUFNLFFBQVEsU0FBUyxTQUFTLE9BQU8sQ0FBQyxLQUFLLFlBQVksTUFBTSxRQUFRLFFBQVEsQ0FBQztBQUNoRixNQUFJLFdBQVc7QUFDZixRQUFNLFFBQVEsQ0FBQztBQUVmLFdBQVMsSUFBSSxHQUFHLElBQUksT0FBTyxLQUFLO0FBQzlCLFVBQU0sVUFBVSxTQUFTLFNBQVMsS0FBSyxDQUFDLFNBQVM7QUFDL0Msa0JBQVksS0FBSyxTQUFTLFFBQVE7QUFDbEMsYUFBTyxJQUFJO0FBQUEsSUFDYixDQUFDO0FBQ0QsZUFBVztBQUNYLFVBQU07QUFBQSxNQUNKLGdCQUFBVixLQUFDLFVBQWEsT0FBTyxFQUFFLE9BQU8sS0FBSyxVQUFVLFdBQVcsU0FBUyxTQUFTLE1BQU0sR0FDN0UsZUFBSyxVQUFVLE1BQU0sVUFBVSxXQUFNLFlBRDdCLENBRVg7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQ0UsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsRUFBRSxHQUNsRDtBQUFBLG9CQUFBRCxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUFJLGlCQUFNO0FBQUEsSUFDN0MsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLFVBQVUsT0FBTyxHQUNsRCxtQkFBUyxTQUFTLElBQUksQ0FBQyxZQUN0QixnQkFBQUMsTUFBQyxTQUF3QixPQUFPLEVBQUUsZUFBZSxPQUFPLGFBQWEsRUFBRSxHQUNyRTtBQUFBLHNCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sUUFBUSxNQUFNLEdBQUcsb0JBQUM7QUFBQSxNQUN4QyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxjQUFJLFFBQVEsS0FBSyxLQUFJO0FBQUEsTUFDckQsZ0JBQUFBO0FBQUEsUUFBQztBQUFBO0FBQUEsVUFDQyxPQUFPLFFBQVE7QUFBQSxVQUNmLFNBQVM7QUFBQSxVQUNULFVBQVU7QUFBQSxVQUNWLE9BQU87QUFBQSxVQUNQLFdBQVcsT0FBTztBQUFBLFVBQ2xCLFFBQVEsQ0FBQyxXQUFXLFNBQVMsTUFBTyxHQUFHLEtBQUssTUFBTSxNQUFNLENBQUMsU0FBUyxJQUFJLFNBQVMsS0FBTSxRQUFRLENBQUMsQ0FBQztBQUFBO0FBQUEsTUFDakc7QUFBQSxTQVZRLFFBQVEsS0FXbEIsQ0FDRCxHQUNIO0FBQUEsS0FDRjtBQUVKO0FBRU8sU0FBUyxjQUFjLEVBQUUsT0FBTyxNQUFNLFVBQVUsU0FBUyxRQUFRLEdBQUc7QUFDekUsWUFBVSxNQUFNLFNBQVMsT0FBTztBQUVoQyxTQUNFLGdCQUFBQyxNQUFDLGNBQVcsT0FBYyxNQUFLLGdEQUM1QjtBQUFBLGdCQUFZLGdCQUFBRCxLQUFDLG1CQUFnQixVQUFvQjtBQUFBLElBQ2xELGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxRQUFRLElBQUksV0FBVyxFQUFFLEdBQzdELGVBQUssV0FBVyxJQUNmLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLDhCQUFnQixJQUUvQyxnQkFBQUEsS0FBQ00sWUFBQSxFQUFVLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxTQUFrQixXQUFTLE1BQzNELGVBQUssSUFBSSxDQUFDLEtBQUssTUFDZCxnQkFBQUwsTUFBQyxTQUE2QixPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsTUFBTSxJQUFJLElBQUksRUFBRSxHQUN6RjtBQUFBLHNCQUFBQSxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLHdCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sT0FBTyxFQUFFLEdBQUksY0FBSSxNQUFLO0FBQUEsUUFDNUMsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxRQUM1QixJQUFJLFFBQVEsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksY0FBSSxNQUFLO0FBQUEsU0FDeEQ7QUFBQSxNQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGNBQUksUUFBUSxrQkFBaUI7QUFBQSxTQU5yRCxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsRUFPMUIsQ0FDRCxHQUNILEdBRUo7QUFBQSxLQUNGO0FBRUo7QUFFTyxTQUFTLGFBQWEsRUFBRSxVQUFVLFNBQVMsU0FBUyxRQUFRLFVBQVUsUUFBUSxHQUFHO0FBQ3RGLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSVEsY0FBYSxTQUFTLENBQUMsS0FBSyxJQUFJO0FBQzlELFlBQVUsTUFBTSxTQUFTLE9BQU87QUFDaEMsRUFBQU4sVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxDQUFDLFFBQVM7QUFDZCxRQUFJLE1BQU0sUUFBUSxNQUFNLFFBQVEsT0FBTyxRQUFRLEdBQUc7QUFDaEQsZUFBUyxRQUFRLENBQUM7QUFDbEIsWUFBTSxnQkFBZ0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUVELFNBQ0UsZ0JBQUFGLEtBQUMsY0FBVyxPQUFNLGtCQUFpQixNQUFLLG9HQUN0QywwQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE9BQU8sUUFBUSxJQUFJLFdBQVcsR0FBRyxLQUFLLEVBQUUsR0FDbkU7QUFBQSxvQkFBQUQsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsT0FBTyxNQUFNLEdBQ2pELG9CQUNDLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLGlDQUFtQixJQUNoRCxTQUFTLFdBQVcsSUFDdEIsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsbUNBQXFCLElBRXBELGdCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsU0FBTztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1AsU0FBUyxXQUFXLENBQUM7QUFBQSxRQUNyQixhQUFZO0FBQUEsUUFDWixRQUFRLENBQUMsR0FBRyxNQUFNLFdBQVcsR0FBRyxFQUFFLElBQUksS0FBSztBQUFBLFFBQzNDLGdCQUFnQixDQUFDLE1BQU0sV0FBVyxDQUFDO0FBQUEsUUFDbkMsVUFBVTtBQUFBLFFBQ1YsVUFBVTtBQUFBLFFBQ1YsV0FBUztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsWUFBWSxDQUFDLEdBQUcsRUFBRSxVQUFVLFNBQVMsRUFBRSxNQUNyQyxnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE9BQU8sSUFBSSxXQUFZLElBQUksT0FBTyxJQUFJLFlBQWEsTUFBTSxVQUFVLEVBQUUsR0FDL0Y7QUFBQSxZQUFFLE9BQU8sU0FBUyxnQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFdBQVcsVUFBVSxFQUFFLE9BQU8sTUFBTSxHQUFJLHFCQUFLO0FBQUEsVUFDdEYsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxHQUNuQywwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxXQUFXLFVBQVUsR0FBRyxHQUFJLFlBQUUsTUFBSyxHQUNqRjtBQUFBLFVBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxXQUFXLFVBQVUsT0FBTyxLQUFLLENBQUMsU0FBUyxHQUFJLGVBQUssRUFBRSxVQUFVLGtCQUFlLEVBQUUsR0FBRyxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBRztBQUFBLFdBQ25JO0FBQUE7QUFBQSxJQUVKLEdBRUo7QUFBQSxJQUNBLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEdBQUcsSUFBSSxVQUFVLFVBQVUsRUFBRSxHQUMzRSxrQkFBUSxJQUNQLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsU0FBUyxHQUNwQztBQUFBLHNCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sSUFBSSxVQUFVLFdBQVcsR0FBSSxrQkFBUSxFQUFFLE1BQUs7QUFBQSxNQUNsRSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxhQUFHLFFBQVEsRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLFVBQVUsSUFBSSxZQUFZLFVBQVUsU0FBTSxRQUFRLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFHO0FBQUEsTUFDekksZ0JBQUFBLEtBQUMsVUFBSyxlQUFDO0FBQUEsTUFDUCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsVUFBVSxXQUFXLEdBQUksbUJBQVMsUUFBUSxFQUFFLE9BQU8sTUFBTSxRQUFRLE9BQU8sR0FBRyxDQUFDLElBQUc7QUFBQSxPQUNoSCxJQUVBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLHlCQUFXLEdBRTlDO0FBQUEsS0FDRixHQUNGO0FBRUo7QUFFTyxTQUFTLGFBQWEsRUFBRSxXQUFBVyxZQUFXLFNBQVMsV0FBVyxjQUFjLFFBQVEsR0FBRztBQUNyRixRQUFNLENBQUMsT0FBTyxRQUFRLElBQUlILGNBQWEsQ0FBQztBQUN4QyxZQUFVLE1BQU0sU0FBUyxPQUFPO0FBRWhDLFFBQU0sV0FBVyxNQUFNRyxXQUFVLEtBQUssSUFBSSxNQUFNLEdBQUdBLFdBQVUsU0FBUyxDQUFDLENBQUMsS0FBSztBQUU3RSxFQUFBVCxVQUFTLENBQUMsVUFBVTtBQUNsQixRQUFJLENBQUMsUUFBUztBQUNkLFVBQU0sSUFBSSxTQUFTO0FBQ25CLFFBQUksS0FBSyxNQUFNLFFBQVEsTUFBTSxRQUFRLE9BQU8sRUFBRSxXQUFXO0FBQ3ZELG1CQUFhLENBQUM7QUFDZCxZQUFNLGdCQUFnQjtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBRUQsU0FDRSxnQkFBQUYsS0FBQyxjQUFXLE9BQU0sMEJBQXlCLE1BQUssK0RBQzlDLDBCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxXQUFXLEVBQUUsR0FDbEQsMEJBQUFBO0FBQUEsSUFBQztBQUFBO0FBQUEsTUFDQyxTQUFPO0FBQUEsTUFDUCxPQUFPVztBQUFBLE1BQ1AsVUFBVSxNQUFNO0FBQUEsTUFDaEIsVUFBVTtBQUFBLE1BQ1Y7QUFBQSxNQUNBLFlBQVk7QUFBQSxNQUNaLFNBQU87QUFBQSxNQUNQLFVBQVUsQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUFBLE1BQzVCLFVBQVU7QUFBQSxNQUNWLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxNQUN2QixnQkFBQVYsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSx3QkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLG1CQUFTLFlBQU8sTUFBSztBQUFBLFFBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLE9BQU8sSUFBSSxNQUFNLEdBQUksWUFBRSxZQUFZLFdBQU0sVUFBSTtBQUFBLFFBQ2pGLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksR0FBRyxHQUFJLGNBQUksRUFBRSxLQUFLLE1BQUs7QUFBQSxRQUNqRSxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEdBQUcsUUFBUSxFQUFFLEdBQ25DLDBCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLFVBQVUsWUFBWSxPQUFPLE1BQU0sR0FDL0MsWUFBRSxZQUFZLFlBQVksRUFBRSxRQUFRLE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLGlCQUNqRSxHQUNGO0FBQUEsU0FDRjtBQUFBO0FBQUEsRUFFSixHQUNGLEdBQ0Y7QUFFSjtBQUVPLFNBQVMsYUFBYSxFQUFFLFNBQUFZLFVBQVMsU0FBUyxVQUFVLFFBQVEsR0FBRztBQUNwRSxRQUFNLENBQUMsT0FBTyxRQUFRLElBQUlKLGNBQWEsQ0FBQztBQUN4QyxRQUFNLENBQUMsTUFBTSxPQUFPLElBQUlBLGNBQWEsQ0FBQztBQUN0QyxZQUFVLE1BQU0sU0FBUyxPQUFPO0FBQ2hDLEVBQUFLLGFBQVksTUFBTSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxHQUFJO0FBQzdDLE9BQUssS0FBSztBQUVWLFFBQU0sV0FBVyxNQUFNRCxTQUFRLEtBQUssSUFBSSxNQUFNLEdBQUdBLFNBQVEsU0FBUyxDQUFDLENBQUMsS0FBSztBQUV6RSxFQUFBVixVQUFTLENBQUMsVUFBVTtBQUNsQixRQUFJLENBQUMsUUFBUztBQUNkLFVBQU0sSUFBSSxTQUFTO0FBQ25CLFFBQUksS0FBSyxNQUFNLFFBQVEsTUFBTSxRQUFRLEtBQUs7QUFDeEMsZUFBUyxDQUFDO0FBQ1YsWUFBTSxnQkFBZ0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUVELFFBQU0sWUFBWSxDQUFDLE9BQU87QUFDeEIsVUFBTSxPQUFPLEtBQUssSUFBSSxHQUFHLEtBQUssT0FBTyxLQUFLLEtBQUssSUFBSSxLQUFLLEdBQUksQ0FBQztBQUM3RCxRQUFJLE9BQU8sR0FBSSxRQUFPLE1BQU0sSUFBSTtBQUNoQyxVQUFNLE9BQU8sS0FBSyxNQUFNLE9BQU8sRUFBRTtBQUNqQyxRQUFJLE9BQU8sR0FBSSxRQUFPLE1BQU0sSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUM5QyxXQUFPLE1BQU0sS0FBSyxNQUFNLE9BQU8sRUFBRSxDQUFDLEtBQUssT0FBTyxFQUFFO0FBQUEsRUFDbEQ7QUFFQSxTQUNFLGdCQUFBRixLQUFDLGNBQVcsT0FBTSxzQkFBcUIsTUFBSyxrRUFDMUMsMEJBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsRUFBRSxHQUNqRCxVQUFBWSxTQUFRLFdBQVcsSUFDbEIsZ0JBQUFaLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsb0ZBQW1FLElBRWxHLGdCQUFBQTtBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsU0FBTztBQUFBLE1BQ1AsT0FBT1k7QUFBQSxNQUNQLFVBQVUsTUFBTTtBQUFBLE1BQ2hCLFVBQVU7QUFBQSxNQUNWO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixZQUFZO0FBQUEsTUFDWixLQUFLO0FBQUEsTUFDTCxTQUFPO0FBQUEsTUFDUCxVQUFVLENBQUMsTUFBTSxTQUFTLENBQUM7QUFBQSxNQUMzQixVQUFVO0FBQUEsTUFDVixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sTUFDdkIsZ0JBQUFYLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsd0JBQUFBLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsMEJBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEVBQUUsR0FBSSxtQkFBUyxZQUFPLE1BQUs7QUFBQSxVQUN4RCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsT0FBTyxJQUFJLEdBQUcsR0FBSSxvQkFBSyxFQUFFLEVBQUUsSUFBRztBQUFBLFVBQzdELGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHO0FBQUEsVUFDN0IsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksb0JBQVUsRUFBRSxFQUFFLEdBQUU7QUFBQSxVQUNoRCxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxlQUFLLElBQUksS0FBSyxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxJQUFHO0FBQUEsV0FDN0U7QUFBQSxRQUNBLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEdBQUcsZUFBZSxNQUFNLEdBQ3pEO0FBQUEsMEJBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksa0JBQU87QUFBQSxVQUN2QyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxRQUFRLEdBQUksWUFBRSxLQUFLLFFBQVEsT0FBTyxHQUFHLEdBQUU7QUFBQSxXQUNyRjtBQUFBLFNBQ0Y7QUFBQTtBQUFBLEVBRUosR0FFSixHQUNGO0FBRUo7QUFFQSxJQUFNLGFBQWE7QUFBQSxFQUNqQixXQUFXLEVBQUUsTUFBTSxVQUFLLE9BQU8sT0FBTyxFQUFFO0FBQUEsRUFDeEMsWUFBWSxFQUFFLE1BQU0sVUFBSyxPQUFPLFVBQVU7QUFBQSxFQUMxQyxPQUFPLEVBQUUsTUFBTSxVQUFLLE9BQU8sSUFBSTtBQUFBLEVBQy9CLFVBQVUsRUFBRSxNQUFNLFVBQUssT0FBTyxNQUFNO0FBQUEsRUFDcEMsTUFBTSxFQUFFLE1BQU0sVUFBSyxPQUFPLE1BQU07QUFDbEM7QUFFQSxTQUFTLFVBQVUsRUFBRSxPQUFPLFFBQVEsU0FBUyxHQUFHO0FBQzlDLFNBQ0UsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsb0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxTQUFTLE9BQU8sSUFBSSxNQUFNLEdBQUksaUJBQU07QUFBQSxJQUN6RDtBQUFBLElBQ0QsZ0JBQUFBLEtBQUMsVUFBSyxlQUFDO0FBQUEsS0FDVDtBQUVKO0FBRUEsU0FBUyxjQUFjLEVBQUUsU0FBUyxRQUFRLFFBQVEsV0FBVyxTQUFTLEdBQUc7QUFDdkUsUUFBTSxVQUFVLFNBQVMsZ0JBQWdCLE9BQU8sT0FBTyxJQUFJO0FBQzNELFFBQU0sVUFBVSxDQUFDLENBQUM7QUFDbEIsUUFBTSxDQUFDLE1BQU0sT0FBTyxJQUFJUSxjQUFhLFFBQVEsUUFBUSxFQUFFO0FBQ3ZELFFBQU0sQ0FBQ00sUUFBTyxRQUFRLElBQUlOLGNBQWEsUUFBUSxTQUFTLFFBQVE7QUFDaEUsUUFBTSxDQUFDLFdBQVcsWUFBWSxJQUFJQSxjQUFhLFNBQVMsUUFBUSxPQUFPO0FBQ3ZFLFFBQU0sQ0FBQyxRQUFRLFNBQVMsSUFBSUEsY0FBYSxTQUFTLFNBQVMsU0FBUyxRQUFRLE1BQU0sUUFBUSxXQUFXLEVBQUU7QUFDdkcsUUFBTSxpQkFBaUIsU0FBUyxTQUFTLFNBQ3JDLE9BQU8sWUFBWSxPQUFPLEtBQUssUUFBUSxPQUFPLEVBQUUsSUFBSSxDQUFDTyxVQUFTLENBQUNBLE9BQU0sZUFBZSxDQUFDLENBQUMsSUFDdEYsQ0FBQztBQUNMLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSVAsY0FBYSxxQkFBcUIsSUFBSSxjQUFjLEVBQUUsS0FBSyxDQUFDO0FBRTFGLFFBQU0sS0FBSyxTQUFTLEVBQUUsU0FBUyxVQUFVLGNBQWMsT0FBTyxDQUFDO0FBQy9ELE1BQUksQ0FBQyxTQUFTO0FBQ1osT0FBRyxLQUFLLE1BQU07QUFDZCxPQUFHLEtBQUssT0FBTztBQUFBLEVBQ2pCO0FBQ0EsS0FBRyxLQUFLLFdBQVc7QUFDbkIsS0FBRyxLQUFLLFFBQVE7QUFDaEIsTUFBSSxVQUFVLE1BQU0sT0FBUSxJQUFHLEtBQUssU0FBUztBQUM3QyxLQUFHLEtBQUssTUFBTTtBQUNkLEtBQUcsS0FBSyxRQUFRO0FBRWhCLEVBQUFOLFVBQVMsQ0FBQyxVQUFVO0FBQ2xCLFFBQUksQ0FBQyxRQUFTO0FBQ2QsUUFBSSxNQUFNLFFBQVEsVUFBVTtBQUMxQixlQUFTO0FBQ1QsWUFBTSxnQkFBZ0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUVELFFBQU0sT0FBTyxVQUFVLE1BQU07QUFFN0IsUUFBTSxTQUFTLE1BQU07QUFDbkIsVUFBTSxhQUFhLEtBQUssRUFBRSxLQUFLO0FBQy9CLFVBQU0sUUFBUSxPQUFPLEVBQUUsS0FBSztBQUM1QixRQUFJLENBQUMsY0FBYyxLQUFLLEtBQUssVUFBVSxFQUFHLFFBQU8sVUFBVSw0Q0FBNEM7QUFDdkcsUUFBSSxDQUFDLE1BQU8sUUFBTyxVQUFVLE9BQU8sb0JBQW9CLHFCQUFxQjtBQUM3RSxRQUFJLFFBQVEsQ0FBQyxlQUFlLEtBQUssS0FBSyxFQUFHLFFBQU8sVUFBVSx5Q0FBeUM7QUFDbkcsUUFBSSxDQUFDLFFBQVEsZUFBZSxLQUFLLEtBQUssRUFBRyxRQUFPLFVBQVUsa0VBQWtFO0FBQzVILFVBQU0sUUFBUSxRQUFRLEVBQUUsS0FBSztBQUM3QixRQUFJLE9BQU8sUUFBUSxRQUFRLEdBQUcsS0FBSyxJQUFJLEtBQUssS0FBSztBQUNqRCxRQUFJO0FBQ0YsWUFBTSxTQUFTLGdCQUFnQixJQUFJO0FBQ25DLFVBQUksT0FBTyxTQUFTLFVBQVUsU0FBUyxTQUFTLFFBQVE7QUFDdEQsbUJBQVcsQ0FBQyxRQUFRLFdBQVcsS0FBSyxPQUFPLFFBQVEsT0FBTyxPQUFPLEdBQUc7QUFDbEUsY0FBSSxnQkFBZ0IsbUJBQW1CLFFBQVEsUUFBUSxNQUFNLE1BQU0sT0FBVyxRQUFPLFFBQVEsTUFBTSxJQUFJLFFBQVEsUUFBUSxNQUFNO0FBQUEsUUFDL0g7QUFDQSxlQUFPLHFCQUFxQixPQUFPLEtBQUssT0FBTyxPQUFPO0FBQUEsTUFDeEQ7QUFBQSxJQUNGLFNBQVMsS0FBSztBQUNaLGFBQU8sVUFBVSxJQUFJLE9BQU87QUFBQSxJQUM5QjtBQUNBLFdBQU8sWUFBWSxNQUFNWSxPQUFNLENBQUM7QUFBQSxFQUNsQztBQUVBLFNBQ0UsZ0JBQUFiLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsRUFBRSxHQUNqRDtBQUFBLEtBQUMsV0FDQSxnQkFBQUQsS0FBQyxhQUFVLE9BQU0sUUFBTyxRQUFRLEdBQUcsR0FBRyxNQUFNLEdBQzFDLDBCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLElBQUksVUFBVSxVQUFVLEVBQUUsR0FDdEMsMEJBQUFBLEtBQUNHLFlBQUEsRUFBVSxTQUFTLFdBQVcsR0FBRyxHQUFHLE1BQU0sR0FBRyxhQUFZLFVBQVMsVUFBVSxTQUFTLEdBQ3hGLEdBQ0Y7QUFBQSxJQUVELENBQUMsV0FDQSxnQkFBQUgsS0FBQyxhQUFVLE9BQU0sU0FBUSxRQUFRLEdBQUcsR0FBRyxPQUFPLEdBQzVDLDBCQUFBQSxLQUFDLFNBQU0sU0FBUyxDQUFDLFVBQVUsU0FBUyxHQUFHLFVBQVVjLE9BQU0sR0FBRyxVQUFVLFVBQVUsU0FBUyxXQUFXLEdBQUcsR0FBRyxPQUFPLEdBQUcsR0FDcEg7QUFBQSxJQUVGLGdCQUFBZCxLQUFDLGFBQVUsT0FBTSxhQUFZLFFBQVEsR0FBRyxHQUFHLFdBQVcsR0FDcEQsMEJBQUFBLEtBQUMsU0FBTSxTQUFTLENBQUMsU0FBUyxNQUFNLEdBQUcsVUFBVSxVQUFVLEdBQUcsVUFBVSxjQUFjLFNBQVMsV0FBVyxHQUFHLEdBQUcsV0FBVyxHQUFHLEdBQzVIO0FBQUEsSUFDQSxnQkFBQUEsS0FBQyxhQUFVLE9BQU8sT0FBTyxRQUFRLFdBQVcsUUFBUSxHQUFHLEdBQUcsUUFBUSxHQUNoRSwwQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxJQUFJLFVBQVUsVUFBVSxFQUFFLEdBQ3RDLDBCQUFBQTtBQUFBLE1BQUNHO0FBQUEsTUFBQTtBQUFBLFFBQ0MsU0FBUyxXQUFXLEdBQUcsR0FBRyxRQUFRO0FBQUEsUUFDbEMsYUFBYSxPQUFPLCtCQUErQjtBQUFBLFFBQ25ELGNBQWMsT0FBTztBQUFBLFFBQ3JCLFVBQVU7QUFBQTtBQUFBLElBQ1osR0FDRixHQUNGO0FBQUEsSUFDQyxRQUNDLGdCQUFBSCxLQUFDLGFBQVUsT0FBTSx5QkFBcUIsUUFBUSxHQUFHLEdBQUcsU0FBUyxHQUMzRCwwQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxJQUFJLFVBQVUsVUFBVSxFQUFFLEdBQ3RDLDBCQUFBQSxLQUFDRyxZQUFBLEVBQVUsU0FBUyxXQUFXLEdBQUcsR0FBRyxTQUFTLEdBQUcsYUFBWSw0Q0FBMkMsY0FBYyxRQUFRLEdBQUcsVUFBVSxZQUFZLEdBQ3pKLEdBQ0Y7QUFBQSxJQUVGLGdCQUFBRixNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsTUFBTSxHQUNqQztBQUFBLHNCQUFBRCxLQUFDSyxTQUFBLEVBQU8sT0FBTyxVQUFVLFNBQVMsT0FBTyxTQUFTLFFBQVEsU0FBUyxXQUFXLEdBQUcsR0FBRyxNQUFNLEdBQUc7QUFBQSxNQUM3RixnQkFBQUwsS0FBQyxVQUFLLGdCQUFFO0FBQUEsTUFDUixnQkFBQUEsS0FBQ0ssU0FBQSxFQUFPLE9BQU0sVUFBUyxTQUFTLFVBQVUsU0FBUyxXQUFXLEdBQUcsR0FBRyxRQUFRLEdBQUcsU0FBUSxPQUFNO0FBQUEsT0FDL0Y7QUFBQSxLQUNGO0FBRUo7QUFFTyxTQUFTLFNBQVMsRUFBRSxTQUFTLFNBQVMsVUFBVSxhQUFhLFVBQVUsT0FBTyxRQUFRLFdBQVcsUUFBUSxHQUFHO0FBQ2pILFFBQU0sQ0FBQyxNQUFNLE9BQU8sSUFBSUcsY0FBYSxJQUFJO0FBQ3pDLFFBQU0sQ0FBQyxPQUFPLFFBQVEsSUFBSUEsY0FBYSxDQUFDO0FBQ3hDLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUEsY0FBYSxJQUFJO0FBQy9DLFlBQVUsTUFBTSxXQUFXLENBQUMsS0FBSyxHQUFHLE1BQU8sUUFBUSxJQUFJLFdBQVcsSUFBSSxJQUFJLFFBQVEsQ0FBRTtBQUVwRixRQUFNLFdBQVcsTUFBTSxRQUFRLEtBQUssSUFBSSxNQUFNLEdBQUcsUUFBUSxTQUFTLENBQUMsQ0FBQyxLQUFLO0FBQ3pFLFFBQU0sU0FBUyxNQUFNLFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLFFBQVEsQ0FBQyxLQUFLO0FBRWxFLE1BQUksUUFBUSxLQUFLLE9BQU8sR0FBRztBQUN6QixVQUFNLFNBQVMsT0FBTztBQUN0QixVQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxRQUFRLGtCQUFrQixFQUFFLEVBQUUsS0FBSyxLQUFLO0FBQzlFLFdBQ0UsZ0JBQUFSO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxPQUFPLG9CQUFpQixPQUFPLElBQUksU0FBTSxPQUFPLE1BQU0sTUFBTSxJQUFJLE9BQU8sTUFBTSxXQUFXLElBQUksU0FBUyxPQUFPO0FBQUEsUUFDNUcsTUFBSztBQUFBLFFBRUwsMEJBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFFBQVEsSUFBSSxXQUFXLEVBQUUsR0FDN0QsaUJBQU8sTUFBTSxXQUFXLElBQ3ZCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLDZEQUE0QyxJQUUzRSxnQkFBQUEsS0FBQ00sWUFBQSxFQUFVLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxTQUFrQixXQUFTLE1BQzNELGlCQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsTUFDcEIsZ0JBQUFMLE1BQUMsU0FBaUIsT0FBTyxFQUFFLGVBQWUsVUFBVSxXQUFXLE1BQU0sSUFBSSxJQUFJLEVBQUUsR0FDN0U7QUFBQSwwQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLFlBQUUsTUFBSztBQUFBLFVBQzFDLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLG1CQUFTLENBQUMsR0FBRTtBQUFBLGFBRnBDLEVBQUUsSUFHWixDQUNELEdBQ0gsR0FFSjtBQUFBO0FBQUEsSUFDRjtBQUFBLEVBRUo7QUFFQSxTQUNFLGdCQUFBQztBQUFBLElBQUM7QUFBQTtBQUFBLE1BQ0MsT0FBTTtBQUFBLE1BQ04sTUFBTSxLQUFLLElBQ1Asb0ZBQ0E7QUFBQSxNQUVKO0FBQUEsd0JBQUFELEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFdBQVcsRUFBRSxHQUNqRCxlQUFLLElBQ0osZ0JBQUFBO0FBQUEsVUFBQztBQUFBO0FBQUEsWUFDQztBQUFBLFlBQ0EsUUFBUSxLQUFLLE1BQU0sUUFBUSxPQUFPLEtBQUs7QUFBQSxZQUN2QyxRQUFRLENBQUMsTUFBTSxNQUFNYyxXQUFVO0FBQzdCLGtCQUFJLEtBQUssTUFBTSxNQUFPLE9BQU0sTUFBTSxNQUFNQSxNQUFLO0FBQUEsa0JBQ3hDLFFBQU8sTUFBTSxJQUFJO0FBQ3RCLHNCQUFRLElBQUk7QUFBQSxZQUNkO0FBQUEsWUFDQTtBQUFBLFlBQ0EsVUFBVSxNQUFNLFFBQVEsSUFBSTtBQUFBO0FBQUEsUUFDOUIsSUFDRSxRQUFRLFdBQVcsSUFDckIsZ0JBQUFkLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsK0RBQThDLElBRTdFLGdCQUFBQTtBQUFBLFVBQUM7QUFBQTtBQUFBLFlBQ0MsU0FBTztBQUFBLFlBQ1AsT0FBTztBQUFBLFlBQ1AsVUFBVSxNQUFNO0FBQUEsWUFDaEIsVUFBVTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLFlBQVk7QUFBQSxZQUNaLFNBQU87QUFBQSxZQUNQLFlBQVk7QUFBQSxZQUNaLFVBQVUsQ0FBQyxNQUFNLFNBQVMsRUFBRSxJQUFJO0FBQUEsWUFDaEMsVUFBVTtBQUFBLFlBQ1YsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLE1BQU07QUFDN0Isb0JBQU0sS0FBSyxXQUFXLEVBQUUsTUFBTSxLQUFLLFdBQVc7QUFDOUMscUJBQ0UsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxTQUFTLEdBQ3BDO0FBQUEsZ0NBQUFBLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsa0NBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLEVBQUUsR0FBSSxtQkFBUyxZQUFPLE1BQUs7QUFBQSxrQkFDeEQsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBSSxhQUFHLE1BQUs7QUFBQSxrQkFDM0MsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxTQUFTLE9BQU8sSUFBSSxHQUFHLEdBQUksY0FBSSxFQUFFLEtBQUssT0FBTyxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFHO0FBQUEsa0JBQ3RHLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEVBQUUsR0FDbkMsMEJBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsVUFBVSxZQUFZLE9BQU8sRUFBRSxXQUFXLFVBQVUsTUFBTSxNQUFNLEdBQzVFLFlBQUUsV0FBVyxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsY0FBYyxHQUFHLEVBQUUsU0FBUyxXQUFXLEVBQUUsUUFDMUYsR0FDRjtBQUFBLG1CQUNGO0FBQUEsZ0JBQ0EsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLFFBQVEsRUFBRSxHQUM1QztBQUFBLGtDQUFBRCxLQUFDLFVBQU0sbUJBQVE7QUFBQSxrQkFDZixnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEdBQUcsUUFBUSxFQUFFLEdBQ25DLDBCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLFVBQVUsWUFBWSxPQUFPLE1BQU0sR0FBSSxzQkFBWSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsR0FBRSxHQUNqRztBQUFBLGtCQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGVBQUssRUFBRSxVQUFVLFlBQVksWUFBWSxRQUFRLElBQUc7QUFBQSxtQkFDdEY7QUFBQSxpQkFDRjtBQUFBLFlBRUo7QUFBQTtBQUFBLFFBQ0YsR0FFSjtBQUFBLFFBQ0MsQ0FBQyxLQUFLLEtBQ0wsZ0JBQUFBO0FBQUEsVUFBQztBQUFBO0FBQUEsWUFDQztBQUFBLFlBQ0EsT0FBTyxDQUFDLFFBQVE7QUFDZCxvQkFBTSxJQUFJLFNBQVM7QUFDbkIsa0JBQUksUUFBUSxJQUFLLFNBQVEsS0FBSztBQUFBLHVCQUNyQixLQUFLLFFBQVEsSUFBSyxTQUFRLENBQUM7QUFBQSx1QkFDM0IsS0FBSyxRQUFRLElBQUssYUFBWSxFQUFFLElBQUk7QUFBQSx1QkFDcEMsS0FBSyxRQUFRLFNBQVUsVUFBUyxFQUFFLElBQUk7QUFBQSx1QkFDdEMsS0FBSyxRQUFRLElBQUssWUFBVyxFQUFFLElBQUk7QUFBQSxZQUM5QztBQUFBO0FBQUEsUUFDRjtBQUFBO0FBQUE7QUFBQSxFQUVKO0FBRUo7QUFFQSxTQUFTLFFBQVEsRUFBRSxTQUFTLE1BQU0sR0FBRztBQUNuQyxFQUFBRSxVQUFTLENBQUMsVUFBVTtBQUNsQixRQUFJLENBQUMsUUFBUztBQUNkLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxLQUFLO0FBQ25DLFlBQU0sUUFBUTtBQUNkLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLEtBQUssS0FBSyxHQUFHLEVBQUUsU0FBUyxNQUFNLEdBQUcsR0FBRztBQUMzRCxZQUFNLE1BQU0sR0FBRztBQUNmLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFDRCxTQUFPO0FBQ1Q7OztBaEJ0M0JJLFNBQ0UsT0FBQWMsTUFERixRQUFBQyxhQUFBO0FBdklKLElBQU0sZ0JBQWdCO0FBQUEsRUFDcEIsRUFBRSxLQUFLLE1BQU0sTUFBTSw0Q0FBNEM7QUFBQSxFQUMvRCxFQUFFLEtBQUssT0FBTyxNQUFNLGtDQUFrQztBQUFBLEVBQ3RELEVBQUUsS0FBSyxVQUFVLE1BQU0sMkJBQTJCO0FBQUEsRUFDbEQsRUFBRSxLQUFLLFFBQVEsTUFBTSwyQkFBMkI7QUFBQSxFQUNoRCxFQUFFLEtBQUssT0FBTyxNQUFNLDBCQUEwQjtBQUNoRDtBQUVBLElBQU0sV0FBVztBQUFBLEVBQ2YsRUFBRSxNQUFNLFNBQVMsTUFBTSwyQ0FBMkM7QUFBQSxFQUNsRSxFQUFFLE1BQU0sV0FBVyxNQUFNLG1EQUFtRDtBQUFBLEVBQzVFLEVBQUUsTUFBTSxVQUFVLE1BQU0sMkNBQTJDO0FBQUEsRUFDbkUsRUFBRSxNQUFNLFVBQVUsTUFBTSxnREFBZ0Q7QUFBQSxFQUN4RSxFQUFFLE1BQU0sT0FBTyxNQUFNLHNDQUFzQztBQUFBLEVBQzNELEVBQUUsTUFBTSxVQUFVLE1BQU0seURBQXlEO0FBQUEsRUFDakYsRUFBRSxNQUFNLFdBQVcsTUFBTSwyREFBMkQ7QUFBQSxFQUNwRixFQUFFLE1BQU0sT0FBTyxNQUFNLHNEQUFzRDtBQUFBLEVBQzNFLEVBQUUsTUFBTSxVQUFVLE1BQU0saURBQWlEO0FBQUEsRUFDekUsRUFBRSxNQUFNLFlBQVksTUFBTSxtREFBbUQ7QUFBQSxFQUM3RSxFQUFFLE1BQU0sU0FBUyxNQUFNLDhEQUE4RDtBQUFBLEVBQ3JGLEVBQUUsTUFBTSxVQUFVLE1BQU0saURBQWlEO0FBQUEsRUFDekUsRUFBRSxNQUFNLFdBQVcsTUFBTSxxQ0FBcUM7QUFBQSxFQUM5RCxFQUFFLE1BQU0sVUFBVSxNQUFNLGtFQUFrRTtBQUFBLEVBQzFGLEVBQUUsTUFBTSxTQUFTLE1BQU0sNENBQTRDO0FBQUEsRUFDbkUsRUFBRSxNQUFNLFNBQVMsTUFBTSx5REFBeUQ7QUFBQSxFQUNoRixFQUFFLE1BQU0sVUFBVSxNQUFNLHNDQUFzQztBQUFBLEVBQzlELEVBQUUsTUFBTSxPQUFPLE1BQU0sNkNBQTZDO0FBQUEsRUFDbEUsRUFBRSxNQUFNLGlCQUFpQixNQUFNLHdFQUF3RTtBQUFBLEVBQ3ZHLEVBQUUsTUFBTSxXQUFXLE1BQU0scUNBQXFDO0FBQUEsRUFDOUQsRUFBRSxNQUFNLFVBQVUsTUFBTSx1REFBdUQ7QUFBQSxFQUMvRSxFQUFFLE1BQU0sV0FBVyxNQUFNLHdEQUF3RDtBQUFBLEVBQ2pGLEVBQUUsTUFBTSxTQUFTLE1BQU0scURBQXFEO0FBQUEsRUFDNUUsRUFBRSxNQUFNLFFBQVEsTUFBTSw2Q0FBNkM7QUFBQSxFQUNuRSxFQUFFLE1BQU0sV0FBVyxNQUFNLCtEQUErRDtBQUFBLEVBQ3hGLEVBQUUsTUFBTSxVQUFVLE1BQU0sbURBQW1EO0FBQUEsRUFDM0UsRUFBRSxNQUFNLFVBQVUsTUFBTSw2Q0FBNkM7QUFBQSxFQUNyRSxFQUFFLE1BQU0sUUFBUSxNQUFNLHNDQUFzQztBQUM5RDtBQUVBLElBQU0saUJBQWlCO0FBQUEsRUFDckIsS0FBSztBQUFBLEVBQ0wsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUNSO0FBRUEsSUFBTSxpQkFBaUIsQ0FBQyxXQUFXLFdBQVcsWUFBWTtBQUMxRCxJQUFNLGdCQUFnQixDQUFDLE9BQU8sV0FBVyxRQUFRO0FBQ2pELElBQU0sa0JBQWtCO0FBQ3hCLElBQU0sa0JBQWtCO0FBQ3hCLElBQU0sa0JBQWtCO0FBRXhCLFNBQVMsaUJBQWlCLFNBQVMsUUFBUSxRQUFRLE1BQU07QUFDdkQsUUFBTSxNQUFNLEtBQUssSUFBSSxHQUFHLFNBQVMsSUFBSTtBQUNyQyxRQUFNLFFBQVEsS0FBSyxJQUFJLEdBQUcsS0FBSyxJQUFJLFNBQVMsR0FBRyxDQUFDO0FBQ2hELE1BQUksU0FBUyxFQUFHLFFBQU87QUFDdkIsTUFBSSxTQUFTLFFBQVEsZ0JBQWlCLFFBQU8sS0FBSyxJQUFJLEdBQUcsU0FBUyxlQUFlO0FBQ2pGLE1BQUksVUFBVSxRQUFRLE9BQU8sZ0JBQWlCLFFBQU8sS0FBSyxJQUFJLEtBQUssU0FBUyxPQUFPLGtCQUFrQixDQUFDO0FBQ3RHLFNBQU87QUFDVDtBQUVBLFNBQVMsZ0JBQWdCLE9BQU87QUFDOUIsTUFBSSxDQUFDLE1BQU8sUUFBTyxDQUFDO0FBQ3BCLFFBQU0sUUFBUSxDQUFDLEVBQUUsTUFBTSxRQUFRLE1BQU0sTUFBTSxPQUFPLENBQUM7QUFDbkQsUUFBTSxRQUFRLG9CQUFJLElBQUk7QUFDdEIsTUFBSSxXQUFXO0FBRWYsYUFBVyxTQUFTLE1BQU0sUUFBUTtBQUNoQyxRQUFJLE1BQU0sU0FBUyxVQUFXLGFBQVksTUFBTTtBQUNoRCxRQUFJLE1BQU0sU0FBUyxrQkFBa0I7QUFDbkMsWUFBTUMsUUFBTyxNQUFNLFFBQVEsQ0FBQztBQUM1QixZQUFNLE9BQU87QUFBQSxRQUNYLE1BQU07QUFBQSxRQUNOLFFBQVFBLE1BQUs7QUFBQSxRQUNiLE1BQU1BLE1BQUssVUFBVSxRQUFRO0FBQUEsUUFDN0IsTUFBTUEsTUFBSyxVQUFVLGFBQWEsQ0FBQztBQUFBLFFBQ25DLE9BQU9BLE1BQUssVUFBVSxRQUFRO0FBQUEsUUFDOUIsUUFBUTtBQUFBLFFBQ1IsV0FBVyxNQUFNLE1BQU0sTUFBTTtBQUFBLE1BQy9CO0FBQ0EsWUFBTSxJQUFJQSxNQUFLLElBQUksSUFBSTtBQUN2QixZQUFNLEtBQUssSUFBSTtBQUFBLElBQ2pCO0FBQ0EsUUFBSSxNQUFNLFNBQVMsbUJBQW1CLE1BQU0sU0FBUyxjQUFjO0FBQ2pFLFlBQU0sT0FBTyxNQUFNLElBQUksTUFBTSxNQUFNLEVBQUU7QUFDckMsVUFBSSxNQUFNO0FBQ1IsYUFBSyxTQUFTLE1BQU0sU0FBUyxlQUFlLFVBQVU7QUFDdEQsYUFBSyxRQUFRLE1BQU0sUUFBUSxPQUFPLE1BQU0sS0FBSyxJQUFJO0FBQ2pELGFBQUssYUFBYSxNQUFNLFdBQVcsU0FBWSxPQUFPLE9BQU8sTUFBTSxXQUFXLFdBQVcsTUFBTSxTQUFTLEtBQUssVUFBVSxNQUFNLFFBQVEsTUFBTSxDQUFDO0FBQUEsTUFDOUk7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFFBQU0sT0FBTyxNQUFNLFVBQVU7QUFDN0IsTUFBSSxLQUFNLE9BQU0sS0FBSyxFQUFFLE1BQU0sYUFBYSxNQUFNLGFBQWEsTUFBTSxXQUFXLFlBQVksQ0FBQztBQUFBLFdBQ2xGLE1BQU0sTUFBTyxPQUFNLEtBQUssRUFBRSxNQUFNLGFBQWEsTUFBTSxNQUFNLE9BQU8sYUFBYSxLQUFLLENBQUM7QUFDNUYsU0FBTztBQUNUO0FBRUEsU0FBUyxhQUFhLE9BQU8sTUFBTSxLQUFLLElBQUksR0FBRztBQUM3QyxNQUFJLENBQUMsTUFBTSxVQUFXLFFBQU87QUFDN0IsUUFBTSxVQUFVLEtBQUssSUFBSSxHQUFHLEtBQUssUUFBUSxNQUFNLFdBQVcsT0FBTyxNQUFNLGFBQWEsR0FBSSxDQUFDO0FBQ3pGLFFBQU0sVUFBVSxLQUFLLE1BQU0sVUFBVSxFQUFFO0FBQ3ZDLFFBQU0sUUFBUSxLQUFLLE1BQU0sVUFBVSxFQUFFO0FBQ3JDLE1BQUksTUFBTyxRQUFPLEdBQUcsS0FBSyxLQUFLLFVBQVUsRUFBRTtBQUMzQyxNQUFJLFFBQVMsUUFBTyxHQUFHLE9BQU8sS0FBSyxVQUFVLEVBQUU7QUFDL0MsU0FBTyxHQUFHLE9BQU87QUFDbkI7QUFFQSxTQUFTLFlBQVksT0FBTztBQUMxQixNQUFJLE1BQU0sV0FBVyxVQUFXLFFBQU8sRUFBRSxNQUFNLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxFQUFFO0FBQzlFLE1BQUksTUFBTSxXQUFXLFNBQVUsUUFBTyxFQUFFLE1BQU0sVUFBSyxPQUFPLFVBQVUsT0FBTyxNQUFNO0FBQ2pGLE1BQUksTUFBTSxXQUFXLFlBQWEsUUFBTyxFQUFFLE1BQU0sVUFBSyxPQUFPLElBQUksT0FBTyxNQUFNO0FBQzlFLE1BQUksTUFBTSxXQUFXLFNBQVUsUUFBTyxFQUFFLE1BQU0sUUFBSyxPQUFPLFVBQVUsT0FBTyxJQUFJO0FBQy9FLFNBQU8sRUFBRSxNQUFNLFVBQUssT0FBTyxhQUFhLE9BQU8sTUFBTTtBQUN2RDtBQUVBLFNBQVMsY0FBYyxFQUFFLFVBQVUsU0FBUyxVQUFVLFFBQVEsR0FBRztBQUMvRCxRQUFNLFNBQVNDLFdBQVU7QUFDekIsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJQyxjQUFhLEtBQUs7QUFDaEQsRUFBQUMsVUFBUyxDQUFDLFVBQVU7QUFDbEIsVUFBTSxTQUFTLE1BQU0sS0FBSyxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sSUFBSSxPQUFPLFNBQVMsTUFBTSxLQUFLLE9BQU8sS0FBSyxNQUFNLElBQUksT0FBTyxJQUFJLE9BQU87QUFDOUgsUUFBSSxNQUFNLFdBQVcsT0FBUSxZQUFXLE1BQU07QUFDOUMsUUFBSSxVQUFVLE1BQU0sV0FBVyxXQUFXLE1BQU0sV0FBVyxRQUFRO0FBQ2pFLGNBQVE7QUFDUixZQUFNLGdCQUFnQjtBQUFBLElBQ3hCO0FBQUEsRUFDRixDQUFDO0FBQ0QsU0FDRSxnQkFBQUosTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE9BQU8sSUFBSSxVQUFVLE9BQU8sSUFBSSxNQUFNLE9BQU8sVUFBVSxVQUFVLFFBQVEsSUFBSSxVQUFVLE1BQU0sR0FDeEg7QUFBQSxvQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFVBQVUsVUFBVSxXQUFXLE9BQU8sSUFBSSxPQUFPLE1BQU0sU0FBUyxHQUFJLHFCQUFXLFlBQU8sTUFBSztBQUFBLElBQ2hIO0FBQUEsS0FDSDtBQUVKO0FBS0EsSUFBTSxpQkFBaUI7QUFDdkIsSUFBTSxnQkFBZ0IsQ0FBQyxXQUFXLFlBQVk7QUFFOUMsU0FBUyxzQkFBc0IsT0FBTyxTQUFTLE9BQU87QUFDcEQsUUFBTSxTQUFTLENBQUM7QUFDaEIsV0FBUyxJQUFJLEdBQUcsSUFBSSxNQUFNLFVBQVM7QUFDakMsUUFBSSxNQUFNLENBQUMsRUFBRSxTQUFTLFFBQVE7QUFDNUIsVUFBSSxNQUFNLElBQUk7QUFDZCxhQUFPLE1BQU0sTUFBTSxVQUFVLE1BQU0sR0FBRyxFQUFFLFNBQVMsT0FBUTtBQUN6RCxZQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsR0FBRztBQUM5QixhQUFPLEtBQUssSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLGNBQWMsT0FBTyxLQUFLLFFBQVEsVUFBVSxRQUFRLE1BQU0sT0FBTyxDQUFDO0FBQ2xILFVBQUk7QUFDSjtBQUFBLElBQ0Y7QUFDQSxRQUFJLE1BQU0sQ0FBQyxFQUFFLFNBQVMsWUFBWSxNQUFNLENBQUMsRUFBRSxpQkFBaUI7QUFDMUQsVUFBSSxNQUFNLElBQUk7QUFDZCxhQUFPLE1BQU0sTUFBTSxVQUFVLE1BQU0sR0FBRyxFQUFFLFNBQVMsWUFBWSxNQUFNLEdBQUcsRUFBRSxnQkFBaUI7QUFDekYsWUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLEdBQUc7QUFDOUIsYUFBTyxLQUFLLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsU0FBUyxJQUFJLENBQUM7QUFDcEYsVUFBSTtBQUNKO0FBQUEsSUFDRjtBQUNBLFdBQU8sS0FBSyxNQUFNLEdBQUcsQ0FBQztBQUFBLEVBQ3hCO0FBQ0EsU0FBTztBQUNUO0FBRU8sU0FBUyxJQUFJLEVBQUUsTUFBQU0sTUFBSyxHQUFHO0FBQzVCLFFBQU0sRUFBRSxLQUFLLE1BQU0sU0FBQUMsVUFBUyxRQUFBQyxTQUFRLFFBQVEsS0FBSyxTQUFTLGVBQWUsSUFBSUY7QUFFN0UsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJRixjQUFhLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDMUQsUUFBTSxDQUFDLFNBQVMsVUFBVSxJQUFJQSxjQUFhLENBQUMsQ0FBQztBQUM3QyxRQUFNLENBQUMsV0FBVyxZQUFZLElBQUlBLGNBQWEsSUFBSTtBQUNuRCxRQUFNLENBQUMsV0FBVyxZQUFZLElBQUlBLGNBQWEsTUFBTTtBQUNyRCxRQUFNLENBQUMsTUFBTSxPQUFPLElBQUlBLGNBQWEsS0FBSztBQUMxQyxRQUFNLENBQUMsWUFBWSxhQUFhLElBQUlBLGNBQWEsS0FBSztBQUN0RCxRQUFNLENBQUMsZUFBZSxnQkFBZ0IsSUFBSUEsY0FBYSxJQUFJO0FBQzNELFFBQU0sQ0FBQyxXQUFXLFlBQVksSUFBSUEsY0FBYSxDQUFDO0FBQ2hELFFBQU0sQ0FBQyxPQUFPLFFBQVEsSUFBSUEsY0FBYSxFQUFFO0FBQ3pDLFFBQU0sQ0FBQ0ssUUFBTyxRQUFRLElBQUlMLGNBQWFFLE1BQUssWUFBWTtBQUN4RCxRQUFNLENBQUNJLGVBQWMsZUFBZSxJQUFJTixjQUFhRSxNQUFLLFlBQVk7QUFDdEUsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJRixjQUFhRSxNQUFLLGFBQWE7QUFDM0QsUUFBTSxDQUFDLGVBQWUsZ0JBQWdCLElBQUlGLGNBQWFFLE1BQUssYUFBYTtBQUN6RSxRQUFNLENBQUMsaUJBQWlCLGtCQUFrQixJQUFJRixjQUFhLEtBQUs7QUFDaEUsUUFBTSxDQUFDLGdCQUFnQixpQkFBaUIsSUFBSUEsY0FBYSxLQUFLO0FBQzlELFFBQU0sQ0FBQyxpQkFBaUIsa0JBQWtCLElBQUlBLGNBQWEsS0FBSztBQUNoRSxRQUFNLENBQUMsbUJBQW1CLG9CQUFvQixJQUFJQSxjQUFhLEtBQUs7QUFDcEUsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJQSxjQUFhRSxNQUFLLE1BQU07QUFDcEQsUUFBTSxDQUFDLG9CQUFvQixxQkFBcUIsSUFBSUYsY0FBYUUsTUFBSyxrQkFBa0I7QUFDeEYsUUFBTSxDQUFDLFdBQVcsWUFBWSxJQUFJRixjQUFhRSxNQUFLLFNBQVM7QUFDN0QsUUFBTSxDQUFDLG9CQUFvQixxQkFBcUIsSUFBSUYsY0FBYUUsTUFBSyxrQkFBa0I7QUFDeEYsUUFBTSxDQUFDLGlCQUFpQixrQkFBa0IsSUFBSUYsY0FBYSxJQUFJO0FBQy9ELFFBQU0sQ0FBQyxpQkFBaUIsa0JBQWtCLElBQUlBLGNBQWEsS0FBSztBQUNoRSxRQUFNLENBQUMsVUFBVSxXQUFXLElBQUlBLGNBQWEsQ0FBQztBQUM5QyxRQUFNLENBQUMsWUFBWSxhQUFhLElBQUlBLGNBQWEsQ0FBQyxDQUFDO0FBQ25ELFFBQU0sQ0FBQyxXQUFXLFlBQVksSUFBSUEsY0FBYUUsTUFBSyxhQUFhLE1BQU07QUFDdkUsUUFBTSxDQUFDLFFBQVEsU0FBUyxJQUFJRixjQUFhLENBQUMsQ0FBQztBQUMzQyxRQUFNLENBQUMsTUFBTSxPQUFPLElBQUlBLGNBQWEsQ0FBQyxDQUFDO0FBQ3ZDLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUEsY0FBYSxFQUFFO0FBQzdDLFFBQU0sQ0FBQyxVQUFVLFdBQVcsSUFBSUEsY0FBYSxDQUFDO0FBQzlDLFFBQU0sQ0FBQyxVQUFVLFdBQVcsSUFBSUEsY0FBYSxJQUFJO0FBQ2pELFFBQU0sQ0FBQyxXQUFXLFlBQVksSUFBSUEsY0FBYSxDQUFDO0FBQ2hELFFBQU0sQ0FBQyxVQUFVLFdBQVcsSUFBSUEsY0FBYSxDQUFDLENBQUM7QUFDL0MsUUFBTSxDQUFDLGdCQUFnQixpQkFBaUIsSUFBSUEsY0FBYSxLQUFLO0FBQzlELFFBQU0sQ0FBQyxNQUFNLE9BQU8sSUFBSUEsY0FBYSxNQUFNO0FBQzNDLFFBQU0sQ0FBQyxTQUFTLFVBQVUsSUFBSUEsY0FBYSxLQUFLO0FBQ2hELFFBQU0sQ0FBQyxnQkFBZ0IsaUJBQWlCLElBQUlBLGNBQWEsS0FBSztBQUM5RCxRQUFNLENBQUMsd0JBQXdCLHlCQUF5QixJQUFJQSxjQUFhLEtBQUs7QUFDOUUsUUFBTSxDQUFDLHFCQUFxQixzQkFBc0IsSUFBSUEsY0FBYSxJQUFJO0FBQ3ZFLFFBQU0sQ0FBQyxpQkFBaUIsa0JBQWtCLElBQUlBLGNBQWEsSUFBSTtBQUMvRCxRQUFNLENBQUMsZUFBZSxnQkFBZ0IsSUFBSUEsY0FBYSxDQUFDO0FBQ3hELFFBQU0sQ0FBQyxlQUFlLGdCQUFnQixJQUFJQSxjQUFhLElBQUk7QUFDM0QsUUFBTSxDQUFDLG1CQUFtQixvQkFBb0IsSUFBSUEsY0FBYSxDQUFDO0FBQ2hFLFFBQU0sQ0FBQyxrQkFBa0IsbUJBQW1CLElBQUlBLGNBQWEsS0FBSztBQUNsRSxRQUFNLENBQUMsV0FBVyxZQUFZLElBQUlBLGNBQWEsQ0FBQztBQUNoRCxRQUFNLENBQUMsYUFBYSxjQUFjLElBQUlBLGNBQWEsQ0FBQyxDQUFDO0FBQ3JELFFBQU0sQ0FBQyxpQkFBaUIsa0JBQWtCLElBQUlBLGNBQWEsS0FBSztBQUNoRSxRQUFNLENBQUMsYUFBYSxjQUFjLElBQUlBLGNBQWEsQ0FBQztBQUNwRCxRQUFNLENBQUMsZ0JBQWdCLGlCQUFpQixJQUFJQSxjQUFhLENBQUMsQ0FBQztBQUMzRCxRQUFNLENBQUMsZUFBZSxnQkFBZ0IsSUFBSUEsY0FBYSxLQUFLO0FBQzVELFFBQU0sQ0FBQyxjQUFjLGVBQWUsSUFBSUEsY0FBYSxLQUFLO0FBQzFELFFBQU0sQ0FBQyxrQkFBa0IsbUJBQW1CLElBQUlBLGNBQWEsS0FBSztBQUNsRSxRQUFNLENBQUMsV0FBVyxZQUFZLElBQUlBLGNBQWEsSUFBSTtBQUNuRCxRQUFNLENBQUMsZUFBZSxnQkFBZ0IsSUFBSUEsY0FBYSxJQUFJO0FBQzNELFFBQU0sQ0FBQyxtQkFBbUIsb0JBQW9CLElBQUlBLGNBQWEsQ0FBQztBQUNoRSxRQUFNLENBQUMsa0JBQWtCLG1CQUFtQixJQUFJQSxjQUFhLEtBQUs7QUFDbEUsUUFBTSxDQUFDLGtCQUFrQixtQkFBbUIsSUFBSUEsY0FBYSxLQUFLO0FBQ2xFLFFBQU0sQ0FBQyxlQUFlLGdCQUFnQixJQUFJQSxjQUFhLENBQUMsQ0FBQztBQUN6RCxRQUFNLENBQUMsZUFBZSxnQkFBZ0IsSUFBSUEsY0FBYSxDQUFDO0FBQ3hELFFBQU0sQ0FBQyxZQUFZLGFBQWEsSUFBSUEsY0FBYSxDQUFDO0FBQ2xELFFBQU0sQ0FBQyxVQUFVLFdBQVcsSUFBSUEsY0FBYSxDQUFDLENBQUM7QUFDL0MsUUFBTSxDQUFDLGlCQUFpQixrQkFBa0IsSUFBSUEsY0FBYSxLQUFLO0FBQ2hFLFFBQU0sQ0FBQyxZQUFZLGFBQWEsSUFBSUEsY0FBYSxJQUFJLEtBQUssQ0FBQztBQUMzRCxRQUFNLENBQUMsWUFBWSxhQUFhLElBQUlBLGNBQWEsS0FBSztBQUN0RCxRQUFNLENBQUMsV0FBVyxZQUFZLElBQUlBLGNBQWEsQ0FBQztBQUNoRCxRQUFNLENBQUMsWUFBWSxhQUFhLElBQUlBLGNBQWEsSUFBSTtBQUNyRCxRQUFNLENBQUMsY0FBYyxlQUFlLElBQUlBLGNBQWEsSUFBSTtBQUN6RCxRQUFNLENBQUMsUUFBUSxTQUFTLElBQUlBLGNBQWEsQ0FBQztBQUMxQyxRQUFNLENBQUMsUUFBUSxTQUFTLElBQUlBLGNBQWEsSUFBSTtBQUM3QyxRQUFNLENBQUMsWUFBWSxhQUFhLElBQUlBLGNBQWEsY0FBYztBQUUvRCxRQUFNLE9BQU9FLE1BQUs7QUFDbEIsT0FBSyxZQUFZO0FBQ2pCLE9BQUssY0FBYyxDQUFDO0FBQ3BCLE9BQUssY0FBYztBQUNuQixPQUFLLFFBQVEsS0FBSyxTQUFTO0FBQzNCLE9BQUssYUFBYSxLQUFLLGNBQWM7QUFDckMsT0FBSyxXQUFXO0FBQ2hCLE9BQUssZ0JBQWdCLG9CQUFJLElBQUk7QUFDN0IsT0FBSyxlQUFlO0FBRXBCLE9BQUssV0FBVyxtQkFBbUI7QUFBQSxJQUNqQyxhQUFhO0FBQUEsSUFDYixVQUFVLE9BQU8sRUFBRSxPQUFPQSxNQUFLLGNBQWM7QUFBQSxJQUM3QyxVQUFVLE1BQU0saUJBQWlCLENBQUMsTUFBTSxJQUFJLENBQUM7QUFBQSxJQUM3QyxVQUFVLENBQUMsVUFBVSxRQUFRLFVBQVUsZUFBZSxFQUFFLFNBQVMsTUFBTSxJQUFJLGFBQWEsTUFBTSxhQUFhLFFBQVEsTUFBTSxRQUFRLE9BQU8sTUFBTSxPQUFPLE1BQU0sTUFBTSxNQUFNLE9BQU8sTUFBTSxNQUFNLENBQUMsQ0FBQztBQUFBLElBQzVMLFNBQVMsQ0FBQyxPQUFPLFVBQVU7QUFDekIsVUFBSSxDQUFDLGtCQUFrQixpQkFBaUIsY0FBYyxPQUFPLEVBQUUsU0FBUyxNQUFNLElBQUksRUFBRyxTQUFRLFVBQVUsZUFBZSxFQUFFLFNBQVMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDO0FBQUEsSUFDcko7QUFBQSxJQUNBLFVBQVUsQ0FBQyxVQUFVO0FBQ25CLGNBQVEsVUFBVSxnQkFBZ0IsRUFBRSxTQUFTLE1BQU0sSUFBSSxRQUFRLE1BQU0sUUFBUSxPQUFPLE1BQU0sT0FBTyxhQUFhLE1BQU0sV0FBVyxhQUFhLE9BQU8sTUFBTSxNQUFNLENBQUMsQ0FBQztBQUNqSyxpQkFBVyxTQUFTLE1BQU0sRUFBRSxLQUFLLE1BQU0sV0FBVywwQkFBMEIsTUFBTSxNQUFNLHFEQUFxRCxNQUFNLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxNQUFNLFNBQVMsTUFBTSxHQUFHLENBQUM7QUFBQSxJQUM1TjtBQUFBLElBQ0EsS0FBSyxPQUFPLE9BQU8sUUFBUSxhQUFhO0FBQ3RDLFlBQU0sU0FBU0UsUUFBTyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsTUFBTSxLQUFLO0FBQ3hELFVBQUksQ0FBQyxVQUFVLE9BQU8sY0FBYyxNQUFPLE9BQU0sSUFBSSxNQUFNLCtCQUErQixNQUFNLEtBQUssRUFBRTtBQUN2RyxZQUFNLE9BQU8sT0FBTyxhQUFhLFVBQVUsTUFBTSxrQkFBa0IsSUFBSTtBQUN2RSxZQUFNLFlBQVksS0FBSyxTQUFTO0FBQ2hDLFVBQUksQ0FBQyxVQUFXLE9BQU0sSUFBSSxNQUFNLG1DQUFtQztBQUNuRSxZQUFNLGFBQWEsVUFBVSxnQkFBZ0IsTUFBTSxXQUFXLE1BQU0sRUFBRSxDQUFDO0FBQ3ZFLFlBQU0sY0FBYyxDQUFDLFFBQVEsU0FBUyxRQUFRLFFBQVEsUUFBUSxRQUFRLGdCQUFnQixjQUFjLGNBQWMsV0FBVztBQUM3SCxZQUFNLGlCQUFpQixNQUFNLE9BQU8sU0FBUyxNQUFNLE1BQU0sT0FBTyxDQUFDLFNBQVMsWUFBWSxTQUFTLElBQUksQ0FBQyxJQUFJO0FBQ3hHLFlBQU0sRUFBRSxPQUFPLFNBQVMsSUFBSSxjQUFjO0FBQUEsUUFDeEM7QUFBQSxRQUNBLEtBQUssRUFBRSxpQkFBaUIsV0FBVztBQUFBLFFBQ25DO0FBQUEsUUFDQSxRQUFRRixNQUFLO0FBQUEsUUFDYixRQUFRQSxNQUFLO0FBQUEsUUFDYjtBQUFBLFFBQ0EsY0FBYztBQUFBLFFBQ2QsWUFBWTtBQUFBLE1BQ2QsQ0FBQztBQUNELGFBQU8sUUFBUTtBQUFBLFFBQ2IsU0FBUyxDQUFDLEVBQUUsTUFBTSxRQUFRLFNBQVMsTUFBTSxPQUFPLENBQUM7QUFBQSxRQUNqRDtBQUFBLFFBQ0E7QUFBQSxRQUNBLFdBQVcsT0FBTztBQUFBLFFBQ2xCLFFBQVEsT0FBTyxTQUFTLFFBQVE7QUFBQSxRQUNoQztBQUFBLFFBQ0EsUUFBUSxrVEFBa1QsVUFBVTtBQUFBLFFBQ3BVO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGLENBQUM7QUFDRCxRQUFNLFNBQVMsS0FBSztBQUVwQixFQUFBQSxNQUFLLGFBQWEsTUFBTSxjQUFjQSxNQUFLLElBQUksS0FBSyxDQUFDLENBQUM7QUFDdEQsRUFBQUEsTUFBSyxnQkFBZ0IsTUFBTSxpQkFBaUIsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQ3pELEVBQUFBLE1BQUssaUJBQWlCLE1BQU0saUJBQWlCLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUMxRCxFQUFBQSxNQUFLLGFBQWEsTUFBTSxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUNuRCxFQUFBQSxNQUFLLGVBQWUsQ0FBQyxXQUFXO0FBQzlCLFVBQU0sV0FBVyxPQUFPLEVBQUUsUUFBUTtBQUNsQztBQUFBLE1BQ0UsMkNBQTJDLE9BQU8sRUFBRSx5QkFBeUIsT0FBTyxJQUFJO0FBQUEsTUFDeEYsRUFBRSxNQUFNLEtBQUs7QUFBQSxJQUNmO0FBQUEsRUFDRixDQUFDO0FBQ0QsRUFBQUEsTUFBSyxjQUFjLENBQUMsVUFBVTtBQUM1QixRQUFJLE1BQU0sYUFBYSxTQUFTO0FBQzlCLFlBQU0sU0FBUyxNQUFNLEVBQUUsU0FBUztBQUNoQztBQUFBLElBQ0Y7QUFDQSxRQUFJLE1BQU0sYUFBYSxRQUFRO0FBQzdCLFlBQU0sU0FBUyxNQUFNLEVBQUUsU0FBUztBQUNoQyxpQkFBVyxtRUFBbUUsTUFBTSxFQUFFLEtBQUssTUFBTSxlQUFlLE1BQU0sT0FBTywyRkFBMkYsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2TztBQUFBLElBQ0Y7QUFDQSxVQUFNLFNBQVMsTUFBTSxFQUFFLHFCQUFrQixNQUFNLFFBQVEsRUFBRTtBQUN6RCxVQUFNLE9BQU9BLE1BQUssT0FBTyxPQUFPLE1BQU0sSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDeEQsVUFBTSxPQUFPLEtBQUssSUFBSSxHQUFHLEtBQUssUUFBUSxNQUFNLFdBQVcsS0FBSyxJQUFJLEtBQUssTUFBTSxhQUFhLEdBQUksQ0FBQztBQUM3RixVQUFNLE1BQU0sT0FBTyxLQUFLLEdBQUcsSUFBSSxNQUFNLEdBQUcsS0FBSyxNQUFNLE9BQU8sRUFBRSxDQUFDLEtBQUssT0FBTyxFQUFFO0FBQzNFO0FBQUEsTUFDRSwwQ0FBMEMsTUFBTSxFQUFFLEtBQUssTUFBTSxlQUFlLE1BQU0sT0FBTyxzQkFBc0IsTUFBTSxRQUFRLFVBQVUsR0FBRyxPQUN2SSxPQUFPO0FBQUE7QUFBQSxFQUFxQixJQUFJLEtBQUs7QUFBQSxNQUN4QyxFQUFFLE1BQU0sS0FBSztBQUFBLElBQ2Y7QUFBQSxFQUNGLENBQUM7QUFFRCxXQUFTLFdBQVcsTUFBTSxFQUFFLE1BQU0sUUFBUSxJQUFJLENBQUMsR0FBRztBQUNoRCxTQUFLLHVCQUF1QixDQUFDO0FBQzdCLFNBQUssbUJBQW1CLEtBQUssRUFBRSxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ3BELHFCQUFpQjtBQUFBLEVBQ25CO0FBRUEsV0FBUyxtQkFBbUI7QUFDMUIsUUFBSSxDQUFDLEtBQUssb0JBQW9CLFVBQVUsS0FBSyxLQUFLLEtBQUssTUFBTSxVQUFVLENBQUMsS0FBSyxRQUFTO0FBQ3RGLFVBQU0sUUFBUSxLQUFLO0FBQ25CLFNBQUsscUJBQXFCLENBQUM7QUFDM0IsUUFBSSxDQUFDLE1BQU0sT0FBUTtBQUNuQixZQUFRLFVBQVUsZUFBZSxFQUFFLE1BQU0sTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDakYsYUFBUztBQUNULFFBQUksTUFBTSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRyxjQUFhO0FBQUEsRUFDOUM7QUFFQSxRQUFNLGdCQUFnQixPQUFPLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sY0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLElBQUksT0FBTyxLQUFLLEVBQUU7QUFDNUgsUUFBTSxlQUFlQSxNQUFLLFNBQVMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxnQkFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLElBQUksU0FBUyxLQUFLLEVBQUU7QUFDdEksUUFBTSxTQUFTLG9CQUFJLElBQUk7QUFDdkIsUUFBTSxXQUFXLENBQUM7QUFDbEIsYUFBVyxLQUFLLENBQUMsR0FBRyxVQUFVLEdBQUcsZUFBZSxHQUFHLFlBQVksR0FBRztBQUNoRSxRQUFJLE9BQU8sSUFBSSxFQUFFLElBQUksRUFBRyxVQUFTLEtBQUssR0FBRyxFQUFFLFFBQVEsVUFBVSxTQUFTLEtBQUssRUFBRSxJQUFJLEdBQUc7QUFBQSxRQUMvRSxRQUFPLElBQUksRUFBRSxNQUFNLENBQUM7QUFBQSxFQUMzQjtBQUNBLFFBQU0sY0FBYyxDQUFDLEdBQUcsT0FBTyxPQUFPLENBQUM7QUFDdkMsTUFBSSxTQUFTLFVBQVUsQ0FBQyxLQUFLLGdCQUFnQjtBQUMzQyxTQUFLLGlCQUFpQjtBQUN0QixlQUFXLE1BQU0sTUFBTSwrQ0FBK0MsU0FBUyxLQUFLLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQztBQUFBLEVBQ2pHO0FBRUEsUUFBTSxRQUFRLFNBQVM7QUFBQSxJQUNyQixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixRQUFRLENBQUMsWUFBWSxnQkFBQU4sS0FBQyxVQUFLLE9BQU8sRUFBRSxJQUFJLE9BQU8sR0FBRyxPQUFPLFNBQVMsTUFBTSxLQUFLLEdBQUksY0FBSSxPQUFPLEtBQUk7QUFBQSxFQUNsRyxDQUFDO0FBRUQsUUFBTSxjQUFjLFNBQVM7QUFBQSxJQUMzQixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixRQUFRLENBQUMsWUFDUCxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxJQUFJLE9BQU8sRUFBRSxHQUN6QiwwQkFBQUEsS0FBQyxXQUFRLE9BQU0sU0FBUSxXQUFXLFdBQVcsVUFBVSxNQUFPLGNBQUksT0FBTyxLQUFJLEdBQy9FO0FBQUEsRUFFSixDQUFDO0FBRUQsV0FBUyxNQUFNLEtBQUs7QUFDbEIsVUFBTSxHQUFHO0FBQUEsRUFDWDtBQUVBLE1BQUksQ0FBQyxLQUFLLGVBQWU7QUFDdkIsU0FBSyxnQkFBZ0I7QUFDckIsbUJBQWVPLFFBQU8sRUFBRSxLQUFLLENBQUMsVUFBVTtBQUN0QyxVQUFJLENBQUMsTUFBTztBQUNaLGtCQUFZLFNBQVMsTUFBTSxPQUFPLHlCQUFzQjtBQUN4RCxZQUFNLGFBQWE7QUFBQSxJQUNyQixDQUFDLEVBQUUsTUFBTSxNQUFNO0FBQUEsSUFBQyxDQUFDO0FBQUEsRUFDbkI7QUFFQSxXQUFTLGdCQUFnQjtBQUN2QixRQUFJLENBQUMsS0FBSyxRQUFTLE1BQUssVUFBVSxjQUFjLEVBQUUsS0FBSyxLQUFLLENBQUM7QUFDN0QsV0FBTyxLQUFLLFlBQVksS0FBSyxVQUFVLFFBQVE7QUFDN0MsV0FBSyxRQUFRLE9BQU8sS0FBSyxVQUFVLEtBQUssU0FBUyxDQUFDO0FBQ2xELFdBQUs7QUFBQSxJQUNQO0FBQUEsRUFDRjtBQUVBLFdBQVMsUUFBUSxPQUFPO0FBQ3RCLFNBQUssVUFBVSxLQUFLLEtBQUs7QUFDekIsUUFBSSxLQUFLLFNBQVM7QUFDaEIsV0FBSyxRQUFRLE9BQU8sS0FBSztBQUN6QixXQUFLLFlBQVksS0FBSyxVQUFVO0FBQUEsSUFDbEM7QUFBQSxFQUNGO0FBRUEsV0FBUyxXQUFXO0FBQ2xCLFVBQU0sUUFBUSxZQUFZLEtBQUssU0FBUztBQUN4QyxlQUFXLEtBQUs7QUFDaEIsY0FBVSxNQUFNLEtBQUs7QUFDckIsSUFBQUQsTUFBSyxXQUFXLEVBQUUsUUFBUSxNQUFNLFNBQVMsZ0JBQWdCLE9BQU8sTUFBTSxDQUFDO0FBQUEsRUFDekU7QUFFQSxXQUFTLFlBQVlLLFFBQU87QUFDMUIsVUFBTSxPQUFPLFVBQVU7QUFDdkIsUUFBSSxLQUFNLENBQUFBLE9BQU0sS0FBSyxFQUFFLE1BQU0sYUFBYSxLQUFLLENBQUM7QUFDaEQsaUJBQWEsSUFBSTtBQUFBLEVBQ25CO0FBRUEsaUJBQWUsWUFBWSxNQUFNO0FBQy9CLFVBQU0sRUFBRSxRQUFRLElBQUksb0JBQW9CLE1BQU0sS0FBSyxXQUFXO0FBQzlELFlBQVEsVUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3BFLGtCQUFjO0FBQ2QsYUFBUztBQUNULFVBQU0sYUFBYTtBQUFBLEVBQ3JCO0FBRUEsaUJBQWUsa0JBQWtCLGVBQWUsSUFBSTtBQUNsRCxRQUFJLEtBQUssS0FBSyxXQUFXLEVBQUcsUUFBTyxNQUFNLDRDQUE0QztBQUNyRixVQUFNLFFBQVEsUUFBUTtBQUN0QixRQUFJLE1BQU0sZ0JBQWdCLFNBQVMsRUFBRyxRQUFPLE1BQU0sd0JBQXdCO0FBRTNFLFFBQUksT0FBTztBQUNYLFFBQUlGLE9BQU0sRUFBRSxhQUFhLFNBQVM7QUFDaEMsYUFBTyxNQUFNLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxJQUFJO0FBQ2pELFVBQUksQ0FBQyxLQUFNLFFBQU8sTUFBTSxtREFBbUQ7QUFBQSxJQUM3RTtBQUVBLFVBQU0sVUFBVSxZQUFZLEtBQUs7QUFDakMsVUFBTSxXQUFXLFFBQVEsR0FBRyxFQUFFLEdBQUcsV0FBVyxRQUFRLEdBQUcsRUFBRSxHQUFHO0FBRTVELFVBQU0sYUFBYSxJQUFJLGdCQUFnQjtBQUN2QyxTQUFLLFFBQVE7QUFDYixZQUFRLElBQUk7QUFDWixrQkFBYyxJQUFJO0FBQ2xCLHFCQUFpQixJQUFJO0FBQ3JCLGlCQUFhLEtBQUssSUFBSSxDQUFDO0FBQ3ZCLFFBQUksV0FBVztBQUNmLFFBQUk7QUFDRixZQUFNLE1BQU0sTUFBTSxlQUFlO0FBQUEsUUFDL0IsU0FBUyxNQUFNO0FBQUEsUUFDZixXQUFXQSxPQUFNLEVBQUU7QUFBQSxRQUNuQjtBQUFBLFFBQ0EsUUFBUSxpQkFBaUIsWUFBWTtBQUFBLFFBQ3JDLFFBQVEsV0FBVztBQUFBLFFBQ25CLFVBQVUsQ0FBQyxVQUFVO0FBQ25CLGNBQUksTUFBTSxTQUFTLFVBQVc7QUFDOUIsc0JBQVksTUFBTTtBQUNsQiwyQkFBaUIsZ0JBQWdCLFFBQVEsQ0FBQztBQUFBLFFBQzVDO0FBQUEsTUFDRixDQUFDO0FBQ0QsWUFBTSxVQUFVLHFCQUFxQixHQUFHO0FBQ3hDLFVBQUksQ0FBQyxRQUFTLE9BQU0sSUFBSSxNQUFNLGVBQWU7QUFDN0MsVUFBSSxnQkFBZ0IsT0FBTyxJQUFJLEVBQUcsT0FBTSxJQUFJLE1BQU0sZ0RBQWdEO0FBQ2xHLGNBQVEsVUFBVSxXQUFXLEVBQUUsU0FBUyxVQUFVLGFBQWEsS0FBSyxTQUFTLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDNUYsZUFBUztBQUNULFlBQU0sOENBQTJDO0FBQUEsSUFDbkQsU0FBUyxLQUFLO0FBQ1osVUFBSSxXQUFXLE9BQU8sUUFBUyxPQUFNLHNCQUFzQjtBQUFBLFVBQ3RELE9BQU0sbUJBQW1CLE9BQU8sSUFBSSxXQUFXLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUU7QUFBQSxJQUMxRSxVQUFFO0FBQ0Esb0JBQWMsS0FBSztBQUNuQix1QkFBaUIsSUFBSTtBQUNyQixjQUFRLEtBQUs7QUFDYixXQUFLLFFBQVE7QUFBQSxJQUNmO0FBRUEsVUFBTSxJQUFJLE9BQU87QUFDakIsUUFBSSxFQUFFLFNBQVMsR0FBRztBQUNoQixnQkFBVSxDQUFDLENBQUM7QUFDWixVQUFJLFdBQVcsT0FBTyxRQUFTLFVBQVMsRUFBRSxLQUFLLElBQUksQ0FBQztBQUFBLFVBQy9DLGFBQVksRUFBRSxLQUFLLElBQUksQ0FBQztBQUFBLElBQy9CO0FBQUEsRUFDRjtBQUVBLFdBQVMsbUJBQW1CO0FBQzFCLFFBQUlILE1BQUssZ0JBQWdCLFNBQVMsS0FBSyxLQUFLLFdBQVcsRUFBRztBQUMxRCxVQUFNLFFBQVFHLE9BQU0sRUFBRTtBQUN0QixVQUFNLE9BQU8sUUFBUSxFQUFFO0FBQ3ZCLFFBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxRQUFRLEVBQUUsb0JBQW9CQSxPQUFNLEVBQUUsS0FBTTtBQUNuRSxVQUFNLFFBQVEsT0FBTztBQUNyQixRQUFJLFNBQVMsTUFBTTtBQUNqQixZQUFNLFdBQVcsS0FBSyxNQUFNLFFBQVEsR0FBRyxDQUFDLDZCQUEwQjtBQUNsRSx3QkFBa0I7QUFBQSxJQUNwQjtBQUFBLEVBQ0Y7QUFFQSxpQkFBZSxlQUFlO0FBQzVCLFVBQU1HLHNCQUFxQixLQUFLLDBCQUEwQjtBQUMxRCxTQUFLLHlCQUF5QjtBQUM5QixRQUFJLE9BQU87QUFDWCxRQUFJSCxPQUFNLEVBQUUsYUFBYSxTQUFTO0FBQ2hDLGFBQU8sTUFBTSxrQkFBa0IsRUFBRSxNQUFNLE1BQU0sSUFBSTtBQUNqRCxVQUFJLENBQUMsTUFBTTtBQUNULGNBQU0sbURBQW1EO0FBQ3pEO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFDQSxjQUFVLElBQUk7QUFDZCxrQkFBYyxjQUFjO0FBQzVCLFlBQVEsSUFBSTtBQUNaLGlCQUFhLFlBQVk7QUFDekIsaUJBQWEsS0FBSyxJQUFJLENBQUM7QUFFdkIsVUFBTSxhQUFhLElBQUksZ0JBQWdCO0FBQ3ZDLFNBQUssUUFBUTtBQUNiLFVBQU0sZUFBZSxJQUFJLElBQUksUUFBUSxNQUFNO0FBQzNDLElBQUFILE1BQUssU0FBUyxNQUFNLGlCQUFpQkEsTUFBSyxJQUFJLEVBQUUsTUFBTSxNQUFNQSxNQUFLLE1BQU0sS0FBS0EsTUFBSztBQUNqRixJQUFBQSxNQUFLLFdBQVcsTUFBTSxtQkFBbUJBLE1BQUssSUFBSSxFQUFFLE1BQU0sTUFBTUEsTUFBSyxRQUFRLEtBQUtBLE1BQUs7QUFDdkYsVUFBTSxjQUFjQSxNQUFLO0FBQ3pCLFVBQU0sZUFBZSxNQUFNLGNBQWMsRUFBRSxLQUFLLE1BQU1BLE1BQUssS0FBSyxDQUFDLEVBQUUsTUFBTSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRTtBQUMxRyxlQUFXLFdBQVcsYUFBYSxRQUFRO0FBQ3pDLFlBQU0sTUFBTSxHQUFHLFFBQVEsSUFBSSxJQUFJLFFBQVEsS0FBSztBQUM1QyxVQUFJLENBQUMsS0FBSyxhQUFhLElBQUksR0FBRyxHQUFHO0FBQy9CO0FBQUMsU0FBQyxLQUFLLGdCQUFnQixvQkFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHO0FBQ3pDLGNBQU0saUJBQWlCLFFBQVEsS0FBSyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBTSxRQUFRLEtBQUssRUFBRTtBQUFBLE1BQzNFO0FBQUEsSUFDRjtBQUNBLFVBQU0sRUFBRSxPQUFPLFNBQVMsSUFBSSxjQUFjO0FBQUEsTUFDeEM7QUFBQSxNQUNBO0FBQUEsTUFDQSxRQUFRO0FBQUEsTUFDUixRQUFRQSxNQUFLO0FBQUEsTUFDYixTQUFTQSxNQUFLO0FBQUEsTUFDZCxRQUFRQSxNQUFLO0FBQUEsTUFDYixRQUFRQSxNQUFLLGdCQUFnQixTQUFTO0FBQUEsTUFDdEMsU0FBUyxDQUFDLGNBQWMsSUFBSSxRQUFRLENBQUNPLGFBQVk7QUFDL0MsMkJBQW1CLEVBQUUsV0FBVyxTQUFBQSxTQUFRLENBQUM7QUFDekMsV0FBRyxNQUFNLFVBQVU7QUFBQSxNQUNyQixDQUFDO0FBQUEsTUFDRCxRQUFRUCxNQUFLO0FBQUEsTUFDYixVQUFVLElBQUksTUFBTTtBQUFBLE1BQ3BCLFdBQVcsYUFBYTtBQUFBLE1BQ3hCLFFBQVEsV0FBVztBQUFBLE1BQ25CLGdCQUFnQk0sc0JBQXFCLE1BQU07QUFBQSxNQUMzQyxrQkFBa0IsQ0FBQyxDQUFDQTtBQUFBLE1BQ3BCLFlBQVlBLHNCQUFxQixDQUFDLGNBQWMsZUFBZSxjQUFjLGlCQUFpQixjQUFjLElBQUk7QUFBQSxJQUNsSCxDQUFDO0FBRUQsU0FBSyxlQUFlO0FBQ3BCLFVBQU0sV0FBVyxDQUFDLFVBQVU7QUFDMUIsVUFBSSxNQUFNLFNBQVMsWUFBWTtBQUM3QixhQUFLLGdCQUFnQixNQUFNO0FBQzNCLHFCQUFhLFVBQVU7QUFBQSxNQUN6QixXQUFXLE1BQU0sU0FBUyxXQUFXO0FBQ25DLHFCQUFhLFlBQVk7QUFDekIscUJBQWEsQ0FBQyxPQUFPLEtBQUssTUFBTSxNQUFNLE9BQU87QUFBQSxNQUMvQyxXQUFXLE1BQU0sU0FBUyxvQkFBb0I7QUFDNUMscUJBQWEsT0FBTztBQUNwQixtQkFBVyxDQUFDLE1BQU07QUFDaEIsZ0JBQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUNsQixzQkFBWSxJQUFJO0FBQ2hCLGlCQUFPO0FBQUEsUUFDVCxDQUFDO0FBQUEsTUFDSCxXQUFXLE1BQU0sU0FBUyxrQkFBa0I7QUFDMUMsbUJBQVcsQ0FBQyxNQUFNO0FBQ2hCLGdCQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDbEIsc0JBQVksSUFBSTtBQUNoQixjQUFJLE9BQU8sQ0FBQztBQUNaLGNBQUk7QUFDRixtQkFBTyxLQUFLLE1BQU0sTUFBTSxLQUFLLFNBQVMsU0FBUztBQUFBLFVBQ2pELFFBQVE7QUFBQSxVQUFDO0FBQ1QsZUFBSyxLQUFLO0FBQUEsWUFDUixNQUFNO0FBQUEsWUFDTixRQUFRLE1BQU0sS0FBSztBQUFBLFlBQ25CLE1BQU0sTUFBTSxLQUFLLFNBQVM7QUFBQSxZQUMxQixPQUFPLGFBQVEsTUFBTSxLQUFLLFNBQVMsTUFBTSxJQUFJO0FBQUEsWUFDN0MsUUFBUTtBQUFBLFlBQ1IsV0FBVyxLQUFLLElBQUk7QUFBQSxVQUN0QixDQUFDO0FBQ0QsaUJBQU87QUFBQSxRQUNULENBQUM7QUFBQSxNQUNILFdBQVcsTUFBTSxTQUFTLG1CQUFtQixNQUFNLFNBQVMsY0FBYztBQUN4RSxRQUFBTixNQUFLLElBQUksUUFBUTtBQUNqQixjQUFNLFFBQVEsU0FBUyxRQUFRLEdBQUcsRUFBRTtBQUNwQztBQUFBLFVBQVcsQ0FBQyxNQUNWLEVBQUU7QUFBQSxZQUFJLENBQUMsU0FDTCxLQUFLLFNBQVMsVUFBVSxLQUFLLFdBQVcsTUFBTSxLQUFLLEtBQy9DLEVBQUUsR0FBRyxNQUFNLEdBQUksT0FBTyxXQUFXLE1BQU0sS0FBSyxLQUFLLFFBQVEsQ0FBQyxHQUFJLE1BQU0sUUFBUSxRQUFRLE9BQU8sVUFBVSxPQUFPLElBQzVHO0FBQUEsVUFDTjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLFFBQUk7QUFDSixRQUFJO0FBQ0YsZUFBUyxNQUFNLFFBQVE7QUFBQSxRQUNyQixTQUFTLFFBQVEsRUFBRTtBQUFBLFFBQ25CO0FBQUEsUUFDQTtBQUFBLFFBQ0EsV0FBV0csT0FBTSxFQUFFO0FBQUEsUUFDbkIsUUFBUSxjQUFjLElBQUksT0FBTyxLQUFLLFNBQVM7QUFBQSxRQUMvQztBQUFBLFFBQ0EsUUFBUSxrQkFBa0I7QUFBQSxVQUN4QjtBQUFBLFVBQ0EsY0FBYyxlQUFlO0FBQUEsVUFDN0IsUUFBUSxZQUFZLEtBQUs7QUFBQSxVQUN6QixpQkFBaUIsWUFBWSxNQUFNSCxNQUFLLE9BQU8sS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDLENBQUMsR0FBR0EsTUFBSyxJQUFJO0FBQUEsUUFDbEYsQ0FBQztBQUFBLFFBQ0QsUUFBUSxXQUFXO0FBQUEsUUFDbkI7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILFNBQVMsS0FBSztBQUNaLGlCQUFXLENBQUMsQ0FBQztBQUNiLG1CQUFhLElBQUk7QUFDakIsbUJBQWEsTUFBTTtBQUNuQixjQUFRLEtBQUs7QUFDYixXQUFLLFFBQVE7QUFDYixZQUFNLFVBQVUsT0FBTyxJQUFJLFdBQVcsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRTtBQUMxRDtBQUFBLElBQ0Y7QUFFQSxRQUFJLEtBQUssYUFBYyxTQUFRLFVBQVUsWUFBWSxFQUFFLE1BQU0sS0FBSyxhQUFhLENBQUMsQ0FBQztBQUNqRixlQUFXLFdBQVcsT0FBTyxTQUFVLFNBQVEsVUFBVSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDaEYsZUFBVyxTQUFTLFNBQVMsUUFBUyxTQUFRLFVBQVUsYUFBYSxLQUFLLENBQUM7QUFDM0UsZUFBVyxRQUFRLFFBQVEsUUFBUTtBQUNqQyxVQUFJLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRyxTQUFRLFVBQVUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFBQSxJQUMxRTtBQUNBLFFBQUksT0FBTyxNQUFPLFNBQVEsVUFBVSxTQUFTLEVBQUUsT0FBT0csT0FBTSxFQUFFLE1BQU0sT0FBTyxPQUFPLE9BQU8sWUFBWSxPQUFPLGlCQUFpQixDQUFDLENBQUM7QUFDL0gsUUFBSSxPQUFPLFlBQWEsU0FBUSxVQUFVLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFFMUQsZUFBVyxDQUFDLENBQUM7QUFDYixpQkFBYSxJQUFJO0FBQ2pCLGlCQUFhLE1BQU07QUFDbkIsYUFBUztBQUNULFlBQVEsS0FBSztBQUNiLFNBQUssUUFBUTtBQUNiLElBQUFILE1BQUssSUFBSSxRQUFRO0FBQ2pCLFFBQUksT0FBTyxTQUFTO0FBQ2xCLFlBQU0scUNBQWtDO0FBQ3hDO0FBQUEsUUFDRTtBQUFBLFFBQ0EsRUFBRSxNQUFNLE1BQU07QUFBQSxNQUNoQjtBQUFBLElBQ0YsV0FBVyxPQUFPLE9BQU87QUFDdkIsWUFBTSxVQUFVLE9BQU8sTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUU7QUFDNUM7QUFBQSxRQUNFLHdFQUF3RSxPQUFPLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUFBLFFBQ2xHLEVBQUUsTUFBTSxNQUFNO0FBQUEsTUFDaEI7QUFBQSxJQUNGO0FBRUEsVUFBTSxJQUFJLE9BQU87QUFDakIsUUFBSSxFQUFFLFNBQVMsR0FBRztBQUNoQixnQkFBVSxDQUFDLENBQUM7QUFDWixVQUFJLE9BQU8sWUFBYSxVQUFTLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFBQSxXQUN4QztBQUNILG9CQUFZLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDeEI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUNBLHFCQUFpQjtBQUNqQixxQkFBaUI7QUFBQSxFQUNuQjtBQUVBLFdBQVMsaUJBQWlCLE1BQU07QUFDOUIsUUFBSSxTQUFTLFFBQVMsUUFBTyxPQUFPLEtBQUssY0FBYztBQUN2RCxRQUFJLFNBQVMsUUFBUyxRQUFPLENBQUMsR0FBRyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTTtBQUN4RSxRQUFJLFNBQVMsU0FBVSxRQUFPLENBQUMsV0FBVyxPQUFPLFVBQVUsUUFBUSxLQUFLO0FBQ3hFLFFBQUksU0FBUyxRQUFTLFFBQU9FLFFBQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxjQUFjLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUk7QUFDMUYsVUFBTSxNQUFNLFlBQVksS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUk7QUFDbkQsUUFBSSxLQUFLLFNBQVMsS0FBSyxRQUFTLFFBQU8sU0FBUztBQUNoRCxXQUFPO0FBQUEsRUFDVDtBQUVBLFdBQVMsb0JBQW9CO0FBQzNCLGtCQUFjLEtBQUs7QUFDbkIsaUJBQWEsQ0FBQztBQUFBLEVBQ2hCO0FBRUEsV0FBUyxpQkFBaUIsT0FBTyxLQUFLLFdBQVc7QUFDL0MsYUFBUyxnQkFBZ0IsT0FBTyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxzQkFBa0I7QUFBQSxFQUNwQjtBQUVBLFdBQVMsS0FBSyxNQUFNO0FBQ2xCLFFBQUksY0FBYyxLQUFLLGNBQWMsRUFBRztBQUN4QyxVQUFNLFFBQVEsS0FBSyxLQUFLO0FBQ3hCLFFBQUksQ0FBQyxNQUFPO0FBQ1osc0JBQWtCO0FBQ2xCLFFBQUksTUFBTSxXQUFXLEdBQUcsR0FBRztBQUN6QixZQUFNLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxNQUFNLE1BQU0sQ0FBQyxFQUFFLE1BQU0sS0FBSztBQUNsRCxZQUFNLFFBQVEsWUFBWSxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsS0FBSyxZQUFZLENBQUM7QUFDbkUsVUFBSSxPQUFPO0FBQ1QsaUJBQVMsRUFBRTtBQUNYLG1CQUFXLE9BQU8sS0FBSyxLQUFLLEdBQUcsQ0FBQztBQUNoQztBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQ0EsWUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxNQUFNLE9BQU8sSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7QUFDdEQsZUFBVyxFQUFFO0FBQ2IsaUJBQWEsTUFBTSxLQUFLLEVBQUUsTUFBTSxNQUFNO0FBQUEsSUFBQyxDQUFDO0FBQ3hDLFFBQUksS0FBSyxHQUFHO0FBQ1YsZ0JBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUM5QjtBQUFBLElBQ0Y7QUFDQSxnQkFBWSxLQUFLO0FBQUEsRUFDbkI7QUFFQSxXQUFTLFlBQVk7QUFDbkIsUUFBSSxDQUFDLEtBQUssRUFBRztBQUNiLFVBQU0sVUFBVSxnQkFBZ0I7QUFDaEMsUUFBSSxTQUFTO0FBQ1gseUJBQW1CLElBQUk7QUFDdkIsV0FBSyw2QkFBNkI7QUFDbEMsY0FBUSxRQUFRLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFBQSxJQUNyQztBQUNBLFNBQUssT0FBTyxNQUFNO0FBQUEsRUFDcEI7QUFFQSxRQUFNLFlBQVksQ0FBQyxNQUFPLEtBQUssTUFBTyxJQUFJLElBQUksS0FBTSxRQUFRLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQztBQUU1RSxpQkFBZSxrQkFBa0I7QUFDL0Isa0JBQWMsTUFBTUYsTUFBSyxPQUFPLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFBQSxFQUN4RDtBQUVBLGlCQUFlLGFBQWEsR0FBRztBQUM3QixVQUFNLFFBQVEsS0FBSztBQUNuQixRQUFJLENBQUMsU0FBUyxNQUFNLFNBQVMsRUFBRSxRQUFRLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxLQUFNO0FBQ25FLFdBQUssWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDaEQsYUFBTyxNQUFNLDJCQUEyQixFQUFFLElBQUksR0FBRztBQUFBLElBQ25EO0FBQ0EsU0FBSyxZQUFZO0FBQ2pCLFFBQUk7QUFDRixZQUFNQSxNQUFLLE9BQU8sT0FBTyxFQUFFLElBQUk7QUFDL0IsWUFBTSxnQkFBZ0I7QUFDdEIsWUFBTSxVQUFVLEVBQUUsSUFBSSxLQUFLLEVBQUUsS0FBSyxHQUFHO0FBQUEsSUFDdkMsU0FBUyxLQUFLO0FBQ1osWUFBTSxrQkFBa0IsT0FBTyxJQUFJLFdBQVcsR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRTtBQUFBLElBQ25FO0FBQUEsRUFDRjtBQUVBLGlCQUFlLG1CQUFtQjtBQUNoQyxVQUFNLE1BQU0sQ0FBQyxTQUFTLEtBQUssTUFBTSxPQUFPLElBQUksRUFBRSxTQUFTLENBQUM7QUFDeEQsVUFBTSxNQUFNLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxDQUFDO0FBQ25DLFVBQU0sUUFBUSxRQUFRO0FBRXRCLFVBQU0sa0JBQWtCLFlBQVksTUFBTUEsTUFBSyxPQUFPLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQyxDQUFDLEdBQUdBLE1BQUssSUFBSTtBQUN2RixVQUFNLFlBQVlBLE1BQUssT0FBTyxLQUFLO0FBQ25DLFVBQU0sUUFBUSxlQUFlO0FBQzdCLFVBQU0sYUFBYSxrQkFBa0IsRUFBRSxLQUFLLGNBQWMsT0FBTyxRQUFRLFdBQVcsZ0JBQWdCLENBQUM7QUFDckcsVUFBTSxhQUFhLGtCQUFrQixFQUFFLEtBQUssY0FBYyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsaUJBQWlCLEdBQUcsQ0FBQztBQUMvRixVQUFNLGVBQWUsTUFBTSxjQUFjLEVBQUUsS0FBSyxNQUFNQSxNQUFLLEtBQUssQ0FBQyxFQUFFLE1BQU0sT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEVBQUU7QUFDMUcsVUFBTSxFQUFFLE1BQU0sSUFBSSxjQUFjO0FBQUEsTUFDOUI7QUFBQSxNQUNBO0FBQUEsTUFDQSxRQUFRQSxNQUFLO0FBQUEsTUFDYixRQUFRQSxNQUFLO0FBQUEsTUFDYixTQUFTQSxNQUFLO0FBQUEsTUFDZCxRQUFRQSxNQUFLO0FBQUEsTUFDYixRQUFRQSxNQUFLO0FBQUEsTUFDYixVQUFVLElBQUksTUFBTTtBQUFBLE1BQ3BCLFdBQVcsYUFBYTtBQUFBLElBQzFCLENBQUM7QUFDRCxVQUFNLGFBQWEsSUFBSSxLQUFLLFVBQVUsS0FBSyxDQUFDO0FBRTVDLFVBQU0sVUFBVSxNQUFNO0FBQ3RCLFVBQU0sWUFBWSxRQUFRLENBQUMsR0FBRyxTQUFTLFVBQ2xDLE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxRQUM3QixPQUFPLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLDJDQUEyQztBQUN0RixVQUFNLGdCQUFnQixZQUFZLElBQUksUUFBUSxDQUFDLEVBQUUsT0FBTyxJQUFJO0FBQzVELFVBQU0sV0FBVyxZQUFZLFFBQVEsTUFBTSxDQUFDLElBQUk7QUFDaEQsVUFBTSxnQkFBZ0IsSUFBSSxLQUFLLFVBQVUsUUFBUSxDQUFDO0FBRWxELFVBQU0sT0FBTztBQUFBLE1BQ1gsRUFBRSxNQUFNLGlCQUFpQixNQUFNLHdDQUF3QyxNQUFNLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRTtBQUFBLE1BQ2xHLEVBQUUsTUFBTSxpQkFBaUIsTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssUUFBSyxHQUFHLE1BQU0sSUFBSSxVQUFVLEVBQUU7QUFBQSxJQUM5RztBQUNBLFFBQUksTUFBTSxRQUFRO0FBQ2hCLFdBQUssS0FBSztBQUFBLFFBQ1IsTUFBTSx5QkFBeUIsTUFBTSxNQUFNO0FBQUEsUUFDM0MsTUFBTSxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxRQUFRLEdBQUdBLE1BQUssSUFBSSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSTtBQUFBLFFBQ3JFLE1BQU0sSUFBSSxNQUFNLE9BQU8sQ0FBQyxLQUFLLE1BQU0sTUFBTSxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUFBLE1BQzdELENBQUM7QUFBQSxJQUNIO0FBQ0EsUUFBSSxVQUFVLFFBQVE7QUFDcEIsV0FBSyxLQUFLO0FBQUEsUUFDUixNQUFNLGlCQUFpQixVQUFVLE1BQU07QUFBQSxRQUN2QyxNQUFNLFVBQVUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJO0FBQUEsUUFDNUMsTUFBTSxJQUFJLElBQUksVUFBVSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUFBLE1BQ2pGLENBQUM7QUFBQSxJQUNIO0FBQ0EsUUFBSSxpQkFBaUI7QUFDbkIsV0FBSyxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsTUFBTSw2QkFBNkIsTUFBTSxJQUFJLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQztBQUFBLElBQ3hHO0FBQ0EsUUFBSSxXQUFXO0FBQ2IsV0FBSyxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsTUFBTSxvREFBb0QsTUFBTSxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBQUEsSUFDOUg7QUFDQSxTQUFLLEtBQUs7QUFBQSxNQUNSLE1BQU0saUJBQWlCLFNBQVMsTUFBTTtBQUFBLE1BQ3RDLE1BQU0sWUFBWSx5Q0FBeUM7QUFBQSxNQUMzRCxNQUFNLElBQUksYUFBYTtBQUFBLElBQ3pCLENBQUM7QUFFRCxRQUFJLE1BQU0sb0JBQW9CLE1BQU0sb0JBQW9CRyxPQUFNLEVBQUUsTUFBTTtBQUNwRSxXQUFLLEtBQUs7QUFBQSxRQUNSLE1BQU07QUFBQSxRQUNOLE1BQU07QUFBQSxRQUNOLE1BQU0sR0FBRyxNQUFNLGlCQUFpQixlQUFlLENBQUM7QUFBQSxNQUNsRCxDQUFDO0FBQUEsSUFDSDtBQUVBLFVBQU0sa0JBQWtCO0FBQUEsTUFDdEIsRUFBRSxPQUFPLFVBQVUsUUFBUSxJQUFJLFVBQVUsRUFBRTtBQUFBLE1BQzNDLEVBQUUsT0FBTyxTQUFTLFFBQVEsV0FBVztBQUFBLE1BQ3JDLEVBQUUsT0FBTyxXQUFXLFFBQVEsS0FBSyxJQUFJLEdBQUcsSUFBSSxVQUFVLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRTtBQUFBLE1BQzNFLEdBQUksZ0JBQWdCLENBQUMsRUFBRSxPQUFPLFdBQVcsUUFBUSxjQUFjLENBQUMsSUFBSSxDQUFDO0FBQUEsTUFDckUsRUFBRSxPQUFPLGdCQUFnQixRQUFRLGNBQWM7QUFBQSxJQUNqRCxFQUFFLE9BQU8sQ0FBQyxZQUFZLFFBQVEsU0FBUyxDQUFDLEVBQ3JDLElBQUksQ0FBQyxTQUFTLE9BQU8sRUFBRSxHQUFHLFNBQVMsT0FBTyxDQUFDLFdBQVcsV0FBVyxXQUFXLFdBQVcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBRTFHLGlCQUFhO0FBQUEsTUFDWCxPQUFPLGdCQUFhQSxPQUFNLEVBQUUsSUFBSTtBQUFBLE1BQ2hDO0FBQUEsTUFDQSxVQUFVLGdCQUFnQixTQUFTLEVBQUUsVUFBVSxnQkFBZ0IsSUFBSTtBQUFBLElBQ3JFLENBQUM7QUFBQSxFQUNIO0FBRUEsUUFBTSxhQUFhLE1BQU07QUFBQSxJQUN2QixHQUFHLFlBQVk7QUFBQSxJQUNmLEVBQUUsS0FBSyxRQUFRLE1BQU0sa0NBQWtDSCxNQUFLLGlCQUFpQixNQUFNLElBQUk7QUFBQSxFQUN6RjtBQUVBLFdBQVMsV0FBVyxNQUFNO0FBQ3hCLFdBQU8sU0FBUyxTQUFTQSxNQUFLLGlCQUFpQixTQUFTO0FBQUEsRUFDMUQ7QUFFQSxXQUFTLGVBQWUsTUFBTTtBQUM1QixlQUFXLFdBQVcsSUFBSSxDQUFDO0FBQzNCLElBQUFBLE1BQUssV0FBVyxFQUFFLFFBQVEsT0FBTyxHQUFHLE9BQU8sTUFBTSxDQUFDO0FBQUEsRUFDcEQ7QUFFQSxXQUFTLGVBQWUsTUFBTTtBQUM1QixpQkFBYSxJQUFJO0FBQ2pCLG1CQUFlLElBQUk7QUFDbkIsZ0JBQVksRUFBRSxPQUFPLFNBQVMsU0FBUyxTQUFZLEtBQUssQ0FBQyxFQUFFLE1BQU0sTUFBTTtBQUFBLElBQUMsQ0FBQztBQUN6RSxVQUFNLFNBQVMsU0FBUyw0Q0FBeUMsV0FBVyxNQUFNLENBQUMsTUFBTSxVQUFVLElBQUksRUFBRTtBQUFBLEVBQzNHO0FBRUEsaUJBQWUsV0FBVyxHQUFHLE9BQU8sSUFBSTtBQUN0QyxRQUFJLE9BQU8sU0FBUyxTQUFVLFFBQU87QUFDckMsYUFBUyxFQUFFO0FBQ1gsZ0JBQVksSUFBSTtBQUNoQixRQUFJLEVBQUUsU0FBUyxVQUFVO0FBQ3ZCLFlBQU0saUJBQWlCLFlBQVksUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLE1BQU0sR0FBRyxHQUFHO0FBQzFFLGNBQVEsVUFBVSxTQUFTLEVBQUUsTUFBTSxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQ2xELG9CQUFjO0FBQ2QsZUFBUztBQUNULFVBQUksS0FBTSxPQUFNLHVCQUF1QixJQUFJLEdBQUc7QUFBQSxlQUNyQyxlQUFnQixPQUFNLDBCQUEwQixjQUFjLEdBQUc7QUFBQSxVQUNyRSxPQUFNLG9CQUFvQjtBQUMvQjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxTQUFTO0FBQ3RCLFlBQU0sUUFBUSxPQUFPLEtBQUssY0FBYztBQUN4QyxZQUFNLFNBQVMsT0FBTyxPQUFPLGNBQWM7QUFDM0MsVUFBSTtBQUNKLFVBQUksQ0FBQyxNQUFNO0FBQ1QsY0FBTSxRQUFRLE9BQU8sUUFBUSxRQUFRLEVBQUUsS0FBSyxJQUFJLEtBQUssT0FBTztBQUM1RCxnQkFBUSxPQUFPLElBQUk7QUFBQSxNQUNyQixPQUFPO0FBQ0wsZ0JBQVEsZUFBZSxLQUFLLFlBQVksQ0FBQyxNQUFNLG9CQUFvQixLQUFLLElBQUksSUFBSSxPQUFPO0FBQ3ZGLFlBQUksQ0FBQyxNQUFPLFFBQU8sTUFBTSxzQ0FBc0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxRQUFRO0FBQUEsTUFDeEY7QUFDQSxjQUFRLFVBQVUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3JDLG9CQUFjO0FBQ2QsZUFBUztBQUNULFlBQU0sT0FBTyxNQUFNLE9BQU8sUUFBUSxLQUFLLENBQUM7QUFDeEMsWUFBTSxrQkFBa0IsUUFBUSxLQUFLLEVBQUU7QUFDdkM7QUFBQSxJQUNGO0FBQ0EsUUFBSSxFQUFFLFNBQVMsVUFBVTtBQUN2Qix5QkFBbUIsSUFBSTtBQUN2QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxTQUFTO0FBQ3RCLFVBQUksQ0FBQyxLQUFNLFFBQU8sa0JBQWtCLElBQUk7QUFDeEMsWUFBTSxTQUFTLEtBQUssWUFBWTtBQUNoQyxZQUFNLFFBQVEsQ0FBQyxHQUFHLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxNQUFNO0FBQ3pELFVBQUksQ0FBQyxNQUFNLFNBQVMsTUFBTSxFQUFHLFFBQU8sTUFBTSxVQUFVLFlBQVksQ0FBQyxpQkFBYyxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUc7QUFDakcscUJBQWUsTUFBTTtBQUNyQjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsT0FBTztBQUNYLFlBQU0sT0FBTyxNQUFNLE9BQU8sS0FBSyxFQUFFLElBQUk7QUFDckMsVUFBSSxDQUFDLEtBQU0sUUFBTyxNQUFNLHdCQUF3QixFQUFFLElBQUksRUFBRTtBQUN4RCxjQUFRLFVBQVUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDNUQsV0FBSztBQUFBO0FBQUEsRUFBMkMsSUFBSSxFQUFFO0FBQ3REO0FBQUEsSUFDRjtBQUNBLFFBQUksRUFBRSxTQUFTO0FBQ2IsWUFBTSxPQUFPLE1BQU1BLE1BQUssU0FBUyxLQUFLLEVBQUUsTUFBTSxJQUFJO0FBQ2xELFVBQUksQ0FBQyxLQUFNLFFBQU8sTUFBTSwwQkFBMEIsRUFBRSxJQUFJLEVBQUU7QUFDMUQsV0FBSyxJQUFJO0FBQ1Q7QUFBQSxJQUNGO0FBQ0EsUUFBSSxFQUFFLFNBQVMsVUFBVyxRQUFPLGlCQUFpQjtBQUNsRCxRQUFJLEVBQUUsU0FBUyxpQkFBaUI7QUFDOUIsWUFBTSxRQUFRLEtBQUssTUFBTSwyQ0FBMkM7QUFDcEUsWUFBTSxXQUFXLFFBQVEsQ0FBQyxHQUFHLEtBQUs7QUFDbEMsWUFBTSxhQUFhLFFBQVEsQ0FBQyxJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBSSxtQkFBbUI7QUFDdEUsVUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLFVBQVUsVUFBVSxLQUFLLGFBQWEsS0FBSyxhQUFhLElBQUssUUFBTyxNQUFNLG1EQUFtRDtBQUN0SixVQUFJLENBQUNBLE1BQUssaUJBQWlCLENBQUNFLFFBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTRixNQUFLLGlCQUFpQixFQUFFLGNBQWMsS0FBSyxHQUFHO0FBQ3RHLDJCQUFtQixFQUFFLFVBQVUsV0FBVyxDQUFDO0FBQzNDLGtDQUEwQixJQUFJO0FBQzlCO0FBQUEsTUFDRjtBQUNBLFdBQUsseUJBQXlCO0FBQzlCLFdBQUssb0RBQW9ELFFBQVE7QUFBQTtBQUFBLCtMQUFvTSxVQUFVLHVjQUF1YztBQUN0dEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxFQUFFLFNBQVMsU0FBUztBQUN0QixVQUFJLENBQUMsS0FBTSxRQUFPLGtCQUFrQixJQUFJO0FBQ3hDLFlBQU0sUUFBUUUsUUFBTyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSTtBQUNoRCxZQUFNLFFBQVEsQ0FBQyxTQUFTLEtBQUssU0FBUyxHQUFHLElBQUksV0FBVyxNQUFNRixNQUFLLFNBQVMsSUFBSTtBQUNoRixZQUFNLFNBQVMsU0FBUyxRQUNwQixDQUFDLElBQ0RFLFFBQ0csSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQ3hDLE9BQU8sQ0FBQyxDQUFDLEtBQUssTUFBTSxTQUFTLENBQUMsRUFDOUIsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqQyxZQUFNLE9BQU8sU0FBUyxTQUFTLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDNUMsVUFBSSxDQUFDLEtBQU0sUUFBTyxNQUFNLCtCQUErQixJQUFJLEdBQUc7QUFDOUQsVUFBSSxLQUFLLGNBQWMsTUFBTyxRQUFPLE1BQU0sT0FBTyxLQUFLLE9BQU8sK0JBQStCLEtBQUssSUFBSSxFQUFFO0FBQ3hHLGNBQVEsVUFBVSxnQkFBZ0IsRUFBRSxNQUFNQyxPQUFNLEVBQUUsTUFBTSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDeEUsZUFBUyxJQUFJO0FBQ2IsWUFBTSxRQUFRLGdCQUFnQixLQUFLLElBQUksdUNBQXVDLGdCQUFnQixLQUFLLElBQUksRUFBRTtBQUN6RztBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxVQUFVO0FBQ3ZCLFVBQUksQ0FBQyxjQUFjLEVBQUcsUUFBTyxNQUFNLEdBQUdBLE9BQU0sRUFBRSxJQUFJLGtDQUFrQztBQUNwRixVQUFJLENBQUMsS0FBTSxRQUFPLG1CQUFtQixJQUFJO0FBQ3pDLFlBQU0sUUFBUSxLQUFLLFlBQVk7QUFDL0IsVUFBSSxVQUFVLFVBQVcsUUFBTyxpQkFBaUIsSUFBSTtBQUNyRCxVQUFJLENBQUMsY0FBYyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsS0FBSyxFQUFHLFFBQU8sTUFBTSw4Q0FBOEM7QUFDNUcsYUFBTyxpQkFBaUIsS0FBSztBQUFBLElBQy9CO0FBQ0EsUUFBSSxFQUFFLFNBQVMsVUFBVTtBQUN2QixVQUFJLGFBQWEsWUFBWSxHQUFHLEVBQUcsUUFBTyxNQUFNLCtEQUE0RDtBQUM1RyxZQUFNLFNBQVMsTUFBTSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sSUFBSTtBQUMxRCxVQUFJLFVBQVUsQ0FBQyxhQUFhRixVQUFTLE1BQU0sRUFBRyxRQUFPLE1BQU0sU0FBU0EsUUFBTyx3QkFBd0I7QUFDbkcsWUFBTSxXQUFXLFNBQVMsUUFBUSxNQUFNLEtBQUssRUFBRSxLQUFLO0FBQ3BELFlBQU0sU0FBUyxNQUFNLFVBQVU7QUFDL0IsVUFBSSxPQUFPLEdBQUksUUFBTyxNQUFNLFVBQVUsU0FBUyxRQUFRLE1BQU0sS0FBSyxFQUFFLDhCQUEyQjtBQUMvRixhQUFPLE1BQU0sa0JBQWtCLE9BQU8sT0FBTyxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUU7QUFBQSxJQUM5RDtBQUNBLFFBQUksRUFBRSxTQUFTLFVBQVcsUUFBTyxpQkFBaUI7QUFDbEQsUUFBSSxFQUFFLFNBQVMsVUFBVyxRQUFPLGtCQUFrQjtBQUNuRCxRQUFJLEVBQUUsU0FBUyxPQUFRLFFBQU8sUUFBUSxNQUFNO0FBQzVDLFFBQUksRUFBRSxTQUFTLE1BQU8sUUFBTyxnQkFBZ0IsSUFBSTtBQUNqRCxRQUFJLEVBQUUsU0FBUyxVQUFXLFFBQU8sb0JBQW9CLElBQUk7QUFDekQsUUFBSSxFQUFFLFNBQVMsVUFBVTtBQUN2QixZQUFNLGdCQUFnQjtBQUN0QixhQUFPLG1CQUFtQixJQUFJO0FBQUEsSUFDaEM7QUFDQSxRQUFJLEVBQUUsU0FBUyxVQUFVO0FBQ3ZCLHlCQUFtQixJQUFJO0FBQ3ZCLHNCQUFnQixZQUFZLENBQUM7QUFDN0I7QUFBQSxJQUNGO0FBQ0EsUUFBSSxFQUFFLFNBQVMsVUFBVyxRQUFPLGlCQUFpQjtBQUNsRCxRQUFJLEVBQUUsU0FBUyxPQUFPO0FBQ3BCLFlBQU0sV0FBV0QsTUFBSyxTQUFTQSxNQUFLLE1BQU0sc0JBQW1CLFlBQVlBLE1BQUssSUFBSSxDQUFDLEtBQUs7QUFDeEYsYUFBTyxNQUFNLEdBQUdBLE1BQUssVUFBVSxHQUFHLFFBQVEsRUFBRTtBQUFBLElBQzlDO0FBQ0EsUUFBSSxFQUFFLFNBQVMsVUFBVTtBQUN2QixhQUFPLGFBQWE7QUFBQSxRQUNsQixPQUFPO0FBQUEsUUFDUCxNQUFNLE9BQU8sS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxFQUFFLGFBQWEsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUFBLE1BQ3hGLENBQUM7QUFBQSxJQUNIO0FBQ0EsUUFBSSxFQUFFLFNBQVMsWUFBWTtBQUN6QixhQUFPLGFBQWE7QUFBQSxRQUNsQixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsVUFDSixHQUFHLFNBQVMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLE1BQU0sTUFBTSxVQUFVLEVBQUU7QUFBQSxVQUNwRixHQUFHQSxNQUFLLFNBQVMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sSUFBSSxhQUFhLE1BQU0sSUFBSSxPQUFPLEVBQUU7QUFBQSxRQUMxRztBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFDQSxRQUFJLEVBQUUsU0FBUyxTQUFTO0FBQ3RCLFlBQU0sT0FBTyxNQUFNLGNBQWMsRUFBRSxLQUFLQSxNQUFLLEtBQUssTUFBTUEsTUFBSyxLQUFLLENBQUMsRUFBRSxNQUFNLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBRSxFQUFFO0FBQzVHLFlBQU0sRUFBRSxPQUFPLFNBQVMsSUFBSSxjQUFjO0FBQUEsUUFDeEMsS0FBS0EsTUFBSztBQUFBLFFBQ1Y7QUFBQSxRQUNBO0FBQUEsUUFDQSxRQUFRQSxNQUFLO0FBQUEsUUFDYixTQUFTQSxNQUFLO0FBQUEsUUFDZCxRQUFRQSxNQUFLO0FBQUEsUUFDYixRQUFRQSxNQUFLO0FBQUEsTUFDZixDQUFDO0FBQ0QsWUFBTSxXQUFXLElBQUksTUFBTSxFQUFFO0FBQzdCLG1CQUFhO0FBQUEsUUFDWCxPQUFPLFFBQVEsV0FBVyxjQUFXLFFBQVEsb0JBQW9CLEVBQUU7QUFBQSxRQUNuRSxNQUFNO0FBQUEsVUFDSixHQUFHLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLEVBQUUsWUFBWSxNQUFNLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxVQUFVLEVBQUU7QUFBQSxVQUM5RixHQUFHLEtBQUssTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sRUFBRSxhQUFhLE1BQU0sR0FBRyxFQUFFLE1BQU0sU0FBTSxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUFBLFVBQ25ILEdBQUcsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsSUFBSSxHQUFHLE1BQU0sRUFBRSxPQUFPLE1BQU0sU0FBUyxFQUFFO0FBQUEsUUFDOUY7QUFBQSxNQUNGLENBQUM7QUFDRDtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxTQUFTLEVBQUUsU0FBUyxVQUFVO0FBQzNDLFVBQUksS0FBSyxFQUFHLFFBQU8sTUFBTSw0Q0FBNEM7QUFDckUsVUFBSSxFQUFFLFNBQVMsVUFBVTtBQUN2QixZQUFJLENBQUMsS0FBSyxRQUFTLFFBQU8sTUFBTSw4QkFBOEI7QUFDOUQsNkJBQXFCLElBQUk7QUFDekI7QUFBQSxNQUNGO0FBQ0EsV0FBSyxVQUFVO0FBQ2YsV0FBSyxZQUFZLENBQUM7QUFDbEIsV0FBSyxZQUFZO0FBQ2pCLFdBQUssYUFBYTtBQUNsQixhQUFPLE1BQU07QUFDYix1QkFBaUIsSUFBSTtBQUNyQixnQkFBVSxDQUFDLENBQUM7QUFDWixjQUFRLENBQUMsQ0FBQztBQUNWLGVBQVNJLGNBQWEsQ0FBQztBQUN2QixnQkFBVSxjQUFjLENBQUM7QUFDekIsb0JBQWMsY0FBYztBQUM1QixlQUFTO0FBQ1QsWUFBTSxhQUFhO0FBQ25CO0FBQUEsSUFDRjtBQUNBLFFBQUksRUFBRSxTQUFTLFVBQVU7QUFDdkIsVUFBSSxLQUFLLEVBQUcsUUFBTyxNQUFNLDRDQUE0QztBQUNyRSxVQUFJLFlBQVksUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFHLFFBQU8sTUFBTSx1QkFBdUI7QUFDN0Usb0JBQWMsTUFBTTtBQUNwQjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEVBQUUsU0FBUyxTQUFTO0FBQ3RCLFVBQUksS0FBSyxFQUFHLFFBQU8sTUFBTSw0Q0FBNEM7QUFDckUsY0FBUSxVQUFVLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsZUFBUztBQUNULFlBQU0sc0JBQXNCO0FBQzVCO0FBQUEsSUFDRjtBQUNBLFFBQUksRUFBRSxTQUFTLFVBQVcsUUFBTyxrQkFBa0IsSUFBSTtBQUN2RCxRQUFJLEVBQUUsU0FBUyxRQUFRO0FBQ3JCLFlBQU0sUUFBUSxRQUFRO0FBQ3RCLFlBQU0sVUFBVSxPQUFPLFFBQVEsTUFBTSxZQUFZO0FBQ2pELFVBQUksUUFBUSxXQUFXLEVBQUcsUUFBTyxNQUFNLGNBQWM7QUFDckQsWUFBTSxTQUFTLENBQUMsWUFDZCxPQUFPLFFBQVEsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTUksTUFBSyxNQUFNLE1BQU0sYUFBYSxVQUFVTixTQUFRLElBQUksR0FBR00sTUFBSyxHQUFHLENBQUM7QUFDOUcsWUFBTSxRQUFRLE9BQU8sTUFBTSxZQUFZO0FBQ3ZDLFlBQU0sU0FBUyxPQUFPLE1BQU0sa0JBQWtCO0FBQzlDLFlBQU0sRUFBRSxjQUFjLGlCQUFpQixJQUFJLE1BQU07QUFDakQsWUFBTSxPQUFPLElBQUksTUFBTSxRQUFRLENBQUMsQ0FBQyxlQUFZLGFBQWEsZUFBZSxDQUFDLFlBQVMsaUJBQWlCLGVBQWUsQ0FBQztBQUNwSCxZQUFNLFFBQVEsU0FBUyxPQUFVLEdBQUcsSUFBSSwrQkFBNEIsT0FBTyxRQUFRLENBQUMsQ0FBQyxLQUFLLElBQUk7QUFDOUY7QUFBQSxJQUNGO0FBQ0EsUUFBSSxFQUFFLFNBQVMsVUFBVTtBQUN2QixZQUFNLE9BQU9DLE9BQUssS0FBSyxlQUFlLEtBQUssSUFBSSxDQUFDLEtBQUs7QUFDckQsWUFBTUMsWUFBVSxNQUFNLHFCQUFxQixRQUFRLEVBQUUsWUFBWSxFQUFFLE9BQU8scUJBQWtCLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDcEcsWUFBTSxlQUFlLElBQUksRUFBRTtBQUMzQjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsaUJBQWUsdUJBQXVCO0FBQ3BDLFVBQU0sU0FBUyxNQUFNLGFBQWEsRUFBRSxNQUFNLE9BQU8sRUFBRSxXQUFXLE9BQU8sT0FBTyxLQUFLLEVBQUU7QUFDbkYscUJBQWlCO0FBQUEsTUFDZixFQUFFLElBQUksVUFBVSxPQUFPLG9DQUFpQyxXQUFXLE9BQU8sV0FBVyxPQUFPLE9BQU8sTUFBTTtBQUFBLElBQzNHLENBQUM7QUFBQSxFQUNIO0FBRUEsV0FBUyxtQkFBbUI7QUFDMUIsd0JBQW9CLElBQUk7QUFDeEIseUJBQXFCO0FBQUEsRUFDdkI7QUFFQSxXQUFTLGdCQUFnQixVQUFVO0FBQ2pDLFFBQUksU0FBUyxPQUFPLFNBQVU7QUFDOUIsd0JBQW9CLEtBQUs7QUFDekIsVUFBTSw2Q0FBNkM7QUFDbkQsa0JBQWMsRUFDWCxLQUFLLE9BQU8sRUFBRSxNQUFNLE1BQU07QUFDekIsTUFBQVYsTUFBSyxZQUFZLENBQUMsR0FBRyxvQkFBSSxJQUFJLENBQUMsR0FBR0EsTUFBSyxXQUFXLE9BQU8sQ0FBQyxDQUFDO0FBQzFELFlBQU0sUUFBUSxNQUFNLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxJQUFJO0FBQ3hELFlBQU0sU0FBUyxNQUFNLGdCQUFnQixLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsV0FBVyxNQUFNLFNBQVMsV0FBVyxFQUFFO0FBQ3hHLE1BQUFBLE1BQUssU0FBUyxDQUFDLEdBQUdBLE1BQUssT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLGFBQWEsT0FBTyxHQUFHLEdBQUcsS0FBSztBQUM3RSxlQUFTO0FBQ1QsWUFBTSxnQkFBZ0IsU0FBUyxzQkFBc0IsU0FBTSxNQUFNLE1BQU0sa0NBQWtDO0FBQUEsSUFDM0csQ0FBQyxFQUNBLE1BQU0sQ0FBQyxRQUFRLE1BQU0sbUJBQW1CLE9BQU8sSUFBSSxXQUFXLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUFBLEVBQ3hGO0FBRUEsaUJBQWUsbUJBQW1CLFVBQVU7QUFDMUMsUUFBSSxTQUFTLE9BQU8sU0FBVTtBQUM5QixVQUFNLFFBQVEsS0FBSztBQUNuQixRQUFJLENBQUMsU0FBUyxNQUFNLE9BQU8sU0FBUyxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxLQUFNO0FBQ3RFLFdBQUssZ0JBQWdCLEVBQUUsSUFBSSxTQUFTLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUN2RCxhQUFPLE1BQU0sOEJBQThCLFNBQVMsS0FBSyxtQ0FBbUM7QUFBQSxJQUM5RjtBQUNBLFNBQUssZ0JBQWdCO0FBQ3JCLFVBQU0saUJBQWlCLEVBQUUsTUFBTSxNQUFNO0FBQUEsSUFBQyxDQUFDO0FBQ3ZDLElBQUFBLE1BQUssWUFBWUEsTUFBSyxVQUFVLE9BQU8sQ0FBQyxNQUFNLE1BQU0sT0FBTztBQUMzRCxJQUFBQSxNQUFLLFNBQVNBLE1BQUssT0FBTyxJQUFJLENBQUMsTUFBTyxFQUFFLGFBQWEsVUFBVSxFQUFFLEdBQUcsR0FBRyxXQUFXLE1BQU0sSUFBSSxDQUFFO0FBQzlGLFFBQUlHLE9BQU0sRUFBRSxhQUFhLFFBQVMsVUFBU0MsY0FBYSxDQUFDO0FBQ3pELHlCQUFxQjtBQUNyQixVQUFNLDJCQUEyQjtBQUFBLEVBQ25DO0FBRUEsV0FBUyxnQkFBZ0IsWUFBWTtBQUNuQyxxQkFBaUIsSUFBSTtBQUNyQixpQkFBYSxFQUFFLE9BQU8sY0FBYyxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQ3BELEtBQUssaUJBQWlCLEVBQ3RCLFFBQVEsTUFBTSxpQkFBaUIsS0FBSyxDQUFDO0FBQUEsRUFDMUM7QUFFQSxXQUFTLFlBQVksTUFBTTtBQUN6QixVQUFNLE9BQU9PLFNBQVE7QUFDckIsV0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFJLEtBQUssUUFBUSxNQUFNLEdBQUcsSUFBSTtBQUFBLEVBQzNEO0FBRUEsV0FBUyxtQkFBbUI7QUFDMUIsd0JBQW9CLElBQUk7QUFDeEIsdUJBQW1CLElBQUk7QUFDdkIsaUJBQWEsRUFBRSxPQUFPLGNBQWMsS0FBSyxDQUFDLEVBQ3ZDLEtBQUssQ0FBQyxVQUFVO0FBQ2YsWUFBTSxTQUFTLG9CQUFJLElBQUk7QUFDdkIsaUJBQVcsS0FBSyxPQUFPO0FBQ3JCLGNBQU0sUUFBUSxPQUFPLElBQUksRUFBRSxPQUFPLElBQUk7QUFDdEMsWUFBSSxDQUFDLE9BQU87QUFDVixpQkFBTyxJQUFJLEVBQUUsT0FBTyxNQUFNO0FBQUEsWUFDeEIsTUFBTSxFQUFFLE9BQU87QUFBQSxZQUNmLE1BQU0sWUFBWSxFQUFFLE9BQU8sSUFBSTtBQUFBLFlBQy9CLFFBQVE7QUFBQSxZQUNSLE9BQU87QUFBQSxZQUNQLFNBQVMsRUFBRSxPQUFPLFNBQVNYLE1BQUs7QUFBQSxVQUNsQyxDQUFDO0FBQUEsUUFDSCxPQUFPO0FBQ0wsZ0JBQU07QUFBQSxRQUNSO0FBQUEsTUFDRjtBQUNBLGtCQUFZLENBQUMsR0FBRyxPQUFPLE9BQU8sQ0FBQyxDQUFDO0FBQUEsSUFDbEMsQ0FBQyxFQUNBLFFBQVEsTUFBTSxtQkFBbUIsS0FBSyxDQUFDO0FBQUEsRUFDNUM7QUFFQSxpQkFBZSxjQUFjLEdBQUc7QUFDOUIsUUFBSSxFQUFFLFFBQVMsUUFBTyxNQUFNLDBEQUF1RDtBQUNuRixVQUFNLFFBQVEsS0FBSztBQUNuQixRQUFJLENBQUMsU0FBUyxNQUFNLFNBQVMsRUFBRSxRQUFRLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxLQUFNO0FBQ25FLFdBQUssbUJBQW1CLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxLQUFLLElBQUksRUFBRTtBQUN2RCxhQUFPLE1BQU0sMkJBQTJCLEVBQUUsSUFBSSxhQUFhLEVBQUUsS0FBSyxJQUFJLEVBQUUsVUFBVSxJQUFJLFlBQVksVUFBVSxFQUFFO0FBQUEsSUFDaEg7QUFDQSxTQUFLLG1CQUFtQjtBQUN4QixRQUFJO0FBQ0YsWUFBTSxrQkFBa0IsRUFBRSxJQUFJO0FBQzlCLGtCQUFZLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQztBQUMzRCxZQUFNLFdBQVcsRUFBRSxJQUFJLFNBQU0sRUFBRSxLQUFLLElBQUksRUFBRSxVQUFVLElBQUksWUFBWSxVQUFVLFVBQVU7QUFBQSxJQUMxRixTQUFTLEtBQUs7QUFDWixZQUFNLGtCQUFrQixPQUFPLElBQUksV0FBVyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0FBQUEsSUFDbkU7QUFBQSxFQUNGO0FBRUEsaUJBQWUsY0FBYyxNQUFNO0FBQ2pDLFFBQUksS0FBSyxFQUFHLFFBQU8sTUFBTSw0Q0FBNEM7QUFDckUsUUFBSTtBQUNGLFlBQU0sY0FBY0EsTUFBSztBQUN6QixZQUFNLE9BQU8sTUFBTUEsTUFBSyxRQUFRLEtBQUssT0FBTyxJQUFJO0FBQ2hELGtCQUFZLFNBQVMsRUFBRSxNQUFNLE1BQU07QUFBQSxNQUFDLENBQUM7QUFDckMsY0FBUSxNQUFNLEtBQUssR0FBRztBQUN0QixhQUFPLE9BQU9BLE9BQU0sSUFBSTtBQUN4QixNQUFBQSxNQUFLLElBQUksU0FBUyxLQUFLLElBQUk7QUFDM0IsY0FBUSxPQUFPLE1BQU0sb0JBQWlCLEtBQUssS0FBSyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTTtBQUN0RSxXQUFLLElBQUksV0FBVztBQUNwQixvQkFBYyxLQUFLLElBQUksS0FBSyxDQUFDO0FBQzdCLGdCQUFVLENBQUMsQ0FBQztBQUNaLGtCQUFZLENBQUMsQ0FBQztBQUNkLFlBQU0sY0FBYyxJQUFJO0FBQ3hCLFlBQU0sZUFBZSxLQUFLLFVBQVUsRUFBRTtBQUFBLElBQ3hDLFNBQVMsS0FBSztBQUNaLFlBQU0sa0JBQWtCLE9BQU8sSUFBSSxXQUFXLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFBQSxJQUNuRTtBQUFBLEVBQ0Y7QUFFQSxpQkFBZSxrQkFBa0IsTUFBTTtBQUNyQyxVQUFNLFVBQVUsS0FBSyxTQUFTLE9BQU8sS0FBSyxPQUFPO0FBQ2pELFFBQUksV0FBVyxLQUFLLEVBQUcsUUFBTyxNQUFNLDRDQUE0QztBQUNoRixVQUFNLFFBQVEsS0FBSztBQUNuQixRQUFJLENBQUMsU0FBUyxNQUFNLFNBQVMsS0FBSyxRQUFRLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxLQUFNO0FBQ3RFLFdBQUssWUFBWSxFQUFFLE1BQU0sS0FBSyxNQUFNLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDbkQsYUFBTyxNQUFNLDJCQUEyQixLQUFLLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQUEsSUFDcEU7QUFDQSxTQUFLLFlBQVk7QUFDakIsUUFBSSxTQUFTO0FBQ1gsVUFBSSxNQUFNLDRCQUE0QixFQUFHLGlCQUFnQixZQUFZLENBQUM7QUFDdEU7QUFBQSxJQUNGO0FBQ0EsUUFBSTtBQUNGLFlBQU0sY0FBYyxLQUFLLElBQUk7QUFDN0Isc0JBQWdCLFlBQVksQ0FBQztBQUM3QixZQUFNLGlCQUFpQjtBQUFBLElBQ3pCLFNBQVMsS0FBSztBQUNaLFlBQU0sa0JBQWtCLE9BQU8sSUFBSSxXQUFXLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFBQSxJQUNuRTtBQUFBLEVBQ0Y7QUFFQSxpQkFBZSxjQUFjLE1BQU07QUFDakMsdUJBQW1CLEtBQUs7QUFDeEIsd0JBQW9CLEtBQUs7QUFDekIsUUFBSSxLQUFLLE9BQU8sU0FBU0EsTUFBSyxLQUFNLFFBQU8sY0FBYyxJQUFJO0FBQzdELFFBQUk7QUFDRixZQUFNLEVBQUUsUUFBUSxPQUFPLElBQUksTUFBTSxZQUFZLEtBQUssSUFBSTtBQUN0RCxXQUFLLFVBQVUsWUFBWSxFQUFFLE1BQU0sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUN0RCxXQUFLLFlBQVksQ0FBQyxHQUFHLE1BQU07QUFDM0IsV0FBSyxZQUFZLE9BQU87QUFDeEIsV0FBSyxhQUFhO0FBQ2xCLGFBQU8sUUFBUSxNQUFNO0FBQ3JCLHVCQUFpQixJQUFJO0FBQ3JCLGVBQVM7QUFDVCxZQUFNLGVBQWVFLFFBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLFFBQVEsRUFBRSxTQUFTLEVBQUUsY0FBYyxLQUFLO0FBQzNGLFlBQU0sV0FBVyxRQUFRLEVBQUUsVUFDckIsZ0JBQWdCLFdBQVcsUUFBUSxFQUFFLE9BQU9GLE1BQUssU0FBUztBQUNoRSxVQUFJLFVBQVU7QUFDWixpQkFBUyxRQUFRO0FBQUEsTUFDbkIsT0FBTztBQUNMLGlCQUFTSSxjQUFhLENBQUM7QUFDdkIsWUFBSSxRQUFRLEVBQUUsTUFBTyxPQUFNLFNBQVMsUUFBUSxFQUFFLEtBQUssdUJBQXVCQSxjQUFhLEVBQUUsSUFBSSxFQUFFO0FBQUEsTUFDakc7QUFDQSxnQkFBVSxRQUFRLEVBQUUsV0FBVyxTQUFZLGNBQWMsSUFBSSxRQUFRLEVBQUUsTUFBTTtBQUM3RSxjQUFRLFlBQVksUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQyxHQUFHLElBQUksT0FBTyxVQUFVLEVBQUUsQ0FBQztBQUMxRixvQkFBYyxjQUFjO0FBQzVCLGdCQUFVLElBQUk7QUFDZCxZQUFNLGdCQUFhLEtBQUssS0FBSyxJQUFJLEtBQUssVUFBVSxJQUFJLFNBQVMsT0FBTyxTQUFNLFFBQVEsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUFBLElBQzlGLFNBQVMsS0FBSztBQUNaLFlBQU0sa0JBQWtCLE9BQU8sSUFBSSxXQUFXLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFBQSxJQUNuRTtBQUFBLEVBQ0Y7QUFFQSxXQUFTLG9CQUFvQjtBQUMzQixVQUFNLFVBQVUsS0FBSztBQUNyQixtQkFBZSxjQUFjLE9BQU8sQ0FBQztBQUNyQyx3QkFBb0IsSUFBSTtBQUN4QixpQkFBYSxDQUFDO0FBQUEsRUFDaEI7QUFFQSxXQUFTLGNBQWMsTUFBTTtBQUMzQixVQUFNLE9BQU8sb0JBQUksSUFBSTtBQUNyQixVQUFNLE1BQU0sQ0FBQztBQUNiLGVBQVcsU0FBUyxDQUFDLEdBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHO0FBQ3pELFVBQUksS0FBSyxJQUFJLE1BQU0sSUFBSSxFQUFHO0FBQzFCLFdBQUssSUFBSSxNQUFNLElBQUk7QUFDbkIsVUFBSSxLQUFLLEtBQUs7QUFBQSxJQUNoQjtBQUNBLFdBQU87QUFBQSxFQUNUO0FBRUEsaUJBQWUsZ0JBQWdCLE1BQU07QUFDbkMsaUJBQWEsSUFBSTtBQUNqQixRQUFJLFNBQVMsRUFBRyxRQUFPLGVBQWUsY0FBYyxLQUFLLENBQUMsQ0FBQztBQUMzRCxVQUFNLFVBQVUsTUFBTSxtQkFBbUIsSUFBSTtBQUM3QyxRQUFJLFNBQVMsRUFBRyxRQUFPLGVBQWUsY0FBYyxDQUFDLEdBQUcsS0FBSyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDNUUsVUFBTSxTQUFTLE1BQU0sa0JBQWtCO0FBQ3ZDLG1CQUFlLGNBQWMsQ0FBQyxHQUFHLEtBQUssR0FBRyxHQUFHLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUFBLEVBQ2xFO0FBRUEsaUJBQWUsY0FBYyxLQUFLO0FBQ2hDLFVBQU0sU0FBUyxhQUFhO0FBQzVCLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFVBQU0sRUFBRSxNQUFNLElBQUksWUFBWSxPQUFPLE9BQU8sS0FBSztBQUNqRCxVQUFNLGFBQWEsR0FBRyxNQUFNLE1BQU0sSUFBSSxNQUFNLFdBQVcsSUFBSSxTQUFTLE9BQU87QUFDM0UsUUFBSSxXQUFXLENBQUM7QUFDaEIsUUFBSSxVQUFVLENBQUM7QUFFZixRQUFJLElBQUksUUFBUSxVQUFVLElBQUksUUFBUSxRQUFRO0FBQzVDLFlBQU0sU0FBUyxNQUFNLFlBQVksS0FBSztBQUN0QyxpQkFBVyxPQUFPO0FBQ2xCLGdCQUFVLE9BQU87QUFBQSxJQUNuQjtBQUVBLFFBQUksY0FBYztBQUNsQixRQUFJLElBQUksUUFBUSxXQUFXO0FBQ3pCLFlBQU0sT0FBTyxNQUFNLFdBQVcsTUFBTSxPQUFPLEtBQUs7QUFDaEQsWUFBTSxPQUFPLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssSUFBSTtBQUNwRixZQUFNLGdCQUFnQjtBQUN0QixVQUFJLE9BQU87QUFDWCxVQUFJRCxPQUFNLEVBQUUsYUFBYSxRQUFTLFFBQU8sTUFBTSxrQkFBa0IsRUFBRSxNQUFNLE1BQU0sSUFBSTtBQUNuRixvQkFBYyxNQUFNLGNBQWMsRUFBRSxNQUFNLFdBQVdBLE9BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLE1BQU0sTUFBTTtBQUNyRixjQUFNLHlFQUFzRTtBQUM1RSxlQUFPLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssTUFBTSxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssUUFBSztBQUFBLE1BQ2hILENBQUM7QUFBQSxJQUNIO0FBRUEsVUFBTSxRQUFRLFVBQVUsVUFBVSxFQUFFLFFBQVEsT0FBTyxTQUFTLE1BQU0sSUFBSSxLQUFLLGFBQWEsVUFBVSxRQUFRLENBQUM7QUFDM0csWUFBUSxLQUFLO0FBQ2IsU0FBSyxhQUFhLEVBQUUsVUFBVSxNQUFNLElBQUksT0FBTyxNQUFNLE9BQU8sQ0FBQyxNQUFNLFNBQVMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFO0FBQ2hHLGFBQVM7QUFDVCxRQUFJLElBQUksUUFBUSxPQUFRLFVBQVMsV0FBVyxNQUFNLENBQUM7QUFFbkQsVUFBTSxjQUFjLFFBQVEsU0FBUyxpQkFBYyxRQUFRLE1BQU0sYUFBYTtBQUM5RSxRQUFJLElBQUksUUFBUSxPQUFRLE9BQU0sWUFBWSxVQUFVLHNCQUFzQixXQUFXLHNCQUFtQjtBQUFBLGFBQy9GLElBQUksUUFBUSxVQUFXLE9BQU0seUJBQXlCLFdBQVcsc0JBQW1CO0FBQUEsYUFDcEYsSUFBSSxRQUFRLE9BQVEsT0FBTSxZQUFZLFVBQVUsWUFBWSxXQUFXLHNCQUFtQjtBQUFBLFFBQzlGLE9BQU0sZ0RBQTZDO0FBQ3hELGtCQUFjLElBQUk7QUFDbEIsb0JBQWdCLElBQUk7QUFBQSxFQUN0QjtBQUVBLGlCQUFlLGFBQWE7QUFDMUIsVUFBTSxPQUFPLEtBQUs7QUFDbEIsUUFBSSxDQUFDLEtBQU07QUFDWCxVQUFNLEVBQUUsUUFBUSxJQUFJLE1BQU0sYUFBYSxLQUFLLEtBQUs7QUFDakQsWUFBUSxVQUFVLGVBQWUsRUFBRSxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUM7QUFDN0QsU0FBSyxhQUFhO0FBQ2xCLGFBQVM7QUFDVCxVQUFNLFFBQVEsU0FBUyxzQkFBbUIsUUFBUSxNQUFNLHFCQUFxQixlQUFlO0FBQUEsRUFDOUY7QUFFQSxXQUFTLFdBQVcsT0FBTztBQUN6QixXQUFPLHFCQUFxQixNQUFNLFdBQVcsTUFBTSxNQUFNO0FBQUEsTUFDdkQsYUFBYSxLQUFLO0FBQUEsTUFDbEIsUUFBUSxNQUFNLEVBQUUsS0FBSztBQUFBLElBQ3ZCLENBQUM7QUFBQSxFQUNIO0FBRUEsaUJBQWUsOEJBQThCO0FBQzNDLFVBQU0sVUFBVSxLQUFLO0FBQ3JCLFFBQUksQ0FBQyxTQUFTO0FBQ1osMkJBQXFCLEtBQUs7QUFDMUIsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJO0FBQ0YsWUFBTSxRQUFRLE1BQU07QUFDcEIsWUFBTSxjQUFjLFFBQVEsSUFBSTtBQUFBLElBQ2xDLFNBQVMsS0FBSztBQUNaLDJCQUFxQixLQUFLO0FBQzFCLFlBQU0sa0JBQWtCLE9BQU8sSUFBSSxXQUFXLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUU7QUFDakUsYUFBTztBQUFBLElBQ1Q7QUFDQSxTQUFLLFVBQVU7QUFDZixTQUFLLFlBQVksQ0FBQztBQUNsQixTQUFLLFlBQVk7QUFDakIsU0FBSyxhQUFhO0FBQ2xCLGNBQVUsQ0FBQyxDQUFDO0FBQ1osWUFBUSxDQUFDLENBQUM7QUFDVixhQUFTQyxjQUFhLENBQUM7QUFDdkIsY0FBVSxjQUFjLENBQUM7QUFDekIsa0JBQWMsY0FBYztBQUM1Qix5QkFBcUIsS0FBSztBQUMxQixhQUFTO0FBQ1QsVUFBTSxpQkFBaUI7QUFDdkIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFdBQVcsTUFDZixlQUFlLEtBQUssdUJBQXVCLEtBQUssZ0JBQWdCLEtBQUssZUFBZSxLQUFLLGdCQUFnQixLQUFLLGtCQUFrQixLQUFLLGdCQUFnQixLQUFLLGlCQUFpQixLQUFLLGdCQUFnQixLQUFLLGFBQWEsS0FDbE4saUJBQWlCLEtBQUssaUJBQWlCLEtBQUssaUJBQWlCLEtBQzdELFVBQVUsTUFBTSxRQUFRLFdBQVcsTUFBTTtBQUszQyxRQUFNLGVBQWUsTUFBTSxTQUFTLEtBQUssQ0FBQyxlQUFlO0FBRXpELFdBQVMsWUFBWSxPQUFPO0FBQzFCLFdBQU8sT0FBTyxNQUFNLEVBQUU7QUFBQSxFQUN4QjtBQUVBLFdBQVMsYUFBYSxPQUFPO0FBQzNCLFFBQUksQ0FBQyxPQUFPLFFBQVEsTUFBTSxFQUFFLEVBQUc7QUFDL0IsWUFBUSxVQUFVLGlCQUFpQixFQUFFLFNBQVMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN6RCxRQUFJLGNBQWMsTUFBTSxNQUFNLEdBQUksa0JBQWlCLElBQUk7QUFBQSxFQUN6RDtBQUVBLFdBQVMsYUFBYSxPQUFPO0FBQzNCLElBQUFKLE1BQUssT0FBTyxRQUFRLE1BQU0sRUFBRTtBQUM1QixRQUFJLGNBQWMsTUFBTSxNQUFNLEdBQUksa0JBQWlCLElBQUk7QUFBQSxFQUN6RDtBQUVBLFdBQVMsVUFBVSxPQUFPO0FBQ3hCLFFBQUksTUFBTSxXQUFXLFVBQVcsUUFBTyxNQUFNLFNBQVMsTUFBTSxFQUFFLGlCQUFpQjtBQUMvRSxVQUFNLFFBQVEsS0FBSztBQUNuQixRQUFJLENBQUMsU0FBUyxNQUFNLE9BQU8sTUFBTSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxLQUFNO0FBQ25FLFdBQUssZUFBZSxFQUFFLElBQUksTUFBTSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDbkQsYUFBTyxNQUFNLHlCQUF5QixNQUFNLGVBQWUsU0FBUyxNQUFNLEVBQUUsRUFBRSxHQUFHO0FBQUEsSUFDbkY7QUFDQSxTQUFLLGVBQWU7QUFDcEIsSUFBQUEsTUFBSyxPQUFPLEtBQUssTUFBTSxJQUFJLE1BQU07QUFBQSxFQUNuQztBQUVBLFFBQU0sZ0JBQWdCLE1BQU0sQ0FBQyxDQUFDRyxPQUFNLEVBQUU7QUFFdEMsV0FBUyxpQkFBaUIsTUFBTSxFQUFFLFlBQVksTUFBTSxJQUFJLENBQUMsR0FBRztBQUMxRCxZQUFRLFVBQVUsVUFBVSxFQUFFLElBQUksS0FBSyxDQUFDLENBQUM7QUFDekMsY0FBVSxJQUFJO0FBQ2QsUUFBSSxXQUFXO0FBQ2IsdUJBQWlCLElBQUk7QUFDckIsa0JBQVksRUFBRSxlQUFlLEtBQUssQ0FBQyxFQUFFLE1BQU0sTUFBTTtBQUFBLE1BQUMsQ0FBQztBQUFBLElBQ3JEO0FBQ0EsVUFBTSxXQUFXLFFBQVEsU0FBUyxHQUFHLFlBQVksMkJBQXdCLEVBQUUsRUFBRTtBQUFBLEVBQy9FO0FBRUEsUUFBTSxLQUFLUyxVQUFTLEVBQUUsU0FBUyxRQUFRLENBQUM7QUFDeEMsS0FBRyxLQUFLLE1BQU07QUFDZCxnQkFBYztBQUNkLFFBQU0sWUFBWSxPQUFPLEtBQUs7QUFDOUIsZ0JBQWM7QUFDZCxRQUFNLFlBQVlaLE1BQUssT0FBTyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxPQUFPLEVBQUUsRUFBRSxJQUFJLE9BQU8sRUFBRSxFQUFFLENBQUM7QUFDL0UsTUFBSSxnQkFBZ0IsR0FBRztBQUNyQixPQUFHLEtBQUssVUFBVTtBQUNsQixRQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsRUFBRyxJQUFHLE1BQU0sVUFBVTtBQUFBLEVBQzdDLE9BQU87QUFDTCxRQUFJLENBQUMsY0FBYyxLQUFLLENBQUMsY0FBYyxFQUFHLElBQUcsS0FBSyxPQUFPO0FBQ3pELFFBQUksVUFBVSxTQUFTLEVBQUcsSUFBRyxNQUFNLGVBQWUsRUFBRSxPQUFPLENBQUMsY0FBYyxHQUFHLFVBQVUsSUFBSSxDQUFDLE1BQU0sU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxRQUFRLE1BQU0sS0FBSyxDQUFDO0FBQ25KLFFBQUksVUFBVSxTQUFTLEVBQUcsSUFBRyxNQUFNLGVBQWUsRUFBRSxPQUFPLENBQUMsY0FBYyxHQUFHLFVBQVUsSUFBSSxDQUFDLE1BQU0sU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxRQUFRLE1BQU0sS0FBSyxDQUFDO0FBQ25KLFFBQUksS0FBSyw4QkFBOEIsQ0FBQyxjQUFjLEtBQUssQ0FBQyxjQUFjLEdBQUc7QUFDM0UsV0FBSyw2QkFBNkI7QUFDbEMsU0FBRyxNQUFNLE9BQU87QUFBQSxJQUNsQjtBQUFBLEVBQ0Y7QUFDQSxlQUFhLFNBQVMsS0FBSyxLQUFLLE1BQU0sTUFBTTtBQUM1QyxlQUFhO0FBQUEsSUFDWCxRQUFRLENBQUMsU0FBUyxNQUFNLFVBQVUsS0FBSyxNQUFNLElBQUksS0FBSyxXQUFXLElBQUksY0FBYyxZQUFZLEVBQUU7QUFBQSxFQUNuRyxDQUFDO0FBRUQsRUFBQWEsVUFBUyxDQUFDLFVBQVU7QUFDbEIsUUFBSSxHQUFHLEdBQUcsYUFBYSxLQUFLLE1BQU0sUUFBUSxVQUFVO0FBQ2xELFlBQU0sU0FBUyxHQUFHLFFBQVE7QUFDMUIsdUJBQWlCLFdBQVcsZUFBZSxPQUFPLE9BQU8sTUFBTSxTQUFTLE1BQU0sQ0FBQztBQUMvRSxnQkFBVSxJQUFJO0FBQ2QsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxHQUFHLEdBQUcsYUFBYSxLQUFLLE1BQU0sUUFBUSxNQUFNLFFBQVEsS0FBSztBQUMzRCxZQUFNLFFBQVEsR0FBRyxRQUFRLE1BQU0sZUFBZSxPQUFPLFVBQVUsS0FBSyxDQUFDLE1BQU0sU0FBUyxFQUFFLEVBQUUsT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUMzRyxVQUFJLE9BQU87QUFDVCxZQUFJLE1BQU0sV0FBVyxVQUFXLFdBQVUsS0FBSztBQUFBLFlBQzFDLGNBQWEsS0FBSztBQUFBLE1BQ3pCO0FBQ0EsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxHQUFHLEdBQUcsYUFBYSxLQUFLLE1BQU0sUUFBUSxVQUFVO0FBQ2xELFlBQU0sU0FBUyxHQUFHLFFBQVE7QUFDMUIsdUJBQWlCLFdBQVcsZUFBZSxPQUFPLE9BQU8sTUFBTSxTQUFTLE1BQU0sQ0FBQztBQUMvRSxnQkFBVSxJQUFJO0FBQ2Qsb0JBQWMsY0FBYztBQUM1QixZQUFNLGdCQUFnQjtBQUN0QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLEdBQUcsR0FBRyxhQUFhLEtBQUssTUFBTSxRQUFRLE1BQU0sUUFBUSxLQUFLO0FBQzNELFlBQU0sU0FBUyxHQUFHLFFBQVE7QUFDMUIsWUFBTSxRQUFRLFdBQVcsZUFBZSxPQUFPLE9BQU8sSUFBSSxPQUFPLE1BQU0sU0FBUyxNQUFNLENBQUM7QUFDdkYsVUFBSSxPQUFPO0FBQ1QsWUFBSSxDQUFDLFVBQVUsU0FBUyxFQUFFLFNBQVMsTUFBTSxNQUFNLEVBQUcsYUFBWSxLQUFLO0FBQUEsWUFDOUQsY0FBYSxLQUFLO0FBQUEsTUFDekI7QUFDQSxZQUFNLGdCQUFnQjtBQUN0QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLE1BQU0sUUFBUSxZQUFZLEtBQUssS0FBSyxDQUFDLFNBQVMsR0FBRztBQUNuRCxnQkFBVTtBQUNWLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxLQUFLO0FBQ25DLFlBQU0sTUFBTSxLQUFLLElBQUk7QUFDckIsVUFBSSxNQUFNLEtBQUssU0FBUyxNQUFNO0FBQzVCLFFBQUFiLE1BQUssT0FBTyxRQUFRO0FBQ3BCLFlBQUksYUFBYTtBQUNqQixnQkFBUSxLQUFLLENBQUM7QUFBQSxNQUNoQixPQUFPO0FBQ0wsYUFBSyxTQUFTO0FBQ2QsY0FBTSxVQUFVQSxNQUFLLE9BQU8sUUFBUTtBQUNwQyxjQUFNLFVBQVUsR0FBRyxPQUFPLElBQUksWUFBWSxJQUFJLFVBQVUsUUFBUSwrQ0FBNEMsWUFBWSxJQUFJLE9BQU8sTUFBTSxLQUFLLHNCQUFzQjtBQUFBLE1BQ3RLO0FBQ0EsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLEtBQUs7QUFDbkMsaUJBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQixZQUFNLGdCQUFnQjtBQUN0QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLE1BQU0sUUFBUSxNQUFNLFFBQVEsT0FBTyxLQUFLLE1BQU0sVUFBVSxDQUFDLFNBQVMsR0FBRztBQUN2RSxVQUFJLEtBQUssRUFBRyxPQUFNLDRDQUE0QztBQUFBLGVBQ3JELFlBQVksUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFHLE9BQU0sdUJBQXVCO0FBQUEsVUFDdEUsZUFBYyxNQUFNO0FBQ3pCLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxPQUFPLEtBQUssTUFBTSxVQUFVLENBQUMsU0FBUyxHQUFHO0FBQ3ZFLHlCQUFtQixJQUFJO0FBQ3ZCLHNCQUFnQixZQUFZLENBQUM7QUFDN0IsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLE9BQU8sS0FBSyxNQUFNLFVBQVUsQ0FBQyxTQUFTLEdBQUc7QUFDdkUsd0JBQWtCLElBQUk7QUFDdEIsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLE9BQU8sS0FBSyxNQUFNLFVBQVUsQ0FBQyxTQUFTLEdBQUc7QUFDdkUsdUJBQWlCO0FBQ2pCLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxPQUFPLEtBQUssTUFBTSxVQUFVLENBQUMsU0FBUyxHQUFHO0FBQ3ZFLFVBQUksQ0FBQyxjQUFjLEVBQUcsT0FBTSxHQUFHRyxPQUFNLEVBQUUsSUFBSSxrQ0FBa0M7QUFBQSxXQUN4RTtBQUNILGNBQU0sUUFBUSxDQUFDLE1BQU0sT0FBTyxVQUFVLFFBQVEsS0FBSztBQUNuRCxjQUFNLE9BQU8sT0FBTyxNQUFNLFFBQVEsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLE1BQU0sTUFBTTtBQUN2RSx5QkFBaUIsSUFBSTtBQUFBLE1BQ3ZCO0FBQ0EsWUFBTSxnQkFBZ0I7QUFDdEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxNQUFNLFFBQVEsTUFBTSxRQUFRLE9BQU8saUJBQWlCLEdBQUc7QUFDekQsdUJBQWlCLFVBQVUsSUFBSSxLQUFLLGVBQWUsTUFBTTtBQUN6RCxZQUFNLGdCQUFnQjtBQUN0QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLE1BQU0sUUFBUSxNQUFNLFFBQVEsT0FBTyxnQkFBZ0IsR0FBRztBQUN4RCxrQkFBWSxDQUFDLE9BQU8sSUFBSSxLQUFLLGNBQWMsTUFBTTtBQUNqRCxZQUFNLGdCQUFnQjtBQUN0QjtBQUFBLElBQ0Y7QUFDQSxRQUFJLE1BQU0sUUFBUSxNQUFNLFFBQVEsT0FBTyxnQkFBZ0IsR0FBRztBQUN4RCxZQUFNLFFBQVEsWUFBWSxJQUFJLEtBQUssY0FBYztBQUNqRCxxQkFBZSxJQUFJO0FBQ25CLHNCQUFnQixJQUFJO0FBQ3BCLFlBQU0sZ0JBQWdCO0FBQ3RCO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLE1BQU0sUUFBUSxPQUFPLEtBQUssY0FBYyxDQUFDLEtBQUssS0FBSyxLQUFLLE1BQU0sUUFBUTtBQUN0RixpQkFBVztBQUNYLFlBQU0sZ0JBQWdCO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFFRCxRQUFNLGFBQWEsQ0FBQyxNQUFPLElBQUksS0FBSyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssTUFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRTtBQUM5RSxRQUFNLFVBQVUsV0FBVyxLQUFLLElBQUksS0FBSyxJQUFJLEdBQUcsS0FBSyxPQUFPLEtBQUssSUFBSSxJQUFJLFVBQVUsS0FBSyxHQUFJLENBQUMsSUFBSSxDQUFDO0FBRWxHLFFBQU0sYUFBYSxNQUFNLEVBQUUsV0FBVyxHQUFHLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJO0FBQ2hFLFFBQU0sZUFBZSxlQUFlLFFBQVEsQ0FBQyxXQUFXLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUztBQUNuRixRQUFNLGtCQUFrQixDQUFDLGVBQ3JCLENBQUMsSUFDRCxTQUFTLElBQ1AsU0FBUyxFQUFFLFVBQ1gsWUFBWSxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssWUFBWSxFQUFFLFdBQVcsV0FBVyxZQUFZLENBQUMsQ0FBQztBQUV6RixRQUFNLFVBQVUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCO0FBQ3BELFFBQU0sWUFBWSxZQUFZLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEtBQUssQ0FBQyxTQUFTO0FBQ3RGLE1BQUksV0FBVztBQUNiLGNBQVUsR0FBRyxFQUFFLEtBQUssQ0FBQyxVQUFVO0FBQzdCLFVBQUksVUFBVSxTQUFTLEVBQUcsYUFBWSxLQUFLO0FBQUEsSUFDN0MsQ0FBQztBQUFBLEVBQ0g7QUFDQSxRQUFNLGVBQWUsWUFDakIsU0FBUyxFQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3pDLE9BQU8sQ0FBQyxDQUFDLEtBQUssTUFBTSxTQUFTLENBQUMsRUFDOUIsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUMxQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQ25CLENBQUM7QUFFTCxXQUFTLFNBQVMsR0FBRztBQUNuQixVQUFNLElBQUksTUFBTTtBQUNoQixVQUFNLEtBQUssRUFBRSxZQUFZLEdBQUc7QUFDNUIsVUFBTSxZQUFZLGFBQWEsQ0FBQztBQUNoQyxVQUFNLE9BQU9NLE9BQUtULE1BQUssS0FBSyxDQUFDO0FBQzdCLFFBQUksYUFBYWMsWUFBVyxJQUFJLEdBQUc7QUFDakMsWUFBTSxjQUFjLFdBQVcsRUFBRSxLQUFLLFVBQVU7QUFDaEQsV0FBSyxZQUFZLElBQUksYUFBYSxFQUFFLE1BQU0sTUFBTSxVQUFVLENBQUM7QUFDM0QsZUFBUyxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUksY0FBYyxHQUFHO0FBQUEsSUFDN0MsT0FBTztBQUNMLGVBQVMsRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHO0FBQUEsSUFDdkM7QUFDQSxpQkFBYSxDQUFDO0FBQUEsRUFDaEI7QUFFQSxRQUFNLFVBQVUsV0FBVyxJQUFJLGtCQUFrQixFQUFFLE9BQU8sTUFBTSxHQUFHLFNBQVMsaUJBQWlCLENBQUMsSUFBSTtBQUNsRyxRQUFNLGlCQUFpQixDQUFDLENBQUMsV0FBVyxRQUFRLFFBQVEsU0FBUyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVM7QUFFM0csUUFBTSxnQkFBZ0IsTUFBTSxZQUFZLFFBQVEsQ0FBQztBQUNqRCxRQUFNLGlCQUFpQixNQUFNO0FBQzNCLFVBQU0sU0FBUyxhQUFhO0FBQzVCLFFBQUksQ0FBQyxPQUFRLFFBQU8sQ0FBQztBQUNyQixVQUFNLEVBQUUsTUFBTSxNQUFNLElBQUksWUFBWSxRQUFRLEdBQUcsT0FBTyxLQUFLO0FBQzNELFVBQU0sSUFBSSxNQUFNO0FBQ2hCLFVBQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxNQUFNLElBQUksU0FBUyxPQUFPO0FBQ3JELFVBQU0sT0FBTyxDQUFDO0FBQ2QsUUFBSSxJQUFJLEVBQUcsTUFBSyxLQUFLLEVBQUUsS0FBSyxRQUFRLE9BQU8saUNBQWlDLE1BQU0scUNBQWtDLFVBQVUsWUFBWSxDQUFDO0FBQzNJLFNBQUssS0FBSztBQUFBLE1BQ1IsS0FBSztBQUFBLE1BQ0wsT0FBTyxJQUFJLElBQUksOEJBQThCO0FBQUEsTUFDN0MsTUFBTSxJQUFJLElBQUksd0RBQXFELDJDQUF3QyxJQUFJO0FBQUEsSUFDakgsQ0FBQztBQUNELFFBQUksSUFBSSxFQUFHLE1BQUssS0FBSyxFQUFFLEtBQUssUUFBUSxPQUFPLHFCQUFxQixNQUFNLDBCQUF1QixVQUFVLFlBQVksQ0FBQztBQUNwSCxTQUFLLEtBQUssRUFBRSxLQUFLLFdBQVcsT0FBTyw2QkFBNkIsTUFBTSxnREFBZ0QsQ0FBQztBQUN2SCxXQUFPO0FBQUEsRUFDVCxHQUFHO0FBRUgsUUFBTSxFQUFFLGFBQWEsTUFBTSxJQUFJLFFBQVE7QUFDdkMsUUFBTSxpQkFBaUJYLE9BQU0sRUFBRSxVQUFVLEtBQUssUUFBUSxFQUFFLG1CQUFtQixLQUFLLFFBQVEsRUFBRSxvQkFBb0JBLE9BQU0sRUFBRSxPQUNsSCxLQUFLLElBQUksS0FBSyxLQUFLLE1BQU8sUUFBUSxFQUFFLG1CQUFtQkEsT0FBTSxFQUFFLFVBQVcsR0FBRyxDQUFDLElBQzlFO0FBQ0osUUFBTSxnQkFBZ0I7QUFDdEIsUUFBTSxjQUFjLGNBQWMsSUFBSSxjQUFjLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxjQUFjLENBQUMsSUFBSTtBQUM1RixRQUFNLGtCQUFrQixHQUFHLEdBQUcsYUFBYSxJQUFJLEdBQUcsUUFBUSxJQUFJO0FBQzlELFFBQU0saUJBQWlCLG1CQUFtQixvQkFBb0IsZUFBZSxnQkFBZ0IsTUFBTSxTQUFTLE1BQU0sSUFBSTtBQUN0SCxRQUFNLGVBQWUsaUJBQWlCLGNBQWMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLGNBQWMsSUFBSTtBQUMzRixRQUFNLGNBQWMsZ0JBQWdCO0FBQ3BDLFFBQU0sa0JBQWtCLGNBQWMsVUFBVSxZQUFZLFdBQVcsWUFBWSxTQUFTLFNBQVMsS0FBSztBQUMxRyxRQUFNLG9CQUFvQixvQkFBb0IsZUFBZSxJQUFJLGNBQWMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLGtCQUFrQixjQUFjLEVBQUU7QUFDNUksUUFBTSxtQkFBbUIsaUJBQWlCLGtCQUFrQixHQUFHLG1CQUFtQixjQUFjLFFBQVEsZUFBZTtBQUN2SCxNQUFJLHFCQUFxQixrQkFBa0IsRUFBRyxzQkFBcUIsZ0JBQWdCO0FBQ25GLFFBQU0sY0FBYyxjQUFjLE1BQU0sa0JBQWtCLG1CQUFtQixlQUFlO0FBQzVGLGdCQUFjO0FBQ2QsUUFBTSxnQkFBZ0I7QUFDdEIsUUFBTSxjQUFjLGNBQWMsSUFBSSxPQUFPLElBQUksY0FBYyxDQUFDLElBQUk7QUFDcEUsUUFBTSxrQkFBa0IsR0FBRyxHQUFHLGFBQWEsSUFBSSxHQUFHLFFBQVEsSUFBSTtBQUM5RCxRQUFNLGlCQUFpQixtQkFBbUIsb0JBQW9CLGVBQWUsZ0JBQWdCLE1BQU0sU0FBUyxNQUFNLElBQUk7QUFDdEgsUUFBTSxlQUFlLGlCQUFpQixPQUFPLElBQUksY0FBYyxJQUFJO0FBQ25FLFFBQU0sY0FBYyxnQkFBZ0I7QUFDcEMsUUFBTSxrQkFBa0IsY0FDcEIsVUFBVSxDQUFDLFVBQVUsU0FBUyxFQUFFLFNBQVMsWUFBWSxNQUFNLElBQUksV0FBVyxTQUFTLEtBQ25GO0FBQ0osUUFBTSxvQkFBb0Isb0JBQW9CLGVBQzFDLElBQ0EsY0FBYyxVQUFVLENBQUMsTUFBTSxFQUFFLFFBQVEsa0JBQWtCLGNBQWMsRUFBRTtBQUMvRSxRQUFNLG1CQUFtQixpQkFBaUIsa0JBQWtCLEdBQUcsbUJBQW1CLGNBQWMsUUFBUSxlQUFlO0FBQ3ZILE1BQUkscUJBQXFCLGtCQUFrQixFQUFHLHNCQUFxQixnQkFBZ0I7QUFDbkYsUUFBTSxjQUFjLGNBQWMsTUFBTSxrQkFBa0IsbUJBQW1CLGVBQWU7QUFDNUYsUUFBTSxpQkFBaUJILE1BQUssUUFBUSxRQUFRO0FBQzVDLGFBQVc7QUFDWCxRQUFNLFVBQVUsVUFBVSxJQUFJQSxNQUFLLElBQUksT0FBTyxJQUFJO0FBRWxELE1BQUksS0FBSyxNQUFNLFFBQVE7QUFDckIsV0FBTyxnQkFBQU4sS0FBQyxRQUFLLFVBQVUsVUFBVSxTQUFTLE1BQU0sUUFBUSxNQUFNLEdBQUc7QUFBQSxFQUNuRTtBQUVBLG1CQUFpQjtBQUVqQixRQUFNLGlCQUFpQixRQUFRLEVBQUU7QUFDakMsTUFBSSxjQUFjO0FBQ2xCLE1BQUksYUFBYTtBQUNmLFFBQUk7QUFBRSxvQkFBY00sTUFBSyxPQUFPLE9BQU8sWUFBWSxJQUFJLEVBQUUsTUFBTSxJQUFLLENBQUM7QUFBQSxJQUFFLFFBQVE7QUFBQSxJQUFDO0FBQUEsRUFDbEY7QUFDQSxRQUFNLGtCQUFrQixjQUFjO0FBQUEsSUFDcEMsRUFBRSxNQUFNLFFBQVEsTUFBTSxZQUFZLFFBQVE7QUFBQSxJQUMxQyxFQUFFLE1BQU0sYUFBYSxNQUFNLGFBQWEsVUFBVSxnQkFBZ0I7QUFBQSxFQUNwRSxJQUFJO0FBQ0osUUFBTSxhQUFhLG9CQUFvQixjQUFjLGdCQUFnQixXQUFXLElBQUk7QUFDcEYsUUFBTSxjQUFjLEtBQUssSUFBSSxHQUFHLFdBQVcsU0FBUyxXQUFXLENBQUM7QUFDaEUsUUFBTSxxQkFBcUIsZUFBZTtBQUMxQyxRQUFNLGVBQWUscUJBQXFCLFdBQVcsTUFBTSxXQUFXLElBQUksQ0FBQyxHQUFHLFdBQVcsTUFBTSxXQUFXLEdBQUcsR0FBRyxRQUFRLENBQUM7QUFDekgsUUFBTSxRQUFRLG1CQUFtQixJQUFJLHNCQUFzQixjQUFjLGNBQWMsWUFBWSxXQUFXLFlBQVksY0FBYyxRQUFRLFVBQVUsTUFBTSxPQUFPLElBQUk7QUFFM0ssU0FDRSxnQkFBQUwsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsUUFBUSxPQUFPLEdBQ25EO0FBQUEsZUFBVyxXQUFXLElBQ3JCLGdCQUFBRCxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxLQUFLLGFBQWEsRUFBRSxHQUM3QywwQkFBQUEsS0FBQyxjQUFXLFNBQVNPLFVBQVMsUUFBUSxPQUFPLEdBQUcsR0FDbEQsSUFDRSxnQkFBQU4sTUFBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEdBQUcsZUFBZSxTQUFTLEdBQ3JEO0FBQUEsc0JBQUFBO0FBQUEsUUFBQ29CO0FBQUEsUUFBQTtBQUFBLFVBQ0MsT0FBTyxFQUFFLFVBQVUsR0FBRyxLQUFLLGFBQWEsRUFBRTtBQUFBLFVBQzFDLFNBQVMsR0FBRyxHQUFHLE1BQU07QUFBQSxVQUNyQixjQUFjLE9BQU8sSUFBSSxNQUFNLE9BQU87QUFBQSxVQUN0QyxVQUFVLENBQUMsTUFBTSxTQUFTO0FBQzFCLHNCQUFVLENBQUMsQ0FBQyxNQUFNLFFBQVE7QUFHMUIsZ0JBQUksTUFBTSxZQUFZLFdBQVcsSUFBSSxlQUFnQixlQUFjLGNBQWM7QUFDakYsZ0JBQUksU0FBUyxLQUFLLGNBQWMsR0FBRztBQUdqQyxvQkFBTSxRQUFRLEtBQUssSUFBSSxnQkFBZ0IsV0FBVztBQUNsRCxvQkFBTSxVQUFVLEtBQUssSUFBSSxHQUFHLEtBQUssT0FBTyxNQUFNLGFBQWEsS0FBSyxLQUFLLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxDQUFDO0FBQzFGLDRCQUFjLENBQUMsTUFBTSxJQUFJLGNBQWM7QUFDdkMsd0JBQVUsUUFBUSxPQUFPO0FBQ3pCO0FBQUEsWUFDRjtBQUNBLHNCQUFVLElBQUk7QUFBQSxVQUNoQjtBQUFBLFVBQ0EsV0FBUztBQUFBLFVBRVI7QUFBQSwwQkFBYyxLQUNiLGdCQUFBckIsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FDeEIsMEJBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxPQUFPLFFBQVEsS0FBSyxHQUFJLG9CQUFLLFlBQVksZUFBZSxDQUFDLFVBQVUsZ0JBQWdCLElBQUksWUFBWSxVQUFVLCtCQUEyQixHQUNoSztBQUFBLFlBRUQsTUFBTSxJQUFJLENBQUMsTUFBTSxNQUFNLGdCQUFBQSxLQUFDLFdBQThCLE1BQVksU0FBUyxRQUFRLEtBQTlDLGNBQWMsQ0FBbUMsQ0FBRTtBQUFBLFlBQ3RGLENBQUMsZUFBZSxVQUFVLE1BQU0sUUFBUSxVQUFVLE1BQU0sTUFDdkQsZ0JBQUFBLEtBQUMsV0FBd0IsTUFBTSxFQUFFLE1BQU0sYUFBYSxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQUksS0FBL0QsV0FBa0U7QUFBQTtBQUFBO0FBQUEsTUFFbkY7QUFBQSxNQUNDLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxTQUFTLEtBQzFCLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsWUFBWSxLQUFLLEdBQUcsTUFBTSxHQUFHLE9BQU8sR0FBRyxlQUFlLE9BQU8sSUFBSSxPQUFPLEdBQUcsVUFBVSxFQUFFLEdBQzdHO0FBQUEsd0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxTQUFTLE1BQU0sS0FBSyxHQUFJLDBCQUFlO0FBQUEsUUFDN0QsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxRQUM3QixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFFBQVEsR0FBSSxzRUFBOEM7QUFBQSxTQUNsRjtBQUFBLE9BRUo7QUFBQSxJQUVDLE9BQU8sRUFBRSxTQUFTLEtBQ2pCLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsVUFBVSxVQUFVLEdBQUcsV0FBVyxFQUFFLEdBQzlELGlCQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFDaEIsZ0JBQUFDLE1BQUMsU0FBWSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ3pDO0FBQUEsc0JBQUFELEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUkscUJBQUs7QUFBQSxNQUNyQyxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLEdBQUcsUUFBUSxFQUFFLEdBQ25DLDBCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLFVBQVUsWUFBWSxPQUFPLE1BQU0sR0FBSSxZQUFFLFFBQVEsT0FBTyxHQUFHLEdBQUUsR0FDOUU7QUFBQSxNQUNDLE1BQU0sS0FBSyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sS0FBSyxLQUFLLEdBQUksMkNBQXdCO0FBQUEsU0FMdkUsQ0FNVixDQUNELEdBQ0g7QUFBQSxJQUdELGdCQUFnQixLQUNmLGdCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsU0FBUyxnQkFBZ0I7QUFBQSxRQUN6QixTQUFTLEdBQUcsR0FBRyxVQUFVLEtBQUssQ0FBQyxTQUFTO0FBQUEsUUFDeEMsVUFBVSxDQUFDLFlBQVk7QUFDckIsZ0JBQU0sVUFBVSxnQkFBZ0I7QUFDaEMsNkJBQW1CLElBQUk7QUFDdkIsZUFBSyw2QkFBNkI7QUFDbEMsa0JBQVEsUUFBUSxFQUFFLFFBQVEsQ0FBQztBQUFBLFFBQzdCO0FBQUEsUUFDQSxVQUFVLE1BQU07QUFDZCxnQkFBTSxVQUFVLGdCQUFnQjtBQUNoQyw2QkFBbUIsSUFBSTtBQUN2QixlQUFLLDZCQUE2QjtBQUNsQyxrQkFBUSxRQUFRLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFBQSxRQUNyQztBQUFBO0FBQUEsSUFDRjtBQUFBLElBR0QsQ0FBQyxlQUFlLENBQUMsZUFBZSxnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxJQUFJLFVBQVUsZUFBZSxPQUFPLFVBQVUsR0FBRyxVQUFVLEdBQUcsV0FBVyxXQUFXLFdBQVcsS0FBSyxPQUFPLElBQUksSUFBSSxHQUFHLEtBQUssYUFBYSxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxHQUM5TTtBQUFBLHNCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sR0FBRyxHQUFHLE9BQU8sS0FBSyxDQUFDLFNBQVMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLE9BQU8sSUFBSSxPQUFPLE1BQU0sS0FBSyxHQUFJLG9CQUFJO0FBQUEsTUFDakgsZ0JBQUFBLEtBQUMsVUFBSyxlQUFDO0FBQUEsTUFDTixRQUFRLEVBQUUsU0FDVCxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxVQUFVLFlBQVksS0FBSyxHQUFHLE9BQU8sRUFBRSxHQUNuRCwwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxJQUFJLEdBQUcsR0FBRyxPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLFNBQVMsTUFBTSxLQUFLLEdBQUksY0FBSSxRQUFRLEVBQUUsS0FBSyxLQUFJLEdBQ25KO0FBQUEsTUFFRixnQkFBQUE7QUFBQSxRQUFDO0FBQUE7QUFBQSxVQUNDLE9BQU87QUFBQSxVQUNQLGFBQVc7QUFBQSxVQUNYLFNBQVMsR0FBRyxHQUFHLE9BQU8sS0FBSyxDQUFDLFNBQVMsS0FBSyxDQUFDLGdCQUFnQjtBQUFBLFVBQzNELE9BQU8sTUFBTTtBQUFBLFVBQ2IsVUFBVSxDQUFDLE1BQU07QUFDZixrQkFBTSxZQUFZLHlCQUF5QixHQUFHO0FBQUEsY0FDNUMsYUFBYSxLQUFLO0FBQUEsY0FDbEIsUUFBUSxNQUFNLEVBQUUsS0FBSztBQUFBLFlBQ3ZCLENBQUM7QUFDRCxxQkFBUyxVQUFVLElBQUk7QUFDdkIsd0JBQVksQ0FBQztBQUNiLHdCQUFZLElBQUk7QUFDaEIseUJBQWEsQ0FBQztBQUNkLHVCQUFXLEVBQUU7QUFDYiw4QkFBa0IsS0FBSztBQUFBLFVBQ3pCO0FBQUEsVUFDQSxVQUFVLE1BQU07QUFDZCxnQkFBSSxLQUFLLEVBQUcsV0FBVTtBQUFBLGlCQUNqQjtBQUNILDBCQUFZLElBQUk7QUFDaEIsNEJBQWMsS0FBSztBQUNuQixnQ0FBa0IsSUFBSTtBQUFBLFlBQ3hCO0FBQUEsVUFDRjtBQUFBLFVBQ0EsVUFBVTtBQUFBLFVBQ1YsV0FBVyxDQUFDLE1BQU07QUFDaEIsZ0JBQUksRUFBRSxRQUFRLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLFFBQVEsYUFBYSxhQUFhLFNBQVMsR0FBRztBQUNqRix1QkFBUyxhQUFhLEtBQUssSUFBSSxVQUFVLEdBQUcsYUFBYSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLHFCQUFPO0FBQUEsWUFDVDtBQUNBLGdCQUFJLEVBQUUsUUFBUSxTQUFTLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLGdCQUFnQixnQkFBZ0IsU0FBUyxHQUFHO0FBQ3ZGLG9CQUFNLFFBQVEsU0FBUztBQUN2QixrQkFBSSxDQUFDLE9BQU87QUFDVixzQkFBTSxRQUFRLEtBQUssSUFBSSxTQUFTLEdBQUcsZ0JBQWdCLFNBQVMsQ0FBQztBQUM3RCw0QkFBWSxFQUFFLFNBQVMsZ0JBQWdCLENBQUM7QUFDeEMsNEJBQVksS0FBSztBQUNqQix5QkFBUyxNQUFNLGdCQUFnQixLQUFLLEVBQUUsSUFBSTtBQUFBLGNBQzVDLE9BQU87QUFDTCxzQkFBTSxRQUFRLFNBQVMsSUFBSSxLQUFLLE1BQU0sUUFBUTtBQUM5Qyw0QkFBWSxJQUFJO0FBQ2hCLHlCQUFTLE1BQU0sTUFBTSxRQUFRLElBQUksRUFBRSxJQUFJO0FBQUEsY0FDekM7QUFDQSxxQkFBTztBQUFBLFlBQ1Q7QUFDQSxnQkFBSSxFQUFFLFFBQVEsV0FBVyxFQUFFLE1BQU07QUFDL0Isb0JBQU0sUUFBUSxrQkFBa0IsRUFBRSxJQUFJO0FBQ3RDLGtCQUFJLE1BQU0sU0FBUyxHQUFHO0FBQ3BCLHNCQUFNLGVBQWUsTUFBTSxJQUFJLENBQUMsU0FBUztBQUN2Qyx3QkFBTSxjQUFjLFdBQVcsRUFBRSxLQUFLLFVBQVU7QUFDaEQsdUJBQUssWUFBWSxJQUFJLGFBQWEsRUFBRSxNQUFNLFdBQVcsYUFBYSxJQUFJLEVBQUUsQ0FBQztBQUN6RSx5QkFBTztBQUFBLGdCQUNULENBQUM7QUFDRCxzQkFBTSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU07QUFDL0IseUJBQVMsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksYUFBYSxLQUFLLEdBQUcsSUFBSSxFQUFFLE1BQU0sTUFBTSxFQUFFLENBQUM7QUFDMUUsdUJBQU87QUFBQSxjQUNUO0FBQ0EscUJBQU87QUFBQSxZQUNUO0FBQ0EsZ0JBQUksRUFBRSxRQUFRLGVBQWUsRUFBRSxTQUFTLEdBQUc7QUFDekMsb0JBQU0sUUFBUSxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCO0FBQ2hFLGtCQUFJLE9BQU87QUFDVCxxQkFBSyxZQUFZLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFDaEMseUJBQVMsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLFNBQVMsTUFBTSxDQUFDLEVBQUUsTUFBTSxJQUFJLEVBQUUsTUFBTSxNQUFNLEVBQUUsTUFBTSxDQUFDO0FBQy9FLHVCQUFPO0FBQUEsY0FDVDtBQUFBLFlBQ0Y7QUFDQSxnQkFBSSxFQUFFLFFBQVEsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTTtBQUN6QyxvQkFBTSxNQUFNLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxPQUFPLFNBQVMsaUJBQWlCLENBQUM7QUFDM0Usa0JBQUksQ0FBQyxJQUFLLFFBQU87QUFDakIsa0JBQUksQ0FBQyxXQUFXLEdBQUc7QUFDakIsOEJBQWMsSUFBSTtBQUNsQiw2QkFBYSxDQUFDO0FBQ2QsMEJBQVUsR0FBRyxFQUFFLEtBQUssQ0FBQyxVQUFVO0FBQzdCLHNCQUFJLFVBQVUsU0FBUyxFQUFHLGFBQVksS0FBSztBQUFBLGdCQUM3QyxDQUFDO0FBQUEsY0FDSCxXQUFXLElBQUksUUFBUSxTQUFTLEdBQUc7QUFDakMsaUNBQWlCLEVBQUUsT0FBTyxLQUFLLElBQUksUUFBUSxLQUFLLElBQUksVUFBVSxHQUFHLElBQUksUUFBUSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FDM0Y7QUFDQSxxQkFBTztBQUFBLFlBQ1Q7QUFDQSxnQkFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLGdCQUFnQixVQUFXLFFBQU87QUFDMUQsZ0JBQUksRUFBRSxRQUFRLFFBQVEsRUFBRSxVQUFVLE1BQU0sT0FBTyxFQUFFLFNBQVMsR0FBRztBQUMzRCx1QkFBUyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDNUIsd0JBQVUsQ0FBQyxDQUFDO0FBQ1oscUJBQU87QUFBQSxZQUNUO0FBQ0Esa0JBQU0sV0FBVyxRQUFRLEtBQUs7QUFDOUIsZ0JBQUksRUFBRSxRQUFRLFNBQVMsWUFBWSxFQUFFLFVBQVUsT0FBTyxRQUFRLElBQUksS0FBSyxFQUFFLFNBQVMsR0FBRztBQUNuRixvQkFBTSxJQUFJLFFBQVEsSUFBSTtBQUN0Qix5QkFBVyxDQUFDO0FBQ1osdUJBQVMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLElBQUksQ0FBQyxFQUFFLElBQUk7QUFDM0MscUJBQU87QUFBQSxZQUNUO0FBQ0EsZ0JBQUksRUFBRSxRQUFRLFVBQVUsVUFBVTtBQUNoQyxvQkFBTSxJQUFJLFFBQVEsSUFBSTtBQUN0Qix5QkFBVyxDQUFDO0FBQ1osdUJBQVMsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLElBQUksQ0FBQyxFQUFFLElBQUk7QUFDeEQscUJBQU87QUFBQSxZQUNUO0FBQ0EsbUJBQU87QUFBQSxVQUNUO0FBQUEsVUFDQSxlQUFhO0FBQUEsVUFDYixlQUFhO0FBQUEsVUFDYixXQUFXO0FBQUEsVUFDWCxRQUFRLEVBQUUsT0FBTyxNQUFNLElBQUksT0FBTyxHQUFHLE9BQU8sUUFBUTtBQUFBO0FBQUEsTUFDdEQ7QUFBQSxPQUNGO0FBQUEsSUFFQyxnQkFDQyxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUM5RCwwQkFBZ0IsV0FBVyxJQUMxQixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBRyxrQ0FBb0IsSUFFbkQsZ0JBQUFBO0FBQUEsTUFBQ3NCO0FBQUEsTUFBQTtBQUFBLFFBQ0MsU0FBTztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1AsVUFBVSxTQUFTO0FBQUEsUUFDbkIsVUFBVTtBQUFBLFFBQ1YsVUFBVSxDQUFDLE1BQU0sV0FBVyxDQUFDO0FBQUEsUUFDN0IsU0FBUztBQUFBLFFBQ1QsWUFBWTtBQUFBLFFBQ1osV0FBVztBQUFBLFFBQ1gsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLE1BQ3ZCLGdCQUFBckIsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSwwQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLG1CQUFTLFlBQU8sTUFBSztBQUFBLFVBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksTUFBTSxHQUFJLGNBQUksRUFBRSxJQUFJLEdBQUcsT0FBTyxnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsTUFBTSxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUU7QUFBQSxVQUM5SSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFNBQVMsWUFBWSxNQUFNLEdBQUksWUFBRSxNQUFLO0FBQUEsV0FDOUQ7QUFBQTtBQUFBLElBRUosR0FFSjtBQUFBLElBR0QsYUFBYSxhQUFhLFNBQVMsS0FDbEMsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxVQUFVLFVBQVUsR0FBRyxXQUFXLEVBQUUsR0FDL0QsMEJBQUFBO0FBQUEsTUFBQ3NCO0FBQUEsTUFBQTtBQUFBLFFBQ0MsU0FBTztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1AsVUFBVSxVQUFVO0FBQUEsUUFDcEIsVUFBVTtBQUFBLFFBQ1YsVUFBVTtBQUFBLFFBQ1YsVUFBVSxNQUFNLGtCQUFrQixJQUFJO0FBQUEsUUFDdEMsU0FBUztBQUFBLFFBQ1QsWUFBWTtBQUFBLFFBQ1osV0FBVztBQUFBLFFBQ1gsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLE1BQ3ZCLGdCQUFBckIsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSwwQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLG1CQUFTLFlBQU8sTUFBSztBQUFBLFVBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksUUFBUSxHQUFJLGFBQUU7QUFBQSxXQUMxRDtBQUFBO0FBQUEsSUFFSixHQUNGO0FBQUEsSUFHRCxrQkFDQyxnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUMvRCwwQkFBQUE7QUFBQSxNQUFDc0I7QUFBQSxNQUFBO0FBQUEsUUFDQyxTQUFPO0FBQUEsUUFDUCxPQUFPLFFBQVE7QUFBQSxRQUNmLFVBQVUsVUFBVTtBQUFBLFFBQ3BCLFVBQVU7QUFBQSxRQUNWLFVBQVUsQ0FBQyxjQUFjLGlCQUFpQixNQUFNLEdBQUcsU0FBUyxTQUFTO0FBQUEsUUFDckUsVUFBVTtBQUFBLFFBQ1YsU0FBUztBQUFBLFFBQ1QsWUFBWTtBQUFBLFFBQ1osV0FBVztBQUFBLFFBQ1gsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQy9CLGdCQUFBckIsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSwwQkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLG1CQUFTLFlBQU8sTUFBSztBQUFBLFVBQ3hELGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sU0FBUyxPQUFPLElBQUksUUFBUSxHQUFJLHFCQUFVO0FBQUEsV0FDbEU7QUFBQTtBQUFBLElBRUosR0FDRjtBQUFBLElBR0QsZUFBZSxLQUNkLGdCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsUUFBUVE7QUFBQSxRQUNSLFNBQVNDLE9BQU0sRUFBRTtBQUFBLFFBQ2pCLGFBQWFDLGNBQWEsRUFBRTtBQUFBLFFBQzVCLFNBQVMsZUFBZTtBQUFBLFFBQ3hCLFFBQVEsQ0FBQyxNQUFNO0FBQ2IsY0FBSSxFQUFFLGNBQWMsTUFBTyxRQUFPLE1BQU0sT0FBTyxFQUFFLE9BQU8sK0JBQStCLEVBQUUsSUFBSSxFQUFFO0FBQy9GLGtCQUFRLFVBQVUsZ0JBQWdCLEVBQUUsTUFBTUQsT0FBTSxFQUFFLE1BQU0sSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLG1CQUFTLENBQUM7QUFDViw0QkFBa0IsS0FBSztBQUN2QixnQkFBTSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUU7QUFBQSxRQUNoQztBQUFBLFFBQ0EsZUFBZSxDQUFDLE1BQU07QUFDcEIsY0FBSSxFQUFFLGNBQWMsTUFBTyxRQUFPLE1BQU0sT0FBTyxFQUFFLE9BQU8sK0JBQStCLEVBQUUsSUFBSSxFQUFFO0FBQy9GLGtCQUFRLFVBQVUsZ0JBQWdCLEVBQUUsTUFBTUEsT0FBTSxFQUFFLE1BQU0sSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLG1CQUFTLENBQUM7QUFDViwwQkFBZ0IsQ0FBQztBQUNqQixzQkFBWSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLE1BQU07QUFBQSxVQUFDLENBQUM7QUFDcEQsNEJBQWtCLEtBQUs7QUFDdkIsZ0JBQU0sZ0JBQWdCLEVBQUUsSUFBSSx3QkFBcUI7QUFBQSxRQUNuRDtBQUFBLFFBQ0EsU0FBUyxNQUFNLGtCQUFrQixLQUFLO0FBQUE7QUFBQSxJQUN4QztBQUFBLElBR0QsdUJBQXVCLEtBQ3RCLGdCQUFBVDtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsUUFBUVEsUUFBTyxPQUFPLENBQUMsTUFBTSxFQUFFLGNBQWMsS0FBSztBQUFBLFFBQ2xELFNBQVNGLE1BQUs7QUFBQSxRQUNkLGFBQWE7QUFBQSxRQUNiLE9BQU07QUFBQSxRQUNOLE1BQUs7QUFBQSxRQUNMLFNBQVMsdUJBQXVCO0FBQUEsUUFDaEMsUUFBUSxDQUFDLE1BQU07QUFDYixVQUFBQSxNQUFLLGdCQUFnQixFQUFFO0FBQ3ZCLHNCQUFZLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxNQUFNO0FBQUEsVUFBQyxDQUFDO0FBQ2xFLG9DQUEwQixLQUFLO0FBQy9CLGdCQUFNLHFCQUFxQixFQUFFLElBQUksRUFBRTtBQUNuQyxnQkFBTWlCLFdBQVUsZ0JBQWdCO0FBQ2hDLGdCQUFNLFdBQVcsb0JBQW9CO0FBQ3JDLDZCQUFtQixJQUFJO0FBQ3ZCLGlDQUF1QixJQUFJO0FBQzNCLGNBQUlBLFNBQVMsWUFBVyxFQUFFLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWUEsU0FBUSxVQUFVLElBQUlBLFNBQVEsUUFBUSxFQUFFO0FBQUEsbUJBQzlGLGFBQWEsU0FBVSxvQkFBbUIsSUFBSTtBQUFBLFFBQ3pEO0FBQUEsUUFDQSxlQUFlLE1BQU07QUFBQSxRQUFDO0FBQUEsUUFDdEIsU0FBUyxNQUFNO0FBQ2Isb0NBQTBCLEtBQUs7QUFDL0IsNkJBQW1CLElBQUk7QUFDdkIsY0FBSSxvQkFBb0IsTUFBTSxTQUFVLG9CQUFtQixJQUFJO0FBQy9ELGlDQUF1QixJQUFJO0FBQUEsUUFDN0I7QUFBQTtBQUFBLElBQ0Y7QUFBQSxJQUdELGdCQUFnQixLQUNmLGdCQUFBdkI7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFFBQVE7QUFBQSxRQUNSLFNBQVMsT0FBTyxLQUFLO0FBQUEsUUFDckIsY0FBYyxjQUFjLEtBQUs7QUFBQSxRQUNqQyxTQUFTLGdCQUFnQjtBQUFBLFFBQ3pCLFFBQVEsQ0FBQyxNQUFNO0FBQ2IsMkJBQWlCLEVBQUUsR0FBRztBQUN0Qiw2QkFBbUIsS0FBSztBQUFBLFFBQzFCO0FBQUEsUUFDQSxlQUFlLENBQUMsTUFBTTtBQUNwQiwyQkFBaUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDM0MsNkJBQW1CLEtBQUs7QUFBQSxRQUMxQjtBQUFBLFFBQ0EsU0FBUyxNQUFNLG1CQUFtQixLQUFLO0FBQUE7QUFBQSxJQUN6QztBQUFBLElBR0QsZUFBZSxLQUNkLGdCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsUUFBUSxXQUFXO0FBQUEsUUFDbkIsTUFBTSxVQUFVO0FBQUEsUUFDaEIsU0FBUyxlQUFlO0FBQUEsUUFDeEIsUUFBUSxDQUFDLE1BQU07QUFDYiw0QkFBa0IsS0FBSztBQUN2Qix5QkFBZSxFQUFFLEdBQUc7QUFBQSxRQUN0QjtBQUFBLFFBQ0EsV0FBVyxDQUFDLE1BQU0sZUFBZSxFQUFFLEdBQUc7QUFBQSxRQUN0QyxTQUFTLE1BQU07QUFDYiw0QkFBa0IsS0FBSztBQUN2Qix5QkFBZSxVQUFVLENBQUM7QUFBQSxRQUM1QjtBQUFBO0FBQUEsSUFDRjtBQUFBLElBR0QsZ0JBQWdCLEtBQ2YsZ0JBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxRQUFRLEVBQUUsUUFBUSxPQUFPLEdBQUcsY0FBYyxtQkFBbUIsR0FBRyxXQUFXLFVBQVUsR0FBRyxlQUFlTSxNQUFLLGVBQWUsb0JBQW9CLG1CQUFtQixFQUFFO0FBQUEsUUFDcEssU0FBUyxnQkFBZ0I7QUFBQSxRQUN6QixxQkFBcUIsTUFBTTtBQUN6QixpQ0FBdUIsUUFBUTtBQUMvQiw2QkFBbUIsS0FBSztBQUN4QixvQ0FBMEIsSUFBSTtBQUFBLFFBQ2hDO0FBQUEsUUFDQSxVQUFVLENBQUMsTUFBTSxVQUFVO0FBQ3pCLGNBQUksU0FBUyxVQUFVO0FBQ3JCLHNCQUFVLEtBQUs7QUFDZix3QkFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLE1BQU0sRUFBRSxDQUFDO0FBQUEsVUFDOUMsV0FBVyxTQUFTLGFBQWE7QUFDL0IseUJBQWEsS0FBSztBQUNsQixZQUFBQSxNQUFLLFlBQVk7QUFDakIsWUFBQUEsTUFBSyxJQUFJLFdBQVcsS0FBSztBQUN6Qix3QkFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLE1BQU0sRUFBRSxDQUFDO0FBQUEsVUFDL0MsV0FBVyxTQUFTLHNCQUFzQjtBQUN4QyxrQ0FBc0IsS0FBSztBQUMzQixZQUFBQSxNQUFLLHFCQUFxQjtBQUMxQix3QkFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLE1BQU0sRUFBRSxDQUFDO0FBQUEsVUFDakQsT0FBTztBQUNMLGtDQUFzQixLQUFLO0FBQzNCLHdCQUFZLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixNQUFNLEVBQUUsQ0FBQztBQUFBLFVBQ3hEO0FBQUEsUUFDRjtBQUFBLFFBQ0EsU0FBUyxNQUFNLG1CQUFtQixLQUFLO0FBQUE7QUFBQSxJQUN6QztBQUFBLElBR0Qsa0JBQWtCLEtBQ2pCLGdCQUFBTjtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsT0FBTTtBQUFBLFFBQ04sU0FBUTtBQUFBLFFBQ1IsY0FBYTtBQUFBLFFBQ2IsU0FBUyxrQkFBa0I7QUFBQSxRQUMzQixXQUFXO0FBQUEsUUFDWCxTQUFTLE1BQU0scUJBQXFCLEtBQUs7QUFBQTtBQUFBLElBQzNDO0FBQUEsSUFHRCxpQkFBaUIsS0FDaEIsZ0JBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxTQUFTLFlBQVk7QUFBQSxRQUNyQixRQUFRO0FBQUEsUUFDUixZQUFZLFVBQVU7QUFBQSxRQUN0QixTQUFTLGlCQUFpQjtBQUFBLFFBQzFCLFFBQVEsQ0FBQyxTQUFTO0FBQUUsbUJBQVMsSUFBSTtBQUFHLDhCQUFvQixLQUFLO0FBQUEsUUFBRTtBQUFBLFFBQy9ELFNBQVMsTUFBTSxvQkFBb0IsS0FBSztBQUFBO0FBQUEsSUFDMUM7QUFBQSxJQUdELGdCQUFnQixLQUNmLGdCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsVUFBVSxlQUFlO0FBQUEsUUFDekIsUUFBUTtBQUFBLFFBQ1IsWUFBWSxZQUFZO0FBQUEsUUFDeEIsU0FBUyxjQUFjO0FBQUEsUUFDdkIsU0FBUyxnQkFBZ0I7QUFBQSxRQUN6QixXQUFXLEtBQUssU0FBUztBQUFBLFFBQ3pCLFFBQVEsQ0FBQyxTQUFTO0FBQ2hCLGNBQUksS0FBSyxPQUFPLE9BQU8sS0FBSyxTQUFTLEdBQUksUUFBTyxtQkFBbUIsS0FBSztBQUN4RSx3QkFBYyxJQUFJO0FBQUEsUUFDcEI7QUFBQSxRQUNBLFVBQVU7QUFBQSxRQUNWLFNBQVMsTUFBTSxtQkFBbUIsS0FBSztBQUFBO0FBQUEsSUFDekM7QUFBQSxJQUdELGdCQUFnQixLQUNmLGdCQUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsVUFBVSxXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sY0FBYyxTQUFTLENBQUMsTUFBTSxTQUFTLEVBQUUsVUFBVSxjQUFjLFNBQVMsQ0FBQyxDQUFDO0FBQUEsUUFDakgsUUFBUTtBQUFBLFFBQ1IsWUFBWSxTQUFTO0FBQUEsUUFDckIsU0FBUyxnQkFBZ0I7QUFBQSxRQUN6QixVQUFVO0FBQUEsUUFDVixTQUFTLE1BQU0sbUJBQW1CLEtBQUs7QUFBQTtBQUFBLElBQ3pDO0FBQUEsSUFHRCxVQUFVLEtBQ1QsZ0JBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxPQUFPLFVBQVUsRUFBRTtBQUFBLFFBQ25CLE1BQU0sVUFBVSxFQUFFO0FBQUEsUUFDbEIsVUFBVSxVQUFVLEVBQUU7QUFBQSxRQUN0QixTQUFTLFVBQVUsTUFBTTtBQUFBLFFBQ3pCLFNBQVMsTUFBTSxhQUFhLElBQUk7QUFBQTtBQUFBLElBQ2xDO0FBQUEsSUFHRCxpQkFBaUIsS0FDaEIsZ0JBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxVQUFVLFNBQVM7QUFBQSxRQUNuQixTQUFTLGdCQUFnQjtBQUFBLFFBQ3pCLFNBQVMsaUJBQWlCO0FBQUEsUUFDMUIsUUFBUSxDQUFDLE1BQU0sY0FBYyxFQUFFLE1BQU07QUFBQSxRQUNyQyxVQUFVO0FBQUEsUUFDVixTQUFTLE1BQU0sb0JBQW9CLEtBQUs7QUFBQTtBQUFBLElBQzFDO0FBQUEsSUFHRCxpQkFBaUIsS0FDaEIsZ0JBQUFBO0FBQUEsTUFBQztBQUFBO0FBQUEsUUFDQyxXQUFXLGNBQWM7QUFBQSxRQUN6QixTQUFTLGlCQUFpQjtBQUFBLFFBQzFCLFdBQVc7QUFBQSxRQUNYLGNBQWM7QUFBQSxRQUNkLFNBQVMsTUFBTSxvQkFBb0IsS0FBSztBQUFBO0FBQUEsSUFDMUM7QUFBQSxJQUdELGlCQUFpQixLQUNoQixnQkFBQUE7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFVBQVUsY0FBYyxHQUFHTSxNQUFLLFFBQVEsS0FBSztBQUFBLFFBQzdDLFNBQVMsaUJBQWlCO0FBQUEsUUFDMUIsVUFBVSxDQUFDLE1BQU07QUFDZixnQkFBTSxRQUFRLEtBQUs7QUFDbkIsY0FBSSxDQUFDLFNBQVMsTUFBTSxPQUFPLEVBQUUsTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssS0FBTTtBQUMvRCxpQkFBSyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQ2xELG1CQUFPLE1BQU0sMkJBQTJCLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHO0FBQUEsVUFDeEY7QUFDQSxlQUFLLGtCQUFrQjtBQUN2QixVQUFBQSxNQUFLLFFBQVEsT0FBTyxFQUFFLEVBQUU7QUFDeEIsZ0JBQU0scUJBQXFCLEVBQUUsRUFBRSxFQUFFO0FBQ2pDO0FBQUEsWUFDRSw4REFBOEQsRUFBRSxFQUFFLGVBQWUsRUFBRSxLQUFLLFFBQVEsT0FBTyxHQUFHLENBQUM7QUFBQSxZQUMzRyxFQUFFLE1BQU0sTUFBTTtBQUFBLFVBQ2hCO0FBQUEsUUFDRjtBQUFBLFFBQ0EsU0FBUyxNQUFNLG9CQUFvQixLQUFLO0FBQUE7QUFBQSxJQUMxQztBQUFBLElBR0QsYUFBYSxLQUNaLGdCQUFBTjtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsU0FBUyxXQUFXO0FBQUEsUUFDcEIsU0FBUyxhQUFhO0FBQUEsUUFDdEIsVUFBVSxDQUFDLFNBQVMsSUFBSSxPQUFPLElBQUk7QUFBQSxRQUNuQyxhQUFhLENBQUMsU0FBUyxJQUFJLFVBQVUsSUFBSTtBQUFBLFFBQ3pDLFVBQVUsQ0FBQyxTQUFTO0FBQ2xCLGdCQUFNLFFBQVEsS0FBSztBQUNuQixjQUFJLENBQUMsU0FBUyxNQUFNLFNBQVMsUUFBUSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssS0FBTTtBQUNqRSxpQkFBSyxlQUFlLEVBQUUsTUFBTSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQzNDLG1CQUFPLE1BQU0sMkJBQTJCLElBQUksa0JBQWtCO0FBQUEsVUFDaEU7QUFDQSxlQUFLLGVBQWU7QUFDcEIsY0FBSSxPQUFPLElBQUk7QUFDZixnQkFBTSxzQkFBc0IsSUFBSSxFQUFFO0FBQUEsUUFDcEM7QUFBQSxRQUNBLE9BQU8sQ0FBQyxNQUFNLFNBQVN3QixXQUFVO0FBQy9CLGNBQUksSUFBSSxNQUFNLFNBQVNBLE1BQUs7QUFDNUIsZ0JBQU0sU0FBUyxJQUFJLEtBQUtBLE1BQUssR0FBRztBQUFBLFFBQ2xDO0FBQUEsUUFDQSxRQUFRLENBQUMsTUFBTSxZQUFZO0FBQ3pCLGNBQUksT0FBTyxNQUFNLE9BQU87QUFDeEIsZ0JBQU0sV0FBVyxJQUFJLEVBQUU7QUFBQSxRQUN6QjtBQUFBLFFBQ0EsV0FBVztBQUFBLFFBQ1gsU0FBUyxNQUFNLGdCQUFnQixLQUFLO0FBQUE7QUFBQSxJQUN0QztBQUFBLElBR0QsV0FBVyxNQUFNLFVBQ2hCLGdCQUFBeEI7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFNBQVMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxFQUFFLFFBQVE7QUFBQSxRQUN0QyxPQUFPLENBQUMsVUFBVSxZQUFZLFFBQVEsR0FBRyxLQUFLO0FBQUEsUUFDOUMsU0FBUyxXQUFXLE1BQU07QUFBQSxRQUMxQixRQUFRLENBQUMsVUFBVTtBQUFFLDBCQUFnQixLQUFLO0FBQUcsd0JBQWMsUUFBUTtBQUFBLFFBQUU7QUFBQSxRQUNyRSxTQUFTLE1BQU0sY0FBYyxJQUFJO0FBQUE7QUFBQSxJQUNuQztBQUFBLElBR0QsV0FBVyxNQUFNLFlBQVksYUFBYSxLQUN6QyxnQkFBQUE7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLFFBQVEsYUFBYTtBQUFBLFFBQ3JCLFNBQVM7QUFBQSxRQUNULFNBQVMsV0FBVyxNQUFNO0FBQUEsUUFDMUIsVUFBVTtBQUFBLFFBQ1YsUUFBUSxNQUFNLGNBQWMsTUFBTTtBQUFBO0FBQUEsSUFDcEM7QUFBQSxJQUdELGNBQWMsU0FBUyxLQUN0QixnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUMvRDtBQUFBLHNCQUFBRCxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsT0FBTyxnQkFBZ0IsV0FBVyxHQUM3RCwwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSx1QkFBYSxrQkFBa0IsU0FBTSxlQUFlLEtBQUssRUFBRSxrQkFBYyxHQUMzRztBQUFBLE1BQ0EsZ0JBQUFDLE1BQUMsaUJBQWMsVUFBVSxDQUFDLGFBQWEsU0FBUyxHQUFHLFFBQVEsTUFBTSxjQUFjLFNBQVMsTUFBTTtBQUFFLFdBQUcsTUFBTSxZQUFZO0FBQUcseUJBQWlCLElBQUk7QUFBRyxrQkFBVSxJQUFJO0FBQUEsTUFBRSxHQUM5SjtBQUFBLHdCQUFBRCxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sR0FBRyxRQUFRLE1BQU0sZUFBZSxVQUFVLE9BQU8sRUFBRSxHQUFJLHFCQUFLO0FBQUEsUUFDbEYsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxHQUFHLFFBQVEsTUFBTSxlQUFlLFVBQVUsQ0FBQyxjQUFjLEtBQUssTUFBTSxHQUFJLGtCQUFPO0FBQUEsU0FDdkc7QUFBQSxNQUNDLFlBQVksSUFBSSxDQUFDLE1BQU07QUFDdEIsY0FBTSxVQUFVLEdBQUcsUUFBUSxNQUFNLFNBQVMsRUFBRSxFQUFFO0FBQzlDLGNBQU0sV0FBVyxjQUFjLE1BQU0sRUFBRTtBQUN2QyxjQUFNeUIsV0FBVSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsU0FBUyxFQUFFLFFBQVEsQ0FBQztBQUMzRSxlQUNFLGdCQUFBeEIsTUFBQyxpQkFBeUIsVUFBb0IsU0FBa0IsU0FBUyxNQUFNO0FBQUUsYUFBRyxNQUFNLFNBQVMsRUFBRSxFQUFFLEVBQUU7QUFBRywyQkFBaUIsRUFBRSxFQUFFO0FBQUcsb0JBQVUsSUFBSTtBQUFBLFFBQUUsR0FDako7QUFBQSxZQUFFLFdBQVcsWUFBWSxnQkFBQUQsS0FBQzBCLFVBQUEsRUFBUSxPQUFPLFVBQVUsVUFBVSxPQUFPLEdBQUcsU0FBUSxRQUFPLElBQUssZ0JBQUExQixLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sVUFBVSxVQUFVLEVBQUUsYUFBYSxJQUFJLFFBQVEsSUFBSSxHQUFJLFlBQUUsYUFBYSxJQUFJLFdBQU0sUUFBSTtBQUFBLFVBQ3RNLGdCQUFBQSxLQUFDLFVBQU0sZUFBSTtBQUFBLFVBQ1gsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxVQUFVLFVBQVUsV0FBVyxLQUFLLE1BQU0sR0FBSSxvQkFBVSxFQUFFLEVBQUUsT0FBTTtBQUFBLFVBQ3hGLGdCQUFBQSxLQUFDLFNBQUksT0FBTyxFQUFFLFVBQVUsR0FBRyxRQUFRLEVBQUUsR0FDbkMsMEJBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsVUFBVSxZQUFZLE9BQU8sVUFBVSxVQUFVLE1BQU0sR0FBSSxZQUFFLGVBQWUsRUFBRSxRQUFRLFFBQVEsT0FBTyxHQUFHLEdBQUUsR0FDM0g7QUFBQSxVQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sVUFBVSxVQUFVLE1BQU0sR0FBSSxlQUFLLEVBQUUsV0FBVyxZQUFZLEtBQUssUUFBUSxFQUFFLFFBQVEsUUFBSyxHQUFHeUIsUUFBTyxJQUFHO0FBQUEsYUFQekcsRUFBRSxFQVF0QjtBQUFBLE1BRUosQ0FBQztBQUFBLE1BQ0EsY0FBYyxTQUFTLG1CQUN0QixnQkFBQXpCLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksZUFBSyxtQkFBbUIsSUFBSSxVQUFLLGdCQUFnQixLQUFLLEVBQUUsR0FBRyxtQkFBbUIsS0FBSyxtQkFBbUIsWUFBWSxTQUFTLGNBQWMsU0FBUyxXQUFRLEVBQUUsR0FBRyxtQkFBbUIsWUFBWSxTQUFTLGNBQWMsU0FBUyxVQUFLLGNBQWMsU0FBUyxtQkFBbUIsWUFBWSxNQUFNLEtBQUssRUFBRSxTQUFRO0FBQUEsT0FFbFY7QUFBQSxJQUdELGNBQWMsU0FBUyxLQUN0QixnQkFBQUMsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLFVBQVUsVUFBVSxHQUFHLFdBQVcsRUFBRSxHQUMvRDtBQUFBLHNCQUFBRCxLQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsT0FBTyxnQkFBZ0IsV0FBVyxHQUM3RCwwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSx1QkFBYSxrQkFBa0IsU0FBTSxlQUFlLEtBQUssRUFBRSxrQkFBYyxHQUMzRztBQUFBLE1BQ0EsZ0JBQUFDLE1BQUMsaUJBQWMsVUFBVSxDQUFDLGFBQWEsU0FBUyxHQUFHLFFBQVEsTUFBTSxjQUFjLFNBQVMsTUFBTTtBQUFFLFdBQUcsTUFBTSxZQUFZO0FBQUcseUJBQWlCLElBQUk7QUFBRyxrQkFBVSxJQUFJO0FBQUcsc0JBQWMsY0FBYztBQUFBLE1BQUUsR0FDN0w7QUFBQSx3QkFBQUQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLEdBQUcsUUFBUSxNQUFNLGVBQWUsVUFBVSxPQUFPLEVBQUUsR0FBSSxxQkFBSztBQUFBLFFBQ2xGLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sR0FBRyxRQUFRLE1BQU0sZUFBZSxVQUFVLENBQUMsY0FBYyxLQUFLLE1BQU0sR0FBSSxrQkFBTztBQUFBLFNBQ3ZHO0FBQUEsTUFDQyxZQUFZLElBQUksQ0FBQyxNQUFNO0FBQ3RCLGNBQU0sU0FBUyxZQUFZLENBQUM7QUFDNUIsY0FBTSxVQUFVLEdBQUcsUUFBUSxNQUFNLFNBQVMsRUFBRSxFQUFFO0FBQzlDLGVBQ0UsZ0JBQUFDLE1BQUMsaUJBQXlCLFVBQVUsY0FBYyxNQUFNLEVBQUUsSUFBSSxTQUFrQixTQUFTLE1BQU07QUFBRSxhQUFHLE1BQU0sU0FBUyxFQUFFLEVBQUUsRUFBRTtBQUFHLDJCQUFpQixFQUFFLEVBQUU7QUFBRyxvQkFBVSxJQUFJO0FBQUcsd0JBQWMsY0FBYztBQUFBLFFBQUUsR0FDaE07QUFBQSxZQUFFLFdBQVcsWUFBWSxnQkFBQUQsS0FBQzBCLFVBQUEsRUFBUSxPQUFPLFVBQVUsVUFBVSxPQUFPLEdBQUcsU0FBUSxRQUFPLElBQUssZ0JBQUExQixLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sVUFBVSxVQUFVLE9BQU8sTUFBTSxHQUFJLGlCQUFPLE1BQUs7QUFBQSxVQUNuSyxnQkFBQUEsS0FBQyxVQUFNLGVBQUk7QUFBQSxVQUNYLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sVUFBVSxVQUFVLGNBQWMsTUFBTSxFQUFFLEtBQUssS0FBSyxNQUFNLEdBQUksYUFBRyxFQUFFLFFBQVEsT0FBTyxLQUFLLEVBQUUsRUFBRSxPQUFNO0FBQUEsVUFDdkgsZ0JBQUFBLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxHQUNuQywwQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxVQUFVLFVBQVUsTUFBTSxHQUFJLFlBQUUsYUFBWSxHQUMxRjtBQUFBLFVBQ0MsT0FBTyxTQUFTLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sVUFBVSxVQUFVLE9BQU8sTUFBTSxHQUFJLGVBQUssT0FBTyxLQUFLLElBQUc7QUFBQSxVQUNoRyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLFVBQVUsVUFBVSxNQUFNLEdBQUksYUFBRyxPQUFPLFFBQVEsVUFBTyxJQUFJLElBQUksYUFBYSxDQUFDLENBQUMsaUJBQVE7QUFBQSxVQUM1RyxnQkFBQUEsS0FBQyxpQkFBYyxPQUFPLEVBQUUsT0FBTyxlQUFlLEVBQUUsT0FBTyxnQkFBZ0IsR0FBRyxPQUFPLFVBQVUsVUFBVSxPQUFPLFdBQVcsVUFBVSxVQUFVLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLFdBQVc7QUFBQSxhQVRoTCxFQUFFLEVBVXRCO0FBQUEsTUFFSixDQUFDO0FBQUEsTUFDQSxjQUFjLFNBQVMsbUJBQ3RCLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGVBQUssbUJBQW1CLElBQUksVUFBSyxnQkFBZ0IsS0FBSyxFQUFFLEdBQUcsbUJBQW1CLEtBQUssbUJBQW1CLFlBQVksU0FBUyxjQUFjLFNBQVMsV0FBUSxFQUFFLEdBQUcsbUJBQW1CLFlBQVksU0FBUyxjQUFjLFNBQVMsVUFBSyxjQUFjLFNBQVMsbUJBQW1CLFlBQVksTUFBTSxLQUFLLEVBQUUsU0FBUTtBQUFBLE9BRWxWO0FBQUEsSUFHRCxTQUFTLFVBQ1IsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxPQUFPLFVBQVUsR0FBRyxLQUFLLEdBQUcsV0FBVyxFQUFFLEdBQ3BFO0FBQUEsc0JBQUFELEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxNQUM3QixnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sVUFBVSxXQUFXLEdBQUksa0JBQVEsUUFBTztBQUFBLE1BQ3BFLFFBQVEsUUFBUSxLQUFLLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFJLGNBQUksUUFBUSxLQUFLLElBQUc7QUFBQSxNQUN6RSxRQUFRLFVBQVUsS0FBSyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLElBQUksR0FBSSxjQUFJLFFBQVEsT0FBTyxJQUFHO0FBQUEsT0FDOUU7QUFBQSxJQUdGLGdCQUFBQyxNQUFDLFNBQUksT0FBTyxFQUFFLGVBQWUsT0FBTyxVQUFVLEdBQUcsS0FBSyxHQUFHLFdBQVcsU0FBUyxTQUFTLElBQUksRUFBRSxHQUN6RjtBQUFBLFdBQUssSUFFRixnQkFBQUEsTUFBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE1BQU0sR0FDakM7QUFBQSx3QkFBQUQsS0FBQyxXQUFRLE9BQU8sT0FBTyxHQUFHLFdBQVcsV0FBVyxVQUFVLE1BQU0sU0FBTyxNQUNwRSxxQkFBVyxJQUNSLGNBQWMsR0FBRyxVQUFVLFlBQVksMkJBQXdCLGNBQWMsRUFBRSxPQUFPLE9BQU8sOEJBQzdGLFVBQVUsTUFBTSxhQUFhLGFBQWEsVUFBVSxNQUFNLFVBQVUsWUFBWSxjQUN0RjtBQUFBLFFBQ0EsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUksZUFBSyxPQUFPLEdBQUcsY0FBYyxJQUFJLGdCQUFRLFVBQVUsS0FBSyxNQUFNLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSwyQkFBdUI7QUFBQSxRQUM3SixjQUFjLEdBQUcsVUFBVSxhQUMxQixnQkFBQUEsS0FBQyxTQUFJLE9BQU8sRUFBRSxlQUFlLE9BQU8sWUFBWSxHQUFHLE9BQU8sR0FBRyxHQUMzRCwwQkFBQUEsS0FBQyxlQUFZLFNBQVEsUUFBTyxPQUFPLGNBQWMsRUFBRSxVQUFVLEdBQUcsT0FBTyxJQUFJLFlBQVksT0FBTyxPQUFPLE9BQU8sR0FBRyxHQUNqSDtBQUFBLFNBRUosSUFFQSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sVUFBVSxXQUFXLEdBQUksVUFBQU0sTUFBSyxZQUFXO0FBQUEsTUFDMUUsZ0JBQUFOLEtBQUMsU0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUc7QUFBQSxNQUM1QixRQUFRLElBQUksY0FBYyxNQUFNO0FBQy9CLGNBQU0sUUFBUSxjQUFjO0FBQzVCLGVBQU8sZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUkscUJBQU0sTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUMsV0FBUSxNQUFNLEdBQUcsWUFBUyxRQUFRLEVBQUUsV0FBVyxNQUFNLFVBQVM7QUFBQSxNQUM1SSxHQUFHO0FBQUEsTUFDRixpQkFBaUIsS0FBSyxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxvQkFBSyxjQUFjLElBQUc7QUFBQSxNQUM3RSxnQkFBQUEsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE9BQU8sRUFBRSxHQUFJLFVBQUFTLE9BQU0sRUFBRSxNQUFLO0FBQUEsTUFDL0MsY0FBYyxLQUFLLE9BQU8sS0FBSyxnQkFBQVQsS0FBQyxVQUFLLE9BQU8sRUFBRSxPQUFPLE1BQU0sR0FBSSxrQkFBSyxPQUFPLENBQUMsSUFBRztBQUFBLE1BQ2hGLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLG9CQUFDO0FBQUEsTUFDaEMsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsd0JBQUFELEtBQUMsaUJBQWMsT0FBTyxNQUFNLGNBQWMsT0FBTyxPQUFPLFdBQVcsT0FBTyxHQUFHLFFBQVEsZUFBZTtBQUFBLFFBQ3BHLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLGlCQUFHO0FBQUEsU0FDcEM7QUFBQSxNQUNBLGdCQUFBQSxLQUFDLFVBQUssT0FBTyxFQUFFLE9BQU8sTUFBTSxHQUFHLG9CQUFDO0FBQUEsTUFDaEMsZ0JBQUFDLE1BQUMsU0FBSSxPQUFPLEVBQUUsZUFBZSxNQUFNLEdBQ2pDO0FBQUEsd0JBQUFELEtBQUMsaUJBQWMsT0FBTyxNQUFNLGtCQUFrQixPQUFPLE9BQU8sV0FBVyxPQUFPLEdBQUcsUUFBUSxlQUFlO0FBQUEsUUFDeEcsZ0JBQUFBLEtBQUMsVUFBSyxPQUFPLEVBQUUsT0FBTyxNQUFNLEdBQUcsa0JBQUk7QUFBQSxTQUNyQztBQUFBLE1BQ0MsTUFBTSxnQkFBZ0IsS0FBSyxnQkFBQUEsS0FBQyxpQkFBYyxPQUFPLE1BQU0sZUFBZSxPQUFPLE9BQU8sV0FBVyxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sVUFBSyxLQUFLLE1BQU0sQ0FBQyxFQUFFLGVBQWUsQ0FBQyxVQUFVO0FBQUEsTUFDckssaUJBQWlCLEtBQUssZ0JBQUFBLEtBQUMsaUJBQWMsT0FBTyxnQkFBZ0IsT0FBTyxrQkFBa0IsS0FBSyxNQUFNLE9BQU8sV0FBVyxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEtBQUs7QUFBQSxPQUN2SztBQUFBLEtBQ0Y7QUFFSjs7O0FMbnBFd0IsZ0JBQUEyQixZQUFBO0FBckp4QixJQUFNLE1BQU0sS0FBSyxNQUFNQyxjQUFhLElBQUksSUFBSSxtQkFBbUIsWUFBWSxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBRXpGLElBQUk7QUFDSixJQUFJO0FBQ0YsUUFBTSxVQUFVLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQztBQUN2QyxTQUFTLEtBQUs7QUFDWixVQUFRLE1BQU0sU0FBUyxJQUFJLE9BQU8sRUFBRTtBQUNwQyxVQUFRLE1BQU0sS0FBSztBQUNuQixVQUFRLEtBQUssQ0FBQztBQUNoQjtBQUNBLElBQUksSUFBSSxTQUFTLFFBQVE7QUFDdkIsVUFBUSxJQUFJLEtBQUs7QUFDakIsVUFBUSxLQUFLLENBQUM7QUFDaEI7QUFDQSxJQUFJLElBQUksU0FBUyxXQUFXO0FBQzFCLFVBQVEsSUFBSSxJQUFJLE9BQU87QUFDdkIsVUFBUSxLQUFLLENBQUM7QUFDaEI7QUFDQSxJQUFJLElBQUksU0FBUyxVQUFVO0FBQ3pCLFFBQU0sRUFBRSxjQUFBQyxlQUFjLFdBQUFDLFlBQVcsb0JBQUFDLHFCQUFvQixjQUFBQyxjQUFhLElBQUksTUFBTTtBQUM1RSxNQUFJSCxjQUFhLFlBQVksR0FBRyxHQUFHO0FBQ2pDLFlBQVEsTUFBTSxvRUFBb0U7QUFDbEYsWUFBUSxLQUFLLENBQUM7QUFBQSxFQUNoQjtBQUNBLFFBQU0sU0FBUyxNQUFNRSxvQkFBbUIsRUFBRSxNQUFNLE1BQU0sSUFBSTtBQUMxRCxNQUFJLFVBQVUsQ0FBQ0MsY0FBYSxJQUFJLFNBQVMsTUFBTSxHQUFHO0FBQ2hELFlBQVEsSUFBSSxTQUFTLElBQUksT0FBTyx3QkFBd0I7QUFDeEQsWUFBUSxLQUFLLENBQUM7QUFBQSxFQUNoQjtBQUNBLFVBQVEsTUFBTSxxQkFBcUIsU0FBUyxPQUFPLE1BQU0sTUFBTSxFQUFFLFlBQVk7QUFDN0UsUUFBTSxTQUFTLE1BQU1GLFdBQVU7QUFDL0IsTUFBSSxPQUFPLElBQUk7QUFDYixZQUFRLElBQUksVUFBVSxTQUFTLFFBQVEsTUFBTSxLQUFLLEVBQUUsRUFBRTtBQUN0RCxZQUFRLEtBQUssQ0FBQztBQUFBLEVBQ2hCO0FBQ0EsVUFBUSxNQUFNO0FBQUEsRUFBbUIsT0FBTyxNQUFNLEVBQUU7QUFDaEQsVUFBUSxLQUFLLENBQUM7QUFDaEI7QUFDQSxJQUFJLElBQUksU0FBUyxXQUFXO0FBQzFCLFFBQU0sRUFBRSxlQUFBRyxlQUFjLElBQUksTUFBTTtBQUNoQyxNQUFJO0FBQ0YsWUFBUSxNQUFNLDZDQUE2QztBQUMzRCxVQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU1BLGVBQWMsRUFBRSxPQUFPLENBQUMsUUFBUSxRQUFRLE1BQU07QUFBQSxFQUF3QyxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3RILFlBQVEsSUFBSSxnQkFBZ0IsU0FBUyxzQkFBc0IsRUFBRTtBQUM3RCxZQUFRLEtBQUssQ0FBQztBQUFBLEVBQ2hCLFNBQVMsS0FBSztBQUNaLFlBQVEsTUFBTSxtQkFBbUIsSUFBSSxPQUFPLEVBQUU7QUFDOUMsWUFBUSxLQUFLLENBQUM7QUFBQSxFQUNoQjtBQUNGO0FBQ0EsSUFBSSxJQUFJLFNBQVMsWUFBWTtBQUMzQixRQUFNLEVBQUUsYUFBQUMsYUFBWSxJQUFJLE1BQU07QUFDOUIsVUFBUSxLQUFLLE1BQU1BLGFBQVksR0FBRyxDQUFDO0FBQ3JDO0FBRUEsSUFBTSxPQUFPLGFBQWE7QUFDMUIsSUFBTSxVQUFVLE1BQU0sZ0JBQWdCO0FBQ3RDLElBQU0sWUFBWSxDQUFDLEdBQUcsVUFBVSxJQUFJLEdBQUcsR0FBSSxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBRTtBQUNwRSxJQUFNLGNBQWMsTUFBTSxZQUFZO0FBQ3RDLElBQU0sYUFBYSxVQUFVLE1BQU0sa0JBQWtCLEVBQUUsTUFBTSxNQUFNLElBQUksSUFBSTtBQUMzRSxJQUFNLFNBQVM7QUFBQSxFQUNiLEdBQUcsY0FBYyxhQUFhLENBQUMsVUFBVSxhQUFhLFVBQVUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU87QUFBQSxJQUNsRixHQUFHO0FBQUEsSUFDSCxXQUFXLFVBQVUsU0FBUyxFQUFFLFFBQVE7QUFBQSxJQUN4QyxTQUFTLFFBQVEsRUFBRSxRQUFRO0FBQUEsRUFDN0IsRUFBRTtBQUFBLEVBQ0YsSUFBSSxNQUFNLGdCQUFnQixVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU87QUFBQSxJQUNqRCxHQUFHO0FBQUEsSUFDSCxTQUFTLEVBQUUsV0FDTixZQUFZLFFBQVEsU0FBUyxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxTQUMzRCxZQUFZLFFBQVEsU0FBUyxFQUFFLEtBQUssTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxXQUMzRDtBQUFBLElBQ0wsV0FBVztBQUFBLElBQ1gsU0FBUztBQUFBLEVBQ1gsRUFBRTtBQUNKO0FBRUEsSUFBSSxVQUFVLFdBQVcsR0FBRztBQUMxQixVQUFRLE1BQU0sNkJBQTZCO0FBQzNDLFVBQVEsTUFBTSw0RUFBNEU7QUFDMUYsVUFBUSxNQUFNLGdEQUFnRDtBQUM5RCxVQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLElBQUksWUFBWSxNQUFNO0FBQUM7QUFDdkIsSUFBSSxlQUFlLE1BQU07QUFBQztBQUMxQixJQUFJLGFBQWEsTUFBTTtBQUFDO0FBQ3hCLElBQU0sU0FBUyxtQkFBbUI7QUFBQSxFQUNoQyxVQUFVLE1BQU0sYUFBYTtBQUFBLEVBQzdCLFFBQVEsQ0FBQyxVQUFVLFdBQVcsS0FBSztBQUNyQyxDQUFDO0FBQ0QsUUFBUSxHQUFHLFFBQVEsTUFBTSxPQUFPLFFBQVEsQ0FBQztBQUV6QyxJQUFJLGdCQUFnQixNQUFNO0FBQUM7QUFDM0IsSUFBSSxjQUFjLE1BQU07QUFBQztBQUN6QixJQUFNLFVBQVUsb0JBQW9CO0FBQUEsRUFDbEMsVUFBVSxNQUFNLGNBQWM7QUFBQSxFQUM5QixRQUFRLENBQUMsV0FBVyxZQUFZLE1BQU07QUFDeEMsQ0FBQztBQUVELElBQUksWUFBWSxNQUFNO0FBQUM7QUFDdkIsSUFBTSxNQUFNLGlCQUFpQixFQUFFLFVBQVUsTUFBTSxVQUFVLEVBQUUsQ0FBQztBQUM1RCxRQUFRLEdBQUcsUUFBUSxNQUFNLElBQUksUUFBUSxDQUFDO0FBRXRDLElBQU0sY0FBYyxDQUFDLFFBQVEsaUJBQWlCLEtBQUssRUFBRSxhQUFhLE1BQU0sVUFBVSxFQUFFLENBQUM7QUFFckYsSUFBTSxTQUFTLE1BQU0sV0FBVztBQUNoQyxJQUFNLG9CQUFvQixPQUFPLGdCQUFnQixPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxPQUFPLFlBQVk7QUFFbEcsSUFBTSxnQkFBZ0IsTUFBTSxvQkFBb0I7QUFDaEQsSUFBTSxnQkFBZ0IsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxPQUFPLEtBQUssSUFBSSxPQUFPLFFBQVE7QUFDekYsV0FBVyxpQkFBaUIsYUFBYTtBQUN6QyxJQUFNLFFBQVEsRUFBRSxRQUFRLGdCQUFnQixPQUFPLE1BQU07QUFFckQsSUFBTSxPQUFPO0FBQUEsRUFDWCxHQUFJLE1BQU0sWUFBWSxRQUFRLElBQUksQ0FBQztBQUFBLEVBQ25DO0FBQUEsRUFDQSxTQUFTLElBQUk7QUFBQSxFQUNiO0FBQUEsRUFDQTtBQUFBLEVBQ0EsY0FBYyxxQkFBcUIsYUFBYSxNQUFNO0FBQUEsRUFDdEQsZUFBZSxPQUFPLFFBQVEsa0JBQWtCO0FBQUEsRUFDaEQsb0JBQW9CLE9BQU8sVUFBVSxPQUFPLFVBQVUsVUFBVSxLQUFLLE9BQU8sU0FBUyxjQUFjLEtBQUssT0FBTyxTQUFTLGNBQWMsTUFDbEksT0FBTyxTQUFTLGFBQ2hCO0FBQUEsRUFDSjtBQUFBLEVBQ0EsV0FBVyxpQkFBaUI7QUFBQSxFQUM1QixRQUFRLGNBQWMsTUFBTTtBQUFBLEVBQzVCLGVBQWUsQ0FBQyxPQUFPLFVBQVUsUUFBUSxLQUFLLEVBQUUsU0FBUyxPQUFPLGFBQWEsSUFBSSxPQUFPLGdCQUFnQjtBQUFBLEVBQ3hHLGFBQWEsT0FBTyxnQkFBZ0I7QUFBQSxFQUNwQyxRQUFRLE9BQU8sV0FBVyxXQUFXO0FBQUEsRUFDckMsb0JBQW9CLE9BQU8sU0FBUyx1QkFBdUI7QUFBQSxFQUMzRCxXQUFXLE9BQU8sU0FBUyxjQUFjO0FBQUEsRUFDekMsTUFBTSxDQUFDO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQSxjQUFjLENBQUMsT0FBTztBQUFFLGdCQUFZO0FBQUEsRUFBRztBQUFBLEVBQ3ZDLGNBQWMsQ0FBQyxPQUFPO0FBQUUsZ0JBQVk7QUFBQSxFQUFHO0FBQUEsRUFDdkMsaUJBQWlCLENBQUMsT0FBTztBQUFFLG1CQUFlO0FBQUEsRUFBRztBQUFBLEVBQzdDLGVBQWUsQ0FBQyxPQUFPO0FBQUUsaUJBQWE7QUFBQSxFQUFHO0FBQUEsRUFDekMsa0JBQWtCLENBQUMsT0FBTztBQUFFLG9CQUFnQjtBQUFBLEVBQUc7QUFBQSxFQUMvQyxnQkFBZ0IsQ0FBQyxPQUFPO0FBQUUsa0JBQWM7QUFBQSxFQUFHO0FBQUEsRUFDM0MsU0FBUztBQUNYO0FBRUEsSUFBSSxTQUFTLEtBQUssSUFBSTtBQUN0QixJQUFJLFdBQVcsS0FBSyxTQUFTO0FBRTdCLElBQU0sTUFBTSxNQUFNLE1BQU0sZ0JBQUFQLEtBQUMsT0FBSSxNQUFZLEdBQUksRUFBRSxPQUFPLGFBQVUsS0FBSyxLQUFLLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztBQUNyRyxLQUFLLFdBQVcsSUFBSTtBQUNwQixLQUFLLElBQUksV0FBVzsiLAogICJuYW1lcyI6IFsia2V5cyIsICJtb2RlbHMiLCAibW9kZWwiLCAiam9pbiIsICJwcm92aWRlcnMiLCAiY2FjaGVkIiwgIm1vZGVscyIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJjYWNoZUZpbGUiLCAiY2FjaGVkIiwgIlRUTCIsICJtb2RlbHMiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImpvaW4iLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJjb25maWciLCAiZXhpc3RzU3luYyIsICJob21lZGlyIiwgImRpcm5hbWUiLCAiam9pbiIsICJyZXNvbHZlIiwgInJlYWRGaWxlIiwgImpvaW4iLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJqb2luIiwgInNjYW5EaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImNvbmZpZyIsICJmZXRjaCIsICJzY29wZSIsICJwZW5kaW5nIiwgInJlZ2lzdHJ5IiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAid3JpdGVGaWxlIiwgImpvaW4iLCAic2NhbkRpciIsICJzY29wZSIsICJob21lZGlyIiwgImNvbmZpZyIsICJzaGVsbHMiLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJkaXJuYW1lIiwgImpvaW4iLCAic2NvcGUiLCAicGFyc2VBcmdzIiwgImNhbGwiLCAicmVhZEZpbGUiLCAicmVhZEZpbGUiLCAicmVzb2x2ZSIsICJNQVhfTElORVMiLCAibWtkaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImRpcm5hbWUiLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJzaGVsbHMiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJyZXNvbHZlIiwgImV4ZWNGaWxlIiwgInJlc29sdmUiLCAiTUFYX1JFU1VMVFMiLCAic2hlbGxzIiwgIndha2V1cHMiLCAidG9vbHMiLCAibW9kZWwiLCAic2NvcGUiLCAiZXhlYyIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJyZXNvbHZlIiwgImV4aXN0c1N5bmMiLCAiam9pbiIsICJtb2RlbHMiLCAicHJvdmlkZXJzIiwgImNoYXRncHQiLCAiY2F0YWxvZ0RhdGEiLCAiY29kZXhDcmVkcyIsICJjb25maWciLCAibW9kZWwiLCAiYm9vdCIsICJzaGVsbHMiLCAicmVhZEZpbGVTeW5jIiwgInJlc29sdmUiLCAidGhlbWUiLCAid2FrZXVwcyIsICJzcGF3biIsICJyZWFkRmlsZVN5bmMiLCAiZGlybmFtZSIsICJqb2luIiwgInJlc29sdmUiLCAiZXhpc3RzU3luYyIsICJ3cml0ZUZpbGUiLCAiaG9tZWRpciIsICJqb2luIiwgImNyZWF0ZVNpZ25hbCIsICJNZW51IiwgIlNjcm9sbEJveCIsICJTcGlubmVyIiwgInVzZUZvY3VzIiwgInVzZUlucHV0IiwgInVzZUxheW91dCIsICJ1c2VNb3VzZSIsICJhcHBlbmRGaWxlIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAiam9pbiIsICJzY29wZSIsICJnZXRUZXh0IiwgInJlc29sdmUiLCAicmVhZGRpciIsICJzdGF0IiwgImpvaW4iLCAic2NhbkRpciIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJmZyIsICJUVEwiLCAicmVzb2x2ZSIsICJjcmVhdGVTaWduYWwiLCAicGVuZGluZyIsICJjcmVhdGVTaWduYWwiLCAidGhlbWUiLCAiaGlnaGxpZ2h0IiwgImVhc2UiLCAibGluZWFyIiwgInVzZUFuaW1hdGVkIiwgImpzeCIsICJtaXhDb2xvciIsICJ1c2VBbmltYXRlZCIsICJlYXNlIiwgImxpbmVhciIsICJmYWlsZWQiLCAiY3JlYXRlU2lnbmFsIiwgImpzeCIsICJqc3hzIiwgImNyZWF0ZVNpZ25hbCIsICJpdGVtIiwgImNyZWF0ZVNpZ25hbCIsICJqc3giLCAianN4cyIsICJ2ZXJzaW9uIiwgImNyZWF0ZVNpZ25hbCIsICJNYXJrZG93biIsICJ1c2VJbnB1dCIsICJqc3giLCAianN4cyIsICJ1c2VJbnB1dCIsICJNYXJrZG93biIsICJjcmVhdGVTaWduYWwiLCAiQnV0dG9uIiwgImVhc2UiLCAiU2Nyb2xsQm94IiwgIlRleHRJbnB1dCIsICJ1c2VBbmltYXRlZCIsICJ1c2VJbnB1dCIsICJ1c2VJbnRlcnZhbCIsICJob21lZGlyIiwgImpzeCIsICJqc3hzIiwgInVzZUlucHV0IiwgIlRleHRJbnB1dCIsICJtb2RlbCIsICJCdXR0b24iLCAiU2Nyb2xsQm94IiwgIm1vZGVscyIsICJjcmVhdGVTaWduYWwiLCAidXNlQW5pbWF0ZWQiLCAiZWFzZSIsICJwcm92aWRlcnMiLCAid2FrZXVwcyIsICJ1c2VJbnRlcnZhbCIsICJzY29wZSIsICJuYW1lIiwgImpzeCIsICJqc3hzIiwgImNhbGwiLCAidXNlTGF5b3V0IiwgImNyZWF0ZVNpZ25hbCIsICJ1c2VNb3VzZSIsICJib290IiwgInZlcnNpb24iLCAibW9kZWxzIiwgIm1vZGVsIiwgImRlZmF1bHRNb2RlbCIsICJpdGVtcyIsICJyZXNlYXJjaEFnZW50TGltaXQiLCAicmVzb2x2ZSIsICJ1c2FnZSIsICJqb2luIiwgIndyaXRlRmlsZSIsICJob21lZGlyIiwgInVzZUZvY3VzIiwgInVzZUlucHV0IiwgImV4aXN0c1N5bmMiLCAiU2Nyb2xsQm94IiwgIk1lbnUiLCAicGVuZGluZyIsICJzY29wZSIsICJlbGFwc2VkIiwgIlNwaW5uZXIiLCAianN4IiwgInJlYWRGaWxlU3luYyIsICJpc0Rldkluc3RhbGwiLCAicnVuVXBkYXRlIiwgImZldGNoTGF0ZXN0VmVyc2lvbiIsICJuZXdlclZlcnNpb24iLCAiY29ubmVjdE9wZW5BSSIsICJydW5IZWFkbGVzcyJdCn0K
|
|
7792
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUva2V5cy5qcyIsICIuLi9zcmMvY29yZS9tb2RlbHMuanMiLCAiLi4vc3JjL2NvcmUvcGF0aHMuanMiLCAiLi4vc3JjL2NvcmUvY2F0YWxvZy1zbmFwc2hvdC5qc29uIiwgIi4uL3NyYy9jb3JlL2NhdGFsb2cuanMiLCAiLi4vc3JjL2NvcmUvY29kZXgtbW9kZWxzLmpzIiwgIi4uL3NyYy9jb3JlL29wZW5haS1hdXRoLmpzIiwgIi4uL3NyYy9jb3JlL2NvbmZpZy5qcyIsICIuLi9zcmMvY29yZS9jb250ZXh0LmpzIiwgIi4uL3NyYy9jb3JlL3NraWxscy5qcyIsICIuLi9zcmMvY29yZS9jb21tYW5kcy5qcyIsICIuLi9zcmMvY29yZS9tY3AuanMiLCAiLi4vc3JjL2NvcmUvbWVtb3J5LmpzIiwgIi4uL3NyYy9jb3JlL2Jvb3QuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd2ViLmpzIiwgIi4uL3NyYy9jb3JlL3NoZWxscy5qcyIsICIuLi9zcmMvY29yZS9ldmVudHMuanMiLCAiLi4vc3JjL2NvcmUvc2Vzc2lvbi5qcyIsICIuLi9zcmMvY29yZS9jb21wYWN0aW9uLmpzIiwgIi4uL3NyYy9jb3JlL2Rlcml2ZS5qcyIsICIuLi9zcmMvY29yZS9hZ2VudC5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWNvcmRlci5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWFkLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2RpZmYuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd3JpdGUuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZWRpdC5qcyIsICIuLi9zcmMvY29yZS90b29scy9iYXNoLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2dsb2IuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZ3JlcC5qcyIsICIuLi9zcmMvY29yZS90b29scy9pbmRleC5qcyIsICIuLi9zcmMvY29yZS9zeXN0ZW0tcHJvbXB0LmpzIiwgIi4uL3NyYy9jb3JlL3VwZGF0ZS5qcyIsICIuLi9zcmMvdWkvZnV6enkuanMiLCAiLi4vc3JjL3VpL2F0dGFjaG1lbnRzLmpzIiwgIi4uL3NyYy9oZWFkbGVzcy5qcyIsICIuLi9zcmMvbWFpbi5qc3giLCAiLi4vc3JjL2NsaS1hcmdzLmpzIiwgIi4uL3NyYy9jb3JlL3Rlcm1pbmFsLXRoZW1lLmpzIiwgIi4uL3NyYy9jb3JlL3dha2V1cHMuanMiLCAiLi4vc3JjL2NvcmUvZ2l0LmpzIiwgIi4uL3NyYy91aS9hcHAuanN4IiwgIi4uL3NyYy9jb3JlL2hpc3RvcnkuanMiLCAiLi4vc3JjL2NvcmUvYWdlbnRzLmpzIiwgIi4uL3NyYy9jb3JlL3VzZXItdG9vbHMuanMiLCAiLi4vc3JjL2NvcmUvcmV3aW5kLmpzIiwgIi4uL3NyYy9jb3JlL2V4cG9ydC5qcyIsICIuLi9zcmMvdWkvY29tcGxldGlvbi5qcyIsICIuLi9zcmMvdWkvZmlsZXMuanMiLCAiLi4vc3JjL3VpL2hpZ2hsaWdodC5qcyIsICIuLi9zcmMvdWkvdGhlbWUuanMiLCAiLi4vc3JjL3VpL2Zvcm1hdC5qcyIsICIuLi9zcmMvdWkvYW5pbWF0ZWQtdmFsdWUuanN4IiwgIi4uL3NyYy91aS90cmFuc2NyaXB0LmpzeCIsICIuLi9zcmMvdWkvcXVlc3Rpb24tZm9ybS5qc3giLCAiLi4vc3JjL3VpL2VtcHR5LXN0YXRlLmpzeCIsICIuLi9zcmMvdWkvaGVscC5qc3giLCAiLi4vc3JjL3VpL3BhbmVscy5qc3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHNldEtleXMgfSBmcm9tICdAcHJzbS9haSdcblxuY29uc3QgUFJPVklERVJTID0gW1xuICB7IGlkOiAnZ29vZ2xlJywgbGFiZWw6ICdHZW1pbmknLCBlbnY6IFsnR0VNSU5JX0FQSV9LRVknLCAnR09PR0xFX0FJX0FQSV9LRVknXSB9LFxuICB7IGlkOiAnYW50aHJvcGljJywgbGFiZWw6ICdDbGF1ZGUnLCBlbnY6IFsnQU5USFJPUElDX0FQSV9LRVknXSB9LFxuICB7IGlkOiAnb3BlbmFpJywgbGFiZWw6ICdPcGVuQUknLCBlbnY6IFsnT1BFTkFJX0FQSV9LRVknXSB9LFxuICB7IGlkOiAneGFpJywgbGFiZWw6ICdHcm9rJywgZW52OiBbJ1hBSV9BUElfS0VZJ10gfSxcbl1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc2NvdmVyS2V5cyhlbnYgPSBwcm9jZXNzLmVudikge1xuICBjb25zdCBrZXlzID0ge31cbiAgZm9yIChjb25zdCBwIG9mIFBST1ZJREVSUykge1xuICAgIGNvbnN0IG5hbWUgPSBwLmVudi5maW5kKChuKSA9PiBlbnZbbl0pXG4gICAgaWYgKG5hbWUpIGtleXNbcC5pZF0gPSBlbnZbbmFtZV1cbiAgfVxuICByZXR1cm4ga2V5c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlLZXlzKGtleXMpIHtcbiAgc2V0S2V5cyhrZXlzKVxuICByZXR1cm4gT2JqZWN0LmtleXMoa2V5cylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtleUhpbnQocHJvdmlkZXJJZCkge1xuICByZXR1cm4gUFJPVklERVJTLmZpbmQoKHApID0+IHAuaWQgPT09IHByb3ZpZGVySWQpPy5lbnZbMF0gfHwgYCR7cHJvdmlkZXJJZC50b1VwcGVyQ2FzZSgpfV9BUElfS0VZYFxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBmaW5kTW9kZWwobW9kZWxzLCBuYW1lKSB7XG4gIHJldHVybiBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBuYW1lKSB8fCBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0TW9kZWwobW9kZWxzKSB7XG4gIHJldHVybiBtb2RlbHMuZmluZCgobSkgPT4gbS5hdmFpbGFibGUgIT09IGZhbHNlKSB8fCBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc3RpbWF0ZUNvc3QobW9kZWwsIHVzYWdlKSB7XG4gIGlmICghbW9kZWw/LnByaWNlIHx8ICF1c2FnZSkgcmV0dXJuIDBcbiAgY29uc3QgaW5Db3N0ID0gKHVzYWdlLnByb21wdFRva2VucyB8fCAwKSAqIG1vZGVsLnByaWNlLmluXG4gIGNvbnN0IG91dENvc3QgPSAodXNhZ2UuY29tcGxldGlvblRva2VucyB8fCAwKSAqIG1vZGVsLnByaWNlLm91dFxuICByZXR1cm4gKGluQ29zdCArIG91dENvc3QpIC8gMWU2XG59XG4iLCAiaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuZXhwb3J0IGZ1bmN0aW9uIHBpY29Ib21lKCkge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuUElDT19IT01FIHx8IGpvaW4oaG9tZWRpcigpLCAnLnBpY28nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdEtleShyb290KSB7XG4gIHJldHVybiByZXNvbHZlKHJvb3QpLnJlcGxhY2UoL1svXFxcXDpdL2csICctJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQcm9qZWN0Um9vdChjd2QpIHtcbiAgbGV0IGRpciA9IHJlc29sdmUoY3dkKVxuICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGV4aXN0c1N5bmMoam9pbihkaXIsICcuZ2l0JykpKSByZXR1cm4gZGlyXG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpXG4gICAgaWYgKHBhcmVudCA9PT0gZGlyIHx8IGRpciA9PT0gaG9tZSkgcmV0dXJuIHJlc29sdmUoY3dkKVxuICAgIGRpciA9IHBhcmVudFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0RGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ3Byb2plY3RzJywgcHJvamVjdEtleShyb290KSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlc3Npb25zRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ3Nlc3Npb25zJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlc3Npb25TY3JhdGNoRGlyKHJvb3QsIHNlc3Npb25JZCkge1xuICByZXR1cm4gam9pbihwcm9qZWN0RGlyKHJvb3QpLCAnc2NyYXRjaHBhZHMnLCBzZXNzaW9uSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZ2VudFNjcmF0Y2hEaXIocm9vdCwgc2Vzc2lvbklkLCBhZ2VudElkKSB7XG4gIHJldHVybiBqb2luKHNlc3Npb25TY3JhdGNoRGlyKHJvb3QsIHNlc3Npb25JZCksIGBhZ2VudC0ke2FnZW50SWR9YClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RIaXN0b3J5RmlsZShyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdoaXN0b3J5Lmpzb25sJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RNY3BGaWxlKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ21jcC5qc29uJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbE1jcEZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtY3AuanNvbicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxTa2lsbHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdza2lsbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdFNraWxsc0Rpcihyb290KSB7XG4gIHJldHVybiBqb2luKHJvb3QsICcucGljbycsICdza2lsbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsQWdlbnRzRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ0FHRU5UUy5tZCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVEaXIoZGlyKSB7XG4gIG1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIHJldHVybiBkaXJcbn1cbiIsICJ7XCJnb29nbGVcIjp7XCJtb2RlbHNcIjp7XCJnZW1pbmktMi41LWZsYXNoLWltYWdlXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2gtaW1hZ2VcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hXCIsXCJkZXNjcmlwdGlvblwiOlwiTmFubyBCYW5hbmEgaW1hZ2UgbW9kZWwgZm9yIGZhc3QgZ2VuZXJhdGlvbiwgZWRpdHMsIGFuZCBjaGFyYWN0ZXItY29uc2lzdGVudCBhc3NldHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MzI3NjgsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjA3NX19LFwiZ2VtaW5pLTIuNS1mbGFzaC1wcmV2aWV3LXR0c1wiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLXByZXZpZXctdHRzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IEZsYXNoIFByZXZpZXcgVFRTXCIsXCJkZXNjcmlwdGlvblwiOlwiU3BlZWNoIGdlbmVyYXRpb24gbW9kZWwgZm9yIGNvbnRyb2xsYWJsZSB2b2ljZSwgbmFycmF0aW9uLCBhbmQgYXVkaW8gZGVsaXZlcnlcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDUtMDFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjEwfX0sXCJnZW1pbmktMy4xLWZsYXNoLWxpdGVcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1mbGFzaC1saXRlXCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIEZsYXNoIExpdGVcIixcImRlc2NyaXB0aW9uXCI6XCJMb3ctbGF0ZW5jeSBHZW1pbmkgbW9kZWwgZm9yIGhpZ2gtdm9sdW1lIG11bHRpbW9kYWwgYW5kIGFnZW50IHdvcmtsb2Fkc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA1LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDUtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4yNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowLjAyNSxcImlucHV0X2F1ZGlvXCI6MC41fX0sXCJnZW1pbmktMy41LWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0zLjUtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAzLjUgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSBtb2RlbCBiYWxhbmNpbmcgbXVsdGltb2RhbCByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgY29zdFwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4xNSxcImlucHV0X2F1ZGlvXCI6MS41fX0sXCJnZW1tYS00LTI2Yi1hNGItaXRcIjp7XCJpZFwiOlwiZ2VtbWEtNC0yNmItYTRiLWl0XCIsXCJuYW1lXCI6XCJHZW1tYSA0IDI2QiBBNEIgSVRcIixcImRlc2NyaXB0aW9uXCI6XCJPcGVuIEdlbW1hIGluc3RydWN0aW9uIG1vZGVsIGZvciBlZmZpY2llbnQgY2hhdCBhbmQgc2VsZi1ob3N0ZWQgZGVwbG95bWVudHNcIixcImZhbWlseVwiOlwiZ2VtbWFcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTAyXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMDJcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjp0cnVlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjYyMTQ0LFwib3V0cHV0XCI6MzI3Njh9fSxcImdlbWluaS0yLjAtZmxhc2hcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuMC1mbGFzaFwiLFwibmFtZVwiOlwiR2VtaW5pIDIuMCBGbGFzaFwiLFwiZGVzY3JpcHRpb25cIjpcIkVhcmxpZXIgR2VtaW5pIEZsYXNoIHdvcmtob3JzZSBmb3IgcmVzcG9uc2l2ZSBtdWx0aW1vZGFsIGFwcHMgYW5kIHRvb2wgdXNlXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjgxOTJ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdlbWluaS0zLXByby1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLXByby1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMyBQcm8gUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIlByZXZpZXcgR2VtaW5pIGZsYWdzaGlwIGZvciBjb21wbGV4IHJlYXNvbmluZywgY29kaW5nLCBhbmQgcmljaCBtdWx0aW1vZGFsIHByb21wdHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTE4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJnZW1pbmktMy4xLWZsYXNoLWxpdGUtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLWZsYXNoLWxpdGUtcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBGbGFzaCBMaXRlIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJMZWdhY3kgbW9kZWwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBpbnRlZ3JhdGlvbnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4yNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowLjAyNSxcImlucHV0X2F1ZGlvXCI6MC41fX0sXCJnZW1tYS00LTMxYi1pdFwiOntcImlkXCI6XCJnZW1tYS00LTMxYi1pdFwiLFwibmFtZVwiOlwiR2VtbWEgNCAzMUIgSVRcIixcImRlc2NyaXB0aW9uXCI6XCJMYXJnZXN0IEdlbW1hIDQgaW5zdHJ1Y3Rpb24gbW9kZWwgZm9yIG9wZW4sIHNlbGYtaG9zdGVkIGNoYXQgYW5kIHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJnZW1tYVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMDJcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0wMlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOnRydWUsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyNjIxNDQsXCJvdXRwdXRcIjozMjc2OH19LFwiZ2VtaW5pLTMtcHJvLWltYWdlLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMtcHJvLWltYWdlLXByZXZpZXdcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hIFByb1wiLFwiZGVzY3JpcHRpb25cIjpcIk5hbm8gQmFuYW5hIFBybyBmb3IgaGlnaGVyLWZpZGVsaXR5IGltYWdlIGdlbmVyYXRpb24gYW5kIGRlc2lnbi1oZWF2eSBlZGl0c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTMxMDcyLFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyMH19LFwiZ2VtaW5pLWVtYmVkZGluZy0wMDFcIjp7XCJpZFwiOlwiZ2VtaW5pLWVtYmVkZGluZy0wMDFcIixcIm5hbWVcIjpcIkdlbWluaSBFbWJlZGRpbmcgMDAxXCIsXCJkZXNjcmlwdGlvblwiOlwiRW1iZWRkaW5nIG1vZGVsIGZvciBzZW1hbnRpYyBzZWFyY2gsIHJldHJpZXZhbCwgY2x1c3RlcmluZywgYW5kIHJhbmtpbmcgcGlwZWxpbmVzXCIsXCJmYW1pbHlcIjpcImdlbWluaVwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA1LTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwNDgsXCJvdXRwdXRcIjoxfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTUsXCJvdXRwdXRcIjowfX0sXCJnZW1pbmktMi4wLWZsYXNoLWxpdGVcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuMC1mbGFzaC1saXRlXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi4wIEZsYXNoLUxpdGVcIixcImRlc2NyaXB0aW9uXCI6XCJMZWdhY3kgbW9kZWwgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBpbnRlZ3JhdGlvbnNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo4MTkyfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4wNzUsXCJvdXRwdXRcIjowLjN9fSxcImdlbWluaS0yLjUtcHJvLXByZXZpZXctdHRzXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtcHJvLXByZXZpZXctdHRzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IFBybyBQcmV2aWV3IFRUU1wiLFwiZGVzY3JpcHRpb25cIjpcIlNwZWVjaCBnZW5lcmF0aW9uIG1vZGVsIGZvciBjb250cm9sbGFibGUgdm9pY2UsIG5hcnJhdGlvbiwgYW5kIGF1ZGlvIGRlbGl2ZXJ5XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA1LTAxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDUtMDFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJhdWRpb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6MjB9fSxcImdlbWluaS0yLjUtZmxhc2gtbGl0ZVwiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLWxpdGVcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgRmxhc2gtTGl0ZVwiLFwiZGVzY3JpcHRpb25cIjpcIkxlYW4gR2VtaW5pIDIuNSBsYW5lIGZvciBjaGVhcCBtdWx0aW1vZGFsIHRyYWZmaWMgYW5kIHF1aWNrIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjUxMixcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMSxcImlucHV0X2F1ZGlvXCI6MC4zfX0sXCJnZW1pbmktMi41LXByb1wiOntcImlkXCI6XCJnZW1pbmktMi41LXByb1wiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJHb29nbGUncyBwcm92ZW4gcmVhc29uaW5nIG1vZGVsIGZvciBjb2RpbmcsIG1hdGgsIGFuZCBtdWx0aW1vZGFsIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEyOCxcIm1heFwiOjMyNzY4fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1fX19LFwiZ2VtaW5pLW9tbmktZmxhc2gtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktb21uaS1mbGFzaC1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgT21uaSBGbGFzaCBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiVmlkZW8gZ2VuZXJhdGlvbiBhbmQgZWRpdGluZyBtb2RlbCBmb3IgZmFzdCwgY29udmVyc2F0aW9uYWwgdGV4dC0gYW5kIGltYWdlLXRvLXZpZGVvIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0zMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTMwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIl0sXCJvdXRwdXRcIjpbXCJ2aWRlb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEzMTA3MixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjE3LjV9fSxcImdlbWluaS0zLjEtZmxhc2gtaW1hZ2UtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLWZsYXNoLWltYWdlLXByZXZpZXdcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hIDJcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMjZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0yNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NjU1MzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjo2MH19LFwiZ2VtaW5pLTMtZmxhc2gtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1mbGFzaC1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMyBGbGFzaCBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiTmV3IEdlbWluaSBmbGFzaCBsYW5lIGJyaW5naW5nIGZyb250aWVyLXN0eWxlIG11bHRpbW9kYWwgcmVhc29uaW5nIHRvIGNoZWFwZXIgcnVuc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjMsXCJjYWNoZV9yZWFkXCI6MC4wNSxcImlucHV0X2F1ZGlvXCI6MX19LFwiZ2VtaW5pLTMuMS1wcm8tcHJldmlldy1jdXN0b210b29sc1wiOntcImlkXCI6XCJnZW1pbmktMy4xLXByby1wcmV2aWV3LWN1c3RvbXRvb2xzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIFBybyBQcmV2aWV3IEN1c3RvbSBUb29sc1wiLFwiZGVzY3JpcHRpb25cIjpcIkFkdmFuY2VkIEdlbWluaSBtb2RlbCBmb3IgY29tcGxleCByZWFzb25pbmcsIGNvZGluZywgYW5kIG11bHRpbW9kYWwgYW5hbHlzaXNcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJnZW1pbmktZmxhc2gtbGF0ZXN0XCI6e1wiaWRcIjpcImdlbWluaS1mbGFzaC1sYXRlc3RcIixcIm5hbWVcIjpcIkdlbWluaSBGbGFzaCBMYXRlc3RcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSBtb2RlbCBiYWxhbmNpbmcgbXVsdGltb2RhbCByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgY29zdFwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4xNSxcImlucHV0X2F1ZGlvXCI6MS41fX0sXCJnZW1pbmktMi41LWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSB3b3JraG9yc2UgZm9yIG11bHRpbW9kYWwgYXBwcyB3aGVyZSBsYXRlbmN5IGFuZCBwcmljZSBtYXR0ZXJcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MCxcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4wMyxcImlucHV0X2F1ZGlvXCI6MX19LFwiZ2VtaW5pLWZsYXNoLWxpdGUtbGF0ZXN0XCI6e1wiaWRcIjpcImdlbWluaS1mbGFzaC1saXRlLWxhdGVzdFwiLFwibmFtZVwiOlwiR2VtaW5pIEZsYXNoLUxpdGUgTGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiTG93LWxhdGVuY3kgR2VtaW5pIG1vZGVsIGZvciBoaWdoLXZvbHVtZSBtdWx0aW1vZGFsIGFuZCBhZ2VudCB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MC4wMjUsXCJpbnB1dF9hdWRpb1wiOjAuNX19LFwiZ2VtaW5pLTMuMS1wcm8tcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLXByby1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIFBybyBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiUmVhc29uaW5nLWZpcnN0IEdlbWluaSBwcmV2aWV3IGZvciBhZ2VudGljIGNvZGluZyBhbmQgY29tcGxleCBwcm9ibGVtIHNvbHZpbmdcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjR9fX19fSxcImFudGhyb3BpY1wiOntcIm1vZGVsc1wiOntcImNsYXVkZS1vcHVzLTQtOFwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LThcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuOFwiLFwiZGVzY3JpcHRpb25cIjpcIlRvcCBDbGF1ZGUgT3B1cyB0aWVyIGZvciB0aGUgaGFyZGVzdCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDUtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NTAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzcGVlZFwiOlwiZmFzdFwifSxcImhlYWRlcnNcIjp7XCJhbnRocm9waWMtYmV0YVwiOlwiZmFzdC1tb2RlLTIwMjYtMDItMDFcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLW9wdXMtNC0xXCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtMVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC4xIChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjc1LFwiY2FjaGVfcmVhZFwiOjEuNSxcImNhY2hlX3dyaXRlXCI6MTguNzV9fSxcImNsYXVkZS1zb25uZXQtNC02XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC02XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkNsYXVkZSB3b3JraG9yc2UgZm9yIGNvZGluZyBhZ2VudHMsIGNhcmVmdWwgYW5hbHlzaXMsIGFuZCBwcm9kdWN0aW9uIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJtYXhcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19LFwiY2xhdWRlLW9wdXMtNC0xLTIwMjUwODA1XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtMS0yMDI1MDgwNVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjc1LFwiY2FjaGVfcmVhZFwiOjEuNSxcImNhY2hlX3dyaXRlXCI6MTguNzV9fSxcImNsYXVkZS1oYWlrdS00LTVcIjp7XCJpZFwiOlwiY2xhdWRlLWhhaWt1LTQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIEhhaWt1IDQuNSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgQ2xhdWRlIGxhbmUgZm9yIGxpZ2h0d2VpZ2h0IGFnZW50cywgb2ZmaWNlIHRhc2tzLCBhbmQgcmVzcG9uc2l2ZSBjaGF0XCIsXCJmYW1pbHlcIjpcImNsYXVkZS1oYWlrdVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMi0yOFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEwLTE1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTAtMTVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC4xLFwiY2FjaGVfd3JpdGVcIjoxLjI1fX0sXCJjbGF1ZGUtb3B1cy00LTUtMjAyNTExMDFcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC01LTIwMjUxMTAxXCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtc29ubmV0LTQtNS0yMDI1MDkyOVwiOntcImlkXCI6XCJjbGF1ZGUtc29ubmV0LTQtNS0yMDI1MDkyOVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJCYWxhbmNlZCBDbGF1ZGUgbW9kZWwgZm9yIGNvZGluZywgYW5hbHlzaXMsIGFnZW50IHdvcmtmbG93cywgYW5kIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA3LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMjlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0yOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19LFwiY2xhdWRlLWZhYmxlLTVcIjp7XCJpZFwiOlwiY2xhdWRlLWZhYmxlLTVcIixcIm5hbWVcIjpcIkNsYXVkZSBGYWJsZSA1XCIsXCJkZXNjcmlwdGlvblwiOlwiQ2xhdWRlIG1vZGVsIGZvciBjcmVhdGl2ZSB3cml0aW5nLCBhbmFseXNpcywgYW5kIGNvbnRyb2xsZWQgYWdlbnQgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1mYWJsZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDYtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNi0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NTAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19LFwiY2xhdWRlLXNvbm5ldC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA1XCIsXCJkZXNjcmlwdGlvblwiOlwiRXZlcnlkYXkgQ2xhdWRlIGFnZW50IG1vZGVsIGZvciBjb2RpbmcsIHBsYW5uaW5nLCBicm93c2luZywgYW5kIGdlbmVyYWwgd29ya1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDEtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTMwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX0sXCJjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxXCI6e1wiaWRcIjpcImNsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDFcIixcIm5hbWVcIjpcIkNsYXVkZSBIYWlrdSA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IENsYXVkZSBtb2RlbCBmb3IgcmVzcG9uc2l2ZSBhc3Npc3RhbmNlLCBjbGFzc2lmaWNhdGlvbiwgYW5kIGxpZ2h0d2VpZ2h0IGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtaGFpa3VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDItMjhcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNX19LFwiY2xhdWRlLW9wdXMtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC41IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTI0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLW9wdXMtNC03XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtN1wiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC43XCIsXCJkZXNjcmlwdGlvblwiOlwiU3Ryb25nZXIgT3B1cyB0aWVyIGZvciBhZHZhbmNlZCBzb2Z0d2FyZSB3b3JrIGFuZCBoaWdoLXN0YWtlcyByZWFzb25pbmdcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAxLTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTUwLFwiY2FjaGVfcmVhZFwiOjMsXCJjYWNoZV93cml0ZVwiOjM3LjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1vcHVzLTQtNlwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTZcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2gtZW5kIENsYXVkZSBmb3IgZGlmZmljdWx0IGNvZGluZywgcGxhbm5pbmcsIGFuZCBzbG93ZXIgZXhwZXJ0IHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwibWF4XCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTUwLFwiY2FjaGVfcmVhZFwiOjMsXCJjYWNoZV93cml0ZVwiOjM3LjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1zb25uZXQtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIENsYXVkZSBtb2RlbCBmb3IgY29kaW5nLCBhbmFseXNpcywgYWdlbnQgd29ya2Zsb3dzLCBhbmQgY29zdCBjb250cm9sXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1zb25uZXRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDctMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozLFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4zLFwiY2FjaGVfd3JpdGVcIjozLjc1fX19fSxcIm9wZW5haVwiOntcIm1vZGVsc1wiOntcImdwdC01LWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LWNvZGV4XCIsXCJuYW1lXCI6XCJHUFQtNS1Db2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMTVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0xNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS41LXByb1wiOntcImlkXCI6XCJncHQtNS41LXByb1wiLFwibmFtZVwiOlwiR1BULTUuNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXN0LWFjY3VyYWN5IEdQVC01LjUgdGllciBmb3Igc2xvd2VyLCBwcmVjaXNpb24taGVhdnkgcmVhc29uaW5nIGFuZCBjb2RpbmdcIixcImZhbWlseVwiOlwiZ3B0LXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0xMi0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTIzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMjNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTgwLFwidGllcnNcIjpbe1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwfX19LFwibzNcIjp7XCJpZFwiOlwibzNcIixcIm5hbWVcIjpcIm8zXCIsXCJkZXNjcmlwdGlvblwiOlwiRGVsaWJlcmF0ZSBvLXNlcmllcyByZWFzb25lciBmb3IgaGFyZCBtYXRoLCBjb2RpbmcsIGFuZCBtdWx0aS1zdGVwIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcIm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJncHQtNS40XCI6e1wiaWRcIjpcImdwdC01LjRcIixcIm5hbWVcIjpcIkdQVC01LjRcIixcImRlc2NyaXB0aW9uXCI6XCJBZ2VudC1yZWFkeSBHUFQgZm9yIGNvZGluZyBhbmQgY29tcHV0ZXItdXNlIHdvcmtmbG93cyBhdCBhIGxvd2VyIGNvc3RcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MzAsXCJjYWNoZV9yZWFkXCI6MC41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41fX19LFwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCI6e1wiaWRcIjpcIm80LW1pbmktZGVlcC1yZXNlYXJjaFwiLFwibmFtZVwiOlwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVzZWFyY2ggbW9kZWwgZm9yIGxvbmctaG9yaXpvbiBpbnZlc3RpZ2F0aW9uLCBzeW50aGVzaXMsIGFuZCBhbmFseXRpY2FsIHJlcG9ydHNcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA2LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJncHQtNS40LXByb1wiOntcImlkXCI6XCJncHQtNS40LXByb1wiLFwibmFtZVwiOlwiR1BULTUuNCBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJNb3JlIGV4YWN0IEdQVC01LjQgdGllciBmb3IgZGVtYW5kaW5nIHByb2Zlc3Npb25hbCByZWFzb25pbmcgYW5kIGFnZW50IHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTgwLFwidGllcnNcIjpbe1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwfX19LFwiZ3B0LTQuMS1taW5pXCI6e1wiaWRcIjpcImdwdC00LjEtbWluaVwiLFwibmFtZVwiOlwiR1BULTQuMSBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQWZmb3JkYWJsZSBHUFQtNC4xIGxhbmUgZm9yIGZhc3QgY29kaW5nIGhlbHAgYW5kIHN0cnVjdHVyZWQgZXh0cmFjdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDRcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE0XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjQsXCJvdXRwdXRcIjoxLjYsXCJjYWNoZV9yZWFkXCI6MC4xfX0sXCJncHQtcmVhbHRpbWUtMi4xXCI6e1wiaWRcIjpcImdwdC1yZWFsdGltZS0yLjFcIixcIm5hbWVcIjpcIkdQVC1SZWFsdGltZS0yLjFcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFsdGltZSBzcGVlY2gtdG8tc3BlZWNoIG1vZGVsIHdpdGggY29uZmlndXJhYmxlIHJlYXNvbmluZywgdG9vbCB1c2UsIGFuZCByb2J1c3Qgdm9pY2UtYWdlbnQgYmVoYXZpb3JcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiYXVkaW9cIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiYXVkaW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJpbnB1dFwiOjk2MDAwLFwib3V0cHV0XCI6MzIwMDB9LFwiY29zdFwiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjI0LFwiY2FjaGVfcmVhZFwiOjAuNCxcImlucHV0X2F1ZGlvXCI6MzIsXCJvdXRwdXRfYXVkaW9cIjo2NH19LFwiZ3B0LTUuMy1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4zLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4zIENoYXQgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVCBtb2RlbCBmb3IgY29udmVyc2F0aW9uYWwgYXNzaXN0YW5jZSwgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcIm8xXCI6e1wiaWRcIjpcIm8xXCIsXCJuYW1lXCI6XCJvMVwiLFwiZGVzY3JpcHRpb25cIjpcIk8tc2VyaWVzIHJlYXNvbmluZyBtb2RlbCBmb3IgaGFyZCBhbmFseXNpcywgbWF0aCwgY29kaW5nLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwib1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTEyLTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjYwLFwiY2FjaGVfcmVhZFwiOjcuNX19LFwiZ3B0LTUtbWluaVwiOntcImlkXCI6XCJncHQtNS1taW5pXCIsXCJuYW1lXCI6XCJHUFQtNSBNaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiU21hbGwgR1BULTUgZm9yIHJlc3BvbnNpdmUgYWdlbnRzLCBjb2RpbmcgaGVscCwgYW5kIGV2ZXJ5ZGF5IGF1dG9tYXRpb25cIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MC4yNSxcIm91dHB1dFwiOjIsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdwdC01LjMtY29kZXgtc3BhcmtcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleC1zcGFya1wiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleCBTcGFya1wiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleC1zcGFya1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJpbnB1dFwiOjEwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwiZ3B0LTUuNC1taW5pXCI6e1wiaWRcIjpcImdwdC01LjQtbWluaVwiLFwibmFtZVwiOlwiR1BULTUuNCBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiU3Ryb25nIHNtYWxsIEdQVCBmb3IgY29kaW5nIHN1YmFnZW50cywgcXVpY2sgdG9vbCB1c2UsIGFuZCBoaWdoLXZvbHVtZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxLjUsXCJvdXRwdXRcIjo5LFwiY2FjaGVfcmVhZFwiOjAuMTV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjc1LFwib3V0cHV0XCI6NC41LFwiY2FjaGVfcmVhZFwiOjAuMDc1fX0sXCJvMS1wcm9cIjp7XCJpZFwiOlwibzEtcHJvXCIsXCJuYW1lXCI6XCJvMS1wcm9cIixcImRlc2NyaXB0aW9uXCI6XCJPLXNlcmllcyByZWFzb25pbmcgbW9kZWwgZm9yIGhhcmQgYW5hbHlzaXMsIG1hdGgsIGNvZGluZywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcIm8tcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTAzLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDMtMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNTAsXCJvdXRwdXRcIjo2MDB9fSxcImdwdC01LjYtdGVycmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi10ZXJyYVwiLFwibmFtZVwiOlwiR1BULTUuNiBUZXJyYVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIEdQVC01LjYgbW9kZWwgZm9yIGNhcGFibGUsIGNvc3QtZWZmaWNpZW50IGV2ZXJ5ZGF5IHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LXRlcnJhXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19LFwicHJvXCI6e1wicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wicmVhc29uaW5nXCI6e1wibW9kZVwiOlwicHJvXCJ9fX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwiY2FjaGVfd3JpdGVcIjozLjEyNSxcInRpZXJzXCI6W3tcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX19LFwiZ3B0LWltYWdlLTEtbWluaVwiOntcImlkXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC01LjMtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC01LjEtY29kZXgtbWF4XCI6e1wiaWRcIjpcImdwdC01LjEtY29kZXgtbWF4XCIsXCJuYW1lXCI6XCJHUFQtNS4xIENvZGV4IE1heFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS4xLWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LjEtY2hhdC1sYXRlc3RcIixcIm5hbWVcIjpcIkdQVC01LjEgQ2hhdFwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BULTUuMSBmb3IgcG9saXNoZWQgYXNzaXN0YW50cywgd3JpdGluZywgYW5kIHByb2R1Y3QgY29udmVyc2F0aW9uc1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwibzMtbWluaVwiOntcImlkXCI6XCJvMy1taW5pXCIsXCJuYW1lXCI6XCJvMy1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiU21hbGxlciBvLXNlcmllcyByZWFzb25lciBmb3IgZWNvbm9taWNhbCBjb2RpbmcsIG1hdGgsIGFuZCBwbGFubmluZyB0YXNrc1wiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDEtMjlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMSxcIm91dHB1dFwiOjQuNCxcImNhY2hlX3JlYWRcIjowLjU1fX0sXCJncHQtNS4xLWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LjEtY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LjEgQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2RleCBHUFQgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIGNvZGUgcmV2aWV3LCBhbmQgcHJhY3RpY2FsIHNvZnR3YXJlIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNFwiOntcImlkXCI6XCJncHQtNFwiLFwibmFtZVwiOlwiR1BULTRcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTExXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjMtMTEtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNC0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkyLFwib3V0cHV0XCI6ODE5Mn0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjYwfX0sXCJncHQtNS40LW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTUuNC1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNS40IG5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJDaGVhcGVzdCBHUFQtNS40IGxhbmUgZm9yIHNpbXBsZSByb3V0aW5nLCBleHRyYWN0aW9uLCBhbmQgYnVsayBhdXRvbWF0aW9uXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjIsXCJvdXRwdXRcIjoxLjI1LFwiY2FjaGVfcmVhZFwiOjAuMDJ9fSxcImdwdC00LjFcIjp7XCJpZFwiOlwiZ3B0LTQuMVwiLFwibmFtZVwiOlwiR1BULTQuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkxvbmctbGl2ZWQgR1BUIHdvcmtob3JzZSBmb3IgY29kaW5nLCBpbnN0cnVjdGlvbiBmb2xsb3dpbmcsIGFuZCBwcm9kdWN0aW9uIGFwcHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0NzU3NixcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo4LFwiY2FjaGVfcmVhZFwiOjAuNX19LFwiZ3B0LTRvLTIwMjQtMDUtMTNcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMDUtMTNcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0wNS0xMylcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA1LTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjo0MDk2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoxNX19LFwiZ3B0LTRvLTIwMjQtMTEtMjBcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMTEtMjBcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0xMS0yMClcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTExLTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtMy41LXR1cmJvXCI6e1wiaWRcIjpcImdwdC0zLjUtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC0zLjUtdHVyYm9cIixcImRlc2NyaXB0aW9uXCI6XCJDb21wYWN0IEdQVCBtb2RlbCBmb3IgbG93LWxhdGVuY3kgYXNzaXN0YW5jZSBhbmQgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjEtMDktMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMy0wMy0wMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIzLTExLTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjE2Mzg1LFwib3V0cHV0XCI6NDA5Nn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MH19LFwiZ3B0LTQuMS1uYW5vXCI6e1wiaWRcIjpcImdwdC00LjEtbmFub1wiLFwibmFtZVwiOlwiR1BULTQuMSBuYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiVGlueSBHUFQtNC4xIG9wdGlvbiBmb3IgY2xhc3NpZmljYXRpb24sIHJvdXRpbmcsIGFuZCB2ZXJ5IGhpZ2gtdm9sdW1lIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdwdC1pbWFnZS0xLjVcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTEuNVwiLFwibmFtZVwiOlwiZ3B0LWltYWdlLTEuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNS4yLWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LjItY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LjIgQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2RlLXNwZWNpYWxpc3QgR1BUIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgbG9uZy1ydW5uaW5nIHNvZnR3YXJlIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJ0ZXh0LWVtYmVkZGluZy0zLWxhcmdlXCI6e1wiaWRcIjpcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIixcIm5hbWVcIjpcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwidGV4dC1lbWJlZGRpbmdcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkxLFwib3V0cHV0XCI6MzA3Mn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEzLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUuMS1jb2RleC1taW5pXCI6e1wiaWRcIjpcImdwdC01LjEtY29kZXgtbWluaVwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleCBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJncHQtNS4yLWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LjItY2hhdC1sYXRlc3RcIixcIm5hbWVcIjpcIkdQVC01LjIgQ2hhdFwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BUIG1vZGVsIGZvciBjb252ZXJzYXRpb25hbCBhc3Npc3RhbmNlLCB3cml0aW5nLCBhbmQgdG9vbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC01XCI6e1wiaWRcIjpcImdwdC01XCIsXCJuYW1lXCI6XCJHUFQtNVwiLFwiZGVzY3JpcHRpb25cIjpcIk9yaWdpbmFsIEdQVC01IHdvcmtob3JzZSBmb3IgcmVhc29uaW5nLCBjb2RpbmcsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUgQ2hhdCAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BUIG1vZGVsIGZvciBjb252ZXJzYXRpb25hbCBhc3Npc3RhbmNlLCB3cml0aW5nLCBhbmQgdG9vbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcInRleHQtZW1iZWRkaW5nLWFkYS0wMDJcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjItMTJcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMi0xMi0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIyLTEyLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjB9fSxcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wMS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTAxLTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTEsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMDIsXCJvdXRwdXRcIjowfX0sXCJncHQtNG8tbWluaVwiOntcImlkXCI6XCJncHQtNG8tbWluaVwiLFwibmFtZVwiOlwiR1BULTRvIG1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTbWFsbCBvbW5pIEdQVCBmb3IgY2hlYXAgbXVsdGltb2RhbCBhc3Npc3RhbmNlIGFuZCBwcm9kdWN0aW9uLXNjYWxlIHRyYWZmaWNcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDctMThcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNy0xOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjE1LFwib3V0cHV0XCI6MC42LFwiY2FjaGVfcmVhZFwiOjAuMDc1fX0sXCJncHQtNS4xXCI6e1wiaWRcIjpcImdwdC01LjFcIixcIm5hbWVcIjpcIkdQVC01LjFcIixcImRlc2NyaXB0aW9uXCI6XCJTaGFycGVyIEdQVC01IGdlbmVyYXRpb24gZm9yIGNvZGluZywgcHJvZHVjdCB3b3JrLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS42XCI6e1wiaWRcIjpcImdwdC01LjZcIixcIm5hbWVcIjpcIkdQVC01LjZcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtc29sXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19fSxcIm8zLWRlZXAtcmVzZWFyY2hcIjp7XCJpZFwiOlwibzMtZGVlcC1yZXNlYXJjaFwiLFwibmFtZVwiOlwibzMtZGVlcC1yZXNlYXJjaFwiLFwiZGVzY3JpcHRpb25cIjpcIlJlc2VhcmNoIG1vZGVsIGZvciBsb25nLWhvcml6b24gaW52ZXN0aWdhdGlvbiwgc3ludGhlc2lzLCBhbmQgYW5hbHl0aWNhbCByZXBvcnRzXCIsXCJmYW1pbHlcIjpcIm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA2LTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDYtMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjQwLFwiY2FjaGVfcmVhZFwiOjIuNX19LFwiZ3B0LTRvLTIwMjQtMDgtMDZcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMDgtMDZcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0wOC0wNilcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wOC0wNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA4LTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNS1uYW5vXCI6e1wiaWRcIjpcImdwdC01LW5hbm9cIixcIm5hbWVcIjpcIkdQVC01IE5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJUaW55IEdQVC01IGxhbmUgZm9yIHJvdXRpbmcsIGV4dHJhY3Rpb24sIGNsYXNzaWZpY2F0aW9uLCBhbmQgYnVsayBqb2JzXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMDUsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMDV9fSxcIm80LW1pbmlcIjp7XCJpZFwiOlwibzQtbWluaVwiLFwibmFtZVwiOlwibzQtbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3Qgby1zZXJpZXMgbW9kZWwgZm9yIGNvbXBhY3QgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMSxcIm91dHB1dFwiOjQuNCxcImNhY2hlX3JlYWRcIjowLjI3NX19LFwiZ3B0LTQtdHVyYm9cIjp7XCJpZFwiOlwiZ3B0LTQtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC00IFR1cmJvXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29tcGFjdCBHUFQgbW9kZWwgZm9yIGxvdy1sYXRlbmN5IGFzc2lzdGFuY2UgYW5kIGhpZ2gtdm9sdW1lIHdvcmtsb2Fkc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0xMlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTExLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDQtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjQwOTZ9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjozMH19LFwiZ3B0LTUuMlwiOntcImlkXCI6XCJncHQtNS4yXCIsXCJuYW1lXCI6XCJHUFQtNS4yXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVsaWFibGUgR1BUIGdlbmVyYXRpb24gZm9yIGJyb2FkIGNvZGluZywgd3JpdGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgcHJvZHVjdCB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNG9cIjp7XCJpZFwiOlwiZ3B0LTRvXCIsXCJuYW1lXCI6XCJHUFQtNG9cIixcImRlc2NyaXB0aW9uXCI6XCJPbW5pLWVyYSBHUFQgZm9yIG11bHRpbW9kYWwgY2hhdCwgcHJhY3RpY2FsIGNvZGluZywgYW5kIGdlbmVyYWwgYXNzaXN0YW50c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDUtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wOC0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNS42LWx1bmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi1sdW5hXCIsXCJuYW1lXCI6XCJHUFQtNS42IEx1bmFcIixcImRlc2NyaXB0aW9uXCI6XCJDb3N0LWVmZmljaWVudCBHUFQtNS42IG1vZGVsIGZvciBmYXN0LCBoaWdoLXZvbHVtZSB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ3B0LWx1bmFcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjYsXCJjYWNoZV9yZWFkXCI6MC4xLFwiY2FjaGVfd3JpdGVcIjoxLjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo5LFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX19LFwiY2hhdGdwdC1pbWFnZS1sYXRlc3RcIjp7XCJpZFwiOlwiY2hhdGdwdC1pbWFnZS1sYXRlc3RcIixcIm5hbWVcIjpcImNoYXRncHQtaW1hZ2UtbGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC1pbWFnZS0xXCI6e1wiaWRcIjpcImdwdC1pbWFnZS0xXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMVwiLFwiZGVzY3JpcHRpb25cIjpcIk9wZW5BSSBpbWFnZSBtb2RlbCBmb3IgcHJvZHVjdGlvbiBnZW5lcmF0aW9uLCBlZGl0cywgYW5kIGJyYW5kLXNhZmUgdmlzdWFsIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0yNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNS1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUtcHJvXCIsXCJuYW1lXCI6XCJHUFQtNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUgdGllciBmb3IgdG91Z2ggYW5hbHlzaXMsIGNvZGluZyByZXZpZXdzLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwiZ3B0LXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEwLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTAtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MjcyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6MTIwfX0sXCJncHQtNS4yLXByb1wiOntcImlkXCI6XCJncHQtNS4yLXByb1wiLFwibmFtZVwiOlwiR1BULTUuMiBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUuMiB2YXJpYW50IGZvciB0b3VnaGVyIHJlYXNvbmluZyBhbmQgcmV2aWV3IHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIxLFwib3V0cHV0XCI6MTY4fX0sXCJncHQtNS42LXNvbFwiOntcImlkXCI6XCJncHQtNS42LXNvbFwiLFwibmFtZVwiOlwiR1BULTUuNiBTb2xcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtc29sXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19fSxcIm8zLXByb1wiOntcImlkXCI6XCJvMy1wcm9cIixcIm5hbWVcIjpcIm8zLXByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2gtZWZmb3J0IG8zIHRpZXIgZm9yIGRpZmZpY3VsdCB0ZWNobmljYWwgcmVhc29uaW5nIGFuZCBjYXJlZnVsIGFuc3dlcnNcIixcImZhbWlseVwiOlwiby1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIwLFwib3V0cHV0XCI6ODB9fSxcImdwdC01LjVcIjp7XCJpZFwiOlwiZ3B0LTUuNVwiLFwibmFtZVwiOlwiR1BULTUuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkRlZmF1bHQgZnJvbnRpZXIgR1BUIGZvciBjb2RpbmcsIGNvbXB1dGVyIHVzZSwgcmVzZWFyY2gsIGFuZCBrbm93bGVkZ2Ugd29ya1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0xMi0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTIzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMjNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEyLjUsXCJvdXRwdXRcIjo3NSxcImNhY2hlX3JlYWRcIjoxLjI1fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxfX19LFwiZ3B0LWltYWdlLTJcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTJcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0yXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIxXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjEuMjV9fX19LFwieGFpXCI6e1wibW9kZWxzXCI6e1wiZ3Jvay1pbWFnaW5lLXZpZGVvXCI6e1wiaWRcIjpcImdyb2staW1hZ2luZS12aWRlb1wiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIFZpZGVvXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDEtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ2aWRlb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMjQsXCJvdXRwdXRcIjowfX0sXCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiOntcImlkXCI6XCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIEltYWdlIFF1YWxpdHlcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIixcInBkZlwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgwMDAsXCJvdXRwdXRcIjowfX0sXCJncm9rLTQuMjAtMDMwOS1yZWFzb25pbmdcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLTAzMDktcmVhc29uaW5nXCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgKFJlYXNvbmluZylcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFzb25pbmcgR3JvayBmb3IgZG9jdW1lbnQtaGVhdnkgYW5hbHlzaXMgYW5kIGxvbmctaG9yaXpvbiB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2stYnVpbGQtMC4xXCI6e1wiaWRcIjpcImdyb2stYnVpbGQtMC4xXCIsXCJuYW1lXCI6XCJHcm9rIEJ1aWxkIDAuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR3JvayBjb2RpbmcgbW9kZWwgdHVuZWQgZm9yIGFnZW50aWMgZW5naW5lZXJpbmcgYW5kIGl0ZXJhdGl2ZSBlZGl0c1wiLFwiZmFtaWx5XCI6XCJncm9rLWJ1aWxkXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI1NjAwMCxcIm91dHB1dFwiOjI1NjAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2stNC4zXCI6e1wiaWRcIjpcImdyb2stNC4zXCIsXCJuYW1lXCI6XCJHcm9rIDQuM1wiLFwiZGVzY3JpcHRpb25cIjpcInhBSSdzIEdyb2sgZm9yIGNoYXQsIGNvZGluZywgYWdlbnRpYyB0b29scywgYW5kIGxvd2VyIGhhbGx1Y2luYXRpb24gcmlza1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay00LjIwLTAzMDktbm9uLXJlYXNvbmluZ1wiOntcImlkXCI6XCJncm9rLTQuMjAtMDMwOS1ub24tcmVhc29uaW5nXCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgKE5vbi1SZWFzb25pbmcpXCIsXCJkZXNjcmlwdGlvblwiOlwiR3JvayBtb2RlbCBmb3IgYWdlbnRpYyB0b29sIHVzZSwgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsaXZlIGFzc2lzdGFuY2VcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MzAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJncm9rLTQuNVwiOntcImlkXCI6XCJncm9rLTQuNVwiLFwibmFtZVwiOlwiR3JvayA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJ4QUkncyBsYXRlc3QgR3JvayBmb3IgY2hhdCwgY29kaW5nLCBhZ2VudGljIHRvb2xzLCBhbmQgbG93ZXIgaGFsbHVjaW5hdGlvbiByaXNrXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo1MDAwMDAsXCJvdXRwdXRcIjo1MDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjYsXCJjYWNoZV9yZWFkXCI6MC41LFwidGllcnNcIjpbe1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjoxfX19LFwiZ3Jvay1pbWFnaW5lLWltYWdlXCI6e1wiaWRcIjpcImdyb2staW1hZ2luZS1pbWFnZVwiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIEltYWdlXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDEtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcImltYWdlXCIsXCJwZGZcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MDAwLFwib3V0cHV0XCI6MH19LFwiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIixcIm5hbWVcIjpcIkdyb2sgNC4yMCBNdWx0aS1BZ2VudFwiLFwiZGVzY3JpcHRpb25cIjpcIkdyb2sgbW9kZWwgZm9yIGFnZW50aWMgdG9vbCB1c2UsIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbGl2ZSBhc3Npc3RhbmNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fX19fSIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCBzbmFwc2hvdCBmcm9tICcuL2NhdGFsb2ctc25hcHNob3QuanNvbicgd2l0aCB7IHR5cGU6ICdqc29uJyB9XG5cbmNvbnN0IENBVEFMT0dfVVJMID0gJ2h0dHBzOi8vbW9kZWxzLmRldi9hcGkuanNvbidcbmNvbnN0IFNVUFBPUlRFRCA9IFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ11cbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5mdW5jdGlvbiBzdWJzZXQoZGF0YSkge1xuICBjb25zdCBvdXQgPSB7fVxuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIFNVUFBPUlRFRCkge1xuICAgIGlmIChkYXRhW3Byb3ZpZGVyXT8ubW9kZWxzKSBvdXRbcHJvdmlkZXJdID0geyBtb2RlbHM6IGRhdGFbcHJvdmlkZXJdLm1vZGVscyB9XG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ2FjaGUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWZyZXNoQ2F0YWxvZyh7IGZldGNoZXIgPSBmZXRjaCB9ID0ge30pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaGVyKENBVEFMT0dfVVJMKVxuICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYGNhdGFsb2cgZmV0Y2ggZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICBjb25zdCBwcm92aWRlcnMgPSBzdWJzZXQoYXdhaXQgcmVzcG9uc2UuanNvbigpKVxuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGNhY2hlRmlsZSgpLCBKU09OLnN0cmluZ2lmeSh7IGF0OiBEYXRlLm5vdygpLCBwcm92aWRlcnMgfSkpXG4gIHJldHVybiBwcm92aWRlcnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRDYXRhbG9nKHsgZmV0Y2hlciA9IGZldGNoIH0gPSB7fSkge1xuICBjb25zdCBjYWNoZWQgPSBhd2FpdCByZWFkQ2FjaGUoKVxuICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCBUVEwpIHJldHVybiBjYWNoZWQucHJvdmlkZXJzXG4gIHJlZnJlc2hDYXRhbG9nKHsgZmV0Y2hlciB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgcmV0dXJuIGNhY2hlZD8ucHJvdmlkZXJzIHx8IHNuYXBzaG90XG59XG5cbmNvbnN0IHRleHRNb2RlbCA9IChtKSA9PlxuICBtLnRvb2xfY2FsbCA9PT0gdHJ1ZSAmJlxuICAoIW0ubW9kYWxpdGllcyB8fCAobS5tb2RhbGl0aWVzLmlucHV0Py5pbmNsdWRlcygndGV4dCcpICYmIG0ubW9kYWxpdGllcy5vdXRwdXQ/LmluY2x1ZGVzKCd0ZXh0JykpKVxuXG5jb25zdCBkYXRlZER1cGxpY2F0ZSA9IChpZCkgPT4gLy1cXGR7OH0kLy50ZXN0KGlkKVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE1vZGVscyhwcm92aWRlcnMsIHByb3ZpZGVySWRzKSB7XG4gIGNvbnN0IG9yZGVyID0gU1VQUE9SVEVELmZpbHRlcigocCkgPT4gcHJvdmlkZXJJZHMuaW5jbHVkZXMocCkpXG4gIGNvbnN0IG1vZGVscyA9IFtdXG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2Ygb3JkZXIpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJvdmlkZXJzW3Byb3ZpZGVyXT8ubW9kZWxzIHx8IHt9KVxuICAgICAgLmZpbHRlcigoW2lkLCBtXSkgPT4gdGV4dE1vZGVsKG0pICYmICFkYXRlZER1cGxpY2F0ZShpZCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gU3RyaW5nKGJbMV0ucmVsZWFzZV9kYXRlIHx8ICcnKS5sb2NhbGVDb21wYXJlKFN0cmluZyhhWzFdLnJlbGVhc2VfZGF0ZSB8fCAnJykpKVxuICAgIGZvciAoY29uc3QgW2lkLCBtXSBvZiBlbnRyaWVzKSB7XG4gICAgICBtb2RlbHMucHVzaCh7XG4gICAgICAgIG5hbWU6IGAke3Byb3ZpZGVyfS8ke2lkfWAsXG4gICAgICAgIHByb3ZpZGVyLFxuICAgICAgICBkZXNjOiBtLmRlc2NyaXB0aW9uIHx8IG0ubmFtZSB8fCBpZCxcbiAgICAgICAgcHJpY2U6IG0uY29zdCAmJiBtLmNvc3QuaW5wdXQgIT0gbnVsbCA/IHsgaW46IG0uY29zdC5pbnB1dCwgb3V0OiBtLmNvc3Qub3V0cHV0IH0gOiBudWxsLFxuICAgICAgICBlZmZvcnQ6ICEhbS5yZWFzb25pbmcsXG4gICAgICAgIC8vIHRoZSBtZWFzdXJlZCBmaWxsIG51bWJlciBpcyBpbnB1dCB0b2tlbnMsIHNvIHByZWZlciB0aGUgaW5wdXQgbGltaXRcbiAgICAgICAgLy8gYXMgdGhlIGRlbm9taW5hdG9yIHdoZXJlIHRoZSBwcm92aWRlciBkaXN0aW5ndWlzaGVzIGl0XG4gICAgICAgIGNvbnRleHQ6IG0ubGltaXQ/LmlucHV0IHx8IG0ubGltaXQ/LmNvbnRleHQgfHwgbnVsbCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RlbHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkaG9jTW9kZWwobmFtZSwgcHJvdmlkZXJJZHMpIHtcbiAgY29uc3QgbWF0Y2ggPSBuYW1lLm1hdGNoKC9eKFthLXowLTktXSspXFwvKC4rKSQvKVxuICBpZiAoIW1hdGNoIHx8ICFwcm92aWRlcklkcy5pbmNsdWRlcyhtYXRjaFsxXSkpIHJldHVybiBudWxsXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICBwcm92aWRlcjogbWF0Y2hbMV0sXG4gICAgZGVzYzogJ25vdCBpbiBjYXRhbG9nJyxcbiAgICBwcmljZTogbnVsbCxcbiAgICBlZmZvcnQ6IGZhbHNlLFxuICAgIGNvbnRleHQ6IG51bGwsXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuLy8gdGhlIGJhY2tlbmQgaGlkZXMgbW9kZWxzIGZyb20gY2xpZW50cyBiZWxvdyBhIHZlcnNpb24gZmxvb3IsIHNvIHNlbmQgYVxuLy8gdmVyc2lvbiBjb21mb3J0YWJseSBhYm92ZSBpdFxuY29uc3QgTU9ERUxTX1VSTCA9ICdodHRwczovL2NoYXRncHQuY29tL2JhY2tlbmQtYXBpL2NvZGV4L21vZGVscz9jbGllbnRfdmVyc2lvbj0yLjAuMCdcbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29kZXgtbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwQ29kZXhNb2RlbHMoZW50cmllcykge1xuICByZXR1cm4gZW50cmllcy5tYXAoKG0pID0+ICh7XG4gICAgbmFtZTogYGNvZGV4LyR7bS5zbHVnfWAsXG4gICAgcHJvdmlkZXI6ICdjb2RleCcsXG4gICAgZGVzYzogYCR7bS5kZXNjcmlwdGlvbiB8fCBtLmxhYmVsIHx8IG0uc2x1Z30gXHUwMEI3IHZpYSBDaGF0R1BUIHBsYW5gLFxuICAgIHByaWNlOiBudWxsLFxuICAgIGVmZm9ydDogdHJ1ZSxcbiAgICBjb250ZXh0OiBtLmNvbnRleHRfd2luZG93IHx8IG51bGwsXG4gIH0pKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENvZGV4TW9kZWxzKGNyZWRlbnRpYWxzKSB7XG4gIGxldCBjYWNoZWQgPSBudWxsXG4gIHRyeSB7XG4gICAgY2FjaGVkID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge31cbiAgaWYgKGNhY2hlZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gbWFwQ29kZXhNb2RlbHMoY2FjaGVkLm1vZGVscylcbiAgaWYgKCFjcmVkZW50aWFscykgcmV0dXJuIG1hcENvZGV4TW9kZWxzKGNhY2hlZD8ubW9kZWxzIHx8IFtdKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChNT0RFTFNfVVJMLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtjcmVkZW50aWFscy5hcGlLZXl9YCxcbiAgICAgICAgLi4uY3JlZGVudGlhbHMuaGVhZGVycyxcbiAgICAgICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gICAgICB9LFxuICAgIH0pXG4gICAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhyZXNwb25zZS5zdGF0dXMpKVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBtb2RlbHMgPSAoZGF0YS5tb2RlbHMgfHwgW10pLm1hcCgobSkgPT4gKHtcbiAgICAgIHNsdWc6IG0uc2x1ZyxcbiAgICAgIGRlc2NyaXB0aW9uOiBtLmRlc2NyaXB0aW9uLFxuICAgICAgbGFiZWw6IG0ubGFiZWwgfHwgbS5kaXNwbGF5X25hbWUsXG4gICAgICBjb250ZXh0X3dpbmRvdzogbS5jb250ZXh0X3dpbmRvdyB8fCBtLm1heF9jb250ZXh0X3dpbmRvdyB8fCBudWxsLFxuICAgIH0pKVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2VtcHR5IG1vZGVsIGxpc3QnKVxuICAgIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoeyBhdDogRGF0ZS5ub3coKSwgbW9kZWxzIH0pKVxuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhtb2RlbHMpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhjYWNoZWQ/Lm1vZGVscyB8fCBbXSlcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNlcnZlciB9IGZyb20gJ25vZGU6aHR0cCdcbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUsIGNobW9kIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuY29uc3QgQ0xJRU5UX0lEID0gJ2FwcF9FTW9hbUVFWjczZjBDa1hhWHA3aHJhbm4nXG5jb25zdCBBVVRIX1VSTCA9ICdodHRwczovL2F1dGgub3BlbmFpLmNvbS9vYXV0aC9hdXRob3JpemUnXG5jb25zdCBUT0tFTl9VUkwgPSAnaHR0cHM6Ly9hdXRoLm9wZW5haS5jb20vb2F1dGgvdG9rZW4nXG5jb25zdCBSRURJUkVDVF9QT1JUID0gMTQ1NVxuY29uc3QgUkVESVJFQ1RfVVJJID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfS9hdXRoL2NhbGxiYWNrYFxuY29uc3QgU0NPUEUgPSAnb3BlbmlkIHByb2ZpbGUgZW1haWwgb2ZmbGluZV9hY2Nlc3MnXG5jb25zdCBSRUZSRVNIX1NLRVdfTVMgPSA1ICogNjAgKiAxMDAwXG5cbmZ1bmN0aW9uIGF1dGhGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnYXV0aC5qc29uJylcbn1cblxuZnVuY3Rpb24gYmFzZTY0dXJsKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC9cXCsvZywgJy0nKS5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC89KyQvLCAnJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUp3dENsYWltcyh0b2tlbikge1xuICB0cnkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB0b2tlbi5zcGxpdCgnLicpWzFdXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocGF5bG9hZCwgJ2Jhc2U2NHVybCcpLnRvU3RyaW5nKCd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHtcbiAgcmV0dXJuIGNsYWltc1snaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS9hdXRoJ10/LmNoYXRncHRfYWNjb3VudF9pZCB8fCBjbGFpbXMuY2hhdGdwdF9hY2NvdW50X2lkIHx8IG51bGxcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEF1dGgoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoYXV0aEZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQXV0aChhdXRoKSB7XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoYXV0aEZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoYXV0aCwgbnVsbCwgMikgKyAnXFxuJylcbiAgYXdhaXQgY2htb2QoYXV0aEZpbGUoKSwgMG82MDApXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRva2VuUmVxdWVzdChwYXJhbXMpIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChUT0tFTl9VUkwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9LFxuICAgIGJvZHk6IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpLFxuICB9KVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0b2tlbiByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9ICR7YXdhaXQgcmVzcG9uc2UudGV4dCgpfWApXG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKVxufVxuXG5mdW5jdGlvbiBzdG9yZVRva2VucyhhdXRoLCB0b2tlbnMpIHtcbiAgY29uc3QgY2xhaW1zID0gdG9rZW5zLmlkX3Rva2VuID8gZGVjb2RlSnd0Q2xhaW1zKHRva2Vucy5pZF90b2tlbikgOiB7fVxuICBhdXRoLm9wZW5haSA9IHtcbiAgICBhY2Nlc3NfdG9rZW46IHRva2Vucy5hY2Nlc3NfdG9rZW4sXG4gICAgcmVmcmVzaF90b2tlbjogdG9rZW5zLnJlZnJlc2hfdG9rZW4gfHwgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4sXG4gICAgaWRfdG9rZW46IHRva2Vucy5pZF90b2tlbiB8fCBhdXRoLm9wZW5haT8uaWRfdG9rZW4sXG4gICAgYWNjb3VudF9pZDogYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHx8IGF1dGgub3BlbmFpPy5hY2NvdW50X2lkIHx8IG51bGwsXG4gICAgZW1haWw6IGNsYWltcy5lbWFpbCB8fCBhdXRoLm9wZW5haT8uZW1haWwgfHwgbnVsbCxcbiAgICBleHBpcmVzX2F0OiBEYXRlLm5vdygpICsgKHRva2Vucy5leHBpcmVzX2luIHx8IDM2MDApICogMTAwMCxcbiAgfVxuICByZXR1cm4gYXV0aFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdE9wZW5BSSh7IG9wZW5Ccm93c2VyID0gdHJ1ZSwgdGltZW91dE1zID0gNSAqIDYwICogMTAwMCwgb25VcmwgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3QgdmVyaWZpZXIgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoNjQpKVxuICBjb25zdCBjaGFsbGVuZ2UgPSBiYXNlNjR1cmwoY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZlcmlmaWVyKS5kaWdlc3QoKSlcbiAgY29uc3Qgc3RhdGUgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoMjQpKVxuXG4gIGNvbnN0IHVybCA9IGAke0FVVEhfVVJMfT8ke25ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJyxcbiAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICByZWRpcmVjdF91cmk6IFJFRElSRUNUX1VSSSxcbiAgICBzY29wZTogU0NPUEUsXG4gICAgY29kZV9jaGFsbGVuZ2U6IGNoYWxsZW5nZSxcbiAgICBjb2RlX2NoYWxsZW5nZV9tZXRob2Q6ICdTMjU2JyxcbiAgICBzdGF0ZSxcbiAgICBwcm9tcHQ6ICdsb2dpbicsXG4gICAgaWRfdG9rZW5fYWRkX29yZ2FuaXphdGlvbnM6ICd0cnVlJyxcbiAgICBjb2RleF9jbGlfc2ltcGxpZmllZF9mbG93OiAndHJ1ZScsXG4gICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gIH0pLnRvU3RyaW5nKCl9YFxuXG4gIGNvbnN0IGNvZGUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gY3JlYXRlU2VydmVyKChyZXEsIHJlcykgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdFVybCA9IG5ldyBVUkwocmVxLnVybCwgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfWApXG4gICAgICBpZiAocmVxdWVzdFVybC5wYXRobmFtZSAhPT0gJy9hdXRoL2NhbGxiYWNrJykge1xuICAgICAgICByZXMud3JpdGVIZWFkKDQwNCkuZW5kKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBnb3RTdGF0ZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnc3RhdGUnKVxuICAgICAgY29uc3QgZ290Q29kZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnY29kZScpXG4gICAgICBjb25zdCBnb3RFcnJvciA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnZXJyb3InKVxuICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pXG4gICAgICByZXMuZW5kKFxuICAgICAgICBnb3RDb2RlICYmIGdvdFN0YXRlID09PSBzdGF0ZVxuICAgICAgICAgID8gJzxodG1sPjxib2R5IHN0eWxlPVwiZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IHBhZGRpbmc6IDJyZW1cIj5zaWduZWQgaW4gLSB5b3UgY2FuIHJldHVybiB0byBwaWNvPC9ib2R5PjwvaHRtbD4nXG4gICAgICAgICAgOiAnPGh0bWw+PGJvZHkgc3R5bGU9XCJmb250LWZhbWlseTogc2Fucy1zZXJpZjsgcGFkZGluZzogMnJlbVwiPnNpZ24taW4gZmFpbGVkIC0gcmV0dXJuIHRvIHBpY28gYW5kIHRyeSBhZ2FpbjwvYm9keT48L2h0bWw+JyxcbiAgICAgIClcbiAgICAgIGNsZWFudXAoKVxuICAgICAgaWYgKGdvdEVycm9yKSByZWplY3QobmV3IEVycm9yKGBhdXRob3JpemF0aW9uIGZhaWxlZDogJHtnb3RFcnJvcn1gKSlcbiAgICAgIGVsc2UgaWYgKCFnb3RDb2RlIHx8IGdvdFN0YXRlICE9PSBzdGF0ZSkgcmVqZWN0KG5ldyBFcnJvcignYXV0aG9yaXphdGlvbiBmYWlsZWQ6IG1pc3NpbmcgY29kZSBvciBzdGF0ZSBtaXNtYXRjaCcpKVxuICAgICAgZWxzZSByZXNvbHZlKGdvdENvZGUpXG4gICAgfSlcblxuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhbnVwKClcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoJ3NpZ24taW4gdGltZWQgb3V0JykpXG4gICAgfSwgdGltZW91dE1zKVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgIHNlcnZlci5jbG9zZSgpXG4gICAgfVxuXG4gICAgc2VydmVyLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGNsZWFudXAoKVxuICAgICAgcmVqZWN0KGVyci5jb2RlID09PSAnRUFERFJJTlVTRScgPyBuZXcgRXJyb3IoYHBvcnQgJHtSRURJUkVDVF9QT1JUfSBpcyBpbiB1c2UgKGlzIGFub3RoZXIgc2lnbi1pbiBvciBjb2RleCBydW5uaW5nPylgKSA6IGVycilcbiAgICB9KVxuICAgIHNlcnZlci5saXN0ZW4oUkVESVJFQ1RfUE9SVCwgJzEyNy4wLjAuMScsICgpID0+IHtcbiAgICAgIG9uVXJsKHVybClcbiAgICAgIGlmIChvcGVuQnJvd3NlcikgZXhlY0ZpbGUoJ29wZW4nLCBbdXJsXSwgKCkgPT4ge30pXG4gICAgfSlcbiAgfSlcblxuICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuICAgIGNvZGUsXG4gICAgcmVkaXJlY3RfdXJpOiBSRURJUkVDVF9VUkksXG4gICAgY2xpZW50X2lkOiBDTElFTlRfSUQsXG4gICAgY29kZV92ZXJpZmllcjogdmVyaWZpZXIsXG4gIH0pXG5cbiAgY29uc3QgYXV0aCA9IHN0b3JlVG9rZW5zKGF3YWl0IHJlYWRBdXRoKCksIHRva2VucylcbiAgYXdhaXQgd3JpdGVBdXRoKGF1dGgpXG4gIHJldHVybiB7IGVtYWlsOiBhdXRoLm9wZW5haS5lbWFpbCwgYWNjb3VudElkOiBhdXRoLm9wZW5haS5hY2NvdW50X2lkIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNyZWRlbnRpYWxzKCkge1xuICBjb25zdCBhdXRoID0gYXdhaXQgcmVhZEF1dGgoKVxuICBjb25zdCBzdG9yZWQgPSBhdXRoLm9wZW5haVxuICBpZiAoIXN0b3JlZD8uYWNjZXNzX3Rva2VuKSByZXR1cm4gbnVsbFxuXG4gIGlmIChEYXRlLm5vdygpID4gKHN0b3JlZC5leHBpcmVzX2F0IHx8IDApIC0gUkVGUkVTSF9TS0VXX01TKSB7XG4gICAgaWYgKCFzdG9yZWQucmVmcmVzaF90b2tlbikgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgcmVmcmVzaF90b2tlbjogc3RvcmVkLnJlZnJlc2hfdG9rZW4sXG4gICAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICAgIHNjb3BlOiAnb3BlbmlkIHByb2ZpbGUgZW1haWwnLFxuICAgIH0pXG4gICAgY29uc3QgcmVmcmVzaGVkID0gc3RvcmVUb2tlbnMoYXV0aCwgdG9rZW5zKVxuICAgIGF3YWl0IHdyaXRlQXV0aChyZWZyZXNoZWQpXG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzRnJvbShyZWZyZXNoZWQub3BlbmFpKVxuICB9XG4gIHJldHVybiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKVxufVxuXG5mdW5jdGlvbiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKSB7XG4gIHJldHVybiB7XG4gICAgYXBpS2V5OiBzdG9yZWQuYWNjZXNzX3Rva2VuLFxuICAgIGhlYWRlcnM6IHN0b3JlZC5hY2NvdW50X2lkID8geyAnY2hhdGdwdC1hY2NvdW50LWlkJzogc3RvcmVkLmFjY291bnRfaWQgfSA6IHt9LFxuICAgIGVtYWlsOiBzdG9yZWQuZW1haWwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNvbm5lY3RlZCgpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgcmV0dXJuICEhKGF1dGgub3BlbmFpPy5hY2Nlc3NfdG9rZW4gJiYgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuYWlTdGF0dXMoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIHJldHVybiB7XG4gICAgY29ubmVjdGVkOiAhIShhdXRoLm9wZW5haT8uYWNjZXNzX3Rva2VuICYmIGF1dGgub3BlbmFpPy5yZWZyZXNoX3Rva2VuKSxcbiAgICBlbWFpbDogYXV0aC5vcGVuYWk/LmVtYWlsIHx8IG51bGwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3RPcGVuQUkoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIGRlbGV0ZSBhdXRoLm9wZW5haVxuICBhd2FpdCB3cml0ZUF1dGgoYXV0aClcbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gY29uZmlnRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ2NvbmZpZy5qc29uJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb25maWcoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY29uZmlnRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VDb25maWcoYmFzZSwgcGF0Y2gpIHtcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5iYXNlIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGF0Y2gpKSB7XG4gICAgcmVzdWx0W2tleV0gPSB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyBtZXJnZUNvbmZpZyhiYXNlW2tleV0gJiYgdHlwZW9mIGJhc2Vba2V5XSA9PT0gJ29iamVjdCcgPyBiYXNlW2tleV0gOiB7fSwgdmFsdWUpXG4gICAgICA6IHZhbHVlXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVDb25maWcocGF0Y2gpIHtcbiAgY29uc3QgY29uZmlnID0gbWVyZ2VDb25maWcoYXdhaXQgcmVhZENvbmZpZygpLCBwYXRjaClcbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShjb25maWdGaWxlKCksIEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMikgKyAnXFxuJylcbiAgcmV0dXJuIGNvbmZpZ1xufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBnbG9iYWxBZ2VudHNGaWxlIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gcmVhZElmRXhpc3RzKHBhdGgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXhpc3RzU3luYyhwYXRoKSA/IHJlYWRGaWxlU3luYyhwYXRoLCAndXRmLTgnKSA6IG51bGxcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGV4dFN0b3BEaXIoY3dkKSB7XG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAnLmdpdCcpKSB8fCBkaXIgPT09IGhvbWUpIHJldHVybiBkaXJcbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcilcbiAgICBpZiAocGFyZW50ID09PSBkaXIpIHJldHVybiByZXNvbHZlKGN3ZClcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxufVxuXG5mdW5jdGlvbiBhbmNlc3RvckRpcnMoY3dkLCBzdG9wRGlyKSB7XG4gIGNvbnN0IGRpcnMgPSBbXVxuICBsZXQgZGlyID0gcmVzb2x2ZShjd2QpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgZGlycy51bnNoaWZ0KGRpcilcbiAgICBpZiAoZGlyID09PSBzdG9wRGlyKSBicmVha1xuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpcikgYnJlYWtcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxuICByZXR1cm4gZGlyc1xufVxuXG4vLyBBR0VOVFMubWQgaXMgY2Fub25pY2FsOyBDTEFVREUubWQgaXMgaG9ub3JlZCBwZXIgZGlyZWN0b3J5IG9ubHkgd2hlbiBub1xuLy8gQUdFTlRTLm1kIGV4aXN0cyB0aGVyZSwgc28gcmVwb3MgZG9jdW1lbnRlZCBmb3Igb3RoZXIgYWdlbnRzIHN0aWxsIHdvcmsuXG4vLyB0aGUgZmFsbGJhY2sgbmV2ZXIgYXBwbGllcyB0byB0aGUgZ2xvYmFsIGZpbGU6IHRoYXQgaXMgfi8ucGljby9BR0VOVFMubWRcbi8vIGFsb25lLCBhbmQgcGVyc29uYWwgZmlsZXMgbGlrZSB+Ly5jbGF1ZGUvQ0xBVURFLm1kIGFyZSBhbm90aGVyIHRvb2wnc1xuZnVuY3Rpb24gcmVhZERpckNvbnRleHQoZGlyKSB7XG4gIGNvbnN0IGFnZW50cyA9IGpvaW4oZGlyLCAnQUdFTlRTLm1kJylcbiAgY29uc3QgYWdlbnRzQ29udGVudCA9IHJlYWRJZkV4aXN0cyhhZ2VudHMpXG4gIGlmIChhZ2VudHNDb250ZW50KSByZXR1cm4geyBwYXRoOiBhZ2VudHMsIGNvbnRlbnQ6IGFnZW50c0NvbnRlbnQgfVxuICBjb25zdCBjbGF1ZGUgPSBqb2luKGRpciwgJ0NMQVVERS5tZCcpXG4gIGNvbnN0IGNsYXVkZUNvbnRlbnQgPSByZWFkSWZFeGlzdHMoY2xhdWRlKVxuICBpZiAoY2xhdWRlQ29udGVudCkgcmV0dXJuIHsgcGF0aDogY2xhdWRlLCBjb250ZW50OiBjbGF1ZGVDb250ZW50IH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTdGFydHVwQ29udGV4dChjd2QpIHtcbiAgY29uc3Qgc3RvcERpciA9IGNvbnRleHRTdG9wRGlyKGN3ZClcbiAgY29uc3QgZmlsZXMgPSBbXVxuICBjb25zdCBnbG9iYWxDb250ZW50ID0gcmVhZElmRXhpc3RzKGdsb2JhbEFnZW50c0ZpbGUoKSlcbiAgaWYgKGdsb2JhbENvbnRlbnQpIGZpbGVzLnB1c2goeyBwYXRoOiBnbG9iYWxBZ2VudHNGaWxlKCksIGNvbnRlbnQ6IGdsb2JhbENvbnRlbnQgfSlcbiAgZm9yIChjb25zdCBkaXIgb2YgYW5jZXN0b3JEaXJzKGN3ZCwgc3RvcERpcikpIHtcbiAgICBjb25zdCBlbnRyeSA9IHJlYWREaXJDb250ZXh0KGRpcilcbiAgICBpZiAoZW50cnkpIGZpbGVzLnB1c2goZW50cnkpXG4gIH1cbiAgcmV0dXJuIHsgZmlsZXMsIHN0b3BEaXIgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29udGV4dFRyYWNrZXIoeyBzdG9wRGlyLCBsb2FkZWQgfSkge1xuICByZXR1cm4ge1xuICAgIGxvYWRlZCxcbiAgICBjaGVjayhmaWxlUGF0aCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZGlybmFtZShyZXNvbHZlKGZpbGVQYXRoKSlcbiAgICAgIGlmICghdGFyZ2V0LnN0YXJ0c1dpdGgoc3RvcERpcikpIHJldHVybiBbXVxuICAgICAgY29uc3QgZnJlc2ggPSBbXVxuICAgICAgZm9yIChjb25zdCBkaXIgb2YgYW5jZXN0b3JEaXJzKHRhcmdldCwgc3RvcERpcikpIHtcbiAgICAgICAgaWYgKGxvYWRlZC5oYXMoam9pbihkaXIsICdBR0VOVFMubWQnKSkgfHwgbG9hZGVkLmhhcyhqb2luKGRpciwgJ0NMQVVERS5tZCcpKSkgY29udGludWVcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWFkRGlyQ29udGV4dChkaXIpXG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgIGxvYWRlZC5hZGQoZW50cnkucGF0aClcbiAgICAgICAgICBmcmVzaC5wdXNoKGVudHJ5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZnJlc2hcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGdsb2JhbFNraWxsc0RpciwgcHJvamVjdFNraWxsc0RpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHRleHQpIHtcbiAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eLS0tXFxuKFtcXHNcXFNdKj8pXFxuLS0tXFxuPy8pXG4gIGlmICghbWF0Y2gpIHJldHVybiB7IG1ldGE6IHt9LCBib2R5OiB0ZXh0IH1cbiAgY29uc3QgbWV0YSA9IHt9XG4gIGZvciAoY29uc3QgbGluZSBvZiBtYXRjaFsxXS5zcGxpdCgnXFxuJykpIHtcbiAgICBjb25zdCBzZXAgPSBsaW5lLmluZGV4T2YoJzonKVxuICAgIGlmIChzZXAgPT09IC0xKSBjb250aW51ZVxuICAgIG1ldGFbbGluZS5zbGljZSgwLCBzZXApLnRyaW0oKV0gPSBsaW5lLnNsaWNlKHNlcCArIDEpLnRyaW0oKVxuICB9XG4gIHJldHVybiB7IG1ldGEsIGJvZHk6IHRleHQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKSB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYW5EaXIoZGlyLCBzb3VyY2UpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3Qgc2tpbGxzID0gW11cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBuYW1lcykge1xuICAgIGlmICghZW50cnkuaXNEaXJlY3RvcnkoKSkgY29udGludWVcbiAgICBjb25zdCBmaWxlID0gam9pbihkaXIsIGVudHJ5Lm5hbWUsICdTS0lMTC5tZCcpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbWV0YSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShmaWxlLCAndXRmLTgnKSlcbiAgICAgIHNraWxscy5wdXNoKHtcbiAgICAgICAgbmFtZTogbWV0YS5uYW1lIHx8IGVudHJ5Lm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGZpbGUsXG4gICAgICB9KVxuICAgIH0gY2F0Y2gge31cbiAgfVxuICByZXR1cm4gc2tpbGxzXG59XG5cbmNvbnN0IEFTS19SVUxFID0gYEJlZm9yZSB3cml0aW5nIGFueXRoaW5nLCByZXNvbHZlIGFtYmlndWl0eTpcbi0gSWYgdGhlIHVzZXIgZGlkIG5vdCBzYXkgZ2xvYmFsIG9yIHByb2plY3QsIGFzayBleGFjdGx5IG9uZSBxdWVzdGlvbjogXCJnbG9iYWwgKGF2YWlsYWJsZSBldmVyeXdoZXJlKSBvciBqdXN0IHRoaXMgcHJvamVjdD9cIiBEbyBub3QgZ3Vlc3Mgc2lsZW50bHkuXG4tIElmIHRoZSBiZWhhdmlvciBvciBvdXRwdXQgaXMgdW5kZXJzcGVjaWZpZWQsIHN0YXRlIHRoZSBhc3N1bXB0aW9ucyB5b3UgYXJlIG1ha2luZyBpbiBvbmUgc2hvcnQgbGluZSBiZWZvcmUgcHJvY2VlZGluZywgc28gdGhlIHVzZXIgY2FuIGNvcnJlY3QgeW91LmBcblxuY29uc3QgTkVXX1RPT0xfU0tJTEwgPSBgQ3JlYXRlIGEgY3VzdG9tIHBpY28gdG9vbCBmcm9tIHRoZSB1c2VyJ3MgZGVzY3JpcHRpb24uXG5cbiR7QVNLX1JVTEV9XG5cbkEgcGljbyB0b29sIGlzIGFuIEVTIG1vZHVsZSB3aG9zZSBkZWZhdWx0IGV4cG9ydCBpcyBlaXRoZXIgYSB0b29sIG9iamVjdCBvciBhIGZhY3RvcnlcblxcYChjb250ZXh0KSA9PiB0b29sXFxgIHdoZXJlIGNvbnRleHQgaXMgXFxgeyBjd2QsIHJvb3QgfVxcYC4gVGhlIHRvb2wgb2JqZWN0IHNoYXBlOlxuXG5cXGBcXGBcXGBqc1xuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnd29yZF9jb3VudCcsXG4gIGRlc2NyaXB0aW9uOiAnQ291bnQgd29yZHMsIGxpbmVzLCBhbmQgY2hhcmFjdGVycyBpbiBhIGZpbGUnLFxuICBzY2hlbWE6IHtcbiAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnknIH0sXG4gICAgd29yZHM6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ2luY2x1ZGUgd29yZCBjb3VudCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gIH0sXG4gIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIHdvcmRzID0gdHJ1ZSB9KSA9PiB7XG4gICAgLy8gcmV0dXJuIGFueSBKU09OLXNlcmlhbGl6YWJsZSB2YWx1ZTsgdGhyb3cgYW4gRXJyb3IgdG8gcmVwb3J0IGZhaWx1cmVcbiAgICByZXR1cm4geyBwYXRoLCB3b3JkczogNDIgfVxuICB9LFxufVxuXFxgXFxgXFxgXG5cblNjaGVtYSBwcm9wZXJ0aWVzIHN1cHBvcnQ6IHR5cGUgKHN0cmluZywgbnVtYmVyLCBib29sZWFuLCBhcnJheSwgb2JqZWN0KSwgZGVzY3JpcHRpb24sXG5vcHRpb25hbCwgZW51bSAoc3RyaW5nIHZhbHVlcyksIGl0ZW1zIChmb3IgYXJyYXlzKSwgcHJvcGVydGllcyAoZm9yIG5lc3RlZCBvYmplY3RzKS5cblxuTG9jYXRpb25zOiBcXGAucGljby90b29scy88bmFtZT4uanNcXGAgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgcHJvamVjdCB0b29scyxcblxcYH4vLnBpY28vdG9vbHMvPG5hbWU+LmpzXFxgIGZvciB0b29scyBhdmFpbGFibGUgZXZlcnl3aGVyZS4gRGVmYXVsdCB0byB0aGUgcHJvamVjdCB1bmxlc3NcbnRoZSB1c2VyIGFza3MgZm9yIGEgZ2xvYmFsIHRvb2wuIE5vZGUgYnVpbHRpbnMgY2FuIGJlIGltcG9ydGVkOyBucG0gcGFja2FnZXMgY2Fubm90IGJlXG5hc3N1bWVkLiBUb29scyBhcmUgcmVzY2FubmVkIGV2ZXJ5IHR1cm4sIHNvIGEgbmV3IG9yIGVkaXRlZCB0b29sIGlzIHVzYWJsZSBvbiB0aGUgbmV4dFxubWVzc2FnZSB3aXRoIG5vIHJlc3RhcnQuXG5cblN0ZXBzOlxuMS4gRGVjaWRlIHRoZSB0b29sIG5hbWUgKHNuYWtlX2Nhc2UpLCBpbnB1dHMsIGFuZCBvdXRwdXQgc2hhcGUgZnJvbSB0aGUgdXNlcidzIHJlcXVlc3QuXG4yLiBXcml0ZSB0aGUgbW9kdWxlIHRvIHRoZSByaWdodCBsb2NhdGlvbiB3aXRoIHRoZSB3cml0ZSB0b29sLlxuMy4gU2FuaXR5LWNoZWNrIGl0IGxvYWRzOiBcXGBub2RlIC0taW5wdXQtdHlwZT1tb2R1bGUgLWUgXCJjb25zdCB0ID0gKGF3YWl0IGltcG9ydCgnZmlsZTovLzxhYnMgcGF0aD4nKSkuZGVmYXVsdDsgY29uc29sZS5sb2codC5uYW1lKVwiXFxgIChhZGp1c3QgaWYgdGhlIGV4cG9ydCBpcyBhIGZhY3RvcnkpLlxuNC4gVGVsbCB0aGUgdXNlciB0aGUgdG9vbCBpcyByZWFkeSBhbmQgd2lsbCBiZSBhdmFpbGFibGUgZnJvbSB0aGVpciBuZXh0IG1lc3NhZ2UuYFxuXG5jb25zdCBORVdfU0tJTExfU0tJTEwgPSBgQ3JlYXRlIGEgcGljbyBza2lsbCBmcm9tIHRoZSB1c2VyJ3MgZGVzY3JpcHRpb24uXG5cbiR7QVNLX1JVTEV9XG5cbkEgc2tpbGwgaXMgYSBtYXJrZG93biBmaWxlIGF0IFxcYC5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGAgKHByb2plY3QpIG9yXG5cXGB+Ly5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGAgKGdsb2JhbCkgd2l0aCBmcm9udG1hdHRlciBhbmQgYW4gaW5zdHJ1Y3Rpb24gYm9keTpcblxuXFxgXFxgXFxgXG4tLS1cbm5hbWU6IHJlbGVhc2Utbm90ZXNcbmRlc2NyaXB0aW9uOiBkcmFmdCByZWxlYXNlIG5vdGVzIGZyb20gY29tbWl0cyBzaW5jZSB0aGUgbGFzdCB0YWdcbi0tLVxuSW5zdHJ1Y3Rpb25zIHRoZSBhZ2VudCBmb2xsb3dzIHdoZW4gdGhpcyBza2lsbCBpcyBsb2FkZWQuIEJlIGltcGVyYXRpdmUgYW5kIHNwZWNpZmljLlxuXFxgXFxgXFxgXG5cblRoZSBkZXNjcmlwdGlvbiBtYXR0ZXJzIG1vc3Q6IGl0IGlzIGxpc3RlZCBpbiB0aGUgYWdlbnQncyBzeXN0ZW0gcHJvbXB0LCBhbmQgdGhlIGFnZW50XG5kZWNpZGVzIGZyb20gaXQgd2hlbiB0byBsb2FkIHRoZSBza2lsbCBvbiBpdHMgb3duLiBXcml0ZSBpdCBhcyBhIHRyaWdnZXIgY29uZGl0aW9uXG4oXCJ3aGVuIHRoZSB1c2VyIGFza3MgZm9yIFhcIiksIG5vdCBtYXJrZXRpbmcuIFRoZSBib2R5IGlzIG9ubHkgbG9hZGVkIG9uIGludm9jYXRpb24sIHNvXG5pdCBjYW4gYmUgbG9uZyBhbmQgZGV0YWlsZWQuIFN1cHBvcnRpbmcgZmlsZXMgbWF5IHNpdCBuZXh0IHRvIFNLSUxMLm1kIGluIHRoZSBzYW1lXG5kaXJlY3RvcnkgYW5kIGJlIHJlZmVyZW5jZWQgYnkgcmVsYXRpdmUgcGF0aC5cblxuU2tpbGxzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXcgc2tpbGwgaXMgdXNhYmxlIGZyb20gdGhlIG5leHQgbWVzc2FnZS5gXG5cbmNvbnN0IE5FV19DT01NQU5EX1NLSUxMID0gYENyZWF0ZSBhIHBpY28gY29tbWFuZCBmcm9tIHRoZSB1c2VyJ3MgZGVzY3JpcHRpb24uXG5cbiR7QVNLX1JVTEV9XG5cbkEgY29tbWFuZCBpcyBhIHByb21wdCB0ZW1wbGF0ZSB0aGUgVVNFUiBpbnZva2VzIGFzIFxcYC88bmFtZT4gW2FyZ3NdXFxgLiBUaGUgYWdlbnQgbmV2ZXJcbnNlZXMgY29tbWFuZHMgdW50aWwgb25lIGlzIHJ1biwgc28gdXNlIGEgY29tbWFuZCBmb3IgdXNlci10cmlnZ2VyZWQgbWFjcm9zIGFuZCBhIHNraWxsXG5mb3IgY2FwYWJpbGl0aWVzIHRoZSBhZ2VudCBzaG91bGQgcmVhY2ggZm9yIG9uIGl0cyBvd24uXG5cbkl0IGlzIGEgbWFya2Rvd24gZmlsZSBhdCBcXGAucGljby9jb21tYW5kcy88bmFtZT4ubWRcXGAgKHByb2plY3QpIG9yXG5cXGB+Ly5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCAoZ2xvYmFsKSwgb3B0aW9uYWxseSB3aXRoIGEgZGVzY3JpcHRpb24gaW4gZnJvbnRtYXR0ZXI6XG5cblxcYFxcYFxcYFxuLS0tXG5kZXNjcmlwdGlvbjogcmV2aWV3IGEgZmlsZSBmb3Igc2VjdXJpdHkgcHJvYmxlbXNcbi0tLVxuUmV2aWV3ICRBUkdVTUVOVFMgZm9yIHNlY3VyaXR5IHByb2JsZW1zLiBGb2N1cyBvbiBpbnB1dCB2YWxpZGF0aW9uIGFuZCBzZWNyZXRzLlxuXFxgXFxgXFxgXG5cblxcYCRBUkdVTUVOVFNcXGAgaXMgcmVwbGFjZWQgd2l0aCB3aGF0ZXZlciBmb2xsb3dzIHRoZSBjb21tYW5kOyB3aXRob3V0IHRoZSBwbGFjZWhvbGRlcixcbmFyZ3VtZW50cyBhcmUgYXBwZW5kZWQgYWZ0ZXIgdGhlIGJvZHkuIENvbW1hbmRzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXdcbmNvbW1hbmQgYXBwZWFycyBpbiB0aGUgc2xhc2ggbWVudSBmcm9tIHRoZSBuZXh0IG1lc3NhZ2UuYFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2tpbGxJbmRleChyb290KSB7XG4gIGNvbnN0IGJ1aWx0aW4gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ25ldy10b29sJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnY3JlYXRlIGEgY3VzdG9tIHBpY28gdG9vbCBmcm9tIGEgZGVzY3JpcHRpb24gb2Ygd2hhdCBpdCBzaG91bGQgZG8nLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfVE9PTF9TS0lMTCxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICduZXctc2tpbGwnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBwaWNvIHNraWxsIHRoYXQgdGVhY2hlcyB0aGUgYWdlbnQgYSByZXVzYWJsZSBjYXBhYmlsaXR5JyxcbiAgICAgIHNvdXJjZTogJ2J1aWx0aW4nLFxuICAgICAgYm9keTogTkVXX1NLSUxMX1NLSUxMLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25ldy1jb21tYW5kJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnY3JlYXRlIGEgcGljbyBzbGFzaCBjb21tYW5kLCBhIHByb21wdCB0ZW1wbGF0ZSB0aGUgdXNlciBpbnZva2VzJyxcbiAgICAgIHNvdXJjZTogJ2J1aWx0aW4nLFxuICAgICAgYm9keTogTkVXX0NPTU1BTkRfU0tJTEwsXG4gICAgfSxcbiAgXVxuICBjb25zdCBnbG9iYWwgPSBhd2FpdCBzY2FuRGlyKGdsb2JhbFNraWxsc0RpcigpLCAnZ2xvYmFsJylcbiAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdFNraWxsc0Rpcihyb290KSwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCBza2lsbCBvZiBbLi4uYnVpbHRpbiwgLi4uZ2xvYmFsLCAuLi5wcm9qZWN0XSkgYnlOYW1lLnNldChza2lsbC5uYW1lLCBza2lsbClcbiAgY29uc3Qgc2tpbGxzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV1cblxuICByZXR1cm4ge1xuICAgIGxpc3Q6ICgpID0+IHNraWxscyxcbiAgICBhc3luYyBsb2FkKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNraWxsID0gYnlOYW1lLmdldChuYW1lKVxuICAgICAgaWYgKCFza2lsbCkgcmV0dXJuIG51bGxcbiAgICAgIGlmIChza2lsbC5ib2R5KSByZXR1cm4gc2tpbGwuYm9keVxuICAgICAgY29uc3QgeyBib2R5IH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKHNraWxsLmZpbGUsICd1dGYtOCcpKVxuICAgICAgcmV0dXJuIGJvZHlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL3NraWxscy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbENvbW1hbmRzRGlyKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29tbWFuZHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdENvbW1hbmRzRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocm9vdCwgJy5waWNvJywgJ2NvbW1hbmRzJylcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXVxuICB9XG4gIGNvbnN0IGNvbW1hbmRzID0gW11cbiAgZm9yIChjb25zdCBmaWxlIG9mIG5hbWVzKSB7XG4gICAgaWYgKCFmaWxlLmVuZHNXaXRoKCcubWQnKSkgY29udGludWVcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBtZXRhIH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKGpvaW4oZGlyLCBmaWxlKSwgJ3V0Zi04JykpXG4gICAgICBjb21tYW5kcy5wdXNoKHtcbiAgICAgICAgbmFtZTogZmlsZS5zbGljZSgwLCAtMyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGZpbGU6IGpvaW4oZGlyLCBmaWxlKSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBjb21tYW5kc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwYW5kQ29tbWFuZChib2R5LCBhcmdzKSB7XG4gIHJldHVybiBib2R5LmluY2x1ZGVzKCckQVJHVU1FTlRTJylcbiAgICA/IGJvZHkucmVwbGFjZUFsbCgnJEFSR1VNRU5UUycsIGFyZ3MpXG4gICAgOiBhcmdzXG4gICAgICA/IGAke2JvZHkudHJpbSgpfVxcblxcbiR7YXJnc31gXG4gICAgICA6IGJvZHlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbW1hbmRJbmRleChyb290KSB7XG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsQ29tbWFuZHNEaXIoKSwgJ2dsb2JhbCcpXG4gIGNvbnN0IHByb2plY3QgPSBhd2FpdCBzY2FuRGlyKHByb2plY3RDb21tYW5kc0Rpcihyb290KSwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCBjb21tYW5kIG9mIFsuLi5nbG9iYWwsIC4uLnByb2plY3RdKSBieU5hbWUuc2V0KGNvbW1hbmQubmFtZSwgY29tbWFuZClcbiAgY29uc3QgY29tbWFuZHMgPSBbLi4uYnlOYW1lLnZhbHVlcygpXVxuXG4gIHJldHVybiB7XG4gICAgbGlzdDogKCkgPT4gY29tbWFuZHMsXG4gICAgYXN5bmMgbG9hZChuYW1lLCBhcmdzID0gJycpIHtcbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBieU5hbWUuZ2V0KG5hbWUpXG4gICAgICBpZiAoIWNvbW1hbmQpIHJldHVybiBudWxsXG4gICAgICBjb25zdCB7IGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoY29tbWFuZC5maWxlLCAndXRmLTgnKSlcbiAgICAgIHJldHVybiBleHBhbmRDb21tYW5kKGJvZHkudHJpbSgpLCBhcmdzLnRyaW0oKSlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBjb25uZWN0TUNQIH0gZnJvbSAnQHByc20vYWknXG5pbXBvcnQgeyBnbG9iYWxNY3BGaWxlLCBwcm9qZWN0TWNwRmlsZSwgcHJvamVjdERpciwgZW5zdXJlRGlyLCBwaWNvSG9tZSB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmZ1bmN0aW9uIHRva2VuaXplKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSBbXVxuICBjb25zdCByZSA9IC8oW0EtWmEtejAtOV8tXSs9KT9cIihbXlwiXSopXCJ8KFtBLVphLXowLTlfLV0rPSk/JyhbXiddKiknfChcXFMrKS9nXG4gIGxldCBtXG4gIHdoaWxlICgobSA9IHJlLmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobVsxXSAhPT0gdW5kZWZpbmVkIHx8IG1bM10gIT09IHVuZGVmaW5lZCkgdG9rZW5zLnB1c2goKG1bMV0gPz8gbVszXSkgKyAobVsyXSA/PyBtWzRdKSlcbiAgICBlbHNlIHRva2Vucy5wdXNoKG1bMl0gPz8gbVs0XSA/PyBtWzVdKVxuICB9XG4gIHJldHVybiB0b2tlbnNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29tbWFuZChzdHIpIHtcbiAgY29uc3QgdG9rZW5zID0gdG9rZW5pemUoc3RyKVxuXG4gIGNvbnN0IGVudiA9IHt9XG4gIHdoaWxlICh0b2tlbnMubGVuZ3RoICYmIC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKj0vLnRlc3QodG9rZW5zWzBdKSkge1xuICAgIGNvbnN0IHNlcCA9IHRva2Vuc1swXS5pbmRleE9mKCc9JylcbiAgICBlbnZbdG9rZW5zWzBdLnNsaWNlKDAsIHNlcCldID0gdG9rZW5zWzBdLnNsaWNlKHNlcCArIDEpXG4gICAgdG9rZW5zLnNoaWZ0KClcbiAgfVxuICBpZiAoIXRva2Vucy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignZW1wdHkgY29tbWFuZCcpXG4gIHJldHVybiB7IGNvbW1hbmQ6IHRva2Vuc1swXSwgYXJnczogdG9rZW5zLnNsaWNlKDEpLCBlbnYgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTZXJ2ZXJTcGVjKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSB0b2tlbml6ZShzdHIpXG4gIGlmICghL15odHRwcz86XFwvXFwvLy50ZXN0KHRva2Vuc1swXSB8fCAnJykpIHJldHVybiB7IHR5cGU6ICdzdGRpbycsIC4uLnBhcnNlQ29tbWFuZChzdHIpIH1cblxuICBjb25zdCBbdXJsLCAuLi5yZXN0XSA9IHRva2Vuc1xuICBjb25zdCBoZWFkZXJzID0ge31cbiAgZm9yIChjb25zdCB0b2tlbiBvZiByZXN0KSB7XG4gICAgY29uc3Qgc2VwID0gdG9rZW4uaW5kZXhPZignPScpXG4gICAgaWYgKHNlcCA8IDEpIHRocm93IG5ldyBFcnJvcihgaHR0cCBzZXJ2ZXIgc3BlYyBvbmx5IHRha2VzIGEgdXJsIGFuZCBIZWFkZXI9dmFsdWUgcGFpcnMsIGdvdCBcIiR7dG9rZW59XCJgKVxuICAgIGhlYWRlcnNbdG9rZW4uc2xpY2UoMCwgc2VwKV0gPSB0b2tlbi5zbGljZShzZXAgKyAxKVxuICB9XG4gIHJldHVybiB7IHR5cGU6ICdodHRwJywgdXJsLCBoZWFkZXJzIH1cbn1cblxuZXhwb3J0IGNvbnN0IFJFREFDVEVEX0hFQURFUiA9ICdcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjInXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbnNpdGl2ZUhlYWRlcihuYW1lKSB7XG4gIHJldHVybiAvXihhdXRob3JpemF0aW9ufHByb3h5LWF1dGhvcml6YXRpb258Y29va2llfHNldC1jb29raWV8eC1hcGkta2V5fGFwaS1rZXl8dG9rZW58c2VjcmV0KSQvaS50ZXN0KG5hbWUpXG59XG5cbmZ1bmN0aW9uIHF1b3RlSGVhZGVyVmFsdWUodmFsdWUpIHtcbiAgaWYgKCEvW1xccydcIlxcXFxdLy50ZXN0KHZhbHVlKSkgcmV0dXJuIHZhbHVlXG4gIGlmICghdmFsdWUuaW5jbHVkZXMoJ1wiJykpIHJldHVybiBgXCIke3ZhbHVlfVwiYFxuICBpZiAoIXZhbHVlLmluY2x1ZGVzKFwiJ1wiKSkgcmV0dXJuIGAnJHt2YWx1ZX0nYFxuICB0aHJvdyBuZXcgRXJyb3IoJ2hlYWRlciB2YWx1ZXMgY2Fubm90IGNvbnRhaW4gYm90aCBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0SHR0cFNlcnZlclNwZWModXJsLCBoZWFkZXJzKSB7XG4gIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gYCR7bmFtZX09JHtxdW90ZUhlYWRlclZhbHVlKHZhbHVlKX1gKVxuICByZXR1cm4gW3VybCwgLi4udmFsdWVzXS5qb2luKCcgJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZGFjdFNlcnZlclNwZWMoY29tbWFuZCkge1xuICBsZXQgc3BlY1xuICB0cnkge1xuICAgIHNwZWMgPSBwYXJzZVNlcnZlclNwZWMoY29tbWFuZClcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGNvbW1hbmRcbiAgfVxuICBpZiAoc3BlYy50eXBlICE9PSAnaHR0cCcpIHJldHVybiBjb21tYW5kXG4gIGNvbnN0IGhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoc3BlYy5oZWFkZXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IFtuYW1lLCBpc1NlbnNpdGl2ZUhlYWRlcihuYW1lKSA/IFJFREFDVEVEX0hFQURFUiA6IHZhbHVlXSkpXG4gIHJldHVybiBmb3JtYXRIdHRwU2VydmVyU3BlYyhzcGVjLnVybCwgaGVhZGVycylcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEpzb24oZmlsZSwgZmFsbGJhY2spIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShmaWxlLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbGxiYWNrXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZWdpc3RyeSgpIHtcbiAgcmV0dXJuIHJlYWRKc29uKGdsb2JhbE1jcEZpbGUoKSwgeyBzZXJ2ZXJzOiB7fSB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVSZWdpc3RyeShyZWdpc3RyeSkge1xuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGdsb2JhbE1jcEZpbGUoKSwgSlNPTi5zdHJpbmdpZnkocmVnaXN0cnksIG51bGwsIDIpICsgJ1xcbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUHJvamVjdENvbmZpZyhyb290KSB7XG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRKc29uKHByb2plY3RNY3BGaWxlKHJvb3QpLCB7fSlcbiAgcmV0dXJuIHsgZGlzYWJsZWQ6IGNvbmZpZy5kaXNhYmxlZCB8fCB7fSwgc2VydmVyczogY29uZmlnLnNlcnZlcnMgfHwge30gfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZykge1xuICBlbnN1cmVEaXIocHJvamVjdERpcihyb290KSlcbiAgYXdhaXQgd3JpdGVGaWxlKHByb2plY3RNY3BGaWxlKHJvb3QpLCBKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpICsgJ1xcbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVNY3BUcmFuc3BvcnQoY29tbWFuZCkge1xuICBjb25zdCBzcGVjID0gcGFyc2VTZXJ2ZXJTcGVjKGNvbW1hbmQpXG4gIGlmIChzcGVjLnR5cGUgPT09ICdodHRwJykge1xuICAgIGNvbnN0IHsgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RyZWFtYWJsZUh0dHAuanMnKVxuICAgIGNvbnN0IGZldGNoID0gKHVybCwgaW5pdCkgPT4gaW5pdD8ubWV0aG9kID09PSAnR0VUJ1xuICAgICAgPyBQcm9taXNlLnJlc29sdmUobmV3IFJlc3BvbnNlKG51bGwsIHsgc3RhdHVzOiA0MDUgfSkpXG4gICAgICA6IGdsb2JhbFRoaXMuZmV0Y2godXJsLCBpbml0KVxuICAgIHJldHVybiBuZXcgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQobmV3IFVSTChzcGVjLnVybCksIHtcbiAgICAgIHJlcXVlc3RJbml0OiBPYmplY3Qua2V5cyhzcGVjLmhlYWRlcnMpLmxlbmd0aCA/IHsgaGVhZGVyczogc3BlYy5oZWFkZXJzIH0gOiB1bmRlZmluZWQsXG4gICAgICBmZXRjaCxcbiAgICB9KVxuICB9XG4gIGNvbnN0IHsgU3RkaW9DbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RkaW8uanMnKVxuICByZXR1cm4gbmV3IFN0ZGlvQ2xpZW50VHJhbnNwb3J0KHtcbiAgICBjb21tYW5kOiBzcGVjLmNvbW1hbmQsXG4gICAgYXJnczogc3BlYy5hcmdzLFxuICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uc3BlYy5lbnYgfSxcbiAgICBzdGRlcnI6ICdwaXBlJyxcbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1jcFJ1bnRpbWUoeyByb290LCBvbkNoYW5nZSA9ICgpID0+IHt9IH0pIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgY29uc3Qgc2VydmVycyA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0IHJlZ2lzdGVyID0gKG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgc2VydmVycy5zZXQobmFtZSwge1xuICAgICAgbmFtZSxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBzY29wZSxcbiAgICAgIGVuYWJsZWQ6ICFwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdLFxuICAgICAgc3RhdHVzOiBwcm9qZWN0Q29uZmlnLmRpc2FibGVkW25hbWVdID8gJ2Rpc2FibGVkJyA6ICdpZGxlJyxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgY29ubmVjdGlvbjogbnVsbCxcbiAgICAgIHRyYW5zcG9ydDogbnVsbCxcbiAgICB9KVxuICB9XG4gIGZvciAoY29uc3QgW25hbWUsIGNvbW1hbmRdIG9mIE9iamVjdC5lbnRyaWVzKHJlZ2lzdHJ5LnNlcnZlcnMpKSByZWdpc3RlcihuYW1lLCBjb21tYW5kLCAnZ2xvYmFsJylcbiAgZm9yIChjb25zdCBbbmFtZSwgY29tbWFuZF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdENvbmZpZy5zZXJ2ZXJzKSkgcmVnaXN0ZXIobmFtZSwgY29tbWFuZCwgJ3Byb2plY3QnKVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNvbm5lY3QobmFtZSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgaWYgKCFzZXJ2ZXIpIHJldHVyblxuICAgIHNlcnZlci5zdGF0dXMgPSAnY29ubmVjdGluZydcbiAgICBzZXJ2ZXIuZXJyb3IgPSBudWxsXG4gICAgb25DaGFuZ2UoKVxuICAgIHRyeSB7XG4gICAgICBzZXJ2ZXIudHJhbnNwb3J0ID0gYXdhaXQgY3JlYXRlTWNwVHJhbnNwb3J0KHNlcnZlci5jb21tYW5kKVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBhd2FpdCBjb25uZWN0TUNQKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdHJhbnNwb3J0OiAoKSA9PiBzZXJ2ZXIudHJhbnNwb3J0LFxuICAgICAgfSlcbiAgICAgIHNlcnZlci5zdGF0dXMgPSAnY29ubmVjdGVkJ1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2VydmVyLnN0YXR1cyA9ICdlcnJvcidcbiAgICAgIHNlcnZlci5lcnJvciA9IFN0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDMwMClcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gbnVsbFxuICAgICAgc2VydmVyLnRyYW5zcG9ydCA9IG51bGxcbiAgICB9XG4gICAgb25DaGFuZ2UoKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdChuYW1lKSB7XG4gICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICBpZiAoc2VydmVyPy5jb25uZWN0aW9uKSB7XG4gICAgICBhd2FpdCBzZXJ2ZXIuY29ubmVjdGlvbi5jbG9zZSgpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBudWxsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb25uZWN0QWxsKCkge1xuICAgICAgY29uc3QgcGVuZGluZyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHNlcnZlciBvZiBzZXJ2ZXJzLnZhbHVlcygpKSB7XG4gICAgICAgIGlmIChzZXJ2ZXIuZW5hYmxlZCkgcGVuZGluZy5wdXNoKGNvbm5lY3Qoc2VydmVyLm5hbWUpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChwZW5kaW5nKVxuICAgIH0sXG4gICAgYXN5bmMgYWRkKG5hbWUsIGNvbW1hbmQsIHNjb3BlID0gJ2dsb2JhbCcpIHtcbiAgICAgIGlmIChzY29wZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICAgIGNvbmZpZy5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICAgICAgICByZWdpc3RyeS5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KVxuICAgICAgfVxuICAgICAgc2VydmVycy5zZXQobmFtZSwgeyBuYW1lLCBjb21tYW5kLCBzY29wZSwgZW5hYmxlZDogdHJ1ZSwgc3RhdHVzOiAnaWRsZScsIGVycm9yOiBudWxsLCBjb25uZWN0aW9uOiBudWxsLCB0cmFuc3BvcnQ6IG51bGwgfSlcbiAgICAgIGF3YWl0IGNvbm5lY3QobmFtZSlcbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZShuYW1lLCBjb21tYW5kKSB7XG4gICAgICBjb25zdCBzZXJ2ZXIgPSBzZXJ2ZXJzLmdldChuYW1lKVxuICAgICAgaWYgKCFzZXJ2ZXIpIHJldHVyblxuICAgICAgaWYgKHNlcnZlci5zY29wZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICAgIGNvbmZpZy5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICAgICAgICByZWdpc3RyeS5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KVxuICAgICAgfVxuICAgICAgYXdhaXQgZGlzY29ubmVjdChuYW1lKVxuICAgICAgc2VydmVyLmNvbW1hbmQgPSBjb21tYW5kXG4gICAgICBzZXJ2ZXIuc3RhdHVzID0gc2VydmVyLmVuYWJsZWQgPyAnaWRsZScgOiAnZGlzYWJsZWQnXG4gICAgICBzZXJ2ZXIuZXJyb3IgPSBudWxsXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIGF3YWl0IGNvbm5lY3QobmFtZSlcbiAgICB9LFxuICAgIGFzeW5jIHJlbW92ZShuYW1lKSB7XG4gICAgICBjb25zdCBzY29wZSA9IHNlcnZlcnMuZ2V0KG5hbWUpPy5zY29wZVxuICAgICAgaWYgKHNjb3BlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgICAgICAgZGVsZXRlIGNvbmZpZy5zZXJ2ZXJzW25hbWVdXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGF3YWl0IHJlYWRSZWdpc3RyeSgpXG4gICAgICAgIGRlbGV0ZSByZWdpc3RyeS5zZXJ2ZXJzW25hbWVdXG4gICAgICAgIGF3YWl0IHdyaXRlUmVnaXN0cnkocmVnaXN0cnkpXG4gICAgICB9XG4gICAgICBhd2FpdCBkaXNjb25uZWN0KG5hbWUpXG4gICAgICBzZXJ2ZXJzLmRlbGV0ZShuYW1lKVxuICAgICAgb25DaGFuZ2UoKVxuICAgIH0sXG4gICAgYXN5bmMgdG9nZ2xlKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgICBpZiAoIXNlcnZlcikgcmV0dXJuXG4gICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgaWYgKHNlcnZlci5lbmFibGVkKSB7XG4gICAgICAgIC8vIGZsaXAgdGhlIHZpc2libGUgc3RhdGUgZmlyc3Q6IGEgc2xvdy1jbG9zaW5nIHNlcnZlciAoaGVhZGxlc3NcbiAgICAgICAgLy8gYnJvd3NlcnMsIGhlYXZ5IHByb2Nlc3NlcykgbXVzdCBub3QgbWFrZSBkaXNhYmxlIGZlZWwgZGVhZFxuICAgICAgICBzZXJ2ZXIuZW5hYmxlZCA9IGZhbHNlXG4gICAgICAgIHNlcnZlci5zdGF0dXMgPSAnZGlzYWJsZWQnXG4gICAgICAgIG9uQ2hhbmdlKClcbiAgICAgICAgY29uZmlnLmRpc2FibGVkW25hbWVdID0gdHJ1ZVxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgICBkaXNjb25uZWN0KG5hbWUpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSB0cnVlXG4gICAgICAgIGRlbGV0ZSBjb25maWcuZGlzYWJsZWRbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgICAgfVxuICAgIH0sXG4gICAgcmVjb25uZWN0KG5hbWUpIHtcbiAgICAgIHJldHVybiBkaXNjb25uZWN0KG5hbWUpLnRoZW4oKCkgPT4gY29ubmVjdChuYW1lKSlcbiAgICB9LFxuICAgIGxpc3QoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldLm1hcCgocykgPT4gKHtcbiAgICAgICAgbmFtZTogcy5uYW1lLFxuICAgICAgICBjb21tYW5kOiBzLmNvbW1hbmQsXG4gICAgICAgIHNjb3BlOiBzLnNjb3BlLFxuICAgICAgICBlbmFibGVkOiBzLmVuYWJsZWQsXG4gICAgICAgIHN0YXR1czogcy5zdGF0dXMsXG4gICAgICAgIGVycm9yOiBzLmVycm9yLFxuICAgICAgICB0b29sQ291bnQ6IHMuY29ubmVjdGlvbj8udG9vbHMubGVuZ3RoIHx8IDAsXG4gICAgICAgIHRvb2xzOiAocy5jb25uZWN0aW9uPy50b29scyB8fCBbXSkubWFwKCh0KSA9PiAoeyBuYW1lOiB0Lm5hbWUsIGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uIHx8ICcnIH0pKSxcbiAgICAgIH0pKVxuICAgIH0sXG4gICAgdG9vbHMoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuY29ubmVjdGlvbilcbiAgICAgICAgLmZsYXRNYXAoKHMpID0+IHMuY29ubmVjdGlvbi50b29scylcbiAgICB9LFxuICAgIGNsb3NlQWxsKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbLi4uc2VydmVycy5rZXlzKCldLm1hcChkaXNjb25uZWN0KSlcbiAgICB9LFxuICAgIHRlcm1pbmF0ZUFsbCgpIHtcbiAgICAgIGZvciAoY29uc3Qgc2VydmVyIG9mIHNlcnZlcnMudmFsdWVzKCkpIHtcbiAgICAgICAgY29uc3QgcGlkID0gc2VydmVyLnRyYW5zcG9ydD8ucGlkXG4gICAgICAgIGlmIChwaWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvY2Vzcy5raWxsKHBpZCwgJ1NJR1RFUk0nKVxuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciwgd3JpdGVGaWxlLCBta2RpciwgdW5saW5rIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgcHJvamVjdERpciB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBwYXJzZUZyb250bWF0dGVyIH0gZnJvbSAnLi9za2lsbHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxNZW1vcnlEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdE1lbW9yeURpcihyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lKSB7XG4gIGNvbnN0IHNsdWcgPSBTdHJpbmcobmFtZSlcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJylcbiAgICAucmVwbGFjZSgvXi0rfC0rJC9nLCAnJylcbiAgICAuc2xpY2UoMCwgNjApXG4gIGlmICghc2x1ZykgdGhyb3cgbmV3IEVycm9yKCdtZW1vcnkgbmFtZSBtdXN0IGNvbnRhaW4gbGV0dGVycyBvciBudW1iZXJzJylcbiAgcmV0dXJuIHNsdWdcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNjb3BlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3QgbWVtb3JpZXMgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5tZCcpKSBjb250aW51ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEsIGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoam9pbihkaXIsIGZpbGUpLCAndXRmLTgnKSlcbiAgICAgIG1lbW9yaWVzLnB1c2goe1xuICAgICAgICBuYW1lOiBtZXRhLm5hbWUgfHwgZmlsZS5zbGljZSgwLCAtMyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzY29wZSxcbiAgICAgICAgZmlsZTogam9pbihkaXIsIGZpbGUpLFxuICAgICAgICBib2R5OiBib2R5LnRyaW0oKSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBtZW1vcmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVtb3J5KHJvb3QpIHtcbiAgY29uc3QgZGlyRm9yID0gKHNjb3BlKSA9PiAoc2NvcGUgPT09ICdnbG9iYWwnID8gZ2xvYmFsTWVtb3J5RGlyKCkgOiBwcm9qZWN0TWVtb3J5RGlyKHJvb3QpKVxuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgbGlzdCgpIHtcbiAgICAgIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsTWVtb3J5RGlyKCksICdnbG9iYWwnKVxuICAgICAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdE1lbW9yeURpcihyb290KSwgJ3Byb2plY3QnKVxuICAgICAgcmV0dXJuIFsuLi5wcm9qZWN0LCAuLi5nbG9iYWxdXG4gICAgfSxcbiAgICBhc3luYyByZW1lbWJlcih7IG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBzY29wZSA9ICdwcm9qZWN0JyB9KSB7XG4gICAgICBpZiAoIVsncHJvamVjdCcsICdnbG9iYWwnXS5pbmNsdWRlcyhzY29wZSkpIHRocm93IG5ldyBFcnJvcignc2NvcGUgbXVzdCBiZSBwcm9qZWN0IG9yIGdsb2JhbCcpXG4gICAgICBjb25zdCBzbHVnID0gc2x1Z2lmeShuYW1lKVxuICAgICAgY29uc3QgZGlyID0gZGlyRm9yKHNjb3BlKVxuICAgICAgYXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBgJHtzbHVnfS5tZGApXG4gICAgICBjb25zdCB0ZXh0ID0gYC0tLVxcbm5hbWU6ICR7c2x1Z31cXG5kZXNjcmlwdGlvbjogJHtTdHJpbmcoZGVzY3JpcHRpb24pLnJlcGxhY2UoL1xcbi9nLCAnICcpfVxcbi0tLVxcbiR7Y29udGVudH1cXG5gXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgdGV4dCwgJ3V0Zi04JylcbiAgICAgIHJldHVybiB7IG5hbWU6IHNsdWcsIHNjb3BlLCBmaWxlIH1cbiAgICB9LFxuICAgIGFzeW5jIGZvcmdldChuYW1lKSB7XG4gICAgICBjb25zdCBtZW1vcmllcyA9IGF3YWl0IHRoaXMubGlzdCgpXG4gICAgICBjb25zdCBtZW1vcnkgPSBtZW1vcmllcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpXG4gICAgICBpZiAoIW1lbW9yeSkgdGhyb3cgbmV3IEVycm9yKGBubyBtZW1vcnkgbmFtZWQgXCIke25hbWV9XCJgKVxuICAgICAgYXdhaXQgdW5saW5rKG1lbW9yeS5maWxlKVxuICAgICAgcmV0dXJuIHsgbmFtZTogbWVtb3J5Lm5hbWUsIHNjb3BlOiBtZW1vcnkuc2NvcGUgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVjYWxsKG5hbWUpIHtcbiAgICAgIGNvbnN0IG1lbW9yaWVzID0gYXdhaXQgdGhpcy5saXN0KClcbiAgICAgIGNvbnN0IG1lbW9yeSA9IG1lbW9yaWVzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSlcbiAgICAgIGlmICghbWVtb3J5KSB7XG4gICAgICAgIGNvbnN0IGtub3duID0gbWVtb3JpZXMubWFwKChtKSA9PiBtLm5hbWUpLmpvaW4oJywgJykgfHwgJ25vbmUnXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gbWVtb3J5IG5hbWVkIFwiJHtuYW1lfVwiOyBrbm93biBtZW1vcmllczogJHtrbm93bn1gKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbmFtZTogbWVtb3J5Lm5hbWUsIHNjb3BlOiBtZW1vcnkuc2NvcGUsIGZpbGU6IG1lbW9yeS5maWxlLCBjb250ZW50OiBtZW1vcnkuYm9keSB9XG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVtb3J5SW5kZXgobWVtb3JpZXMsIHJvb3QpIHtcbiAgaWYgKG1lbW9yaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBgWW91IGhhdmUgbm8gc2F2ZWQgbWVtb3JpZXMgeWV0LiBUaGlzIGluZGV4IGxpc3RzIHRoZW0gd2hlbiB5b3Ugc2F2ZSBkdXJhYmxlIGZhY3RzIHdpdGggdGhlIHJlbWVtYmVyIHRvb2w7IGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgeW91ciBtZW1vcmllcyBmcm9tIHRoaXMgaW5kZXggYWxvbmUsIHdpdGhvdXQgc2VhcmNoaW5nIHRoZSBmaWxlc3lzdGVtLmBcbiAgfVxuICBjb25zdCBsaW5lcyA9IG1lbW9yaWVzLm1hcCgobSkgPT4gYC0gJHttLm5hbWV9ICgke20uc2NvcGV9KTogJHttLmRlc2NyaXB0aW9ufWApXG4gIHJldHVybiBbXG4gICAgYE1lbW9yaWVzIHlvdSBoYXZlIHNhdmVkLiBUaGlzIGluZGV4IGlzIGNvbXBsZXRlOiBhbnN3ZXIgcXVlc3Rpb25zIGFib3V0IHlvdXIgbWVtb3JpZXMgZnJvbSBpdCBkaXJlY3RseSwgbG9hZCBvbmUgd2l0aCB0aGUgcmVjYWxsIHRvb2wgd2hlbiBpdHMgY29udGVudCBpcyByZWxldmFudCwgYW5kIG5ldmVyIHNlYXJjaCB0aGUgZmlsZXN5c3RlbSBmb3IgbWVtb3JpZXMuIFRoZSBmaWxlcyBsaXZlIGluICR7cHJvamVjdE1lbW9yeURpcihyb290KX0gYW5kICR7Z2xvYmFsTWVtb3J5RGlyKCl9IGFuZCBjYW4gYmUgZWRpdGVkIG9yIGRlbGV0ZWQgd2l0aCBvcmRpbmFyeSB0b29scyB3aGVuIGFza2VkIHRvIGN1cmF0ZSB0aGVtLmAsXG4gICAgLi4ubGluZXMsXG4gIF0uam9pbignXFxuJylcbn1cbiIsICJpbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGZpbmRQcm9qZWN0Um9vdCB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBsb2FkU3RhcnR1cENvbnRleHQsIGNyZWF0ZUNvbnRleHRUcmFja2VyIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGxJbmRleCB9IGZyb20gJy4vc2tpbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlQ29tbWFuZEluZGV4IH0gZnJvbSAnLi9jb21tYW5kcy5qcydcbmltcG9ydCB7IGNyZWF0ZU1jcFJ1bnRpbWUgfSBmcm9tICcuL21jcC5qcydcbmltcG9ydCB7IGNyZWF0ZU1lbW9yeSB9IGZyb20gJy4vbWVtb3J5LmpzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRQcm9qZWN0Qm9vdChjd2QsIHsgb25NY3BDaGFuZ2UgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICBjb25zdCByb290ID0gZmluZFByb2plY3RSb290KGN3ZClcbiAgY29uc3Qgc3RhcnR1cENvbnRleHQgPSBsb2FkU3RhcnR1cENvbnRleHQoY3dkKVxuICBjb25zdCB0cmFja2VyID0gY3JlYXRlQ29udGV4dFRyYWNrZXIoe1xuICAgIHN0b3BEaXI6IHN0YXJ0dXBDb250ZXh0LnN0b3BEaXIsXG4gICAgbG9hZGVkOiBuZXcgU2V0KHN0YXJ0dXBDb250ZXh0LmZpbGVzLm1hcCgoZikgPT4gZi5wYXRoKSksXG4gIH0pXG4gIHJldHVybiB7XG4gICAgY3dkLFxuICAgIHJvb3QsXG4gICAgZGlzcGxheUN3ZDogY3dkLnN0YXJ0c1dpdGgoaG9tZSkgPyBjd2QucmVwbGFjZShob21lLCAnficpIDogY3dkLFxuICAgIHN0YXJ0dXBDb250ZXh0LFxuICAgIHRyYWNrZXIsXG4gICAgc2tpbGxzOiBhd2FpdCBjcmVhdGVTa2lsbEluZGV4KHJvb3QpLFxuICAgIGNvbW1hbmRzOiBhd2FpdCBjcmVhdGVDb21tYW5kSW5kZXgocm9vdCksXG4gICAgbWNwOiBhd2FpdCBjcmVhdGVNY3BSdW50aW1lKHsgcm9vdCwgb25DaGFuZ2U6IG9uTWNwQ2hhbmdlIH0pLFxuICAgIG1lbW9yeTogY3JlYXRlTWVtb3J5KHJvb3QpLFxuICB9XG59XG4iLCAiY29uc3QgREVGQVVMVF9TTElDRV9DSEFSUyA9IDI0MDAwXG5jb25zdCBNQVhfU0xJQ0VfQ0hBUlMgPSAxMDAwMDBcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEcmVkZ2UoY29uZmlnID0ge30sIGVudiA9IHByb2Nlc3MuZW52KSB7XG4gIGNvbnN0IHVybCA9IGVudi5EUkVER0VfVVJMIHx8IGNvbmZpZy5kcmVkZ2U/LnVybCB8fCBudWxsXG4gIGlmICghdXJsKSByZXR1cm4gbnVsbFxuICByZXR1cm4ge1xuICAgIHVybDogdXJsLnJlcGxhY2UoL1xcLyskLywgJycpLFxuICAgIGFwaUtleTogZW52LkRSRURHRV9BUElfS0VZIHx8IGNvbmZpZy5kcmVkZ2U/LmFwaUtleSB8fCBudWxsLFxuICB9XG59XG5cbmNvbnN0IENBTExfVElNRU9VVF9NUyA9IDEyMDAwMFxuXG5hc3luYyBmdW5jdGlvbiBjYWxsKGRyZWRnZSwgcGF0aCwgcGFyYW1zLCBzaWduYWwpIHtcbiAgY29uc3QgcXVlcnkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcylcbiAgLy8gYm91bmRlZCBhYm92ZSBkcmVkZ2UncyBvd24gOTBzIHF1ZXVlIGNlaWxpbmcgc28gYSB3ZWRnZWQgc2VydmVyIGJlY29tZXNcbiAgLy8gYSB0b29sIGVycm9yIGluc3RlYWQgb2YgYSBodW5nIHR1cm5cbiAgY29uc3Qgc2lnbmFscyA9IFtBYm9ydFNpZ25hbC50aW1lb3V0KENBTExfVElNRU9VVF9NUyksIC4uLihzaWduYWwgPyBbc2lnbmFsXSA6IFtdKV1cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtkcmVkZ2UudXJsfSR7cGF0aH0/JHtxdWVyeX1gLCB7XG4gICAgc2lnbmFsOiBBYm9ydFNpZ25hbC5hbnkoc2lnbmFscyksXG4gICAgaGVhZGVyczogZHJlZGdlLmFwaUtleSA/IHsgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke2RyZWRnZS5hcGlLZXl9YCB9IDoge30sXG4gIH0pXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCByZXNwb25zZS5qc29uKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgaWYgKCFib2R5KSB0aHJvdyBuZXcgRXJyb3IoYGRyZWRnZSByZXR1cm5lZCBodHRwICR7cmVzcG9uc2Uuc3RhdHVzfSB3aXRoIG5vIHVzYWJsZSBib2R5YClcbiAgcmV0dXJuIGJvZHlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdlYlRvb2xzKHsgZHJlZGdlLCByZWNvcmRlciwgc2lnbmFsIH0pIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBuYW1lOiAnd2ViX3NlYXJjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1NlYXJjaCB0aGUgd2ViLiBHb29nbGUtc3R5bGUgb3BlcmF0b3JzIHdvcms6IHNpdGU6LCBmaWxldHlwZTpwZGYsIHF1b3RlZCBwaHJhc2VzLiBSZXR1cm5zIHJhbmtlZCByZXN1bHRzOyBwYXNzIGEgcmVzdWx0IHVybCB0byB3ZWJfZmV0Y2ggdG8gcmVhZCBpdC4nLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIHE6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIHNlYXJjaCBxdWVyeScgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBxIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcSB9KVxuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgY2FsbChkcmVkZ2UsICcvc2VhcmNoJywgeyBxIH0sIHNpZ25hbClcbiAgICAgICAgaWYgKCFib2R5Lm9rKSB0aHJvdyBuZXcgRXJyb3IoYm9keS5lcnJvcj8ubWVzc2FnZSB8fCAnc2VhcmNoIGZhaWxlZCcpXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSAoYm9keS5yZXN1bHRzIHx8IFtdKS5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgdGl0bGU6IHIudGl0bGUsXG4gICAgICAgICAgdXJsOiByLnVybCxcbiAgICAgICAgICBzbmlwcGV0OiByLnNuaXBwZXQsXG4gICAgICAgICAgc291cmNlOiByLnNvdXJjZSxcbiAgICAgICAgfSkpXG4gICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IGJhY2tlbmRzID0gKGJvZHkuYmFja2VuZHMgfHwgW10pLm1hcCgoYikgPT4gYCR7Yi5uYW1lfTogJHtiLnN0YXR1c31gKS5qb2luKCcsICcpXG4gICAgICAgICAgcmV0dXJuIHsgcmVzdWx0cywgbm90ZTogYmFja2VuZHMgPyBgbm8gcmVzdWx0cyBcdTAwQjcgYmFja2VuZHM6ICR7YmFja2VuZHN9YCA6ICdubyByZXN1bHRzJyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcmVzdWx0cyB9XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3dlYl9mZXRjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0ZldGNoIGEgdXJsIGFuZCByZWFkIGl0IGFzIGNsZWFuIG1hcmtkb3duIChodG1sLCBwZGYsIGRvY3gsIGFuZCB0ZXh0dWFsIGZvcm1hdHMgbGlrZSBqc29uKS4gTG9uZyBkb2N1bWVudHMgYXJyaXZlIGluIHNsaWNlczogdGhlIHJlc3VsdCBzYXlzIHdoaWNoIHNsaWNlIHlvdSBoYXZlIChlLmcuIFwic2xpY2UgMSBvZiAxMlwiKSBhbmQgbmV4dF9jdXJzb3IgY29udGludWVzIGZyb20gdGhlcmUuIEV2ZXJ5IHNsaWNlIHlvdSBmZXRjaCBwZXJtYW5lbnRseSBvY2N1cGllcyBjb252ZXJzYXRpb24gY29udGV4dCwgc28gb25seSB3YWxrIGN1cnNvcnMgZm9yIGNvbnRlbnQgeW91IGFjdHVhbGx5IG5lZWQsIGFuZCByYWlzZSBtYXhDaGFycyBvbmx5IHdoZW4gdGhlIHRhc2sgZ2VudWluZWx5IG5lZWRzIGEgYmlnZ2VyIHdpbmRvdy4nLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIHVybDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgdXJsIHRvIGZldGNoJyB9LFxuICAgICAgICBjdXJzb3I6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncGFnaW5hdGlvbiBjdXJzb3IgZnJvbSBhIHByZXZpb3VzIHdlYl9mZXRjaCBvZiB0aGUgc2FtZSB1cmwnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICBtYXhDaGFyczogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246IGBzbGljZSBzaXplIGluIGNoYXJhY3RlcnMsIGRlZmF1bHQgJHtERUZBVUxUX1NMSUNFX0NIQVJTfSwgbWF4ICR7TUFYX1NMSUNFX0NIQVJTfWAsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICB9LFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgdXJsLCBjdXJzb3IsIG1heENoYXJzIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogdXJsLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgJycpLnNsaWNlKDAsIDgwKSB9KVxuICAgICAgICBjb25zdCBzbGljZSA9IE1hdGgubWluKE1BWF9TTElDRV9DSEFSUywgTWF0aC5tYXgoMTAwMCwgbWF4Q2hhcnMgfHwgREVGQVVMVF9TTElDRV9DSEFSUykpXG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBjYWxsKGRyZWRnZSwgJy9mZXRjaCcsIHsgdXJsLCBtYXhDaGFyczogc2xpY2UsIC4uLihjdXJzb3IgJiYgeyBjdXJzb3IgfSkgfSwgc2lnbmFsKVxuICAgICAgICBpZiAoIWJvZHkub2spIHtcbiAgICAgICAgICBjb25zdCB7IGNvZGUsIG1lc3NhZ2UsIHJldHJ5YWJsZSB9ID0gYm9keS5lcnJvciB8fCB7fVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtjb2RlIHx8ICdmZXRjaCBmYWlsZWQnfTogJHttZXNzYWdlIHx8IHVybH0ke3JldHJ5YWJsZSA/ICcgKHJldHJ5YWJsZSknIDogJyd9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG1hcmtkb3duLCBtZXRhZGF0YSwgcGFnaW5hdGlvbiB9ID0gYm9keS5kb2NcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXJrZG93bixcbiAgICAgICAgICB0aXRsZTogbWV0YWRhdGE/LnRpdGxlIHx8IG51bGwsXG4gICAgICAgICAgZmluYWxVcmw6IG1ldGFkYXRhPy5maW5hbF91cmwgfHwgdXJsLFxuICAgICAgICAgIC4uLihwYWdpbmF0aW9uPy50b3RhbF9jaHVua3MgPiAxICYmIHsgc2xpY2U6IGAke3BhZ2luYXRpb24uY2h1bmtfaW5kZXggKyAxfSBvZiAke3BhZ2luYXRpb24udG90YWxfY2h1bmtzfWAgfSksXG4gICAgICAgICAgLi4uKHBhZ2luYXRpb24/Lm5leHRfY3Vyc29yICYmIHsgbmV4dF9jdXJzb3I6IHBhZ2luYXRpb24ubmV4dF9jdXJzb3IgfSksXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgXVxufVxuIiwgImltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5jb25zdCBNQVhfTElORVMgPSAyMDAwXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaGVsbE1hbmFnZXIoeyBvbkNoYW5nZSA9ICgpID0+IHt9LCBvbkV4aXQgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3Qgc2hlbGxzID0gbmV3IE1hcCgpXG4gIGxldCBuZXh0SWQgPSAxXG5cbiAgZnVuY3Rpb24gcHVibGljVmlldyhzaGVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogc2hlbGwuaWQsXG4gICAgICBjb21tYW5kOiBzaGVsbC5jb21tYW5kLFxuICAgICAgZGVzY3JpcHRpb246IHNoZWxsLmRlc2NyaXB0aW9uLFxuICAgICAgc2Vzc2lvbklkOiBzaGVsbC5zZXNzaW9uSWQsXG4gICAgICBjd2Q6IHNoZWxsLmN3ZCxcbiAgICAgIHN0YXR1czogc2hlbGwuc3RhdHVzLFxuICAgICAgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlLFxuICAgICAgc3RhcnRlZEF0OiBzaGVsbC5zdGFydGVkQXQsXG4gICAgICBlbmRlZEF0OiBzaGVsbC5lbmRlZEF0LFxuICAgICAga2lsbGVkQnk6IHNoZWxsLmtpbGxlZEJ5LFxuICAgICAgbGFzdExpbmU6IHNoZWxsLmxpbmVzLmF0KC0xKSB8fCAnJyxcbiAgICAgIGxpbmVDb3VudDogc2hlbGwubGluZXMubGVuZ3RoLFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvbW1hbmQsIHsgY3dkLCBlbnYsIGRlc2NyaXB0aW9uLCBzZXNzaW9uSWQgfSA9IHt9KSB7XG4gICAgY29uc3QgaWQgPSBTdHJpbmcobmV4dElkKyspXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihjb21tYW5kLCB7XG4gICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgIGN3ZDogY3dkIHx8IHByb2Nlc3MuY3dkKCksXG4gICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYsIC4uLmVudiwgRk9SQ0VfQ09MT1I6ICcwJywgTk9fQ09MT1I6ICcxJyB9LFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgIH0pXG4gICAgY29uc3Qgc2hlbGwgPSB7XG4gICAgICBpZCxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gfHwgbnVsbCxcbiAgICAgIHNlc3Npb25JZDogc2Vzc2lvbklkIHx8IG51bGwsXG4gICAgICBjd2Q6IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpLFxuICAgICAgY2hpbGQsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgIGV4aXRDb2RlOiBudWxsLFxuICAgICAgc3RhcnRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgZW5kZWRBdDogbnVsbCxcbiAgICAgIGtpbGxlZEJ5OiBudWxsLFxuICAgICAgbGluZXM6IFtdLFxuICAgICAgcGFydGlhbDogJycsXG4gICAgfVxuXG4gICAgY29uc3QgcHVzaCA9IChjaHVuaykgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9IHNoZWxsLnBhcnRpYWwgKyBjaHVuay50b1N0cmluZygpXG4gICAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpXG4gICAgICBzaGVsbC5wYXJ0aWFsID0gbGluZXMucG9wKCkgfHwgJydcbiAgICAgIHNoZWxsLmxpbmVzLnB1c2goLi4ubGluZXMpXG4gICAgICBpZiAoc2hlbGwubGluZXMubGVuZ3RoID4gTUFYX0xJTkVTKSBzaGVsbC5saW5lcy5zcGxpY2UoMCwgc2hlbGwubGluZXMubGVuZ3RoIC0gTUFYX0xJTkVTKVxuICAgICAgb25DaGFuZ2UoKVxuICAgIH1cbiAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBwdXNoKVxuICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIHB1c2gpXG4gICAgY2hpbGQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgcHVzaChgW2ZhaWxlZCB0byBzdGFydDogJHtlcnIubWVzc2FnZX1dXFxuYClcbiAgICB9KVxuICAgIGNoaWxkLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgaWYgKHNoZWxsLnBhcnRpYWwpIHtcbiAgICAgICAgc2hlbGwubGluZXMucHVzaChzaGVsbC5wYXJ0aWFsKVxuICAgICAgICBzaGVsbC5wYXJ0aWFsID0gJydcbiAgICAgIH1cbiAgICAgIHNoZWxsLnN0YXR1cyA9ICdleGl0ZWQnXG4gICAgICBzaGVsbC5leGl0Q29kZSA9IGNvZGUgPz8gKHNpZ25hbCA/IDEgOiAwKVxuICAgICAgc2hlbGwuZW5kZWRBdCA9IERhdGUubm93KClcbiAgICAgIG9uQ2hhbmdlKClcbiAgICAgIG9uRXhpdChwdWJsaWNWaWV3KHNoZWxsKSlcbiAgICB9KVxuXG4gICAgc2hlbGxzLnNldChpZCwgc2hlbGwpXG4gICAgb25DaGFuZ2UoKVxuICAgIHJldHVybiB7IGlkIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldChpZCkge1xuICAgIGNvbnN0IHNoZWxsID0gc2hlbGxzLmdldChTdHJpbmcoaWQpKVxuICAgIGlmICghc2hlbGwpIHRocm93IG5ldyBFcnJvcihgbm8gc2hlbGwgd2l0aCBpZCAke2lkfTsgaXQgaXMgZ29uZSBhbmQgY2Fubm90IGJlIGluc3BlY3RlZCAoZXhpdGVkIHNoZWxscyBkaXNhcHBlYXIgd2hlbiBkaXNtaXNzZWQpYClcbiAgICByZXR1cm4gc2hlbGxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhcnQsXG4gICAgb3V0cHV0KGlkLCB7IHRhaWwgPSAxMDAgfSA9IHt9KSB7XG4gICAgICBjb25zdCBzaGVsbCA9IGdldChpZClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBzaGVsbC5pZCxcbiAgICAgICAgY29tbWFuZDogc2hlbGwuY29tbWFuZCxcbiAgICAgICAgc3RhdHVzOiBzaGVsbC5zdGF0dXMsXG4gICAgICAgIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSxcbiAgICAgICAgb3V0cHV0OiBzaGVsbC5saW5lcy5zbGljZSgtdGFpbCkuam9pbignXFxuJyksXG4gICAgICAgIHRvdGFsTGluZXM6IHNoZWxsLmxpbmVzLmxlbmd0aCxcbiAgICAgIH1cbiAgICB9LFxuICAgIGtpbGwoaWQsIGJ5ID0gJ21vZGVsJykge1xuICAgICAgY29uc3Qgc2hlbGwgPSBnZXQoaWQpXG4gICAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiB7IGlkOiBzaGVsbC5pZCwgc3RhdHVzOiBzaGVsbC5zdGF0dXMsIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSB9XG4gICAgICBzaGVsbC5raWxsZWRCeSA9IGJ5XG4gICAgICBzaGVsbC5jaGlsZC5raWxsKCdTSUdURVJNJylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoc2hlbGwuc3RhdHVzID09PSAncnVubmluZycpIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgfSwgMzAwMCkudW5yZWYoKVxuICAgICAgcmV0dXJuIHsgaWQ6IHNoZWxsLmlkLCBzdGF0dXM6ICdraWxsaW5nJyB9XG4gICAgfSxcbiAgICBkaXNtaXNzKGlkKSB7XG4gICAgICBjb25zdCBzaGVsbCA9IHNoZWxscy5nZXQoU3RyaW5nKGlkKSlcbiAgICAgIGlmIChzaGVsbCAmJiBzaGVsbC5zdGF0dXMgPT09ICdleGl0ZWQnKSB7XG4gICAgICAgIHNoZWxscy5kZWxldGUoU3RyaW5nKGlkKSlcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4uc2hlbGxzLnZhbHVlcygpXS5tYXAocHVibGljVmlldylcbiAgICB9LFxuICAgIHJ1bm5pbmcoKSB7XG4gICAgICByZXR1cm4gWy4uLnNoZWxscy52YWx1ZXMoKV0uZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKS5sZW5ndGhcbiAgICB9LFxuICAgIGtpbGxBbGwoKSB7XG4gICAgICBmb3IgKGNvbnN0IHNoZWxsIG9mIHNoZWxscy52YWx1ZXMoKSkge1xuICAgICAgICBpZiAoc2hlbGwuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgICAgICBzaGVsbC5raWxsZWRCeSA9ICd1c2VyJ1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzaGVsbC5jaGlsZC5raWxsKCdTSUdLSUxMJylcbiAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJ1xuXG5leHBvcnQgY29uc3QgU0VTU0lPTl9WRVJTSU9OID0gMVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUV2ZW50KHR5cGUsIGRhdGEgPSB7fSkge1xuICByZXR1cm4geyBpZDogcmFuZG9tVVVJRCgpLCBhdDogRGF0ZS5ub3coKSwgdHlwZSwgZGF0YSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlSGVhZGVyKHsgY3dkLCByb290IH0pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc2Vzc2lvbicsXG4gICAgdmVyc2lvbjogU0VTU0lPTl9WRVJTSU9OLFxuICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgY3dkLFxuICAgIHJvb3QsXG4gICAgY3JlYXRlZEF0OiBEYXRlLm5vdygpLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVMaW5lKGV2ZW50KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShldmVudCkgKyAnXFxuJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMaW5lKGxpbmUpIHtcbiAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpXG4gIGlmICghdHJpbW1lZCkgcmV0dXJuIG51bGxcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHRyaW1tZWQpXG4gICAgcmV0dXJuIHBhcnNlZCAmJiB0eXBlb2YgcGFyc2VkLnR5cGUgPT09ICdzdHJpbmcnID8gcGFyc2VkIDogbnVsbFxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmVzKHRleHQpIHtcbiAgcmV0dXJuIHRleHQuc3BsaXQoJ1xcbicpLm1hcChwYXJzZUxpbmUpLmZpbHRlcihCb29sZWFuKVxufVxuIiwgImltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlLCByZWFkZGlyLCBybSwgc3RhdCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBzZXNzaW9uc0RpciwgZW5zdXJlRGlyLCBwcm9qZWN0RGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IG1ha2VIZWFkZXIsIHNlcmlhbGl6ZUxpbmUsIHBhcnNlTGluZXMsIHBhcnNlTGluZSB9IGZyb20gJy4vZXZlbnRzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbih7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGhlYWRlciA9IG1ha2VIZWFkZXIoeyBjd2QsIHJvb3QgfSlcbiAgY29uc3QgZmlsZSA9IGpvaW4oZW5zdXJlRGlyKHNlc3Npb25zRGlyKHJvb3QpKSwgYCR7aGVhZGVyLmlkfS5qc29ubGApXG4gIGNvbnN0IHNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KVxuICBzZXNzaW9uLmFwcGVuZChoZWFkZXIpXG4gIHJldHVybiBzZXNzaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KSB7XG4gIGxldCBxdWV1ZSA9IFByb21pc2UucmVzb2x2ZSgpXG4gIHJldHVybiB7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgICBmaWxlLFxuICAgIGhlYWRlcixcbiAgICBhcHBlbmQoZXZlbnQpIHtcbiAgICAgIHF1ZXVlID0gcXVldWUudGhlbigoKSA9PiBhcHBlbmRGaWxlKGZpbGUsIHNlcmlhbGl6ZUxpbmUoZXZlbnQpKSlcbiAgICAgIHJldHVybiBxdWV1ZVxuICAgIH0sXG4gICAgZmx1c2goKSB7XG4gICAgICByZXR1cm4gcXVldWVcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU2Vzc2lvbihmaWxlKSB7XG4gIGNvbnN0IGV2ZW50cyA9IHBhcnNlTGluZXMoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gIGNvbnN0IGhlYWRlciA9IGV2ZW50c1swXT8udHlwZSA9PT0gJ3Nlc3Npb24nID8gZXZlbnRzLnNoaWZ0KCkgOiBudWxsXG4gIGlmICghaGVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoYG5vdCBhIHBpY28gc2Vzc2lvbiBmaWxlOiAke2ZpbGV9YClcbiAgcmV0dXJuIHsgaGVhZGVyLCBldmVudHMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZXNzaW9uTWV0YShmaWxlKSB7XG4gIGNvbnN0IFtpbmZvLCBoYW5kbGVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW3N0YXQoZmlsZSksIHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpXSlcbiAgY29uc3QgbGluZXMgPSBoYW5kbGUuc3BsaXQoJ1xcbicpXG4gIGNvbnN0IGhlYWRlciA9IHBhcnNlTGluZShsaW5lc1swXSlcbiAgaWYgKCFoZWFkZXIgfHwgaGVhZGVyLnR5cGUgIT09ICdzZXNzaW9uJykgcmV0dXJuIG51bGxcbiAgbGV0IGF1dG9tYXRpY1RpdGxlID0gbnVsbFxuICBsZXQgY3VzdG9tVGl0bGUgPSBudWxsXG4gIGxldCBjb2xvciA9IG51bGxcbiAgbGV0IHR1cm5zID0gMFxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMuc2xpY2UoMSkpIHtcbiAgICBjb25zdCBldmVudCA9IHBhcnNlTGluZShsaW5lKVxuICAgIGlmICghZXZlbnQpIGNvbnRpbnVlXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0aXRsZScpIGN1c3RvbVRpdGxlID0gZXZlbnQuZGF0YS50ZXh0XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb2xvcicpIGNvbG9yID0gZXZlbnQuZGF0YS52YWx1ZVxuICAgIGlmIChldmVudC50eXBlID09PSAnbWVzc2FnZScgJiYgZXZlbnQuZGF0YS5tZXNzYWdlPy5yb2xlID09PSAndXNlcicpIHtcbiAgICAgIHR1cm5zKytcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBldmVudC5kYXRhLm1lc3NhZ2UuY29udGVudFxuICAgICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkoY29udGVudClcbiAgICAgICAgPyBjb250ZW50LmZpbHRlcigocCkgPT4gcC50eXBlID09PSAndGV4dCcpLm1hcCgocCkgPT4gcC50ZXh0KS5qb2luKCcgJylcbiAgICAgICAgOiBTdHJpbmcoY29udGVudClcbiAgICAgIGlmICghYXV0b21hdGljVGl0bGUgJiYgdGV4dC50cmltKCkpIGF1dG9tYXRpY1RpdGxlID0gdGV4dC50cmltKCkuc2xpY2UoMCwgMjAwKVxuICAgIH1cbiAgfVxuICBjb25zdCB0aXRsZSA9IGN1c3RvbVRpdGxlIHx8IGF1dG9tYXRpY1RpdGxlXG4gIGlmICghdGl0bGUpIHJldHVybiBudWxsXG4gIHJldHVybiB7IGZpbGUsIGhlYWRlciwgdGl0bGUsIGNvbG9yLCB0dXJucywgYXQ6IGluZm8ubXRpbWVNcyB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxpc3REaXIoZGlyKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgICByZXR1cm4gbmFtZXMuZmlsdGVyKChuKSA9PiBuLmVuZHNXaXRoKCcuanNvbmwnKSkubWFwKChuKSA9PiBqb2luKGRpciwgbikpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVTZXNzaW9uKGZpbGUpIHtcbiAgY29uc3Qgc2Vzc2lvbklkID0gYmFzZW5hbWUoZmlsZSwgJy5qc29ubCcpXG4gIGNvbnN0IHByb2plY3QgPSBkaXJuYW1lKGRpcm5hbWUoZmlsZSkpXG4gIGF3YWl0IHJtKGZpbGUpXG4gIGF3YWl0IHJtKGpvaW4ocHJvamVjdCwgJ3NjcmF0Y2hwYWRzJywgc2Vzc2lvbklkKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9qZWN0RGF0YShyb290KSB7XG4gIHJldHVybiBybShwcm9qZWN0RGlyKHJvb3QpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RTZXNzaW9ucyh7IHNjb3BlLCByb290IH0pIHtcbiAgbGV0IGZpbGVzID0gW11cbiAgaWYgKHNjb3BlID09PSAnZXZlcnl3aGVyZScpIHtcbiAgICBjb25zdCBwcm9qZWN0c0RpciA9IGpvaW4ocGljb0hvbWUoKSwgJ3Byb2plY3RzJylcbiAgICBsZXQgcHJvamVjdHMgPSBbXVxuICAgIHRyeSB7XG4gICAgICBwcm9qZWN0cyA9IGF3YWl0IHJlYWRkaXIocHJvamVjdHNEaXIpXG4gICAgfSBjYXRjaCB7fVxuICAgIGNvbnN0IG5lc3RlZCA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvamVjdHMubWFwKChwKSA9PiBsaXN0RGlyKGpvaW4ocHJvamVjdHNEaXIsIHAsICdzZXNzaW9ucycpKSksXG4gICAgKVxuICAgIGZpbGVzID0gbmVzdGVkLmZsYXQoKVxuICB9IGVsc2Uge1xuICAgIGZpbGVzID0gYXdhaXQgbGlzdERpcihzZXNzaW9uc0Rpcihyb290KSlcbiAgfVxuICBjb25zdCBtZXRhcyA9IGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcCgoZikgPT4gc2Vzc2lvbk1ldGEoZikuY2F0Y2goKCkgPT4gbnVsbCkpKVxuICByZXR1cm4gbWV0YXMuZmlsdGVyKEJvb2xlYW4pLnNvcnQoKGEsIGIpID0+IGIuYXQgLSBhLmF0KVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjb21wYWN0aW9uUHJvbXB0KGN1c3RvbUluc3RydWN0aW9ucyA9ICcnKSB7XG4gIGxldCBwcm9tcHQgPSBgWW91ciB0YXNrIGlzIHRvIGNyZWF0ZSBhIGRldGFpbGVkIHN1bW1hcnkgb2YgdGhlIGNvbnZlcnNhdGlvbiBzbyBmYXIsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cyBhbmQgeW91ciBwcmV2aW91cyBhY3Rpb25zLiBUaGUgc3VtbWFyeSBtdXN0IGxldCB3b3JrIGNvbnRpbnVlIHNlYW1sZXNzbHkgd2l0aG91dCB0aGUgb3JpZ2luYWwgbWVzc2FnZXMuXG5cbkJlZm9yZSB3cml0aW5nIHRoZSBzdW1tYXJ5LCBkcmFmdCB5b3VyIGFuYWx5c2lzIGluc2lkZSA8YW5hbHlzaXM+IHRhZ3MgKGl0IHdpbGwgYmUgZGlzY2FyZGVkKTogY2hyb25vbG9naWNhbGx5IHJlLXJlYWQgdGhlIGNvbnZlcnNhdGlvbiBhbmQgbm90ZSB0aGUgdXNlcidzIGV4cGxpY2l0IHJlcXVlc3RzIGFuZCBpbnRlbnRzLCB5b3VyIGFwcHJvYWNoLCBrZXkgZGVjaXNpb25zLCBmaWxlIG5hbWVzIGFuZCBjb2RlLCBlcnJvcnMgYW5kIGhvdyB0aGV5IHdlcmUgZml4ZWQsIGFuZCBhbnkgdXNlciBmZWVkYmFjayBvciBjb3JyZWN0aW9ucywgZXNwZWNpYWxseSB3aGVyZSB0aGUgdXNlciB0b2xkIHlvdSB0byBkbyBzb21ldGhpbmcgZGlmZmVyZW50bHkuXG5cblRoZW4gcHJvZHVjZSBhIDxzdW1tYXJ5PiBibG9jayB3aXRoIGV4YWN0bHkgdGhlc2Ugc2VjdGlvbnM6XG5cbjEuIFByaW1hcnkgUmVxdWVzdCBhbmQgSW50ZW50OiBhbGwgb2YgdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cywgaW4gZGV0YWlsXG4yLiBLZXkgVGVjaG5pY2FsIENvbmNlcHRzOiB0ZWNobm9sb2dpZXMsIHBhdHRlcm5zLCBhbmQgZGVjaXNpb25zIGluIHBsYXlcbjMuIEZpbGVzIGFuZCBDb2RlIFNlY3Rpb25zOiBmaWxlcyBleGFtaW5lZCwgbW9kaWZpZWQsIG9yIGNyZWF0ZWQ7IHdoeSBlYWNoIG1hdHRlcnM7IGltcG9ydGFudCBzbmlwcGV0cyB2ZXJiYXRpbVxuNC4gRXJyb3JzIGFuZCBGaXhlczogZXZlcnkgZXJyb3IgaGl0IGFuZCBob3cgaXQgd2FzIGZpeGVkLCBpbmNsdWRpbmcgdXNlciBmZWVkYmFjayBhYm91dCBpdFxuNS4gQWxsIFVzZXIgTWVzc2FnZXM6IGV2ZXJ5IG5vbi10b29sLXJlc3VsdCB1c2VyIG1lc3NhZ2UsIHNvIGludGVudCBhbmQgaXRzIGNoYW5nZXMgc3Vydml2ZVxuNi4gUGVuZGluZyBUYXNrczogYW55dGhpbmcgZXhwbGljaXRseSByZXF1ZXN0ZWQgYW5kIG5vdCB5ZXQgZG9uZVxuNy4gQ3VycmVudCBXb3JrOiBwcmVjaXNlbHkgd2hhdCB3YXMgaW4gcHJvZ3Jlc3MganVzdCBub3csIHdpdGggZmlsZSBuYW1lcyBhbmQgZGlyZWN0IHF1b3Rlc1xuOC4gTmV4dCBTdGVwOiBvbmx5IGlmIGRpcmVjdGx5IGluIGxpbmUgd2l0aCB0aGUgbW9zdCByZWNlbnQgZXhwbGljaXQgcmVxdWVzdDsgaW5jbHVkZSB2ZXJiYXRpbSBxdW90ZXMgc2hvd2luZyBleGFjdGx5IHdoZXJlIHdvcmsgbGVmdCBvZmYsIG9yIHN0YXRlIHRoYXQgdGhlcmUgaXMgbm9uZVxuXG5UaGlzIHN1bW1hcml6YXRpb24gcmVxdWVzdCBpcyBub3QgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uOiBkbyBub3QgbGlzdCBpdCBhcyBhIHVzZXIgbWVzc2FnZSwgY291bnQgaXQgYXMgYSB0YXNrLCBvciBsZXQgaXQgYXBwZWFyIGFzIHRoZSBjdXJyZW50IHdvcmsgb3IgbmV4dCBzdGVwLiBTdW1tYXJpemUgb25seSB3aGF0IGNhbWUgYmVmb3JlIGl0LlxuXG5SZXNwb25kIHdpdGggcGxhaW4gdGV4dCBvbmx5OiBvbmUgPGFuYWx5c2lzPiBibG9jayBmb2xsb3dlZCBieSBvbmUgPHN1bW1hcnk+IGJsb2NrLmBcblxuICBpZiAoY3VzdG9tSW5zdHJ1Y3Rpb25zLnRyaW0oKSkge1xuICAgIHByb21wdCArPSBgXFxuXFxuQWRkaXRpb25hbCBpbnN0cnVjdGlvbnM6XFxuJHtjdXN0b21JbnN0cnVjdGlvbnMudHJpbSgpfWBcbiAgfVxuICByZXR1cm4gcHJvbXB0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDb21wYWN0U3VtbWFyeShyYXcpIHtcbiAgbGV0IGZvcm1hdHRlZCA9IHJhdy5yZXBsYWNlKC88YW5hbHlzaXM+W1xcc1xcU10qPzxcXC9hbmFseXNpcz4vLCAnJylcbiAgY29uc3QgbWF0Y2ggPSBmb3JtYXR0ZWQubWF0Y2goLzxzdW1tYXJ5PihbXFxzXFxTXSo/KSg/OjxcXC9zdW1tYXJ5PnwkKS8pXG4gIGlmIChtYXRjaCkge1xuICAgIGZvcm1hdHRlZCA9IG1hdGNoWzFdXG4gIH0gZWxzZSBpZiAoZm9ybWF0dGVkLmluY2x1ZGVzKCc8YW5hbHlzaXM+JykpIHtcbiAgICAvLyB1bmNsb3NlZCBhbmFseXNpcyB3aXRoIG5vIHN1bW1hcnkgYmxvY2s6IHNhbHZhZ2UgZnJvbSB0aGUgZmlyc3RcbiAgICAvLyBzZWN0aW9uIGhlYWRlciByYXRoZXIgdGhhbiBwZXJzaXN0aW5nIHRoZSBzY3JhdGNocGFkXG4gICAgY29uc3Qgc3RhcnQgPSBmb3JtYXR0ZWQuc2VhcmNoKC9eMVxcLlxccy9tKVxuICAgIGZvcm1hdHRlZCA9IHN0YXJ0ID49IDAgPyBmb3JtYXR0ZWQuc2xpY2Uoc3RhcnQpIDogJydcbiAgfVxuICByZXR1cm4gZm9ybWF0dGVkLnJlcGxhY2UoL1xcblxcbisvZywgJ1xcblxcbicpLnRyaW0oKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VtbWFyeVNlY3Rpb25zKHRleHQpIHtcbiAgcmV0dXJuICh0ZXh0Lm1hdGNoKC9eXFxkK1xcLlxccy9nbSkgfHwgW10pLmxlbmd0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGludWF0aW9uTWVzc2FnZShzdW1tYXJ5LCB7IHNlc3Npb25GaWxlLCByZWNlbnRLZXB0IH0gPSB7fSkge1xuICBsZXQgdGV4dCA9IGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gVGhlIGVhcmxpZXIgcG9ydGlvbiBvZiB0aGlzIGNvbnZlcnNhdGlvbiB3YXMgY29tcGFjdGVkIHRvIGZyZWUgY29udGV4dC4gU3VtbWFyeSBvZiB3aGF0IGNhbWUgYmVmb3JlOlxcblxcbiR7c3VtbWFyeX1gXG4gIGlmIChzZXNzaW9uRmlsZSkge1xuICAgIHRleHQgKz0gYFxcblxcblRoZSBjb21wbGV0ZSBwcmUtY29tcGFjdGlvbiBoaXN0b3J5IGlzIHByZXNlcnZlZCBhdCAke3Nlc3Npb25GaWxlfSAoanNvbmwsIG9uZSBldmVudCBwZXIgbGluZSkuIElmIHlvdSBuZWVkIGV4YWN0IGRldGFpbHMgZnJvbSBiZWZvcmUgY29tcGFjdGlvbiwgc3VjaCBhcyBjb2RlIHlvdSBnZW5lcmF0ZWQgb3IgcHJlY2lzZSBlcnJvciB0ZXh0LCByZWFkIHRoYXQgZmlsZSB3aXRoIHlvdXIgdG9vbHMuYFxuICB9XG4gIGlmIChyZWNlbnRLZXB0KSB7XG4gICAgdGV4dCArPSBgXFxuXFxuVGhlIG1vc3QgcmVjZW50IG1lc3NhZ2VzIGZvbGxvdyB2ZXJiYXRpbS5gXG4gIH1cbiAgdGV4dCArPSBgXFxuXFxuQ29udGludWUgZXhhY3RseSB3aGVyZSB0aGluZ3MgbGVmdCBvZmYuIERvIG5vdCByZWNhcCwgYWNrbm93bGVkZ2UgdGhpcyBzdW1tYXJ5LCBvciByZS1hc2sgc2V0dGxlZCBxdWVzdGlvbnMuYFxuICByZXR1cm4gdGV4dFxufVxuIiwgImltcG9ydCB7IGNvbnRpbnVhdGlvbk1lc3NhZ2UgfSBmcm9tICcuL2NvbXBhY3Rpb24uanMnXG5cbmNvbnN0IERST1BQSU5HX01PREVTID0gWydib3RoJywgJ2NoYXQnLCAnc3VtbWFyeSddXG5cbi8vIGNvbnRleHQgZWRpdGluZzogYSBsYXJnZSB0b29sIHJlc3VsdCBrZWVwcyBnZXR0aW5nIHJlLXNlbnQgd2l0aCBldmVyeVxuLy8gcmVxdWVzdCBsb25nIGFmdGVyIHRoZSBtb2RlbCBoYXMgdXNlZCBpdC4gb25jZSB0aGUgY29udmVyc2F0aW9uIGhhcyBtb3ZlZFxuLy8gb24gKHR3byB1c2VyIHR1cm5zIHBhc3QgaXQpLCB0aGUgYm9keSBpcyByZXBsYWNlZCB3aXRoIGEgc2hvcnQgbm90ZSBpbiB0aGVcbi8vIG1vZGVsJ3MgdmlldyBvbmx5OyB0aGUgdHJhbnNjcmlwdCBhbmQgdGhlIGpzb25sIGtlZXAgdGhlIHJlYWwgdGhpbmcsIGFuZFxuLy8gdGhlIG1vZGVsIGNhbiByZS1ydW4gdGhlIHRvb2wgaWYgaXQgdHJ1bHkgbmVlZHMgdGhlIGRhdGEgYWdhaW5cbmNvbnN0IEVMSURFX01JTl9DSEFSUyA9IDQwMDBcbmNvbnN0IEVMSURFX0FGVEVSX1VTRVJfVFVSTlMgPSAyXG5cbmZ1bmN0aW9uIGVsaWRlU3RhbGVUb29sUmVzdWx0cyhoaXN0b3J5KSB7XG4gIGNvbnN0IHVzZXJJbmRleGVzID0gW11cbiAgaGlzdG9yeS5mb3JFYWNoKChtZXNzYWdlLCBpKSA9PiB7XG4gICAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInKSB1c2VySW5kZXhlcy5wdXNoKGkpXG4gIH0pXG4gIGNvbnN0IGN1dG9mZiA9IHVzZXJJbmRleGVzLmF0KC1FTElERV9BRlRFUl9VU0VSX1RVUk5TKVxuICBpZiAoY3V0b2ZmID09PSB1bmRlZmluZWQpIHJldHVybiBoaXN0b3J5XG4gIHJldHVybiBoaXN0b3J5Lm1hcCgobWVzc2FnZSwgaSkgPT4ge1xuICAgIGlmIChpID49IGN1dG9mZiB8fCBtZXNzYWdlLnJvbGUgIT09ICd0b29sJykgcmV0dXJuIG1lc3NhZ2VcbiAgICBjb25zdCBjb250ZW50ID0gU3RyaW5nKG1lc3NhZ2UuY29udGVudCA/PyAnJylcbiAgICBpZiAoY29udGVudC5sZW5ndGggPCBFTElERV9NSU5fQ0hBUlMpIHJldHVybiBtZXNzYWdlXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICBjb250ZW50OiBgW3Rvb2wgcmVzdWx0IGVsaWRlZCB0byBzYXZlIGNvbnRleHQ6ICR7Y29udGVudC5sZW5ndGgudG9Mb2NhbGVTdHJpbmcoKX0gY2hhcnMuIHJlLXJ1biB0aGUgdG9vbCBpZiB0aGlzIGlzIG5lZWRlZCBhZ2Fpbl1gLFxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gYWN0aXZlUmV3aW5kcyhldmVudHMpIHtcbiAgY29uc3QgY2FuY2VsZWQgPSBuZXcgU2V0KClcbiAgZm9yIChjb25zdCBlIG9mIGV2ZW50cykge1xuICAgIGlmIChlLnR5cGUgPT09ICdyZXdpbmRfdW5kbycpIGNhbmNlbGVkLmFkZChlLmRhdGEucmV3aW5kSWQpXG4gIH1cbiAgcmV0dXJuIGV2ZW50cy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3Jld2luZCcgJiYgIWNhbmNlbGVkLmhhcyhlLmlkKSlcbn1cblxuZnVuY3Rpb24gZHJvcHBlZElkcyhldmVudHMpIHtcbiAgY29uc3QgZHJvcHBlZCA9IG5ldyBTZXQoKVxuICBjb25zdCBpbmRleCA9IG5ldyBNYXAoZXZlbnRzLm1hcCgoZSwgaSkgPT4gW2UuaWQsIGldKSlcbiAgZm9yIChjb25zdCByZXdpbmQgb2YgYWN0aXZlUmV3aW5kcyhldmVudHMpKSB7XG4gICAgaWYgKCFEUk9QUElOR19NT0RFUy5pbmNsdWRlcyhyZXdpbmQuZGF0YS5tb2RlKSkgY29udGludWVcbiAgICBjb25zdCBmcm9tID0gaW5kZXguZ2V0KHJld2luZC5kYXRhLnRhcmdldClcbiAgICBjb25zdCB0byA9IGluZGV4LmdldChyZXdpbmQuaWQpXG4gICAgaWYgKGZyb20gPT09IHVuZGVmaW5lZCB8fCB0byA9PT0gdW5kZWZpbmVkKSBjb250aW51ZVxuICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG87IGkrKykgZHJvcHBlZC5hZGQoZXZlbnRzW2ldLmlkKVxuICB9XG4gIHJldHVybiBkcm9wcGVkXG59XG5cbmZ1bmN0aW9uIGFkZFVzYWdlSW50byh0b3RhbCwgdXNhZ2UpIHtcbiAgdG90YWwucHJvbXB0VG9rZW5zICs9IHVzYWdlLnByb21wdFRva2VucyB8fCAwXG4gIHRvdGFsLmNvbXBsZXRpb25Ub2tlbnMgKz0gdXNhZ2UuY29tcGxldGlvblRva2VucyB8fCAwXG4gIHRvdGFsLnRvdGFsVG9rZW5zICs9IHVzYWdlLnRvdGFsVG9rZW5zIHx8IDBcbiAgdG90YWwuY2FjaGVkVG9rZW5zICs9IHVzYWdlLmNhY2hlZFRva2VucyB8fCAwXG4gIHRvdGFsLnRob3VnaHRUb2tlbnMgKz0gdXNhZ2UudGhvdWdodFRva2VucyB8fCAwXG59XG5cbmZ1bmN0aW9uIGVtcHR5VXNhZ2UoKSB7XG4gIHJldHVybiB7IHByb21wdFRva2VuczogMCwgY29tcGxldGlvblRva2VuczogMCwgdG90YWxUb2tlbnM6IDAsIGNhY2hlZFRva2VuczogMCwgdGhvdWdodFRva2VuczogMCB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhyYXcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IF9yYXc6IHJhdyB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaEhpc3Rvcnkoc3RhdGUsIG1lc3NhZ2UsIGV2ZW50SWQpIHtcbiAgc3RhdGUucHJvdmlkZXJIaXN0b3J5LnB1c2gobWVzc2FnZSlcbiAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzLnB1c2goZXZlbnRJZClcbn1cblxuZnVuY3Rpb24gZm9sZE1lc3NhZ2Uoc3RhdGUsIGV2ZW50KSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2VcbiAgaWYgKCFtZXNzYWdlIHx8IG1lc3NhZ2Uucm9sZSA9PT0gJ3N5c3RlbScpIHJldHVyblxuICBwdXNoSGlzdG9yeShzdGF0ZSwgbWVzc2FnZSwgZXZlbnQuaWQpXG5cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgPyBtZXNzYWdlLmNvbnRlbnRcbiAgICAgICAgICAubWFwKChwKSA9PiAocC50eXBlID09PSAndGV4dCcgPyBwLnRleHQgOiBgW2ltYWdlOiAke1N0cmluZyhwLnNvdXJjZT8ucGF0aCB8fCAnJykuc3BsaXQoJy8nKS5wb3AoKSB8fCAnYXR0YWNoZWQnfV1gKSlcbiAgICAgICAgICAuam9pbignJylcbiAgICAgIDogU3RyaW5nKG1lc3NhZ2UuY29udGVudClcbiAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndXNlcicsIHRleHQsIGNvbnRlbnQ6IG1lc3NhZ2UuY29udGVudCwgZXZlbnRJZDogZXZlbnQuaWQgfSlcbiAgICByZXR1cm5cbiAgfVxuICBpZiAobWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgIGlmIChtZXNzYWdlLmNvbnRlbnQpIHtcbiAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBtZXNzYWdlLmNvbnRlbnQsIG1vZGVsOiBzdGF0ZS5tb2RlbCB9KVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNhbGwgb2YgbWVzc2FnZS50b29sX2NhbGxzIHx8IFtdKSB7XG4gICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICBraW5kOiAndG9vbCcsXG4gICAgICAgIGNhbGxJZDogY2FsbC5pZCxcbiAgICAgICAgbmFtZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBhcmdzOiBwYXJzZUFyZ3MoY2FsbC5mdW5jdGlvbi5hcmd1bWVudHMpLFxuICAgICAgICB0aXRsZTogY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICBzdGF0dXM6ICdkb25lJyxcbiAgICAgICAgZXZlbnRJZDogZXZlbnQuaWQsXG4gICAgICB9XG4gICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goaXRlbSlcbiAgICAgIHN0YXRlLnRvb2xJdGVtcy5zZXQoY2FsbC5pZCwgaXRlbSlcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ3Rvb2wnKSB7XG4gICAgY29uc3QgaXRlbSA9IHN0YXRlLnRvb2xJdGVtcy5nZXQobWVzc2FnZS50b29sX2NhbGxfaWQpXG4gICAgaWYgKGl0ZW0pIGl0ZW0ucmVzdWx0VGV4dCA9IFN0cmluZyhtZXNzYWdlLmNvbnRlbnQpXG4gIH1cbn1cblxuZnVuY3Rpb24gZm9sZFJld2luZChzdGF0ZSwgZXZlbnQpIHtcbiAgY29uc3QgeyBtb2RlLCBzdW1tYXJ5VGV4dCwgcmV2ZXJ0ZWQgPSBbXSB9ID0gZXZlbnQuZGF0YVxuICBmb3IgKGNvbnN0IGNhbGxJZCBvZiByZXZlcnRlZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGNhbGxJZClcbiAgICBpZiAoaXRlbSkgaXRlbS5zdGF0dXMgPSAncmV2ZXJ0ZWQnXG4gIH1cbiAgaWYgKG1vZGUgPT09ICdzdW1tYXJ5JyAmJiBzdW1tYXJ5VGV4dCkge1xuICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdzdW1tYXJ5Jywgc291cmNlOiAncmV3aW5kJywgdGV4dDogc3VtbWFyeVRleHQgfSlcbiAgICBwdXNoSGlzdG9yeShzdGF0ZSwge1xuICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXG4gICAgICBjb250ZW50OiBgW3N1bW1hcnkgb2YgdGhlIHJld291bmQgY29udmVyc2F0aW9uXVxcbiR7c3VtbWFyeVRleHR9YCxcbiAgICB9LCBldmVudC5pZClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlU3RhdGUoZXZlbnRzKSB7XG4gIGNvbnN0IGRyb3BwZWQgPSBkcm9wcGVkSWRzKGV2ZW50cylcbiAgY29uc3QgY2FuY2VsZWRVbmRvVGFyZ2V0cyA9IG5ldyBTZXQoXG4gICAgZXZlbnRzLmZpbHRlcigoZSkgPT4gZS50eXBlID09PSAncmV3aW5kX3VuZG8nKS5tYXAoKGUpID0+IGUuZGF0YS5yZXdpbmRJZCksXG4gIClcblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICB0cmFuc2NyaXB0OiBbXSxcbiAgICBwcm92aWRlckhpc3Rvcnk6IFtdLFxuICAgIGhpc3RvcnlFdmVudElkczogW10sXG4gICAgbW9kZWw6IG51bGwsXG4gICAgZWZmb3J0OiB1bmRlZmluZWQsXG4gICAgdXNhZ2U6IGVtcHR5VXNhZ2UoKSxcbiAgICB1c2FnZUJ5TW9kZWw6IHt9LFxuICAgIHVzYWdlQWN0aXZlOiBlbXB0eVVzYWdlKCksXG4gICAgdXNhZ2VBY3RpdmVCeU1vZGVsOiB7fSxcbiAgICBsYXN0UHJvbXB0VG9rZW5zOiAwLFxuICAgIGxhc3RQcm9tcHRNb2RlbDogbnVsbCxcbiAgICBsb2FkZWRDb250ZXh0OiBuZXcgU2V0KCksXG4gICAgdG9vbEl0ZW1zOiBuZXcgTWFwKCksXG4gIH1cblxuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgIGlmIChldmVudC50eXBlID09PSAndXNhZ2UnKSB7XG4gICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2UsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBjb25zdCBieU1vZGVsID0gKHN0YXRlLnVzYWdlQnlNb2RlbFtldmVudC5kYXRhLm1vZGVsXSB8fD0gZW1wdHlVc2FnZSgpKVxuICAgICAgYWRkVXNhZ2VJbnRvKGJ5TW9kZWwsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICBpZiAoIWRyb3BwZWQuaGFzKGV2ZW50LmlkKSkge1xuICAgICAgICBhZGRVc2FnZUludG8oc3RhdGUudXNhZ2VBY3RpdmUsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICAgIGNvbnN0IGFjdGl2ZUJ5TW9kZWwgPSAoc3RhdGUudXNhZ2VBY3RpdmVCeU1vZGVsW2V2ZW50LmRhdGEubW9kZWxdIHx8PSBlbXB0eVVzYWdlKCkpXG4gICAgICAgIGFkZFVzYWdlSW50byhhY3RpdmVCeU1vZGVsLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgICAvLyBvbmx5IGV2ZW50cyB0aGF0IHJlY29yZGVkIHRoZSBmaW5hbCByZXF1ZXN0J3Mgc2l6ZSBjYW4gZHJpdmUgdGhlXG4gICAgICAgIC8vIGNvbnRleHQgbWV0ZXI7IG9sZGVyIGN1bXVsYXRpdmUtb25seSBldmVudHMgd291bGQgb3ZlcnN0YXRlIGl0XG4gICAgICAgIGlmIChldmVudC5kYXRhLmxhc3RQcm9tcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSBldmVudC5kYXRhLmxhc3RQcm9tcHRcbiAgICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0TW9kZWwgPSBldmVudC5kYXRhLm1vZGVsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChkcm9wcGVkLmhhcyhldmVudC5pZCkpIGNvbnRpbnVlXG5cbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICBmb2xkTWVzc2FnZShzdGF0ZSwgZXZlbnQpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0b29sX21ldGEnOiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KGV2ZW50LmRhdGEuY2FsbElkKVxuICAgICAgICBpZiAoaXRlbSkgT2JqZWN0LmFzc2lnbihpdGVtLCBldmVudC5kYXRhLCB7IGtpbmQ6ICd0b29sJywgY2FsbElkOiBpdGVtLmNhbGxJZCB9KVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnaW50ZXJydXB0Jzoge1xuICAgICAgICBjb25zdCBsYXN0ID0gc3RhdGUudHJhbnNjcmlwdC5hdCgtMSlcbiAgICAgICAgaWYgKGxhc3Q/LmtpbmQgPT09ICdhc3Npc3RhbnQnKSBsYXN0LmludGVycnVwdGVkID0gdHJ1ZVxuICAgICAgICBpZiAobGFzdD8ua2luZCA9PT0gJ3Rvb2wnICYmIGxhc3Quc3RhdHVzID09PSAncnVubmluZycpIGxhc3Quc3RhdHVzID0gJ2ludGVycnVwdGVkJ1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9kZWxfc3dpdGNoJzpcbiAgICAgICAgc3RhdGUubW9kZWwgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdlZmZvcnQnOlxuICAgICAgICBzdGF0ZS5lZmZvcnQgPSBldmVudC5kYXRhLnRvXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0aXRsZSc6XG4gICAgICAgIHN0YXRlLnRpdGxlID0gZXZlbnQuZGF0YS50ZXh0XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgIHN0YXRlLmNvbG9yID0gZXZlbnQuZGF0YS52YWx1ZVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAncmV3aW5kJzpcbiAgICAgICAgaWYgKCFjYW5jZWxlZFVuZG9UYXJnZXRzLmhhcyhldmVudC5pZCkpIGZvbGRSZXdpbmQoc3RhdGUsIGV2ZW50KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnY29tcGFjdCc6IHtcbiAgICAgICAgY29uc3QgeyBzdW1tYXJ5LCBrZWVwRnJvbSwgc2Vzc2lvbkZpbGUgfSA9IGV2ZW50LmRhdGFcbiAgICAgICAgaWYgKGtlZXBGcm9tICE9PSB1bmRlZmluZWQgfHwgc2Vzc2lvbkZpbGUpIHtcbiAgICAgICAgICBjb25zdCBpZHggPSBrZWVwRnJvbSA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5pbmRleE9mKGtlZXBGcm9tKSA6IC0xXG4gICAgICAgICAgY29uc3Qga2VwdCA9IGlkeCA+PSAwID8gc3RhdGUucHJvdmlkZXJIaXN0b3J5LnNsaWNlKGlkeCkgOiBbXVxuICAgICAgICAgIGNvbnN0IGtlcHRJZHMgPSBpZHggPj0gMCA/IHN0YXRlLmhpc3RvcnlFdmVudElkcy5zbGljZShpZHgpIDogW11cbiAgICAgICAgICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBbXG4gICAgICAgICAgICB7IHJvbGU6ICd1c2VyJywgY29udGVudDogY29udGludWF0aW9uTWVzc2FnZShzdW1tYXJ5LCB7IHNlc3Npb25GaWxlLCByZWNlbnRLZXB0OiBrZXB0Lmxlbmd0aCA+IDAgfSkgfSxcbiAgICAgICAgICAgIC4uLmtlcHQsXG4gICAgICAgICAgXVxuICAgICAgICAgIHN0YXRlLmhpc3RvcnlFdmVudElkcyA9IFtudWxsLCAuLi5rZXB0SWRzXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnByb3ZpZGVySGlzdG9yeSA9IFtcbiAgICAgICAgICAgIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBgW2NvbnZlcnNhdGlvbiBzdW1tYXJ5XVxcbiR7c3VtbWFyeX1gIH0sXG4gICAgICAgICAgICB7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiAnR290IGl0LiBDb250aW51aW5nIGZyb20gdGhhdCBzdW1tYXJ5LicgfSxcbiAgICAgICAgICBdXG4gICAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW251bGwsIG51bGxdXG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3N1bW1hcnknLCBzb3VyY2U6ICdjb21wYWN0JywgdGV4dDogc3VtbWFyeSB9KVxuICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zID0gMFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0ID0gW11cbiAgICAgICAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gW11cbiAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW11cbiAgICAgICAgc3RhdGUudG9vbEl0ZW1zID0gbmV3IE1hcCgpXG4gICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSAwXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb250ZXh0X2ZpbGUnOlxuICAgICAgICBzdGF0ZS5sb2FkZWRDb250ZXh0LmFkZChldmVudC5kYXRhLnBhdGgpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdza2lsbCc6XG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdza2lsbCcsIG5hbWU6IGV2ZW50LmRhdGEubmFtZSB9KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndGhvdWdodHMnOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAndGhvdWdodHMnLCB0ZXh0OiBldmVudC5kYXRhLnRleHQgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NoZWxsX25vdGUnOlxuICAgICAgY2FzZSAnc3lzdGVtX25vdGUnOiB7XG4gICAgICAgIHB1c2hIaXN0b3J5KHN0YXRlLCB7IHJvbGU6ICd1c2VyJywgY29udGVudDogZXZlbnQuZGF0YS50ZXh0IH0sIGV2ZW50LmlkKVxuICAgICAgICBjb25zdCBsaW5lcyA9IGV2ZW50LmRhdGEudGV4dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIGNvbnN0IGFnZW50Q29tcGxldGlvbnMgPSBsaW5lcy5maWx0ZXIoKGxpbmUpID0+IC9eQWdlbnQgXFxkKyBcXCguK1xcKSBmaW5pc2hlZCB3aXRoIHN0YXR1cyAvLnRlc3QobGluZSkpXG4gICAgICAgIGlmIChhZ2VudENvbXBsZXRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIGZvciAoY29uc3QgdGV4dCBvZiBhZ2VudENvbXBsZXRpb25zKSBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAnbm90aWNlJywgdGV4dCwgYWdlbnRDb21wbGV0aW9uOiB0cnVlIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ25vdGljZScsIHRleHQ6IGxpbmVzWzBdIHx8ICcnIH0pXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBlbGlkZVN0YWxlVG9vbFJlc3VsdHMoc3RhdGUucHJvdmlkZXJIaXN0b3J5KVxuICByZXR1cm4gc3RhdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJFbnRyaWVzKHN0YXRlKSB7XG4gIGNvbnN0IGVudHJpZXMgPSBbXVxuICBzdGF0ZS50cmFuc2NyaXB0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0ua2luZCA9PT0gJ3VzZXInKSBlbnRyaWVzLnB1c2goeyB0ZXh0OiBpdGVtLnRleHQsIGNvbnRlbnQ6IGl0ZW0uY29udGVudCwgaW5kZXgsIGV2ZW50SWQ6IGl0ZW0uZXZlbnRJZCB9KVxuICB9KVxuICByZXR1cm4gZW50cmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV3aW5kU3RhdHMoc3RhdGUsIGluZGV4KSB7XG4gIGNvbnN0IHRhaWwgPSBzdGF0ZS50cmFuc2NyaXB0LnNsaWNlKGluZGV4KVxuICByZXR1cm4ge1xuICAgIG1zZ3M6IHRhaWwubGVuZ3RoLFxuICAgIGVkaXRzOiB0YWlsLmZpbHRlcigobSkgPT4gbS5raW5kID09PSAndG9vbCcgJiYgbS5yZXZlcnQgJiYgbS5zdGF0dXMgIT09ICdyZXZlcnRlZCcpLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgY29tcG9zZSwgc2NvcGUsIG1vZGVsLCBub1Rvb2xzQ2FsbGVkLCBJbmhlcml0LCBnZXRUZXh0IH0gZnJvbSAnQHByc20vYWknXG5cbmFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVQYXJ0KHBhcnQpIHtcbiAgaWYgKHBhcnQudHlwZSAhPT0gJ2ltYWdlJyB8fCBwYXJ0LnNvdXJjZT8ua2luZCAhPT0gJ3BhdGgnKSByZXR1cm4gcGFydFxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShwYXJ0LnNvdXJjZS5wYXRoKVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgc291cmNlOiB7IGtpbmQ6ICdiYXNlNjQnLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSwgZGF0YTogZGF0YS50b1N0cmluZygnYmFzZTY0JykgfSxcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHR5cGU6ICd0ZXh0JywgdGV4dDogYFtpbWFnZSB1bmF2YWlsYWJsZTogJHtwYXJ0LnNvdXJjZS5wYXRofV1gIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZUltYWdlcyhoaXN0b3J5KSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICBoaXN0b3J5Lm1hcChhc3luYyAobWVzc2FnZSkgPT5cbiAgICAgIEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KVxuICAgICAgICA/IHsgLi4ubWVzc2FnZSwgY29udGVudDogYXdhaXQgUHJvbWlzZS5hbGwobWVzc2FnZS5jb250ZW50Lm1hcChoeWRyYXRlUGFydCkpIH1cbiAgICAgICAgOiBtZXNzYWdlLFxuICAgICksXG4gIClcbn1cblxuLy8gcmVhc29uaW5nIG1vZGVscyB3aXRoIGxhcmdlIGNvbnRleHRzIGNhbiBzaXQgbWludXRlcyBiZWZvcmUgdGhlIGZpcnN0XG4vLyBvdXRwdXQgdG9rZW47IHRoaXMgZ3VhcmRzIGFnYWluc3QgdHJ1bHkgZGVhZCBzdHJlYW1zLCBub3Qgc2xvdyBvbmVzXG5jb25zdCBTVEFMTF9NUyA9IDMwMDAwMFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcGFjdEhpc3RvcnkoeyBoaXN0b3J5LCBtb2RlbE5hbWUsIGF1dGgsIHByb21wdCwgc2lnbmFsLCBvblN0cmVhbSB9KSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNvbXBvc2UoXG4gICAgbW9kZWwoe1xuICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgLi4uKGF1dGg/LmhlYWRlcnMgJiYgeyBoZWFkZXJzOiBhdXRoLmhlYWRlcnMgfSksXG4gICAgfSksXG4gICkoe1xuICAgIGhpc3Rvcnk6IFsuLi5oaXN0b3J5LmZpbHRlcigobSkgPT4gbS5yb2xlICE9PSAnc3lzdGVtJyksIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBwcm9tcHQgfV0sXG4gICAgdG9vbHM6IFtdLFxuICAgIGFib3J0U2lnbmFsOiBzaWduYWwsXG4gICAgLi4uKG9uU3RyZWFtICYmIHsgc3RyZWFtOiBvblN0cmVhbSB9KSxcbiAgfSlcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgdGhyb3cgbmV3IEVycm9yKCdjb21wYWN0aW9uIGNhbmNlbGxlZCcpXG4gIHJldHVybiBnZXRUZXh0KG91dC5sYXN0UmVzcG9uc2U/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxufVxuXG4vLyB0aGUgc3VtbWFyeSBoYXMgYSBmaXhlZCBzaGFwZTogYW4gPGFuYWx5c2lzPiBzY3JhdGNocGFkLCB0aGVuIDggbnVtYmVyZWRcbi8vIHNlY3Rpb25zOyB3YXRjaGluZyBoZWFkZXJzIHN0cmVhbSBieSBpcyByZWFsIHByb2dyZXNzLCBub3QgYW4gZXN0aW1hdGVcbmV4cG9ydCBmdW5jdGlvbiBjb21wYWN0UHJvZ3Jlc3Moc3RyZWFtZWQpIHtcbiAgY29uc3QgY2hhcnMgPSBzdHJlYW1lZC5sZW5ndGhcbiAgY29uc3QgYWZ0ZXJBbmFseXNpcyA9IHN0cmVhbWVkLnNwbGl0KCc8L2FuYWx5c2lzPicpWzFdID8/IHN0cmVhbWVkLnNwbGl0KCc8c3VtbWFyeT4nKVsxXVxuICBpZiAoYWZ0ZXJBbmFseXNpcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4geyBwaGFzZTogJ2FuYWx5emluZycsIHNlY3Rpb246IDAsIGNoYXJzIH1cbiAgY29uc3Qgc2VjdGlvbnMgPSAoYWZ0ZXJBbmFseXNpcy5tYXRjaCgvXlxccypcXGQrXFwuXFxzL2dtKSB8fCBbXSkubGVuZ3RoXG4gIGlmIChzZWN0aW9ucyA9PT0gMCkgcmV0dXJuIHsgcGhhc2U6ICdhbmFseXppbmcnLCBzZWN0aW9uOiAwLCBjaGFycyB9XG4gIHJldHVybiB7IHBoYXNlOiAnd3JpdGluZycsIHNlY3Rpb246IE1hdGgubWluKDgsIHNlY3Rpb25zKSwgY2hhcnMgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VtbWFyaXplVGV4dCh7IHRleHQsIG1vZGVsTmFtZSwgYXV0aCB9KSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGNvbXBvc2UoXG4gICAgbW9kZWwoe1xuICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgIHN5c3RlbTogJ1N1bW1hcml6ZSB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbiBleGNlcnB0IGluIDItNCBkZW5zZSBzZW50ZW5jZXMuIENhcHR1cmUgZGVjaXNpb25zLCBjaGFuZ2VzIG1hZGUsIGFuZCBvcGVuIHF1ZXN0aW9ucy4gT3V0cHV0IG9ubHkgdGhlIHN1bW1hcnkuJyxcbiAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgLi4uKGF1dGg/LmhlYWRlcnMgJiYgeyBoZWFkZXJzOiBhdXRoLmhlYWRlcnMgfSksXG4gICAgfSksXG4gICkodGV4dC5zbGljZSgwLCAzMDAwMCkpXG4gIHJldHVybiBnZXRUZXh0KG91dC5sYXN0UmVzcG9uc2U/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuVHVybih7IGhpc3RvcnksIHRvb2xzLCByZWNvcmRlciwgbW9kZWxOYW1lLCBlZmZvcnQsIGF1dGgsIHN5c3RlbSwgc2lnbmFsLCBvblN0cmVhbSwgc3RhbGxNcyA9IFNUQUxMX01TIH0pIHtcbiAgY29uc3QgY29sbGVjdGVkID0gW11cbiAgbGV0IHJvdW5kVGV4dCA9ICcnXG4gIGxldCB1c2FnZVNlZW4gPSBudWxsXG4gIGxldCBzdGFsbGVkID0gZmFsc2VcbiAgLy8gdXNhZ2UgZXZlbnRzIGNhcnJ5IGN1bXVsYXRpdmUgdG90YWxzIHBlciByZXF1ZXN0IHJvdW5kLCBzbyBjb25zZWN1dGl2ZVxuICAvLyBkZWx0YXMgcmVjb3ZlciBlYWNoIHJvdW5kJ3MgdHJ1ZSBpbnB1dCBzaXplOyB0aGUgbGFzdCBkZWx0YSBpcyB0aGUgc2l6ZVxuICAvLyBvZiB0aGUgY3VycmVudCBjb250ZXh0IGFzIGFjdHVhbGx5IHNlbnRcbiAgbGV0IGN1bXVsYXRpdmVQcm9tcHQgPSAwXG4gIGxldCBsYXN0UHJvbXB0VG9rZW5zID0gMFxuXG4gIGNvbnN0IGludGVybmFsID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gIGNvbnN0IG9uVXNlckFib3J0ID0gKCkgPT4gaW50ZXJuYWwuYWJvcnQoKVxuICBpZiAoc2lnbmFsPy5hYm9ydGVkKSBpbnRlcm5hbC5hYm9ydCgpXG4gIGVsc2Ugc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uVXNlckFib3J0LCB7IG9uY2U6IHRydWUgfSlcblxuICBsZXQgd2F0Y2hkb2cgPSBudWxsXG4gIGNvbnN0IGFybSA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQod2F0Y2hkb2cpXG4gICAgd2F0Y2hkb2cgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHN0YWxsZWQgPSB0cnVlXG4gICAgICBpbnRlcm5hbC5hYm9ydCgpXG4gICAgfSwgc3RhbGxNcylcbiAgfVxuXG4gIGNvbnN0IHN0cmVhbSA9IChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC50eXBlID09PSAndG9vbF9leGVjdXRpbmcnKSB7XG4gICAgICAvLyBhIHRvb2wgbWF5IGxlZ2l0aW1hdGVseSBydW4gZm9yIG1pbnV0ZXMgKHRlc3Qgc3VpdGVzLCBzbG93IGZldGNoZXMpXG4gICAgICAvLyBhbmQgZW1pdHMgbm90aGluZyB3aGlsZSBpdCBkb2VzOyB0aGUgd2F0Y2hkb2cgZ3VhcmRzIHRoZSBwcm92aWRlclxuICAgICAgLy8gc3RyZWFtLCBzbyBwYXVzZSBpdCB1bnRpbCB0aGUgdG9vbCBmaW5pc2hlcy4gdG9vbHMgY2FycnkgdGhlaXIgb3duXG4gICAgICAvLyB0aW1lb3V0cyAoYmFzaCAxMjBzIGRlZmF1bHQsIHdlYiB0b29scyB2aWEgZHJlZGdlKVxuICAgICAgY2xlYXJUaW1lb3V0KHdhdGNoZG9nKVxuICAgICAgcmVjb3JkZXIuY3VycmVudENhbGwgPSBldmVudC5jYWxsXG4gICAgICBvblN0cmVhbT8uKGV2ZW50KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGFybSgpXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgcm91bmRUZXh0ICs9IGV2ZW50LmNvbnRlbnRcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NhbGxzX3JlYWR5Jykge1xuICAgICAgY29sbGVjdGVkLnB1c2goeyByb2xlOiAnYXNzaXN0YW50JywgY29udGVudDogcm91bmRUZXh0LCB0b29sX2NhbGxzOiBldmVudC5jYWxscyB9KVxuICAgICAgcm91bmRUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJykge1xuICAgICAgY29sbGVjdGVkLnB1c2goeyByb2xlOiAndG9vbCcsIHRvb2xfY2FsbF9pZDogZXZlbnQuY2FsbC5pZCwgY29udGVudDogSlNPTi5zdHJpbmdpZnkoZXZlbnQucmVzdWx0KSB9KVxuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXJyb3InKSB7XG4gICAgICBjb2xsZWN0ZWQucHVzaCh7IHJvbGU6ICd0b29sJywgdG9vbF9jYWxsX2lkOiBldmVudC5jYWxsLmlkLCBjb250ZW50OiBKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBldmVudC5lcnJvciB9KSB9KVxuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3VzYWdlJykge1xuICAgICAgdXNhZ2VTZWVuID0gZXZlbnQudXNhZ2VcbiAgICAgIGNvbnN0IHByb21wdCA9IGV2ZW50LnVzYWdlPy5wcm9tcHRUb2tlbnMgfHwgMFxuICAgICAgbGFzdFByb21wdFRva2VucyA9IE1hdGgubWF4KDAsIHByb21wdCAtIGN1bXVsYXRpdmVQcm9tcHQpXG4gICAgICBjdW11bGF0aXZlUHJvbXB0ID0gcHJvbXB0XG4gICAgfVxuICAgIG9uU3RyZWFtPy4oZXZlbnQpXG4gIH1cblxuICBjb25zdCBiYXNlID0gaGlzdG9yeS5sZW5ndGhcbiAgY29uc3Qgc3RlcCA9IGNvbXBvc2UoXG4gICAgc2NvcGUoXG4gICAgICB7IGluaGVyaXQ6IEluaGVyaXQuQ29udmVyc2F0aW9uLCBzeXN0ZW0sIHRvb2xzLCB1bnRpbDogbm9Ub29sc0NhbGxlZCgpLCBzdHJlYW0gfSxcbiAgICAgIChjdHgpID0+XG4gICAgICAgIG1vZGVsKHtcbiAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgIC4uLihlZmZvcnQgJiYgeyBlZmZvcnQgfSksXG4gICAgICAgICAgLi4uKGF1dGg/LmFwaUtleSAmJiB7IGFwaUtleTogYXV0aC5hcGlLZXkgfSksXG4gICAgICAgICAgLi4uKGF1dGg/LmhlYWRlcnMgJiYgeyBoZWFkZXJzOiBhdXRoLmhlYWRlcnMgfSksXG4gICAgICAgIH0pKHsgLi4uY3R4LCBhYm9ydFNpZ25hbDogaW50ZXJuYWwuc2lnbmFsIH0pLFxuICAgICksXG4gIClcblxuICBjb25zdCBwYXJ0aWFsTWVzc2FnZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBbLi4uY29sbGVjdGVkXVxuICAgIGlmIChyb3VuZFRleHQpIG1lc3NhZ2VzLnB1c2goeyByb2xlOiAnYXNzaXN0YW50JywgY29udGVudDogcm91bmRUZXh0IH0pXG4gICAgcmV0dXJuIG1lc3NhZ2VzXG4gIH1cblxuICBhcm0oKVxuICB0cnkge1xuICAgIGNvbnN0IG91dCA9IGF3YWl0IHN0ZXAoeyBoaXN0b3J5OiBhd2FpdCBoeWRyYXRlSW1hZ2VzKGhpc3RvcnkpLCB0b29sczogW10gfSlcbiAgICBjb25zdCBpbnRlcnJ1cHRlZCA9ICEhc2lnbmFsPy5hYm9ydGVkIHx8IHN0YWxsZWRcbiAgICBpZiAoaW50ZXJydXB0ZWQpIHtcbiAgICAgIHJldHVybiB7IG1lc3NhZ2VzOiBwYXJ0aWFsTWVzc2FnZXMoKSwgdXNhZ2U6IHVzYWdlU2VlbiwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQsIHN0YWxsZWQgfVxuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlcyA9IG91dC5oaXN0b3J5LmZpbHRlcigobSkgPT4gbS5yb2xlICE9PSAnc3lzdGVtJykuc2xpY2UoYmFzZSlcbiAgICByZXR1cm4geyBtZXNzYWdlcywgdXNhZ2U6IG91dC51c2FnZSB8fCBudWxsLCBsYXN0UHJvbXB0VG9rZW5zLCBpbnRlcnJ1cHRlZDogZmFsc2UsIHN0YWxsZWQ6IGZhbHNlIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyci5uYW1lID09PSAnQWJvcnRFcnJvcicgfHwgaW50ZXJuYWwuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiB7IG1lc3NhZ2VzOiBwYXJ0aWFsTWVzc2FnZXMoKSwgdXNhZ2U6IHVzYWdlU2VlbiwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQ6IHRydWUsIHN0YWxsZWQgfVxuICAgIH1cbiAgICAvLyBhIHByb3ZpZGVyIGVycm9yIG1pZC10dXJuIG11c3Qgbm90IGRpc2NhcmQgdGhlIHJvdW5kcyB0aGF0IGFscmVhZHlcbiAgICAvLyByYW46IHRvb2xzIG11dGF0ZWQgdGhlIHdvcmxkLCBzbyB0aGUgcmVjb3JkIGhhcyB0byBzdXJ2aXZlXG4gICAgcmV0dXJuIHsgbWVzc2FnZXM6IHBhcnRpYWxNZXNzYWdlcygpLCB1c2FnZTogdXNhZ2VTZWVuLCBsYXN0UHJvbXB0VG9rZW5zLCBpbnRlcnJ1cHRlZDogdHJ1ZSwgc3RhbGxlZDogZmFsc2UsIGVycm9yOiBTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKSB9XG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHdhdGNoZG9nKVxuICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvblVzZXJBYm9ydClcbiAgfVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0VGl0bGUobmFtZSwgYXJncyA9IHt9KSB7XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IGFyZ3MucGF0aCB8fCBhcmdzLmNvbW1hbmQgfHwgYXJncy5wYXR0ZXJuIHx8IGFyZ3MudXJsIHx8IGFyZ3MubmFtZVxuICBpZiAodHlwZW9mIGNhbmRpZGF0ZSA9PT0gJ3N0cmluZycgJiYgY2FuZGlkYXRlKSByZXR1cm4gY2FuZGlkYXRlXG4gIGNvbnN0IHJhdyA9IEpTT04uc3RyaW5naWZ5KGFyZ3MpXG4gIGlmICghcmF3IHx8IHJhdyA9PT0gJ3t9JykgcmV0dXJuIG5hbWVcbiAgcmV0dXJuIHJhdy5sZW5ndGggPiA2MCA/IHJhdy5zbGljZSgwLCA2MCkgKyAnXHUyMDI2JyA6IHJhd1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVjb3JkZXIoKSB7XG4gIHJldHVybiB7XG4gICAgY3VycmVudENhbGw6IG51bGwsXG4gICAgZW50cmllczogW10sXG4gICAgcGVuZGluZzogbnVsbCxcbiAgICBiZWdpbihuYW1lLCBhcmdzKSB7XG4gICAgICB0aGlzLnBlbmRpbmcgPSB7XG4gICAgICAgIGNhbGxJZDogdGhpcy5jdXJyZW50Q2FsbD8uaWQgPz8gbnVsbCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdGl0bGU6IGRlZmF1bHRUaXRsZShuYW1lLCBhcmdzKSxcbiAgICAgICAgc3RhdHVzOiAnZG9uZScsXG4gICAgICAgIHN0YXJ0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGV4dHJhKGZpZWxkcykge1xuICAgICAgaWYgKHRoaXMucGVuZGluZykgT2JqZWN0LmFzc2lnbih0aGlzLnBlbmRpbmcsIGZpZWxkcylcbiAgICB9LFxuICAgIGRvbmUoZmllbGRzID0ge30pIHtcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nKSByZXR1cm5cbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wZW5kaW5nLCBmaWVsZHMsIHtcbiAgICAgICAgZHVyYXRpb25NczogRGF0ZS5ub3coKSAtIHRoaXMucGVuZGluZy5zdGFydGVkQXQsXG4gICAgICB9KVxuICAgICAgZGVsZXRlIHRoaXMucGVuZGluZy5zdGFydGVkQXRcbiAgICAgIGlmICh0aGlzLnBlbmRpbmcuZnVsbE91dHB1dD8ubGVuZ3RoID4gMjAwMDAwKSB7XG4gICAgICAgIHRoaXMucGVuZGluZy5mdWxsT3V0cHV0ID0gdGhpcy5wZW5kaW5nLmZ1bGxPdXRwdXQuc2xpY2UoMCwgMjAwMDAwKSArICdcXG5bdHJ1bmNhdGVkXSdcbiAgICAgIH1cbiAgICAgIHRoaXMuZW50cmllcy5wdXNoKHRoaXMucGVuZGluZylcbiAgICAgIHRoaXMucGVuZGluZyA9IG51bGxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRlZChyZWNvcmRlciwgbmFtZSwgZm4pIHtcbiAgcmV0dXJuIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgcmVjb3JkZXIuYmVnaW4obmFtZSwgYXJncylcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oYXJncylcbiAgICAgIGlmICghcmVjb3JkZXIucGVuZGluZz8uZnVsbE91dHB1dCAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7XG4gICAgICAgICAgZnVsbE91dHB1dDogdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcmVjb3JkZXIuZG9uZSgpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWNvcmRlci5kb25lKHsgc3RhdHVzOiAnZXJyb3InLCBlcnJvcjogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikgfSlcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1BWF9MSU5FUyA9IDIwMDBcbmNvbnN0IE1BWF9MSU5FX0xFTkdUSCA9IDIwMDBcblxuZnVuY3Rpb24gaXNCaW5hcnkoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKGJ1ZmZlci5sZW5ndGgsIDgwMDApXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYnVmZmVyW2ldID09PSAwKSByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhZCh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdyZWFkJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlYWQgYSBmaWxlLiBSZXR1cm5zIGxpbmUtbnVtYmVyZWQgY29udGVudC4gVXNlIG9mZnNldC9saW1pdCBmb3IgbGFyZ2UgZmlsZXMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBvZmZzZXQ6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnMS1pbmRleGVkIGxpbmUgdG8gc3RhcnQgZnJvbScsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBsaW1pdDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdtYXggbGluZXMgdG8gcmV0dXJuJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIG9mZnNldCA9IDEsIGxpbWl0ID0gTUFYX0xJTkVTIH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGNvbnN0IGJ1ZiA9IGF3YWl0IHJlYWRGaWxlKGZ1bGwpXG4gICAgICBpZiAoaXNCaW5hcnkoYnVmKSkgdGhyb3cgbmV3IEVycm9yKGAke3BhdGh9IGlzIGEgYmluYXJ5IGZpbGVgKVxuICAgICAgY29uc3QgbGluZXMgPSBidWYudG9TdHJpbmcoJ3V0Zi04Jykuc3BsaXQoJ1xcbicpXG5cbiAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgb2Zmc2V0IC0gMSlcbiAgICAgIGNvbnN0IGNvdW50ID0gTWF0aC5taW4obGltaXQsIE1BWF9MSU5FUylcbiAgICAgIGNvbnN0IHNsaWNlZCA9IGxpbmVzLnNsaWNlKHN0YXJ0LCBzdGFydCArIGNvdW50KVxuICAgICAgY29uc3QgbnVtYmVyZWQgPSBzbGljZWRcbiAgICAgICAgLm1hcCgobGluZSwgaSkgPT4gYCR7c3RhcnQgKyBpICsgMX1cXHQke2xpbmUubGVuZ3RoID4gTUFYX0xJTkVfTEVOR1RIID8gbGluZS5zbGljZSgwLCBNQVhfTElORV9MRU5HVEgpICsgJ1x1MjAyNicgOiBsaW5lfWApXG4gICAgICAgIC5qb2luKCdcXG4nKVxuXG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IHNsaWNlZC5qb2luKCdcXG4nKSB9KVxuICAgICAgY29uc3QgcmVzdWx0ID0geyBjb250ZW50OiBudW1iZXJlZCwgdG90YWxMaW5lczogbGluZXMubGVuZ3RoIH1cbiAgICAgIGlmIChzdGFydCArIGNvdW50IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdC5ub3RlID0gYHNob3dpbmcgbGluZXMgJHtzdGFydCArIDF9LSR7c3RhcnQgKyBzbGljZWQubGVuZ3RofSBvZiAke2xpbmVzLmxlbmd0aH1gXG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZXh0ID0gdHJhY2tlci5jaGVjayhmdWxsKVxuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoKSByZXN1bHQuY29udGV4dF9mcm9tX2FnZW50c19tZCA9IGNvbnRleHRcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgc3RydWN0dXJlZFBhdGNoIH0gZnJvbSAnZGlmZidcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VEaWZmKHBhdGgsIG9sZFRleHQsIG5ld1RleHQsIGNvbnRleHRMaW5lcyA9IDMpIHtcbiAgY29uc3QgcGF0Y2ggPSBzdHJ1Y3R1cmVkUGF0Y2gocGF0aCwgcGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgJycsICcnLCB7IGNvbnRleHQ6IGNvbnRleHRMaW5lcyB9KVxuICBsZXQgYWRkaXRpb25zID0gMFxuICBsZXQgZGVsZXRpb25zID0gMFxuICBjb25zdCBodW5rcyA9IHBhdGNoLmh1bmtzLm1hcCgoaCkgPT4gKHtcbiAgICBvbGRTdGFydDogaC5vbGRTdGFydCxcbiAgICBuZXdTdGFydDogaC5uZXdTdGFydCxcbiAgICBsaW5lczogaC5saW5lcy5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBsaW5lWzBdID09PSAnLScgPyAncmVtb3ZlJyA6IGxpbmVbMF0gPT09ICcrJyA/ICdhZGQnIDogJ2NvbnRleHQnXG4gICAgICBpZiAodHlwZSA9PT0gJ2FkZCcpIGFkZGl0aW9ucysrXG4gICAgICBpZiAodHlwZSA9PT0gJ3JlbW92ZScpIGRlbGV0aW9ucysrXG4gICAgICByZXR1cm4geyB0eXBlLCB0ZXh0OiBsaW5lLnNsaWNlKDEpIH1cbiAgICB9KSxcbiAgfSkpXG4gIHJldHVybiB7IHBhdGgsIGh1bmtzLCBhZGRpdGlvbnMsIGRlbGV0aW9ucyB9XG59XG4iLCAiaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgZGlybmFtZSwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IG1ha2VEaWZmIH0gZnJvbSAnLi9kaWZmLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV3JpdGUoeyBjd2QsIHJlY29yZGVyLCB0cmFja2VyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnd3JpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnV3JpdGUgY29udGVudCB0byBhIGZpbGUsIGNyZWF0aW5nIGl0IGFuZCBhbnkgcGFyZW50IGRpcmVjdG9yaWVzIGlmIG5lZWRlZC4gT3ZlcndyaXRlcyBleGlzdGluZyBjb250ZW50LicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFic29sdXRlJyB9LFxuICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgZnVsbCBmaWxlIGNvbnRlbnQgdG8gd3JpdGUnIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXRoLCBjb250ZW50IH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGF3YWl0IG1rZGlyKGRpcm5hbWUoZnVsbCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBsZXQgYmVmb3JlID0gbnVsbFxuICAgICAgdHJ5IHtcbiAgICAgICAgYmVmb3JlID0gYXdhaXQgcmVhZEZpbGUoZnVsbCwgJ3V0Zi04JylcbiAgICAgIH0gY2F0Y2gge31cblxuICAgICAgaWYgKGJlZm9yZSA9PT0gY29udGVudCkge1xuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgcGF0aCwgdW5jaGFuZ2VkOiB0cnVlLCBub3RlOiAnZmlsZSBhbHJlYWR5IGhhZCBleGFjdGx5IHRoaXMgY29udGVudCcgfVxuICAgICAgfVxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGZ1bGwsIGNvbnRlbnQsICd1dGYtOCcpXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgb2s6IHRydWUsIHBhdGggfVxuICAgICAgaWYgKGJlZm9yZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgYmVmb3JlLCBjb250ZW50KVxuICAgICAgICByZWNvcmRlci5leHRyYSh7IGRpZmYsIHJldmVydDogeyBwYXRoOiBmdWxsLCBiZWZvcmUsIGFmdGVyOiBjb250ZW50IH0gfSlcbiAgICAgICAgcmVzdWx0LmFkZGl0aW9ucyA9IGRpZmYuYWRkaXRpb25zXG4gICAgICAgIHJlc3VsdC5kZWxldGlvbnMgPSBkaWZmLmRlbGV0aW9uc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IG1ha2VEaWZmKHBhdGgsICcnLCBjb250ZW50KVxuICAgICAgICByZWNvcmRlci5leHRyYSh7IGRpZmYsIHJldmVydDogeyBwYXRoOiBmdWxsLCBiZWZvcmU6ICcnLCBhZnRlcjogY29udGVudCB9LCBjcmVhdGVkOiB0cnVlIH0pXG4gICAgICAgIHJlc3VsdC5hZGRpdGlvbnMgPSBkaWZmLmFkZGl0aW9uc1xuICAgICAgICByZXN1bHQuY3JlYXRlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBtYWtlRGlmZiB9IGZyb20gJy4vZGlmZi5qcydcblxuY29uc3Qgbm9ybWFsaXplID0gKHMpID0+XG4gIHNcbiAgICAucmVwbGFjZSgvXFxzKyQvZ20sICcnKVxuICAgIC5yZXBsYWNlKC9bXHUyMDE4XHUyMDE5XS9nLCBcIidcIilcbiAgICAucmVwbGFjZSgvW1x1MjAxQ1x1MjAxRF0vZywgJ1wiJylcbiAgICAucmVwbGFjZSgvW1x1MjAxM1x1MjAxNF0vZywgJy0nKVxuXG5mdW5jdGlvbiBsb2NhdGUoY29udGVudCwgb2xkLCBwYXRoKSB7XG4gIGxldCBpbmRleCA9IGNvbnRlbnQuaW5kZXhPZihvbGQpXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBpZiAoY29udGVudC5pbmRleE9mKG9sZCwgaW5kZXggKyAxKSAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gJHtwYXRofSwgcHJvdmlkZSBtb3JlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gbWFrZSBpdCB1bmlxdWVgKVxuICAgIH1cbiAgICByZXR1cm4geyBpbmRleCwgbGVuZ3RoOiBvbGQubGVuZ3RoLCBjb250ZW50IH1cbiAgfVxuXG4gIGNvbnN0IG5vcm1lZENvbnRlbnQgPSBub3JtYWxpemUoY29udGVudClcbiAgY29uc3Qgbm9ybWVkT2xkID0gbm9ybWFsaXplKG9sZClcbiAgaW5kZXggPSBub3JtZWRDb250ZW50LmluZGV4T2Yobm9ybWVkT2xkKVxuICBpZiAoaW5kZXggPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBub3QgZm91bmQgaW4gJHtwYXRofWApXG4gIGlmIChub3JtZWRDb250ZW50LmluZGV4T2Yobm9ybWVkT2xkLCBpbmRleCArIDEpICE9PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gJHtwYXRofSwgcHJvdmlkZSBtb3JlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gbWFrZSBpdCB1bmlxdWVgKVxuICB9XG4gIHJldHVybiB7IGluZGV4LCBsZW5ndGg6IG5vcm1lZE9sZC5sZW5ndGgsIGNvbnRlbnQ6IG5vcm1lZENvbnRlbnQgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWRpdCh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdlZGl0JyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlcGxhY2Ugb2xkVGV4dCB3aXRoIG5ld1RleHQgaW4gYSBmaWxlLiBvbGRUZXh0IG11c3QgYXBwZWFyIGV4YWN0bHkgb25jZSB1bmxlc3MgcmVwbGFjZUFsbCBpcyBzZXQuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBvbGRUZXh0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2V4YWN0IHRleHQgdG8gcmVwbGFjZSwgbXVzdCBiZSB1bmlxdWUgaW4gdGhlIGZpbGUnIH0sXG4gICAgICBuZXdUZXh0OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3JlcGxhY2VtZW50IHRleHQnIH0sXG4gICAgICByZXBsYWNlQWxsOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdyZXBsYWNlIGV2ZXJ5IG9jY3VycmVuY2UnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgcmVwbGFjZUFsbCB9KSA9PiB7XG4gICAgICBjb25zdCBmdWxsID0gcmVzb2x2ZShjd2QsIHBhdGgpXG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXRoIH0pXG4gICAgICBjb25zdCBiZWZvcmUgPSBhd2FpdCByZWFkRmlsZShmdWxsLCAndXRmLTgnKVxuXG4gICAgICBsZXQgYWZ0ZXJcbiAgICAgIGlmIChyZXBsYWNlQWxsKSB7XG4gICAgICAgIGlmICghYmVmb3JlLmluY2x1ZGVzKG9sZFRleHQpKSB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBub3QgZm91bmQgaW4gJHtwYXRofWApXG4gICAgICAgIGFmdGVyID0gYmVmb3JlLnNwbGl0KG9sZFRleHQpLmpvaW4obmV3VGV4dClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIGxlbmd0aCwgY29udGVudCB9ID0gbG9jYXRlKGJlZm9yZSwgb2xkVGV4dCwgcGF0aClcbiAgICAgICAgYWZ0ZXIgPSBjb250ZW50LnNsaWNlKDAsIGluZGV4KSArIG5ld1RleHQgKyBjb250ZW50LnNsaWNlKGluZGV4ICsgbGVuZ3RoKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZnVsbCwgYWZ0ZXIsICd1dGYtOCcpXG4gICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgYmVmb3JlLCBhZnRlcilcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZGlmZiwgcmV2ZXJ0OiB7IHBhdGg6IGZ1bGwsIGJlZm9yZSwgYWZ0ZXIgfSB9KVxuXG4gICAgICBjb25zdCByZXN1bHQgPSB7IG9rOiB0cnVlLCBwYXRoLCBhZGRpdGlvbnM6IGRpZmYuYWRkaXRpb25zLCBkZWxldGlvbnM6IGRpZmYuZGVsZXRpb25zIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGVjIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5jb25zdCBNQVhfT1VUUFVUX0NIQVJTID0gMzAwMDBcblxuZnVuY3Rpb24gY2FwcGVkKHRleHQpIHtcbiAgaWYgKHRleHQubGVuZ3RoIDw9IE1BWF9PVVRQVVRfQ0hBUlMpIHJldHVybiB0ZXh0XG4gIHJldHVybiB0ZXh0LnNsaWNlKDAsIE1BWF9PVVRQVVRfQ0hBUlMpICsgYFxcbltvdXRwdXQgdHJ1bmNhdGVkIGF0ICR7TUFYX09VVFBVVF9DSEFSU30gY2hhcmFjdGVyc11gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCYXNoKHsgY3dkLCBlbnYsIHJlY29yZGVyLCBzaWduYWwsIHNoZWxscywgc2Vzc2lvbklkIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYmFzaCcsXG4gICAgZGVzY3JpcHRpb246ICdSdW4gYSBzaGVsbCBjb21tYW5kIGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gRWFjaCBjYWxsIGlzIGEgZnJlc2ggc2hlbGw6IGNkIGRvZXMgbm90IHBlcnNpc3QgdG8gbGF0ZXIgY2FsbHMsIHNvIGNoYWluIGRpcmVjdG9yeSBjaGFuZ2VzIHdpdGhpbiBvbmUgY29tbWFuZCAoY2QgL3ggJiYgbHMpIG9yIHVzZSBhYnNvbHV0ZSBwYXRocy4gUmV0dXJucyBzdGRvdXQsIHN0ZGVyciwgYW5kIGV4aXQgY29kZS4gRm9yZWdyb3VuZCBjb21tYW5kcyBhcmUga2lsbGVkIGF0IHRoZSB0aW1lb3V0IChkZWZhdWx0IDEyMHMpLCBzbyBuZXZlciB3YWl0IG9uIGxvbmcgZXh0ZXJuYWxzIGxpa2UgQ0kgcnVucywgZGVwbG95cywgb3Igd2F0Y2ggbG9vcHMgaW4gdGhlIGZvcmVncm91bmQ6IHJ1biB0aG9zZSB3aXRoIGJhY2tncm91bmQgdHJ1ZSwgZmluaXNoIHlvdXIgdHVybiwgYW5kIHRoZSBzaGVsbFxcJ3MgZXhpdCB3aWxsIG5vdGlmeSB5b3Ugc28geW91IGNhbiByZXBvcnQgdGhlIG91dGNvbWUuIEJhY2tncm91bmQgYWxzbyBmaXRzIGxvbmctbGl2ZWQgcHJvY2Vzc2VzIGxpa2UgZGV2IHNlcnZlcnM7IGNoZWNrIG9uIGEgYmFja2dyb3VuZCBzaGVsbCB3aXRoIHNoZWxsX291dHB1dCBhbmQgc3RvcCBpdCB3aXRoIHNoZWxsX2tpbGwuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGNvbW1hbmQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIGNvbW1hbmQgdG8gcnVuJyB9LFxuICAgICAgdGltZW91dDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdmb3JlZ3JvdW5kIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLCBkZWZhdWx0IDEyMDAwMDsgcHJlZmVyIGJhY2tncm91bmQgdHJ1ZSBvdmVyIGEgbGFyZ2UgdGltZW91dCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBiYWNrZ3JvdW5kOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdydW4gaW4gdGhlIGJhY2tncm91bmQgYW5kIHJldHVybiBhIHNoZWxsIGlkIGltbWVkaWF0ZWx5Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZvciBiYWNrZ3JvdW5kIHNoZWxsczogYSBmZXcgd29yZHMgbmFtaW5nIHdoYXQgdGhpcyBpcyBmb3IsIHNob3duIHRvIHRoZSBodW1hbiB3YXRjaGluZyAoZS5nLiBcInZpdGUgZGV2IHNlcnZlclwiLCBcIndhdGNoaW5nIGNpXCIpJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6ICh7IGNvbW1hbmQsIHRpbWVvdXQsIGJhY2tncm91bmQsIGRlc2NyaXB0aW9uIH0pID0+IHtcbiAgICAgIGlmIChiYWNrZ3JvdW5kICYmIHNoZWxscykge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBkZXNjcmlwdGlvbiB8fCBjb21tYW5kLCBiYWNrZ3JvdW5kOiB0cnVlIH0pXG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IHNoZWxscy5zdGFydChjb21tYW5kLCB7IGN3ZCwgZW52LCBkZXNjcmlwdGlvbiwgc2Vzc2lvbklkIH0pXG4gICAgICAgIHJldHVybiB7IHNoZWxsSWQ6IGlkLCBzdGF0dXM6ICdydW5uaW5nJyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogY29tbWFuZCB9KVxuICAgICAgICBjb25zdCBjaGlsZCA9IGV4ZWMoXG4gICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjd2QsXG4gICAgICAgICAgICB0aW1lb3V0OiB0aW1lb3V0IHx8IDEyMDAwMCxcbiAgICAgICAgICAgIG1heEJ1ZmZlcjogMTAgKiAxMDI0ICogMTAyNCxcbiAgICAgICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgLi4uZW52LCBGT1JDRV9DT0xPUjogJzAnLCBOT19DT0xPUjogJzEnIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhpdENvZGUgPSBlcnIgPyAodHlwZW9mIGVyci5jb2RlID09PSAnbnVtYmVyJyA/IGVyci5jb2RlIDogMSkgOiAwXG4gICAgICAgICAgICBjb25zdCBtcyA9IHRpbWVvdXQgfHwgMTIwMDAwXG4gICAgICAgICAgICBjb25zdCB0aW1lZE91dCA9ICEhZXJyPy5raWxsZWQgJiYgZXJyLmNvZGUgPT0gbnVsbCAmJiAhc2lnbmFsPy5hYm9ydGVkXG4gICAgICAgICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IFtzdGRvdXQsIHN0ZGVycl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpIH0pXG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgc3Rkb3V0OiBjYXBwZWQoc3Rkb3V0IHx8ICcnKSxcbiAgICAgICAgICAgICAgc3RkZXJyOiBjYXBwZWQoc3RkZXJyIHx8ICcnKSxcbiAgICAgICAgICAgICAgZXhpdENvZGUsXG4gICAgICAgICAgICAgIC4uLih0aW1lZE91dCAmJiB7XG4gICAgICAgICAgICAgICAgdGltZWRPdXQ6IHRydWUsXG4gICAgICAgICAgICAgICAgbm90ZTogYGtpbGxlZCBhdCB0aGUgJHttc31tcyB0aW1lb3V0LiBkbyBub3Qgc2ltcGx5IHJlcnVuIGl0OiB1c2UgYmFja2dyb3VuZCB0cnVlIGZvciBsb25nLXJ1bm5pbmcgd29yayBhbmQgd2FpdCBmb3IgaXRzIGV4aXQgbm90aWZpY2F0aW9uLCBvciBwYXNzIGEgbGFyZ2VyIHRpbWVvdXQgaWYgdGhlIGNvbW1hbmQgZ2VudWluZWx5IG5lZWRzIHRoZSBmb3JlZ3JvdW5kYCxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgaWYgKHNpZ25hbCkge1xuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgY2hpbGQua2lsbCgpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gY2hpbGQua2lsbCgpLCB7IG9uY2U6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZmcgZnJvbSAnZmFzdC1nbG9iJ1xuXG5jb25zdCBNQVhfUkVTVUxUUyA9IDIwMFxuXG5mdW5jdGlvbiByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFsnLS1maWxlcycsICctLWhpZGRlbicsICctLWdsb2InLCBwYXR0ZXJuLCAnLS1nbG9iJywgJyEqKi9ub2RlX21vZHVsZXMvKionLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cbiAgICBleGVjRmlsZSgncmcnLCBhcmdzLCB7IGN3ZCwgbWF4QnVmZmVyOiA1MCAqIDEwMjQgKiAxMDI0IH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgaWYgKGVyciAmJiBlcnIuY29kZSAhPT0gMSkgcmVzb2x2ZShudWxsKVxuICAgICAgZWxzZSByZXNvbHZlKHN0ZG91dCA/IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pIDogW10pXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdsb2IoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ2xvYicsXG4gICAgZGVzY3JpcHRpb246ICdGaW5kIGZpbGVzIG1hdGNoaW5nIGEgZ2xvYiBwYXR0ZXJuLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkuIFJlc3BlY3RzIC5naXRpZ25vcmU7IHVzZSBiYXNoIHRvIGxvb2sgaW5zaWRlIGlnbm9yZWQgcGF0aHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZ2xvYiBwYXR0ZXJuLCBlLmcuIHNyYy8qKi8qLmpzJyB9LFxuICAgICAgbWF4UmVzdWx0czogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdjYXAgb24gcmV0dXJuZWQgcGF0aHMsIGRlZmF1bHQgMjAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdHRlcm4sIG1heFJlc3VsdHMgPSBNQVhfUkVTVUxUUyB9KSA9PiB7XG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXR0ZXJuIH0pXG4gICAgICBsZXQgZmlsZXMgPSBhd2FpdCByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpXG4gICAgICBpZiAoZmlsZXMgPT09IG51bGwpIHtcbiAgICAgICAgZmlsZXMgPSBhd2FpdCBmZyhwYXR0ZXJuLCB7XG4gICAgICAgICAgY3dkLFxuICAgICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqLy5naXQvKionXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogZmlsZXMuam9pbignXFxuJykgfSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVzOiBmaWxlcy5zbGljZSgwLCBtYXhSZXN1bHRzKSxcbiAgICAgICAgdG90YWxGb3VuZDogZmlsZXMubGVuZ3RoLFxuICAgICAgICB0cnVuY2F0ZWQ6IGZpbGVzLmxlbmd0aCA+IG1heFJlc3VsdHMsXG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1BWF9SRVNVTFRTID0gMjAwXG5cbmZ1bmN0aW9uIHJ1blJpcGdyZXAoYXJncywgY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoZG9uZSkgPT4ge1xuICAgIGV4ZWNGaWxlKCdyZycsIGFyZ3MsIHsgY3dkLCBtYXhCdWZmZXI6IDEwICogMTAyNCAqIDEwMjQgfSwgKGVyciwgc3Rkb3V0KSA9PiB7XG4gICAgICBkb25lKGVyciAmJiAhc3Rkb3V0ID8gJycgOiBzdGRvdXQgfHwgJycpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyZXAoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ3JlcCcsXG4gICAgZGVzY3JpcHRpb246ICdTZWFyY2ggZmlsZSBjb250ZW50cyB3aXRoIGEgcmVnZXggdXNpbmcgcmlwZ3JlcC4gbW9kZSBcImNvbnRlbnRcIiByZXR1cm5zIG1hdGNoaW5nIGxpbmVzLCBcImZpbGVzXCIgcmV0dXJucyBtYXRjaGluZyBmaWxlIHBhdGhzLCBcImNvdW50XCIgcmV0dXJucyBwZXItZmlsZSBtYXRjaCBjb3VudHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncmVnZXggcGF0dGVybicgfSxcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBvciBkaXJlY3RvcnkgdG8gc2VhcmNoLCBkZWZhdWx0cyB0byB0aGUgd29ya2luZyBkaXJlY3RvcnknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbW9kZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydjb250ZW50JywgJ2ZpbGVzJywgJ2NvdW50J10sIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBnbG9iOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbHRlciBmaWxlcyBieSBnbG9iLCBlLmcuICouanMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgaWdub3JlQ2FzZTogeyB0eXBlOiAnYm9vbGVhbicsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBjb250ZXh0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2xpbmVzIG9mIGNvbnRleHQgYXJvdW5kIG1hdGNoZXMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbXVsdGlsaW5lOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdhbGxvdyBwYXR0ZXJucyB0byBzcGFuIGxpbmVzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ21heCByZXN1bHRzLCBkZWZhdWx0IDIwMCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXR0ZXJuLCBwYXRoLCBtb2RlID0gJ2NvbnRlbnQnLCBnbG9iLCBpZ25vcmVDYXNlLCBjb250ZXh0LCBtdWx0aWxpbmUsIGxpbWl0ID0gTUFYX1JFU1VMVFMgfSkgPT4ge1xuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0dGVybiB9KVxuICAgICAgY29uc3QgYXJncyA9IFsnLS1uby1oZWFkaW5nJywgJy0tY29sb3I9bmV2ZXInLCAnLS1tYXgtY29sdW1ucycsICc1MDAnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cblxuICAgICAgaWYgKG1vZGUgPT09ICdmaWxlcycpIGFyZ3MucHVzaCgnLS1maWxlcy13aXRoLW1hdGNoZXMnKVxuICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2NvdW50JykgYXJncy5wdXNoKCctLWNvdW50JylcbiAgICAgIGVsc2UgYXJncy5wdXNoKCctLWxpbmUtbnVtYmVyJylcblxuICAgICAgaWYgKGlnbm9yZUNhc2UpIGFyZ3MucHVzaCgnLS1pZ25vcmUtY2FzZScpXG4gICAgICBpZiAobXVsdGlsaW5lKSBhcmdzLnB1c2goJy0tbXVsdGlsaW5lJywgJy0tbXVsdGlsaW5lLWRvdGFsbCcpXG4gICAgICBpZiAoZ2xvYikgYXJncy5wdXNoKCctLWdsb2InLCBnbG9iKVxuICAgICAgaWYgKG1vZGUgPT09ICdjb250ZW50JyAmJiBjb250ZXh0KSBhcmdzLnB1c2goJy1DJywgU3RyaW5nKGNvbnRleHQpKVxuXG4gICAgICBhcmdzLnB1c2gocGF0dGVybi5zdGFydHNXaXRoKCctJykgPyAnLWUnIDogJy0tJywgcGF0dGVybilcbiAgICAgIGFyZ3MucHVzaChwYXRoID8gcmVzb2x2ZShjd2QsIHBhdGgpIDogY3dkKVxuXG4gICAgICBjb25zdCBzdGRvdXQgPSBhd2FpdCBydW5SaXBncmVwKGFyZ3MsIGN3ZClcbiAgICAgIGNvbnN0IGxpbmVzID0gc3Rkb3V0LnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogbGluZXMuam9pbignXFxuJykgfSlcblxuICAgICAgY29uc3QgcmVsYXRpdml6ZSA9IChsaW5lKSA9PiB7XG4gICAgICAgIGlmIChtb2RlID09PSAnZmlsZXMnKSByZXR1cm4gcmVsYXRpdmUoY3dkLCBsaW5lKVxuICAgICAgICBjb25zdCBtID0gbGluZS5tYXRjaCgvXihcXC9bXjpdKyk6KC4qKSQvKVxuICAgICAgICByZXR1cm4gbSA/IGAke3JlbGF0aXZlKGN3ZCwgbVsxXSl9OiR7bVsyXX1gIDogbGluZVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0cyA9IGxpbmVzLm1hcChyZWxhdGl2aXplKS5zbGljZSgwLCBsaW1pdClcbiAgICAgIHJldHVybiB7IHJlc3VsdHMsIG1vZGUsIHRvdGFsTWF0Y2hlczogbGluZXMubGVuZ3RoLCB0cnVuY2F0ZWQ6IGxpbmVzLmxlbmd0aCA+IGxpbWl0IH1cbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlUmVjb3JkZXIsIHJlY29yZGVkIH0gZnJvbSAnLi9yZWNvcmRlci5qcydcbmltcG9ydCB7IGNyZWF0ZVJlYWQgfSBmcm9tICcuL3JlYWQuanMnXG5pbXBvcnQgeyBjcmVhdGVXcml0ZSB9IGZyb20gJy4vd3JpdGUuanMnXG5pbXBvcnQgeyBjcmVhdGVFZGl0IH0gZnJvbSAnLi9lZGl0LmpzJ1xuaW1wb3J0IHsgY3JlYXRlQmFzaCB9IGZyb20gJy4vYmFzaC5qcydcbmltcG9ydCB7IGNyZWF0ZUdsb2IgfSBmcm9tICcuL2dsb2IuanMnXG5pbXBvcnQgeyBjcmVhdGVHcmVwIH0gZnJvbSAnLi9ncmVwLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV2ViVG9vbHMgfSBmcm9tICcuL3dlYi5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRvb2xzZXQoeyBjd2QsIGVudiwgdHJhY2tlciwgc2tpbGxzLCBzaGVsbHMsIHNlc3Npb25JZCwgd2FrZXVwcywgbWVtb3J5LCBhZ2VudHMsIGFza1VzZXIsIGRyZWRnZSwgbWNwVG9vbHMgPSBbXSwgdXNlclRvb2xzID0gW10sIHNpZ25hbCwgbWF4VG9vbENhbGxzLCBtYXhBZ2VudFN0YXJ0cywgcmVxdWlyZUFnZW50UGxhbiA9IGZhbHNlLCBhbGxvd05hbWVzIH0pIHtcbiAgY29uc3QgcmVjb3JkZXIgPSBjcmVhdGVSZWNvcmRlcigpXG4gIGxldCBhZ2VudFN0YXJ0cyA9IDBcbiAgbGV0IHBsYW5uZWRBZ2VudFN0YXJ0cyA9IHJlcXVpcmVBZ2VudFBsYW4gPyBudWxsIDogbWF4QWdlbnRTdGFydHNcbiAgY29uc3QgZGVwcyA9IHsgY3dkLCBlbnYsIHJlY29yZGVyLCB0cmFja2VyLCBzaWduYWwsIHNoZWxscywgc2Vzc2lvbklkIH1cblxuICBjb25zdCBsb2NhbCA9IFtcbiAgICBjcmVhdGVSZWFkKGRlcHMpLFxuICAgIGNyZWF0ZVdyaXRlKGRlcHMpLFxuICAgIGNyZWF0ZUVkaXQoZGVwcyksXG4gICAgY3JlYXRlQmFzaChkZXBzKSxcbiAgICBjcmVhdGVHbG9iKGRlcHMpLFxuICAgIGNyZWF0ZUdyZXAoZGVwcyksXG4gIF1cblxuICBpZiAoZHJlZGdlKSB7XG4gICAgbG9jYWwucHVzaCguLi5jcmVhdGVXZWJUb29scyh7IGRyZWRnZSwgcmVjb3JkZXIsIHNpZ25hbCB9KSlcbiAgfVxuXG4gIGlmIChzaGVsbHMpIHtcbiAgICBsb2NhbC5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hlbGxfb3V0cHV0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdSZWFkIHJlY2VudCBvdXRwdXQgZnJvbSBhIGJhY2tncm91bmQgc2hlbGwgc3RhcnRlZCB3aXRoIGJhc2ggYmFja2dyb3VuZDogdHJ1ZS4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgc2hlbGwgaWQnIH0sXG4gICAgICAgICAgdGFpbDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdob3cgbWFueSB0cmFpbGluZyBsaW5lcyB0byByZXR1cm4sIGRlZmF1bHQgMTAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQsIHRhaWwgPSAxMDAgfSkgPT4gc2hlbGxzLm91dHB1dChpZCwgeyB0YWlsOiBNYXRoLm1pbih0YWlsLCA1MDApIH0pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NoZWxsX2tpbGwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1N0b3AgYSBiYWNrZ3JvdW5kIHNoZWxsIGJ5IGlkLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBzaGVsbCBpZCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQgfSkgPT4gc2hlbGxzLmtpbGwoaWQsICdtb2RlbCcpLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAod2FrZXVwcykge1xuICAgIGxvY2FsLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzY2hlZHVsZV93YWtldXAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1NjaGVkdWxlIGEgb25lLXRpbWUgd2FrZS11cDogYWZ0ZXIgdGhlIGRlbGF5IHlvdSByZWNlaXZlIGEgc3lzdGVtIG5vdGlmaWNhdGlvbiBjYXJyeWluZyB5b3VyIG5vdGUgYW5kIGNhbiBhY3Qgb24gaXQuIEZvciBhIHJlY3VycmluZyBsb29wLCBzY2hlZHVsZSB0aGUgbmV4dCB3YWtlLXVwIGF0IHRoZSBlbmQgb2YgZWFjaCBvbmUuIERvIG5vdCB1c2UgdGhpcyB0byBwb2xsIGEgYmFja2dyb3VuZCBzaGVsbDsgaXRzIGV4aXQgYWxyZWFkeSBub3RpZmllcyB5b3UuIFdha2UtdXBzIGFyZSBsb3N0IGlmIHBpY28gZXhpdHMuJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGVsYXlTZWNvbmRzOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ3NlY29uZHMgZnJvbSBub3csIG1pbmltdW0gNScgfSxcbiAgICAgICAgICBub3RlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3doYXQgdG8gZG8gd2hlbiB5b3Ugd2FrZSB1cDsgd3JpdHRlbiB0byB5b3VyIGZ1dHVyZSBzZWxmJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBkZWxheVNlY29uZHMsIG5vdGUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgaWQsIGF0LCBzZWNvbmRzIH0gPSB3YWtldXBzLnNjaGVkdWxlKGRlbGF5U2Vjb25kcywgbm90ZSlcbiAgICAgICAgICByZXR1cm4geyB3YWtldXBJZDogaWQsIGZpcmVzQXQ6IG5ldyBEYXRlKGF0KS50b1N0cmluZygpLCBpblNlY29uZHM6IHNlY29uZHMgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NhbmNlbF93YWtldXAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0NhbmNlbCBhIHBlbmRpbmcgd2FrZS11cCBieSBpZC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgd2FrZS11cCBpZCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQgfSkgPT4gd2FrZXVwcy5jYW5jZWwoaWQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2xpc3Rfd2FrZXVwcycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCB5b3VyIHBlbmRpbmcgc2NoZWR1bGVkIHdha2UtdXBzOiBpZCwgd2hlbiBlYWNoIGZpcmVzLCBhbmQgaXRzIG5vdGUuJyxcbiAgICAgICAgc2NoZW1hOiB7fSxcbiAgICAgICAgZXhlY3V0ZTogKCkgPT4gKHtcbiAgICAgICAgICB3YWtldXBzOiB3YWtldXBzLmxpc3QoKS5tYXAoKHcpID0+ICh7XG4gICAgICAgICAgICBpZDogdy5pZCxcbiAgICAgICAgICAgIGZpcmVzQXQ6IG5ldyBEYXRlKHcuYXQpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBpblNlY29uZHM6IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKHcuYXQgLSBEYXRlLm5vdygpKSAvIDEwMDApKSxcbiAgICAgICAgICAgIG5vdGU6IHcubm90ZSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAoYXNrVXNlcikge1xuICAgIGxvY2FsLnB1c2goe1xuICAgICAgbmFtZTogJ2Fza191c2VyJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQXNrIHRoZSB1c2VyIG9uZSBvciBtb3JlIGZvY3VzZWQgcXVlc3Rpb25zIHdoZW4gdGhlaXIgYW5zd2VycyBhcmUgZ2VudWluZWx5IG5lZWRlZCB0byBjb250aW51ZS4gU3VwcG9ydHMgZnJlZSB0ZXh0LCBvbmUgY2hvaWNlLCBvciBtdWx0aXBsZSBjaG9pY2VzLiBEbyBub3QgYXNrIHF1ZXN0aW9ucyB5b3UgY2FuIGFuc3dlciBmcm9tIGF2YWlsYWJsZSBjb250ZXh0LicsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgcXVlc3Rpb25zOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ3F1ZXN0aW9ucyB0byBwcmVzZW50LCBpbiBvcmRlcicsXG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdzaG9ydCB1bmlxdWUgaWRlbnRpZmllcicgfSxcbiAgICAgICAgICAgICAgcXVlc3Rpb246IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnY2xlYXIgcXVlc3Rpb24gc2hvd24gdG8gdGhlIHVzZXInIH0sXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2JyaWVmIGNvbnRleHQgZXhwbGFpbmluZyB3aHkgdGhpcyBtYXR0ZXJzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgICAgICAgICAgdHlwZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydzaW5nbGUnLCAnbXVsdGknLCAndGV4dCddLCBkZXNjcmlwdGlvbjogJ2Fuc3dlciBjb250cm9sJyB9LFxuICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2FycmF5Jywgb3B0aW9uYWw6IHRydWUsIGRlc2NyaXB0aW9uOiAnY2hvaWNlcyBmb3Igc2luZ2xlIG9yIG11bHRpIHF1ZXN0aW9ucycsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogWydsYWJlbCddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFsbG93T3RoZXI6IHsgdHlwZTogJ2Jvb2xlYW4nLCBvcHRpb25hbDogdHJ1ZSwgZGVzY3JpcHRpb246ICdhbGxvdyBhIGN1c3RvbSBhbnN3ZXI7IGRlZmF1bHRzIHRvIHRydWUgZm9yIGNob2ljZSBxdWVzdGlvbnMnIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IFsnaWQnLCAncXVlc3Rpb24nLCAndHlwZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZXhlY3V0ZTogKHsgcXVlc3Rpb25zIH0pID0+IHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHF1ZXN0aW9ucykgfHwgcXVlc3Rpb25zLmxlbmd0aCA9PT0gMCB8fCBxdWVzdGlvbnMubGVuZ3RoID4gMTApIHRocm93IG5ldyBFcnJvcignYXNrX3VzZXIgcmVxdWlyZXMgMS0xMCBxdWVzdGlvbnMnKVxuICAgICAgICBjb25zdCBpZHMgPSBuZXcgU2V0KClcbiAgICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBxdWVzdGlvbnMpIHtcbiAgICAgICAgICBpZiAoIXF1ZXN0aW9uLmlkPy50cmltKCkgfHwgaWRzLmhhcyhxdWVzdGlvbi5pZCkpIHRocm93IG5ldyBFcnJvcignZWFjaCBxdWVzdGlvbiBuZWVkcyBhIHVuaXF1ZSBub24tZW1wdHkgaWQnKVxuICAgICAgICAgIGlmICghcXVlc3Rpb24ucXVlc3Rpb24/LnRyaW0oKSkgdGhyb3cgbmV3IEVycm9yKGBxdWVzdGlvbiAke3F1ZXN0aW9uLmlkfSBoYXMgbm8gcHJvbXB0YClcbiAgICAgICAgICBpZiAoIVsnc2luZ2xlJywgJ211bHRpJywgJ3RleHQnXS5pbmNsdWRlcyhxdWVzdGlvbi50eXBlKSkgdGhyb3cgbmV3IEVycm9yKGBxdWVzdGlvbiAke3F1ZXN0aW9uLmlkfSBoYXMgYW4gaW52YWxpZCB0eXBlYClcbiAgICAgICAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gJ3RleHQnICYmICghQXJyYXkuaXNBcnJheShxdWVzdGlvbi5vcHRpb25zKSB8fCBxdWVzdGlvbi5vcHRpb25zLmxlbmd0aCA9PT0gMCkpIHRocm93IG5ldyBFcnJvcihgcXVlc3Rpb24gJHtxdWVzdGlvbi5pZH0gbmVlZHMgYXQgbGVhc3Qgb25lIG9wdGlvbmApXG4gICAgICAgICAgaWRzLmFkZChxdWVzdGlvbi5pZClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXNrVXNlcihxdWVzdGlvbnMpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICBpZiAoYWdlbnRzKSB7XG4gICAgbG9jYWwucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FnZW50X3BsYW4nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1NldCB0aGUgdG90YWwgYWdlbnQgYnVkZ2V0IGZvciB0aGlzIHJlc2VhcmNoIHJ1biBiZWZvcmUgc3RhcnRpbmcgd29ya2Vycy4gSW50ZXJwcmV0IGFueSB1c2VyLXJlcXVlc3RlZCBjb3VudCBzZW1hbnRpY2FsbHk7IG90aGVyd2lzZSB1c2UgdGhlIGNvbmZpZ3VyZWQgZGVmYXVsdC4gVGhlIGhhcm5lc3MgZW5mb3JjZXMgdGhlIGRlY2xhcmVkIGJ1ZGdldC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBjb3VudDogeyB0eXBlOiAnaW50ZWdlcicsIGRlc2NyaXB0aW9uOiBgdG90YWwgYWdlbnRzIHRvIHBlcm1pdCAoMS0ke21heEFnZW50U3RhcnRzIHx8IDEwMH0pYCB9LFxuICAgICAgICAgIHJlYXNvbjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdicmllZiBleHBsYW5hdGlvbiBvZiBob3cgdGhlIGNvdW50IGZvbGxvd3MgdGhlIHVzZXIgcmVxdWVzdCBvciByZXNlYXJjaCBzY29wZScgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgY291bnQsIHJlYXNvbiB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgY2VpbGluZyA9IG1heEFnZW50U3RhcnRzIHx8IDEwMFxuICAgICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihjb3VudCkgfHwgY291bnQgPCAxIHx8IGNvdW50ID4gY2VpbGluZykgdGhyb3cgbmV3IEVycm9yKGBhZ2VudCBidWRnZXQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kICR7Y2VpbGluZ31gKVxuICAgICAgICAgIGlmIChhZ2VudFN0YXJ0cyA+IDApIHRocm93IG5ldyBFcnJvcignYWdlbnQgYnVkZ2V0IG11c3QgYmUgZGVjbGFyZWQgYmVmb3JlIHN0YXJ0aW5nIGFnZW50cycpXG4gICAgICAgICAgcGxhbm5lZEFnZW50U3RhcnRzID0gY291bnRcbiAgICAgICAgICByZXR1cm4geyBhZ2VudExpbWl0OiBjb3VudCwgcmVhc29uIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhZ2VudF9zdGFydCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgYSBiYWNrZ3JvdW5kIGFnZW50IGZvciBhIGZvY3VzZWQgdGFzayBpbiB0aGUgY3VycmVudCBwcm9qZWN0LiBXb3JrZXJzIGNhbiBpbnNwZWN0LCBtb2RpZnksIGFuZCB0ZXN0IHRoZSBwcm9qZWN0IHdpdGggdGhlIGNvbmZpZ3VyZWQgdG9vbHMuIFJldHVybnMgaW1tZWRpYXRlbHkgd2l0aCBhbiBhZ2VudCBpZDsgY29sbGVjdCBpdHMgcmVzdWx0IHdpdGggYWdlbnRfY29sbGVjdC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBwcm9tcHQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnY29tcGxldGUsIHNlbGYtY29udGFpbmVkIHRhc2sgYW5kIGRlc2lyZWQgb3V0cHV0JyB9LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3Nob3J0IGxhYmVsIHNob3duIHRvIHRoZSB1c2VyJyB9LFxuICAgICAgICAgIHRvb2xzOiB7IHR5cGU6ICdhcnJheScsIGl0ZW1zOiB7IHR5cGU6ICdzdHJpbmcnIH0sIGRlc2NyaXB0aW9uOiAndG9vbCBuYW1lcyB0byBhbGxvdzsgb21pdCBmb3IgdGhlIGNvbmZpZ3VyZWQgd29ya2VyIHRvb2xzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgcHJvbXB0LCBkZXNjcmlwdGlvbiwgdG9vbHMgfSkgPT4ge1xuICAgICAgICAgIGlmIChwbGFubmVkQWdlbnRTdGFydHMgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdjYWxsIGFnZW50X3BsYW4gYmVmb3JlIHN0YXJ0aW5nIHJlc2VhcmNoIGFnZW50cycpXG4gICAgICAgICAgaWYgKGFnZW50U3RhcnRzID49IHBsYW5uZWRBZ2VudFN0YXJ0cykgdGhyb3cgbmV3IEVycm9yKGBhZ2VudCBsaW1pdCByZWFjaGVkIGZvciB0aGlzIHJ1biAoJHtwbGFubmVkQWdlbnRTdGFydHN9KTsgY29sbGVjdCBleGlzdGluZyBhZ2VudHMgYW5kIGZpbmlzaCB3aXRob3V0IHNwYXduaW5nIG1vcmVgKVxuICAgICAgICAgIGFnZW50U3RhcnRzKytcbiAgICAgICAgICBjb25zdCBhZ2VudCA9IGFnZW50cy5zdGFydCh7IHByb21wdCwgZGVzY3JpcHRpb24sIHRvb2xzIH0pXG4gICAgICAgICAgcmV0dXJuIHsgYWdlbnRJZDogYWdlbnQuaWQsIHN0YXR1czogYWdlbnQuc3RhdHVzLCBtb2RlbDogYWdlbnQubW9kZWwgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FnZW50X2xpc3QnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0xpc3QgYmFja2dyb3VuZCBhZ2VudHMgYW5kIHRoZWlyIGN1cnJlbnQgc3RhdHVzLicsXG4gICAgICAgIHNjaGVtYToge30sXG4gICAgICAgIGV4ZWN1dGU6ICgpID0+ICh7IGFnZW50czogYWdlbnRzLmxpc3QoKS5tYXAoKHsgaWQsIGRlc2NyaXB0aW9uLCBtb2RlbCwgc3RhdHVzIH0pID0+ICh7IGlkLCBkZXNjcmlwdGlvbiwgbW9kZWwsIHN0YXR1cyB9KSkgfSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYWdlbnRfY29sbGVjdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQ29sbGVjdCBiYWNrZ3JvdW5kIGFnZW50IHJlc3VsdHMuIFdhaXRzIGZvciBhbnkgc2VsZWN0ZWQgYWdlbnRzIHRoYXQgYXJlIHN0aWxsIHJ1bm5pbmcuJyxcbiAgICAgICAgc2NoZW1hOiB7IGlkczogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9LCBkZXNjcmlwdGlvbjogJ2FnZW50IGlkcyB3aG9zZSByZXN1bHRzIHRvIGNvbGxlY3QnIH0gfSxcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgaWRzIH0pID0+ICh7IGFnZW50czogKGF3YWl0IGFnZW50cy5jb2xsZWN0KGlkcykpLm1hcCgoeyBpZCwgc3RhdHVzLCByZXN1bHQsIGVycm9yIH0pID0+ICh7IGlkLCBzdGF0dXMsIHJlc3VsdCwgZXJyb3IgfSkpIH0pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FnZW50X2NhbmNlbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQ2FuY2VsIGEgcXVldWVkIG9yIHJ1bm5pbmcgYmFja2dyb3VuZCBhZ2VudC4nLFxuICAgICAgICBzY2hlbWE6IHsgaWQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnYWdlbnQgaWQnIH0gfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQgfSkgPT4gKHsgY2FuY2VsbGVkOiBhZ2VudHMuY2FuY2VsKGlkKSB9KSxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgaWYgKG1lbW9yeSkge1xuICAgIGxvY2FsLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZW1lbWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2F2ZSBhIGR1cmFibGUgbWVtb3J5IGZvciBmdXR1cmUgc2Vzc2lvbnMuIFVzZSBmb3IgY29ycmVjdGlvbnMsIHByZWZlcmVuY2VzLCBhbmQgbm9uLW9idmlvdXMgZmFjdHMgd29ydGgga2VlcGluZzogYSBmbGFreSB0ZXN0LCBhIGJ1aWxkIHF1aXJrLCBzb21ldGhpbmcgdGhlIHVzZXIgYXNrZWQgeW91IHRvIHJlbWVtYmVyLiBEbyBub3Qgc2F2ZSB3aGF0IHRoZSBjb2RlIG9yIGdpdCBoaXN0b3J5IGFscmVhZHkgcmVjb3Jkcywgb3IgZGV0YWlscyB0aGF0IG9ubHkgbWF0dGVyIHRoaXMgc2Vzc2lvbi4gTmV2ZXIgZHVwbGljYXRlIHdoYXQgYSBza2lsbCBvciBBR0VOVFMubWQgYWxyZWFkeSBjb3ZlcnM6IHRob3NlIGFyZSBhbHJlYWR5IGluIHlvdXIgY29udGV4dCBldmVyeSBzZXNzaW9uLCBhbmQgYSBtZW1vcnkgY29weSBnb2VzIHN0YWxlIHRoZSBtb21lbnQgdGhleSBhcmUgZWRpdGVkLiBJZiBhc2tlZCB0byBsZWFybiBzb21ldGhpbmcgYSBza2lsbCBjb3ZlcnMsIHNheSB0aGUgc2tpbGwgYWxyZWFkeSBjb3ZlcnMgaXQgaW5zdGVhZCBvZiBzYXZpbmcuIENob29zZSBzY29wZSBieSBhcHBsaWNhYmlsaXR5OiBpZiB0aGUgZmFjdCB3b3VsZCBob2xkIGluIGEgZGlmZmVyZW50IHByb2plY3QsIHVzZSBnbG9iYWw7IGlmIGl0IGlzIHRpZWQgdG8gdGhpcyBjb2RlYmFzZSBvciBob3cgdGhlIHVzZXIgd29ya3MgaGVyZSwgdXNlIHByb2plY3QuIEFsd2F5cyBzdGF0ZSB0aGUgY2hvc2VuIHNjb3BlIGluIHlvdXIgcmVwbHkgc28gdGhlIHVzZXIgY2FuIGNvcnJlY3QgaXQsIGFuZCBpZiBhcHBsaWNhYmlsaXR5IGlzIGdlbnVpbmVseSB1bmNsZWFyLCBhc2sgYmVmb3JlIHNhdmluZy4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3Nob3J0IGtlYmFiLWNhc2UgaWRlbnRpZmllcicgfSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdvbmUgbGluZSB1c2VkIHRvIGRlY2lkZSB3aGVuIHRvIHJlY2FsbCB0aGlzOyB3cml0ZSBpdCBhcyBhIGhvb2ssIG5vdCBhIHN1bW1hcnknIH0sXG4gICAgICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgbWVtb3J5IGl0c2VsZicgfSxcbiAgICAgICAgICBzY29wZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydwcm9qZWN0JywgJ2dsb2JhbCddLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lLCBkZXNjcmlwdGlvbiwgY29udGVudCwgc2NvcGUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgbWVtb3J5LnJlbWVtYmVyKHsgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIHNjb3BlIH0pXG4gICAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogYCR7c2F2ZWQubmFtZX0gKCR7c2F2ZWQuc2NvcGV9KWAgfSlcbiAgICAgICAgICByZXR1cm4gc2F2ZWRcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZWNhbGwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0xvYWQgdGhlIGZ1bGwgY29udGVudCBvZiBhIHNhdmVkIG1lbW9yeSBieSBuYW1lLiBZb3VyIG1lbW9yeSBpbmRleCBpcyBpbiB0aGUgc3lzdGVtIHByb21wdC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBtZW1vcnkgbmFtZSBmcm9tIHRoZSBpbmRleCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgbmFtZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBhd2FpdCBtZW1vcnkucmVjYWxsKG5hbWUpXG4gICAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogZm91bmQubmFtZSB9KVxuICAgICAgICAgIHJldHVybiBmb3VuZFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAoc2tpbGxzPy5saXN0KCkubGVuZ3RoKSB7XG4gICAgbG9jYWwucHVzaCh7XG4gICAgICBuYW1lOiAnc2tpbGwnLFxuICAgICAgZGVzY3JpcHRpb246IGBMb2FkIGEgc2tpbGwgYnkgbmFtZSBhbmQgZm9sbG93IGl0cyBpbnN0cnVjdGlvbnMuIEF2YWlsYWJsZSBza2lsbHM6XFxuJHtza2lsbHNcbiAgICAgICAgLmxpc3QoKVxuICAgICAgICAubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKVxuICAgICAgICAuam9pbignXFxuJyl9YCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3NraWxsIG5hbWUnIH0sXG4gICAgICB9LFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgbmFtZSB9KSA9PiB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IG5hbWUgfSlcbiAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHNraWxscy5sb2FkKG5hbWUpXG4gICAgICAgIGlmICghYm9keSkgdGhyb3cgbmV3IEVycm9yKGBubyBza2lsbCBuYW1lZCAke25hbWV9YClcbiAgICAgICAgcmV0dXJuIHsgaW5zdHJ1Y3Rpb25zOiBib2R5IH1cbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHRvb2wgb2YgWy4uLmxvY2FsLCAuLi51c2VyVG9vbHMsIC4uLm1jcFRvb2xzXSkge1xuICAgIGlmIChhbGxvd05hbWVzICYmICFhbGxvd05hbWVzLmluY2x1ZGVzKHRvb2wubmFtZSkpIGNvbnRpbnVlXG4gICAgaWYgKCFieU5hbWUuaGFzKHRvb2wubmFtZSkpIGJ5TmFtZS5zZXQodG9vbC5uYW1lLCB0b29sKVxuICB9XG4gIGNvbnN0IHRvb2xzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV0ubWFwKCh0b29sKSA9PiAoe1xuICAgIC4uLnRvb2wsXG4gICAgZXhlY3V0ZTogcmVjb3JkZWQocmVjb3JkZXIsIHRvb2wubmFtZSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgIGlmIChtYXhUb29sQ2FsbHMgJiYgcmVjb3JkZXIuZW50cmllcy5sZW5ndGggPj0gbWF4VG9vbENhbGxzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndG9vbCBjYWxsIGxpbWl0IHJlYWNoZWQgZm9yIHRoaXMgcnVuOyBkbyBub3QgY2FsbCBtb3JlIHRvb2xzLCBzdW1tYXJpemUgd2hhdCB5b3UgaGF2ZSBhbmQgZmluaXNoJylcbiAgICAgIH1cbiAgICAgIHJldHVybiB0b29sLmV4ZWN1dGUoYXJncylcbiAgICB9KSxcbiAgfSkpXG5cbiAgcmV0dXJuIHsgdG9vbHMsIHJlY29yZGVyIH1cbn1cbiIsICJpbXBvcnQgeyBwbGF0Zm9ybSwgYXJjaCwgcmVsZWFzZSB9IGZyb20gJ25vZGU6b3MnXG5cbmNvbnN0IFBMQVRGT1JNX05PVEVTID0ge1xuICBkYXJ3aW46IGBtYWNPUyAoZGFyd2luICR7YXJjaCgpfSwga2VybmVsICR7cmVsZWFzZSgpfSkuIEJTRCB1c2VybGFuZDogR05VLW9ubHkgdG9vbHMgbGlrZSB0aW1lb3V0LCB0YWMsIGdkYXRlLCBvciBzZWQgLWkgd2l0aG91dCBhIHN1ZmZpeCBhcmd1bWVudCBhcmUgYWJzZW50IG9yIGJlaGF2ZSBkaWZmZXJlbnRseS4gUHJlZmVyIHBvcnRhYmxlIFBPU0lYIGZvcm1zLCBhbmQgY2hlY2sgYSB0b29sIGV4aXN0cyBiZWZvcmUgcmVseWluZyBvbiBpdC5gLFxuICBsaW51eDogYExpbnV4ICgke2FyY2goKX0sIGtlcm5lbCAke3JlbGVhc2UoKX0pLiBHTlUgdXNlcmxhbmQuYCxcbiAgd2luMzI6IGBXaW5kb3dzICgke2FyY2goKX0pLiBDb21tYW5kcyBydW4gdGhyb3VnaCBhIFBPU0lYLXN0eWxlIHNoZWxsOyBwcmVmZXIgcG9ydGFibGUgZm9ybXMuYCxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3lzdGVtUHJvbXB0KHsgY3dkLCBjb250ZXh0RmlsZXMgPSBbXSwgc2tpbGxzID0gW10sIG1lbW9yeUluZGV4VGV4dCA9ICcnIH0pIHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICBjb25zdCBwYXJ0cyA9IFtcbiAgICBgWW91IGFyZSBwaWNvLCBhIGNvZGluZyBhZ2VudCBydW5uaW5nIGluIGEgdGVybWluYWwuYCxcbiAgICBgYCxcbiAgICBgV29ya2luZyBkaXJlY3Rvcnk6ICR7Y3dkfWAsXG4gICAgYFBsYXRmb3JtOiAke1BMQVRGT1JNX05PVEVTW3BsYXRmb3JtKCldIHx8IHBsYXRmb3JtKCl9YCxcbiAgICBgQ3VycmVudCBkYXRlIGFuZCB0aW1lOiAke25vdy50b1N0cmluZygpfWAsXG4gICAgYGAsXG4gICAgYFVzZSB0aGUgYXZhaWxhYmxlIHRvb2xzIHRvIHJlYWQsIHNlYXJjaCwgYW5kIG1vZGlmeSBmaWxlcywgYW5kIHRvIHJ1biBjb21tYW5kcy5gLFxuICAgIGBQcmVmZXIgdGhlIGJ1aWx0LWluIHRvb2xzIGZvciBmaWxlIGFuZCBzaGVsbCB3b3JrOiByZWFkLCB3cml0ZSwgZWRpdCwgYmFzaCwgZ2xvYiwgZ3JlcC5gLFxuICAgIGBUb29scyB3aXRoIHNlcnZlci1wcmVmaXhlZCBuYW1lcyBjb21lIGZyb20gTUNQIHNlcnZlcnM6IHJlYWNoIGZvciB0aGVtIG9ubHkgd2hlbiB0aGV5IHByb3ZpZGUgYSBjYXBhYmlsaXR5IHRoZSBidWlsdC1pbiB0b29scyBkbyBub3QsIG5ldmVyIGFzIGEgc3Vic3RpdHV0ZSBmb3Igc2ltcGxlIGZpbGUgYWNjZXNzIG9yIHNoZWxsIGNvbW1hbmRzLmAsXG4gICAgYFByZWZlciByZWFkaW5nIGZpbGVzIGJlZm9yZSBlZGl0aW5nIHRoZW0uIEtlZXAgZWRpdHMgbWluaW1hbCBhbmQgcHJlY2lzZS5gLFxuICAgIGBXaGVuIGEgdG9vbCByZXN1bHQgaW5jbHVkZXMgY29udGV4dF9mcm9tX2FnZW50c19tZCwgdHJlYXQgaXQgYXMgcHJvamVjdCBpbnN0cnVjdGlvbnMgdGhhdCBhcHBseSBmcm9tIHRoYXQgcG9pbnQgb24uYCxcbiAgICBgVG9vbHMgYXJlIHlvdXJzIGFsb25lOiB0aGUgdXNlciBjYW5ub3QgaW52b2tlIHRoZW0sIHNvIG5ldmVyIHN1Z2dlc3QgdGhlIHVzZXIgcnVuIGEgdG9vbC4gRG8gaXQgeW91cnNlbGYsIG9yIGRlc2NyaWJlIHRoZSBvdXRjb21lIGluc3RlYWQuYCxcbiAgICBgQmUgZGlyZWN0IGFuZCBjb25jaXNlLiBVc2UgbWFya2Rvd24uIE5ldmVyIGludmVudCBmaWxlIGNvbnRlbnRzIHlvdSBoYXZlIG5vdCByZWFkLmAsXG4gICAgYEFubm91bmNpbmcgZnV0dXJlIHdvcmsgYW5kIHN0b3BwaW5nIGlzIGZvcmJpZGRlbi4gSWYgeW91ciByZXBseSBjb250YWlucyBwaHJhc2VzIGxpa2UgXCJJJ2xsIHVwZGF0ZVwiLCBcIkkgd2lsbCBub3dcIiwgb3IgXCJOZXh0IEknbGxcIiwgeW91IG11c3QgbWFrZSB0aG9zZSB0b29sIGNhbGxzIGluIHRoaXMgc2FtZSB0dXJuIGluc3RlYWQgb2YgZW5kaW5nIGl0LiBBIHR1cm4gbWF5IG9ubHkgZW5kIGluIG9uZSBvZiB0d28gc3RhdGVzOiB0aGUgd29yayBpcyBkb25lLCBvciB5b3UgYXJlIGFza2luZyB0aGUgdXNlciBhIHF1ZXN0aW9uIGFuZCB3YWl0aW5nLiBXaGVuIHRoZSB1c2VyIGFza3MgXCJzaG91bGQgd2UgZG8gWD9cIiBhbmQgeW91ciBhbnN3ZXIgaXMgeWVzLCBzYXkgeWVzIGJyaWVmbHkgYW5kIHRoZW4gZG8gWCBpbW1lZGlhdGVseSBpbiB0aGUgc2FtZSB0dXJuOyBzdG9wIHRvIGFzayBmaXJzdCBvbmx5IHdoZW4gZG9pbmcgWCBpcyBkZXN0cnVjdGl2ZSwgZXhwZW5zaXZlLCBvciBnZW51aW5lbHkgYW1iaWd1b3VzLmAsXG4gIF1cblxuICBpZiAobWVtb3J5SW5kZXhUZXh0KSB7XG4gICAgcGFydHMucHVzaChgYCwgbWVtb3J5SW5kZXhUZXh0KVxuICB9XG5cbiAgaWYgKHNraWxscy5sZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgYGAsXG4gICAgICBgU2tpbGxzIGF2YWlsYWJsZSB2aWEgdGhlIHNraWxsIHRvb2wgKGxvYWQgb25lIHdoZW4gaXRzIGRlc2NyaXB0aW9uIG1hdGNoZXMgdGhlIHRhc2spOmAsXG4gICAgICAuLi5za2lsbHMubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKSxcbiAgICApXG4gIH1cblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgY29udGV4dEZpbGVzKSB7XG4gICAgcGFydHMucHVzaChgYCwgYFByb2plY3QgaW5zdHJ1Y3Rpb25zIGZyb20gJHtmaWxlLnBhdGh9OmAsIGBgLCBmaWxlLmNvbnRlbnQudHJpbSgpKVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpXG59XG4iLCAiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5jb25zdCBDSEVDS19JTlRFUlZBTF9NUyA9IDQgKiA2MCAqIDYwICogMTAwMFxuY29uc3QgUkVHSVNUUllfVVJMID0gJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BpY29jb2RlL2xhdGVzdCdcblxuZnVuY3Rpb24gc3RhdGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAndXBkYXRlLWNoZWNrLmpzb24nKVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkU3RhdGUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoc3RhdGVGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZVN0YXRlKHBhdGNoKSB7XG4gIGNvbnN0IHN0YXRlID0geyAuLi4oYXdhaXQgcmVhZFN0YXRlKCkpLCAuLi5wYXRjaCB9XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoc3RhdGVGaWxlKCksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSArICdcXG4nKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hMYXRlc3RWZXJzaW9uKHsgdGltZW91dE1zID0gNTAwMCB9ID0ge30pIHtcbiAgaWYgKHByb2Nlc3MuZW52LlBJQ09fRkFLRV9MQVRFU1QpIHJldHVybiBwcm9jZXNzLmVudi5QSUNPX0ZBS0VfTEFURVNUXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goUkVHSVNUUllfVVJMLCB7IHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCh0aW1lb3V0TXMpIH0pXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgcmV0dXJuIGJvZHkudmVyc2lvbiB8fCBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdlclZlcnNpb24oY3VycmVudCwgbGF0ZXN0KSB7XG4gIGlmICghbGF0ZXN0IHx8IGxhdGVzdCA9PT0gY3VycmVudCkgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFyc2UgPSAodikgPT4gU3RyaW5nKHYpLnNwbGl0KCcuJykubWFwKChuKSA9PiBwYXJzZUludChuLCAxMCkgfHwgMClcbiAgY29uc3QgY3VyID0gcGFyc2UoY3VycmVudClcbiAgY29uc3QgbmV4dCA9IHBhcnNlKGxhdGVzdClcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICBpZiAoKG5leHRbaV0gPz8gMCkgPiAoY3VyW2ldID8/IDApKSByZXR1cm4gbGF0ZXN0XG4gICAgaWYgKChuZXh0W2ldID8/IDApIDwgKGN1cltpXSA/PyAwKSkgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG4vLyBhdCBtb3N0IG9uZSByZWdpc3RyeSBoaXQgcGVyIGludGVydmFsLCBvbmUgbm90aWZpY2F0aW9uIHBlciB2ZXJzaW9uLCBhbGxcbi8vIGZhaWx1cmVzIHNpbGVudDogYW4gdXBkYXRlIGNoZWNrIG11c3QgbmV2ZXIgY29zdCB0aGUgc2Vzc2lvbiBhbnl0aGluZy5cbi8vIFBJQ09fRkFLRV9MQVRFU1QgYnlwYXNzZXMgY2FkZW5jZSBhbmQgbWVtb3J5IHNvIHRoZSB0b2FzdCBjYW4gYmUgZGVtb2VkXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tGb3JVcGRhdGUoY3VycmVudFZlcnNpb24pIHtcbiAgY29uc3QgZmFrZSA9ICEhcHJvY2Vzcy5lbnYuUElDT19GQUtFX0xBVEVTVFxuICBjb25zdCBzdGF0ZSA9IGF3YWl0IHJlYWRTdGF0ZSgpXG4gIGlmICghZmFrZSAmJiBzdGF0ZS5sYXN0Q2hlY2sgJiYgRGF0ZS5ub3coKSAtIHN0YXRlLmxhc3RDaGVjayA8IENIRUNLX0lOVEVSVkFMX01TKSByZXR1cm4gbnVsbFxuXG4gIGxldCBsYXRlc3QgPSBudWxsXG4gIHRyeSB7XG4gICAgbGF0ZXN0ID0gYXdhaXQgZmV0Y2hMYXRlc3RWZXJzaW9uKClcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoIWZha2UpIGF3YWl0IHdyaXRlU3RhdGUoeyBsYXN0Q2hlY2s6IERhdGUubm93KCkgfSkuY2F0Y2goKCkgPT4ge30pXG4gIH1cblxuICBjb25zdCBuZXdlciA9IG5ld2VyVmVyc2lvbihjdXJyZW50VmVyc2lvbiwgbGF0ZXN0KVxuICBpZiAoIW5ld2VyKSByZXR1cm4gbnVsbFxuICBpZiAoIWZha2UgJiYgc3RhdGUubm90aWZpZWRWZXJzaW9uID09PSBuZXdlcikgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiBuZXdlcixcbiAgICBtYXJrTm90aWZpZWQ6ICgpID0+IChmYWtlID8gUHJvbWlzZS5yZXNvbHZlKCkgOiB3cml0ZVN0YXRlKHsgbm90aWZpZWRWZXJzaW9uOiBuZXdlciB9KS5jYXRjaCgoKSA9PiB7fSkpLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Rldkluc3RhbGwoZW50cnlVcmwpIHtcbiAgcmV0dXJuICFTdHJpbmcoZW50cnlVcmwpLmluY2x1ZGVzKCcvbm9kZV9tb2R1bGVzLycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5VcGRhdGUoKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGV4ZWMoJ25wbSBpbnN0YWxsIC1nIHBpY29jb2RlQGxhdGVzdCcsIHsgdGltZW91dDogMTgwMDAwIH0sIChlcnIsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICByZXNvbHZlKHsgb2s6ICFlcnIsIG91dHB1dDogW3N0ZG91dCwgc3RkZXJyXS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJykudHJpbSgpLnNsaWNlKDAsIDQwMCkgfSlcbiAgICB9KVxuICB9KVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBmdXp6eVNjb3JlKHF1ZXJ5LCBwYXRoKSB7XG4gIGNvbnN0IHEgPSBxdWVyeS50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IHMgPSBwYXRoLnRvTG93ZXJDYXNlKClcbiAgaWYgKCFxKSByZXR1cm4gMFxuICBsZXQgYmVzdCA9IC0xXG4gIGZvciAobGV0IHN0YXJ0ID0gcy5pbmRleE9mKHFbMF0pOyBzdGFydCAhPT0gLTE7IHN0YXJ0ID0gcy5pbmRleE9mKHFbMF0sIHN0YXJ0ICsgMSkpIHtcbiAgICBsZXQgc2NvcmUgPSAwXG4gICAgbGV0IHByZXYgPSAtMVxuICAgIGxldCBtYXRjaGVkID0gdHJ1ZVxuICAgIGZvciAoY29uc3QgY2ggb2YgcSkge1xuICAgICAgY29uc3QgaSA9IHMuaW5kZXhPZihjaCwgcHJldiA9PT0gLTEgPyBzdGFydCA6IHByZXYgKyAxKVxuICAgICAgaWYgKGkgPT09IC0xKSB7XG4gICAgICAgIG1hdGNoZWQgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgaWYgKHByZXYgIT09IC0xICYmIGkgPT09IHByZXYgKyAxKSBzY29yZSArPSAzXG4gICAgICBpZiAoaSA9PT0gMCB8fCAnLy4tXycuaW5jbHVkZXMoc1tpIC0gMV0pKSBzY29yZSArPSAyXG4gICAgICBzY29yZSArPSAxXG4gICAgICBwcmV2ID0gaVxuICAgIH1cbiAgICBpZiAobWF0Y2hlZCAmJiBzY29yZSA+IGJlc3QpIGJlc3QgPSBzY29yZVxuICB9XG4gIGlmIChiZXN0IDwgMCkgcmV0dXJuIC0xXG4gIGNvbnN0IGJhc2UgPSBzLnNsaWNlKHMubGFzdEluZGV4T2YoJy8nKSArIDEpXG4gIGlmIChiYXNlLnN0YXJ0c1dpdGgocSkpIGJlc3QgKz0gOFxuICBlbHNlIGlmIChiYXNlLmluY2x1ZGVzKHEpKSBiZXN0ICs9IDVcbiAgZWxzZSBpZiAocy5pbmNsdWRlcyhxKSkgYmVzdCArPSAzXG4gIHJldHVybiBiZXN0IC0gcy5sZW5ndGggLyAxMDBcbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBNRURJQV9UWVBFUyA9IHtcbiAgcG5nOiAnaW1hZ2UvcG5nJyxcbiAganBnOiAnaW1hZ2UvanBlZycsXG4gIGpwZWc6ICdpbWFnZS9qcGVnJyxcbiAgZ2lmOiAnaW1hZ2UvZ2lmJyxcbiAgd2VicDogJ2ltYWdlL3dlYnAnLFxuICBibXA6ICdpbWFnZS9ibXAnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVkaWFUeXBlRm9yKHBhdGgpIHtcbiAgcmV0dXJuIE1FRElBX1RZUEVTW3BhdGguc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpXSB8fCBudWxsXG59XG5cbmZ1bmN0aW9uIHVucXVvdGUodG9rZW4pIHtcbiAgaWYgKC9eJy4qJyQvLnRlc3QodG9rZW4pIHx8IC9eXCIuKlwiJC8udGVzdCh0b2tlbikpIHJldHVybiB0b2tlbi5zbGljZSgxLCAtMSlcbiAgcmV0dXJuIHRva2VuLnJlcGxhY2UoL1xcXFwgL2csICcgJylcbn1cblxuZnVuY3Rpb24gdG9QYXRoKHRva2VuKSB7XG4gIGNvbnN0IHJhdyA9IHVucXVvdGUodG9rZW4udHJpbSgpKVxuICBpZiAocmF3LnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJhdy5zbGljZSgnZmlsZTovLycubGVuZ3RoKSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG4gIHJldHVybiByYXdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbWFnZVBhdGhzKHRleHQsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgdG9rZW5zID0gdGV4dC50cmltKCkubWF0Y2goLydbXiddKid8XCJbXlwiXSpcInwoPzpcXFxcIHxbXiBcXHRcXG5cXHJdKSsvZylcbiAgaWYgKCF0b2tlbnMgfHwgdG9rZW5zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdXG4gIGNvbnN0IHBhdGhzID0gW11cbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBjb25zdCBwYXRoID0gdG9QYXRoKHRva2VuKVxuICAgIGlmICghcGF0aCB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpIHJldHVybiBbXVxuICAgIGlmICghbWVkaWFUeXBlRm9yKHBhdGgpIHx8ICFleGlzdHMocGF0aCkpIHJldHVybiBbXVxuICAgIHBhdGhzLnB1c2gocGF0aClcbiAgfVxuICByZXR1cm4gcGF0aHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlTGFiZWwocGFydCkge1xuICBpZiAocGFydC5zb3VyY2U/LnBhdGgpIHJldHVybiBgW2ltYWdlOiAke2Jhc2VuYW1lKHBhcnQuc291cmNlLnBhdGgpfV1gXG4gIHJldHVybiAnW2ltYWdlXSdcbn1cblxuY29uc3QgSU1BR0VfUEFUSF9SRSA9IC8oW1wiJ10pKFxcL1teXCInXSs/XFwuKD86cG5nfGpwZT9nfGdpZnx3ZWJwfGJtcCkpXFwxfChcXC8oPzpcXFxcIHxbXiBcXHRcXG5cXHJcIiddKStcXC4oPzpwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wKSkvZ2lcblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyh0ZXh0LCBleGlzdHMgPSBleGlzdHNTeW5jKSB7XG4gIGNvbnN0IHBhcnRzID0gW11cbiAgbGV0IGxhc3QgPSAwXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgdGV4dC5tYXRjaEFsbChJTUFHRV9QQVRIX1JFKSkge1xuICAgIGNvbnN0IHBhdGggPSBtYXRjaFsyXSB8fCBtYXRjaFszXS5yZXBsYWNlKC9cXFxcIC9nLCAnICcpXG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWVkaWFUeXBlRm9yKHBhdGgpXG4gICAgaWYgKCFtZWRpYVR5cGUgfHwgIWV4aXN0cyhwYXRoKSkgY29udGludWVcbiAgICBpZiAobWF0Y2guaW5kZXggPiBsYXN0KSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0ZXh0LnNsaWNlKGxhc3QsIG1hdGNoLmluZGV4KSB9KVxuICAgIHBhcnRzLnB1c2goeyB0eXBlOiAnaW1hZ2UnLCBzb3VyY2U6IHsga2luZDogJ3BhdGgnLCBwYXRoLCBtZWRpYVR5cGUgfSB9KVxuICAgIGxhc3QgPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aFxuICB9XG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG4gIGNvbnN0IHRhaWwgPSB0ZXh0LnNsaWNlKGxhc3QpXG4gIGlmICh0YWlsKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0YWlsIH0pXG4gIHJldHVybiBwYXJ0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVc2VyQ29udGVudCh0ZXh0LCBhdHRhY2htZW50cykge1xuICBjb25zdCBwYXJ0cyA9IFtdXG4gIGxldCBsYXN0ID0gMFxuICBjb25zdCB1c2VkID0gW11cbiAgZm9yIChjb25zdCBtYXRjaCBvZiB0ZXh0Lm1hdGNoQWxsKC9cXFtJbWFnZSAjXFxkK1xcXS9nKSkge1xuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBhdHRhY2htZW50cy5nZXQobWF0Y2hbMF0pXG4gICAgaWYgKCFhdHRhY2htZW50KSBjb250aW51ZVxuICAgIGNvbnN0IGJlZm9yZSA9IHRleHQuc2xpY2UobGFzdCwgbWF0Y2guaW5kZXgpXG4gICAgaWYgKGJlZm9yZSkgcGFydHMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdGV4dDogYmVmb3JlIH0pXG4gICAgcGFydHMucHVzaCh7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgc291cmNlOiB7IGtpbmQ6ICdwYXRoJywgcGF0aDogYXR0YWNobWVudC5wYXRoLCBtZWRpYVR5cGU6IGF0dGFjaG1lbnQubWVkaWFUeXBlIH0sXG4gICAgfSlcbiAgICB1c2VkLnB1c2gobWF0Y2hbMF0pXG4gICAgbGFzdCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgY29udGVudDogdGV4dCwgdXNlZCB9XG4gIGNvbnN0IHRhaWwgPSB0ZXh0LnNsaWNlKGxhc3QpXG4gIGlmICh0YWlsKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0YWlsIH0pXG4gIHJldHVybiB7IGNvbnRlbnQ6IHBhcnRzLCB1c2VkIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocyh0ZXh0LCB7IGF0dGFjaG1lbnRzLCBuZXh0SWQsIGV4aXN0cyA9IGV4aXN0c1N5bmMgfSkge1xuICBjb25zdCBwYXJ0cyA9IHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyh0ZXh0LCBleGlzdHMpXG4gIGlmICghcGFydHMpIHJldHVybiB7IHRleHQsIGNoYW5nZWQ6IGZhbHNlIH1cbiAgbGV0IG91dCA9ICcnXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChwYXJ0LnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgb3V0ICs9IHBhcnQudGV4dFxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7bmV4dElkKCl9XWBcbiAgICAgIGF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoOiBwYXJ0LnNvdXJjZS5wYXRoLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSB9KVxuICAgICAgb3V0ICs9IHBsYWNlaG9sZGVyXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHRleHQ6IG91dCwgY2hhbmdlZDogdHJ1ZSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnB1dFRleHRGcm9tQ29udGVudChjb250ZW50LCB7IGF0dGFjaG1lbnRzLCBuZXh0SWQgfSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIHJldHVybiBTdHJpbmcoY29udGVudClcbiAgbGV0IG91dCA9ICcnXG4gIGZvciAoY29uc3QgcGFydCBvZiBjb250ZW50KSB7XG4gICAgaWYgKHBhcnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBvdXQgKz0gcGFydC50ZXh0XG4gICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdpbWFnZScgJiYgcGFydC5zb3VyY2U/LnBhdGgpIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHtuZXh0SWQoKX1dYFxuICAgICAgYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGg6IHBhcnQuc291cmNlLnBhdGgsIG1lZGlhVHlwZTogcGFydC5zb3VyY2UubWVkaWFUeXBlIH0pXG4gICAgICBvdXQgKz0gcGxhY2Vob2xkZXJcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICdbaW1hZ2VdJ1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbGl6ZVVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzLCBleGlzdHMgPSBleGlzdHNTeW5jKSB7XG4gIGNvbnN0IHsgY29udGVudCwgdXNlZCB9ID0gYnVpbGRVc2VyQ29udGVudCh0ZXh0LCBhdHRhY2htZW50cylcbiAgY29uc3QgcGFydHMgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpID8gY29udGVudCA6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogY29udGVudCB9XVxuICBjb25zdCBleHBhbmRlZCA9IFtdXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChwYXJ0LnR5cGUgIT09ICd0ZXh0Jykge1xuICAgICAgZXhwYW5kZWQucHVzaChwYXJ0KVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3Qgc3BsaXQgPSBzcGxpdFRleHRCeUltYWdlUGF0aHMocGFydC50ZXh0LCBleGlzdHMpXG4gICAgaWYgKHNwbGl0KSBleHBhbmRlZC5wdXNoKC4uLnNwbGl0KVxuICAgIGVsc2UgZXhwYW5kZWQucHVzaChwYXJ0KVxuICB9XG4gIGlmIChleHBhbmRlZC5sZW5ndGggPT09IDEgJiYgZXhwYW5kZWRbMF0udHlwZSA9PT0gJ3RleHQnKSByZXR1cm4geyBjb250ZW50OiBleHBhbmRlZFswXS50ZXh0LCB1c2VkIH1cbiAgcmV0dXJuIHsgY29udGVudDogZXhwYW5kZWQsIHVzZWQgfVxufVxuIiwgImltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBkaXNjb3ZlcktleXMsIGFwcGx5S2V5cyB9IGZyb20gJy4vY29yZS9rZXlzLmpzJ1xuaW1wb3J0IHsgbG9hZENhdGFsb2csIGV4dHJhY3RNb2RlbHMsIGFkaG9jTW9kZWwgfSBmcm9tICcuL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4vY29yZS9jb2RleC1tb2RlbHMuanMnXG5pbXBvcnQgeyBvcGVuYWlDb25uZWN0ZWQsIG9wZW5haUNyZWRlbnRpYWxzIH0gZnJvbSAnLi9jb3JlL29wZW5haS1hdXRoLmpzJ1xuaW1wb3J0IHsgZmluZE1vZGVsLCBkZWZhdWx0TW9kZWwsIGVzdGltYXRlQ29zdCB9IGZyb20gJy4vY29yZS9tb2RlbHMuanMnXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi9jb3JlL2NvbmZpZy5qcydcbmltcG9ydCB7IGJ1aWxkUHJvamVjdEJvb3QgfSBmcm9tICcuL2NvcmUvYm9vdC5qcydcbmltcG9ydCB7IGNyZWF0ZVNoZWxsTWFuYWdlciB9IGZyb20gJy4vY29yZS9zaGVsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVTZXNzaW9uLCBvcGVuU2Vzc2lvbiwgbG9hZFNlc3Npb24gfSBmcm9tICcuL2NvcmUvc2Vzc2lvbi5qcydcbmltcG9ydCB7IHNlc3Npb25zRGlyIH0gZnJvbSAnLi9jb3JlL3BhdGhzLmpzJ1xuaW1wb3J0IHsgbWFrZUV2ZW50IH0gZnJvbSAnLi9jb3JlL2V2ZW50cy5qcydcbmltcG9ydCB7IGRlcml2ZVN0YXRlIH0gZnJvbSAnLi9jb3JlL2Rlcml2ZS5qcydcbmltcG9ydCB7IGNyZWF0ZVRvb2xzZXQgfSBmcm9tICcuL2NvcmUvdG9vbHMvaW5kZXguanMnXG5pbXBvcnQgeyByZXNvbHZlRHJlZGdlIH0gZnJvbSAnLi9jb3JlL3Rvb2xzL3dlYi5qcydcbmltcG9ydCB7IHJ1blR1cm4gfSBmcm9tICcuL2NvcmUvYWdlbnQuanMnXG5pbXBvcnQgeyBidWlsZFN5c3RlbVByb21wdCB9IGZyb20gJy4vY29yZS9zeXN0ZW0tcHJvbXB0LmpzJ1xuaW1wb3J0IHsgbWVtb3J5SW5kZXggfSBmcm9tICcuL2NvcmUvbWVtb3J5LmpzJ1xuaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vdWkvZnV6enkuanMnXG5pbXBvcnQgeyBmaW5hbGl6ZVVzZXJDb250ZW50IH0gZnJvbSAnLi91aS9hdHRhY2htZW50cy5qcydcblxuZnVuY3Rpb24gcmVzb2x2ZU1vZGVsKG1vZGVscywgcHJvdmlkZXJzLCBuYW1lKSB7XG4gIGlmICghbmFtZSkgcmV0dXJuIG51bGxcbiAgY29uc3QgZXhhY3QgPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBuYW1lKVxuICBpZiAoZXhhY3QpIHJldHVybiBleGFjdFxuICBpZiAobmFtZS5pbmNsdWRlcygnLycpKSByZXR1cm4gYWRob2NNb2RlbChuYW1lLCBwcm92aWRlcnMpXG4gIGNvbnN0IHNjb3JlZCA9IG1vZGVsc1xuICAgIC5maWx0ZXIoKG0pID0+IG0uYXZhaWxhYmxlICE9PSBmYWxzZSlcbiAgICAubWFwKChtKSA9PiBbZnV6enlTY29yZShuYW1lLCBtLm5hbWUpLCBtXSlcbiAgICAuZmlsdGVyKChbc2NvcmVdKSA9PiBzY29yZSA+PSAwKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiWzBdIC0gYVswXSlcbiAgcmV0dXJuIHNjb3JlZFswXT8uWzFdIHx8IG51bGxcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFN0ZGluKCkge1xuICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkgcmV0dXJuICcnXG4gIGxldCBkYXRhID0gJydcbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBwcm9jZXNzLnN0ZGluKSB7XG4gICAgZGF0YSArPSBjaHVua1xuICAgIGlmIChkYXRhLmxlbmd0aCA+IDQwMDAwMCkgYnJlYWtcbiAgfVxuICByZXR1cm4gZGF0YS5zbGljZSgwLCA0MDAwMDApXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5IZWFkbGVzcyhvcHRzKSB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IERhdGUubm93KClcbiAgY29uc3QgbG9nID0gb3B0cy5xdWlldCA/ICgpID0+IHt9IDogKGxpbmUpID0+IHByb2Nlc3Muc3RkZXJyLndyaXRlKGxpbmUgKyAnXFxuJylcblxuICBjb25zdCBjaGF0Z3B0ID0gYXdhaXQgb3BlbmFpQ29ubmVjdGVkKClcbiAgY29uc3QgcHJvdmlkZXJzID0gWy4uLmFwcGx5S2V5cyhkaXNjb3ZlcktleXMoKSksIC4uLihjaGF0Z3B0ID8gWydjb2RleCddIDogW10pXVxuICBpZiAocHJvdmlkZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKCdwaWNvOiBubyBjcmVkZW50aWFscyBmb3VuZCAoc2V0IGEgcHJvdmlkZXIga2V5IG9yIHJ1biBwaWNvIC0tY29ubmVjdClcXG4nKVxuICAgIHJldHVybiAxXG4gIH1cbiAgY29uc3QgY2F0YWxvZ0RhdGEgPSBhd2FpdCBsb2FkQ2F0YWxvZygpXG4gIGNvbnN0IGNvZGV4Q3JlZHMgPSBjaGF0Z3B0ID8gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKSA6IG51bGxcbiAgY29uc3QgbW9kZWxzID0gW1xuICAgIC4uLmV4dHJhY3RNb2RlbHMoY2F0YWxvZ0RhdGEsIFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ10pLm1hcCgobSkgPT4gKHtcbiAgICAgIC4uLm0sXG4gICAgICBhdmFpbGFibGU6IHByb3ZpZGVycy5pbmNsdWRlcyhtLnByb3ZpZGVyKSxcbiAgICB9KSksXG4gICAgLi4uKGF3YWl0IGxvYWRDb2RleE1vZGVscyhjb2RleENyZWRzKSkubWFwKChtKSA9PiAoeyAuLi5tLCBhdmFpbGFibGU6IGNoYXRncHQgfSkpLFxuICBdXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRDb25maWcoKVxuXG4gIGNvbnN0IG1vZGVsID0gcmVzb2x2ZU1vZGVsKG1vZGVscywgcHJvdmlkZXJzLCBvcHRzLm1vZGVsKVxuICAgIHx8IChjb25maWcuZGVmYXVsdE1vZGVsICYmIG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IGNvbmZpZy5kZWZhdWx0TW9kZWwgJiYgbS5hdmFpbGFibGUpKVxuICAgIHx8IGRlZmF1bHRNb2RlbChtb2RlbHMpXG4gIGlmICghbW9kZWwgfHwgbW9kZWwuYXZhaWxhYmxlID09PSBmYWxzZSkge1xuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBwaWNvOiBubyB1c2FibGUgbW9kZWwke29wdHMubW9kZWwgPyBgIG1hdGNoaW5nIFwiJHtvcHRzLm1vZGVsfVwiYCA6ICcnfVxcbmApXG4gICAgcmV0dXJuIDFcbiAgfVxuICBjb25zdCBlZmZvcnQgPSBvcHRzLmVmZm9ydCA/PyAobW9kZWwuZWZmb3J0ID8gJ2F1dG8nIDogbnVsbClcblxuICBjb25zdCBib290ID0gYXdhaXQgYnVpbGRQcm9qZWN0Qm9vdChwcm9jZXNzLmN3ZCgpKVxuICBhd2FpdCBQcm9taXNlLnJhY2UoW2Jvb3QubWNwLmNvbm5lY3RBbGwoKSwgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgMTAwMDApKV0pXG4gIGNvbnN0IHNoZWxscyA9IGNyZWF0ZVNoZWxsTWFuYWdlcigpXG5cbiAgbGV0IHNlc3Npb25cbiAgbGV0IGV2ZW50cyA9IFtdXG4gIGlmIChvcHRzLnJlc3VtZSkge1xuICAgIGNvbnN0IGZpbGUgPSBvcHRzLnJlc3VtZS5pbmNsdWRlcygnLycpID8gb3B0cy5yZXN1bWUgOiBqb2luKHNlc3Npb25zRGlyKGJvb3Qucm9vdCksIGAke29wdHMucmVzdW1lfS5qc29ubGApXG4gICAgY29uc3QgbG9hZGVkID0gYXdhaXQgbG9hZFNlc3Npb24oZmlsZSlcbiAgICBzZXNzaW9uID0gb3BlblNlc3Npb24oeyBmaWxlLCBoZWFkZXI6IGxvYWRlZC5oZWFkZXIgfSlcbiAgICBldmVudHMgPSBsb2FkZWQuZXZlbnRzXG4gIH0gZWxzZSB7XG4gICAgc2Vzc2lvbiA9IGNyZWF0ZVNlc3Npb24oeyBjd2Q6IGJvb3QuY3dkLCByb290OiBib290LnJvb3QgfSlcbiAgfVxuXG4gIGNvbnN0IHBlcnNpc3QgPSAoZXZlbnQpID0+IHtcbiAgICBldmVudHMucHVzaChldmVudClcbiAgICBzZXNzaW9uLmFwcGVuZChldmVudClcbiAgICBpZiAob3B0cy5zdHJlYW1Kc29uKSBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShldmVudCkgKyAnXFxuJylcbiAgfVxuXG4gIGNvbnN0IHN0ZGluRGF0YSA9IGF3YWl0IHJlYWRTdGRpbigpXG4gIGNvbnN0IHByb21wdFRleHQgPSBzdGRpbkRhdGEgPyBgJHtvcHRzLnByb21wdH1cXG5cXG5bcGlwZWQgaW5wdXRdXFxuJHtzdGRpbkRhdGF9YCA6IG9wdHMucHJvbXB0XG4gIGNvbnN0IHsgY29udGVudCB9ID0gZmluYWxpemVVc2VyQ29udGVudChwcm9tcHRUZXh0LCBuZXcgTWFwKCkpXG4gIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlOiB7IHJvbGU6ICd1c2VyJywgY29udGVudCB9IH0pKVxuXG4gIGNvbnN0IGRlcml2ZWQgPSBkZXJpdmVTdGF0ZShldmVudHMpXG4gIGNvbnN0IGxvYWRlZEJlZm9yZSA9IG5ldyBTZXQoYm9vdC50cmFja2VyLmxvYWRlZClcbiAgY29uc3QgeyB0b29scywgcmVjb3JkZXIgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgIGN3ZDogYm9vdC5jd2QsXG4gICAgdHJhY2tlcjogYm9vdC50cmFja2VyLFxuICAgIHNraWxsczogYm9vdC5za2lsbHMsXG4gICAgc2hlbGxzLFxuICAgIG1lbW9yeTogYm9vdC5tZW1vcnksXG4gICAgZHJlZGdlOiByZXNvbHZlRHJlZGdlKGNvbmZpZyksXG4gICAgbWNwVG9vbHM6IGJvb3QubWNwLnRvb2xzKCksXG4gICAgdXNlclRvb2xzOiBbXSxcbiAgICBtYXhUb29sQ2FsbHM6IG9wdHMubWF4VG9vbENhbGxzID8/IDUwLFxuICB9KVxuXG4gIGxldCBhdXRoID0gbnVsbFxuICBpZiAobW9kZWwucHJvdmlkZXIgPT09ICdjb2RleCcpIHtcbiAgICBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgIGlmICghYXV0aCkge1xuICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoJ3BpY286IGNvZGV4IG1vZGVscyBuZWVkIGEgQ2hhdEdQVCBzaWduLWluIChydW4gcGljbyAtLWNvbm5lY3QpXFxuJylcbiAgICAgIHJldHVybiAxXG4gICAgfVxuICB9XG5cbiAgbG9nKGBwaWNvIFx1MDBCNyAke21vZGVsLm5hbWV9JHtlZmZvcnQgPyBgIFx1MDBCNyAke2VmZm9ydH1gIDogJyd9IFx1MDBCNyBzZXNzaW9uICR7c2Vzc2lvbi5pZH1gKVxuICBsZXQgdGhvdWdodHMgPSAnJ1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5UdXJuKHtcbiAgICBoaXN0b3J5OiBkZXJpdmVkLnByb3ZpZGVySGlzdG9yeSxcbiAgICB0b29scyxcbiAgICByZWNvcmRlcixcbiAgICBtb2RlbE5hbWU6IG1vZGVsLm5hbWUsXG4gICAgZWZmb3J0LFxuICAgIGF1dGgsXG4gICAgc3lzdGVtOiBidWlsZFN5c3RlbVByb21wdCh7XG4gICAgICBjd2Q6IGJvb3QuY3dkLFxuICAgICAgY29udGV4dEZpbGVzOiBib290LnN0YXJ0dXBDb250ZXh0LmZpbGVzLFxuICAgICAgc2tpbGxzOiBib290LnNraWxscy5saXN0KCksXG4gICAgICBtZW1vcnlJbmRleFRleHQ6IG1lbW9yeUluZGV4KGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSksIGJvb3Qucm9vdCksXG4gICAgfSksXG4gICAgb25TdHJlYW06IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0aGlua2luZycpIHRob3VnaHRzICs9IGV2ZW50LmNvbnRlbnRcbiAgICAgIGlmIChldmVudC50eXBlID09PSAndG9vbF9jb21wbGV0ZScpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWNvcmRlci5lbnRyaWVzLmF0KC0xKVxuICAgICAgICBsb2coYCAgXHUyNzEzICR7ZW50cnk/Lm5hbWUgPz8gZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lfSAgJHtlbnRyeT8udGl0bGUgPz8gJyd9YClcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC50eXBlID09PSAndG9vbF9lcnJvcicpIGxvZyhgICBcdTI3MTcgJHtldmVudC5jYWxsLmZ1bmN0aW9uLm5hbWV9ICAke2V2ZW50LmVycm9yLnNsaWNlKDAsIDEyMCl9YClcbiAgICB9LFxuICB9KVxuXG4gIGlmICh0aG91Z2h0cykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rob3VnaHRzJywgeyB0ZXh0OiB0aG91Z2h0cyB9KSlcbiAgZm9yIChjb25zdCBtZXNzYWdlIG9mIHJlc3VsdC5tZXNzYWdlcykgcGVyc2lzdChtYWtlRXZlbnQoJ21lc3NhZ2UnLCB7IG1lc3NhZ2UgfSkpXG4gIGZvciAoY29uc3QgZW50cnkgb2YgcmVjb3JkZXIuZW50cmllcykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rvb2xfbWV0YScsIGVudHJ5KSlcbiAgZm9yIChjb25zdCBwYXRoIG9mIGJvb3QudHJhY2tlci5sb2FkZWQpIHtcbiAgICBpZiAoIWxvYWRlZEJlZm9yZS5oYXMocGF0aCkpIHBlcnNpc3QobWFrZUV2ZW50KCdjb250ZXh0X2ZpbGUnLCB7IHBhdGggfSkpXG4gIH1cbiAgaWYgKHJlc3VsdC51c2FnZSkgcGVyc2lzdChtYWtlRXZlbnQoJ3VzYWdlJywgeyBtb2RlbDogbW9kZWwubmFtZSwgdXNhZ2U6IHJlc3VsdC51c2FnZSwgbGFzdFByb21wdDogcmVzdWx0Lmxhc3RQcm9tcHRUb2tlbnMgfSkpXG4gIGlmIChyZXN1bHQuaW50ZXJydXB0ZWQpIHBlcnNpc3QobWFrZUV2ZW50KCdpbnRlcnJ1cHQnLCB7fSkpXG5cbiAgY29uc3QgcnVubmluZyA9IHNoZWxscy5ydW5uaW5nKClcbiAgaWYgKHJ1bm5pbmcgPiAwKSBsb2coYCAga2lsbGluZyAke3J1bm5pbmd9IGJhY2tncm91bmQgc2hlbGwke3J1bm5pbmcgPT09IDEgPyAnJyA6ICdzJ31gKVxuICBzaGVsbHMua2lsbEFsbCgpXG4gIGF3YWl0IGJvb3QubWNwLmNsb3NlQWxsKCkuY2F0Y2goKCkgPT4ge30pXG5cbiAgY29uc3QgdGV4dCA9IHJlc3VsdC5tZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0ucm9sZSA9PT0gJ2Fzc2lzdGFudCcgJiYgdHlwZW9mIG0uY29udGVudCA9PT0gJ3N0cmluZycgJiYgbS5jb250ZW50KS5hdCgtMSk/LmNvbnRlbnQgPz8gJydcbiAgY29uc3Qgc3VtbWFyeSA9IHtcbiAgICB0ZXh0LFxuICAgIHNlc3Npb246IHNlc3Npb24uaWQsXG4gICAgc2Vzc2lvbkZpbGU6IHNlc3Npb24uZmlsZSxcbiAgICBtb2RlbDogbW9kZWwubmFtZSxcbiAgICB1c2FnZTogcmVzdWx0LnVzYWdlLFxuICAgIGNvc3Q6IGVzdGltYXRlQ29zdChmaW5kTW9kZWwobW9kZWxzLCBtb2RlbC5uYW1lKSwgcmVzdWx0LnVzYWdlKSxcbiAgICB0b29sQ2FsbHM6IHJlY29yZGVyLmVudHJpZXMubGVuZ3RoLFxuICAgIGludGVycnVwdGVkOiByZXN1bHQuaW50ZXJydXB0ZWQsXG4gICAgZHVyYXRpb25NczogRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgfVxuXG4gIGlmIChvcHRzLmpzb24pIHByb2Nlc3Muc3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KHN1bW1hcnkpICsgJ1xcbicpXG4gIGVsc2UgaWYgKG9wdHMuc3RyZWFtSnNvbikgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAncmVzdWx0JywgLi4uc3VtbWFyeSwgdGV4dDogdW5kZWZpbmVkLCBhdDogRGF0ZS5ub3coKSB9KSArICdcXG4nKVxuICBlbHNlIHByb2Nlc3Muc3Rkb3V0LndyaXRlKHRleHQgKyAnXFxuJylcblxuICByZXR1cm4gcmVzdWx0LmludGVycnVwdGVkID8gMSA6IDBcbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgbW91bnQgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBwYXJzZUFyZ3MsIFVTQUdFIH0gZnJvbSAnLi9jbGktYXJncy5qcydcbmltcG9ydCB7IGRpc2NvdmVyS2V5cywgYXBwbHlLZXlzLCBrZXlIaW50IH0gZnJvbSAnLi9jb3JlL2tleXMuanMnXG5pbXBvcnQgeyBkZWZhdWx0TW9kZWwgfSBmcm9tICcuL2NvcmUvbW9kZWxzLmpzJ1xuaW1wb3J0IHsgbG9hZENhdGFsb2csIGV4dHJhY3RNb2RlbHMgfSBmcm9tICcuL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4vY29yZS9jb2RleC1tb2RlbHMuanMnXG5pbXBvcnQgeyBvcGVuYWlDb25uZWN0ZWQsIG9wZW5haUNyZWRlbnRpYWxzIH0gZnJvbSAnLi9jb3JlL29wZW5haS1hdXRoLmpzJ1xuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4vY29yZS9jb25maWcuanMnXG5pbXBvcnQgeyBkZXRlY3RUZXJtaW5hbFRoZW1lIH0gZnJvbSAnLi9jb3JlL3Rlcm1pbmFsLXRoZW1lLmpzJ1xuaW1wb3J0IHsgYnVpbGRQcm9qZWN0Qm9vdCB9IGZyb20gJy4vY29yZS9ib290LmpzJ1xuaW1wb3J0IHsgcmVzb2x2ZURyZWRnZSB9IGZyb20gJy4vY29yZS90b29scy93ZWIuanMnXG5pbXBvcnQgeyBjcmVhdGVTaGVsbE1hbmFnZXIgfSBmcm9tICcuL2NvcmUvc2hlbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV2FrZXVwTWFuYWdlciB9IGZyb20gJy4vY29yZS93YWtldXBzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlR2l0U2VydmljZSB9IGZyb20gJy4vY29yZS9naXQuanMnXG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuL3VpL2FwcC5qc3gnXG5pbXBvcnQgeyBERUZBVUxUX0FDQ0VOVCwgTVVURUQsIHNldFBhbGV0dGUsIHBhbGV0dGVMaXN0IH0gZnJvbSAnLi91aS90aGVtZS5qcydcblxuY29uc3QgcGtnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSwgJ3V0Zi04JykpXG5cbmxldCBjbGlcbnRyeSB7XG4gIGNsaSA9IHBhcnNlQXJncyhwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpXG59IGNhdGNoIChlcnIpIHtcbiAgY29uc29sZS5lcnJvcihgcGljbzogJHtlcnIubWVzc2FnZX1gKVxuICBjb25zb2xlLmVycm9yKFVTQUdFKVxuICBwcm9jZXNzLmV4aXQoMSlcbn1cbmlmIChjbGkubW9kZSA9PT0gJ2hlbHAnKSB7XG4gIGNvbnNvbGUubG9nKFVTQUdFKVxuICBwcm9jZXNzLmV4aXQoMClcbn1cbmlmIChjbGkubW9kZSA9PT0gJ3ZlcnNpb24nKSB7XG4gIGNvbnNvbGUubG9nKHBrZy52ZXJzaW9uKVxuICBwcm9jZXNzLmV4aXQoMClcbn1cbmlmIChjbGkubW9kZSA9PT0gJ3VwZGF0ZScpIHtcbiAgY29uc3QgeyBpc0Rldkluc3RhbGwsIHJ1blVwZGF0ZSwgZmV0Y2hMYXRlc3RWZXJzaW9uLCBuZXdlclZlcnNpb24gfSA9IGF3YWl0IGltcG9ydCgnLi9jb3JlL3VwZGF0ZS5qcycpXG4gIGlmIChpc0Rldkluc3RhbGwoaW1wb3J0Lm1ldGEudXJsKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3RoaXMgcGljbyBydW5zIGZyb20gYSBzb3VyY2UgY2hlY2tvdXQ7IHVwZGF0ZSBpdCB3aXRoIGdpdCwgbm90IG5wbScpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgY29uc3QgbGF0ZXN0ID0gYXdhaXQgZmV0Y2hMYXRlc3RWZXJzaW9uKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgaWYgKGxhdGVzdCAmJiAhbmV3ZXJWZXJzaW9uKHBrZy52ZXJzaW9uLCBsYXRlc3QpKSB7XG4gICAgY29uc29sZS5sb2coYHBpY28gdiR7cGtnLnZlcnNpb259IGlzIGFscmVhZHkgdGhlIGxhdGVzdGApXG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH1cbiAgY29uc29sZS5lcnJvcihgdXBkYXRpbmcgcGljb2NvZGUgJHtsYXRlc3QgPyBgdG8gdiR7bGF0ZXN0fSBgIDogJyd9dmlhIG5wbS4uLmApXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1blVwZGF0ZSgpXG4gIGlmIChyZXN1bHQub2spIHtcbiAgICBjb25zb2xlLmxvZyhgdXBkYXRlZCR7bGF0ZXN0ID8gYCB0byB2JHtsYXRlc3R9YCA6ICcnfWApXG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH1cbiAgY29uc29sZS5lcnJvcihgdXBkYXRlIGZhaWxlZDpcXG4ke3Jlc3VsdC5vdXRwdXR9YClcbiAgcHJvY2Vzcy5leGl0KDEpXG59XG5pZiAoY2xpLm1vZGUgPT09ICdjb25uZWN0Jykge1xuICBjb25zdCB7IGNvbm5lY3RPcGVuQUkgfSA9IGF3YWl0IGltcG9ydCgnLi9jb3JlL29wZW5haS1hdXRoLmpzJylcbiAgdHJ5IHtcbiAgICBjb25zb2xlLmVycm9yKCdvcGVuaW5nIHlvdXIgYnJvd3NlciBmb3IgQ2hhdEdQVCBzaWduLWluLi4uJylcbiAgICBjb25zdCB7IGVtYWlsIH0gPSBhd2FpdCBjb25uZWN0T3BlbkFJKHsgb25Vcmw6ICh1cmwpID0+IGNvbnNvbGUuZXJyb3IoYGlmIHRoZSBicm93c2VyIGRpZCBub3Qgb3BlbiwgdmlzaXQ6XFxuJHt1cmx9YCkgfSlcbiAgICBjb25zb2xlLmxvZyhgY29ubmVjdGVkIGFzICR7ZW1haWwgfHwgJ3lvdXIgQ2hhdEdQVCBhY2NvdW50J31gKVxuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKGBjb25uZWN0IGZhaWxlZDogJHtlcnIubWVzc2FnZX1gKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG59XG5pZiAoY2xpLm1vZGUgPT09ICdoZWFkbGVzcycpIHtcbiAgY29uc3QgeyBydW5IZWFkbGVzcyB9ID0gYXdhaXQgaW1wb3J0KCcuL2hlYWRsZXNzLmpzJylcbiAgcHJvY2Vzcy5leGl0KGF3YWl0IHJ1bkhlYWRsZXNzKGNsaSkpXG59XG5cbmNvbnN0IGtleXMgPSBkaXNjb3ZlcktleXMoKVxuY29uc3QgY2hhdGdwdCA9IGF3YWl0IG9wZW5haUNvbm5lY3RlZCgpXG5jb25zdCBwcm92aWRlcnMgPSBbLi4uYXBwbHlLZXlzKGtleXMpLCAuLi4oY2hhdGdwdCA/IFsnY29kZXgnXSA6IFtdKV1cbmNvbnN0IGNhdGFsb2dEYXRhID0gYXdhaXQgbG9hZENhdGFsb2coKVxuY29uc3QgY29kZXhDcmVkcyA9IGNoYXRncHQgPyBhd2FpdCBvcGVuYWlDcmVkZW50aWFscygpLmNhdGNoKCgpID0+IG51bGwpIDogbnVsbFxuY29uc3QgbW9kZWxzID0gW1xuICAuLi5leHRyYWN0TW9kZWxzKGNhdGFsb2dEYXRhLCBbJ2dvb2dsZScsICdhbnRocm9waWMnLCAnb3BlbmFpJywgJ3hhaSddKS5tYXAoKG0pID0+ICh7XG4gICAgLi4ubSxcbiAgICBhdmFpbGFibGU6IHByb3ZpZGVycy5pbmNsdWRlcyhtLnByb3ZpZGVyKSxcbiAgICBrZXlIaW50OiBrZXlIaW50KG0ucHJvdmlkZXIpLFxuICB9KSksXG4gIC4uLihhd2FpdCBsb2FkQ29kZXhNb2RlbHMoY29kZXhDcmVkcykpLm1hcCgobSkgPT4gKHtcbiAgICAuLi5tLFxuICAgIGNvbnRleHQ6IG0uY29udGV4dFxuICAgICAgPz8gY2F0YWxvZ0RhdGEub3BlbmFpPy5tb2RlbHM/LlttLm5hbWUuc3BsaXQoJy8nKVsxXV0/LmxpbWl0Py5pbnB1dFxuICAgICAgPz8gY2F0YWxvZ0RhdGEub3BlbmFpPy5tb2RlbHM/LlttLm5hbWUuc3BsaXQoJy8nKVsxXV0/LmxpbWl0Py5jb250ZXh0XG4gICAgICA/PyBudWxsLFxuICAgIGF2YWlsYWJsZTogY2hhdGdwdCxcbiAgICBrZXlIaW50OiAnL2Nvbm5lY3QnLFxuICB9KSksXG5dXG5cbmlmIChwcm92aWRlcnMubGVuZ3RoID09PSAwKSB7XG4gIGNvbnNvbGUuZXJyb3IoJ3BpY286IG5vIGNyZWRlbnRpYWxzIGZvdW5kLicpXG4gIGNvbnNvbGUuZXJyb3IoJ3NldCBvbmUgb2Y6IEdFTUlOSV9BUElfS0VZLCBBTlRIUk9QSUNfQVBJX0tFWSwgT1BFTkFJX0FQSV9LRVksIFhBSV9BUElfS0VZJylcbiAgY29uc29sZS5lcnJvcignb3Igc2lnbiBpbiB3aXRoIGEgQ2hhdEdQVCBwbGFuOiBwaWNvIC0tY29ubmVjdCcpXG4gIHByb2Nlc3MuZXhpdCgxKVxufVxuXG5sZXQgbWNwTm90aWZ5ID0gKCkgPT4ge31cbmxldCBzaGVsbHNOb3RpZnkgPSAoKSA9PiB7fVxubGV0IHNoZWxsc0V4aXQgPSAoKSA9PiB7fVxuY29uc3Qgc2hlbGxzID0gY3JlYXRlU2hlbGxNYW5hZ2VyKHtcbiAgb25DaGFuZ2U6ICgpID0+IHNoZWxsc05vdGlmeSgpLFxuICBvbkV4aXQ6IChzaGVsbCkgPT4gc2hlbGxzRXhpdChzaGVsbCksXG59KVxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHNoZWxscy5raWxsQWxsKCkpXG5cbmxldCB3YWtldXBzTm90aWZ5ID0gKCkgPT4ge31cbmxldCB3YWtldXBzRmlyZSA9ICgpID0+IHt9XG5jb25zdCB3YWtldXBzID0gY3JlYXRlV2FrZXVwTWFuYWdlcih7XG4gIG9uQ2hhbmdlOiAoKSA9PiB3YWtldXBzTm90aWZ5KCksXG4gIG9uRmlyZTogKHdha2V1cCkgPT4gd2FrZXVwc0ZpcmUod2FrZXVwKSxcbn0pXG5cbmxldCBnaXROb3RpZnkgPSAoKSA9PiB7fVxuY29uc3QgZ2l0ID0gY3JlYXRlR2l0U2VydmljZSh7IG9uQ2hhbmdlOiAoKSA9PiBnaXROb3RpZnkoKSB9KVxucHJvY2Vzcy5vbignZXhpdCcsICgpID0+IGdpdC5kaXNwb3NlKCkpXG5cbmNvbnN0IGJvb3RQcm9qZWN0ID0gKGN3ZCkgPT4gYnVpbGRQcm9qZWN0Qm9vdChjd2QsIHsgb25NY3BDaGFuZ2U6ICgpID0+IG1jcE5vdGlmeSgpIH0pXG5cbmNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRDb25maWcoKVxuY29uc3QgY29uZmlndXJlZERlZmF1bHQgPSBjb25maWcuZGVmYXVsdE1vZGVsICYmIG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IGNvbmZpZy5kZWZhdWx0TW9kZWwpXG5cbmNvbnN0IGRldGVjdGVkVGhlbWUgPSBhd2FpdCBkZXRlY3RUZXJtaW5hbFRoZW1lKClcbmNvbnN0IHRoZW1lT3ZlcnJpZGUgPSBwYWxldHRlTGlzdCgpLnNvbWUoKHApID0+IHAua2V5ID09PSBjb25maWcudGhlbWUpID8gY29uZmlnLnRoZW1lIDogbnVsbFxuc2V0UGFsZXR0ZSh0aGVtZU92ZXJyaWRlIHx8IGRldGVjdGVkVGhlbWUpXG5jb25zdCB0aGVtZSA9IHsgYWNjZW50OiBERUZBVUxUX0FDQ0VOVCwgbXV0ZWQ6IE1VVEVEIH1cblxuY29uc3QgYm9vdCA9IHtcbiAgLi4uKGF3YWl0IGJvb3RQcm9qZWN0KHByb2Nlc3MuY3dkKCkpKSxcbiAgdGhlbWUsXG4gIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICBtb2RlbHMsXG4gIHByb3ZpZGVycyxcbiAgaW5pdGlhbE1vZGVsOiBjb25maWd1cmVkRGVmYXVsdCB8fCBkZWZhdWx0TW9kZWwobW9kZWxzKSxcbiAgcmVzZWFyY2hNb2RlbDogY29uZmlnLm1vZGVscz8ucmVzZWFyY2hXb3JrZXIgfHwgbnVsbCxcbiAgcmVzZWFyY2hBZ2VudExpbWl0OiBOdW1iZXIuaXNJbnRlZ2VyKGNvbmZpZy5yZXNlYXJjaD8uYWdlbnRMaW1pdCkgJiYgY29uZmlnLnJlc2VhcmNoLmFnZW50TGltaXQgPj0gMSAmJiBjb25maWcucmVzZWFyY2guYWdlbnRMaW1pdCA8PSAxMDBcbiAgICA/IGNvbmZpZy5yZXNlYXJjaC5hZ2VudExpbWl0XG4gICAgOiAxMCxcbiAgZGV0ZWN0ZWRUaGVtZSxcbiAgdGhlbWVQcmVmOiB0aGVtZU92ZXJyaWRlIHx8ICdhdXRvJyxcbiAgZHJlZGdlOiByZXNvbHZlRHJlZGdlKGNvbmZpZyksXG4gIGluaXRpYWxFZmZvcnQ6IFsnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddLmluY2x1ZGVzKGNvbmZpZy5kZWZhdWx0RWZmb3J0KSA/IGNvbmZpZy5kZWZhdWx0RWZmb3J0IDogbnVsbCxcbiAgYXV0b0NvbXBhY3Q6IGNvbmZpZy5hdXRvQ29tcGFjdCAhPT0gZmFsc2UsXG4gIGNsb3VkczogY29uZmlnLmFuaW1hdGlvbj8uY2xvdWRzID09PSB0cnVlLFxuICBjb21wYWN0VG9vbEhpc3Rvcnk6IGNvbmZpZy5kaXNwbGF5Py5jb21wYWN0VG9vbEhpc3RvcnkgPT09IHRydWUsXG4gIGdpdEZvb3RlcjogY29uZmlnLmRpc3BsYXk/LmdpdFN0YXR1cyAhPT0gZmFsc2UsXG4gIHJlZnM6IHt9LFxuICBzaGVsbHMsXG4gIHdha2V1cHMsXG4gIGdpdCxcbiAgc2V0TWNwTm90aWZ5OiAoZm4pID0+IHsgbWNwTm90aWZ5ID0gZm4gfSxcbiAgc2V0R2l0Tm90aWZ5OiAoZm4pID0+IHsgZ2l0Tm90aWZ5ID0gZm4gfSxcbiAgc2V0U2hlbGxzTm90aWZ5OiAoZm4pID0+IHsgc2hlbGxzTm90aWZ5ID0gZm4gfSxcbiAgc2V0U2hlbGxzRXhpdDogKGZuKSA9PiB7IHNoZWxsc0V4aXQgPSBmbiB9LFxuICBzZXRXYWtldXBzTm90aWZ5OiAoZm4pID0+IHsgd2FrZXVwc05vdGlmeSA9IGZuIH0sXG4gIHNldFdha2V1cHNGaXJlOiAoZm4pID0+IHsgd2FrZXVwc0ZpcmUgPSBmbiB9LFxuICByZWJ1aWxkOiBib290UHJvamVjdCxcbn1cblxuZ2l0LnJldGFyZ2V0KGJvb3Qucm9vdClcbmdpdC5zZXRFbmFibGVkKGJvb3QuZ2l0Rm9vdGVyKVxuXG5jb25zdCBhcHAgPSBtb3VudCgoKSA9PiA8QXBwIGJvb3Q9e2Jvb3R9IC8+LCB7IHRpdGxlOiBgcGljbyBcdTAwQjcgJHtib290LnJvb3Quc3BsaXQoJy8nKS5wb3AoKX1gLCB0aGVtZSB9KVxuYm9vdC5zZXRUaGVtZSA9IGFwcC5zZXRUaGVtZVxuYm9vdC5tY3AuY29ubmVjdEFsbCgpXG4iLCAiZXhwb3J0IGNvbnN0IFVTQUdFID0gYHBpY28gLSBhIGNvZGluZyBhZ2VudCBpbiB5b3VyIHRlcm1pbmFsXG5cbnVzYWdlOlxuICBwaWNvICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSBzZXNzaW9uIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeVxuICBwaWNvIC1wIFwicHJvbXB0XCIgICAgICAgICAgIGhlYWRsZXNzOiBydW4gb25lIGFnZW50aWMgdHVybiwgcHJpbnQgdGhlIGFuc3dlclxuICBjYXQgbG9nIHwgcGljbyAtcCBcIi4uLlwiICAgIHN0ZGluIGlzIGFwcGVuZGVkIHRvIHRoZSBwcm9tcHQgYXMgY29udGV4dFxuXG5oZWFkbGVzcyBmbGFnczpcbiAgLXAsIC0tcHJpbnQgPHByb21wdD4gICAgICAgdGhlIHByb21wdCB0byBydW5cbiAgLS1qc29uICAgICAgICAgICAgICAgICAgICAgcHJpbnQgYSBzaW5nbGUgSlNPTiByZXN1bHQgb2JqZWN0IHRvIHN0ZG91dFxuICAtLXN0cmVhbS1qc29uICAgICAgICAgICAgICBzdHJlYW0gc2Vzc2lvbiBldmVudHMgdG8gc3Rkb3V0IGFzIGpzb25sXG4gIC1tLCAtLW1vZGVsIDxuYW1lPiAgICAgICAgIG1vZGVsIHRvIHVzZSAoZnV6enkgbWF0Y2hlZCwgb3IgcmF3IHByb3ZpZGVyL21vZGVsKVxuICAtLWVmZm9ydCA8bGV2ZWw+ICAgICAgICAgICB0aGlua2luZyBlZmZvcnQ6IGF1dG98bG93fG1lZGl1bXxoaWdofG1heFxuICAtLXJlc3VtZSA8c2Vzc2lvbi1pZD4gICAgICBjb250aW51ZSBhbiBleGlzdGluZyBzZXNzaW9uIGZyb20gdGhpcyBwcm9qZWN0XG4gIC0tbWF4LXRvb2wtY2FsbHMgPG4+ICAgICAgIHN0b3AgdGhlIGFnZW50IGFmdGVyIG4gdG9vbCBjYWxscyAoZGVmYXVsdCA1MClcbiAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgbm8gcHJvZ3Jlc3Mgb3V0cHV0IG9uIHN0ZGVyclxuXG4gIC0tY29ubmVjdCAgICAgICAgICAgICAgICAgIHNpZ24gaW4gd2l0aCBhIENoYXRHUFQgcGxhbiAoT0F1dGggaW4geW91ciBicm93c2VyKVxuICB1cGRhdGUsIC0tdXBkYXRlICAgICAgICAgICB1cGRhdGUgcGljbyB0byB0aGUgbGF0ZXN0IHJlbGVhc2UgZnJvbSBucG1cbiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHBcbiAgLXYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgc2hvdyB2ZXJzaW9uYFxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3YpIHtcbiAgY29uc3Qgb3B0cyA9IHsgbW9kZTogJ2ludGVyYWN0aXZlJyB9XG4gIGNvbnN0IHRha2VWYWx1ZSA9IChuYW1lLCBpKSA9PiB7XG4gICAgaWYgKGkgKyAxID49IGFyZ3YubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gcmVxdWlyZXMgYSB2YWx1ZWApXG4gICAgcmV0dXJuIGFyZ3ZbaSArIDFdXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBhcmcgPSBhcmd2W2ldXG4gICAgaWYgKGFyZyA9PT0gJy1wJyB8fCBhcmcgPT09ICctLXByaW50Jykge1xuICAgICAgb3B0cy5tb2RlID0gJ2hlYWRsZXNzJ1xuICAgICAgb3B0cy5wcm9tcHQgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWpzb24nKSBvcHRzLmpzb24gPSB0cnVlXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLS1zdHJlYW0tanNvbicpIG9wdHMuc3RyZWFtSnNvbiA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctbScgfHwgYXJnID09PSAnLS1tb2RlbCcpIHtcbiAgICAgIG9wdHMubW9kZWwgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWVmZm9ydCcpIHtcbiAgICAgIGNvbnN0IGxldmVsID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGlmICghWydhdXRvJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXS5pbmNsdWRlcyhsZXZlbCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGVmZm9ydCBcIiR7bGV2ZWx9XCI6IHVzZSBhdXRvfGxvd3xtZWRpdW18aGlnaHxtYXhgKVxuICAgICAgfVxuICAgICAgb3B0cy5lZmZvcnQgPSBsZXZlbFxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLXJlc3VtZScpIHtcbiAgICAgIG9wdHMucmVzdW1lID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGkrK1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSAnLS1tYXgtdG9vbC1jYWxscycpIHtcbiAgICAgIG9wdHMubWF4VG9vbENhbGxzID0gcGFyc2VJbnQodGFrZVZhbHVlKGFyZywgaSksIDEwKVxuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUob3B0cy5tYXhUb29sQ2FsbHMpIHx8IG9wdHMubWF4VG9vbENhbGxzIDwgMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJy0tbWF4LXRvb2wtY2FsbHMgcmVxdWlyZXMgYSBwb3NpdGl2ZSBudW1iZXInKVxuICAgICAgfVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWNvbm5lY3QnKSBvcHRzLm1vZGUgPSAnY29ubmVjdCdcbiAgICBlbHNlIGlmIChhcmcgPT09ICd1cGRhdGUnIHx8IGFyZyA9PT0gJy0tdXBkYXRlJykgb3B0cy5tb2RlID0gJ3VwZGF0ZSdcbiAgICBlbHNlIGlmIChhcmcgPT09ICctcScgfHwgYXJnID09PSAnLS1xdWlldCcpIG9wdHMucXVpZXQgPSB0cnVlXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLWgnIHx8IGFyZyA9PT0gJy0taGVscCcpIG9wdHMubW9kZSA9ICdoZWxwJ1xuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy12JyB8fCBhcmcgPT09ICctLXZlcnNpb24nKSBvcHRzLm1vZGUgPSAndmVyc2lvbidcbiAgICBlbHNlIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBhcmd1bWVudCBcIiR7YXJnfVwiYClcbiAgfVxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdoZWFkbGVzcycgJiYgIW9wdHMucHJvbXB0Py50cmltKCkpIHRocm93IG5ldyBFcnJvcignLXAgcmVxdWlyZXMgYSBub24tZW1wdHkgcHJvbXB0JylcbiAgcmV0dXJuIG9wdHNcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gcGFyc2VPc2MxMShyZXNwb25zZSkge1xuICBjb25zdCBtYXRjaCA9IHJlc3BvbnNlLm1hdGNoKC9cXF0xMTtyZ2I6KFswLTlhLWZdKylcXC8oWzAtOWEtZl0rKVxcLyhbMC05YS1mXSspL2kpXG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsXG4gIGNvbnN0IGNoYW5uZWwgPSAoaGV4KSA9PiBwYXJzZUludChoZXgsIDE2KSAvICgxNiAqKiBoZXgubGVuZ3RoIC0gMSlcbiAgY29uc3QgbHVtaW5hbmNlID0gMC4yMTI2ICogY2hhbm5lbChtYXRjaFsxXSkgKyAwLjcxNTIgKiBjaGFubmVsKG1hdGNoWzJdKSArIDAuMDcyMiAqIGNoYW5uZWwobWF0Y2hbM10pXG4gIHJldHVybiBsdW1pbmFuY2UgPiAwLjUgPyAnbGlnaHQnIDogJ2RhcmsnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVtZUZyb21Db2xvcmZnYmcodmFsdWUpIHtcbiAgY29uc3QgdG9rZW4gPSAodmFsdWUgfHwgJycpLnNwbGl0KCc7JykuYXQoLTEpXG4gIGlmICghL15cXGQrJC8udGVzdCh0b2tlbikpIHJldHVybiBudWxsXG4gIGNvbnN0IGJnID0gTnVtYmVyKHRva2VuKVxuICByZXR1cm4gYmcgPT09IDcgfHwgYmcgPT09IDE1ID8gJ2xpZ2h0JyA6ICdkYXJrJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0VGVybWluYWxUaGVtZSh7IHRpbWVvdXRNcyA9IDE1MCB9ID0ge30pIHtcbiAgY29uc3QgZmFsbGJhY2sgPSAoKSA9PiB0aGVtZUZyb21Db2xvcmZnYmcocHJvY2Vzcy5lbnYuQ09MT1JGR0JHKSB8fCAnZGFyaydcbiAgaWYgKCFwcm9jZXNzLnN0ZGluLmlzVFRZIHx8ICFwcm9jZXNzLnN0ZG91dC5pc1RUWSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxsYmFjaygpKVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBidWZmZXIgPSAnJ1xuICAgIGxldCBzZXR0bGVkID0gZmFsc2VcbiAgICBjb25zdCB3YXNSYXcgPSBwcm9jZXNzLnN0ZGluLmlzUmF3XG5cbiAgICAvLyBuZXZlciBwYXVzZSgpIGhlcmU6IGFuIGV4cGxpY2l0IHBhdXNlIHN0aWNrcywgYW5kIHRyZW5kJ3MgbW91bnQgb25seVxuICAgIC8vIGF0dGFjaGVzIGEgZGF0YSBsaXN0ZW5lciwgd2hpY2ggd2lsbCBub3QgdW4tcGF1c2UgYW4gZXhwbGljaXRseVxuICAgIC8vIHBhdXNlZCBzdHJlYW0gLSBpbnB1dCB3b3VsZCBiZSBmcm96ZW4gZm9yIHRoZSB3aG9sZSBzZXNzaW9uXG4gICAgY29uc3QgZmluaXNoID0gKHRoZW1lKSA9PiB7XG4gICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuXG4gICAgICBzZXR0bGVkID0gdHJ1ZVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgcHJvY2Vzcy5zdGRpbi5vZmYoJ2RhdGEnLCBvbkRhdGEpXG4gICAgICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUod2FzUmF3KVxuICAgICAgcmVzb2x2ZSh0aGVtZSlcbiAgICB9XG5cbiAgICBjb25zdCBvbkRhdGEgPSAoY2h1bmspID0+IHtcbiAgICAgIGJ1ZmZlciArPSBjaHVuay50b1N0cmluZygnbGF0aW4xJylcbiAgICAgIGNvbnN0IHRoZW1lID0gcGFyc2VPc2MxMShidWZmZXIpXG4gICAgICBpZiAodGhlbWUpIGZpbmlzaCh0aGVtZSlcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gZmluaXNoKGZhbGxiYWNrKCkpLCB0aW1lb3V0TXMpXG4gICAgcHJvY2Vzcy5zdGRpbi5zZXRSYXdNb2RlKHRydWUpXG4gICAgcHJvY2Vzcy5zdGRpbi5vbignZGF0YScsIG9uRGF0YSlcbiAgICBwcm9jZXNzLnN0ZGluLnJlc3VtZSgpXG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xceDFiXTExOz9cXHgxYlxcXFwnKVxuICB9KVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXYWtldXBNYW5hZ2VyKHsgb25GaXJlID0gKCkgPT4ge30sIG9uQ2hhbmdlID0gKCkgPT4ge30gfSA9IHt9KSB7XG4gIGNvbnN0IHdha2V1cHMgPSBuZXcgTWFwKClcbiAgbGV0IG5leHRJZCA9IDFcblxuICByZXR1cm4ge1xuICAgIHNjaGVkdWxlKGRlbGF5U2Vjb25kcywgbm90ZSkge1xuICAgICAgY29uc3Qgc2Vjb25kcyA9IE1hdGgubWF4KDUsIE1hdGgucm91bmQoZGVsYXlTZWNvbmRzKSlcbiAgICAgIGNvbnN0IGlkID0gU3RyaW5nKG5leHRJZCsrKVxuICAgICAgY29uc3QgYXQgPSBEYXRlLm5vdygpICsgc2Vjb25kcyAqIDEwMDBcbiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHdha2V1cHMuZGVsZXRlKGlkKVxuICAgICAgICBvbkNoYW5nZSgpXG4gICAgICAgIG9uRmlyZSh7IGlkLCBub3RlLCBhdCB9KVxuICAgICAgfSwgc2Vjb25kcyAqIDEwMDApXG4gICAgICB3YWtldXBzLnNldChpZCwgeyBpZCwgbm90ZSwgYXQsIHRpbWVyIH0pXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZCwgYXQsIHNlY29uZHMgfVxuICAgIH0sXG4gICAgY2FuY2VsKGlkKSB7XG4gICAgICBjb25zdCB3YWtldXAgPSB3YWtldXBzLmdldChTdHJpbmcoaWQpKVxuICAgICAgaWYgKCF3YWtldXApIHRocm93IG5ldyBFcnJvcihgbm8gcGVuZGluZyB3YWtlLXVwIHdpdGggaWQgJHtpZH1gKVxuICAgICAgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuZGVsZXRlKFN0cmluZyhpZCkpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZDogd2FrZXVwLmlkLCBjYW5jZWxsZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4ud2FrZXVwcy52YWx1ZXMoKV1cbiAgICAgICAgLm1hcCgoeyBpZCwgbm90ZSwgYXQgfSkgPT4gKHsgaWQsIG5vdGUsIGF0IH0pKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5hdCAtIGIuYXQpXG4gICAgfSxcbiAgICBwZW5kaW5nKCkge1xuICAgICAgcmV0dXJuIHdha2V1cHMuc2l6ZVxuICAgIH0sXG4gICAgY2FuY2VsQWxsKCkge1xuICAgICAgZm9yIChjb25zdCB3YWtldXAgb2Ygd2FrZXVwcy52YWx1ZXMoKSkgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuY2xlYXIoKVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlYWRGaWxlU3luYywgc3RhdFN5bmMsIHdhdGNoIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGRpcm5hbWUsIGlzQWJzb2x1dGUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IERFQk9VTkNFX01TID0gNTAwXG5jb25zdCBQT0xMX01TID0gMTUwMDBcbmNvbnN0IEdJVF9USU1FT1VUX01TID0gNTAwMFxuXG5mdW5jdGlvbiBmaW5kR2l0RGlyKHN0YXJ0RGlyKSB7XG4gIGxldCBkaXIgPSBzdGFydERpclxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGpvaW4oZGlyLCAnLmdpdCcpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGluZm8gPSBzdGF0U3luYyhjYW5kaWRhdGUpXG4gICAgICBpZiAoaW5mby5pc0RpcmVjdG9yeSgpKSByZXR1cm4gY2FuZGlkYXRlXG4gICAgICBjb25zdCB0ZXh0ID0gcmVhZEZpbGVTeW5jKGNhbmRpZGF0ZSwgJ3V0Zi04JylcbiAgICAgIGNvbnN0IG1hdGNoID0gdGV4dC5tYXRjaCgvXmdpdGRpcjpcXHMqKC4rPylcXHMqJC9tKVxuICAgICAgaWYgKG1hdGNoKSByZXR1cm4gaXNBYnNvbHV0ZShtYXRjaFsxXSkgPyBtYXRjaFsxXSA6IHJlc29sdmUoZGlyLCBtYXRjaFsxXSlcbiAgICB9IGNhdGNoIHt9XG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpXG4gICAgaWYgKHBhcmVudCA9PT0gZGlyKSByZXR1cm4gbnVsbFxuICAgIGRpciA9IHBhcmVudFxuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRCcmFuY2goZ2l0RGlyKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgaGVhZCA9IHJlYWRGaWxlU3luYyhqb2luKGdpdERpciwgJ0hFQUQnKSwgJ3V0Zi04JykudHJpbSgpXG4gICAgY29uc3QgcmVmID0gaGVhZC5tYXRjaCgvXnJlZjogcmVmc1xcL2hlYWRzXFwvKC4rKSQvKVxuICAgIHJldHVybiByZWYgPyByZWZbMV0gOiBoZWFkLnNsaWNlKDAsIDcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VTaG9ydHN0YXQob3V0cHV0KSB7XG4gIGNvbnN0IGFkZGVkID0gb3V0cHV0Lm1hdGNoKC8oXFxkKykgaW5zZXJ0aW9uLylcbiAgY29uc3QgcmVtb3ZlZCA9IG91dHB1dC5tYXRjaCgvKFxcZCspIGRlbGV0aW9uLylcbiAgcmV0dXJuIHtcbiAgICBhZGRlZDogYWRkZWQgPyBOdW1iZXIoYWRkZWRbMV0pIDogMCxcbiAgICByZW1vdmVkOiByZW1vdmVkID8gTnVtYmVyKHJlbW92ZWRbMV0pIDogMCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2l0U2VydmljZSh7IG9uQ2hhbmdlID0gKCkgPT4ge30gfSA9IHt9KSB7XG4gIGxldCBlbmFibGVkID0gZmFsc2VcbiAgbGV0IHJvb3QgPSBudWxsXG4gIGxldCBnaXREaXIgPSBudWxsXG4gIGxldCBlcG9jaCA9IDBcbiAgbGV0IHdhdGNoZXIgPSBudWxsXG4gIGxldCBwb2xsID0gbnVsbFxuICBsZXQgZGVib3VuY2UgPSBudWxsXG4gIGxldCBjaGlsZCA9IG51bGxcbiAgbGV0IHJlcnVuID0gZmFsc2VcbiAgbGV0IGN1cnJlbnQgPSBudWxsXG5cbiAgZnVuY3Rpb24gdGVhcmRvd24oKSB7XG4gICAgZXBvY2ggKz0gMVxuICAgIHdhdGNoZXI/LmNsb3NlKClcbiAgICB3YXRjaGVyID0gbnVsbFxuICAgIGlmIChwb2xsKSBjbGVhckludGVydmFsKHBvbGwpXG4gICAgcG9sbCA9IG51bGxcbiAgICBpZiAoZGVib3VuY2UpIGNsZWFyVGltZW91dChkZWJvdW5jZSlcbiAgICBkZWJvdW5jZSA9IG51bGxcbiAgICBjaGlsZD8ua2lsbCgnU0lHS0lMTCcpXG4gICAgY2hpbGQgPSBudWxsXG4gICAgcmVydW4gPSBmYWxzZVxuICAgIGlmIChjdXJyZW50KSB7XG4gICAgICBjdXJyZW50ID0gbnVsbFxuICAgICAgb25DaGFuZ2UoKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNldHVwKCkge1xuICAgIHRlYXJkb3duKClcbiAgICBpZiAoIWVuYWJsZWQgfHwgIXJvb3QpIHJldHVyblxuICAgIGdpdERpciA9IGZpbmRHaXREaXIocm9vdClcbiAgICBpZiAoIWdpdERpcikgcmV0dXJuXG4gICAgY29uc3Qgc3RhcnRlZCA9IGVwb2NoXG4gICAgdHJ5IHtcbiAgICAgIHdhdGNoZXIgPSB3YXRjaChnaXREaXIsICgpID0+IHtcbiAgICAgICAgaWYgKGVwb2NoID09PSBzdGFydGVkKSByZWZyZXNoKClcbiAgICAgIH0pXG4gICAgICB3YXRjaGVyLm9uKCdlcnJvcicsICgpID0+IHt9KVxuICAgIH0gY2F0Y2gge1xuICAgICAgd2F0Y2hlciA9IG51bGxcbiAgICB9XG4gICAgcG9sbCA9IHNldEludGVydmFsKHJ1biwgUE9MTF9NUylcbiAgICBwb2xsLnVucmVmPy4oKVxuICAgIHJ1bigpXG4gIH1cblxuICBmdW5jdGlvbiByZWZyZXNoKCkge1xuICAgIGlmICghZW5hYmxlZCB8fCAhZ2l0RGlyIHx8IGRlYm91bmNlKSByZXR1cm5cbiAgICBkZWJvdW5jZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZGVib3VuY2UgPSBudWxsXG4gICAgICBydW4oKVxuICAgIH0sIERFQk9VTkNFX01TKVxuICAgIGRlYm91bmNlLnVucmVmPy4oKVxuICB9XG5cbiAgZnVuY3Rpb24gcnVuKCkge1xuICAgIGlmICghZW5hYmxlZCB8fCAhZ2l0RGlyIHx8ICFyb290KSByZXR1cm5cbiAgICBpZiAoY2hpbGQpIHtcbiAgICAgIHJlcnVuID0gdHJ1ZVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0ZWQgPSBlcG9jaFxuICAgIGNvbnN0IGJyYW5jaCA9IHJlYWRCcmFuY2goZ2l0RGlyKVxuICAgIGNvbnN0IHByb2MgPSBzcGF3bignZ2l0JywgWyctLW5vLW9wdGlvbmFsLWxvY2tzJywgJ2RpZmYnLCAnSEVBRCcsICctLXNob3J0c3RhdCddLCB7XG4gICAgICBjd2Q6IHJvb3QsXG4gICAgICBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdpZ25vcmUnXSxcbiAgICB9KVxuICAgIGNoaWxkID0gcHJvY1xuICAgIGxldCBvdXRwdXQgPSAnJ1xuICAgIHByb2Muc3Rkb3V0Lm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgICBvdXRwdXQgKz0gY2h1bmtcbiAgICB9KVxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHByb2Mua2lsbCgnU0lHS0lMTCcpLCBHSVRfVElNRU9VVF9NUylcbiAgICB0aW1lb3V0LnVucmVmPy4oKVxuICAgIGxldCBmaW5pc2hlZCA9IGZhbHNlXG4gICAgY29uc3QgZG9uZSA9IChjb2RlKSA9PiB7XG4gICAgICBpZiAoZmluaXNoZWQpIHJldHVyblxuICAgICAgZmluaXNoZWQgPSB0cnVlXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dClcbiAgICAgIGlmIChjaGlsZCA9PT0gcHJvYykgY2hpbGQgPSBudWxsXG4gICAgICBpZiAoZXBvY2ggIT09IHN0YXJ0ZWQpIHJldHVyblxuICAgICAgY29uc3Qgc3RhdHMgPSBjb2RlID09PSAwID8gcGFyc2VTaG9ydHN0YXQob3V0cHV0KSA6IHsgYWRkZWQ6IDAsIHJlbW92ZWQ6IDAgfVxuICAgICAgY29uc3QgbmV4dCA9IGJyYW5jaCA/IHsgYnJhbmNoLCAuLi5zdGF0cyB9IDogbnVsbFxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KG5leHQpICE9PSBKU09OLnN0cmluZ2lmeShjdXJyZW50KSkge1xuICAgICAgICBjdXJyZW50ID0gbmV4dFxuICAgICAgICBvbkNoYW5nZSgpXG4gICAgICB9XG4gICAgICBpZiAocmVydW4pIHtcbiAgICAgICAgcmVydW4gPSBmYWxzZVxuICAgICAgICByZWZyZXNoKClcbiAgICAgIH1cbiAgICB9XG4gICAgcHJvYy5vbignY2xvc2UnLCBkb25lKVxuICAgIHByb2Mub24oJ2Vycm9yJywgKCkgPT4gZG9uZSgtMSkpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXR1czogKCkgPT4gY3VycmVudCxcbiAgICByZWZyZXNoLFxuICAgIHJldGFyZ2V0KG5leHRSb290KSB7XG4gICAgICByb290ID0gbmV4dFJvb3RcbiAgICAgIHNldHVwKClcbiAgICB9LFxuICAgIHNldEVuYWJsZWQodmFsdWUpIHtcbiAgICAgIGVuYWJsZWQgPSB2YWx1ZSA9PT0gdHJ1ZVxuICAgICAgc2V0dXAoKVxuICAgIH0sXG4gICAgZGlzcG9zZTogdGVhcmRvd24sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBjcmVhdGVTaWduYWwsIE1lbnUsIFByb2dyZXNzQmFyLCBTY3JvbGxCb3gsIFNoaW1tZXIsIFNwaW5uZXIsIFRleHRBcmVhLCB1c2VGb2N1cywgdXNlRm9jdXNUcmFwLCB1c2VGcmFtZVN0YXRzLCB1c2VJbnB1dCwgdXNlTGF5b3V0LCB1c2VNb3VzZSwgdXNlU2VsZWN0aW9uLCB1c2VUb2FzdCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IG1ha2VFdmVudCB9IGZyb20gJy4uL2NvcmUvZXZlbnRzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2Vzc2lvbiwgb3BlblNlc3Npb24sIGxvYWRTZXNzaW9uLCBsaXN0U2Vzc2lvbnMsIGRlbGV0ZVNlc3Npb24sIGRlbGV0ZVByb2plY3REYXRhIH0gZnJvbSAnLi4vY29yZS9zZXNzaW9uLmpzJ1xuaW1wb3J0IHsgZGVyaXZlU3RhdGUsIHVzZXJFbnRyaWVzLCByZXdpbmRTdGF0cyB9IGZyb20gJy4uL2NvcmUvZGVyaXZlLmpzJ1xuaW1wb3J0IHsgYXBwZW5kUHJvbXB0LCBsb2FkUHJvamVjdFByb21wdHMsIGxvYWRHbG9iYWxQcm9tcHRzIH0gZnJvbSAnLi4vY29yZS9oaXN0b3J5LmpzJ1xuaW1wb3J0IHsgcnVuVHVybiwgc3VtbWFyaXplVGV4dCwgY29tcGFjdEhpc3RvcnksIGNvbXBhY3RQcm9ncmVzcyB9IGZyb20gJy4uL2NvcmUvYWdlbnQuanMnXG5pbXBvcnQgeyBjcmVhdGVBZ2VudE1hbmFnZXIgfSBmcm9tICcuLi9jb3JlL2FnZW50cy5qcydcbmltcG9ydCB7IGNvbXBhY3Rpb25Qcm9tcHQsIGZvcm1hdENvbXBhY3RTdW1tYXJ5LCBzdW1tYXJ5U2VjdGlvbnMgfSBmcm9tICcuLi9jb3JlL2NvbXBhY3Rpb24uanMnXG5pbXBvcnQgeyBjcmVhdGVUb29sc2V0IH0gZnJvbSAnLi4vY29yZS90b29scy9pbmRleC5qcydcbmltcG9ydCB7IHNjYW5Vc2VyVG9vbHMgfSBmcm9tICcuLi9jb3JlL3VzZXItdG9vbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVTa2lsbEluZGV4IH0gZnJvbSAnLi4vY29yZS9za2lsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVDb21tYW5kSW5kZXggfSBmcm9tICcuLi9jb3JlL2NvbW1hbmRzLmpzJ1xuaW1wb3J0IHsgcmV2ZXJ0RWRpdHMsIHJlYXBwbHlFZGl0cyB9IGZyb20gJy4uL2NvcmUvcmV3aW5kLmpzJ1xuaW1wb3J0IHsgYnVpbGRTeXN0ZW1Qcm9tcHQgfSBmcm9tICcuLi9jb3JlL3N5c3RlbS1wcm9tcHQuanMnXG5pbXBvcnQgeyBjaGVja0ZvclVwZGF0ZSwgZmV0Y2hMYXRlc3RWZXJzaW9uLCBuZXdlclZlcnNpb24sIGlzRGV2SW5zdGFsbCwgcnVuVXBkYXRlIH0gZnJvbSAnLi4vY29yZS91cGRhdGUuanMnXG5pbXBvcnQgeyBtZW1vcnlJbmRleCB9IGZyb20gJy4uL2NvcmUvbWVtb3J5LmpzJ1xuaW1wb3J0IHsgdHJhbnNjcmlwdFRvTWFya2Rvd24gfSBmcm9tICcuLi9jb3JlL2V4cG9ydC5qcydcbmltcG9ydCB7IGZpbmRNb2RlbCwgZXN0aW1hdGVDb3N0IH0gZnJvbSAnLi4vY29yZS9tb2RlbHMuanMnXG5pbXBvcnQgeyBhZGhvY01vZGVsIH0gZnJvbSAnLi4vY29yZS9jYXRhbG9nLmpzJ1xuaW1wb3J0IHsgd3JpdGVDb25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcydcbmltcG9ydCB7IGNvbm5lY3RPcGVuQUksIG9wZW5haUNyZWRlbnRpYWxzLCBvcGVuYWlTdGF0dXMsIGRpc2Nvbm5lY3RPcGVuQUkgfSBmcm9tICcuLi9jb3JlL29wZW5haS1hdXRoLmpzJ1xuaW1wb3J0IHsgYWdlbnRTY3JhdGNoRGlyLCBlbnN1cmVEaXIgfSBmcm9tICcuLi9jb3JlL3BhdGhzLmpzJ1xuaW1wb3J0IHsgbG9hZENvZGV4TW9kZWxzIH0gZnJvbSAnLi4vY29yZS9jb2RleC1tb2RlbHMuanMnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi9mdXp6eS5qcydcbmltcG9ydCB7IGNvbXBsZXRpb25Db250ZXh0LCBhcHBseUNvbXBsZXRpb24gfSBmcm9tICcuL2NvbXBsZXRpb24uanMnXG5pbXBvcnQgeyBleHRyYWN0SW1hZ2VQYXRocywgbWVkaWFUeXBlRm9yLCBmaW5hbGl6ZVVzZXJDb250ZW50LCBwbGFjZWhvbGRlcml6ZUltYWdlUGF0aHMsIGlucHV0VGV4dEZyb21Db250ZW50IH0gZnJvbSAnLi9hdHRhY2htZW50cy5qcydcbmltcG9ydCB7IGxpc3RGaWxlcyB9IGZyb20gJy4vZmlsZXMuanMnXG5pbXBvcnQgeyBoaWdobGlnaHRWZXJzaW9uIH0gZnJvbSAnLi9oaWdobGlnaHQuanMnXG5pbXBvcnQgeyBjb21wYWN0TnVtYmVyIH0gZnJvbSAnLi9mb3JtYXQuanMnXG5pbXBvcnQgeyBBbmltYXRlZFZhbHVlIH0gZnJvbSAnLi9hbmltYXRlZC12YWx1ZS5qc3gnXG5pbXBvcnQgeyBNZXNzYWdlLCB1aVRpdGxlIH0gZnJvbSAnLi90cmFuc2NyaXB0LmpzeCdcbmltcG9ydCB7IFF1ZXN0aW9uRm9ybSB9IGZyb20gJy4vcXVlc3Rpb24tZm9ybS5qc3gnXG5pbXBvcnQgeyBFbXB0eVN0YXRlIH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS5qc3gnXG5pbXBvcnQgeyBIZWxwIH0gZnJvbSAnLi9oZWxwLmpzeCdcbmltcG9ydCB7IE1vZGVsUGFuZWwsIEVmZm9ydFBhbmVsLCBUaGVtZVBhbmVsLCBDb25maWdQYW5lbCwgQ29uZmlybVBhbmVsLCBIaXN0b3J5UGFuZWwsIFJld2luZFBpY2tQYW5lbCwgUmV3aW5kQWN0aW9uUGFuZWwsIFJlc3VtZVBhbmVsLCBQcm9qZWN0UGFuZWwsIE1jcFBhbmVsLCBNZW1vcnlQYW5lbCwgSW5mb0xpc3RQYW5lbCwgV2FrZXVwc1BhbmVsLCBDb25uZWN0UGFuZWwsIHRpbWVBZ28gfSBmcm9tICcuL3BhbmVscy5qc3gnXG5pbXBvcnQgeyBhY2NlbnQsIHNldEFjY2VudCwgc2V0UGFsZXR0ZSwgcGFsZXR0ZU5hbWUsIHBhbGV0dGVMaXN0LCBERUZBVUxUX0FDQ0VOVCwgRkcsIEZHX1NPRlQsIE1VVEVELCBGQUlOVCwgUEFORUxfQkcsIFJFRCwgR1JFRU4sIEhJR0hMSUdIVCB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IEVGRk9SVF9MRVZFTFMgPSBbXG4gIHsga2V5OiBudWxsLCBkZXNjOiAnbGV0IHRoZSBwcm92aWRlciBkZWNpZGUgaG93IG11Y2ggdG8gdGhpbmsnIH0sXG4gIHsga2V5OiAnbG93JywgZGVzYzogJ3F1aWNrIGFuc3dlcnMsIG1pbmltYWwgdGhpbmtpbmcnIH0sXG4gIHsga2V5OiAnbWVkaXVtJywgZGVzYzogJ21vZGVyYXRlIHRoaW5raW5nIGJ1ZGdldCcgfSxcbiAgeyBrZXk6ICdoaWdoJywgZGVzYzogJ2dlbmVyb3VzIHRoaW5raW5nIGJ1ZGdldCcgfSxcbiAgeyBrZXk6ICdtYXgnLCBkZXNjOiAnbWF4aW11bSB0aGlua2luZyBidWRnZXQnIH0sXG5dXG5cbmNvbnN0IENPTU1BTkRTID0gW1xuICB7IG5hbWU6ICdtb2RlbCcsIGRlc2M6ICdTd2l0Y2ggdGhlIGFjdGl2ZSBtb2RlbCBmb3IgdGhpcyBzZXNzaW9uJyB9LFxuICB7IG5hbWU6ICdjb25uZWN0JywgZGVzYzogJ1NpZ24gaW4gd2l0aCBDaGF0R1BUIHRvIHVzZSBhIENvZGV4IHN1YnNjcmlwdGlvbicgfSxcbiAgeyBuYW1lOiAnZWZmb3J0JywgZGVzYzogJ1NldCB0aGUgdGhpbmtpbmcgZWZmb3J0IGZvciB0aGlzIHNlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3Jlc3VtZScsIGRlc2M6ICdQaWNrIHVwIGEgcHJldmlvdXMgc2Vzc2lvbiB3aGVyZSB5b3UgbGVmdCBvZmYnIH0sXG4gIHsgbmFtZTogJ25ldycsIGRlc2M6ICdTdGFydCBhIG5ldyBzZXNzaW9uIGluIHRoaXMgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAnZGVsZXRlJywgZGVzYzogJ1Blcm1hbmVudGx5IGRlbGV0ZSB0aGUgY3VycmVudCBzZXNzaW9uIGFuZCBzdGFydCBmcmVzaCcgfSxcbiAgeyBuYW1lOiAncHJvamVjdCcsIGRlc2M6ICdTd2l0Y2ggcHJvamVjdHM6IGp1bXAgdG8gYW5vdGhlciBwcm9qZWN0LCBzYW1lIGFzIGN0cmwrcCcgfSxcbiAgeyBuYW1lOiAnY3dkJywgZGVzYzogJ1Nob3cgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYW5kIHByb2plY3Qgcm9vdCcgfSxcbiAgeyBuYW1lOiAnc2tpbGxzJywgZGVzYzogJ0xpc3QgZXZlcnkgc2tpbGw6IGJ1aWx0aW4sIGdsb2JhbCwgYW5kIHByb2plY3QnIH0sXG4gIHsgbmFtZTogJ2NvbW1hbmRzJywgZGVzYzogJ0xpc3QgZXZlcnkgY29tbWFuZDogYnVpbHRpbiwgZ2xvYmFsLCBhbmQgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAndG9vbHMnLCBkZXNjOiAnTGlzdCBidWlsdGluIGFuZCB1c2VyLWRlZmluZWQgdG9vbHM7IE1DUCB0b29scyBsaXZlIGluIC9tY3AnIH0sXG4gIHsgbmFtZTogJ3Jld2luZCcsIGRlc2M6ICdSZXN0b3JlIHRoZSBjb252ZXJzYXRpb24gdG8gYSBwcmV2aW91cyBtZXNzYWdlJyB9LFxuICB7IG5hbWU6ICdoaXN0b3J5JywgZGVzYzogJ1NlYXJjaCBwcm9tcHRzIHlvdSBwcmV2aW91c2x5IHNlbnQnIH0sXG4gIHsgbmFtZTogJ3JlbmFtZScsIGRlc2M6ICdOYW1lIHRoaXMgc2Vzc2lvbjsgb21pdCB0aGUgbmFtZSB0byByZXN0b3JlIGl0cyBhdXRvbWF0aWMgdGl0bGUnIH0sXG4gIHsgbmFtZTogJ2NvbG9yJywgZGVzYzogJ0NvbG9yIHRoaXMgc2Vzc2lvbjogL2NvbG9yIDxuYW1lIG9yICNoZXg+JyB9LFxuICB7IG5hbWU6ICd0aGVtZScsIGRlc2M6ICdQaWNrIGEgY29sb3IgdGhlbWU7IC90aGVtZSA8bmFtZT4gYXBwbGllcyBvbmUgZGlyZWN0bHknIH0sXG4gIHsgbmFtZTogJ2NvbmZpZycsIGRlc2M6ICdDb25maWd1cmUgcGljbyBkaXNwbGF5IGFuZCBiZWhhdmlvcicgfSxcbiAgeyBuYW1lOiAnbWNwJywgZGVzYzogJ01hbmFnZSBNQ1Agc2VydmVyczogYWRkLCB0b2dnbGUsIHJlY29ubmVjdCcgfSxcbiAgeyBuYW1lOiAnZGVlcC1yZXNlYXJjaCcsIGRlc2M6ICdSZXNlYXJjaCB3aXRoIHBhcmFsbGVsIGFnZW50czogL2RlZXAtcmVzZWFyY2ggWy0tYWdlbnRzIE5dIDxxdWVzdGlvbj4nIH0sXG4gIHsgbmFtZTogJ3dha2V1cHMnLCBkZXNjOiAnVmlldyBhbmQgY2FuY2VsIHNjaGVkdWxlZCB3YWtlLXVwcycgfSxcbiAgeyBuYW1lOiAnbWVtb3J5JywgZGVzYzogJ0Jyb3dzZSBhbmQgbWFuYWdlIHNhdmVkIG1lbW9yaWVzOiBwcm9qZWN0IGFuZCBnbG9iYWwnIH0sXG4gIHsgbmFtZTogJ2NvbXBhY3QnLCBkZXNjOiAnU3VtbWFyaXplIHRoZSBjb252ZXJzYXRpb24gdG8gZnJlZSB0aGUgY29udGV4dCB3aW5kb3cnIH0sXG4gIHsgbmFtZTogJ2NsZWFyJywgZGVzYzogJ0NsZWFyIHRoZSBjb252ZXJzYXRpb24gYW5kIGZyZWUgdGhlIGNvbnRleHQgd2luZG93JyB9LFxuICB7IG5hbWU6ICdjb3N0JywgZGVzYzogJ1Nob3cgdG9rZW4gdXNhZ2UgYW5kIGVzdGltYXRlZCBjb3N0IHNvIGZhcicgfSxcbiAgeyBuYW1lOiAnY29udGV4dCcsIGRlc2M6IFwiU2hvdyB3aGF0J3MgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBhbmQgaG93IGJpZyBlYWNoIHBpZWNlIGlzXCIgfSxcbiAgeyBuYW1lOiAnZXhwb3J0JywgZGVzYzogJ1NhdmUgdGhlIGN1cnJlbnQgY29udmVyc2F0aW9uIHRvIGEgbWFya2Rvd24gZmlsZScgfSxcbiAgeyBuYW1lOiAndXBkYXRlJywgZGVzYzogJ1VwZGF0ZSBwaWNvIHRvIHRoZSBsYXRlc3QgcmVsZWFzZSBmcm9tIG5wbScgfSxcbiAgeyBuYW1lOiAnaGVscCcsIGRlc2M6ICdMaXN0IGV2ZXJ5IGNvbW1hbmQgYW5kIHdoYXQgaXQgZG9lcycgfSxcbl1cblxuY29uc3QgU0VTU0lPTl9DT0xPUlMgPSB7XG4gIHJlZDogJyNmODcxNzEnLFxuICBvcmFuZ2U6ICcjZmI5MjNjJyxcbiAgeWVsbG93OiAnI2ZhY2MxNScsXG4gIGdyZWVuOiAnIzZCRTc5NScsXG4gIHRlYWw6ICcjMmRkNGJmJyxcbiAgY3lhbjogJyMyMmQzZWUnLFxuICBibHVlOiAnIzYwYTVmYScsXG4gIHB1cnBsZTogJyNhNzhiZmEnLFxuICBwaW5rOiAnI2Y0NzJiNicsXG4gIGdyYXk6ICcjOWNhM2FmJyxcbn1cblxuY29uc3QgSElTVE9SWV9TQ09QRVMgPSBbJ3Nlc3Npb24nLCAncHJvamVjdCcsICdldmVyeXdoZXJlJ11cbmNvbnN0IE1FTU9SWV9TQ09QRVMgPSBbJ2FsbCcsICdwcm9qZWN0JywgJ2dsb2JhbCddXG5jb25zdCBTSEVMTF9TVFJJUF9NQVggPSA1XG5jb25zdCBBR0VOVF9TVFJJUF9NQVggPSA1XG5jb25zdCBTVFJJUF9TQ1JPTExPRkYgPSAxXG5cbmZ1bmN0aW9uIHN0cmlwV2luZG93U3RhcnQoY3VycmVudCwgdGFyZ2V0LCBsZW5ndGgsIHNpemUpIHtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgoMCwgbGVuZ3RoIC0gc2l6ZSlcbiAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihjdXJyZW50LCBtYXgpKVxuICBpZiAodGFyZ2V0IDwgMCkgcmV0dXJuIHN0YXJ0XG4gIGlmICh0YXJnZXQgPCBzdGFydCArIFNUUklQX1NDUk9MTE9GRikgcmV0dXJuIE1hdGgubWF4KDAsIHRhcmdldCAtIFNUUklQX1NDUk9MTE9GRilcbiAgaWYgKHRhcmdldCA+PSBzdGFydCArIHNpemUgLSBTVFJJUF9TQ1JPTExPRkYpIHJldHVybiBNYXRoLm1pbihtYXgsIHRhcmdldCAtIHNpemUgKyBTVFJJUF9TQ1JPTExPRkYgKyAxKVxuICByZXR1cm4gc3RhcnRcbn1cblxuZnVuY3Rpb24gYWdlbnRUcmFuc2NyaXB0KGFnZW50KSB7XG4gIGlmICghYWdlbnQpIHJldHVybiBbXVxuICBjb25zdCBpdGVtcyA9IFt7IGtpbmQ6ICd1c2VyJywgdGV4dDogYWdlbnQucHJvbXB0IH1dXG4gIGNvbnN0IHRvb2xzID0gbmV3IE1hcCgpXG4gIGxldCByZXNwb25zZSA9ICcnXG5cbiAgZm9yIChjb25zdCBldmVudCBvZiBhZ2VudC5ldmVudHMpIHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbnRlbnQnKSByZXNwb25zZSArPSBldmVudC5jb250ZW50XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2V4ZWN1dGluZycpIHtcbiAgICAgIGNvbnN0IGNhbGwgPSBldmVudC5jYWxsIHx8IHt9XG4gICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICBraW5kOiAndG9vbCcsXG4gICAgICAgIGNhbGxJZDogY2FsbC5pZCxcbiAgICAgICAgbmFtZTogY2FsbC5mdW5jdGlvbj8ubmFtZSB8fCAndG9vbCcsXG4gICAgICAgIGFyZ3M6IGNhbGwuZnVuY3Rpb24/LmFyZ3VtZW50cyB8fCB7fSxcbiAgICAgICAgdGl0bGU6IGNhbGwuZnVuY3Rpb24/Lm5hbWUgfHwgJ3Rvb2wnLFxuICAgICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgICAgc3RhcnRlZEF0OiBldmVudC5hdCB8fCBhZ2VudC51cGRhdGVkQXQsXG4gICAgICB9XG4gICAgICB0b29scy5zZXQoY2FsbC5pZCwgaXRlbSlcbiAgICAgIGl0ZW1zLnB1c2goaXRlbSlcbiAgICB9XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJyB8fCBldmVudC50eXBlID09PSAndG9vbF9lcnJvcicpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0b29scy5nZXQoZXZlbnQuY2FsbD8uaWQpXG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBpdGVtLnN0YXR1cyA9IGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJyA/ICdlcnJvcicgOiAnZG9uZSdcbiAgICAgICAgaXRlbS5lcnJvciA9IGV2ZW50LmVycm9yID8gU3RyaW5nKGV2ZW50LmVycm9yKSA6IG51bGxcbiAgICAgICAgaXRlbS5mdWxsT3V0cHV0ID0gZXZlbnQucmVzdWx0ID09PSB1bmRlZmluZWQgPyBudWxsIDogdHlwZW9mIGV2ZW50LnJlc3VsdCA9PT0gJ3N0cmluZycgPyBldmVudC5yZXN1bHQgOiBKU09OLnN0cmluZ2lmeShldmVudC5yZXN1bHQsIG51bGwsIDIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgdGV4dCA9IGFnZW50LnJlc3VsdCB8fCByZXNwb25zZVxuICBpZiAodGV4dCkgaXRlbXMucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0LCBpbnRlcnJ1cHRlZDogYWdlbnQuc3RhdHVzID09PSAnY2FuY2VsbGVkJyB9KVxuICBlbHNlIGlmIChhZ2VudC5lcnJvcikgaXRlbXMucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBhZ2VudC5lcnJvciwgaW50ZXJydXB0ZWQ6IHRydWUgfSlcbiAgcmV0dXJuIGl0ZW1zXG59XG5cbmZ1bmN0aW9uIGFnZW50RWxhcHNlZChhZ2VudCwgbm93ID0gRGF0ZS5ub3coKSkge1xuICBpZiAoIWFnZW50LnN0YXJ0ZWRBdCkgcmV0dXJuICd3YWl0aW5nJ1xuICBjb25zdCBzZWNvbmRzID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcigoKGFnZW50LmVuZGVkQXQgfHwgbm93KSAtIGFnZW50LnN0YXJ0ZWRBdCkgLyAxMDAwKSlcbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKVxuICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IobWludXRlcyAvIDYwKVxuICBpZiAoaG91cnMpIHJldHVybiBgJHtob3Vyc31oICR7bWludXRlcyAlIDYwfW1gXG4gIGlmIChtaW51dGVzKSByZXR1cm4gYCR7bWludXRlc31tICR7c2Vjb25kcyAlIDYwfXNgXG4gIHJldHVybiBgJHtzZWNvbmRzfXNgXG59XG5cbmZ1bmN0aW9uIGFnZW50U3RhdHVzKGFnZW50KSB7XG4gIGlmIChhZ2VudC5zdGF0dXMgPT09ICdydW5uaW5nJykgcmV0dXJuIHsgaWNvbjogJycsIGxhYmVsOiAnJywgY29sb3I6IGFjY2VudCgpIH1cbiAgaWYgKGFnZW50LnN0YXR1cyA9PT0gJ3F1ZXVlZCcpIHJldHVybiB7IGljb246ICdcdTI1Q0MnLCBsYWJlbDogJ3F1ZXVlZCcsIGNvbG9yOiBNVVRFRCB9XG4gIGlmIChhZ2VudC5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKSByZXR1cm4geyBpY29uOiAnXHUyNUNGJywgbGFiZWw6ICcnLCBjb2xvcjogR1JFRU4gfVxuICBpZiAoYWdlbnQuc3RhdHVzID09PSAnZmFpbGVkJykgcmV0dXJuIHsgaWNvbjogJ1x1MDBENycsIGxhYmVsOiAnZmFpbGVkJywgY29sb3I6IFJFRCB9XG4gIHJldHVybiB7IGljb246ICdcdTI1QTAnLCBsYWJlbDogJ2NhbmNlbGxlZCcsIGNvbG9yOiBNVVRFRCB9XG59XG5cbmZ1bmN0aW9uIEFnZW50U3RyaXBSb3coeyBzZWxlY3RlZCwgZm9jdXNlZCwgY2hpbGRyZW4sIG9uUHJlc3MgfSkge1xuICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXQoKVxuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIHVzZU1vdXNlKChldmVudCkgPT4ge1xuICAgIGNvbnN0IGluc2lkZSA9IGV2ZW50LnggPj0gbGF5b3V0LnggJiYgZXZlbnQueCA8IGxheW91dC54ICsgbGF5b3V0LndpZHRoICYmIGV2ZW50LnkgPj0gbGF5b3V0LnkgJiYgZXZlbnQueSA8IGxheW91dC55ICsgbGF5b3V0LmhlaWdodFxuICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdtb3ZlJykgc2V0SG92ZXJlZChpbnNpZGUpXG4gICAgaWYgKGluc2lkZSAmJiBldmVudC5hY3Rpb24gPT09ICdwcmVzcycgJiYgZXZlbnQuYnV0dG9uID09PSAnbGVmdCcpIHtcbiAgICAgIG9uUHJlc3MoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IGZvY3VzZWQgPyBhY2NlbnQoKSA6IG51bGwsIGNvbG9yOiBmb2N1c2VkID8gJ2JsYWNrJyA6IGhvdmVyZWQoKSA/IEZHX1NPRlQgOiBNVVRFRCB9fT5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBmb2N1c2VkID8gJ2JsYWNrJyA6IHNlbGVjdGVkID8gYWNjZW50KCkgOiBNVVRFRCwgYm9sZDogc2VsZWN0ZWQgfX0+e3NlbGVjdGVkID8gJ1x1Mjc2RiAnIDogJyAgJ308L3RleHQ+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9ib3g+XG4gIClcbn1cblxuLy8gb25seSB0aGUgbmV3ZXN0IHNsaWNlIG9mIGEgbG9uZyB0cmFuc2NyaXB0IHJlbmRlcnM7IG9sZGVyIGl0ZW1zIGxvYWQgaW5cbi8vIGJhdGNoZXMgd2hlbiB0aGUgdXNlciBzY3JvbGxzIHRvIHRoZSB0b3AuIHJlbmRlciBjb3N0IGlzIHBlci1pdGVtLCBzbyB0aGlzXG4vLyBrZWVwcyBkYXktbG9uZyBzZXNzaW9ucyBhcyBmYXN0IGFzIGZyZXNoIG9uZXNcbmNvbnN0IEhJU1RPUllfV0lORE9XID0gNTBcbmNvbnN0IFJFU1VNRV9TQ09QRVMgPSBbJ3Byb2plY3QnLCAnZXZlcnl3aGVyZSddXG5cbmZ1bmN0aW9uIGNvbXBhY3RUcmFuc2NyaXB0UnVucyhpdGVtcywgYWN0aXZlID0gZmFsc2UpIHtcbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7KSB7XG4gICAgaWYgKGl0ZW1zW2ldLmtpbmQgPT09ICd0b29sJykge1xuICAgICAgbGV0IGVuZCA9IGkgKyAxXG4gICAgICB3aGlsZSAoZW5kIDwgaXRlbXMubGVuZ3RoICYmIGl0ZW1zW2VuZF0ua2luZCA9PT0gJ3Rvb2wnKSBlbmQrK1xuICAgICAgY29uc3QgcnVuID0gaXRlbXMuc2xpY2UoaSwgZW5kKVxuICAgICAgcmVzdWx0LnB1c2gocnVuLmxlbmd0aCA9PT0gMSA/IHJ1blswXSA6IHsga2luZDogJ3Rvb2wtZ3JvdXAnLCB0b29sczogcnVuLCBhY3RpdmU6IGFjdGl2ZSAmJiBlbmQgPT09IGl0ZW1zLmxlbmd0aCB9KVxuICAgICAgaSA9IGVuZFxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKGl0ZW1zW2ldLmtpbmQgPT09ICdub3RpY2UnICYmIGl0ZW1zW2ldLmFnZW50Q29tcGxldGlvbikge1xuICAgICAgbGV0IGVuZCA9IGkgKyAxXG4gICAgICB3aGlsZSAoZW5kIDwgaXRlbXMubGVuZ3RoICYmIGl0ZW1zW2VuZF0ua2luZCA9PT0gJ25vdGljZScgJiYgaXRlbXNbZW5kXS5hZ2VudENvbXBsZXRpb24pIGVuZCsrXG4gICAgICBjb25zdCBydW4gPSBpdGVtcy5zbGljZShpLCBlbmQpXG4gICAgICByZXN1bHQucHVzaChydW4ubGVuZ3RoID09PSAxID8gcnVuWzBdIDogeyBraW5kOiAnYWdlbnQtbm90aWNlLWdyb3VwJywgbm90aWNlczogcnVuIH0pXG4gICAgICBpID0gZW5kXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICByZXN1bHQucHVzaChpdGVtc1tpKytdKVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFwcCh7IGJvb3QgfSkge1xuICBjb25zdCB7IGN3ZCwgcm9vdCwgdmVyc2lvbiwgbW9kZWxzLCBza2lsbHMsIG1jcCwgdHJhY2tlciwgc3RhcnR1cENvbnRleHQgfSA9IGJvb3RcblxuICBjb25zdCBbZGVyaXZlZCwgc2V0RGVyaXZlZF0gPSBjcmVhdGVTaWduYWwoZGVyaXZlU3RhdGUoW10pKVxuICBjb25zdCBbb3ZlcmxheSwgc2V0T3ZlcmxheV0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtzdHJlYW1pbmcsIHNldFN0cmVhbWluZ10gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3R1cm5QaGFzZSwgc2V0VHVyblBoYXNlXSA9IGNyZWF0ZVNpZ25hbCgnaWRsZScpXG4gIGNvbnN0IFtidXN5LCBzZXRCdXN5XSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2NvbXBhY3RpbmcsIHNldENvbXBhY3RpbmddID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbY29tcGFjdFN0YXR1cywgc2V0Q29tcGFjdFN0YXR1c10gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3N0YXJ0ZWRBdCwgc2V0U3RhcnRlZEF0XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbaW5wdXQsIHNldElucHV0XSA9IGNyZWF0ZVNpZ25hbCgnJylcbiAgY29uc3QgW21vZGVsLCBzZXRNb2RlbF0gPSBjcmVhdGVTaWduYWwoYm9vdC5pbml0aWFsTW9kZWwpXG4gIGNvbnN0IFtkZWZhdWx0TW9kZWwsIHNldERlZmF1bHRNb2RlbF0gPSBjcmVhdGVTaWduYWwoYm9vdC5pbml0aWFsTW9kZWwpXG4gIGNvbnN0IFtlZmZvcnQsIHNldEVmZm9ydF0gPSBjcmVhdGVTaWduYWwoYm9vdC5pbml0aWFsRWZmb3J0KVxuICBjb25zdCBbZGVmYXVsdEVmZm9ydCwgc2V0RGVmYXVsdEVmZm9ydF0gPSBjcmVhdGVTaWduYWwoYm9vdC5pbml0aWFsRWZmb3J0KVxuICBjb25zdCBbc2hvd0VmZm9ydFBhbmVsLCBzZXRTaG93RWZmb3J0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd1RoZW1lUGFuZWwsIHNldFNob3dUaGVtZVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dDb25maWdQYW5lbCwgc2V0U2hvd0NvbmZpZ1BhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dEZWxldGVDb25maXJtLCBzZXRTaG93RGVsZXRlQ29uZmlybV0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjbG91ZHMsIHNldENsb3Vkc10gPSBjcmVhdGVTaWduYWwoYm9vdC5jbG91ZHMpXG4gIGNvbnN0IFtjb21wYWN0VG9vbEhpc3RvcnksIHNldENvbXBhY3RUb29sSGlzdG9yeV0gPSBjcmVhdGVTaWduYWwoYm9vdC5jb21wYWN0VG9vbEhpc3RvcnkpXG4gIGNvbnN0IFtnaXRGb290ZXIsIHNldEdpdEZvb3Rlcl0gPSBjcmVhdGVTaWduYWwoYm9vdC5naXRGb290ZXIpXG4gIGNvbnN0IFtyZXNlYXJjaEFnZW50TGltaXQsIHNldFJlc2VhcmNoQWdlbnRMaW1pdF0gPSBjcmVhdGVTaWduYWwoYm9vdC5yZXNlYXJjaEFnZW50TGltaXQpXG4gIGNvbnN0IFtxdWVzdGlvblJlcXVlc3QsIHNldFF1ZXN0aW9uUmVxdWVzdF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3Nob3dNZW1vcnlQYW5lbCwgc2V0U2hvd01lbW9yeVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW21lbVNjb3BlLCBzZXRNZW1TY29wZV0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW21lbW9yeUxpc3QsIHNldE1lbW9yeUxpc3RdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbdGhlbWVQcmVmLCBzZXRUaGVtZVByZWZdID0gY3JlYXRlU2lnbmFsKGJvb3QudGhlbWVQcmVmIHx8ICdhdXRvJylcbiAgY29uc3QgW3F1ZXVlZCwgc2V0UXVldWVkXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3NlbnQsIHNldFNlbnRdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbaGlzdElkeCwgc2V0SGlzdElkeF0gPSBjcmVhdGVTaWduYWwoLTEpXG4gIGNvbnN0IFtjbWRJbmRleCwgc2V0Q21kSW5kZXhdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtjbWRDeWNsZSwgc2V0Q21kQ3ljbGVdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtmaWxlSW5kZXgsIHNldEZpbGVJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2ZpbGVMaXN0LCBzZXRGaWxlTGlzdF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtmaWxlc0Rpc21pc3NlZCwgc2V0RmlsZXNEaXNtaXNzZWRdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSBjcmVhdGVTaWduYWwoJ2NoYXQnKVxuICBjb25zdCBbdmVyYm9zZSwgc2V0VmVyYm9zZV0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93TW9kZWxQYW5lbCwgc2V0U2hvd01vZGVsUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd1Jlc2VhcmNoTW9kZWxQYW5lbCwgc2V0U2hvd1Jlc2VhcmNoTW9kZWxQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtyZXNlYXJjaE1vZGVsUmV0dXJuLCBzZXRSZXNlYXJjaE1vZGVsUmV0dXJuXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbcGVuZGluZ1Jlc2VhcmNoLCBzZXRQZW5kaW5nUmVzZWFyY2hdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFthZ2VudHNWZXJzaW9uLCBzZXRBZ2VudHNWZXJzaW9uXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbdmlld2VkQWdlbnRJZCwgc2V0Vmlld2VkQWdlbnRJZF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2FnZW50V2luZG93T2Zmc2V0LCBzZXRBZ2VudFdpbmRvd09mZnNldF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Nob3dIaXN0b3J5UGFuZWwsIHNldFNob3dIaXN0b3J5UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbaGlzdFNjb3BlLCBzZXRIaXN0U2NvcGVdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtoaXN0UHJvbXB0cywgc2V0SGlzdFByb21wdHNdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc2hvd1Jlc3VtZVBhbmVsLCBzZXRTaG93UmVzdW1lUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbcmVzdW1lU2NvcGUsIHNldFJlc3VtZVNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbcmVzdW1lU2Vzc2lvbnMsIHNldFJlc3VtZVNlc3Npb25zXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3Jlc3VtZUxvYWRpbmcsIHNldFJlc3VtZUxvYWRpbmddID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd01jcFBhbmVsLCBzZXRTaG93TWNwUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd1Byb2plY3RQYW5lbCwgc2V0U2hvd1Byb2plY3RQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtpbmZvUGFuZWwsIHNldEluZm9QYW5lbF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3ZpZXdlZFNoZWxsSWQsIHNldFZpZXdlZFNoZWxsSWRdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtzaGVsbFdpbmRvd09mZnNldCwgc2V0U2hlbGxXaW5kb3dPZmZzZXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtzaG93V2FrZXVwc1BhbmVsLCBzZXRTaG93V2FrZXVwc1BhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dDb25uZWN0UGFuZWwsIHNldFNob3dDb25uZWN0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbYXV0aFByb3ZpZGVycywgc2V0QXV0aFByb3ZpZGVyc10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtzaGVsbHNWZXJzaW9uLCBzZXRTaGVsbHNWZXJzaW9uXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZ2l0VmVyc2lvbiwgc2V0R2l0VmVyc2lvbl0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Byb2plY3RzLCBzZXRQcm9qZWN0c10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtwcm9qZWN0c0xvYWRpbmcsIHNldFByb2plY3RzTG9hZGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFttY3BTZXJ2ZXJzLCBzZXRNY3BTZXJ2ZXJzXSA9IGNyZWF0ZVNpZ25hbChtY3AubGlzdCgpKVxuICBjb25zdCBbY29tcGxldGluZywgc2V0Q29tcGxldGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wSW5kZXgsIHNldENvbXBJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Jld2luZFN0ZXAsIHNldFJld2luZFN0ZXBdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtyZXdpbmRUYXJnZXQsIHNldFJld2luZFRhcmdldF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW29mZnNldCwgc2V0T2Zmc2V0XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZm9sbG93LCBzZXRGb2xsb3ddID0gY3JlYXRlU2lnbmFsKHRydWUpXG4gIGNvbnN0IFtoaXN0V2luZG93LCBzZXRIaXN0V2luZG93XSA9IGNyZWF0ZVNpZ25hbChISVNUT1JZX1dJTkRPVylcblxuICBjb25zdCByZWZzID0gYm9vdC5yZWZzXG4gIHJlZnMuc2Vzc2lvbiA/Pz0gbnVsbFxuICByZWZzLmFsbEV2ZW50cyA/Pz0gW11cbiAgcmVmcy5wZXJzaXN0ZWQgPz89IDBcbiAgcmVmcy5hYm9ydCA9IHJlZnMuYWJvcnQgfHwgbnVsbFxuICByZWZzLnJld2luZFVuZG8gPSByZWZzLnJld2luZFVuZG8gfHwgbnVsbFxuICByZWZzLnF1aXRBdCA/Pz0gMFxuICByZWZzLmF0dGFjaG1lbnRzID8/PSBuZXcgTWFwKClcbiAgcmVmcy5pbWFnZUNvdW50ID8/PSAwXG5cbiAgcmVmcy5hZ2VudHMgPz89IGNyZWF0ZUFnZW50TWFuYWdlcih7XG4gICAgY29uY3VycmVuY3k6IDgsXG4gICAgZGVmYXVsdHM6ICgpID0+ICh7IG1vZGVsOiBib290LnJlc2VhcmNoTW9kZWwgfSksXG4gICAgb25DaGFuZ2U6ICgpID0+IHNldEFnZW50c1ZlcnNpb24oKHYpID0+IHYgKyAxKSxcbiAgICBvbkNyZWF0ZTogKGFnZW50KSA9PiBwZXJzaXN0KG1ha2VFdmVudCgnYWdlbnRfc3RhcnQnLCB7IGFnZW50SWQ6IGFnZW50LmlkLCBkZXNjcmlwdGlvbjogYWdlbnQuZGVzY3JpcHRpb24sIHByb21wdDogYWdlbnQucHJvbXB0LCBtb2RlbDogYWdlbnQubW9kZWwsIHJvbGU6IGFnZW50LnJvbGUsIHRvb2xzOiBhZ2VudC50b29scyB9KSksXG4gICAgb25FdmVudDogKGFnZW50LCBldmVudCkgPT4ge1xuICAgICAgaWYgKFsndG9vbF9leGVjdXRpbmcnLCAndG9vbF9jb21wbGV0ZScsICd0b29sX2Vycm9yJywgJ3VzYWdlJ10uaW5jbHVkZXMoZXZlbnQudHlwZSkpIHBlcnNpc3QobWFrZUV2ZW50KCdhZ2VudF9ldmVudCcsIHsgYWdlbnRJZDogYWdlbnQuaWQsIGV2ZW50IH0pKVxuICAgIH0sXG4gICAgb25GaW5pc2g6IChhZ2VudCkgPT4ge1xuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ2FnZW50X3Jlc3VsdCcsIHsgYWdlbnRJZDogYWdlbnQuaWQsIHJlc3VsdDogYWdlbnQucmVzdWx0LCB1c2FnZTogYWdlbnQudXNhZ2UsIGludGVycnVwdGVkOiBhZ2VudC5zdGF0dXMgPT09ICdjYW5jZWxsZWQnLCBlcnJvcjogYWdlbnQuZXJyb3IgfSkpXG4gICAgICBub3RlU3lzdGVtKGBBZ2VudCAke2FnZW50LmlkfSAoJHthZ2VudC5kZXNjcmlwdGlvbn0pIGZpbmlzaGVkIHdpdGggc3RhdHVzICR7YWdlbnQuc3RhdHVzfS4gSXRzIHJlc3VsdCBpcyByZWFkeS4gQ2FsbCBhZ2VudF9jb2xsZWN0IHdpdGggaWQgJHthZ2VudC5pZH0gYmVmb3JlIGZpbmlzaGluZyB5b3VyIHJlc3BvbnNlLmAsIHsgd2FrZTogdHJ1ZSwgYWdlbnRJZDogYWdlbnQuaWQgfSlcbiAgICB9LFxuICAgIHJ1bjogYXN5bmMgKGFnZW50LCBzaWduYWwsIG9uU3RyZWFtKSA9PiB7XG4gICAgICBjb25zdCB3b3JrZXIgPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBhZ2VudC5tb2RlbClcbiAgICAgIGlmICghd29ya2VyIHx8IHdvcmtlci5hdmFpbGFibGUgPT09IGZhbHNlKSB0aHJvdyBuZXcgRXJyb3IoYHJlc2VhcmNoIG1vZGVsIHVuYXZhaWxhYmxlOiAke2FnZW50Lm1vZGVsfWApXG4gICAgICBjb25zdCBhdXRoID0gd29ya2VyLnByb3ZpZGVyID09PSAnY29kZXgnID8gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKSA6IG51bGxcbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IHJlZnMuc2Vzc2lvbj8uaWRcbiAgICAgIGlmICghc2Vzc2lvbklkKSB0aHJvdyBuZXcgRXJyb3IoJ3dvcmtlciByZXF1aXJlcyBhbiBhY3RpdmUgc2Vzc2lvbicpXG4gICAgICBjb25zdCBzY3JhdGNocGFkID0gZW5zdXJlRGlyKGFnZW50U2NyYXRjaERpcihyb290LCBzZXNzaW9uSWQsIGFnZW50LmlkKSlcbiAgICAgIGNvbnN0IHdvcmtlclRvb2xzID0gWydyZWFkJywgJ3dyaXRlJywgJ2VkaXQnLCAnYmFzaCcsICdnbG9iJywgJ2dyZXAnLCAnc2hlbGxfb3V0cHV0JywgJ3NoZWxsX2tpbGwnLCAnd2ViX3NlYXJjaCcsICd3ZWJfZmV0Y2gnXVxuICAgICAgY29uc3QgcmVxdWVzdGVkVG9vbHMgPSBhZ2VudC50b29scz8ubGVuZ3RoID8gYWdlbnQudG9vbHMuZmlsdGVyKChuYW1lKSA9PiB3b3JrZXJUb29scy5pbmNsdWRlcyhuYW1lKSkgOiB3b3JrZXJUb29sc1xuICAgICAgY29uc3QgeyB0b29scywgcmVjb3JkZXIgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgICBjd2QsXG4gICAgICAgIGVudjogeyBQSUNPX1NDUkFUQ0hQQUQ6IHNjcmF0Y2hwYWQgfSxcbiAgICAgICAgdHJhY2tlcixcbiAgICAgICAgc2hlbGxzOiBib290LnNoZWxscyxcbiAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICBkcmVkZ2U6IGJvb3QuZHJlZGdlLFxuICAgICAgICBzaWduYWwsXG4gICAgICAgIG1heFRvb2xDYWxsczogMzAsXG4gICAgICAgIGFsbG93TmFtZXM6IHJlcXVlc3RlZFRvb2xzLFxuICAgICAgfSlcbiAgICAgIHJldHVybiBydW5UdXJuKHtcbiAgICAgICAgaGlzdG9yeTogW3sgcm9sZTogJ3VzZXInLCBjb250ZW50OiBhZ2VudC5wcm9tcHQgfV0sXG4gICAgICAgIHRvb2xzLFxuICAgICAgICByZWNvcmRlcixcbiAgICAgICAgbW9kZWxOYW1lOiB3b3JrZXIubmFtZSxcbiAgICAgICAgZWZmb3J0OiB3b3JrZXIuZWZmb3J0ID8gJ2xvdycgOiBudWxsLFxuICAgICAgICBhdXRoLFxuICAgICAgICBzeXN0ZW06IGBZb3UgYXJlIGFuIGlzb2xhdGVkIHdvcmtlciBvcGVyYXRpbmcgaW4gdGhlIHVzZXIncyByZWFsIHByb2plY3QuIENvbXBsZXRlIG9ubHkgdGhlIGFzc2lnbmVkIHRhc2sgYW5kIGRvIG5vdCBhc2sgdGhlIHVzZXIgcXVlc3Rpb25zLiBZb3UgbWF5IHJlYWQsIG1vZGlmeSwgYW5kIHRlc3QgcHJvamVjdCBmaWxlcy4gUHV0IGRpc3Bvc2FibGUgc2NyaXB0cywgZ2VuZXJhdGVkIGRhdGEsIGV4cGVyaW1lbnRzLCBhbmQgdGVtcG9yYXJ5IHBhY2thZ2UgaW5zdGFsbHMgaW4geW91ciBzZXNzaW9uLXBlcnNpc3RlbnQgc2NyYXRjaHBhZCBhdCAke3NjcmF0Y2hwYWR9LCBhbHNvIGF2YWlsYWJsZSBhcyAkUElDT19TQ1JBVENIUEFELiBVc2UgcHJpbWFyeSBzb3VyY2VzIHdoZXJlIHBvc3NpYmxlLCBkaXN0aW5ndWlzaCBldmlkZW5jZSBmcm9tIGluZmVyZW5jZSwgYW5kIHJldHVybiBhIGNvbmNpc2Ugc2VsZi1jb250YWluZWQgcmVzdWx0LmAsXG4gICAgICAgIHNpZ25hbCxcbiAgICAgICAgb25TdHJlYW0sXG4gICAgICB9KVxuICAgIH0sXG4gIH0pXG4gIGNvbnN0IGFnZW50cyA9IHJlZnMuYWdlbnRzXG5cbiAgYm9vdC5zZXRNY3BOb3RpZnkoKCkgPT4gc2V0TWNwU2VydmVycyhib290Lm1jcC5saXN0KCkpKVxuICBib290LnNldFNoZWxsc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0V2FrZXVwc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0R2l0Tm90aWZ5KCgpID0+IHNldEdpdFZlcnNpb24oKHYpID0+IHYgKyAxKSlcbiAgYm9vdC5zZXRXYWtldXBzRmlyZSgod2FrZXVwKSA9PiB7XG4gICAgZmxhc2goYHdha2UtdXAgJHt3YWtldXAuaWR9IGZpcmVkYClcbiAgICBub3RlU3lzdGVtKFxuICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSBzY2hlZHVsZWQgd2FrZS11cCAke3dha2V1cC5pZH0gZmlyZWQuIE5vdGUgdG8gc2VsZjogJHt3YWtldXAubm90ZX1gLFxuICAgICAgeyB3YWtlOiB0cnVlIH0sXG4gICAgKVxuICB9KVxuICBib290LnNldFNoZWxsc0V4aXQoKHNoZWxsKSA9PiB7XG4gICAgaWYgKHNoZWxsLmtpbGxlZEJ5ID09PSAnbW9kZWwnKSB7XG4gICAgICBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0ga2lsbGVkYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoc2hlbGwua2lsbGVkQnkgPT09ICd1c2VyJykge1xuICAgICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGtpbGxlZGApXG4gICAgICBub3RlU3lzdGVtKGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHVzZXIgbWFudWFsbHkga2lsbGVkIGJhY2tncm91bmQgc2hlbGwgJHtzaGVsbC5pZH0gKCR7c2hlbGwuZGVzY3JpcHRpb24gfHwgc2hlbGwuY29tbWFuZH0pIGZyb20gdGhlIHNoZWxscyBwYW5lbCAoU0lHVEVSTSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXN0YXJ0IGl0IHVubGVzcyBhc2tlZC5gLCB7IHdha2U6IGZhbHNlIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGV4aXRlZCBcdTAwQjcgY29kZSAke3NoZWxsLmV4aXRDb2RlfWApXG4gICAgY29uc3QgdGFpbCA9IGJvb3Quc2hlbGxzLm91dHB1dChzaGVsbC5pZCwgeyB0YWlsOiAzMCB9KS5vdXRwdXRcbiAgICBjb25zdCBzZWNzID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoKHNoZWxsLmVuZGVkQXQgfHwgRGF0ZS5ub3coKSkgLSBzaGVsbC5zdGFydGVkQXQpIC8gMTAwMCkpXG4gICAgY29uc3QgcmFuID0gc2VjcyA8IDYwID8gYCR7c2Vjc31zYCA6IGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tICR7c2VjcyAlIDYwfXNgXG4gICAgbm90ZVN5c3RlbShcbiAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gYmFja2dyb3VuZCBzaGVsbCAke3NoZWxsLmlkfSAoJHtzaGVsbC5kZXNjcmlwdGlvbiB8fCBzaGVsbC5jb21tYW5kfSkgZXhpdGVkIHdpdGggY29kZSAke3NoZWxsLmV4aXRDb2RlfSBhZnRlciAke3Jhbn0uYCArXG4gICAgICAgICh0YWlsID8gYFxcblJlY2VudCBvdXRwdXQ6XFxuJHt0YWlsfWAgOiAnJyksXG4gICAgICB7IHdha2U6IHRydWUgfSxcbiAgICApXG4gIH0pXG5cbiAgZnVuY3Rpb24gbm90ZVN5c3RlbSh0ZXh0LCB7IHdha2UsIGFnZW50SWQgfSA9IHt9KSB7XG4gICAgcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXMgPz89IFtdXG4gICAgcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXMucHVzaCh7IHRleHQsIHdha2UsIGFnZW50SWQgfSlcbiAgICBmbHVzaFN5c3RlbU5vdGVzKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGZsdXNoU3lzdGVtTm90ZXMoKSB7XG4gICAgaWYgKCFyZWZzLnBlbmRpbmdTeXN0ZW1Ob3Rlcz8ubGVuZ3RoIHx8IGJ1c3koKSB8fCB2aWV3KCkgIT09ICdjaGF0JyB8fCAhcmVmcy5zZXNzaW9uKSByZXR1cm5cbiAgICBjb25zdCBub3RlcyA9IHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzXG4gICAgcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXMgPSBbXVxuICAgIGlmICghbm90ZXMubGVuZ3RoKSByZXR1cm5cbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnc3lzdGVtX25vdGUnLCB7IHRleHQ6IG5vdGVzLm1hcCgobikgPT4gbi50ZXh0KS5qb2luKCdcXG5cXG4nKSB9KSlcbiAgICByZURlcml2ZSgpXG4gICAgaWYgKG5vdGVzLnNvbWUoKG4pID0+IG4ud2FrZSkpIHJ1bkFnZW50VHVybigpXG4gIH1cblxuICBjb25zdCBza2lsbENvbW1hbmRzID0gc2tpbGxzLmxpc3QoKS5tYXAoKHMpID0+ICh7IG5hbWU6IHMubmFtZSwgZGVzYzogYHNraWxsIFx1MDBCNyAke3MuZGVzY3JpcHRpb24gfHwgcy5zb3VyY2V9YCwgc2tpbGw6IHRydWUgfSkpXG4gIGNvbnN0IHVzZXJDb21tYW5kcyA9IGJvb3QuY29tbWFuZHMubGlzdCgpLm1hcCgoYykgPT4gKHsgbmFtZTogYy5uYW1lLCBkZXNjOiBgY29tbWFuZCBcdTAwQjcgJHtjLmRlc2NyaXB0aW9uIHx8IGMuc291cmNlfWAsIGNvbW1hbmQ6IHRydWUgfSkpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBjb25zdCBzaGFkb3dlZCA9IFtdXG4gIGZvciAoY29uc3QgYyBvZiBbLi4uQ09NTUFORFMsIC4uLnNraWxsQ29tbWFuZHMsIC4uLnVzZXJDb21tYW5kc10pIHtcbiAgICBpZiAoYnlOYW1lLmhhcyhjLm5hbWUpKSBzaGFkb3dlZC5wdXNoKGAke2Muc2tpbGwgPyAnc2tpbGwnIDogJ2NvbW1hbmQnfSBcIiR7Yy5uYW1lfVwiYClcbiAgICBlbHNlIGJ5TmFtZS5zZXQoYy5uYW1lLCBjKVxuICB9XG4gIGNvbnN0IGFsbENvbW1hbmRzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV1cbiAgaWYgKHNoYWRvd2VkLmxlbmd0aCAmJiAhcmVmcy53YXJuZWRTaGFkb3dlZCkge1xuICAgIHJlZnMud2FybmVkU2hhZG93ZWQgPSB0cnVlXG4gICAgc2V0VGltZW91dCgoKSA9PiBmbGFzaChgc2hhZG93ZWQgYnkgYW4gZWFybGllciBuYW1lLCByZW5hbWUgdG8gdXNlOiAke3NoYWRvd2VkLmpvaW4oJywgJyl9YCksIDApXG4gIH1cblxuICBjb25zdCB0b2FzdCA9IHVzZVRvYXN0KHtcbiAgICBkdXJhdGlvbjogMzUwMCxcbiAgICBwb3NpdGlvbjogJ3RvcC1yaWdodCcsXG4gICAgcmVuZGVyOiAobWVzc2FnZSkgPT4gPHRleHQgc3R5bGU9e3sgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJywgYm9sZDogdHJ1ZSB9fT57YCAke21lc3NhZ2V9IGB9PC90ZXh0PixcbiAgfSlcblxuICBjb25zdCB1cGRhdGVUb2FzdCA9IHVzZVRvYXN0KHtcbiAgICBkdXJhdGlvbjogODAwMCxcbiAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgIHJlbmRlcjogKG1lc3NhZ2UpID0+IChcbiAgICAgIDxib3ggc3R5bGU9e3sgYmc6IGFjY2VudCgpIH19PlxuICAgICAgICA8U2hpbW1lciBjb2xvcj1cImJsYWNrXCIgaGlnaGxpZ2h0PXtISUdITElHSFR9IGR1cmF0aW9uPXsxNTAwfT57YCAke21lc3NhZ2V9IGB9PC9TaGltbWVyPlxuICAgICAgPC9ib3g+XG4gICAgKSxcbiAgfSlcblxuICBmdW5jdGlvbiBmbGFzaChtc2cpIHtcbiAgICB0b2FzdChtc2cpXG4gIH1cblxuICBpZiAoIXJlZnMudXBkYXRlQ2hlY2tlZCkge1xuICAgIHJlZnMudXBkYXRlQ2hlY2tlZCA9IHRydWVcbiAgICBjaGVja0ZvclVwZGF0ZSh2ZXJzaW9uKS50aGVuKChmb3VuZCkgPT4ge1xuICAgICAgaWYgKCFmb3VuZCkgcmV0dXJuXG4gICAgICB1cGRhdGVUb2FzdChgcGljbyB2JHtmb3VuZC52ZXJzaW9ufSBhdmFpbGFibGUgXHUwMEI3IC91cGRhdGVgKVxuICAgICAgZm91bmQubWFya05vdGlmaWVkKClcbiAgICB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuc3VyZVNlc3Npb24oKSB7XG4gICAgaWYgKCFyZWZzLnNlc3Npb24pIHJlZnMuc2Vzc2lvbiA9IGNyZWF0ZVNlc3Npb24oeyBjd2QsIHJvb3QgfSlcbiAgICB3aGlsZSAocmVmcy5wZXJzaXN0ZWQgPCByZWZzLmFsbEV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIHJlZnMuc2Vzc2lvbi5hcHBlbmQocmVmcy5hbGxFdmVudHNbcmVmcy5wZXJzaXN0ZWRdKVxuICAgICAgcmVmcy5wZXJzaXN0ZWQrK1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBlcnNpc3QoZXZlbnQpIHtcbiAgICByZWZzLmFsbEV2ZW50cy5wdXNoKGV2ZW50KVxuICAgIGlmIChyZWZzLnNlc3Npb24pIHtcbiAgICAgIHJlZnMuc2Vzc2lvbi5hcHBlbmQoZXZlbnQpXG4gICAgICByZWZzLnBlcnNpc3RlZCA9IHJlZnMuYWxsRXZlbnRzLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlRGVyaXZlKCkge1xuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlU3RhdGUocmVmcy5hbGxFdmVudHMpXG4gICAgc2V0RGVyaXZlZChzdGF0ZSlcbiAgICBzZXRBY2NlbnQoc3RhdGUuY29sb3IpXG4gICAgYm9vdC5zZXRUaGVtZT8uKHsgYWNjZW50OiBzdGF0ZS5jb2xvciB8fCBERUZBVUxUX0FDQ0VOVCwgbXV0ZWQ6IE1VVEVEIH0pXG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaFN0cmVhbShpdGVtcykge1xuICAgIGNvbnN0IHRleHQgPSBzdHJlYW1pbmcoKVxuICAgIGlmICh0ZXh0KSBpdGVtcy5wdXNoKHsga2luZDogJ2Fzc2lzdGFudCcsIHRleHQgfSlcbiAgICBzZXRTdHJlYW1pbmcobnVsbClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVUdXJuKHRleHQpIHtcbiAgICBjb25zdCB7IGNvbnRlbnQgfSA9IGZpbmFsaXplVXNlckNvbnRlbnQodGV4dCwgcmVmcy5hdHRhY2htZW50cylcbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZTogeyByb2xlOiAndXNlcicsIGNvbnRlbnQgfSB9KSlcbiAgICBlbnN1cmVTZXNzaW9uKClcbiAgICByZURlcml2ZSgpXG4gICAgYXdhaXQgcnVuQWdlbnRUdXJuKClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1Db21wYWN0aW9uKGluc3RydWN0aW9ucyA9ICcnKSB7XG4gICAgaWYgKGJ1c3koKSB8fCBjb21wYWN0aW5nKCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuICAgIGlmIChzdGF0ZS5wcm92aWRlckhpc3RvcnkubGVuZ3RoIDwgNCkgcmV0dXJuIGZsYXNoKCdub3RoaW5nIHRvIGNvbXBhY3QgeWV0JylcblxuICAgIGxldCBhdXRoID0gbnVsbFxuICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSB7XG4gICAgICBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgaWYgKCFhdXRoKSByZXR1cm4gZmxhc2goJ2NvZGV4IG1vZGVscyBuZWVkIGEgQ2hhdEdQVCBzaWduLWluOiBydW4gL2Nvbm5lY3QnKVxuICAgIH1cblxuICAgIGNvbnN0IGVudHJpZXMgPSB1c2VyRW50cmllcyhzdGF0ZSlcbiAgICBjb25zdCBrZWVwRnJvbSA9IGVudHJpZXMuYXQoLTIpPy5ldmVudElkID8/IGVudHJpZXMuYXQoLTEpPy5ldmVudElkXG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgcmVmcy5hYm9ydCA9IGNvbnRyb2xsZXJcbiAgICBzZXRCdXN5KHRydWUpXG4gICAgc2V0Q29tcGFjdGluZyh0cnVlKVxuICAgIHNldENvbXBhY3RTdGF0dXMobnVsbClcbiAgICBzZXRTdGFydGVkQXQoRGF0ZS5ub3coKSlcbiAgICBsZXQgc3RyZWFtZWQgPSAnJ1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBhd2FpdCBjb21wYWN0SGlzdG9yeSh7XG4gICAgICAgIGhpc3Rvcnk6IHN0YXRlLnByb3ZpZGVySGlzdG9yeSxcbiAgICAgICAgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUsXG4gICAgICAgIGF1dGgsXG4gICAgICAgIHByb21wdDogY29tcGFjdGlvblByb21wdChpbnN0cnVjdGlvbnMpLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvblN0cmVhbTogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjb250ZW50JykgcmV0dXJuXG4gICAgICAgICAgc3RyZWFtZWQgKz0gZXZlbnQuY29udGVudFxuICAgICAgICAgIHNldENvbXBhY3RTdGF0dXMoY29tcGFjdFByb2dyZXNzKHN0cmVhbWVkKSlcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBjb25zdCBzdW1tYXJ5ID0gZm9ybWF0Q29tcGFjdFN1bW1hcnkocmF3KVxuICAgICAgaWYgKCFzdW1tYXJ5KSB0aHJvdyBuZXcgRXJyb3IoJ2VtcHR5IHN1bW1hcnknKVxuICAgICAgaWYgKHN1bW1hcnlTZWN0aW9ucyhzdW1tYXJ5KSA8IDUpIHRocm93IG5ldyBFcnJvcignbWFsZm9ybWVkIHN1bW1hcnksIGNvbnZlcnNhdGlvbiBsZWZ0IHVudG91Y2hlZCcpXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnY29tcGFjdCcsIHsgc3VtbWFyeSwga2VlcEZyb20sIHNlc3Npb25GaWxlOiByZWZzLnNlc3Npb24/LmZpbGUgfHwgbnVsbCB9KSlcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKCdjb21wYWN0ZWQgXHUwMEI3IHJlY2VudCBtZXNzYWdlcyBrZXB0IHZlcmJhdGltJylcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChjb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSBmbGFzaCgnY29tcGFjdGlvbiBjYW5jZWxsZWQnKVxuICAgICAgZWxzZSBmbGFzaChgY29tcGFjdCBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMTAwKX1gKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRDb21wYWN0aW5nKGZhbHNlKVxuICAgICAgc2V0Q29tcGFjdFN0YXR1cyhudWxsKVxuICAgICAgc2V0QnVzeShmYWxzZSlcbiAgICAgIHJlZnMuYWJvcnQgPSBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcSA9IHF1ZXVlZCgpXG4gICAgaWYgKHEubGVuZ3RoID4gMCkge1xuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgaWYgKGNvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHNldElucHV0KHEuam9pbignXFxuJykpXG4gICAgICBlbHNlIGV4ZWN1dGVUdXJuKHEuam9pbignXFxuJykpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbWF5YmVBdXRvQ29tcGFjdCgpIHtcbiAgICBpZiAoYm9vdC5hdXRvQ29tcGFjdCA9PT0gZmFsc2UgfHwgYnVzeSgpIHx8IGNvbXBhY3RpbmcoKSkgcmV0dXJuXG4gICAgY29uc3QgbGltaXQgPSBtb2RlbCgpLmNvbnRleHRcbiAgICBjb25zdCB1c2VkID0gZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnNcbiAgICBpZiAoIWxpbWl0IHx8ICF1c2VkIHx8IGRlcml2ZWQoKS5sYXN0UHJvbXB0TW9kZWwgIT09IG1vZGVsKCkubmFtZSkgcmV0dXJuXG4gICAgY29uc3QgcmF0aW8gPSB1c2VkIC8gbGltaXRcbiAgICBpZiAocmF0aW8gPj0gMC44NSkge1xuICAgICAgZmxhc2goYGNvbnRleHQgJHtNYXRoLnJvdW5kKHJhdGlvICogMTAwKX0lIGZ1bGwgXHUwMEI3IGF1dG8tY29tcGFjdGluZ2ApXG4gICAgICBwZXJmb3JtQ29tcGFjdGlvbigpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuQWdlbnRUdXJuKCkge1xuICAgIGNvbnN0IHJlc2VhcmNoQWdlbnRMaW1pdCA9IHJlZnMubmV4dFJlc2VhcmNoQWdlbnRMaW1pdCB8fCBudWxsXG4gICAgcmVmcy5uZXh0UmVzZWFyY2hBZ2VudExpbWl0ID0gbnVsbFxuICAgIGxldCBhdXRoID0gbnVsbFxuICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSB7XG4gICAgICBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgaWYgKCFhdXRoKSB7XG4gICAgICAgIGZsYXNoKCdjb2RleCBtb2RlbHMgbmVlZCBhIENoYXRHUFQgc2lnbi1pbjogcnVuIC9jb25uZWN0JylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIHNldEZvbGxvdyh0cnVlKVxuICAgIHNldEhpc3RXaW5kb3coSElTVE9SWV9XSU5ET1cpXG4gICAgc2V0QnVzeSh0cnVlKVxuICAgIHNldFR1cm5QaGFzZSgncmVzcG9uZGluZycpXG4gICAgc2V0U3RhcnRlZEF0KERhdGUubm93KCkpXG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgcmVmcy5hYm9ydCA9IGNvbnRyb2xsZXJcbiAgICBjb25zdCBsb2FkZWRCZWZvcmUgPSBuZXcgU2V0KHRyYWNrZXIubG9hZGVkKVxuICAgIGJvb3Quc2tpbGxzID0gYXdhaXQgY3JlYXRlU2tpbGxJbmRleChib290LnJvb3QpLmNhdGNoKCgpID0+IGJvb3Quc2tpbGxzKSA/PyBib290LnNraWxsc1xuICAgIGJvb3QuY29tbWFuZHMgPSBhd2FpdCBjcmVhdGVDb21tYW5kSW5kZXgoYm9vdC5yb290KS5jYXRjaCgoKSA9PiBib290LmNvbW1hbmRzKSA/PyBib290LmNvbW1hbmRzXG4gICAgY29uc3QgZnJlc2hTa2lsbHMgPSBib290LnNraWxsc1xuICAgIGNvbnN0IHVzZXJUb29sU2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KS5jYXRjaCgoKSA9PiAoeyB0b29sczogW10sIGVycm9yczogW10gfSkpXG4gICAgZm9yIChjb25zdCBmYWlsdXJlIG9mIHVzZXJUb29sU2Nhbi5lcnJvcnMpIHtcbiAgICAgIGNvbnN0IGtleSA9IGAke2ZhaWx1cmUuZmlsZX06JHtmYWlsdXJlLmVycm9yfWBcbiAgICAgIGlmICghcmVmcy53YXJuZWRUb29scz8uaGFzKGtleSkpIHtcbiAgICAgICAgOyhyZWZzLndhcm5lZFRvb2xzID8/PSBuZXcgU2V0KCkpLmFkZChrZXkpXG4gICAgICAgIGZsYXNoKGB0b29sIHNraXBwZWQ6ICR7ZmFpbHVyZS5maWxlLnNwbGl0KCcvJykucG9wKCl9IFx1MDBCNyAke2ZhaWx1cmUuZXJyb3J9YClcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyB0b29scywgcmVjb3JkZXIgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgY3dkLFxuICAgICAgdHJhY2tlcixcbiAgICAgIHNraWxsczogZnJlc2hTa2lsbHMsXG4gICAgICBzaGVsbHM6IGJvb3Quc2hlbGxzLFxuICAgICAgc2Vzc2lvbklkOiByZWZzLnNlc3Npb24/LmlkLFxuICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgIGFnZW50czogYm9vdC5yZXNlYXJjaE1vZGVsID8gYWdlbnRzIDogbnVsbCxcbiAgICAgIGFza1VzZXI6IChxdWVzdGlvbnMpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHNldFF1ZXN0aW9uUmVxdWVzdCh7IHF1ZXN0aW9ucywgcmVzb2x2ZSB9KVxuICAgICAgICBmbS5mb2N1cygncXVlc3Rpb24nKVxuICAgICAgfSksXG4gICAgICBkcmVkZ2U6IGJvb3QuZHJlZGdlLFxuICAgICAgbWNwVG9vbHM6IG1jcC50b29scygpLFxuICAgICAgdXNlclRvb2xzOiB1c2VyVG9vbFNjYW4udG9vbHMsXG4gICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgbWF4QWdlbnRTdGFydHM6IHJlc2VhcmNoQWdlbnRMaW1pdCA/IDEwMCA6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVpcmVBZ2VudFBsYW46ICEhcmVzZWFyY2hBZ2VudExpbWl0LFxuICAgICAgYWxsb3dOYW1lczogcmVzZWFyY2hBZ2VudExpbWl0ID8gWydhZ2VudF9wbGFuJywgJ2FnZW50X3N0YXJ0JywgJ2FnZW50X2xpc3QnLCAnYWdlbnRfY29sbGVjdCcsICdhZ2VudF9jYW5jZWwnXSA6IHVuZGVmaW5lZCxcbiAgICB9KVxuXG4gICAgcmVmcy50dXJuVGhvdWdodHMgPSAnJ1xuICAgIGNvbnN0IG9uU3RyZWFtID0gKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RoaW5raW5nJykge1xuICAgICAgICByZWZzLnR1cm5UaG91Z2h0cyArPSBldmVudC5jb250ZW50XG4gICAgICAgIHNldFR1cm5QaGFzZSgndGhpbmtpbmcnKVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgICAgc2V0VHVyblBoYXNlKCdyZXNwb25kaW5nJylcbiAgICAgICAgc2V0U3RyZWFtaW5nKChzKSA9PiAocyB8fCAnJykgKyBldmVudC5jb250ZW50KVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jYWxsc19yZWFkeScpIHtcbiAgICAgICAgc2V0VHVyblBoYXNlKCd0b29scycpXG4gICAgICAgIHNldE92ZXJsYXkoKG8pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gWy4uLm9dXG4gICAgICAgICAgZmx1c2hTdHJlYW0obmV4dClcbiAgICAgICAgICByZXR1cm4gbmV4dFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9leGVjdXRpbmcnKSB7XG4gICAgICAgIHNldE92ZXJsYXkoKG8pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gWy4uLm9dXG4gICAgICAgICAgZmx1c2hTdHJlYW0obmV4dClcbiAgICAgICAgICBsZXQgYXJncyA9IHt9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGFyZ3MgPSBKU09OLnBhcnNlKGV2ZW50LmNhbGwuZnVuY3Rpb24uYXJndW1lbnRzKVxuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgICBuZXh0LnB1c2goe1xuICAgICAgICAgICAga2luZDogJ3Rvb2wnLFxuICAgICAgICAgICAgY2FsbElkOiBldmVudC5jYWxsLmlkLFxuICAgICAgICAgICAgbmFtZTogZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lLFxuICAgICAgICAgICAgdGl0bGU6IHVpVGl0bGUoZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lLCBhcmdzKSxcbiAgICAgICAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgICAgICAgc3RhcnRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIG5leHRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY29tcGxldGUnIHx8IGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykge1xuICAgICAgICBib290LmdpdC5yZWZyZXNoKClcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWNvcmRlci5lbnRyaWVzLmF0KC0xKVxuICAgICAgICBzZXRPdmVybGF5KChvKSA9PlxuICAgICAgICAgIG8ubWFwKChpdGVtKSA9PlxuICAgICAgICAgICAgaXRlbS5raW5kID09PSAndG9vbCcgJiYgaXRlbS5jYWxsSWQgPT09IGV2ZW50LmNhbGwuaWRcbiAgICAgICAgICAgICAgPyB7IC4uLml0ZW0sIC4uLihlbnRyeT8uY2FsbElkID09PSBldmVudC5jYWxsLmlkID8gZW50cnkgOiB7fSksIGtpbmQ6ICd0b29sJywgc3RhdHVzOiBlbnRyeT8uc3RhdHVzIHx8ICdkb25lJyB9XG4gICAgICAgICAgICAgIDogaXRlbSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdFxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBydW5UdXJuKHtcbiAgICAgICAgaGlzdG9yeTogZGVyaXZlZCgpLnByb3ZpZGVySGlzdG9yeSxcbiAgICAgICAgdG9vbHMsXG4gICAgICAgIHJlY29yZGVyLFxuICAgICAgICBtb2RlbE5hbWU6IG1vZGVsKCkubmFtZSxcbiAgICAgICAgZWZmb3J0OiBlZmZvcnRBcHBsaWVzKCkgPyBlZmZvcnQoKSA/PyAnYXV0bycgOiBudWxsLFxuICAgICAgICBhdXRoLFxuICAgICAgICBzeXN0ZW06IGJ1aWxkU3lzdGVtUHJvbXB0KHtcbiAgICAgICAgICBjd2QsXG4gICAgICAgICAgY29udGV4dEZpbGVzOiBzdGFydHVwQ29udGV4dC5maWxlcyxcbiAgICAgICAgICBza2lsbHM6IGZyZXNoU2tpbGxzLmxpc3QoKSxcbiAgICAgICAgICBtZW1vcnlJbmRleFRleHQ6IG1lbW9yeUluZGV4KGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSksIGJvb3Qucm9vdCksXG4gICAgICAgIH0pLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvblN0cmVhbSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRPdmVybGF5KFtdKVxuICAgICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgICBzZXRUdXJuUGhhc2UoJ2lkbGUnKVxuICAgICAgc2V0QnVzeShmYWxzZSlcbiAgICAgIHJlZnMuYWJvcnQgPSBudWxsXG4gICAgICBmbGFzaChgZXJyb3I6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMTIwKX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHJlZnMudHVyblRob3VnaHRzKSBwZXJzaXN0KG1ha2VFdmVudCgndGhvdWdodHMnLCB7IHRleHQ6IHJlZnMudHVyblRob3VnaHRzIH0pKVxuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiByZXN1bHQubWVzc2FnZXMpIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlIH0pKVxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgcmVjb3JkZXIuZW50cmllcykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rvb2xfbWV0YScsIGVudHJ5KSlcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgdHJhY2tlci5sb2FkZWQpIHtcbiAgICAgIGlmICghbG9hZGVkQmVmb3JlLmhhcyhwYXRoKSkgcGVyc2lzdChtYWtlRXZlbnQoJ2NvbnRleHRfZmlsZScsIHsgcGF0aCB9KSlcbiAgICB9XG4gICAgaWYgKHJlc3VsdC51c2FnZSkgcGVyc2lzdChtYWtlRXZlbnQoJ3VzYWdlJywgeyBtb2RlbDogbW9kZWwoKS5uYW1lLCB1c2FnZTogcmVzdWx0LnVzYWdlLCBsYXN0UHJvbXB0OiByZXN1bHQubGFzdFByb21wdFRva2VucyB9KSlcbiAgICBpZiAocmVzdWx0LmludGVycnVwdGVkKSBwZXJzaXN0KG1ha2VFdmVudCgnaW50ZXJydXB0Jywge30pKVxuXG4gICAgc2V0T3ZlcmxheShbXSlcbiAgICBzZXRTdHJlYW1pbmcobnVsbClcbiAgICBzZXRUdXJuUGhhc2UoJ2lkbGUnKVxuICAgIHJlRGVyaXZlKClcbiAgICBzZXRCdXN5KGZhbHNlKVxuICAgIHJlZnMuYWJvcnQgPSBudWxsXG4gICAgYm9vdC5naXQucmVmcmVzaCgpXG4gICAgaWYgKHJlc3VsdC5zdGFsbGVkKSB7XG4gICAgICBmbGFzaCgnbW9kZWwgc3RhbGxlZCBcdTAwQjcgdHVybiBpbnRlcnJ1cHRlZCcpXG4gICAgICBub3RlU3lzdGVtKFxuICAgICAgICAnW3N5c3RlbSBub3RpZmljYXRpb25dIHRoZSBwcmV2aW91cyB0dXJuIHdhcyBjdXQgb2ZmIGF1dG9tYXRpY2FsbHk6IHRoZSBtb2RlbCBwcm9kdWNlZCBubyBvdXRwdXQgZm9yIDUgbWludXRlcyAocHJvdmlkZXIgc3RhbGwpLiBXb3JrIG1heSBoYXZlIHN0b3BwZWQgbWlkLXRhc2s7IHBpY2sgdXAgd2hlcmUgaXQgbGVmdCBvZmYuJyxcbiAgICAgICAgeyB3YWtlOiBmYWxzZSB9LFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgICBmbGFzaChgZXJyb3I6ICR7cmVzdWx0LmVycm9yLnNsaWNlKDAsIDEyMCl9YClcbiAgICAgIG5vdGVTeXN0ZW0oXG4gICAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHByZXZpb3VzIHR1cm4gZW5kZWQgd2l0aCBhIHByb3ZpZGVyIGVycm9yOiAke3Jlc3VsdC5lcnJvci5zbGljZSgwLCAzMDApfS4gV29yayBtYXkgaGF2ZSBzdG9wcGVkIG1pZC10YXNrOyBwaWNrIHVwIHdoZXJlIGl0IGxlZnQgb2ZmLmAsXG4gICAgICAgIHsgd2FrZTogZmFsc2UgfSxcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBxID0gcXVldWVkKClcbiAgICBpZiAocS5sZW5ndGggPiAwKSB7XG4gICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICBpZiAocmVzdWx0LmludGVycnVwdGVkKSBzZXRJbnB1dChxLmpvaW4oJ1xcbicpKVxuICAgICAgZWxzZSB7XG4gICAgICAgIGV4ZWN1dGVUdXJuKHEuam9pbignXFxuJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBmbHVzaFN5c3RlbU5vdGVzKClcbiAgICBtYXliZUF1dG9Db21wYWN0KClcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXBsZXRpb25Tb3VyY2UobmFtZSkge1xuICAgIGlmIChuYW1lID09PSAnY29sb3InKSByZXR1cm4gT2JqZWN0LmtleXMoU0VTU0lPTl9DT0xPUlMpXG4gICAgaWYgKG5hbWUgPT09ICd0aGVtZScpIHJldHVybiBbLi4ucGFsZXR0ZUxpc3QoKS5tYXAoKHApID0+IHAua2V5KSwgJ2F1dG8nXVxuICAgIGlmIChuYW1lID09PSAnZWZmb3J0JykgcmV0dXJuIFsnZGVmYXVsdCcsICdsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J11cbiAgICBpZiAobmFtZSA9PT0gJ21vZGVsJykgcmV0dXJuIG1vZGVscy5maWx0ZXIoKG0pID0+IG0uYXZhaWxhYmxlICE9PSBmYWxzZSkubWFwKChtKSA9PiBtLm5hbWUpXG4gICAgY29uc3QgY21kID0gYWxsQ29tbWFuZHMuZmluZCgoYykgPT4gYy5uYW1lID09PSBuYW1lKVxuICAgIGlmIChjbWQ/LnNraWxsIHx8IGNtZD8uY29tbWFuZCkgcmV0dXJuIGZpbGVMaXN0KClcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gZGlzbWlzc0NvbXBsZXRpb24oKSB7XG4gICAgc2V0Q29tcGxldGluZyhmYWxzZSlcbiAgICBzZXRDb21wSW5kZXgoMClcbiAgfVxuXG4gIGZ1bmN0aW9uIGFjY2VwdENvbXBsZXRpb24odmFsdWUsIGN0eCwgY2FuZGlkYXRlKSB7XG4gICAgc2V0SW5wdXQoYXBwbHlDb21wbGV0aW9uKHZhbHVlLCBjdHgsIGNhbmRpZGF0ZSkpXG4gICAgZGlzbWlzc0NvbXBsZXRpb24oKVxuICB9XG5cbiAgZnVuY3Rpb24gc2VuZCh0ZXh0KSB7XG4gICAgaWYgKHZpZXdlZEFnZW50SWQoKSB8fCB2aWV3ZWRTaGVsbElkKCkpIHJldHVyblxuICAgIGNvbnN0IHZhbHVlID0gdGV4dC50cmltKClcbiAgICBpZiAoIXZhbHVlKSByZXR1cm5cbiAgICBkaXNtaXNzQ29tcGxldGlvbigpXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgY29uc3QgW25hbWUsIC4uLnJlc3RdID0gdmFsdWUuc2xpY2UoMSkuc3BsaXQoL1xccysvKVxuICAgICAgY29uc3QgbWF0Y2ggPSBhbGxDb21tYW5kcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBzZXRJbnB1dCgnJylcbiAgICAgICAgcnVuQ29tbWFuZChtYXRjaCwgcmVzdC5qb2luKCcgJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBzZXRTZW50KChzKSA9PiBbLi4ucywgeyB0ZXh0OiB2YWx1ZSwgYXQ6IERhdGUubm93KCkgfV0pXG4gICAgc2V0SGlzdElkeCgtMSlcbiAgICBhcHBlbmRQcm9tcHQocm9vdCwgdmFsdWUpLmNhdGNoKCgpID0+IHt9KVxuICAgIGlmIChidXN5KCkpIHtcbiAgICAgIHNldFF1ZXVlZCgocSkgPT4gWy4uLnEsIHZhbHVlXSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBleGVjdXRlVHVybih2YWx1ZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGludGVycnVwdCgpIHtcbiAgICBpZiAoIWJ1c3koKSkgcmV0dXJuXG4gICAgY29uc3QgcmVxdWVzdCA9IHF1ZXN0aW9uUmVxdWVzdCgpXG4gICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgIHNldFF1ZXN0aW9uUmVxdWVzdChudWxsKVxuICAgICAgcmVmcy5mb2N1c0NvbXBvc2VyQWZ0ZXJRdWVzdGlvbiA9IHRydWVcbiAgICAgIHJlcXVlc3QucmVzb2x2ZSh7IGNhbmNlbGxlZDogdHJ1ZSB9KVxuICAgIH1cbiAgICByZWZzLmFib3J0Py5hYm9ydCgpXG4gIH1cblxuICBjb25zdCBmbXRUb2tlbnMgPSAobikgPT4gKG4gPj0gMTAwMCA/IGAkeyhuIC8gMTAwMCkudG9GaXhlZCgxKX1rYCA6IFN0cmluZyhuKSlcblxuICBhc3luYyBmdW5jdGlvbiByZWZyZXNoTWVtb3JpZXMoKSB7XG4gICAgc2V0TWVtb3J5TGlzdChhd2FpdCBib290Lm1lbW9yeS5saXN0KCkuY2F0Y2goKCkgPT4gW10pKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZm9yZ2V0TWVtb3J5KG0pIHtcbiAgICBjb25zdCBhcm1lZCA9IHJlZnMuZm9yZ2V0QXJtXG4gICAgaWYgKCFhcm1lZCB8fCBhcm1lZC5maWxlICE9PSBtLmZpbGUgfHwgRGF0ZS5ub3coKSAtIGFybWVkLmF0ID4gMzAwMCkge1xuICAgICAgcmVmcy5mb3JnZXRBcm0gPSB7IGZpbGU6IG0uZmlsZSwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgcmV0dXJuIGZsYXNoKGBjdHJsK3ggYWdhaW4gdG8gZm9yZ2V0IFwiJHttLm5hbWV9XCJgKVxuICAgIH1cbiAgICByZWZzLmZvcmdldEFybSA9IG51bGxcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYm9vdC5tZW1vcnkuZm9yZ2V0KG0ubmFtZSlcbiAgICAgIGF3YWl0IHJlZnJlc2hNZW1vcmllcygpXG4gICAgICBmbGFzaChgZm9yZ290ICR7bS5uYW1lfSAoJHttLnNjb3BlfSlgKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGZvcmdldCBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gb3BlbkNvbnRleHRQYW5lbCgpIHtcbiAgICBjb25zdCBlc3QgPSAodGV4dCkgPT4gTWF0aC5yb3VuZChTdHJpbmcodGV4dCkubGVuZ3RoIC8gNClcbiAgICBjb25zdCB0b2sgPSAobikgPT4gYH4ke2ZtdFRva2VucyhuKX0gdG9rYFxuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlZCgpXG5cbiAgICBjb25zdCBtZW1vcnlJbmRleFRleHQgPSBtZW1vcnlJbmRleChhd2FpdCBib290Lm1lbW9yeS5saXN0KCkuY2F0Y2goKCkgPT4gW10pLCBib290LnJvb3QpXG4gICAgY29uc3Qgc2tpbGxMaXN0ID0gYm9vdC5za2lsbHMubGlzdCgpXG4gICAgY29uc3QgZmlsZXMgPSBzdGFydHVwQ29udGV4dC5maWxlc1xuICAgIGNvbnN0IHN5c3RlbUZ1bGwgPSBidWlsZFN5c3RlbVByb21wdCh7IGN3ZCwgY29udGV4dEZpbGVzOiBmaWxlcywgc2tpbGxzOiBza2lsbExpc3QsIG1lbW9yeUluZGV4VGV4dCB9KVxuICAgIGNvbnN0IHN5c3RlbUJhc2UgPSBidWlsZFN5c3RlbVByb21wdCh7IGN3ZCwgY29udGV4dEZpbGVzOiBbXSwgc2tpbGxzOiBbXSwgbWVtb3J5SW5kZXhUZXh0OiAnJyB9KVxuICAgIGNvbnN0IHVzZXJUb29sU2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KS5jYXRjaCgoKSA9PiAoeyB0b29sczogW10sIGVycm9yczogW10gfSkpXG4gICAgY29uc3QgeyB0b29scyB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgICBjd2QsXG4gICAgICB0cmFja2VyLFxuICAgICAgc2tpbGxzOiBib290LnNraWxscyxcbiAgICAgIHNoZWxsczogYm9vdC5zaGVsbHMsXG4gICAgICB3YWtldXBzOiBib290Lndha2V1cHMsXG4gICAgICBtZW1vcnk6IGJvb3QubWVtb3J5LFxuICAgICAgZHJlZGdlOiBib290LmRyZWRnZSxcbiAgICAgIG1jcFRvb2xzOiBtY3AudG9vbHMoKSxcbiAgICAgIHVzZXJUb29sczogdXNlclRvb2xTY2FuLnRvb2xzLFxuICAgIH0pXG4gICAgY29uc3QgdG9vbFRva2VucyA9IGVzdChKU09OLnN0cmluZ2lmeSh0b29scykpXG5cbiAgICBjb25zdCBoaXN0b3J5ID0gc3RhdGUucHJvdmlkZXJIaXN0b3J5XG4gICAgY29uc3QgY29tcGFjdGVkID0gaGlzdG9yeVswXT8ucm9sZSA9PT0gJ3VzZXInXG4gICAgICAmJiBzdGF0ZS5oaXN0b3J5RXZlbnRJZHNbMF0gPT09IG51bGxcbiAgICAgICYmIFN0cmluZyhoaXN0b3J5WzBdLmNvbnRlbnQpLnN0YXJ0c1dpdGgoJ1tzeXN0ZW0gbm90aWZpY2F0aW9uXSBUaGUgZWFybGllciBwb3J0aW9uJylcbiAgICBjb25zdCBzdW1tYXJ5VG9rZW5zID0gY29tcGFjdGVkID8gZXN0KGhpc3RvcnlbMF0uY29udGVudCkgOiAwXG4gICAgY29uc3QgbWVzc2FnZXMgPSBjb21wYWN0ZWQgPyBoaXN0b3J5LnNsaWNlKDEpIDogaGlzdG9yeVxuICAgIGNvbnN0IG1lc3NhZ2VUb2tlbnMgPSBlc3QoSlNPTi5zdHJpbmdpZnkobWVzc2FnZXMpKVxuXG4gICAgY29uc3Qgcm93cyA9IFtcbiAgICAgIHsgbmFtZTogJ3N5c3RlbSBwcm9tcHQnLCBkZXNjOiAnaWRlbnRpdHksIGVudmlyb25tZW50LCB0b29sIGd1aWRhbmNlJywgbm90ZTogdG9rKGVzdChzeXN0ZW1CYXNlKSkgfSxcbiAgICAgIHsgbmFtZTogYHRvb2wgc2NoZW1hcyAoJHt0b29scy5sZW5ndGh9KWAsIGRlc2M6IHRvb2xzLm1hcCgodCkgPT4gdC5uYW1lKS5qb2luKCcgXHUwMEI3ICcpLCBub3RlOiB0b2sodG9vbFRva2VucykgfSxcbiAgICBdXG4gICAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgbmFtZTogYHByb2plY3QgaW5zdHJ1Y3Rpb25zICgke2ZpbGVzLmxlbmd0aH0pYCxcbiAgICAgICAgZGVzYzogZmlsZXMubWFwKChmKSA9PiBmLnBhdGgucmVwbGFjZShgJHtib290LnJvb3R9L2AsICcnKSkuam9pbignLCAnKSxcbiAgICAgICAgbm90ZTogdG9rKGZpbGVzLnJlZHVjZSgoc3VtLCBmKSA9PiBzdW0gKyBlc3QoZi5jb250ZW50KSwgMCkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHNraWxsTGlzdC5sZW5ndGgpIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIG5hbWU6IGBza2lsbHMgaW5kZXggKCR7c2tpbGxMaXN0Lmxlbmd0aH0pYCxcbiAgICAgICAgZGVzYzogc2tpbGxMaXN0Lm1hcCgocykgPT4gcy5uYW1lKS5qb2luKCcsICcpLFxuICAgICAgICBub3RlOiB0b2soZXN0KHNraWxsTGlzdC5tYXAoKHMpID0+IGAtICR7cy5uYW1lfTogJHtzLmRlc2NyaXB0aW9ufWApLmpvaW4oJ1xcbicpKSksXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAobWVtb3J5SW5kZXhUZXh0KSB7XG4gICAgICByb3dzLnB1c2goeyBuYW1lOiAnbWVtb3J5IGluZGV4JywgZGVzYzogJ29uZSBsaW5lIHBlciBzYXZlZCBtZW1vcnknLCBub3RlOiB0b2soZXN0KG1lbW9yeUluZGV4VGV4dCkpIH0pXG4gICAgfVxuICAgIGlmIChjb21wYWN0ZWQpIHtcbiAgICAgIHJvd3MucHVzaCh7IG5hbWU6ICdjb21wYWN0aW9uIHN1bW1hcnknLCBkZXNjOiAnc3RhbmRzIGluIGZvciBldmVyeXRoaW5nIGJlZm9yZSB0aGUgbGFzdCBjb21wYWN0Jywgbm90ZTogdG9rKHN1bW1hcnlUb2tlbnMpIH0pXG4gICAgfVxuICAgIHJvd3MucHVzaCh7XG4gICAgICBuYW1lOiBgY29udmVyc2F0aW9uICgke21lc3NhZ2VzLmxlbmd0aH0gbWVzc2FnZXMpYCxcbiAgICAgIGRlc2M6IGNvbXBhY3RlZCA/ICdrZXB0IHZlcmJhdGltIHNpbmNlIHRoZSBsYXN0IGNvbXBhY3QnIDogJ2V2ZXJ5IG1lc3NhZ2UgdGhpcyBzZXNzaW9uJyxcbiAgICAgIG5vdGU6IHRvayhtZXNzYWdlVG9rZW5zKSxcbiAgICB9KVxuXG4gICAgaWYgKHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgJiYgc3RhdGUubGFzdFByb21wdE1vZGVsID09PSBtb2RlbCgpLm5hbWUpIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIG5hbWU6ICdsYXN0IG1lYXN1cmVkIHJlcXVlc3QnLFxuICAgICAgICBkZXNjOiAncHJvdmlkZXItcmVwb3J0ZWQgaW5wdXQgdG9rZW5zLCB0aGUgbnVtYmVyIGJlaGluZCBjdHggJScsXG4gICAgICAgIG5vdGU6IGAke3N0YXRlLmxhc3RQcm9tcHRUb2tlbnMudG9Mb2NhbGVTdHJpbmcoKX0gdG9rYCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dFNlZ21lbnRzID0gW1xuICAgICAgeyBsYWJlbDogJ3N5c3RlbScsIHRva2VuczogZXN0KHN5c3RlbUJhc2UpIH0sXG4gICAgICB7IGxhYmVsOiAndG9vbHMnLCB0b2tlbnM6IHRvb2xUb2tlbnMgfSxcbiAgICAgIHsgbGFiZWw6ICdwcm9qZWN0JywgdG9rZW5zOiBNYXRoLm1heCgwLCBlc3Qoc3lzdGVtRnVsbCkgLSBlc3Qoc3lzdGVtQmFzZSkpIH0sXG4gICAgICAuLi4oc3VtbWFyeVRva2VucyA/IFt7IGxhYmVsOiAnc3VtbWFyeScsIHRva2Vuczogc3VtbWFyeVRva2VucyB9XSA6IFtdKSxcbiAgICAgIHsgbGFiZWw6ICdjb252ZXJzYXRpb24nLCB0b2tlbnM6IG1lc3NhZ2VUb2tlbnMgfSxcbiAgICBdLmZpbHRlcigoc2VnbWVudCkgPT4gc2VnbWVudC50b2tlbnMgPiAwKVxuICAgICAgLm1hcCgoc2VnbWVudCwgaSkgPT4gKHsgLi4uc2VnbWVudCwgY29sb3I6IFsnIzY3YjdmZicsICcjYzc5MmVhJywgJyNmN2M2NmEnLCAnI2Y3OGM2YycsICcjNmJlNzk1J11baV0gfSkpXG5cbiAgICBzZXRJbmZvUGFuZWwoe1xuICAgICAgdGl0bGU6IGBDb250ZXh0IFx1MDBCNyAke21vZGVsKCkubmFtZX1gLFxuICAgICAgcm93cyxcbiAgICAgIG92ZXJ2aWV3OiBjb250ZXh0U2VnbWVudHMubGVuZ3RoID8geyBzZWdtZW50czogY29udGV4dFNlZ21lbnRzIH0gOiBudWxsLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB0aGVtZUl0ZW1zID0gKCkgPT4gW1xuICAgIC4uLnBhbGV0dGVMaXN0KCksXG4gICAgeyBrZXk6ICdhdXRvJywgZGVzYzogYGZvbGxvdyB0aGUgdGVybWluYWwgKGRldGVjdGVkOiAke2Jvb3QuZGV0ZWN0ZWRUaGVtZSB8fCAnZGFyayd9KWAgfSxcbiAgXVxuXG4gIGZ1bmN0aW9uIHBhbGV0dGVGb3IocHJlZikge1xuICAgIHJldHVybiBwcmVmID09PSAnYXV0bycgPyBib290LmRldGVjdGVkVGhlbWUgfHwgJ2RhcmsnIDogcHJlZlxuICB9XG5cbiAgZnVuY3Rpb24gcHJldmlld1BhbGV0dGUocHJlZikge1xuICAgIHNldFBhbGV0dGUocGFsZXR0ZUZvcihwcmVmKSlcbiAgICBib290LnNldFRoZW1lPy4oeyBhY2NlbnQ6IGFjY2VudCgpLCBtdXRlZDogTVVURUQgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGFwcGx5VGhlbWVQcmVmKHByZWYpIHtcbiAgICBzZXRUaGVtZVByZWYocHJlZilcbiAgICBwcmV2aWV3UGFsZXR0ZShwcmVmKVxuICAgIHdyaXRlQ29uZmlnKHsgdGhlbWU6IHByZWYgPT09ICdhdXRvJyA/IHVuZGVmaW5lZCA6IHByZWYgfSkuY2F0Y2goKCkgPT4ge30pXG4gICAgZmxhc2gocHJlZiA9PT0gJ2F1dG8nID8gYHRoZW1lOiBhdXRvIFx1MDBCNyBmb2xsb3dpbmcgdGhlIHRlcm1pbmFsICgke3BhbGV0dGVGb3IoJ2F1dG8nKX0pYCA6IGB0aGVtZTogJHtwcmVmfWApXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBydW5Db21tYW5kKGMsIGFyZ3MgPSAnJykge1xuICAgIGlmICh0eXBlb2YgYXJncyAhPT0gJ3N0cmluZycpIGFyZ3MgPSAnJ1xuICAgIHNldElucHV0KCcnKVxuICAgIHNldENtZEN5Y2xlKG51bGwpXG4gICAgaWYgKGMubmFtZSA9PT0gJ3JlbmFtZScpIHtcbiAgICAgIGNvbnN0IGF1dG9tYXRpY1RpdGxlID0gdXNlckVudHJpZXMoZGVyaXZlZCgpKVswXT8udGV4dC50cmltKCkuc2xpY2UoMCwgMjAwKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ3RpdGxlJywgeyB0ZXh0OiBhcmdzIHx8IG51bGwgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGlmIChhcmdzKSBmbGFzaChgc2Vzc2lvbiByZW5hbWVkIHRvIFwiJHthcmdzfVwiYClcbiAgICAgIGVsc2UgaWYgKGF1dG9tYXRpY1RpdGxlKSBmbGFzaChgc2Vzc2lvbiBuYW1lIHJlc2V0IHRvIFwiJHthdXRvbWF0aWNUaXRsZX1cImApXG4gICAgICBlbHNlIGZsYXNoKCdzZXNzaW9uIG5hbWUgcmVzZXQnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb2xvcicpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoU0VTU0lPTl9DT0xPUlMpXG4gICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKFNFU1NJT05fQ09MT1JTKVxuICAgICAgbGV0IHZhbHVlXG4gICAgICBpZiAoIWFyZ3MpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9ICh2YWx1ZXMuaW5kZXhPZihkZXJpdmVkKCkuY29sb3IpICsgMSkgJSB2YWx1ZXMubGVuZ3RoXG4gICAgICAgIHZhbHVlID0gdmFsdWVzW25leHRdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IFNFU1NJT05fQ09MT1JTW2FyZ3MudG9Mb3dlckNhc2UoKV0gfHwgKC9eI1swLTlhLWZBLUZdezZ9JC8udGVzdChhcmdzKSA/IGFyZ3MgOiBudWxsKVxuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gZmxhc2goYHVzYWdlOiAvY29sb3IgdG8gY3ljbGUsIG9yIC9jb2xvciA8JHtuYW1lcy5qb2luKCd8Jyl9fCNoZXg+YClcbiAgICAgIH1cbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdjb2xvcicsIHsgdmFsdWUgfSkpXG4gICAgICBlbnN1cmVTZXNzaW9uKClcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGNvbnN0IG5hbWUgPSBuYW1lc1t2YWx1ZXMuaW5kZXhPZih2YWx1ZSldXG4gICAgICBmbGFzaChgc2Vzc2lvbiBjb2xvcjogJHtuYW1lIHx8IHZhbHVlfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NvbmZpZycpIHtcbiAgICAgIHNldFNob3dDb25maWdQYW5lbCh0cnVlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICd0aGVtZScpIHtcbiAgICAgIGlmICghYXJncykgcmV0dXJuIHNldFNob3dUaGVtZVBhbmVsKHRydWUpXG4gICAgICBjb25zdCBjaG9pY2UgPSBhcmdzLnRvTG93ZXJDYXNlKClcbiAgICAgIGNvbnN0IHZhbGlkID0gWy4uLnBhbGV0dGVMaXN0KCkubWFwKChwKSA9PiBwLmtleSksICdhdXRvJ11cbiAgICAgIGlmICghdmFsaWQuaW5jbHVkZXMoY2hvaWNlKSkgcmV0dXJuIGZsYXNoKGB0aGVtZTogJHtwYWxldHRlTmFtZSgpfSBcdTAwQjcgL3RoZW1lIDwke3ZhbGlkLmpvaW4oJ3wnKX0+YClcbiAgICAgIGFwcGx5VGhlbWVQcmVmKGNob2ljZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5za2lsbCkge1xuICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHNraWxscy5sb2FkKGMubmFtZSlcbiAgICAgIGlmICghYm9keSkgcmV0dXJuIGZsYXNoKGBjb3VsZCBub3QgbG9hZCBza2lsbCAke2MubmFtZX1gKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ3NraWxsJywgeyBuYW1lOiBjLm5hbWUsIHNvdXJjZTogJ3VzZXInIH0pKVxuICAgICAgc2VuZChgRm9sbG93IHRoZXNlIHNraWxsIGluc3RydWN0aW9ucyBub3cuXFxuXFxuJHtib2R5fWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMuY29tbWFuZCkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJvb3QuY29tbWFuZHMubG9hZChjLm5hbWUsIGFyZ3MpXG4gICAgICBpZiAoIXRleHQpIHJldHVybiBmbGFzaChgY291bGQgbm90IGxvYWQgY29tbWFuZCAke2MubmFtZX1gKVxuICAgICAgc2VuZCh0ZXh0KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb25uZWN0JykgcmV0dXJuIG9wZW5Db25uZWN0UGFuZWwoKVxuICAgIGlmIChjLm5hbWUgPT09ICdkZWVwLXJlc2VhcmNoJykge1xuICAgICAgY29uc3QgbWF0Y2ggPSBhcmdzLm1hdGNoKC9eKD86LS1hZ2VudHMoPzo9fFxccyspKFxcZCspXFxzKyk/KFtcXHNcXFNdKykkLylcbiAgICAgIGNvbnN0IHF1ZXN0aW9uID0gbWF0Y2g/LlsyXT8udHJpbSgpXG4gICAgICBjb25zdCBhZ2VudExpbWl0ID0gbWF0Y2g/LlsxXSA/IE51bWJlcihtYXRjaFsxXSkgOiByZXNlYXJjaEFnZW50TGltaXQoKVxuICAgICAgaWYgKCFxdWVzdGlvbiB8fCAhTnVtYmVyLmlzSW50ZWdlcihhZ2VudExpbWl0KSB8fCBhZ2VudExpbWl0IDwgMSB8fCBhZ2VudExpbWl0ID4gMTAwKSByZXR1cm4gZmxhc2goJ3VzYWdlOiAvZGVlcC1yZXNlYXJjaCBbLS1hZ2VudHMgMS0xMDBdIDxxdWVzdGlvbj4nKVxuICAgICAgaWYgKCFib290LnJlc2VhcmNoTW9kZWwgfHwgIW1vZGVscy5zb21lKChtKSA9PiBtLm5hbWUgPT09IGJvb3QucmVzZWFyY2hNb2RlbCAmJiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpKSB7XG4gICAgICAgIHNldFBlbmRpbmdSZXNlYXJjaCh7IHF1ZXN0aW9uLCBhZ2VudExpbWl0IH0pXG4gICAgICAgIHNldFNob3dSZXNlYXJjaE1vZGVsUGFuZWwodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICByZWZzLm5leHRSZXNlYXJjaEFnZW50TGltaXQgPSBhZ2VudExpbWl0XG4gICAgICBzZW5kKGBDb25kdWN0IGRlZXAgcmVzZWFyY2ggb24gdGhlIGZvbGxvd2luZyBxdWVzdGlvbjogJHtxdWVzdGlvbn1cXG5cXG5GaXJzdCBjYWxsIGFnZW50X3BsYW4uIEludGVycHJldCBhbnkgYWdlbnQtY291bnQgaW5zdHJ1Y3Rpb24gaW4gdGhlIHVzZXIncyBxdWVzdGlvbiBzZW1hbnRpY2FsbHkgYW5kIGRlY2xhcmUgdGhhdCBjb3VudDsgaWYgdGhlIHVzZXIgZ2F2ZSBubyBjb3VudCwgZGVjbGFyZSB0aGUgY29uZmlndXJlZCBkZWZhdWx0IGJ1ZGdldCBvZiAke2FnZW50TGltaXR9LiBUaGVuIHVzZSBhZ2VudF9zdGFydCB3aXRoaW4gdGhhdCBlbmZvcmNlZCBidWRnZXQgdG8gaW52ZXN0aWdhdGUgZGlzdGluY3QgYW5nbGVzIHdpdGggdGhlIGNvbmZpZ3VyZWQgcmVzZWFyY2ggd29ya2VyIG1vZGVsLiBDb2xsZWN0IHdvcmtlcnMgd2l0aCBhZ2VudF9jb2xsZWN0LCBjcml0aWNhbGx5IGV2YWx1YXRlIHRoZWlyIGV2aWRlbmNlLCBhbmQgc3ludGhlc2l6ZSBhIGNvbmNpc2UgY2l0ZWQgcmVwb3J0LiBXaGVuIHRoZSBidWRnZXQgcGVybWl0cywgdXNlIGluZGVwZW5kZW50IHdvcmtlcnMgdG8gY2hlY2sgaW1wb3J0YW50IGRpc3B1dGVkIG9yIHdlYWsgY2xhaW1zLiBEbyBub3QgZGVsZWdhdGUgZmluYWwgc3ludGhlc2lzLiBEbyBub3QgZW1pdCBwcm9ncmVzcyB1cGRhdGVzIHdoaWxlIHJlc2VhcmNoaW5nOyBQaWNvIGRpc3BsYXlzIGFnZW50IGFjdGl2aXR5IGF1dG9tYXRpY2FsbHkuYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnbW9kZWwnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBzZXRTaG93TW9kZWxQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgZXhhY3QgPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBhcmdzKVxuICAgICAgY29uc3QgYWRob2MgPSAhZXhhY3QgJiYgYXJncy5pbmNsdWRlcygnLycpID8gYWRob2NNb2RlbChhcmdzLCBib290LnByb3ZpZGVycykgOiBudWxsXG4gICAgICBjb25zdCBzY29yZWQgPSBleGFjdCB8fCBhZGhvY1xuICAgICAgICA/IFtdXG4gICAgICAgIDogbW9kZWxzXG4gICAgICAgICAgICAubWFwKChtKSA9PiBbZnV6enlTY29yZShhcmdzLCBtLm5hbWUpLCBtXSlcbiAgICAgICAgICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgICBjb25zdCBwaWNrID0gZXhhY3QgfHwgYWRob2MgfHwgc2NvcmVkWzBdPy5bMV1cbiAgICAgIGlmICghcGljaykgcmV0dXJuIGZsYXNoKGBubyBhdmFpbGFibGUgbW9kZWwgbWF0Y2hlcyBcIiR7YXJnc31cImApXG4gICAgICBpZiAocGljay5hdmFpbGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmxhc2goYHNldCAke3BpY2sua2V5SGludH0gaW4geW91ciBlbnZpcm9ubWVudCB0byB1c2UgJHtwaWNrLm5hbWV9YClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtb2RlbF9zd2l0Y2gnLCB7IGZyb206IG1vZGVsKCkubmFtZSwgdG86IHBpY2submFtZSB9KSlcbiAgICAgIHNldE1vZGVsKHBpY2spXG4gICAgICBmbGFzaChhZGhvYyA/IGBtb2RlbCBzZXQgdG8gJHtwaWNrLm5hbWV9IChub3QgaW4gY2F0YWxvZywgcHJpY2luZyB1bmtub3duKWAgOiBgbW9kZWwgc2V0IHRvICR7cGljay5uYW1lfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2VmZm9ydCcpIHtcbiAgICAgIGlmICghZWZmb3J0QXBwbGllcygpKSByZXR1cm4gZmxhc2goYCR7bW9kZWwoKS5uYW1lfSBkb2VzIG5vdCBzdXBwb3J0IGVmZm9ydCBjb250cm9sYClcbiAgICAgIGlmICghYXJncykgcmV0dXJuIHNldFNob3dFZmZvcnRQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgbGV2ZWwgPSBhcmdzLnRvTG93ZXJDYXNlKClcbiAgICAgIGlmIChsZXZlbCA9PT0gJ2RlZmF1bHQnKSByZXR1cm4gc2V0U2Vzc2lvbkVmZm9ydChudWxsKVxuICAgICAgaWYgKCFFRkZPUlRfTEVWRUxTLnNvbWUoKGwpID0+IGwua2V5ID09PSBsZXZlbCkpIHJldHVybiBmbGFzaCgndXNhZ2U6IC9lZmZvcnQgPGRlZmF1bHR8bG93fG1lZGl1bXxoaWdofG1heD4nKVxuICAgICAgcmV0dXJuIHNldFNlc3Npb25FZmZvcnQobGV2ZWwpXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICd1cGRhdGUnKSB7XG4gICAgICBpZiAoaXNEZXZJbnN0YWxsKGltcG9ydC5tZXRhLnVybCkpIHJldHVybiBmbGFzaCgndGhpcyBwaWNvIHJ1bnMgZnJvbSBhIHNvdXJjZSBjaGVja291dCBcdTAwQjcgdXBkYXRlIGl0IHdpdGggZ2l0JylcbiAgICAgIGNvbnN0IGxhdGVzdCA9IGF3YWl0IGZldGNoTGF0ZXN0VmVyc2lvbigpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBpZiAobGF0ZXN0ICYmICFuZXdlclZlcnNpb24odmVyc2lvbiwgbGF0ZXN0KSkgcmV0dXJuIGZsYXNoKGBwaWNvIHYke3ZlcnNpb259IGlzIGFscmVhZHkgdGhlIGxhdGVzdGApXG4gICAgICBmbGFzaChgdXBkYXRpbmcke2xhdGVzdCA/IGAgdG8gdiR7bGF0ZXN0fWAgOiAnJ30uLi5gKVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuVXBkYXRlKClcbiAgICAgIGlmIChyZXN1bHQub2spIHJldHVybiBmbGFzaChgdXBkYXRlZCR7bGF0ZXN0ID8gYCB0byB2JHtsYXRlc3R9YCA6ICcnfSBcdTAwQjcgcmVzdGFydCBwaWNvIHRvIHVzZSBpdGApXG4gICAgICByZXR1cm4gZmxhc2goYHVwZGF0ZSBmYWlsZWQ6ICR7cmVzdWx0Lm91dHB1dC5zbGljZSgwLCAxMDApfWApXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb250ZXh0JykgcmV0dXJuIG9wZW5Db250ZXh0UGFuZWwoKVxuICAgIGlmIChjLm5hbWUgPT09ICdoaXN0b3J5JykgcmV0dXJuIG9wZW5IaXN0b3J5U2VhcmNoKClcbiAgICBpZiAoYy5uYW1lID09PSAnaGVscCcpIHJldHVybiBzZXRWaWV3KCdoZWxwJylcbiAgICBpZiAoYy5uYW1lID09PSAnbWNwJykgcmV0dXJuIHNldFNob3dNY3BQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICd3YWtldXBzJykgcmV0dXJuIHNldFNob3dXYWtldXBzUGFuZWwodHJ1ZSlcbiAgICBpZiAoYy5uYW1lID09PSAnbWVtb3J5Jykge1xuICAgICAgYXdhaXQgcmVmcmVzaE1lbW9yaWVzKClcbiAgICAgIHJldHVybiBzZXRTaG93TWVtb3J5UGFuZWwodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Jlc3VtZScpIHtcbiAgICAgIHNldFNob3dSZXN1bWVQYW5lbCh0cnVlKVxuICAgICAgcmVmcmVzaFNlc3Npb25zKHJlc3VtZVNjb3BlKCkpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Byb2plY3QnKSByZXR1cm4gb3BlblByb2plY3RQYW5lbCgpXG4gICAgaWYgKGMubmFtZSA9PT0gJ2N3ZCcpIHtcbiAgICAgIGNvbnN0IHJvb3ROb3RlID0gYm9vdC5yb290ICE9PSBib290LmN3ZCA/IGAgXHUwMEI3IHByb2plY3Qgcm9vdCAke3Nob3J0ZW5QYXRoKGJvb3Qucm9vdCl9YCA6ICcnXG4gICAgICByZXR1cm4gZmxhc2goYCR7Ym9vdC5kaXNwbGF5Q3dkfSR7cm9vdE5vdGV9YClcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3NraWxscycpIHtcbiAgICAgIHJldHVybiBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogJ1NraWxscycsXG4gICAgICAgIHJvd3M6IHNraWxscy5saXN0KCkubWFwKChzKSA9PiAoeyBuYW1lOiBzLm5hbWUsIGRlc2M6IHMuZGVzY3JpcHRpb24sIG5vdGU6IHMuc291cmNlIH0pKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb21tYW5kcycpIHtcbiAgICAgIHJldHVybiBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogJ0NvbW1hbmRzJyxcbiAgICAgICAgcm93czogW1xuICAgICAgICAgIC4uLkNPTU1BTkRTLm1hcCgoY21kKSA9PiAoeyBuYW1lOiBgLyR7Y21kLm5hbWV9YCwgZGVzYzogY21kLmRlc2MsIG5vdGU6ICdidWlsdGluJyB9KSksXG4gICAgICAgICAgLi4uYm9vdC5jb21tYW5kcy5saXN0KCkubWFwKChjbWQpID0+ICh7IG5hbWU6IGAvJHtjbWQubmFtZX1gLCBkZXNjOiBjbWQuZGVzY3JpcHRpb24sIG5vdGU6IGNtZC5zb3VyY2UgfSkpLFxuICAgICAgICBdLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Rvb2xzJykge1xuICAgICAgY29uc3Qgc2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2Q6IGJvb3QuY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgICAgY29uc3QgeyB0b29sczogYnVpbHRpbnMgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgICBjd2Q6IGJvb3QuY3dkLFxuICAgICAgICB0cmFja2VyLFxuICAgICAgICBza2lsbHMsXG4gICAgICAgIHNoZWxsczogYm9vdC5zaGVsbHMsXG4gICAgICAgIHdha2V1cHM6IGJvb3Qud2FrZXVwcyxcbiAgICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgICAgZHJlZGdlOiBib290LmRyZWRnZSxcbiAgICAgIH0pXG4gICAgICBjb25zdCBtY3BDb3VudCA9IG1jcC50b29scygpLmxlbmd0aFxuICAgICAgc2V0SW5mb1BhbmVsKHtcbiAgICAgICAgdGl0bGU6IGBUb29scyR7bWNwQ291bnQgPyBgIFx1MDBCNyBwbHVzICR7bWNwQ291bnR9IE1DUCAoc2VlIC9tY3ApYCA6ICcnfWAsXG4gICAgICAgIHJvd3M6IFtcbiAgICAgICAgICAuLi5idWlsdGlucy5tYXAoKHQpID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzYzogdC5kZXNjcmlwdGlvbi5zcGxpdCgnXFxuJylbMF0sIG5vdGU6ICdidWlsdGluJyB9KSksXG4gICAgICAgICAgLi4uc2Nhbi50b29scy5tYXAoKHQpID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzYzogdC5kZXNjcmlwdGlvbiwgbm90ZTogYCR7dC5zb3VyY2V9IFx1MDBCNyAke3QuX2ZpbGUuc3BsaXQoJy8nKS5wb3AoKX1gIH0pKSxcbiAgICAgICAgICAuLi5zY2FuLmVycm9ycy5tYXAoKGUpID0+ICh7IG5hbWU6IGUuZmlsZS5zcGxpdCgnLycpLnBvcCgpLCBkZXNjOiBlLmVycm9yLCBub3RlOiAnYnJva2VuJyB9KSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICduZXcnIHx8IGMubmFtZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIGlmIChjLm5hbWUgPT09ICdkZWxldGUnKSB7XG4gICAgICAgIGlmICghcmVmcy5zZXNzaW9uKSByZXR1cm4gZmxhc2goJ25vIGN1cnJlbnQgc2Vzc2lvbiB0byBkZWxldGUnKVxuICAgICAgICBzZXRTaG93RGVsZXRlQ29uZmlybSh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHJlZnMuc2Vzc2lvbiA9IG51bGxcbiAgICAgIHJlZnMuYWxsRXZlbnRzID0gW11cbiAgICAgIHJlZnMucGVyc2lzdGVkID0gMFxuICAgICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgICAgYWdlbnRzLmNsZWFyKClcbiAgICAgIHNldFZpZXdlZEFnZW50SWQobnVsbClcbiAgICAgIHNldFZpZXdlZFNoZWxsSWQobnVsbClcbiAgICAgIGZtLmZvY3VzKCdpbnB1dCcpXG4gICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICBzZXRTZW50KFtdKVxuICAgICAgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgICBzZXRFZmZvcnQoZGVmYXVsdEVmZm9ydCgpKVxuICAgICAgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKCduZXcgc2Vzc2lvbicpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Jld2luZCcpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIGlmICh1c2VyRW50cmllcyhkZXJpdmVkKCkpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZsYXNoKCdub3RoaW5nIHRvIHJld2luZCB5ZXQnKVxuICAgICAgc2V0UmV3aW5kU3RlcCgncGljaycpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NsZWFyJykge1xuICAgICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ2NsZWFyJywge30pKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgZmxhc2goJ2NvbnZlcnNhdGlvbiBjbGVhcmVkJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29tcGFjdCcpIHJldHVybiBwZXJmb3JtQ29tcGFjdGlvbihhcmdzKVxuICAgIGlmIChjLm5hbWUgPT09ICdjb3N0Jykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzdGF0ZS51c2FnZUJ5TW9kZWwpXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHJldHVybiBmbGFzaCgnbm8gdXNhZ2UgeWV0JylcbiAgICAgIGNvbnN0IGNvc3RPZiA9IChieU1vZGVsKSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyhieU1vZGVsKS5yZWR1Y2UoKHN1bSwgW25hbWUsIHVzYWdlXSkgPT4gc3VtICsgZXN0aW1hdGVDb3N0KGZpbmRNb2RlbChtb2RlbHMsIG5hbWUpLCB1c2FnZSksIDApXG4gICAgICBjb25zdCBzcGVudCA9IGNvc3RPZihzdGF0ZS51c2FnZUJ5TW9kZWwpXG4gICAgICBjb25zdCBhY3RpdmUgPSBjb3N0T2Yoc3RhdGUudXNhZ2VBY3RpdmVCeU1vZGVsKVxuICAgICAgY29uc3QgeyBwcm9tcHRUb2tlbnMsIGNvbXBsZXRpb25Ub2tlbnMgfSA9IHN0YXRlLnVzYWdlXG4gICAgICBjb25zdCBiYXNlID0gYCQke3NwZW50LnRvRml4ZWQoNCl9IHNwZW50IFx1MDBCNyAke3Byb21wdFRva2Vucy50b0xvY2FsZVN0cmluZygpfSBpbiBcdTAwQjcgJHtjb21wbGV0aW9uVG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IG91dGBcbiAgICAgIGZsYXNoKHNwZW50IC0gYWN0aXZlID4gMC4wMDAwNSA/IGAke2Jhc2V9IFx1MDBCNyBjdXJyZW50IGNvbnZlcnNhdGlvbiAkJHthY3RpdmUudG9GaXhlZCg0KX1gIDogYmFzZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnZXhwb3J0Jykge1xuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oY3dkLCBgcGljby1leHBvcnQtJHtEYXRlLm5vdygpfS5tZGApXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgdHJhbnNjcmlwdFRvTWFya2Rvd24oZGVyaXZlZCgpLnRyYW5zY3JpcHQsIHsgdGl0bGU6IGBwaWNvIHNlc3Npb24gXHUwMEI3ICR7Y3dkfWAgfSkpXG4gICAgICBmbGFzaChgZXhwb3J0ZWQgdG8gJHtmaWxlfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWZyZXNoQXV0aFByb3ZpZGVycygpIHtcbiAgICBjb25zdCBvcGVuYWkgPSBhd2FpdCBvcGVuYWlTdGF0dXMoKS5jYXRjaCgoKSA9PiAoeyBjb25uZWN0ZWQ6IGZhbHNlLCBlbWFpbDogbnVsbCB9KSlcbiAgICBzZXRBdXRoUHJvdmlkZXJzKFtcbiAgICAgIHsgaWQ6ICdvcGVuYWknLCBsYWJlbDogJ09wZW5BSSBcdTAwQjcgQ2hhdEdQVCAvIENvZGV4IHBsYW4nLCBjb25uZWN0ZWQ6IG9wZW5haS5jb25uZWN0ZWQsIGVtYWlsOiBvcGVuYWkuZW1haWwgfSxcbiAgICBdKVxuICB9XG5cbiAgZnVuY3Rpb24gb3BlbkNvbm5lY3RQYW5lbCgpIHtcbiAgICBzZXRTaG93Q29ubmVjdFBhbmVsKHRydWUpXG4gICAgcmVmcmVzaEF1dGhQcm92aWRlcnMoKVxuICB9XG5cbiAgZnVuY3Rpb24gY29ubmVjdFByb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgaWYgKHByb3ZpZGVyLmlkICE9PSAnb3BlbmFpJykgcmV0dXJuXG4gICAgc2V0U2hvd0Nvbm5lY3RQYW5lbChmYWxzZSlcbiAgICBmbGFzaCgnb3BlbmluZyB5b3VyIGJyb3dzZXIgZm9yIENoYXRHUFQgc2lnbi1pbi4uLicpXG4gICAgY29ubmVjdE9wZW5BSSgpXG4gICAgICAudGhlbihhc3luYyAoeyBlbWFpbCB9KSA9PiB7XG4gICAgICAgIGJvb3QucHJvdmlkZXJzID0gWy4uLm5ldyBTZXQoWy4uLmJvb3QucHJvdmlkZXJzLCAnY29kZXgnXSldXG4gICAgICAgIGNvbnN0IGNyZWRzID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgICBjb25zdCBjb2RleCA9IChhd2FpdCBsb2FkQ29kZXhNb2RlbHMoY3JlZHMpKS5tYXAoKG0pID0+ICh7IC4uLm0sIGF2YWlsYWJsZTogdHJ1ZSwga2V5SGludDogJy9jb25uZWN0JyB9KSlcbiAgICAgICAgYm9vdC5tb2RlbHMgPSBbLi4uYm9vdC5tb2RlbHMuZmlsdGVyKChtKSA9PiBtLnByb3ZpZGVyICE9PSAnY29kZXgnKSwgLi4uY29kZXhdXG4gICAgICAgIHJlRGVyaXZlKClcbiAgICAgICAgZmxhc2goYGNvbm5lY3RlZCBhcyAke2VtYWlsIHx8ICd5b3VyIENoYXRHUFQgYWNjb3VudCd9IFx1MDBCNyAke2NvZGV4Lmxlbmd0aH0gY29kZXggbW9kZWxzIHVubG9ja2VkIGluIC9tb2RlbGApXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IGZsYXNoKGBjb25uZWN0IGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAxMjApfWApKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdFByb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgaWYgKHByb3ZpZGVyLmlkICE9PSAnb3BlbmFpJykgcmV0dXJuXG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmRpc2Nvbm5lY3RBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSBwcm92aWRlci5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLmRpc2Nvbm5lY3RBcm0gPSB7IGlkOiBwcm92aWRlci5pZCwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgcmV0dXJuIGZsYXNoKGBjdHJsK3ggYWdhaW4gdG8gZGlzY29ubmVjdCAke3Byb3ZpZGVyLmxhYmVsfSAoeW91IHdpbGwgbmVlZCB0byBzaWduIGluIGFnYWluKWApXG4gICAgfVxuICAgIHJlZnMuZGlzY29ubmVjdEFybSA9IG51bGxcbiAgICBhd2FpdCBkaXNjb25uZWN0T3BlbkFJKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgYm9vdC5wcm92aWRlcnMgPSBib290LnByb3ZpZGVycy5maWx0ZXIoKHApID0+IHAgIT09ICdjb2RleCcpXG4gICAgYm9vdC5tb2RlbHMgPSBib290Lm1vZGVscy5tYXAoKG0pID0+IChtLnByb3ZpZGVyID09PSAnY29kZXgnID8geyAuLi5tLCBhdmFpbGFibGU6IGZhbHNlIH0gOiBtKSlcbiAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4Jykgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgcmVmcmVzaEF1dGhQcm92aWRlcnMoKVxuICAgIGZsYXNoKCdkaXNjb25uZWN0ZWQgZnJvbSBDaGF0R1BUJylcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZnJlc2hTZXNzaW9ucyhzY29wZUluZGV4KSB7XG4gICAgc2V0UmVzdW1lTG9hZGluZyh0cnVlKVxuICAgIGxpc3RTZXNzaW9ucyh7IHNjb3BlOiBSRVNVTUVfU0NPUEVTW3Njb3BlSW5kZXhdLCByb290IH0pXG4gICAgICAudGhlbihzZXRSZXN1bWVTZXNzaW9ucylcbiAgICAgIC5maW5hbGx5KCgpID0+IHNldFJlc3VtZUxvYWRpbmcoZmFsc2UpKVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvcnRlblBhdGgocGF0aCkge1xuICAgIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKGhvbWUpID8gcGF0aC5yZXBsYWNlKGhvbWUsICd+JykgOiBwYXRoXG4gIH1cblxuICBmdW5jdGlvbiBvcGVuUHJvamVjdFBhbmVsKCkge1xuICAgIHNldFNob3dQcm9qZWN0UGFuZWwodHJ1ZSlcbiAgICBzZXRQcm9qZWN0c0xvYWRpbmcodHJ1ZSlcbiAgICBsaXN0U2Vzc2lvbnMoeyBzY29wZTogJ2V2ZXJ5d2hlcmUnLCByb290IH0pXG4gICAgICAudGhlbigobWV0YXMpID0+IHtcbiAgICAgICAgY29uc3QgYnlSb290ID0gbmV3IE1hcCgpXG4gICAgICAgIGZvciAoY29uc3QgbSBvZiBtZXRhcykge1xuICAgICAgICAgIGNvbnN0IGVudHJ5ID0gYnlSb290LmdldChtLmhlYWRlci5yb290KVxuICAgICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGJ5Um9vdC5zZXQobS5oZWFkZXIucm9vdCwge1xuICAgICAgICAgICAgICByb290OiBtLmhlYWRlci5yb290LFxuICAgICAgICAgICAgICBwYXRoOiBzaG9ydGVuUGF0aChtLmhlYWRlci5yb290KSxcbiAgICAgICAgICAgICAgbGF0ZXN0OiBtLFxuICAgICAgICAgICAgICBjb3VudDogMSxcbiAgICAgICAgICAgICAgY3VycmVudDogbS5oZWFkZXIucm9vdCA9PT0gYm9vdC5yb290LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuY291bnQrK1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZXRQcm9qZWN0cyhbLi4uYnlSb290LnZhbHVlcygpXSlcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiBzZXRQcm9qZWN0c0xvYWRpbmcoZmFsc2UpKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlUHJvamVjdChwKSB7XG4gICAgaWYgKHAuY3VycmVudCkgcmV0dXJuIGZsYXNoKCdjYW5ub3QgZGVsZXRlIHRoZSBjdXJyZW50IHByb2plY3QgXHUwMEI3IHN3aXRjaCBhd2F5IGZpcnN0JylcbiAgICBjb25zdCBhcm1lZCA9IHJlZnMucHJvamVjdERlbGV0ZUFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQucm9vdCAhPT0gcC5yb290IHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMucHJvamVjdERlbGV0ZUFybSA9IHsgcm9vdDogcC5yb290LCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBkZWxldGUgXCIke3AucGF0aH1cIiBhbmQgaXRzICR7cC5jb3VudH0gJHtwLmNvdW50ID09PSAxID8gJ3Nlc3Npb24nIDogJ3Nlc3Npb25zJ31gKVxuICAgIH1cbiAgICByZWZzLnByb2plY3REZWxldGVBcm0gPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRlbGV0ZVByb2plY3REYXRhKHAucm9vdClcbiAgICAgIHNldFByb2plY3RzKChsaXN0KSA9PiBsaXN0LmZpbHRlcigoeCkgPT4geC5yb290ICE9PSBwLnJvb3QpKVxuICAgICAgZmxhc2goYGRlbGV0ZWQgJHtwLnBhdGh9IFx1MDBCNyAke3AuY291bnR9ICR7cC5jb3VudCA9PT0gMSA/ICdzZXNzaW9uJyA6ICdzZXNzaW9ucyd9IHJlbW92ZWRgKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc3dpdGNoUHJvamVjdChtZXRhKSB7XG4gICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV2aW91c01jcCA9IGJvb3QubWNwXG4gICAgICBjb25zdCBuZXh0ID0gYXdhaXQgYm9vdC5yZWJ1aWxkKG1ldGEuaGVhZGVyLnJvb3QpXG4gICAgICBwcmV2aW91c01jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgcHJvY2Vzcy5jaGRpcihuZXh0LmN3ZClcbiAgICAgIE9iamVjdC5hc3NpZ24oYm9vdCwgbmV4dClcbiAgICAgIGJvb3QuZ2l0LnJldGFyZ2V0KG5leHQucm9vdClcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBcXHgxYl0wO3BpY28gXHUwMEI3ICR7bmV4dC5yb290LnNwbGl0KCcvJykucG9wKCl9XFx4MDdgKVxuICAgICAgbmV4dC5tY3AuY29ubmVjdEFsbCgpXG4gICAgICBzZXRNY3BTZXJ2ZXJzKG5leHQubWNwLmxpc3QoKSlcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIHNldEZpbGVMaXN0KFtdKVxuICAgICAgYXdhaXQgcmVzdW1lU2Vzc2lvbihtZXRhKVxuICAgICAgZmxhc2goYHN3aXRjaGVkIHRvICR7bmV4dC5kaXNwbGF5Q3dkfWApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgc3dpdGNoIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkZWxldGVTZXNzaW9uTWV0YShtZXRhKSB7XG4gICAgY29uc3QgY3VycmVudCA9IHJlZnMuc2Vzc2lvbj8uaWQgPT09IG1ldGEuaGVhZGVyLmlkXG4gICAgaWYgKGN1cnJlbnQgJiYgYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmRlbGV0ZUFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuZmlsZSAhPT0gbWV0YS5maWxlIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuZGVsZXRlQXJtID0geyBmaWxlOiBtZXRhLmZpbGUsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGRlbGV0ZSBcIiR7bWV0YS50aXRsZS5zbGljZSgwLCA1MCl9XCJgKVxuICAgIH1cbiAgICByZWZzLmRlbGV0ZUFybSA9IG51bGxcbiAgICBpZiAoY3VycmVudCkge1xuICAgICAgaWYgKGF3YWl0IGNvbmZpcm1EZWxldGVDdXJyZW50U2Vzc2lvbigpKSByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2Vzc2lvbihtZXRhLmZpbGUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIGZsYXNoKCdzZXNzaW9uIGRlbGV0ZWQnKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVzdW1lU2Vzc2lvbihtZXRhKSB7XG4gICAgc2V0U2hvd1Jlc3VtZVBhbmVsKGZhbHNlKVxuICAgIHNldFNob3dQcm9qZWN0UGFuZWwoZmFsc2UpXG4gICAgaWYgKG1ldGEuaGVhZGVyLnJvb3QgIT09IGJvb3Qucm9vdCkgcmV0dXJuIHN3aXRjaFByb2plY3QobWV0YSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBoZWFkZXIsIGV2ZW50cyB9ID0gYXdhaXQgbG9hZFNlc3Npb24obWV0YS5maWxlKVxuICAgICAgcmVmcy5zZXNzaW9uID0gb3BlblNlc3Npb24oeyBmaWxlOiBtZXRhLmZpbGUsIGhlYWRlciB9KVxuICAgICAgcmVmcy5hbGxFdmVudHMgPSBbLi4uZXZlbnRzXVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSBldmVudHMubGVuZ3RoXG4gICAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgICBhZ2VudHMucmVzdG9yZShldmVudHMpXG4gICAgICBzZXRWaWV3ZWRBZ2VudElkKG51bGwpXG4gICAgICBzZXRWaWV3ZWRTaGVsbElkKG51bGwpXG4gICAgICBmbS5mb2N1cygnaW5wdXQnKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgY29uc3QgY2F0YWxvZ01hdGNoID0gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gZGVyaXZlZCgpLm1vZGVsICYmIG0uYXZhaWxhYmxlICE9PSBmYWxzZSlcbiAgICAgIGNvbnN0IHJlc3RvcmVkID0gZGVyaXZlZCgpLm1vZGVsXG4gICAgICAgICYmIChjYXRhbG9nTWF0Y2ggfHwgYWRob2NNb2RlbChkZXJpdmVkKCkubW9kZWwsIGJvb3QucHJvdmlkZXJzKSlcbiAgICAgIGlmIChyZXN0b3JlZCkge1xuICAgICAgICBzZXRNb2RlbChyZXN0b3JlZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldE1vZGVsKGRlZmF1bHRNb2RlbCgpKVxuICAgICAgICBpZiAoZGVyaXZlZCgpLm1vZGVsKSBmbGFzaChgbW9kZWwgJHtkZXJpdmVkKCkubW9kZWx9IHVuYXZhaWxhYmxlLCB1c2luZyAke2RlZmF1bHRNb2RlbCgpLm5hbWV9YClcbiAgICAgIH1cbiAgICAgIHNldEVmZm9ydChkZXJpdmVkKCkuZWZmb3J0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0RWZmb3J0KCkgOiBkZXJpdmVkKCkuZWZmb3J0KVxuICAgICAgc2V0U2VudCh1c2VyRW50cmllcyhkZXJpdmVkKCkpLm1hcCgoZSkgPT4gKHsgdGV4dDogcmVjYWxsVGV4dChlKSwgYXQ6IGhlYWRlci5jcmVhdGVkQXQgfSkpKVxuICAgICAgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICAgIHNldEZvbGxvdyh0cnVlKVxuICAgICAgZmxhc2goYHJlc3VtZWQgXHUwMEI3ICR7bWV0YS50dXJuc30gJHttZXRhLnR1cm5zID09PSAxID8gJ3R1cm4nIDogJ3R1cm5zJ30gXHUwMEI3ICR7dGltZUFnbyhtZXRhLmF0KX1gKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYHJlc3VtZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb3Blbkhpc3RvcnlTZWFyY2goKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHNlbnQoKVxuICAgIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoc2Vzc2lvbikpXG4gICAgc2V0U2hvd0hpc3RvcnlQYW5lbCh0cnVlKVxuICAgIHNldEhpc3RTY29wZSgwKVxuICB9XG5cbiAgZnVuY3Rpb24gZGVkdXBlUHJvbXB0cyhwb29sKSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKVxuICAgIGNvbnN0IG91dCA9IFtdXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBbLi4ucG9vbF0uc29ydCgoYSwgYikgPT4gYi5hdCAtIGEuYXQpKSB7XG4gICAgICBpZiAoc2Vlbi5oYXMoZW50cnkudGV4dCkpIGNvbnRpbnVlXG4gICAgICBzZWVuLmFkZChlbnRyeS50ZXh0KVxuICAgICAgb3V0LnB1c2goZW50cnkpXG4gICAgfVxuICAgIHJldHVybiBvdXRcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHN3aXRjaEhpc3RTY29wZShuZXh0KSB7XG4gICAgc2V0SGlzdFNjb3BlKG5leHQpXG4gICAgaWYgKG5leHQgPT09IDApIHJldHVybiBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKHNlbnQoKSkpXG4gICAgY29uc3QgcHJvamVjdCA9IGF3YWl0IGxvYWRQcm9qZWN0UHJvbXB0cyhyb290KVxuICAgIGlmIChuZXh0ID09PSAxKSByZXR1cm4gc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhbLi4uc2VudCgpLCAuLi5wcm9qZWN0XSkpXG4gICAgY29uc3QgZ2xvYmFsID0gYXdhaXQgbG9hZEdsb2JhbFByb21wdHMoKVxuICAgIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoWy4uLnNlbnQoKSwgLi4ucHJvamVjdCwgLi4uZ2xvYmFsXSkpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBwZXJmb3JtUmV3aW5kKG9wdCkge1xuICAgIGNvbnN0IHRhcmdldCA9IHJld2luZFRhcmdldCgpXG4gICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICBjb25zdCB7IGVkaXRzIH0gPSByZXdpbmRTdGF0cyhzdGF0ZSwgdGFyZ2V0LmluZGV4KVxuICAgIGNvbnN0IGVkaXRzTGFiZWwgPSBgJHtlZGl0cy5sZW5ndGh9ICR7ZWRpdHMubGVuZ3RoID09PSAxID8gJ2VkaXQnIDogJ2VkaXRzJ31gXG4gICAgbGV0IHJldmVydGVkID0gW11cbiAgICBsZXQgc2tpcHBlZCA9IFtdXG5cbiAgICBpZiAob3B0LmtleSA9PT0gJ2JvdGgnIHx8IG9wdC5rZXkgPT09ICdjb2RlJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmV2ZXJ0RWRpdHMoZWRpdHMpXG4gICAgICByZXZlcnRlZCA9IHJlc3VsdC5yZXZlcnRlZFxuICAgICAgc2tpcHBlZCA9IHJlc3VsdC5za2lwcGVkXG4gICAgfVxuXG4gICAgbGV0IHN1bW1hcnlUZXh0ID0gbnVsbFxuICAgIGlmIChvcHQua2V5ID09PSAnc3VtbWFyeScpIHtcbiAgICAgIGNvbnN0IHRhaWwgPSBzdGF0ZS50cmFuc2NyaXB0LnNsaWNlKHRhcmdldC5pbmRleClcbiAgICAgIGNvbnN0IHRleHQgPSB0YWlsLmZpbHRlcigobSkgPT4gbS50ZXh0KS5tYXAoKG0pID0+IGAke20ua2luZH06ICR7bS50ZXh0fWApLmpvaW4oJ1xcbicpXG4gICAgICBmbGFzaCgnc3VtbWFyaXppbmcuLi4nKVxuICAgICAgbGV0IGF1dGggPSBudWxsXG4gICAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4JykgYXV0aCA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgIHN1bW1hcnlUZXh0ID0gYXdhaXQgc3VtbWFyaXplVGV4dCh7IHRleHQsIG1vZGVsTmFtZTogbW9kZWwoKS5uYW1lLCBhdXRoIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZmxhc2goJ3N1bW1hcnkgbW9kZWwgY2FsbCBmYWlsZWQgXHUwMEI3IGtlcHQgYSBjcnVkZSBkaWdlc3Qgb2YgdGhlIHJld291bmQgdHVybnMnKVxuICAgICAgICByZXR1cm4gdGFpbC5maWx0ZXIoKG0pID0+IG0udGV4dCkuc2xpY2UoMCwgMykubWFwKChtKSA9PiBtLnRleHQuc3BsaXQoL1xccysvKS5zbGljZSgwLCA2KS5qb2luKCcgJykpLmpvaW4oJyBcdTAwQjcgJylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnQgPSBtYWtlRXZlbnQoJ3Jld2luZCcsIHsgdGFyZ2V0OiB0YXJnZXQuZXZlbnRJZCwgbW9kZTogb3B0LmtleSwgc3VtbWFyeVRleHQsIHJldmVydGVkLCBza2lwcGVkIH0pXG4gICAgcGVyc2lzdChldmVudClcbiAgICByZWZzLnJld2luZFVuZG8gPSB7IHJld2luZElkOiBldmVudC5pZCwgZWRpdHM6IGVkaXRzLmZpbHRlcigoZSkgPT4gcmV2ZXJ0ZWQuaW5jbHVkZXMoZS5jYWxsSWQpKSB9XG4gICAgcmVEZXJpdmUoKVxuICAgIGlmIChvcHQua2V5ICE9PSAnY29kZScpIHNldElucHV0KHJlY2FsbFRleHQodGFyZ2V0KSlcblxuICAgIGNvbnN0IHNraXBwZWROb3RlID0gc2tpcHBlZC5sZW5ndGggPyBgIFx1MDBCNyBza2lwcGVkICR7c2tpcHBlZC5sZW5ndGh9IGRyaWZ0ZWRgIDogJydcbiAgICBpZiAob3B0LmtleSA9PT0gJ2NvZGUnKSBmbGFzaChgcmV2ZXJ0ZWQgJHtlZGl0c0xhYmVsfSwgY29udmVyc2F0aW9uIGtlcHQke3NraXBwZWROb3RlfSBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIGVsc2UgaWYgKG9wdC5rZXkgPT09ICdzdW1tYXJ5JykgZmxhc2goYHJld291bmQgYW5kIHN1bW1hcml6ZWQke3NraXBwZWROb3RlfSBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIGVsc2UgaWYgKG9wdC5rZXkgPT09ICdib3RoJykgZmxhc2goYHJld291bmQsICR7ZWRpdHNMYWJlbH0gcmV2ZXJ0ZWQke3NraXBwZWROb3RlfSBcdTAwQjcgY3RybCt6IHRvIHVuZG9gKVxuICAgIGVsc2UgZmxhc2goYHJld291bmQsIGZpbGUgY2hhbmdlcyBrZXB0IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgc2V0UmV3aW5kU3RlcChudWxsKVxuICAgIHNldFJld2luZFRhcmdldChudWxsKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gdW5kb1Jld2luZCgpIHtcbiAgICBjb25zdCB1bmRvID0gcmVmcy5yZXdpbmRVbmRvXG4gICAgaWYgKCF1bmRvKSByZXR1cm5cbiAgICBjb25zdCB7IHNraXBwZWQgfSA9IGF3YWl0IHJlYXBwbHlFZGl0cyh1bmRvLmVkaXRzKVxuICAgIHBlcnNpc3QobWFrZUV2ZW50KCdyZXdpbmRfdW5kbycsIHsgcmV3aW5kSWQ6IHVuZG8ucmV3aW5kSWQgfSkpXG4gICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgIHJlRGVyaXZlKClcbiAgICBmbGFzaChza2lwcGVkLmxlbmd0aCA/IGByZXdpbmQgdW5kb25lIFx1MDBCNyAke3NraXBwZWQubGVuZ3RofSBmaWxlKHMpIGRyaWZ0ZWRgIDogJ3Jld2luZCB1bmRvbmUnKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVjYWxsVGV4dChlbnRyeSkge1xuICAgIHJldHVybiBpbnB1dFRleHRGcm9tQ29udGVudChlbnRyeS5jb250ZW50ID8/IGVudHJ5LnRleHQsIHtcbiAgICAgIGF0dGFjaG1lbnRzOiByZWZzLmF0dGFjaG1lbnRzLFxuICAgICAgbmV4dElkOiAoKSA9PiArK3JlZnMuaW1hZ2VDb3VudCxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gY29uZmlybURlbGV0ZUN1cnJlbnRTZXNzaW9uKCkge1xuICAgIGNvbnN0IHNlc3Npb24gPSByZWZzLnNlc3Npb25cbiAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgIHNldFNob3dEZWxldGVDb25maXJtKGZhbHNlKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBzZXNzaW9uLmZsdXNoKClcbiAgICAgIGF3YWl0IGRlbGV0ZVNlc3Npb24oc2Vzc2lvbi5maWxlKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0U2hvd0RlbGV0ZUNvbmZpcm0oZmFsc2UpXG4gICAgICBmbGFzaChgZGVsZXRlIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZWZzLnNlc3Npb24gPSBudWxsXG4gICAgcmVmcy5hbGxFdmVudHMgPSBbXVxuICAgIHJlZnMucGVyc2lzdGVkID0gMFxuICAgIHJlZnMucmV3aW5kVW5kbyA9IG51bGxcbiAgICBzZXRRdWV1ZWQoW10pXG4gICAgc2V0U2VudChbXSlcbiAgICBzZXRNb2RlbChkZWZhdWx0TW9kZWwoKSlcbiAgICBzZXRFZmZvcnQoZGVmYXVsdEVmZm9ydCgpKVxuICAgIHNldEhpc3RXaW5kb3coSElTVE9SWV9XSU5ET1cpXG4gICAgc2V0U2hvd0RlbGV0ZUNvbmZpcm0oZmFsc2UpXG4gICAgcmVEZXJpdmUoKVxuICAgIGZsYXNoKCdzZXNzaW9uIGRlbGV0ZWQnKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBhbnlQYW5lbCA9ICgpID0+XG4gICAgc2hvd01vZGVsUGFuZWwoKSB8fCBzaG93UmVzZWFyY2hNb2RlbFBhbmVsKCkgfHwgc2hvd0VmZm9ydFBhbmVsKCkgfHwgc2hvd1RoZW1lUGFuZWwoKSB8fCBzaG93Q29uZmlnUGFuZWwoKSB8fCBzaG93RGVsZXRlQ29uZmlybSgpIHx8IHNob3dNZW1vcnlQYW5lbCgpIHx8IHNob3dIaXN0b3J5UGFuZWwoKSB8fCBzaG93UmVzdW1lUGFuZWwoKSB8fCBzaG93TWNwUGFuZWwoKSB8fFxuICAgIHNob3dQcm9qZWN0UGFuZWwoKSB8fCBzaG93V2FrZXVwc1BhbmVsKCkgfHwgc2hvd0Nvbm5lY3RQYW5lbCgpIHx8XG4gICAgaW5mb1BhbmVsKCkgIT09IG51bGwgfHwgcmV3aW5kU3RlcCgpICE9PSBudWxsXG5cbiAgLy8gZXZlcnkgZm9jdXMtdGFraW5nIHBhbmVsIGRpbXMgdGhlIGNvbnZlcnNhdGlvbiBiZWhpbmQgaXQ7IHRoZSB0aGVtZVxuICAvLyBwaWNrZXIgaXMgdGhlIG9uZSBleGVtcHRpb24sIHNpbmNlIGl0cyBqb2IgaXMgcHJldmlld2luZyBwYWxldHRlcyBvblxuICAvLyB0aGUgdW5kaW1tZWQgdWlcbiAgY29uc3QgZGltbWluZ1BhbmVsID0gKCkgPT4gYW55UGFuZWwoKSAmJiAhc2hvd1RoZW1lUGFuZWwoKVxuXG4gIGZ1bmN0aW9uIGNhbmNlbEFnZW50KGFnZW50KSB7XG4gICAgYWdlbnRzLmNhbmNlbChhZ2VudC5pZClcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc21pc3NBZ2VudChhZ2VudCkge1xuICAgIGlmICghYWdlbnRzLmRpc21pc3MoYWdlbnQuaWQpKSByZXR1cm5cbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnYWdlbnRfZGlzbWlzcycsIHsgYWdlbnRJZDogYWdlbnQuaWQgfSkpXG4gICAgaWYgKHZpZXdlZEFnZW50SWQoKSA9PT0gYWdlbnQuaWQpIHNldFZpZXdlZEFnZW50SWQobnVsbClcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc21pc3NTaGVsbChzaGVsbCkge1xuICAgIGJvb3Quc2hlbGxzLmRpc21pc3Moc2hlbGwuaWQpXG4gICAgaWYgKHZpZXdlZFNoZWxsSWQoKSA9PT0gc2hlbGwuaWQpIHNldFZpZXdlZFNoZWxsSWQobnVsbClcbiAgfVxuXG4gIGZ1bmN0aW9uIGtpbGxTaGVsbChzaGVsbCkge1xuICAgIGlmIChzaGVsbC5zdGF0dXMgIT09ICdydW5uaW5nJykgcmV0dXJuIGZsYXNoKGBzaGVsbCAke3NoZWxsLmlkfSBhbHJlYWR5IGV4aXRlZGApXG4gICAgY29uc3QgYXJtZWQgPSByZWZzLnNoZWxsS2lsbEFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuaWQgIT09IHNoZWxsLmlkIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuc2hlbGxLaWxsQXJtID0geyBpZDogc2hlbGwuaWQsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGtpbGwgXCIke3NoZWxsLmRlc2NyaXB0aW9uIHx8IGBzaGVsbCAke3NoZWxsLmlkfWB9XCJgKVxuICAgIH1cbiAgICByZWZzLnNoZWxsS2lsbEFybSA9IG51bGxcbiAgICBib290LnNoZWxscy5raWxsKHNoZWxsLmlkLCAndXNlcicpXG4gIH1cblxuICBjb25zdCBlZmZvcnRBcHBsaWVzID0gKCkgPT4gISFtb2RlbCgpLmVmZm9ydFxuXG4gIGZ1bmN0aW9uIHNldFNlc3Npb25FZmZvcnQobmV4dCwgeyBhc0RlZmF1bHQgPSBmYWxzZSB9ID0ge30pIHtcbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnZWZmb3J0JywgeyB0bzogbmV4dCB9KSlcbiAgICBzZXRFZmZvcnQobmV4dClcbiAgICBpZiAoYXNEZWZhdWx0KSB7XG4gICAgICBzZXREZWZhdWx0RWZmb3J0KG5leHQpXG4gICAgICB3cml0ZUNvbmZpZyh7IGRlZmF1bHRFZmZvcnQ6IG5leHQgfSkuY2F0Y2goKCkgPT4ge30pXG4gICAgfVxuICAgIGZsYXNoKGBlZmZvcnQ6ICR7bmV4dCA/PyAnZGVmYXVsdCd9JHthc0RlZmF1bHQgPyAnIFx1MDBCNyBzYXZlZCBhcyBkZWZhdWx0JyA6ICcnfWApXG4gIH1cblxuICBjb25zdCBmbSA9IHVzZUZvY3VzKHsgaW5pdGlhbDogJ2lucHV0JyB9KVxuICBmbS5pdGVtKCdmZWVkJylcbiAgYWdlbnRzVmVyc2lvbigpXG4gIGNvbnN0IGFnZW50Um93cyA9IGFnZW50cy5saXN0KClcbiAgc2hlbGxzVmVyc2lvbigpXG4gIGNvbnN0IHNoZWxsUm93cyA9IGJvb3Quc2hlbGxzLmxpc3QoKVxuICAgIC5maWx0ZXIoKHNoZWxsKSA9PiBzaGVsbC5zZXNzaW9uSWQgPT09IHJlZnMuc2Vzc2lvbj8uaWQpXG4gICAgLnNvcnQoKGEsIGIpID0+IE51bWJlcihiLmlkKSAtIE51bWJlcihhLmlkKSlcbiAgaWYgKHF1ZXN0aW9uUmVxdWVzdCgpKSB7XG4gICAgZm0uaXRlbSgncXVlc3Rpb24nKVxuICAgIGlmICghZm0uaXMoJ3F1ZXN0aW9uJykpIGZtLmZvY3VzKCdxdWVzdGlvbicpXG4gIH0gZWxzZSB7XG4gICAgaWYgKCF2aWV3ZWRBZ2VudElkKCkgJiYgIXZpZXdlZFNoZWxsSWQoKSkgZm0uaXRlbSgnaW5wdXQnKVxuICAgIGlmIChzaGVsbFJvd3MubGVuZ3RoID4gMCkgZm0uZ3JvdXAoJ3NoZWxsLXN0cmlwJywgeyBpdGVtczogWydzaGVsbC1tYWluJywgLi4uc2hlbGxSb3dzLm1hcCgocykgPT4gYHNoZWxsLSR7cy5pZH1gKV0sIG5hdmlnYXRlOiAnYm90aCcsIHdyYXA6IHRydWUgfSlcbiAgICBpZiAoYWdlbnRSb3dzLmxlbmd0aCA+IDApIGZtLmdyb3VwKCdhZ2VudC1zdHJpcCcsIHsgaXRlbXM6IFsnYWdlbnQtbWFpbicsIC4uLmFnZW50Um93cy5tYXAoKGEpID0+IGBhZ2VudC0ke2EuaWR9YCldLCBuYXZpZ2F0ZTogJ2JvdGgnLCB3cmFwOiB0cnVlIH0pXG4gICAgaWYgKHJlZnMuZm9jdXNDb21wb3NlckFmdGVyUXVlc3Rpb24gJiYgIXZpZXdlZEFnZW50SWQoKSAmJiAhdmlld2VkU2hlbGxJZCgpKSB7XG4gICAgICByZWZzLmZvY3VzQ29tcG9zZXJBZnRlclF1ZXN0aW9uID0gZmFsc2VcbiAgICAgIGZtLmZvY3VzKCdpbnB1dCcpXG4gICAgfVxuICB9XG4gIHVzZUZvY3VzVHJhcChhbnlQYW5lbCgpIHx8IHZpZXcoKSA9PT0gJ2hlbHAnKVxuICB1c2VTZWxlY3Rpb24oe1xuICAgIG9uQ29weTogKHRleHQpID0+IGZsYXNoKGBjb3BpZWQgJHt0ZXh0Lmxlbmd0aH0gJHt0ZXh0Lmxlbmd0aCA9PT0gMSA/ICdjaGFyYWN0ZXInIDogJ2NoYXJhY3RlcnMnfWApLFxuICB9KVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmIChmbS5pcygnc2hlbGwtc3RyaXAnKSAmJiBldmVudC5rZXkgPT09ICdyZXR1cm4nKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBmbS5jdXJyZW50KClcbiAgICAgIHNldFZpZXdlZFNoZWxsSWQodGFyZ2V0ID09PSAnc2hlbGwtbWFpbicgPyBudWxsIDogdGFyZ2V0LnNsaWNlKCdzaGVsbC0nLmxlbmd0aCkpXG4gICAgICBzZXRGb2xsb3codHJ1ZSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGZtLmlzKCdzaGVsbC1zdHJpcCcpICYmIGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcpIHtcbiAgICAgIGNvbnN0IHNoZWxsID0gZm0uY3VycmVudCgpID09PSAnc2hlbGwtbWFpbicgPyBudWxsIDogc2hlbGxSb3dzLmZpbmQoKHMpID0+IGBzaGVsbC0ke3MuaWR9YCA9PT0gZm0uY3VycmVudCgpKVxuICAgICAgaWYgKHNoZWxsKSB7XG4gICAgICAgIGlmIChzaGVsbC5zdGF0dXMgPT09ICdydW5uaW5nJykga2lsbFNoZWxsKHNoZWxsKVxuICAgICAgICBlbHNlIGRpc21pc3NTaGVsbChzaGVsbClcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGZtLmlzKCdhZ2VudC1zdHJpcCcpICYmIGV2ZW50LmtleSA9PT0gJ3JldHVybicpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGZtLmN1cnJlbnQoKVxuICAgICAgc2V0Vmlld2VkQWdlbnRJZCh0YXJnZXQgPT09ICdhZ2VudC1tYWluJyA/IG51bGwgOiB0YXJnZXQuc2xpY2UoJ2FnZW50LScubGVuZ3RoKSlcbiAgICAgIHNldEZvbGxvdyh0cnVlKVxuICAgICAgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGZtLmlzKCdhZ2VudC1zdHJpcCcpICYmIGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGZtLmN1cnJlbnQoKVxuICAgICAgY29uc3QgYWdlbnQgPSB0YXJnZXQgPT09ICdhZ2VudC1tYWluJyA/IG51bGwgOiBhZ2VudHMuZ2V0KHRhcmdldC5zbGljZSgnYWdlbnQtJy5sZW5ndGgpKVxuICAgICAgaWYgKGFnZW50KSB7XG4gICAgICAgIGlmIChbJ3F1ZXVlZCcsICdydW5uaW5nJ10uaW5jbHVkZXMoYWdlbnQuc3RhdHVzKSkgY2FuY2VsQWdlbnQoYWdlbnQpXG4gICAgICAgIGVsc2UgZGlzbWlzc0FnZW50KGFnZW50KVxuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJyAmJiBidXN5KCkgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIGludGVycnVwdCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ2MnKSB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpXG4gICAgICBpZiAobm93IC0gcmVmcy5xdWl0QXQgPCAxNTAwKSB7XG4gICAgICAgIGJvb3Quc2hlbGxzLmtpbGxBbGwoKVxuICAgICAgICBtY3AudGVybWluYXRlQWxsKClcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWZzLnF1aXRBdCA9IG5vd1xuICAgICAgICBjb25zdCBydW5uaW5nID0gYm9vdC5zaGVsbHMucnVubmluZygpXG4gICAgICAgIGZsYXNoKHJ1bm5pbmcgPyBgJHtydW5uaW5nfSAke3J1bm5pbmcgPT09IDEgPyAnc2hlbGwnIDogJ3NoZWxscyd9IHJ1bm5pbmcgXHUwMEI3IGN0cmwrYyBhZ2FpbiB0byBleGl0IGFuZCBraWxsICR7cnVubmluZyA9PT0gMSA/ICdpdCcgOiAndGhlbSd9YCA6ICdjdHJsK2MgYWdhaW4gdG8gZXhpdCcpXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ28nKSB7XG4gICAgICBzZXRWZXJib3NlKCh2KSA9PiAhdilcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncicgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIGlmIChidXN5KCkpIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgICAgZWxzZSBpZiAodXNlckVudHJpZXMoZGVyaXZlZCgpKS5sZW5ndGggPT09IDApIGZsYXNoKCdub3RoaW5nIHRvIHJld2luZCB5ZXQnKVxuICAgICAgZWxzZSBzZXRSZXdpbmRTdGVwKCdwaWNrJylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIHNldFNob3dSZXN1bWVQYW5lbCh0cnVlKVxuICAgICAgcmVmcmVzaFNlc3Npb25zKHJlc3VtZVNjb3BlKCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3QnICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBzZXRTaG93TW9kZWxQYW5lbCh0cnVlKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdwJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgb3BlblByb2plY3RQYW5lbCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ2InICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBpZiAoIWVmZm9ydEFwcGxpZXMoKSkgZmxhc2goYCR7bW9kZWwoKS5uYW1lfSBkb2VzIG5vdCBzdXBwb3J0IGVmZm9ydCBjb250cm9sYClcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBvcmRlciA9IFtudWxsLCAnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddXG4gICAgICAgIGNvbnN0IG5leHQgPSBvcmRlclsob3JkZXIuaW5kZXhPZihlZmZvcnQoKSA/PyBudWxsKSArIDEpICUgb3JkZXIubGVuZ3RoXVxuICAgICAgICBzZXRTZXNzaW9uRWZmb3J0KG5leHQpXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHNob3dIaXN0b3J5UGFuZWwoKSkge1xuICAgICAgc3dpdGNoSGlzdFNjb3BlKChoaXN0U2NvcGUoKSArIDEpICUgSElTVE9SWV9TQ09QRVMubGVuZ3RoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiBzaG93TWVtb3J5UGFuZWwoKSkge1xuICAgICAgc2V0TWVtU2NvcGUoKHMpID0+IChzICsgMSkgJSBNRU1PUllfU0NPUEVTLmxlbmd0aClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgc2hvd1Jlc3VtZVBhbmVsKCkpIHtcbiAgICAgIGNvbnN0IG5leHQgPSAocmVzdW1lU2NvcGUoKSArIDEpICUgUkVTVU1FX1NDT1BFUy5sZW5ndGhcbiAgICAgIHNldFJlc3VtZVNjb3BlKG5leHQpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMobmV4dClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneicgJiYgcmVmcy5yZXdpbmRVbmRvICYmICFidXN5KCkgJiYgdmlldygpID09PSAnY2hhdCcpIHtcbiAgICAgIHVuZG9SZXdpbmQoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgZm10RWxhcHNlZCA9IChzKSA9PiAocyA8IDYwID8gYCR7c31zYCA6IGAke01hdGguZmxvb3IocyAvIDYwKX1tICR7cyAlIDYwfXNgKVxuICBjb25zdCBlbGFwc2VkID0gZm10RWxhcHNlZChidXN5KCkgPyBNYXRoLm1heCgwLCBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gc3RhcnRlZEF0KCkpIC8gMTAwMCkpIDogMClcblxuICBjb25zdCBzbGFzaFF1ZXJ5ID0gaW5wdXQoKS5zdGFydHNXaXRoKCcvJykgPyBpbnB1dCgpLnNsaWNlKDEpIDogbnVsbFxuICBjb25zdCBzaG93Q29tbWFuZHMgPSBzbGFzaFF1ZXJ5ICE9PSBudWxsICYmICFzbGFzaFF1ZXJ5LmluY2x1ZGVzKCcgJykgJiYgIWFueVBhbmVsKClcbiAgY29uc3QgbWF0Y2hlZENvbW1hbmRzID0gIXNob3dDb21tYW5kc1xuICAgID8gW11cbiAgICA6IGNtZEN5Y2xlKClcbiAgICAgID8gY21kQ3ljbGUoKS5tYXRjaGVzXG4gICAgICA6IGFsbENvbW1hbmRzLmZpbHRlcigoYykgPT4gYy5uYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzbGFzaFF1ZXJ5LnRvTG93ZXJDYXNlKCkpKVxuXG4gIGNvbnN0IGF0TWF0Y2ggPSBpbnB1dCgpLm1hdGNoKC8oXnxbXFxzKF0pQChbXlxcc0BdKikkLylcbiAgY29uc3Qgc2hvd0ZpbGVzID0gYXRNYXRjaCAhPT0gbnVsbCAmJiAhc2hvd0NvbW1hbmRzICYmICFmaWxlc0Rpc21pc3NlZCgpICYmICFhbnlQYW5lbCgpXG4gIGlmIChzaG93RmlsZXMpIHtcbiAgICBsaXN0RmlsZXMoY3dkKS50aGVuKChmaWxlcykgPT4ge1xuICAgICAgaWYgKGZpbGVzICE9PSBmaWxlTGlzdCgpKSBzZXRGaWxlTGlzdChmaWxlcylcbiAgICB9KVxuICB9XG4gIGNvbnN0IG1hdGNoZWRGaWxlcyA9IHNob3dGaWxlc1xuICAgID8gZmlsZUxpc3QoKVxuICAgICAgICAubWFwKChmKSA9PiBbZnV6enlTY29yZShhdE1hdGNoWzJdLCBmKSwgZl0pXG4gICAgICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBiWzBdIC0gYVswXSlcbiAgICAgICAgLm1hcCgoWywgZl0pID0+IGYpXG4gICAgOiBbXVxuXG4gIGZ1bmN0aW9uIHBpY2tGaWxlKGYpIHtcbiAgICBjb25zdCB2ID0gaW5wdXQoKVxuICAgIGNvbnN0IGF0ID0gdi5sYXN0SW5kZXhPZignQCcpXG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWVkaWFUeXBlRm9yKGYpXG4gICAgY29uc3QgZnVsbCA9IGpvaW4oYm9vdC5jd2QsIGYpXG4gICAgaWYgKG1lZGlhVHlwZSAmJiBleGlzdHNTeW5jKGZ1bGwpKSB7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7KytyZWZzLmltYWdlQ291bnR9XWBcbiAgICAgIHJlZnMuYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGg6IGZ1bGwsIG1lZGlhVHlwZSB9KVxuICAgICAgc2V0SW5wdXQodi5zbGljZSgwLCBhdCkgKyBwbGFjZWhvbGRlciArICcgJylcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SW5wdXQodi5zbGljZSgwLCBhdCArIDEpICsgZiArICcgJylcbiAgICB9XG4gICAgc2V0RmlsZUluZGV4KDApXG4gIH1cblxuICBjb25zdCBjb21wQ3R4ID0gY29tcGxldGluZygpID8gY29tcGxldGlvbkNvbnRleHQoeyB2YWx1ZTogaW5wdXQoKSwgcmVzb2x2ZTogY29tcGxldGlvblNvdXJjZSB9KSA6IG51bGxcbiAgY29uc3Qgc2hvd0NvbXBsZXRpb24gPSAhIWNvbXBDdHggJiYgY29tcEN0eC5tYXRjaGVzLmxlbmd0aCA+IDAgJiYgIXNob3dDb21tYW5kcyAmJiAhc2hvd0ZpbGVzICYmICFhbnlQYW5lbCgpXG5cbiAgY29uc3QgcmV3aW5kRW50cmllcyA9ICgpID0+IHVzZXJFbnRyaWVzKGRlcml2ZWQoKSlcbiAgY29uc3QgcmV3aW5kT3B0aW9ucyA9ICgoKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gcmV3aW5kVGFyZ2V0KClcbiAgICBpZiAoIXRhcmdldCkgcmV0dXJuIFtdXG4gICAgY29uc3QgeyBtc2dzLCBlZGl0cyB9ID0gcmV3aW5kU3RhdHMoZGVyaXZlZCgpLCB0YXJnZXQuaW5kZXgpXG4gICAgY29uc3QgZSA9IGVkaXRzLmxlbmd0aFxuICAgIGNvbnN0IGVkaXRzTGFiZWwgPSBgJHtlfSAke2UgPT09IDEgPyAnZWRpdCcgOiAnZWRpdHMnfWBcbiAgICBjb25zdCBvcHRzID0gW11cbiAgICBpZiAoZSA+IDApIG9wdHMucHVzaCh7IGtleTogJ2JvdGgnLCBsYWJlbDogJ3Jlc3RvcmUgY29kZSBhbmQgY29udmVyc2F0aW9uJywgZGVzYzogYGNoYXQgcmV0dXJucyB0byB0aGlzIG1lc3NhZ2UgXHUwMEI3ICR7ZWRpdHNMYWJlbH0gcmV2ZXJ0ZWRgIH0pXG4gICAgb3B0cy5wdXNoKHtcbiAgICAgIGtleTogJ2NoYXQnLFxuICAgICAgbGFiZWw6IGUgPiAwID8gJ3Jlc3RvcmUgY29udmVyc2F0aW9uIG9ubHknIDogJ3Jlc3RvcmUgY29udmVyc2F0aW9uJyxcbiAgICAgIGRlc2M6IGUgPiAwID8gJ2NoYXQgcmV0dXJucyB0byB0aGlzIG1lc3NhZ2UgXHUwMEI3IGZpbGUgY2hhbmdlcyBrZXB0JyA6IGBjaGF0IHJldHVybnMgdG8gdGhpcyBtZXNzYWdlIFx1MDBCNyBkcm9wcyAke21zZ3N9IGVudHJpZXNgLFxuICAgIH0pXG4gICAgaWYgKGUgPiAwKSBvcHRzLnB1c2goeyBrZXk6ICdjb2RlJywgbGFiZWw6ICdyZXN0b3JlIGNvZGUgb25seScsIGRlc2M6IGBjb252ZXJzYXRpb24ga2VwdCBcdTAwQjcgJHtlZGl0c0xhYmVsfSByZXZlcnRlZGAgfSlcbiAgICBvcHRzLnB1c2goeyBrZXk6ICdzdW1tYXJ5JywgbGFiZWw6ICdyZXdpbmQgYW5kIGtlZXAgYSBzdW1tYXJ5JywgZGVzYzogJ2Ryb3BwZWQgZW50cmllcyBjb2xsYXBzZSBpbnRvIGEgb25lLWxpbmUgbm90ZScgfSlcbiAgICByZXR1cm4gb3B0c1xuICB9KSgpXG5cbiAgY29uc3QgeyB1c2FnZUFjdGl2ZTogdXNhZ2UgfSA9IGRlcml2ZWQoKVxuICBjb25zdCBjb250ZXh0UGVyY2VudCA9IG1vZGVsKCkuY29udGV4dCA+IDAgJiYgZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnMgPiAwICYmIGRlcml2ZWQoKS5sYXN0UHJvbXB0TW9kZWwgPT09IG1vZGVsKCkubmFtZVxuICAgID8gTWF0aC5taW4oMTAwLCBNYXRoLnJvdW5kKChkZXJpdmVkKCkubGFzdFByb21wdFRva2VucyAvIG1vZGVsKCkuY29udGV4dCkgKiAxMDApKVxuICAgIDogMFxuICBjb25zdCB2aXNpYmxlU2hlbGxzID0gc2hlbGxSb3dzXG4gIGNvbnN0IHZpZXdlZFNoZWxsID0gdmlld2VkU2hlbGxJZCgpID8gdmlzaWJsZVNoZWxscy5maW5kKChzKSA9PiBzLmlkID09PSB2aWV3ZWRTaGVsbElkKCkpIDogbnVsbFxuICBjb25zdCBzaGVsbFN0cmlwRm9jdXMgPSBmbS5pcygnc2hlbGwtc3RyaXAnKSA/IGZtLmN1cnJlbnQoKSA6IG51bGxcbiAgY29uc3QgZm9jdXNlZFNoZWxsSWQgPSBzaGVsbFN0cmlwRm9jdXMgJiYgc2hlbGxTdHJpcEZvY3VzICE9PSAnc2hlbGwtbWFpbicgPyBzaGVsbFN0cmlwRm9jdXMuc2xpY2UoJ3NoZWxsLScubGVuZ3RoKSA6IG51bGxcbiAgY29uc3QgZm9jdXNlZFNoZWxsID0gZm9jdXNlZFNoZWxsSWQgPyB2aXNpYmxlU2hlbGxzLmZpbmQoKHMpID0+IHMuaWQgPT09IGZvY3VzZWRTaGVsbElkKSA6IG51bGxcbiAgY29uc3QgaGludGVkU2hlbGwgPSBmb2N1c2VkU2hlbGwgfHwgdmlld2VkU2hlbGxcbiAgY29uc3Qgc2hlbGxBY3Rpb25IaW50ID0gaGludGVkU2hlbGwgPyBgY3RybCt4ICR7aGludGVkU2hlbGwuc3RhdHVzID09PSAncnVubmluZycgPyAna2lsbCcgOiAnZGlzbWlzcyd9YCA6ICcnXG4gIGNvbnN0IHNoZWxsV2luZG93VGFyZ2V0ID0gc2hlbGxTdHJpcEZvY3VzID09PSAnc2hlbGwtbWFpbicgPyAwIDogdmlzaWJsZVNoZWxscy5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IChmb2N1c2VkU2hlbGxJZCB8fCB2aWV3ZWRTaGVsbElkKCkpKVxuICBjb25zdCBzaGVsbFdpbmRvd1N0YXJ0ID0gc3RyaXBXaW5kb3dTdGFydChzaGVsbFdpbmRvd09mZnNldCgpLCBzaGVsbFdpbmRvd1RhcmdldCwgdmlzaWJsZVNoZWxscy5sZW5ndGgsIFNIRUxMX1NUUklQX01BWClcbiAgaWYgKHNoZWxsV2luZG93U3RhcnQgIT09IHNoZWxsV2luZG93T2Zmc2V0KCkpIHNldFNoZWxsV2luZG93T2Zmc2V0KHNoZWxsV2luZG93U3RhcnQpXG4gIGNvbnN0IHNoZWxsV2luZG93ID0gdmlzaWJsZVNoZWxscy5zbGljZShzaGVsbFdpbmRvd1N0YXJ0LCBzaGVsbFdpbmRvd1N0YXJ0ICsgU0hFTExfU1RSSVBfTUFYKVxuICBhZ2VudHNWZXJzaW9uKClcbiAgY29uc3QgdmlzaWJsZUFnZW50cyA9IGFnZW50Um93c1xuICBjb25zdCB2aWV3ZWRBZ2VudCA9IHZpZXdlZEFnZW50SWQoKSA/IGFnZW50cy5nZXQodmlld2VkQWdlbnRJZCgpKSA6IG51bGxcbiAgY29uc3QgYWdlbnRTdHJpcEZvY3VzID0gZm0uaXMoJ2FnZW50LXN0cmlwJykgPyBmbS5jdXJyZW50KCkgOiBudWxsXG4gIGNvbnN0IGZvY3VzZWRBZ2VudElkID0gYWdlbnRTdHJpcEZvY3VzICYmIGFnZW50U3RyaXBGb2N1cyAhPT0gJ2FnZW50LW1haW4nID8gYWdlbnRTdHJpcEZvY3VzLnNsaWNlKCdhZ2VudC0nLmxlbmd0aCkgOiBudWxsXG4gIGNvbnN0IGZvY3VzZWRBZ2VudCA9IGZvY3VzZWRBZ2VudElkID8gYWdlbnRzLmdldChmb2N1c2VkQWdlbnRJZCkgOiBudWxsXG4gIGNvbnN0IGhpbnRlZEFnZW50ID0gZm9jdXNlZEFnZW50IHx8IHZpZXdlZEFnZW50XG4gIGNvbnN0IGFnZW50QWN0aW9uSGludCA9IGhpbnRlZEFnZW50XG4gICAgPyBgY3RybCt4ICR7WydxdWV1ZWQnLCAncnVubmluZyddLmluY2x1ZGVzKGhpbnRlZEFnZW50LnN0YXR1cykgPyAnY2FuY2VsJyA6ICdkaXNtaXNzJ31gXG4gICAgOiAnJ1xuICBjb25zdCBhZ2VudFdpbmRvd1RhcmdldCA9IGFnZW50U3RyaXBGb2N1cyA9PT0gJ2FnZW50LW1haW4nXG4gICAgPyAwXG4gICAgOiB2aXNpYmxlQWdlbnRzLmZpbmRJbmRleCgoYSkgPT4gYS5pZCA9PT0gKGZvY3VzZWRBZ2VudElkIHx8IHZpZXdlZEFnZW50SWQoKSkpXG4gIGNvbnN0IGFnZW50V2luZG93U3RhcnQgPSBzdHJpcFdpbmRvd1N0YXJ0KGFnZW50V2luZG93T2Zmc2V0KCksIGFnZW50V2luZG93VGFyZ2V0LCB2aXNpYmxlQWdlbnRzLmxlbmd0aCwgQUdFTlRfU1RSSVBfTUFYKVxuICBpZiAoYWdlbnRXaW5kb3dTdGFydCAhPT0gYWdlbnRXaW5kb3dPZmZzZXQoKSkgc2V0QWdlbnRXaW5kb3dPZmZzZXQoYWdlbnRXaW5kb3dTdGFydClcbiAgY29uc3QgYWdlbnRXaW5kb3cgPSB2aXNpYmxlQWdlbnRzLnNsaWNlKGFnZW50V2luZG93U3RhcnQsIGFnZW50V2luZG93U3RhcnQgKyBBR0VOVF9TVFJJUF9NQVgpXG4gIGNvbnN0IHBlbmRpbmdXYWtldXBzID0gYm9vdC53YWtldXBzLnBlbmRpbmcoKVxuICBnaXRWZXJzaW9uKClcbiAgY29uc3QgZ2l0SW5mbyA9IGdpdEZvb3RlcigpID8gYm9vdC5naXQuc3RhdHVzKCkgOiBudWxsXG5cbiAgaWYgKHZpZXcoKSA9PT0gJ2hlbHAnKSB7XG4gICAgcmV0dXJuIDxIZWxwIGNvbW1hbmRzPXtDT01NQU5EU30gb25DbG9zZT17KCkgPT4gc2V0VmlldygnY2hhdCcpfSAvPlxuICB9XG5cbiAgaGlnaGxpZ2h0VmVyc2lvbigpXG5cbiAgY29uc3QgbWFpblRyYW5zY3JpcHQgPSBkZXJpdmVkKCkudHJhbnNjcmlwdFxuICBsZXQgc2hlbGxPdXRwdXQgPSBudWxsXG4gIGlmICh2aWV3ZWRTaGVsbCkge1xuICAgIHRyeSB7IHNoZWxsT3V0cHV0ID0gYm9vdC5zaGVsbHMub3V0cHV0KHZpZXdlZFNoZWxsLmlkLCB7IHRhaWw6IDIwMDAgfSkgfSBjYXRjaCB7fVxuICB9XG4gIGNvbnN0IHNoZWxsVHJhbnNjcmlwdCA9IHZpZXdlZFNoZWxsID8gW1xuICAgIHsga2luZDogJ3NoZWxsLWNvbW1hbmQnLCB0ZXh0OiB2aWV3ZWRTaGVsbC5jb21tYW5kIH0sXG4gICAgeyBraW5kOiAnc2hlbGwtb3V0cHV0JywgdGV4dDogc2hlbGxPdXRwdXQ/Lm91dHB1dCB8fCAnbm8gb3V0cHV0IHlldCcgfSxcbiAgXSA6IG51bGxcbiAgY29uc3QgdHJhbnNjcmlwdCA9IHNoZWxsVHJhbnNjcmlwdCB8fCAodmlld2VkQWdlbnQgPyBhZ2VudFRyYW5zY3JpcHQodmlld2VkQWdlbnQpIDogbWFpblRyYW5zY3JpcHQpXG4gIGNvbnN0IGhpZGRlbkNvdW50ID0gTWF0aC5tYXgoMCwgdHJhbnNjcmlwdC5sZW5ndGggLSBoaXN0V2luZG93KCkpXG4gIGNvbnN0IGlzb2xhdGVkVHJhbnNjcmlwdCA9IHZpZXdlZEFnZW50IHx8IHZpZXdlZFNoZWxsXG4gIGNvbnN0IHZpc2libGVJdGVtcyA9IGlzb2xhdGVkVHJhbnNjcmlwdCA/IHRyYW5zY3JpcHQuc2xpY2UoaGlkZGVuQ291bnQpIDogWy4uLnRyYW5zY3JpcHQuc2xpY2UoaGlkZGVuQ291bnQpLCAuLi5vdmVybGF5KCldXG4gIGNvbnN0IGl0ZW1zID0gY29tcGFjdFRvb2xIaXN0b3J5KCkgPyBjb21wYWN0VHJhbnNjcmlwdFJ1bnModmlzaWJsZUl0ZW1zLCB2aWV3ZWRBZ2VudCA/IHZpZXdlZEFnZW50LnN0YXR1cyA9PT0gJ3J1bm5pbmcnIDogdmlld2VkU2hlbGwgPyBmYWxzZSA6IHR1cm5QaGFzZSgpID09PSAndG9vbHMnKSA6IHZpc2libGVJdGVtc1xuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAnMTAwJScgfX0+XG4gICAgICB7dHJhbnNjcmlwdC5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGRpbTogZGltbWluZ1BhbmVsKCkgfX0+XG4gICAgICAgICAgPEVtcHR5U3RhdGUgdmVyc2lvbj17dmVyc2lvbn0gY2xvdWRzPXtjbG91ZHMoKX0gLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICApIDogPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgIDxTY3JvbGxCb3hcbiAgICAgICAgICBzdHlsZT17eyBmbGV4R3JvdzogMSwgZGltOiBkaW1taW5nUGFuZWwoKSB9fVxuICAgICAgICAgIGZvY3VzZWQ9e2ZtLmlzKCdmZWVkJyl9XG4gICAgICAgICAgc2Nyb2xsT2Zmc2V0PXtmb2xsb3coKSA/IDFlOSA6IG9mZnNldCgpfVxuICAgICAgICAgIG9uU2Nyb2xsPXsobmV4dCwgbWV0YSkgPT4ge1xuICAgICAgICAgIHNldEZvbGxvdyghIW1ldGE/LmF0Qm90dG9tKVxuICAgICAgICAgIC8vIGJhY2sgYXQgdGhlIGJvdHRvbTogbG9hZGVkIGhpc3RvcnkgaXMgb2ZmLXNjcmVlbiwgc28gcmUtaGlkaW5nXG4gICAgICAgICAgLy8gaXQgaXMgaW52aXNpYmxlIGFuZCByZXN0b3JlcyB0aGUgc21hbGwgcmVuZGVyIHdpbmRvd1xuICAgICAgICAgIGlmIChtZXRhPy5hdEJvdHRvbSAmJiBoaXN0V2luZG93KCkgPiBISVNUT1JZX1dJTkRPVykgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICAgICAgICBpZiAobmV4dCA9PT0gMCAmJiBoaWRkZW5Db3VudCA+IDApIHtcbiAgICAgICAgICAgIC8vIGtlZXAgdGhlIHZpZXcgYW5jaG9yZWQ6IGVzdGltYXRlIHRoZSByb3dzIHRoZSBuZXcgYmF0Y2ggYWRkc1xuICAgICAgICAgICAgLy8gYW5kIHNjcm9sbCBwYXN0IHRoZW0gc28gdGhlIGN1cnJlbnQgdG9wIGl0ZW0gc3RheXMgaW4gcGxhY2VcbiAgICAgICAgICAgIGNvbnN0IGFkZGVkID0gTWF0aC5taW4oSElTVE9SWV9XSU5ET1csIGhpZGRlbkNvdW50KVxuICAgICAgICAgICAgY29uc3QgYXZnUm93cyA9IE1hdGgubWF4KDIsIE1hdGgucm91bmQoKG1ldGE/Lm1heE9mZnNldCB8fCAwKSAvIE1hdGgubWF4KDEsIGl0ZW1zLmxlbmd0aCkpKVxuICAgICAgICAgICAgc2V0SGlzdFdpbmRvdygodykgPT4gdyArIEhJU1RPUllfV0lORE9XKVxuICAgICAgICAgICAgc2V0T2Zmc2V0KGFkZGVkICogYXZnUm93cylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRPZmZzZXQobmV4dClcbiAgICAgICAgfX1cbiAgICAgICAgc2Nyb2xsYmFyXG4gICAgICA+XG4gICAgICAgIHtoaWRkZW5Db3VudCA+IDAgJiYgKFxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIGl0YWxpYzogdHJ1ZSB9fT57YFx1MjMwMyAke2hpZGRlbkNvdW50LnRvTG9jYWxlU3RyaW5nKCl9IG9sZGVyICR7aGlkZGVuQ291bnQgPT09IDEgPyAnbWVzc2FnZScgOiAnbWVzc2FnZXMnfSBcdTAwQjcgc2Nyb2xsIHRvIHRvcCB0byBsb2FkYH08L3RleHQ+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICAgIHtpdGVtcy5tYXAoKGl0ZW0sIGkpID0+IDxNZXNzYWdlIGtleT17aGlkZGVuQ291bnQgKyBpfSBpdGVtPXtpdGVtfSB2ZXJib3NlPXt2ZXJib3NlKCl9IC8+KX1cbiAgICAgICAgICB7IXZpZXdlZEFnZW50ICYmIHN0cmVhbWluZygpICE9PSBudWxsICYmIHN0cmVhbWluZygpICE9PSAnJyAmJiAoXG4gICAgICAgICAgICA8TWVzc2FnZSBrZXk9XCJzdHJlYW1pbmdcIiBpdGVtPXt7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0OiBgJHtzdHJlYW1pbmcoKX1cdTI1OEJgIH19IC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgIHtmbS5pcygnZmVlZCcpICYmICFhbnlQYW5lbCgpICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCB0b3A6IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwLCBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IGFjY2VudCgpLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiAnYmxhY2snLCBib2xkOiB0cnVlIH19PnsnY29udmVyc2F0aW9uJ308L3RleHQ+XG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogJ2JsYWNrJyB9fT57J2ovayBcdTAwQjcgXHUyMTkxL1x1MjE5MyBzY3JvbGwgICBnL0cgZW5kcyAgIGN0cmwtdS9kIHBhZ2UnfTwvdGV4dD5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94Pn1cblxuICAgICAge3F1ZXVlZCgpLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtxdWV1ZWQoKS5tYXAoKHEsIGkpID0+IChcbiAgICAgICAgICAgIDxib3gga2V5PXtpfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnXHUyMDNBICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBNVVRFRCB9fT57cS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICB7aSA9PT0gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIGRpbTogdHJ1ZSB9fT57JyAgcGVuZGluZyBcdTAwQjcgXHUyMTkxIHRvIGVkaXQnfTwvdGV4dD59XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuXG4gICAgICB7cXVlc3Rpb25SZXF1ZXN0KCkgJiYgKFxuICAgICAgICA8UXVlc3Rpb25Gb3JtXG4gICAgICAgICAgcmVxdWVzdD17cXVlc3Rpb25SZXF1ZXN0KCl9XG4gICAgICAgICAgZm9jdXNlZD17Zm0uaXMoJ3F1ZXN0aW9uJykgJiYgIWFueVBhbmVsKCl9XG4gICAgICAgICAgb25TdWJtaXQ9eyhhbnN3ZXJzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gcXVlc3Rpb25SZXF1ZXN0KClcbiAgICAgICAgICAgIHNldFF1ZXN0aW9uUmVxdWVzdChudWxsKVxuICAgICAgICAgICAgcmVmcy5mb2N1c0NvbXBvc2VyQWZ0ZXJRdWVzdGlvbiA9IHRydWVcbiAgICAgICAgICAgIHJlcXVlc3QucmVzb2x2ZSh7IGFuc3dlcnMgfSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gcXVlc3Rpb25SZXF1ZXN0KClcbiAgICAgICAgICAgIHNldFF1ZXN0aW9uUmVxdWVzdChudWxsKVxuICAgICAgICAgICAgcmVmcy5mb2N1c0NvbXBvc2VyQWZ0ZXJRdWVzdGlvbiA9IHRydWVcbiAgICAgICAgICAgIHJlcXVlc3QucmVzb2x2ZSh7IGNhbmNlbGxlZDogdHJ1ZSB9KVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7IXZpZXdlZEFnZW50ICYmICF2aWV3ZWRTaGVsbCAmJiA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgZmxleERpcmVjdGlvbjogJ3JvdycsIHBhZGRpbmdYOiAyLCBwYWRkaW5nWTogMSwgbWFyZ2luVG9wOiB0cmFuc2NyaXB0Lmxlbmd0aCA9PT0gMCAmJiBjbG91ZHMoKSA/IDAgOiAxLCBkaW06IGRpbW1pbmdQYW5lbCgpIHx8ICEhcXVlc3Rpb25SZXF1ZXN0KCkgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBmbS5pcygnaW5wdXQnKSAmJiAhYW55UGFuZWwoKSAmJiAhcXVlc3Rpb25SZXF1ZXN0KCkgPyBhY2NlbnQoKSA6IE1VVEVELCBib2xkOiB0cnVlIH19PnsnXHUyNzZGJ308L3RleHQ+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIHtkZXJpdmVkKCkudGl0bGUgJiYgKFxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgcG9zaXRpb246ICdhYnNvbHV0ZScsIHRvcDogMCwgcmlnaHQ6IDAgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBiZzogZm0uaXMoJ2lucHV0JykgJiYgIWFueVBhbmVsKCkgJiYgIXF1ZXN0aW9uUmVxdWVzdCgpID8gYWNjZW50KCkgOiBNVVRFRCwgY29sb3I6ICdibGFjaycsIGJvbGQ6IHRydWUgfX0+e2AgJHtkZXJpdmVkKCkudGl0bGV9IGB9PC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgICA8VGV4dEFyZWFcbiAgICAgICAgICBjb2xvcj17Rkd9XG4gICAgICAgICAgbGluZUNvdW50ZXJcbiAgICAgICAgICBmb2N1c2VkPXtmbS5pcygnaW5wdXQnKSAmJiAhYW55UGFuZWwoKSAmJiAhcXVlc3Rpb25SZXF1ZXN0KCl9XG4gICAgICAgICAgdmFsdWU9e2lucHV0KCl9XG4gICAgICAgICAgb25DaGFuZ2U9eyh2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWQgPSBwbGFjZWhvbGRlcml6ZUltYWdlUGF0aHModiwge1xuICAgICAgICAgICAgICBhdHRhY2htZW50czogcmVmcy5hdHRhY2htZW50cyxcbiAgICAgICAgICAgICAgbmV4dElkOiAoKSA9PiArK3JlZnMuaW1hZ2VDb3VudCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBzZXRJbnB1dChjb252ZXJ0ZWQudGV4dClcbiAgICAgICAgICAgIHNldENtZEluZGV4KDApXG4gICAgICAgICAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgICAgICAgICAgc2V0RmlsZUluZGV4KDApXG4gICAgICAgICAgICBzZXRIaXN0SWR4KC0xKVxuICAgICAgICAgICAgc2V0RmlsZXNEaXNtaXNzZWQoZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKGJ1c3koKSkgaW50ZXJydXB0KClcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgICAgICAgICAgICBzZXRDb21wbGV0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICBzZXRGaWxlc0Rpc21pc3NlZCh0cnVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25TdWJtaXQ9e3NlbmR9XG4gICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndGFiJyAmJiAhZS5jdHJsICYmICFlLm1ldGEgJiYgc2hvd0ZpbGVzICYmIG1hdGNoZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHBpY2tGaWxlKG1hdGNoZWRGaWxlc1tNYXRoLm1pbihmaWxlSW5kZXgoKSwgbWF0Y2hlZEZpbGVzLmxlbmd0aCAtIDEpXSlcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3RhYicgJiYgIWUuY3RybCAmJiAhZS5tZXRhICYmIHNob3dDb21tYW5kcyAmJiBtYXRjaGVkQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjb25zdCBjeWNsZSA9IGNtZEN5Y2xlKClcbiAgICAgICAgICAgICAgaWYgKCFjeWNsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4oY21kSW5kZXgoKSwgbWF0Y2hlZENvbW1hbmRzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgc2V0Q21kQ3ljbGUoeyBtYXRjaGVzOiBtYXRjaGVkQ29tbWFuZHMgfSlcbiAgICAgICAgICAgICAgICBzZXRDbWRJbmRleChzdGFydClcbiAgICAgICAgICAgICAgICBzZXRJbnB1dCgnLycgKyBtYXRjaGVkQ29tbWFuZHNbc3RhcnRdLm5hbWUpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IChjbWRJbmRleCgpICsgMSkgJSBjeWNsZS5tYXRjaGVzLmxlbmd0aFxuICAgICAgICAgICAgICAgIHNldENtZEluZGV4KG5leHQpXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoJy8nICsgY3ljbGUubWF0Y2hlc1tuZXh0XS5uYW1lKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdwYXN0ZScgJiYgZS50ZXh0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGhzID0gZXh0cmFjdEltYWdlUGF0aHMoZS50ZXh0KVxuICAgICAgICAgICAgICBpZiAocGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVycyA9IHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBgW0ltYWdlICMkeysrcmVmcy5pbWFnZUNvdW50fV1gXG4gICAgICAgICAgICAgICAgICByZWZzLmF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoLCBtZWRpYVR5cGU6IG1lZGlhVHlwZUZvcihwYXRoKSB9KVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBjb25zdCBhdCA9IGUuY3Vyc29yID8/IGUudmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoZS52YWx1ZS5zbGljZSgwLCBhdCkgKyBwbGFjZWhvbGRlcnMuam9pbignICcpICsgZS52YWx1ZS5zbGljZShhdCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ2JhY2tzcGFjZScgJiYgZS5jdXJzb3IgPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gZS52YWx1ZS5zbGljZSgwLCBlLmN1cnNvcikubWF0Y2goL1xcW0ltYWdlICNcXGQrXFxdJC8pXG4gICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJlZnMuYXR0YWNobWVudHMuZGVsZXRlKG1hdGNoWzBdKVxuICAgICAgICAgICAgICAgIHNldElucHV0KGUudmFsdWUuc2xpY2UoMCwgZS5jdXJzb3IgLSBtYXRjaFswXS5sZW5ndGgpICsgZS52YWx1ZS5zbGljZShlLmN1cnNvcikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndGFiJyAmJiAhZS5jdHJsICYmICFlLm1ldGEpIHtcbiAgICAgICAgICAgICAgY29uc3QgY3R4ID0gY29tcGxldGlvbkNvbnRleHQoeyB2YWx1ZTogZS52YWx1ZSwgcmVzb2x2ZTogY29tcGxldGlvblNvdXJjZSB9KVxuICAgICAgICAgICAgICBpZiAoIWN0eCkgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICAgIGlmICghY29tcGxldGluZygpKSB7XG4gICAgICAgICAgICAgICAgc2V0Q29tcGxldGluZyh0cnVlKVxuICAgICAgICAgICAgICAgIHNldENvbXBJbmRleCgwKVxuICAgICAgICAgICAgICAgIGxpc3RGaWxlcyhjd2QpLnRoZW4oKGZpbGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZmlsZXMgIT09IGZpbGVMaXN0KCkpIHNldEZpbGVMaXN0KGZpbGVzKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3R4Lm1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGFjY2VwdENvbXBsZXRpb24oZS52YWx1ZSwgY3R4LCBjdHgubWF0Y2hlc1tNYXRoLm1pbihjb21wSW5kZXgoKSwgY3R4Lm1hdGNoZXMubGVuZ3RoIC0gMSldKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5jdHJsIHx8IGUubWV0YSB8fCBzaG93Q29tbWFuZHMgfHwgc2hvd0ZpbGVzKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3VwJyAmJiBlLnZhbHVlID09PSAnJyAmJiBxdWV1ZWQoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHNldElucHV0KHF1ZXVlZCgpLmpvaW4oJ1xcbicpKVxuICAgICAgICAgICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBicm93c2luZyA9IGhpc3RJZHgoKSA+PSAwXG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd1cCcgJiYgKGJyb3dzaW5nIHx8IGUudmFsdWUgPT09ICcnKSAmJiBoaXN0SWR4KCkgPCBzZW50KCkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBjb25zdCBuID0gaGlzdElkeCgpICsgMVxuICAgICAgICAgICAgICBzZXRIaXN0SWR4KG4pXG4gICAgICAgICAgICAgIHNldElucHV0KHNlbnQoKVtzZW50KCkubGVuZ3RoIC0gMSAtIG5dLnRleHQpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdkb3duJyAmJiBicm93c2luZykge1xuICAgICAgICAgICAgICBjb25zdCBuID0gaGlzdElkeCgpIC0gMVxuICAgICAgICAgICAgICBzZXRIaXN0SWR4KG4pXG4gICAgICAgICAgICAgIHNldElucHV0KG4gPCAwID8gJycgOiBzZW50KClbc2VudCgpLmxlbmd0aCAtIDEgLSBuXS50ZXh0KVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfX1cbiAgICAgICAgICBzdWJtaXRPbkVudGVyXG4gICAgICAgICAgY2xlYXJPblN1Ym1pdFxuICAgICAgICAgIG1heEhlaWdodD17OH1cbiAgICAgICAgICBjdXJzb3I9e3sgYmxpbms6IHRydWUsIGJnOiBhY2NlbnQoKSwgY29sb3I6ICdibGFjaycgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94Pn1cblxuICAgICAge3Nob3dDb21tYW5kcyAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge21hdGNoZWRDb21tYW5kcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgY29tbWFuZHM8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e21hdGNoZWRDb21tYW5kc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWQ9e2NtZEluZGV4KCl9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDbWRJbmRleH1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9eyhjKSA9PiBydW5Db21tYW5kKGMpfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtzaG93Q29tbWFuZHN9XG4gICAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KGMsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IE1VVEVEIH19PntgLyR7Yy5uYW1lfWAucGFkRW5kKG1hdGNoZWRDb21tYW5kcy5yZWR1Y2UoKG0sIHgpID0+IE1hdGgubWF4KG0sIHgubmFtZS5sZW5ndGggKyAzKSwgMTIpKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gJyNjYmQ1ZTEnIDogRkFJTlQgfX0+e2MuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dGaWxlcyAmJiBtYXRjaGVkRmlsZXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXttYXRjaGVkRmlsZXN9XG4gICAgICAgICAgICBzZWxlY3RlZD17ZmlsZUluZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0RmlsZUluZGV4fVxuICAgICAgICAgICAgb25TdWJtaXQ9e3BpY2tGaWxlfVxuICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IHNldEZpbGVzRGlzbWlzc2VkKHRydWUpfVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0ZpbGVzfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhmLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGR19TT0ZUIH19PntmfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dDb21wbGV0aW9uICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2NvbXBDdHgubWF0Y2hlc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtjb21wSW5kZXgoKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDb21wSW5kZXh9XG4gICAgICAgICAgICBvblN1Ym1pdD17KGNhbmRpZGF0ZSkgPT4gYWNjZXB0Q29tcGxldGlvbihpbnB1dCgpLCBjb21wQ3R4LCBjYW5kaWRhdGUpfVxuICAgICAgICAgICAgb25DYW5jZWw9e2Rpc21pc3NDb21wbGV0aW9ufVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0NvbXBsZXRpb259XG4gICAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgICAgc2Nyb2xsb2ZmPXsyfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KGNhbmRpZGF0ZSwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkdfU09GVCB9fT57Y2FuZGlkYXRlfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dNb2RlbFBhbmVsKCkgJiYgKFxuICAgICAgICA8TW9kZWxQYW5lbFxuICAgICAgICAgIG1vZGVscz17bW9kZWxzfVxuICAgICAgICAgIGN1cnJlbnQ9e21vZGVsKCkubmFtZX1cbiAgICAgICAgICBkZWZhdWx0TmFtZT17ZGVmYXVsdE1vZGVsKCkubmFtZX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TW9kZWxQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX1gKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldERlZmF1bHRNb2RlbChtKVxuICAgICAgICAgICAgd3JpdGVDb25maWcoeyBkZWZhdWx0TW9kZWw6IG0ubmFtZSB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX0gXHUwMEI3IHNhdmVkIGFzIGRlZmF1bHRgKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01vZGVsUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dSZXNlYXJjaE1vZGVsUGFuZWwoKSAmJiAoXG4gICAgICAgIDxNb2RlbFBhbmVsXG4gICAgICAgICAgbW9kZWxzPXttb2RlbHMuZmlsdGVyKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpfVxuICAgICAgICAgIGN1cnJlbnQ9e2Jvb3QucmVzZWFyY2hNb2RlbH1cbiAgICAgICAgICBkZWZhdWx0TmFtZT17bnVsbH1cbiAgICAgICAgICB0aXRsZT1cIkNob29zZSByZXNlYXJjaCB3b3JrZXIgbW9kZWxcIlxuICAgICAgICAgIGhpbnQ9XCJlbnRlcjogc2F2ZSB3b3JrZXIgbW9kZWwgXHUwMEI3IGVzYzogY2FuY2VsXCJcbiAgICAgICAgICBmb2N1c2VkPXtzaG93UmVzZWFyY2hNb2RlbFBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsobSkgPT4ge1xuICAgICAgICAgICAgYm9vdC5yZXNlYXJjaE1vZGVsID0gbS5uYW1lXG4gICAgICAgICAgICB3cml0ZUNvbmZpZyh7IG1vZGVsczogeyByZXNlYXJjaFdvcmtlcjogbS5uYW1lIH0gfSkuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgICAgICBzZXRTaG93UmVzZWFyY2hNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYHJlc2VhcmNoIHdvcmtlcnM6ICR7bS5uYW1lfWApXG4gICAgICAgICAgICBjb25zdCBwZW5kaW5nID0gcGVuZGluZ1Jlc2VhcmNoKClcbiAgICAgICAgICAgIGNvbnN0IHJldHVyblRvID0gcmVzZWFyY2hNb2RlbFJldHVybigpXG4gICAgICAgICAgICBzZXRQZW5kaW5nUmVzZWFyY2gobnVsbClcbiAgICAgICAgICAgIHNldFJlc2VhcmNoTW9kZWxSZXR1cm4obnVsbClcbiAgICAgICAgICAgIGlmIChwZW5kaW5nKSBydW5Db21tYW5kKHsgbmFtZTogJ2RlZXAtcmVzZWFyY2gnIH0sIGAtLWFnZW50cyAke3BlbmRpbmcuYWdlbnRMaW1pdH0gJHtwZW5kaW5nLnF1ZXN0aW9ufWApXG4gICAgICAgICAgICBlbHNlIGlmIChyZXR1cm5UbyA9PT0gJ2NvbmZpZycpIHNldFNob3dDb25maWdQYW5lbCh0cnVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KCkgPT4ge319XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1Jlc2VhcmNoTW9kZWxQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIHNldFBlbmRpbmdSZXNlYXJjaChudWxsKVxuICAgICAgICAgICAgaWYgKHJlc2VhcmNoTW9kZWxSZXR1cm4oKSA9PT0gJ2NvbmZpZycpIHNldFNob3dDb25maWdQYW5lbCh0cnVlKVxuICAgICAgICAgICAgc2V0UmVzZWFyY2hNb2RlbFJldHVybihudWxsKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0VmZm9ydFBhbmVsKCkgJiYgKFxuICAgICAgICA8RWZmb3J0UGFuZWxcbiAgICAgICAgICBsZXZlbHM9e0VGRk9SVF9MRVZFTFN9XG4gICAgICAgICAgY3VycmVudD17ZWZmb3J0KCkgPz8gbnVsbH1cbiAgICAgICAgICBkZWZhdWx0TGV2ZWw9e2RlZmF1bHRFZmZvcnQoKSA/PyBudWxsfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dFZmZvcnRQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KGwpID0+IHtcbiAgICAgICAgICAgIHNldFNlc3Npb25FZmZvcnQobC5rZXkpXG4gICAgICAgICAgICBzZXRTaG93RWZmb3J0UGFuZWwoZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBpY2tEZWZhdWx0PXsobCkgPT4ge1xuICAgICAgICAgICAgc2V0U2Vzc2lvbkVmZm9ydChsLmtleSwgeyBhc0RlZmF1bHQ6IHRydWUgfSlcbiAgICAgICAgICAgIHNldFNob3dFZmZvcnRQYW5lbChmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dFZmZvcnRQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1RoZW1lUGFuZWwoKSAmJiAoXG4gICAgICAgIDxUaGVtZVBhbmVsXG4gICAgICAgICAgdGhlbWVzPXt0aGVtZUl0ZW1zKCl9XG4gICAgICAgICAgcHJlZj17dGhlbWVQcmVmKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1RoZW1lUGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyh0KSA9PiB7XG4gICAgICAgICAgICBzZXRTaG93VGhlbWVQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIGFwcGx5VGhlbWVQcmVmKHQua2V5KVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QcmV2aWV3PXsodCkgPT4gcHJldmlld1BhbGV0dGUodC5rZXkpfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICAgIHNldFNob3dUaGVtZVBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgcHJldmlld1BhbGV0dGUodGhlbWVQcmVmKCkpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93Q29uZmlnUGFuZWwoKSAmJiAoXG4gICAgICAgIDxDb25maWdQYW5lbFxuICAgICAgICAgIHZhbHVlcz17eyBjbG91ZHM6IGNsb3VkcygpLCBjb21wYWN0VG9vbHM6IGNvbXBhY3RUb29sSGlzdG9yeSgpLCBnaXRTdGF0dXM6IGdpdEZvb3RlcigpLCByZXNlYXJjaE1vZGVsOiBib290LnJlc2VhcmNoTW9kZWwsIHJlc2VhcmNoQWdlbnRMaW1pdDogcmVzZWFyY2hBZ2VudExpbWl0KCkgfX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93Q29uZmlnUGFuZWwoKX1cbiAgICAgICAgICBvblBpY2tSZXNlYXJjaE1vZGVsPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRSZXNlYXJjaE1vZGVsUmV0dXJuKCdjb25maWcnKVxuICAgICAgICAgICAgc2V0U2hvd0NvbmZpZ1BhbmVsKGZhbHNlKVxuICAgICAgICAgICAgc2V0U2hvd1Jlc2VhcmNoTW9kZWxQYW5lbCh0cnVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DaGFuZ2U9eyhuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdjbG91ZHMnKSB7XG4gICAgICAgICAgICAgIHNldENsb3Vkcyh2YWx1ZSlcbiAgICAgICAgICAgICAgd3JpdGVDb25maWcoeyBhbmltYXRpb246IHsgY2xvdWRzOiB2YWx1ZSB9IH0pXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdnaXRTdGF0dXMnKSB7XG4gICAgICAgICAgICAgIHNldEdpdEZvb3Rlcih2YWx1ZSlcbiAgICAgICAgICAgICAgYm9vdC5naXRGb290ZXIgPSB2YWx1ZVxuICAgICAgICAgICAgICBib290LmdpdC5zZXRFbmFibGVkKHZhbHVlKVxuICAgICAgICAgICAgICB3cml0ZUNvbmZpZyh7IGRpc3BsYXk6IHsgZ2l0U3RhdHVzOiB2YWx1ZSB9IH0pXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdyZXNlYXJjaEFnZW50TGltaXQnKSB7XG4gICAgICAgICAgICAgIHNldFJlc2VhcmNoQWdlbnRMaW1pdCh2YWx1ZSlcbiAgICAgICAgICAgICAgYm9vdC5yZXNlYXJjaEFnZW50TGltaXQgPSB2YWx1ZVxuICAgICAgICAgICAgICB3cml0ZUNvbmZpZyh7IHJlc2VhcmNoOiB7IGFnZW50TGltaXQ6IHZhbHVlIH0gfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldENvbXBhY3RUb29sSGlzdG9yeSh2YWx1ZSlcbiAgICAgICAgICAgICAgd3JpdGVDb25maWcoeyBkaXNwbGF5OiB7IGNvbXBhY3RUb29sSGlzdG9yeTogdmFsdWUgfSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0NvbmZpZ1BhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RGVsZXRlQ29uZmlybSgpICYmIChcbiAgICAgICAgPENvbmZpcm1QYW5lbFxuICAgICAgICAgIHRpdGxlPVwiRGVsZXRlIGN1cnJlbnQgc2Vzc2lvbj9cIlxuICAgICAgICAgIG1lc3NhZ2U9XCJUaGUgY3VycmVudCBjb252ZXJzYXRpb24gYW5kIGl0cyBwZXJzaXN0ZWQgaGlzdG9yeSB3aWxsIGJlIHBlcm1hbmVudGx5IGRlbGV0ZWQuXCJcbiAgICAgICAgICBjb25maXJtTGFiZWw9XCJEZWxldGVcIlxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dEZWxldGVDb25maXJtKCl9XG4gICAgICAgICAgb25Db25maXJtPXtjb25maXJtRGVsZXRlQ3VycmVudFNlc3Npb259XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0RlbGV0ZUNvbmZpcm0oZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dIaXN0b3J5UGFuZWwoKSAmJiAoXG4gICAgICAgIDxIaXN0b3J5UGFuZWxcbiAgICAgICAgICBwcm9tcHRzPXtoaXN0UHJvbXB0cygpfVxuICAgICAgICAgIHNjb3Blcz17SElTVE9SWV9TQ09QRVN9XG4gICAgICAgICAgc2NvcGVJbmRleD17aGlzdFNjb3BlKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd0hpc3RvcnlQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KHRleHQpID0+IHsgc2V0SW5wdXQodGV4dCk7IHNldFNob3dIaXN0b3J5UGFuZWwoZmFsc2UpIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0hpc3RvcnlQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Jlc3VtZVBhbmVsKCkgJiYgKFxuICAgICAgICA8UmVzdW1lUGFuZWxcbiAgICAgICAgICBzZXNzaW9ucz17cmVzdW1lU2Vzc2lvbnMoKX1cbiAgICAgICAgICBzY29wZXM9e1JFU1VNRV9TQ09QRVN9XG4gICAgICAgICAgc2NvcGVJbmRleD17cmVzdW1lU2NvcGUoKX1cbiAgICAgICAgICBsb2FkaW5nPXtyZXN1bWVMb2FkaW5nKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1Jlc3VtZVBhbmVsKCl9XG4gICAgICAgICAgY3VycmVudElkPXtyZWZzLnNlc3Npb24/LmlkfVxuICAgICAgICAgIG9uUGljaz17KG1ldGEpID0+IHtcbiAgICAgICAgICAgIGlmIChtZXRhLmhlYWRlci5pZCA9PT0gcmVmcy5zZXNzaW9uPy5pZCkgcmV0dXJuIHNldFNob3dSZXN1bWVQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIHJlc3VtZVNlc3Npb24obWV0YSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uRGVsZXRlPXtkZWxldGVTZXNzaW9uTWV0YX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UmVzdW1lUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dNZW1vcnlQYW5lbCgpICYmIChcbiAgICAgICAgPE1lbW9yeVBhbmVsXG4gICAgICAgICAgbWVtb3JpZXM9e21lbW9yeUxpc3QoKS5maWx0ZXIoKG0pID0+IE1FTU9SWV9TQ09QRVNbbWVtU2NvcGUoKV0gPT09ICdhbGwnIHx8IG0uc2NvcGUgPT09IE1FTU9SWV9TQ09QRVNbbWVtU2NvcGUoKV0pfVxuICAgICAgICAgIHNjb3Blcz17TUVNT1JZX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXttZW1TY29wZSgpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dNZW1vcnlQYW5lbCgpfVxuICAgICAgICAgIG9uRm9yZ2V0PXtmb3JnZXRNZW1vcnl9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01lbW9yeVBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtpbmZvUGFuZWwoKSAmJiAoXG4gICAgICAgIDxJbmZvTGlzdFBhbmVsXG4gICAgICAgICAgdGl0bGU9e2luZm9QYW5lbCgpLnRpdGxlfVxuICAgICAgICAgIHJvd3M9e2luZm9QYW5lbCgpLnJvd3N9XG4gICAgICAgICAgb3ZlcnZpZXc9e2luZm9QYW5lbCgpLm92ZXJ2aWV3fVxuICAgICAgICAgIGZvY3VzZWQ9e2luZm9QYW5lbCgpICE9PSBudWxsfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEluZm9QYW5lbChudWxsKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93UHJvamVjdFBhbmVsKCkgJiYgKFxuICAgICAgICA8UHJvamVjdFBhbmVsXG4gICAgICAgICAgcHJvamVjdHM9e3Byb2plY3RzKCl9XG4gICAgICAgICAgbG9hZGluZz17cHJvamVjdHNMb2FkaW5nKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1Byb2plY3RQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KHApID0+IHJlc3VtZVNlc3Npb24ocC5sYXRlc3QpfVxuICAgICAgICAgIG9uRGVsZXRlPXtkZWxldGVQcm9qZWN0fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dQcm9qZWN0UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dDb25uZWN0UGFuZWwoKSAmJiAoXG4gICAgICAgIDxDb25uZWN0UGFuZWxcbiAgICAgICAgICBwcm92aWRlcnM9e2F1dGhQcm92aWRlcnMoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93Q29ubmVjdFBhbmVsKCl9XG4gICAgICAgICAgb25Db25uZWN0PXtjb25uZWN0UHJvdmlkZXJ9XG4gICAgICAgICAgb25EaXNjb25uZWN0PXtkaXNjb25uZWN0UHJvdmlkZXJ9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0Nvbm5lY3RQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1dha2V1cHNQYW5lbCgpICYmIChcbiAgICAgICAgPFdha2V1cHNQYW5lbFxuICAgICAgICAgIHdha2V1cHM9eyhzaGVsbHNWZXJzaW9uKCksIGJvb3Qud2FrZXVwcy5saXN0KCkpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dXYWtldXBzUGFuZWwoKX1cbiAgICAgICAgICBvbkNhbmNlbD17KHcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFybWVkID0gcmVmcy53YWtldXBDYW5jZWxBcm1cbiAgICAgICAgICAgIGlmICghYXJtZWQgfHwgYXJtZWQuaWQgIT09IHcuaWQgfHwgRGF0ZS5ub3coKSAtIGFybWVkLmF0ID4gMzAwMCkge1xuICAgICAgICAgICAgICByZWZzLndha2V1cENhbmNlbEFybSA9IHsgaWQ6IHcuaWQsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZsYXNoKGBhZ2FpbiB0byBjYW5jZWwgd2FrZS11cCAke3cuaWR9ICgke3cubm90ZS5zcGxpdCgnXFxuJylbMF0uc2xpY2UoMCwgNDApfSlgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVmcy53YWtldXBDYW5jZWxBcm0gPSBudWxsXG4gICAgICAgICAgICBib290Lndha2V1cHMuY2FuY2VsKHcuaWQpXG4gICAgICAgICAgICBmbGFzaChgY2FuY2VsbGVkIHdha2UtdXAgJHt3LmlkfWApXG4gICAgICAgICAgICBub3RlU3lzdGVtKFxuICAgICAgICAgICAgICBgW3N5c3RlbSBub3RpZmljYXRpb25dIHRoZSB1c2VyIGNhbmNlbGxlZCBzY2hlZHVsZWQgd2FrZS11cCAke3cuaWR9IChub3RlIHdhczogJHt3Lm5vdGUucmVwbGFjZSgvXFxuL2csICcgJyl9KS4gVGhpcyB3YXMgZGVsaWJlcmF0ZTsgZG8gbm90IHJlc2NoZWR1bGUgaXQgdW5sZXNzIGFza2VkLmAsXG4gICAgICAgICAgICAgIHsgd2FrZTogZmFsc2UgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dXYWtldXBzUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dNY3BQYW5lbCgpICYmIChcbiAgICAgICAgPE1jcFBhbmVsXG4gICAgICAgICAgc2VydmVycz17bWNwU2VydmVycygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dNY3BQYW5lbCgpfVxuICAgICAgICAgIG9uVG9nZ2xlPXsobmFtZSkgPT4gbWNwLnRvZ2dsZShuYW1lKX1cbiAgICAgICAgICBvblJlY29ubmVjdD17KG5hbWUpID0+IG1jcC5yZWNvbm5lY3QobmFtZSl9XG4gICAgICAgICAgb25SZW1vdmU9eyhuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhcm1lZCA9IHJlZnMubWNwUmVtb3ZlQXJtXG4gICAgICAgICAgICBpZiAoIWFybWVkIHx8IGFybWVkLm5hbWUgIT09IG5hbWUgfHwgRGF0ZS5ub3coKSAtIGFybWVkLmF0ID4gMzAwMCkge1xuICAgICAgICAgICAgICByZWZzLm1jcFJlbW92ZUFybSA9IHsgbmFtZSwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgICAgICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byByZW1vdmUgXCIke25hbWV9XCIgYW5kIGl0cyBjb25maWdgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVmcy5tY3BSZW1vdmVBcm0gPSBudWxsXG4gICAgICAgICAgICBtY3AucmVtb3ZlKG5hbWUpXG4gICAgICAgICAgICBmbGFzaChgcmVtb3ZlZCBtY3Agc2VydmVyICR7bmFtZX1gKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25BZGQ9eyhuYW1lLCBjb21tYW5kLCBzY29wZSkgPT4ge1xuICAgICAgICAgICAgbWNwLmFkZChuYW1lLCBjb21tYW5kLCBzY29wZSlcbiAgICAgICAgICAgIGZsYXNoKGBhZGRlZCAke25hbWV9ICgke3Njb3BlfSlgKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25FZGl0PXsobmFtZSwgY29tbWFuZCkgPT4ge1xuICAgICAgICAgICAgbWNwLnVwZGF0ZShuYW1lLCBjb21tYW5kKVxuICAgICAgICAgICAgZmxhc2goYHVwZGF0ZWQgJHtuYW1lfWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkludmFsaWQ9e2ZsYXNofVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNY3BQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7cmV3aW5kU3RlcCgpID09PSAncGljaycgJiYgKFxuICAgICAgICA8UmV3aW5kUGlja1BhbmVsXG4gICAgICAgICAgZW50cmllcz17Wy4uLnJld2luZEVudHJpZXMoKV0ucmV2ZXJzZSgpfVxuICAgICAgICAgIHN0YXRzPXsoaW5kZXgpID0+IHJld2luZFN0YXRzKGRlcml2ZWQoKSwgaW5kZXgpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ3BpY2snfVxuICAgICAgICAgIG9uUGljaz17KGVudHJ5KSA9PiB7IHNldFJld2luZFRhcmdldChlbnRyeSk7IHNldFJld2luZFN0ZXAoJ2FjdGlvbicpIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0UmV3aW5kU3RlcChudWxsKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtyZXdpbmRTdGVwKCkgPT09ICdhY3Rpb24nICYmIHJld2luZFRhcmdldCgpICYmIChcbiAgICAgICAgPFJld2luZEFjdGlvblBhbmVsXG4gICAgICAgICAgdGFyZ2V0PXtyZXdpbmRUYXJnZXQoKX1cbiAgICAgICAgICBvcHRpb25zPXtyZXdpbmRPcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e3Jld2luZFN0ZXAoKSA9PT0gJ2FjdGlvbid9XG4gICAgICAgICAgb25TdWJtaXQ9e3BlcmZvcm1SZXdpbmR9XG4gICAgICAgICAgb25CYWNrPXsoKSA9PiBzZXRSZXdpbmRTdGVwKCdwaWNrJyl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7dmlzaWJsZVNoZWxscy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJyB9fT5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YGVudGVyIHZpZXcke3NoZWxsQWN0aW9uSGludCA/IGAgXHUwMEI3ICR7c2hlbGxBY3Rpb25IaW50fWAgOiAnJ30gXHUwMEI3IGovayBtb3ZlYH08L3RleHQ+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgPEFnZW50U3RyaXBSb3cgc2VsZWN0ZWQ9eyF2aWV3ZWRTaGVsbH0gZm9jdXNlZD17Zm0uY3VycmVudCgpID09PSAnc2hlbGwtbWFpbid9IG9uUHJlc3M9eygpID0+IHsgZm0uZm9jdXMoJ3NoZWxsLW1haW4nKTsgc2V0Vmlld2VkU2hlbGxJZChudWxsKTsgc2V0Rm9sbG93KHRydWUpIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZtLmN1cnJlbnQoKSA9PT0gJ3NoZWxsLW1haW4nID8gJ2JsYWNrJyA6IGFjY2VudCgpIH19PnsnXHUyNUNGICd9PC90ZXh0PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZtLmN1cnJlbnQoKSA9PT0gJ3NoZWxsLW1haW4nID8gJ2JsYWNrJyA6ICF2aWV3ZWRTaGVsbCA/IEZHIDogTVVURUQgfX0+eydtYWluJ308L3RleHQ+XG4gICAgICAgICAgPC9BZ2VudFN0cmlwUm93PlxuICAgICAgICAgIHtzaGVsbFdpbmRvdy5tYXAoKHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWQgPSBmbS5jdXJyZW50KCkgPT09IGBzaGVsbC0ke3MuaWR9YFxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB2aWV3ZWRTaGVsbElkKCkgPT09IHMuaWRcbiAgICAgICAgICAgIGNvbnN0IGVsYXBzZWQgPSBhZ2VudEVsYXBzZWQoeyBzdGFydGVkQXQ6IHMuc3RhcnRlZEF0LCBlbmRlZEF0OiBzLmVuZGVkQXQgfSlcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxBZ2VudFN0cmlwUm93IGtleT17cy5pZH0gc2VsZWN0ZWQ9e3NlbGVjdGVkfSBmb2N1c2VkPXtmb2N1c2VkfSBvblByZXNzPXsoKSA9PiB7IGZtLmZvY3VzKGBzaGVsbC0ke3MuaWR9YCk7IHNldFZpZXdlZFNoZWxsSWQocy5pZCk7IHNldEZvbGxvdyh0cnVlKSB9fT5cbiAgICAgICAgICAgICAgICB7cy5zdGF0dXMgPT09ICdydW5uaW5nJyA/IDxTcGlubmVyIGNvbG9yPXtmb2N1c2VkID8gJ2JsYWNrJyA6IGFjY2VudCgpfSB2YXJpYW50PVwiZG90c1wiIC8+IDogPHRleHQgc3R5bGU9e3sgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogcy5leGl0Q29kZSA9PT0gMCA/IEdSRUVOIDogUkVEIH19PntzLmV4aXRDb2RlID09PSAwID8gJ1x1MjVDRicgOiAnXHUwMEQ3J308L3RleHQ+fVxuICAgICAgICAgICAgICAgIDx0ZXh0PnsnICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBmb2N1c2VkID8gJ2JsYWNrJyA6IHNlbGVjdGVkID8gRkcgOiBNVVRFRCB9fT57YHNoZWxsIFske3MuaWR9XSAgYH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBmb2N1c2VkID8gJ2JsYWNrJyA6IE1VVEVEIH19PntzLmRlc2NyaXB0aW9uIHx8IHMuY29tbWFuZC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogTVVURUQgfX0+e2AgICR7cy5zdGF0dXMgPT09ICdydW5uaW5nJyA/ICcnIDogYGV4aXQgJHtzLmV4aXRDb2RlfSBcdTAwQjcgYH0ke2VsYXBzZWR9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvQWdlbnRTdHJpcFJvdz5cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KX1cbiAgICAgICAgICB7dmlzaWJsZVNoZWxscy5sZW5ndGggPiBTSEVMTF9TVFJJUF9NQVggJiYgKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgICAke3NoZWxsV2luZG93U3RhcnQgPiAwID8gYFx1MjE5MSAke3NoZWxsV2luZG93U3RhcnR9YCA6ICcnfSR7c2hlbGxXaW5kb3dTdGFydCA+IDAgJiYgc2hlbGxXaW5kb3dTdGFydCArIHNoZWxsV2luZG93Lmxlbmd0aCA8IHZpc2libGVTaGVsbHMubGVuZ3RoID8gJyBcdTAwQjcgJyA6ICcnfSR7c2hlbGxXaW5kb3dTdGFydCArIHNoZWxsV2luZG93Lmxlbmd0aCA8IHZpc2libGVTaGVsbHMubGVuZ3RoID8gYFx1MjE5MyAke3Zpc2libGVTaGVsbHMubGVuZ3RoIC0gc2hlbGxXaW5kb3dTdGFydCAtIHNoZWxsV2luZG93Lmxlbmd0aH1gIDogJyd9IG1vcmVgfTwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIHt2aXNpYmxlQWdlbnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgZW50ZXIgdmlldyR7YWdlbnRBY3Rpb25IaW50ID8gYCBcdTAwQjcgJHthZ2VudEFjdGlvbkhpbnR9YCA6ICcnfSBcdTAwQjcgai9rIG1vdmVgfTwvdGV4dD5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgICA8QWdlbnRTdHJpcFJvdyBzZWxlY3RlZD17IXZpZXdlZEFnZW50fSBmb2N1c2VkPXtmbS5jdXJyZW50KCkgPT09ICdhZ2VudC1tYWluJ30gb25QcmVzcz17KCkgPT4geyBmbS5mb2N1cygnYWdlbnQtbWFpbicpOyBzZXRWaWV3ZWRBZ2VudElkKG51bGwpOyBzZXRGb2xsb3codHJ1ZSk7IHNldEhpc3RXaW5kb3coSElTVE9SWV9XSU5ET1cpIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZtLmN1cnJlbnQoKSA9PT0gJ2FnZW50LW1haW4nID8gJ2JsYWNrJyA6IGFjY2VudCgpIH19PnsnXHUyNUNGICd9PC90ZXh0PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZtLmN1cnJlbnQoKSA9PT0gJ2FnZW50LW1haW4nID8gJ2JsYWNrJyA6ICF2aWV3ZWRBZ2VudCA/IEZHIDogTVVURUQgfX0+eydtYWluJ308L3RleHQ+XG4gICAgICAgICAgPC9BZ2VudFN0cmlwUm93PlxuICAgICAgICAgIHthZ2VudFdpbmRvdy5tYXAoKGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGFnZW50U3RhdHVzKGEpXG4gICAgICAgICAgICBjb25zdCBmb2N1c2VkID0gZm0uY3VycmVudCgpID09PSBgYWdlbnQtJHthLmlkfWBcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxBZ2VudFN0cmlwUm93IGtleT17YS5pZH0gc2VsZWN0ZWQ9e3ZpZXdlZEFnZW50SWQoKSA9PT0gYS5pZH0gZm9jdXNlZD17Zm9jdXNlZH0gb25QcmVzcz17KCkgPT4geyBmbS5mb2N1cyhgYWdlbnQtJHthLmlkfWApOyBzZXRWaWV3ZWRBZ2VudElkKGEuaWQpOyBzZXRGb2xsb3codHJ1ZSk7IHNldEhpc3RXaW5kb3coSElTVE9SWV9XSU5ET1cpIH19PlxuICAgICAgICAgICAgICAgIHthLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gPFNwaW5uZXIgY29sb3I9e2ZvY3VzZWQgPyAnYmxhY2snIDogYWNjZW50KCl9IHZhcmlhbnQ9XCJkb3RzXCIgLz4gOiA8dGV4dCBzdHlsZT17eyBjb2xvcjogZm9jdXNlZCA/ICdibGFjaycgOiBzdGF0dXMuY29sb3IgfX0+e3N0YXR1cy5pY29ufTwvdGV4dD59XG4gICAgICAgICAgICAgICAgPHRleHQ+eycgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGZvY3VzZWQgPyAnYmxhY2snIDogdmlld2VkQWdlbnRJZCgpID09PSBhLmlkID8gRkcgOiBNVVRFRCB9fT57YCR7YS5yb2xlIHx8ICdhZ2VudCd9IFske2EuaWR9XSAgYH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBmb2N1c2VkID8gJ2JsYWNrJyA6IE1VVEVEIH19PnthLmRlc2NyaXB0aW9ufTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICB7c3RhdHVzLmxhYmVsICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBmb2N1c2VkID8gJ2JsYWNrJyA6IHN0YXR1cy5jb2xvciB9fT57YCAgJHtzdGF0dXMubGFiZWx9YH08L3RleHQ+fVxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBmb2N1c2VkID8gJ2JsYWNrJyA6IE1VVEVEIH19PntgJHtzdGF0dXMubGFiZWwgPyAnIFx1MDBCNycgOiAnICAnfSAke2FnZW50RWxhcHNlZChhKX0gXHUwMEI3IFx1MjE5MyBgfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8QW5pbWF0ZWRWYWx1ZSB2YWx1ZT17YS51c2FnZT8udG90YWxUb2tlbnMgfHwgYS51c2FnZT8ucHJvbXB0VG9rZW5zIHx8IDB9IGNvbG9yPXtmb2N1c2VkID8gJ2JsYWNrJyA6IE1VVEVEfSBoaWdobGlnaHQ9e2ZvY3VzZWQgPyAnYmxhY2snIDogYWNjZW50KCl9IGZvcm1hdD17KG4pID0+IGAke2NvbXBhY3ROdW1iZXIobil9IHRva2Vuc2B9IC8+XG4gICAgICAgICAgICAgIDwvQWdlbnRTdHJpcFJvdz5cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KX1cbiAgICAgICAgICB7dmlzaWJsZUFnZW50cy5sZW5ndGggPiBBR0VOVF9TVFJJUF9NQVggJiYgKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgICAke2FnZW50V2luZG93U3RhcnQgPiAwID8gYFx1MjE5MSAke2FnZW50V2luZG93U3RhcnR9YCA6ICcnfSR7YWdlbnRXaW5kb3dTdGFydCA+IDAgJiYgYWdlbnRXaW5kb3dTdGFydCArIGFnZW50V2luZG93Lmxlbmd0aCA8IHZpc2libGVBZ2VudHMubGVuZ3RoID8gJyBcdTAwQjcgJyA6ICcnfSR7YWdlbnRXaW5kb3dTdGFydCArIGFnZW50V2luZG93Lmxlbmd0aCA8IHZpc2libGVBZ2VudHMubGVuZ3RoID8gYFx1MjE5MyAke3Zpc2libGVBZ2VudHMubGVuZ3RoIC0gYWdlbnRXaW5kb3dTdGFydCAtIGFnZW50V2luZG93Lmxlbmd0aH1gIDogJyd9IG1vcmVgfTwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIHtnaXRJbmZvPy5icmFuY2ggJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBwYWRkaW5nWDogMiwgZ2FwOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2dpdEluZm8uYnJhbmNofTwvdGV4dD5cbiAgICAgICAgICB7Z2l0SW5mby5hZGRlZCA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEdSRUVOIH19PntgKyR7Z2l0SW5mby5hZGRlZH1gfTwvdGV4dD59XG4gICAgICAgICAge2dpdEluZm8ucmVtb3ZlZCA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IFJFRCB9fT57YC0ke2dpdEluZm8ucmVtb3ZlZH1gfTwvdGV4dD59XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgcGFkZGluZ1g6IDIsIGdhcDogMSwgbWFyZ2luVG9wOiBnaXRJbmZvPy5icmFuY2ggPyAwIDogMSB9fT5cbiAgICAgICAge2J1c3koKVxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPFNoaW1tZXIgY29sb3I9e2FjY2VudCgpfSBoaWdobGlnaHQ9e0hJR0hMSUdIVH0gZHVyYXRpb249ezE1MDB9IHJldmVyc2U+XG4gICAgICAgICAgICAgICAge2NvbXBhY3RpbmcoKVxuICAgICAgICAgICAgICAgICAgPyBjb21wYWN0U3RhdHVzKCk/LnBoYXNlID09PSAnd3JpdGluZycgPyBgQ29tcGFjdGluZyBcdTAwQjcgd3JpdGluZyAke2NvbXBhY3RTdGF0dXMoKS5zZWN0aW9ufS84YCA6ICdDb21wYWN0aW5nIFx1MDBCNyBhbmFseXppbmcnXG4gICAgICAgICAgICAgICAgICA6IHR1cm5QaGFzZSgpID09PSAndGhpbmtpbmcnID8gJ1RoaW5raW5nJyA6IHR1cm5QaGFzZSgpID09PSAndG9vbHMnID8gJ1dvcmtpbmcnIDogJ1Jlc3BvbmRpbmcnfVxuICAgICAgICAgICAgICA8L1NoaW1tZXI+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAoJHtlbGFwc2VkfSR7Y29tcGFjdFN0YXR1cygpID8gYCBcdTAwQjcgXHUyMTkzICR7Zm10VG9rZW5zKE1hdGgucm91bmQoY29tcGFjdFN0YXR1cygpLmNoYXJzIC8gNCkpfSB0b2tlbnNgIDogJyd9KSBcdTAwQjcgZXNjIHRvIGludGVycnVwdGB9PC90ZXh0PlxuICAgICAgICAgICAgICB7Y29tcGFjdFN0YXR1cygpPy5waGFzZSA9PT0gJ3dyaXRpbmcnICYmIChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBtYXJnaW5MZWZ0OiAxLCB3aWR0aDogMTYgfX0+XG4gICAgICAgICAgICAgICAgICA8UHJvZ3Jlc3NCYXIgdmFyaWFudD1cInRoaW5cIiB2YWx1ZT17Y29tcGFjdFN0YXR1cygpLnNlY3Rpb24gLyA4fSB3aWR0aD17MTZ9IHBlcmNlbnRhZ2U9e2ZhbHNlfSBjb2xvcj17YWNjZW50KCl9IC8+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApXG4gICAgICAgICAgOiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19Pntib290LmRpc3BsYXlDd2R9PC90ZXh0Pn1cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICB7cHJvY2Vzcy5lbnYuUElDT19QRVJGICYmICgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdHMgPSB1c2VGcmFtZVN0YXRzKClcbiAgICAgICAgICByZXR1cm4gPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgXHUyM0YxICR7KHN0YXRzLnJlbmRlck1zID8/IDApLnRvRml4ZWQoMSl9bXMgXHUwMEI3ICR7c3RhdHMuZnBzfWZwcyBcdTAwQjcgJHtkZXJpdmVkKCkudHJhbnNjcmlwdC5sZW5ndGh9IGl0ZW1zYH08L3RleHQ+XG4gICAgICAgIH0pKCl9XG4gICAgICAgIHtwZW5kaW5nV2FrZXVwcyA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgXHUyM0YwICR7cGVuZGluZ1dha2V1cHN9YH08L3RleHQ+fVxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e21vZGVsKCkubmFtZX08L3RleHQ+XG4gICAgICAgIHtlZmZvcnRBcHBsaWVzKCkgJiYgZWZmb3J0KCkgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgXHUwMEI3ICR7ZWZmb3J0KCl9YH08L3RleHQ+fVxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+XHUyMTkxPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDxBbmltYXRlZFZhbHVlIHZhbHVlPXt1c2FnZS5wcm9tcHRUb2tlbnN9IGNvbG9yPXtNVVRFRH0gaGlnaGxpZ2h0PXthY2NlbnQoKX0gZm9ybWF0PXtjb21wYWN0TnVtYmVyfSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT4gaW48L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+XHUyMTkzPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDxBbmltYXRlZFZhbHVlIHZhbHVlPXt1c2FnZS5jb21wbGV0aW9uVG9rZW5zfSBjb2xvcj17TVVURUR9IGhpZ2hsaWdodD17YWNjZW50KCl9IGZvcm1hdD17Y29tcGFjdE51bWJlcn0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+IG91dDwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHt1c2FnZS50aG91Z2h0VG9rZW5zID4gMCAmJiA8QW5pbWF0ZWRWYWx1ZSB2YWx1ZT17dXNhZ2UudGhvdWdodFRva2Vuc30gY29sb3I9e01VVEVEfSBoaWdobGlnaHQ9e2FjY2VudCgpfSBmb3JtYXQ9eyhuKSA9PiBgXHUyNzI2ICR7TWF0aC5yb3VuZChuKS50b0xvY2FsZVN0cmluZygpfSB0aGlua2B9IC8+fVxuICAgICAgICB7Y29udGV4dFBlcmNlbnQgPiAwICYmIDxBbmltYXRlZFZhbHVlIHZhbHVlPXtjb250ZXh0UGVyY2VudH0gY29sb3I9e2NvbnRleHRQZXJjZW50ID49IDgwID8gUkVEIDogTVVURUR9IGhpZ2hsaWdodD17YWNjZW50KCl9IGZvcm1hdD17KG4pID0+IGBjdHggJHtNYXRoLnJvdW5kKG4pfSVgfSAvPn1cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgYXBwZW5kRmlsZSwgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBwcm9qZWN0RGlyLCBwcm9qZWN0SGlzdG9yeUZpbGUsIGVuc3VyZURpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmNvbnN0IE1BWF9QUk9NUFRTX1BFUl9TQ09QRSA9IDEwMDBcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGVuZFByb21wdChyb290LCB0ZXh0KSB7XG4gIGVuc3VyZURpcihwcm9qZWN0RGlyKHJvb3QpKVxuICBhd2FpdCBhcHBlbmRGaWxlKHByb2plY3RIaXN0b3J5RmlsZShyb290KSwgSlNPTi5zdHJpbmdpZnkoeyB0ZXh0LCBhdDogRGF0ZS5ub3coKSB9KSArICdcXG4nKVxufVxuXG5mdW5jdGlvbiBwYXJzZVByb21wdExpbmVzKHRleHQpIHtcbiAgcmV0dXJuIHRleHRcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGxpbmUudHJpbSgpID8gSlNPTi5wYXJzZShsaW5lKSA6IG51bGxcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUHJvbXB0cyhmaWxlLCBzY29wZSkge1xuICB0cnkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBwYXJzZVByb21wdExpbmVzKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICAgIHJldHVybiBlbnRyaWVzXG4gICAgICAuZmlsdGVyKChlKSA9PiB0eXBlb2YgZS50ZXh0ID09PSAnc3RyaW5nJyAmJiBlLnRleHQudHJpbSgpKVxuICAgICAgLnNsaWNlKC1NQVhfUFJPTVBUU19QRVJfU0NPUEUpXG4gICAgICAubWFwKChlKSA9PiAoeyB0ZXh0OiBlLnRleHQsIGF0OiBlLmF0IHx8IDAsIHNjb3BlIH0pKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFByb2plY3RQcm9tcHRzKHJvb3QpIHtcbiAgcmV0dXJuIHJlYWRQcm9tcHRzKHByb2plY3RIaXN0b3J5RmlsZShyb290KSwgJ3Byb2plY3QnKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEdsb2JhbFByb21wdHMoKSB7XG4gIGNvbnN0IHByb2plY3RzRGlyID0gam9pbihwaWNvSG9tZSgpLCAncHJvamVjdHMnKVxuICBsZXQgcHJvamVjdHMgPSBbXVxuICB0cnkge1xuICAgIHByb2plY3RzID0gYXdhaXQgcmVhZGRpcihwcm9qZWN0c0RpcilcbiAgfSBjYXRjaCB7fVxuICBjb25zdCBuZXN0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcm9qZWN0cy5tYXAoKHApID0+IHJlYWRQcm9tcHRzKGpvaW4ocHJvamVjdHNEaXIsIHAsICdoaXN0b3J5Lmpzb25sJyksICdldmVyeXdoZXJlJykpLFxuICApXG4gIHJldHVybiBuZXN0ZWQuZmxhdCgpLnNvcnQoKGEsIGIpID0+IGIuYXQgLSBhLmF0KS5zbGljZSgwLCBNQVhfUFJPTVBUU19QRVJfU0NPUEUpXG59XG4iLCAiaW1wb3J0IHsgZ2V0VGV4dCB9IGZyb20gJ0BwcnNtL2FpJ1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzdWx0VGV4dChtZXNzYWdlcyA9IFtdKSB7XG4gIGZvciAobGV0IGkgPSBtZXNzYWdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChtZXNzYWdlc1tpXS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgY29uc3QgdGV4dCA9IGdldFRleHQobWVzc2FnZXNbaV0uY29udGVudCB8fCAnJykudHJpbSgpXG4gICAgICBpZiAodGV4dCkgcmV0dXJuIHRleHRcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIHJlc3RvcmVkQWdlbnQoZGF0YSwgYXQpIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogU3RyaW5nKGRhdGEuYWdlbnRJZCksXG4gICAgZGVzY3JpcHRpb246IGRhdGEuZGVzY3JpcHRpb24gfHwgZGF0YS5wcm9tcHQ/LnNsaWNlKDAsIDgwKSB8fCBgYWdlbnQgJHtkYXRhLmFnZW50SWR9YCxcbiAgICBwcm9tcHQ6IGRhdGEucHJvbXB0IHx8ICcnLFxuICAgIG1vZGVsOiBkYXRhLm1vZGVsIHx8IG51bGwsXG4gICAgcm9sZTogZGF0YS5yb2xlIHx8ICd3b3JrZXInLFxuICAgIHBhcmVudElkOiBkYXRhLnBhcmVudElkIHx8IG51bGwsXG4gICAgdG9vbHM6IGRhdGEudG9vbHMgfHwgW10sXG4gICAgc3RhdHVzOiAnY2FuY2VsbGVkJyxcbiAgICBjcmVhdGVkQXQ6IGF0LFxuICAgIHVwZGF0ZWRBdDogYXQsXG4gICAgc3RhcnRlZEF0OiBhdCxcbiAgICBlbmRlZEF0OiBhdCxcbiAgICBldmVudHM6IFtdLFxuICAgIHJlc3VsdDogJycsXG4gICAgZXJyb3I6IG51bGwsXG4gICAgdXNhZ2U6IG51bGwsXG4gICAgb3B0aW9uczogZGF0YSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlQWdlbnRFdmVudHMoZXZlbnRzID0gW10pIHtcbiAgY29uc3QgYWdlbnRzID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgcmVjb3JkIG9mIGV2ZW50cykge1xuICAgIGNvbnN0IGRhdGEgPSByZWNvcmQuZGF0YSB8fCB7fVxuICAgIGNvbnN0IGlkID0gU3RyaW5nKGRhdGEuYWdlbnRJZCB8fCAnJylcbiAgICBpZiAoIWlkKSBjb250aW51ZVxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gJ2FnZW50X3N0YXJ0Jykge1xuICAgICAgYWdlbnRzLnNldChpZCwgcmVzdG9yZWRBZ2VudChkYXRhLCByZWNvcmQuYXQpKVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKHJlY29yZC50eXBlID09PSAnYWdlbnRfZGlzbWlzcycpIHtcbiAgICAgIGFnZW50cy5kZWxldGUoaWQpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBhZ2VudCA9IGFnZW50cy5nZXQoaWQpXG4gICAgaWYgKCFhZ2VudCkgY29udGludWVcbiAgICBpZiAocmVjb3JkLnR5cGUgPT09ICdhZ2VudF9ldmVudCcpIHtcbiAgICAgIGFnZW50LmV2ZW50cy5wdXNoKGRhdGEuZXZlbnQpXG4gICAgICBhZ2VudC51cGRhdGVkQXQgPSByZWNvcmQuYXRcbiAgICAgIGlmIChkYXRhLmV2ZW50Py50eXBlID09PSAndXNhZ2UnKSBhZ2VudC51c2FnZSA9IGRhdGEuZXZlbnQudXNhZ2VcbiAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAnYWdlbnRfcmVzdWx0Jykge1xuICAgICAgYWdlbnQucmVzdWx0ID0gZGF0YS5yZXN1bHQgfHwgcmVzdWx0VGV4dChkYXRhLm1lc3NhZ2VzKVxuICAgICAgYWdlbnQudXNhZ2UgPSBkYXRhLnVzYWdlIHx8IGFnZW50LnVzYWdlXG4gICAgICBhZ2VudC5lcnJvciA9IGRhdGEuZXJyb3IgfHwgbnVsbFxuICAgICAgYWdlbnQuc3RhdHVzID0gZGF0YS5lcnJvciA/ICdmYWlsZWQnIDogZGF0YS5pbnRlcnJ1cHRlZCA/ICdjYW5jZWxsZWQnIDogJ2NvbXBsZXRlZCdcbiAgICAgIGFnZW50LnVwZGF0ZWRBdCA9IHJlY29yZC5hdFxuICAgICAgYWdlbnQuZW5kZWRBdCA9IHJlY29yZC5hdFxuICAgIH1cbiAgfVxuICBjb25zdCByZXN0b3JlZCA9IFsuLi5hZ2VudHMudmFsdWVzKCldXG4gIGZvciAoY29uc3QgYWdlbnQgb2YgcmVzdG9yZWQpIHtcbiAgICBhZ2VudC5kb25lID0gUHJvbWlzZS5yZXNvbHZlKGFnZW50KVxuICAgIGFnZW50LnJlc29sdmUgPSAoKSA9PiB7fVxuICB9XG4gIHJldHVybiByZXN0b3JlZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWdlbnRNYW5hZ2VyKHsgcnVuLCBjb25jdXJyZW5jeSA9IDgsIG9uQ2hhbmdlID0gKCkgPT4ge30sIG9uQ3JlYXRlID0gKCkgPT4ge30sIG9uRXZlbnQgPSAoKSA9PiB7fSwgb25GaW5pc2ggPSAoKSA9PiB7fSwgZGVmYXVsdHMgPSAoKSA9PiAoe30pIH0gPSB7fSkge1xuICBjb25zdCBhZ2VudHMgPSBuZXcgTWFwKClcbiAgY29uc3QgcXVldWUgPSBbXVxuICBsZXQgbmV4dElkID0gMVxuICBsZXQgYWN0aXZlID0gMFxuICBsZXQgZ2VuZXJhdGlvbiA9IDBcblxuICBjb25zdCBjaGFuZ2VkID0gKCkgPT4gb25DaGFuZ2UoKVxuXG4gIGZ1bmN0aW9uIHB1bXAoKSB7XG4gICAgd2hpbGUgKGFjdGl2ZSA8IGNvbmN1cnJlbmN5ICYmIHF1ZXVlLmxlbmd0aCkge1xuICAgICAgY29uc3QgYWdlbnQgPSBxdWV1ZS5zaGlmdCgpXG4gICAgICBpZiAoYWdlbnQuc3RhdHVzICE9PSAncXVldWVkJykgY29udGludWVcbiAgICAgIGFnZW50LnN0YXR1cyA9ICdydW5uaW5nJ1xuICAgICAgYWdlbnQuc3RhcnRlZEF0ID0gRGF0ZS5ub3coKVxuICAgICAgYWdlbnQuZ2VuZXJhdGlvbiA9IGdlbmVyYXRpb25cbiAgICAgIGFjdGl2ZSsrXG4gICAgICBjaGFuZ2VkKClcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gcnVuKGFnZW50LCBhZ2VudC5jb250cm9sbGVyLnNpZ25hbCwgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChhZ2VudC5nZW5lcmF0aW9uICE9PSBnZW5lcmF0aW9uKSByZXR1cm5cbiAgICAgICAgYWdlbnQuZXZlbnRzLnB1c2goZXZlbnQpXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAndXNhZ2UnKSBhZ2VudC51c2FnZSA9IGV2ZW50LnVzYWdlXG4gICAgICAgIGFnZW50LnVwZGF0ZWRBdCA9IERhdGUubm93KClcbiAgICAgICAgb25FdmVudChhZ2VudCwgZXZlbnQpXG4gICAgICAgIGNoYW5nZWQoKVxuICAgICAgfSkpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoYWdlbnQuZ2VuZXJhdGlvbiAhPT0gZ2VuZXJhdGlvbikgcmV0dXJuXG4gICAgICAgIGFnZW50LnJlc3VsdCA9IHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogcmVzdWx0VGV4dChyZXN1bHQ/Lm1lc3NhZ2VzKVxuICAgICAgICBhZ2VudC51c2FnZSA9IHJlc3VsdD8udXNhZ2UgfHwgYWdlbnQudXNhZ2VcbiAgICAgICAgYWdlbnQuZXJyb3IgPSByZXN1bHQ/LmVycm9yIHx8IG51bGxcbiAgICAgICAgYWdlbnQuc3RhdHVzID0gYWdlbnQuZXJyb3IgPyAnZmFpbGVkJyA6IHJlc3VsdD8uaW50ZXJydXB0ZWQgPyAnY2FuY2VsbGVkJyA6ICdjb21wbGV0ZWQnXG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGFnZW50LmdlbmVyYXRpb24gIT09IGdlbmVyYXRpb24pIHJldHVyblxuICAgICAgICBhZ2VudC5lcnJvciA9IFN0cmluZyhlcnJvcj8ubWVzc2FnZSB8fCBlcnJvcilcbiAgICAgICAgYWdlbnQuc3RhdHVzID0gYWdlbnQuY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCA/ICdjYW5jZWxsZWQnIDogJ2ZhaWxlZCdcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBpZiAoYWdlbnQuZ2VuZXJhdGlvbiAhPT0gZ2VuZXJhdGlvbikgcmV0dXJuIGFnZW50LnJlc29sdmUoYWdlbnQpXG4gICAgICAgIGFnZW50LmVuZGVkQXQgPSBEYXRlLm5vdygpXG4gICAgICAgIGFjdGl2ZS0tXG4gICAgICAgIG9uRmluaXNoKGFnZW50KVxuICAgICAgICBjaGFuZ2VkKClcbiAgICAgICAgYWdlbnQucmVzb2x2ZShhZ2VudClcbiAgICAgICAgcHVtcCgpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0KG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0geyAuLi5kZWZhdWx0cygpLCAuLi5vcHRpb25zIH1cbiAgICBjb25zdCBpZCA9IFN0cmluZyhuZXh0SWQrKylcbiAgICBsZXQgcmVzb2x2ZVxuICAgIGNvbnN0IGRvbmUgPSBuZXcgUHJvbWlzZSgocikgPT4geyByZXNvbHZlID0gciB9KVxuICAgIGlmICghb3B0aW9ucy5wcm9tcHQ/LnRyaW0oKSkgdGhyb3cgbmV3IEVycm9yKCdhZ2VudCBwcm9tcHQgaXMgcmVxdWlyZWQnKVxuICAgIGNvbnN0IGFnZW50ID0ge1xuICAgICAgaWQsXG4gICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbiB8fCBvcHRpb25zLnByb21wdC5zbGljZSgwLCA4MCksXG4gICAgICBwcm9tcHQ6IG9wdGlvbnMucHJvbXB0LFxuICAgICAgbW9kZWw6IG9wdGlvbnMubW9kZWwsXG4gICAgICByb2xlOiBvcHRpb25zLnJvbGUgfHwgJ3dvcmtlcicsXG4gICAgICBwYXJlbnRJZDogb3B0aW9ucy5wYXJlbnRJZCB8fCBudWxsLFxuICAgICAgdG9vbHM6IG9wdGlvbnMudG9vbHMgfHwgW10sXG4gICAgICBzdGF0dXM6ICdxdWV1ZWQnLFxuICAgICAgY3JlYXRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgdXBkYXRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgc3RhcnRlZEF0OiBudWxsLFxuICAgICAgZW5kZWRBdDogbnVsbCxcbiAgICAgIGV2ZW50czogW10sXG4gICAgICByZXN1bHQ6ICcnLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICB1c2FnZTogbnVsbCxcbiAgICAgIGNvbnRyb2xsZXI6IG5ldyBBYm9ydENvbnRyb2xsZXIoKSxcbiAgICAgIHJlc29sdmUsXG4gICAgICBkb25lLFxuICAgICAgb3B0aW9ucyxcbiAgICB9XG4gICAgYWdlbnRzLnNldChpZCwgYWdlbnQpXG4gICAgb25DcmVhdGUoYWdlbnQpXG4gICAgcXVldWUucHVzaChhZ2VudClcbiAgICBjaGFuZ2VkKClcbiAgICBwdW1wKClcbiAgICByZXR1cm4gYWdlbnRcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3RvcmUoZXZlbnRzKSB7XG4gICAgZ2VuZXJhdGlvbisrXG4gICAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMudmFsdWVzKCkpIHtcbiAgICAgIGlmIChhZ2VudC5zdGF0dXMgPT09ICdxdWV1ZWQnKSBhZ2VudC5yZXNvbHZlKGFnZW50KVxuICAgICAgZWxzZSBpZiAoYWdlbnQuc3RhdHVzID09PSAncnVubmluZycpIGFnZW50LmNvbnRyb2xsZXIuYWJvcnQoKVxuICAgIH1cbiAgICBhZ2VudHMuY2xlYXIoKVxuICAgIHF1ZXVlLmxlbmd0aCA9IDBcbiAgICBhY3RpdmUgPSAwXG4gICAgbGV0IG1heElkID0gMFxuICAgIGZvciAoY29uc3QgYWdlbnQgb2YgcmVkdWNlQWdlbnRFdmVudHMoZXZlbnRzKSkge1xuICAgICAgYWdlbnRzLnNldChhZ2VudC5pZCwgYWdlbnQpXG4gICAgICBtYXhJZCA9IE1hdGgubWF4KG1heElkLCBOdW1iZXIoYWdlbnQuaWQpIHx8IDApXG4gICAgfVxuICAgIG5leHRJZCA9IG1heElkICsgMVxuICAgIGNoYW5nZWQoKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydCxcbiAgICByZXN0b3JlLFxuICAgIGNsZWFyOiAoKSA9PiByZXN0b3JlKFtdKSxcbiAgICBnZXQ6IChpZCkgPT4gYWdlbnRzLmdldChTdHJpbmcoaWQpKSB8fCBudWxsLFxuICAgIGxpc3Q6ICgpID0+IFsuLi5hZ2VudHMudmFsdWVzKCldLnNvcnQoKGEsIGIpID0+IE51bWJlcihiLmlkKSAtIE51bWJlcihhLmlkKSksXG4gICAgY29sbGVjdDogYXN5bmMgKGlkcykgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChpZHMubWFwKChpZCkgPT4gYWdlbnRzLmdldChTdHJpbmcoaWQpKT8uZG9uZSkuZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgY29uc3QgYXQgPSBEYXRlLm5vdygpXG4gICAgICBmb3IgKGNvbnN0IGFnZW50IG9mIHNlbGVjdGVkKSBhZ2VudC5jb2xsZWN0ZWRBdCA9IGF0XG4gICAgICBjaGFuZ2VkKClcbiAgICAgIHJldHVybiBzZWxlY3RlZFxuICAgIH0sXG4gICAgZGlzbWlzcyhpZCkge1xuICAgICAgY29uc3QgYWdlbnQgPSBhZ2VudHMuZ2V0KFN0cmluZyhpZCkpXG4gICAgICBpZiAoIWFnZW50IHx8IFsncXVldWVkJywgJ3J1bm5pbmcnXS5pbmNsdWRlcyhhZ2VudC5zdGF0dXMpKSByZXR1cm4gZmFsc2VcbiAgICAgIGFnZW50cy5kZWxldGUoU3RyaW5nKGlkKSlcbiAgICAgIGNoYW5nZWQoKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LFxuICAgIGNhbmNlbChpZCkge1xuICAgICAgY29uc3QgYWdlbnQgPSBhZ2VudHMuZ2V0KFN0cmluZyhpZCkpXG4gICAgICBpZiAoIWFnZW50IHx8IFsnY29tcGxldGVkJywgJ2ZhaWxlZCcsICdjYW5jZWxsZWQnXS5pbmNsdWRlcyhhZ2VudC5zdGF0dXMpKSByZXR1cm4gZmFsc2VcbiAgICAgIGlmIChhZ2VudC5zdGF0dXMgPT09ICdxdWV1ZWQnKSB7XG4gICAgICAgIGFnZW50LnN0YXR1cyA9ICdjYW5jZWxsZWQnXG4gICAgICAgIGFnZW50LmVuZGVkQXQgPSBEYXRlLm5vdygpXG4gICAgICAgIG9uRmluaXNoKGFnZW50KVxuICAgICAgICBhZ2VudC5yZXNvbHZlKGFnZW50KVxuICAgICAgICBjaGFuZ2VkKClcbiAgICAgIH0gZWxzZSBhZ2VudC5jb250cm9sbGVyLmFib3J0KClcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSxcbiAgICBjYW5jZWxBbGwoKSB7XG4gICAgICBmb3IgKGNvbnN0IGFnZW50IG9mIGFnZW50cy52YWx1ZXMoKSkgdGhpcy5jYW5jZWwoYWdlbnQuaWQpXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRkaXIsIHN0YXQgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCdcbmltcG9ydCB7IHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbFRvb2xzRGlyKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAndG9vbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdFRvb2xzRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocm9vdCwgJy5waWNvJywgJ3Rvb2xzJylcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGUodG9vbCwgZmlsZSkge1xuICBpZiAoIXRvb2wgfHwgdHlwZW9mIHRvb2wgIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ2RlZmF1bHQgZXhwb3J0IGlzIG5vdCBhIHRvb2wgb2JqZWN0JylcbiAgaWYgKHR5cGVvZiB0b29sLm5hbWUgIT09ICdzdHJpbmcnIHx8ICF0b29sLm5hbWUpIHRocm93IG5ldyBFcnJvcigndG9vbC5uYW1lIG11c3QgYmUgYSBzdHJpbmcnKVxuICBpZiAodHlwZW9mIHRvb2wuZGVzY3JpcHRpb24gIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wuZGVzY3JpcHRpb24gbXVzdCBiZSBhIHN0cmluZycpXG4gIGlmICh0eXBlb2YgdG9vbC5leGVjdXRlICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wuZXhlY3V0ZSBtdXN0IGJlIGEgZnVuY3Rpb24nKVxuICBpZiAoIXRvb2wuc2NoZW1hIHx8IHR5cGVvZiB0b29sLnNjaGVtYSAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcigndG9vbC5zY2hlbWEgbXVzdCBiZSBhbiBvYmplY3QnKVxuICByZXR1cm4geyAuLi50b29sLCBfZmlsZTogZmlsZSB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRUb29sKGZpbGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBtdGltZU1zIH0gPSBhd2FpdCBzdGF0KGZpbGUpXG4gIGNvbnN0IG1vZHVsZSA9IGF3YWl0IGltcG9ydChgJHtwYXRoVG9GaWxlVVJMKGZpbGUpLmhyZWZ9P3Y9JHttdGltZU1zfWApXG4gIGNvbnN0IGV4cG9ydGVkID0gbW9kdWxlLmRlZmF1bHRcbiAgY29uc3QgdG9vbCA9IHR5cGVvZiBleHBvcnRlZCA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IGV4cG9ydGVkKGNvbnRleHQpIDogZXhwb3J0ZWRcbiAgcmV0dXJuIHZhbGlkYXRlKHRvb2wsIGZpbGUpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYW5EaXIoZGlyLCBjb250ZXh0LCBzb3VyY2UpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyB0b29sczogW10sIGVycm9yczogW10gfVxuICB9XG4gIGNvbnN0IHRvb2xzID0gW11cbiAgY29uc3QgZXJyb3JzID0gW11cbiAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgaWYgKCFuYW1lLmVuZHNXaXRoKCcuanMnKSAmJiAhbmFtZS5lbmRzV2l0aCgnLm1qcycpKSBjb250aW51ZVxuICAgIGNvbnN0IGZpbGUgPSBqb2luKGRpciwgbmFtZSlcbiAgICB0cnkge1xuICAgICAgdG9vbHMucHVzaCh7IC4uLihhd2FpdCBsb2FkVG9vbChmaWxlLCBjb250ZXh0KSksIHNvdXJjZSB9KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZXJyb3JzLnB1c2goeyBmaWxlLCBlcnJvcjogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMjAwKSB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4geyB0b29scywgZXJyb3JzIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNjYW5Vc2VyVG9vbHMoeyBjd2QsIHJvb3QgfSkge1xuICBjb25zdCBjb250ZXh0ID0geyBjd2QsIHJvb3QgfVxuICBjb25zdCBnbG9iYWwgPSBhd2FpdCBzY2FuRGlyKGdsb2JhbFRvb2xzRGlyKCksIGNvbnRleHQsICdnbG9iYWwnKVxuICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0VG9vbHNEaXIocm9vdCksIGNvbnRleHQsICdwcm9qZWN0JylcbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgdG9vbCBvZiBbLi4uZ2xvYmFsLnRvb2xzLCAuLi5wcm9qZWN0LnRvb2xzXSkgYnlOYW1lLnNldCh0b29sLm5hbWUsIHRvb2wpXG4gIHJldHVybiB7IHRvb2xzOiBbLi4uYnlOYW1lLnZhbHVlcygpXSwgZXJyb3JzOiBbLi4uZ2xvYmFsLmVycm9ycywgLi4ucHJvamVjdC5lcnJvcnNdIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcblxuYXN5bmMgZnVuY3Rpb24gcmVhZEN1cnJlbnQocGF0aCkge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCByZWFkRmlsZShwYXRoLCAndXRmLTgnKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXZlcnRFZGl0cyhlZGl0cykge1xuICBjb25zdCByZXZlcnRlZCA9IFtdXG4gIGNvbnN0IHNraXBwZWQgPSBbXVxuICBmb3IgKGNvbnN0IGVkaXQgb2YgWy4uLmVkaXRzXS5yZXZlcnNlKCkpIHtcbiAgICBjb25zdCB7IHBhdGgsIGJlZm9yZSwgYWZ0ZXIgfSA9IGVkaXQucmV2ZXJ0XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlYWRDdXJyZW50KHBhdGgpXG4gICAgaWYgKGN1cnJlbnQgPT09IGFmdGVyKSB7XG4gICAgICBhd2FpdCB3cml0ZUZpbGUocGF0aCwgYmVmb3JlLCAndXRmLTgnKVxuICAgICAgcmV2ZXJ0ZWQucHVzaChlZGl0LmNhbGxJZClcbiAgICB9IGVsc2Uge1xuICAgICAgc2tpcHBlZC5wdXNoKHsgcGF0aCwgY2FsbElkOiBlZGl0LmNhbGxJZCwgcmVhc29uOiAnZmlsZSBjaGFuZ2VkIHNpbmNlIGVkaXQnIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJldmVydGVkLCBza2lwcGVkIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYXBwbHlFZGl0cyhlZGl0cykge1xuICBjb25zdCByZWFwcGxpZWQgPSBbXVxuICBjb25zdCBza2lwcGVkID0gW11cbiAgZm9yIChjb25zdCBlZGl0IG9mIGVkaXRzKSB7XG4gICAgY29uc3QgeyBwYXRoLCBiZWZvcmUsIGFmdGVyIH0gPSBlZGl0LnJldmVydFxuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCByZWFkQ3VycmVudChwYXRoKVxuICAgIGlmIChjdXJyZW50ID09PSBiZWZvcmUpIHtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLCBhZnRlciwgJ3V0Zi04JylcbiAgICAgIHJlYXBwbGllZC5wdXNoKGVkaXQuY2FsbElkKVxuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBwYXRoLCBjYWxsSWQ6IGVkaXQuY2FsbElkLCByZWFzb246ICdmaWxlIGNoYW5nZWQgc2luY2UgcmV2ZXJ0JyB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4geyByZWFwcGxpZWQsIHNraXBwZWQgfVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiB0cmFuc2NyaXB0VG9NYXJrZG93bih0cmFuc2NyaXB0LCB7IHRpdGxlID0gJ3BpY28gc2Vzc2lvbicgfSA9IHt9KSB7XG4gIGNvbnN0IHBhcnRzID0gW2AjICR7dGl0bGV9YCwgJyddXG4gIGZvciAoY29uc3QgaXRlbSBvZiB0cmFuc2NyaXB0KSB7XG4gICAgaWYgKGl0ZW0ua2luZCA9PT0gJ3VzZXInKSB7XG4gICAgICBwYXJ0cy5wdXNoKCcjIyBZb3UnLCAnJywgaXRlbS50ZXh0LCAnJylcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2luZCA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgIHBhcnRzLnB1c2goaXRlbS5pbnRlcnJ1cHRlZCA/IGAke2l0ZW0udGV4dH1cXG5cXG4qKGludGVycnVwdGVkKSpgIDogaXRlbS50ZXh0LCAnJylcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2luZCA9PT0gJ3Rvb2wnKSB7XG4gICAgICBjb25zdCBsYWJlbCA9IGl0ZW0uZGlmZiA/IGAgKCske2l0ZW0uZGlmZi5hZGRpdGlvbnN9IC0ke2l0ZW0uZGlmZi5kZWxldGlvbnN9KWAgOiAnJ1xuICAgICAgcGFydHMucHVzaChgPiAke2l0ZW0uc3RhdHVzID09PSAncmV2ZXJ0ZWQnID8gJ1x1MjFBOScgOiAnXHUyNzEzJ30gXFxgJHtpdGVtLm5hbWV9XFxgICR7aXRlbS50aXRsZX0ke2xhYmVsfWAsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAnc3VtbWFyeScpIHtcbiAgICAgIHBhcnRzLnB1c2goYD4gc3VtbWFyeTogJHtpdGVtLnRleHR9YCwgJycpXG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJ0cy5qb2luKCdcXG4nKVxufVxuIiwgImltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL2Z1enp5LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGlvbkNvbnRleHQoeyB2YWx1ZSwgcmVzb2x2ZSB9KSB7XG4gIGlmICh2YWx1ZS5pbmNsdWRlcygnXFxuJykpIHJldHVybiBudWxsXG4gIGNvbnN0IG0gPSB2YWx1ZS5tYXRjaCgvXlxcLyhcXFMrKSAoLiopJC8pXG4gIGlmICghbSkgcmV0dXJuIG51bGxcbiAgY29uc3Qgc291cmNlID0gcmVzb2x2ZShtWzFdLnRvTG93ZXJDYXNlKCkpXG4gIGlmICghc291cmNlIHx8IHNvdXJjZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG4gIGNvbnN0IHRva2VucyA9IG1bMl0uc3BsaXQoJyAnKVxuICBjb25zdCBwYXJ0aWFsID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXVxuICBjb25zdCBtYXRjaGVzID0gc291cmNlXG4gICAgLm1hcCgocykgPT4gW2Z1enp5U2NvcmUocGFydGlhbCwgcyksIHNdKVxuICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICAgIC5tYXAoKFssIHNdKSA9PiBzKVxuICByZXR1cm4geyBwYXJ0aWFsLCBtYXRjaGVzLCBzdGFydDogdmFsdWUubGVuZ3RoIC0gcGFydGlhbC5sZW5ndGggfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlDb21wbGV0aW9uKHZhbHVlLCBjdHgsIGNhbmRpZGF0ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgY3R4LnN0YXJ0KSArIGNhbmRpZGF0ZSArICcgJ1xufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IGZnIGZyb20gJ2Zhc3QtZ2xvYidcblxuY29uc3QgTUFYX0ZJTEVTID0gNTAwMFxuY29uc3QgVFRMID0gNTAwMFxuXG5sZXQgY2FjaGVkID0geyBhdDogMCwgY3dkOiBudWxsLCBmaWxlczogW10gfVxuY29uc3QgcGVuZGluZyA9IG5ldyBNYXAoKVxuXG5mdW5jdGlvbiByaXBncmVwRmlsZXMoY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSBbJy0tZmlsZXMnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJywgJy0tc29ydHI9bW9kaWZpZWQnXVxuICAgIGV4ZWNGaWxlKCdyZycsIGFyZ3MsIHsgY3dkLCBtYXhCdWZmZXI6IDUwICogMTAyNCAqIDEwMjQgfSwgKGVyciwgc3Rkb3V0KSA9PiB7XG4gICAgICByZXNvbHZlKGVyciAmJiAhc3Rkb3V0ID8gbnVsbCA6IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pKVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0RmlsZXMoY3dkKSB7XG4gIGlmIChjYWNoZWQuY3dkID09PSBjd2QgJiYgRGF0ZS5ub3coKSAtIGNhY2hlZC5hdCA8IFRUTCkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjYWNoZWQuZmlsZXMpXG4gIGlmIChwZW5kaW5nLmhhcyhjd2QpKSByZXR1cm4gcGVuZGluZy5nZXQoY3dkKVxuXG4gIGNvbnN0IHJlcXVlc3QgPSAoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBmaWxlcyA9IGF3YWl0IHJpcGdyZXBGaWxlcyhjd2QpXG4gICAgaWYgKCFmaWxlcykge1xuICAgICAgZmlsZXMgPSBhd2FpdCBmZygnKiovKicsIHtcbiAgICAgICAgY3dkLFxuICAgICAgICBvbmx5RmlsZXM6IHRydWUsXG4gICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi8uZ2l0LyoqJ10sXG4gICAgICB9KS5jYXRjaCgoKSA9PiBbXSlcbiAgICB9XG4gICAgY2FjaGVkID0geyBhdDogRGF0ZS5ub3coKSwgY3dkLCBmaWxlczogZmlsZXMuc2xpY2UoMCwgTUFYX0ZJTEVTKSB9XG4gICAgcmV0dXJuIGNhY2hlZC5maWxlc1xuICB9KSgpLmZpbmFsbHkoKCkgPT4gcGVuZGluZy5kZWxldGUoY3dkKSlcblxuICBwZW5kaW5nLnNldChjd2QsIHJlcXVlc3QpXG4gIHJldHVybiByZXF1ZXN0XG59XG4iLCAiaW1wb3J0IHsgY29kZVRvQU5TSSB9IGZyb20gJ0BzaGlraWpzL2NsaSdcbmltcG9ydCB7IGNyZWF0ZVNpZ25hbCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IHNoaWtpVGhlbWUgfSBmcm9tICcuL3RoZW1lLmpzJ1xuXG5jb25zdCBMQU5HUyA9IHtcbiAganM6ICdqcycsIG1qczogJ2pzJywgY2pzOiAnanMnLCBqc3g6ICdqc3gnLCB0czogJ3RzJywgdHN4OiAndHN4JyxcbiAganNvbjogJ2pzb24nLCBqc29ubDogJ2pzb24nLCBtZDogJ21kJywgcHk6ICdweXRob24nLCByYjogJ3J1YnknLCBnbzogJ2dvJyxcbiAgcnM6ICdydXN0JywgYzogJ2MnLCBoOiAnYycsIGNwcDogJ2NwcCcsIGphdmE6ICdqYXZhJywgY3NzOiAnY3NzJyxcbiAgaHRtbDogJ2h0bWwnLCB2dWU6ICd2dWUnLCBzaDogJ2Jhc2gnLCBiYXNoOiAnYmFzaCcsIHpzaDogJ2Jhc2gnLFxuICB5bWw6ICd5YW1sJywgeWFtbDogJ3lhbWwnLCB0b21sOiAndG9tbCcsIHNxbDogJ3NxbCcsIHN2ZWx0ZTogJ3N2ZWx0ZScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYW5nRm9yUGF0aChwYXRoKSB7XG4gIGNvbnN0IGV4dCA9IFN0cmluZyhwYXRoKS5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKClcbiAgcmV0dXJuIExBTkdTW2V4dF0gfHwgJ3R4dCdcbn1cblxuY29uc3QgY2FjaGUgPSBuZXcgTWFwKClcbmNvbnN0IHBlbmRpbmcgPSBuZXcgU2V0KClcbmNvbnN0IGZhaWxlZCA9IG5ldyBTZXQoKVxuY29uc3QgW3ZlcnNpb24sIHNldFZlcnNpb25dID0gY3JlYXRlU2lnbmFsKDApXG5cbmV4cG9ydCBjb25zdCBoaWdobGlnaHRWZXJzaW9uID0gdmVyc2lvblxuXG5leHBvcnQgZnVuY3Rpb24gaGlnaGxpZ2h0KGNvZGUsIGxhbmcpIHtcbiAgY29uc3Qgc2FmZUxhbmcgPSBsYW5nICYmICFmYWlsZWQuaGFzKGxhbmcpID8gbGFuZyA6ICd0eHQnXG4gIGNvbnN0IHRoZW1lID0gc2hpa2lUaGVtZSgpXG4gIHJldHVybiBjb2RlXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGAke3RoZW1lfVxcbiR7c2FmZUxhbmd9XFxuJHtsaW5lfWBcbiAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkgcmV0dXJuIGNhY2hlLmdldChrZXkpXG4gICAgICB3YXJtKGxpbmUsIHNhZmVMYW5nLCB0aGVtZSwga2V5KVxuICAgICAgcmV0dXJuIGxpbmVcbiAgICB9KVxuICAgIC5qb2luKCdcXG4nKVxufVxuXG5mdW5jdGlvbiB3YXJtKGxpbmUsIGxhbmcsIHRoZW1lLCBrZXkpIHtcbiAgaWYgKHBlbmRpbmcuaGFzKGtleSkpIHJldHVyblxuICBwZW5kaW5nLmFkZChrZXkpXG4gIGNvZGVUb0FOU0kobGluZSwgbGFuZywgdGhlbWUpXG4gICAgLnRoZW4oKGFuc2kpID0+IGNhY2hlLnNldChrZXksIGFuc2kucmVwbGFjZSgvXFxuJC8sICcnKSkpXG4gICAgLmNhdGNoKCgpID0+IHtcbiAgICAgIGZhaWxlZC5hZGQobGFuZylcbiAgICAgIGNhY2hlLnNldChrZXksIGxpbmUpXG4gICAgfSlcbiAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICBwZW5kaW5nLmRlbGV0ZShrZXkpXG4gICAgICBzZXRWZXJzaW9uKCh2KSA9PiB2ICsgMSlcbiAgICB9KVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNpZ25hbCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcblxuY29uc3QgUEFMRVRURVMgPSB7XG4gIGRhcms6IHtcbiAgICBkZXNjOiAnbGlnaHQgdGV4dCBmb3IgZGFyayB0ZXJtaW5hbHMnLFxuICAgIGFjY2VudDogJyMyMmQzZWUnLFxuICAgIGZnOiAnI2U1ZTdlYicsXG4gICAgZmdTb2Z0OiAnIzljYTNhZicsXG4gICAgbXV0ZWQ6ICcjNmI3MjgwJyxcbiAgICBmYWludDogJyM0YjU1NjMnLFxuICAgIHBhbmVsQmc6ICcjMWUxZTIyJyxcbiAgICBzZWxlY3RCZzogJyMzNzQxNTEnLFxuICAgIHJlZDogJyNmODcxNzEnLFxuICAgIGdyZWVuOiAnIzRhZGU4MCcsXG4gICAgaGlnaGxpZ2h0OiAnI2ZmZmZmZicsXG4gICAgc2hpa2k6ICdub3JkJyxcbiAgfSxcbiAgbGlnaHQ6IHtcbiAgICBkZXNjOiAnZGFyayB0ZXh0IGZvciBsaWdodCB0ZXJtaW5hbHMnLFxuICAgIGFjY2VudDogJyMwZjlkNjMnLFxuICAgIGZnOiAnIzFmMjQzMCcsXG4gICAgZmdTb2Z0OiAnIzRiNTU2MycsXG4gICAgbXV0ZWQ6ICcjNmI3MjgwJyxcbiAgICBmYWludDogJyNhM2E4YjMnLFxuICAgIHBhbmVsQmc6ICcjZTllOWVlJyxcbiAgICBzZWxlY3RCZzogJyNkNGQ0ZGMnLFxuICAgIHJlZDogJyNkYzI2MjYnLFxuICAgIGdyZWVuOiAnIzE2YTM0YScsXG4gICAgaGlnaGxpZ2h0OiAnIzExMTgyNycsXG4gICAgc2hpa2k6ICdnaXRodWItbGlnaHQnLFxuICB9LFxuICBub3JkOiB7XG4gICAgZGVzYzogJ2FyY3RpYyBibHVlcyBvbiBwb2xhciBuaWdodCcsXG4gICAgYWNjZW50OiAnIzg4YzBkMCcsXG4gICAgZmc6ICcjZDhkZWU5JyxcbiAgICBmZ1NvZnQ6ICcjYWFiMmM0JyxcbiAgICBtdXRlZDogJyM3Yjg4YTEnLFxuICAgIGZhaW50OiAnIzYxNmU4OCcsXG4gICAgcGFuZWxCZzogJyMzYjQyNTInLFxuICAgIHNlbGVjdEJnOiAnIzQzNGM1ZScsXG4gICAgcmVkOiAnI2JmNjE2YScsXG4gICAgZ3JlZW46ICcjYTNiZThjJyxcbiAgICBoaWdobGlnaHQ6ICcjZWNlZmY0JyxcbiAgICBzaGlraTogJ25vcmQnLFxuICB9LFxufVxuXG5leHBvcnQgbGV0IERFRkFVTFRfQUNDRU5UID0gUEFMRVRURVMuZGFyay5hY2NlbnRcbmV4cG9ydCBsZXQgRkcgPSBQQUxFVFRFUy5kYXJrLmZnXG5leHBvcnQgbGV0IEZHX1NPRlQgPSBQQUxFVFRFUy5kYXJrLmZnU29mdFxuZXhwb3J0IGxldCBNVVRFRCA9IFBBTEVUVEVTLmRhcmsubXV0ZWRcbmV4cG9ydCBsZXQgRkFJTlQgPSBQQUxFVFRFUy5kYXJrLmZhaW50XG5leHBvcnQgbGV0IFBBTkVMX0JHID0gUEFMRVRURVMuZGFyay5wYW5lbEJnXG5leHBvcnQgbGV0IFNFTEVDVF9CRyA9IFBBTEVUVEVTLmRhcmsuc2VsZWN0QmdcbmV4cG9ydCBsZXQgUkVEID0gUEFMRVRURVMuZGFyay5yZWRcbmV4cG9ydCBsZXQgR1JFRU4gPSBQQUxFVFRFUy5kYXJrLmdyZWVuXG5leHBvcnQgbGV0IEhJR0hMSUdIVCA9IFBBTEVUVEVTLmRhcmsuaGlnaGxpZ2h0XG5cbmxldCBjdXJyZW50UGFsZXR0ZSA9ICdkYXJrJ1xubGV0IGV4cGxpY2l0QWNjZW50ID0gbnVsbFxuXG5jb25zdCBbYWNjZW50VmFsdWUsIHNldEFjY2VudFZhbHVlXSA9IGNyZWF0ZVNpZ25hbChERUZBVUxUX0FDQ0VOVClcblxuZXhwb3J0IGNvbnN0IGFjY2VudCA9IGFjY2VudFZhbHVlXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBY2NlbnQoY29sb3IpIHtcbiAgZXhwbGljaXRBY2NlbnQgPSBjb2xvciB8fCBudWxsXG4gIHNldEFjY2VudFZhbHVlKGV4cGxpY2l0QWNjZW50IHx8IERFRkFVTFRfQUNDRU5UKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0UGFsZXR0ZShuYW1lKSB7XG4gIGN1cnJlbnRQYWxldHRlID0gUEFMRVRURVNbbmFtZV0gPyBuYW1lIDogJ2RhcmsnXG4gIGNvbnN0IHAgPSBQQUxFVFRFU1tjdXJyZW50UGFsZXR0ZV1cbiAgREVGQVVMVF9BQ0NFTlQgPSBwLmFjY2VudFxuICBGRyA9IHAuZmdcbiAgRkdfU09GVCA9IHAuZmdTb2Z0XG4gIE1VVEVEID0gcC5tdXRlZFxuICBGQUlOVCA9IHAuZmFpbnRcbiAgUEFORUxfQkcgPSBwLnBhbmVsQmdcbiAgU0VMRUNUX0JHID0gcC5zZWxlY3RCZ1xuICBSRUQgPSBwLnJlZFxuICBHUkVFTiA9IHAuZ3JlZW5cbiAgSElHSExJR0hUID0gcC5oaWdobGlnaHRcbiAgc2V0QWNjZW50VmFsdWUoZXhwbGljaXRBY2NlbnQgfHwgcC5hY2NlbnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWxldHRlTmFtZSgpIHtcbiAgcmV0dXJuIGN1cnJlbnRQYWxldHRlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWxldHRlTGlzdCgpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKFBBTEVUVEVTKS5tYXAoKFtrZXksIHBdKSA9PiAoeyBrZXksIGRlc2M6IHAuZGVzYyB9KSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoaWtpVGhlbWUoKSB7XG4gIHJldHVybiBQQUxFVFRFU1tjdXJyZW50UGFsZXR0ZV0uc2hpa2lcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gY29tcGFjdE51bWJlcih2YWx1ZSkge1xuICBjb25zdCBuID0gTWF0aC5yb3VuZCh2YWx1ZSlcbiAgaWYgKE1hdGguYWJzKG4pID49IDFfMDAwXzAwMCkgcmV0dXJuIGAkeyhuIC8gMV8wMDBfMDAwKS50b0ZpeGVkKDEpfW1gXG4gIGlmIChNYXRoLmFicyhuKSA+PSAxXzAwMCkgcmV0dXJuIGAkeyhuIC8gMV8wMDApLnRvRml4ZWQoMSl9a2BcbiAgcmV0dXJuIFN0cmluZyhuKVxufVxuIiwgImltcG9ydCB7IGVhc2UsIGxpbmVhciwgdXNlQW5pbWF0ZWQgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5cbmZ1bmN0aW9uIHRvUmdiKGNvbG9yKSB7XG4gIGlmIChjb2xvcj8uc3RhcnRzV2l0aCgnIycpICYmIGNvbG9yLmxlbmd0aCA9PT0gNykge1xuICAgIHJldHVybiBbXG4gICAgICBwYXJzZUludChjb2xvci5zbGljZSgxLCAzKSwgMTYpLFxuICAgICAgcGFyc2VJbnQoY29sb3Iuc2xpY2UoMywgNSksIDE2KSxcbiAgICAgIHBhcnNlSW50KGNvbG9yLnNsaWNlKDUsIDcpLCAxNiksXG4gICAgXVxuICB9XG4gIHJldHVybiBbMTI3LCAxMjcsIDEyN11cbn1cblxuZnVuY3Rpb24gbWl4Q29sb3IoZnJvbSwgdG8sIGFtb3VudCkge1xuICBjb25zdCBhID0gdG9SZ2IoZnJvbSlcbiAgY29uc3QgYiA9IHRvUmdiKHRvKVxuICBjb25zdCBjaGFubmVscyA9IGEubWFwKCh2YWx1ZSwgaSkgPT4gTWF0aC5yb3VuZCh2YWx1ZSArIChiW2ldIC0gdmFsdWUpICogYW1vdW50KSlcbiAgcmV0dXJuIGAjJHtjaGFubmVscy5tYXAoKHZhbHVlKSA9PiB2YWx1ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyl9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gQW5pbWF0ZWRWYWx1ZSh7IHZhbHVlLCBpbml0aWFsID0gdmFsdWUsIGR1cmF0aW9uID0gMTAwMCwgY29sb3IsIGhpZ2hsaWdodCwgZm9ybWF0ID0gU3RyaW5nIH0pIHtcbiAgY29uc3QgZGlzcGxheWVkID0gdXNlQW5pbWF0ZWQoaW5pdGlhbCwgZWFzZShkdXJhdGlvbikpXG4gIGNvbnN0IGdsb3cgPSB1c2VBbmltYXRlZCgwLCBlYXNlKGR1cmF0aW9uLCBsaW5lYXIpKVxuXG4gIGlmICh2YWx1ZSAhPT0gZGlzcGxheWVkLl9hbmltLnRhcmdldCkge1xuICAgIGRpc3BsYXllZC5zZXQodmFsdWUpXG4gICAgZ2xvdy5zbmFwKDEpXG4gICAgZ2xvdy5zZXQoMClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IG1peENvbG9yKGNvbG9yLCBoaWdobGlnaHQsIGdsb3coKSkgfX0+XG4gICAgICB7Zm9ybWF0KGRpc3BsYXllZCgpKX1cbiAgICA8L3RleHQ+XG4gIClcbn1cbiIsICJpbXBvcnQgeyBEaWZmLCBlYXNlLCBIb3Jpem9udGFsU2Nyb2xsQm94LCBsaW5lYXIsIE1hcmtkb3duLCBTcGlubmVyLCB1c2VBbmltYXRlZCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IGFjY2VudCwgRkcsIEZHX1NPRlQsIE1VVEVELCBGQUlOVCwgUEFORUxfQkcsIFJFRCB9IGZyb20gJy4vdGhlbWUuanMnXG5pbXBvcnQgeyBoaWdobGlnaHQsIGxhbmdGb3JQYXRoIH0gZnJvbSAnLi9oaWdobGlnaHQuanMnXG5cbmV4cG9ydCB7IGRlZmF1bHRUaXRsZSBhcyB1aVRpdGxlIH0gZnJvbSAnLi4vY29yZS90b29scy9yZWNvcmRlci5qcydcblxuZnVuY3Rpb24gTWFya2Rvd25TbmlwcGV0KHsgdmFsdWUsIGxhbmd1YWdlLCBoaWdobGlnaHQ6IGhpZ2hsaWdodENvZGUsIGNvZGVCZyB9KSB7XG4gIGNvbnN0IHNob3duID0gaGlnaGxpZ2h0Q29kZSA/IGhpZ2hsaWdodENvZGUodmFsdWUsIGxhbmd1YWdlKSA6IHZhbHVlXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBiZzogY29kZUJnLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgIDx0ZXh0PntzaG93bn08L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gQ29kZVNuaXBwZXQoeyB2YWx1ZSwgbGFuZ3VhZ2UsIGhpZ2hsaWdodDogaGlnaGxpZ2h0Q29kZSwgY29kZUJnIH0pIHtcbiAgY29uc3Qgc2hvd24gPSBoaWdobGlnaHRDb2RlID8gaGlnaGxpZ2h0Q29kZSh2YWx1ZSwgbGFuZ3VhZ2UpIDogdmFsdWVcbiAgY29uc3QgY29udGVudFdpZHRoID0gTWF0aC5tYXgoMCwgLi4udmFsdWUuc3BsaXQoJ1xcbicpLm1hcCgobGluZSkgPT4gWy4uLmxpbmVdLmxlbmd0aCkpICsgMlxuICByZXR1cm4gKFxuICAgIDxIb3Jpem9udGFsU2Nyb2xsQm94IGNvbnRlbnRXaWR0aD17Y29udGVudFdpZHRofSBzdHlsZT17eyBiZzogY29kZUJnLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgIHtzaG93bi5zcGxpdCgnXFxuJykubWFwKChsaW5lLCBrZXkpID0+IChcbiAgICAgICAgICA8dGV4dCBrZXk9e2tleX0gc3R5bGU9e3sgb3ZlcmZsb3c6ICdub3dyYXAnIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9ib3g+XG4gICAgPC9Ib3Jpem9udGFsU2Nyb2xsQm94PlxuICApXG59XG5cbmZ1bmN0aW9uIFRyYW5zY3JpcHRDb2RlQmxvY2socHJvcHMpIHtcbiAgY29uc3QgbGFuZ3VhZ2UgPSBwcm9wcy5sYW5ndWFnZT8udG9Mb3dlckNhc2UoKVxuICBjb25zdCBDb21wb25lbnQgPSBsYW5ndWFnZSA9PT0gJ21kJyB8fCBsYW5ndWFnZSA9PT0gJ21hcmtkb3duJyA/IE1hcmtkb3duU25pcHBldCA6IENvZGVTbmlwcGV0XG4gIHJldHVybiA8Q29tcG9uZW50IHsuLi5wcm9wc30gLz5cbn1cblxuZnVuY3Rpb24gZGlmZlByZXZpZXdMaW5lcyhkaWZmLCByZXZlcnQpIHtcbiAgaWYgKGRpZmY/Lmh1bmtzPy5sZW5ndGgpIHJldHVybiBkaWZmLmh1bmtzLnJlZHVjZSgoc3VtLCBoKSA9PiBzdW0gKyBoLmxpbmVzLmxlbmd0aCwgMClcbiAgLy8gZXZlbnRzIHJlY29yZGVkIGJlZm9yZSBjcmVhdGVkLWZpbGUgd3JpdGVzIGNhcnJpZWQgaHVua3M6IHNpemUgZnJvbSB0aGUgY29udGVudCBpdHNlbGZcbiAgcmV0dXJuIE1hdGgubWF4KFN0cmluZyhyZXZlcnQ/LmFmdGVyIHx8ICcnKS5zcGxpdCgnXFxuJykubGVuZ3RoLCBTdHJpbmcocmV2ZXJ0Py5iZWZvcmUgfHwgJycpLnNwbGl0KCdcXG4nKS5sZW5ndGgsIDIpXG59XG5cbmZ1bmN0aW9uIGZtdER1cmF0aW9uKG1zKSB7XG4gIGlmIChtcyA8IDYwMDAwKSByZXR1cm4gYCR7KG1zIC8gMTAwMCkudG9GaXhlZCgyKX1zYFxuICBjb25zdCBzZWNzID0gTWF0aC5yb3VuZChtcyAvIDEwMDApXG4gIHJldHVybiBgJHtNYXRoLmZsb29yKHNlY3MgLyA2MCl9bSAke3NlY3MgJSA2MH1zYFxufVxuXG5mdW5jdGlvbiBmbXRSdW5uaW5nKG1zKSB7XG4gIGNvbnN0IHNlY3MgPSBNYXRoLmZsb29yKG1zIC8gMTAwMClcbiAgcmV0dXJuIHNlY3MgPCA2MCA/IGAke3NlY3N9c2AgOiBgJHtNYXRoLmZsb29yKHNlY3MgLyA2MCl9bSAke3NlY3MgJSA2MH1zYFxufVxuXG5mdW5jdGlvbiBtaXhDb2xvcihmcm9tLCB0bywgYW1vdW50KSB7XG4gIGNvbnN0IHJnYiA9IChjb2xvcikgPT4gY29sb3I/LnN0YXJ0c1dpdGgoJyMnKSAmJiBjb2xvci5sZW5ndGggPT09IDdcbiAgICA/IFsxLCAzLCA1XS5tYXAoKGkpID0+IHBhcnNlSW50KGNvbG9yLnNsaWNlKGksIGkgKyAyKSwgMTYpKVxuICAgIDogWzEyNywgMTI3LCAxMjddXG4gIGNvbnN0IGEgPSByZ2IoZnJvbSlcbiAgY29uc3QgYiA9IHJnYih0bylcbiAgcmV0dXJuIGAjJHthLm1hcCgodmFsdWUsIGkpID0+IE1hdGgucm91bmQodmFsdWUgKyAoYltpXSAtIHZhbHVlKSAqIGFtb3VudCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpLmpvaW4oJycpfWBcbn1cblxuZnVuY3Rpb24gVG9vbEdyb3VwKHsgaXRlbSwgdmVyYm9zZSB9KSB7XG4gIGNvbnN0IGxhdGVzdENhbGxJZCA9IGl0ZW0udG9vbHMuYXQoLTEpPy5jYWxsSWRcbiAgY29uc3QgZ2xvdyA9IHVzZUFuaW1hdGVkKDAsIGVhc2UoNTAwLCBsaW5lYXIpKVxuICBpZiAobGF0ZXN0Q2FsbElkICE9PSBnbG93Ll9jYWxsSWQpIHtcbiAgICBnbG93Ll9jYWxsSWQgPSBsYXRlc3RDYWxsSWRcbiAgICBpZiAoaXRlbS5hY3RpdmUpIHtcbiAgICAgIGdsb3cuc25hcCgxKVxuICAgICAgZ2xvdy5zZXQoMClcbiAgICB9XG4gIH1cblxuICBpZiAodmVyYm9zZSkge1xuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICB7aXRlbS50b29scy5tYXAoKHRvb2wsIGkpID0+IDxUb29sQ2FyZCBrZXk9e2l9IHsuLi50b29sfSB2ZXJib3NlIHNob3dFeHBhbmRIaW50PXtmYWxzZX0gLz4pfVxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgY291bnRzID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgdG9vbCBvZiBpdGVtLnRvb2xzKSBjb3VudHMuc2V0KHRvb2wubmFtZSwgKGNvdW50cy5nZXQodG9vbC5uYW1lKSB8fCAwKSArIDEpXG4gIGNvbnN0IGVudHJpZXMgPSBbLi4uY291bnRzXVxuICBjb25zdCB0b3RhbE1zID0gaXRlbS50b29scy5yZWR1Y2UoKHN1bSwgdG9vbCkgPT4gc3VtICsgKHRvb2wuZHVyYXRpb25NcyB8fCAwKSwgMClcbiAgY29uc3QgbGF0ZXN0TmFtZSA9IGl0ZW0udG9vbHMuYXQoLTEpPy5uYW1lXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYWxpZ25JdGVtczogJ2ZsZXgtc3RhcnQnIH19PlxuICAgICAgICB7aXRlbS5hY3RpdmUgPyA8U3Bpbm5lciBjb2xvcj17YWNjZW50KCl9IC8+IDogPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19Plx1MjcxMzwvdGV4dD59XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGZsZXhXcmFwOiAnd3JhcCcsIGZsZXhHcm93OiAxLCBtYXJnaW5SaWdodDogMiB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogaXRlbS5hY3RpdmUgPyBGRyA6IE1VVEVEIH19PiBDYWxsZWQgPC90ZXh0PlxuICAgICAgICAgIHtlbnRyaWVzLm1hcCgoW25hbWUsIGNvdW50XSwgaSkgPT4gKFxuICAgICAgICAgICAgPHRleHQga2V5PXtuYW1lfSBzdHlsZT17eyBjb2xvcjogaXRlbS5hY3RpdmUgJiYgbmFtZSA9PT0gbGF0ZXN0TmFtZSA/IG1peENvbG9yKEZHLCBhY2NlbnQoKSwgZ2xvdygpKSA6IGl0ZW0uYWN0aXZlID8gRkcgOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAge2Ake2kgPyAnLCAnIDogJyd9JHtuYW1lfSR7Y291bnQgPT09IDEgPyAnJyA6IGAgJHtjb3VudH0gdGltZXNgfWB9XG4gICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dG90YWxNcyA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBmbGV4U2hyaW5rOiAwIH19PntmbXREdXJhdGlvbih0b3RhbE1zKX08L3RleHQ+fVxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gVG9vbENhcmQoeyBuYW1lLCB0aXRsZSwgc3RhdHVzLCBkaWZmLCByZXZlcnQsIGZ1bGxPdXRwdXQsIGVycm9yLCBiYWNrZ3JvdW5kLCB2ZXJib3NlLCBzaG93RXhwYW5kSGludCA9IHRydWUsIHN0YXJ0ZWRBdCwgZHVyYXRpb25NcyB9KSB7XG4gIGNvbnN0IHJ1bm5pbmcgPSBzdGF0dXMgPT09ICdydW5uaW5nJ1xuICBjb25zdCBpbnRlcnJ1cHRlZCA9IHN0YXR1cyA9PT0gJ2ludGVycnVwdGVkJ1xuICBjb25zdCByZXZlcnRlZCA9IHN0YXR1cyA9PT0gJ3JldmVydGVkJ1xuICBjb25zdCBmYWlsZWQgPSBzdGF0dXMgPT09ICdlcnJvcidcbiAgY29uc3Qgb3V0TGluZXMgPSBmdWxsT3V0cHV0ID8gZnVsbE91dHB1dC5zcGxpdCgnXFxuJykgOiBudWxsXG5cbiAgY29uc3QgZWxhcHNlZCA9IHJ1bm5pbmcgJiYgc3RhcnRlZEF0ID8gRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCA6IDBcbiAgY29uc3QgdG9vayA9ICFydW5uaW5nICYmICFiYWNrZ3JvdW5kICYmIGR1cmF0aW9uTXMgIT0gbnVsbCA/IGZtdER1cmF0aW9uKGR1cmF0aW9uTXMpIDogbnVsbFxuXG4gIGNvbnN0IGluZm8gPSBydW5uaW5nID8gKGVsYXBzZWQgPj0gNTAwMCA/IGBydW5uaW5nICgke2ZtdFJ1bm5pbmcoZWxhcHNlZCl9KWAgOiAncnVubmluZycpXG4gICAgOiBpbnRlcnJ1cHRlZCA/ICdpbnRlcnJ1cHRlZCdcbiAgICA6IHJldmVydGVkID8gJ3JldmVydGVkJ1xuICAgIDogZmFpbGVkID8gYGZhaWxlZCR7dG9vayA/IGAgXHUwMEI3ICR7dG9va31gIDogJyd9YFxuICAgIDogYmFja2dyb3VuZCA/ICdiYWNrZ3JvdW5kIFx1MDBCNyBzaGVsbCBsaXN0ZWQgYmVsb3cnXG4gICAgOiBkaWZmID8gYCske2RpZmYuYWRkaXRpb25zfSAtJHtkaWZmLmRlbGV0aW9uc30ke3Rvb2sgPyBgIFx1MDBCNyAke3Rvb2t9YCA6ICcnfWBcbiAgICA6IG91dExpbmVzID8gYCR7b3V0TGluZXMubGVuZ3RofSAke291dExpbmVzLmxlbmd0aCA9PT0gMSA/ICdsaW5lJyA6ICdsaW5lcyd9JHt0b29rID8gYCBcdTAwQjcgJHt0b29rfWAgOiAnJ30ke3Nob3dFeHBhbmRIaW50ID8gJyBcdTAwQjcgY3RybCtvJyA6ICcnfWBcbiAgICA6IGBkb25lJHt0b29rID8gYCBcdTAwQjcgJHt0b29rfWAgOiAnJ31gXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICB7cnVubmluZ1xuICAgICAgICAgID8gPFNwaW5uZXIgY29sb3I9e2FjY2VudCgpfSAvPlxuICAgICAgICAgIDogPHRleHQgc3R5bGU9e3sgY29sb3I6IGludGVycnVwdGVkIHx8IGZhaWxlZCA/IFJFRCA6IHJldmVydGVkID8gTVVURUQgOiBhY2NlbnQoKSB9fT57aW50ZXJydXB0ZWQgPyAnXHUyNzE3JyA6IGZhaWxlZCA/ICdcdTI3MTcnIDogcmV2ZXJ0ZWQgPyAnXHUyMUE5JyA6ICdcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCR7bmFtZS5wYWRFbmQoNSl9IGB9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGRyB9fT57dGl0bGUgfHwgbmFtZX08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7aW5mb31gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgICAge2ZhaWxlZCAmJiBlcnJvciAmJiAoXG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2AgICR7ZXJyb3J9YH08L3RleHQ+XG4gICAgICApfVxuICAgICAge3JldmVydCAmJiAhcnVubmluZyAmJiAhcmV2ZXJ0ZWQgJiYgIShkaWZmICYmIGRpZmYuYWRkaXRpb25zID09PSAwICYmIGRpZmYuZGVsZXRpb25zID09PSAwKSAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogTWF0aC5taW4oZGlmZlByZXZpZXdMaW5lcyhkaWZmLCByZXZlcnQpICsgMSwgMTIpLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPERpZmZcbiAgICAgICAgICAgIGJlZm9yZT17cmV2ZXJ0LmJlZm9yZX1cbiAgICAgICAgICAgIGFmdGVyPXtyZXZlcnQuYWZ0ZXJ9XG4gICAgICAgICAgICBsYW5ndWFnZT17bGFuZ0ZvclBhdGgocmV2ZXJ0LnBhdGgpfVxuICAgICAgICAgICAgaGlnaGxpZ2h0PXtoaWdobGlnaHR9XG4gICAgICAgICAgICBjb250ZXh0PXszfVxuICAgICAgICAgICAgZm9sZHM9e2ZhbHNlfVxuICAgICAgICAgICAgZm9jdXNlZD17ZmFsc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXI9e2ZhbHNlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICAgIHtvdXRMaW5lcyAmJiB2ZXJib3NlICYmICFydW5uaW5nICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCQgJHt0aXRsZX1gfTwvdGV4dD5cbiAgICAgICAgICB7b3V0TGluZXMuc2xpY2UoMCwgMjAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAge291dExpbmVzLmxlbmd0aCA+IDIwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtvdXRMaW5lcy5sZW5ndGggLSAyMDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVzc2FnZSh7IGl0ZW0sIHZlcmJvc2UgfSkge1xuICBpZiAoaXRlbS5raW5kID09PSAndG9vbC1ncm91cCcpIHJldHVybiA8VG9vbEdyb3VwIGl0ZW09e2l0ZW19IHZlcmJvc2U9e3ZlcmJvc2V9IC8+XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ2FnZW50LW5vdGljZS1ncm91cCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBpdGFsaWM6IHRydWUgfX0+e2BcdTI2OTkgJHtpdGVtLm5vdGljZXMubGVuZ3RofSBhZ2VudHMgZmluaXNoZWRgfTwvdGV4dD5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnY3RybCtvJ308L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2l0ZW0ubm90aWNlcy5tYXAoKG5vdGljZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZUIH19Pntub3RpY2UudGV4dC5yZXBsYWNlKC9eXFxbc3lzdGVtIG5vdGlmaWNhdGlvblxcXVxccyovLCAnJyl9PC90ZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndG9vbCcpIHtcbiAgICByZXR1cm4gPFRvb2xDYXJkIHsuLi5pdGVtfSB2ZXJib3NlPXt2ZXJib3NlfSAvPlxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3N1bW1hcnknKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntpdGVtLnNvdXJjZSA9PT0gJ2NvbXBhY3QnID8gJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyBjb252ZXJzYXRpb24gY29tcGFjdGVkIGFib3ZlIHRoaXMgcG9pbnQnIDogJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyByZXdvdW5kIGNvbnZlcnNhdGlvbid9PC90ZXh0PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake2xpbmVzLmxlbmd0aH0gJHtsaW5lcy5sZW5ndGggPT09IDEgPyAnbGluZScgOiAnbGluZXMnfSBcdTAwQjcgY3RybCtvYH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2xpbmVzLnNsaWNlKDAsIDUwMCkubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgICAge2xpbmVzLmxlbmd0aCA+IDUwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtsaW5lcy5sZW5ndGggLSA1MDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndGhvdWdodHMnKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PnsnXHUyNzI2IHRob3VnaHRzJ308L3RleHQ+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCR7bGluZXMubGVuZ3RofSAke2xpbmVzLmxlbmd0aCA9PT0gMSA/ICdsaW5lJyA6ICdsaW5lcyd9IFx1MDBCNyBjdHJsK29gfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHt2ZXJib3NlICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgICB7bGluZXMuc2xpY2UoMCwgMzAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgaXRhbGljOiB0cnVlIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPiAzMDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyMDI2ICR7bGluZXMubGVuZ3RoIC0gMzAwfSBtb3JlIGxpbmVzYH08L3RleHQ+fVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ25vdGljZScpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNjk5ICR7aXRlbS50ZXh0LnJlcGxhY2UoL15cXFtzeXN0ZW0gbm90aWZpY2F0aW9uXFxdXFxzKi8sICcnKX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdza2lsbCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNzI2IHNraWxsOiAke2l0ZW0ubmFtZX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdzaGVsbC1jb21tYW5kJykge1xuICAgIGNvbnN0IHNob3duID0gaGlnaGxpZ2h0KGl0ZW0udGV4dCwgJ2Jhc2gnKVxuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBib2xkOiB0cnVlIH19PnsnY29tbWFuZCd9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nTGVmdDogMiB9fT5cbiAgICAgICAgICB7c2hvd24uc3BsaXQoJ1xcbicpLm1hcCgobGluZSwgaSkgPT4gPHRleHQga2V5PXtpfT57YCR7aSA9PT0gMCA/ICckICcgOiAnICAnfSR7bGluZSB8fCAnICd9YH08L3RleHQ+KX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAnc2hlbGwtb3V0cHV0Jykge1xuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBib2xkOiB0cnVlIH19Pnsnb3V0cHV0J308L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdMZWZ0OiAyIH19PlxuICAgICAgICAgIHtpdGVtLnRleHQuc3BsaXQoJ1xcbicpLm1hcCgobGluZSwgaSkgPT4gPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkdfU09GVCB9fT57bGluZSB8fCAnICd9PC90ZXh0Pil9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3VzZXInKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57aXRlbS50ZXh0fTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBjb25zdCB0ZXh0ID0gaXRlbS5pbnRlcnJ1cHRlZCA/IGAke2l0ZW0udGV4dH0gKihpbnRlcnJ1cHRlZCkqYCA6IGl0ZW0udGV4dFxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgIDxNYXJrZG93biB0ZXh0PXt0ZXh0fSBoaWdobGlnaHQ9e2hpZ2hsaWdodH0gY29kZUJnPXtudWxsfSBjb2RlQmxvY2s9e1RyYW5zY3JpcHRDb2RlQmxvY2t9IC8+XG4gICAgPC9ib3g+XG4gIClcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwsIEJ1dHRvbiwgVGV4dElucHV0LCB1c2VJbnB1dCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IGFjY2VudCwgRkFJTlQsIEZHLCBGR19TT0ZULCBNVVRFRCwgUEFORUxfQkcsIFNFTEVDVF9CRyB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmZ1bmN0aW9uIGFuc3dlclRleHQocXVlc3Rpb24sIGFuc3dlcikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmpvaW4oJywgJylcbiAgcmV0dXJuIGFuc3dlciB8fCAnTm90IGFuc3dlcmVkJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUXVlc3Rpb25Gb3JtKHsgcmVxdWVzdCwgZm9jdXNlZCwgb25TdWJtaXQsIG9uQ2FuY2VsIH0pIHtcbiAgY29uc3QgcXVlc3Rpb25zID0gcmVxdWVzdC5xdWVzdGlvbnNcbiAgY29uc3QgcmV2aWV3aW5nID0gcXVlc3Rpb25zLmxlbmd0aCA+IDFcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFthbnN3ZXJzLCBzZXRBbnN3ZXJzXSA9IGNyZWF0ZVNpZ25hbCh7fSlcbiAgY29uc3QgW2N1cnNvciwgc2V0Q3Vyc29yXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbY3VzdG9tLCBzZXRDdXN0b21dID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbcmV2aWV3LCBzZXRSZXZpZXddID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbY29udHJvbCwgc2V0Q29udHJvbF0gPSBjcmVhdGVTaWduYWwoJ2Fuc3dlcicpXG5cbiAgY29uc3QgcXVlc3Rpb24gPSAoKSA9PiBxdWVzdGlvbnNbc3RlcCgpXVxuICBjb25zdCBvcHRpb25zID0gKCkgPT4gcXVlc3Rpb24oKS5vcHRpb25zIHx8IFtdXG4gIGNvbnN0IHJvd3MgPSAoKSA9PiBbLi4ub3B0aW9ucygpLCAuLi4ocXVlc3Rpb24oKS5hbGxvd090aGVyID09PSBmYWxzZSA/IFtdIDogW3sgbGFiZWw6ICdPdGhlcicsIG90aGVyOiB0cnVlIH1dKV1cbiAgY29uc3Qgc2VsZWN0ZWQgPSAobGFiZWwpID0+IChhbnN3ZXJzKClbcXVlc3Rpb24oKS5pZF0gfHwgW10pLmluY2x1ZGVzKGxhYmVsKVxuICBjb25zdCBvdGhlckFuc3dlciA9ICgpID0+IHtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzKClbcXVlc3Rpb24oKS5pZF1cbiAgICBjb25zdCBsYWJlbHMgPSBuZXcgU2V0KG9wdGlvbnMoKS5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLmxhYmVsKSlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmZpbmQoKHZhbHVlKSA9PiAhbGFiZWxzLmhhcyh2YWx1ZSkpIHx8ICcnXG4gICAgcmV0dXJuIGFuc3dlciAmJiAhbGFiZWxzLmhhcyhhbnN3ZXIpID8gYW5zd2VyIDogJydcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldEFuc3dlcih2YWx1ZSkge1xuICAgIHNldEFuc3dlcnMoKGN1cnJlbnQpID0+ICh7IC4uLmN1cnJlbnQsIFtxdWVzdGlvbigpLmlkXTogdmFsdWUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBhZHZhbmNlKCkge1xuICAgIHNldEN1c3RvbShmYWxzZSlcbiAgICBzZXRDdXJzb3IoMClcbiAgICBzZXRDb250cm9sKCdhbnN3ZXInKVxuICAgIGlmIChzdGVwKCkgPCBxdWVzdGlvbnMubGVuZ3RoIC0gMSkgc2V0U3RlcChzdGVwKCkgKyAxKVxuICAgIGVsc2UgaWYgKHJldmlld2luZykgeyBzZXRDdXJzb3IocXVlc3Rpb25zLmxlbmd0aCk7IHNldFJldmlldyh0cnVlKSB9XG4gICAgZWxzZSBmaW5pc2goKVxuICB9XG5cbiAgZnVuY3Rpb24gZmluaXNoKCkge1xuICAgIG9uU3VibWl0KHF1ZXN0aW9ucy5tYXAoKGl0ZW0pID0+ICh7IGlkOiBpdGVtLmlkLCBxdWVzdGlvbjogaXRlbS5xdWVzdGlvbiwgYW5zd2VyOiBhbnN3ZXJzKClbaXRlbS5pZF0gPz8gJycgfSkpKVxuICB9XG5cbiAgZnVuY3Rpb24gc3VibWl0VGV4dCh2YWx1ZSkge1xuICAgIGNvbnN0IGFuc3dlciA9IHZhbHVlLnRyaW0oKVxuICAgIGlmICghYW5zd2VyKSByZXR1cm5cbiAgICBzZXRBbnN3ZXIoYW5zd2VyKVxuICAgIGlmIChxdWVzdGlvbnMubGVuZ3RoID09PSAxKSBvblN1Ym1pdChbeyBpZDogaXRlbS5pZCwgcXVlc3Rpb246IGl0ZW0ucXVlc3Rpb24sIGFuc3dlciB9XSlcbiAgICBlbHNlIGFkdmFuY2UoKVxuICB9XG5cbiAgZnVuY3Rpb24gc3VibWl0T3RoZXIodmFsdWUpIHtcbiAgICBjb25zdCBhbnN3ZXIgPSB2YWx1ZS50cmltKClcbiAgICBjb25zdCBrbm93biA9IG5ldyBTZXQoKGl0ZW0ub3B0aW9ucyB8fCBbXSkubWFwKChvcHRpb24pID0+IG9wdGlvbi5sYWJlbCkpXG4gICAgY29uc3QgY2hvaWNlcyA9IGl0ZW0udHlwZSA9PT0gJ211bHRpJyA/IChhbnN3ZXJzKClbaXRlbS5pZF0gfHwgW10pLmZpbHRlcigoZW50cnkpID0+IGtub3duLmhhcyhlbnRyeSkpIDogW11cbiAgICBjb25zdCBuZXh0QW5zd2VyID0gaXRlbS50eXBlID09PSAnbXVsdGknID8gWy4uLmNob2ljZXMsIC4uLihhbnN3ZXIgPyBbYW5zd2VyXSA6IFtdKV0gOiBhbnN3ZXJcbiAgICBzZXRBbnN3ZXIobmV4dEFuc3dlcilcbiAgICBzZXRDdXN0b20oZmFsc2UpXG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3NpbmdsZScgJiYgYW5zd2VyKSB7XG4gICAgICBpZiAocXVlc3Rpb25zLmxlbmd0aCA9PT0gMSkgb25TdWJtaXQoW3sgaWQ6IGl0ZW0uaWQsIHF1ZXN0aW9uOiBpdGVtLnF1ZXN0aW9uLCBhbnN3ZXIgfV0pXG4gICAgICBlbHNlIGFkdmFuY2UoKVxuICAgIH1cbiAgfVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIGlmIChjdXN0b20oKSkgeyBzZXRDdXN0b20oZmFsc2UpOyBzZXRDb250cm9sKCdhbnN3ZXInKSB9XG4gICAgICBlbHNlIGlmIChyZXZpZXcoKSkgc2V0UmV2aWV3KGZhbHNlKVxuICAgICAgZWxzZSBvbkNhbmNlbCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChyZXZpZXcoKSkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ3VwJyB8fCBldmVudC5rZXkgPT09ICdrJykgc2V0Q3Vyc29yKE1hdGgubWF4KDAsIGN1cnNvcigpIC0gMSkpXG4gICAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdkb3duJyB8fCBldmVudC5rZXkgPT09ICdqJykgc2V0Q3Vyc29yKE1hdGgubWluKHF1ZXN0aW9ucy5sZW5ndGgsIGN1cnNvcigpICsgMSkpXG4gICAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdyZXR1cm4nKSB7XG4gICAgICAgIGlmIChjdXJzb3IoKSA9PT0gcXVlc3Rpb25zLmxlbmd0aCkgZmluaXNoKClcbiAgICAgICAgZWxzZSB7IHNldFN0ZXAoY3Vyc29yKCkpOyBzZXRDdXJzb3IoMCk7IHNldENvbnRyb2woJ2Fuc3dlcicpOyBzZXRSZXZpZXcoZmFsc2UpIH1cbiAgICAgIH0gZWxzZSByZXR1cm5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHN0ZXAoKSA+IDAgJiYgKGV2ZW50LmtleSA9PT0gJ3RhYicgfHwgZXZlbnQua2V5ID09PSAnc2hpZnQtdGFiJykpIHtcbiAgICAgIHNldENvbnRyb2woY29udHJvbCgpID09PSAnYmFjaycgPyAnYW5zd2VyJyA6ICdiYWNrJylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGNvbnRyb2woKSA9PT0gJ2JhY2snKSByZXR1cm5cbiAgICBpZiAoY3VzdG9tKCkpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICd0YWInIHx8IGV2ZW50LmtleSA9PT0gJ3NoaWZ0LXRhYicpIHtcbiAgICAgICAgc2V0Q3VzdG9tKGZhbHNlKVxuICAgICAgICBzZXRDb250cm9sKCdhbnN3ZXInKVxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChxdWVzdGlvbigpPy50eXBlID09PSAndGV4dCcpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICd1cCcgfHwgZXZlbnQua2V5ID09PSAnaycpIHNldEN1cnNvcihNYXRoLm1heCgwLCBjdXJzb3IoKSAtIDEpKVxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ2Rvd24nIHx8IGV2ZW50LmtleSA9PT0gJ2onKSBzZXRDdXJzb3IoTWF0aC5taW4ocm93cygpLmxlbmd0aCAtIDEsIGN1cnNvcigpICsgMSkpXG4gICAgZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnc3BhY2UnICYmIHF1ZXN0aW9uKCkudHlwZSA9PT0gJ211bHRpJykge1xuICAgICAgY29uc3Qgcm93ID0gcm93cygpW2N1cnNvcigpXVxuICAgICAgaWYgKHJvdy5vdGhlcikge1xuICAgICAgICBpZiAob3RoZXJBbnN3ZXIoKSkge1xuICAgICAgICAgIGNvbnN0IGtub3duID0gbmV3IFNldChvcHRpb25zKCkubWFwKChvcHRpb24pID0+IG9wdGlvbi5sYWJlbCkpXG4gICAgICAgICAgc2V0QW5zd2VyKChhbnN3ZXJzKClbcXVlc3Rpb24oKS5pZF0gfHwgW10pLmZpbHRlcigoZW50cnkpID0+IGtub3duLmhhcyhlbnRyeSkpKVxuICAgICAgICAgIHNldEN1c3RvbShmYWxzZSlcbiAgICAgICAgfSBlbHNlIHNldEN1c3RvbSh0cnVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGFuc3dlcnMoKVtxdWVzdGlvbigpLmlkXSB8fCBbXVxuICAgICAgICBzZXRBbnN3ZXIoY3VycmVudC5pbmNsdWRlcyhyb3cubGFiZWwpID8gY3VycmVudC5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gcm93LmxhYmVsKSA6IFsuLi5jdXJyZW50LCByb3cubGFiZWxdKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAncmV0dXJuJykge1xuICAgICAgY29uc3Qgcm93ID0gcm93cygpW2N1cnNvcigpXVxuICAgICAgaWYgKHF1ZXN0aW9uKCkudHlwZSA9PT0gJ211bHRpJykgYWR2YW5jZSgpXG4gICAgICBlbHNlIGlmIChyb3cub3RoZXIpIHNldEN1c3RvbSh0cnVlKVxuICAgICAgZWxzZSB7XG4gICAgICAgIHNldEFuc3dlcihyb3cubGFiZWwpXG4gICAgICAgIGlmIChxdWVzdGlvbnMubGVuZ3RoID09PSAxKSBvblN1Ym1pdChbeyBpZDogcXVlc3Rpb24oKS5pZCwgcXVlc3Rpb246IHF1ZXN0aW9uKCkucXVlc3Rpb24sIGFuc3dlcjogcm93LmxhYmVsIH1dKVxuICAgICAgICBlbHNlIGFkdmFuY2UoKVxuICAgICAgfVxuICAgIH0gZWxzZSByZXR1cm5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICB9KVxuXG4gIGlmIChyZXZpZXcoKSkge1xuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAyLCBwYWRkaW5nWTogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSwgYm9sZDogdHJ1ZSB9fT5SZXZpZXcgYW5zd2VyczwvdGV4dD5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PmVudGVyOiBlZGl0IG9yIHN1Ym1pdCBcdTAwQjcgZXNjOiBiYWNrPC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgICAge3F1ZXN0aW9ucy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IGN1cnNvcigpID09PSBpbmRleCA/IFNFTEVDVF9CRyA6IHVuZGVmaW5lZCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogY3Vyc29yKCkgPT09IGluZGV4ID8gYWNjZW50KCkgOiBGRyB9fT57aXRlbS5xdWVzdGlvbn08L3RleHQ+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2Fuc3dlclRleHQoaXRlbSwgYW5zd2VycygpW2l0ZW0uaWRdKX08L3RleHQ+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICkpfVxuICAgICAgICA8dGV4dCBzdHlsZT17eyBiZzogY3Vyc29yKCkgPT09IHF1ZXN0aW9ucy5sZW5ndGggPyBhY2NlbnQoKSA6IHVuZGVmaW5lZCwgY29sb3I6IGN1cnNvcigpID09PSBxdWVzdGlvbnMubGVuZ3RoID8gJ2JsYWNrJyA6IEZHLCBib2xkOiB0cnVlIH19PiBTdWJtaXQgYW5zd2VycyA8L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBjb25zdCBpdGVtID0gcXVlc3Rpb24oKVxuICBjb25zdCBwcm9ncmVzcyA9IHF1ZXN0aW9ucy5sZW5ndGggPiAxID8gYCR7c3RlcCgpICsgMX0gb2YgJHtxdWVzdGlvbnMubGVuZ3RofWAgOiAnUXVlc3Rpb24nXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMiwgcGFkZGluZ1k6IDEsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgIHtzdGVwKCkgPiAwICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBsYWJlbD1cIkJhY2tcIlxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmIGNvbnRyb2woKSA9PT0gJ2JhY2snfVxuICAgICAgICAgICAgICBvblByZXNzPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0U3RlcChzdGVwKCkgLSAxKVxuICAgICAgICAgICAgICAgIHNldEN1cnNvcigwKVxuICAgICAgICAgICAgICAgIHNldEN1c3RvbShmYWxzZSlcbiAgICAgICAgICAgICAgICBzZXRDb250cm9sKCdhbnN3ZXInKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx0ZXh0PiAgPC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+e3Byb2dyZXNzfTwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2l0ZW0udHlwZSA9PT0gJ211bHRpJyA/ICdzcGFjZTogc2VsZWN0IFx1MDBCNyBlbnRlcjogY29udGludWUnIDogJ2VudGVyOiBhbnN3ZXInfSBcdTAwQjcgZXNjOiBjYW5jZWw8L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRywgYm9sZDogdHJ1ZSB9fT57aXRlbS5xdWVzdGlvbn08L3RleHQ+XG4gICAgICB7aXRlbS5kZXNjcmlwdGlvbiAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2l0ZW0uZGVzY3JpcHRpb259PC90ZXh0Pn1cbiAgICAgIHtpdGVtLnR5cGUgPT09ICd0ZXh0JyA/IChcbiAgICAgICAgPGJveCBzdHlsZT17eyBiZzogU0VMRUNUX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDxUZXh0SW5wdXRcbiAgICAgICAgICAgIGtleT17YCR7aXRlbS5pZH06dGV4dGB9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmIGNvbnRyb2woKSA9PT0gJ2Fuc3dlcid9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgeW91ciBhbnN3ZXJcIlxuICAgICAgICAgICAgaW5pdGlhbFZhbHVlPXt0eXBlb2YgYW5zd2VycygpW2l0ZW0uaWRdID09PSAnc3RyaW5nJyA/IGFuc3dlcnMoKVtpdGVtLmlkXSA6ICcnfVxuICAgICAgICAgICAgb25TdWJtaXQ9e3N1Ym1pdFRleHR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICApIDogKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge3Jvd3MoKS5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGJnOiBjdXJzb3IoKSA9PT0gaW5kZXggPyBTRUxFQ1RfQkcgOiB1bmRlZmluZWQsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogY3Vyc29yKCkgPT09IGluZGV4ID8gYWNjZW50KCkgOiBGR19TT0ZUIH19PlxuICAgICAgICAgICAgICAgIHtpdGVtLnR5cGUgPT09ICdtdWx0aSdcbiAgICAgICAgICAgICAgICAgID8gYCR7b3B0aW9uLm90aGVyID8gKG90aGVyQW5zd2VyKCkgPyAnW3hdJyA6ICdbIF0nKSA6IChzZWxlY3RlZChvcHRpb24ubGFiZWwpID8gJ1t4XScgOiAnWyBdJyl9IGBcbiAgICAgICAgICAgICAgICAgIDogYCR7Y3Vyc29yKCkgPT09IGluZGV4ID8gJ1x1MjAzQScgOiAnICd9IGB9e29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICB7b3B0aW9uLmRlc2NyaXB0aW9uICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCBcdTAwQjcgJHtvcHRpb24uZGVzY3JpcHRpb259YH08L3RleHQ+fVxuICAgICAgICAgICAgICB7b3B0aW9uLm90aGVyICYmIChjdXN0b20oKSB8fCBvdGhlckFuc3dlcigpKSAmJiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBiZzogY3VzdG9tKCkgPyBQQU5FTF9CRyA6IHVuZGVmaW5lZCwgcGFkZGluZ0xlZnQ6IDQgfX0+XG4gICAgICAgICAgICAgICAgICA8VGV4dElucHV0XG4gICAgICAgICAgICAgICAgICAgIGtleT17YCR7aXRlbS5pZH06b3RoZXJgfVxuICAgICAgICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmIGN1c3RvbSgpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgYW5vdGhlciBhbnN3ZXJcIlxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWU9e290aGVyQW5zd2VyKCl9XG4gICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtzdWJtaXRPdGhlcn1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCB1c2VJbnRlcnZhbCwgdXNlTW91c2UsIHVzZVJlc2l6ZSB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IGFjY2VudCwgRkFJTlQgfSBmcm9tICcuL3RoZW1lLmpzJ1xuXG5mdW5jdGlvbiBFbXB0eUNsb3VkKHsgd2lkdGgsIGhlaWdodCwgdmVyc2lvbiB9KSB7XG4gIGNvbnN0IFtwaGFzZSwgc2V0UGhhc2VdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFt3YWtlLCBzZXRXYWtlXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgbGV0IHByZXZpb3VzID0gbnVsbFxuXG4gIHVzZU1vdXNlKChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5hY3Rpb24gIT09ICdtb3ZlJyAmJiBldmVudC5hY3Rpb24gIT09ICdkcmFnJykgcmV0dXJuXG4gICAgY29uc3QgeCA9IGV2ZW50LnhcbiAgICBjb25zdCB5ID0gZXZlbnQueVxuICAgIGlmICh4IDwgMCB8fCB4ID49IHdpZHRoIHx8IHkgPCAwIHx8IHkgPj0gaGVpZ2h0KSByZXR1cm5cbiAgICBjb25zdCBkeCA9IHByZXZpb3VzID8geCAtIHByZXZpb3VzLnggOiAwXG4gICAgY29uc3QgZHkgPSBwcmV2aW91cyA/IHkgLSBwcmV2aW91cy55IDogMFxuICAgIHByZXZpb3VzID0geyB4LCB5IH1cbiAgICBjb25zdCBzcGVlZCA9IE1hdGguaHlwb3QoZHggKiAwLjUsIGR5KVxuICAgIGlmIChzcGVlZCA9PT0gMCkgcmV0dXJuXG4gICAgc2V0V2FrZShwb2ludHMgPT4gWy4uLnBvaW50cy5zbGljZSgtMjApLCB7IHgsIHksIGR4LCBkeSwgc3BlZWQ6IE1hdGgubWluKDQsIHNwZWVkKSwgYWdlOiAwIH1dKVxuICB9KVxuXG4gIHVzZUludGVydmFsKCgpID0+IHtcbiAgICBzZXRQaGFzZSh2YWx1ZSA9PiB2YWx1ZSArIDAuMTYpXG4gICAgc2V0V2FrZShwb2ludHMgPT4gcG9pbnRzLm1hcChwb2ludCA9PiAoeyAuLi5wb2ludCwgYWdlOiBwb2ludC5hZ2UgKyAxIH0pKS5maWx0ZXIocG9pbnQgPT4gcG9pbnQuYWdlIDwgMTgpKVxuICB9LCA5MClcblxuICBjb25zdCBnbHlwaHMgPSAnICBcdTAwQjdcdTAwQjc6OisrKipcdTI1OTFcdTI1OTInXG4gIGNvbnN0IHJvd3MgPSBbXVxuICBjb25zdCBiYXNlID0gYWNjZW50KClcbiAgY29uc3QgcmdiID0gL14jKFswLTlhLWZdezZ9KSQvaS5leGVjKGJhc2UpXG4gIGNvbnN0IG5laWdoYm9yaW5nID0gcmdiXG4gICAgPyBgIyR7W1xuICAgICAgTWF0aC5tYXgoMCwgcGFyc2VJbnQocmdiWzFdLnNsaWNlKDAsIDIpLCAxNikgLSAxOCksXG4gICAgICBNYXRoLm1pbigyNTUsIHBhcnNlSW50KHJnYlsxXS5zbGljZSgyLCA0KSwgMTYpICsgOCksXG4gICAgICBNYXRoLm1pbigyNTUsIHBhcnNlSW50KHJnYlsxXS5zbGljZSg0LCA2KSwgMTYpICsgMjQpLFxuICAgIF0ubWFwKHZhbHVlID0+IHZhbHVlLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKX1gXG4gICAgOiBiYXNlXG5cbiAgZm9yIChsZXQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgIGNvbnN0IHJvdyA9IFtdXG4gICAgZm9yIChsZXQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICBjb25zdCBwID0gcGhhc2UoKVxuICAgICAgY29uc3QgYnJvYWQgPSBNYXRoLnNpbih4ICogMC4wOCArIHApICsgTWF0aC5zaW4oeSAqIDAuMjkgLSBwICogMC43KSArIE1hdGguc2luKCh4ICsgeSkgKiAwLjA1ICsgcCAqIDAuMzUpXG4gICAgICBjb25zdCB3aXNwcyA9IE1hdGguc2luKHggKiAwLjE5IC0geSAqIDAuMTEgLSBwICogMC41NSkgKyBNYXRoLnNpbih4ICogMC4wMyArIHkgKiAwLjQzICsgcCAqIDAuNClcbiAgICAgIGNvbnN0IHBvY2tldHMgPSBNYXRoLnNpbih4ICogMC4zMSArIHAgKiAwLjgpICogTWF0aC5zaW4oeSAqIDAuNDcgLSBwICogMC4zKVxuICAgICAgbGV0IGJyb2FkRGlzcGxhY2VtZW50ID0gMFxuICAgICAgbGV0IHdpc3BEaXNwbGFjZW1lbnQgPSAwXG4gICAgICBsZXQgaW50ZXJhY3Rpb24gPSAwXG4gICAgICBmb3IgKGNvbnN0IHBvaW50IG9mIHdha2UoKSkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBNYXRoLmh5cG90KHBvaW50LmR4ICogMC41LCBwb2ludC5keSkgfHwgMVxuICAgICAgICBjb25zdCB1eCA9IHBvaW50LmR4ICogMC41IC8gbGVuZ3RoXG4gICAgICAgIGNvbnN0IHV5ID0gcG9pbnQuZHkgLyBsZW5ndGhcbiAgICAgICAgY29uc3QgcnggPSAoeCAtIHBvaW50LngpICogMC41XG4gICAgICAgIGNvbnN0IHJ5ID0geSAtIHBvaW50LnlcbiAgICAgICAgY29uc3QgYWxvbmcgPSByeCAqIHV4ICsgcnkgKiB1eVxuICAgICAgICBjb25zdCBhY3Jvc3MgPSAtcnggKiB1eSArIHJ5ICogdXhcbiAgICAgICAgY29uc3QgdHJhaWxpbmcgPSBhbG9uZyA8PSAyICYmIGFsb25nID49IC0xOCAtIHBvaW50LnNwZWVkICogM1xuICAgICAgICBpZiAoIXRyYWlsaW5nKSBjb250aW51ZVxuICAgICAgICBjb25zdCBhZ2UgPSAxIC0gcG9pbnQuYWdlIC8gMThcbiAgICAgICAgY29uc3QgdHJhaWwgPSBNYXRoLmV4cCgtTWF0aC5wb3coKGFsb25nICsgNCArIHBvaW50LmFnZSAqIDAuMzUpIC8gKDcgKyBwb2ludC5zcGVlZCAqIDIpLCAyKSlcbiAgICAgICAgY29uc3QgY2VudGVyID0gTWF0aC5leHAoLShhY3Jvc3MgKiBhY3Jvc3MpIC8gNSlcbiAgICAgICAgY29uc3QgZWRnZXMgPSBNYXRoLmV4cCgtTWF0aC5wb3coTWF0aC5hYnMoYWNyb3NzKSAtIDMuMiwgMikgLyAzKVxuICAgICAgICBjb25zdCBmb3JjZSA9IGFnZSAqIHRyYWlsICogKDAuNSArIHBvaW50LnNwZWVkICogMC40NSlcbiAgICAgICAgY29uc3QgcmFkaWFsRGlzdGFuY2UgPSBNYXRoLnNxcnQocnggKiByeCArIHJ5ICogcnkpXG4gICAgICAgIGNvbnN0IHJpcHBsZUVudmVsb3BlID0gTWF0aC5leHAoLShyYWRpYWxEaXN0YW5jZSAqIHJhZGlhbERpc3RhbmNlKSAvICgzNSArIHBvaW50LnNwZWVkICogMTIpKVxuICAgICAgICBjb25zdCByaXBwbGUgPSBNYXRoLnNpbihyYWRpYWxEaXN0YW5jZSAqIDEuMzUgLSBwb2ludC5hZ2UgKiAwLjc1KSAqIHJpcHBsZUVudmVsb3BlICogYWdlXG4gICAgICAgIHdpc3BEaXNwbGFjZW1lbnQgKz0gKGVkZ2VzICogMC45IC0gY2VudGVyKSAqIGZvcmNlICogMS41ICsgcmlwcGxlICogKDEuMiArIHBvaW50LnNwZWVkICogMC4yNSlcbiAgICAgICAgYnJvYWREaXNwbGFjZW1lbnQgKz0gKGVkZ2VzICogMC40NSAtIGNlbnRlciAqIDAuMzUpICogZm9yY2UgKiAwLjU1ICsgcmlwcGxlICogMC4yNVxuICAgICAgICBpbnRlcmFjdGlvbiA9IE1hdGgubWF4KGludGVyYWN0aW9uLCBNYXRoLmFicyhyaXBwbGUpICogKDAuNSArIHBvaW50LnNwZWVkICogMC4xNSkpXG4gICAgICB9XG4gICAgICBjb25zdCB2YWx1ZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIChcbiAgICAgICAgYnJvYWQgKyBicm9hZERpc3BsYWNlbWVudCArICh3aXNwcyArIHdpc3BEaXNwbGFjZW1lbnQpICogMC42NSArIHBvY2tldHMgKiAwLjggKyAzLjJcbiAgICAgICkgLyA3LjQpKVxuICAgICAgY29uc3QgaW5kZXggPSBNYXRoLm1pbihnbHlwaHMubGVuZ3RoIC0gMSwgTWF0aC5mbG9vcih2YWx1ZSAqIGdseXBocy5sZW5ndGgpKVxuICAgICAgcm93LnB1c2goeyBnbHlwaDogZ2x5cGhzW2luZGV4XSwgY29sb3I6IGludGVyYWN0aW9uID4gMC4xNiA/IG5laWdoYm9yaW5nIDogYmFzZSwgZGltOiBpbmRleCA8IDggfSlcbiAgICB9XG4gICAgcm93cy5wdXNoKHJvdylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEgfX0+XG4gICAgICB7cm93cy5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICBjb25zdCBsYWJlbCA9IGkgPT09IDEgPyAncGljbycgOiBpID09PSAyID8gYHYke3ZlcnNpb259YCA6ICcnXG4gICAgICAgIGNvbnN0IGluQnJhbmRCb3ggPSBpID49IDEgJiYgaSA8PSAyXG4gICAgICAgIGNvbnN0IGJveFN0YXJ0ID0gMVxuICAgICAgICBjb25zdCBib3hXaWR0aCA9IGB2JHt2ZXJzaW9ufWAubGVuZ3RoICsgMlxuICAgICAgICBjb25zdCBjbG91ZCA9IChjZWxscykgPT4gY2VsbHMubWFwKChjZWxsLCB4KSA9PiAoXG4gICAgICAgICAgPHRleHQga2V5PXt4fSBzdHlsZT17eyBjb2xvcjogY2VsbC5jb2xvciwgZGltOiBjZWxsLmRpbSB9fT57Y2VsbC5nbHlwaH08L3RleHQ+XG4gICAgICAgICkpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGJveCBrZXk9e2l9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEsIG92ZXJmbG93OiAnY2xpcCcgfX0+XG4gICAgICAgICAgICB7aW5CcmFuZEJveCAmJiBjbG91ZChyb3cuc2xpY2UoMCwgYm94U3RhcnQpKX1cbiAgICAgICAgICAgIHtpbkJyYW5kQm94ICYmIChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyB3aWR0aDogYm94V2lkdGgsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgIHtsYWJlbCAmJiA8dGV4dCBzdHlsZT17eyBib2xkOiBpID09PSAxLCBjb2xvcjogaSA9PT0gMSA/IGFjY2VudCgpIDogRkFJTlQgfX0+e2xhYmVsfTwvdGV4dD59XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtjbG91ZChyb3cuc2xpY2UoaW5CcmFuZEJveCA/IGJveFN0YXJ0ICsgYm94V2lkdGggOiAwKSl9XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgIClcbiAgICAgIH0pfVxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbXB0eVN0YXRlKHsgdmVyc2lvbiwgY2xvdWRzID0gZmFsc2UgfSkge1xuICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSBjcmVhdGVTaWduYWwoeyB3aWR0aDogcHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCwgaGVpZ2h0OiBwcm9jZXNzLnN0ZG91dC5yb3dzIHx8IDI0IH0pXG4gIHVzZVJlc2l6ZShzZXRTaXplKVxuICBjb25zdCB3aWR0aCA9IE1hdGgubWF4KDEsIHNpemUoKS53aWR0aClcbiAgY29uc3QgaGVpZ2h0ID0gTWF0aC5tYXgoMSwgc2l6ZSgpLmhlaWdodCAtIDQpXG4gIGlmICghY2xvdWRzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgYm9sZDogdHJ1ZSwgY29sb3I6IGFjY2VudCgpIH19PnsnICBwaWNvJ308L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgdiR7dmVyc2lvbn1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGgsIGhlaWdodCB9fT5cbiAgICAgIDxFbXB0eUNsb3VkIHdpZHRoPXt3aWR0aH0gaGVpZ2h0PXtoZWlnaHR9IHZlcnNpb249e3ZlcnNpb259IC8+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuIiwgImltcG9ydCB7IE1hcmtkb3duLCBTY3JvbGxCb3gsIHVzZUlucHV0IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGQUlOVCB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IEhFTFBfVEVYVCA9IChjb21tYW5kcykgPT4gYHBpY28gaXMgYSBjb2RpbmcgYWdlbnQgaW4geW91ciB0ZXJtaW5hbC4gSXQgcmVhZHMsIGVkaXRzLCBhbmQgc2VhcmNoZXMgZmlsZXMsIHJ1bnMgY29tbWFuZHMsIGFuZCBzdHJlYW1zIGl0cyB3b3JrIGludG8gdGhpcyB0cmFuc2NyaXB0LlxuXG4jIyBDb21tYW5kc1xuXG5UeXBlIFxcYC9cXGAgaW4gdGhlIGNvbXBvc2VyIHRvIGZpbHRlciB0aGVzZSBhcyB5b3UgdHlwZS5cblxuJHtjb21tYW5kcy5tYXAoKGMpID0+IGAtIFxcYC8ke2MubmFtZX1cXGAgLSAke2MuZGVzY31gKS5qb2luKCdcXG4nKX1cblxuVHdvIGtpbmRzIG9mIHVzZXItZGVmaW5lZCBlbnRyaWVzIGpvaW4gdGhpcyBtZW51OlxuXG4tICoqY29tbWFuZHMqKiAoXFxgfi8ucGljby9jb21tYW5kcy88bmFtZT4ubWRcXGAgb3IgXFxgLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgKTogcHJvbXB0IHRlbXBsYXRlcyB5b3UgaW52b2tlIGFzIFxcYC88bmFtZT4gW2FyZ3NdXFxgLiBcXGAkQVJHVU1FTlRTXFxgIGluIHRoZSBib2R5IGlzIHJlcGxhY2VkIHdpdGggd2hhdGV2ZXIgZm9sbG93cyB0aGUgY29tbWFuZDsgd2l0aG91dCBhIHBsYWNlaG9sZGVyLCBhcmdzIGFyZSBhcHBlbmRlZC4gVGhlIG1vZGVsIG5ldmVyIHNlZXMgdGhlc2UgdW50aWwgeW91IHJ1biBvbmUuXG4tICoqc2tpbGxzKiogKFxcYH4vLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCBvciBcXGAucGljby9za2lsbHMvPG5hbWU+L1NLSUxMLm1kXFxgKTogY2FwYWJpbGl0aWVzIHdpdGggYSBuYW1lIGFuZCBkZXNjcmlwdGlvbi4gWW91IGNhbiBpbnZva2UgdGhlbSBsaWtlIGNvbW1hbmRzLCBhbmQgdGhlIGFnZW50IGNhbiBhbHNvIGRpc2NvdmVyIGFuZCBsb2FkIHRoZW0gaXRzZWxmIHZpYSB0aGUgc2tpbGwgdG9vbC5cbi0gKip0b29scyoqIChcXGB+Ly5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCBvciBcXGAucGljby90b29scy88bmFtZT4uanNcXGApOiBFUyBtb2R1bGVzIGRlZmF1bHQtZXhwb3J0aW5nIFxcYHsgbmFtZSwgZGVzY3JpcHRpb24sIHNjaGVtYSwgZXhlY3V0ZSB9XFxgIChvciBhIGZhY3RvcnkgcmVjZWl2aW5nIFxcYHsgY3dkLCByb290IH1cXGApLiBUaGV5IGpvaW4gdGhlIGFnZW50J3MgdG9vbHNldCBhbmQgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBlZGl0cyBhcHBseSBvbiB0aGUgbmV4dCBtZXNzYWdlLiBBc2sgdGhlIGFnZW50IHRvIGJ1aWxkIG9uZSBmb3IgeW91OiB0aGUgYnVpbHQtaW4gXFxgL25ldy10b29sXFxgIHNraWxsIHRlYWNoZXMgaXQgdGhlIGZvcm1hdC5cblxuSW4gdGhlIE1DUCBwYW5lbDogZW50ZXIgZW5hYmxlcy9kaXNhYmxlcyBhIHNlcnZlciAoZGlzYWJsZWQgaXMgc3RpY2t5IGFjcm9zcyByZXN0YXJ0cyAtIGNvbmZpZyBrZXB0LCBubyBjb25uZWN0aW9uLCBubyB0b29scyBvZmZlcmVkIHRvIHRoZSBtb2RlbCwgcGVyIHByb2plY3QpLCBcXGB0XFxgIGxpc3RzIGl0cyB0b29scywgXFxgclxcYCByZWNvbm5lY3RzLCBcXGBhXFxgIGFkZHMsIFxcYGN0cmwreFxcYCByZW1vdmVzIChwcmVzcyB0d2ljZSkuIFVuZmlsdGVyZWQgbGlzdHMgKGVmZm9ydCwgcmV3aW5kIG9wdGlvbnMsIE1DUCkgYWxzbyBtb3ZlIHdpdGggXFxgalxcYC9cXGBrXFxgIGFuZCBqdW1wIHdpdGggXFxgZ1xcYC9cXGBHXFxgLlxuXG4jIyBDb21wb3NlclxuXG4tIFxcYGVudGVyXFxgIHNlbmRzLCBcXGBzaGlmdCtlbnRlclxcYCBpbnNlcnRzIGEgbmV3bGluZVxuLSBcXGBAXFxgIG9wZW5zIGEgZnV6enkgZmlsZSBwaWNrZXI7IGVudGVyIGluc2VydHMgdGhlIHNlbGVjdGVkIHBhdGhcbi0gZHJhZyBhbiBpbWFnZSBmaWxlIGludG8gdGhlIHRlcm1pbmFsIHRvIGF0dGFjaCBpdDogaXQgYXBwZWFycyBpbmxpbmUgYXMgXFxgW0ltYWdlICNOXVxcYCwgZXhhY3RseSB3aGVyZSB5b3VyIGN1cnNvciBpcywgc28gaW1hZ2VzIGNhbiBzaXQgYmV0d2VlbiBzZW50ZW5jZXM7IGJhY2tzcGFjZSBhZnRlciBvbmUgcmVtb3ZlcyB0aGUgd2hvbGUgYXR0YWNobWVudFxuLSBcXGB0YWJcXGAgY29tcGxldGVzOiBcXGAvc3VtbTx0YWI+XFxgIGZpbmlzaGVzIHRoZSBjb21tYW5kIG5hbWUgYW5kIGN5Y2xlcyB0aHJvdWdoIG1hdGNoZXMgb24gcmVwZWF0OyBhZnRlciBhbiBhcmd1bWVudCBzcGFjZSBpdCBjb21wbGV0ZXMgdmFsdWVzIChcXGAvbW9kZWwgZmxhPHRhYj5cXGAsIFxcYC9jb2xvciA8dGFiPlxcYCwgXFxgL2VmZm9ydCA8dGFiPlxcYCkgYW5kIGZpbGUgcGF0aHMgZm9yIHNraWxscyBhbmQgY29tbWFuZHMuIEtlZXAgdHlwaW5nIHRvIG5hcnJvdywgdGFiIG9yIGVudGVyIGluc2VydHNcbi0gXFxgdXBcXGAgYW5kIFxcYGRvd25cXGAgb24gYW4gZW1wdHkgY29tcG9zZXIgcmVjYWxsIG1lc3NhZ2VzIHlvdSBhbHJlYWR5IHNlbnRcbi0gXFxgY3RybCtyXFxgIG9wZW5zIHJld2luZCAoc2FtZSBhcyBcXGAvcmV3aW5kXFxgKTsgXFxgL2hpc3RvcnlcXGAgZnV6enktc2VhcmNoZXMgeW91ciBvbGQgcHJvbXB0cyBhbmQgcHV0cyB0aGUgc2VsZWN0ZWQgb25lIGJhY2sgaW4gdGhlIGNvbXBvc2VyXG4tIFxcYGN0cmwrc1xcYCBvcGVucyB0aGUgc2Vzc2lvbiBwaWNrZXIgKHNhbWUgYXMgXFxgL3Jlc3VtZVxcYCk7IFxcYGN0cmwrdFxcYCBvcGVucyB0aGUgbW9kZWwgcGlja2VyXG4tIFxcYGN0cmwrcFxcYCBzd2l0Y2hlcyBwcm9qZWN0czogcGljayBvbmUgYW5kIHBpY28ganVtcHMgdG8gaXRzIG1vc3QgcmVjZW50IHNlc3Npb24sIGNoYW5naW5nIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgdG9vbHMsIGNvbnRleHQsIGFuZCBNQ1Agc2VydmVycyB0byBtYXRjaDsgXFxgY3RybCt4XFxgIHR3aWNlIGRlbGV0ZXMgYSBwcm9qZWN0J3MgcGljbyBoaXN0b3J5IChhbGwgaXRzIHNlc3Npb25zIGFuZCBtZW1vcmllcyk7IFxcYC9uZXdcXGAgc3RhcnRzIGEgZnJlc2ggc2Vzc2lvbiBpbiB0aGUgY3VycmVudCBwcm9qZWN0XG4tIFxcYGN0cmwrYlxcYCBjeWNsZXMgdGhpbmtpbmcgZWZmb3J0IChkZWZhdWx0LCBsb3csIG1lZGl1bSwgaGlnaCwgbWF4KSBvbiBtb2RlbHMgdGhhdCBzdXBwb3J0IGl0OyBcXGAvZWZmb3J0XFxgIG9wZW5zIHRoZSBmdWxsIHBpY2tlclxuLSBpbnNpZGUgYSBzZWFyY2ggcGFuZWwsIFxcYGN0cmwrc1xcYCBjeWNsZXMgdGhlIHNjb3BlIGluc3RlYWQ6IHRoaXMgc2Vzc2lvbiwgdGhpcyBwcm9qZWN0LCBvciBldmVyeXdoZXJlXG4tIFxcYC9yZXdpbmRcXGAgcmVzdG9yZXMgdGhlIGNvbnZlcnNhdGlvbiB0byBhbiBlYXJsaWVyIG1lc3NhZ2U7IGEgcmV3aW5kIGNhbiBiZSB1bmRvbmUgd2l0aCBcXGBjdHJsK3pcXGBcbi0gbWVzc2FnZXMgc2VudCB3aGlsZSB0aGUgYWdlbnQgaXMgcmVzcG9uZGluZyBxdWV1ZSB1cCBhYm92ZSB0aGUgY29tcG9zZXIgYW5kIGFyZSBkZWxpdmVyZWQgYXMgb25lIG1lc3NhZ2Ugd2hlbiB0aGUgdHVybiBmaW5pc2hlczsgXFxgdXBcXGAgcHVsbHMgdGhlbSBiYWNrIGZvciBlZGl0aW5nXG4tIFxcYGVzY1xcYCBpbnRlcnJ1cHRzIGEgc3RyZWFtaW5nIHJlc3BvbnNlLCBvciBjbGVhcnMgdGhlIGNvbXBvc2VyIHdoZW4gaWRsZVxuXG4jIyBNb3ZpbmcgYXJvdW5kXG5cbi0gXFxgdGFiXFxgIHN3aXRjaGVzIGZvY3VzIGJldHdlZW4gdGhlIHRyYW5zY3JpcHQgYW5kIHRoZSBjb21wb3NlclxuLSB3aXRoIHRoZSB0cmFuc2NyaXB0IGZvY3VzZWQsIFxcYHVwXFxgL1xcYGRvd25cXGAvXFxgalxcYC9cXGBrXFxgIHNjcm9sbCBhbmQgXFxgZ1xcYC9cXGBHXFxgIGp1bXAgdG8gdGhlIGVuZHNcbi0gbG9uZyBzZXNzaW9ucyByZW5kZXIgb25seSB0aGUgbmV3ZXN0IDUwIG1lc3NhZ2VzOyBzY3JvbGxpbmcgdG8gdGhlIHZlcnkgdG9wIGxvYWRzIG9sZGVyIG9uZXMgaW4gYmF0Y2hlcyAodGhlIHRvcCBsaW5lIHNob3dzIGhvdyBtYW55IGFyZSBoaWRkZW4pXG4tIFxcYGN0cmwrb1xcYCBleHBhbmRzIGFuZCBjb2xsYXBzZXMgdG9vbCBvdXRwdXQgaW4gdGhlIHRyYW5zY3JpcHRcbi0gdGhlIG1vdXNlIHdoZWVsIHNjcm9sbHM7IGNsaWNrLWRyYWcgc2VsZWN0cyB0ZXh0IGFuZCBjb3BpZXMgaXQgb24gcmVsZWFzZVxuLSBcXGBjdHJsK2NcXGAgdHdpY2UgZXhpdHNcblxuIyMgU2hlbGxzXG5cblRoZSBhZ2VudCBjYW4gcnVuIGxvbmctbGl2ZWQgcHJvY2Vzc2VzIChkZXYgc2VydmVycywgd2F0Y2hlcnMpIHdpdGggXFxgYmFzaCBiYWNrZ3JvdW5kOiB0cnVlXFxgLCB0aGVuIHJlYWQgdGhlaXIgb3V0cHV0IGFuZCBzdG9wIHRoZW0gaXRzZWxmLiBTaGVsbHMgYXBwZWFyIGJlbG93IHRoZSBjb21wb3NlciBhbmQgcmVtYWluIHRoZXJlIGFmdGVyIGV4aXQ6IHRhYiBmb2N1c2VzIHRoZSBsaXN0LCBqL2sgbW92ZXMsIGVudGVyIG9wZW5zIHRoZSBjb21tYW5kIGFuZCBsaXZlIG91dHB1dCwgYW5kIFxcYGN0cmwreFxcYCBraWxscyBhIHJ1bm5pbmcgc2hlbGwgb3IgZGlzbWlzc2VzIGEgZmluaXNoZWQgb25lLiBXaGVuIGEgc2hlbGwgZXhpdHMgb24gaXRzIG93biwgdGhlIGFnZW50IGlzIG5vdGlmaWVkIGFuZCByZXNwb25kczsgc2hlbGxzIGRpZSB3aXRoIHBpY28sIGFuZCBxdWl0dGluZyB3YXJucyB5b3UgaWYgYW55IGFyZSBzdGlsbCB1cC5cblxuIyMgU3Vic2NyaXB0aW9uc1xuXG5cXGAvY29ubmVjdFxcYCBsaXN0cyBzdWJzY3JpcHRpb24gcHJvdmlkZXJzIHlvdSBjYW4gc2lnbiBpbiB3aXRoIGluc3RlYWQgb2YgQVBJIGtleXMuIE9wZW5BSSAoQ2hhdEdQVCAvIENvZGV4IHBsYW4pIHNpZ25zIGluIHRocm91Z2ggeW91ciBicm93c2VyIHZpYSBPQXV0aDsgdG9rZW5zIGFyZSBzdG9yZWQgaW4gXFxgfi8ucGljby9hdXRoLmpzb25cXGAgYW5kIHJlZnJlc2hlZCBhdXRvbWF0aWNhbGx5LCBzbyB5b3Ugc2lnbiBpbiBvbmNlLiBPbmNlIGNvbm5lY3RlZCwgY29kZXggbW9kZWxzIGFwcGVhciBpbiBcXGAvbW9kZWxcXGAsIGJpbGxlZCB0byB5b3VyIHBsYW4uIFxcYGRcXGAgaW4gdGhlIHBhbmVsIGRpc2Nvbm5lY3RzLlxuXG4jIyBXZWIgc2VhcmNoXG5cbldpdGggYSBbZHJlZGdlXShodHRwczovL2dpdGh1Yi5jb20vam9uYXRoYW5weWVycy9kcmVkZ2UpIGVuZHBvaW50IGNvbmZpZ3VyZWQsIHRoZSBhZ2VudCBnZXRzIHR3byBleHRyYSB0b29sczogXFxgd2ViX3NlYXJjaFxcYCAocmFua2VkIHJlc3VsdHMsIEdvb2dsZS1zdHlsZSBvcGVyYXRvcnMpIGFuZCBcXGB3ZWJfZmV0Y2hcXGAgKGFueSB1cmwgYXMgY2xlYW4gcGFnaW5hdGVkIG1hcmtkb3duLCBpbmNsdWRpbmcgcGRmIGFuZCBkb2N4KS4gQ29uZmlndXJlIGl0IGFzIFxcYFwiZHJlZGdlXCI6IHsgXCJ1cmxcIjogXCIuLi5cIiwgXCJhcGlLZXlcIjogXCIuLi5cIiB9XFxgIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGAsIG9yIHdpdGggXFxgRFJFREdFX1VSTFxcYCBhbmQgXFxgRFJFREdFX0FQSV9LRVlcXGAuIFdpdGhvdXQgYSBjb25maWd1cmVkIGVuZHBvaW50IHRoZSB0b29scyBhcmUgbm90IG9mZmVyZWQgdG8gdGhlIG1vZGVsIGF0IGFsbC5cblxuIyMgTWVtb3J5XG5cblRoZSBhZ2VudCBzYXZlcyBkdXJhYmxlIGZhY3RzIHdpdGggdGhlIHJlbWVtYmVyIHRvb2w6IG9uZSBmaWxlIHBlciBtZW1vcnkgdW5kZXIgXFxgfi8ucGljby9tZW1vcnlcXGAgKGdsb2JhbCkgb3IgdGhlIHByb2plY3QncyBkaXJlY3RvcnkgaW4gXFxgfi8ucGljby9wcm9qZWN0c1xcYC4gT25seSBhIG9uZS1saW5lIGluZGV4IGlzIGluIGl0cyBjb250ZXh0OyBpdCBsb2FkcyBhIHNwZWNpZmljIG1lbW9yeSB3aXRoIHRoZSByZWNhbGwgdG9vbCB3aGVuIHJlbGV2YW50LiBcXGAvbWVtb3J5XFxgIGxpc3RzIGV2ZXJ5dGhpbmcgaXQga25vd3Mgd2l0aCBhIGNvbnRlbnQgcHJldmlldzogXFxgY3RybCtzXFxgIGN5Y2xlcyB0aGUgc2NvcGUgZmlsdGVyIChhbGwsIHByb2plY3QsIGdsb2JhbCkgYW5kIFxcYGN0cmwreFxcYCB0d2ljZSBmb3JnZXRzIHRoZSBzZWxlY3RlZCBtZW1vcnkuIFlvdSBjYW4gYWxzbyBhc2sgdGhlIGFnZW50IHRvIHJlbWVtYmVyLCBmb3JnZXQsIG9yIGNsZWFuIHVwIGl0cyBtZW1vcmllcyBpbiBwbGFpbiBsYW5ndWFnZS5cblxuIyMgV2FrZS11cHNcblxuVGhlIGFnZW50IGNhbiBzY2hlZHVsZSBvbmUtdGltZSB3YWtlLXVwcyBmb3IgaXRzZWxmIHdpdGggdGhlIHNjaGVkdWxlX3dha2V1cCB0b29sOiBhZnRlciB0aGUgZGVsYXkgaXQgcmVjZWl2ZXMgaXRzIG93biBub3RlIGFzIGEgc3lzdGVtIG5vdGlmaWNhdGlvbiBhbmQgYWN0cyBvbiBpdC4gUmVjdXJyaW5nIGxvb3BzIGFyZSBqdXN0IHRoZSBhZ2VudCByZXNjaGVkdWxpbmcgYXQgdGhlIGVuZCBvZiBlYWNoIHdha2UtdXAuIFxcYC93YWtldXBzXFxgIGxpc3RzIHBlbmRpbmcgb25lcyB3aXRoIGxpdmUgY291bnRkb3duczsgZW50ZXIgb3IgXFxgY3RybCt4XFxgIGNhbmNlbHMgKHByZXNzIHR3aWNlKS4gQSBcXGBcdTIzRjAgTlxcYCBpbiB0aGUgZm9vdGVyIHNob3dzIGhvdyBtYW55IGFyZSBwZW5kaW5nLiBXYWtlLXVwcyBsaXZlIGluIG1lbW9yeSBhbmQgYXJlIGxvc3Qgd2hlbiBwaWNvIGV4aXRzLlxuXG4jIyBBcHBlYXJhbmNlXG5cbnBpY28gcGlja3MgYSBsaWdodCBvciBkYXJrIHBhbGV0dGUgYXQgc3RhcnR1cCBieSBhc2tpbmcgdGhlIHRlcm1pbmFsIGZvciBpdHMgYmFja2dyb3VuZCBjb2xvciAoT1NDIDExKSwgc28gaXQgbWF0Y2hlcyB3aGF0ZXZlciB0aGVtZSB5b3VyIHRlcm1pbmFsIHVzZXMuIFxcYC90aGVtZVxcYCBvcGVucyBhIHBpY2tlciB0aGF0IHByZXZpZXdzIGVhY2ggdGhlbWUgYXMgeW91IG1vdmUgYW5kIHBlcnNpc3RzIHlvdXIgY2hvaWNlIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGA7IFxcYC90aGVtZSBsaWdodFxcYCwgXFxgL3RoZW1lIGRhcmtcXGAsIG9yIFxcYC90aGVtZSBhdXRvXFxgIGFwcGxpZXMgb25lIGRpcmVjdGx5LiBcXGAvY29sb3JcXGAgdGludHMgYSBzaW5nbGUgc2Vzc2lvbidzIGFjY2VudCBhbmQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHBhbGV0dGUuXG5cbiMjIENvbnRleHRcblxucGljbyByZWFkcyBBR0VOVFMubWQgZmlsZXMgYXV0b21hdGljYWxseTogYSBnbG9iYWwgb25lIGZyb20gfi8ucGljbywgdGhlbiBldmVyeSBhbmNlc3RvciBvZiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IHVwIHRvIHRoZSBnaXQgcm9vdC4gRGVlcGVyIGZpbGVzIHdpbi4gQUdFTlRTLm1kIGZpbGVzIGluIHN1YmRpcmVjdG9yaWVzIGxvYWQgbGF6aWx5IHRoZSBmaXJzdCB0aW1lIGEgdG9vbCB0b3VjaGVzIHRoYXQgc3VidHJlZS4gSW4gYW55IHByb2plY3QgZGlyZWN0b3J5IHdpdGhvdXQgYW4gQUdFTlRTLm1kLCBhIENMQVVERS5tZCBpcyBob25vcmVkIGFzIGEgZmFsbGJhY2sgc28gZXhpc3RpbmcgcmVwb3Mgd29yayB1bmNoYW5nZWQ7IEFHRU5UUy5tZCBhbHdheXMgd2lucyB3aGVuIGJvdGggZXhpc3QsIGFuZCB0aGUgZmFsbGJhY2sgbmV2ZXIgYXBwbGllcyB0byB0aGUgZ2xvYmFsIGZpbGUuXG5cblNlc3Npb25zIGFyZSBzdG9yZWQgdW5kZXIgfi8ucGljbyBhcyBqc29ubCBldmVudCBsb2dzOyBcXGAvcmVzdW1lXFxgIGZvbGRzIG9uZSBiYWNrIGludG8gZXhhY3RseSB0aGlzIHZpZXcuXG5cblxcYC9jb250ZXh0XFxgIGJyZWFrcyBkb3duIHdoYXQgdGhlIG5leHQgcmVxdWVzdCB3aWxsIGNvbnRhaW4gLSBzeXN0ZW0gcHJvbXB0LCB0b29sIHNjaGVtYXMsIHByb2plY3QgaW5zdHJ1Y3Rpb25zLCBtZW1vcnkgaW5kZXgsIGNvbXBhY3Rpb24gc3VtbWFyeSwgYW5kIGNvbnZlcnNhdGlvbiAtIHdpdGggYW4gZXN0aW1hdGVkIHNpemUgZm9yIGVhY2ggcGllY2UgbmV4dCB0byB0aGUgcHJvdmlkZXItbWVhc3VyZWQgdG90YWwuXG5cblRoZSBmb290ZXIncyBcXGBjdHggJVxcYCBzaG93cyBob3cgZnVsbCB0aGUgbW9kZWwncyBjb250ZXh0IGlzLiBBdCA4NSUgcGljbyBhdXRvLWNvbXBhY3RzOiB0aGUgb2xkZXIgY29udmVyc2F0aW9uIGlzIHN1bW1hcml6ZWQgaW4gYSBzdHJ1Y3R1cmVkIGZvcm0sIHRoZSBtb3N0IHJlY2VudCB0dXJucyBhcmUga2VwdCB2ZXJiYXRpbSwgYW5kIHRoZSBtb2RlbCBpcyB0b2xkIHdoZXJlIHRoZSBmdWxsIHNlc3Npb24gZmlsZSBsaXZlcyBzbyBpdCBjYW4gcmVhZCBleGFjdCBkZXRhaWxzIGJhY2sgb24gZGVtYW5kLiBOb3RoaW5nIHZpc2libGUgY2hhbmdlcyBpbiB0aGUgdHJhbnNjcmlwdCwgYW5kIHJld2luZCBzdGlsbCB3b3JrcyBhY3Jvc3MgaXQuIFxcYC9jb21wYWN0XFxgIHJ1bnMgaXQgbWFudWFsbHkgYW5kIHRha2VzIG9wdGlvbmFsIGZvY3VzIGluc3RydWN0aW9ucyAoXFxgL2NvbXBhY3QgZm9jdXMgb24gdGhlIEFQSSBjaGFuZ2VzXFxgKS4gU2V0IFxcYFwiYXV0b0NvbXBhY3RcIjogZmFsc2VcXGAgaW4gXFxgfi8ucGljby9jb25maWcuanNvblxcYCB0byBkaXNhYmxlIHRoZSBhdXRvbWF0aWMgdHJpZ2dlci5cblxuLS0tXG5cbiplc2MgdGFrZXMgeW91IGJhY2sgdG8gdGhlIGNvbnZlcnNhdGlvbipgXG5cbmV4cG9ydCBmdW5jdGlvbiBIZWxwKHsgY29tbWFuZHMsIG9uQ2xvc2UgfSkge1xuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DbG9zZSgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogJzEwMCUnLCBwYWRkaW5nWDogMiwgcGFkZGluZ1k6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+cGljbyBcdTAwQjcgaGVscDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+XHUyMTkxXHUyMTkzIHNjcm9sbCBcdTAwQjcgZXNjIGJhY2s8L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8U2Nyb2xsQm94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IGZvY3VzZWQgc2Nyb2xsYmFyPlxuICAgICAgICA8TWFya2Rvd24gdGV4dD17SEVMUF9URVhUKGNvbW1hbmRzKX0gY29kZUJnPXtudWxsfSAvPlxuICAgICAgPC9TY3JvbGxCb3g+XG4gICAgPC9ib3g+XG4gIClcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwsIEJ1dHRvbiwgQ2hlY2tib3gsIGVhc2UsIE1lbnUsIFBpY2tMaXN0LCBSYWRpbywgU2Nyb2xsQm94LCBUZXh0SW5wdXQsIHVzZUFuaW1hdGVkLCB1c2VGb2N1cywgdXNlSW5wdXQsIHVzZUludGVydmFsLCB1c2VMYXlvdXQgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZHLCBGR19TT0ZULCBNVVRFRCwgRkFJTlQsIFBBTkVMX0JHLCBTRUxFQ1RfQkcsIFJFRCwgR1JFRU4gfSBmcm9tICcuL3RoZW1lLmpzJ1xuaW1wb3J0IHsgQW5pbWF0ZWRWYWx1ZSB9IGZyb20gJy4vYW5pbWF0ZWQtdmFsdWUuanN4J1xuaW1wb3J0IHsgY29tcGFjdE51bWJlciB9IGZyb20gJy4vZm9ybWF0LmpzJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi9mdXp6eS5qcydcbmltcG9ydCB7IGZvcm1hdEh0dHBTZXJ2ZXJTcGVjLCBwYXJzZVNlcnZlclNwZWMsIHJlZGFjdFNlcnZlclNwZWMsIFJFREFDVEVEX0hFQURFUiB9IGZyb20gJy4uL2NvcmUvbWNwLmpzJ1xuXG5mdW5jdGlvbiBzaG9ydGVuSG9tZShwYXRoKSB7XG4gIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgcmV0dXJuIFN0cmluZyhwYXRoKS5zdGFydHNXaXRoKGhvbWUpID8gU3RyaW5nKHBhdGgpLnJlcGxhY2UoaG9tZSwgJ34nKSA6IFN0cmluZyhwYXRoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGltZUFnbyhhdCkge1xuICBjb25zdCBzID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIGF0KSAvIDEwMDApKVxuICBpZiAocyA8IDYwKSByZXR1cm4gYCR7c31zIGFnb2BcbiAgY29uc3QgbSA9IE1hdGguZmxvb3IocyAvIDYwKVxuICBpZiAobSA8IDYwKSByZXR1cm4gYCR7bX1tIGFnb2BcbiAgY29uc3QgaCA9IE1hdGguZmxvb3IobSAvIDYwKVxuICBpZiAoaCA8IDI0KSByZXR1cm4gYCR7aH1oIGFnb2BcbiAgcmV0dXJuIGAke01hdGguZmxvb3IoaCAvIDI0KX1kIGFnb2Bcbn1cblxuZnVuY3Rpb24gUGFuZWxGcmFtZSh7IHRpdGxlLCBoaW50LCByaWdodCwgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSwgYmc6IFBBTkVMX0JHIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIHBhZGRpbmdUb3A6IDEgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19Pnt0aXRsZX08L3RleHQ+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgIHtyaWdodH1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57aGludH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBTRUxFQ1RfQkcsIG92ZXJmbG93OiAnY2xpcCcgfX0+eydcdTI1MDAnLnJlcGVhdChwcm9jZXNzLnN0ZG91dC5jb2x1bW5zIHx8IDgwKX08L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgcGFkZGluZ0JvdHRvbTogMSB9fT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbmZpcm1QYW5lbCh7IHRpdGxlLCBtZXNzYWdlLCBjb25maXJtTGFiZWwgPSAnQ29uZmlybScsIGZvY3VzZWQsIG9uQ29uZmlybSwgb25DbG9zZSB9KSB7XG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ3JldHVybicpIHtcbiAgICAgIG9uQ29uZmlybSgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPXt0aXRsZX0gaGludD17YGVudGVyOiAke2NvbmZpcm1MYWJlbC50b0xvd2VyQ2FzZSgpfSBcdTAwQjcgZXNjOiBjYW5jZWxgfT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PnttZXNzYWdlfTwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IFJFRCwgYm9sZDogdHJ1ZSB9fT5UaGlzIGNhbm5vdCBiZSB1bmRvbmUuPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmZ1bmN0aW9uIENvbmZpZ0ZpZWxkKHsgZmllbGQsIHZhbHVlLCBmb2N1c2VkLCBmbSwgb25DaGFuZ2UgfSkge1xuICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXQoKVxuICBmbS5pdGVtKGZpZWxkLm5hbWUsIGxheW91dClcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Cb3R0b206IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8Q2hlY2tib3ggY2hlY2tlZD17dmFsdWV9IGxhYmVsPXtmaWVsZC5sYWJlbH0gZm9jdXNlZD17Zm9jdXNlZH0gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57ZmllbGQucGF0aH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgICAke2ZpZWxkLmRlc2N9YH08L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gQ29uZmlnTnVtYmVyRmllbGQoeyB2YWx1ZSwgZm9jdXNlZCwgZm0sIG9uQ2hhbmdlIH0pIHtcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0KClcbiAgZm0uaXRlbSgncmVzZWFyY2hBZ2VudExpbWl0JywgbGF5b3V0KVxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpbkJvdHRvbTogMSB9fT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgd2lkdGg6IDUgfX0+XG4gICAgICAgICAgPFRleHRJbnB1dFxuICAgICAgICAgICAga2V5PXtTdHJpbmcodmFsdWUpfVxuICAgICAgICAgICAgaW5pdGlhbFZhbHVlPXtTdHJpbmcodmFsdWUpfVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG9uU3VibWl0PXsodGV4dCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodGV4dClcbiAgICAgICAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIocGFyc2VkKSkgb25DaGFuZ2UoTWF0aC5tYXgoMSwgTWF0aC5taW4oMTAwLCBwYXJzZWQpKSlcbiAgICAgICAgICAgICAgZWxzZSBvbkNoYW5nZSh2YWx1ZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT4gUmVzZWFyY2ggYWdlbnQgbGltaXQ8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnJlc2VhcmNoLmFnZW50TGltaXQ8L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT4gICAgTWF4aW11bSBhZ2VudHMgcGVyIGRlZXAgcmVzZWFyY2ggcnVuICgxLTEwMCk8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gQ29uZmlnTW9kZWxGaWVsZCh7IG1vZGVsLCBmb2N1c2VkLCBmbSwgb25QaWNrIH0pIHtcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0KClcbiAgZm0uaXRlbSgncmVzZWFyY2hNb2RlbCcsIGxheW91dClcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Cb3R0b206IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8QnV0dG9uIGxhYmVsPVwiUmVzZWFyY2ggd29ya2VyIG1vZGVsXCIgZm9jdXNlZD17Zm9jdXNlZH0gb25QcmVzcz17b25QaWNrfSAvPlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5tb2RlbHMucmVzZWFyY2hXb3JrZXI8L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgICAke21vZGVsIHx8ICdOb3QgY29uZmlndXJlZCd9IFx1MDBCNyBtb2RlbCB1c2VkIGJ5IGJhY2tncm91bmQgcmVzZWFyY2ggYWdlbnRzYH08L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbmZpZ1BhbmVsKHsgdmFsdWVzLCBmb2N1c2VkLCBvbkNoYW5nZSwgb25QaWNrUmVzZWFyY2hNb2RlbCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IGZtID0gdXNlRm9jdXMoeyBpbml0aWFsOiAnY2xvdWRzJyB9KVxuICBjb25zdCBmaWVsZHMgPSBbXG4gICAgeyBuYW1lOiAnY2xvdWRzJywgbGFiZWw6ICdDbG91ZCBhbmltYXRpb24nLCBkZXNjOiAnU2hvdyBhbmltYXRlZCBjbG91ZHMgb24gdGhlIGVtcHR5IHNjcmVlbicsIHBhdGg6ICdhbmltYXRpb24uY2xvdWRzJyB9LFxuICAgIHsgbmFtZTogJ2NvbXBhY3RUb29scycsIGxhYmVsOiAnQ29tcGFjdCB0b29sIGhpc3RvcnknLCBkZXNjOiAnU3VtbWFyaXplIGNvbnNlY3V0aXZlIHRvb2wgY2FsbHMgaW4gb25lIHJvdycsIHBhdGg6ICdkaXNwbGF5LmNvbXBhY3RUb29sSGlzdG9yeScgfSxcbiAgICB7IG5hbWU6ICdnaXRTdGF0dXMnLCBsYWJlbDogJ0dpdCBpbiBmb290ZXInLCBkZXNjOiAnU2hvdyBicmFuY2ggYW5kIGNoYW5nZWQgbGluZSBjb3VudHMgaW4gdGhlIGZvb3RlcicsIHBhdGg6ICdkaXNwbGF5LmdpdFN0YXR1cycgfSxcbiAgXVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIkNvbmZpZ3VyYXRpb25cIiBoaW50PVwidGFiOiBuZXh0IHNldHRpbmcgXHUwMEI3IHNwYWNlL2VudGVyOiBjaGFuZ2UgXHUwMEI3IGVzYzogY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8U2Nyb2xsQm94IGZvY3VzZWQ9e2ZhbHNlfSBzY3JvbGxiYXIgZm9sbG93Rm9jdXM9e2ZtfSBmb2N1c1BhZGRpbmc9ezF9PlxuICAgICAgICAgIHtmaWVsZHMubWFwKChmaWVsZCkgPT4gKFxuICAgICAgICAgICAgPENvbmZpZ0ZpZWxkXG4gICAgICAgICAgICAgIGtleT17ZmllbGQubmFtZX1cbiAgICAgICAgICAgICAgZmllbGQ9e2ZpZWxkfVxuICAgICAgICAgICAgICB2YWx1ZT17dmFsdWVzW2ZpZWxkLm5hbWVdfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKGZpZWxkLm5hbWUpfVxuICAgICAgICAgICAgICBmbT17Zm19XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IG9uQ2hhbmdlKGZpZWxkLm5hbWUsIHZhbHVlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAgPENvbmZpZ01vZGVsRmllbGQgbW9kZWw9e3ZhbHVlcy5yZXNlYXJjaE1vZGVsfSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdyZXNlYXJjaE1vZGVsJyl9IGZtPXtmbX0gb25QaWNrPXtvblBpY2tSZXNlYXJjaE1vZGVsfSAvPlxuICAgICAgICAgIDxDb25maWdOdW1iZXJGaWVsZCB2YWx1ZT17dmFsdWVzLnJlc2VhcmNoQWdlbnRMaW1pdH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygncmVzZWFyY2hBZ2VudExpbWl0Jyl9IGZtPXtmbX0gb25DaGFuZ2U9eyh2YWx1ZSkgPT4gb25DaGFuZ2UoJ3Jlc2VhcmNoQWdlbnRMaW1pdCcsIHZhbHVlKX0gLz5cbiAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNjb3BlVGFicyh7IHNjb3BlcywgYWN0aXZlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAge3Njb3Blcy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgPHRleHQga2V5PXtzfSBzdHlsZT17eyBjb2xvcjogaSA9PT0gYWN0aXZlID8gYWNjZW50KCkgOiBGQUlOVCwgYm9sZDogaSA9PT0gYWN0aXZlIH19PntgJHtpID4gMCA/ICcgICcgOiAnJ30ke3N9YH08L3RleHQ+XG4gICAgICApKX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9kZWxQYW5lbCh7IG1vZGVscywgY3VycmVudCwgZGVmYXVsdE5hbWUsIGZvY3VzZWQsIG9uUGljaywgb25QaWNrRGVmYXVsdCwgb25DbG9zZSwgdGl0bGUgPSAnU2VsZWN0IG1vZGVsJywgaGludCA9ICdlbnRlcjogdGhpcyBzZXNzaW9uIFx1MDBCNyBjdHJsK3M6IHNldCBhcyBkZWZhdWx0IFx1MDBCNyBlc2M6IGNsb3NlJyB9KSB7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSBjcmVhdGVTaWduYWwobW9kZWxzWzBdIHx8IG51bGwpXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiBjdXJzb3IoKSkge1xuICAgICAgb25QaWNrRGVmYXVsdChjdXJzb3IoKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9e3RpdGxlfSBoaW50PXtoaW50fT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXttb2RlbHN9XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBtb2RlbHMuLi5cIlxuICAgICAgICAgIGZpbHRlcj17KHEsIG0pID0+IGZ1enp5U2NvcmUocSwgbS5uYW1lKSA+PSAwfVxuICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXtzZXRDdXJzb3J9XG4gICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgaXRlbUhlaWdodD17Mn1cbiAgICAgICAgICBzY3JvbGxvZmY9ezF9XG4gICAgICAgICAgcmVuZGVySXRlbT17KG0sIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb2ZmID0gbS5hdmFpbGFibGUgPT09IGZhbHNlXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBib2xkOiAhb2ZmLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogb2ZmID8gTVVURUQgOiBGRyB9fT57bS5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIHttLm5hbWUgPT09IGN1cnJlbnQgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IGFjY2VudCgpIH19PnsnIFx1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIHttLm5hbWUgPT09IGRlZmF1bHROYW1lICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBNVVRFRCB9fT57JyBcdTAwQjcgZGVmYXVsdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAgICAgICAge29mZiA/IGBuZWVkcyAke20ua2V5SGludH1gIDogbS5wcmljZSA/IGAkJHttLnByaWNlLmlufSBpbiBcdTAwQjcgJCR7bS5wcmljZS5vdXR9IG91dGAgOiBtLnByb3ZpZGVyID09PSAnY29kZXgnID8gJ3N1YnNjcmlwdGlvbicgOiAncHJpY2UgdW5rbm93bid9XG4gICAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IE1VVEVEIH19PnttLmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIaXN0b3J5UGFuZWwoeyBwcm9tcHRzLCBzY29wZXMsIHNjb3BlSW5kZXgsIGZvY3VzZWQsIG9uUGljaywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtwcmV2aWV3LCBzZXRQcmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChwcm9tcHRzWzBdIHx8IG51bGwpXG4gIGNvbnN0IFtxdWVyeSwgc2V0UXVlcnldID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBhbnlNYXRjaCA9IHByb21wdHMuc29tZSgocCkgPT4gZnV6enlTY29yZShxdWVyeSgpLCBwLnRleHQpID49IDApXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJTZWFyY2ggcHJvbXB0c1wiXG4gICAgICBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGN0cmwrcyBzY29wZSBcdTAwQjcgZW50ZXIgdG8gZWRpdCBcdTAwQjcgZXNjIHRvIGNsb3NlXCJcbiAgICAgIHJpZ2h0PXs8U2NvcGVUYWJzIHNjb3Blcz17c2NvcGVzfSBhY3RpdmU9e3Njb3BlSW5kZXh9IC8+fVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17cHJvbXB0c31cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBwcm9tcHRzLi4uXCJcbiAgICAgICAgICAgIGZpbHRlcj17KHEsIHApID0+IGZ1enp5U2NvcmUocSwgcC50ZXh0KSA+PSAwfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldFF1ZXJ5fVxuICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhwKSA9PiBzZXRQcmV2aWV3KHApfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhwKSA9PiBvblBpY2socC50ZXh0KX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsocCwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cC50ZXh0LnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke3RpbWVBZ28ocC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge2FueU1hdGNoICYmIHByZXZpZXcoKSA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57cHJldmlldygpLnRleHQuc2xpY2UoMCwgMjAwMCl9PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgcHJvbXB0czwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmV3aW5kUGlja1BhbmVsKHsgZW50cmllcywgc3RhdHMsIGZvY3VzZWQsIG9uUGljaywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtwcmV2aWV3LCBzZXRQcmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChlbnRyaWVzWzBdIHx8IG51bGwpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlJld2luZCB0byBhIG1lc3NhZ2VcIiBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGVudGVyIHRvIGNob29zZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2VudHJpZXN9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbWVzc2FnZXMuLi5cIlxuICAgICAgICAgICAgZmlsdGVyPXsocSwgbSkgPT4gZnV6enlTY29yZShxLCBtLnRleHQpID49IDB9XG4gICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KG0pID0+IHNldFByZXZpZXcobSl9XG4gICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PnttLnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7c3RhdHMobS5pbmRleCkubXNnc30gYWZ0ZXJgfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgcmV3aW5kaW5nIGhlcmUgZHJvcHMgJHtzdGF0cyhwcmV2aWV3KCkuaW5kZXgpLm1zZ3N9IGVudHJpZXNgfTwvdGV4dD5cbiAgICAgICAgICAgICAge3N0YXRzKHByZXZpZXcoKS5pbmRleCkuZWRpdHMubWFwKChtLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgIFx1MjFBOSAke20udGl0bGV9YH08L3RleHQ+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e3ByZXZpZXcoKS50ZXh0LnNsaWNlKDAsIDIwMDApfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgbWVzc2FnZXM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJld2luZEFjdGlvblBhbmVsKHsgdGFyZ2V0LCBvcHRpb25zLCBmb2N1c2VkLCBvblN1Ym1pdCwgb25CYWNrIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PlJld2luZCBvcHRpb25zPC90ZXh0PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PnsndG86ICd9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19Pnt0YXJnZXQudGV4dC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtvcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NH1cbiAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uU3VibWl0fVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkJhY2t9XG4gICAgICAgICAgcmVuZGVySXRlbT17KG8sIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57by5sYWJlbH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7by5kZXNjfWB9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PmVudGVyIHRvIGNvbmZpcm0gXHUwMEI3IGVzYyB0byBwaWNrIGEgZGlmZmVyZW50IG1lc3NhZ2U8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRXNjYXBlKGZvY3VzZWQsIG9uQ2xvc2UpIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKCkpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNsb3NlKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzdW1lUGFuZWwoeyBzZXNzaW9ucywgc2NvcGVzLCBzY29wZUluZGV4LCBsb2FkaW5nLCBmb2N1c2VkLCBjdXJyZW50SWQsIG9uUGljaywgb25EZWxldGUsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwoc2Vzc2lvbnNbMF0gfHwgbnVsbClcbiAgY29uc3Qgc2VsZWN0ZWRTZXNzaW9uID0gKCkgPT4ge1xuICAgIGlmIChsb2FkaW5nKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IHNlbGVjdGVkID0gcHJldmlldygpXG4gICAgcmV0dXJuIHNlc3Npb25zLmluY2x1ZGVzKHNlbGVjdGVkKSA/IHNlbGVjdGVkIDogbnVsbFxuICB9XG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRTZXNzaW9uKClcbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4JyAmJiBzZWxlY3RlZCkge1xuICAgICAgb25EZWxldGUoc2VsZWN0ZWQpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lXG4gICAgICB0aXRsZT1cIlJlc3VtZSBhIHNlc3Npb25cIlxuICAgICAgaGludD1cIlx1MjE5MVx1MjE5MyB0byBtb3ZlIFx1MDBCNyBjdHJsK3Mgc2NvcGUgXHUwMEI3IGVudGVyIHRvIHJlc3VtZSBcdTAwQjcgY3RybCt4IGRlbGV0ZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCJcbiAgICAgIHJpZ2h0PXs8U2NvcGVUYWJzIHNjb3Blcz17c2NvcGVzfSBhY3RpdmU9e3Njb3BlSW5kZXh9IC8+fVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+bG9hZGluZyBzZXNzaW9ucy4uLjwvdGV4dD5cbiAgICAgICAgICApIDogc2Vzc2lvbnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHNlc3Npb25zIGhlcmUgeWV0PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgICBpdGVtcz17c2Vzc2lvbnN9XG4gICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWQgJiYgIWxvYWRpbmd9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIHNlc3Npb25zLi4uXCJcbiAgICAgICAgICAgICAgZmlsdGVyPXsocSwgcykgPT4gZnV6enlTY29yZShxLCBzLnRpdGxlKSA+PSAwfVxuICAgICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHMpID0+IHNldFByZXZpZXcocyl9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgICByZW5kZXJJdGVtPXsocywgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIHtzLmNvbG9yICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBzLmNvbG9yIH19PnsnXHUyNUFBICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cy50aXRsZS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIHtzLmhlYWRlci5pZCA9PT0gY3VycmVudElkICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBhY2NlbnQoKSwgZGltOiAhc2VsZWN0ZWQgfX0+IGN1cnJlbnQ8L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHt0aW1lQWdvKHMuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge3NlbGVjdGVkU2Vzc2lvbigpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgJHtzZWxlY3RlZFNlc3Npb24oKS50dXJuc30gJHtzZWxlY3RlZFNlc3Npb24oKS50dXJucyA9PT0gMSA/ICd0dXJuJyA6ICd0dXJucyd9IFx1MDBCNyAke3RpbWVBZ28oc2VsZWN0ZWRTZXNzaW9uKCkuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntzZWxlY3RlZFNlc3Npb24oKS5oZWFkZXIucm9vdH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57c2VsZWN0ZWRTZXNzaW9uKCkudGl0bGUuc2xpY2UoMCwgNTAwKX08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHNlc3Npb25zPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNZW1vcnlQYW5lbCh7IG1lbW9yaWVzLCBzY29wZXMsIHNjb3BlSW5kZXgsIGZvY3VzZWQsIG9uRm9yZ2V0LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2N1cnNvckl0ZW0sIHNldEN1cnNvckl0ZW1dID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtwYW5lLCBzZXRQYW5lXSA9IGNyZWF0ZVNpZ25hbCgnbGlzdCcpXG4gIGNvbnN0IHByZXZpZXcgPSBtZW1vcmllcy5pbmNsdWRlcyhjdXJzb3JJdGVtKCkpID8gY3Vyc29ySXRlbSgpIDogbWVtb3JpZXNbMF0gfHwgbnVsbFxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAndGFiJyAmJiAhZXZlbnQuY3RybCAmJiAhZXZlbnQubWV0YSkge1xuICAgICAgc2V0UGFuZSgocCkgPT4gKHAgPT09ICdsaXN0JyA/ICdwcmV2aWV3JyA6ICdsaXN0JykpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnICYmIHByZXZpZXcpIHtcbiAgICAgIG9uRm9yZ2V0KHByZXZpZXcpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lXG4gICAgICB0aXRsZT1cIk1lbW9yeVwiXG4gICAgICBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IHRhYjogZm9jdXMgcHJldmlldyBcdTAwQjcgY3RybCtzIHNjb3BlIFx1MDBCNyBjdHJsK3ggZm9yZ2V0ICh0d2ljZSkgXHUwMEI3IGVzYyB0byBjbG9zZVwiXG4gICAgICByaWdodD17PFNjb3BlVGFicyBzY29wZXM9e3Njb3Blc30gYWN0aXZlPXtzY29wZUluZGV4fSAvPn1cbiAgICA+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIHttZW1vcmllcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWVtb3JpZXMgaGVyZSB5ZXQ8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXttZW1vcmllc31cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBwYW5lKCkgPT09ICdsaXN0J31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbWVtb3JpZXMuLi5cIlxuICAgICAgICAgICAgICBmaWx0ZXI9eyhxLCBtKSA9PiBmdXp6eVNjb3JlKHEsIGAke20ubmFtZX0gJHttLmRlc2NyaXB0aW9ufWApID49IDB9XG4gICAgICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXtzZXRDdXJzb3JJdGVtfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17KCkgPT4ge319XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgICByZW5kZXJJdGVtPXsobSwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57bS5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHttLnNjb3BlfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge3ByZXZpZXcgPyAoXG4gICAgICAgICAgICA8U2Nyb2xsQm94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgcGFuZSgpID09PSAncHJldmlldyd9IHNjcm9sbGJhcj5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBpdGFsaWM6IHRydWUgfX0+e3ByZXZpZXcuZGVzY3JpcHRpb24gfHwgJ25vIGRlc2NyaXB0aW9uJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZUIH19PntwcmV2aWV3LmJvZHl9PC90ZXh0PlxuICAgICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtZW1vcmllczwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRWZmb3J0UGFuZWwoeyBsZXZlbHMsIGN1cnJlbnQsIGRlZmF1bHRMZXZlbCwgZm9jdXNlZCwgb25QaWNrLCBvblBpY2tEZWZhdWx0LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2N1cnNvciwgc2V0Q3Vyc29yXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBpdGVtcyA9IGxldmVsc1xuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycpIHtcbiAgICAgIG9uUGlja0RlZmF1bHQoaXRlbXNbY3Vyc29yKCldKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgbGFiZWwgPSAobCkgPT4gKGwua2V5ID09PSBudWxsID8gJ2RlZmF1bHQnIDogbC5rZXkpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlRoaW5raW5nIGVmZm9ydFwiIGhpbnQ9XCJqL2sgdG8gbW92ZSBcdTAwQjcgZW50ZXI6IHRoaXMgc2Vzc2lvbiBcdTAwQjcgY3RybCtzOiBzZXQgYXMgZGVmYXVsdCBcdTAwQjcgZXNjOiBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8TWVudVxuICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2N1cnNvcigpfVxuICAgICAgICAgIG9uU2VsZWN0PXtzZXRDdXJzb3J9XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyhsLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57bGFiZWwobCkucGFkRW5kKE1hdGgubWF4KDEwLCBsYWJlbChsKS5sZW5ndGggKyAxKSl9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2wuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgIHtsLmtleSA9PT0gY3VycmVudCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBNVVRFRCB9fT57JyAgXHUyNzEzJ308L3RleHQ+fVxuICAgICAgICAgICAgICB7bC5rZXkgPT09IGRlZmF1bHRMZXZlbCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eycgIFx1MDBCNyBkZWZhdWx0J308L3RleHQ+fVxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gVGhlbWVQYW5lbCh7IHRoZW1lcywgcHJlZiwgZm9jdXNlZCwgb25QaWNrLCBvblByZXZpZXcsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKE1hdGgubWF4KDAsIHRoZW1lcy5maW5kSW5kZXgoKHQpID0+IHQua2V5ID09PSBwcmVmKSkpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlRoZW1lXCIgaGludD1cImovayB0byBtb3ZlIGFuZCBwcmV2aWV3IFx1MDBCNyBlbnRlciB0byBhcHBseSBcdTAwQjcgZXNjOiBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8TWVudVxuICAgICAgICAgIGl0ZW1zPXt0aGVtZXN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2N1cnNvcigpfVxuICAgICAgICAgIG9uU2VsZWN0PXsoaSkgPT4ge1xuICAgICAgICAgICAgc2V0Q3Vyc29yKGkpXG4gICAgICAgICAgICBvblByZXZpZXcodGhlbWVzW2ldKVxuICAgICAgICAgIH19XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBtYXhWaXNpYmxlPXs2fVxuICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyh0LCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57dC5rZXkucGFkRW5kKE1hdGgubWF4KDEwLCB0LmtleS5sZW5ndGggKyAxKSl9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e3QuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgIHt0LmtleSA9PT0gcHJlZiAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBNVVRFRCB9fT57JyAgXHUyNzEzJ308L3RleHQ+fVxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5mdW5jdGlvbiBDb250ZXh0T3ZlcnZpZXcoeyBvdmVydmlldyB9KSB7XG4gIGNvbnN0IHJldmVhbCA9IHVzZUFuaW1hdGVkKDAsIGVhc2UoNzAwKSlcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0KClcbiAgcmV2ZWFsLnNldCgxKVxuICBjb25zdCB3aWR0aCA9IE1hdGgubWF4KDEsIGxheW91dC53aWR0aCB8fCAxKVxuICBjb25zdCB2aXNpYmxlID0gTWF0aC5yb3VuZCh3aWR0aCAqIHJldmVhbCgpKVxuICBjb25zdCB0b3RhbCA9IG92ZXJ2aWV3LnNlZ21lbnRzLnJlZHVjZSgoc3VtLCBzZWdtZW50KSA9PiBzdW0gKyBzZWdtZW50LnRva2VucywgMClcbiAgbGV0IGJvdW5kYXJ5ID0gMFxuICBjb25zdCBjZWxscyA9IFtdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7XG4gICAgY29uc3Qgc2VnbWVudCA9IG92ZXJ2aWV3LnNlZ21lbnRzLmZpbmQoKGl0ZW0pID0+IHtcbiAgICAgIGJvdW5kYXJ5ICs9IGl0ZW0udG9rZW5zIC8gdG90YWwgKiB3aWR0aFxuICAgICAgcmV0dXJuIGkgPCBib3VuZGFyeVxuICAgIH0pXG4gICAgYm91bmRhcnkgPSAwXG4gICAgY2VsbHMucHVzaChcbiAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IGkgPj0gdmlzaWJsZSA/IFBBTkVMX0JHIDogc2VnbWVudD8uY29sb3IgfHwgRkFJTlQgfX0+XG4gICAgICAgIHtpID49IHZpc2libGUgPyAnICcgOiBzZWdtZW50ID8gJ1x1MjU4OCcgOiAnXHUyNTkxJ31cbiAgICAgIDwvdGV4dD4sXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PntjZWxsc308L2JveD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGZsZXhXcmFwOiAnd3JhcCcgfX0+XG4gICAgICAgIHtvdmVydmlldy5zZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IChcbiAgICAgICAgICA8Ym94IGtleT17c2VnbWVudC5sYWJlbH0gc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIG1hcmdpblJpZ2h0OiAyIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlZ21lbnQuY29sb3IgfX0+XHUyNUEwPC90ZXh0PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgICR7c2VnbWVudC5sYWJlbH0gYH08L3RleHQ+XG4gICAgICAgICAgICA8QW5pbWF0ZWRWYWx1ZVxuICAgICAgICAgICAgICB2YWx1ZT17c2VnbWVudC50b2tlbnN9XG4gICAgICAgICAgICAgIGluaXRpYWw9ezB9XG4gICAgICAgICAgICAgIGR1cmF0aW9uPXsyMDAwfVxuICAgICAgICAgICAgICBjb2xvcj17RkFJTlR9XG4gICAgICAgICAgICAgIGhpZ2hsaWdodD17YWNjZW50KCl9XG4gICAgICAgICAgICAgIGZvcm1hdD17KHRva2VucykgPT4gdG9rZW5zIDwgMTAwMCA/IGAke01hdGgucm91bmQodG9rZW5zKX0gdG9rYCA6IGAkeyh0b2tlbnMgLyAxMDAwKS50b0ZpeGVkKDEpfWtgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgKSl9XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSW5mb0xpc3RQYW5lbCh7IHRpdGxlLCByb3dzLCBvdmVydmlldywgZm9jdXNlZCwgb25DbG9zZSB9KSB7XG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9e3RpdGxlfSBoaW50PVwiai9rIG9yIFx1MjE5MVx1MjE5MyB0byBzY3JvbGwgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAge292ZXJ2aWV3ICYmIDxDb250ZXh0T3ZlcnZpZXcgb3ZlcnZpZXc9e292ZXJ2aWV3fSAvPn1cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogMTQsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge3Jvd3MubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ub3RoaW5nIGhlcmUgeWV0PC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAge3Jvd3MubWFwKChyb3csIGkpID0+IChcbiAgICAgICAgICAgICAgPGJveCBrZXk9e2Ake3Jvdy5uYW1lfS0ke2l9YH0gc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogaSA9PT0gMCA/IDAgOiAxIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e3Jvdy5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIHtyb3cubm90ZSAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e3Jvdy5ub3RlfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19Pntyb3cuZGVzYyB8fCAnbm8gZGVzY3JpcHRpb24nfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1Njcm9sbEJveD5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUHJvamVjdFBhbmVsKHsgcHJvamVjdHMsIGxvYWRpbmcsIGZvY3VzZWQsIG9uUGljaywgb25EZWxldGUsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwocHJvamVjdHNbMF0gfHwgbnVsbClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcgJiYgcHJldmlldygpKSB7XG4gICAgICBvbkRlbGV0ZShwcmV2aWV3KCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU3dpdGNoIHByb2plY3RcIiBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGVudGVyIHRvIGp1bXAgdG8gaXRzIGxhc3Qgc2Vzc2lvbiBcdTAwQjcgY3RybCt4IGRlbGV0ZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PmxvYWRpbmcgcHJvamVjdHMuLi48L3RleHQ+XG4gICAgICAgICAgKSA6IHByb2plY3RzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBrbm93biBwcm9qZWN0cyB5ZXQ8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXtwcm9qZWN0c31cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiAhbG9hZGluZ31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgcHJvamVjdHMuLi5cIlxuICAgICAgICAgICAgICBmaWx0ZXI9eyhxLCBwKSA9PiBmdXp6eVNjb3JlKHEsIHAucGF0aCkgPj0gMH1cbiAgICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhwKSA9PiBzZXRQcmV2aWV3KHApfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KHAsIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgICB7cC5sYXRlc3QuY29sb3IgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IHAubGF0ZXN0LmNvbG9yIH19PnsnXHUyNUFBICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cC5wYXRofTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHtwLmN1cnJlbnQgPyAnY3VycmVudCBcdTAwQjcgJyA6ICcnfSR7dGltZUFnbyhwLmxhdGVzdC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHLCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57cHJldmlldygpLnBhdGh9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake3ByZXZpZXcoKS5jb3VudH0gJHtwcmV2aWV3KCkuY291bnQgPT09IDEgPyAnc2Vzc2lvbicgOiAnc2Vzc2lvbnMnfSBcdTAwQjcgJHt0aW1lQWdvKHByZXZpZXcoKS5sYXRlc3QuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2BsYXN0OiAke3ByZXZpZXcoKS5sYXRlc3QudGl0bGUucmVwbGFjZSgvXFxuL2csICcgJyl9YH08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHByb2plY3RzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25uZWN0UGFuZWwoeyBwcm92aWRlcnMsIGZvY3VzZWQsIG9uQ29ubmVjdCwgb25EaXNjb25uZWN0LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBwcm92aWRlcnNbTWF0aC5taW4oaW5kZXgoKSwgcHJvdmlkZXJzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBjb25zdCBwID0gc2VsZWN0ZWQoKVxuICAgIGlmIChwICYmIGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcgJiYgcC5jb25uZWN0ZWQpIHtcbiAgICAgIG9uRGlzY29ubmVjdChwKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIkNvbm5lY3QgYSBzdWJzY3JpcHRpb25cIiBoaW50PVwiZW50ZXIgc2lnbiBpbiBcdTAwQjcgY3RybCt4IGRpc2Nvbm5lY3QgKHR3aWNlKSBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtwcm92aWRlcnN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9eyhwKSA9PiBvbkNvbm5lY3QocCl9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KHAsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBwLmNvbm5lY3RlZCA/IGFjY2VudCgpIDogTVVURUQgfX0+e3AuY29ubmVjdGVkID8gJ1x1MjVBQScgOiAnXHUyNUFCJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgICR7cC5sYWJlbH0gIGB9PC90ZXh0PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAgICAgIHtwLmNvbm5lY3RlZCA/IGBjb25uZWN0ZWQke3AuZW1haWwgPyBgIGFzICR7cC5lbWFpbH1gIDogJyd9YCA6ICdub3QgY29ubmVjdGVkJ31cbiAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gV2FrZXVwc1BhbmVsKHsgd2FrZXVwcywgZm9jdXNlZCwgb25DYW5jZWwsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbdGljaywgc2V0VGlja10gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUludGVydmFsKCgpID0+IHNldFRpY2soKHQpID0+IHQgKyAxKSwgMTAwMClcbiAgdm9pZCB0aWNrKClcblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHdha2V1cHNbTWF0aC5taW4oaW5kZXgoKSwgd2FrZXVwcy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgY29uc3QgdyA9IHNlbGVjdGVkKClcbiAgICBpZiAodyAmJiBldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnKSB7XG4gICAgICBvbkNhbmNlbCh3KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgY291bnRkb3duID0gKGF0KSA9PiB7XG4gICAgY29uc3Qgc2VjcyA9IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKGF0IC0gRGF0ZS5ub3coKSkgLyAxMDAwKSlcbiAgICBpZiAoc2VjcyA8IDYwKSByZXR1cm4gYGluICR7c2Vjc31zYFxuICAgIGNvbnN0IG1pbnMgPSBNYXRoLmZsb29yKHNlY3MgLyA2MClcbiAgICBpZiAobWlucyA8IDYwKSByZXR1cm4gYGluICR7bWluc31tICR7c2VjcyAlIDYwfXNgXG4gICAgcmV0dXJuIGBpbiAke01hdGguZmxvb3IobWlucyAvIDYwKX1oICR7bWlucyAlIDYwfW1gXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU2NoZWR1bGVkIHdha2UtdXBzXCIgaGludD1cImovayB0byBtb3ZlIFx1MDBCNyBlbnRlciBvciBjdHJsK3ggY2FuY2VsICh0d2ljZSkgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7d2FrZXVwcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHBlbmRpbmcgd2FrZS11cHMgXHUwMEI3IHRoZSBhZ2VudCBzY2hlZHVsZXMgdGhlbSB3aXRoIHNjaGVkdWxlX3dha2V1cDwvdGV4dD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e3dha2V1cHN9XG4gICAgICAgICAgICBzZWxlY3RlZD17aW5kZXgoKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRJbmRleH1cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgICAgaXRlbUhlaWdodD17Mn1cbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICAgIG9uU3VibWl0PXsodykgPT4gb25DYW5jZWwodyl9XG4gICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyh3LCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57YFx1MjNGMCAke3cuaWR9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2NvdW50ZG93bih3LmF0KX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7bmV3IERhdGUody5hdCkudG9Mb2NhbGVUaW1lU3RyaW5nKCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxLCBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57JyAgICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogRkdfU09GVCB9fT57dy5ub3RlLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuY29uc3QgTUNQX1NUQVRVUyA9IHtcbiAgY29ubmVjdGVkOiB7IGljb246ICdcdTI1QUEnLCBjb2xvcjogYWNjZW50KCkgfSxcbiAgY29ubmVjdGluZzogeyBpY29uOiAnXHUyNUNDJywgY29sb3I6ICcjZmJiZjI0JyB9LFxuICBlcnJvcjogeyBpY29uOiAnXHUyNzE3JywgY29sb3I6IFJFRCB9LFxuICBkaXNhYmxlZDogeyBpY29uOiAnXHUyNUFCJywgY29sb3I6IEZBSU5UIH0sXG4gIGlkbGU6IHsgaWNvbjogJ1x1MjVBQicsIGNvbG9yOiBNVVRFRCB9LFxufVxuXG5mdW5jdGlvbiBGb3JtRmllbGQoeyBsYWJlbCwgYWN0aXZlLCBjaGlsZHJlbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZBSU5UIH19PntsYWJlbH08L3RleHQ+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgIDwvYm94PlxuICApXG59XG5cbmZ1bmN0aW9uIE1jcFNlcnZlckZvcm0oeyBmb2N1c2VkLCBzZXJ2ZXIsIG9uU2F2ZSwgb25JbnZhbGlkLCBvbkNhbmNlbCB9KSB7XG4gIGNvbnN0IGluaXRpYWwgPSBzZXJ2ZXIgPyBwYXJzZVNlcnZlclNwZWMoc2VydmVyLmNvbW1hbmQpIDogbnVsbFxuICBjb25zdCBlZGl0aW5nID0gISFzZXJ2ZXJcbiAgY29uc3QgW25hbWUsIHNldE5hbWVdID0gY3JlYXRlU2lnbmFsKHNlcnZlcj8ubmFtZSB8fCAnJylcbiAgY29uc3QgW3Njb3BlLCBzZXRTY29wZV0gPSBjcmVhdGVTaWduYWwoc2VydmVyPy5zY29wZSB8fCAnZ2xvYmFsJylcbiAgY29uc3QgW3RyYW5zcG9ydCwgc2V0VHJhbnNwb3J0XSA9IGNyZWF0ZVNpZ25hbChpbml0aWFsPy50eXBlIHx8ICdzdGRpbycpXG4gIGNvbnN0IFt0YXJnZXQsIHNldFRhcmdldF0gPSBjcmVhdGVTaWduYWwoaW5pdGlhbD8udHlwZSA9PT0gJ2h0dHAnID8gaW5pdGlhbC51cmwgOiBzZXJ2ZXI/LmNvbW1hbmQgfHwgJycpXG4gIGNvbnN0IGluaXRpYWxIZWFkZXJzID0gaW5pdGlhbD8udHlwZSA9PT0gJ2h0dHAnXG4gICAgPyBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMoaW5pdGlhbC5oZWFkZXJzKS5tYXAoKG5hbWUpID0+IFtuYW1lLCBSRURBQ1RFRF9IRUFERVJdKSlcbiAgICA6IHt9XG4gIGNvbnN0IFtoZWFkZXJzLCBzZXRIZWFkZXJzXSA9IGNyZWF0ZVNpZ25hbChmb3JtYXRIdHRwU2VydmVyU3BlYygnJywgaW5pdGlhbEhlYWRlcnMpLnRyaW0oKSlcblxuICBjb25zdCBmbSA9IHVzZUZvY3VzKHsgaW5pdGlhbDogZWRpdGluZyA/ICd0cmFuc3BvcnQnIDogJ25hbWUnIH0pXG4gIGlmICghZWRpdGluZykge1xuICAgIGZtLml0ZW0oJ25hbWUnKVxuICAgIGZtLml0ZW0oJ3Njb3BlJylcbiAgfVxuICBmbS5pdGVtKCd0cmFuc3BvcnQnKVxuICBmbS5pdGVtKCd0YXJnZXQnKVxuICBpZiAodHJhbnNwb3J0KCkgPT09ICdodHRwJykgZm0uaXRlbSgnaGVhZGVycycpXG4gIGZtLml0ZW0oJ3NhdmUnKVxuICBmbS5pdGVtKCdjYW5jZWwnKVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2FuY2VsKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGh0dHAgPSB0cmFuc3BvcnQoKSA9PT0gJ2h0dHAnXG5cbiAgY29uc3Qgc3VibWl0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHNlcnZlck5hbWUgPSBuYW1lKCkudHJpbSgpXG4gICAgY29uc3QgdmFsdWUgPSB0YXJnZXQoKS50cmltKClcbiAgICBpZiAoIXNlcnZlck5hbWUgfHwgL1xccy8udGVzdChzZXJ2ZXJOYW1lKSkgcmV0dXJuIG9uSW52YWxpZCgnbmFtZSBpcyByZXF1aXJlZCBhbmQgY2Fubm90IGNvbnRhaW4gc3BhY2VzJylcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gb25JbnZhbGlkKGh0dHAgPyAndXJsIGlzIHJlcXVpcmVkJyA6ICdjb21tYW5kIGlzIHJlcXVpcmVkJylcbiAgICBpZiAoaHR0cCAmJiAhL15odHRwcz86XFwvXFwvLy50ZXN0KHZhbHVlKSkgcmV0dXJuIG9uSW52YWxpZCgndXJsIG11c3Qgc3RhcnQgd2l0aCBodHRwOi8vIG9yIGh0dHBzOi8vJylcbiAgICBpZiAoIWh0dHAgJiYgL15odHRwcz86XFwvXFwvLy50ZXN0KHZhbHVlKSkgcmV0dXJuIG9uSW52YWxpZCgnYSBzdGRpbyBjb21tYW5kIGNhbm5vdCBzdGFydCB3aXRoIGEgdXJsOyBwaWNrIHRoZSBodHRwIHRyYW5zcG9ydCcpXG4gICAgY29uc3QgZXh0cmEgPSBoZWFkZXJzKCkudHJpbSgpXG4gICAgbGV0IHNwZWMgPSBodHRwICYmIGV4dHJhID8gYCR7dmFsdWV9ICR7ZXh0cmF9YCA6IHZhbHVlXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU2VydmVyU3BlYyhzcGVjKVxuICAgICAgaWYgKHBhcnNlZC50eXBlID09PSAnaHR0cCcgJiYgaW5pdGlhbD8udHlwZSA9PT0gJ2h0dHAnKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2hlYWRlciwgaGVhZGVyVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcnNlZC5oZWFkZXJzKSkge1xuICAgICAgICAgIGlmIChoZWFkZXJWYWx1ZSA9PT0gUkVEQUNURURfSEVBREVSICYmIGluaXRpYWwuaGVhZGVyc1toZWFkZXJdICE9PSB1bmRlZmluZWQpIHBhcnNlZC5oZWFkZXJzW2hlYWRlcl0gPSBpbml0aWFsLmhlYWRlcnNbaGVhZGVyXVxuICAgICAgICB9XG4gICAgICAgIHNwZWMgPSBmb3JtYXRIdHRwU2VydmVyU3BlYyhwYXJzZWQudXJsLCBwYXJzZWQuaGVhZGVycylcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBvbkludmFsaWQoZXJyLm1lc3NhZ2UpXG4gICAgfVxuICAgIG9uU2F2ZShzZXJ2ZXJOYW1lLCBzcGVjLCBzY29wZSgpKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICB7IWVkaXRpbmcgJiYgKFxuICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwibmFtZVwiIGFjdGl2ZT17Zm0uaXMoJ25hbWUnKX0+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgPFRleHRJbnB1dCBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCduYW1lJyl9IHBsYWNlaG9sZGVyPVwibGluZWFyXCIgb25DaGFuZ2U9e3NldE5hbWV9IC8+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgKX1cbiAgICAgIHshZWRpdGluZyAmJiAoXG4gICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJzY29wZVwiIGFjdGl2ZT17Zm0uaXMoJ3Njb3BlJyl9PlxuICAgICAgICAgIDxSYWRpbyBvcHRpb25zPXtbJ2dsb2JhbCcsICdwcm9qZWN0J119IHNlbGVjdGVkPXtzY29wZSgpfSBvbkNoYW5nZT17c2V0U2NvcGV9IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ3Njb3BlJyl9IC8+XG4gICAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJ0cmFuc3BvcnRcIiBhY3RpdmU9e2ZtLmlzKCd0cmFuc3BvcnQnKX0+XG4gICAgICAgIDxSYWRpbyBvcHRpb25zPXtbJ3N0ZGlvJywgJ2h0dHAnXX0gc2VsZWN0ZWQ9e3RyYW5zcG9ydCgpfSBvbkNoYW5nZT17c2V0VHJhbnNwb3J0fSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCd0cmFuc3BvcnQnKX0gLz5cbiAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgPEZvcm1GaWVsZCBsYWJlbD17aHR0cCA/ICd1cmwnIDogJ2NvbW1hbmQnfSBhY3RpdmU9e2ZtLmlzKCd0YXJnZXQnKX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICA8VGV4dElucHV0XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCd0YXJnZXQnKX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtodHRwID8gJ2h0dHBzOi8vbWNwLmxpbmVhci5hcHAvbWNwJyA6ICducHggLXkgQG1vZGVsY29udGV4dHByb3RvY29sL3NlcnZlci1maWxlc3lzdGVtIC90bXAnfVxuICAgICAgICAgICAgaW5pdGlhbFZhbHVlPXt0YXJnZXQoKX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtzZXRUYXJnZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIHtodHRwICYmIChcbiAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cImhlYWRlcnMgXHUwMEI3IG9wdGlvbmFsXCIgYWN0aXZlPXtmbS5pcygnaGVhZGVycycpfT5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICA8VGV4dElucHV0IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ2hlYWRlcnMnKX0gcGxhY2Vob2xkZXI9J0F1dGhvcml6YXRpb249XCJCZWFyZXIgLi4uXCIgWC1UZWFtPVwiY29yZVwiJyBpbml0aWFsVmFsdWU9e2hlYWRlcnMoKX0gb25DaGFuZ2U9e3NldEhlYWRlcnN9IC8+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgKX1cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgIDxCdXR0b24gbGFiZWw9e2VkaXRpbmcgPyAnc2F2ZScgOiAnYWRkJ30gb25QcmVzcz17c3VibWl0fSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdzYXZlJyl9IC8+XG4gICAgICAgIDx0ZXh0PiAgPC90ZXh0PlxuICAgICAgICA8QnV0dG9uIGxhYmVsPVwiY2FuY2VsXCIgb25QcmVzcz17b25DYW5jZWx9IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ2NhbmNlbCcpfSB2YXJpYW50PVwiZGltXCIgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNY3BQYW5lbCh7IHNlcnZlcnMsIGZvY3VzZWQsIG9uVG9nZ2xlLCBvblJlY29ubmVjdCwgb25SZW1vdmUsIG9uQWRkLCBvbkVkaXQsIG9uSW52YWxpZCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtmb3JtLCBzZXRGb3JtXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbdmlld2luZywgc2V0Vmlld2luZ10gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQgJiYgIWZvcm0oKSwgKCkgPT4gKHZpZXdpbmcoKSA/IHNldFZpZXdpbmcobnVsbCkgOiBvbkNsb3NlKCkpKVxuXG4gIGNvbnN0IHNlbGVjdGVkID0gKCkgPT4gc2VydmVyc1tNYXRoLm1pbihpbmRleCgpLCBzZXJ2ZXJzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG4gIGNvbnN0IHZpZXdlZCA9ICgpID0+IHNlcnZlcnMuZmluZCgocykgPT4gcy5uYW1lID09PSB2aWV3aW5nKCkpIHx8IG51bGxcblxuICBpZiAodmlld2luZygpICYmIHZpZXdlZCgpKSB7XG4gICAgY29uc3Qgc2VydmVyID0gdmlld2VkKClcbiAgICBjb25zdCBkZXNjcmliZSA9ICh0KSA9PiB0LmRlc2NyaXB0aW9uLnJlcGxhY2UoL15cXFtbXlxcXV0qXFxdXFxzKi8sICcnKS50cmltKCkgfHwgJ25vIGRlc2NyaXB0aW9uJ1xuICAgIHJldHVybiAoXG4gICAgICA8UGFuZWxGcmFtZVxuICAgICAgICB0aXRsZT17YE1DUCBzZXJ2ZXJzIFx1MDBCNyAke3NlcnZlci5uYW1lfSBcdTAwQjcgJHtzZXJ2ZXIudG9vbHMubGVuZ3RofSAke3NlcnZlci50b29scy5sZW5ndGggPT09IDEgPyAndG9vbCcgOiAndG9vbHMnfWB9XG4gICAgICAgIGhpbnQ9XCJqL2sgb3IgXHUyMTkxXHUyMTkzIHRvIHNjcm9sbCBcdTAwQjcgZXNjIGJhY2sgdG8gc2VydmVyc1wiXG4gICAgICA+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogMTQsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICB7c2VydmVyLnRvb2xzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyB0b29scyByZXBvcnRlZCBcdTAwQjcgaXMgdGhlIHNlcnZlciBjb25uZWN0ZWQ/PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8U2Nyb2xsQm94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IGZvY3VzZWQ9e2ZvY3VzZWR9IHNjcm9sbGJhcj5cbiAgICAgICAgICAgICAge3NlcnZlci50b29scy5tYXAoKHQsIGkpID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IGtleT17dC5uYW1lfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiBpID09PSAwID8gMCA6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e3QubmFtZX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2Rlc2NyaWJlKHQpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1Njcm9sbEJveD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvUGFuZWxGcmFtZT5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lXG4gICAgICB0aXRsZT1cIk1DUCBzZXJ2ZXJzXCJcbiAgICAgIGhpbnQ9e2Zvcm0oKVxuICAgICAgICA/ICd0YWIgbW92ZXMgYmV0d2VlbiBmaWVsZHMgXHUwMEI3IGovayArIHNwYWNlIHBpY2tzIGEgcmFkaW8gb3B0aW9uIFx1MDBCNyBlc2MgY2FuY2VscydcbiAgICAgICAgOiAnZW50ZXIgZW5hYmxlL2Rpc2FibGUgXHUwMEI3IHQgdG9vbHMgXHUwMEI3IGUgZWRpdCBcdTAwQjcgciByZWNvbm5lY3QgXHUwMEI3IGEgYWRkIFx1MDBCNyBjdHJsK3ggcmVtb3ZlICh0d2ljZSkgXHUwMEI3IGVzYyBjbG9zZSd9XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7Zm9ybSgpID8gKFxuICAgICAgICAgIDxNY3BTZXJ2ZXJGb3JtXG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgc2VydmVyPXtmb3JtKCkgPT09ICdhZGQnID8gbnVsbCA6IGZvcm0oKX1cbiAgICAgICAgICAgIG9uU2F2ZT17KG5hbWUsIHNwZWMsIHNjb3BlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChmb3JtKCkgPT09ICdhZGQnKSBvbkFkZChuYW1lLCBzcGVjLCBzY29wZSlcbiAgICAgICAgICAgICAgZWxzZSBvbkVkaXQobmFtZSwgc3BlYylcbiAgICAgICAgICAgICAgc2V0Rm9ybShudWxsKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uSW52YWxpZD17b25JbnZhbGlkfVxuICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IHNldEZvcm0obnVsbCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IHNlcnZlcnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBNQ1Agc2VydmVycyBjb25maWd1cmVkIFx1MDBCNyBwcmVzcyBhIHRvIGFkZCBvbmU8L3RleHQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtzZXJ2ZXJzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0SW5kZXh9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17Nn1cbiAgICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICAgIGl0ZW1IZWlnaHQ9ezJ9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHMpID0+IG9uVG9nZ2xlKHMubmFtZSl9XG4gICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhzLCB7IGFjdGl2ZSB9KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0ID0gTUNQX1NUQVRVU1tzLnN0YXR1c10gfHwgTUNQX1NUQVRVUy5pZGxlXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzdC5jb2xvciB9fT57c3QuaWNvbn08L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgICR7cy5uYW1lLnBhZEVuZChNYXRoLm1heCgxNCwgcy5uYW1lLmxlbmd0aCArIDEpKX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogcy5zdGF0dXMgPT09ICdlcnJvcicgPyBSRUQgOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzLnN0YXR1cyA9PT0gJ2Vycm9yJyA/IHMuZXJyb3IgOiBzLnN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcgPyBgJHtzLnRvb2xDb3VudH0gdG9vbHNgIDogcy5zdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dD57JyAgICAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IEZBSU5UIH19PntzaG9ydGVuSG9tZShyZWRhY3RTZXJ2ZXJTcGVjKHMuY29tbWFuZCkpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtzLnNjb3BlID09PSAncHJvamVjdCcgPyAncHJvamVjdCcgOiAnZ2xvYmFsJ31gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICAgIHshZm9ybSgpICYmIChcbiAgICAgICAgPE1jcEtleXNcbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG9uS2V5PXsoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzID0gc2VsZWN0ZWQoKVxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2EnKSBzZXRGb3JtKCdhZGQnKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICdlJykgc2V0Rm9ybShzKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICdyJykgb25SZWNvbm5lY3Qocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICdyZW1vdmUnKSBvblJlbW92ZShzLm5hbWUpXG4gICAgICAgICAgICBlbHNlIGlmIChzICYmIGtleSA9PT0gJ3QnKSBzZXRWaWV3aW5nKHMubmFtZSlcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZnVuY3Rpb24gTWNwS2V5cyh7IGZvY3VzZWQsIG9uS2V5IH0pIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4Jykge1xuICAgICAgb25LZXkoJ3JlbW92ZScpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghZXZlbnQuY3RybCAmJiBbJ2EnLCAnZScsICdyJywgJ3QnXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBvbktleShldmVudC5rZXkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIG51bGxcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7O0FBQUEsU0FBUyxlQUFlO0FBU2pCLFNBQVMsYUFBYSxNQUFNLFFBQVEsS0FBSztBQUM5QyxRQUFNQSxRQUFPLENBQUM7QUFDZCxhQUFXLEtBQUssV0FBVztBQUN6QixV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QUFHO0FBQUEsRUFDM0MsU0FBUztBQUNYO0FBRUEsSUFBSSxTQUFTLEtBQUssSUFBSTtBQUN0QixJQUFJLFdBQVcsS0FBSyxTQUFTO0FBRTdCLElBQU0sTUFBTSxNQUFNLE1BQU0sZ0JBQUFQLEtBQUMsT0FBSSxNQUFZLEdBQUksRUFBRSxPQUFPLGFBQVUsS0FBSyxLQUFLLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztBQUNyRyxLQUFLLFdBQVcsSUFBSTtBQUNwQixLQUFLLElBQUksV0FBVzsiLAogICJuYW1lcyI6IFsia2V5cyIsICJtb2RlbHMiLCAibW9kZWwiLCAiam9pbiIsICJwcm92aWRlcnMiLCAiY2FjaGVkIiwgIm1vZGVscyIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJjYWNoZUZpbGUiLCAiY2FjaGVkIiwgIlRUTCIsICJtb2RlbHMiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImpvaW4iLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJjb25maWciLCAiZXhpc3RzU3luYyIsICJob21lZGlyIiwgImRpcm5hbWUiLCAiam9pbiIsICJyZXNvbHZlIiwgInJlYWRGaWxlIiwgImpvaW4iLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJqb2luIiwgInNjYW5EaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImNvbmZpZyIsICJmZXRjaCIsICJzY29wZSIsICJwZW5kaW5nIiwgInJlZ2lzdHJ5IiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAid3JpdGVGaWxlIiwgImpvaW4iLCAic2NhbkRpciIsICJzY29wZSIsICJob21lZGlyIiwgImNvbmZpZyIsICJzaGVsbHMiLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJkaXJuYW1lIiwgImpvaW4iLCAic2NvcGUiLCAicGFyc2VBcmdzIiwgImNhbGwiLCAicmVhZEZpbGUiLCAicmVhZEZpbGUiLCAicmVzb2x2ZSIsICJNQVhfTElORVMiLCAibWtkaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImRpcm5hbWUiLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJzaGVsbHMiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJyZXNvbHZlIiwgImV4ZWNGaWxlIiwgInJlc29sdmUiLCAiTUFYX1JFU1VMVFMiLCAic2hlbGxzIiwgIndha2V1cHMiLCAidG9vbHMiLCAibW9kZWwiLCAic2NvcGUiLCAiZXhlYyIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJyZXNvbHZlIiwgImV4aXN0c1N5bmMiLCAiam9pbiIsICJtb2RlbHMiLCAicHJvdmlkZXJzIiwgImNoYXRncHQiLCAiY2F0YWxvZ0RhdGEiLCAiY29kZXhDcmVkcyIsICJjb25maWciLCAibW9kZWwiLCAiYm9vdCIsICJzaGVsbHMiLCAicmVhZEZpbGVTeW5jIiwgInJlc29sdmUiLCAidGhlbWUiLCAid2FrZXVwcyIsICJzcGF3biIsICJyZWFkRmlsZVN5bmMiLCAiZGlybmFtZSIsICJqb2luIiwgInJlc29sdmUiLCAiZXhpc3RzU3luYyIsICJ3cml0ZUZpbGUiLCAiaG9tZWRpciIsICJqb2luIiwgImNyZWF0ZVNpZ25hbCIsICJNZW51IiwgIlNjcm9sbEJveCIsICJTcGlubmVyIiwgInVzZUZvY3VzIiwgInVzZUlucHV0IiwgInVzZUxheW91dCIsICJ1c2VNb3VzZSIsICJhcHBlbmRGaWxlIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAiam9pbiIsICJzY29wZSIsICJnZXRUZXh0IiwgInJlc29sdmUiLCAicmVhZGRpciIsICJzdGF0IiwgImpvaW4iLCAic2NhbkRpciIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJmZyIsICJUVEwiLCAicmVzb2x2ZSIsICJjcmVhdGVTaWduYWwiLCAicGVuZGluZyIsICJjcmVhdGVTaWduYWwiLCAidGhlbWUiLCAiaGlnaGxpZ2h0IiwgImVhc2UiLCAibGluZWFyIiwgInVzZUFuaW1hdGVkIiwgImpzeCIsICJtaXhDb2xvciIsICJ1c2VBbmltYXRlZCIsICJlYXNlIiwgImxpbmVhciIsICJmYWlsZWQiLCAiY3JlYXRlU2lnbmFsIiwgImpzeCIsICJqc3hzIiwgImNyZWF0ZVNpZ25hbCIsICJpdGVtIiwgImNyZWF0ZVNpZ25hbCIsICJqc3giLCAianN4cyIsICJ2ZXJzaW9uIiwgImNyZWF0ZVNpZ25hbCIsICJNYXJrZG93biIsICJ1c2VJbnB1dCIsICJqc3giLCAianN4cyIsICJ1c2VJbnB1dCIsICJNYXJrZG93biIsICJjcmVhdGVTaWduYWwiLCAiQnV0dG9uIiwgImVhc2UiLCAiU2Nyb2xsQm94IiwgIlRleHRJbnB1dCIsICJ1c2VBbmltYXRlZCIsICJ1c2VJbnB1dCIsICJ1c2VJbnRlcnZhbCIsICJob21lZGlyIiwgImpzeCIsICJqc3hzIiwgInVzZUlucHV0IiwgIlRleHRJbnB1dCIsICJtb2RlbCIsICJCdXR0b24iLCAiU2Nyb2xsQm94IiwgIm1vZGVscyIsICJjcmVhdGVTaWduYWwiLCAidXNlQW5pbWF0ZWQiLCAiZWFzZSIsICJwcm92aWRlcnMiLCAid2FrZXVwcyIsICJ1c2VJbnRlcnZhbCIsICJzY29wZSIsICJuYW1lIiwgImpzeCIsICJqc3hzIiwgImNhbGwiLCAidXNlTGF5b3V0IiwgImNyZWF0ZVNpZ25hbCIsICJ1c2VNb3VzZSIsICJib290IiwgInZlcnNpb24iLCAibW9kZWxzIiwgIm1vZGVsIiwgImRlZmF1bHRNb2RlbCIsICJpdGVtcyIsICJyZXNlYXJjaEFnZW50TGltaXQiLCAicmVzb2x2ZSIsICJ1c2FnZSIsICJqb2luIiwgIndyaXRlRmlsZSIsICJob21lZGlyIiwgInVzZUZvY3VzIiwgInVzZUlucHV0IiwgImV4aXN0c1N5bmMiLCAiU2Nyb2xsQm94IiwgIk1lbnUiLCAicGVuZGluZyIsICJzY29wZSIsICJlbGFwc2VkIiwgIlNwaW5uZXIiLCAianN4IiwgInJlYWRGaWxlU3luYyIsICJpc0Rldkluc3RhbGwiLCAicnVuVXBkYXRlIiwgImZldGNoTGF0ZXN0VmVyc2lvbiIsICJuZXdlclZlcnNpb24iLCAiY29ubmVjdE9wZW5BSSIsICJydW5IZWFkbGVzcyJdCn0K
|